summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2017-05-07 23:18:47 +1000
committer Vas Crabb <vas@vastheman.com>2017-05-14 21:44:11 +1000
commit0f0d39ef81562c75e79176dd3bebb1e491ca39d5 (patch)
tree201cee7fdf55ee800f83859a92efd2cfe66cf2b3 /src/devices
parente6c4be2b4d71c7a6c95be0bae111eb416ff0f9e7 (diff)
Move static data out of devices into the device types. This is a significant change, so please pay attention.
The core changes are: * Short name, full name and source file are no longer members of device_t, they are part of the device type * MACHINE_COFIG_START no longer needs a driver class * MACHINE_CONFIG_DERIVED_CLASS is no longer necessary * Specify the state class you want in the GAME/COMP/CONS line * The compiler will work out the base class where the driver init member is declared * There is one static device type object per driver rather than one per machine configuration Use DECLARE_DEVICE_TYPE or DECLARE_DEVICE_TYPE_NS to declare device type. * DECLARE_DEVICE_TYPE forward-declares teh device type and class, and declares extern object finders. * DECLARE_DEVICE_TYPE_NS is for devices classes in namespaces - it doesn't forward-declare the device type. Use DEFINE_DEVICE_TYPE or DEFINE_DEVICE_TYPE_NS to define device types. * These macros declare storage for the static data, and instantiate the device type and device finder templates. The rest of the changes are mostly just moving stuff out of headers that shouldn't be there, renaming stuff for consistency, and scoping stuff down where appropriate. Things I've actually messed with substantially: * More descriptive names for a lot of devices * Untangled the fantasy sound from the driver state, which necessitates breaking up sound/flip writes * Changed DECO BSMT2000 ready callback into a device delegate * Untangled Microprose 3D noise from driver state * Used object finders for CoCo multipak, KC85 D002, and Irem sound subdevices * Started to get TI-99 stuff out of the TI-990 directory and arrange bus devices properly * Started to break out common parts of Samsung ARM SoC devices * Turned some of FM, SID, SCSP DSP, EPIC12 and Voodoo cores into something resmbling C++ * Tried to make Z180 table allocation/setup a bit safer * Converted generic keyboard/terminal to not use WRITE8 - space/offset aren't relevant * Dynamically allocate generic terminal buffer so derived devices (e.g. teleprinter) can specify size * Imporved encapsulation of Z80DART channels * Refactored the SPC7110 bit table generator loop to make it more readable * Added wrappers for SNES PPU operations so members can be made protected * Factored out some boilerplate for YM chips with PSG * toaplan2 gfx * stic/intv resolution * Video System video * Out Run/Y-board sprite alignment * GIC video hookup * Amstrad CPC ROM box members * IQ151 ROM cart region * MSX cart IRQ callback resolution time * SMS passthrough control devices starting subslots I've smoke-tested several drivers, but I've probably missed something. Things I've missed will likely blow up spectacularly with failure to bind errors and the like. Let me know if there's more subtle breakage (could have happened in FM or Voodoo). And can everyone please, please try to keep stuff clean. In particular, please stop polluting the global namespace. Keep things out of headers that don't need to be there, and use things that can be scoped down rather than macros. It feels like an uphill battle trying to get this stuff under control while more of it's added.
Diffstat (limited to 'src/devices')
-rw-r--r--src/devices/bus/a1bus/a1bus.cpp36
-rw-r--r--src/devices/bus/a1bus/a1bus.h35
-rw-r--r--src/devices/bus/a1bus/a1cassette.cpp18
-rw-r--r--src/devices/bus/a1bus/a1cassette.h17
-rw-r--r--src/devices/bus/a1bus/a1cffa.cpp19
-rw-r--r--src/devices/bus/a1bus/a1cffa.h15
-rw-r--r--src/devices/bus/a2bus/a2alfam2.cpp12
-rw-r--r--src/devices/bus/a2bus/a2alfam2.h28
-rw-r--r--src/devices/bus/a2bus/a2applicard.cpp10
-rw-r--r--src/devices/bus/a2bus/a2applicard.h13
-rw-r--r--src/devices/bus/a2bus/a2arcadebd.cpp11
-rw-r--r--src/devices/bus/a2bus/a2arcadebd.h13
-rw-r--r--src/devices/bus/a2bus/a2bus.cpp35
-rw-r--r--src/devices/bus/a2bus/a2bus.h30
-rw-r--r--src/devices/bus/a2bus/a2cffa.cpp12
-rw-r--r--src/devices/bus/a2bus/a2cffa.h18
-rw-r--r--src/devices/bus/a2bus/a2corvus.cpp10
-rw-r--r--src/devices/bus/a2bus/a2corvus.h17
-rw-r--r--src/devices/bus/a2bus/a2diskii.cpp20
-rw-r--r--src/devices/bus/a2bus/a2diskii.h20
-rw-r--r--src/devices/bus/a2bus/a2diskiing.cpp7
-rw-r--r--src/devices/bus/a2bus/a2diskiing.h12
-rw-r--r--src/devices/bus/a2bus/a2dx1.cpp11
-rw-r--r--src/devices/bus/a2bus/a2dx1.h19
-rw-r--r--src/devices/bus/a2bus/a2eauxslot.cpp36
-rw-r--r--src/devices/bus/a2bus/a2eauxslot.h28
-rw-r--r--src/devices/bus/a2bus/a2echoii.cpp10
-rw-r--r--src/devices/bus/a2bus/a2echoii.h12
-rw-r--r--src/devices/bus/a2bus/a2eext80col.cpp9
-rw-r--r--src/devices/bus/a2bus/a2eext80col.h13
-rw-r--r--src/devices/bus/a2bus/a2eramworks3.cpp13
-rw-r--r--src/devices/bus/a2bus/a2eramworks3.h11
-rw-r--r--src/devices/bus/a2bus/a2estd80col.cpp9
-rw-r--r--src/devices/bus/a2bus/a2estd80col.h13
-rw-r--r--src/devices/bus/a2bus/a2hsscsi.cpp11
-rw-r--r--src/devices/bus/a2bus/a2hsscsi.h19
-rw-r--r--src/devices/bus/a2bus/a2mcms.cpp23
-rw-r--r--src/devices/bus/a2bus/a2mcms.h16
-rw-r--r--src/devices/bus/a2bus/a2memexp.cpp12
-rw-r--r--src/devices/bus/a2bus/a2memexp.h18
-rw-r--r--src/devices/bus/a2bus/a2midi.cpp12
-rw-r--r--src/devices/bus/a2bus/a2midi.h13
-rw-r--r--src/devices/bus/a2bus/a2mockingboard.cpp16
-rw-r--r--src/devices/bus/a2bus/a2mockingboard.h23
-rw-r--r--src/devices/bus/a2bus/a2pic.cpp14
-rw-r--r--src/devices/bus/a2bus/a2pic.h23
-rw-r--r--src/devices/bus/a2bus/a2sam.cpp4
-rw-r--r--src/devices/bus/a2bus/a2sam.h12
-rw-r--r--src/devices/bus/a2bus/a2scsi.cpp11
-rw-r--r--src/devices/bus/a2bus/a2scsi.h19
-rw-r--r--src/devices/bus/a2bus/a2softcard.cpp10
-rw-r--r--src/devices/bus/a2bus/a2softcard.h11
-rw-r--r--src/devices/bus/a2bus/a2ssc.cpp13
-rw-r--r--src/devices/bus/a2bus/a2ssc.h15
-rw-r--r--src/devices/bus/a2bus/a2swyft.cpp9
-rw-r--r--src/devices/bus/a2bus/a2swyft.h13
-rw-r--r--src/devices/bus/a2bus/a2themill.cpp10
-rw-r--r--src/devices/bus/a2bus/a2themill.h13
-rw-r--r--src/devices/bus/a2bus/a2thunderclock.cpp10
-rw-r--r--src/devices/bus/a2bus/a2thunderclock.h13
-rw-r--r--src/devices/bus/a2bus/a2ultraterm.cpp12
-rw-r--r--src/devices/bus/a2bus/a2ultraterm.h28
-rw-r--r--src/devices/bus/a2bus/a2videoterm.cpp32
-rw-r--r--src/devices/bus/a2bus/a2videoterm.h41
-rw-r--r--src/devices/bus/a2bus/a2vulcan.cpp12
-rw-r--r--src/devices/bus/a2bus/a2vulcan.h18
-rw-r--r--src/devices/bus/a2bus/a2zipdrive.cpp8
-rw-r--r--src/devices/bus/a2bus/a2zipdrive.h16
-rw-r--r--src/devices/bus/a2bus/agat7langcard.cpp9
-rw-r--r--src/devices/bus/a2bus/agat7langcard.h12
-rw-r--r--src/devices/bus/a2bus/agat7ram.cpp9
-rw-r--r--src/devices/bus/a2bus/agat7ram.h13
-rw-r--r--src/devices/bus/a2bus/corvfdc01.cpp17
-rw-r--r--src/devices/bus/a2bus/corvfdc01.h15
-rw-r--r--src/devices/bus/a2bus/corvfdc02.cpp14
-rw-r--r--src/devices/bus/a2bus/corvfdc02.h13
-rw-r--r--src/devices/bus/a2bus/ezcgi.cpp30
-rw-r--r--src/devices/bus/a2bus/ezcgi.h23
-rw-r--r--src/devices/bus/a2bus/laser128.cpp9
-rw-r--r--src/devices/bus/a2bus/laser128.h13
-rw-r--r--src/devices/bus/a2bus/mouse.cpp8
-rw-r--r--src/devices/bus/a2bus/mouse.h5
-rw-r--r--src/devices/bus/a2bus/pc_xporter.cpp16
-rw-r--r--src/devices/bus/a2bus/pc_xporter.h44
-rw-r--r--src/devices/bus/a2bus/ramcard128k.cpp11
-rw-r--r--src/devices/bus/a2bus/ramcard128k.h13
-rw-r--r--src/devices/bus/a2bus/ramcard16k.cpp9
-rw-r--r--src/devices/bus/a2bus/ramcard16k.h13
-rw-r--r--src/devices/bus/a2bus/timemasterho.cpp12
-rw-r--r--src/devices/bus/a2bus/timemasterho.h13
-rw-r--r--src/devices/bus/a7800/a78_carts.h7
-rw-r--r--src/devices/bus/a7800/a78_slot.cpp12
-rw-r--r--src/devices/bus/a7800/a78_slot.h13
-rw-r--r--src/devices/bus/a7800/cpuwiz.cpp22
-rw-r--r--src/devices/bus/a7800/cpuwiz.h17
-rw-r--r--src/devices/bus/a7800/hiscore.cpp6
-rw-r--r--src/devices/bus/a7800/hiscore.h10
-rw-r--r--src/devices/bus/a7800/rom.cpp104
-rw-r--r--src/devices/bus/a7800/rom.h86
-rw-r--r--src/devices/bus/a7800/xboard.cpp27
-rw-r--r--src/devices/bus/a7800/xboard.h25
-rw-r--r--src/devices/bus/a800/a800_carts.h7
-rw-r--r--src/devices/bus/a800/a800_slot.cpp22
-rw-r--r--src/devices/bus/a800/a800_slot.h27
-rw-r--r--src/devices/bus/a800/a8sio.cpp22
-rw-r--r--src/devices/bus/a800/a8sio.h31
-rw-r--r--src/devices/bus/a800/cassette.cpp17
-rw-r--r--src/devices/bus/a800/cassette.h13
-rw-r--r--src/devices/bus/a800/oss.cpp25
-rw-r--r--src/devices/bus/a800/oss.h48
-rw-r--r--src/devices/bus/a800/rom.cpp62
-rw-r--r--src/devices/bus/a800/rom.h93
-rw-r--r--src/devices/bus/a800/sparta.cpp10
-rw-r--r--src/devices/bus/a800/sparta.h18
-rw-r--r--src/devices/bus/abcbus/abc890.cpp98
-rw-r--r--src/devices/bus/abcbus/abc890.h59
-rw-r--r--src/devices/bus/abcbus/abcbus.cpp12
-rw-r--r--src/devices/bus/abcbus/abcbus.h66
-rw-r--r--src/devices/bus/abcbus/fd2.cpp60
-rw-r--r--src/devices/bus/abcbus/fd2.h20
-rw-r--r--src/devices/bus/abcbus/hdc.cpp8
-rw-r--r--src/devices/bus/abcbus/hdc.h12
-rw-r--r--src/devices/bus/abcbus/lux10828.cpp4
-rw-r--r--src/devices/bus/abcbus/lux10828.h12
-rw-r--r--src/devices/bus/abcbus/lux21046.cpp144
-rw-r--r--src/devices/bus/abcbus/lux21046.h48
-rw-r--r--src/devices/bus/abcbus/lux21056.cpp4
-rw-r--r--src/devices/bus/abcbus/lux21056.h14
-rw-r--r--src/devices/bus/abcbus/lux4105.cpp4
-rw-r--r--src/devices/bus/abcbus/lux4105.h13
-rw-r--r--src/devices/bus/abcbus/memcard.cpp14
-rw-r--r--src/devices/bus/abcbus/memcard.h16
-rw-r--r--src/devices/bus/abcbus/ram.cpp14
-rw-r--r--src/devices/bus/abcbus/ram.h19
-rw-r--r--src/devices/bus/abcbus/sio.cpp4
-rw-r--r--src/devices/bus/abcbus/sio.h12
-rw-r--r--src/devices/bus/abcbus/slutprov.cpp4
-rw-r--r--src/devices/bus/abcbus/slutprov.h12
-rw-r--r--src/devices/bus/abcbus/turbo.cpp4
-rw-r--r--src/devices/bus/abcbus/turbo.h11
-rw-r--r--src/devices/bus/abcbus/uni800.cpp4
-rw-r--r--src/devices/bus/abcbus/uni800.h12
-rw-r--r--src/devices/bus/abckb/abc77.cpp12
-rw-r--r--src/devices/bus/abckb/abc77.h10
-rw-r--r--src/devices/bus/abckb/abc800kb.cpp5
-rw-r--r--src/devices/bus/abckb/abc800kb.h12
-rw-r--r--src/devices/bus/abckb/abc99.cpp4
-rw-r--r--src/devices/bus/abckb/abc99.h2
-rw-r--r--src/devices/bus/abckb/abckb.cpp4
-rw-r--r--src/devices/bus/abckb/abckb.h27
-rw-r--r--src/devices/bus/adam/adamlink.cpp6
-rw-r--r--src/devices/bus/adam/adamlink.h12
-rw-r--r--src/devices/bus/adam/exp.cpp4
-rw-r--r--src/devices/bus/adam/exp.h18
-rw-r--r--src/devices/bus/adam/ide.cpp4
-rw-r--r--src/devices/bus/adam/ide.h12
-rw-r--r--src/devices/bus/adam/ram.cpp4
-rw-r--r--src/devices/bus/adam/ram.h12
-rw-r--r--src/devices/bus/adamnet/adamnet.cpp8
-rw-r--r--src/devices/bus/adamnet/adamnet.h18
-rw-r--r--src/devices/bus/adamnet/ddp.cpp4
-rw-r--r--src/devices/bus/adamnet/ddp.h12
-rw-r--r--src/devices/bus/adamnet/fdc.cpp20
-rw-r--r--src/devices/bus/adamnet/fdc.h12
-rw-r--r--src/devices/bus/adamnet/kb.cpp4
-rw-r--r--src/devices/bus/adamnet/kb.h10
-rw-r--r--src/devices/bus/adamnet/printer.cpp4
-rw-r--r--src/devices/bus/adamnet/printer.h12
-rw-r--r--src/devices/bus/adamnet/spi.cpp4
-rw-r--r--src/devices/bus/adamnet/spi.h12
-rw-r--r--src/devices/bus/amiga/keyboard/a1200.cpp4
-rw-r--r--src/devices/bus/amiga/keyboard/a1200.h22
-rw-r--r--src/devices/bus/amiga/keyboard/a500.cpp47
-rw-r--r--src/devices/bus/amiga/keyboard/a500.h37
-rw-r--r--src/devices/bus/amiga/keyboard/keyboard.cpp4
-rw-r--r--src/devices/bus/amiga/keyboard/keyboard.h25
-rw-r--r--src/devices/bus/amiga/keyboard/matrix.h6
-rw-r--r--src/devices/bus/amiga/zorro/a2052.cpp4
-rw-r--r--src/devices/bus/amiga/zorro/a2052.h10
-rw-r--r--src/devices/bus/amiga/zorro/a2232.cpp4
-rw-r--r--src/devices/bus/amiga/zorro/a2232.h10
-rw-r--r--src/devices/bus/amiga/zorro/a590.cpp13
-rw-r--r--src/devices/bus/amiga/zorro/a590.h21
-rw-r--r--src/devices/bus/amiga/zorro/action_replay.cpp17
-rw-r--r--src/devices/bus/amiga/zorro/action_replay.h21
-rw-r--r--src/devices/bus/amiga/zorro/buddha.cpp4
-rw-r--r--src/devices/bus/amiga/zorro/buddha.h10
-rw-r--r--src/devices/bus/amiga/zorro/cards.cpp7
-rw-r--r--src/devices/bus/amiga/zorro/cards.h14
-rw-r--r--src/devices/bus/amiga/zorro/zorro.cpp39
-rw-r--r--src/devices/bus/amiga/zorro/zorro.h74
-rw-r--r--src/devices/bus/apf/rom.cpp18
-rw-r--r--src/devices/bus/apf/rom.h27
-rw-r--r--src/devices/bus/apf/slot.cpp10
-rw-r--r--src/devices/bus/apf/slot.h9
-rw-r--r--src/devices/bus/apricot/expansion/cards.cpp1
-rw-r--r--src/devices/bus/apricot/expansion/cards.h10
-rw-r--r--src/devices/bus/apricot/expansion/expansion.cpp18
-rw-r--r--src/devices/bus/apricot/expansion/expansion.h47
-rw-r--r--src/devices/bus/apricot/expansion/ram.cpp12
-rw-r--r--src/devices/bus/apricot/expansion/ram.h14
-rw-r--r--src/devices/bus/apricot/keyboard/hle.cpp4
-rw-r--r--src/devices/bus/apricot/keyboard/hle.h14
-rw-r--r--src/devices/bus/apricot/keyboard/keyboard.cpp4
-rw-r--r--src/devices/bus/apricot/keyboard/keyboard.h19
-rw-r--r--src/devices/bus/arcadia/rom.cpp14
-rw-r--r--src/devices/bus/arcadia/rom.h22
-rw-r--r--src/devices/bus/arcadia/slot.cpp10
-rw-r--r--src/devices/bus/arcadia/slot.h14
-rw-r--r--src/devices/bus/astrocde/exp.cpp8
-rw-r--r--src/devices/bus/astrocde/exp.h17
-rw-r--r--src/devices/bus/astrocde/ram.cpp46
-rw-r--r--src/devices/bus/astrocde/ram.h58
-rw-r--r--src/devices/bus/astrocde/rom.cpp22
-rw-r--r--src/devices/bus/astrocde/rom.h42
-rw-r--r--src/devices/bus/astrocde/slot.cpp10
-rw-r--r--src/devices/bus/astrocde/slot.h19
-rw-r--r--src/devices/bus/bbc/1mhzbus/1mhzbus.cpp6
-rw-r--r--src/devices/bus/bbc/1mhzbus/1mhzbus.h21
-rw-r--r--src/devices/bus/bbc/1mhzbus/opus3.cpp6
-rw-r--r--src/devices/bus/bbc/1mhzbus/opus3.h10
-rw-r--r--src/devices/bus/bbc/analogue/analogue.cpp6
-rw-r--r--src/devices/bus/bbc/analogue/analogue.h15
-rw-r--r--src/devices/bus/bbc/analogue/joystick.cpp12
-rw-r--r--src/devices/bus/bbc/analogue/joystick.h18
-rw-r--r--src/devices/bus/bbc/fdc/acorn.cpp10
-rw-r--r--src/devices/bus/bbc/fdc/acorn.h14
-rw-r--r--src/devices/bus/bbc/fdc/cumana.cpp14
-rw-r--r--src/devices/bus/bbc/fdc/cumana.h19
-rw-r--r--src/devices/bus/bbc/fdc/fdc.cpp6
-rw-r--r--src/devices/bus/bbc/fdc/fdc.h21
-rw-r--r--src/devices/bus/bbc/fdc/opus.cpp18
-rw-r--r--src/devices/bus/bbc/fdc/opus.h21
-rw-r--r--src/devices/bus/bbc/fdc/watford.cpp16
-rw-r--r--src/devices/bus/bbc/fdc/watford.h22
-rw-r--r--src/devices/bus/bbc/joyport/joyport.cpp6
-rw-r--r--src/devices/bus/bbc/joyport/joyport.h14
-rw-r--r--src/devices/bus/bbc/joyport/joystick.cpp8
-rw-r--r--src/devices/bus/bbc/joyport/joystick.h10
-rw-r--r--src/devices/bus/bbc/tube/tube.cpp6
-rw-r--r--src/devices/bus/bbc/tube/tube.h19
-rw-r--r--src/devices/bus/bbc/userport/userport.cpp6
-rw-r--r--src/devices/bus/bbc/userport/userport.h14
-rw-r--r--src/devices/bus/bml3/bml3bus.cpp30
-rw-r--r--src/devices/bus/bml3/bml3bus.h31
-rw-r--r--src/devices/bus/bml3/bml3kanji.cpp4
-rw-r--r--src/devices/bus/bml3/bml3kanji.h10
-rw-r--r--src/devices/bus/bml3/bml3mp1802.cpp6
-rw-r--r--src/devices/bus/bml3/bml3mp1802.h11
-rw-r--r--src/devices/bus/bml3/bml3mp1805.cpp4
-rw-r--r--src/devices/bus/bml3/bml3mp1805.h10
-rw-r--r--src/devices/bus/bw2/exp.cpp4
-rw-r--r--src/devices/bus/bw2/exp.h14
-rw-r--r--src/devices/bus/bw2/ramcard.cpp4
-rw-r--r--src/devices/bus/bw2/ramcard.h10
-rw-r--r--src/devices/bus/c64/16kb.cpp4
-rw-r--r--src/devices/bus/c64/16kb.h14
-rw-r--r--src/devices/bus/c64/4dxh.cpp4
-rw-r--r--src/devices/bus/c64/4dxh.h10
-rw-r--r--src/devices/bus/c64/4ksa.cpp4
-rw-r--r--src/devices/bus/c64/4ksa.h10
-rw-r--r--src/devices/bus/c64/4tba.cpp4
-rw-r--r--src/devices/bus/c64/4tba.h11
-rw-r--r--src/devices/bus/c64/bn1541.cpp4
-rw-r--r--src/devices/bus/c64/bn1541.h10
-rw-r--r--src/devices/bus/c64/c128_comal80.cpp4
-rw-r--r--src/devices/bus/c64/c128_comal80.h10
-rw-r--r--src/devices/bus/c64/c128_partner.cpp27
-rw-r--r--src/devices/bus/c64/c128_partner.h16
-rw-r--r--src/devices/bus/c64/comal80.cpp4
-rw-r--r--src/devices/bus/c64/comal80.h10
-rw-r--r--src/devices/bus/c64/cpm.cpp4
-rw-r--r--src/devices/bus/c64/cpm.h12
-rw-r--r--src/devices/bus/c64/currah_speech.cpp4
-rw-r--r--src/devices/bus/c64/currah_speech.h10
-rw-r--r--src/devices/bus/c64/dela_ep256.cpp4
-rw-r--r--src/devices/bus/c64/dela_ep256.h11
-rw-r--r--src/devices/bus/c64/dela_ep64.cpp4
-rw-r--r--src/devices/bus/c64/dela_ep64.h10
-rw-r--r--src/devices/bus/c64/dela_ep7x8.cpp4
-rw-r--r--src/devices/bus/c64/dela_ep7x8.h11
-rw-r--r--src/devices/bus/c64/dinamic.cpp4
-rw-r--r--src/devices/bus/c64/dinamic.h10
-rw-r--r--src/devices/bus/c64/dqbb.cpp4
-rw-r--r--src/devices/bus/c64/dqbb.h10
-rw-r--r--src/devices/bus/c64/easy_calc_result.cpp4
-rw-r--r--src/devices/bus/c64/easy_calc_result.h10
-rw-r--r--src/devices/bus/c64/easyflash.cpp4
-rw-r--r--src/devices/bus/c64/easyflash.h10
-rw-r--r--src/devices/bus/c64/epyx_fast_load.cpp4
-rw-r--r--src/devices/bus/c64/epyx_fast_load.h10
-rw-r--r--src/devices/bus/c64/exos.cpp4
-rw-r--r--src/devices/bus/c64/exos.h10
-rw-r--r--src/devices/bus/c64/exp.cpp4
-rw-r--r--src/devices/bus/c64/exp.h23
-rw-r--r--src/devices/bus/c64/fcc.cpp4
-rw-r--r--src/devices/bus/c64/fcc.h11
-rw-r--r--src/devices/bus/c64/final.cpp4
-rw-r--r--src/devices/bus/c64/final.h10
-rw-r--r--src/devices/bus/c64/final3.cpp4
-rw-r--r--src/devices/bus/c64/final3.h10
-rw-r--r--src/devices/bus/c64/fun_play.cpp4
-rw-r--r--src/devices/bus/c64/fun_play.h10
-rw-r--r--src/devices/bus/c64/geocable.cpp4
-rw-r--r--src/devices/bus/c64/geocable.h9
-rw-r--r--src/devices/bus/c64/georam.cpp4
-rw-r--r--src/devices/bus/c64/georam.h10
-rw-r--r--src/devices/bus/c64/ide64.cpp4
-rw-r--r--src/devices/bus/c64/ide64.h10
-rw-r--r--src/devices/bus/c64/ieee488.cpp4
-rw-r--r--src/devices/bus/c64/ieee488.h13
-rw-r--r--src/devices/bus/c64/kingsoft.cpp4
-rw-r--r--src/devices/bus/c64/kingsoft.h10
-rw-r--r--src/devices/bus/c64/mach5.cpp4
-rw-r--r--src/devices/bus/c64/mach5.h10
-rw-r--r--src/devices/bus/c64/magic_desk.cpp4
-rw-r--r--src/devices/bus/c64/magic_desk.h10
-rw-r--r--src/devices/bus/c64/magic_formel.cpp4
-rw-r--r--src/devices/bus/c64/magic_formel.h10
-rw-r--r--src/devices/bus/c64/magic_voice.cpp4
-rw-r--r--src/devices/bus/c64/magic_voice.h13
-rw-r--r--src/devices/bus/c64/midi_maplin.cpp4
-rw-r--r--src/devices/bus/c64/midi_maplin.h10
-rw-r--r--src/devices/bus/c64/midi_namesoft.cpp4
-rw-r--r--src/devices/bus/c64/midi_namesoft.h10
-rw-r--r--src/devices/bus/c64/midi_passport.cpp4
-rw-r--r--src/devices/bus/c64/midi_passport.h10
-rw-r--r--src/devices/bus/c64/midi_sci.cpp4
-rw-r--r--src/devices/bus/c64/midi_sci.h10
-rw-r--r--src/devices/bus/c64/midi_siel.cpp4
-rw-r--r--src/devices/bus/c64/midi_siel.h10
-rw-r--r--src/devices/bus/c64/mikro_assembler.cpp4
-rw-r--r--src/devices/bus/c64/mikro_assembler.h10
-rw-r--r--src/devices/bus/c64/multiscreen.cpp4
-rw-r--r--src/devices/bus/c64/multiscreen.h10
-rw-r--r--src/devices/bus/c64/music64.cpp4
-rw-r--r--src/devices/bus/c64/music64.h10
-rw-r--r--src/devices/bus/c64/neoram.cpp4
-rw-r--r--src/devices/bus/c64/neoram.h10
-rw-r--r--src/devices/bus/c64/ocean.cpp4
-rw-r--r--src/devices/bus/c64/ocean.h10
-rw-r--r--src/devices/bus/c64/pagefox.cpp4
-rw-r--r--src/devices/bus/c64/pagefox.h10
-rw-r--r--src/devices/bus/c64/partner.cpp4
-rw-r--r--src/devices/bus/c64/partner.h10
-rw-r--r--src/devices/bus/c64/prophet64.cpp4
-rw-r--r--src/devices/bus/c64/prophet64.h12
-rw-r--r--src/devices/bus/c64/ps64.cpp4
-rw-r--r--src/devices/bus/c64/ps64.h10
-rw-r--r--src/devices/bus/c64/reu.cpp16
-rw-r--r--src/devices/bus/c64/reu.h21
-rw-r--r--src/devices/bus/c64/rex.cpp4
-rw-r--r--src/devices/bus/c64/rex.h10
-rw-r--r--src/devices/bus/c64/rex_ep256.cpp4
-rw-r--r--src/devices/bus/c64/rex_ep256.h11
-rw-r--r--src/devices/bus/c64/ross.cpp4
-rw-r--r--src/devices/bus/c64/ross.h11
-rw-r--r--src/devices/bus/c64/sfx_sound_expander.cpp4
-rw-r--r--src/devices/bus/c64/sfx_sound_expander.h11
-rw-r--r--src/devices/bus/c64/silverrock.cpp4
-rw-r--r--src/devices/bus/c64/silverrock.h10
-rw-r--r--src/devices/bus/c64/simons_basic.cpp4
-rw-r--r--src/devices/bus/c64/simons_basic.h10
-rw-r--r--src/devices/bus/c64/speakeasy.cpp16
-rw-r--r--src/devices/bus/c64/speakeasy.h18
-rw-r--r--src/devices/bus/c64/stardos.cpp4
-rw-r--r--src/devices/bus/c64/stardos.h10
-rw-r--r--src/devices/bus/c64/std.cpp4
-rw-r--r--src/devices/bus/c64/std.h10
-rw-r--r--src/devices/bus/c64/structured_basic.cpp4
-rw-r--r--src/devices/bus/c64/structured_basic.h11
-rw-r--r--src/devices/bus/c64/super_explode.cpp4
-rw-r--r--src/devices/bus/c64/super_explode.h10
-rw-r--r--src/devices/bus/c64/super_games.cpp4
-rw-r--r--src/devices/bus/c64/super_games.h10
-rw-r--r--src/devices/bus/c64/supercpu.cpp4
-rw-r--r--src/devices/bus/c64/supercpu.h11
-rw-r--r--src/devices/bus/c64/sw8k.cpp4
-rw-r--r--src/devices/bus/c64/sw8k.h9
-rw-r--r--src/devices/bus/c64/swiftlink.cpp4
-rw-r--r--src/devices/bus/c64/swiftlink.h10
-rw-r--r--src/devices/bus/c64/system3.cpp4
-rw-r--r--src/devices/bus/c64/system3.h10
-rw-r--r--src/devices/bus/c64/tdos.cpp4
-rw-r--r--src/devices/bus/c64/tdos.h10
-rw-r--r--src/devices/bus/c64/turbo232.cpp4
-rw-r--r--src/devices/bus/c64/turbo232.h10
-rw-r--r--src/devices/bus/c64/user.h8
-rw-r--r--src/devices/bus/c64/vizastar.cpp4
-rw-r--r--src/devices/bus/c64/vizastar.h10
-rw-r--r--src/devices/bus/c64/vw64.cpp4
-rw-r--r--src/devices/bus/c64/vw64.h10
-rw-r--r--src/devices/bus/c64/warp_speed.cpp4
-rw-r--r--src/devices/bus/c64/warp_speed.h10
-rw-r--r--src/devices/bus/c64/westermann.cpp4
-rw-r--r--src/devices/bus/c64/westermann.h10
-rw-r--r--src/devices/bus/c64/xl80.cpp4
-rw-r--r--src/devices/bus/c64/xl80.h10
-rw-r--r--src/devices/bus/c64/zaxxon.cpp4
-rw-r--r--src/devices/bus/c64/zaxxon.h10
-rw-r--r--src/devices/bus/cbm2/24k.cpp4
-rw-r--r--src/devices/bus/cbm2/24k.h10
-rw-r--r--src/devices/bus/cbm2/exp.cpp9
-rw-r--r--src/devices/bus/cbm2/exp.h14
-rw-r--r--src/devices/bus/cbm2/hrg.cpp40
-rw-r--r--src/devices/bus/cbm2/hrg.h35
-rw-r--r--src/devices/bus/cbm2/std.cpp4
-rw-r--r--src/devices/bus/cbm2/std.h10
-rw-r--r--src/devices/bus/cbm2/user.cpp4
-rw-r--r--src/devices/bus/cbm2/user.h27
-rw-r--r--src/devices/bus/cbmiec/c1526.cpp50
-rw-r--r--src/devices/bus/cbmiec/c1526.h36
-rw-r--r--src/devices/bus/cbmiec/c1541.cpp236
-rw-r--r--src/devices/bus/cbmiec/c1541.h120
-rw-r--r--src/devices/bus/cbmiec/c1571.cpp264
-rw-r--r--src/devices/bus/cbmiec/c1571.h49
-rw-r--r--src/devices/bus/cbmiec/c1581.cpp87
-rw-r--r--src/devices/bus/cbmiec/c1581.h31
-rw-r--r--src/devices/bus/cbmiec/c64_nl10.cpp6
-rw-r--r--src/devices/bus/cbmiec/c64_nl10.h14
-rw-r--r--src/devices/bus/cbmiec/cbmiec.cpp8
-rw-r--r--src/devices/bus/cbmiec/cbmiec.h37
-rw-r--r--src/devices/bus/cbmiec/cmdhd.cpp4
-rw-r--r--src/devices/bus/cbmiec/cmdhd.h16
-rw-r--r--src/devices/bus/cbmiec/diag264_lb_iec.cpp6
-rw-r--r--src/devices/bus/cbmiec/diag264_lb_iec.h11
-rw-r--r--src/devices/bus/cbmiec/fd2000.cpp29
-rw-r--r--src/devices/bus/cbmiec/fd2000.h28
-rw-r--r--src/devices/bus/cbmiec/interpod.cpp10
-rw-r--r--src/devices/bus/cbmiec/interpod.h16
-rw-r--r--src/devices/bus/cbmiec/serialbox.cpp4
-rw-r--r--src/devices/bus/cbmiec/serialbox.h14
-rw-r--r--src/devices/bus/cbmiec/vic1515.cpp28
-rw-r--r--src/devices/bus/cbmiec/vic1515.h18
-rw-r--r--src/devices/bus/cbmiec/vic1520.cpp26
-rw-r--r--src/devices/bus/cbmiec/vic1520.h16
-rw-r--r--src/devices/bus/centronics/comxpl80.cpp4
-rw-r--r--src/devices/bus/centronics/comxpl80.h10
-rw-r--r--src/devices/bus/centronics/covox.cpp8
-rw-r--r--src/devices/bus/centronics/covox.h10
-rw-r--r--src/devices/bus/centronics/ctronics.cpp4
-rw-r--r--src/devices/bus/centronics/ctronics.h80
-rw-r--r--src/devices/bus/centronics/digiblst.cpp4
-rw-r--r--src/devices/bus/centronics/digiblst.h8
-rw-r--r--src/devices/bus/centronics/dsjoy.cpp4
-rw-r--r--src/devices/bus/centronics/dsjoy.h8
-rw-r--r--src/devices/bus/centronics/epson_ex800.cpp64
-rw-r--r--src/devices/bus/centronics/epson_ex800.h16
-rw-r--r--src/devices/bus/centronics/epson_lx800.cpp80
-rw-r--r--src/devices/bus/centronics/epson_lx800.h19
-rw-r--r--src/devices/bus/centronics/epson_lx810l.cpp147
-rw-r--r--src/devices/bus/centronics/epson_lx810l.h29
-rw-r--r--src/devices/bus/centronics/nec_p72.cpp22
-rw-r--r--src/devices/bus/centronics/nec_p72.h22
-rw-r--r--src/devices/bus/centronics/printer.cpp4
-rw-r--r--src/devices/bus/centronics/printer.h10
-rw-r--r--src/devices/bus/cgenie/expansion/carts.cpp4
-rw-r--r--src/devices/bus/cgenie/expansion/carts.h12
-rw-r--r--src/devices/bus/cgenie/expansion/expansion.cpp30
-rw-r--r--src/devices/bus/cgenie/expansion/expansion.h59
-rw-r--r--src/devices/bus/cgenie/expansion/floppy.cpp14
-rw-r--r--src/devices/bus/cgenie/expansion/floppy.h14
-rw-r--r--src/devices/bus/cgenie/parallel/carts.cpp5
-rw-r--r--src/devices/bus/cgenie/parallel/carts.h13
-rw-r--r--src/devices/bus/cgenie/parallel/joystick.cpp6
-rw-r--r--src/devices/bus/cgenie/parallel/joystick.h12
-rw-r--r--src/devices/bus/cgenie/parallel/parallel.cpp36
-rw-r--r--src/devices/bus/cgenie/parallel/parallel.h43
-rw-r--r--src/devices/bus/cgenie/parallel/printer.cpp6
-rw-r--r--src/devices/bus/cgenie/parallel/printer.h12
-rw-r--r--src/devices/bus/chanf/rom.cpp40
-rw-r--r--src/devices/bus/chanf/rom.h22
-rw-r--r--src/devices/bus/chanf/slot.cpp10
-rw-r--r--src/devices/bus/chanf/slot.h16
-rw-r--r--src/devices/bus/coco/coco_232.cpp8
-rw-r--r--src/devices/bus/coco/coco_232.h28
-rw-r--r--src/devices/bus/coco/coco_dwsock.cpp15
-rw-r--r--src/devices/bus/coco/coco_dwsock.h8
-rw-r--r--src/devices/bus/coco/coco_fdc.cpp34
-rw-r--r--src/devices/bus/coco/coco_fdc.h22
-rw-r--r--src/devices/bus/coco/coco_multi.cpp13
-rw-r--r--src/devices/bus/coco/coco_multi.h12
-rw-r--r--src/devices/bus/coco/coco_orch90.cpp10
-rw-r--r--src/devices/bus/coco/coco_orch90.h12
-rw-r--r--src/devices/bus/coco/coco_pak.cpp20
-rw-r--r--src/devices/bus/coco/coco_pak.h60
-rw-r--r--src/devices/bus/coco/coco_t4426.cpp29
-rw-r--r--src/devices/bus/coco/coco_t4426.h49
-rw-r--r--src/devices/bus/coco/cococart.cpp14
-rw-r--r--src/devices/bus/coco/cococart.h18
-rw-r--r--src/devices/bus/coco/dragon_fdc.cpp25
-rw-r--r--src/devices/bus/coleco/ctrl.cpp7
-rw-r--r--src/devices/bus/coleco/ctrl.h25
-rw-r--r--src/devices/bus/coleco/exp.cpp7
-rw-r--r--src/devices/bus/coleco/exp.h19
-rw-r--r--src/devices/bus/coleco/hand.cpp18
-rw-r--r--src/devices/bus/coleco/hand.h16
-rw-r--r--src/devices/bus/coleco/sac.cpp22
-rw-r--r--src/devices/bus/coleco/sac.h16
-rw-r--r--src/devices/bus/coleco/std.cpp4
-rw-r--r--src/devices/bus/coleco/std.h10
-rw-r--r--src/devices/bus/coleco/xin1.cpp4
-rw-r--r--src/devices/bus/coleco/xin1.h10
-rw-r--r--src/devices/bus/compis/graphics.cpp12
-rw-r--r--src/devices/bus/compis/graphics.h29
-rw-r--r--src/devices/bus/compis/hrg.cpp42
-rw-r--r--src/devices/bus/compis/hrg.h28
-rw-r--r--src/devices/bus/compucolor/floppy.cpp20
-rw-r--r--src/devices/bus/compucolor/floppy.h22
-rw-r--r--src/devices/bus/comx35/clm.cpp4
-rw-r--r--src/devices/bus/comx35/clm.h10
-rw-r--r--src/devices/bus/comx35/eprom.cpp4
-rw-r--r--src/devices/bus/comx35/eprom.h10
-rw-r--r--src/devices/bus/comx35/exp.cpp4
-rw-r--r--src/devices/bus/comx35/exp.h29
-rw-r--r--src/devices/bus/comx35/expbox.cpp4
-rw-r--r--src/devices/bus/comx35/expbox.h10
-rw-r--r--src/devices/bus/comx35/fdc.cpp4
-rw-r--r--src/devices/bus/comx35/fdc.h12
-rw-r--r--src/devices/bus/comx35/joycard.cpp4
-rw-r--r--src/devices/bus/comx35/joycard.h10
-rw-r--r--src/devices/bus/comx35/printer.cpp4
-rw-r--r--src/devices/bus/comx35/printer.h13
-rw-r--r--src/devices/bus/comx35/ram.cpp4
-rw-r--r--src/devices/bus/comx35/ram.h10
-rw-r--r--src/devices/bus/comx35/thermal.cpp4
-rw-r--r--src/devices/bus/comx35/thermal.h10
-rw-r--r--src/devices/bus/cpc/amdrum.cpp4
-rw-r--r--src/devices/bus/cpc/amdrum.h10
-rw-r--r--src/devices/bus/cpc/brunword4.cpp7
-rw-r--r--src/devices/bus/cpc/brunword4.h8
-rw-r--r--src/devices/bus/cpc/cpc_pds.cpp7
-rw-r--r--src/devices/bus/cpc/cpc_pds.h10
-rw-r--r--src/devices/bus/cpc/cpc_rom.cpp44
-rw-r--r--src/devices/bus/cpc/cpc_rom.h29
-rw-r--r--src/devices/bus/cpc/cpc_rs232.cpp19
-rw-r--r--src/devices/bus/cpc/cpc_rs232.h29
-rw-r--r--src/devices/bus/cpc/cpc_ssa1.cpp8
-rw-r--r--src/devices/bus/cpc/cpc_ssa1.h12
-rw-r--r--src/devices/bus/cpc/cpcexp.cpp23
-rw-r--r--src/devices/bus/cpc/cpcexp.h46
-rw-r--r--src/devices/bus/cpc/ddi1.cpp5
-rw-r--r--src/devices/bus/cpc/ddi1.h12
-rw-r--r--src/devices/bus/cpc/doubler.cpp5
-rw-r--r--src/devices/bus/cpc/doubler.h10
-rw-r--r--src/devices/bus/cpc/hd20.cpp5
-rw-r--r--src/devices/bus/cpc/hd20.h10
-rw-r--r--src/devices/bus/cpc/magicsound.cpp6
-rw-r--r--src/devices/bus/cpc/magicsound.h10
-rw-r--r--src/devices/bus/cpc/mface2.cpp8
-rw-r--r--src/devices/bus/cpc/mface2.h10
-rw-r--r--src/devices/bus/cpc/playcity.cpp7
-rw-r--r--src/devices/bus/cpc/playcity.h13
-rw-r--r--src/devices/bus/cpc/smartwatch.cpp5
-rw-r--r--src/devices/bus/cpc/smartwatch.h13
-rw-r--r--src/devices/bus/cpc/symbfac2.cpp10
-rw-r--r--src/devices/bus/cpc/symbfac2.h13
-rw-r--r--src/devices/bus/cpc/transtape.cpp8
-rw-r--r--src/devices/bus/cpc/transtape.h10
-rw-r--r--src/devices/bus/crvision/rom.cpp35
-rw-r--r--src/devices/bus/crvision/rom.h35
-rw-r--r--src/devices/bus/crvision/slot.cpp10
-rw-r--r--src/devices/bus/crvision/slot.h13
-rw-r--r--src/devices/bus/dmv/dmvbus.cpp16
-rw-r--r--src/devices/bus/dmv/dmvbus.h24
-rw-r--r--src/devices/bus/dmv/k210.cpp17
-rw-r--r--src/devices/bus/dmv/k210.h10
-rw-r--r--src/devices/bus/dmv/k220.cpp17
-rw-r--r--src/devices/bus/dmv/k220.h9
-rw-r--r--src/devices/bus/dmv/k230.cpp37
-rw-r--r--src/devices/bus/dmv/k230.h19
-rw-r--r--src/devices/bus/dmv/k233.cpp12
-rw-r--r--src/devices/bus/dmv/k233.h10
-rw-r--r--src/devices/bus/dmv/k801.cpp37
-rw-r--r--src/devices/bus/dmv/k801.h22
-rw-r--r--src/devices/bus/dmv/k803.cpp12
-rw-r--r--src/devices/bus/dmv/k803.h10
-rw-r--r--src/devices/bus/dmv/k806.cpp19
-rw-r--r--src/devices/bus/dmv/k806.h10
-rw-r--r--src/devices/bus/dmv/ram.cpp29
-rw-r--r--src/devices/bus/dmv/ram.h30
-rw-r--r--src/devices/bus/ecbbus/ecbbus.cpp14
-rw-r--r--src/devices/bus/ecbbus/ecbbus.h30
-rw-r--r--src/devices/bus/ecbbus/grip.cpp93
-rw-r--r--src/devices/bus/ecbbus/grip.h12
-rw-r--r--src/devices/bus/econet/e01.cpp198
-rw-r--r--src/devices/bus/econet/e01.h43
-rw-r--r--src/devices/bus/econet/econet.cpp17
-rw-r--r--src/devices/bus/econet/econet.h27
-rw-r--r--src/devices/bus/electron/exp.cpp6
-rw-r--r--src/devices/bus/electron/exp.h20
-rw-r--r--src/devices/bus/electron/fbjoy.cpp8
-rw-r--r--src/devices/bus/electron/fbjoy.h10
-rw-r--r--src/devices/bus/electron/m2105.cpp20
-rw-r--r--src/devices/bus/electron/m2105.h9
-rw-r--r--src/devices/bus/electron/plus3.cpp16
-rw-r--r--src/devices/bus/electron/plus3.h11
-rw-r--r--src/devices/bus/electron/pwrjoy.cpp10
-rw-r--r--src/devices/bus/electron/pwrjoy.h11
-rw-r--r--src/devices/bus/ep64/exdos.cpp6
-rw-r--r--src/devices/bus/ep64/exdos.h13
-rw-r--r--src/devices/bus/ep64/exp.cpp4
-rw-r--r--src/devices/bus/ep64/exp.h20
-rw-r--r--src/devices/bus/epson_sio/epson_sio.cpp11
-rw-r--r--src/devices/bus/epson_sio/epson_sio.h13
-rw-r--r--src/devices/bus/epson_sio/pf10.cpp4
-rw-r--r--src/devices/bus/epson_sio/pf10.h12
-rw-r--r--src/devices/bus/epson_sio/tf20.cpp4
-rw-r--r--src/devices/bus/epson_sio/tf20.h12
-rw-r--r--src/devices/bus/gameboy/gb_slot.cpp51
-rw-r--r--src/devices/bus/gameboy/gb_slot.h27
-rw-r--r--src/devices/bus/gameboy/mbc.cpp124
-rw-r--r--src/devices/bus/gameboy/mbc.h237
-rw-r--r--src/devices/bus/gameboy/rom.cpp44
-rw-r--r--src/devices/bus/gameboy/rom.h95
-rw-r--r--src/devices/bus/gamegear/ggext.cpp11
-rw-r--r--src/devices/bus/gamegear/ggext.h19
-rw-r--r--src/devices/bus/gamegear/smsctrladp.cpp5
-rw-r--r--src/devices/bus/gamegear/smsctrladp.h10
-rw-r--r--src/devices/bus/gba/gba_slot.cpp469
-rw-r--r--src/devices/bus/gba/gba_slot.h476
-rw-r--r--src/devices/bus/gba/rom.cpp99
-rw-r--r--src/devices/bus/gba/rom.h160
-rw-r--r--src/devices/bus/generic/carts.cpp3
-rw-r--r--src/devices/bus/generic/carts.h12
-rw-r--r--src/devices/bus/generic/ram.cpp44
-rw-r--r--src/devices/bus/generic/ram.h48
-rw-r--r--src/devices/bus/generic/rom.cpp21
-rw-r--r--src/devices/bus/generic/rom.h27
-rw-r--r--src/devices/bus/generic/slot.cpp21
-rw-r--r--src/devices/bus/generic/slot.h26
-rw-r--r--src/devices/bus/hp9845_io/98034.cpp87
-rw-r--r--src/devices/bus/hp9845_io/98034.h34
-rw-r--r--src/devices/bus/hp9845_io/98035.cpp82
-rw-r--r--src/devices/bus/hp9845_io/98035.h39
-rw-r--r--src/devices/bus/hp9845_io/hp9845_io.cpp8
-rw-r--r--src/devices/bus/hp9845_io/hp9845_io.h18
-rw-r--r--src/devices/bus/hp_hil/hil_devices.h6
-rw-r--r--src/devices/bus/hp_hil/hlekbd.cpp10
-rw-r--r--src/devices/bus/hp_hil/hlekbd.h11
-rw-r--r--src/devices/bus/hp_hil/hp_hil.cpp8
-rw-r--r--src/devices/bus/hp_hil/hp_hil.h33
-rw-r--r--src/devices/bus/hp_optroms/hp_optrom.cpp13
-rw-r--r--src/devices/bus/hp_optroms/hp_optrom.h76
-rw-r--r--src/devices/bus/ieee488/c2031.cpp29
-rw-r--r--src/devices/bus/ieee488/c2031.h11
-rw-r--r--src/devices/bus/ieee488/c2040.cpp242
-rw-r--r--src/devices/bus/ieee488/c2040.h45
-rw-r--r--src/devices/bus/ieee488/c2040fdc.cpp74
-rw-r--r--src/devices/bus/ieee488/c2040fdc.h30
-rw-r--r--src/devices/bus/ieee488/c8050.cpp307
-rw-r--r--src/devices/bus/ieee488/c8050.h53
-rw-r--r--src/devices/bus/ieee488/c8050fdc.cpp80
-rw-r--r--src/devices/bus/ieee488/c8050fdc.h34
-rw-r--r--src/devices/bus/ieee488/c8280.cpp76
-rw-r--r--src/devices/bus/ieee488/c8280.h24
-rw-r--r--src/devices/bus/ieee488/d9060.cpp132
-rw-r--r--src/devices/bus/ieee488/d9060.h55
-rw-r--r--src/devices/bus/ieee488/hardbox.cpp17
-rw-r--r--src/devices/bus/ieee488/hardbox.h13
-rw-r--r--src/devices/bus/ieee488/hp9895.cpp4
-rw-r--r--src/devices/bus/ieee488/hp9895.h18
-rw-r--r--src/devices/bus/ieee488/ieee488.cpp38
-rw-r--r--src/devices/bus/ieee488/ieee488.h57
-rw-r--r--src/devices/bus/ieee488/shark.cpp8
-rw-r--r--src/devices/bus/ieee488/shark.h12
-rw-r--r--src/devices/bus/ieee488/softbox.cpp19
-rw-r--r--src/devices/bus/ieee488/softbox.h13
-rw-r--r--src/devices/bus/imi7000/imi5000h.cpp4
-rw-r--r--src/devices/bus/imi7000/imi5000h.h11
-rw-r--r--src/devices/bus/imi7000/imi7000.cpp15
-rw-r--r--src/devices/bus/imi7000/imi7000.h18
-rw-r--r--src/devices/bus/intv/ecs.cpp67
-rw-r--r--src/devices/bus/intv/ecs.h76
-rw-r--r--src/devices/bus/intv/rom.cpp23
-rw-r--r--src/devices/bus/intv/rom.h18
-rw-r--r--src/devices/bus/intv/slot.cpp11
-rw-r--r--src/devices/bus/intv/slot.h20
-rw-r--r--src/devices/bus/intv/voice.cpp21
-rw-r--r--src/devices/bus/intv/voice.h26
-rw-r--r--src/devices/bus/intv_ctrl/ctrl.cpp7
-rw-r--r--src/devices/bus/intv_ctrl/ctrl.h12
-rw-r--r--src/devices/bus/intv_ctrl/ecs_ctrl.cpp18
-rw-r--r--src/devices/bus/intv_ctrl/ecs_ctrl.h24
-rw-r--r--src/devices/bus/intv_ctrl/handctrl.cpp16
-rw-r--r--src/devices/bus/intv_ctrl/handctrl.h10
-rw-r--r--src/devices/bus/iq151/disc2.cpp10
-rw-r--r--src/devices/bus/iq151/disc2.h11
-rw-r--r--src/devices/bus/iq151/grafik.cpp10
-rw-r--r--src/devices/bus/iq151/grafik.h9
-rw-r--r--src/devices/bus/iq151/iq151.cpp21
-rw-r--r--src/devices/bus/iq151/iq151.h26
-rw-r--r--src/devices/bus/iq151/minigraf.cpp9
-rw-r--r--src/devices/bus/iq151/minigraf.h10
-rw-r--r--src/devices/bus/iq151/ms151a.cpp9
-rw-r--r--src/devices/bus/iq151/ms151a.h10
-rw-r--r--src/devices/bus/iq151/rom.cpp34
-rw-r--r--src/devices/bus/iq151/rom.h26
-rw-r--r--src/devices/bus/iq151/staper.cpp14
-rw-r--r--src/devices/bus/iq151/staper.h10
-rw-r--r--src/devices/bus/iq151/video32.cpp13
-rw-r--r--src/devices/bus/iq151/video32.h14
-rw-r--r--src/devices/bus/iq151/video64.cpp15
-rw-r--r--src/devices/bus/iq151/video64.h14
-rw-r--r--src/devices/bus/isa/3c503.cpp10
-rw-r--r--src/devices/bus/isa/3c503.h13
-rw-r--r--src/devices/bus/isa/3c505.cpp16
-rw-r--r--src/devices/bus/isa/3c505.h37
-rw-r--r--src/devices/bus/isa/adlib.cpp8
-rw-r--r--src/devices/bus/isa/adlib.h10
-rw-r--r--src/devices/bus/isa/aga.cpp71
-rw-r--r--src/devices/bus/isa/aga.h32
-rw-r--r--src/devices/bus/isa/aha1542.cpp4
-rw-r--r--src/devices/bus/isa/aha1542.h11
-rw-r--r--src/devices/bus/isa/cga.cpp72
-rw-r--r--src/devices/bus/isa/cga.h32
-rw-r--r--src/devices/bus/isa/com.cpp15
-rw-r--r--src/devices/bus/isa/com.h30
-rw-r--r--src/devices/bus/isa/dectalk.cpp4
-rw-r--r--src/devices/bus/isa/dectalk.h10
-rw-r--r--src/devices/bus/isa/ega.cpp18
-rw-r--r--src/devices/bus/isa/ega.h165
-rw-r--r--src/devices/bus/isa/fdc.cpp24
-rw-r--r--src/devices/bus/isa/fdc.h28
-rw-r--r--src/devices/bus/isa/finalchs.cpp9
-rw-r--r--src/devices/bus/isa/finalchs.h42
-rw-r--r--src/devices/bus/isa/gblaster.cpp12
-rw-r--r--src/devices/bus/isa/gblaster.h42
-rw-r--r--src/devices/bus/isa/gus.cpp29
-rw-r--r--src/devices/bus/isa/gus.h82
-rw-r--r--src/devices/bus/isa/hdc.cpp51
-rw-r--r--src/devices/bus/isa/hdc.h69
-rw-r--r--src/devices/bus/isa/ibm_mfc.cpp19
-rw-r--r--src/devices/bus/isa/ibm_mfc.h10
-rw-r--r--src/devices/bus/isa/ide.cpp10
-rw-r--r--src/devices/bus/isa/ide.h10
-rw-r--r--src/devices/bus/isa/isa.cpp110
-rw-r--r--src/devices/bus/isa/isa.h73
-rw-r--r--src/devices/bus/isa/isa_cards.cpp53
-rw-r--r--src/devices/bus/isa/isa_cards.h60
-rw-r--r--src/devices/bus/isa/lpt.cpp4
-rw-r--r--src/devices/bus/isa/lpt.h10
-rw-r--r--src/devices/bus/isa/mach32.cpp40
-rw-r--r--src/devices/bus/isa/mach32.h38
-rw-r--r--src/devices/bus/isa/mc1502_fdc.cpp12
-rw-r--r--src/devices/bus/isa/mc1502_fdc.h15
-rw-r--r--src/devices/bus/isa/mc1502_rom.cpp4
-rw-r--r--src/devices/bus/isa/mc1502_rom.h10
-rw-r--r--src/devices/bus/isa/mcd.cpp6
-rw-r--r--src/devices/bus/isa/mcd.h12
-rw-r--r--src/devices/bus/isa/mda.cpp27
-rw-r--r--src/devices/bus/isa/mda.h18
-rw-r--r--src/devices/bus/isa/mpu401.cpp8
-rw-r--r--src/devices/bus/isa/mpu401.h32
-rw-r--r--src/devices/bus/isa/mufdc.cpp17
-rw-r--r--src/devices/bus/isa/mufdc.h27
-rw-r--r--src/devices/bus/isa/ne1000.cpp10
-rw-r--r--src/devices/bus/isa/ne1000.h10
-rw-r--r--src/devices/bus/isa/ne2000.cpp10
-rw-r--r--src/devices/bus/isa/ne2000.h10
-rw-r--r--src/devices/bus/isa/num9rev.cpp14
-rw-r--r--src/devices/bus/isa/num9rev.h10
-rw-r--r--src/devices/bus/isa/omti8621.cpp32
-rw-r--r--src/devices/bus/isa/omti8621.h23
-rw-r--r--src/devices/bus/isa/p1_fdc.cpp8
-rw-r--r--src/devices/bus/isa/p1_fdc.h14
-rw-r--r--src/devices/bus/isa/p1_hdc.cpp4
-rw-r--r--src/devices/bus/isa/p1_hdc.h12
-rw-r--r--src/devices/bus/isa/p1_rom.cpp4
-rw-r--r--src/devices/bus/isa/p1_rom.h8
-rw-r--r--src/devices/bus/isa/p1_sound.cpp6
-rw-r--r--src/devices/bus/isa/p1_sound.h12
-rw-r--r--src/devices/bus/isa/pc1640_iga.cpp4
-rw-r--r--src/devices/bus/isa/pc1640_iga.h11
-rw-r--r--src/devices/bus/isa/pds.cpp8
-rw-r--r--src/devices/bus/isa/pds.h29
-rw-r--r--src/devices/bus/isa/pgc.cpp15
-rw-r--r--src/devices/bus/isa/pgc.h13
-rw-r--r--src/devices/bus/isa/s3virge.cpp20
-rw-r--r--src/devices/bus/isa/s3virge.h21
-rw-r--r--src/devices/bus/isa/sb16.cpp4
-rw-r--r--src/devices/bus/isa/sb16.h22
-rw-r--r--src/devices/bus/isa/sblaster.cpp36
-rw-r--r--src/devices/bus/isa/sblaster.h375
-rw-r--r--src/devices/bus/isa/sc499.cpp12
-rw-r--r--src/devices/bus/isa/sc499.h13
-rw-r--r--src/devices/bus/isa/side116.cpp4
-rw-r--r--src/devices/bus/isa/side116.h14
-rw-r--r--src/devices/bus/isa/ssi2001.cpp4
-rw-r--r--src/devices/bus/isa/ssi2001.h16
-rw-r--r--src/devices/bus/isa/stereo_fx.cpp4
-rw-r--r--src/devices/bus/isa/stereo_fx.h17
-rw-r--r--src/devices/bus/isa/svga_cirrus.cpp14
-rw-r--r--src/devices/bus/isa/svga_cirrus.h52
-rw-r--r--src/devices/bus/isa/svga_s3.cpp28
-rw-r--r--src/devices/bus/isa/svga_s3.h98
-rw-r--r--src/devices/bus/isa/svga_trident.cpp7
-rw-r--r--src/devices/bus/isa/svga_trident.h28
-rw-r--r--src/devices/bus/isa/svga_tseng.cpp7
-rw-r--r--src/devices/bus/isa/svga_tseng.h30
-rw-r--r--src/devices/bus/isa/trident.cpp12
-rw-r--r--src/devices/bus/isa/trident.h18
-rw-r--r--src/devices/bus/isa/vga.cpp6
-rw-r--r--src/devices/bus/isa/vga.h30
-rw-r--r--src/devices/bus/isa/vga_ati.cpp21
-rw-r--r--src/devices/bus/isa/vga_ati.h76
-rw-r--r--src/devices/bus/isa/wd1002a_wx1.cpp6
-rw-r--r--src/devices/bus/isa/wd1002a_wx1.h10
-rw-r--r--src/devices/bus/isa/wdxt_gen.cpp12
-rw-r--r--src/devices/bus/isa/wdxt_gen.h12
-rw-r--r--src/devices/bus/isa/xsu_cards.cpp22
-rw-r--r--src/devices/bus/isa/xsu_cards.h24
-rw-r--r--src/devices/bus/isa/xtide.cpp4
-rw-r--r--src/devices/bus/isa/xtide.h16
-rw-r--r--src/devices/bus/isbx/compis_fdc.cpp4
-rw-r--r--src/devices/bus/isbx/compis_fdc.h10
-rw-r--r--src/devices/bus/isbx/isbc_218a.cpp4
-rw-r--r--src/devices/bus/isbx/isbc_218a.h10
-rw-r--r--src/devices/bus/isbx/isbx.cpp4
-rw-r--r--src/devices/bus/isbx/isbx.h25
-rw-r--r--src/devices/bus/kc/d002.cpp21
-rw-r--r--src/devices/bus/kc/d002.h15
-rw-r--r--src/devices/bus/kc/d004.cpp35
-rw-r--r--src/devices/bus/kc/d004.h35
-rw-r--r--src/devices/bus/kc/kc.cpp27
-rw-r--r--src/devices/bus/kc/kc.h34
-rw-r--r--src/devices/bus/kc/ram.cpp34
-rw-r--r--src/devices/bus/kc/ram.h25
-rw-r--r--src/devices/bus/kc/rom.cpp27
-rw-r--r--src/devices/bus/kc/rom.h19
-rw-r--r--src/devices/bus/lpci/cirrus.cpp20
-rw-r--r--src/devices/bus/lpci/cirrus.h17
-rw-r--r--src/devices/bus/lpci/i82371ab.cpp6
-rw-r--r--src/devices/bus/lpci/i82371ab.h10
-rw-r--r--src/devices/bus/lpci/i82371sb.cpp6
-rw-r--r--src/devices/bus/lpci/i82371sb.h13
-rw-r--r--src/devices/bus/lpci/i82439tx.cpp10
-rw-r--r--src/devices/bus/lpci/i82439tx.h13
-rw-r--r--src/devices/bus/lpci/mpc105.cpp4
-rw-r--r--src/devices/bus/lpci/mpc105.h10
-rw-r--r--src/devices/bus/lpci/northbridge.cpp4
-rw-r--r--src/devices/bus/lpci/northbridge.h28
-rw-r--r--src/devices/bus/lpci/pci.cpp20
-rw-r--r--src/devices/bus/lpci/pci.h22
-rw-r--r--src/devices/bus/lpci/southbridge.cpp7
-rw-r--r--src/devices/bus/lpci/southbridge.h172
-rw-r--r--src/devices/bus/lpci/vt82c505.cpp6
-rw-r--r--src/devices/bus/lpci/vt82c505.h12
-rw-r--r--src/devices/bus/m5/rom.cpp15
-rw-r--r--src/devices/bus/m5/rom.h25
-rw-r--r--src/devices/bus/m5/slot.cpp10
-rw-r--r--src/devices/bus/m5/slot.h15
-rw-r--r--src/devices/bus/macpds/macpds.cpp25
-rw-r--r--src/devices/bus/macpds/macpds.h34
-rw-r--r--src/devices/bus/macpds/pds_tpdfpd.cpp19
-rw-r--r--src/devices/bus/macpds/pds_tpdfpd.h57
-rw-r--r--src/devices/bus/megadrive/eeprom.cpp70
-rw-r--r--src/devices/bus/megadrive/eeprom.h47
-rw-r--r--src/devices/bus/megadrive/ggenie.cpp11
-rw-r--r--src/devices/bus/megadrive/ggenie.h16
-rw-r--r--src/devices/bus/megadrive/jcart.cpp36
-rw-r--r--src/devices/bus/megadrive/jcart.h31
-rw-r--r--src/devices/bus/megadrive/md_carts.cpp9
-rw-r--r--src/devices/bus/megadrive/md_carts.h16
-rw-r--r--src/devices/bus/megadrive/md_slot.cpp24
-rw-r--r--src/devices/bus/megadrive/md_slot.h23
-rw-r--r--src/devices/bus/megadrive/rom.cpp194
-rw-r--r--src/devices/bus/megadrive/rom.h236
-rw-r--r--src/devices/bus/megadrive/sk.cpp14
-rw-r--r--src/devices/bus/megadrive/sk.h16
-rw-r--r--src/devices/bus/megadrive/stm95.cpp24
-rw-r--r--src/devices/bus/megadrive/stm95.h51
-rw-r--r--src/devices/bus/megadrive/svp.cpp24
-rw-r--r--src/devices/bus/megadrive/svp.h22
-rw-r--r--src/devices/bus/midi/midi.cpp4
-rw-r--r--src/devices/bus/midi/midi.h16
-rw-r--r--src/devices/bus/midi/midiinport.cpp4
-rw-r--r--src/devices/bus/midi/midiinport.h10
-rw-r--r--src/devices/bus/midi/midioutport.cpp4
-rw-r--r--src/devices/bus/midi/midioutport.h10
-rw-r--r--src/devices/bus/msx_cart/arc.cpp22
-rw-r--r--src/devices/bus/msx_cart/arc.h25
-rw-r--r--src/devices/bus/msx_cart/ascii.cpp104
-rw-r--r--src/devices/bus/msx_cart/ascii.h88
-rw-r--r--src/devices/bus/msx_cart/bm_012.cpp18
-rw-r--r--src/devices/bus/msx_cart/bm_012.h19
-rw-r--r--src/devices/bus/msx_cart/cartridge.h20
-rw-r--r--src/devices/bus/msx_cart/crossblaim.cpp22
-rw-r--r--src/devices/bus/msx_cart/crossblaim.h24
-rw-r--r--src/devices/bus/msx_cart/disk.cpp113
-rw-r--r--src/devices/bus/msx_cart/disk.h85
-rw-r--r--src/devices/bus/msx_cart/dooly.cpp18
-rw-r--r--src/devices/bus/msx_cart/dooly.h24
-rw-r--r--src/devices/bus/msx_cart/fmpac.cpp26
-rw-r--r--src/devices/bus/msx_cart/fmpac.h25
-rw-r--r--src/devices/bus/msx_cart/fs_sr022.cpp16
-rw-r--r--src/devices/bus/msx_cart/fs_sr022.h24
-rw-r--r--src/devices/bus/msx_cart/halnote.cpp31
-rw-r--r--src/devices/bus/msx_cart/halnote.h24
-rw-r--r--src/devices/bus/msx_cart/hfox.cpp26
-rw-r--r--src/devices/bus/msx_cart/hfox.h22
-rw-r--r--src/devices/bus/msx_cart/holy_quran.cpp30
-rw-r--r--src/devices/bus/msx_cart/holy_quran.h24
-rw-r--r--src/devices/bus/msx_cart/konami.cpp148
-rw-r--r--src/devices/bus/msx_cart/konami.h105
-rw-r--r--src/devices/bus/msx_cart/korean.cpp85
-rw-r--r--src/devices/bus/msx_cart/korean.h68
-rw-r--r--src/devices/bus/msx_cart/majutsushi.cpp22
-rw-r--r--src/devices/bus/msx_cart/majutsushi.h23
-rw-r--r--src/devices/bus/msx_cart/moonsound.cpp50
-rw-r--r--src/devices/bus/msx_cart/moonsound.h21
-rw-r--r--src/devices/bus/msx_cart/msx_audio.cpp76
-rw-r--r--src/devices/bus/msx_cart/msx_audio.h47
-rw-r--r--src/devices/bus/msx_cart/msx_audio_kb.cpp37
-rw-r--r--src/devices/bus/msx_cart/msx_audio_kb.h27
-rw-r--r--src/devices/bus/msx_cart/msxdos2.cpp20
-rw-r--r--src/devices/bus/msx_cart/msxdos2.h24
-rw-r--r--src/devices/bus/msx_cart/nomapper.cpp12
-rw-r--r--src/devices/bus/msx_cart/nomapper.h15
-rw-r--r--src/devices/bus/msx_cart/rtype.cpp20
-rw-r--r--src/devices/bus/msx_cart/rtype.h24
-rw-r--r--src/devices/bus/msx_cart/super_swangi.cpp22
-rw-r--r--src/devices/bus/msx_cart/super_swangi.h24
-rw-r--r--src/devices/bus/msx_cart/superloderunner.cpp20
-rw-r--r--src/devices/bus/msx_cart/superloderunner.h22
-rw-r--r--src/devices/bus/msx_cart/yamaha.cpp44
-rw-r--r--src/devices/bus/msx_cart/yamaha.h31
-rw-r--r--src/devices/bus/msx_slot/bunsetsu.cpp4
-rw-r--r--src/devices/bus/msx_slot/bunsetsu.h16
-rw-r--r--src/devices/bus/msx_slot/cartridge.cpp17
-rw-r--r--src/devices/bus/msx_slot/cartridge.h28
-rw-r--r--src/devices/bus/msx_slot/disk.cpp38
-rw-r--r--src/devices/bus/msx_slot/disk.h68
-rw-r--r--src/devices/bus/msx_slot/fs4600.cpp11
-rw-r--r--src/devices/bus/msx_slot/fs4600.h17
-rw-r--r--src/devices/bus/msx_slot/music.cpp4
-rw-r--r--src/devices/bus/msx_slot/music.h15
-rw-r--r--src/devices/bus/msx_slot/panasonic08.cpp4
-rw-r--r--src/devices/bus/msx_slot/panasonic08.h22
-rw-r--r--src/devices/bus/msx_slot/ram.cpp4
-rw-r--r--src/devices/bus/msx_slot/ram.h13
-rw-r--r--src/devices/bus/msx_slot/ram_mm.cpp4
-rw-r--r--src/devices/bus/msx_slot/ram_mm.h16
-rw-r--r--src/devices/bus/msx_slot/rom.cpp8
-rw-r--r--src/devices/bus/msx_slot/rom.h16
-rw-r--r--src/devices/bus/msx_slot/slot.h8
-rw-r--r--src/devices/bus/msx_slot/sony08.cpp4
-rw-r--r--src/devices/bus/msx_slot/sony08.h12
-rw-r--r--src/devices/bus/nasbus/avc.cpp14
-rw-r--r--src/devices/bus/nasbus/avc.h10
-rw-r--r--src/devices/bus/nasbus/cards.cpp4
-rw-r--r--src/devices/bus/nasbus/cards.h11
-rw-r--r--src/devices/bus/nasbus/floppy.cpp10
-rw-r--r--src/devices/bus/nasbus/floppy.h12
-rw-r--r--src/devices/bus/nasbus/nasbus.cpp19
-rw-r--r--src/devices/bus/nasbus/nasbus.h45
-rw-r--r--src/devices/bus/neogeo/boot_cthd.cpp62
-rw-r--r--src/devices/bus/neogeo/boot_cthd.h60
-rw-r--r--src/devices/bus/neogeo/boot_kof10th.cpp31
-rw-r--r--src/devices/bus/neogeo/boot_kof10th.h28
-rw-r--r--src/devices/bus/neogeo/boot_kof2k2.cpp39
-rw-r--r--src/devices/bus/neogeo/boot_kof2k2.h32
-rw-r--r--src/devices/bus/neogeo/boot_kof2k3.cpp39
-rw-r--r--src/devices/bus/neogeo/boot_kof2k3.h32
-rw-r--r--src/devices/bus/neogeo/boot_misc.cpp143
-rw-r--r--src/devices/bus/neogeo/boot_misc.h108
-rw-r--r--src/devices/bus/neogeo/boot_svc.cpp49
-rw-r--r--src/devices/bus/neogeo/boot_svc.h38
-rw-r--r--src/devices/bus/neogeo/carts.h9
-rw-r--r--src/devices/bus/neogeo/cmc.cpp163
-rw-r--r--src/devices/bus/neogeo/cmc.h148
-rw-r--r--src/devices/bus/neogeo/fatfury2.cpp17
-rw-r--r--src/devices/bus/neogeo/fatfury2.h25
-rw-r--r--src/devices/bus/neogeo/kof2k2.cpp85
-rw-r--r--src/devices/bus/neogeo/kof2k2.h72
-rw-r--r--src/devices/bus/neogeo/kof98.cpp19
-rw-r--r--src/devices/bus/neogeo/kof98.h28
-rw-r--r--src/devices/bus/neogeo/mslugx.cpp17
-rw-r--r--src/devices/bus/neogeo/mslugx.h25
-rw-r--r--src/devices/bus/neogeo/pcm2.cpp70
-rw-r--r--src/devices/bus/neogeo/pcm2.h63
-rw-r--r--src/devices/bus/neogeo/prot_cmc.cpp4
-rw-r--r--src/devices/bus/neogeo/prot_cmc.h10
-rw-r--r--src/devices/bus/neogeo/prot_cthd.cpp7
-rw-r--r--src/devices/bus/neogeo/prot_cthd.h12
-rw-r--r--src/devices/bus/neogeo/prot_fatfury2.cpp4
-rw-r--r--src/devices/bus/neogeo/prot_fatfury2.h16
-rw-r--r--src/devices/bus/neogeo/prot_kof2k2.cpp4
-rw-r--r--src/devices/bus/neogeo/prot_kof2k2.h14
-rw-r--r--src/devices/bus/neogeo/prot_kof2k3bl.cpp7
-rw-r--r--src/devices/bus/neogeo/prot_kof2k3bl.h12
-rw-r--r--src/devices/bus/neogeo/prot_kof98.cpp7
-rw-r--r--src/devices/bus/neogeo/prot_kof98.h12
-rw-r--r--src/devices/bus/neogeo/prot_misc.cpp7
-rw-r--r--src/devices/bus/neogeo/prot_misc.h10
-rw-r--r--src/devices/bus/neogeo/prot_mslugx.cpp7
-rw-r--r--src/devices/bus/neogeo/prot_mslugx.h10
-rw-r--r--src/devices/bus/neogeo/prot_pcm2.cpp4
-rw-r--r--src/devices/bus/neogeo/prot_pcm2.h12
-rw-r--r--src/devices/bus/neogeo/prot_pvc.cpp7
-rw-r--r--src/devices/bus/neogeo/prot_pvc.h12
-rw-r--r--src/devices/bus/neogeo/prot_sma.cpp7
-rw-r--r--src/devices/bus/neogeo/prot_sma.h12
-rw-r--r--src/devices/bus/neogeo/pvc.cpp70
-rw-r--r--src/devices/bus/neogeo/pvc.h63
-rw-r--r--src/devices/bus/neogeo/rom.cpp30
-rw-r--r--src/devices/bus/neogeo/rom.h34
-rw-r--r--src/devices/bus/neogeo/sbp.cpp21
-rw-r--r--src/devices/bus/neogeo/sbp.h23
-rw-r--r--src/devices/bus/neogeo/slot.cpp10
-rw-r--r--src/devices/bus/neogeo/slot.h38
-rw-r--r--src/devices/bus/neogeo/sma.cpp90
-rw-r--r--src/devices/bus/neogeo/sma.h69
-rw-r--r--src/devices/bus/neogeo_ctrl/ctrl.cpp15
-rw-r--r--src/devices/bus/neogeo_ctrl/ctrl.h29
-rw-r--r--src/devices/bus/neogeo_ctrl/dial.cpp14
-rw-r--r--src/devices/bus/neogeo_ctrl/dial.h16
-rw-r--r--src/devices/bus/neogeo_ctrl/irrmaze.cpp14
-rw-r--r--src/devices/bus/neogeo_ctrl/irrmaze.h18
-rw-r--r--src/devices/bus/neogeo_ctrl/joystick.cpp20
-rw-r--r--src/devices/bus/neogeo_ctrl/joystick.h18
-rw-r--r--src/devices/bus/neogeo_ctrl/kizuna4p.cpp18
-rw-r--r--src/devices/bus/neogeo_ctrl/kizuna4p.h11
-rw-r--r--src/devices/bus/neogeo_ctrl/mahjong.cpp16
-rw-r--r--src/devices/bus/neogeo_ctrl/mahjong.h18
-rw-r--r--src/devices/bus/nes/2a03pur.cpp4
-rw-r--r--src/devices/bus/nes/2a03pur.h14
-rw-r--r--src/devices/bus/nes/act53.cpp8
-rw-r--r--src/devices/bus/nes/act53.h20
-rw-r--r--src/devices/bus/nes/aladdin.cpp47
-rw-r--r--src/devices/bus/nes/aladdin.h31
-rw-r--r--src/devices/bus/nes/ave.cpp14
-rw-r--r--src/devices/bus/nes/ave.h35
-rw-r--r--src/devices/bus/nes/bandai.cpp50
-rw-r--r--src/devices/bus/nes/bandai.h60
-rw-r--r--src/devices/bus/nes/benshieng.cpp8
-rw-r--r--src/devices/bus/nes/benshieng.h14
-rw-r--r--src/devices/bus/nes/bootleg.cpp118
-rw-r--r--src/devices/bus/nes/bootleg.h201
-rw-r--r--src/devices/bus/nes/camerica.cpp16
-rw-r--r--src/devices/bus/nes/camerica.h35
-rw-r--r--src/devices/bus/nes/cne.cpp12
-rw-r--r--src/devices/bus/nes/cne.h35
-rw-r--r--src/devices/bus/nes/cony.cpp34
-rw-r--r--src/devices/bus/nes/cony.h34
-rw-r--r--src/devices/bus/nes/datach.cpp49
-rw-r--r--src/devices/bus/nes/datach.h31
-rw-r--r--src/devices/bus/nes/discrete.cpp16
-rw-r--r--src/devices/bus/nes/discrete.h41
-rw-r--r--src/devices/bus/nes/disksys.cpp17
-rw-r--r--src/devices/bus/nes/disksys.h24
-rw-r--r--src/devices/bus/nes/event.cpp18
-rw-r--r--src/devices/bus/nes/event.h27
-rw-r--r--src/devices/bus/nes/ggenie.cpp10
-rw-r--r--src/devices/bus/nes/ggenie.h16
-rw-r--r--src/devices/bus/nes/henggedianzi.cpp14
-rw-r--r--src/devices/bus/nes/henggedianzi.h36
-rw-r--r--src/devices/bus/nes/hes.cpp4
-rw-r--r--src/devices/bus/nes/hes.h16
-rw-r--r--src/devices/bus/nes/hosenkan.cpp20
-rw-r--r--src/devices/bus/nes/hosenkan.h20
-rw-r--r--src/devices/bus/nes/irem.cpp24
-rw-r--r--src/devices/bus/nes/irem.h50
-rw-r--r--src/devices/bus/nes/jaleco.cpp86
-rw-r--r--src/devices/bus/nes/jaleco.h98
-rw-r--r--src/devices/bus/nes/jy.cpp28
-rw-r--r--src/devices/bus/nes/jy.h30
-rw-r--r--src/devices/bus/nes/kaiser.cpp52
-rw-r--r--src/devices/bus/nes/kaiser.h92
-rw-r--r--src/devices/bus/nes/karastudio.cpp32
-rw-r--r--src/devices/bus/nes/karastudio.h33
-rw-r--r--src/devices/bus/nes/konami.cpp38
-rw-r--r--src/devices/bus/nes/konami.h71
-rw-r--r--src/devices/bus/nes/legacy.cpp20
-rw-r--r--src/devices/bus/nes/legacy.h35
-rw-r--r--src/devices/bus/nes/mmc1.cpp24
-rw-r--r--src/devices/bus/nes/mmc1.h30
-rw-r--r--src/devices/bus/nes/mmc2.cpp19
-rw-r--r--src/devices/bus/nes/mmc2.h23
-rw-r--r--src/devices/bus/nes/mmc3.cpp41
-rw-r--r--src/devices/bus/nes/mmc3.h37
-rw-r--r--src/devices/bus/nes/mmc3_clones.cpp176
-rw-r--r--src/devices/bus/nes/mmc3_clones.h216
-rw-r--r--src/devices/bus/nes/mmc5.cpp16
-rw-r--r--src/devices/bus/nes/mmc5.h16
-rw-r--r--src/devices/bus/nes/multigame.cpp222
-rw-r--r--src/devices/bus/nes/multigame.h386
-rw-r--r--src/devices/bus/nes/namcot.cpp48
-rw-r--r--src/devices/bus/nes/namcot.h63
-rw-r--r--src/devices/bus/nes/nanjing.cpp12
-rw-r--r--src/devices/bus/nes/nanjing.h19
-rw-r--r--src/devices/bus/nes/nes_carts.cpp55
-rw-r--r--src/devices/bus/nes/nes_carts.h63
-rw-r--r--src/devices/bus/nes/nes_slot.cpp68
-rw-r--r--src/devices/bus/nes/nes_slot.h15
-rw-r--r--src/devices/bus/nes/ntdec.cpp12
-rw-r--r--src/devices/bus/nes/ntdec.h27
-rw-r--r--src/devices/bus/nes/nxrom.cpp62
-rw-r--r--src/devices/bus/nes/nxrom.h96
-rw-r--r--src/devices/bus/nes/pirate.cpp84
-rw-r--r--src/devices/bus/nes/pirate.h146
-rw-r--r--src/devices/bus/nes/pt554.cpp6
-rw-r--r--src/devices/bus/nes/pt554.h12
-rw-r--r--src/devices/bus/nes/racermate.cpp8
-rw-r--r--src/devices/bus/nes/racermate.h11
-rw-r--r--src/devices/bus/nes/rcm.cpp22
-rw-r--r--src/devices/bus/nes/rcm.h50
-rw-r--r--src/devices/bus/nes/rexsoft.cpp14
-rw-r--r--src/devices/bus/nes/rexsoft.h25
-rw-r--r--src/devices/bus/nes/sachen.cpp70
-rw-r--r--src/devices/bus/nes/sachen.h105
-rw-r--r--src/devices/bus/nes/somari.cpp16
-rw-r--r--src/devices/bus/nes/somari.h18
-rw-r--r--src/devices/bus/nes/subor.cpp20
-rw-r--r--src/devices/bus/nes/subor.h28
-rw-r--r--src/devices/bus/nes/sunsoft.cpp44
-rw-r--r--src/devices/bus/nes/sunsoft.h64
-rw-r--r--src/devices/bus/nes/sunsoft_dcs.cpp29
-rw-r--r--src/devices/bus/nes/sunsoft_dcs.h33
-rw-r--r--src/devices/bus/nes/taito.cpp30
-rw-r--r--src/devices/bus/nes/taito.h45
-rw-r--r--src/devices/bus/nes/tengen.cpp22
-rw-r--r--src/devices/bus/nes/tengen.h34
-rw-r--r--src/devices/bus/nes/txc.cpp24
-rw-r--r--src/devices/bus/nes/txc.h40
-rw-r--r--src/devices/bus/nes/waixing.cpp102
-rw-r--r--src/devices/bus/nes/waixing.h123
-rw-r--r--src/devices/bus/nes/zemina.cpp4
-rw-r--r--src/devices/bus/nes/zemina.h4
-rw-r--r--src/devices/bus/nes_ctrl/4score.cpp29
-rw-r--r--src/devices/bus/nes_ctrl/4score.h20
-rw-r--r--src/devices/bus/nes_ctrl/arkpaddle.cpp28
-rw-r--r--src/devices/bus/nes_ctrl/arkpaddle.h21
-rw-r--r--src/devices/bus/nes_ctrl/bcbattle.cpp11
-rw-r--r--src/devices/bus/nes_ctrl/bcbattle.h17
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.cpp9
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.h21
-rw-r--r--src/devices/bus/nes_ctrl/fckeybrd.cpp4
-rw-r--r--src/devices/bus/nes_ctrl/fckeybrd.h12
-rw-r--r--src/devices/bus/nes_ctrl/ftrainer.cpp4
-rw-r--r--src/devices/bus/nes_ctrl/ftrainer.h12
-rw-r--r--src/devices/bus/nes_ctrl/hori.cpp26
-rw-r--r--src/devices/bus/nes_ctrl/hori.h18
-rw-r--r--src/devices/bus/nes_ctrl/joypad.cpp34
-rw-r--r--src/devices/bus/nes_ctrl/joypad.h23
-rw-r--r--src/devices/bus/nes_ctrl/konamihs.cpp12
-rw-r--r--src/devices/bus/nes_ctrl/konamihs.h12
-rw-r--r--src/devices/bus/nes_ctrl/miracle.cpp14
-rw-r--r--src/devices/bus/nes_ctrl/miracle.h34
-rw-r--r--src/devices/bus/nes_ctrl/mjpanel.cpp4
-rw-r--r--src/devices/bus/nes_ctrl/mjpanel.h12
-rw-r--r--src/devices/bus/nes_ctrl/pachinko.cpp11
-rw-r--r--src/devices/bus/nes_ctrl/pachinko.h12
-rw-r--r--src/devices/bus/nes_ctrl/partytap.cpp10
-rw-r--r--src/devices/bus/nes_ctrl/partytap.h12
-rw-r--r--src/devices/bus/nes_ctrl/powerpad.cpp10
-rw-r--r--src/devices/bus/nes_ctrl/powerpad.h10
-rw-r--r--src/devices/bus/nes_ctrl/suborkey.cpp4
-rw-r--r--src/devices/bus/nes_ctrl/suborkey.h13
-rw-r--r--src/devices/bus/nes_ctrl/zapper.cpp12
-rw-r--r--src/devices/bus/nes_ctrl/zapper.h11
-rw-r--r--src/devices/bus/newbrain/eim.cpp74
-rw-r--r--src/devices/bus/newbrain/eim.h20
-rw-r--r--src/devices/bus/newbrain/exp.cpp22
-rw-r--r--src/devices/bus/newbrain/exp.h34
-rw-r--r--src/devices/bus/newbrain/fdc.cpp40
-rw-r--r--src/devices/bus/newbrain/fdc.h21
-rw-r--r--src/devices/bus/nubus/nubus.cpp43
-rw-r--r--src/devices/bus/nubus/nubus.h50
-rw-r--r--src/devices/bus/nubus/nubus_48gc.cpp22
-rw-r--r--src/devices/bus/nubus/nubus_48gc.h58
-rw-r--r--src/devices/bus/nubus/nubus_asntmc3b.cpp16
-rw-r--r--src/devices/bus/nubus/nubus_asntmc3b.h50
-rw-r--r--src/devices/bus/nubus/nubus_cb264.cpp12
-rw-r--r--src/devices/bus/nubus/nubus_cb264.h46
-rw-r--r--src/devices/bus/nubus/nubus_image.cpp52
-rw-r--r--src/devices/bus/nubus/nubus_image.h59
-rw-r--r--src/devices/bus/nubus/nubus_m2hires.cpp19
-rw-r--r--src/devices/bus/nubus/nubus_m2hires.h60
-rw-r--r--src/devices/bus/nubus/nubus_m2video.cpp19
-rw-r--r--src/devices/bus/nubus/nubus_m2video.h59
-rw-r--r--src/devices/bus/nubus/nubus_radiustpd.cpp19
-rw-r--r--src/devices/bus/nubus/nubus_radiustpd.h59
-rw-r--r--src/devices/bus/nubus/nubus_spec8.cpp20
-rw-r--r--src/devices/bus/nubus/nubus_spec8.h67
-rw-r--r--src/devices/bus/nubus/nubus_specpdq.cpp23
-rw-r--r--src/devices/bus/nubus/nubus_specpdq.h65
-rw-r--r--src/devices/bus/nubus/nubus_vikbw.cpp12
-rw-r--r--src/devices/bus/nubus/nubus_vikbw.h46
-rw-r--r--src/devices/bus/nubus/nubus_wsportrait.cpp19
-rw-r--r--src/devices/bus/nubus/nubus_wsportrait.h59
-rw-r--r--src/devices/bus/nubus/pds30_30hr.cpp19
-rw-r--r--src/devices/bus/nubus/pds30_30hr.h59
-rw-r--r--src/devices/bus/nubus/pds30_cb264.cpp19
-rw-r--r--src/devices/bus/nubus/pds30_cb264.h59
-rw-r--r--src/devices/bus/nubus/pds30_mc30.cpp19
-rw-r--r--src/devices/bus/nubus/pds30_mc30.h59
-rw-r--r--src/devices/bus/nubus/pds30_procolor816.cpp19
-rw-r--r--src/devices/bus/nubus/pds30_procolor816.h59
-rw-r--r--src/devices/bus/nubus/pds30_sigmalview.cpp19
-rw-r--r--src/devices/bus/nubus/pds30_sigmalview.h61
-rw-r--r--src/devices/bus/odyssey2/chess.cpp6
-rw-r--r--src/devices/bus/odyssey2/chess.h19
-rw-r--r--src/devices/bus/odyssey2/rom.cpp24
-rw-r--r--src/devices/bus/odyssey2/rom.h27
-rw-r--r--src/devices/bus/odyssey2/slot.cpp18
-rw-r--r--src/devices/bus/odyssey2/slot.h23
-rw-r--r--src/devices/bus/odyssey2/voice.cpp10
-rw-r--r--src/devices/bus/odyssey2/voice.h20
-rw-r--r--src/devices/bus/oricext/jasmin.cpp6
-rw-r--r--src/devices/bus/oricext/jasmin.h22
-rw-r--r--src/devices/bus/oricext/microdisc.cpp6
-rw-r--r--src/devices/bus/oricext/microdisc.h10
-rw-r--r--src/devices/bus/oricext/oricext.cpp8
-rw-r--r--src/devices/bus/oricext/oricext.h29
-rw-r--r--src/devices/bus/pc1512/mouse.cpp30
-rw-r--r--src/devices/bus/pc1512/mouse.h49
-rw-r--r--src/devices/bus/pc_joy/pc_joy.cpp8
-rw-r--r--src/devices/bus/pc_joy/pc_joy.h23
-rw-r--r--src/devices/bus/pc_joy/pc_joy_sw.cpp4
-rw-r--r--src/devices/bus/pc_joy/pc_joy_sw.h10
-rw-r--r--src/devices/bus/pc_kbd/ec1841.cpp4
-rw-r--r--src/devices/bus/pc_kbd/ec1841.h15
-rw-r--r--src/devices/bus/pc_kbd/iskr1030.cpp4
-rw-r--r--src/devices/bus/pc_kbd/iskr1030.h15
-rw-r--r--src/devices/bus/pc_kbd/keyboards.h8
-rw-r--r--src/devices/bus/pc_kbd/keytro.cpp15
-rw-r--r--src/devices/bus/pc_kbd/keytro.h11
-rw-r--r--src/devices/bus/pc_kbd/msnat.cpp87
-rw-r--r--src/devices/bus/pc_kbd/msnat.h32
-rw-r--r--src/devices/bus/pc_kbd/pc83.cpp4
-rw-r--r--src/devices/bus/pc_kbd/pc83.h11
-rw-r--r--src/devices/bus/pc_kbd/pc_kbdc.cpp30
-rw-r--r--src/devices/bus/pc_kbd/pc_kbdc.h23
-rw-r--r--src/devices/bus/pc_kbd/pcat84.cpp16
-rw-r--r--src/devices/bus/pc_kbd/pcat84.h17
-rw-r--r--src/devices/bus/pc_kbd/pcxt83.cpp4
-rw-r--r--src/devices/bus/pc_kbd/pcxt83.h16
-rw-r--r--src/devices/bus/pce/pce_rom.cpp25
-rw-r--r--src/devices/bus/pce/pce_rom.h40
-rw-r--r--src/devices/bus/pce/pce_slot.cpp12
-rw-r--r--src/devices/bus/pce/pce_slot.h22
-rw-r--r--src/devices/bus/pet/2joysnd.cpp4
-rw-r--r--src/devices/bus/pet/2joysnd.h20
-rw-r--r--src/devices/bus/pet/64k.cpp4
-rw-r--r--src/devices/bus/pet/64k.h14
-rw-r--r--src/devices/bus/pet/c2n.cpp31
-rw-r--r--src/devices/bus/pet/c2n.h19
-rw-r--r--src/devices/bus/pet/cass.cpp8
-rw-r--r--src/devices/bus/pet/cass.h32
-rw-r--r--src/devices/bus/pet/cb2snd.cpp4
-rw-r--r--src/devices/bus/pet/cb2snd.h14
-rw-r--r--src/devices/bus/pet/diag.cpp8
-rw-r--r--src/devices/bus/pet/diag.h18
-rw-r--r--src/devices/bus/pet/diag264_lb_tape.cpp13
-rw-r--r--src/devices/bus/pet/diag264_lb_tape.h11
-rw-r--r--src/devices/bus/pet/exp.cpp4
-rw-r--r--src/devices/bus/pet/exp.h15
-rw-r--r--src/devices/bus/pet/hsg.cpp42
-rw-r--r--src/devices/bus/pet/hsg.h37
-rw-r--r--src/devices/bus/pet/petuja.cpp4
-rw-r--r--src/devices/bus/pet/petuja.h10
-rw-r--r--src/devices/bus/pet/superpet.cpp4
-rw-r--r--src/devices/bus/pet/superpet.h10
-rw-r--r--src/devices/bus/pet/user.cpp4
-rw-r--r--src/devices/bus/pet/user.h51
-rw-r--r--src/devices/bus/plus4/c1551.cpp107
-rw-r--r--src/devices/bus/plus4/c1551.h18
-rw-r--r--src/devices/bus/plus4/diag264_lb_user.cpp6
-rw-r--r--src/devices/bus/plus4/diag264_lb_user.h13
-rw-r--r--src/devices/bus/plus4/exp.cpp36
-rw-r--r--src/devices/bus/plus4/exp.h27
-rw-r--r--src/devices/bus/plus4/sid.cpp4
-rw-r--r--src/devices/bus/plus4/sid.h10
-rw-r--r--src/devices/bus/plus4/std.cpp4
-rw-r--r--src/devices/bus/plus4/std.h13
-rw-r--r--src/devices/bus/plus4/user.h8
-rw-r--r--src/devices/bus/pofo/ccm.cpp16
-rw-r--r--src/devices/bus/pofo/ccm.h33
-rw-r--r--src/devices/bus/pofo/exp.cpp22
-rw-r--r--src/devices/bus/pofo/exp.h48
-rw-r--r--src/devices/bus/pofo/hpc101.cpp18
-rw-r--r--src/devices/bus/pofo/hpc101.h19
-rw-r--r--src/devices/bus/pofo/hpc102.cpp20
-rw-r--r--src/devices/bus/pofo/hpc102.h23
-rw-r--r--src/devices/bus/pofo/hpc104.cpp48
-rw-r--r--src/devices/bus/pofo/hpc104.h33
-rw-r--r--src/devices/bus/pofo/ram.cpp14
-rw-r--r--src/devices/bus/pofo/ram.h18
-rw-r--r--src/devices/bus/pofo/rom.cpp12
-rw-r--r--src/devices/bus/pofo/rom.h18
-rw-r--r--src/devices/bus/psx/analogue.cpp44
-rw-r--r--src/devices/bus/psx/analogue.h23
-rw-r--r--src/devices/bus/psx/ctlrport.cpp35
-rw-r--r--src/devices/bus/psx/ctlrport.h22
-rw-r--r--src/devices/bus/psx/memcard.cpp8
-rw-r--r--src/devices/bus/psx/memcard.h42
-rw-r--r--src/devices/bus/psx/multitap.cpp4
-rw-r--r--src/devices/bus/psx/multitap.h7
-rw-r--r--src/devices/bus/ql/cst_q_plus4.cpp26
-rw-r--r--src/devices/bus/ql/cst_q_plus4.h28
-rw-r--r--src/devices/bus/ql/cst_qdisc.cpp16
-rw-r--r--src/devices/bus/ql/cst_qdisc.h17
-rw-r--r--src/devices/bus/ql/cumana_fdi.cpp16
-rw-r--r--src/devices/bus/ql/cumana_fdi.h18
-rw-r--r--src/devices/bus/ql/exp.cpp12
-rw-r--r--src/devices/bus/ql/exp.h41
-rw-r--r--src/devices/bus/ql/kempston_di.cpp16
-rw-r--r--src/devices/bus/ql/kempston_di.h19
-rw-r--r--src/devices/bus/ql/miracle_gold_card.cpp16
-rw-r--r--src/devices/bus/ql/miracle_gold_card.h19
-rw-r--r--src/devices/bus/ql/miracle_hd.cpp16
-rw-r--r--src/devices/bus/ql/miracle_hd.h19
-rw-r--r--src/devices/bus/ql/mp_fdi.cpp16
-rw-r--r--src/devices/bus/ql/mp_fdi.h21
-rw-r--r--src/devices/bus/ql/opd_basic_master.cpp16
-rw-r--r--src/devices/bus/ql/opd_basic_master.h20
-rw-r--r--src/devices/bus/ql/pcml_qdisk.cpp16
-rw-r--r--src/devices/bus/ql/pcml_qdisk.h20
-rw-r--r--src/devices/bus/ql/qubide.cpp22
-rw-r--r--src/devices/bus/ql/qubide.h19
-rw-r--r--src/devices/bus/ql/rom.cpp16
-rw-r--r--src/devices/bus/ql/rom.h27
-rw-r--r--src/devices/bus/ql/sandy_superdisk.cpp32
-rw-r--r--src/devices/bus/ql/sandy_superdisk.h17
-rw-r--r--src/devices/bus/ql/sandy_superqboard.cpp85
-rw-r--r--src/devices/bus/ql/sandy_superqboard.h48
-rw-r--r--src/devices/bus/ql/std.cpp12
-rw-r--r--src/devices/bus/ql/std.h18
-rw-r--r--src/devices/bus/ql/trumpcard.cpp64
-rw-r--r--src/devices/bus/ql/trumpcard.h49
-rw-r--r--src/devices/bus/rs232/ie15.cpp5
-rw-r--r--src/devices/bus/rs232/ie15.h4
-rw-r--r--src/devices/bus/rs232/keyboard.cpp8
-rw-r--r--src/devices/bus/rs232/keyboard.h7
-rw-r--r--src/devices/bus/rs232/loopback.cpp6
-rw-r--r--src/devices/bus/rs232/loopback.h8
-rw-r--r--src/devices/bus/rs232/null_modem.cpp4
-rw-r--r--src/devices/bus/rs232/null_modem.h12
-rw-r--r--src/devices/bus/rs232/printer.cpp4
-rw-r--r--src/devices/bus/rs232/printer.h8
-rw-r--r--src/devices/bus/rs232/pty.cpp156
-rw-r--r--src/devices/bus/rs232/pty.h61
-rw-r--r--src/devices/bus/rs232/rs232.cpp20
-rw-r--r--src/devices/bus/rs232/rs232.h36
-rw-r--r--src/devices/bus/rs232/ser_mouse.cpp12
-rw-r--r--src/devices/bus/rs232/ser_mouse.h20
-rw-r--r--src/devices/bus/rs232/sun_kbd.cpp4
-rw-r--r--src/devices/bus/rs232/sun_kbd.h8
-rw-r--r--src/devices/bus/rs232/terminal.cpp4
-rw-r--r--src/devices/bus/rs232/terminal.h2
-rw-r--r--src/devices/bus/rs232/xvd701.cpp4
-rw-r--r--src/devices/bus/rs232/xvd701.h10
-rw-r--r--src/devices/bus/s100/dj2db.cpp4
-rw-r--r--src/devices/bus/s100/dj2db.h13
-rw-r--r--src/devices/bus/s100/djdma.cpp4
-rw-r--r--src/devices/bus/s100/djdma.h11
-rw-r--r--src/devices/bus/s100/mm65k16s.cpp4
-rw-r--r--src/devices/bus/s100/mm65k16s.h11
-rw-r--r--src/devices/bus/s100/nsmdsa.cpp4
-rw-r--r--src/devices/bus/s100/nsmdsa.h12
-rw-r--r--src/devices/bus/s100/nsmdsad.cpp4
-rw-r--r--src/devices/bus/s100/nsmdsad.h12
-rw-r--r--src/devices/bus/s100/s100.cpp41
-rw-r--r--src/devices/bus/s100/s100.h150
-rw-r--r--src/devices/bus/s100/wunderbus.cpp4
-rw-r--r--src/devices/bus/s100/wunderbus.h11
-rw-r--r--src/devices/bus/sat_ctrl/analog.cpp14
-rw-r--r--src/devices/bus/sat_ctrl/analog.h11
-rw-r--r--src/devices/bus/sat_ctrl/ctrl.cpp7
-rw-r--r--src/devices/bus/sat_ctrl/ctrl.h21
-rw-r--r--src/devices/bus/sat_ctrl/joy.cpp8
-rw-r--r--src/devices/bus/sat_ctrl/joy.h11
-rw-r--r--src/devices/bus/sat_ctrl/joy_md.cpp16
-rw-r--r--src/devices/bus/sat_ctrl/joy_md.h20
-rw-r--r--src/devices/bus/sat_ctrl/keybd.cpp14
-rw-r--r--src/devices/bus/sat_ctrl/keybd.h11
-rw-r--r--src/devices/bus/sat_ctrl/mouse.cpp12
-rw-r--r--src/devices/bus/sat_ctrl/mouse.h11
-rw-r--r--src/devices/bus/sat_ctrl/multitap.cpp4
-rw-r--r--src/devices/bus/sat_ctrl/multitap.h11
-rw-r--r--src/devices/bus/sat_ctrl/pointer.cpp12
-rw-r--r--src/devices/bus/sat_ctrl/pointer.h11
-rw-r--r--src/devices/bus/sat_ctrl/racing.cpp10
-rw-r--r--src/devices/bus/sat_ctrl/racing.h11
-rw-r--r--src/devices/bus/sat_ctrl/segatap.cpp4
-rw-r--r--src/devices/bus/sat_ctrl/segatap.h11
-rw-r--r--src/devices/bus/saturn/bram.cpp28
-rw-r--r--src/devices/bus/saturn/bram.h25
-rw-r--r--src/devices/bus/saturn/dram.cpp16
-rw-r--r--src/devices/bus/saturn/dram.h25
-rw-r--r--src/devices/bus/saturn/rom.cpp12
-rw-r--r--src/devices/bus/saturn/rom.h23
-rw-r--r--src/devices/bus/saturn/sat_slot.cpp17
-rw-r--r--src/devices/bus/saturn/sat_slot.h31
-rw-r--r--src/devices/bus/scsi/acb4070.cpp4
-rw-r--r--src/devices/bus/scsi/acb4070.h10
-rw-r--r--src/devices/bus/scsi/cdu76s.cpp4
-rw-r--r--src/devices/bus/scsi/cdu76s.h10
-rw-r--r--src/devices/bus/scsi/d9060hd.cpp4
-rw-r--r--src/devices/bus/scsi/d9060hd.h10
-rw-r--r--src/devices/bus/scsi/omti5100.cpp8
-rw-r--r--src/devices/bus/scsi/omti5100.h10
-rw-r--r--src/devices/bus/scsi/pc9801_sasi.cpp4
-rw-r--r--src/devices/bus/scsi/pc9801_sasi.h10
-rw-r--r--src/devices/bus/scsi/s1410.cpp4
-rw-r--r--src/devices/bus/scsi/s1410.h12
-rw-r--r--src/devices/bus/scsi/sa1403d.cpp4
-rw-r--r--src/devices/bus/scsi/sa1403d.h10
-rw-r--r--src/devices/bus/scsi/scsi.cpp94
-rw-r--r--src/devices/bus/scsi/scsi.h154
-rw-r--r--src/devices/bus/scsi/scsicd.cpp8
-rw-r--r--src/devices/bus/scsi/scsicd.h13
-rw-r--r--src/devices/bus/scsi/scsihd.cpp8
-rw-r--r--src/devices/bus/scsi/scsihd.h15
-rw-r--r--src/devices/bus/scsi/scsihle.cpp4
-rw-r--r--src/devices/bus/scsi/scsihle.h13
-rw-r--r--src/devices/bus/scv/rom.cpp42
-rw-r--r--src/devices/bus/scv/rom.h66
-rw-r--r--src/devices/bus/scv/slot.cpp10
-rw-r--r--src/devices/bus/scv/slot.h23
-rw-r--r--src/devices/bus/sega8/ccatch.cpp5
-rw-r--r--src/devices/bus/sega8/ccatch.h13
-rw-r--r--src/devices/bus/sega8/mgear.cpp5
-rw-r--r--src/devices/bus/sega8/mgear.h13
-rw-r--r--src/devices/bus/sega8/rom.cpp126
-rw-r--r--src/devices/bus/sega8/rom.h131
-rw-r--r--src/devices/bus/sega8/sega8_slot.cpp58
-rw-r--r--src/devices/bus/sega8/sega8_slot.h38
-rw-r--r--src/devices/bus/sg1000_exp/fm_unit.cpp4
-rw-r--r--src/devices/bus/sg1000_exp/fm_unit.h11
-rw-r--r--src/devices/bus/sg1000_exp/sg1000exp.cpp8
-rw-r--r--src/devices/bus/sg1000_exp/sg1000exp.h24
-rw-r--r--src/devices/bus/sg1000_exp/sk1100.cpp4
-rw-r--r--src/devices/bus/sg1000_exp/sk1100.h10
-rw-r--r--src/devices/bus/sms_ctrl/graphic.cpp6
-rw-r--r--src/devices/bus/sms_ctrl/graphic.h10
-rw-r--r--src/devices/bus/sms_ctrl/joypad.cpp4
-rw-r--r--src/devices/bus/sms_ctrl/joypad.h10
-rw-r--r--src/devices/bus/sms_ctrl/lphaser.cpp4
-rw-r--r--src/devices/bus/sms_ctrl/lphaser.h10
-rw-r--r--src/devices/bus/sms_ctrl/multitap.cpp9
-rw-r--r--src/devices/bus/sms_ctrl/multitap.h10
-rw-r--r--src/devices/bus/sms_ctrl/paddle.cpp4
-rw-r--r--src/devices/bus/sms_ctrl/paddle.h8
-rw-r--r--src/devices/bus/sms_ctrl/rfu.cpp6
-rw-r--r--src/devices/bus/sms_ctrl/rfu.h10
-rw-r--r--src/devices/bus/sms_ctrl/smsctrl.cpp12
-rw-r--r--src/devices/bus/sms_ctrl/smsctrl.h25
-rw-r--r--src/devices/bus/sms_ctrl/sports.cpp7
-rw-r--r--src/devices/bus/sms_ctrl/sports.h10
-rw-r--r--src/devices/bus/sms_ctrl/sportsjp.cpp4
-rw-r--r--src/devices/bus/sms_ctrl/sportsjp.h10
-rw-r--r--src/devices/bus/sms_exp/gender.cpp12
-rw-r--r--src/devices/bus/sms_exp/gender.h11
-rw-r--r--src/devices/bus/sms_exp/smsexp.cpp63
-rw-r--r--src/devices/bus/sms_exp/smsexp.h71
-rw-r--r--src/devices/bus/snes/bsx.cpp69
-rw-r--r--src/devices/bus/snes/bsx.h96
-rw-r--r--src/devices/bus/snes/event.cpp20
-rw-r--r--src/devices/bus/snes/event.h27
-rw-r--r--src/devices/bus/snes/rom.cpp58
-rw-r--r--src/devices/bus/snes/rom.h113
-rw-r--r--src/devices/bus/snes/rom21.cpp16
-rw-r--r--src/devices/bus/snes/rom21.h33
-rw-r--r--src/devices/bus/snes/sa1.cpp19
-rw-r--r--src/devices/bus/snes/sa1.h19
-rw-r--r--src/devices/bus/snes/sdd1.cpp46
-rw-r--r--src/devices/bus/snes/sdd1.h269
-rw-r--r--src/devices/bus/snes/sfx.cpp6
-rw-r--r--src/devices/bus/snes/sfx.h19
-rw-r--r--src/devices/bus/snes/sgb.cpp12
-rw-r--r--src/devices/bus/snes/sgb.h26
-rw-r--r--src/devices/bus/snes/snes_carts.cpp13
-rw-r--r--src/devices/bus/snes/snes_carts.h20
-rw-r--r--src/devices/bus/snes/snes_slot.cpp33
-rw-r--r--src/devices/bus/snes/snes_slot.h50
-rw-r--r--src/devices/bus/snes/spc7110.cpp101
-rw-r--r--src/devices/bus/snes/spc7110.h167
-rw-r--r--src/devices/bus/snes/sufami.cpp12
-rw-r--r--src/devices/bus/snes/sufami.h25
-rw-r--r--src/devices/bus/snes/upd.cpp65
-rw-r--r--src/devices/bus/snes/upd.h74
-rw-r--r--src/devices/bus/snes_ctrl/bcbattle.cpp11
-rw-r--r--src/devices/bus/snes_ctrl/bcbattle.h14
-rw-r--r--src/devices/bus/snes_ctrl/ctrl.cpp7
-rw-r--r--src/devices/bus/snes_ctrl/ctrl.h29
-rw-r--r--src/devices/bus/snes_ctrl/joypad.cpp9
-rw-r--r--src/devices/bus/snes_ctrl/joypad.h9
-rw-r--r--src/devices/bus/snes_ctrl/miracle.cpp14
-rw-r--r--src/devices/bus/snes_ctrl/miracle.h37
-rw-r--r--src/devices/bus/snes_ctrl/mouse.cpp16
-rw-r--r--src/devices/bus/snes_ctrl/mouse.h11
-rw-r--r--src/devices/bus/snes_ctrl/multitap.cpp4
-rw-r--r--src/devices/bus/snes_ctrl/multitap.h11
-rw-r--r--src/devices/bus/snes_ctrl/pachinko.cpp11
-rw-r--r--src/devices/bus/snes_ctrl/pachinko.h11
-rw-r--r--src/devices/bus/snes_ctrl/sscope.cpp20
-rw-r--r--src/devices/bus/snes_ctrl/sscope.h11
-rw-r--r--src/devices/bus/snes_ctrl/twintap.cpp9
-rw-r--r--src/devices/bus/snes_ctrl/twintap.h9
-rw-r--r--src/devices/bus/spc1000/exp.cpp7
-rw-r--r--src/devices/bus/spc1000/exp.h27
-rw-r--r--src/devices/bus/spc1000/fdd.cpp17
-rw-r--r--src/devices/bus/spc1000/fdd.h19
-rw-r--r--src/devices/bus/spc1000/vdp.cpp8
-rw-r--r--src/devices/bus/spc1000/vdp.h13
-rw-r--r--src/devices/bus/sunkbd/hlekbd.cpp62
-rw-r--r--src/devices/bus/sunkbd/hlekbd.h26
-rw-r--r--src/devices/bus/sunkbd/sunkbd.cpp11
-rw-r--r--src/devices/bus/sunkbd/sunkbd.h10
-rw-r--r--src/devices/bus/svi3x8/expander/expander.cpp4
-rw-r--r--src/devices/bus/svi3x8/expander/expander.h55
-rw-r--r--src/devices/bus/svi3x8/expander/modules.cpp4
-rw-r--r--src/devices/bus/svi3x8/expander/modules.h12
-rw-r--r--src/devices/bus/svi3x8/expander/sv601.cpp4
-rw-r--r--src/devices/bus/svi3x8/expander/sv601.h10
-rw-r--r--src/devices/bus/svi3x8/expander/sv602.cpp4
-rw-r--r--src/devices/bus/svi3x8/expander/sv602.h10
-rw-r--r--src/devices/bus/svi3x8/expander/sv603.cpp4
-rw-r--r--src/devices/bus/svi3x8/expander/sv603.h10
-rw-r--r--src/devices/bus/svi3x8/slot/cards.cpp8
-rw-r--r--src/devices/bus/svi3x8/slot/cards.h15
-rw-r--r--src/devices/bus/svi3x8/slot/slot.cpp12
-rw-r--r--src/devices/bus/svi3x8/slot/slot.h56
-rw-r--r--src/devices/bus/svi3x8/slot/sv801.cpp4
-rw-r--r--src/devices/bus/svi3x8/slot/sv801.h12
-rw-r--r--src/devices/bus/svi3x8/slot/sv802.cpp4
-rw-r--r--src/devices/bus/svi3x8/slot/sv802.h10
-rw-r--r--src/devices/bus/svi3x8/slot/sv803.cpp4
-rw-r--r--src/devices/bus/svi3x8/slot/sv803.h10
-rw-r--r--src/devices/bus/svi3x8/slot/sv805.cpp4
-rw-r--r--src/devices/bus/svi3x8/slot/sv805.h10
-rw-r--r--src/devices/bus/svi3x8/slot/sv806.cpp4
-rw-r--r--src/devices/bus/svi3x8/slot/sv806.h10
-rw-r--r--src/devices/bus/svi3x8/slot/sv807.cpp4
-rw-r--r--src/devices/bus/svi3x8/slot/sv807.h10
-rw-r--r--src/devices/bus/ti8x/bitsocket.cpp4
-rw-r--r--src/devices/bus/ti8x/bitsocket.h12
-rw-r--r--src/devices/bus/ti8x/graphlinkhle.cpp4
-rw-r--r--src/devices/bus/ti8x/graphlinkhle.h14
-rw-r--r--src/devices/bus/ti8x/teeconn.cpp4
-rw-r--r--src/devices/bus/ti8x/teeconn.h6
-rw-r--r--src/devices/bus/ti8x/ti8x.cpp11
-rw-r--r--src/devices/bus/ti8x/ti8x.h7
-rw-r--r--src/devices/bus/ti8x/tispeaker.cpp8
-rw-r--r--src/devices/bus/ti8x/tispeaker.h8
-rw-r--r--src/devices/bus/ti99/colorbus/busmouse.cpp (renamed from src/devices/bus/ti99x/busmouse.cpp)23
-rw-r--r--src/devices/bus/ti99/colorbus/busmouse.h (renamed from src/devices/bus/ti99x/busmouse.h)20
-rw-r--r--src/devices/bus/ti99/colorbus/colorbus.cpp (renamed from src/devices/bus/ti99x/colorbus.cpp)24
-rw-r--r--src/devices/bus/ti99/colorbus/colorbus.h (renamed from src/devices/bus/ti99x/colorbus.h)38
-rw-r--r--src/devices/bus/ti99/joyport/handset.cpp (renamed from src/devices/bus/ti99x/handset.cpp)26
-rw-r--r--src/devices/bus/ti99/joyport/handset.h (renamed from src/devices/bus/ti99x/handset.h)28
-rw-r--r--src/devices/bus/ti99/joyport/joyport.cpp (renamed from src/devices/bus/ti99x/joyport.cpp)36
-rw-r--r--src/devices/bus/ti99/joyport/joyport.h87
-rw-r--r--src/devices/bus/ti99/joyport/mecmouse.cpp (renamed from src/devices/bus/ti99x/mecmouse.cpp)18
-rw-r--r--src/devices/bus/ti99/joyport/mecmouse.h (renamed from src/devices/bus/ti99x/mecmouse.h)17
-rw-r--r--src/devices/bus/ti99/peb/bwg.cpp (renamed from src/devices/bus/ti99_peb/bwg.cpp)8
-rw-r--r--src/devices/bus/ti99/peb/bwg.h (renamed from src/devices/bus/ti99_peb/bwg.h)21
-rw-r--r--src/devices/bus/ti99/peb/evpc.cpp (renamed from src/devices/bus/ti99_peb/evpc.cpp)4
-rw-r--r--src/devices/bus/ti99/peb/evpc.h (renamed from src/devices/bus/ti99_peb/evpc.h)38
-rw-r--r--src/devices/bus/ti99/peb/hfdc.cpp (renamed from src/devices/bus/ti99_peb/hfdc.cpp)35
-rw-r--r--src/devices/bus/ti99/peb/hfdc.h (renamed from src/devices/bus/ti99_peb/hfdc.h)11
-rw-r--r--src/devices/bus/ti99/peb/horizon.cpp (renamed from src/devices/bus/ti99_peb/horizon.cpp)4
-rw-r--r--src/devices/bus/ti99/peb/horizon.h (renamed from src/devices/bus/ti99_peb/horizon.h)10
-rw-r--r--src/devices/bus/ti99/peb/hsgpl.cpp (renamed from src/devices/bus/ti99_peb/hsgpl.cpp)4
-rw-r--r--src/devices/bus/ti99/peb/hsgpl.h (renamed from src/devices/bus/ti99_peb/hsgpl.h)16
-rw-r--r--src/devices/bus/ti99/peb/memex.cpp (renamed from src/devices/bus/ti99_peb/memex.cpp)4
-rw-r--r--src/devices/bus/ti99/peb/memex.h (renamed from src/devices/bus/ti99_peb/memex.h)14
-rw-r--r--src/devices/bus/ti99/peb/myarcmem.cpp (renamed from src/devices/bus/ti99_peb/myarcmem.cpp)4
-rw-r--r--src/devices/bus/ti99/peb/myarcmem.h (renamed from src/devices/bus/ti99_peb/myarcmem.h)16
-rw-r--r--src/devices/bus/ti99/peb/pcode.cpp (renamed from src/devices/bus/ti99_peb/pcode.cpp)4
-rw-r--r--src/devices/bus/ti99/peb/pcode.h (renamed from src/devices/bus/ti99_peb/pcode.h)10
-rw-r--r--src/devices/bus/ti99/peb/peribox.cpp (renamed from src/devices/bus/ti99_peb/peribox.cpp)43
-rw-r--r--src/devices/bus/ti99/peb/peribox.h (renamed from src/devices/bus/ti99_peb/peribox.h)67
-rw-r--r--src/devices/bus/ti99/peb/samsmem.cpp (renamed from src/devices/bus/ti99_peb/samsmem.cpp)4
-rw-r--r--src/devices/bus/ti99/peb/samsmem.h (renamed from src/devices/bus/ti99_peb/samsmem.h)15
-rw-r--r--src/devices/bus/ti99/peb/spchsyn.cpp (renamed from src/devices/bus/ti99_peb/spchsyn.cpp)7
-rw-r--r--src/devices/bus/ti99/peb/spchsyn.h (renamed from src/devices/bus/ti99_peb/spchsyn.h)16
-rw-r--r--src/devices/bus/ti99/peb/ti_32kmem.cpp (renamed from src/devices/bus/ti99_peb/ti_32kmem.cpp)7
-rw-r--r--src/devices/bus/ti99/peb/ti_32kmem.h (renamed from src/devices/bus/ti99_peb/ti_32kmem.h)14
-rw-r--r--src/devices/bus/ti99/peb/ti_fdc.cpp (renamed from src/devices/bus/ti99_peb/ti_fdc.cpp)40
-rw-r--r--src/devices/bus/ti99/peb/ti_fdc.h (renamed from src/devices/bus/ti99_peb/ti_fdc.h)14
-rw-r--r--src/devices/bus/ti99/peb/ti_rs232.cpp (renamed from src/devices/bus/ti99_peb/ti_rs232.cpp)136
-rw-r--r--src/devices/bus/ti99/peb/ti_rs232.h (renamed from src/devices/bus/ti99_peb/ti_rs232.h)28
-rw-r--r--src/devices/bus/ti99/peb/tn_ide.cpp (renamed from src/devices/bus/ti99_peb/tn_ide.cpp)6
-rw-r--r--src/devices/bus/ti99/peb/tn_ide.h (renamed from src/devices/bus/ti99_peb/tn_ide.h)17
-rw-r--r--src/devices/bus/ti99/peb/tn_usbsm.cpp (renamed from src/devices/bus/ti99_peb/tn_usbsm.cpp)4
-rw-r--r--src/devices/bus/ti99/peb/tn_usbsm.h (renamed from src/devices/bus/ti99_peb/tn_usbsm.h)14
-rw-r--r--src/devices/bus/ti99x/990_dk.cpp19
-rw-r--r--src/devices/bus/ti99x/990_dk.h35
-rw-r--r--src/devices/bus/ti99x/990_hd.cpp7
-rw-r--r--src/devices/bus/ti99x/990_hd.h22
-rw-r--r--src/devices/bus/ti99x/990_tap.cpp12
-rw-r--r--src/devices/bus/ti99x/990_tap.h29
-rw-r--r--src/devices/bus/ti99x/998board.cpp58
-rw-r--r--src/devices/bus/ti99x/998board.h157
-rw-r--r--src/devices/bus/ti99x/datamux.cpp7
-rw-r--r--src/devices/bus/ti99x/datamux.h18
-rw-r--r--src/devices/bus/ti99x/genboard.cpp16
-rw-r--r--src/devices/bus/ti99x/genboard.h32
-rw-r--r--src/devices/bus/ti99x/gromport.cpp342
-rw-r--r--src/devices/bus/ti99x/gromport.h222
-rw-r--r--src/devices/bus/ti99x/joyport.h89
-rw-r--r--src/devices/bus/ti99x/ti99defs.cpp4
-rw-r--r--src/devices/bus/ti99x/ti99defs.h39
-rw-r--r--src/devices/bus/tiki100/8088.cpp30
-rw-r--r--src/devices/bus/tiki100/8088.h17
-rw-r--r--src/devices/bus/tiki100/exp.cpp36
-rw-r--r--src/devices/bus/tiki100/exp.h83
-rw-r--r--src/devices/bus/tiki100/hdc.cpp18
-rw-r--r--src/devices/bus/tiki100/hdc.h18
-rw-r--r--src/devices/bus/tvc/hbf.cpp10
-rw-r--r--src/devices/bus/tvc/hbf.h12
-rw-r--r--src/devices/bus/tvc/tvc.cpp11
-rw-r--r--src/devices/bus/tvc/tvc.h33
-rw-r--r--src/devices/bus/vboy/rom.cpp14
-rw-r--r--src/devices/bus/vboy/rom.h25
-rw-r--r--src/devices/bus/vboy/slot.cpp11
-rw-r--r--src/devices/bus/vboy/slot.h26
-rw-r--r--src/devices/bus/vc4000/rom.cpp22
-rw-r--r--src/devices/bus/vc4000/rom.h29
-rw-r--r--src/devices/bus/vc4000/slot.cpp15
-rw-r--r--src/devices/bus/vc4000/slot.h20
-rw-r--r--src/devices/bus/vcs/compumat.cpp4
-rw-r--r--src/devices/bus/vcs/compumat.h10
-rw-r--r--src/devices/bus/vcs/dpc.cpp9
-rw-r--r--src/devices/bus/vcs/dpc.h57
-rw-r--r--src/devices/bus/vcs/harmony_melody.cpp7
-rw-r--r--src/devices/bus/vcs/harmony_melody.h20
-rwxr-xr-xsrc/devices/bus/vcs/rom.cpp117
-rwxr-xr-xsrc/devices/bus/vcs/rom.h162
-rw-r--r--src/devices/bus/vcs/scharger.cpp8
-rw-r--r--src/devices/bus/vcs/scharger.h21
-rw-r--r--src/devices/bus/vcs/vcs_slot.cpp8
-rwxr-xr-xsrc/devices/bus/vcs/vcs_slot.h23
-rw-r--r--src/devices/bus/vcs_ctrl/ctrl.cpp4
-rw-r--r--src/devices/bus/vcs_ctrl/ctrl.h15
-rw-r--r--src/devices/bus/vcs_ctrl/joybooster.cpp4
-rw-r--r--src/devices/bus/vcs_ctrl/joybooster.h11
-rw-r--r--src/devices/bus/vcs_ctrl/joystick.cpp4
-rw-r--r--src/devices/bus/vcs_ctrl/joystick.h10
-rw-r--r--src/devices/bus/vcs_ctrl/keypad.cpp7
-rw-r--r--src/devices/bus/vcs_ctrl/keypad.h11
-rw-r--r--src/devices/bus/vcs_ctrl/lightpen.cpp4
-rw-r--r--src/devices/bus/vcs_ctrl/lightpen.h11
-rw-r--r--src/devices/bus/vcs_ctrl/paddles.cpp4
-rw-r--r--src/devices/bus/vcs_ctrl/paddles.h11
-rw-r--r--src/devices/bus/vcs_ctrl/wheel.cpp4
-rw-r--r--src/devices/bus/vcs_ctrl/wheel.h11
-rw-r--r--src/devices/bus/vectrex/rom.cpp20
-rw-r--r--src/devices/bus/vectrex/rom.h36
-rw-r--r--src/devices/bus/vectrex/slot.cpp13
-rw-r--r--src/devices/bus/vectrex/slot.h25
-rw-r--r--src/devices/bus/vic10/exp.cpp17
-rw-r--r--src/devices/bus/vic10/exp.h35
-rw-r--r--src/devices/bus/vic10/std.cpp5
-rw-r--r--src/devices/bus/vic10/std.h11
-rw-r--r--src/devices/bus/vic20/4cga.cpp4
-rw-r--r--src/devices/bus/vic20/4cga.h10
-rw-r--r--src/devices/bus/vic20/exp.cpp15
-rw-r--r--src/devices/bus/vic20/exp.h20
-rw-r--r--src/devices/bus/vic20/fe3.cpp26
-rw-r--r--src/devices/bus/vic20/fe3.h18
-rw-r--r--src/devices/bus/vic20/megacart.cpp10
-rw-r--r--src/devices/bus/vic20/megacart.h12
-rw-r--r--src/devices/bus/vic20/speakeasy.cpp16
-rw-r--r--src/devices/bus/vic20/speakeasy.h18
-rw-r--r--src/devices/bus/vic20/std.cpp5
-rw-r--r--src/devices/bus/vic20/std.h12
-rw-r--r--src/devices/bus/vic20/user.h8
-rw-r--r--src/devices/bus/vic20/vic1010.cpp20
-rw-r--r--src/devices/bus/vic20/vic1010.h31
-rw-r--r--src/devices/bus/vic20/vic1011.cpp8
-rw-r--r--src/devices/bus/vic20/vic1011.h8
-rw-r--r--src/devices/bus/vic20/vic1110.cpp10
-rw-r--r--src/devices/bus/vic20/vic1110.h11
-rw-r--r--src/devices/bus/vic20/vic1111.cpp8
-rw-r--r--src/devices/bus/vic20/vic1111.h12
-rw-r--r--src/devices/bus/vic20/vic1112.cpp33
-rw-r--r--src/devices/bus/vic20/vic1112.h12
-rw-r--r--src/devices/bus/vic20/vic1210.cpp8
-rw-r--r--src/devices/bus/vic20/vic1210.h12
-rw-r--r--src/devices/bus/vic20/videopak.cpp24
-rw-r--r--src/devices/bus/vic20/videopak.h17
-rw-r--r--src/devices/bus/vidbrain/exp.cpp4
-rw-r--r--src/devices/bus/vidbrain/exp.h24
-rw-r--r--src/devices/bus/vidbrain/money_minder.cpp4
-rw-r--r--src/devices/bus/vidbrain/money_minder.h11
-rw-r--r--src/devices/bus/vidbrain/std.cpp4
-rw-r--r--src/devices/bus/vidbrain/std.h11
-rw-r--r--src/devices/bus/vidbrain/timeshare.cpp4
-rw-r--r--src/devices/bus/vidbrain/timeshare.h11
-rw-r--r--src/devices/bus/vip/byteio.cpp9
-rw-r--r--src/devices/bus/vip/byteio.h25
-rw-r--r--src/devices/bus/vip/exp.cpp4
-rw-r--r--src/devices/bus/vip/exp.h39
-rw-r--r--src/devices/bus/vip/vp550.cpp4
-rw-r--r--src/devices/bus/vip/vp550.h11
-rw-r--r--src/devices/bus/vip/vp570.cpp4
-rw-r--r--src/devices/bus/vip/vp570.h10
-rw-r--r--src/devices/bus/vip/vp575.cpp13
-rw-r--r--src/devices/bus/vip/vp575.h23
-rw-r--r--src/devices/bus/vip/vp585.cpp7
-rw-r--r--src/devices/bus/vip/vp585.h11
-rw-r--r--src/devices/bus/vip/vp590.cpp7
-rw-r--r--src/devices/bus/vip/vp590.h11
-rw-r--r--src/devices/bus/vip/vp595.cpp4
-rw-r--r--src/devices/bus/vip/vp595.h11
-rw-r--r--src/devices/bus/vip/vp620.cpp8
-rw-r--r--src/devices/bus/vip/vp620.h13
-rw-r--r--src/devices/bus/vip/vp700.cpp4
-rw-r--r--src/devices/bus/vip/vp700.h11
-rw-r--r--src/devices/bus/vme/vme.cpp50
-rw-r--r--src/devices/bus/vme/vme.h44
-rw-r--r--src/devices/bus/vme/vme_fccpu20.cpp35
-rw-r--r--src/devices/bus/vme/vme_fccpu20.h128
-rw-r--r--src/devices/bus/vme/vme_fcisio.cpp42
-rw-r--r--src/devices/bus/vme/vme_fcisio.h16
-rw-r--r--src/devices/bus/vme/vme_fcscsi.cpp38
-rw-r--r--src/devices/bus/vme/vme_fcscsi.h33
-rw-r--r--src/devices/bus/vme/vme_mvme350.cpp14
-rw-r--r--src/devices/bus/vme/vme_mvme350.h18
-rw-r--r--src/devices/bus/vme/vme_mzr8105.cpp9
-rw-r--r--src/devices/bus/vme/vme_mzr8105.h19
-rw-r--r--src/devices/bus/vme/vme_mzr8300.cpp17
-rw-r--r--src/devices/bus/vme/vme_mzr8300.h16
-rw-r--r--src/devices/bus/vtech/ioexp/carts.cpp10
-rw-r--r--src/devices/bus/vtech/ioexp/carts.h13
-rw-r--r--src/devices/bus/vtech/ioexp/ioexp.cpp28
-rw-r--r--src/devices/bus/vtech/ioexp/ioexp.h40
-rw-r--r--src/devices/bus/vtech/ioexp/joystick.cpp20
-rw-r--r--src/devices/bus/vtech/ioexp/joystick.h14
-rw-r--r--src/devices/bus/vtech/ioexp/printer.cpp30
-rw-r--r--src/devices/bus/vtech/ioexp/printer.h14
-rw-r--r--src/devices/bus/vtech/memexp/carts.cpp25
-rw-r--r--src/devices/bus/vtech/memexp/carts.h17
-rw-r--r--src/devices/bus/vtech/memexp/floppy.cpp47
-rw-r--r--src/devices/bus/vtech/memexp/floppy.h26
-rw-r--r--src/devices/bus/vtech/memexp/memexp.cpp30
-rw-r--r--src/devices/bus/vtech/memexp/memexp.h60
-rw-r--r--src/devices/bus/vtech/memexp/memory.cpp68
-rw-r--r--src/devices/bus/vtech/memexp/memory.h40
-rw-r--r--src/devices/bus/vtech/memexp/rs232.cpp32
-rw-r--r--src/devices/bus/vtech/memexp/rs232.h16
-rw-r--r--src/devices/bus/vtech/memexp/rtty.cpp30
-rw-r--r--src/devices/bus/vtech/memexp/rtty.h18
-rw-r--r--src/devices/bus/vtech/memexp/wordpro.cpp20
-rw-r--r--src/devices/bus/vtech/memexp/wordpro.h16
-rw-r--r--src/devices/bus/wangpc/emb.cpp7
-rw-r--r--src/devices/bus/wangpc/emb.h9
-rw-r--r--src/devices/bus/wangpc/lic.cpp4
-rw-r--r--src/devices/bus/wangpc/lic.h11
-rw-r--r--src/devices/bus/wangpc/lvc.cpp4
-rw-r--r--src/devices/bus/wangpc/lvc.h11
-rw-r--r--src/devices/bus/wangpc/mcc.cpp4
-rw-r--r--src/devices/bus/wangpc/mcc.h11
-rw-r--r--src/devices/bus/wangpc/mvc.cpp4
-rw-r--r--src/devices/bus/wangpc/mvc.h11
-rw-r--r--src/devices/bus/wangpc/rtc.cpp4
-rw-r--r--src/devices/bus/wangpc/rtc.h11
-rw-r--r--src/devices/bus/wangpc/tig.cpp4
-rw-r--r--src/devices/bus/wangpc/tig.h13
-rw-r--r--src/devices/bus/wangpc/wangpc.cpp8
-rw-r--r--src/devices/bus/wangpc/wangpc.h67
-rw-r--r--src/devices/bus/wangpc/wdc.cpp4
-rw-r--r--src/devices/bus/wangpc/wdc.h11
-rw-r--r--src/devices/bus/wswan/rom.cpp44
-rw-r--r--src/devices/bus/wswan/rom.h47
-rw-r--r--src/devices/bus/wswan/slot.cpp11
-rw-r--r--src/devices/bus/wswan/slot.h25
-rw-r--r--src/devices/bus/x68k/x68k_neptunex.cpp10
-rw-r--r--src/devices/bus/x68k/x68k_neptunex.h15
-rw-r--r--src/devices/bus/x68k/x68k_scsiext.cpp9
-rw-r--r--src/devices/bus/x68k/x68k_scsiext.h14
-rw-r--r--src/devices/bus/x68k/x68kexp.cpp15
-rw-r--r--src/devices/bus/x68k/x68kexp.h27
-rw-r--r--src/devices/bus/z88/flash.cpp8
-rw-r--r--src/devices/bus/z88/flash.h11
-rw-r--r--src/devices/bus/z88/ram.cpp26
-rw-r--r--src/devices/bus/z88/ram.h19
-rw-r--r--src/devices/bus/z88/rom.cpp22
-rw-r--r--src/devices/bus/z88/rom.h17
-rw-r--r--src/devices/bus/z88/z88.cpp11
-rw-r--r--src/devices/bus/z88/z88.h28
-rw-r--r--src/devices/cpu/8x300/8x300.cpp4
-rw-r--r--src/devices/cpu/8x300/8x300.h9
-rw-r--r--src/devices/cpu/adsp2100/adsp2100.cpp41
-rw-r--r--src/devices/cpu/adsp2100/adsp2100.h48
-rw-r--r--src/devices/cpu/alph8201/alph8201.cpp20
-rw-r--r--src/devices/cpu/alph8201/alph8201.h32
-rw-r--r--src/devices/cpu/alto2/alto2cpu.cpp4
-rw-r--r--src/devices/cpu/alto2/alto2cpu.h4
-rw-r--r--src/devices/cpu/am29000/am29000.cpp4
-rw-r--r--src/devices/cpu/am29000/am29000.h12
-rw-r--r--src/devices/cpu/amis2000/amis2000.cpp12
-rw-r--r--src/devices/cpu/amis2000/amis2000.h42
-rw-r--r--src/devices/cpu/apexc/apexc.cpp6
-rw-r--r--src/devices/cpu/apexc/apexc.h11
-rw-r--r--src/devices/cpu/arc/arc.cpp29
-rw-r--r--src/devices/cpu/arc/arc.h15
-rw-r--r--src/devices/cpu/arcompact/arcompact.cpp4
-rw-r--r--src/devices/cpu/arcompact/arcompact.h10
-rw-r--r--src/devices/cpu/arm/arm.cpp26
-rw-r--r--src/devices/cpu/arm/arm.h53
-rw-r--r--src/devices/cpu/arm7/arm7.cpp39
-rw-r--r--src/devices/cpu/arm7/arm7.h31
-rw-r--r--src/devices/cpu/arm7/lpc210x.cpp6
-rw-r--r--src/devices/cpu/arm7/lpc210x.h31
-rw-r--r--src/devices/cpu/asap/asap.cpp28
-rw-r--r--src/devices/cpu/asap/asap.h88
-rw-r--r--src/devices/cpu/avr8/avr8.cpp50
-rw-r--r--src/devices/cpu/avr8/avr8.h23
-rw-r--r--src/devices/cpu/ccpu/ccpu.cpp6
-rw-r--r--src/devices/cpu/ccpu/ccpu.h51
-rw-r--r--src/devices/cpu/clipper/clipper.cpp56
-rw-r--r--src/devices/cpu/clipper/clipper.h54
-rw-r--r--src/devices/cpu/cop400/cop400.cpp72
-rw-r--r--src/devices/cpu/cop400/cop400.h50
-rw-r--r--src/devices/cpu/cosmac/cosmac.cpp12
-rw-r--r--src/devices/cpu/cosmac/cosmac.h106
-rw-r--r--src/devices/cpu/cp1610/cp1610.cpp6
-rw-r--r--src/devices/cpu/cp1610/cp1610.h27
-rw-r--r--src/devices/cpu/cubeqcpu/cubeqcpu.cpp12
-rw-r--r--src/devices/cpu/cubeqcpu/cubeqcpu.h207
-rw-r--r--src/devices/cpu/dsp16/dsp16.cpp4
-rw-r--r--src/devices/cpu/dsp16/dsp16.h83
-rw-r--r--src/devices/cpu/dsp32/dsp32.cpp6
-rw-r--r--src/devices/cpu/dsp32/dsp32.h128
-rw-r--r--src/devices/cpu/dsp56k/dsp56k.cpp19
-rw-r--r--src/devices/cpu/dsp56k/dsp56k.h17
-rw-r--r--src/devices/cpu/dsp56k/dsp56mem.cpp10
-rw-r--r--src/devices/cpu/dsp56k/dsp56mem.h10
-rw-r--r--src/devices/cpu/e0c6200/e0c6200.cpp8
-rw-r--r--src/devices/cpu/e0c6200/e0c6200.h16
-rw-r--r--src/devices/cpu/e0c6200/e0c6s46.cpp4
-rw-r--r--src/devices/cpu/e0c6200/e0c6s46.h46
-rw-r--r--src/devices/cpu/e132xs/32xsdasm.cpp5
-rw-r--r--src/devices/cpu/e132xs/32xsdefs.h96
-rw-r--r--src/devices/cpu/e132xs/e132xs.cpp92
-rw-r--r--src/devices/cpu/e132xs/e132xs.h247
-rw-r--r--src/devices/cpu/es5510/es5510.cpp115
-rw-r--r--src/devices/cpu/es5510/es5510.h10
-rw-r--r--src/devices/cpu/esrip/esrip.cpp4
-rw-r--r--src/devices/cpu/esrip/esrip.h144
-rw-r--r--src/devices/cpu/f8/f8.cpp6
-rw-r--r--src/devices/cpu/f8/f8.h33
-rw-r--r--src/devices/cpu/g65816/g65816.cpp20
-rw-r--r--src/devices/cpu/g65816/g65816.h36
-rw-r--r--src/devices/cpu/h6280/h6280.cpp30
-rw-r--r--src/devices/cpu/h6280/h6280.h67
-rw-r--r--src/devices/cpu/h8/h8.cpp4
-rw-r--r--src/devices/cpu/h8/h8.h12
-rw-r--r--src/devices/cpu/h8/h83002.cpp4
-rw-r--r--src/devices/cpu/h8/h83002.h10
-rw-r--r--src/devices/cpu/h8/h83006.cpp42
-rw-r--r--src/devices/cpu/h8/h83006.h15
-rw-r--r--src/devices/cpu/h8/h83008.cpp8
-rw-r--r--src/devices/cpu/h8/h83008.h10
-rw-r--r--src/devices/cpu/h8/h83048.cpp53
-rw-r--r--src/devices/cpu/h8/h83048.h17
-rw-r--r--src/devices/cpu/h8/h83337.cpp44
-rw-r--r--src/devices/cpu/h8/h83337.h17
-rw-r--r--src/devices/cpu/h8/h8_adc.cpp33
-rw-r--r--src/devices/cpu/h8/h8_adc.h24
-rw-r--r--src/devices/cpu/h8/h8_dma.cpp8
-rw-r--r--src/devices/cpu/h8/h8_dma.h12
-rw-r--r--src/devices/cpu/h8/h8_dtc.cpp4
-rw-r--r--src/devices/cpu/h8/h8_dtc.h10
-rw-r--r--src/devices/cpu/h8/h8_intc.cpp21
-rw-r--r--src/devices/cpu/h8/h8_intc.h20
-rw-r--r--src/devices/cpu/h8/h8_port.cpp4
-rw-r--r--src/devices/cpu/h8/h8_port.h10
-rw-r--r--src/devices/cpu/h8/h8_sci.cpp4
-rw-r--r--src/devices/cpu/h8/h8_sci.h14
-rw-r--r--src/devices/cpu/h8/h8_timer16.cpp22
-rw-r--r--src/devices/cpu/h8/h8_timer16.h19
-rw-r--r--src/devices/cpu/h8/h8_timer8.cpp14
-rw-r--r--src/devices/cpu/h8/h8_timer8.h15
-rw-r--r--src/devices/cpu/h8/h8_watchdog.cpp4
-rw-r--r--src/devices/cpu/h8/h8_watchdog.h10
-rw-r--r--src/devices/cpu/h8/h8h.cpp4
-rw-r--r--src/devices/cpu/h8/h8h.h13
-rw-r--r--src/devices/cpu/h8/h8s2000.cpp4
-rw-r--r--src/devices/cpu/h8/h8s2000.h11
-rw-r--r--src/devices/cpu/h8/h8s2245.cpp56
-rw-r--r--src/devices/cpu/h8/h8s2245.h19
-rw-r--r--src/devices/cpu/h8/h8s2320.cpp92
-rw-r--r--src/devices/cpu/h8/h8s2320.h32
-rw-r--r--src/devices/cpu/h8/h8s2357.cpp70
-rw-r--r--src/devices/cpu/h8/h8s2357.h24
-rw-r--r--src/devices/cpu/h8/h8s2600.cpp4
-rw-r--r--src/devices/cpu/h8/h8s2600.h13
-rw-r--r--src/devices/cpu/h8/h8s2655.cpp46
-rw-r--r--src/devices/cpu/h8/h8s2655.h15
-rw-r--r--src/devices/cpu/hcd62121/hcd62121.cpp7
-rw-r--r--src/devices/cpu/hcd62121/hcd62121.h38
-rw-r--r--src/devices/cpu/hd61700/hd61700.cpp35
-rw-r--r--src/devices/cpu/hd61700/hd61700.h44
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.cpp99
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.h149
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.cpp17
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.h316
-rw-r--r--src/devices/cpu/hphybrid/hphybrid_dasm.cpp5
-rw-r--r--src/devices/cpu/hphybrid/hphybrid_defs.h38
-rw-r--r--src/devices/cpu/i386/i386.cpp72
-rw-r--r--src/devices/cpu/i386/i386.h160
-rw-r--r--src/devices/cpu/i4004/i4004.cpp6
-rw-r--r--src/devices/cpu/i4004/i4004.h10
-rw-r--r--src/devices/cpu/i8008/i8008.cpp14
-rw-r--r--src/devices/cpu/i8008/i8008.h28
-rw-r--r--src/devices/cpu/i8085/i8085.cpp28
-rw-r--r--src/devices/cpu/i8085/i8085.h62
-rw-r--r--src/devices/cpu/i8089/i8089.cpp78
-rw-r--r--src/devices/cpu/i8089/i8089.h26
-rw-r--r--src/devices/cpu/i8089/i8089_channel.cpp52
-rw-r--r--src/devices/cpu/i8089/i8089_channel.h18
-rw-r--r--src/devices/cpu/i8089/i8089_ops.cpp138
-rw-r--r--src/devices/cpu/i86/i186.cpp19
-rw-r--r--src/devices/cpu/i86/i186.h25
-rw-r--r--src/devices/cpu/i86/i286.cpp4
-rw-r--r--src/devices/cpu/i86/i286.h14
-rw-r--r--src/devices/cpu/i86/i86.cpp21
-rw-r--r--src/devices/cpu/i86/i86.h27
-rw-r--r--src/devices/cpu/i860/i860.cpp7
-rw-r--r--src/devices/cpu/i860/i860.h59
-rw-r--r--src/devices/cpu/i960/i960.cpp11
-rw-r--r--src/devices/cpu/i960/i960.h16
-rw-r--r--src/devices/cpu/ie15/ie15.cpp11
-rw-r--r--src/devices/cpu/ie15/ie15.h34
-rw-r--r--src/devices/cpu/jaguar/jagdasm.cpp3
-rw-r--r--src/devices/cpu/jaguar/jaguar.cpp12
-rw-r--r--src/devices/cpu/jaguar/jaguar.h33
-rw-r--r--src/devices/cpu/lc8670/lc8670.cpp24
-rw-r--r--src/devices/cpu/lc8670/lc8670.h56
-rw-r--r--src/devices/cpu/lh5801/lh5801.cpp11
-rw-r--r--src/devices/cpu/lh5801/lh5801.h14
-rw-r--r--src/devices/cpu/lr35902/lr35902.cpp6
-rw-r--r--src/devices/cpu/lr35902/lr35902.h12
-rw-r--r--src/devices/cpu/m37710/m37710.cpp20
-rw-r--r--src/devices/cpu/m37710/m37710.h20
-rw-r--r--src/devices/cpu/m6502/deco16.cpp4
-rw-r--r--src/devices/cpu/m6502/deco16.h8
-rw-r--r--src/devices/cpu/m6502/m3745x.cpp12
-rw-r--r--src/devices/cpu/m6502/m3745x.h20
-rw-r--r--src/devices/cpu/m6502/m4510.cpp4
-rw-r--r--src/devices/cpu/m6502/m4510.h10
-rw-r--r--src/devices/cpu/m6502/m5074x.cpp20
-rw-r--r--src/devices/cpu/m6502/m5074x.h26
-rw-r--r--src/devices/cpu/m6502/m6502.cpp13
-rw-r--r--src/devices/cpu/m6502/m6502.h11
-rw-r--r--src/devices/cpu/m6502/m6504.cpp4
-rw-r--r--src/devices/cpu/m6502/m6504.h6
-rw-r--r--src/devices/cpu/m6502/m6507.cpp4
-rw-r--r--src/devices/cpu/m6502/m6507.h8
-rw-r--r--src/devices/cpu/m6502/m6509.cpp4
-rw-r--r--src/devices/cpu/m6502/m6509.h8
-rw-r--r--src/devices/cpu/m6502/m6510.cpp12
-rw-r--r--src/devices/cpu/m6502/m6510.h12
-rw-r--r--src/devices/cpu/m6502/m6510t.cpp4
-rw-r--r--src/devices/cpu/m6502/m6510t.h8
-rw-r--r--src/devices/cpu/m6502/m65c02.cpp8
-rw-r--r--src/devices/cpu/m6502/m65c02.h12
-rw-r--r--src/devices/cpu/m6502/m65ce02.cpp8
-rw-r--r--src/devices/cpu/m6502/m65ce02.h12
-rw-r--r--src/devices/cpu/m6502/m65sc02.cpp4
-rw-r--r--src/devices/cpu/m6502/m65sc02.h8
-rw-r--r--src/devices/cpu/m6502/m740.cpp8
-rw-r--r--src/devices/cpu/m6502/m740.h79
-rw-r--r--src/devices/cpu/m6502/m7501.cpp4
-rw-r--r--src/devices/cpu/m6502/m7501.h6
-rw-r--r--src/devices/cpu/m6502/m8502.cpp4
-rw-r--r--src/devices/cpu/m6502/m8502.h9
-rw-r--r--src/devices/cpu/m6502/n2a03.cpp4
-rw-r--r--src/devices/cpu/m6502/n2a03.h9
-rw-r--r--src/devices/cpu/m6502/r65c02.cpp8
-rw-r--r--src/devices/cpu/m6502/r65c02.h12
-rw-r--r--src/devices/cpu/m6800/m6800.cpp65
-rw-r--r--src/devices/cpu/m6800/m6800.h40
-rw-r--r--src/devices/cpu/m68000/m68000.h82
-rw-r--r--src/devices/cpu/m68000/m68kcpu.cpp109
-rw-r--r--src/devices/cpu/m68000/m68kcpu.h6
-rw-r--r--src/devices/cpu/m6805/m6805.cpp35
-rw-r--r--src/devices/cpu/m6805/m6805.h16
-rw-r--r--src/devices/cpu/m6805/m68705.cpp54
-rw-r--r--src/devices/cpu/m6805/m68705.h33
-rw-r--r--src/devices/cpu/m6805/m68hc05.cpp38
-rw-r--r--src/devices/cpu/m6805/m68hc05.h16
-rw-r--r--src/devices/cpu/m6809/hd6309.cpp4
-rw-r--r--src/devices/cpu/m6809/hd6309.h10
-rw-r--r--src/devices/cpu/m6809/konami.cpp6
-rw-r--r--src/devices/cpu/m6809/konami.h10
-rw-r--r--src/devices/cpu/m6809/m6809.cpp12
-rw-r--r--src/devices/cpu/m6809/m6809.h20
-rw-r--r--src/devices/cpu/mb86233/mb86233.cpp13
-rw-r--r--src/devices/cpu/mb86233/mb86233.h84
-rw-r--r--src/devices/cpu/mb86235/mb86235.cpp7
-rw-r--r--src/devices/cpu/mb86235/mb86235.h33
-rw-r--r--src/devices/cpu/mb86235/mb86235defs.h21
-rw-r--r--src/devices/cpu/mb86235/mb86235drc.cpp6
-rw-r--r--src/devices/cpu/mb86235/mb86235fe.cpp2
-rw-r--r--src/devices/cpu/mb88xx/mb88xx.cpp38
-rw-r--r--src/devices/cpu/mb88xx/mb88xx.h28
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.cpp4
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.h11
-rw-r--r--src/devices/cpu/mcs48/mcs48.cpp88
-rw-r--r--src/devices/cpu/mcs48/mcs48.h70
-rw-r--r--src/devices/cpu/mcs51/mcs51.cpp81
-rw-r--r--src/devices/cpu/mcs51/mcs51.h51
-rw-r--r--src/devices/cpu/mcs96/i8x9x.cpp12
-rw-r--r--src/devices/cpu/mcs96/i8x9x.h14
-rw-r--r--src/devices/cpu/mcs96/i8xc196.cpp4
-rw-r--r--src/devices/cpu/mcs96/i8xc196.h10
-rw-r--r--src/devices/cpu/mcs96/mcs96.cpp7
-rw-r--r--src/devices/cpu/mcs96/mcs96.h22
-rw-r--r--src/devices/cpu/melps4/m58846.cpp4
-rw-r--r--src/devices/cpu/melps4/m58846.h12
-rw-r--r--src/devices/cpu/melps4/melps4.cpp25
-rw-r--r--src/devices/cpu/melps4/melps4.h59
-rw-r--r--src/devices/cpu/minx/minx.cpp6
-rw-r--r--src/devices/cpu/minx/minx.h11
-rw-r--r--src/devices/cpu/mips/mips3.cpp44
-rw-r--r--src/devices/cpu/mips/mips3.h90
-rw-r--r--src/devices/cpu/mips/r3000.cpp26
-rw-r--r--src/devices/cpu/mips/r3000.h60
-rw-r--r--src/devices/cpu/mn10200/mn10200.cpp12
-rw-r--r--src/devices/cpu/mn10200/mn10200.h54
-rw-r--r--src/devices/cpu/nanoprocessor/nanoprocessor.cpp6
-rw-r--r--src/devices/cpu/nanoprocessor/nanoprocessor.h32
-rw-r--r--src/devices/cpu/nec/nec.cpp22
-rw-r--r--src/devices/cpu/nec/nec.h35
-rw-r--r--src/devices/cpu/nec/v25.cpp12
-rw-r--r--src/devices/cpu/nec/v25.h44
-rw-r--r--src/devices/cpu/nec/v53.cpp15
-rw-r--r--src/devices/cpu/nec/v53.h114
-rw-r--r--src/devices/cpu/patinhofeio/patinho_feio.cpp8
-rw-r--r--src/devices/cpu/patinhofeio/patinhofeio_cpu.h19
-rw-r--r--src/devices/cpu/pdp1/pdp1.cpp4
-rw-r--r--src/devices/cpu/pdp1/pdp1.h10
-rw-r--r--src/devices/cpu/pdp1/tx0.cpp22
-rw-r--r--src/devices/cpu/pdp1/tx0.h40
-rw-r--r--src/devices/cpu/pic16c5x/pic16c5x.cpp38
-rw-r--r--src/devices/cpu/pic16c5x/pic16c5x.h46
-rw-r--r--src/devices/cpu/pic16c62x/pic16c62x.cpp34
-rw-r--r--src/devices/cpu/pic16c62x/pic16c62x.h30
-rw-r--r--src/devices/cpu/powerpc/ppc.h37
-rw-r--r--src/devices/cpu/powerpc/ppccom.cpp52
-rw-r--r--src/devices/cpu/pps4/pps4.cpp39
-rw-r--r--src/devices/cpu/pps4/pps4.h26
-rw-r--r--src/devices/cpu/psx/dma.cpp8
-rw-r--r--src/devices/cpu/psx/dma.h42
-rw-r--r--src/devices/cpu/psx/gte.h8
-rw-r--r--src/devices/cpu/psx/irq.cpp4
-rw-r--r--src/devices/cpu/psx/irq.h10
-rw-r--r--src/devices/cpu/psx/mdec.cpp8
-rw-r--r--src/devices/cpu/psx/mdec.h22
-rw-r--r--src/devices/cpu/psx/psx.cpp34
-rw-r--r--src/devices/cpu/psx/psx.h160
-rw-r--r--src/devices/cpu/psx/psxdasm.cpp3
-rw-r--r--src/devices/cpu/psx/psxdefs.h126
-rw-r--r--src/devices/cpu/psx/rcnt.cpp4
-rw-r--r--src/devices/cpu/psx/rcnt.h34
-rw-r--r--src/devices/cpu/psx/sio.cpp12
-rw-r--r--src/devices/cpu/psx/sio.h26
-rw-r--r--src/devices/cpu/rsp/rsp.cpp10
-rw-r--r--src/devices/cpu/rsp/rsp.h46
-rw-r--r--src/devices/cpu/rsp/rspcp2.cpp5
-rw-r--r--src/devices/cpu/rsp/rspcp2d.cpp7
-rw-r--r--src/devices/cpu/rsp/rspdefs.h32
-rw-r--r--src/devices/cpu/rsp/rspdrc.cpp7
-rw-r--r--src/devices/cpu/rsp/rspfe.cpp3
-rw-r--r--src/devices/cpu/s2650/s2650.cpp11
-rw-r--r--src/devices/cpu/s2650/s2650.h14
-rw-r--r--src/devices/cpu/saturn/satops.hxx14
-rw-r--r--src/devices/cpu/saturn/saturn.cpp20
-rw-r--r--src/devices/cpu/saturn/saturn.h29
-rw-r--r--src/devices/cpu/sc61860/sc61860.cpp13
-rw-r--r--src/devices/cpu/sc61860/sc61860.h27
-rw-r--r--src/devices/cpu/scmp/scmp.cpp45
-rw-r--r--src/devices/cpu/scmp/scmp.h44
-rw-r--r--src/devices/cpu/score/score.cpp10
-rw-r--r--src/devices/cpu/score/score.h14
-rw-r--r--src/devices/cpu/scudsp/scudsp.cpp7
-rw-r--r--src/devices/cpu/scudsp/scudsp.h39
-rw-r--r--src/devices/cpu/se3208/se3208.cpp13
-rw-r--r--src/devices/cpu/se3208/se3208.h14
-rw-r--r--src/devices/cpu/sh2/sh2.cpp134
-rw-r--r--src/devices/cpu/sh2/sh2.h48
-rw-r--r--src/devices/cpu/sh2/sh2comn.cpp84
-rw-r--r--src/devices/cpu/sh2/sh2comn.h8
-rw-r--r--src/devices/cpu/sh2/sh7604_bus.cpp8
-rw-r--r--src/devices/cpu/sh2/sh7604_bus.h18
-rw-r--r--src/devices/cpu/sh2/sh7604_sci.cpp8
-rw-r--r--src/devices/cpu/sh2/sh7604_sci.h44
-rw-r--r--src/devices/cpu/sh2/sh7604_wdt.cpp8
-rw-r--r--src/devices/cpu/sh2/sh7604_wdt.h18
-rw-r--r--src/devices/cpu/sh4/sh4.cpp32
-rw-r--r--src/devices/cpu/sh4/sh4.h35
-rw-r--r--src/devices/cpu/sharc/sharc.cpp7
-rw-r--r--src/devices/cpu/sharc/sharc.h135
-rw-r--r--src/devices/cpu/sm510/kb1013vk1-2.h15
-rw-r--r--src/devices/cpu/sm510/kb1013vk1-2core.cpp7
-rw-r--r--src/devices/cpu/sm510/sm500.h10
-rw-r--r--src/devices/cpu/sm510/sm500core.cpp14
-rw-r--r--src/devices/cpu/sm510/sm510.h35
-rw-r--r--src/devices/cpu/sm510/sm510core.cpp7
-rw-r--r--src/devices/cpu/sm510/sm511core.cpp21
-rw-r--r--src/devices/cpu/sm510/sm590.h8
-rw-r--r--src/devices/cpu/sm510/sm590core.cpp32
-rw-r--r--src/devices/cpu/sm8500/sm8500.cpp12
-rw-r--r--src/devices/cpu/sm8500/sm8500.h53
-rw-r--r--src/devices/cpu/sparc/mb86901.cpp8
-rw-r--r--src/devices/cpu/sparc/sparc.h8
-rw-r--r--src/devices/cpu/spc700/spc700.cpp10
-rw-r--r--src/devices/cpu/spc700/spc700.h14
-rw-r--r--src/devices/cpu/ssem/ssem.cpp16
-rw-r--r--src/devices/cpu/ssem/ssem.h11
-rw-r--r--src/devices/cpu/ssp1601/ssp1601.cpp7
-rw-r--r--src/devices/cpu/ssp1601/ssp1601.h37
-rw-r--r--src/devices/cpu/superfx/superfx.cpp10
-rw-r--r--src/devices/cpu/superfx/superfx.h12
-rw-r--r--src/devices/cpu/t11/t11.cpp20
-rw-r--r--src/devices/cpu/t11/t11.h19
-rw-r--r--src/devices/cpu/tlcs870/tlcs870.cpp10
-rw-r--r--src/devices/cpu/tlcs870/tlcs870.h22
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.cpp28
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.h26
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.cpp14
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.h107
-rw-r--r--src/devices/cpu/tms1000/tms0270.cpp13
-rw-r--r--src/devices/cpu/tms1000/tms0270.h16
-rw-r--r--src/devices/cpu/tms1000/tms0970.cpp42
-rw-r--r--src/devices/cpu/tms1000/tms0970.h21
-rw-r--r--src/devices/cpu/tms1000/tms0980.cpp35
-rw-r--r--src/devices/cpu/tms1000/tms0980.h15
-rw-r--r--src/devices/cpu/tms1000/tms1000.cpp67
-rw-r--r--src/devices/cpu/tms1000/tms1000.h27
-rw-r--r--src/devices/cpu/tms1000/tms1100.cpp35
-rw-r--r--src/devices/cpu/tms1000/tms1100.h20
-rw-r--r--src/devices/cpu/tms1000/tms1400.cpp46
-rw-r--r--src/devices/cpu/tms1000/tms1400.h24
-rw-r--r--src/devices/cpu/tms1000/tms1k_base.cpp21
-rw-r--r--src/devices/cpu/tms1000/tms1k_base.h40
-rw-r--r--src/devices/cpu/tms1000/tp0320.cpp11
-rw-r--r--src/devices/cpu/tms1000/tp0320.h10
-rw-r--r--src/devices/cpu/tms32010/tms32010.cpp25
-rw-r--r--src/devices/cpu/tms32010/tms32010.h23
-rw-r--r--src/devices/cpu/tms32025/tms32025.cpp28
-rw-r--r--src/devices/cpu/tms32025/tms32025.h19
-rw-r--r--src/devices/cpu/tms32031/tms32031.cpp14
-rw-r--r--src/devices/cpu/tms32031/tms32031.h40
-rw-r--r--src/devices/cpu/tms32051/tms32051.cpp18
-rw-r--r--src/devices/cpu/tms32051/tms32051.h16
-rw-r--r--src/devices/cpu/tms32082/tms32082.cpp10
-rw-r--r--src/devices/cpu/tms32082/tms32082.h12
-rw-r--r--src/devices/cpu/tms34010/34010ops.h8
-rw-r--r--src/devices/cpu/tms34010/tms34010.cpp81
-rw-r--r--src/devices/cpu/tms34010/tms34010.h210
-rw-r--r--src/devices/cpu/tms57002/tms57002.cpp16
-rw-r--r--src/devices/cpu/tms57002/tms57002.h10
-rw-r--r--src/devices/cpu/tms7000/tms7000.cpp55
-rw-r--r--src/devices/cpu/tms7000/tms7000.h62
-rw-r--r--src/devices/cpu/tms9900/ti990_10.cpp4
-rw-r--r--src/devices/cpu/tms9900/ti990_10.h11
-rw-r--r--src/devices/cpu/tms9900/tms9900.cpp8
-rw-r--r--src/devices/cpu/tms9900/tms9900.h18
-rw-r--r--src/devices/cpu/tms9900/tms9980a.cpp4
-rw-r--r--src/devices/cpu/tms9900/tms9980a.h10
-rw-r--r--src/devices/cpu/tms9900/tms9995.cpp10
-rw-r--r--src/devices/cpu/tms9900/tms9995.h17
-rw-r--r--src/devices/cpu/ucom4/ucom4.cpp57
-rw-r--r--src/devices/cpu/ucom4/ucom4.h67
-rw-r--r--src/devices/cpu/unsp/unsp.cpp9
-rw-r--r--src/devices/cpu/unsp/unsp.h11
-rw-r--r--src/devices/cpu/upd7725/upd7725.cpp12
-rw-r--r--src/devices/cpu/upd7725/upd7725.h44
-rw-r--r--src/devices/cpu/upd7810/upd7810.cpp32
-rw-r--r--src/devices/cpu/upd7810/upd7810.h77
-rw-r--r--src/devices/cpu/v30mz/v30mz.cpp6
-rw-r--r--src/devices/cpu/v30mz/v30mz.h10
-rw-r--r--src/devices/cpu/v60/v60.cpp31
-rw-r--r--src/devices/cpu/v60/v60.h16
-rw-r--r--src/devices/cpu/v810/v810.cpp6
-rw-r--r--src/devices/cpu/v810/v810.h12
-rw-r--r--src/devices/cpu/z180/z180.cpp309
-rw-r--r--src/devices/cpu/z180/z180.h12
-rw-r--r--src/devices/cpu/z180/z180op.hxx10
-rw-r--r--src/devices/cpu/z180/z180ops.h14
-rw-r--r--src/devices/cpu/z8/z8.cpp26
-rw-r--r--src/devices/cpu/z8/z8.h36
-rw-r--r--src/devices/cpu/z80/kl5c80a12.cpp4
-rw-r--r--src/devices/cpu/z80/kl5c80a12.h11
-rw-r--r--src/devices/cpu/z80/tmpz84c011.cpp4
-rw-r--r--src/devices/cpu/z80/tmpz84c011.h10
-rw-r--r--src/devices/cpu/z80/tmpz84c015.cpp4
-rw-r--r--src/devices/cpu/z80/tmpz84c015.h10
-rw-r--r--src/devices/cpu/z80/z80.cpp18
-rw-r--r--src/devices/cpu/z80/z80.h14
-rw-r--r--src/devices/cpu/z8000/8000dasm.cpp22
-rw-r--r--src/devices/cpu/z8000/z8000.cpp71
-rw-r--r--src/devices/cpu/z8000/z8000.h51
-rw-r--r--src/devices/cpu/z8000/z8000cpu.h27
-rw-r--r--src/devices/cpu/z8000/z8000ops.hxx30
-rw-r--r--src/devices/cpu/z8000/z8000tbl.hxx56
-rw-r--r--src/devices/imagedev/bitbngr.cpp4
-rw-r--r--src/devices/imagedev/bitbngr.h2
-rw-r--r--src/devices/imagedev/cassette.cpp4
-rw-r--r--src/devices/imagedev/cassette.h8
-rw-r--r--src/devices/imagedev/chd_cd.cpp15
-rw-r--r--src/devices/imagedev/chd_cd.h14
-rw-r--r--src/devices/imagedev/diablo.cpp7
-rw-r--r--src/devices/imagedev/diablo.h15
-rw-r--r--src/devices/imagedev/flopdrv.cpp37
-rw-r--r--src/devices/imagedev/flopdrv.h13
-rw-r--r--src/devices/imagedev/floppy.cpp190
-rw-r--r--src/devices/imagedev/floppy.h122
-rw-r--r--src/devices/imagedev/harddriv.cpp17
-rw-r--r--src/devices/imagedev/harddriv.h10
-rw-r--r--src/devices/imagedev/mfmhd.cpp24
-rw-r--r--src/devices/imagedev/mfmhd.h21
-rw-r--r--src/devices/imagedev/midiin.cpp4
-rw-r--r--src/devices/imagedev/midiin.h10
-rw-r--r--src/devices/imagedev/midiout.cpp4
-rw-r--r--src/devices/imagedev/midiout.h8
-rw-r--r--src/devices/imagedev/printer.cpp4
-rw-r--r--src/devices/imagedev/printer.h10
-rw-r--r--src/devices/imagedev/snapquik.cpp18
-rw-r--r--src/devices/imagedev/snapquik.h14
-rw-r--r--src/devices/machine/40105.cpp4
-rw-r--r--src/devices/machine/40105.h17
-rw-r--r--src/devices/machine/53c7xx.cpp49
-rw-r--r--src/devices/machine/53c7xx.h64
-rw-r--r--src/devices/machine/53c810.cpp8
-rw-r--r--src/devices/machine/53c810.h40
-rw-r--r--src/devices/machine/64h156.cpp42
-rw-r--r--src/devices/machine/64h156.h19
-rw-r--r--src/devices/machine/6522via.cpp4
-rw-r--r--src/devices/machine/6522via.h78
-rw-r--r--src/devices/machine/6525tpi.cpp4
-rw-r--r--src/devices/machine/6525tpi.h31
-rw-r--r--src/devices/machine/6532riot.cpp4
-rw-r--r--src/devices/machine/6532riot.h2
-rw-r--r--src/devices/machine/68153bim.cpp46
-rw-r--r--src/devices/machine/68153bim.h33
-rw-r--r--src/devices/machine/6821pia.cpp7
-rw-r--r--src/devices/machine/6821pia.h13
-rw-r--r--src/devices/machine/68230pit.cpp53
-rw-r--r--src/devices/machine/68230pit.h106
-rw-r--r--src/devices/machine/68307.cpp145
-rw-r--r--src/devices/machine/68307.h131
-rw-r--r--src/devices/machine/68307bus.cpp150
-rw-r--r--src/devices/machine/68307bus.h20
-rw-r--r--src/devices/machine/68307sim.cpp294
-rw-r--r--src/devices/machine/68307sim.h59
-rw-r--r--src/devices/machine/68307tmu.cpp198
-rw-r--r--src/devices/machine/68307tmu.h41
-rw-r--r--src/devices/machine/68340.cpp77
-rw-r--r--src/devices/machine/68340.h55
-rw-r--r--src/devices/machine/68340dma.cpp32
-rw-r--r--src/devices/machine/68340dma.h11
-rw-r--r--src/devices/machine/68340ser.cpp31
-rw-r--r--src/devices/machine/68340ser.h11
-rw-r--r--src/devices/machine/68340sim.cpp453
-rw-r--r--src/devices/machine/68340sim.h56
-rw-r--r--src/devices/machine/68340tmu.cpp32
-rw-r--r--src/devices/machine/68340tmu.h11
-rw-r--r--src/devices/machine/6840ptm.cpp54
-rw-r--r--src/devices/machine/6840ptm.h16
-rw-r--r--src/devices/machine/6850acia.cpp68
-rw-r--r--src/devices/machine/6850acia.h21
-rw-r--r--src/devices/machine/68561mpcc.cpp28
-rw-r--r--src/devices/machine/68561mpcc.h49
-rw-r--r--src/devices/machine/7200fifo.cpp4
-rw-r--r--src/devices/machine/7200fifo.h17
-rw-r--r--src/devices/machine/7400.cpp4
-rw-r--r--src/devices/machine/7400.h19
-rw-r--r--src/devices/machine/7404.cpp4
-rw-r--r--src/devices/machine/7404.h23
-rw-r--r--src/devices/machine/74123.cpp20
-rw-r--r--src/devices/machine/74123.h13
-rw-r--r--src/devices/machine/74145.cpp4
-rw-r--r--src/devices/machine/74145.h32
-rw-r--r--src/devices/machine/74148.cpp19
-rw-r--r--src/devices/machine/74148.h10
-rw-r--r--src/devices/machine/74153.cpp7
-rw-r--r--src/devices/machine/74153.h14
-rw-r--r--src/devices/machine/74157.cpp12
-rw-r--r--src/devices/machine/74157.h18
-rw-r--r--src/devices/machine/74161.cpp20
-rw-r--r--src/devices/machine/74161.h35
-rw-r--r--src/devices/machine/74175.cpp12
-rw-r--r--src/devices/machine/74175.h37
-rw-r--r--src/devices/machine/74181.cpp4
-rw-r--r--src/devices/machine/74181.h11
-rw-r--r--src/devices/machine/7474.cpp4
-rw-r--r--src/devices/machine/7474.h16
-rw-r--r--src/devices/machine/8042kbdc.cpp4
-rw-r--r--src/devices/machine/8042kbdc.h36
-rw-r--r--src/devices/machine/82s129.cpp12
-rw-r--r--src/devices/machine/82s129.h26
-rw-r--r--src/devices/machine/8364_paula.cpp15
-rw-r--r--src/devices/machine/8364_paula.h19
-rw-r--r--src/devices/machine/8530scc.cpp5
-rw-r--r--src/devices/machine/8530scc.h10
-rw-r--r--src/devices/machine/aakart.cpp8
-rw-r--r--src/devices/machine/aakart.h40
-rw-r--r--src/devices/machine/adc0808.cpp7
-rw-r--r--src/devices/machine/adc0808.h79
-rw-r--r--src/devices/machine/adc083x.cpp28
-rw-r--r--src/devices/machine/adc083x.h33
-rw-r--r--src/devices/machine/adc1038.cpp5
-rw-r--r--src/devices/machine/adc1038.h22
-rw-r--r--src/devices/machine/adc1213x.cpp19
-rw-r--r--src/devices/machine/adc1213x.h28
-rw-r--r--src/devices/machine/aicartc.cpp8
-rw-r--r--src/devices/machine/aicartc.h25
-rw-r--r--src/devices/machine/akiko.cpp4
-rw-r--r--src/devices/machine/akiko.h37
-rw-r--r--src/devices/machine/am2847.cpp16
-rw-r--r--src/devices/machine/am2847.h18
-rw-r--r--src/devices/machine/am53cf96.cpp6
-rw-r--r--src/devices/machine/am53cf96.h56
-rw-r--r--src/devices/machine/am9517a.cpp201
-rw-r--r--src/devices/machine/am9517a.h86
-rw-r--r--src/devices/machine/amigafdc.cpp91
-rw-r--r--src/devices/machine/amigafdc.h18
-rw-r--r--src/devices/machine/appldriv.cpp8
-rw-r--r--src/devices/machine/appldriv.h20
-rw-r--r--src/devices/machine/applefdc.cpp12
-rw-r--r--src/devices/machine/applefdc.h14
-rw-r--r--src/devices/machine/at28c16.cpp18
-rw-r--r--src/devices/machine/at28c16.h17
-rw-r--r--src/devices/machine/at29x.cpp33
-rw-r--r--src/devices/machine/at29x.h51
-rw-r--r--src/devices/machine/at45dbxx.cpp22
-rw-r--r--src/devices/machine/at45dbxx.h22
-rw-r--r--src/devices/machine/at_keybc.cpp5
-rw-r--r--src/devices/machine/at_keybc.h23
-rw-r--r--src/devices/machine/atadev.cpp5
-rw-r--r--src/devices/machine/atadev.h17
-rw-r--r--src/devices/machine/ataflash.cpp20
-rw-r--r--src/devices/machine/ataflash.h23
-rw-r--r--src/devices/machine/atahle.cpp7
-rw-r--r--src/devices/machine/atahle.h14
-rw-r--r--src/devices/machine/ataintf.cpp30
-rw-r--r--src/devices/machine/ataintf.h27
-rw-r--r--src/devices/machine/atapicdr.cpp12
-rw-r--r--src/devices/machine/atapicdr.h19
-rw-r--r--src/devices/machine/atapihle.cpp4
-rw-r--r--src/devices/machine/atapihle.h17
-rw-r--r--src/devices/machine/autoconfig.h8
-rw-r--r--src/devices/machine/ay31015.cpp12
-rw-r--r--src/devices/machine/ay31015.h52
-rw-r--r--src/devices/machine/bankdev.cpp4
-rw-r--r--src/devices/machine/bankdev.h12
-rw-r--r--src/devices/machine/bcreader.cpp4
-rw-r--r--src/devices/machine/bcreader.h8
-rw-r--r--src/devices/machine/buffer.cpp6
-rw-r--r--src/devices/machine/buffer.h8
-rw-r--r--src/devices/machine/cdp1852.cpp7
-rw-r--r--src/devices/machine/cdp1852.h22
-rw-r--r--src/devices/machine/cdp1871.cpp4
-rw-r--r--src/devices/machine/cdp1871.h38
-rw-r--r--src/devices/machine/cdp1879.cpp4
-rw-r--r--src/devices/machine/cdp1879.h10
-rw-r--r--src/devices/machine/clock.cpp4
-rw-r--r--src/devices/machine/clock.h10
-rw-r--r--src/devices/machine/com8116.cpp17
-rw-r--r--src/devices/machine/com8116.h18
-rw-r--r--src/devices/machine/corvushd.cpp209
-rw-r--r--src/devices/machine/corvushd.h177
-rw-r--r--src/devices/machine/cr511b.cpp4
-rw-r--r--src/devices/machine/cr511b.h34
-rw-r--r--src/devices/machine/cr589.cpp8
-rw-r--r--src/devices/machine/cr589.h11
-rw-r--r--src/devices/machine/cs4031.cpp84
-rw-r--r--src/devices/machine/cs4031.h37
-rw-r--r--src/devices/machine/cs8221.cpp25
-rw-r--r--src/devices/machine/cs8221.h11
-rw-r--r--src/devices/machine/cxd1095.cpp8
-rw-r--r--src/devices/machine/cxd1095.h14
-rw-r--r--src/devices/machine/diablo_hd.cpp193
-rw-r--r--src/devices/machine/diablo_hd.h19
-rw-r--r--src/devices/machine/dm9334.cpp4
-rw-r--r--src/devices/machine/dm9334.h29
-rw-r--r--src/devices/machine/dmac.cpp134
-rw-r--r--src/devices/machine/dmac.h70
-rw-r--r--src/devices/machine/dp8390.cpp34
-rw-r--r--src/devices/machine/dp8390.h40
-rw-r--r--src/devices/machine/ds1204.cpp8
-rw-r--r--src/devices/machine/ds1204.h13
-rw-r--r--src/devices/machine/ds1205.cpp8
-rw-r--r--src/devices/machine/ds1205.h13
-rw-r--r--src/devices/machine/ds128x.cpp4
-rw-r--r--src/devices/machine/ds128x.h8
-rw-r--r--src/devices/machine/ds1302.cpp27
-rw-r--r--src/devices/machine/ds1302.h12
-rw-r--r--src/devices/machine/ds1315.cpp4
-rw-r--r--src/devices/machine/ds1315.h28
-rw-r--r--src/devices/machine/ds1386.cpp12
-rw-r--r--src/devices/machine/ds1386.h32
-rw-r--r--src/devices/machine/ds2401.cpp6
-rw-r--r--src/devices/machine/ds2401.h10
-rw-r--r--src/devices/machine/ds2404.cpp4
-rw-r--r--src/devices/machine/ds2404.h15
-rw-r--r--src/devices/machine/ds75160a.cpp4
-rw-r--r--src/devices/machine/ds75160a.h18
-rw-r--r--src/devices/machine/ds75161a.cpp4
-rw-r--r--src/devices/machine/ds75161a.h44
-rw-r--r--src/devices/machine/e0516.cpp8
-rw-r--r--src/devices/machine/e0516.h15
-rw-r--r--src/devices/machine/e05a03.cpp4
-rw-r--r--src/devices/machine/e05a03.h22
-rw-r--r--src/devices/machine/e05a30.cpp12
-rw-r--r--src/devices/machine/e05a30.h29
-rw-r--r--src/devices/machine/eeprom.cpp14
-rw-r--r--src/devices/machine/eeprom.h16
-rw-r--r--src/devices/machine/eeprompar.cpp13
-rw-r--r--src/devices/machine/eeprompar.h22
-rw-r--r--src/devices/machine/eepromser.cpp174
-rw-r--r--src/devices/machine/eepromser.h40
-rw-r--r--src/devices/machine/er2055.cpp4
-rw-r--r--src/devices/machine/er2055.h11
-rw-r--r--src/devices/machine/f3853.cpp15
-rw-r--r--src/devices/machine/f3853.h25
-rw-r--r--src/devices/machine/fdc37c665gt.cpp4
-rw-r--r--src/devices/machine/fdc37c665gt.h8
-rw-r--r--src/devices/machine/fdc_pll.h12
-rw-r--r--src/devices/machine/fga002.cpp28
-rw-r--r--src/devices/machine/fga002.h44
-rw-r--r--src/devices/machine/gayle.cpp4
-rw-r--r--src/devices/machine/gayle.h30
-rw-r--r--src/devices/machine/gen_latch.cpp22
-rw-r--r--src/devices/machine/gen_latch.h30
-rw-r--r--src/devices/machine/genpc.cpp31
-rw-r--r--src/devices/machine/genpc.h20
-rw-r--r--src/devices/machine/gt64xxx.cpp309
-rw-r--r--src/devices/machine/gt64xxx.h170
-rw-r--r--src/devices/machine/hd63450.cpp22
-rw-r--r--src/devices/machine/hd63450.h77
-rw-r--r--src/devices/machine/hd64610.cpp29
-rw-r--r--src/devices/machine/hd64610.h15
-rw-r--r--src/devices/machine/hdc92x4.cpp41
-rw-r--r--src/devices/machine/hdc92x4.h80
-rw-r--r--src/devices/machine/hp_taco.cpp86
-rw-r--r--src/devices/machine/hp_taco.h47
-rw-r--r--src/devices/machine/i2cmem.cpp8
-rw-r--r--src/devices/machine/i2cmem.h10
-rw-r--r--src/devices/machine/i6300esb.cpp8
-rw-r--r--src/devices/machine/i6300esb.h10
-rw-r--r--src/devices/machine/i80130.cpp4
-rw-r--r--src/devices/machine/i80130.h24
-rw-r--r--src/devices/machine/i8155.cpp4
-rw-r--r--src/devices/machine/i8155.h24
-rw-r--r--src/devices/machine/i8212.cpp27
-rw-r--r--src/devices/machine/i8212.h38
-rw-r--r--src/devices/machine/i8214.cpp27
-rw-r--r--src/devices/machine/i8214.h19
-rw-r--r--src/devices/machine/i82371sb.cpp4
-rw-r--r--src/devices/machine/i82371sb.h12
-rw-r--r--src/devices/machine/i8243.cpp9
-rw-r--r--src/devices/machine/i8243.h14
-rw-r--r--src/devices/machine/i82439hx.cpp4
-rw-r--r--src/devices/machine/i82439hx.h10
-rw-r--r--src/devices/machine/i82439tx.cpp4
-rw-r--r--src/devices/machine/i82439tx.h10
-rw-r--r--src/devices/machine/i8251.cpp29
-rw-r--r--src/devices/machine/i8251.h37
-rw-r--r--src/devices/machine/i82541.cpp4
-rw-r--r--src/devices/machine/i82541.h8
-rw-r--r--src/devices/machine/i8255.cpp63
-rw-r--r--src/devices/machine/i8255.h25
-rw-r--r--src/devices/machine/i8257.cpp30
-rw-r--r--src/devices/machine/i8257.h47
-rw-r--r--src/devices/machine/i8271.cpp4
-rw-r--r--src/devices/machine/i8271.h19
-rw-r--r--src/devices/machine/i8279.cpp13
-rw-r--r--src/devices/machine/i8279.h26
-rw-r--r--src/devices/machine/i82875p.cpp12
-rw-r--r--src/devices/machine/i82875p.h16
-rw-r--r--src/devices/machine/i8355.cpp16
-rw-r--r--src/devices/machine/i8355.h20
-rw-r--r--src/devices/machine/idectrl.cpp41
-rw-r--r--src/devices/machine/idectrl.h62
-rw-r--r--src/devices/machine/idehd.cpp13
-rw-r--r--src/devices/machine/idehd.h21
-rw-r--r--src/devices/machine/ie15.cpp48
-rw-r--r--src/devices/machine/ie15.h13
-rw-r--r--src/devices/machine/ie15_kbd.cpp12
-rw-r--r--src/devices/machine/ie15_kbd.h70
-rw-r--r--src/devices/machine/im6402.cpp34
-rw-r--r--src/devices/machine/im6402.h23
-rw-r--r--src/devices/machine/input_merger.cpp13
-rw-r--r--src/devices/machine/input_merger.h35
-rw-r--r--src/devices/machine/ins8154.cpp81
-rw-r--r--src/devices/machine/ins8154.h20
-rw-r--r--src/devices/machine/ins8250.cpp56
-rw-r--r--src/devices/machine/ins8250.h54
-rw-r--r--src/devices/machine/intelfsh.cpp140
-rw-r--r--src/devices/machine/intelfsh.h93
-rw-r--r--src/devices/machine/jvsdev.cpp4
-rw-r--r--src/devices/machine/jvsdev.h12
-rw-r--r--src/devices/machine/jvshost.cpp4
-rw-r--r--src/devices/machine/jvshost.h13
-rw-r--r--src/devices/machine/k033906.cpp4
-rw-r--r--src/devices/machine/k033906.h11
-rw-r--r--src/devices/machine/k053252.cpp4
-rw-r--r--src/devices/machine/k053252.h12
-rw-r--r--src/devices/machine/k054321.cpp4
-rw-r--r--src/devices/machine/k054321.h10
-rw-r--r--src/devices/machine/k056230.cpp4
-rw-r--r--src/devices/machine/k056230.h12
-rw-r--r--src/devices/machine/kb3600.cpp13
-rw-r--r--src/devices/machine/kb3600.h50
-rw-r--r--src/devices/machine/keyboard.cpp43
-rw-r--r--src/devices/machine/keyboard.h70
-rw-r--r--src/devices/machine/keyboard.ipp6
-rw-r--r--src/devices/machine/kr2376.cpp8
-rw-r--r--src/devices/machine/kr2376.h47
-rw-r--r--src/devices/machine/laserdsc.cpp20
-rw-r--r--src/devices/machine/laserdsc.h37
-rw-r--r--src/devices/machine/latch.cpp112
-rw-r--r--src/devices/machine/latch.h59
-rw-r--r--src/devices/machine/latch8.cpp41
-rw-r--r--src/devices/machine/latch8.h77
-rw-r--r--src/devices/machine/lc89510.cpp6
-rw-r--r--src/devices/machine/lc89510.h10
-rw-r--r--src/devices/machine/ldp1000.cpp6
-rw-r--r--src/devices/machine/ldp1000.h20
-rw-r--r--src/devices/machine/ldp1450.cpp6
-rw-r--r--src/devices/machine/ldp1450.h22
-rw-r--r--src/devices/machine/ldpr8210.cpp23
-rw-r--r--src/devices/machine/ldpr8210.h47
-rw-r--r--src/devices/machine/ldstub.cpp16
-rw-r--r--src/devices/machine/ldstub.h18
-rw-r--r--src/devices/machine/ldv1000.cpp4
-rw-r--r--src/devices/machine/ldv1000.h13
-rw-r--r--src/devices/machine/ldvp931.cpp4
-rw-r--r--src/devices/machine/ldvp931.h11
-rw-r--r--src/devices/machine/legscsi.cpp20
-rw-r--r--src/devices/machine/legscsi.h12
-rw-r--r--src/devices/machine/lh5810.cpp38
-rw-r--r--src/devices/machine/lh5810.h45
-rw-r--r--src/devices/machine/linflash.cpp28
-rw-r--r--src/devices/machine/linflash.h22
-rw-r--r--src/devices/machine/lpc-acpi.cpp4
-rw-r--r--src/devices/machine/lpc-acpi.h10
-rw-r--r--src/devices/machine/lpc-pit.cpp4
-rw-r--r--src/devices/machine/lpc-pit.h10
-rw-r--r--src/devices/machine/lpc-rtc.cpp4
-rw-r--r--src/devices/machine/lpc-rtc.h10
-rw-r--r--src/devices/machine/lpc.cpp9
-rw-r--r--src/devices/machine/lpc.h13
-rw-r--r--src/devices/machine/lpci.cpp22
-rw-r--r--src/devices/machine/lpci.h10
-rw-r--r--src/devices/machine/m6m80011ap.cpp12
-rw-r--r--src/devices/machine/m6m80011ap.h44
-rw-r--r--src/devices/machine/mb14241.cpp4
-rw-r--r--src/devices/machine/mb14241.h14
-rw-r--r--src/devices/machine/mb3773.cpp4
-rw-r--r--src/devices/machine/mb3773.h13
-rw-r--r--src/devices/machine/mb8421.cpp4
-rw-r--r--src/devices/machine/mb8421.h14
-rw-r--r--src/devices/machine/mb87078.cpp4
-rw-r--r--src/devices/machine/mb87078.h15
-rw-r--r--src/devices/machine/mb8795.cpp10
-rw-r--r--src/devices/machine/mb8795.h15
-rw-r--r--src/devices/machine/mb89352.cpp43
-rw-r--r--src/devices/machine/mb89352.h51
-rw-r--r--src/devices/machine/mb89363b.cpp5
-rw-r--r--src/devices/machine/mb89363b.h44
-rw-r--r--src/devices/machine/mb89371.cpp6
-rw-r--r--src/devices/machine/mb89371.h11
-rw-r--r--src/devices/machine/mc146818.cpp33
-rw-r--r--src/devices/machine/mc146818.h20
-rw-r--r--src/devices/machine/mc2661.cpp24
-rw-r--r--src/devices/machine/mc2661.h28
-rw-r--r--src/devices/machine/mc68328.cpp376
-rw-r--r--src/devices/machine/mc68328.h761
-rw-r--r--src/devices/machine/mc6843.cpp92
-rw-r--r--src/devices/machine/mc6843.h13
-rw-r--r--src/devices/machine/mc6846.cpp59
-rw-r--r--src/devices/machine/mc6846.h23
-rw-r--r--src/devices/machine/mc6852.cpp36
-rw-r--r--src/devices/machine/mc6852.h20
-rw-r--r--src/devices/machine/mc6854.cpp115
-rw-r--r--src/devices/machine/mc6854.h40
-rw-r--r--src/devices/machine/mc68681.cpp41
-rw-r--r--src/devices/machine/mc68681.h42
-rw-r--r--src/devices/machine/mc68901.cpp151
-rw-r--r--src/devices/machine/mc68901.h30
-rw-r--r--src/devices/machine/mccs1850.cpp38
-rw-r--r--src/devices/machine/mccs1850.h18
-rw-r--r--src/devices/machine/mcf5206e.cpp4
-rw-r--r--src/devices/machine/mcf5206e.h63
-rw-r--r--src/devices/machine/microtch.cpp19
-rw-r--r--src/devices/machine/microtch.h18
-rw-r--r--src/devices/machine/mm5740.cpp4
-rw-r--r--src/devices/machine/mm5740.h85
-rw-r--r--src/devices/machine/mm58167.cpp4
-rw-r--r--src/devices/machine/mm58167.h12
-rw-r--r--src/devices/machine/mm58274c.cpp8
-rw-r--r--src/devices/machine/mm58274c.h10
-rw-r--r--src/devices/machine/mm74c922.cpp21
-rw-r--r--src/devices/machine/mm74c922.h24
-rw-r--r--src/devices/machine/mos6526.cpp32
-rw-r--r--src/devices/machine/mos6526.h39
-rw-r--r--src/devices/machine/mos6529.cpp29
-rw-r--r--src/devices/machine/mos6529.h24
-rw-r--r--src/devices/machine/mos6530.cpp4
-rw-r--r--src/devices/machine/mos6530.h44
-rw-r--r--src/devices/machine/mos6530n.cpp345
-rw-r--r--src/devices/machine/mos6530n.h197
-rw-r--r--src/devices/machine/mos6551.cpp32
-rw-r--r--src/devices/machine/mos6551.h20
-rw-r--r--src/devices/machine/mos6702.cpp13
-rw-r--r--src/devices/machine/mos6702.h17
-rw-r--r--src/devices/machine/mos8706.cpp13
-rw-r--r--src/devices/machine/mos8706.h15
-rw-r--r--src/devices/machine/mos8722.cpp14
-rw-r--r--src/devices/machine/mos8722.h22
-rw-r--r--src/devices/machine/mos8726.cpp13
-rw-r--r--src/devices/machine/mos8726.h16
-rw-r--r--src/devices/machine/mpu401.cpp4
-rw-r--r--src/devices/machine/mpu401.h28
-rw-r--r--src/devices/machine/msm5832.cpp30
-rw-r--r--src/devices/machine/msm5832.h18
-rw-r--r--src/devices/machine/msm58321.cpp35
-rw-r--r--src/devices/machine/msm58321.h16
-rw-r--r--src/devices/machine/msm6242.cpp61
-rw-r--r--src/devices/machine/msm6242.h36
-rw-r--r--src/devices/machine/msm6253.cpp16
-rw-r--r--src/devices/machine/msm6253.h32
-rw-r--r--src/devices/machine/ncr5380.cpp26
-rw-r--r--src/devices/machine/ncr5380.h12
-rw-r--r--src/devices/machine/ncr5380n.cpp13
-rw-r--r--src/devices/machine/ncr5380n.h14
-rw-r--r--src/devices/machine/ncr5390.cpp11
-rw-r--r--src/devices/machine/ncr5390.h14
-rw-r--r--src/devices/machine/ncr539x.cpp132
-rw-r--r--src/devices/machine/ncr539x.h20
-rw-r--r--src/devices/machine/netlist.cpp611
-rw-r--r--src/devices/machine/netlist.h259
-rw-r--r--src/devices/machine/nmc9306.cpp33
-rw-r--r--src/devices/machine/nmc9306.h22
-rw-r--r--src/devices/machine/nsc810.cpp90
-rw-r--r--src/devices/machine/nsc810.h31
-rw-r--r--src/devices/machine/nscsi_bus.cpp20
-rw-r--r--src/devices/machine/nscsi_bus.h34
-rw-r--r--src/devices/machine/nscsi_cb.cpp4
-rw-r--r--src/devices/machine/nscsi_cb.h30
-rw-r--r--src/devices/machine/nscsi_cd.cpp4
-rw-r--r--src/devices/machine/nscsi_cd.h10
-rw-r--r--src/devices/machine/nscsi_hd.cpp8
-rw-r--r--src/devices/machine/nscsi_hd.h13
-rw-r--r--src/devices/machine/nscsi_s1410.cpp4
-rw-r--r--src/devices/machine/nscsi_s1410.h10
-rw-r--r--src/devices/machine/nvram.cpp8
-rw-r--r--src/devices/machine/nvram.h28
-rw-r--r--src/devices/machine/pc_fdc.cpp12
-rw-r--r--src/devices/machine/pc_fdc.h24
-rw-r--r--src/devices/machine/pc_lpt.cpp4
-rw-r--r--src/devices/machine/pc_lpt.h12
-rw-r--r--src/devices/machine/pccard.cpp4
-rw-r--r--src/devices/machine/pccard.h13
-rw-r--r--src/devices/machine/pcf8593.cpp8
-rw-r--r--src/devices/machine/pcf8593.h10
-rw-r--r--src/devices/machine/pci-apic.cpp4
-rw-r--r--src/devices/machine/pci-apic.h10
-rw-r--r--src/devices/machine/pci-ide.cpp4
-rw-r--r--src/devices/machine/pci-ide.h13
-rw-r--r--src/devices/machine/pci-sata.cpp4
-rw-r--r--src/devices/machine/pci-sata.h10
-rw-r--r--src/devices/machine/pci-smbus.cpp4
-rw-r--r--src/devices/machine/pci-smbus.h8
-rw-r--r--src/devices/machine/pci-usb.cpp12
-rw-r--r--src/devices/machine/pci-usb.h14
-rw-r--r--src/devices/machine/pci.cpp37
-rw-r--r--src/devices/machine/pci.h67
-rw-r--r--src/devices/machine/pci9050.cpp4
-rw-r--r--src/devices/machine/pci9050.h18
-rw-r--r--src/devices/machine/pckeybrd.cpp81
-rw-r--r--src/devices/machine/pckeybrd.h49
-rw-r--r--src/devices/machine/pdc.cpp4
-rw-r--r--src/devices/machine/pdc.h17
-rw-r--r--src/devices/machine/phi.cpp21
-rw-r--r--src/devices/machine/phi.h25
-rw-r--r--src/devices/machine/pic8259.cpp84
-rw-r--r--src/devices/machine/pic8259.h18
-rw-r--r--src/devices/machine/pit8253.cpp19
-rw-r--r--src/devices/machine/pit8253.h22
-rw-r--r--src/devices/machine/pla.cpp23
-rw-r--r--src/devices/machine/pla.h67
-rw-r--r--src/devices/machine/r10696.cpp17
-rw-r--r--src/devices/machine/r10696.h20
-rw-r--r--src/devices/machine/r10788.cpp55
-rw-r--r--src/devices/machine/r10788.h18
-rw-r--r--src/devices/machine/ra17xx.cpp21
-rw-r--r--src/devices/machine/ra17xx.h29
-rw-r--r--src/devices/machine/ram.cpp8
-rw-r--r--src/devices/machine/ram.h17
-rw-r--r--src/devices/machine/rescap.h6
-rw-r--r--src/devices/machine/rf5c296.cpp4
-rw-r--r--src/devices/machine/rf5c296.h10
-rw-r--r--src/devices/machine/roc10937.cpp66
-rw-r--r--src/devices/machine/roc10937.h65
-rw-r--r--src/devices/machine/rp5c01.cpp4
-rw-r--r--src/devices/machine/rp5c01.h14
-rw-r--r--src/devices/machine/rp5c15.cpp38
-rw-r--r--src/devices/machine/rp5c15.h16
-rw-r--r--src/devices/machine/rp5h01.cpp4
-rw-r--r--src/devices/machine/rp5h01.h20
-rw-r--r--src/devices/machine/rtc4543.cpp80
-rw-r--r--src/devices/machine/rtc4543.h29
-rw-r--r--src/devices/machine/rtc65271.cpp8
-rw-r--r--src/devices/machine/rtc65271.h30
-rw-r--r--src/devices/machine/rtc9701.cpp18
-rw-r--r--src/devices/machine/rtc9701.h59
-rw-r--r--src/devices/machine/s2636.cpp6
-rw-r--r--src/devices/machine/s2636.h27
-rw-r--r--src/devices/machine/s3520cf.cpp7
-rw-r--r--src/devices/machine/s3520cf.h47
-rw-r--r--src/devices/machine/s3c2400.cpp170
-rw-r--r--src/devices/machine/s3c2400.h554
-rw-r--r--src/devices/machine/s3c2410.cpp236
-rw-r--r--src/devices/machine/s3c2410.h649
-rw-r--r--src/devices/machine/s3c2440.cpp241
-rw-r--r--src/devices/machine/s3c2440.h624
-rw-r--r--src/devices/machine/s3c24xx.cpp190
-rw-r--r--src/devices/machine/s3c24xx.h309
-rw-r--r--src/devices/machine/s3c24xx.hxx1661
-rw-r--r--src/devices/machine/s3c44b0.cpp206
-rw-r--r--src/devices/machine/s3c44b0.h845
-rw-r--r--src/devices/machine/scnxx562.cpp614
-rw-r--r--src/devices/machine/scnxx562.h100
-rw-r--r--src/devices/machine/serflash.cpp20
-rw-r--r--src/devices/machine/serflash.h43
-rw-r--r--src/devices/machine/smartmed.cpp73
-rw-r--r--src/devices/machine/smartmed.h231
-rw-r--r--src/devices/machine/smc91c9x.cpp14
-rw-r--r--src/devices/machine/smc91c9x.h43
-rw-r--r--src/devices/machine/sonydriv.cpp7
-rw-r--r--src/devices/machine/sonydriv.h23
-rw-r--r--src/devices/machine/spchrom.cpp4
-rw-r--r--src/devices/machine/spchrom.h11
-rw-r--r--src/devices/machine/steppers.cpp12
-rw-r--r--src/devices/machine/steppers.h37
-rw-r--r--src/devices/machine/strata.cpp9
-rw-r--r--src/devices/machine/strata.h14
-rw-r--r--src/devices/machine/t10mmc.h8
-rw-r--r--src/devices/machine/t10sbc.h8
-rw-r--r--src/devices/machine/t10spc.h10
-rw-r--r--src/devices/machine/tc009xlvc.cpp4
-rw-r--r--src/devices/machine/tc009xlvc.h33
-rw-r--r--src/devices/machine/terminal.cpp54
-rw-r--r--src/devices/machine/terminal.h39
-rw-r--r--src/devices/machine/timekpr.cpp28
-rw-r--r--src/devices/machine/timekpr.h34
-rw-r--r--src/devices/machine/tmc0430.cpp8
-rw-r--r--src/devices/machine/tmc0430.h20
-rw-r--r--src/devices/machine/tmp68301.cpp4
-rw-r--r--src/devices/machine/tmp68301.h39
-rw-r--r--src/devices/machine/tms1024.cpp21
-rw-r--r--src/devices/machine/tms1024.h57
-rw-r--r--src/devices/machine/tms5501.cpp4
-rw-r--r--src/devices/machine/tms5501.h19
-rw-r--r--src/devices/machine/tms6100.cpp22
-rw-r--r--src/devices/machine/tms6100.h18
-rw-r--r--src/devices/machine/tms9901.cpp275
-rw-r--r--src/devices/machine/tms9901.h141
-rw-r--r--src/devices/machine/tms9902.cpp102
-rw-r--r--src/devices/machine/tms9902.h90
-rw-r--r--src/devices/machine/upd1990a.cpp53
-rw-r--r--src/devices/machine/upd1990a.h26
-rw-r--r--src/devices/machine/upd4701.cpp7
-rw-r--r--src/devices/machine/upd4701.h15
-rw-r--r--src/devices/machine/upd4992.cpp7
-rw-r--r--src/devices/machine/upd4992.h24
-rw-r--r--src/devices/machine/upd7002.cpp4
-rw-r--r--src/devices/machine/upd7002.h28
-rw-r--r--src/devices/machine/upd71071.cpp534
-rw-r--r--src/devices/machine/upd71071.h147
-rw-r--r--src/devices/machine/upd765.cpp54
-rw-r--r--src/devices/machine/upd765.h53
-rw-r--r--src/devices/machine/v3021.cpp6
-rw-r--r--src/devices/machine/v3021.h33
-rw-r--r--src/devices/machine/vrc4373.cpp147
-rw-r--r--src/devices/machine/vrc4373.h76
-rw-r--r--src/devices/machine/vrc5074.cpp110
-rw-r--r--src/devices/machine/vrc5074.h123
-rw-r--r--src/devices/machine/vt82c496.cpp6
-rw-r--r--src/devices/machine/vt82c496.h11
-rw-r--r--src/devices/machine/vt83c461.cpp17
-rw-r--r--src/devices/machine/vt83c461.h14
-rw-r--r--src/devices/machine/watchdog.cpp10
-rw-r--r--src/devices/machine/watchdog.h10
-rw-r--r--src/devices/machine/wd11c00_17.cpp75
-rw-r--r--src/devices/machine/wd11c00_17.h34
-rw-r--r--src/devices/machine/wd2010.cpp105
-rw-r--r--src/devices/machine/wd2010.h41
-rw-r--r--src/devices/machine/wd33c93.cpp21
-rw-r--r--src/devices/machine/wd33c93.h97
-rw-r--r--src/devices/machine/wd7600.cpp34
-rw-r--r--src/devices/machine/wd7600.h28
-rw-r--r--src/devices/machine/wd_fdc.cpp320
-rw-r--r--src/devices/machine/wd_fdc.h198
-rw-r--r--src/devices/machine/wozfdc.cpp33
-rw-r--r--src/devices/machine/wozfdc.h62
-rw-r--r--src/devices/machine/x2212.cpp39
-rw-r--r--src/devices/machine/x2212.h20
-rw-r--r--src/devices/machine/x76f041.cpp4
-rw-r--r--src/devices/machine/x76f041.h10
-rw-r--r--src/devices/machine/x76f100.cpp4
-rw-r--r--src/devices/machine/x76f100.h17
-rw-r--r--src/devices/machine/ym2148.cpp6
-rw-r--r--src/devices/machine/ym2148.h22
-rw-r--r--src/devices/machine/z80ctc.cpp4
-rw-r--r--src/devices/machine/z80ctc.h18
-rw-r--r--src/devices/machine/z80dart.cpp293
-rw-r--r--src/devices/machine/z80dart.h127
-rw-r--r--src/devices/machine/z80dma.cpp147
-rw-r--r--src/devices/machine/z80dma.h23
-rw-r--r--src/devices/machine/z80pio.cpp5
-rw-r--r--src/devices/machine/z80pio.h25
-rw-r--r--src/devices/machine/z80scc.cpp118
-rw-r--r--src/devices/machine/z80scc.h120
-rw-r--r--src/devices/machine/z80sio.cpp84
-rw-r--r--src/devices/machine/z80sio.h215
-rw-r--r--src/devices/machine/z80sti.cpp122
-rw-r--r--src/devices/machine/z80sti.h28
-rw-r--r--src/devices/machine/z8536.cpp186
-rw-r--r--src/devices/machine/z8536.h26
-rw-r--r--src/devices/sound/2203intf.cpp73
-rw-r--r--src/devices/sound/2203intf.h35
-rw-r--r--src/devices/sound/2608intf.cpp77
-rw-r--r--src/devices/sound/2608intf.h37
-rw-r--r--src/devices/sound/2610intf.cpp88
-rw-r--r--src/devices/sound/2610intf.h44
-rw-r--r--src/devices/sound/2612intf.cpp53
-rw-r--r--src/devices/sound/2612intf.h39
-rw-r--r--src/devices/sound/262intf.cpp44
-rw-r--r--src/devices/sound/262intf.h37
-rw-r--r--src/devices/sound/315-5641.cpp4
-rw-r--r--src/devices/sound/315-5641.h19
-rw-r--r--src/devices/sound/3526intf.cpp47
-rw-r--r--src/devices/sound/3526intf.h32
-rw-r--r--src/devices/sound/3812intf.cpp49
-rw-r--r--src/devices/sound/3812intf.h31
-rw-r--r--src/devices/sound/8950intf.cpp104
-rw-r--r--src/devices/sound/8950intf.h70
-rw-r--r--src/devices/sound/ad1848.cpp6
-rw-r--r--src/devices/sound/ad1848.h29
-rw-r--r--src/devices/sound/aica.cpp52
-rw-r--r--src/devices/sound/aica.h134
-rw-r--r--src/devices/sound/aicadsp.cpp73
-rw-r--r--src/devices/sound/aicadsp.h18
-rw-r--r--src/devices/sound/asc.cpp45
-rw-r--r--src/devices/sound/asc.h65
-rw-r--r--src/devices/sound/astrocde.cpp4
-rw-r--r--src/devices/sound/astrocde.h25
-rw-r--r--src/devices/sound/awacs.cpp11
-rw-r--r--src/devices/sound/awacs.h15
-rw-r--r--src/devices/sound/ay8910.cpp127
-rw-r--r--src/devices/sound/ay8910.h62
-rw-r--r--src/devices/sound/beep.cpp12
-rw-r--r--src/devices/sound/beep.h12
-rw-r--r--src/devices/sound/bsmt2000.cpp43
-rw-r--r--src/devices/sound/bsmt2000.h23
-rw-r--r--src/devices/sound/c140.cpp30
-rw-r--r--src/devices/sound/c140.h122
-rw-r--r--src/devices/sound/c352.cpp14
-rw-r--r--src/devices/sound/c352.h36
-rw-r--r--src/devices/sound/c6280.cpp7
-rw-r--r--src/devices/sound/c6280.h18
-rw-r--r--src/devices/sound/cdda.cpp8
-rw-r--r--src/devices/sound/cdda.h19
-rw-r--r--src/devices/sound/cdp1863.cpp18
-rw-r--r--src/devices/sound/cdp1863.h12
-rw-r--r--src/devices/sound/cdp1864.cpp36
-rw-r--r--src/devices/sound/cdp1864.h102
-rw-r--r--src/devices/sound/cdp1869.cpp52
-rw-r--r--src/devices/sound/cdp1869.h157
-rw-r--r--src/devices/sound/cem3394.cpp56
-rw-r--r--src/devices/sound/cem3394.h71
-rw-r--r--src/devices/sound/dac.cpp4
-rw-r--r--src/devices/sound/dac.h116
-rw-r--r--src/devices/sound/dac76.cpp4
-rw-r--r--src/devices/sound/dac76.h10
-rw-r--r--src/devices/sound/dave.cpp8
-rw-r--r--src/devices/sound/dave.h14
-rw-r--r--src/devices/sound/digitalk.cpp12
-rw-r--r--src/devices/sound/digitalk.h30
-rw-r--r--src/devices/sound/disc_cls.h8
-rw-r--r--src/devices/sound/disc_dev.h8
-rw-r--r--src/devices/sound/disc_flt.h8
-rw-r--r--src/devices/sound/disc_mth.h8
-rw-r--r--src/devices/sound/disc_wav.h8
-rw-r--r--src/devices/sound/discrete.cpp13
-rw-r--r--src/devices/sound/discrete.h12
-rw-r--r--src/devices/sound/dmadac.cpp19
-rw-r--r--src/devices/sound/dmadac.h14
-rw-r--r--src/devices/sound/es1373.cpp64
-rw-r--r--src/devices/sound/es1373.h117
-rw-r--r--src/devices/sound/es5503.cpp12
-rw-r--r--src/devices/sound/es5503.h18
-rw-r--r--src/devices/sound/es5506.cpp36
-rw-r--r--src/devices/sound/es5506.h140
-rw-r--r--src/devices/sound/es8712.cpp6
-rw-r--r--src/devices/sound/es8712.h34
-rw-r--r--src/devices/sound/esqpump.cpp21
-rw-r--r--src/devices/sound/esqpump.h15
-rw-r--r--src/devices/sound/flt_rc.cpp18
-rw-r--r--src/devices/sound/flt_rc.h27
-rw-r--r--src/devices/sound/flt_vol.cpp6
-rw-r--r--src/devices/sound/flt_vol.h14
-rw-r--r--src/devices/sound/fm.cpp621
-rw-r--r--src/devices/sound/fm.h60
-rw-r--r--src/devices/sound/fm2612.cpp63
-rw-r--r--src/devices/sound/fmopl.cpp1818
-rw-r--r--src/devices/sound/fmopl.h52
-rw-r--r--src/devices/sound/gaelco.cpp26
-rw-r--r--src/devices/sound/gaelco.h55
-rw-r--r--src/devices/sound/gb.cpp16
-rw-r--r--src/devices/sound/gb.h17
-rw-r--r--src/devices/sound/hc55516.cpp33
-rw-r--r--src/devices/sound/hc55516.h23
-rw-r--r--src/devices/sound/i5000.cpp7
-rw-r--r--src/devices/sound/i5000.h13
-rw-r--r--src/devices/sound/ics2115.cpp14
-rw-r--r--src/devices/sound/ics2115.h167
-rw-r--r--src/devices/sound/iremga20.cpp4
-rw-r--r--src/devices/sound/iremga20.h50
-rw-r--r--src/devices/sound/k005289.cpp18
-rw-r--r--src/devices/sound/k005289.h27
-rw-r--r--src/devices/sound/k007232.cpp10
-rw-r--r--src/devices/sound/k007232.h21
-rw-r--r--src/devices/sound/k051649.cpp45
-rw-r--r--src/devices/sound/k051649.h70
-rw-r--r--src/devices/sound/k053260.cpp45
-rw-r--r--src/devices/sound/k053260.h56
-rw-r--r--src/devices/sound/k054539.cpp13
-rw-r--r--src/devices/sound/k054539.h35
-rw-r--r--src/devices/sound/k056800.cpp10
-rw-r--r--src/devices/sound/k056800.h21
-rw-r--r--src/devices/sound/l7a1045_l6028_dsp_a.cpp8
-rw-r--r--src/devices/sound/l7a1045_l6028_dsp_a.h42
-rw-r--r--src/devices/sound/lmc1992.cpp30
-rw-r--r--src/devices/sound/lmc1992.h12
-rw-r--r--src/devices/sound/mas3507d.cpp9
-rw-r--r--src/devices/sound/mas3507d.h10
-rw-r--r--src/devices/sound/mea8000.cpp52
-rw-r--r--src/devices/sound/mea8000.h82
-rw-r--r--src/devices/sound/mm5837.cpp4
-rw-r--r--src/devices/sound/mm5837.h14
-rw-r--r--src/devices/sound/mos6560.cpp28
-rw-r--r--src/devices/sound/mos6560.h27
-rw-r--r--src/devices/sound/mos6581.cpp42
-rw-r--r--src/devices/sound/mos6581.h40
-rw-r--r--src/devices/sound/mos7360.cpp20
-rw-r--r--src/devices/sound/mos7360.h48
-rw-r--r--src/devices/sound/mpeg_audio.h8
-rw-r--r--src/devices/sound/msm5205.cpp12
-rw-r--r--src/devices/sound/msm5205.h71
-rw-r--r--src/devices/sound/msm5232.cpp11
-rw-r--r--src/devices/sound/msm5232.h72
-rw-r--r--src/devices/sound/multipcm.cpp16
-rw-r--r--src/devices/sound/multipcm.h18
-rw-r--r--src/devices/sound/n63701x.cpp10
-rw-r--r--src/devices/sound/n63701x.h47
-rw-r--r--src/devices/sound/namco.cpp16
-rw-r--r--src/devices/sound/namco.h56
-rw-r--r--src/devices/sound/nes_apu.cpp94
-rw-r--r--src/devices/sound/nes_apu.h54
-rw-r--r--src/devices/sound/nes_defs.h287
-rw-r--r--src/devices/sound/nile.cpp4
-rw-r--r--src/devices/sound/nile.h16
-rw-r--r--src/devices/sound/okiadpcm.h8
-rw-r--r--src/devices/sound/okim6258.cpp16
-rw-r--r--src/devices/sound/okim6258.h74
-rw-r--r--src/devices/sound/okim6295.cpp4
-rw-r--r--src/devices/sound/okim6295.h46
-rw-r--r--src/devices/sound/okim6376.cpp56
-rw-r--r--src/devices/sound/okim6376.h45
-rw-r--r--src/devices/sound/okim9810.cpp30
-rw-r--r--src/devices/sound/okim9810.h63
-rw-r--r--src/devices/sound/pcd3311.cpp12
-rw-r--r--src/devices/sound/pcd3311.h18
-rw-r--r--src/devices/sound/pci-ac97.cpp4
-rw-r--r--src/devices/sound/pci-ac97.h12
-rw-r--r--src/devices/sound/pokey.cpp214
-rw-r--r--src/devices/sound/pokey.h83
-rw-r--r--src/devices/sound/qs1000.cpp4
-rw-r--r--src/devices/sound/qs1000.h61
-rw-r--r--src/devices/sound/qsound.cpp6
-rw-r--r--src/devices/sound/qsound.h15
-rw-r--r--src/devices/sound/rf5c400.cpp275
-rw-r--r--src/devices/sound/rf5c400.h121
-rw-r--r--src/devices/sound/rf5c68.cpp53
-rw-r--r--src/devices/sound/rf5c68.h73
-rw-r--r--src/devices/sound/s14001a.cpp193
-rw-r--r--src/devices/sound/s14001a.h38
-rw-r--r--src/devices/sound/saa1099.cpp34
-rw-r--r--src/devices/sound/saa1099.h88
-rw-r--r--src/devices/sound/samples.cpp21
-rw-r--r--src/devices/sound/samples.h38
-rw-r--r--src/devices/sound/sb0400.cpp4
-rw-r--r--src/devices/sound/sb0400.h8
-rw-r--r--src/devices/sound/scsp.cpp41
-rw-r--r--src/devices/sound/scsp.h116
-rw-r--r--src/devices/sound/scspdsp.cpp397
-rw-r--r--src/devices/sound/scspdsp.h18
-rw-r--r--src/devices/sound/segapcm.cpp4
-rw-r--r--src/devices/sound/segapcm.h42
-rw-r--r--src/devices/sound/sid.cpp325
-rw-r--r--src/devices/sound/sid.h24
-rw-r--r--src/devices/sound/side6581.h8
-rw-r--r--src/devices/sound/sidenvel.cpp7
-rw-r--r--src/devices/sound/sidenvel.h8
-rw-r--r--src/devices/sound/sidvoice.cpp520
-rw-r--r--src/devices/sound/sidvoice.h49
-rw-r--r--src/devices/sound/sidw6581.h8
-rw-r--r--src/devices/sound/sidw8580.h9
-rw-r--r--src/devices/sound/sn76477.cpp96
-rw-r--r--src/devices/sound/sn76477.h14
-rw-r--r--src/devices/sound/sn76496.cpp116
-rw-r--r--src/devices/sound/sn76496.h51
-rw-r--r--src/devices/sound/snkwave.cpp19
-rw-r--r--src/devices/sound/snkwave.h25
-rw-r--r--src/devices/sound/sp0250.cpp4
-rw-r--r--src/devices/sound/sp0250.h18
-rw-r--r--src/devices/sound/sp0256.cpp257
-rw-r--r--src/devices/sound/sp0256.h111
-rw-r--r--src/devices/sound/spkrdev.cpp11
-rw-r--r--src/devices/sound/spkrdev.h23
-rw-r--r--src/devices/sound/spu.cpp54
-rw-r--r--src/devices/sound/spu.h47
-rw-r--r--src/devices/sound/spu_tables.cpp33
-rw-r--r--src/devices/sound/spureverb.cpp20
-rw-r--r--src/devices/sound/spureverb.h131
-rw-r--r--src/devices/sound/st0016.cpp26
-rw-r--r--src/devices/sound/st0016.h24
-rw-r--r--src/devices/sound/t6721a.cpp13
-rw-r--r--src/devices/sound/t6721a.h20
-rw-r--r--src/devices/sound/t6w28.cpp7
-rw-r--r--src/devices/sound/t6w28.h14
-rw-r--r--src/devices/sound/tc8830f.cpp4
-rw-r--r--src/devices/sound/tc8830f.h14
-rw-r--r--src/devices/sound/tiaintf.cpp4
-rw-r--r--src/devices/sound/tiaintf.h20
-rw-r--r--src/devices/sound/tiasound.cpp6
-rw-r--r--src/devices/sound/tiasound.h10
-rw-r--r--src/devices/sound/tms3615.cpp28
-rw-r--r--src/devices/sound/tms3615.h44
-rw-r--r--src/devices/sound/tms36xx.cpp36
-rw-r--r--src/devices/sound/tms36xx.h50
-rw-r--r--src/devices/sound/tms5110.cpp250
-rw-r--r--src/devices/sound/tms5110.h132
-rw-r--r--src/devices/sound/tms5220.cpp227
-rw-r--r--src/devices/sound/tms5220.h97
-rw-r--r--src/devices/sound/upd1771.cpp21
-rw-r--r--src/devices/sound/upd1771.h20
-rw-r--r--src/devices/sound/upd7752.cpp12
-rw-r--r--src/devices/sound/upd7752.h39
-rw-r--r--src/devices/sound/upd7759.cpp21
-rw-r--r--src/devices/sound/upd7759.h79
-rw-r--r--src/devices/sound/vlm5030.cpp4
-rw-r--r--src/devices/sound/vlm5030.h21
-rw-r--r--src/devices/sound/volt_reg.cpp5
-rw-r--r--src/devices/sound/volt_reg.h14
-rw-r--r--src/devices/sound/votrax.cpp4
-rw-r--r--src/devices/sound/votrax.h11
-rw-r--r--src/devices/sound/vrc6.cpp12
-rw-r--r--src/devices/sound/vrc6.h9
-rw-r--r--src/devices/sound/vrender0.cpp4
-rw-r--r--src/devices/sound/vrender0.h12
-rw-r--r--src/devices/sound/wave.cpp9
-rw-r--r--src/devices/sound/wave.h13
-rw-r--r--src/devices/sound/x1_010.cpp45
-rw-r--r--src/devices/sound/x1_010.h24
-rw-r--r--src/devices/sound/ym2151.cpp4
-rw-r--r--src/devices/sound/ym2151.h14
-rw-r--r--src/devices/sound/ym2413.cpp6
-rw-r--r--src/devices/sound/ym2413.h15
-rw-r--r--src/devices/sound/ymdeltat.cpp283
-rw-r--r--src/devices/sound/ymdeltat.h34
-rw-r--r--src/devices/sound/ymf262.cpp69
-rw-r--r--src/devices/sound/ymf262.h31
-rw-r--r--src/devices/sound/ymf271.cpp4
-rw-r--r--src/devices/sound/ymf271.h18
-rw-r--r--src/devices/sound/ymf278b.cpp40
-rw-r--r--src/devices/sound/ymf278b.h25
-rw-r--r--src/devices/sound/ymz280b.cpp48
-rw-r--r--src/devices/sound/ymz280b.h26
-rw-r--r--src/devices/sound/ymz770.cpp21
-rw-r--r--src/devices/sound/ymz770.h65
-rw-r--r--src/devices/sound/zsg2.cpp12
-rw-r--r--src/devices/sound/zsg2.h14
-rw-r--r--src/devices/video/315_5124.cpp76
-rw-r--r--src/devices/video/315_5124.h143
-rw-r--r--src/devices/video/315_5313.cpp152
-rw-r--r--src/devices/video/315_5313.h177
-rw-r--r--src/devices/video/bufsprite.cpp35
-rw-r--r--src/devices/video/bufsprite.h49
-rw-r--r--src/devices/video/cdp1861.cpp40
-rw-r--r--src/devices/video/cdp1861.h71
-rw-r--r--src/devices/video/cdp1862.cpp6
-rw-r--r--src/devices/video/cdp1862.h18
-rw-r--r--src/devices/video/cesblit.cpp9
-rw-r--r--src/devices/video/cesblit.h14
-rw-r--r--src/devices/video/cgapal.h10
-rw-r--r--src/devices/video/clgd542x.cpp12
-rw-r--r--src/devices/video/clgd542x.h17
-rw-r--r--src/devices/video/crt9007.cpp190
-rw-r--r--src/devices/video/crt9007.h77
-rw-r--r--src/devices/video/crt9021.cpp30
-rw-r--r--src/devices/video/crt9021.h29
-rw-r--r--src/devices/video/crt9212.cpp35
-rw-r--r--src/devices/video/crt9212.h40
-rw-r--r--src/devices/video/crtc_ega.cpp14
-rw-r--r--src/devices/video/crtc_ega.h73
-rw-r--r--src/devices/video/dl1416.cpp26
-rw-r--r--src/devices/video/dl1416.h22
-rw-r--r--src/devices/video/dm9368.cpp17
-rw-r--r--src/devices/video/dm9368.h12
-rw-r--r--src/devices/video/ef9340_1.cpp6
-rw-r--r--src/devices/video/ef9340_1.h12
-rw-r--r--src/devices/video/ef9345.cpp22
-rw-r--r--src/devices/video/ef9345.h18
-rw-r--r--src/devices/video/ef9364.cpp64
-rw-r--r--src/devices/video/ef9364.h23
-rw-r--r--src/devices/video/ef9365.cpp156
-rw-r--r--src/devices/video/ef9365.h67
-rw-r--r--src/devices/video/ef9369.cpp9
-rw-r--r--src/devices/video/ef9369.h21
-rw-r--r--src/devices/video/epic12.cpp78
-rw-r--r--src/devices/video/epic12.h357
-rw-r--r--src/devices/video/epic12in.hxx14
-rw-r--r--src/devices/video/epic12pixel.hxx106
-rw-r--r--src/devices/video/fixfreq.cpp47
-rw-r--r--src/devices/video/fixfreq.h14
-rw-r--r--src/devices/video/gb_lcd.cpp140
-rw-r--r--src/devices/video/gb_lcd.h49
-rw-r--r--src/devices/video/gba_lcd.cpp4
-rw-r--r--src/devices/video/gba_lcd.h31
-rw-r--r--src/devices/video/gf4500.cpp6
-rw-r--r--src/devices/video/gf4500.h12
-rw-r--r--src/devices/video/gf7600gs.cpp4
-rw-r--r--src/devices/video/gf7600gs.h10
-rw-r--r--src/devices/video/hd44102.cpp52
-rw-r--r--src/devices/video/hd44102.h12
-rw-r--r--src/devices/video/hd44352.cpp4
-rw-r--r--src/devices/video/hd44352.h15
-rw-r--r--src/devices/video/hd44780.cpp38
-rw-r--r--src/devices/video/hd44780.h30
-rw-r--r--src/devices/video/hd61830.cpp95
-rw-r--r--src/devices/video/hd61830.h20
-rw-r--r--src/devices/video/hd63484.cpp4
-rw-r--r--src/devices/video/hd63484.h24
-rw-r--r--src/devices/video/hd66421.cpp27
-rw-r--r--src/devices/video/hd66421.h26
-rw-r--r--src/devices/video/hlcd0515.cpp15
-rw-r--r--src/devices/video/hlcd0515.h41
-rw-r--r--src/devices/video/hlcd0538.cpp14
-rw-r--r--src/devices/video/hlcd0538.h38
-rw-r--r--src/devices/video/hp1ll3.cpp96
-rw-r--r--src/devices/video/hp1ll3.h104
-rw-r--r--src/devices/video/huc6202.cpp32
-rw-r--r--src/devices/video/huc6202.h34
-rw-r--r--src/devices/video/huc6260.cpp27
-rw-r--r--src/devices/video/huc6260.h33
-rw-r--r--src/devices/video/huc6261.cpp25
-rw-r--r--src/devices/video/huc6261.h19
-rw-r--r--src/devices/video/huc6270.cpp47
-rw-r--r--src/devices/video/huc6270.h18
-rw-r--r--src/devices/video/huc6271.cpp8
-rw-r--r--src/devices/video/huc6271.h25
-rw-r--r--src/devices/video/huc6272.cpp4
-rw-r--r--src/devices/video/huc6272.h34
-rw-r--r--src/devices/video/i8244.cpp19
-rw-r--r--src/devices/video/i8244.h106
-rw-r--r--src/devices/video/i82730.cpp18
-rw-r--r--src/devices/video/i82730.h26
-rw-r--r--src/devices/video/i8275.cpp61
-rw-r--r--src/devices/video/i8275.h30
-rw-r--r--src/devices/video/jangou_blitter.cpp4
-rw-r--r--src/devices/video/jangou_blitter.h25
-rw-r--r--src/devices/video/m50458.cpp10
-rw-r--r--src/devices/video/m50458.h32
-rw-r--r--src/devices/video/mb90082.cpp8
-rw-r--r--src/devices/video/mb90082.h32
-rw-r--r--src/devices/video/mb_vcu.cpp4
-rw-r--r--src/devices/video/mb_vcu.h13
-rw-r--r--src/devices/video/mc6845.cpp96
-rw-r--r--src/devices/video/mc6845.h105
-rw-r--r--src/devices/video/mc6847.cpp70
-rw-r--r--src/devices/video/mc6847.h111
-rw-r--r--src/devices/video/mga2064w.cpp4
-rw-r--r--src/devices/video/mga2064w.h12
-rw-r--r--src/devices/video/mos6566.cpp56
-rw-r--r--src/devices/video/mos6566.h61
-rw-r--r--src/devices/video/msm6222b.cpp17
-rw-r--r--src/devices/video/msm6222b.h27
-rw-r--r--src/devices/video/msm6255.cpp9
-rw-r--r--src/devices/video/msm6255.h15
-rw-r--r--src/devices/video/pc_vga.cpp54
-rw-r--r--src/devices/video/pc_vga.h93
-rw-r--r--src/devices/video/pcd8544.cpp23
-rw-r--r--src/devices/video/pcd8544.h19
-rw-r--r--src/devices/video/poly.h98
-rw-r--r--src/devices/video/polylgcy.cpp32
-rw-r--r--src/devices/video/polylgcy.h24
-rw-r--r--src/devices/video/ppu2c0x.cpp70
-rw-r--r--src/devices/video/ppu2c0x.h197
-rw-r--r--src/devices/video/psx.cpp115
-rw-r--r--src/devices/video/psx.h333
-rw-r--r--src/devices/video/ramdac.cpp4
-rw-r--r--src/devices/video/ramdac.h11
-rw-r--r--src/devices/video/saa5050.cpp56
-rw-r--r--src/devices/video/saa5050.h33
-rw-r--r--src/devices/video/scn2674.cpp225
-rw-r--r--src/devices/video/scn2674.h16
-rw-r--r--src/devices/video/sed1200.cpp20
-rw-r--r--src/devices/video/sed1200.h20
-rw-r--r--src/devices/video/sed1330.cpp177
-rw-r--r--src/devices/video/sed1330.h14
-rw-r--r--src/devices/video/sed1520.cpp4
-rw-r--r--src/devices/video/sed1520.h17
-rw-r--r--src/devices/video/snes_ppu.cpp18
-rw-r--r--src/devices/video/snes_ppu.h110
-rw-r--r--src/devices/video/sprite.h22
-rw-r--r--src/devices/video/t6a04.cpp12
-rw-r--r--src/devices/video/t6a04.h10
-rw-r--r--src/devices/video/tea1002.cpp4
-rw-r--r--src/devices/video/tea1002.h9
-rw-r--r--src/devices/video/tlc34076.cpp6
-rw-r--r--src/devices/video/tlc34076.h34
-rw-r--r--src/devices/video/tms34061.cpp21
-rw-r--r--src/devices/video/tms34061.h94
-rw-r--r--src/devices/video/tms3556.cpp174
-rw-r--r--src/devices/video/tms3556.h56
-rw-r--r--src/devices/video/tms9927.cpp27
-rw-r--r--src/devices/video/tms9927.h34
-rw-r--r--src/devices/video/tms9928a.cpp132
-rw-r--r--src/devices/video/tms9928a.h66
-rw-r--r--src/devices/video/upd3301.cpp77
-rw-r--r--src/devices/video/upd3301.h31
-rw-r--r--src/devices/video/upd7220.cpp128
-rw-r--r--src/devices/video/upd7220.h41
-rw-r--r--src/devices/video/upd7227.cpp27
-rw-r--r--src/devices/video/upd7227.h15
-rw-r--r--src/devices/video/v9938.cpp48
-rw-r--r--src/devices/video/v9938.h43
-rw-r--r--src/devices/video/vector.cpp4
-rw-r--r--src/devices/video/vector.h44
-rw-r--r--src/devices/video/vic4567.cpp48
-rw-r--r--src/devices/video/vic4567.h108
-rw-r--r--src/devices/video/vooddefs.h190
-rw-r--r--src/devices/video/voodoo.cpp627
-rw-r--r--src/devices/video/voodoo.h684
-rw-r--r--src/devices/video/voodoo_pci.cpp4
-rw-r--r--src/devices/video/voodoo_pci.h12
-rw-r--r--src/devices/video/zeus2.cpp6
-rw-r--r--src/devices/video/zeus2.h16
3263 files changed, 53301 insertions, 56102 deletions
diff --git a/src/devices/bus/a1bus/a1bus.cpp b/src/devices/bus/a1bus/a1bus.cpp
index 39bf0c52489..d1f0bbd7fe0 100644
--- a/src/devices/bus/a1bus/a1bus.cpp
+++ b/src/devices/bus/a1bus/a1bus.cpp
@@ -14,7 +14,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A1BUS_SLOT = device_creator<a1bus_slot_device>;
+DEFINE_DEVICE_TYPE(A1BUS_SLOT, a1bus_slot_device, "a1bus_slot", "Apple I Slot")
//**************************************************************************
// LIVE DEVICE
@@ -23,17 +23,16 @@ const device_type A1BUS_SLOT = device_creator<a1bus_slot_device>;
//-------------------------------------------------
// a1bus_slot_device - constructor
//-------------------------------------------------
-a1bus_slot_device::a1bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A1BUS_SLOT, "Apple I Slot", tag, owner, clock, "a1bus_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_a1bus_tag(nullptr),
- m_a1bus_slottag(nullptr)
+a1bus_slot_device::a1bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : a1bus_slot_device(mconfig, A1BUS_SLOT, tag, owner, clock)
{
}
-a1bus_slot_device::a1bus_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_interface(mconfig, *this), m_a1bus_tag(nullptr), m_a1bus_slottag(nullptr)
+a1bus_slot_device::a1bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_slot_interface(mconfig, *this)
+ , m_a1bus_tag(nullptr)
+ , m_a1bus_slottag(nullptr)
{
}
@@ -59,7 +58,7 @@ void a1bus_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A1BUS = device_creator<a1bus_device>;
+DEFINE_DEVICE_TYPE(A1BUS, a1bus_device, "a1bus", "Apple I Bus")
void a1bus_device::static_set_cputag(device_t &device, const char *tag)
{
@@ -75,17 +74,18 @@ void a1bus_device::static_set_cputag(device_t &device, const char *tag)
// a1bus_device - constructor
//-------------------------------------------------
-a1bus_device::a1bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A1BUS, "Apple I Bus", tag, owner, clock, "a1bus", __FILE__), m_maincpu(nullptr),
- m_out_irq_cb(*this),
- m_out_nmi_cb(*this), m_device(nullptr), m_cputag(nullptr)
+a1bus_device::a1bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : a1bus_device(mconfig, A1BUS, tag, owner, clock)
{
}
-a1bus_device::a1bus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source), m_maincpu(nullptr),
- m_out_irq_cb(*this),
- m_out_nmi_cb(*this), m_device(nullptr), m_cputag(nullptr)
+a1bus_device::a1bus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_maincpu(nullptr)
+ , m_out_irq_cb(*this)
+ , m_out_nmi_cb(*this)
+ , m_device(nullptr)
+ , m_cputag(nullptr)
{
}
//-------------------------------------------------
diff --git a/src/devices/bus/a1bus/a1bus.h b/src/devices/bus/a1bus/a1bus.h
index 38830940525..320a2d9bc80 100644
--- a/src/devices/bus/a1bus/a1bus.h
+++ b/src/devices/bus/a1bus/a1bus.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_A1BUS_A1BUS_H
+#define MAME_BUS_A1BUS_A1BUS_H
-#ifndef __A1BUS_H__
-#define __A1BUS_H__
+#pragma once
//**************************************************************************
@@ -49,20 +49,22 @@ class a1bus_slot_device : public device_t,
public:
// construction/destruction
a1bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a1bus_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // device-level overrides
- virtual void device_start() override;
// inline configuration
static void static_set_a1bus_slot(device_t &device, const char *tag, const char *slottag);
+
protected:
+ a1bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
// configuration
const char *m_a1bus_tag, *m_a1bus_slottag;
};
// device type definition
-extern const device_type A1BUS_SLOT;
+DECLARE_DEVICE_TYPE(A1BUS_SLOT, a1bus_slot_device)
class device_a1bus_card_interface;
@@ -72,12 +74,11 @@ class a1bus_device : public device_t
public:
// construction/destruction
a1bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a1bus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// inline configuration
static void static_set_cputag(device_t &device, const char *tag);
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<a1bus_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_nmi_callback(device_t &device, _Object object) { return downcast<a1bus_device &>(device).m_out_nmi_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<a1bus_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<a1bus_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
void add_a1bus_card(device_a1bus_card_interface *card);
device_a1bus_card_interface *get_a1bus_card();
@@ -92,6 +93,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( nmi_w );
protected:
+ a1bus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -108,7 +111,7 @@ protected:
// device type definition
-extern const device_type A1BUS;
+DECLARE_DEVICE_TYPE(A1BUS, a1bus_device)
// ======================> device_a1bus_card_interface
@@ -118,7 +121,6 @@ class device_a1bus_card_interface : public device_slot_card_interface
friend class a1bus_device;
public:
// construction/destruction
- device_a1bus_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_a1bus_card_interface();
device_a1bus_card_interface *next() const { return m_next; }
@@ -135,10 +137,13 @@ public:
// inline configuration
static void static_set_a1bus_tag(device_t &device, const char *tag, const char *slottag);
-public:
+
+protected:
+ device_a1bus_card_interface(const machine_config &mconfig, device_t &device);
+
a1bus_device *m_a1bus;
const char *m_a1bus_tag, *m_a1bus_slottag;
device_a1bus_card_interface *m_next;
};
-#endif /* __A1BUS_H__ */
+#endif // MAME_BUS_A1BUS_A1BUS_H
diff --git a/src/devices/bus/a1bus/a1cassette.cpp b/src/devices/bus/a1bus/a1cassette.cpp
index c050a06120e..f7b2012d461 100644
--- a/src/devices/bus/a1bus/a1cassette.cpp
+++ b/src/devices/bus/a1bus/a1cassette.cpp
@@ -21,7 +21,7 @@
#define CASSETTE_ROM_REGION "casrom"
-const device_type A1BUS_CASSETTE = device_creator<a1bus_cassette_device>;
+DEFINE_DEVICE_TYPE(A1BUS_CASSETTE, a1bus_cassette_device, "a1cass", "Apple I cassette board")
/* sound output */
@@ -57,17 +57,17 @@ const tiny_rom_entry *a1bus_cassette_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a1bus_cassette_device::a1bus_cassette_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A1BUS_CASSETTE, "Apple I cassette board", tag, owner, clock, "a1cass", __FILE__),
- device_a1bus_card_interface(mconfig, *this),
- m_cassette(*this, "cassette"), m_rom(nullptr), m_cassette_output_flipflop(0)
+a1bus_cassette_device::a1bus_cassette_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : a1bus_cassette_device(mconfig, A1BUS_CASSETTE, tag, owner, clock)
{
}
-a1bus_cassette_device::a1bus_cassette_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_a1bus_card_interface(mconfig, *this),
- m_cassette(*this, "cassette"), m_rom(nullptr), m_cassette_output_flipflop(0)
+a1bus_cassette_device::a1bus_cassette_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_a1bus_card_interface(mconfig, *this)
+ , m_cassette(*this, "cassette")
+ , m_rom(nullptr),
+ m_cassette_output_flipflop(0)
{
}
diff --git a/src/devices/bus/a1bus/a1cassette.h b/src/devices/bus/a1bus/a1cassette.h
index 408ae5fe4cf..f674559732c 100644
--- a/src/devices/bus/a1bus/a1cassette.h
+++ b/src/devices/bus/a1bus/a1cassette.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A1BUS_CASSETTE__
-#define __A1BUS_CASSETTE__
+#ifndef MAME_BUS_A1BUS_A1CASSETTE_H
+#define MAME_BUS_A1BUS_A1CASSETTE_H
+
+#pragma once
#include "a1bus.h"
#include "imagedev/cassette.h"
@@ -25,29 +27,30 @@ class a1bus_cassette_device:
public:
// construction/destruction
a1bus_cassette_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a1bus_cassette_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
- optional_device<cassette_image_device> m_cassette;
-
DECLARE_READ8_MEMBER(cassette_r);
DECLARE_WRITE8_MEMBER(cassette_w);
protected:
+ a1bus_cassette_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
void cassette_toggle_output();
+ optional_device<cassette_image_device> m_cassette;
+
private:
uint8_t *m_rom;
int m_cassette_output_flipflop;
};
// device type definition
-extern const device_type A1BUS_CASSETTE;
+DECLARE_DEVICE_TYPE(A1BUS_CASSETTE, a1bus_cassette_device)
-#endif /* __A1BUS_CASSETTE__ */
+#endif // MAME_BUS_A1BUS_A1CASSETTE_H
diff --git a/src/devices/bus/a1bus/a1cffa.cpp b/src/devices/bus/a1bus/a1cffa.cpp
index f53270cd1df..3fb11381e9a 100644
--- a/src/devices/bus/a1bus/a1cffa.cpp
+++ b/src/devices/bus/a1bus/a1cffa.cpp
@@ -22,7 +22,7 @@
#define CFFA_ROM_REGION "cffa_rom"
#define CFFA_ATA_TAG "cffa_ata"
-const device_type A1BUS_CFFA = device_creator<a1bus_cffa_device>;
+DEFINE_DEVICE_TYPE(A1BUS_CFFA, a1bus_cffa_device, "cffa1", "CFFA Compact Flash for Apple I")
MACHINE_CONFIG_FRAGMENT( cffa )
MCFG_ATA_INTERFACE_ADD(CFFA_ATA_TAG, ata_devices, "hdd", nullptr, false)
@@ -52,17 +52,18 @@ const tiny_rom_entry *a1bus_cffa_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a1bus_cffa_device::a1bus_cffa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A1BUS_CFFA, "CFFA Compact Flash for Apple I", tag, owner, clock, "cffa1", __FILE__),
- device_a1bus_card_interface(mconfig, *this),
- m_ata(*this, CFFA_ATA_TAG), m_rom(nullptr), m_lastdata(0), m_writeprotect(false)
+a1bus_cffa_device::a1bus_cffa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : a1bus_cffa_device(mconfig, A1BUS_CFFA, tag, owner, clock)
{
}
-a1bus_cffa_device::a1bus_cffa_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_a1bus_card_interface(mconfig, *this),
- m_ata(*this, CFFA_ATA_TAG), m_rom(nullptr), m_lastdata(0), m_writeprotect(false)
+a1bus_cffa_device::a1bus_cffa_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_a1bus_card_interface(mconfig, *this)
+ , m_ata(*this, CFFA_ATA_TAG)
+ , m_rom(nullptr)
+ , m_lastdata(0)
+ , m_writeprotect(false)
{
}
diff --git a/src/devices/bus/a1bus/a1cffa.h b/src/devices/bus/a1bus/a1cffa.h
index 1f7925df0f9..e1114a23f05 100644
--- a/src/devices/bus/a1bus/a1cffa.h
+++ b/src/devices/bus/a1bus/a1cffa.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A1BUS_CFFA__
-#define __A1BUS_CFFA__
+#ifndef MAME_BUS_A1BUS_A1CFFA_H
+#define MAME_BUS_A1BUS_A1CFFA_H
+
+#pragma once
#include "a1bus.h"
#include "machine/ataintf.h"
@@ -25,21 +27,22 @@ class a1bus_cffa_device:
public:
// construction/destruction
a1bus_cffa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a1bus_cffa_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
- required_device<ata_interface_device> m_ata;
-
DECLARE_READ8_MEMBER(cffa_r);
DECLARE_WRITE8_MEMBER(cffa_w);
protected:
+ a1bus_cffa_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
+ required_device<ata_interface_device> m_ata;
+
private:
uint8_t *m_rom;
uint16_t m_lastdata;
@@ -49,4 +52,4 @@ private:
// device type definition
extern const device_type A1BUS_CFFA;
-#endif /* __A1BUS_CFFA__ */
+#endif // MAME_BUS_A1BUS_A1CFFA_H
diff --git a/src/devices/bus/a2bus/a2alfam2.cpp b/src/devices/bus/a2bus/a2alfam2.cpp
index fc28c7900da..aaf8287cd8f 100644
--- a/src/devices/bus/a2bus/a2alfam2.cpp
+++ b/src/devices/bus/a2bus/a2alfam2.cpp
@@ -22,8 +22,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_ALFAM2 = device_creator<a2bus_alfam2_device>;
-const device_type A2BUS_AESMS = device_creator<a2bus_aesms_device>;
+DEFINE_DEVICE_TYPE(A2BUS_ALFAM2, a2bus_alfam2_device, "a2alfam2", "ALF MC1 / Apple Music II")
+DEFINE_DEVICE_TYPE(A2BUS_AESMS, a2bus_aesms_device, "a2aesms", "Applied Engineering Super Music Synthesizer")
#define SN1_TAG "sn76489_1" // left
#define SN2_TAG "sn76489_2" // center
@@ -83,8 +83,8 @@ machine_config_constructor a2bus_aesms_device::device_mconfig_additions() const
// LIVE DEVICE
//**************************************************************************
-a2bus_sn76489_device::a2bus_sn76489_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_sn76489_device::a2bus_sn76489_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_sn1(*this, SN1_TAG),
m_sn2(*this, SN2_TAG),
@@ -94,13 +94,13 @@ a2bus_sn76489_device::a2bus_sn76489_device(const machine_config &mconfig, device
}
a2bus_alfam2_device::a2bus_alfam2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_sn76489_device(mconfig, A2BUS_ALFAM2, "ALF MC1 / Apple Music II", tag, owner, clock, "a2alfam2", __FILE__)
+ a2bus_sn76489_device(mconfig, A2BUS_ALFAM2, tag, owner, clock)
{
m_has4thsn = false;
}
a2bus_aesms_device::a2bus_aesms_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_sn76489_device(mconfig, A2BUS_AESMS, "Applied Engineering Super Music Synthesizer", tag, owner, clock, "a2aesms", __FILE__)
+ a2bus_sn76489_device(mconfig, A2BUS_AESMS, tag, owner, clock)
{
m_has4thsn = true;
}
diff --git a/src/devices/bus/a2bus/a2alfam2.h b/src/devices/bus/a2bus/a2alfam2.h
index b693ebb6a3f..ec98e87095d 100644
--- a/src/devices/bus/a2bus/a2alfam2.h
+++ b/src/devices/bus/a2bus/a2alfam2.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_ALFAM2__
-#define __A2BUS_ALFAM2__
+#ifndef MAME_BUS_A2BUS_A2ALFAM2_H
+#define MAME_BUS_A2BUS_A2ALFAM2_H
+
+#pragma once
#include "a2bus.h"
#include "sound/sn76496.h"
@@ -23,18 +25,13 @@ class a2bus_sn76489_device:
public device_a2bus_card_interface
{
public:
- // construction/destruction
- a2bus_sn76489_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- required_device<sn76489_device> m_sn1;
- required_device<sn76489_device> m_sn2;
- required_device<sn76489_device> m_sn3;
- optional_device<sn76489_device> m_sn4;
-
protected:
+ // construction/destruction
+ a2bus_sn76489_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -43,6 +40,11 @@ protected:
virtual void write_c0nx(address_space &space, uint8_t offset, uint8_t data) override;
virtual bool take_c800() override;
+ required_device<sn76489_device> m_sn1;
+ required_device<sn76489_device> m_sn2;
+ required_device<sn76489_device> m_sn3;
+ optional_device<sn76489_device> m_sn4;
+
private:
uint8_t m_latch0, m_latch1, m_latch2, m_latch3;
@@ -65,7 +67,7 @@ public:
};
// device type definition
-extern const device_type A2BUS_ALFAM2;
-extern const device_type A2BUS_AESMS;
+DECLARE_DEVICE_TYPE(A2BUS_ALFAM2, a2bus_alfam2_device)
+DECLARE_DEVICE_TYPE(A2BUS_AESMS, a2bus_aesms_device)
-#endif /* __A2BUS_ALFAM2__ */
+#endif // MAME_BUS_A2BUS_A2ALFAM2_H
diff --git a/src/devices/bus/a2bus/a2applicard.cpp b/src/devices/bus/a2bus/a2applicard.cpp
index f24903138dc..a356f8de706 100644
--- a/src/devices/bus/a2bus/a2applicard.cpp
+++ b/src/devices/bus/a2bus/a2applicard.cpp
@@ -24,7 +24,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_APPLICARD = device_creator<a2bus_applicard_device>;
+DEFINE_DEVICE_TYPE(A2BUS_APPLICARD, a2bus_applicard_device, "a2aplcrd", "PCPI Applicard")
#define Z80_TAG "z80"
#define Z80_ROM_REGION "z80_rom"
@@ -75,17 +75,15 @@ const tiny_rom_entry *a2bus_applicard_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_applicard_device::a2bus_applicard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_applicard_device::a2bus_applicard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_z80(*this, Z80_TAG), m_bROMAtZ80Zero(false), m_z80stat(false), m_6502stat(false), m_toz80(0), m_to6502(0), m_z80rom(nullptr)
{
}
a2bus_applicard_device::a2bus_applicard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_APPLICARD, "PCPI Applicard", tag, owner, clock, "a2aplcrd", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_z80(*this, Z80_TAG), m_bROMAtZ80Zero(false), m_z80stat(false), m_6502stat(false), m_toz80(0), m_to6502(0), m_z80rom(nullptr)
+ a2bus_applicard_device(mconfig, A2BUS_APPLICARD, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2applicard.h b/src/devices/bus/a2bus/a2applicard.h
index 89df1bf188e..dfacfbf208f 100644
--- a/src/devices/bus/a2bus/a2applicard.h
+++ b/src/devices/bus/a2bus/a2applicard.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_APPLICARD__
-#define __A2BUS_APPLICARD__
+#ifndef MAME_BUS_A2BUS_A2APPLICARD_H
+#define MAME_BUS_A2BUS_A2APPLICARD_H
+
+#pragma once
#include "a2bus.h"
@@ -23,7 +25,6 @@ class a2bus_applicard_device:
{
public:
// construction/destruction
- a2bus_applicard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_applicard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -35,6 +36,8 @@ public:
DECLARE_WRITE8_MEMBER( z80_io_w );
protected:
+ a2bus_applicard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -55,6 +58,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_APPLICARD;
+DECLARE_DEVICE_TYPE(A2BUS_APPLICARD, a2bus_applicard_device)
-#endif /* __A2BUS_APPLICARD__ */
+#endif // MAME_BUS_A2BUS_A2APPLICARD_H
diff --git a/src/devices/bus/a2bus/a2arcadebd.cpp b/src/devices/bus/a2bus/a2arcadebd.cpp
index 68da2e73426..cff4747f223 100644
--- a/src/devices/bus/a2bus/a2arcadebd.cpp
+++ b/src/devices/bus/a2bus/a2arcadebd.cpp
@@ -30,7 +30,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_ARCADEBOARD = device_creator<a2bus_arcboard_device>;
+DEFINE_DEVICE_TYPE(A2BUS_ARCADEBOARD, a2bus_arcboard_device, "a2arcbd", "Third Millenium Engineering Arcade Board")
MACHINE_CONFIG_FRAGMENT( arcadeboard )
MCFG_DEVICE_ADD( TMS_TAG, TMS9918A, XTAL_10_738635MHz / 2 )
@@ -59,15 +59,12 @@ machine_config_constructor a2bus_arcboard_device::device_mconfig_additions() con
//**************************************************************************
a2bus_arcboard_device::a2bus_arcboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_ARCADEBOARD, "Third Millenium Engineering Arcade Board", tag, owner, clock, "a2arcbd", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_tms(*this, TMS_TAG),
- m_ay(*this, AY_TAG)
+ a2bus_arcboard_device(mconfig, A2BUS_ARCADEBOARD, tag, owner, clock)
{
}
-a2bus_arcboard_device::a2bus_arcboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_arcboard_device::a2bus_arcboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_tms(*this, TMS_TAG),
m_ay(*this, AY_TAG)
diff --git a/src/devices/bus/a2bus/a2arcadebd.h b/src/devices/bus/a2bus/a2arcadebd.h
index a57894e5830..dcf303f94ae 100644
--- a/src/devices/bus/a2bus/a2arcadebd.h
+++ b/src/devices/bus/a2bus/a2arcadebd.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_ARCADEBOARD__
-#define __A2BUS_ARCADEBOARD__
+#ifndef MAME_BUS_A2BUS_A2ARCADEBD_H
+#define MAME_BUS_A2BUS_A2ARCADEBD_H
+
+#pragma once
#include "a2bus.h"
#include "video/tms9928a.h"
@@ -26,7 +28,6 @@ class a2bus_arcboard_device:
public:
// construction/destruction
a2bus_arcboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2bus_arcboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -34,6 +35,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( tms_irq_w );
protected:
+ a2bus_arcboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -46,6 +49,6 @@ protected:
};
// device type definition
-extern const device_type A2BUS_ARCADEBOARD;
+DECLARE_DEVICE_TYPE(A2BUS_ARCADEBOARD, a2bus_arcboard_device)
-#endif /* __A2BUS_ARCADEBOARD__ */
+#endif // MAME_BUS_A2BUS_A2ARCADEBD_H
diff --git a/src/devices/bus/a2bus/a2bus.cpp b/src/devices/bus/a2bus/a2bus.cpp
index d271c4e2762..d70b0414b9f 100644
--- a/src/devices/bus/a2bus/a2bus.cpp
+++ b/src/devices/bus/a2bus/a2bus.cpp
@@ -78,7 +78,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_SLOT = device_creator<a2bus_slot_device>;
+DEFINE_DEVICE_TYPE(A2BUS_SLOT, a2bus_slot_device, "a2bus_slot", "Apple II Slot")
//**************************************************************************
// LIVE DEVICE
@@ -87,15 +87,16 @@ const device_type A2BUS_SLOT = device_creator<a2bus_slot_device>;
//-------------------------------------------------
// a2bus_slot_device - constructor
//-------------------------------------------------
-a2bus_slot_device::a2bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_SLOT, "Apple II Slot", tag, owner, clock, "a2bus_slot", __FILE__),
- device_slot_interface(mconfig, *this), m_a2bus_tag(nullptr), m_a2bus_slottag(nullptr)
+a2bus_slot_device::a2bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : a2bus_slot_device(mconfig, A2BUS_SLOT, tag, owner, clock)
{
}
-a2bus_slot_device::a2bus_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_interface(mconfig, *this), m_a2bus_tag(nullptr), m_a2bus_slottag(nullptr)
+a2bus_slot_device::a2bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_slot_interface(mconfig, *this)
+ , m_a2bus_tag(nullptr)
+ , m_a2bus_slottag(nullptr)
{
}
@@ -121,7 +122,7 @@ void a2bus_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS = device_creator<a2bus_device>;
+DEFINE_DEVICE_TYPE(A2BUS, a2bus_device, "a2bus", "Apple II Bus")
void a2bus_device::static_set_cputag(device_t &device, const char *tag)
{
@@ -137,19 +138,17 @@ void a2bus_device::static_set_cputag(device_t &device, const char *tag)
// a2bus_device - constructor
//-------------------------------------------------
-a2bus_device::a2bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS, "Apple II Bus", tag, owner, clock, "a2bus", __FILE__), m_maincpu(nullptr), m_maincpu_space(nullptr),
- m_out_irq_cb(*this),
- m_out_nmi_cb(*this),
- m_out_inh_cb(*this), m_cputag(nullptr), m_slot_irq_mask(0), m_slot_nmi_mask(0)
+a2bus_device::a2bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : a2bus_device(mconfig, A2BUS, tag, owner, clock)
{
}
-a2bus_device::a2bus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source), m_maincpu(nullptr), m_maincpu_space(nullptr),
- m_out_irq_cb(*this),
- m_out_nmi_cb(*this),
- m_out_inh_cb(*this), m_cputag(nullptr), m_slot_irq_mask(0), m_slot_nmi_mask(0)
+a2bus_device::a2bus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_maincpu(nullptr) , m_maincpu_space(nullptr)
+ , m_out_irq_cb(*this) , m_out_nmi_cb(*this) , m_out_inh_cb(*this)
+ , m_cputag(nullptr)
+ , m_slot_irq_mask(0), m_slot_nmi_mask(0)
{
}
//-------------------------------------------------
diff --git a/src/devices/bus/a2bus/a2bus.h b/src/devices/bus/a2bus/a2bus.h
index 16433f5b814..f76a5e1166c 100644
--- a/src/devices/bus/a2bus/a2bus.h
+++ b/src/devices/bus/a2bus/a2bus.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_A2BUS_A2BUS_H
+#define MAME_BUS_A2BUS_A2BUS_H
-#ifndef __A2BUS_H__
-#define __A2BUS_H__
+#pragma once
// /INH special addresses
@@ -63,7 +63,6 @@ class a2bus_slot_device : public device_t,
public:
// construction/destruction
a2bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2bus_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// device-level overrides
virtual void device_start() override;
@@ -71,12 +70,14 @@ public:
// inline configuration
static void static_set_a2bus_slot(device_t &device, const char *tag, const char *slottag);
protected:
+ a2bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// configuration
const char *m_a2bus_tag, *m_a2bus_slottag;
};
// device type definition
-extern const device_type A2BUS_SLOT;
+DECLARE_DEVICE_TYPE(A2BUS_SLOT, a2bus_slot_device)
class device_a2bus_card_interface;
@@ -88,13 +89,12 @@ class a2bus_device : public device_t
public:
// construction/destruction
a2bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2bus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// inline configuration
static void static_set_cputag(device_t &device, const char *tag);
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<a2bus_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_nmi_callback(device_t &device, _Object object) { return downcast<a2bus_device &>(device).m_out_nmi_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_inh_callback(device_t &device, _Object object) { return downcast<a2bus_device &>(device).m_out_inh_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<a2bus_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<a2bus_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_inh_callback(device_t &device, Object &&cb) { return downcast<a2bus_device &>(device).m_out_inh_cb.set_callback(std::forward<Object>(cb)); }
void add_a2bus_card(int slot, device_a2bus_card_interface *card);
device_a2bus_card_interface *get_a2bus_card(int slot);
@@ -114,6 +114,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( nmi_w );
protected:
+ a2bus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -135,7 +137,7 @@ protected:
// device type definition
-extern const device_type A2BUS;
+DECLARE_DEVICE_TYPE(A2BUS, a2bus_device)
// ======================> device_a2bus_card_interface
@@ -145,7 +147,6 @@ class device_a2bus_card_interface : public device_slot_card_interface
friend class a2bus_device;
public:
// construction/destruction
- device_a2bus_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_a2bus_card_interface();
virtual uint8_t read_c0nx(address_space &space, uint8_t offset) { m_device.logerror("a2bus: unhandled read at C0n%x\n", offset); return 0; } // C0nX - /DEVSEL
@@ -186,11 +187,14 @@ public:
// inline configuration
static void static_set_a2bus_tag(device_t &device, const char *tag, const char *slottag);
-public:
+
+protected:
+ device_a2bus_card_interface(const machine_config &mconfig, device_t &device);
+
a2bus_device *m_a2bus;
const char *m_a2bus_tag, *m_a2bus_slottag;
int m_slot;
device_a2bus_card_interface *m_next;
};
-#endif /* __A2BUS_H__ */
+#endif // MAME_BUS_A2BUS_A2BUS_H
diff --git a/src/devices/bus/a2bus/a2cffa.cpp b/src/devices/bus/a2bus/a2cffa.cpp
index a37e33d2779..f4d96f6d436 100644
--- a/src/devices/bus/a2bus/a2cffa.cpp
+++ b/src/devices/bus/a2bus/a2cffa.cpp
@@ -27,8 +27,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_CFFA2 = device_creator<a2bus_cffa2_device>;
-const device_type A2BUS_CFFA2_6502 = device_creator<a2bus_cffa2_6502_device>;
+DEFINE_DEVICE_TYPE(A2BUS_CFFA2, a2bus_cffa2_device, "a2cffa2", "CFFA2000 Compact Flash (65C02 firmware, www.dreher.net)")
+DEFINE_DEVICE_TYPE(A2BUS_CFFA2_6502, a2bus_cffa2_6502_device, "a2cffa02", "CFFA2000 Compact Flash (6502 firmware, www.dreher.net)")
#define CFFA2_ROM_REGION "cffa2_rom"
#define CFFA2_ATA_TAG "cffa2_ata"
@@ -83,21 +83,21 @@ const tiny_rom_entry *a2bus_cffa2_6502_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_cffa2000_device::a2bus_cffa2000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_cffa2000_device::a2bus_cffa2000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_ata(*this, CFFA2_ATA_TAG), m_rom(nullptr), m_lastdata(0), m_lastreaddata(0), m_writeprotect(false), m_inwritecycle(false)
{
}
a2bus_cffa2_device::a2bus_cffa2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_cffa2000_device(mconfig, A2BUS_CFFA2, "CFFA2000 Compact Flash (65C02 firmware, www.dreher.net)", tag, owner, clock, "a2cffa2", __FILE__),
+ a2bus_cffa2000_device(mconfig, A2BUS_CFFA2, tag, owner, clock),
device_nvram_interface(mconfig, *this)
{
}
a2bus_cffa2_6502_device::a2bus_cffa2_6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_cffa2000_device(mconfig, A2BUS_CFFA2_6502, "CFFA2000 Compact Flash (6502 firmware, www.dreher.net)", tag, owner, clock, "a2cffa02", __FILE__),
+ a2bus_cffa2000_device(mconfig, A2BUS_CFFA2_6502, tag, owner, clock),
device_nvram_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/a2bus/a2cffa.h b/src/devices/bus/a2bus/a2cffa.h
index 0c7832bbb93..be326ad037b 100644
--- a/src/devices/bus/a2bus/a2cffa.h
+++ b/src/devices/bus/a2bus/a2cffa.h
@@ -9,8 +9,10 @@
*********************************************************************/
-#ifndef __A2BUS_CFFA2__
-#define __A2BUS_CFFA2__
+#ifndef MAME_BUS_A2BUS_A2CFFA_H
+#define MAME_BUS_A2BUS_A2CFFA_H
+
+#pragma once
#include "a2bus.h"
#include "machine/ataintf.h"
@@ -24,14 +26,14 @@ class a2bus_cffa2000_device:
public device_a2bus_card_interface
{
public:
- // construction/destruction
- a2bus_cffa2000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
+ // construction/destruction
+ a2bus_cffa2000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -79,7 +81,7 @@ protected:
};
// device type definition
-extern const device_type A2BUS_CFFA2;
-extern const device_type A2BUS_CFFA2_6502;
+DECLARE_DEVICE_TYPE(A2BUS_CFFA2, a2bus_cffa2_device)
+DECLARE_DEVICE_TYPE(A2BUS_CFFA2_6502, a2bus_cffa2_6502_device)
-#endif /* __A2BUS_CFFA2__ */
+#endif // MAME_BUS_A2BUS_A2CFFA_H
diff --git a/src/devices/bus/a2bus/a2corvus.cpp b/src/devices/bus/a2bus/a2corvus.cpp
index 7c399b215f4..15e734ddfef 100644
--- a/src/devices/bus/a2bus/a2corvus.cpp
+++ b/src/devices/bus/a2bus/a2corvus.cpp
@@ -52,7 +52,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_CORVUS = device_creator<a2bus_corvus_device>;
+DEFINE_DEVICE_TYPE(A2BUS_CORVUS, a2bus_corvus_device, "a2corvus", "Corvus Flat Cable interface")
#define CORVUS_ROM_REGION "corvus_rom"
#define CORVUS_HD_TAG "corvushd"
@@ -101,17 +101,15 @@ const tiny_rom_entry *a2bus_corvus_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_corvus_device::a2bus_corvus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_corvus_device::a2bus_corvus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_corvushd(*this, CORVUS_HD_TAG), m_rom(nullptr)
{
}
a2bus_corvus_device::a2bus_corvus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_CORVUS, "Corvus Flat Cable interface", tag, owner, clock, "a2corvus", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_corvushd(*this, CORVUS_HD_TAG), m_rom(nullptr)
+ a2bus_corvus_device(mconfig, A2BUS_CORVUS, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2corvus.h b/src/devices/bus/a2bus/a2corvus.h
index a221ef51d45..2a58d280a06 100644
--- a/src/devices/bus/a2bus/a2corvus.h
+++ b/src/devices/bus/a2bus/a2corvus.h
@@ -9,8 +9,10 @@
*********************************************************************/
-#ifndef __A2BUS_CORVUS__
-#define __A2BUS_CORVUS__
+#ifndef MAME_A2BUS_A2CORVUS_H
+#define MAME_A2BUS_A2CORVUS_H
+
+#pragma once
#include "a2bus.h"
#include "machine/corvushd.h"
@@ -25,16 +27,15 @@ class a2bus_corvus_device:
{
public:
// construction/destruction
- a2bus_corvus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_corvus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
- required_device<corvus_hdc_t> m_corvushd;
-
protected:
+ a2bus_corvus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -44,11 +45,13 @@ protected:
virtual uint8_t read_cnxx(address_space &space, uint8_t offset) override;
virtual uint8_t read_c800(address_space &space, uint16_t offset) override;
+ required_device<corvus_hdc_device> m_corvushd;
+
private:
uint8_t *m_rom;
};
// device type definition
-extern const device_type A2BUS_CORVUS;
+DECLARE_DEVICE_TYPE(A2BUS_CORVUS, a2bus_corvus_device)
-#endif /* __A2BUS_CORVUS__ */
+#endif // MAME_A2BUS_A2CORVUS_H
diff --git a/src/devices/bus/a2bus/a2diskii.cpp b/src/devices/bus/a2bus/a2diskii.cpp
index a28cc19076b..71f6895ea44 100644
--- a/src/devices/bus/a2bus/a2diskii.cpp
+++ b/src/devices/bus/a2bus/a2diskii.cpp
@@ -23,9 +23,9 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_DISKII = device_creator<a2bus_diskii_device>;
-const device_type A2BUS_IWM_FDC = device_creator<a2bus_iwmflop_device>;
-const device_type A2BUS_AGAT7_FDC = device_creator<a2bus_agat7flop_device>;
+DEFINE_DEVICE_TYPE(A2BUS_DISKII, a2bus_diskii_device, "a2diskii", "Apple Disk II controller")
+DEFINE_DEVICE_TYPE(A2BUS_IWM_FDC, a2bus_iwmflop_device, "a2iwm_flop", "Apple IWM floppy card")
+DEFINE_DEVICE_TYPE(A2BUS_AGAT7_FDC, a2bus_agat7flop_device, "agat7_flop", "Agat-7 140K floppy card")
#define DISKII_ROM_REGION "diskii_rom"
#define FDC_TAG "diskii_fdc"
@@ -100,25 +100,25 @@ const tiny_rom_entry *a2bus_agat7flop_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_floppy_device::a2bus_floppy_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_a2bus_card_interface(mconfig, *this),
- m_fdc(*this, FDC_TAG), m_rom(nullptr)
+a2bus_floppy_device::a2bus_floppy_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_a2bus_card_interface(mconfig, *this),
+ m_fdc(*this, FDC_TAG), m_rom(nullptr)
{
}
a2bus_diskii_device::a2bus_diskii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_floppy_device(mconfig, A2BUS_DISKII, "Apple Disk II controller", tag, owner, clock, "a2diskii", __FILE__)
+ a2bus_floppy_device(mconfig, A2BUS_DISKII, tag, owner, clock)
{
}
a2bus_iwmflop_device::a2bus_iwmflop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_floppy_device(mconfig, A2BUS_IWM_FDC, "Apple IWM floppy card", tag, owner, clock, "a2iwm_flop", __FILE__)
+ a2bus_floppy_device(mconfig, A2BUS_IWM_FDC, tag, owner, clock)
{
}
a2bus_agat7flop_device::a2bus_agat7flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_floppy_device(mconfig, A2BUS_AGAT7_FDC, "Agat-7 140K floppy card", tag, owner, clock, "agat7_flop", __FILE__)
+ a2bus_floppy_device(mconfig, A2BUS_AGAT7_FDC, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2diskii.h b/src/devices/bus/a2bus/a2diskii.h
index 9d17757a144..b4367fd0aea 100644
--- a/src/devices/bus/a2bus/a2diskii.h
+++ b/src/devices/bus/a2bus/a2diskii.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_DISKII__
-#define __A2BUS_DISKII__
+#ifndef MAME_BUS_A2BUS_A2DISKII_H
+#define MAME_BUS_A2BUS_A2DISKII_H
+
+#pragma once
#include "a2bus.h"
#include "machine/applefdc.h"
@@ -23,14 +25,14 @@ class a2bus_floppy_device:
public device_a2bus_card_interface
{
public:
- // construction/destruction
- a2bus_floppy_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
+ // construction/destruction
+ a2bus_floppy_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -68,8 +70,8 @@ public:
};
// device type definition
-extern const device_type A2BUS_DISKII;
-extern const device_type A2BUS_IWM_FDC;
-extern const device_type A2BUS_AGAT7_FDC;
+DECLARE_DEVICE_TYPE(A2BUS_DISKII, a2bus_diskii_device)
+DECLARE_DEVICE_TYPE(A2BUS_IWM_FDC, a2bus_iwmflop_device)
+DECLARE_DEVICE_TYPE(A2BUS_AGAT7_FDC, a2bus_agat7flop_device)
-#endif /* __A2BUS_DISKII__ */
+#endif // MAME_BUS_A2BUS_A2DISKII_H
diff --git a/src/devices/bus/a2bus/a2diskiing.cpp b/src/devices/bus/a2bus/a2diskiing.cpp
index a1ebc3fb3c1..3235f4ec2ba 100644
--- a/src/devices/bus/a2bus/a2diskiing.cpp
+++ b/src/devices/bus/a2bus/a2diskiing.cpp
@@ -21,7 +21,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_DISKIING = device_creator<a2bus_diskiing_device>;
+DEFINE_DEVICE_TYPE(A2BUS_DISKIING, a2bus_diskiing_device, "a2diskiing", "Apple Disk II NG controller")
#define WOZFDC_TAG "wozfdc"
#define DISKII_ROM_REGION "diskii_rom"
@@ -69,11 +69,12 @@ const tiny_rom_entry *a2bus_diskiing_device::device_rom_region() const
//**************************************************************************
a2bus_diskiing_device::a2bus_diskiing_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_DISKIING, "Apple Disk II NG controller", tag, owner, clock, "a2diskiing", __FILE__),
+ device_t(mconfig, A2BUS_DISKIING, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_wozfdc(*this, WOZFDC_TAG),
floppy0(*this, "0"),
- floppy1(*this, "1"), m_rom(nullptr)
+ floppy1(*this, "1"),
+ m_rom(nullptr)
{
}
diff --git a/src/devices/bus/a2bus/a2diskiing.h b/src/devices/bus/a2bus/a2diskiing.h
index 76e16818700..68c705435e6 100644
--- a/src/devices/bus/a2bus/a2diskiing.h
+++ b/src/devices/bus/a2bus/a2diskiing.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_DISKIING__
-#define __A2BUS_DISKIING__
+#ifndef MAME_BUS_A2BUS_A2DISKIING_H
+#define MAME_BUS_A2BUS_A2DISKIING_H
+
+#pragma once
#include "a2bus.h"
#include "imagedev/floppy.h"
@@ -45,7 +47,7 @@ protected:
virtual uint8_t read_cnxx(address_space &space, uint8_t offset) override;
private:
- required_device<diskii_fdc> m_wozfdc;
+ required_device<diskii_fdc_device> m_wozfdc;
required_device<floppy_connector> floppy0;
required_device<floppy_connector> floppy1;
@@ -53,6 +55,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_DISKIING;
+DECLARE_DEVICE_TYPE(A2BUS_DISKIING, a2bus_diskiing_device)
-#endif /* __A2BUS_DISKIING__ */
+#endif // MAME_BUS_A2BUS_A2DISKIING_H
diff --git a/src/devices/bus/a2bus/a2dx1.cpp b/src/devices/bus/a2bus/a2dx1.cpp
index 16b68bb2e81..16ec11d63d0 100644
--- a/src/devices/bus/a2bus/a2dx1.cpp
+++ b/src/devices/bus/a2bus/a2dx1.cpp
@@ -21,7 +21,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_DX1 = device_creator<a2bus_dx1_device>;
+DEFINE_DEVICE_TYPE(A2BUS_DX1, a2bus_dx1_device, "a2dx1", "Decillonix DX-1")
MACHINE_CONFIG_FRAGMENT( a2dx1 )
MCFG_SPEAKER_STANDARD_MONO("speaker")
@@ -50,8 +50,8 @@ machine_config_constructor a2bus_dx1_device::device_mconfig_additions() const
// LIVE DEVICE
//**************************************************************************
-a2bus_dx1_device::a2bus_dx1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_dx1_device::a2bus_dx1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_dac(*this, "dac"),
m_dacvol(*this, "dacvol")
@@ -59,10 +59,7 @@ a2bus_dx1_device::a2bus_dx1_device(const machine_config &mconfig, device_type ty
}
a2bus_dx1_device::a2bus_dx1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_DX1, "Decillonix DX-1", tag, owner, clock, "a2dx1", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_dac(*this, "dac"),
- m_dacvol(*this, "dacvol")
+ a2bus_dx1_device(mconfig, A2BUS_DX1, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2dx1.h b/src/devices/bus/a2bus/a2dx1.h
index a5c60a19ffa..f831e5777a6 100644
--- a/src/devices/bus/a2bus/a2dx1.h
+++ b/src/devices/bus/a2bus/a2dx1.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_DX1__
-#define __A2BUS_DX1__
+#ifndef MAME_BUS_A2BUS_A2DX1_H
+#define MAME_BUS_A2BUS_A2DX1_H
+
+#pragma once
#include "a2bus.h"
#include "sound/dac.h"
@@ -24,25 +26,26 @@ class a2bus_dx1_device:
{
public:
// construction/destruction
- a2bus_dx1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_dx1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- required_device<dac_byte_interface> m_dac;
- required_device<dac_byte_interface> m_dacvol;
-
protected:
+ a2bus_dx1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
// overrides of standard a2bus slot functions
virtual uint8_t read_c0nx(address_space &space, uint8_t offset) override;
virtual void write_c0nx(address_space &space, uint8_t offset, uint8_t data) override;
virtual bool take_c800() override;
+
+ required_device<dac_byte_interface> m_dac;
+ required_device<dac_byte_interface> m_dacvol;
};
// device type definition
-extern const device_type A2BUS_DX1;
+DECLARE_DEVICE_TYPE(A2BUS_DX1, a2bus_dx1_device)
-#endif /* __A2BUS_DX1__ */
+#endif // MAME_BUS_A2BUS_A2DX1_H
diff --git a/src/devices/bus/a2bus/a2eauxslot.cpp b/src/devices/bus/a2bus/a2eauxslot.cpp
index 8fc2f7a8137..7e3ba7ca8e3 100644
--- a/src/devices/bus/a2bus/a2eauxslot.cpp
+++ b/src/devices/bus/a2bus/a2eauxslot.cpp
@@ -16,7 +16,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2EAUXSLOT_SLOT = device_creator<a2eauxslot_slot_device>;
+DEFINE_DEVICE_TYPE(A2EAUXSLOT_SLOT, a2eauxslot_slot_device, "a2eauxslot_slot", "Apple IIe AUX Slot")
//**************************************************************************
// LIVE DEVICE
@@ -25,17 +25,16 @@ const device_type A2EAUXSLOT_SLOT = device_creator<a2eauxslot_slot_device>;
//-------------------------------------------------
// a2eauxslot_slot_device - constructor
//-------------------------------------------------
-a2eauxslot_slot_device::a2eauxslot_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2EAUXSLOT_SLOT, "Apple IIe AUX Slot", tag, owner, clock, "a2eauxslot_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_a2eauxslot_tag(nullptr),
- m_a2eauxslot_slottag(nullptr)
+a2eauxslot_slot_device::a2eauxslot_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : a2eauxslot_slot_device(mconfig, A2EAUXSLOT_SLOT, tag, owner, clock)
{
}
-a2eauxslot_slot_device::a2eauxslot_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_interface(mconfig, *this), m_a2eauxslot_tag(nullptr), m_a2eauxslot_slottag(nullptr)
+a2eauxslot_slot_device::a2eauxslot_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_slot_interface(mconfig, *this)
+ , m_a2eauxslot_tag(nullptr)
+ , m_a2eauxslot_slottag(nullptr)
{
}
@@ -61,7 +60,7 @@ void a2eauxslot_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2EAUXSLOT = device_creator<a2eauxslot_device>;
+DEFINE_DEVICE_TYPE(A2EAUXSLOT, a2eauxslot_device, "a2eauxslot", "Apple IIe AUX Bus")
void a2eauxslot_device::static_set_cputag(device_t &device, const char *tag)
{
@@ -77,17 +76,18 @@ void a2eauxslot_device::static_set_cputag(device_t &device, const char *tag)
// a2eauxslot_device - constructor
//-------------------------------------------------
-a2eauxslot_device::a2eauxslot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2EAUXSLOT, "Apple IIe AUX Bus", tag, owner, clock, "a2eauxslot", __FILE__), m_maincpu(nullptr),
- m_out_irq_cb(*this),
- m_out_nmi_cb(*this), m_device(nullptr), m_cputag(nullptr)
+a2eauxslot_device::a2eauxslot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : a2eauxslot_device(mconfig, A2EAUXSLOT, tag, owner, clock)
{
}
-a2eauxslot_device::a2eauxslot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source), m_maincpu(nullptr),
- m_out_irq_cb(*this),
- m_out_nmi_cb(*this), m_device(nullptr), m_cputag(nullptr)
+a2eauxslot_device::a2eauxslot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_maincpu(nullptr)
+ , m_out_irq_cb(*this)
+ , m_out_nmi_cb(*this)
+ , m_device(nullptr)
+ , m_cputag(nullptr)
{
}
//-------------------------------------------------
diff --git a/src/devices/bus/a2bus/a2eauxslot.h b/src/devices/bus/a2bus/a2eauxslot.h
index e697ae17844..b7c3dec55bd 100644
--- a/src/devices/bus/a2bus/a2eauxslot.h
+++ b/src/devices/bus/a2bus/a2eauxslot.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_A2BUS_A2EAUXSLOT_H
+#define MAME_BUS_A2BUS_A2EAUXSLOT_H
-#ifndef __A2EAUXSLOT_H__
-#define __A2EAUXSLOT_H__
+#pragma once
#include "a2bus.h"
@@ -47,20 +47,22 @@ class a2eauxslot_slot_device : public device_t,
public:
// construction/destruction
a2eauxslot_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2eauxslot_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// device-level overrides
virtual void device_start() override;
// inline configuration
static void static_set_a2eauxslot_slot(device_t &device, const char *tag, const char *slottag);
+
protected:
+ a2eauxslot_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// configuration
const char *m_a2eauxslot_tag, *m_a2eauxslot_slottag;
};
// device type definition
-extern const device_type A2EAUXSLOT_SLOT;
+DECLARE_DEVICE_TYPE(A2EAUXSLOT_SLOT, a2eauxslot_slot_device)
class device_a2eauxslot_card_interface;
@@ -71,12 +73,11 @@ class a2eauxslot_device : public device_t
public:
// construction/destruction
a2eauxslot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2eauxslot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// inline configuration
static void static_set_cputag(device_t &device, const char *tag);
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<a2eauxslot_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_nmi_callback(device_t &device, _Object object) { return downcast<a2eauxslot_device &>(device).m_out_nmi_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<a2eauxslot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<a2eauxslot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
void add_a2eauxslot_card(device_a2eauxslot_card_interface *card);
device_a2eauxslot_card_interface *get_a2eauxslot_card();
@@ -88,6 +89,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( nmi_w );
protected:
+ a2eauxslot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -105,6 +108,7 @@ protected:
// device type definition
extern const device_type A2EAUXSLOT;
+DECLARE_DEVICE_TYPE(A2EAUXSLOT, a2eauxslot_device)
// ======================> device_a2eauxslot_card_interface
@@ -114,7 +118,6 @@ class device_a2eauxslot_card_interface : public device_slot_card_interface
friend class a2eauxslot_device;
public:
// construction/destruction
- device_a2eauxslot_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_a2eauxslot_card_interface();
virtual uint8_t read_auxram(uint16_t offset) { printf("a2eauxslot: unhandled auxram read @ %04x\n", offset); return 0xff; }
@@ -135,11 +138,14 @@ public:
// inline configuration
static void static_set_a2eauxslot_tag(device_t &device, const char *tag, const char *slottag);
-public:
+
+protected:
+ device_a2eauxslot_card_interface(const machine_config &mconfig, device_t &device);
+
a2eauxslot_device *m_a2eauxslot;
const char *m_a2eauxslot_tag, *m_a2eauxslot_slottag;
int m_slot;
device_a2eauxslot_card_interface *m_next;
};
-#endif /* __A2EAUXSLOT_H__ */
+#endif // MAME_BUS_A2BUS_A2EAUXSLOT_H
diff --git a/src/devices/bus/a2bus/a2echoii.cpp b/src/devices/bus/a2bus/a2echoii.cpp
index 3803af3fce4..6ea4ca68e48 100644
--- a/src/devices/bus/a2bus/a2echoii.cpp
+++ b/src/devices/bus/a2bus/a2echoii.cpp
@@ -21,7 +21,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_ECHOII = device_creator<a2bus_echoii_device>;
+DEFINE_DEVICE_TYPE(A2BUS_ECHOII, a2bus_echoii_device, "a2echoii", "Street Electronics Echo II")
#define TMS_TAG "tms5220"
@@ -49,17 +49,15 @@ machine_config_constructor a2bus_echoii_device::device_mconfig_additions() const
// LIVE DEVICE
//**************************************************************************
-a2bus_echoii_device::a2bus_echoii_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_echoii_device::a2bus_echoii_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_tms(*this, TMS_TAG)
{
}
a2bus_echoii_device::a2bus_echoii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_ECHOII, "Street Electronics Echo II", tag, owner, clock, "a2echoii", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_tms(*this, TMS_TAG)
+ a2bus_echoii_device(mconfig, A2BUS_ECHOII, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2echoii.h b/src/devices/bus/a2bus/a2echoii.h
index 2dcdf849797..d0781e0c4d9 100644
--- a/src/devices/bus/a2bus/a2echoii.h
+++ b/src/devices/bus/a2bus/a2echoii.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_ECHOII__
-#define __A2BUS_ECHOII__
+#ifndef MAME_BUS_A2BUS_A2ECHOII_H
+#define MAME_BUS_A2BUS_A2ECHOII_H
+
+#pragma once
#include "a2bus.h"
#include "sound/tms5220.h"
@@ -24,7 +26,6 @@ class a2bus_echoii_device:
{
public:
// construction/destruction
- a2bus_echoii_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_echoii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -33,6 +34,8 @@ public:
required_device<tms5220_device> m_tms;
protected:
+ a2bus_echoii_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -44,5 +47,6 @@ protected:
// device type definition
extern const device_type A2BUS_ECHOII;
+DECLARE_DEVICE_TYPE(A2BUS_ECHOII, a2bus_echoii_device)
-#endif /* __A2BUS_ECHOII__ */
+#endif // MAME_BUS_A2BUS_A2ECHOII_H
diff --git a/src/devices/bus/a2bus/a2eext80col.cpp b/src/devices/bus/a2bus/a2eext80col.cpp
index d7732804f58..b98d31c0d5c 100644
--- a/src/devices/bus/a2bus/a2eext80col.cpp
+++ b/src/devices/bus/a2bus/a2eext80col.cpp
@@ -20,20 +20,19 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2EAUX_EXT80COL = device_creator<a2eaux_ext80col_device>;
+DEFINE_DEVICE_TYPE(A2EAUX_EXT80COL, a2eaux_ext80col_device, "a2eext80", "Apple IIe Extended 80-Column Card")
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
a2eaux_ext80col_device::a2eaux_ext80col_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2EAUX_EXT80COL, "Apple IIe Extended 80-Column Card", tag, owner, clock, "a2eext80", __FILE__),
- device_a2eauxslot_card_interface(mconfig, *this)
+ a2eaux_ext80col_device(mconfig, A2EAUX_EXT80COL, tag, owner, clock)
{
}
-a2eaux_ext80col_device::a2eaux_ext80col_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2eaux_ext80col_device::a2eaux_ext80col_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2eauxslot_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/a2bus/a2eext80col.h b/src/devices/bus/a2bus/a2eext80col.h
index 09762dce2cc..2aa89586f5b 100644
--- a/src/devices/bus/a2bus/a2eext80col.h
+++ b/src/devices/bus/a2bus/a2eext80col.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2EAUX_EXT80COL__
-#define __A2EAUX_EXT80COL__
+#ifndef MAME_BUS_A2BUS_A2EEXT809COL_H
+#define MAME_BUS_A2BUS_A2EEXT809COL_H
+
+#pragma once
#include "a2eauxslot.h"
@@ -24,9 +26,10 @@ class a2eaux_ext80col_device:
public:
// construction/destruction
a2eaux_ext80col_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2eaux_ext80col_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ a2eaux_ext80col_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -41,6 +44,6 @@ private:
};
// device type definition
-extern const device_type A2EAUX_EXT80COL;
+DECLARE_DEVICE_TYPE(A2EAUX_EXT80COL, a2eaux_ext80col_device)
-#endif /* __A2EAUX_EXT80COL__ */
+#endif // MAME_BUS_A2BUS_A2EEXT809COL_H
diff --git a/src/devices/bus/a2bus/a2eramworks3.cpp b/src/devices/bus/a2bus/a2eramworks3.cpp
index 587165e81e4..e82225cbd27 100644
--- a/src/devices/bus/a2bus/a2eramworks3.cpp
+++ b/src/devices/bus/a2bus/a2eramworks3.cpp
@@ -21,22 +21,21 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2EAUX_RAMWORKS3 = device_creator<a2eaux_ramworks3_device>;
+DEFINE_DEVICE_TYPE(A2EAUX_RAMWORKS3, a2eaux_ramworks3_device, "a2erwks3", "Applied Engineering RamWorks III")
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
a2eaux_ramworks3_device::a2eaux_ramworks3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2EAUX_RAMWORKS3, "Applied Engineering RamWorks III", tag, owner, clock, "a2erwks3", __FILE__),
- device_a2eauxslot_card_interface(mconfig, *this),
- m_bank(0)
+ a2eaux_ramworks3_device(mconfig, A2EAUX_RAMWORKS3, tag, owner, clock)
{
}
-a2eaux_ramworks3_device::a2eaux_ramworks3_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_a2eauxslot_card_interface(mconfig, *this), m_bank(0)
+a2eaux_ramworks3_device::a2eaux_ramworks3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_a2eauxslot_card_interface(mconfig, *this),
+ m_bank(0)
{
}
diff --git a/src/devices/bus/a2bus/a2eramworks3.h b/src/devices/bus/a2bus/a2eramworks3.h
index 75c8872d1cb..f2b327ebfab 100644
--- a/src/devices/bus/a2bus/a2eramworks3.h
+++ b/src/devices/bus/a2bus/a2eramworks3.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef __A2EAUX_RAMWORKS3__
-#define __A2EAUX_RAMWORKS3__
+#ifndef MAME_BUS_A2BUS_A2ERAMWORKS3_H
+#define MAME_BUS_A2BUS_A2ERAMWORKS3_H
#include "a2eauxslot.h"
@@ -24,9 +24,10 @@ class a2eaux_ramworks3_device:
public:
// construction/destruction
a2eaux_ramworks3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2eaux_ramworks3_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ a2eaux_ramworks3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -43,6 +44,6 @@ private:
};
// device type definition
-extern const device_type A2EAUX_RAMWORKS3;
+DECLARE_DEVICE_TYPE(A2EAUX_RAMWORKS3, a2eaux_ramworks3_device)
-#endif /* __A2EAUX_RAMWORKS3__ */
+#endif // MAME_BUS_A2BUS_A2ERAMWORKS3_H
diff --git a/src/devices/bus/a2bus/a2estd80col.cpp b/src/devices/bus/a2bus/a2estd80col.cpp
index a32b6750c77..e5a9741e7a0 100644
--- a/src/devices/bus/a2bus/a2estd80col.cpp
+++ b/src/devices/bus/a2bus/a2estd80col.cpp
@@ -20,20 +20,19 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2EAUX_STD80COL = device_creator<a2eaux_std80col_device>;
+DEFINE_DEVICE_TYPE(A2EAUX_STD80COL, a2eaux_std80col_device, "a2estd80", "Apple IIe Standard 80-Column Card")
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
a2eaux_std80col_device::a2eaux_std80col_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2EAUX_STD80COL, "Apple IIe Standard 80-Column Card", tag, owner, clock, "a2estd80", __FILE__),
- device_a2eauxslot_card_interface(mconfig, *this)
+ a2eaux_std80col_device(mconfig, A2EAUX_STD80COL, tag, owner, clock)
{
}
-a2eaux_std80col_device::a2eaux_std80col_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2eaux_std80col_device::a2eaux_std80col_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2eauxslot_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/a2bus/a2estd80col.h b/src/devices/bus/a2bus/a2estd80col.h
index bd483863b1d..6f81860487d 100644
--- a/src/devices/bus/a2bus/a2estd80col.h
+++ b/src/devices/bus/a2bus/a2estd80col.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2EAUX_STD80COL__
-#define __A2EAUX_STD80COL__
+#ifndef MAME_BUS_A2BUS_A2ESTD80COL_H
+#define MAME_BUS_A2BUS_A2ESTD80COL_H
+
+#pragma once
#include "a2eauxslot.h"
@@ -24,9 +26,10 @@ class a2eaux_std80col_device:
public:
// construction/destruction
a2eaux_std80col_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2eaux_std80col_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ a2eaux_std80col_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -41,6 +44,6 @@ private:
};
// device type definition
-extern const device_type A2EAUX_STD80COL;
+DECLARE_DEVICE_TYPE(A2EAUX_STD80COL, a2eaux_std80col_device)
-#endif /* __A2EAUX_STD80COL__ */
+#endif // MAME_BUS_A2BUS_A2ESTD80COL_H
diff --git a/src/devices/bus/a2bus/a2hsscsi.cpp b/src/devices/bus/a2bus/a2hsscsi.cpp
index 7584c73d836..118ad966630 100644
--- a/src/devices/bus/a2bus/a2hsscsi.cpp
+++ b/src/devices/bus/a2bus/a2hsscsi.cpp
@@ -51,7 +51,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_HSSCSI = device_creator<a2bus_hsscsi_device>;
+DEFINE_DEVICE_TYPE(A2BUS_HSSCSI, a2bus_hsscsi_device, "a2hsscsi", "Apple II High-Speed SCSI Card")
#define SCSI_ROM_REGION "scsi_rom"
#define SCSI_BUS_TAG "scsibus"
@@ -113,8 +113,8 @@ const tiny_rom_entry *a2bus_hsscsi_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_hsscsi_device::a2bus_hsscsi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_hsscsi_device::a2bus_hsscsi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_ncr5380(*this, SCSI_5380_TAG),
m_scsibus(*this, SCSI_BUS_TAG), m_rom(nullptr), m_rambank(0), m_rombank(0), m_drq(0), m_bank(0), m_816block(false), m_c0ne(0), m_c0nf(0)
@@ -122,10 +122,7 @@ a2bus_hsscsi_device::a2bus_hsscsi_device(const machine_config &mconfig, device_t
}
a2bus_hsscsi_device::a2bus_hsscsi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_HSSCSI, "Apple II High-Speed SCSI Card", tag, owner, clock, "a2hsscsi", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_ncr5380(*this, SCSI_5380_TAG),
- m_scsibus(*this, SCSI_BUS_TAG), m_rom(nullptr), m_rambank(0), m_rombank(0), m_drq(0), m_bank(0), m_816block(false), m_c0ne(0), m_c0nf(0)
+ a2bus_hsscsi_device(mconfig, A2BUS_HSSCSI, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2hsscsi.h b/src/devices/bus/a2bus/a2hsscsi.h
index 344253cd1ef..c4ff4d0a0b1 100644
--- a/src/devices/bus/a2bus/a2hsscsi.h
+++ b/src/devices/bus/a2bus/a2hsscsi.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_HSSCSI__
-#define __A2BUS_HSSCSI__
+#ifndef MAME_BUS_A2BUS_A2HSSCSI_H
+#define MAME_BUS_A2BUS_A2HSSCSI_H
+
+#pragma once
#include "a2bus.h"
#include "machine/ncr5380n.h"
@@ -24,19 +26,17 @@ class a2bus_hsscsi_device:
{
public:
// construction/destruction
- a2bus_hsscsi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_hsscsi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
- required_device<ncr5380n_device> m_ncr5380;
- required_device<nscsi_bus_device> m_scsibus;
-
DECLARE_WRITE_LINE_MEMBER( drq_w );
protected:
+ a2bus_hsscsi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -48,6 +48,9 @@ protected:
virtual uint8_t read_c800(address_space &space, uint16_t offset) override;
virtual void write_c800(address_space &space, uint16_t offset, uint8_t data) override;
+ required_device<ncr5380n_device> m_ncr5380;
+ required_device<nscsi_bus_device> m_scsibus;
+
private:
uint8_t *m_rom;
uint8_t m_ram[8192]; // 8 banks of 1024 bytes
@@ -59,6 +62,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_HSSCSI;
+DECLARE_DEVICE_TYPE(A2BUS_HSSCSI, a2bus_hsscsi_device)
-#endif /* __A2BUS_HSSCSI__ */
+#endif // MAME_BUS_A2BUS_A2HSSCSI_H
diff --git a/src/devices/bus/a2bus/a2mcms.cpp b/src/devices/bus/a2bus/a2mcms.cpp
index 891bc51c0a0..da2459408a0 100644
--- a/src/devices/bus/a2bus/a2mcms.cpp
+++ b/src/devices/bus/a2bus/a2mcms.cpp
@@ -23,7 +23,7 @@ enum
};
-const device_type MCMS = device_creator<mcms_device>;
+DEFINE_DEVICE_TYPE(MCMS, mcms_device, "mcmseng", "Mountain Computer Music System engine")
/***************************************************************************
PARAMETERS
@@ -33,8 +33,8 @@ const device_type MCMS = device_creator<mcms_device>;
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_MCMS1 = device_creator<a2bus_mcms1_device>;
-const device_type A2BUS_MCMS2 = device_creator<a2bus_mcms2_device>;
+DEFINE_DEVICE_TYPE(A2BUS_MCMS1, a2bus_mcms1_device, "a2mcms1", "Mountain Computer Music System (card 1)")
+DEFINE_DEVICE_TYPE(A2BUS_MCMS2, a2bus_mcms2_device, "a2mcms2", "Mountain Computer Music System (card 2)")
#define ENGINE_TAG "engine"
@@ -69,17 +69,15 @@ machine_config_constructor a2bus_mcms1_device::device_mconfig_additions() const
// LIVE DEVICE - Card 1
//**************************************************************************
-a2bus_mcms1_device::a2bus_mcms1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_mcms1_device::a2bus_mcms1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_mcms(*this, ENGINE_TAG)
{
}
a2bus_mcms1_device::a2bus_mcms1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_MCMS1, "Mountain Computer Music System (card 1)", tag, owner, clock, "a2mcms1", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_mcms(*this, ENGINE_TAG)
+ a2bus_mcms1_device(mconfig, A2BUS_MCMS1, tag, owner, clock)
{
}
@@ -150,15 +148,14 @@ WRITE_LINE_MEMBER(a2bus_mcms1_device::irq_w)
// LIVE DEVICE - Card 2
//**************************************************************************
-a2bus_mcms2_device::a2bus_mcms2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_mcms2_device::a2bus_mcms2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this), m_card1(nullptr), m_engine(nullptr)
{
}
a2bus_mcms2_device::a2bus_mcms2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_MCMS2, "Mountain Computer Music System (card 2)", tag, owner, clock, "a2mcms2", __FILE__),
- device_a2bus_card_interface(mconfig, *this), m_card1(nullptr), m_engine(nullptr)
+ a2bus_mcms2_device(mconfig, A2BUS_MCMS2, tag, owner, clock)
{
}
@@ -214,7 +211,7 @@ void a2bus_mcms2_device::write_cnxx(address_space &space, uint8_t offset, uint8_
*/
mcms_device::mcms_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MCMS, "Mountain Computer Music System engine", tag, owner, clock, "msmseng", __FILE__),
+ : device_t(mconfig, MCMS, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_write_irq(*this), m_stream(nullptr), m_timer(nullptr), m_clrtimer(nullptr), m_pBusDevice(nullptr), m_enabled(false), m_mastervol(0), m_rand(0)
{
diff --git a/src/devices/bus/a2bus/a2mcms.h b/src/devices/bus/a2bus/a2mcms.h
index 9877b8e945b..e854169bae3 100644
--- a/src/devices/bus/a2bus/a2mcms.h
+++ b/src/devices/bus/a2bus/a2mcms.h
@@ -10,8 +10,8 @@
*********************************************************************/
-#ifndef __A2BUS_MCMS__
-#define __A2BUS_MCMS__
+#ifndef MAME_BUS_A2BUS_A2MCMS_H
+#define MAME_BUS_A2BUS_A2MCMS_H
#include "a2bus.h"
@@ -64,7 +64,6 @@ class a2bus_mcms1_device:
{
public:
// construction/destruction
- a2bus_mcms1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_mcms1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -78,6 +77,8 @@ public:
required_device<mcms_device> m_mcms;
protected:
+ a2bus_mcms1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -95,10 +96,11 @@ class a2bus_mcms2_device:
{
public:
// construction/destruction
- a2bus_mcms2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_mcms2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
+ a2bus_mcms2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -114,7 +116,7 @@ private:
};
// device type definition
-extern const device_type A2BUS_MCMS1;
-extern const device_type A2BUS_MCMS2;
+DECLARE_DEVICE_TYPE(A2BUS_MCMS1, a2bus_mcms1_device)
+DECLARE_DEVICE_TYPE(A2BUS_MCMS2, a2bus_mcms2_device)
-#endif /* __A2BUS_MCMS__ */
+#endif // MAME_BUS_A2BUS_A2MCMS_H
diff --git a/src/devices/bus/a2bus/a2memexp.cpp b/src/devices/bus/a2bus/a2memexp.cpp
index ebd2bb4dc9a..df9d39dbdc8 100644
--- a/src/devices/bus/a2bus/a2memexp.cpp
+++ b/src/devices/bus/a2bus/a2memexp.cpp
@@ -20,8 +20,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_MEMEXP = device_creator<a2bus_memexpapple_device>;
-const device_type A2BUS_RAMFACTOR = device_creator<a2bus_ramfactor_device>;
+DEFINE_DEVICE_TYPE(A2BUS_MEMEXP, a2bus_memexpapple_device, "a2memexp", "Apple II Memory Expansion Card")
+DEFINE_DEVICE_TYPE(A2BUS_RAMFACTOR, a2bus_ramfactor_device, "a2ramfac", "Applied Engineering RamFactor")
#define MEMEXP_ROM_REGION "memexp_rom"
@@ -73,14 +73,14 @@ const tiny_rom_entry *a2bus_ramfactor_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_memexp_device::a2bus_memexp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_memexp_device::a2bus_memexp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this), m_isramfactor(false), m_bankhior(0), m_addrmask(0), m_rom(nullptr), m_wptr(0), m_liveptr(0)
{
}
a2bus_memexpapple_device::a2bus_memexpapple_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_memexp_device(mconfig, A2BUS_MEMEXP, "Apple II Memory Expansion Card", tag, owner, clock, "a2memexp", __FILE__)
+ a2bus_memexp_device(mconfig, A2BUS_MEMEXP, tag, owner, clock)
{
m_isramfactor = false;
m_bankhior = 0xf0;
@@ -88,7 +88,7 @@ a2bus_memexpapple_device::a2bus_memexpapple_device(const machine_config &mconfig
}
a2bus_ramfactor_device::a2bus_ramfactor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_memexp_device(mconfig, A2BUS_RAMFACTOR, "Applied Engineering RamFactor", tag, owner, clock, "a2ramfac", __FILE__)
+ a2bus_memexp_device(mconfig, A2BUS_RAMFACTOR, tag, owner, clock)
{
m_isramfactor = true;
m_bankhior = 0x00;
diff --git a/src/devices/bus/a2bus/a2memexp.h b/src/devices/bus/a2bus/a2memexp.h
index 554ff0c0c13..d3b4e76ef16 100644
--- a/src/devices/bus/a2bus/a2memexp.h
+++ b/src/devices/bus/a2bus/a2memexp.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_MEMEXP__
-#define __A2BUS_MEMEXP__
+#ifndef MAME_BUS_A2BUS_A2MEMEXP_H
+#define MAME_BUS_A2BUS_A2MEMEXP_H
+
+#pragma once
#include "a2bus.h"
@@ -22,9 +24,6 @@ class a2bus_memexp_device:
public device_a2bus_card_interface
{
public:
- // construction/destruction
- a2bus_memexp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -34,6 +33,9 @@ public:
int m_addrmask;
protected:
+ // construction/destruction
+ a2bus_memexp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -65,7 +67,7 @@ public:
};
// device type definition
-extern const device_type A2BUS_MEMEXP;
-extern const device_type A2BUS_RAMFACTOR;
+DECLARE_DEVICE_TYPE(A2BUS_MEMEXP, a2bus_memexpapple_device)
+DECLARE_DEVICE_TYPE(A2BUS_RAMFACTOR, a2bus_ramfactor_device)
-#endif /* __A2BUS_MEMEXP__ */
+#endif // MAME_BUS_A2BUS_A2MEMEXP_H
diff --git a/src/devices/bus/a2bus/a2midi.cpp b/src/devices/bus/a2bus/a2midi.cpp
index f8a9df64e8d..eff2cd8bcbf 100644
--- a/src/devices/bus/a2bus/a2midi.cpp
+++ b/src/devices/bus/a2bus/a2midi.cpp
@@ -22,7 +22,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_MIDI = device_creator<a2bus_midi_device>;
+DEFINE_DEVICE_TYPE(A2BUS_MIDI, a2bus_midi_device, "a2midi", "6850 MIDI card")
#define MIDI_PTM_TAG "midi_ptm"
#define MIDI_ACIA_TAG "midi_acia"
@@ -60,16 +60,12 @@ machine_config_constructor a2bus_midi_device::device_mconfig_additions() const
//**************************************************************************
a2bus_midi_device::a2bus_midi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_MIDI, "6850 MIDI card", tag, owner, clock, "a2midi", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_ptm(*this, MIDI_PTM_TAG),
- m_acia(*this, MIDI_ACIA_TAG), m_acia_irq(false),
- m_ptm_irq(false)
+ a2bus_midi_device(mconfig, A2BUS_MIDI, tag, owner, clock)
{
}
-a2bus_midi_device::a2bus_midi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_midi_device::a2bus_midi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_ptm(*this, MIDI_PTM_TAG),
m_acia(*this, MIDI_ACIA_TAG), m_acia_irq(false),
diff --git a/src/devices/bus/a2bus/a2midi.h b/src/devices/bus/a2bus/a2midi.h
index 3442805ed49..7852dbea2f4 100644
--- a/src/devices/bus/a2bus/a2midi.h
+++ b/src/devices/bus/a2bus/a2midi.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_MIDI__
-#define __A2BUS_MIDI__
+#ifndef MAME_BUS_A2BUS_A2MIDI_H
+#define MAME_BUS_A2BUS_A2MIDI_H
+
+#pragma once
#include "a2bus.h"
#include "machine/6840ptm.h"
@@ -26,7 +28,6 @@ class a2bus_midi_device:
public:
// construction/destruction
a2bus_midi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2bus_midi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -36,6 +37,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( write_acia_clock );
protected:
+ a2bus_midi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -50,6 +53,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_MIDI;
+DECLARE_DEVICE_TYPE(A2BUS_MIDI, a2bus_midi_device)
-#endif /* __A2BUS_MIDI__ */
+#endif // MAME_BUS_A2BUS_A2MIDI_H
diff --git a/src/devices/bus/a2bus/a2mockingboard.cpp b/src/devices/bus/a2bus/a2mockingboard.cpp
index 98c33c6fd09..9492b2f2060 100644
--- a/src/devices/bus/a2bus/a2mockingboard.cpp
+++ b/src/devices/bus/a2bus/a2mockingboard.cpp
@@ -30,9 +30,9 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_MOCKINGBOARD = device_creator<a2bus_mockingboard_device>;
-const device_type A2BUS_PHASOR = device_creator<a2bus_phasor_device>;
-const device_type A2BUS_ECHOPLUS = device_creator<a2bus_echoplus_device>;
+DEFINE_DEVICE_TYPE(A2BUS_MOCKINGBOARD, a2bus_mockingboard_device, "a2mockbd", "Sweet Micro Systems Mockingboard")
+DEFINE_DEVICE_TYPE(A2BUS_PHASOR, a2bus_phasor_device, "a2phasor", "Applied Engineering Phasor")
+DEFINE_DEVICE_TYPE(A2BUS_ECHOPLUS, a2bus_echoplus_device, "a2echop", "Street Electronics Echo Plus")
MACHINE_CONFIG_FRAGMENT( mockingboard )
MCFG_DEVICE_ADD(VIA1_TAG, VIA6522, 1022727)
@@ -121,8 +121,8 @@ machine_config_constructor a2bus_echoplus_device::device_mconfig_additions() con
// LIVE DEVICE
//**************************************************************************
-a2bus_ayboard_device::a2bus_ayboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_ayboard_device::a2bus_ayboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_via1(*this, VIA1_TAG),
m_via2(*this, VIA2_TAG),
@@ -134,21 +134,21 @@ a2bus_ayboard_device::a2bus_ayboard_device(const machine_config &mconfig, device
}
a2bus_mockingboard_device::a2bus_mockingboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_ayboard_device(mconfig, A2BUS_MOCKINGBOARD, "Sweet Micro Systems Mockingboard", tag, owner, clock, "a2mockbd", __FILE__)
+ a2bus_ayboard_device(mconfig, A2BUS_MOCKINGBOARD, tag, owner, clock)
{
m_isPhasor = false;
m_PhasorNative = false;
}
a2bus_phasor_device::a2bus_phasor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_ayboard_device(mconfig, A2BUS_PHASOR, "Applied Engineering Phasor", tag, owner, clock, "a2phasor", __FILE__)
+ a2bus_ayboard_device(mconfig, A2BUS_PHASOR, tag, owner, clock)
{
m_isPhasor = true;
m_PhasorNative = false;
}
a2bus_echoplus_device::a2bus_echoplus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_ayboard_device(mconfig, A2BUS_ECHOPLUS, "Street Electronics Echo Plus", tag, owner, clock, "a2echop", __FILE__),
+ a2bus_ayboard_device(mconfig, A2BUS_ECHOPLUS, tag, owner, clock),
m_tms(*this, E2P_TMS_TAG)
{
m_isPhasor = false;
diff --git a/src/devices/bus/a2bus/a2mockingboard.h b/src/devices/bus/a2bus/a2mockingboard.h
index 279f06c0110..870e1dd2f15 100644
--- a/src/devices/bus/a2bus/a2mockingboard.h
+++ b/src/devices/bus/a2bus/a2mockingboard.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef __A2BUS_MOCKINGBOARD__
-#define __A2BUS_MOCKINGBOARD__
+#ifndef MAME_BUS_A2BUS_A2MOCKINGBOARD_H
+#define MAME_BUS_A2BUS_A2MOCKINGBOARD_H
#include "a2bus.h"
#include "machine/6522via.h"
@@ -25,9 +25,6 @@ class a2bus_ayboard_device:
public device_a2bus_card_interface
{
public:
- // construction/destruction
- a2bus_ayboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -39,6 +36,9 @@ public:
DECLARE_WRITE8_MEMBER(via2_out_b);
protected:
+ // construction/destruction
+ a2bus_ayboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -80,17 +80,18 @@ class a2bus_echoplus_device : public a2bus_ayboard_device
public:
a2bus_echoplus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual machine_config_constructor device_mconfig_additions() const override;
+
+protected:
virtual uint8_t read_c0nx(address_space &space, uint8_t offset) override;
virtual void write_c0nx(address_space &space, uint8_t offset, uint8_t data) override;
required_device<tms5220_device> m_tms;
-
- virtual machine_config_constructor device_mconfig_additions() const override;
};
// device type definition
-extern const device_type A2BUS_MOCKINGBOARD;
-extern const device_type A2BUS_PHASOR;
-extern const device_type A2BUS_ECHOPLUS;
+DECLARE_DEVICE_TYPE(A2BUS_MOCKINGBOARD, a2bus_mockingboard_device)
+DECLARE_DEVICE_TYPE(A2BUS_PHASOR, a2bus_phasor_device)
+DECLARE_DEVICE_TYPE(A2BUS_ECHOPLUS, a2bus_echoplus_device)
-#endif /* __A2BUS_MOCKINGBOARD__ */
+#endif // MAME_BUS_A2BUS_A2MOCKINGBOARD_H
diff --git a/src/devices/bus/a2bus/a2pic.cpp b/src/devices/bus/a2bus/a2pic.cpp
index d05842a7269..abe7554574f 100644
--- a/src/devices/bus/a2bus/a2pic.cpp
+++ b/src/devices/bus/a2bus/a2pic.cpp
@@ -19,7 +19,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_PIC = device_creator<a2bus_pic_device>;
+DEFINE_DEVICE_TYPE(A2BUS_PIC, a2bus_pic_device, "a2pic", "Apple Parallel Interface Card")
#define PIC_ROM_REGION "pic_rom"
#define PIC_CENTRONICS_TAG "pic_ctx"
@@ -100,18 +100,12 @@ const tiny_rom_entry *a2bus_pic_device::device_rom_region() const
//**************************************************************************
a2bus_pic_device::a2bus_pic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_PIC, "Apple Parallel Interface Card", tag, owner, clock, "a2pic", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_dsw1(*this, "DSW1"),
- m_ctx(*this, PIC_CENTRONICS_TAG),
- m_ctx_data_in(*this, "ctx_data_in"),
- m_ctx_data_out(*this, "ctx_data_out"), m_rom(nullptr),
- m_started(false), m_ack(0), m_irqenable(false), m_autostrobe(false), m_timer(nullptr)
+ a2bus_pic_device(mconfig, A2BUS_PIC, tag, owner, clock)
{
}
-a2bus_pic_device::a2bus_pic_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_pic_device::a2bus_pic_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_dsw1(*this, "DSW1"),
m_ctx(*this, PIC_CENTRONICS_TAG),
diff --git a/src/devices/bus/a2bus/a2pic.h b/src/devices/bus/a2bus/a2pic.h
index 83ff5bd2fa4..fbc0c24a97e 100644
--- a/src/devices/bus/a2bus/a2pic.h
+++ b/src/devices/bus/a2bus/a2pic.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_PIC__
-#define __A2BUS_PIC__
+#ifndef MAME_BUS_A2BUS_A2PIC_H
+#define MAME_BUS_A2BUS_A2PIC_H
+
+#pragma once
#include "a2bus.h"
#include "bus/centronics/ctronics.h"
@@ -25,18 +27,17 @@ class a2bus_pic_device:
public:
// construction/destruction
a2bus_pic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2bus_pic_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual ioport_constructor device_input_ports() const override;
- required_ioport m_dsw1;
-
DECLARE_WRITE_LINE_MEMBER( ack_w );
protected:
+ a2bus_pic_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -45,13 +46,15 @@ protected:
virtual void write_c0nx(address_space &space, uint8_t offset, uint8_t data) override;
virtual uint8_t read_cnxx(address_space &space, uint8_t offset) override;
+ void start_strobe();
+ void clear_strobe();
+
+ required_ioport m_dsw1;
+
required_device<centronics_device> m_ctx;
required_device<input_buffer_device> m_ctx_data_in;
required_device<output_latch_device> m_ctx_data_out;
- void start_strobe();
- void clear_strobe();
-
private:
uint8_t *m_rom;
bool m_started;
@@ -62,6 +65,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_PIC;
+DECLARE_DEVICE_TYPE(A2BUS_PIC, a2bus_pic_device)
-#endif /* __A2BUS_PIC__ */
+#endif // MAME_BUS_A2BUS_A2PIC_H
diff --git a/src/devices/bus/a2bus/a2sam.cpp b/src/devices/bus/a2bus/a2sam.cpp
index 322be844267..3dc70bb326a 100644
--- a/src/devices/bus/a2bus/a2sam.cpp
+++ b/src/devices/bus/a2bus/a2sam.cpp
@@ -21,7 +21,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_SAM = device_creator<a2bus_sam_device>;
+DEFINE_DEVICE_TYPE(A2BUS_SAM, a2bus_sam_device, "a2sam", "Don't Ask Software SAM")
MACHINE_CONFIG_FRAGMENT( a2sam )
MCFG_SPEAKER_STANDARD_MONO("speaker")
@@ -49,7 +49,7 @@ machine_config_constructor a2bus_sam_device::device_mconfig_additions() const
//**************************************************************************
a2bus_sam_device::a2bus_sam_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_SAM, "Don't Ask Software SAM", tag, owner, clock, "a2sam", __FILE__),
+ device_t(mconfig, A2BUS_SAM, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_dac(*this, "dac")
{
diff --git a/src/devices/bus/a2bus/a2sam.h b/src/devices/bus/a2bus/a2sam.h
index 29777e42b60..49e6e40329d 100644
--- a/src/devices/bus/a2bus/a2sam.h
+++ b/src/devices/bus/a2bus/a2sam.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_SAM__
-#define __A2BUS_SAM__
+#ifndef MAME_BUS_A2BUS_A2SAM_H
+#define MAME_BUS_A2BUS_A2SAM_H
+
+#pragma once
#include "a2bus.h"
#include "sound/dac.h"
@@ -29,8 +31,6 @@ public:
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- required_device<dac_byte_interface> m_dac;
-
protected:
virtual void device_start() override;
virtual void device_reset() override;
@@ -38,9 +38,11 @@ protected:
// overrides of standard a2bus slot functions
virtual void write_c0nx(address_space &space, uint8_t offset, uint8_t data) override;
virtual bool take_c800() override;
+
+ required_device<dac_byte_interface> m_dac;
};
// device type definition
extern const device_type A2BUS_SAM;
-#endif /* __A2BUS_SAM__ */
+#endif // MAME_BUS_A2BUS_A2SAM_H
diff --git a/src/devices/bus/a2bus/a2scsi.cpp b/src/devices/bus/a2bus/a2scsi.cpp
index 00e0c27bb11..447a5867bb4 100644
--- a/src/devices/bus/a2bus/a2scsi.cpp
+++ b/src/devices/bus/a2bus/a2scsi.cpp
@@ -44,7 +44,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_SCSI = device_creator<a2bus_scsi_device>;
+DEFINE_DEVICE_TYPE(A2BUS_SCSI, a2bus_scsi_device, "a2scsi", "Apple II SCSI Card")
#define SCSI_ROM_REGION "scsi_rom"
#define SCSI_BUS_TAG "scsibus"
@@ -106,8 +106,8 @@ const tiny_rom_entry *a2bus_scsi_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_scsi_device::a2bus_scsi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_scsi_device::a2bus_scsi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_ncr5380(*this, SCSI_5380_TAG),
m_scsibus(*this, SCSI_BUS_TAG), m_rom(nullptr), m_rambank(0), m_rombank(0), m_drq(0), m_bank(0), m_816block(false)
@@ -115,10 +115,7 @@ a2bus_scsi_device::a2bus_scsi_device(const machine_config &mconfig, device_type
}
a2bus_scsi_device::a2bus_scsi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_SCSI, "Apple II SCSI Card", tag, owner, clock, "a2scsi", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_ncr5380(*this, SCSI_5380_TAG),
- m_scsibus(*this, SCSI_BUS_TAG), m_rom(nullptr), m_rambank(0), m_rombank(0), m_drq(0), m_bank(0), m_816block(false)
+ a2bus_scsi_device(mconfig, A2BUS_SCSI, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2scsi.h b/src/devices/bus/a2bus/a2scsi.h
index 4d5fac99a20..35e60eaf89e 100644
--- a/src/devices/bus/a2bus/a2scsi.h
+++ b/src/devices/bus/a2bus/a2scsi.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_SCSI__
-#define __A2BUS_SCSI__
+#ifndef MAME_BUS_A2BUS_A2SCSI_H
+#define MAME_BUS_A2BUS_A2SCSI_H
+
+#pragma once
#include "a2bus.h"
#include "machine/ncr5380n.h"
@@ -24,19 +26,17 @@ class a2bus_scsi_device:
{
public:
// construction/destruction
- a2bus_scsi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_scsi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
- required_device<ncr5380n_device> m_ncr5380;
- required_device<nscsi_bus_device> m_scsibus;
-
DECLARE_WRITE_LINE_MEMBER( drq_w );
protected:
+ a2bus_scsi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -48,6 +48,9 @@ protected:
virtual uint8_t read_c800(address_space &space, uint16_t offset) override;
virtual void write_c800(address_space &space, uint16_t offset, uint8_t data) override;
+ required_device<ncr5380n_device> m_ncr5380;
+ required_device<nscsi_bus_device> m_scsibus;
+
private:
uint8_t *m_rom;
uint8_t m_ram[8192]; // 8 banks of 1024 bytes
@@ -58,6 +61,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_SCSI;
+DECLARE_DEVICE_TYPE(A2BUS_SCSI, a2bus_scsi_device)
-#endif /* __A2BUS_SCSI__ */
+#endif // MAME_BUS_A2BUS_A2SCSI_H
diff --git a/src/devices/bus/a2bus/a2softcard.cpp b/src/devices/bus/a2bus/a2softcard.cpp
index 3051755dc0f..1d8cea0121e 100644
--- a/src/devices/bus/a2bus/a2softcard.cpp
+++ b/src/devices/bus/a2bus/a2softcard.cpp
@@ -20,7 +20,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_SOFTCARD = device_creator<a2bus_softcard_device>;
+DEFINE_DEVICE_TYPE(A2BUS_SOFTCARD, a2bus_softcard_device, "a2softcard", "Microsoft SoftCard")
#define Z80_TAG "z80"
@@ -51,17 +51,15 @@ machine_config_constructor a2bus_softcard_device::device_mconfig_additions() con
// LIVE DEVICE
//**************************************************************************
-a2bus_softcard_device::a2bus_softcard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_softcard_device::a2bus_softcard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_z80(*this, Z80_TAG), m_bEnabled(false), m_FirstZ80Boot(false)
{
}
a2bus_softcard_device::a2bus_softcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_SOFTCARD, "Microsoft SoftCard", tag, owner, clock, "a2softcard", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_z80(*this, Z80_TAG), m_bEnabled(false), m_FirstZ80Boot(false)
+ a2bus_softcard_device(mconfig, A2BUS_SOFTCARD, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2softcard.h b/src/devices/bus/a2bus/a2softcard.h
index f8545e1ae6a..025686a6645 100644
--- a/src/devices/bus/a2bus/a2softcard.h
+++ b/src/devices/bus/a2bus/a2softcard.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef __A2BUS_SOFTCARD__
-#define __A2BUS_SOFTCARD__
+#ifndef MAME_BUS_A2BUS_A2SOFTCARD_H
+#define MAME_BUS_A2BUS_A2SOFTCARD_H
#include "a2bus.h"
@@ -23,7 +23,6 @@ class a2bus_softcard_device:
{
public:
// construction/destruction
- a2bus_softcard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_softcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -33,6 +32,8 @@ public:
DECLARE_WRITE8_MEMBER( dma_w );
protected:
+ a2bus_softcard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -48,6 +49,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_SOFTCARD;
+DECLARE_DEVICE_TYPE(A2BUS_SOFTCARD, a2bus_softcard_device)
-#endif /* __A2BUS_SOFTCARD__ */
+#endif // MAME_BUS_A2BUS_A2SOFTCARD_H
diff --git a/src/devices/bus/a2bus/a2ssc.cpp b/src/devices/bus/a2bus/a2ssc.cpp
index aa8f28f48be..b84a7f26881 100644
--- a/src/devices/bus/a2bus/a2ssc.cpp
+++ b/src/devices/bus/a2bus/a2ssc.cpp
@@ -21,7 +21,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_SSC = device_creator<a2bus_ssc_device>;
+DEFINE_DEVICE_TYPE(A2BUS_SSC, a2bus_ssc_device, "a2ssc", "Apple Super Serial Card")
#define SSC_ROM_REGION "ssc_rom"
#define SSC_ACIA_TAG "ssc_acia"
@@ -129,17 +129,12 @@ const tiny_rom_entry *a2bus_ssc_device::device_rom_region() const
//**************************************************************************
a2bus_ssc_device::a2bus_ssc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_SSC, "Apple Super Serial Card", tag, owner, clock, "a2ssc", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_dsw1(*this, "DSW1"),
- m_dsw2(*this, "DSW2"),
- m_acia(*this, SSC_ACIA_TAG), m_rom(nullptr),
- m_started(false)
+ a2bus_ssc_device(mconfig, A2BUS_SSC, tag, owner, clock)
{
}
-a2bus_ssc_device::a2bus_ssc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_ssc_device::a2bus_ssc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_dsw1(*this, "DSW1"),
m_dsw2(*this, "DSW2"),
diff --git a/src/devices/bus/a2bus/a2ssc.h b/src/devices/bus/a2bus/a2ssc.h
index b130012c52f..fdca90f9346 100644
--- a/src/devices/bus/a2bus/a2ssc.h
+++ b/src/devices/bus/a2bus/a2ssc.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef __A2BUS_SSC__
-#define __A2BUS_SSC__
+#ifndef MAME_BUS_A2BUS_A2SSC_H
+#define MAME_BUS_A2BUS_A2SSC_H
#include "a2bus.h"
#include "machine/mos6551.h"
@@ -25,18 +25,17 @@ class a2bus_ssc_device:
public:
// construction/destruction
a2bus_ssc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2bus_ssc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual ioport_constructor device_input_ports() const override;
- required_ioport m_dsw1, m_dsw2;
-
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
protected:
+ a2bus_ssc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -45,6 +44,8 @@ protected:
virtual uint8_t read_cnxx(address_space &space, uint8_t offset) override;
virtual uint8_t read_c800(address_space &space, uint16_t offset) override;
+ required_ioport m_dsw1, m_dsw2;
+
required_device<mos6551_device> m_acia;
private:
@@ -53,6 +54,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_SSC;
+DECLARE_DEVICE_TYPE(A2BUS_SSC, a2bus_ssc_device)
-#endif /* __A2BUS_SSC__ */
+#endif // MAME_BUS_A2BUS_A2SSC_H
diff --git a/src/devices/bus/a2bus/a2swyft.cpp b/src/devices/bus/a2bus/a2swyft.cpp
index 8ccdf8bb928..1403120c74c 100644
--- a/src/devices/bus/a2bus/a2swyft.cpp
+++ b/src/devices/bus/a2bus/a2swyft.cpp
@@ -20,7 +20,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_SWYFT = device_creator<a2bus_swyft_device>;
+DEFINE_DEVICE_TYPE(A2BUS_SWYFT, a2bus_swyft_device, "a2swyft", "IAI SwyftCard")
#define SWYFT_ROM_REGION "swyft_rom"
@@ -45,13 +45,12 @@ const tiny_rom_entry *a2bus_swyft_device::device_rom_region() const
//**************************************************************************
a2bus_swyft_device::a2bus_swyft_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_SWYFT, "IAI SwyftCard", tag, owner, clock, "a2swyft", __FILE__),
- device_a2bus_card_interface(mconfig, *this), m_rom(nullptr), m_rombank(0), m_inh_state(0)
+ a2bus_swyft_device(mconfig, A2BUS_SWYFT, tag, owner, clock)
{
}
-a2bus_swyft_device::a2bus_swyft_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_swyft_device::a2bus_swyft_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this), m_rom(nullptr), m_rombank(0), m_inh_state(0)
{
}
diff --git a/src/devices/bus/a2bus/a2swyft.h b/src/devices/bus/a2bus/a2swyft.h
index df646038aa9..0215c4623ab 100644
--- a/src/devices/bus/a2bus/a2swyft.h
+++ b/src/devices/bus/a2bus/a2swyft.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_SWYFT__
-#define __A2BUS_SWYFT__
+#ifndef MAME_BUS_A2BUS_A2SWYFT_H
+#define MAME_BUS_A2BUS_A2SWYFT_H
+
+#pragma once
#include "a2bus.h"
@@ -24,11 +26,12 @@ class a2bus_swyft_device:
public:
// construction/destruction
a2bus_swyft_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2bus_swyft_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
+ a2bus_swyft_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -46,6 +49,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_SWYFT;
+DECLARE_DEVICE_TYPE(A2BUS_SWYFT, a2bus_swyft_device)
-#endif /* __A2BUS_SWYFT__ */
+#endif // MAME_BUS_A2BUS_A2SWYFT_H
diff --git a/src/devices/bus/a2bus/a2themill.cpp b/src/devices/bus/a2bus/a2themill.cpp
index dd935cf2554..27a3302d625 100644
--- a/src/devices/bus/a2bus/a2themill.cpp
+++ b/src/devices/bus/a2bus/a2themill.cpp
@@ -36,7 +36,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_THEMILL = device_creator<a2bus_themill_device>;
+DEFINE_DEVICE_TYPE(A2BUS_THEMILL, a2bus_themill_device, "a2themill", "Stellation Two The Mill")
#define M6809_TAG "m6809"
@@ -67,17 +67,15 @@ machine_config_constructor a2bus_themill_device::device_mconfig_additions() cons
// LIVE DEVICE
//**************************************************************************
-a2bus_themill_device::a2bus_themill_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_themill_device::a2bus_themill_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_6809(*this, M6809_TAG), m_bEnabled(false), m_flipAddrSpace(false), m_6809Mode(false), m_status(0)
{
}
a2bus_themill_device::a2bus_themill_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_THEMILL, "Stellation Two The Mill", tag, owner, clock, "a2themill", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_6809(*this, M6809_TAG), m_bEnabled(false), m_flipAddrSpace(false), m_6809Mode(false), m_status(0)
+ a2bus_themill_device(mconfig, A2BUS_THEMILL, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2themill.h b/src/devices/bus/a2bus/a2themill.h
index 67f9bc43c7a..aa0c2f180e2 100644
--- a/src/devices/bus/a2bus/a2themill.h
+++ b/src/devices/bus/a2bus/a2themill.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_THEMILL__
-#define __A2BUS_THEMILL__
+#ifndef MAME_BUS_A2BUS_A2THEMILL_H
+#define MAME_BUS_A2BUS_A2THEMILL_H
+
+#pragma once
#include "a2bus.h"
@@ -23,7 +25,6 @@ class a2bus_themill_device:
{
public:
// construction/destruction
- a2bus_themill_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_themill_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -33,6 +34,8 @@ public:
DECLARE_WRITE8_MEMBER( dma_w );
protected:
+ a2bus_themill_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -51,6 +54,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_THEMILL;
+DECLARE_DEVICE_TYPE(A2BUS_THEMILL, a2bus_themill_device)
-#endif /* __A2BUS_THEMILL__ */
+#endif // MAME_BUS_A2BUS_A2THEMILL_H
diff --git a/src/devices/bus/a2bus/a2thunderclock.cpp b/src/devices/bus/a2bus/a2thunderclock.cpp
index 18a6f22abf1..70642bbdfe8 100644
--- a/src/devices/bus/a2bus/a2thunderclock.cpp
+++ b/src/devices/bus/a2bus/a2thunderclock.cpp
@@ -36,7 +36,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_THUNDERCLOCK = device_creator<a2bus_thunderclock_device>;
+DEFINE_DEVICE_TYPE(A2BUS_THUNDERCLOCK, a2bus_thunderclock_device, "a2thunpl", "ThunderWare ThunderClock Plus")
#define THUNDERCLOCK_ROM_REGION "thunclk_rom"
#define THUNDERCLOCK_UPD1990_TAG "thunclk_upd"
@@ -77,17 +77,15 @@ const tiny_rom_entry *a2bus_thunderclock_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_thunderclock_device::a2bus_thunderclock_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_thunderclock_device::a2bus_thunderclock_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_upd1990ac(*this, THUNDERCLOCK_UPD1990_TAG), m_rom(nullptr), m_dataout(0)
{
}
a2bus_thunderclock_device::a2bus_thunderclock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_THUNDERCLOCK, "ThunderWare ThunderClock Plus", tag, owner, clock, "a2thunpl", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_upd1990ac(*this, THUNDERCLOCK_UPD1990_TAG), m_rom(nullptr), m_dataout(0)
+ a2bus_thunderclock_device(mconfig, A2BUS_THUNDERCLOCK, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2thunderclock.h b/src/devices/bus/a2bus/a2thunderclock.h
index 8188ede7380..5c221151769 100644
--- a/src/devices/bus/a2bus/a2thunderclock.h
+++ b/src/devices/bus/a2bus/a2thunderclock.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_THUNDERCLOCK__
-#define __A2BUS_THUNDERCLOCK__
+#ifndef MAME_BUS_A2BUS_A2THUNDERCLOCK_H
+#define MAME_BUS_A2BUS_A2THUNDERCLOCK_H
+
+#pragma once
#include "a2bus.h"
#include "machine/upd1990a.h"
@@ -24,7 +26,6 @@ class a2bus_thunderclock_device:
{
public:
// construction/destruction
- a2bus_thunderclock_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_thunderclock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -34,6 +35,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( upd_dataout_w );
protected:
+ a2bus_thunderclock_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -51,6 +54,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_THUNDERCLOCK;
+DECLARE_DEVICE_TYPE(A2BUS_THUNDERCLOCK, a2bus_thunderclock_device)
-#endif /* __A2BUS_THUNDERCLOCK__ */
+#endif // MAME_BUS_A2BUS_A2THUNDERCLOCK_H
diff --git a/src/devices/bus/a2bus/a2ultraterm.cpp b/src/devices/bus/a2bus/a2ultraterm.cpp
index 3edeeaf8cdd..8d8a576834a 100644
--- a/src/devices/bus/a2bus/a2ultraterm.cpp
+++ b/src/devices/bus/a2bus/a2ultraterm.cpp
@@ -40,8 +40,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_ULTRATERM = device_creator<a2bus_ultraterm_device>;
-const device_type A2BUS_ULTRATERMENH = device_creator<a2bus_ultratermenh_device>;
+DEFINE_DEVICE_TYPE(A2BUS_ULTRATERM, a2bus_ultraterm_device, "a2ulttrm", "Videx UltraTerm (original)")
+DEFINE_DEVICE_TYPE(A2BUS_ULTRATERMENH, a2bus_ultratermenh_device, "a2ultrme", "Videx UltraTerm (enhanced //e)")
#define ULTRATERM_ROM_REGION "uterm_rom"
#define ULTRATERM_GFX_REGION "uterm_gfx"
@@ -139,20 +139,20 @@ const tiny_rom_entry *a2bus_ultratermenh_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_videx160_device::a2bus_videx160_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_videx160_device::a2bus_videx160_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this), m_rom(nullptr), m_chrrom(nullptr), m_framecnt(0), m_ctrl1(0), m_ctrl2(0),
m_crtc(*this, ULTRATERM_MC6845_NAME), m_rambank(0)
{
}
a2bus_ultraterm_device::a2bus_ultraterm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_videx160_device(mconfig, A2BUS_ULTRATERM, "Videx UltraTerm (original)", tag, owner, clock, "a2ulttrm", __FILE__)
+ a2bus_videx160_device(mconfig, A2BUS_ULTRATERM, tag, owner, clock)
{
}
a2bus_ultratermenh_device::a2bus_ultratermenh_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_videx160_device(mconfig, A2BUS_ULTRATERMENH, "Videx UltraTerm (enhanced //e)", tag, owner, clock, "a2ultrme", __FILE__)
+ a2bus_videx160_device(mconfig, A2BUS_ULTRATERMENH, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2ultraterm.h b/src/devices/bus/a2bus/a2ultraterm.h
index 3d9c3a67a52..73b012b63c3 100644
--- a/src/devices/bus/a2bus/a2ultraterm.h
+++ b/src/devices/bus/a2bus/a2ultraterm.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_ULTRATERM__
-#define __A2BUS_ULTRATERM__
+#ifndef MAME_BUS_A2BUS_A2ULTRATERM_H
+#define MAME_BUS_A2BUS_A2ULTRATERM_H
+
+#pragma once
#include "a2bus.h"
#include "video/mc6845.h"
@@ -23,21 +25,16 @@ class a2bus_videx160_device:
public device_a2bus_card_interface
{
public:
- // construction/destruction
- a2bus_videx160_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
DECLARE_WRITE_LINE_MEMBER(vsync_changed);
MC6845_UPDATE_ROW(crtc_update_row);
- uint8_t *m_rom, *m_chrrom;
- uint8_t m_ram[256*16];
- int m_framecnt;
- uint8_t m_ctrl1, m_ctrl2;
-
protected:
+ // construction/destruction
+ a2bus_videx160_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -49,6 +46,11 @@ protected:
virtual uint8_t read_c800(address_space &space, uint16_t offset) override;
virtual void write_c800(address_space &space, uint16_t offset, uint8_t data) override;
+ uint8_t *m_rom, *m_chrrom;
+ uint8_t m_ram[256*16];
+ int m_framecnt;
+ uint8_t m_ctrl1, m_ctrl2;
+
required_device<mc6845_device> m_crtc;
private:
@@ -72,7 +74,7 @@ public:
};
// device type definition
-extern const device_type A2BUS_ULTRATERM;
-extern const device_type A2BUS_ULTRATERMENH;
+DECLARE_DEVICE_TYPE(A2BUS_ULTRATERM, a2bus_ultraterm_device)
+DECLARE_DEVICE_TYPE(A2BUS_ULTRATERMENH, a2bus_ultratermenh_device)
-#endif /* __A2BUS_ULTRATERM__ */
+#endif // MAME_BUS_A2BUS_A2ULTRATERM_H
diff --git a/src/devices/bus/a2bus/a2videoterm.cpp b/src/devices/bus/a2bus/a2videoterm.cpp
index 1cfb4552313..7bcea832ce0 100644
--- a/src/devices/bus/a2bus/a2videoterm.cpp
+++ b/src/devices/bus/a2bus/a2videoterm.cpp
@@ -36,12 +36,12 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_VIDEOTERM = device_creator<a2bus_videoterm_device>;
-const device_type A2BUS_IBSAP16 = device_creator<a2bus_ap16_device>;
-const device_type A2BUS_IBSAP16ALT = device_creator<a2bus_ap16alt_device>;
-const device_type A2BUS_VTC1 = device_creator<a2bus_vtc1_device>;
-const device_type A2BUS_VTC2 = device_creator<a2bus_vtc2_device>;
-const device_type A2BUS_AEVIEWMASTER80 = device_creator<a2bus_aevm80_device>;
+DEFINE_DEVICE_TYPE(A2BUS_VIDEOTERM, a2bus_videoterm_device, "a2vidtrm", "Videx VideoTerm")
+DEFINE_DEVICE_TYPE(A2BUS_IBSAP16, a2bus_ap16_device, "a2ap16", "IBS AP-16 80 column card")
+DEFINE_DEVICE_TYPE(A2BUS_IBSAP16ALT, a2bus_ap16alt_device, "a2ap16a", "IBS AP-16 80 column card (alt. version)")
+DEFINE_DEVICE_TYPE(A2BUS_VTC1, a2bus_vtc1_device, "a2vtc1", "Unknown VideoTerm clone #1")
+DEFINE_DEVICE_TYPE(A2BUS_VTC2, a2bus_vtc2_device, "a2vtc2", "Unknown VideoTerm clone #2")
+DEFINE_DEVICE_TYPE(A2BUS_AEVIEWMASTER80, a2bus_aevm80_device, "a2aevm80", "Applied Engineering Viewmaster 80")
#define VIDEOTERM_ROM_REGION "vterm_rom"
#define VIDEOTERM_GFX_REGION "vterm_gfx"
@@ -173,41 +173,41 @@ const tiny_rom_entry *a2bus_aevm80_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_videx80_device::a2bus_videx80_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_videx80_device::a2bus_videx80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this), m_rom(nullptr), m_chrrom(nullptr), m_framecnt(0),
- m_crtc(*this, VIDEOTERM_MC6845_NAME), m_rambank(0),
- m_palette(*this, ":palette")
+ m_crtc(*this, VIDEOTERM_MC6845_NAME), m_palette(*this, ":palette"),
+ m_rambank(0)
{
}
a2bus_videoterm_device::a2bus_videoterm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_videx80_device(mconfig, A2BUS_VIDEOTERM, "Videx VideoTerm", tag, owner, clock, "a2vidtrm", __FILE__)
+ a2bus_videx80_device(mconfig, A2BUS_VIDEOTERM, tag, owner, clock)
{
}
a2bus_ap16_device::a2bus_ap16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_videx80_device(mconfig, A2BUS_IBSAP16, "IBS AP-16 80 column card", tag, owner, clock, "a2ap16", __FILE__)
+ a2bus_videx80_device(mconfig, A2BUS_IBSAP16, tag, owner, clock)
{
}
a2bus_ap16alt_device::a2bus_ap16alt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_videx80_device(mconfig, A2BUS_IBSAP16ALT, "IBS AP-16 80 column card (alt. version)", tag, owner, clock, "a2ap16a", __FILE__)
+ a2bus_videx80_device(mconfig, A2BUS_IBSAP16ALT, tag, owner, clock)
{
}
a2bus_vtc1_device::a2bus_vtc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_videx80_device(mconfig, A2BUS_VTC1, "Unknown VideoTerm clone #1", tag, owner, clock, "a2vtc1", __FILE__)
+ a2bus_videx80_device(mconfig, A2BUS_VTC1, tag, owner, clock)
{
}
a2bus_vtc2_device::a2bus_vtc2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_videx80_device(mconfig, A2BUS_VTC2, "Unknown VideoTerm clone #2", tag, owner, clock, "a2vtc2", __FILE__)
+ a2bus_videx80_device(mconfig, A2BUS_VTC2, tag, owner, clock)
{
}
a2bus_aevm80_device::a2bus_aevm80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_videx80_device(mconfig, A2BUS_AEVIEWMASTER80, "Applied Engineering Viewmaster 80", tag, owner, clock, "a2aevm80", __FILE__)
+ a2bus_videx80_device(mconfig, A2BUS_AEVIEWMASTER80, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2videoterm.h b/src/devices/bus/a2bus/a2videoterm.h
index 5f78b7fe91f..f9d407f785a 100644
--- a/src/devices/bus/a2bus/a2videoterm.h
+++ b/src/devices/bus/a2bus/a2videoterm.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_VIDEOTERM__
-#define __A2BUS_VIDEOTERM__
+#ifndef MAME_BUS_A2BUS_A2VIDEOTERM_H
+#define MAME_BUS_A2BUS_A2VIDEOTERM_H
+
+#pragma once
#include "a2bus.h"
#include "video/mc6845.h"
@@ -23,20 +25,16 @@ class a2bus_videx80_device:
public device_a2bus_card_interface
{
public:
- // construction/destruction
- a2bus_videx80_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
DECLARE_WRITE_LINE_MEMBER(vsync_changed);
MC6845_UPDATE_ROW(crtc_update_row);
- uint8_t *m_rom, *m_chrrom;
- uint8_t m_ram[512*4];
- int m_framecnt;
-
protected:
+ // construction/destruction
+ a2bus_videx80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -48,12 +46,15 @@ protected:
virtual uint8_t read_c800(address_space &space, uint16_t offset) override;
virtual void write_c800(address_space &space, uint16_t offset, uint8_t data) override;
+ uint8_t *m_rom, *m_chrrom;
+ uint8_t m_ram[512*4];
+ int m_framecnt;
+
required_device<mc6845_device> m_crtc;
+ required_device<palette_device> m_palette;
private:
int m_rambank;
-public:
- required_device<palette_device> m_palette;
};
class a2bus_videoterm_device : public a2bus_videx80_device
@@ -71,6 +72,7 @@ public:
virtual const tiny_rom_entry *device_rom_region() const override;
+protected:
virtual uint8_t read_cnxx(address_space &space, uint8_t offset) override;
};
@@ -82,6 +84,7 @@ public:
virtual const tiny_rom_entry *device_rom_region() const override;
+protected:
virtual uint8_t read_cnxx(address_space &space, uint8_t offset) override;
};
@@ -110,11 +113,11 @@ public:
};
// device type definition
-extern const device_type A2BUS_VIDEOTERM;
-extern const device_type A2BUS_IBSAP16;
-extern const device_type A2BUS_IBSAP16ALT;
-extern const device_type A2BUS_VTC1;
-extern const device_type A2BUS_VTC2;
-extern const device_type A2BUS_AEVIEWMASTER80;
-
-#endif /* __A2BUS_VIDEOTERM__ */
+DECLARE_DEVICE_TYPE(A2BUS_VIDEOTERM, a2bus_videoterm_device)
+DECLARE_DEVICE_TYPE(A2BUS_IBSAP16, a2bus_ap16_device)
+DECLARE_DEVICE_TYPE(A2BUS_IBSAP16ALT, a2bus_ap16alt_device)
+DECLARE_DEVICE_TYPE(A2BUS_VTC1, a2bus_vtc1_device)
+DECLARE_DEVICE_TYPE(A2BUS_VTC2, a2bus_vtc2_device)
+DECLARE_DEVICE_TYPE(A2BUS_AEVIEWMASTER80, a2bus_aevm80_device)
+
+#endif // MAME_BUS_A2BUS_A2VIDEOTERM_H
diff --git a/src/devices/bus/a2bus/a2vulcan.cpp b/src/devices/bus/a2bus/a2vulcan.cpp
index 585a9eadff0..0e0d24f2464 100644
--- a/src/devices/bus/a2bus/a2vulcan.cpp
+++ b/src/devices/bus/a2bus/a2vulcan.cpp
@@ -62,8 +62,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_VULCAN = device_creator<a2bus_vulcan_device>;
-const device_type A2BUS_VULCANGOLD = device_creator<a2bus_vulcangold_device>;
+DEFINE_DEVICE_TYPE(A2BUS_VULCAN, a2bus_vulcan_device, "a2vulcan", "Applied Engineering Vulcan IDE controller")
+DEFINE_DEVICE_TYPE(A2BUS_VULCANGOLD, a2bus_vulcangold_device, "a2vulgld", "Applied Engineering Vulcan Gold IDE controller")
#define VULCAN_ROM_REGION "vulcan_rom"
#define VULCAN_ATA_TAG "vulcan_ata"
@@ -114,20 +114,20 @@ const tiny_rom_entry *a2bus_vulcangold_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_vulcanbase_device::a2bus_vulcanbase_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_vulcanbase_device::a2bus_vulcanbase_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_ata(*this, VULCAN_ATA_TAG), m_rom(nullptr), m_lastdata(0), m_rombank(0), m_rambank(0), m_last_read_was_0(false)
{
}
a2bus_vulcan_device::a2bus_vulcan_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_vulcanbase_device(mconfig, A2BUS_VULCAN, "Applied Engineering Vulcan IDE controller", tag, owner, clock, "a2vulcan", __FILE__)
+ a2bus_vulcanbase_device(mconfig, A2BUS_VULCAN, tag, owner, clock)
{
}
a2bus_vulcangold_device::a2bus_vulcangold_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_vulcanbase_device(mconfig, A2BUS_VULCANGOLD, "Applied Engineering Vulcan Gold IDE controller", tag, owner, clock, "a2vulgld", __FILE__)
+ a2bus_vulcanbase_device(mconfig, A2BUS_VULCANGOLD, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2vulcan.h b/src/devices/bus/a2bus/a2vulcan.h
index bd2acab26b4..ebb3d75f551 100644
--- a/src/devices/bus/a2bus/a2vulcan.h
+++ b/src/devices/bus/a2bus/a2vulcan.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_VULCAN__
-#define __A2BUS_VULCAN__
+#ifndef MAME_BUS_A2BUS_VULCAN_H
+#define MAME_BUS_A2BUS_VULCAN_H
+
+#pragma once
#include "a2bus.h"
#include "machine/ataintf.h"
@@ -23,13 +25,13 @@ class a2bus_vulcanbase_device:
public device_a2bus_card_interface
{
public:
- // construction/destruction
- a2bus_vulcanbase_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
+ // construction/destruction
+ a2bus_vulcanbase_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -71,7 +73,7 @@ public:
};
// device type definition
-extern const device_type A2BUS_VULCAN;
-extern const device_type A2BUS_VULCANGOLD;
+DECLARE_DEVICE_TYPE(A2BUS_VULCAN, a2bus_vulcan_device)
+DECLARE_DEVICE_TYPE(A2BUS_VULCANGOLD, a2bus_vulcangold_device)
-#endif /* __A2BUS_VULCAN__ */
+#endif // MAME_BUS_A2BUS_VULCAN_H
diff --git a/src/devices/bus/a2bus/a2zipdrive.cpp b/src/devices/bus/a2bus/a2zipdrive.cpp
index a3220476cda..4c65ac8ec0f 100644
--- a/src/devices/bus/a2bus/a2zipdrive.cpp
+++ b/src/devices/bus/a2bus/a2zipdrive.cpp
@@ -28,7 +28,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_ZIPDRIVE = device_creator<a2bus_zipdrive_device>;
+DEFINE_DEVICE_TYPE(A2BUS_ZIPDRIVE, a2bus_zipdrive_device, "a2zipdrv", "Zip Technologies ZipDrive")
#define ZIPDRIVE_ROM_REGION "zipdrive_rom"
#define ZIPDRIVE_ATA_TAG "zipdrive_ata"
@@ -69,15 +69,15 @@ const tiny_rom_entry *a2bus_zipdrivebase_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_zipdrivebase_device::a2bus_zipdrivebase_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_zipdrivebase_device::a2bus_zipdrivebase_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_ata(*this, ZIPDRIVE_ATA_TAG), m_rom(nullptr), m_lastdata(0)
{
}
a2bus_zipdrive_device::a2bus_zipdrive_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_zipdrivebase_device(mconfig, A2BUS_ZIPDRIVE, "Zip Technologies ZipDrive", tag, owner, clock, "a2zipdrv", __FILE__)
+ a2bus_zipdrivebase_device(mconfig, A2BUS_ZIPDRIVE, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/a2zipdrive.h b/src/devices/bus/a2bus/a2zipdrive.h
index 3878c4b7bf0..12b7e6bb574 100644
--- a/src/devices/bus/a2bus/a2zipdrive.h
+++ b/src/devices/bus/a2bus/a2zipdrive.h
@@ -10,8 +10,10 @@
*********************************************************************/
-#ifndef __A2BUS_ZIPDRIVE__
-#define __A2BUS_ZIPDRIVE__
+#ifndef MAME_BUS_A2BUS_ZIPDRIVE_H
+#define MAME_BUS_A2BUS_ZIPDRIVE_H
+
+#pragma once
#include "a2bus.h"
#include "machine/ataintf.h"
@@ -25,14 +27,14 @@ class a2bus_zipdrivebase_device:
public device_a2bus_card_interface
{
public:
- // construction/destruction
- a2bus_zipdrivebase_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
+ // construction/destruction
+ a2bus_zipdrivebase_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -57,6 +59,6 @@ public:
};
// device type definition
-extern const device_type A2BUS_ZIPDRIVE;
+DECLARE_DEVICE_TYPE(A2BUS_ZIPDRIVE, a2bus_zipdrive_device)
-#endif /* __A2BUS_ZIPDRIVE__ */
+#endif // MAME_BUS_A2BUS_ZIPDRIVE_H
diff --git a/src/devices/bus/a2bus/agat7langcard.cpp b/src/devices/bus/a2bus/agat7langcard.cpp
index fba82f8dcd2..9bb00b38c60 100644
--- a/src/devices/bus/a2bus/agat7langcard.cpp
+++ b/src/devices/bus/a2bus/agat7langcard.cpp
@@ -18,7 +18,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_AGAT7LANGCARD = device_creator<a2bus_agat7langcard_device>;
+DEFINE_DEVICE_TYPE(A2BUS_AGAT7LANGCARD, a2bus_agat7langcard_device, "a7lang", "Agat-7 32K Language Card")
/***************************************************************************
FUNCTION PROTOTYPES
@@ -28,15 +28,14 @@ const device_type A2BUS_AGAT7LANGCARD = device_creator<a2bus_agat7langcard_devic
// LIVE DEVICE
//**************************************************************************
-a2bus_agat7langcard_device::a2bus_agat7langcard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_agat7langcard_device::a2bus_agat7langcard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this), m_inh_state(0), m_last_offset(0), m_dxxx_bank(0), m_main_bank(0)
{
}
a2bus_agat7langcard_device::a2bus_agat7langcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_AGAT7LANGCARD, "Agat-7 32K Language Card", tag, owner, clock, "a7lang", __FILE__),
- device_a2bus_card_interface(mconfig, *this), m_inh_state(0), m_last_offset(0), m_dxxx_bank(0), m_main_bank(0)
+ a2bus_agat7langcard_device(mconfig, A2BUS_AGAT7LANGCARD, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/agat7langcard.h b/src/devices/bus/a2bus/agat7langcard.h
index ea7b80e5075..13647abfb11 100644
--- a/src/devices/bus/a2bus/agat7langcard.h
+++ b/src/devices/bus/a2bus/agat7langcard.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_AGAT7LANGCARD__
-#define __A2BUS_AGAT7LANGCARD__
+#ifndef MAME_BUS_A2BUS_AGAT7LANGCARD_H
+#define MAME_BUS_A2BUS_AGAT7LANGCARD_H
+
+#pragma once
#include "emu.h"
#include "a2bus.h"
@@ -24,10 +26,11 @@ class a2bus_agat7langcard_device:
{
public:
// construction/destruction
- a2bus_agat7langcard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_agat7langcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
+ a2bus_agat7langcard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -53,5 +56,6 @@ private:
// device type definition
extern const device_type A2BUS_AGAT7LANGCARD;
+DECLARE_DEVICE_TYPE(A2BUS_AGAT7LANGCARD, a2bus_agat7langcard_device)
-#endif /* __A2BUS_AGAT7LANGCARD__ */
+#endif // MAME_BUS_A2BUS_AGAT7LANGCARD_H
diff --git a/src/devices/bus/a2bus/agat7ram.cpp b/src/devices/bus/a2bus/agat7ram.cpp
index 694d6c65daa..dde0260db3f 100644
--- a/src/devices/bus/a2bus/agat7ram.cpp
+++ b/src/devices/bus/a2bus/agat7ram.cpp
@@ -18,7 +18,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_AGAT7RAM = device_creator<a2bus_agat7ram_device>;
+DEFINE_DEVICE_TYPE(A2BUS_AGAT7RAM, a2bus_agat7ram_device, "a7ram", "Agat-7 32K RAM Card")
/***************************************************************************
FUNCTION PROTOTYPES
@@ -28,15 +28,14 @@ const device_type A2BUS_AGAT7RAM = device_creator<a2bus_agat7ram_device>;
// LIVE DEVICE
//**************************************************************************
-a2bus_agat7ram_device::a2bus_agat7ram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_agat7ram_device::a2bus_agat7ram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this), m_inh_state(0), m_last_offset(0), m_main_bank(0)
{
}
a2bus_agat7ram_device::a2bus_agat7ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_AGAT7RAM, "Agat-7 32K RAM Card", tag, owner, clock, "a7ram", __FILE__),
- device_a2bus_card_interface(mconfig, *this), m_inh_state(0), m_last_offset(0), m_main_bank(0)
+ a2bus_agat7ram_device(mconfig, A2BUS_AGAT7RAM, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/agat7ram.h b/src/devices/bus/a2bus/agat7ram.h
index 451efb08e3e..e30aaf7b94b 100644
--- a/src/devices/bus/a2bus/agat7ram.h
+++ b/src/devices/bus/a2bus/agat7ram.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_AGAT7RAM__
-#define __A2BUS_AGAT7RAM__
+#ifndef MAME_BUS_A2BUS_AGAT7RAM_H
+#define MAME_BUS_A2BUS_AGAT7RAM_H
+
+#pragma once
#include "emu.h"
#include "a2bus.h"
@@ -24,10 +26,11 @@ class a2bus_agat7ram_device:
{
public:
// construction/destruction
- a2bus_agat7ram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_agat7ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
+ a2bus_agat7ram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -50,6 +53,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_AGAT7RAM;
+DECLARE_DEVICE_TYPE(A2BUS_AGAT7RAM, a2bus_agat7ram_device)
-#endif /* __A2BUS_AGAT7RAM__ */
+#endif // MAME_BUS_A2BUS_AGAT7RAM_H
diff --git a/src/devices/bus/a2bus/corvfdc01.cpp b/src/devices/bus/a2bus/corvfdc01.cpp
index e6badc3238a..c69315fabf2 100644
--- a/src/devices/bus/a2bus/corvfdc01.cpp
+++ b/src/devices/bus/a2bus/corvfdc01.cpp
@@ -22,7 +22,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_CORVFDC01 = device_creator<a2bus_corvfdc01_device>;
+DEFINE_DEVICE_TYPE(A2BUS_CORVFDC01, a2bus_corvfdc01_device, "crvfdc01", "Corvus Systems Floppy Controller")
#define FDC01_ROM_REGION "fdc01_rom"
#define FDC01_FDC_TAG "fdc01_fdc"
@@ -111,25 +111,20 @@ const tiny_rom_entry *a2bus_corvfdc01_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_corvfdc01_device::a2bus_corvfdc01_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_corvfdc01_device::a2bus_corvfdc01_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_wdfdc(*this, FDC01_FDC_TAG),
m_con1(*this, FDC01_FDC_TAG":0"),
m_con2(*this, FDC01_FDC_TAG":1"),
m_con3(*this, FDC01_FDC_TAG":2"),
- m_con4(*this, FDC01_FDC_TAG":3"), m_rom(nullptr), m_fdc_local_status(0), m_fdc_local_command(0), m_curfloppy(nullptr)
+ m_con4(*this, FDC01_FDC_TAG":3"),
+ m_rom(nullptr), m_fdc_local_status(0), m_fdc_local_command(0), m_curfloppy(nullptr)
{
}
a2bus_corvfdc01_device::a2bus_corvfdc01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_CORVFDC01, "Corvus Systems Floppy Controller", tag, owner, clock, "crvfdc01", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_wdfdc(*this, FDC01_FDC_TAG),
- m_con1(*this, FDC01_FDC_TAG":0"),
- m_con2(*this, FDC01_FDC_TAG":1"),
- m_con3(*this, FDC01_FDC_TAG":2"),
- m_con4(*this, FDC01_FDC_TAG":3"), m_rom(nullptr), m_fdc_local_status(0), m_fdc_local_command(0), m_curfloppy(nullptr)
+ a2bus_corvfdc01_device(mconfig, A2BUS_CORVFDC01, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/corvfdc01.h b/src/devices/bus/a2bus/corvfdc01.h
index 63953dd0acb..fc5395087de 100644
--- a/src/devices/bus/a2bus/corvfdc01.h
+++ b/src/devices/bus/a2bus/corvfdc01.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_CORVFDC01__
-#define __A2BUS_CORVFDC01__
+#ifndef MAME_BUS_A2BUS_CORVFDC01_H
+#define MAME_BUS_A2BUS_CORVFDC01_H
+
+#pragma once
#include "a2bus.h"
#include "machine/wd_fdc.h"
@@ -25,7 +27,6 @@ class a2bus_corvfdc01_device:
{
public:
// construction/destruction
- a2bus_corvfdc01_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_corvfdc01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -38,6 +39,8 @@ public:
DECLARE_FLOPPY_FORMATS(corv_floppy_formats);
protected:
+ a2bus_corvfdc01_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -46,7 +49,7 @@ protected:
virtual void write_c0nx(address_space &space, uint8_t offset, uint8_t data) override;
virtual uint8_t read_cnxx(address_space &space, uint8_t offset) override;
- required_device<fd1793_t> m_wdfdc;
+ required_device<fd1793_device> m_wdfdc;
required_device<floppy_connector> m_con1;
required_device<floppy_connector> m_con2;
required_device<floppy_connector> m_con3;
@@ -59,6 +62,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_CORVFDC01;
+DECLARE_DEVICE_TYPE(A2BUS_CORVFDC01, a2bus_corvfdc01_device)
-#endif /* __A2BUS_CORVFDC01__ */
+#endif // MAME_BUS_A2BUS_CORVFDC01_H
diff --git a/src/devices/bus/a2bus/corvfdc02.cpp b/src/devices/bus/a2bus/corvfdc02.cpp
index a65726629cb..f87d793ceb5 100644
--- a/src/devices/bus/a2bus/corvfdc02.cpp
+++ b/src/devices/bus/a2bus/corvfdc02.cpp
@@ -24,7 +24,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_CORVFDC02 = device_creator<a2bus_corvfdc02_device>;
+DEFINE_DEVICE_TYPE(A2BUS_CORVFDC02, a2bus_corvfdc02_device, "crvfdc02", "Corvus Systems Buffered Floppy Controller")
#define FDC02_ROM_REGION "fdc02_rom"
#define FDC02_FDC_TAG "fdc02_fdc"
@@ -81,8 +81,8 @@ const tiny_rom_entry *a2bus_corvfdc02_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_corvfdc02_device::a2bus_corvfdc02_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_corvfdc02_device::a2bus_corvfdc02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_fdc(*this, FDC02_FDC_TAG),
m_con1(*this, FDC02_FDC_TAG":0"),
@@ -93,13 +93,7 @@ a2bus_corvfdc02_device::a2bus_corvfdc02_device(const machine_config &mconfig, de
}
a2bus_corvfdc02_device::a2bus_corvfdc02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_CORVFDC02, "Corvus Systems Buffered Floppy Controller", tag, owner, clock, "crvfdc02", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_fdc(*this, FDC02_FDC_TAG),
- m_con1(*this, FDC02_FDC_TAG":0"),
- m_con2(*this, FDC02_FDC_TAG":1"),
- m_con3(*this, FDC02_FDC_TAG":2"),
- m_con4(*this, FDC02_FDC_TAG":3"), m_rom(nullptr), m_fdc_local_status(0), m_fdc_local_command(0), m_bufptr(0), m_curfloppy(nullptr), m_in_drq(false), m_timer(nullptr)
+ a2bus_corvfdc02_device(mconfig, A2BUS_CORVFDC02, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/corvfdc02.h b/src/devices/bus/a2bus/corvfdc02.h
index f6d5d1885ef..089e3c5cc01 100644
--- a/src/devices/bus/a2bus/corvfdc02.h
+++ b/src/devices/bus/a2bus/corvfdc02.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_CORVFDC02__
-#define __A2BUS_CORVFDC02__
+#ifndef MAME_BUS_A2BUS_CORVFDC02_H
+#define MAME_BUS_A2BUS_CORVFDC02_H
+
+#pragma once
#include "a2bus.h"
#include "machine/upd765.h"
@@ -25,7 +27,6 @@ class a2bus_corvfdc02_device:
{
public:
// construction/destruction
- a2bus_corvfdc02_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_corvfdc02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -38,6 +39,8 @@ public:
DECLARE_FLOPPY_FORMATS(corv_floppy_formats);
protected:
+ a2bus_corvfdc02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -64,6 +67,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_CORVFDC02;
+DECLARE_DEVICE_TYPE(A2BUS_CORVFDC02, a2bus_corvfdc02_device)
-#endif /* __A2BUS_CORVFDC02__ */
+#endif // MAME_BUS_A2BUS_CORVFDC02_H
diff --git a/src/devices/bus/a2bus/ezcgi.cpp b/src/devices/bus/a2bus/ezcgi.cpp
index 49cae2b14e8..1fc3ede7399 100644
--- a/src/devices/bus/a2bus/ezcgi.cpp
+++ b/src/devices/bus/a2bus/ezcgi.cpp
@@ -25,9 +25,9 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_EZCGI = device_creator<a2bus_ezcgi_device>;
-const device_type A2BUS_EZCGI_9938 = device_creator<a2bus_ezcgi_9938_device>;
-const device_type A2BUS_EZCGI_9958 = device_creator<a2bus_ezcgi_9958_device>;
+DEFINE_DEVICE_TYPE(A2BUS_EZCGI, a2bus_ezcgi_device, "a2ezcgi", "E-Z Color Graphics Interface")
+DEFINE_DEVICE_TYPE(A2BUS_EZCGI_9938, a2bus_ezcgi_9938_device, "a2ezcgi3", "E-Z Color Graphics Interface (TMS9938)")
+DEFINE_DEVICE_TYPE(A2BUS_EZCGI_9958, a2bus_ezcgi_9958_device, "a2ezcgi5", "E-Z Color Graphics Interface (TMS9958)")
MACHINE_CONFIG_FRAGMENT( ezcgi )
MCFG_DEVICE_ADD( TMS_TAG, TMS9918A, XTAL_10_738635MHz / 2 )
@@ -97,42 +97,36 @@ machine_config_constructor a2bus_ezcgi_9958_device::device_mconfig_additions() c
//**************************************************************************
a2bus_ezcgi_device::a2bus_ezcgi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_EZCGI, "E-Z Color Graphics Interface", tag, owner, clock, "a2ezcgi", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_tms(*this, TMS_TAG)
+ a2bus_ezcgi_device(mconfig, A2BUS_EZCGI, tag, owner, clock)
{
}
-a2bus_ezcgi_device::a2bus_ezcgi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_ezcgi_device::a2bus_ezcgi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_tms(*this, TMS_TAG)
{
}
a2bus_ezcgi_9938_device::a2bus_ezcgi_9938_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_EZCGI_9938, "E-Z Color Graphics Interface (TMS9938)", tag, owner, clock, "a2ezcgi3", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_tms(*this, TMS_TAG)
+ a2bus_ezcgi_9938_device(mconfig, A2BUS_EZCGI_9938, tag, owner, clock)
{
}
-a2bus_ezcgi_9938_device::a2bus_ezcgi_9938_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_ezcgi_9938_device::a2bus_ezcgi_9938_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_tms(*this, TMS_TAG)
{
}
a2bus_ezcgi_9958_device::a2bus_ezcgi_9958_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_EZCGI_9958, "E-Z Color Graphics Interface (TMS9958)", tag, owner, clock, "a2ezcgi5", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_tms(*this, TMS_TAG)
+ a2bus_ezcgi_9958_device(mconfig, A2BUS_EZCGI_9958, tag, owner, clock)
{
}
-a2bus_ezcgi_9958_device::a2bus_ezcgi_9958_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_ezcgi_9958_device::a2bus_ezcgi_9958_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_tms(*this, TMS_TAG)
{
diff --git a/src/devices/bus/a2bus/ezcgi.h b/src/devices/bus/a2bus/ezcgi.h
index 095c3da9beb..fe8ded273c3 100644
--- a/src/devices/bus/a2bus/ezcgi.h
+++ b/src/devices/bus/a2bus/ezcgi.h
@@ -10,8 +10,10 @@
*********************************************************************/
-#ifndef __A2BUS_EZCGI__
-#define __A2BUS_EZCGI__
+#ifndef MAME_BUS_A2BUS_A2EZCGI_H
+#define MAME_BUS_A2BUS_A2EZCGI_H
+
+#pragma once
#include "a2bus.h"
#include "video/tms9928a.h"
@@ -28,7 +30,6 @@ class a2bus_ezcgi_device:
public:
// construction/destruction
a2bus_ezcgi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2bus_ezcgi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -36,6 +37,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( tms_irq_w );
protected:
+ a2bus_ezcgi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -53,7 +56,6 @@ class a2bus_ezcgi_9938_device:
public:
// construction/destruction
a2bus_ezcgi_9938_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2bus_ezcgi_9938_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -61,6 +63,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( tms_irq_w );
protected:
+ a2bus_ezcgi_9938_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -78,7 +82,6 @@ class a2bus_ezcgi_9958_device:
public:
// construction/destruction
a2bus_ezcgi_9958_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a2bus_ezcgi_9958_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -86,6 +89,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( tms_irq_w );
protected:
+ a2bus_ezcgi_9958_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -97,8 +102,8 @@ protected:
};
// device type definition
-extern const device_type A2BUS_EZCGI;
-extern const device_type A2BUS_EZCGI_9938;
-extern const device_type A2BUS_EZCGI_9958;
+DECLARE_DEVICE_TYPE(A2BUS_EZCGI, a2bus_ezcgi_device)
+DECLARE_DEVICE_TYPE(A2BUS_EZCGI_9938, a2bus_ezcgi_9938_device)
+DECLARE_DEVICE_TYPE(A2BUS_EZCGI_9958, a2bus_ezcgi_9958_device)
-#endif /* __A2BUS_EZCGI__ */
+#endif // MAME_BUS_A2BUS_A2EZCGI_H
diff --git a/src/devices/bus/a2bus/laser128.cpp b/src/devices/bus/a2bus/laser128.cpp
index 4cfe11e52ec..947f9df5b5f 100644
--- a/src/devices/bus/a2bus/laser128.cpp
+++ b/src/devices/bus/a2bus/laser128.cpp
@@ -19,7 +19,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_LASER128 = device_creator<a2bus_laser128_device>;
+DEFINE_DEVICE_TYPE(A2BUS_LASER128, a2bus_laser128_device, "a2laser128", "VTech Laser 128 Internal Device")
MACHINE_CONFIG_FRAGMENT( a2laser128 )
MACHINE_CONFIG_END
@@ -42,16 +42,15 @@ machine_config_constructor a2bus_laser128_device::device_mconfig_additions() con
// LIVE DEVICE
//**************************************************************************
-a2bus_laser128_device::a2bus_laser128_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_laser128_device::a2bus_laser128_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this), m_rom(nullptr), m_slot7_bank(0), m_slot7_ram_bank(0)
{
}
a2bus_laser128_device::a2bus_laser128_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_LASER128, "VTech Laser 128 Internal Device", tag, owner, clock, "a2laser128", __FILE__),
- device_a2bus_card_interface(mconfig, *this), m_rom(nullptr), m_slot7_bank(0), m_slot7_ram_bank(0)
+ a2bus_laser128_device(mconfig, A2BUS_LASER128, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/laser128.h b/src/devices/bus/a2bus/laser128.h
index 22733ea94fa..c324911ea37 100644
--- a/src/devices/bus/a2bus/laser128.h
+++ b/src/devices/bus/a2bus/laser128.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_LASER128__
-#define __A2BUS_LASER128__
+#ifndef MAME_BUS_A2BUS_LASER128_H
+#define MAME_BUS_A2BUS_LASER128_H
+
+#pragma once
#include "a2bus.h"
@@ -23,13 +25,14 @@ class a2bus_laser128_device:
{
public:
// construction/destruction
- a2bus_laser128_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_laser128_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
+ a2bus_laser128_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -48,6 +51,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_LASER128;
+DECLARE_DEVICE_TYPE(A2BUS_LASER128, a2bus_laser128_device)
-#endif /* __A2BUS_LASER128__ */
+#endif // MAME_BUS_A2BUS_LASER128_H
diff --git a/src/devices/bus/a2bus/mouse.cpp b/src/devices/bus/a2bus/mouse.cpp
index c332fce3d65..5380df8894c 100644
--- a/src/devices/bus/a2bus/mouse.cpp
+++ b/src/devices/bus/a2bus/mouse.cpp
@@ -83,7 +83,7 @@
GLOBAL VARIABLES
***************************************************************************/
-const device_type A2BUS_MOUSE = device_creator<a2bus_mouse_device>;
+DEFINE_DEVICE_TYPE(A2BUS_MOUSE, a2bus_mouse_device, "a2mouse", "Apple II Mouse Card")
static MACHINE_CONFIG_FRAGMENT( mouse )
MCFG_CPU_ADD(MOUSE_MCU_TAG, M68705P3, 2043600)
@@ -161,8 +161,8 @@ const tiny_rom_entry *a2bus_mouse_device::device_rom_region() const
LIVE DEVICE
***************************************************************************/
-a2bus_mouse_device::a2bus_mouse_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_mouse_device::a2bus_mouse_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_pia(*this, MOUSE_PIA_TAG),
m_mcu(*this, MOUSE_MCU_TAG),
@@ -175,7 +175,7 @@ a2bus_mouse_device::a2bus_mouse_device(const machine_config &mconfig, device_typ
}
a2bus_mouse_device::a2bus_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_mouse_device(mconfig, A2BUS_MOUSE, "Apple II Mouse Card", tag, owner, clock, "a2mouse", __FILE__)
+ a2bus_mouse_device(mconfig, A2BUS_MOUSE, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/mouse.h b/src/devices/bus/a2bus/mouse.h
index 97a9c00059b..b20513bc4d0 100644
--- a/src/devices/bus/a2bus/mouse.h
+++ b/src/devices/bus/a2bus/mouse.h
@@ -11,6 +11,8 @@
#ifndef MAME_DEVICES_A2BUS_MOUSE_H
#define MAME_DEVICES_A2BUS_MOUSE_H
+#pragma once
+
#include "a2bus.h"
#include "machine/6821pia.h"
#include "cpu/m6805/m68705.h"
@@ -25,7 +27,6 @@ class a2bus_mouse_device:
{
public:
// construction/destruction
- a2bus_mouse_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -45,6 +46,8 @@ public:
DECLARE_WRITE8_MEMBER(mcu_port_c_w);
protected:
+ a2bus_mouse_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
diff --git a/src/devices/bus/a2bus/pc_xporter.cpp b/src/devices/bus/a2bus/pc_xporter.cpp
index 158475219bc..f5f267cd883 100644
--- a/src/devices/bus/a2bus/pc_xporter.cpp
+++ b/src/devices/bus/a2bus/pc_xporter.cpp
@@ -89,7 +89,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_PCXPORTER = device_creator<a2bus_pcxporter_device>;
+DEFINE_DEVICE_TYPE(A2BUS_PCXPORTER, a2bus_pcxporter_device, "a2pcxport", "Applied Engineering PC Transporter")
static ADDRESS_MAP_START( pc_map, AS_PROGRAM, 16, a2bus_pcxporter_device )
ADDRESS_MAP_UNMAP_HIGH
@@ -183,8 +183,8 @@ machine_config_constructor a2bus_pcxporter_device::device_mconfig_additions() co
// LIVE DEVICE
//**************************************************************************
-a2bus_pcxporter_device::a2bus_pcxporter_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_pcxporter_device::a2bus_pcxporter_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_v30(*this, "v30"),
m_pic8259(*this, "pic8259"),
@@ -197,15 +197,7 @@ a2bus_pcxporter_device::a2bus_pcxporter_device(const machine_config &mconfig, de
}
a2bus_pcxporter_device::a2bus_pcxporter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_PCXPORTER, "Applied Engineering PC Transporter", tag, owner, clock, "a2pcxport", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_v30(*this, "v30"),
- m_pic8259(*this, "pic8259"),
- m_dma8237(*this, "dma8237"),
- m_pit8253(*this, "pit8253"),
- m_speaker(*this, "speaker"),
- m_isabus(*this, "isa"),
- m_pc_kbdc(*this, "pc_kbdc")
+ a2bus_pcxporter_device(mconfig, A2BUS_PCXPORTER, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/pc_xporter.h b/src/devices/bus/a2bus/pc_xporter.h
index 49221a28ce9..5b990adc5a2 100644
--- a/src/devices/bus/a2bus/pc_xporter.h
+++ b/src/devices/bus/a2bus/pc_xporter.h
@@ -8,6 +8,9 @@
*********************************************************************/
+#ifndef MAME_BUS_A2BUS_PC_XPORTER_H
+#define MAME_BUS_A2BUS_PC_XPORTER_H
+
#pragma once
#include "a2bus.h"
@@ -33,7 +36,6 @@ class a2bus_pcxporter_device:
{
public:
// construction/destruction
- a2bus_pcxporter_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_pcxporter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -41,14 +43,6 @@ public:
DECLARE_READ16_MEMBER(pc_bios_r);
- required_device<v30_device> m_v30;
- required_device<pic8259_device> m_pic8259;
- required_device<am9517a_device> m_dma8237;
- required_device<pit8253_device> m_pit8253;
- required_device<speaker_sound_device> m_speaker;
- required_device<isa8_device> m_isabus;
- optional_device<pc_kbdc_device> m_pc_kbdc;
-
// overrides of standard a2bus slot functions
virtual uint8_t read_c0nx(address_space &space, uint8_t offset) override;
virtual void write_c0nx(address_space &space, uint8_t offset, uint8_t data) override;
@@ -57,16 +51,6 @@ public:
virtual uint8_t read_c800(address_space &space, uint16_t offset) override;
virtual void write_c800(address_space &space, uint16_t offset, uint8_t data) override;
- uint8_t m_u73_q2;
- uint8_t m_out1;
- int m_dma_channel;
- uint8_t m_dma_offset[4];
- uint8_t m_pc_spkrdata;
- uint8_t m_pit_out2;
- bool m_cur_eop;
-
- uint8_t m_nmi_enabled;
-
// interface to the keyboard
DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
DECLARE_WRITE_LINE_MEMBER( keyboard_data_w );
@@ -98,9 +82,29 @@ public:
DECLARE_WRITE8_MEMBER(nmi_enable_w);
protected:
+ a2bus_pcxporter_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
+ required_device<v30_device> m_v30;
+ required_device<pic8259_device> m_pic8259;
+ required_device<am9517a_device> m_dma8237;
+ required_device<pit8253_device> m_pit8253;
+ required_device<speaker_sound_device> m_speaker;
+ required_device<isa8_device> m_isabus;
+ optional_device<pc_kbdc_device> m_pc_kbdc;
+
+ uint8_t m_u73_q2;
+ uint8_t m_out1;
+ int m_dma_channel;
+ uint8_t m_dma_offset[4];
+ uint8_t m_pc_spkrdata;
+ uint8_t m_pit_out2;
+ bool m_cur_eop;
+
+ uint8_t m_nmi_enabled;
+
private:
uint8_t m_ram[768*1024];
uint8_t m_c800_ram[0x400];
@@ -116,3 +120,5 @@ private:
// device type definition
extern const device_type A2BUS_PCXPORTER;
+
+#endif // MAME_BUS_A2BUS_PC_XPORTER_H
diff --git a/src/devices/bus/a2bus/ramcard128k.cpp b/src/devices/bus/a2bus/ramcard128k.cpp
index 6697c6ac9ab..b98d2edfad9 100644
--- a/src/devices/bus/a2bus/ramcard128k.cpp
+++ b/src/devices/bus/a2bus/ramcard128k.cpp
@@ -19,7 +19,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_RAMCARD128K = device_creator<a2bus_ssramcard_device>;
+DEFINE_DEVICE_TYPE(A2BUS_RAMCARD128K, a2bus_ssramcard_device, "ssram128", "Saturn Systems 128K Extended Language Card")
/***************************************************************************
FUNCTION PROTOTYPES
@@ -29,15 +29,14 @@ const device_type A2BUS_RAMCARD128K = device_creator<a2bus_ssramcard_device>;
// LIVE DEVICE
//**************************************************************************
-a2bus_ssramcard_device::a2bus_ssramcard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_a2bus_card_interface(mconfig, *this), m_inh_state(0), m_last_offset(0), m_dxxx_bank(0), m_main_bank(0)
+a2bus_ssramcard_device::a2bus_ssramcard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock), device_a2bus_card_interface(mconfig, *this),
+ m_inh_state(0), m_last_offset(0), m_dxxx_bank(0), m_main_bank(0)
{
}
a2bus_ssramcard_device::a2bus_ssramcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_RAMCARD128K, "Saturn Systems 128K Extended Language Card", tag, owner, clock, "ssram128", __FILE__),
- device_a2bus_card_interface(mconfig, *this), m_inh_state(0), m_last_offset(0), m_dxxx_bank(0), m_main_bank(0)
+ a2bus_ssramcard_device(mconfig, A2BUS_RAMCARD128K, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/ramcard128k.h b/src/devices/bus/a2bus/ramcard128k.h
index 922bebbb730..a6ac119f200 100644
--- a/src/devices/bus/a2bus/ramcard128k.h
+++ b/src/devices/bus/a2bus/ramcard128k.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_RAMCARD128K__
-#define __A2BUS_RAMCARD128K__
+#ifndef MAME_BUS_A2BUS_RAMCARD128K_H
+#define MAME_BUS_A2BUS_RAMCARD128K_H
+
+#pragma once
#include "a2bus.h"
@@ -23,10 +25,11 @@ class a2bus_ssramcard_device:
{
public:
// construction/destruction
- a2bus_ssramcard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_ssramcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
+ a2bus_ssramcard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -50,6 +53,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_RAMCARD128K;
+DECLARE_DEVICE_TYPE(A2BUS_RAMCARD128K, a2bus_ssramcard_device)
-#endif /* __A2BUS_RAMCARD128K__ */
+#endif // MAME_BUS_A2BUS_RAMCARD128K_H
diff --git a/src/devices/bus/a2bus/ramcard16k.cpp b/src/devices/bus/a2bus/ramcard16k.cpp
index 3feb4a62bd3..d80bc9f4f6c 100644
--- a/src/devices/bus/a2bus/ramcard16k.cpp
+++ b/src/devices/bus/a2bus/ramcard16k.cpp
@@ -19,7 +19,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_RAMCARD16K = device_creator<a2bus_ramcard_device>;
+DEFINE_DEVICE_TYPE(A2BUS_RAMCARD16K, a2bus_ramcard_device, "a2ram16k", "Apple II 16K Language Card")
/***************************************************************************
FUNCTION PROTOTYPES
@@ -29,15 +29,14 @@ const device_type A2BUS_RAMCARD16K = device_creator<a2bus_ramcard_device>;
// LIVE DEVICE
//**************************************************************************
-a2bus_ramcard_device::a2bus_ramcard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_ramcard_device::a2bus_ramcard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this), m_inh_state(0), m_prewrite(false), m_dxxx_bank(0)
{
}
a2bus_ramcard_device::a2bus_ramcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_RAMCARD16K, "Apple II 16K Language Card", tag, owner, clock, "a2ram16k", __FILE__),
- device_a2bus_card_interface(mconfig, *this), m_inh_state(0), m_prewrite(false), m_dxxx_bank(0)
+ a2bus_ramcard_device(mconfig, A2BUS_RAMCARD16K, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a2bus/ramcard16k.h b/src/devices/bus/a2bus/ramcard16k.h
index abfceec35d9..43e8ca8b535 100644
--- a/src/devices/bus/a2bus/ramcard16k.h
+++ b/src/devices/bus/a2bus/ramcard16k.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_RAMCARD16K__
-#define __A2BUS_RAMCARD16K__
+#ifndef MAME_BUS_A2BUS_RAMCARD16K_H
+#define MAME_BUS_A2BUS_RAMCARD16K_H
+
+#pragma once
#include "a2bus.h"
@@ -23,10 +25,11 @@ class a2bus_ramcard_device:
{
public:
// construction/destruction
- a2bus_ramcard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_ramcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
+ a2bus_ramcard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -49,6 +52,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_RAMCARD16K;
+DECLARE_DEVICE_TYPE(A2BUS_RAMCARD16K, a2bus_ramcard_device)
-#endif /* __A2BUS_RAMCARD16K__ */
+#endif // MAME_BUS_A2BUS_RAMCARD16K_H
diff --git a/src/devices/bus/a2bus/timemasterho.cpp b/src/devices/bus/a2bus/timemasterho.cpp
index 7eee31eb768..27951e7d635 100644
--- a/src/devices/bus/a2bus/timemasterho.cpp
+++ b/src/devices/bus/a2bus/timemasterho.cpp
@@ -46,7 +46,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A2BUS_TIMEMASTERHO = device_creator<a2bus_timemasterho_device>;
+DEFINE_DEVICE_TYPE(A2BUS_TIMEMASTERHO, a2bus_timemasterho_device, "a2tmstho", "Applied Engineering TimeMaster H.O.")
#define TIMEMASTER_ROM_REGION "timemst_rom"
#define TIMEMASTER_PIA_TAG "timemst_pia"
@@ -122,8 +122,8 @@ const tiny_rom_entry *a2bus_timemasterho_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-a2bus_timemasterho_device::a2bus_timemasterho_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+a2bus_timemasterho_device::a2bus_timemasterho_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_pia(*this, TIMEMASTER_PIA_TAG),
m_msm5832(*this, TIMEMASTER_M5832_TAG),
@@ -133,11 +133,7 @@ a2bus_timemasterho_device::a2bus_timemasterho_device(const machine_config &mconf
}
a2bus_timemasterho_device::a2bus_timemasterho_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2BUS_TIMEMASTERHO, "Applied Engineering TimeMaster H.O.", tag, owner, clock, "a2tmstho", __FILE__),
- device_a2bus_card_interface(mconfig, *this),
- m_pia(*this, TIMEMASTER_PIA_TAG),
- m_msm5832(*this, TIMEMASTER_M5832_TAG),
- m_dsw1(*this, "DSW1"), m_rom(nullptr), m_irqa(false), m_irqb(false)
+ a2bus_timemasterho_device(mconfig, A2BUS_TIMEMASTERHO, tag, owner, clock)
{
m_started = false;
}
diff --git a/src/devices/bus/a2bus/timemasterho.h b/src/devices/bus/a2bus/timemasterho.h
index c05d95571c7..ad6457ddf03 100644
--- a/src/devices/bus/a2bus/timemasterho.h
+++ b/src/devices/bus/a2bus/timemasterho.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __A2BUS_TIMEMASTERHO__
-#define __A2BUS_TIMEMASTERHO__
+#ifndef MAME_BUS_A2BUS_TIMEMASTERHO_H
+#define MAME_BUS_A2BUS_TIMEMASTERHO_H
+
+#pragma once
#include "a2bus.h"
#include "machine/6821pia.h"
@@ -25,7 +27,6 @@ class a2bus_timemasterho_device:
{
public:
// construction/destruction
- a2bus_timemasterho_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a2bus_timemasterho_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -39,6 +40,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(pia_irqb_w);
protected:
+ a2bus_timemasterho_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -61,6 +64,6 @@ private:
};
// device type definition
-extern const device_type A2BUS_TIMEMASTERHO;
+DECLARE_DEVICE_TYPE(A2BUS_TIMEMASTERHO, a2bus_timemasterho_device)
-#endif /* __A2BUS_TIMEMASTERHO__ */
+#endif // MAME_BUS_A2BUS_TIMEMASTERHO_H
diff --git a/src/devices/bus/a7800/a78_carts.h b/src/devices/bus/a7800/a78_carts.h
index c115d8f45d9..dc9abffbbe2 100644
--- a/src/devices/bus/a7800/a78_carts.h
+++ b/src/devices/bus/a7800/a78_carts.h
@@ -1,8 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A78_CARTS_H
-#define __A78_CARTS_H
+#ifndef MAME_BUS_A7800_A78_CARTS_H
+#define MAME_BUS_A7800_A78_CARTS_H
+#pragma once
#include "rom.h"
#include "xboard.h"
@@ -36,4 +37,4 @@ SLOT_INTERFACE_END
// supported devices
SLOT_INTERFACE_EXTERN(a78_cart);
-#endif
+#endif // MAME_BUS_A7800_A78_CARTS_H
diff --git a/src/devices/bus/a7800/a78_slot.cpp b/src/devices/bus/a7800/a78_slot.cpp
index 878e5c94dd4..78749155cbb 100644
--- a/src/devices/bus/a7800/a78_slot.cpp
+++ b/src/devices/bus/a7800/a78_slot.cpp
@@ -33,7 +33,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A78_CART_SLOT = device_creator<a78_cart_slot_device>;
+DEFINE_DEVICE_TYPE(A78_CART_SLOT, a78_cart_slot_device, "a78_cart_slot", "Atari 7800 Cartridge Slot")
//-------------------------------------------------
@@ -112,10 +112,12 @@ void device_a78_cart_interface::nvram_alloc(uint32_t size)
//-------------------------------------------------
// a78_cart_slot_device - constructor
//-------------------------------------------------
-a78_cart_slot_device::a78_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A78_CART_SLOT, "Atari 7800 Cartridge Slot", tag, owner, clock, "a78_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this), m_cart(nullptr), m_type(0)
+a78_cart_slot_device::a78_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, A78_CART_SLOT, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
+ , device_slot_interface(mconfig, *this)
+ , m_cart(nullptr)
+ , m_type(0)
{
}
diff --git a/src/devices/bus/a7800/a78_slot.h b/src/devices/bus/a7800/a78_slot.h
index 7164b579d8d..e498f416e54 100644
--- a/src/devices/bus/a7800/a78_slot.h
+++ b/src/devices/bus/a7800/a78_slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A78_SLOT_H
-#define __A78_SLOT_H
+#ifndef MAME_BUS_A7800_A78_SLOT_H
+#define MAME_BUS_A7800_A78_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -43,7 +45,6 @@ class device_a78_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_a78_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_a78_cart_interface();
// memory accessor
@@ -67,6 +68,8 @@ public:
uint32_t get_nvram_size() { return m_nvram.size(); }
protected:
+ device_a78_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -137,7 +140,7 @@ private:
// device type definition
-extern const device_type A78_CART_SLOT;
+DECLARE_DEVICE_TYPE(A78_CART_SLOT, a78_cart_slot_device)
/***************************************************************************
@@ -151,4 +154,4 @@ extern const device_type A78_CART_SLOT;
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+#endif // MAME_BUS_A7800_A78_SLOT_H
diff --git a/src/devices/bus/a7800/cpuwiz.cpp b/src/devices/bus/a7800/cpuwiz.cpp
index cc63d13b9c8..69506ae5d84 100644
--- a/src/devices/bus/a7800/cpuwiz.cpp
+++ b/src/devices/bus/a7800/cpuwiz.cpp
@@ -35,32 +35,32 @@
// constructor
//-------------------------------------------------
-const device_type A78_ROM_VERSABOARD = device_creator<a78_versaboard_device>;
-const device_type A78_ROM_MEGACART = device_creator<a78_megacart_device>;
+DEFINE_DEVICE_TYPE(A78_ROM_VERSABOARD, a78_versaboard_device, "a78_versaboard", "Atari 7800 VersaBoard Cart")
+DEFINE_DEVICE_TYPE(A78_ROM_MEGACART, a78_megacart_device, "a78_megacart", "Atari 7800 MegaCart+")
-const device_type A78_ROM_P450_VB = device_creator<a78_rom_p450_vb_device>;
+DEFINE_DEVICE_TYPE(A78_ROM_P450_VB, a78_rom_p450_vb_device, "a78_versapokey", "Atari 7800 VersaBoard + POKEY @ 0x450 Cart")
-a78_versaboard_device::a78_versaboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : a78_rom_sg_device(mconfig, type, name, tag, owner, clock, shortname, source), m_ram_bank(0)
- {
+a78_versaboard_device::a78_versaboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : a78_rom_sg_device(mconfig, type, tag, owner, clock), m_ram_bank(0)
+{
}
a78_versaboard_device::a78_versaboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_sg_device(mconfig, A78_ROM_VERSABOARD, "Atari 7800 VersaBoard Cart", tag, owner, clock, "a78_versaboard", __FILE__), m_ram_bank(0)
- {
+ : a78_versaboard_device(mconfig, A78_ROM_VERSABOARD, tag, owner, clock)
+{
}
a78_megacart_device::a78_megacart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_versaboard_device(mconfig, A78_ROM_MEGACART, "Atari 7800 MegaCart+", tag, owner, clock, "a78_megacart", __FILE__)
+ : a78_versaboard_device(mconfig, A78_ROM_MEGACART, tag, owner, clock)
{
}
a78_rom_p450_vb_device::a78_rom_p450_vb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_versaboard_device(mconfig, A78_ROM_P450_VB, "Atari 7800 VersaBoard + POKEY @ 0x0450 Cart", tag, owner, clock, "a78_versapokey", __FILE__),
- m_pokey450(*this, "pokey450")
+ : a78_versaboard_device(mconfig, A78_ROM_P450_VB, tag, owner, clock)
+ , m_pokey450(*this, "pokey450")
{
}
diff --git a/src/devices/bus/a7800/cpuwiz.h b/src/devices/bus/a7800/cpuwiz.h
index 7d288055aaa..2357064428c 100644
--- a/src/devices/bus/a7800/cpuwiz.h
+++ b/src/devices/bus/a7800/cpuwiz.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A78_CPUWIZ_H
-#define __A78_CPUWIZ_H
+#ifndef MAME_BUS_A7800_CPUWIZ_H
+#define MAME_BUS_A7800_CPUWIZ_H
+
+#pragma once
#include "a78_slot.h"
#include "rom.h"
@@ -13,7 +15,6 @@ class a78_versaboard_device : public a78_rom_sg_device
{
public:
// construction/destruction
- a78_versaboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a78_versaboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
@@ -25,6 +26,8 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_40xx) override;
protected:
+ a78_versaboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
int m_ram_bank;
};
@@ -66,9 +69,9 @@ protected:
// device type definition
-extern const device_type A78_ROM_VERSABOARD;
-extern const device_type A78_ROM_MEGACART;
+DECLARE_DEVICE_TYPE(A78_ROM_VERSABOARD, a78_versaboard_device)
+DECLARE_DEVICE_TYPE(A78_ROM_MEGACART, a78_megacart_device)
-extern const device_type A78_ROM_P450_VB;
+DECLARE_DEVICE_TYPE(A78_ROM_P450_VB, a78_rom_p450_vb_device)
-#endif
+#endif // MAME_BUS_A7800_CPUWIZ_H
diff --git a/src/devices/bus/a7800/hiscore.cpp b/src/devices/bus/a7800/hiscore.cpp
index e78147c2f46..2241d092597 100644
--- a/src/devices/bus/a7800/hiscore.cpp
+++ b/src/devices/bus/a7800/hiscore.cpp
@@ -17,12 +17,12 @@
// constructor
//-------------------------------------------------
-const device_type A78_HISCORE = device_creator<a78_hiscore_device>;
+DEFINE_DEVICE_TYPE(A78_HISCORE, a78_hiscore_device, "a78_hiscore", "Atari 7800 High Score Cart")
a78_hiscore_device::a78_hiscore_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_device(mconfig, A78_HISCORE, "Atari 7800 High Score Cart", tag, owner, clock, "a78_highscore", __FILE__),
- m_hscslot(*this, "hsc_slot")
+ : a78_rom_device(mconfig, A78_HISCORE, tag, owner, clock)
+ , m_hscslot(*this, "hsc_slot")
{
}
diff --git a/src/devices/bus/a7800/hiscore.h b/src/devices/bus/a7800/hiscore.h
index 2ce16b319c6..4f7606a85ff 100644
--- a/src/devices/bus/a7800/hiscore.h
+++ b/src/devices/bus/a7800/hiscore.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A78_HISCORE_H
-#define __A78_HISCORE_H
+#ifndef MAME_BUS_A7800_HISCORE_H
+#define MAME_BUS_A7800_HISCORE_H
+
+#pragma once
#include "a78_slot.h"
#include "rom.h"
@@ -34,7 +36,7 @@ protected:
// device type definition
-extern const device_type A78_HISCORE;
+DECLARE_DEVICE_TYPE(A78_HISCORE, a78_hiscore_device)
-#endif
+#endif // MAME_BUS_A7800_HISCORE_H
diff --git a/src/devices/bus/a7800/rom.cpp b/src/devices/bus/a7800/rom.cpp
index 8604ddf92f5..1b624fdb516 100644
--- a/src/devices/bus/a7800/rom.cpp
+++ b/src/devices/bus/a7800/rom.cpp
@@ -27,131 +27,131 @@
// constructor
//-------------------------------------------------
-const device_type A78_ROM = device_creator<a78_rom_device>;
-const device_type A78_ROM_SG = device_creator<a78_rom_sg_device>;
-const device_type A78_ROM_POKEY = device_creator<a78_rom_pokey_device>;
-const device_type A78_ROM_SG_POKEY = device_creator<a78_rom_sg_pokey_device>;
-const device_type A78_ROM_SG_RAM = device_creator<a78_rom_sg_ram_device>;
-const device_type A78_ROM_SG9 = device_creator<a78_rom_sg9_device>;
-const device_type A78_ROM_MRAM = device_creator<a78_rom_mram_device>;
-const device_type A78_ROM_ABSOLUTE = device_creator<a78_rom_abs_device>;
-const device_type A78_ROM_ACTIVISION = device_creator<a78_rom_act_device>;
+DEFINE_DEVICE_TYPE(A78_ROM, a78_rom_device, "a78_rom", "Atari 7800 ROM Carts w/no Bankswitch")
+DEFINE_DEVICE_TYPE(A78_ROM_SG, a78_rom_sg_device, "a78_rom_sg", "Atari 7800 ROM Carts w/SuperGame Bankswitch")
+DEFINE_DEVICE_TYPE(A78_ROM_POKEY, a78_rom_pokey_device, "a78_rom_pok", "Atari 7800 ROM Carts w/no Bankswitch + POKEY")
+DEFINE_DEVICE_TYPE(A78_ROM_SG_POKEY, a78_rom_sg_pokey_device, "a78_rom_sgp", "Atari 7800 ROM Carts w/SuperGame Bankswitch + POKEY")
+DEFINE_DEVICE_TYPE(A78_ROM_SG_RAM, a78_rom_sg_ram_device, "a78_rom_sgr", "Atari 7800 ROM Carts w/SuperGame Bankswitch + RAM")
+DEFINE_DEVICE_TYPE(A78_ROM_MRAM, a78_rom_mram_device, "a78_rom_mram", "Atari 7800 ROM Carts + Mirror RAM")
+DEFINE_DEVICE_TYPE(A78_ROM_SG9, a78_rom_sg9_device, "a78_rom_sg9", "Atari 7800 ROM Carts w/SuperGame 9Banks")
+DEFINE_DEVICE_TYPE(A78_ROM_ABSOLUTE, a78_rom_abs_device, "a78_rom_abs", "Atari 7800 ROM Carts w/Absolute Bankswitch")
+DEFINE_DEVICE_TYPE(A78_ROM_ACTIVISION, a78_rom_act_device, "a78_rom_act", "Atari 7800 ROM Carts w/Activision Bankswitch")
+DEFINE_DEVICE_TYPE(A78_ROM_P450, a78_rom_p450_device, "a78_p450_t0", "Atari 7800 ROM Carts w/POKEY @ 0x0450")
+DEFINE_DEVICE_TYPE(A78_ROM_P450_POKEY, a78_rom_p450_pokey_device, "a78_p450_t1", "Atari 7800 ROM Carts w/no Bankswitch + POKEY + POKEY @ 0x0450")
+DEFINE_DEVICE_TYPE(A78_ROM_P450_SG_RAM, a78_rom_p450_sg_ram_device, "a78_p450_t6", "Atari 7800 ROM Carts w/SuperGame Bankswitch + RAM + POKEY @ 0x0450")
+DEFINE_DEVICE_TYPE(A78_ROM_P450_SG9, a78_rom_p450_sg9_device, "a78_p450_ta", "Atari 7800 ROM Carts w/SuperGame 9Banks + POKEY @ 0x0450")
-const device_type A78_ROM_P450 = device_creator<a78_rom_p450_device>;
-const device_type A78_ROM_P450_POKEY = device_creator<a78_rom_p450_pokey_device>;
-const device_type A78_ROM_P450_SG_RAM = device_creator<a78_rom_p450_sg_ram_device>;
-const device_type A78_ROM_P450_SG9 = device_creator<a78_rom_p450_sg9_device>;
-
-a78_rom_device::a78_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_a78_cart_interface( mconfig, *this )
+a78_rom_device::a78_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_a78_cart_interface( mconfig, *this )
{
}
a78_rom_device::a78_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, A78_ROM, "Atari 7800 ROM Carts w/no Bankswitch", tag, owner, clock, "a78_rom", __FILE__),
- device_a78_cart_interface( mconfig, *this )
+ : a78_rom_device(mconfig, A78_ROM, tag, owner, clock)
{
}
-a78_rom_pokey_device::a78_rom_pokey_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : a78_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_pokey(*this, "pokey")
+a78_rom_pokey_device::a78_rom_pokey_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : a78_rom_device(mconfig, type, tag, owner, clock)
+ , m_pokey(*this, "pokey")
{
}
a78_rom_pokey_device::a78_rom_pokey_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_device(mconfig, A78_ROM_POKEY, "Atari 7800 ROM Carts w/no Bankswitch + POKEY", tag, owner, clock, "a78_rom_pok", __FILE__),
- m_pokey(*this, "pokey")
+ : a78_rom_pokey_device(mconfig, A78_ROM_POKEY, tag, owner, clock)
{
}
-a78_rom_mram_device::a78_rom_mram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : a78_rom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+a78_rom_mram_device::a78_rom_mram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : a78_rom_device(mconfig, type, tag, owner, clock)
{
}
a78_rom_mram_device::a78_rom_mram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_device(mconfig, A78_ROM_MRAM, "Atari 7800 ROM Carts + Mirror RAM", tag, owner, clock, "a78_rom_mram", __FILE__)
+ : a78_rom_mram_device(mconfig, A78_ROM_MRAM, tag, owner, clock)
{
}
-a78_rom_sg_device::a78_rom_sg_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : a78_rom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_bank(0)
- {
+a78_rom_sg_device::a78_rom_sg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : a78_rom_device(mconfig, type, tag, owner, clock)
+ , m_bank(0)
+{
}
a78_rom_sg_device::a78_rom_sg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_device(mconfig, A78_ROM_SG, "Atari 7800 ROM Carts w/SuperGame Bankswitch", tag, owner, clock, "a78_rom_sg", __FILE__), m_bank(0)
- {
+ : a78_rom_sg_device(mconfig, A78_ROM_SG, tag, owner, clock)
+{
}
a78_rom_sg_pokey_device::a78_rom_sg_pokey_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_sg_device(mconfig, A78_ROM_SG_POKEY, "Atari 7800 ROM Carts w/SuperGame Bankswitch + POKEY", tag, owner, clock, "a78_rom_sgp", __FILE__),
- m_pokey(*this, "pokey")
+ : a78_rom_sg_device(mconfig, A78_ROM_SG_POKEY, tag, owner, clock)
+ , m_pokey(*this, "pokey")
{
}
-a78_rom_sg_ram_device::a78_rom_sg_ram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : a78_rom_sg_device(mconfig, type, name, tag, owner, clock, shortname, source)
+a78_rom_sg_ram_device::a78_rom_sg_ram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : a78_rom_sg_device(mconfig, type, tag, owner, clock)
{
}
a78_rom_sg_ram_device::a78_rom_sg_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_sg_device(mconfig, A78_ROM_SG_RAM, "Atari 7800 ROM Carts w/SuperGame Bankswitch + RAM", tag, owner, clock, "a78_rom_sgr", __FILE__)
+ : a78_rom_sg_ram_device(mconfig, A78_ROM_SG_RAM, tag, owner, clock)
{
}
-a78_rom_sg9_device::a78_rom_sg9_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : a78_rom_sg_device(mconfig, type, name, tag, owner, clock, shortname, source)
+a78_rom_sg9_device::a78_rom_sg9_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : a78_rom_sg_device(mconfig, type, tag, owner, clock)
{
}
a78_rom_sg9_device::a78_rom_sg9_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_sg_device(mconfig, A78_ROM_SG9, "Atari 7800 ROM Carts w/SuperGame 9Banks", tag, owner, clock, "a78_rom_sg9", __FILE__)
+ : a78_rom_sg9_device(mconfig, A78_ROM_SG9, tag, owner, clock)
{
}
a78_rom_abs_device::a78_rom_abs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_device(mconfig, A78_ROM_ABSOLUTE, "Atari 7800 ROM Carts w/Absolute Bankswitch", tag, owner, clock, "a78_rom_abs", __FILE__), m_bank(0)
- {
+ : a78_rom_device(mconfig, A78_ROM_ABSOLUTE, tag, owner, clock)
+ , m_bank(0)
+{
}
a78_rom_act_device::a78_rom_act_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_device(mconfig, A78_ROM_ACTIVISION, "Atari 7800 ROM Carts w/Activision Bankswitch", tag, owner, clock, "a78_rom_act", __FILE__), m_bank(0)
- {
+ : a78_rom_device(mconfig, A78_ROM_ACTIVISION, tag, owner, clock)
+ , m_bank(0)
+{
}
a78_rom_p450_device::a78_rom_p450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_device(mconfig, A78_ROM_P450, "Atari 7800 ROM Carts w/POKEY @ 0x0450", tag, owner, clock, "a78_p450_t0", __FILE__),
- m_pokey450(*this, "pokey450")
+ : a78_rom_device(mconfig, A78_ROM_P450, tag, owner, clock)
+ , m_pokey450(*this, "pokey450")
{
}
a78_rom_p450_pokey_device::a78_rom_p450_pokey_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_pokey_device(mconfig, A78_ROM_P450_POKEY, "Atari 7800 ROM Carts w/no Bankswitch + POKEY + POKEY @ 0x0450", tag, owner, clock, "a78_p450_t1", __FILE__),
- m_pokey450(*this, "pokey450")
+ : a78_rom_pokey_device(mconfig, A78_ROM_P450_POKEY, tag, owner, clock)
+ , m_pokey450(*this, "pokey450")
{
}
a78_rom_p450_sg_ram_device::a78_rom_p450_sg_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_sg_ram_device(mconfig, A78_ROM_P450_SG_RAM, "Atari 7800 ROM Carts w/SuperGame Bankswitch + RAM + POKEY @ 0x0450", tag, owner, clock, "a78_p450_t6", __FILE__),
- m_pokey450(*this, "pokey450")
+ : a78_rom_sg_ram_device(mconfig, A78_ROM_P450_SG_RAM, tag, owner, clock)
+ , m_pokey450(*this, "pokey450")
{
}
a78_rom_p450_sg9_device::a78_rom_p450_sg9_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_sg9_device(mconfig, A78_ROM_P450_SG9, "Atari 7800 ROM Carts w/SuperGame 9Banks + POKEY @ 0x0450", tag, owner, clock, "a78_p450_ta", __FILE__),
- m_pokey450(*this, "pokey450")
+ : a78_rom_sg9_device(mconfig, A78_ROM_P450_SG9, tag, owner, clock)
+ , m_pokey450(*this, "pokey450")
{
}
diff --git a/src/devices/bus/a7800/rom.h b/src/devices/bus/a7800/rom.h
index 5036b530aae..9e9a971e0d5 100644
--- a/src/devices/bus/a7800/rom.h
+++ b/src/devices/bus/a7800/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A78_ROM_H
-#define __A78_ROM_H
+#ifndef MAME_BUS_A7800_ROM_H
+#define MAME_BUS_A7800_ROM_H
+
+#pragma once
#include "a78_slot.h"
#include "sound/pokey.h"
@@ -14,15 +16,17 @@ class a78_rom_device : public device_t,
{
public:
// construction/destruction
- a78_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a78_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_40xx) override;
+
+protected:
+ a78_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-
- // reading and writing
- virtual DECLARE_READ8_MEMBER(read_40xx) override;
};
@@ -32,7 +36,6 @@ class a78_rom_pokey_device : public a78_rom_device
{
public:
// construction/destruction
- a78_rom_pokey_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a78_rom_pokey_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
@@ -43,6 +46,8 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_40xx) override;
protected:
+ a78_rom_pokey_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
required_device<pokey_device> m_pokey;
};
@@ -53,12 +58,14 @@ class a78_rom_mram_device : public a78_rom_device
{
public:
// construction/destruction
- a78_rom_mram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a78_rom_mram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
virtual DECLARE_READ8_MEMBER(read_40xx) override;
virtual DECLARE_WRITE8_MEMBER(write_40xx) override;
+
+protected:
+ a78_rom_mram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
@@ -68,18 +75,19 @@ class a78_rom_sg_device : public a78_rom_device
{
public:
// construction/destruction
- a78_rom_sg_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a78_rom_sg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_40xx) override;
virtual DECLARE_WRITE8_MEMBER(write_40xx) override;
protected:
+ a78_rom_sg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
@@ -110,12 +118,14 @@ class a78_rom_sg_ram_device : public a78_rom_sg_device
{
public:
// construction/destruction
- a78_rom_sg_ram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a78_rom_sg_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
virtual DECLARE_READ8_MEMBER(read_40xx) override;
virtual DECLARE_WRITE8_MEMBER(write_40xx) override;
+
+protected:
+ a78_rom_sg_ram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
@@ -125,12 +135,14 @@ class a78_rom_sg9_device : public a78_rom_sg_device
{
public:
// construction/destruction
- a78_rom_sg9_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a78_rom_sg9_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
virtual DECLARE_READ8_MEMBER(read_40xx) override;
virtual DECLARE_WRITE8_MEMBER(write_40xx) override;
+
+protected:
+ a78_rom_sg9_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
@@ -142,15 +154,15 @@ public:
// construction/destruction
a78_rom_abs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_40xx) override;
virtual DECLARE_WRITE8_MEMBER(write_40xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
@@ -163,15 +175,15 @@ public:
// construction/destruction
a78_rom_act_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_40xx) override;
virtual DECLARE_WRITE8_MEMBER(write_40xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
@@ -258,20 +270,20 @@ protected:
// device type definition
-extern const device_type A78_ROM;
-extern const device_type A78_ROM_SG;
-extern const device_type A78_ROM_POKEY;
-extern const device_type A78_ROM_SG_POKEY;
-extern const device_type A78_ROM_SG_RAM;
-extern const device_type A78_ROM_MRAM;
-extern const device_type A78_ROM_SG9;
-extern const device_type A78_ROM_ABSOLUTE;
-extern const device_type A78_ROM_ACTIVISION;
+DECLARE_DEVICE_TYPE(A78_ROM, a78_rom_device)
+DECLARE_DEVICE_TYPE(A78_ROM_SG, a78_rom_sg_device)
+DECLARE_DEVICE_TYPE(A78_ROM_POKEY, a78_rom_pokey_device)
+DECLARE_DEVICE_TYPE(A78_ROM_SG_POKEY, a78_rom_sg_pokey_device)
+DECLARE_DEVICE_TYPE(A78_ROM_SG_RAM, a78_rom_sg_ram_device)
+DECLARE_DEVICE_TYPE(A78_ROM_MRAM, a78_rom_mram_device)
+DECLARE_DEVICE_TYPE(A78_ROM_SG9, a78_rom_sg9_device)
+DECLARE_DEVICE_TYPE(A78_ROM_ABSOLUTE, a78_rom_abs_device)
+DECLARE_DEVICE_TYPE(A78_ROM_ACTIVISION, a78_rom_act_device)
// PCB variants with a POKEY at $0450
-extern const device_type A78_ROM_P450;
-extern const device_type A78_ROM_P450_POKEY;
-extern const device_type A78_ROM_P450_SG_RAM;
-extern const device_type A78_ROM_P450_SG9;
+DECLARE_DEVICE_TYPE(A78_ROM_P450, a78_rom_p450_device)
+DECLARE_DEVICE_TYPE(A78_ROM_P450_POKEY, a78_rom_p450_pokey_device)
+DECLARE_DEVICE_TYPE(A78_ROM_P450_SG_RAM, a78_rom_p450_sg_ram_device)
+DECLARE_DEVICE_TYPE(A78_ROM_P450_SG9, a78_rom_p450_sg9_device)
-#endif
+#endif // MAME_BUS_A7800_ROM_H
diff --git a/src/devices/bus/a7800/xboard.cpp b/src/devices/bus/a7800/xboard.cpp
index 5e3737aee61..c07e85e7cd0 100644
--- a/src/devices/bus/a7800/xboard.cpp
+++ b/src/devices/bus/a7800/xboard.cpp
@@ -53,30 +53,29 @@
// constructor
//-------------------------------------------------
-const device_type A78_XBOARD = device_creator<a78_xboard_device>;
-const device_type A78_XM = device_creator<a78_xm_device>;
+DEFINE_DEVICE_TYPE(A78_XBOARD, a78_xboard_device, "a78_xboard", "Atari 7800 XBoarD expansion")
+DEFINE_DEVICE_TYPE(A78_XM, a78_xm_device, "a78_xm", "Atari 7800 XM expansion module")
-a78_xboard_device::a78_xboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : a78_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_xbslot(*this, "xb_slot"),
- m_pokey(*this, "xb_pokey"), m_reg(0), m_ram_bank(0)
- {
+a78_xboard_device::a78_xboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : a78_rom_device(mconfig, type, tag, owner, clock)
+ , m_xbslot(*this, "xb_slot")
+ , m_pokey(*this, "xb_pokey")
+ , m_reg(0), m_ram_bank(0)
+{
}
a78_xboard_device::a78_xboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_rom_device(mconfig, A78_XBOARD, "Atari 7800 XBoarD expansion", tag, owner, clock, "a78_xboard", __FILE__),
- m_xbslot(*this, "xb_slot"),
- m_pokey(*this, "xb_pokey"), m_reg(0), m_ram_bank(0)
- {
+ : a78_xboard_device(mconfig, A78_XBOARD, tag, owner, clock)
+{
}
a78_xm_device::a78_xm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a78_xboard_device(mconfig, A78_XM, "Atari 7800 XM expansion module", tag, owner, clock, "a78_xm", __FILE__),
- m_ym(*this, "xm_ym2151"), m_ym_enabled(0)
- {
+ : a78_xboard_device(mconfig, A78_XM, tag, owner, clock)
+ , m_ym(*this, "xm_ym2151"), m_ym_enabled(0)
+{
}
diff --git a/src/devices/bus/a7800/xboard.h b/src/devices/bus/a7800/xboard.h
index 0ab9884a957..514109e6d29 100644
--- a/src/devices/bus/a7800/xboard.h
+++ b/src/devices/bus/a7800/xboard.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A78_XBOARD_H
-#define __A78_XBOARD_H
+#ifndef MAME_BUS_A7800_XBOARD_H
+#define MAME_BUS_A7800_XBOARD_H
+
+#pragma once
#include "a78_slot.h"
#include "rom.h"
@@ -15,13 +17,10 @@ class a78_xboard_device : public a78_rom_device
{
public:
// construction/destruction
- a78_xboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a78_xboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_reset() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_04xx) override;
@@ -30,6 +29,11 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_40xx) override;
protected:
+ a78_xboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
required_device<a78_cart_slot_device> m_xbslot;
required_device<pokey_device> m_pokey;
int m_reg, m_ram_bank;
@@ -45,9 +49,7 @@ public:
a78_xm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_reset() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_04xx) override;
@@ -57,6 +59,9 @@ public:
virtual DECLARE_READ8_MEMBER(read_30xx) override;
protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
required_device<ym2151_device> m_ym;
int m_ym_enabled;
};
@@ -64,8 +69,8 @@ protected:
// device type definition
-extern const device_type A78_XBOARD;
-extern const device_type A78_XM;
+DECLARE_DEVICE_TYPE(A78_XBOARD, a78_xboard_device)
+DECLARE_DEVICE_TYPE(A78_XM, a78_xm_device)
-#endif
+#endif // MAME_BUS_A7800_XBOARD_H
diff --git a/src/devices/bus/a800/a800_carts.h b/src/devices/bus/a800/a800_carts.h
index c328fa61685..6d6e68ad6c3 100644
--- a/src/devices/bus/a800/a800_carts.h
+++ b/src/devices/bus/a800/a800_carts.h
@@ -1,8 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A800_CARTS_H
-#define __A800_CARTS_H
+#ifndef MAME_BUS_A800_A800_CARTS_H
+#define MAME_BUS_A800_A800_CARTS_H
+#pragma once
#include "rom.h"
@@ -46,4 +47,4 @@ static SLOT_INTERFACE_START(a5200_carts)
SLOT_INTERFACE_INTERNAL("a5200_bbsb", A5200_ROM_BBSB)
SLOT_INTERFACE_END
-#endif
+#endif // MAME_BUS_A800_A800_CARTS_H
diff --git a/src/devices/bus/a800/a800_slot.cpp b/src/devices/bus/a800/a800_slot.cpp
index bfe53f72041..9307efaf209 100644
--- a/src/devices/bus/a800/a800_slot.cpp
+++ b/src/devices/bus/a800/a800_slot.cpp
@@ -29,9 +29,9 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A800_CART_SLOT = device_creator<a800_cart_slot_device>;
-const device_type A5200_CART_SLOT = device_creator<a5200_cart_slot_device>;
-const device_type XEGS_CART_SLOT = device_creator<xegs_cart_slot_device>;
+DEFINE_DEVICE_TYPE(A800_CART_SLOT, a800_cart_slot_device, "a800_cart_slot", "Atari 8bit Cartridge Slot")
+DEFINE_DEVICE_TYPE(A5200_CART_SLOT, a5200_cart_slot_device, "a5200_cart_slot", "Atari 5200 Cartridge Slot")
+DEFINE_DEVICE_TYPE(XEGS_CART_SLOT, xegs_cart_slot_device, "xegs_cart_slot", "Atari XEGS Cartridge Slot")
//-------------------------------------------------
@@ -101,29 +101,27 @@ void device_a800_cart_interface::nvram_alloc(uint32_t size)
//-------------------------------------------------
// ****_cart_slot_device - constructor
//-------------------------------------------------
-a800_cart_slot_device::a800_cart_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this), m_cart(nullptr), m_type(0)
+a800_cart_slot_device::a800_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this), m_cart(nullptr), m_type(0)
{
}
a800_cart_slot_device::a800_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A800_CART_SLOT, "Atari 8bit Cartridge Slot", tag, owner, clock, "a800_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this), m_cart(nullptr), m_type(0)
+ a800_cart_slot_device(mconfig, A800_CART_SLOT, tag, owner, clock)
{
}
a5200_cart_slot_device::a5200_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a800_cart_slot_device(mconfig, A5200_CART_SLOT, "Atari 5200 Cartridge Slot", tag, owner, clock, "a5200_cart_slot", __FILE__)
+ a800_cart_slot_device(mconfig, A5200_CART_SLOT, tag, owner, clock)
{
}
xegs_cart_slot_device::xegs_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a800_cart_slot_device(mconfig, XEGS_CART_SLOT, "Atari XEGS Cartridge Slot", tag, owner, clock, "xegs_cart_slot", __FILE__)
+ a800_cart_slot_device(mconfig, XEGS_CART_SLOT, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a800/a800_slot.h b/src/devices/bus/a800/a800_slot.h
index 66d8bb0f745..569d912329c 100644
--- a/src/devices/bus/a800/a800_slot.h
+++ b/src/devices/bus/a800/a800_slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A800_SLOT_H
-#define __A800_SLOT_H
+#ifndef MAME_BUS_A800_A800_SLOT_H
+#define MAME_BUS_A800_A800_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -49,7 +51,6 @@ class device_a800_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_a800_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_a800_cart_interface();
// memory accessor
@@ -69,6 +70,8 @@ public:
uint32_t get_nvram_size() { return m_nvram.size(); }
protected:
+ device_a800_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -87,13 +90,9 @@ class a800_cart_slot_device : public device_t,
{
public:
// construction/destruction
- a800_cart_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a800_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~a800_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override;
@@ -121,6 +120,12 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_80xx);
virtual DECLARE_WRITE8_MEMBER(write_d5xx);
+protected:
+ a800_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
private:
device_a800_cart_interface* m_cart;
int m_type;
@@ -161,9 +166,9 @@ public:
};
// device type definition
-extern const device_type A800_CART_SLOT;
-extern const device_type A5200_CART_SLOT;
-extern const device_type XEGS_CART_SLOT;
+DECLARE_DEVICE_TYPE(A800_CART_SLOT, a800_cart_slot_device)
+DECLARE_DEVICE_TYPE(A5200_CART_SLOT, a5200_cart_slot_device)
+DECLARE_DEVICE_TYPE(XEGS_CART_SLOT, xegs_cart_slot_device)
/***************************************************************************
@@ -185,4 +190,4 @@ extern const device_type XEGS_CART_SLOT;
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+#endif // MAME_BUS_A800_A800_SLOT_H
diff --git a/src/devices/bus/a800/a8sio.cpp b/src/devices/bus/a800/a8sio.cpp
index 403ea833bb0..cfbef3b47e4 100644
--- a/src/devices/bus/a800/a8sio.cpp
+++ b/src/devices/bus/a800/a8sio.cpp
@@ -39,7 +39,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A8SIO_SLOT = device_creator<a8sio_slot_device>;
+DEFINE_DEVICE_TYPE(A8SIO_SLOT, a8sio_slot_device, "a8sio_slot", "Atari 8 bit SIO Slot")
//**************************************************************************
// LIVE DEVICE
@@ -49,14 +49,13 @@ const device_type A8SIO_SLOT = device_creator<a8sio_slot_device>;
// a8sio_slot_device - constructor
//-------------------------------------------------
a8sio_slot_device::a8sio_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, A8SIO_SLOT, "Atari 8 bit SIO Slot", tag, owner, clock, "a8sio_slot", __FILE__)
- , device_slot_interface(mconfig, *this), m_a8sio_tag(nullptr), m_a8sio_slottag(nullptr)
+ : a8sio_slot_device(mconfig, A8SIO_SLOT, tag, owner, clock)
{
}
-a8sio_slot_device::a8sio_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_interface(mconfig, *this), m_a8sio_tag(nullptr), m_a8sio_slottag(nullptr)
+a8sio_slot_device::a8sio_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_slot_interface(mconfig, *this), m_a8sio_tag(nullptr), m_a8sio_slottag(nullptr)
{
}
@@ -87,7 +86,7 @@ void a8sio_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A8SIO = device_creator<a8sio_device>;
+DEFINE_DEVICE_TYPE(A8SIO, a8sio_device, "a8sio", "Atari 8 bit SIO")
//**************************************************************************
@@ -99,15 +98,12 @@ const device_type A8SIO = device_creator<a8sio_device>;
//-------------------------------------------------
a8sio_device::a8sio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, A8SIO, "Atari 8 biot SIO", tag, owner, clock, "a8sio", __FILE__)
- , m_out_clock_in_cb(*this)
- , m_out_data_in_cb(*this)
- , m_out_audio_in_cb(*this), m_device(nullptr)
+ : a8sio_device(mconfig, A8SIO, tag, owner, clock)
{
}
-a8sio_device::a8sio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+a8sio_device::a8sio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_out_clock_in_cb(*this)
, m_out_data_in_cb(*this)
, m_out_audio_in_cb(*this), m_device(nullptr)
diff --git a/src/devices/bus/a800/a8sio.h b/src/devices/bus/a800/a8sio.h
index 2684a3d3c28..31d853ec633 100644
--- a/src/devices/bus/a800/a8sio.h
+++ b/src/devices/bus/a800/a8sio.h
@@ -30,10 +30,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_A800_A8SIO_H
+#define MAME_BUS_A800_A8SIO_H
-#ifndef __A8SIO_H_
-#define __A8SIO_H_
+#pragma once
//**************************************************************************
@@ -55,15 +55,16 @@ class a8sio_slot_device : public device_t,
public:
// construction/destruction
a8sio_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a8sio_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // device-level overrides
- virtual void device_start() override;
// inline configuration
static void static_set_a8sio_slot(device_t &device, const char *tag, const char *slottag);
protected:
+ a8sio_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
// configuration
const char *m_a8sio_tag;
const char *m_a8sio_slottag;
@@ -71,7 +72,7 @@ protected:
// device type definition
-extern const device_type A8SIO_SLOT;
+DECLARE_DEVICE_TYPE(A8SIO_SLOT, a8sio_slot_device)
class device_a8sio_card_interface;
@@ -81,12 +82,11 @@ class a8sio_device : public device_t
public:
// construction/destruction
a8sio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a8sio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// inline configuration
- template<class _Object> static devcb_base &set_clock_in_callback(device_t &device, _Object object) { return downcast<a8sio_device &>(device).m_out_clock_in_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_data_in_callback(device_t &device, _Object object) { return downcast<a8sio_device &>(device).m_out_data_in_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_audio_in_callback(device_t &device, _Object object) { return downcast<a8sio_device &>(device).m_out_audio_in_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_clock_in_callback(device_t &device, Object &&cb) { return downcast<a8sio_device &>(device).m_out_clock_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data_in_callback(device_t &device, Object &&cb) { return downcast<a8sio_device &>(device).m_out_data_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_audio_in_callback(device_t &device, Object &&cb) { return downcast<a8sio_device &>(device).m_out_audio_in_cb.set_callback(std::forward<Object>(cb)); }
void add_a8sio_card(device_a8sio_card_interface *card);
device_a8sio_card_interface *get_a8sio_card();
@@ -101,6 +101,8 @@ public:
DECLARE_WRITE8_MEMBER( audio_in_w ); // pin 11
protected:
+ a8sio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -122,7 +124,6 @@ class device_a8sio_card_interface : public device_slot_card_interface
friend class a8sio_device;
public:
// construction/destruction
- device_a8sio_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_a8sio_card_interface();
void set_a8sio_device();
@@ -133,6 +134,8 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER( motor_w );
public:
+ device_a8sio_card_interface(const machine_config &mconfig, device_t &device);
+
a8sio_device *m_a8sio;
const char *m_a8sio_tag;
const char *m_a8sio_slottag;
@@ -141,4 +144,4 @@ public:
SLOT_INTERFACE_EXTERN(a8sio_cards);
-#endif
+#endif // MAME_BUS_A800_A8SIO_H
diff --git a/src/devices/bus/a800/cassette.cpp b/src/devices/bus/a800/cassette.cpp
index bb35bea187a..bd3ce3a30de 100644
--- a/src/devices/bus/a800/cassette.cpp
+++ b/src/devices/bus/a800/cassette.cpp
@@ -25,7 +25,7 @@ TODO:
// GLOBAL VARIABLES
//**************************************************************************
-const device_type A8SIO_CASSETTE = device_creator<a8sio_cassette_device>;
+DEFINE_DEVICE_TYPE(A8SIO_CASSETTE, a8sio_cassette_device, "a8sio_cass", "Atari 8 bit cassette")
const device_timer_id TIMER_CASSETTE_READ = 1;
static MACHINE_CONFIG_FRAGMENT( cassette )
@@ -45,19 +45,16 @@ machine_config_constructor a8sio_cassette_device::device_mconfig_additions() con
//**************************************************************************
a8sio_cassette_device::a8sio_cassette_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, A8SIO_CASSETTE, "Atari 8 bit cassette", tag, owner, clock, "a8sio_cass", __FILE__)
- , device_a8sio_card_interface(mconfig, *this)
- , m_cassette(*this, "cassette"), m_read_timer(nullptr)
- , m_old_cass_signal(0)
- , m_signal_count(0)
+ : a8sio_cassette_device(mconfig, A8SIO_CASSETTE, tag, owner, clock)
{
}
-a8sio_cassette_device::a8sio_cassette_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+a8sio_cassette_device::a8sio_cassette_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_a8sio_card_interface(mconfig, *this)
- , m_cassette(*this, "cassette"), m_read_timer(nullptr)
- , m_old_cass_signal(0)
+ , m_cassette(*this, "cassette")
+ , m_read_timer(nullptr)
+ , m_old_cass_signal(0)
, m_signal_count(0)
{
}
diff --git a/src/devices/bus/a800/cassette.h b/src/devices/bus/a800/cassette.h
index 72d0f749ccc..0168a4b3a64 100644
--- a/src/devices/bus/a800/cassette.h
+++ b/src/devices/bus/a800/cassette.h
@@ -11,10 +11,10 @@ Known cassette players:
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_A800_CASSETTE_H
+#define MAME_BUS_A800_CASSETTE_H
-#ifndef __A8SIO_CASSETTE_H_
-#define __A8SIO_CASSETTE_H_
+#pragma once
#include "a8sio.h"
@@ -28,7 +28,6 @@ class a8sio_cassette_device
public:
// construction/destruction
a8sio_cassette_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- a8sio_cassette_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -36,6 +35,8 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER( motor_w ) override;
protected:
+ a8sio_cassette_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -48,7 +49,7 @@ protected:
};
// device type definition
-extern const device_type A8SIO_CASSETTE;
+DECLARE_DEVICE_TYPE(A8SIO_CASSETTE, a8sio_cassette_device)
-#endif
+#endif // MAME_BUS_A800_CASSETTE_H
diff --git a/src/devices/bus/a800/oss.cpp b/src/devices/bus/a800/oss.cpp
index 6d0977cfdd3..70a9375ef28 100644
--- a/src/devices/bus/a800/oss.cpp
+++ b/src/devices/bus/a800/oss.cpp
@@ -15,34 +15,33 @@
// constructor
//-------------------------------------------------
-const device_type A800_ROM_OSS8K = device_creator<a800_rom_oss8k_device>;
-const device_type A800_ROM_OSS34 = device_creator<a800_rom_oss34_device>;
-const device_type A800_ROM_OSS43 = device_creator<a800_rom_oss43_device>;
-const device_type A800_ROM_OSS91 = device_creator<a800_rom_oss91_device>;
+DEFINE_DEVICE_TYPE(A800_ROM_OSS8K, a800_rom_oss8k_device, "a800_oss8k", "Atari 800 ROM Carts OSS 8K")
+DEFINE_DEVICE_TYPE(A800_ROM_OSS34, a800_rom_oss34_device, "a800_034m", "Atari 800 ROM Carts OSS-034M")
+DEFINE_DEVICE_TYPE(A800_ROM_OSS43, a800_rom_oss43_device, "a800_043m", "Atari 800 ROM Carts OSS-043M")
+DEFINE_DEVICE_TYPE(A800_ROM_OSS91, a800_rom_oss91_device, "a800_m091", "Atari 800 ROM Carts OSS-M091")
a800_rom_oss8k_device::a800_rom_oss8k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_OSS8K, "Atari 800 ROM Carts OSS 8K", tag, owner, clock, "a800_oss8k", __FILE__),
- m_bank(0)
- {
+ : a800_rom_device(mconfig, A800_ROM_OSS8K, tag, owner, clock), m_bank(0)
+{
}
a800_rom_oss34_device::a800_rom_oss34_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_OSS34, "Atari 800 ROM Carts OSS-034M", tag, owner, clock, "a800_034m", __FILE__), m_bank(0)
- {
+ : a800_rom_device(mconfig, A800_ROM_OSS34, tag, owner, clock), m_bank(0)
+{
}
a800_rom_oss43_device::a800_rom_oss43_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_OSS43, "Atari 800 ROM Carts OSS-043M", tag, owner, clock, "a800_043m", __FILE__), m_bank(0)
- {
+ : a800_rom_device(mconfig, A800_ROM_OSS43, tag, owner, clock), m_bank(0)
+{
}
a800_rom_oss91_device::a800_rom_oss91_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_OSS91, "Atari 800 ROM Carts OSS-M091", tag, owner, clock, "a800_m091", __FILE__), m_bank(0)
- {
+ : a800_rom_device(mconfig, A800_ROM_OSS91, tag, owner, clock), m_bank(0)
+{
}
diff --git a/src/devices/bus/a800/oss.h b/src/devices/bus/a800/oss.h
index fef9ab5d939..367bd4f8f8d 100644
--- a/src/devices/bus/a800/oss.h
+++ b/src/devices/bus/a800/oss.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A800_OSS_H
-#define __A800_OSS_H
+#ifndef MAME_BUS_A800_OSS_H
+#define MAME_BUS_A800_OSS_H
+
+#pragma once
#include "rom.h"
@@ -14,14 +16,14 @@ public:
// construction/destruction
a800_rom_oss8k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_d5xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
@@ -34,14 +36,14 @@ public:
// construction/destruction
a800_rom_oss34_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_d5xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
@@ -54,14 +56,14 @@ public:
// construction/destruction
a800_rom_oss43_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_d5xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
@@ -74,24 +76,24 @@ public:
// construction/destruction
a800_rom_oss91_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_d5xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
// device type definition
-extern const device_type A800_ROM_OSS8K;
-extern const device_type A800_ROM_OSS34;
-extern const device_type A800_ROM_OSS43;
-extern const device_type A800_ROM_OSS91;
+DECLARE_DEVICE_TYPE(A800_ROM_OSS8K, a800_rom_oss8k_device)
+DECLARE_DEVICE_TYPE(A800_ROM_OSS34, a800_rom_oss34_device)
+DECLARE_DEVICE_TYPE(A800_ROM_OSS43, a800_rom_oss43_device)
+DECLARE_DEVICE_TYPE(A800_ROM_OSS91, a800_rom_oss91_device)
-#endif
+#endif // MAME_BUS_A800_OSS_H
diff --git a/src/devices/bus/a800/rom.cpp b/src/devices/bus/a800/rom.cpp
index ff7730ecae9..f33c8776d52 100644
--- a/src/devices/bus/a800/rom.cpp
+++ b/src/devices/bus/a800/rom.cpp
@@ -18,82 +18,86 @@
// constructor
//-------------------------------------------------
-const device_type A800_ROM = device_creator<a800_rom_device>;
-const device_type A800_ROM_BBSB = device_creator<a800_rom_bbsb_device>;
-const device_type A800_ROM_WILLIAMS = device_creator<a800_rom_williams_device>;
-const device_type A800_ROM_EXPRESS = device_creator<a800_rom_express_device>;
-const device_type A800_ROM_TURBO = device_creator<a800_rom_turbo_device>;
-const device_type A800_ROM_TELELINK2 = device_creator<a800_rom_telelink2_device>;
-const device_type A800_ROM_MICROCALC = device_creator<a800_rom_microcalc_device>;
-const device_type XEGS_ROM = device_creator<xegs_rom_device>;
-const device_type A5200_ROM_2CHIPS = device_creator<a5200_rom_2chips_device>;
-const device_type A5200_ROM_BBSB = device_creator<a5200_rom_bbsb_device>;
+DEFINE_DEVICE_TYPE(A800_ROM, a800_rom_device, "a800_rom", "Atari 800 ROM Carts")
+DEFINE_DEVICE_TYPE(A800_ROM_BBSB, a800_rom_bbsb_device, "a800_bbsb", "Atari 800 ROM Carts BBSB")
+DEFINE_DEVICE_TYPE(A800_ROM_WILLIAMS, a800_rom_williams_device, "a800_williams", "Atari 800 64K ROM Carts Williams")
+DEFINE_DEVICE_TYPE(A800_ROM_EXPRESS, a800_rom_express_device, "a800_express", "Atari 800 64K ROM Carts Express/Diamond")
+DEFINE_DEVICE_TYPE(A800_ROM_TURBO, a800_rom_turbo_device, "a800_turbo", "Atari 800 64K ROM Carts Turbosoft")
+DEFINE_DEVICE_TYPE(A800_ROM_TELELINK2, a800_rom_telelink2_device, "a800_tlink2", "Atari 800 64K ROM Cart Telelink II")
+DEFINE_DEVICE_TYPE(A800_ROM_MICROCALC, a800_rom_microcalc_device, "a800_sitsa", "Atari 800 64K ROM Carts SITSA MicroCalc")
+DEFINE_DEVICE_TYPE(XEGS_ROM, xegs_rom_device, "a800_xegs", "Atari XEGS 64K ROM Carts")
+DEFINE_DEVICE_TYPE(A5200_ROM_2CHIPS, a5200_rom_2chips_device, "a5200_16k2c", "Atari 5200 ROM Cart 16K in 2 Chips")
+DEFINE_DEVICE_TYPE(A5200_ROM_BBSB, a5200_rom_bbsb_device, "a5200_bbsb", "Atari 5200 ROM Cart BBSB")
-a800_rom_device::a800_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_a800_cart_interface( mconfig, *this )
+a800_rom_device::a800_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_a800_cart_interface( mconfig, *this )
{
}
a800_rom_device::a800_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, A800_ROM, "Atari 800 ROM Carts", tag, owner, clock, "a800_rom", __FILE__),
- device_a800_cart_interface( mconfig, *this )
+ : a800_rom_device(mconfig, A800_ROM, tag, owner, clock)
{
}
a800_rom_bbsb_device::a800_rom_bbsb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_BBSB, "Atari 800 ROM Cart BBSB", tag, owner, clock, "a800_bbsb", __FILE__)
+ : a800_rom_device(mconfig, A800_ROM_BBSB, tag, owner, clock)
{
}
xegs_rom_device::xegs_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, XEGS_ROM, "Atari XEGS 64K ROM Carts", tag, owner, clock, "a800_xegs", __FILE__), m_bank(0)
- {
+ : a800_rom_device(mconfig, XEGS_ROM, tag, owner, clock)
+ , m_bank(0)
+{
}
a800_rom_williams_device::a800_rom_williams_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_WILLIAMS, "Atari 800 64K ROM Carts Williams", tag, owner, clock, "a800_williams", __FILE__), m_bank(0)
- {
+ : a800_rom_device(mconfig, A800_ROM_WILLIAMS, tag, owner, clock)
+ , m_bank(0)
+{
}
a800_rom_express_device::a800_rom_express_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_EXPRESS, "Atari 800 64K ROM Carts Express/Diamond", tag, owner, clock, "a800_express", __FILE__), m_bank(0)
- {
+ : a800_rom_device(mconfig, A800_ROM_EXPRESS, tag, owner, clock)
+ , m_bank(0)
+{
}
a800_rom_turbo_device::a800_rom_turbo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_TURBO, "Atari 800 64K ROM Carts Turbosoft", tag, owner, clock, "a800_turbo", __FILE__), m_bank(0)
- {
+ : a800_rom_device(mconfig, A800_ROM_TURBO, tag, owner, clock)
+ , m_bank(0)
+{
}
a800_rom_telelink2_device::a800_rom_telelink2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_TELELINK2, "Atari 800 64K ROM Cart Telelink II", tag, owner, clock, "a800_tlink2", __FILE__)
+ : a800_rom_device(mconfig, A800_ROM_TELELINK2, tag, owner, clock)
{
}
a800_rom_microcalc_device::a800_rom_microcalc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_MICROCALC, "Atari 800 64K ROM Cart SITSA MicroCalc", tag, owner, clock, "a800_sitsa", __FILE__), m_bank(0)
- {
+ : a800_rom_device(mconfig, A800_ROM_MICROCALC, tag, owner, clock)
+ , m_bank(0)
+{
}
a5200_rom_2chips_device::a5200_rom_2chips_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A5200_ROM_2CHIPS, "Atari 5200 ROM Cart 16K in 2 Chips", tag, owner, clock, "a5200_16k2c", __FILE__)
+ : a800_rom_device(mconfig, A5200_ROM_2CHIPS, tag, owner, clock)
{
}
a5200_rom_bbsb_device::a5200_rom_bbsb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A5200_ROM_BBSB, "Atari 5200 ROM Cart BBSB", tag, owner, clock, "a5200_bbsb", __FILE__)
+ : a800_rom_device(mconfig, A5200_ROM_BBSB, tag, owner, clock)
{
}
diff --git a/src/devices/bus/a800/rom.h b/src/devices/bus/a800/rom.h
index e15d5e29a0a..9ba329b3113 100644
--- a/src/devices/bus/a800/rom.h
+++ b/src/devices/bus/a800/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A800_ROM_H
-#define __A800_ROM_H
+#ifndef MAME_BUS_A800_ROM_H
+#define MAME_BUS_A800_ROM_H
+
+#pragma once
#include "a800_slot.h"
@@ -13,14 +15,16 @@ class a800_rom_device : public device_t,
{
public:
// construction/destruction
- a800_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a800_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual DECLARE_READ8_MEMBER(read_80xx) override;
+
+protected:
+ a800_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-
- virtual DECLARE_READ8_MEMBER(read_80xx) override;
};
@@ -32,14 +36,14 @@ public:
// construction/destruction
a800_rom_bbsb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_80xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_banks[2];
};
@@ -52,14 +56,14 @@ public:
// construction/destruction
a800_rom_williams_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_d5xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
@@ -72,14 +76,14 @@ public:
// construction/destruction
a800_rom_express_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_d5xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
@@ -92,11 +96,12 @@ public:
// construction/destruction
a800_rom_blizzard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual DECLARE_READ8_MEMBER(read_80xx) override;
+
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-
- virtual DECLARE_READ8_MEMBER(read_80xx) override;
};
@@ -108,14 +113,14 @@ public:
// construction/destruction
a800_rom_turbo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_d5xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
@@ -143,14 +148,14 @@ public:
// construction/destruction
a800_rom_microcalc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_d5xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank;
};
@@ -195,30 +200,30 @@ public:
// construction/destruction
a5200_rom_bbsb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_80xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_banks[2];
};
// device type definition
-extern const device_type A800_ROM;
-extern const device_type A800_ROM_BBSB;
-extern const device_type A800_ROM_WILLIAMS;
-extern const device_type A800_ROM_EXPRESS;
-extern const device_type A800_ROM_TURBO;
-extern const device_type A800_ROM_TELELINK2;
-extern const device_type A800_ROM_MICROCALC;
-extern const device_type XEGS_ROM;
-extern const device_type A5200_ROM_2CHIPS;
-extern const device_type A5200_ROM_BBSB;
-
-
-#endif
+DECLARE_DEVICE_TYPE(A800_ROM, a800_rom_device)
+DECLARE_DEVICE_TYPE(A800_ROM_BBSB, a800_rom_bbsb_device)
+DECLARE_DEVICE_TYPE(A800_ROM_WILLIAMS, a800_rom_williams_device)
+DECLARE_DEVICE_TYPE(A800_ROM_EXPRESS, a800_rom_express_device)
+DECLARE_DEVICE_TYPE(A800_ROM_TURBO, a800_rom_turbo_device)
+DECLARE_DEVICE_TYPE(A800_ROM_TELELINK2, a800_rom_telelink2_device)
+DECLARE_DEVICE_TYPE(A800_ROM_MICROCALC, a800_rom_microcalc_device)
+DECLARE_DEVICE_TYPE(XEGS_ROM, xegs_rom_device)
+DECLARE_DEVICE_TYPE(A5200_ROM_2CHIPS, a5200_rom_2chips_device)
+DECLARE_DEVICE_TYPE(A5200_ROM_BBSB, a5200_rom_bbsb_device)
+
+
+#endif // MAME_BUS_A800_ROM_H
diff --git a/src/devices/bus/a800/sparta.cpp b/src/devices/bus/a800/sparta.cpp
index b02443d6aed..30d76eecc38 100644
--- a/src/devices/bus/a800/sparta.cpp
+++ b/src/devices/bus/a800/sparta.cpp
@@ -15,14 +15,14 @@
// constructor
//-------------------------------------------------
-const device_type A800_ROM_SPARTADOS = device_creator<a800_rom_spartados_device>;
+DEFINE_DEVICE_TYPE(A800_ROM_SPARTADOS, a800_rom_spartados_device, "a800_sparta", "Atari 800 SpartaDOS ROM Carts")
a800_rom_spartados_device::a800_rom_spartados_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a800_rom_device(mconfig, A800_ROM_SPARTADOS, "Atari 800 SpartaDOS ROM Carts", tag, owner, clock, "a800_sparta", __FILE__),
- m_bank(0),
- m_subslot_enabled(0)
- {
+ : a800_rom_device(mconfig, A800_ROM_SPARTADOS, tag, owner, clock)
+ , m_bank(0)
+ , m_subslot_enabled(0)
+{
}
diff --git a/src/devices/bus/a800/sparta.h b/src/devices/bus/a800/sparta.h
index f39aa515cde..614ce86571c 100644
--- a/src/devices/bus/a800/sparta.h
+++ b/src/devices/bus/a800/sparta.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __A800_SPARTA_H
-#define __A800_SPARTA_H
+#ifndef MAME_BUS_A800_SPARTA_H
+#define MAME_BUS_A800_SPARTA_H
+
+#pragma once
#include "rom.h"
@@ -14,21 +16,21 @@ public:
// construction/destruction
a800_rom_spartados_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_80xx) override;
virtual DECLARE_WRITE8_MEMBER(write_d5xx) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank, m_subslot_enabled;
};
// device type definition
-extern const device_type A800_ROM_SPARTADOS;
+DECLARE_DEVICE_TYPE(A800_ROM_SPARTADOS, a800_rom_spartados_device)
-#endif
+#endif // MAME_BUS_A800_SPARTA_H
diff --git a/src/devices/bus/abcbus/abc890.cpp b/src/devices/bus/abcbus/abc890.cpp
index 61a56ba0ddd..b0594accc55 100644
--- a/src/devices/bus/abcbus/abc890.cpp
+++ b/src/devices/bus/abcbus/abc890.cpp
@@ -15,12 +15,12 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC890 = device_creator<abc890_t>;
-const device_type ABC_EXPANSION_UNIT = device_creator<abc_expansion_unit_t>;
-const device_type ABC894 = device_creator<abc894_t>;
-const device_type ABC850 = device_creator<abc850_t>;
-const device_type ABC852 = device_creator<abc852_t>;
-const device_type ABC856 = device_creator<abc856_t>;
+DEFINE_DEVICE_TYPE(ABC_EXPANSION_UNIT, abc_expansion_unit_device, "abcexp", "ABC Expansion Unit")
+DEFINE_DEVICE_TYPE(ABC890, abc890_device, "abc890", "ABC 890")
+DEFINE_DEVICE_TYPE(ABC894, abc894_device, "abc894", "ABC 894")
+DEFINE_DEVICE_TYPE(ABC850, abc850_device, "abc850", "ABC 850")
+DEFINE_DEVICE_TYPE(ABC852, abc852_device, "abc852", "ABC 852")
+DEFINE_DEVICE_TYPE(ABC856, abc856_device, "abc856", "ABC 856")
//-------------------------------------------------
@@ -43,7 +43,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor abc890_t::device_mconfig_additions() const
+machine_config_constructor abc890_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc890 );
}
@@ -69,7 +69,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor abc_expansion_unit_t::device_mconfig_additions() const
+machine_config_constructor abc_expansion_unit_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc_expansion_unit );
}
@@ -91,7 +91,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor abc894_t::device_mconfig_additions() const
+machine_config_constructor abc894_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc894 );
}
@@ -118,7 +118,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor abc850_t::device_mconfig_additions() const
+machine_config_constructor abc850_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc850 );
}
@@ -145,7 +145,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor abc852_t::device_mconfig_additions() const
+machine_config_constructor abc852_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc852 );
}
@@ -172,7 +172,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor abc856_t::device_mconfig_additions() const
+machine_config_constructor abc856_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc856 );
}
@@ -184,42 +184,42 @@ machine_config_constructor abc856_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// abc890_t - constructor
+// abc890_device - constructor
//-------------------------------------------------
-abc890_t::abc890_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+abc890_device::abc890_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this)
{
}
-abc890_t::abc890_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- abc890_t(mconfig, ABC890, "ABC 890", tag, owner, clock, "abc890", __FILE__)
+abc890_device::abc890_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ abc890_device(mconfig, ABC890, tag, owner, clock)
{
}
-abc_expansion_unit_t::abc_expansion_unit_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- abc890_t(mconfig, ABC_EXPANSION_UNIT, "ABC Expansion Unit", tag, owner, clock, "abcexp", __FILE__)
+abc_expansion_unit_device::abc_expansion_unit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ abc890_device(mconfig, ABC_EXPANSION_UNIT, tag, owner, clock)
{
}
-abc894_t::abc894_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- abc890_t(mconfig, ABC894, "ABC 894", tag, owner, clock, "abc894", __FILE__)
+abc894_device::abc894_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ abc890_device(mconfig, ABC894, tag, owner, clock)
{
}
-abc850_t::abc850_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- abc890_t(mconfig, ABC850, "ABC 850", tag, owner, clock, "abc850", __FILE__)
+abc850_device::abc850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ abc890_device(mconfig, ABC850, tag, owner, clock)
{
}
-abc852_t::abc852_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- abc890_t(mconfig, ABC852, "ABC 852", tag, owner, clock, "abc852", __FILE__)
+abc852_device::abc852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ abc890_device(mconfig, ABC852, tag, owner, clock)
{
}
-abc856_t::abc856_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- abc890_t(mconfig, ABC856, "ABC 856", tag, owner, clock, "abc856", __FILE__)
+abc856_device::abc856_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ abc890_device(mconfig, ABC856, tag, owner, clock)
{
}
@@ -228,7 +228,7 @@ abc856_t::abc856_t(const machine_config &mconfig, const char *tag, device_t *own
// device_start - device-specific startup
//-------------------------------------------------
-void abc890_t::device_start()
+void abc890_device::device_start()
{
}
@@ -237,7 +237,7 @@ void abc890_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void abc890_t::device_reset()
+void abc890_device::device_reset()
{
for (device_t &device : subdevices())
{
@@ -250,9 +250,9 @@ void abc890_t::device_reset()
// abcbus_cs - card select
//-------------------------------------------------
-void abc890_t::abcbus_cs(uint8_t data)
+void abc890_device::abcbus_cs(uint8_t data)
{
- for (abcbus_slot_t &slot : abcbus_slot_device_iterator(*this))
+ for (abcbus_slot_device &slot : abcbus_slot_device_iterator(*this))
{
slot.cs_w(data);
}
@@ -263,11 +263,11 @@ void abc890_t::abcbus_cs(uint8_t data)
// abcbus_inp - input
//-------------------------------------------------
-uint8_t abc890_t::abcbus_inp()
+uint8_t abc890_device::abcbus_inp()
{
uint8_t data = 0xff;
- for (abcbus_slot_t &slot : abcbus_slot_device_iterator(*this))
+ for (abcbus_slot_device &slot : abcbus_slot_device_iterator(*this))
{
data &= slot.inp_r();
}
@@ -280,9 +280,9 @@ uint8_t abc890_t::abcbus_inp()
// abcbus_out - output
//-------------------------------------------------
-void abc890_t::abcbus_out(uint8_t data)
+void abc890_device::abcbus_out(uint8_t data)
{
- for (abcbus_slot_t &slot : abcbus_slot_device_iterator(*this))
+ for (abcbus_slot_device &slot : abcbus_slot_device_iterator(*this))
{
slot.out_w(data);
}
@@ -293,11 +293,11 @@ void abc890_t::abcbus_out(uint8_t data)
// abcbus_stat - status
//-------------------------------------------------
-uint8_t abc890_t::abcbus_stat()
+uint8_t abc890_device::abcbus_stat()
{
uint8_t data = 0xff;
- for (abcbus_slot_t &slot : abcbus_slot_device_iterator(*this))
+ for (abcbus_slot_device &slot : abcbus_slot_device_iterator(*this))
{
data &= slot.stat_r();
}
@@ -310,9 +310,9 @@ uint8_t abc890_t::abcbus_stat()
// abcbus_c1 - command 1
//-------------------------------------------------
-void abc890_t::abcbus_c1(uint8_t data)
+void abc890_device::abcbus_c1(uint8_t data)
{
- for (abcbus_slot_t &slot : abcbus_slot_device_iterator(*this))
+ for (abcbus_slot_device &slot : abcbus_slot_device_iterator(*this))
{
slot.c1_w(data);
}
@@ -323,9 +323,9 @@ void abc890_t::abcbus_c1(uint8_t data)
// abcbus_c2 - command 2
//-------------------------------------------------
-void abc890_t::abcbus_c2(uint8_t data)
+void abc890_device::abcbus_c2(uint8_t data)
{
- for (abcbus_slot_t &slot : abcbus_slot_device_iterator(*this))
+ for (abcbus_slot_device &slot : abcbus_slot_device_iterator(*this))
{
slot.c2_w(data);
}
@@ -336,9 +336,9 @@ void abc890_t::abcbus_c2(uint8_t data)
// abcbus_c3 - command 3
//-------------------------------------------------
-void abc890_t::abcbus_c3(uint8_t data)
+void abc890_device::abcbus_c3(uint8_t data)
{
- for (abcbus_slot_t &slot : abcbus_slot_device_iterator(*this))
+ for (abcbus_slot_device &slot : abcbus_slot_device_iterator(*this))
{
slot.c3_w(data);
}
@@ -349,9 +349,9 @@ void abc890_t::abcbus_c3(uint8_t data)
// abcbus_c4 - command 4
//-------------------------------------------------
-void abc890_t::abcbus_c4(uint8_t data)
+void abc890_device::abcbus_c4(uint8_t data)
{
- for (abcbus_slot_t &slot : abcbus_slot_device_iterator(*this))
+ for (abcbus_slot_device &slot : abcbus_slot_device_iterator(*this))
{
slot.c4_w(data);
}
@@ -362,11 +362,11 @@ void abc890_t::abcbus_c4(uint8_t data)
// abcbus_xmemfl - extended memory read
//-------------------------------------------------
-uint8_t abc890_t::abcbus_xmemfl(offs_t offset)
+uint8_t abc890_device::abcbus_xmemfl(offs_t offset)
{
uint8_t data = 0xff;
- for (abcbus_slot_t &slot : abcbus_slot_device_iterator(*this))
+ for (abcbus_slot_device &slot : abcbus_slot_device_iterator(*this))
{
data &= slot.xmemfl_r(offset);
}
@@ -379,9 +379,9 @@ uint8_t abc890_t::abcbus_xmemfl(offs_t offset)
// abcbus_xmemw - extended memory write
//-------------------------------------------------
-void abc890_t::abcbus_xmemw(offs_t offset, uint8_t data)
+void abc890_device::abcbus_xmemw(offs_t offset, uint8_t data)
{
- for (abcbus_slot_t &slot : abcbus_slot_device_iterator(*this))
+ for (abcbus_slot_device &slot : abcbus_slot_device_iterator(*this))
{
slot.xmemw_w(offset, data);
}
diff --git a/src/devices/bus/abcbus/abc890.h b/src/devices/bus/abcbus/abc890.h
index 0501e1aa44c..2d3aa9e345a 100644
--- a/src/devices/bus/abcbus/abc890.h
+++ b/src/devices/bus/abcbus/abc890.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCBUS_ABC890_H
+#define MAME_BUS_ABCBUS_ABC890_H
-#ifndef __ABC890__
-#define __ABC890__
+#pragma once
#include "abcbus.h"
@@ -19,20 +19,21 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> abc890_t
+// ======================> abc890_device
-class abc890_t : public device_t,
+class abc890_device : public device_t,
public device_abcbus_card_interface
{
public:
// construction/destruction
- abc890_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- abc890_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc890_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
+ abc890_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -51,65 +52,65 @@ protected:
};
-// ======================> abc_expansion_unit_t
+// ======================> abc_expansion_unit_device
-class abc_expansion_unit_t : public abc890_t
+class abc_expansion_unit_device : public abc890_device
{
public:
// construction/destruction
- abc_expansion_unit_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc_expansion_unit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
};
-// ======================> abc894_t
+// ======================> abc894_device
-class abc894_t : public abc890_t
+class abc894_device : public abc890_device
{
public:
// construction/destruction
- abc894_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc894_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
};
-// ======================> abc850_t
+// ======================> abc850_device
-class abc850_t : public abc890_t
+class abc850_device : public abc890_device
{
public:
// construction/destruction
- abc850_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
};
-// ======================> abc852_t
+// ======================> abc852_device
-class abc852_t : public abc890_t
+class abc852_device : public abc890_device
{
public:
// construction/destruction
- abc852_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
};
-// ======================> abc856_t
+// ======================> abc856_device
-class abc856_t : public abc890_t
+class abc856_device : public abc890_device
{
public:
// construction/destruction
- abc856_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc856_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -117,13 +118,13 @@ public:
// device type definition
-extern const device_type ABC_EXPANSION_UNIT;
-extern const device_type ABC890;
-extern const device_type ABC894;
-extern const device_type ABC850;
-extern const device_type ABC852;
-extern const device_type ABC856;
+DECLARE_DEVICE_TYPE(ABC_EXPANSION_UNIT, abc_expansion_unit_device)
+DECLARE_DEVICE_TYPE(ABC890, abc890_device)
+DECLARE_DEVICE_TYPE(ABC894, abc894_device)
+DECLARE_DEVICE_TYPE(ABC850, abc850_device)
+DECLARE_DEVICE_TYPE(ABC852, abc852_device)
+DECLARE_DEVICE_TYPE(ABC856, abc856_device)
-#endif
+#endif // MAME_BUS_ABCBUS_ABC890_H
diff --git a/src/devices/bus/abcbus/abcbus.cpp b/src/devices/bus/abcbus/abcbus.cpp
index 855a52824d9..a75a162de0e 100644
--- a/src/devices/bus/abcbus/abcbus.cpp
+++ b/src/devices/bus/abcbus/abcbus.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ABCBUS_SLOT = device_creator<abcbus_slot_t>;
+DEFINE_DEVICE_TYPE(ABCBUS_SLOT, abcbus_slot_device, "abcbus_slot", "ABCBUS slot")
@@ -30,16 +30,16 @@ const device_type ABCBUS_SLOT = device_creator<abcbus_slot_t>;
device_abcbus_card_interface::device_abcbus_card_interface(const machine_config &mconfig, device_t &device)
: device_slot_card_interface(mconfig, device)
{
- m_slot = dynamic_cast<abcbus_slot_t *>(device.owner());
+ m_slot = dynamic_cast<abcbus_slot_device *>(device.owner());
}
//-------------------------------------------------
-// abcbus_slot_t - constructor
+// abcbus_slot_device - constructor
//-------------------------------------------------
-abcbus_slot_t::abcbus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ABCBUS_SLOT, "ABCBUS slot", tag, owner, clock, "abcbus_slot", __FILE__),
+abcbus_slot_device::abcbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, ABCBUS_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_write_irq(*this),
m_write_nmi(*this),
@@ -60,7 +60,7 @@ abcbus_slot_t::abcbus_slot_t(const machine_config &mconfig, const char *tag, dev
// device_start - device-specific startup
//-------------------------------------------------
-void abcbus_slot_t::device_start()
+void abcbus_slot_device::device_start()
{
m_card = dynamic_cast<device_abcbus_card_interface *>(get_card_device());
diff --git a/src/devices/bus/abcbus/abcbus.h b/src/devices/bus/abcbus/abcbus.h
index 6e29e4793d1..aee0c75c2fc 100644
--- a/src/devices/bus/abcbus/abcbus.h
+++ b/src/devices/bus/abcbus/abcbus.h
@@ -120,34 +120,34 @@
#define MCFG_ABCBUS_SLOT_IRQ_CALLBACK(_irq) \
- devcb = &downcast<abcbus_slot_t *>(device)->set_irq_callback(DEVCB_##_irq);
+ devcb = &downcast<abcbus_slot_device *>(device)->set_irq_callback(DEVCB_##_irq);
#define MCFG_ABCBUS_SLOT_NMI_CALLBACK(_nmi) \
- devcb = &downcast<abcbus_slot_t *>(device)->set_nmi_callback(DEVCB_##_nmi);
+ devcb = &downcast<abcbus_slot_device *>(device)->set_nmi_callback(DEVCB_##_nmi);
#define MCFG_ABCBUS_SLOT_RDY_CALLBACK(_rdy) \
- devcb = &downcast<abcbus_slot_t *>(device)->set_rdy_callback(DEVCB_##_rdy);
+ devcb = &downcast<abcbus_slot_device *>(device)->set_rdy_callback(DEVCB_##_rdy);
#define MCFG_ABCBUS_SLOT_RESIN_CALLBACK(_resin) \
- devcb = &downcast<abcbus_slot_t *>(device)->set_resin_callback(DEVCB_##_resin);
+ devcb = &downcast<abcbus_slot_device *>(device)->set_resin_callback(DEVCB_##_resin);
#define MCFG_ABCBUS_SLOT_PREN_CALLBACK(_pren) \
- devcb = &downcast<abcbus_slot_t *>(device)->set_pren_callback(DEVCB_##_pren);
+ devcb = &downcast<abcbus_slot_device *>(device)->set_pren_callback(DEVCB_##_pren);
#define MCFG_ABCBUS_SLOT_TRRQ_CALLBACK(_trrq) \
- devcb = &downcast<abcbus_slot_t *>(device)->set_trrq_callback(DEVCB_##_trrq);
+ devcb = &downcast<abcbus_slot_device *>(device)->set_trrq_callback(DEVCB_##_trrq);
#define MCFG_ABCBUS_SLOT_XINT2_CALLBACK(_xint2) \
- devcb = &downcast<abcbus_slot_t *>(device)->set_xint2_callback(DEVCB_##_xint2);
+ devcb = &downcast<abcbus_slot_device *>(device)->set_xint2_callback(DEVCB_##_xint2);
#define MCFG_ABCBUS_SLOT_XINT3_CALLBACK(_xint3) \
- devcb = &downcast<abcbus_slot_t *>(device)->set_xint3_callback(DEVCB_##_xint3);
+ devcb = &downcast<abcbus_slot_device *>(device)->set_xint3_callback(DEVCB_##_xint3);
#define MCFG_ABCBUS_SLOT_XINT4_CALLBACK(_xint4) \
- devcb = &downcast<abcbus_slot_t *>(device)->set_xint4_callback(DEVCB_##_xint4);
+ devcb = &downcast<abcbus_slot_device *>(device)->set_xint4_callback(DEVCB_##_xint4);
#define MCFG_ABCBUS_SLOT_XINT5_CALLBACK(_xint5) \
- devcb = &downcast<abcbus_slot_t *>(device)->set_xint5_callback(DEVCB_##_xint5);
+ devcb = &downcast<abcbus_slot_device *>(device)->set_xint5_callback(DEVCB_##_xint5);
@@ -157,14 +157,11 @@
// ======================> device_abcbus_card_interface
-class abcbus_slot_t;
+class abcbus_slot_device;
class device_abcbus_card_interface : public device_slot_card_interface
{
public:
- // construction/destruction
- device_abcbus_card_interface(const machine_config &mconfig, device_t &device);
-
// required operation overrides
virtual void abcbus_cs(uint8_t data) = 0;
@@ -192,30 +189,35 @@ public:
virtual int abcbus_xcsb4() { return 1; };
virtual int abcbus_xcsb5() { return 1; };
-public:
- abcbus_slot_t *m_slot;
+protected:
+ // construction/destruction
+ device_abcbus_card_interface(const machine_config &mconfig, device_t &device);
+
+ abcbus_slot_device *m_slot;
+
+ friend class abcbus_slot_device;
};
-// ======================> abcbus_slot_t
+// ======================> abcbus_slot_device
-class abcbus_slot_t : public device_t,
+class abcbus_slot_device : public device_t,
public device_slot_interface
{
public:
// construction/destruction
- abcbus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- template<class _irq> devcb_base &set_irq_callback(_irq irq) { return m_write_irq.set_callback(irq); }
- template<class _nmi> devcb_base &set_nmi_callback(_nmi nmi) { return m_write_nmi.set_callback(nmi); }
- template<class _rdy> devcb_base &set_rdy_callback(_rdy rdy) { return m_write_rdy.set_callback(rdy); }
- template<class _resin> devcb_base &set_resin_callback(_resin resin) { return m_write_resin.set_callback(resin); }
- template<class _pren> devcb_base &set_pren_callback(_pren pren) { return m_write_pren.set_callback(pren); }
- template<class _trrq> devcb_base &set_trrq_callback(_trrq trrq) { return m_write_trrq.set_callback(trrq); }
- template<class _xint2> devcb_base &set_xint2_callback(_xint2 xint2) { return m_write_xint2.set_callback(xint2); }
- template<class _xint3> devcb_base &set_xint3_callback(_xint3 xint3) { return m_write_xint3.set_callback(xint3); }
- template<class _xint4> devcb_base &set_xint4_callback(_xint4 xint4) { return m_write_xint4.set_callback(xint4); }
- template<class _xint5> devcb_base &set_xint5_callback(_xint5 xint5) { return m_write_xint5.set_callback(xint5); }
+ abcbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nmi_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_rdy_callback(Object &&cb) { return m_write_rdy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_resin_callback(Object &&cb) { return m_write_resin.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_pren_callback(Object &&cb) { return m_write_pren.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_trrq_callback(Object &&cb) { return m_write_trrq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_xint2_callback(Object &&cb) { return m_write_xint2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_xint3_callback(Object &&cb) { return m_write_xint3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_xint4_callback(Object &&cb) { return m_write_xint4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_xint5_callback(Object &&cb) { return m_write_xint5.set_callback(std::forward<Object>(cb)); }
// computer interface
void cs_w(uint8_t data) { if (m_card) m_card->abcbus_cs(data); }
@@ -302,7 +304,7 @@ protected:
// device type definition
-extern const device_type ABCBUS_SLOT;
+DECLARE_DEVICE_TYPE(ABCBUS_SLOT, abcbus_slot_device)
SLOT_INTERFACE_EXTERN( abc80_cards );
@@ -310,7 +312,7 @@ SLOT_INTERFACE_EXTERN( abcbus_cards );
SLOT_INTERFACE_EXTERN( abc1600bus_cards );
-typedef device_type_iterator<abcbus_slot_t> abcbus_slot_device_iterator;
+typedef device_type_iterator<abcbus_slot_device> abcbus_slot_device_iterator;
#endif // MAME_DEVICES_ABCBUS_ABCBUS_H
diff --git a/src/devices/bus/abcbus/fd2.cpp b/src/devices/bus/abcbus/fd2.cpp
index 9f2688149e8..9fe4cf08003 100644
--- a/src/devices/bus/abcbus/fd2.cpp
+++ b/src/devices/bus/abcbus/fd2.cpp
@@ -55,7 +55,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC_FD2 = device_creator<abc_fd2_t>;
+DEFINE_DEVICE_TYPE(ABC_FD2, abc_fd2_device, "abc_fd2", "ABC FD2")
//-------------------------------------------------
@@ -76,7 +76,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *abc_fd2_t::device_rom_region() const
+const tiny_rom_entry *abc_fd2_device::device_rom_region() const
{
return ROM_NAME( abc_fd2 );
}
@@ -86,7 +86,7 @@ const tiny_rom_entry *abc_fd2_t::device_rom_region() const
// status_w -
//-------------------------------------------------
-WRITE8_MEMBER( abc_fd2_t::status_w )
+WRITE8_MEMBER( abc_fd2_device::status_w )
{
/*
@@ -114,7 +114,7 @@ WRITE8_MEMBER( abc_fd2_t::status_w )
// ADDRESS_MAP( abc_fd2_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( abc_fd2_mem, AS_PROGRAM, 8, abc_fd2_t )
+static ADDRESS_MAP_START( abc_fd2_mem, AS_PROGRAM, 8, abc_fd2_device )
AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION(Z80_TAG, 0)
AM_RANGE(0x0800, 0x0bff) AM_RAM
ADDRESS_MAP_END
@@ -124,10 +124,10 @@ ADDRESS_MAP_END
// ADDRESS_MAP( abc_fd2_io )
//-------------------------------------------------
-static ADDRESS_MAP_START( abc_fd2_io, AS_IO, 8, abc_fd2_t )
+static ADDRESS_MAP_START( abc_fd2_io, AS_IO, 8, abc_fd2_device )
ADDRESS_MAP_GLOBAL_MASK(0x73)
AM_RANGE(0x30, 0x33) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read_alt, write_alt)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE(FD1771_TAG, fd1771_t, read, write)
+ AM_RANGE(0x50, 0x53) AM_DEVREADWRITE(FD1771_TAG, fd1771_device, read, write)
AM_RANGE(0x60, 0x60) AM_WRITE(status_w)
ADDRESS_MAP_END
@@ -136,17 +136,17 @@ ADDRESS_MAP_END
// Z80PIO
//-------------------------------------------------
-READ8_MEMBER( abc_fd2_t::pio_pa_r )
+READ8_MEMBER( abc_fd2_device::pio_pa_r )
{
return m_data;
}
-WRITE8_MEMBER( abc_fd2_t::pio_pa_w )
+WRITE8_MEMBER( abc_fd2_device::pio_pa_w )
{
m_data = data;
}
-READ8_MEMBER( abc_fd2_t::pio_pb_r )
+READ8_MEMBER( abc_fd2_device::pio_pb_r )
{
/*
@@ -172,7 +172,7 @@ READ8_MEMBER( abc_fd2_t::pio_pb_r )
return data;
}
-WRITE8_MEMBER( abc_fd2_t::pio_pb_w )
+WRITE8_MEMBER( abc_fd2_device::pio_pb_w )
{
/*
@@ -225,7 +225,7 @@ static SLOT_INTERFACE_START( abc_fd2_floppies )
SLOT_INTERFACE( "525sssd", FLOPPY_525_SSSD )
SLOT_INTERFACE_END
-FLOPPY_FORMATS_MEMBER( abc_fd2_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( abc_fd2_device::floppy_formats )
FLOPPY_ABC_FD2_FORMAT
FLOPPY_FORMATS_END
@@ -242,18 +242,18 @@ static MACHINE_CONFIG_FRAGMENT( abc_fd2 )
MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_4MHz/2)
MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
- MCFG_Z80PIO_IN_PA_CB(READ8(abc_fd2_t, pio_pa_r))
- MCFG_Z80PIO_OUT_PA_CB(WRITE8(abc_fd2_t, pio_pa_w))
- MCFG_Z80PIO_IN_PB_CB(READ8(abc_fd2_t, pio_pb_r))
- MCFG_Z80PIO_OUT_PB_CB(WRITE8(abc_fd2_t, pio_pb_w))
+ MCFG_Z80PIO_IN_PA_CB(READ8(abc_fd2_device, pio_pa_r))
+ MCFG_Z80PIO_OUT_PA_CB(WRITE8(abc_fd2_device, pio_pa_w))
+ MCFG_Z80PIO_IN_PB_CB(READ8(abc_fd2_device, pio_pb_r))
+ MCFG_Z80PIO_OUT_PB_CB(WRITE8(abc_fd2_device, pio_pb_w))
MCFG_FD1771_ADD(FD1771_TAG, XTAL_4MHz/4)
MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE(Z80PIO_TAG, z80pio_device, pb7_w))
MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE(Z80PIO_TAG, z80pio_device, pb5_w))
MCFG_WD_FDC_HLD_CALLBACK(DEVWRITELINE(Z80PIO_TAG, z80pio_device, pb6_w))
- MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG ":0", abc_fd2_floppies, "525sssd", abc_fd2_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG ":1", abc_fd2_floppies, "525sssd", abc_fd2_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG ":0", abc_fd2_floppies, "525sssd", abc_fd2_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG ":1", abc_fd2_floppies, "525sssd", abc_fd2_device::floppy_formats)
MACHINE_CONFIG_END
@@ -262,7 +262,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor abc_fd2_t::device_mconfig_additions() const
+machine_config_constructor abc_fd2_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc_fd2 );
}
@@ -274,11 +274,11 @@ machine_config_constructor abc_fd2_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// abc_fd2_t - constructor
+// abc_fd2_device - constructor
//-------------------------------------------------
-abc_fd2_t::abc_fd2_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ABC_FD2, "ABC FD2", tag, owner, clock, "abc_fd2", __FILE__),
+abc_fd2_device::abc_fd2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, ABC_FD2, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG),
m_pio(*this, Z80PIO_TAG),
@@ -295,7 +295,7 @@ abc_fd2_t::abc_fd2_t(const machine_config &mconfig, const char *tag, device_t *o
// device_start - device-specific startup
//-------------------------------------------------
-void abc_fd2_t::device_start()
+void abc_fd2_device::device_start()
{
}
@@ -304,7 +304,7 @@ void abc_fd2_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void abc_fd2_t::device_reset()
+void abc_fd2_device::device_reset()
{
m_cs = false;
@@ -325,7 +325,7 @@ void abc_fd2_t::device_reset()
// abcbus_cs -
//-------------------------------------------------
-void abc_fd2_t::abcbus_cs(uint8_t data)
+void abc_fd2_device::abcbus_cs(uint8_t data)
{
m_cs = (data == 0x2d);
}
@@ -335,7 +335,7 @@ void abc_fd2_t::abcbus_cs(uint8_t data)
// abcbus_stat -
//-------------------------------------------------
-uint8_t abc_fd2_t::abcbus_stat()
+uint8_t abc_fd2_device::abcbus_stat()
{
uint8_t data = 0xff;
@@ -352,7 +352,7 @@ uint8_t abc_fd2_t::abcbus_stat()
// abcbus_inp -
//-------------------------------------------------
-uint8_t abc_fd2_t::abcbus_inp()
+uint8_t abc_fd2_device::abcbus_inp()
{
uint8_t data = 0xff;
@@ -375,7 +375,7 @@ uint8_t abc_fd2_t::abcbus_inp()
// abcbus_out -
//-------------------------------------------------
-void abc_fd2_t::abcbus_out(uint8_t data)
+void abc_fd2_device::abcbus_out(uint8_t data)
{
if (!m_cs) return;
@@ -393,7 +393,7 @@ void abc_fd2_t::abcbus_out(uint8_t data)
// abcbus_c1 -
//-------------------------------------------------
-void abc_fd2_t::abcbus_c1(uint8_t data)
+void abc_fd2_device::abcbus_c1(uint8_t data)
{
if (m_cs)
{
@@ -407,7 +407,7 @@ void abc_fd2_t::abcbus_c1(uint8_t data)
// abcbus_c3 -
//-------------------------------------------------
-void abc_fd2_t::abcbus_c3(uint8_t data)
+void abc_fd2_device::abcbus_c3(uint8_t data)
{
if (m_cs)
{
@@ -420,7 +420,7 @@ void abc_fd2_t::abcbus_c3(uint8_t data)
// abcbus_xmemfl -
//-------------------------------------------------
-uint8_t abc_fd2_t::abcbus_xmemfl(offs_t offset)
+uint8_t abc_fd2_device::abcbus_xmemfl(offs_t offset)
{
uint8_t data = 0xff;
diff --git a/src/devices/bus/abcbus/fd2.h b/src/devices/bus/abcbus/fd2.h
index f82c0fb68d0..37a2be98959 100644
--- a/src/devices/bus/abcbus/fd2.h
+++ b/src/devices/bus/abcbus/fd2.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCBUS_FD2_H
+#define MAME_BUS_ABCBUS_FD2_H
-#ifndef __ABC_FD2__
-#define __ABC_FD2__
+#pragma once
#include "abcbus.h"
#include "cpu/z80/z80.h"
@@ -24,14 +24,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> abc_fd2_t
+// ======================> abc_fd2_device
-class abc_fd2_t : public device_t,
+class abc_fd2_device : public device_t,
public device_abcbus_card_interface
{
public:
// construction/destruction
- abc_fd2_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc_fd2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -63,7 +63,7 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_device<z80pio_device> m_pio;
- required_device<fd1771_t> m_fdc;
+ required_device<fd1771_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_memory_region m_dos_rom;
@@ -75,8 +75,6 @@ private:
// device type definition
-extern const device_type ABC_FD2;
-
-
+DECLARE_DEVICE_TYPE(ABC_FD2, abc_fd2_device)
-#endif
+#endif // MAME_BUS_ABCBUS_FD2_H
diff --git a/src/devices/bus/abcbus/hdc.cpp b/src/devices/bus/abcbus/hdc.cpp
index 9e69ced4ad3..ba27d1cd948 100644
--- a/src/devices/bus/abcbus/hdc.cpp
+++ b/src/devices/bus/abcbus/hdc.cpp
@@ -24,7 +24,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC_HDC = device_creator<abc_hdc_device>;
+DEFINE_DEVICE_TYPE(ABC_HDC, abc_hdc_device, "abc_hdc", "ABC HDC")
//-------------------------------------------------
@@ -113,9 +113,9 @@ machine_config_constructor abc_hdc_device::device_mconfig_additions() const
//-------------------------------------------------
abc_hdc_device::abc_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ABC_HDC, "ABC HDC", tag, owner, clock, "abc_hdc", __FILE__),
- device_abcbus_card_interface(mconfig, *this),
- m_maincpu(*this, Z80_TAG)
+ : device_t(mconfig, ABC_HDC, tag, owner, clock)
+ , device_abcbus_card_interface(mconfig, *this)
+ , m_maincpu(*this, Z80_TAG)
{
}
diff --git a/src/devices/bus/abcbus/hdc.h b/src/devices/bus/abcbus/hdc.h
index c0a1350d51e..e9edb3b8d2a 100644
--- a/src/devices/bus/abcbus/hdc.h
+++ b/src/devices/bus/abcbus/hdc.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCBUS_HDC_H
+#define MAME_BUS_ABCBUS_HDC_H
-#ifndef __ABC_HDC__
-#define __ABC_HDC__
+#pragma once
#include "abcbus.h"
#include "cpu/z80/z80.h"
@@ -49,8 +49,6 @@ private:
// device type definition
-extern const device_type ABC_HDC;
-
-
+DECLARE_DEVICE_TYPE(ABC_HDC, abc_hdc_device)
-#endif
+#endif // MAME_BUS_ABCBUS_HDC_H
diff --git a/src/devices/bus/abcbus/lux10828.cpp b/src/devices/bus/abcbus/lux10828.cpp
index 42960d2e918..888055886c4 100644
--- a/src/devices/bus/abcbus/lux10828.cpp
+++ b/src/devices/bus/abcbus/lux10828.cpp
@@ -139,7 +139,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type LUXOR_55_10828 = device_creator<luxor_55_10828_device>;
+DEFINE_DEVICE_TYPE(LUXOR_55_10828, luxor_55_10828_device, "lux10828", "Luxor 55 10828")
//-------------------------------------------------
@@ -405,7 +405,7 @@ ioport_constructor luxor_55_10828_device::device_input_ports() const
//-------------------------------------------------
luxor_55_10828_device::luxor_55_10828_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, LUXOR_55_10828, "Luxor 55 10828", tag, owner, clock, "lux10828", __FILE__),
+ : device_t(mconfig, LUXOR_55_10828, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG),
m_pio(*this, Z80PIO_TAG),
diff --git a/src/devices/bus/abcbus/lux10828.h b/src/devices/bus/abcbus/lux10828.h
index 100e32f3f4f..d695c57c19f 100644
--- a/src/devices/bus/abcbus/lux10828.h
+++ b/src/devices/bus/abcbus/lux10828.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCBUS_LUXOR10828_H
+#define MAME_BUS_ABCBUS_LUXOR10828_H
-#ifndef __LUXOR_55_10828__
-#define __LUXOR_55_10828__
+#pragma once
#include "abcbus.h"
#include "cpu/z80/z80.h"
@@ -91,7 +91,7 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_device<z80pio_device> m_pio;
- required_device<mb8876_t> m_fdc;
+ required_device<mb8876_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_ioport m_sw1;
@@ -109,6 +109,6 @@ private:
// device type definition
-extern const device_type LUXOR_55_10828;
+DECLARE_DEVICE_TYPE(LUXOR_55_10828, luxor_55_10828_device)
-#endif
+#endif // MAME_BUS_ABCBUS_LUXOR10828_H
diff --git a/src/devices/bus/abcbus/lux21046.cpp b/src/devices/bus/abcbus/lux21046.cpp
index 489aac9e92c..86bddaf990e 100644
--- a/src/devices/bus/abcbus/lux21046.cpp
+++ b/src/devices/bus/abcbus/lux21046.cpp
@@ -94,12 +94,12 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type LUXOR_55_21046 = device_creator<luxor_55_21046_t>;
-const device_type ABC830 = device_creator<abc830_t>;
-const device_type ABC832 = device_creator<abc832_t>;
-const device_type ABC834 = device_creator<abc834_t>;
-const device_type ABC838 = device_creator<abc838_device>;
-const device_type ABC850_FLOPPY = device_creator<abc850_floppy_t>;
+DEFINE_DEVICE_TYPE(LUXOR_55_21046, luxor_55_21046_device, "lux21046", "Luxor 55 21046")
+DEFINE_DEVICE_TYPE(ABC830, abc830_device, "abc830", "ABC 830")
+DEFINE_DEVICE_TYPE(ABC832, abc832_device, "abc832", "ABC 832")
+DEFINE_DEVICE_TYPE(ABC834, abc834_device, "abc834", "ABC 834")
+DEFINE_DEVICE_TYPE(ABC838, abc838_device, "abc838", "ABC 838")
+DEFINE_DEVICE_TYPE(ABC850_FLOPPY, abc850_floppy_device, "abc850flop", "ABC 850 Floppy")
//-------------------------------------------------
@@ -127,7 +127,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *luxor_55_21046_t::device_rom_region() const
+const tiny_rom_entry *luxor_55_21046_device::device_rom_region() const
{
return ROM_NAME( luxor_55_21046 );
}
@@ -137,7 +137,7 @@ const tiny_rom_entry *luxor_55_21046_t::device_rom_region() const
// ADDRESS_MAP( luxor_55_21046_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( luxor_55_21046_mem, AS_PROGRAM, 8, luxor_55_21046_t )
+static ADDRESS_MAP_START( luxor_55_21046_mem, AS_PROGRAM, 8, luxor_55_21046_device )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION(Z80_TAG, 0x2000) // A13 pull-up
@@ -149,7 +149,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( luxor_55_21046_io )
//-------------------------------------------------
-static ADDRESS_MAP_START( luxor_55_21046_io, AS_IO, 8, luxor_55_21046_t )
+static ADDRESS_MAP_START( luxor_55_21046_io, AS_IO, 8, luxor_55_21046_device )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff03) AM_READ(out_r)
AM_RANGE(0x1c, 0x1c) AM_MIRROR(0xff03) AM_WRITE(inp_w)
@@ -157,8 +157,8 @@ static ADDRESS_MAP_START( luxor_55_21046_io, AS_IO, 8, luxor_55_21046_t )
AM_RANGE(0x3c, 0x3c) AM_MIRROR(0xff03) AM_WRITE(_9b_w)
AM_RANGE(0x4c, 0x4c) AM_MIRROR(0xff03) AM_WRITE(_8a_w)
AM_RANGE(0x58, 0x58) AM_MIRROR(0x0007) AM_SELECT(0xff00) AM_READ(_9a_r)
- AM_RANGE(0x68, 0x6b) AM_MIRROR(0xff00) AM_DEVREAD(SAB1793_TAG, fd1793_t, read)
- AM_RANGE(0x78, 0x7b) AM_MIRROR(0xff00) AM_DEVWRITE(SAB1793_TAG, fd1793_t, write)
+ AM_RANGE(0x68, 0x6b) AM_MIRROR(0xff00) AM_DEVREAD(SAB1793_TAG, fd1793_device, read)
+ AM_RANGE(0x78, 0x7b) AM_MIRROR(0xff00) AM_DEVWRITE(SAB1793_TAG, fd1793_device, write)
AM_RANGE(0x80, 0x80) AM_MIRROR(0xff77) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write)
ADDRESS_MAP_END
@@ -222,7 +222,7 @@ ADDRESS_MAP_END
*/
-WRITE_LINE_MEMBER( luxor_55_21046_t::dma_int_w )
+WRITE_LINE_MEMBER( luxor_55_21046_device::dma_int_w )
{
m_dma_irq = state;
@@ -230,27 +230,27 @@ WRITE_LINE_MEMBER( luxor_55_21046_t::dma_int_w )
m_maincpu->set_input_line(INPUT_LINE_IRQ0, m_fdc_irq || m_dma_irq);
}
-READ8_MEMBER( luxor_55_21046_t::memory_read_byte )
+READ8_MEMBER( luxor_55_21046_device::memory_read_byte )
{
return m_maincpu->space(AS_PROGRAM).read_byte(offset);
}
-WRITE8_MEMBER( luxor_55_21046_t::memory_write_byte )
+WRITE8_MEMBER( luxor_55_21046_device::memory_write_byte )
{
return m_maincpu->space(AS_PROGRAM).write_byte(offset, data);
}
-READ8_MEMBER( luxor_55_21046_t::io_read_byte )
+READ8_MEMBER( luxor_55_21046_device::io_read_byte )
{
return m_maincpu->space(AS_IO).read_byte(offset);
}
-WRITE8_MEMBER( luxor_55_21046_t::io_write_byte )
+WRITE8_MEMBER( luxor_55_21046_device::io_write_byte )
{
return m_maincpu->space(AS_IO).write_byte(offset, data);
}
-FLOPPY_FORMATS_MEMBER( luxor_55_21046_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( luxor_55_21046_device::floppy_formats )
FLOPPY_ABC800_FORMAT
FLOPPY_FORMATS_END
@@ -263,7 +263,7 @@ static SLOT_INTERFACE_START( abc_floppies )
SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD )
SLOT_INTERFACE_END
-WRITE_LINE_MEMBER( luxor_55_21046_t::fdc_intrq_w )
+WRITE_LINE_MEMBER( luxor_55_21046_device::fdc_intrq_w )
{
m_fdc_irq = state;
@@ -295,14 +295,14 @@ static MACHINE_CONFIG_FRAGMENT( luxor_55_21046 )
MCFG_DEVICE_ADD(Z80DMA_TAG, Z80DMA, XTAL_16MHz/4)
MCFG_Z80DMA_OUT_BUSREQ_CB(INPUTLINE(Z80_TAG, INPUT_LINE_HALT))
- MCFG_Z80DMA_OUT_INT_CB(WRITELINE(luxor_55_21046_t, dma_int_w))
- MCFG_Z80DMA_IN_MREQ_CB(READ8(luxor_55_21046_t, memory_read_byte))
- MCFG_Z80DMA_OUT_MREQ_CB(WRITE8(luxor_55_21046_t, memory_write_byte))
- MCFG_Z80DMA_IN_IORQ_CB(READ8(luxor_55_21046_t, io_read_byte))
- MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(luxor_55_21046_t, io_write_byte))
+ MCFG_Z80DMA_OUT_INT_CB(WRITELINE(luxor_55_21046_device, dma_int_w))
+ MCFG_Z80DMA_IN_MREQ_CB(READ8(luxor_55_21046_device, memory_read_byte))
+ MCFG_Z80DMA_OUT_MREQ_CB(WRITE8(luxor_55_21046_device, memory_write_byte))
+ MCFG_Z80DMA_IN_IORQ_CB(READ8(luxor_55_21046_device, io_read_byte))
+ MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(luxor_55_21046_device, io_write_byte))
MCFG_FD1793_ADD(SAB1793_TAG, XTAL_16MHz/16)
- MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(luxor_55_21046_t, fdc_intrq_w))
+ MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(luxor_55_21046_device, fdc_intrq_w))
MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE(Z80DMA_TAG, z80dma_device, rdy_w))
MACHINE_CONFIG_END
@@ -312,8 +312,8 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED( abc830, luxor_55_21046 )
- MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":0", abc_floppies, "525ssdd", luxor_55_21046_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":1", abc_floppies, "525ssdd", luxor_55_21046_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":0", abc_floppies, "525ssdd", luxor_55_21046_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":1", abc_floppies, "525ssdd", luxor_55_21046_device::floppy_formats)
MACHINE_CONFIG_END
@@ -322,8 +322,8 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED( abc832, luxor_55_21046 )
- MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":0", abc_floppies, "525qd", luxor_55_21046_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":1", abc_floppies, "525qd", luxor_55_21046_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":0", abc_floppies, "525qd", luxor_55_21046_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":1", abc_floppies, "525qd", luxor_55_21046_device::floppy_formats)
MACHINE_CONFIG_END
@@ -332,8 +332,8 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED( abc838, luxor_55_21046 )
- MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":0", abc_floppies, "8dsdd", luxor_55_21046_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":1", abc_floppies, "8dsdd", luxor_55_21046_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":0", abc_floppies, "8dsdd", luxor_55_21046_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":1", abc_floppies, "8dsdd", luxor_55_21046_device::floppy_formats)
MACHINE_CONFIG_END
@@ -342,8 +342,8 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED( abc850, luxor_55_21046 )
- MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":0", abc_floppies, "525qd", luxor_55_21046_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":1", abc_floppies, nullptr, luxor_55_21046_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":0", abc_floppies, "525qd", luxor_55_21046_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":1", abc_floppies, nullptr, luxor_55_21046_device::floppy_formats)
MACHINE_CONFIG_END
@@ -352,22 +352,22 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor luxor_55_21046_t::device_mconfig_additions() const
+machine_config_constructor luxor_55_21046_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( luxor_55_21046 );
}
-machine_config_constructor abc830_t::device_mconfig_additions() const
+machine_config_constructor abc830_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc830 );
}
-machine_config_constructor abc832_t::device_mconfig_additions() const
+machine_config_constructor abc832_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc832 );
}
-machine_config_constructor abc834_t::device_mconfig_additions() const
+machine_config_constructor abc834_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc832 );
}
@@ -377,7 +377,7 @@ machine_config_constructor abc838_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME( abc838 );
}
-machine_config_constructor abc850_floppy_t::device_mconfig_additions() const
+machine_config_constructor abc850_floppy_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( abc850 );
}
@@ -703,22 +703,22 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor luxor_55_21046_t::device_input_ports() const
+ioport_constructor luxor_55_21046_device::device_input_ports() const
{
return INPUT_PORTS_NAME( luxor_55_21046 );
}
-ioport_constructor abc830_t::device_input_ports() const
+ioport_constructor abc830_device::device_input_ports() const
{
return INPUT_PORTS_NAME( abc830 );
}
-ioport_constructor abc832_t::device_input_ports() const
+ioport_constructor abc832_device::device_input_ports() const
{
return INPUT_PORTS_NAME( abc832 );
}
-ioport_constructor abc834_t::device_input_ports() const
+ioport_constructor abc834_device::device_input_ports() const
{
return INPUT_PORTS_NAME( abc834 );
}
@@ -728,7 +728,7 @@ ioport_constructor abc838_device::device_input_ports() const
return INPUT_PORTS_NAME( abc838 );
}
-ioport_constructor abc850_floppy_t::device_input_ports() const
+ioport_constructor abc850_floppy_device::device_input_ports() const
{
return INPUT_PORTS_NAME( abc850 );
}
@@ -740,16 +740,16 @@ ioport_constructor abc850_floppy_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// luxor_55_21046_t - constructor
+// luxor_55_21046_device - constructor
//-------------------------------------------------
-luxor_55_21046_t::luxor_55_21046_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- luxor_55_21046_t(mconfig, LUXOR_55_21046, "Luxor 55 21046", tag, owner, clock, "lux21046", __FILE__)
+luxor_55_21046_device::luxor_55_21046_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ luxor_55_21046_device(mconfig, LUXOR_55_21046, tag, owner, clock)
{
}
-luxor_55_21046_t::luxor_55_21046_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+luxor_55_21046_device::luxor_55_21046_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG),
m_dma(*this, Z80DMA_TAG),
@@ -771,28 +771,28 @@ luxor_55_21046_t::luxor_55_21046_t(const machine_config &mconfig, device_type ty
{
}
-abc830_t::abc830_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- luxor_55_21046_t(mconfig, ABC830, "ABC 830", tag, owner, clock, "abc830", __FILE__)
+abc830_device::abc830_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ luxor_55_21046_device(mconfig, ABC830, tag, owner, clock)
{
}
-abc832_t::abc832_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- luxor_55_21046_t(mconfig, ABC832, "ABC 832", tag, owner, clock, "abc832", __FILE__)
+abc832_device::abc832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ luxor_55_21046_device(mconfig, ABC832, tag, owner, clock)
{
}
-abc834_t::abc834_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- luxor_55_21046_t(mconfig, ABC834, "ABC 834", tag, owner, clock, "abc834", __FILE__)
+abc834_device::abc834_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ luxor_55_21046_device(mconfig, ABC834, tag, owner, clock)
{
}
abc838_device::abc838_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- luxor_55_21046_t(mconfig, ABC838, "ABC 838", tag, owner, clock, "abc838", __FILE__)
+ luxor_55_21046_device(mconfig, ABC838, tag, owner, clock)
{
}
-abc850_floppy_t::abc850_floppy_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- luxor_55_21046_t(mconfig, ABC850_FLOPPY, "ABC 850 floppy", tag, owner, clock, "abc850flop", __FILE__)
+abc850_floppy_device::abc850_floppy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ luxor_55_21046_device(mconfig, ABC850_FLOPPY, tag, owner, clock)
{
}
@@ -801,7 +801,7 @@ abc850_floppy_t::abc850_floppy_t(const machine_config &mconfig, const char *tag,
// device_start - device-specific startup
//-------------------------------------------------
-void luxor_55_21046_t::device_start()
+void luxor_55_21046_device::device_start()
{
// state saving
save_item(NAME(m_cs));
@@ -819,7 +819,7 @@ void luxor_55_21046_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void luxor_55_21046_t::device_reset()
+void luxor_55_21046_device::device_reset()
{
m_cs = false;
m_out = 0;
@@ -842,7 +842,7 @@ void luxor_55_21046_t::device_reset()
// abcbus_cs -
//-------------------------------------------------
-void luxor_55_21046_t::abcbus_cs(uint8_t data)
+void luxor_55_21046_device::abcbus_cs(uint8_t data)
{
m_cs = (data == m_sw3->read());
}
@@ -852,7 +852,7 @@ void luxor_55_21046_t::abcbus_cs(uint8_t data)
// abcbus_csb -
//-------------------------------------------------
-int luxor_55_21046_t::abcbus_csb()
+int luxor_55_21046_device::abcbus_csb()
{
return m_cs ? 0 : 1;
}
@@ -862,7 +862,7 @@ int luxor_55_21046_t::abcbus_csb()
// abcbus_stat -
//-------------------------------------------------
-uint8_t luxor_55_21046_t::abcbus_stat()
+uint8_t luxor_55_21046_device::abcbus_stat()
{
/*
@@ -895,7 +895,7 @@ uint8_t luxor_55_21046_t::abcbus_stat()
// abcbus_inp -
//-------------------------------------------------
-uint8_t luxor_55_21046_t::abcbus_inp()
+uint8_t luxor_55_21046_device::abcbus_inp()
{
uint8_t data = 0xff;
@@ -913,7 +913,7 @@ uint8_t luxor_55_21046_t::abcbus_inp()
// abcbus_out -
//-------------------------------------------------
-void luxor_55_21046_t::abcbus_out(uint8_t data)
+void luxor_55_21046_device::abcbus_out(uint8_t data)
{
if (m_cs)
{
@@ -927,7 +927,7 @@ void luxor_55_21046_t::abcbus_out(uint8_t data)
// abcbus_c1 -
//-------------------------------------------------
-void luxor_55_21046_t::abcbus_c1(uint8_t data)
+void luxor_55_21046_device::abcbus_c1(uint8_t data)
{
if (m_cs)
{
@@ -941,7 +941,7 @@ void luxor_55_21046_t::abcbus_c1(uint8_t data)
// abcbus_c3 -
//-------------------------------------------------
-void luxor_55_21046_t::abcbus_c3(uint8_t data)
+void luxor_55_21046_device::abcbus_c3(uint8_t data)
{
if (m_cs)
{
@@ -954,7 +954,7 @@ void luxor_55_21046_t::abcbus_c3(uint8_t data)
// abcbus_c4 -
//-------------------------------------------------
-void luxor_55_21046_t::abcbus_c4(uint8_t data)
+void luxor_55_21046_device::abcbus_c4(uint8_t data)
{
// TODO connected to PAL16R4 pin 2
}
@@ -969,7 +969,7 @@ void luxor_55_21046_t::abcbus_c4(uint8_t data)
// 3d_r -
//-------------------------------------------------
-READ8_MEMBER( luxor_55_21046_t::out_r )
+READ8_MEMBER( luxor_55_21046_device::out_r )
{
if (m_busy)
{
@@ -984,7 +984,7 @@ READ8_MEMBER( luxor_55_21046_t::out_r )
// 4d_w -
//-------------------------------------------------
-WRITE8_MEMBER( luxor_55_21046_t::inp_w )
+WRITE8_MEMBER( luxor_55_21046_device::inp_w )
{
if (m_busy)
{
@@ -999,7 +999,7 @@ WRITE8_MEMBER( luxor_55_21046_t::inp_w )
// 4b_w -
//-------------------------------------------------
-WRITE8_MEMBER( luxor_55_21046_t::_4b_w )
+WRITE8_MEMBER( luxor_55_21046_device::_4b_w )
{
/*
@@ -1030,7 +1030,7 @@ WRITE8_MEMBER( luxor_55_21046_t::_4b_w )
// 9b_w -
//-------------------------------------------------
-WRITE8_MEMBER( luxor_55_21046_t::_9b_w )
+WRITE8_MEMBER( luxor_55_21046_device::_9b_w )
{
/*
@@ -1070,7 +1070,7 @@ WRITE8_MEMBER( luxor_55_21046_t::_9b_w )
// 8a_w -
//-------------------------------------------------
-WRITE8_MEMBER( luxor_55_21046_t::_8a_w )
+WRITE8_MEMBER( luxor_55_21046_device::_8a_w )
{
/*
@@ -1110,7 +1110,7 @@ WRITE8_MEMBER( luxor_55_21046_t::_8a_w )
// 9a_r -
//-------------------------------------------------
-READ8_MEMBER( luxor_55_21046_t::_9a_r )
+READ8_MEMBER( luxor_55_21046_device::_9a_r )
{
/*
diff --git a/src/devices/bus/abcbus/lux21046.h b/src/devices/bus/abcbus/lux21046.h
index 8feed1090a2..818b31a0718 100644
--- a/src/devices/bus/abcbus/lux21046.h
+++ b/src/devices/bus/abcbus/lux21046.h
@@ -45,14 +45,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> luxor_55_21046_t
+// ======================> luxor_55_21046_device
-class luxor_55_21046_t : public device_t,
+class luxor_55_21046_device : public device_t,
public device_abcbus_card_interface
{
public:
// construction/destruction
- luxor_55_21046_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ luxor_55_21046_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -79,7 +79,7 @@ public:
DECLARE_FLOPPY_FORMATS( floppy_formats );
protected:
- luxor_55_21046_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ luxor_55_21046_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -98,7 +98,7 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_device<z80dma_device> m_dma;
- required_device<fd1793_t> m_fdc;
+ required_device<fd1793_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
floppy_image_device *m_floppy;
@@ -117,13 +117,13 @@ private:
};
-// ======================> abc830_t
+// ======================> abc830_device
-class abc830_t : public luxor_55_21046_t
+class abc830_device : public luxor_55_21046_device
{
public:
// construction/destruction
- abc830_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc830_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -131,13 +131,13 @@ public:
};
-// ======================> abc832_t
+// ======================> abc832_device
-class abc832_t : public luxor_55_21046_t
+class abc832_device : public luxor_55_21046_device
{
public:
// construction/destruction
- abc832_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -145,13 +145,13 @@ public:
};
-// ======================> abc834_t
+// ======================> abc834_device
-class abc834_t : public luxor_55_21046_t
+class abc834_device : public luxor_55_21046_device
{
public:
// construction/destruction
- abc834_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc834_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -161,7 +161,7 @@ public:
// ======================> abc838_device
-class abc838_device : public luxor_55_21046_t
+class abc838_device : public luxor_55_21046_device
{
public:
// construction/destruction
@@ -173,13 +173,13 @@ public:
};
-// ======================> abc850_floppy_t
+// ======================> abc850_floppy_device
-class abc850_floppy_t : public luxor_55_21046_t
+class abc850_floppy_device : public luxor_55_21046_device
{
public:
// construction/destruction
- abc850_floppy_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc850_floppy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -188,12 +188,12 @@ public:
// device type definition
-extern const device_type LUXOR_55_21046;
-extern const device_type ABC830;
-extern const device_type ABC832;
-extern const device_type ABC834;
-extern const device_type ABC838;
-extern const device_type ABC850_FLOPPY;
+DECLARE_DEVICE_TYPE(LUXOR_55_21046, luxor_55_21046_device)
+DECLARE_DEVICE_TYPE(ABC830, abc830_device)
+DECLARE_DEVICE_TYPE(ABC832, abc832_device)
+DECLARE_DEVICE_TYPE(ABC834, abc834_device)
+DECLARE_DEVICE_TYPE(ABC838, abc838_device)
+DECLARE_DEVICE_TYPE(ABC850_FLOPPY, abc850_floppy_device)
diff --git a/src/devices/bus/abcbus/lux21056.cpp b/src/devices/bus/abcbus/lux21056.cpp
index 1cebd0f9258..7fa81c39667 100644
--- a/src/devices/bus/abcbus/lux21056.cpp
+++ b/src/devices/bus/abcbus/lux21056.cpp
@@ -94,7 +94,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type LUXOR_55_21056 = device_creator<luxor_55_21056_device>;
+DEFINE_DEVICE_TYPE(LUXOR_55_21056, luxor_55_21056_device, "lux21056", "Luxor 55 21056")
//-------------------------------------------------
@@ -339,7 +339,7 @@ ioport_constructor luxor_55_21056_device::device_input_ports() const
//-------------------------------------------------
luxor_55_21056_device::luxor_55_21056_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, LUXOR_55_21056, "Luxor 55 21056", tag, owner, clock, "lux21056", __FILE__),
+ : device_t(mconfig, LUXOR_55_21056, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG),
m_dma(*this, Z80DMA_TAG),
diff --git a/src/devices/bus/abcbus/lux21056.h b/src/devices/bus/abcbus/lux21056.h
index d87183e91d3..b79dc547895 100644
--- a/src/devices/bus/abcbus/lux21056.h
+++ b/src/devices/bus/abcbus/lux21056.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCBUS_LUX21056_H
+#define MAME_BUS_ABCBUS_LUX21056_H
-#ifndef __LUXOR_55_21056__
-#define __LUXOR_55_21056__
+#pragma once
#include "abcbus.h"
#include "bus/scsi/scsi.h"
@@ -79,7 +79,7 @@ private:
required_device<cpu_device> m_maincpu;
required_device<z80dma_device> m_dma;
- required_device<SCSI_PORT_DEVICE> m_sasibus;
+ required_device<scsi_port_device> m_sasibus;
required_device<output_latch_device> m_sasi_data_out;
required_device<input_buffer_device> m_sasi_data_in;
required_ioport m_s1;
@@ -100,8 +100,6 @@ private:
// device type definition
-extern const device_type LUXOR_55_21056;
-
-
+DECLARE_DEVICE_TYPE(LUXOR_55_21056, luxor_55_21056_device)
-#endif
+#endif // MAME_BUS_ABCBUS_LUX21056_H
diff --git a/src/devices/bus/abcbus/lux4105.cpp b/src/devices/bus/abcbus/lux4105.cpp
index 4ffdf711756..9d7a84e30e0 100644
--- a/src/devices/bus/abcbus/lux4105.cpp
+++ b/src/devices/bus/abcbus/lux4105.cpp
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type LUXOR_4105 = device_creator<luxor_4105_device>;
+DEFINE_DEVICE_TYPE(LUXOR_4105, luxor_4105_device, "lux4105", "Luxor 4105")
WRITE_LINE_MEMBER( luxor_4105_device::write_sasi_bsy )
@@ -176,7 +176,7 @@ inline void luxor_4105_device::update_trrq_int()
//-------------------------------------------------
luxor_4105_device::luxor_4105_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, LUXOR_4105, "Luxor 4105", tag, owner, clock, "lux4105", __FILE__),
+ device_t(mconfig, LUXOR_4105, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this),
m_sasibus(*this, SASIBUS_TAG),
m_sasi_data_out(*this, "sasi_data_out"),
diff --git a/src/devices/bus/abcbus/lux4105.h b/src/devices/bus/abcbus/lux4105.h
index 7c4e7881665..6c81a457b11 100644
--- a/src/devices/bus/abcbus/lux4105.h
+++ b/src/devices/bus/abcbus/lux4105.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCBUS_LUX4105_H
+#define MAME_BUS_ABCBUS_LUX4105_H
-#ifndef __LUXOR_4105__
-#define __LUXOR_4105__
+#pragma once
#include "abcbus.h"
@@ -66,7 +66,7 @@ protected:
private:
inline void update_trrq_int();
- required_device<SCSI_PORT_DEVICE> m_sasibus;
+ required_device<scsi_port_device> m_sasibus;
required_device<output_latch_device> m_sasi_data_out;
required_device<input_buffer_device> m_sasi_data_in;
required_ioport m_1e;
@@ -84,8 +84,7 @@ private:
// device type definition
-extern const device_type LUXOR_4105;
-
+DECLARE_DEVICE_TYPE(LUXOR_4105, luxor_4105_device)
-#endif
+#endif // MAME_BUS_ABCBUS_LUX4105_H
diff --git a/src/devices/bus/abcbus/memcard.cpp b/src/devices/bus/abcbus/memcard.cpp
index 32ac9a9cf42..6cdaf7be531 100644
--- a/src/devices/bus/abcbus/memcard.cpp
+++ b/src/devices/bus/abcbus/memcard.cpp
@@ -63,7 +63,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC_MEMORY_CARD = device_creator<abc_memory_card_t>;
+DEFINE_DEVICE_TYPE(ABC_MEMORY_CARD, abc_memory_card_device, "abc_mem", "ABC Memory Card")
//-------------------------------------------------
@@ -95,7 +95,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *abc_memory_card_t::device_rom_region() const
+const tiny_rom_entry *abc_memory_card_device::device_rom_region() const
{
return ROM_NAME( abc_dos );
}
@@ -107,11 +107,11 @@ const tiny_rom_entry *abc_memory_card_t::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// abc_memory_card_t - constructor
+// abc_memory_card_device - constructor
//-------------------------------------------------
-abc_memory_card_t::abc_memory_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ABC_MEMORY_CARD, "ABC Memory Card", tag, owner, clock, "abc_mem", __FILE__),
+abc_memory_card_device::abc_memory_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, ABC_MEMORY_CARD, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this),
m_dos_rom(*this, "dos"),
m_iec_rom(*this, "iec"),
@@ -125,7 +125,7 @@ abc_memory_card_t::abc_memory_card_t(const machine_config &mconfig, const char *
// device_start - device-specific startup
//-------------------------------------------------
-void abc_memory_card_t::device_start()
+void abc_memory_card_device::device_start()
{
}
@@ -139,7 +139,7 @@ void abc_memory_card_t::device_start()
// abcbus_xmemfl -
//-------------------------------------------------
-uint8_t abc_memory_card_t::abcbus_xmemfl(offs_t offset)
+uint8_t abc_memory_card_device::abcbus_xmemfl(offs_t offset)
{
uint8_t data = 0xff;
diff --git a/src/devices/bus/abcbus/memcard.h b/src/devices/bus/abcbus/memcard.h
index 63fc582a48a..3c9f77da89f 100644
--- a/src/devices/bus/abcbus/memcard.h
+++ b/src/devices/bus/abcbus/memcard.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCBUS_MEMCARD_H
+#define MAME_BUS_ABCBUS_MEMCARD_H
-#ifndef __ABC_MEMORY_CARD__
-#define __ABC_MEMORY_CARD__
+#pragma once
#include "abcbus.h"
@@ -19,14 +19,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> abc_memory_card_t
+// ======================> abc_memory_card_device
-class abc_memory_card_t : public device_t,
- public device_abcbus_card_interface
+class abc_memory_card_device : public device_t, public device_abcbus_card_interface
{
public:
// construction/destruction
- abc_memory_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc_memory_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -49,7 +48,8 @@ private:
// device type definition
extern const device_type ABC_MEMORY_CARD;
+DECLARE_DEVICE_TYPE(ABC_MEMORY_CARD, abc_memory_card_device)
-#endif
+#endif // MAME_BUS_ABCBUS_MEMCARD_H
diff --git a/src/devices/bus/abcbus/ram.cpp b/src/devices/bus/abcbus/ram.cpp
index 07739a75f40..4886f46defa 100644
--- a/src/devices/bus/abcbus/ram.cpp
+++ b/src/devices/bus/abcbus/ram.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC80_16KB_RAM_CARD = device_creator<abc80_16kb_ram_card_t>;
+DEFINE_DEVICE_TYPE(ABC80_16KB_RAM_CARD, abc80_16kb_ram_card_device, "abc80_16kb", "ABC 80 16KB RAM card")
@@ -24,11 +24,11 @@ const device_type ABC80_16KB_RAM_CARD = device_creator<abc80_16kb_ram_card_t>;
//**************************************************************************
//-------------------------------------------------
-// abc80_16kb_ram_card_t - constructor
+// abc80_16kb_ram_card_device - constructor
//-------------------------------------------------
-abc80_16kb_ram_card_t::abc80_16kb_ram_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ABC80_16KB_RAM_CARD, "ABC 80 16KB RAM card", tag, owner, clock, "abc80_16kb", __FILE__),
+abc80_16kb_ram_card_device::abc80_16kb_ram_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, ABC80_16KB_RAM_CARD, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this),
m_ram(*this, "ram")
{
@@ -39,7 +39,7 @@ abc80_16kb_ram_card_t::abc80_16kb_ram_card_t(const machine_config &mconfig, cons
// device_start - device-specific startup
//-------------------------------------------------
-void abc80_16kb_ram_card_t::device_start()
+void abc80_16kb_ram_card_device::device_start()
{
m_ram.allocate(0x4000);
}
@@ -54,7 +54,7 @@ void abc80_16kb_ram_card_t::device_start()
// abcbus_xmemfl -
//-------------------------------------------------
-uint8_t abc80_16kb_ram_card_t::abcbus_xmemfl(offs_t offset)
+uint8_t abc80_16kb_ram_card_device::abcbus_xmemfl(offs_t offset)
{
uint8_t data = 0xff;
@@ -71,7 +71,7 @@ uint8_t abc80_16kb_ram_card_t::abcbus_xmemfl(offs_t offset)
// abcbus_xmemw -
//-------------------------------------------------
-void abc80_16kb_ram_card_t::abcbus_xmemw(offs_t offset, uint8_t data)
+void abc80_16kb_ram_card_device::abcbus_xmemw(offs_t offset, uint8_t data)
{
if (offset >= 0x8000 && offset < 0xc000)
{
diff --git a/src/devices/bus/abcbus/ram.h b/src/devices/bus/abcbus/ram.h
index eac0283dff0..cddb07182c7 100644
--- a/src/devices/bus/abcbus/ram.h
+++ b/src/devices/bus/abcbus/ram.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCBUS_RAM_H
+#define MAME_BUS_ABCBUS_RAM_H
-#ifndef __ABC80_16KB_RAM_CARD__
-#define __ABC80_16KB_RAM_CARD__
+#pragma once
#include "abcbus.h"
@@ -19,14 +19,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> abc80_16kb_ram_card_t
+// ======================> abc80_16kb_ram_card_device
-class abc80_16kb_ram_card_t : public device_t,
- public device_abcbus_card_interface
+class abc80_16kb_ram_card_device : public device_t, public device_abcbus_card_interface
{
public:
// construction/destruction
- abc80_16kb_ram_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ abc80_16kb_ram_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
// device-level overrides
@@ -43,8 +42,6 @@ private:
// device type definition
-extern const device_type ABC80_16KB_RAM_CARD;
-
-
+DECLARE_DEVICE_TYPE(ABC80_16KB_RAM_CARD, abc80_16kb_ram_card_device)
-#endif
+#endif // MAME_BUS_ABCBUS_RAM_H
diff --git a/src/devices/bus/abcbus/sio.cpp b/src/devices/bus/abcbus/sio.cpp
index e99d51f61a6..1e39214d12b 100644
--- a/src/devices/bus/abcbus/sio.cpp
+++ b/src/devices/bus/abcbus/sio.cpp
@@ -48,7 +48,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC_SIO = device_creator<abc_sio_device>;
+DEFINE_DEVICE_TYPE(ABC_SIO, abc_sio_device, "abcsio", "ABC SIO")
//-------------------------------------------------
@@ -103,7 +103,7 @@ machine_config_constructor abc_sio_device::device_mconfig_additions() const
//-------------------------------------------------
abc_sio_device::abc_sio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ABC_SIO, "ABC SIO", tag, owner, clock, "abcsio", __FILE__),
+ : device_t(mconfig, ABC_SIO, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this),
m_ctc(*this, Z80CTC_TAG),
m_sio(*this, Z80SIO_TAG),
diff --git a/src/devices/bus/abcbus/sio.h b/src/devices/bus/abcbus/sio.h
index 3b2abb78157..fffaf89c640 100644
--- a/src/devices/bus/abcbus/sio.h
+++ b/src/devices/bus/abcbus/sio.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Curt Coder
-#pragma once
+#ifndef MAME_BUS_ABCBUS_SIO_H
+#define MAME_BUS_ABCBUS_SIO_H
-#ifndef __ABC_SIO__
-#define __ABC_SIO__
+#pragma once
#include "abcbus.h"
#include "machine/z80ctc.h"
@@ -45,8 +45,6 @@ private:
// device type definition
-extern const device_type ABC_SIO;
-
-
+DECLARE_DEVICE_TYPE(ABC_SIO, abc_sio_device)
-#endif
+#endif // MAME_BUS_ABCBUS_SIO_H
diff --git a/src/devices/bus/abcbus/slutprov.cpp b/src/devices/bus/abcbus/slutprov.cpp
index 9dead4049f3..3e75dcd577c 100644
--- a/src/devices/bus/abcbus/slutprov.cpp
+++ b/src/devices/bus/abcbus/slutprov.cpp
@@ -9,7 +9,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC_SLUTPROV = device_creator<abc_slutprov_device>;
+DEFINE_DEVICE_TYPE(ABC_SLUTPROV, abc_slutprov_device, "slutprov", "Slutprov")
//-------------------------------------------------
@@ -42,7 +42,7 @@ const tiny_rom_entry *abc_slutprov_device::device_rom_region() const
//-------------------------------------------------
abc_slutprov_device::abc_slutprov_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ABC_SLUTPROV, "Slutprov", tag, owner, clock, "slutprov", __FILE__),
+ : device_t(mconfig, ABC_SLUTPROV, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/abcbus/slutprov.h b/src/devices/bus/abcbus/slutprov.h
index e4600eb7059..16f6b0e9f79 100644
--- a/src/devices/bus/abcbus/slutprov.h
+++ b/src/devices/bus/abcbus/slutprov.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Curt Coder
-#pragma once
+#ifndef MAME_BUS_ABCBUS_SLUTPROV_H
+#define MAME_BUS_ABCBUS_SLUTPROV_H
-#ifndef __ABC_SLUTPROV__
-#define __ABC_SLUTPROV__
+#pragma once
#include "abcbus.h"
@@ -36,8 +36,6 @@ protected:
// device type definition
-extern const device_type ABC_SLUTPROV;
-
-
+DECLARE_DEVICE_TYPE(ABC_SLUTPROV, abc_slutprov_device)
-#endif
+#endif // MAME_BUS_ABCBUS_SLUTPROV_H
diff --git a/src/devices/bus/abcbus/turbo.cpp b/src/devices/bus/abcbus/turbo.cpp
index d552f8e40e9..c9a30b0a61a 100644
--- a/src/devices/bus/abcbus/turbo.cpp
+++ b/src/devices/bus/abcbus/turbo.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type TURBO_KONTROLLER = device_creator<turbo_kontroller_device>;
+DEFINE_DEVICE_TYPE(TURBO_KONTROLLER, turbo_kontroller_device, "unidisk", "Turbo-Kontroller")
//-------------------------------------------------
@@ -111,7 +111,7 @@ machine_config_constructor turbo_kontroller_device::device_mconfig_additions() c
//-------------------------------------------------
turbo_kontroller_device::turbo_kontroller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TURBO_KONTROLLER, "Turbo-Kontroller", tag, owner, clock, "unidisk", __FILE__),
+ : device_t(mconfig, TURBO_KONTROLLER, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG)
{
diff --git a/src/devices/bus/abcbus/turbo.h b/src/devices/bus/abcbus/turbo.h
index b6f7a97721c..1204bf7df3e 100644
--- a/src/devices/bus/abcbus/turbo.h
+++ b/src/devices/bus/abcbus/turbo.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCBUS_TURBO_H
+#define MAME_BUS_ABCBUS_TURBO_H
-#ifndef __TURBO_KONTROLLER__
-#define __TURBO_KONTROLLER__
+#pragma once
#include "abcbus.h"
#include "cpu/z80/z80.h"
@@ -49,7 +49,6 @@ private:
// device type definition
extern const device_type TURBO_KONTROLLER;
+DECLARE_DEVICE_TYPE(TURBO_KONTROLLER, turbo_kontroller_device)
-
-
-#endif
+#endif // MAME_BUS_ABCBUS_TURBO_H
diff --git a/src/devices/bus/abcbus/uni800.cpp b/src/devices/bus/abcbus/uni800.cpp
index 5bdc0e68661..5e45d3fc30e 100644
--- a/src/devices/bus/abcbus/uni800.cpp
+++ b/src/devices/bus/abcbus/uni800.cpp
@@ -40,7 +40,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC_UNI800 = device_creator<abc_uni800_device>;
+DEFINE_DEVICE_TYPE(ABC_UNI800, abc_uni800_device, "uni800", "UNI-800")
//-------------------------------------------------
@@ -73,7 +73,7 @@ const tiny_rom_entry *abc_uni800_device::device_rom_region() const
//-------------------------------------------------
abc_uni800_device::abc_uni800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ABC_UNI800, "UNI-800", tag, owner, clock, "uni800", __FILE__),
+ : device_t(mconfig, ABC_UNI800, tag, owner, clock),
device_abcbus_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/abcbus/uni800.h b/src/devices/bus/abcbus/uni800.h
index f8754b07aec..c6eb9400d40 100644
--- a/src/devices/bus/abcbus/uni800.h
+++ b/src/devices/bus/abcbus/uni800.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Curt Coder
-#pragma once
+#ifndef MAME_BUS_ABCBUS_UNI800_H
+#define MAME_BUS_ABCBUS_UNI800_H
-#ifndef __ABC_UNI800__
-#define __ABC_UNI800__
+#pragma once
#include "abcbus.h"
@@ -36,8 +36,6 @@ protected:
// device type definition
-extern const device_type ABC_UNI800;
-
-
+DECLARE_DEVICE_TYPE(ABC_UNI800, abc_uni800_device)
-#endif
+#endif // MAME_BUS_ABCBUS_UNI800_H
diff --git a/src/devices/bus/abckb/abc77.cpp b/src/devices/bus/abckb/abc77.cpp
index 561085d0488..58236638d74 100644
--- a/src/devices/bus/abckb/abc77.cpp
+++ b/src/devices/bus/abckb/abc77.cpp
@@ -60,8 +60,8 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC77 = device_creator<abc77_device>;
-const device_type ABC55 = device_creator<abc55_device>;
+DEFINE_DEVICE_TYPE(ABC77, abc77_device, "abc77", "Luxor ABC 77")
+DEFINE_DEVICE_TYPE(ABC55, abc55_device, "abc55", "Luxor ABC 55")
//-------------------------------------------------
@@ -424,8 +424,8 @@ inline void abc77_device::key_down(int state)
// abc77_device - constructor
//-------------------------------------------------
-abc77_device::abc77_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+abc77_device::abc77_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
abc_keyboard_interface(mconfig, *this),
m_maincpu(*this, I8035_TAG),
m_watchdog(*this, "watchdog"),
@@ -440,10 +440,10 @@ abc77_device::abc77_device(const machine_config &mconfig, device_type type, cons
}
abc55_device::abc55_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- abc77_device(mconfig, ABC55, "Luxor ABC 55", tag, owner, clock, "abc55", __FILE__) { }
+ abc77_device(mconfig, ABC55, tag, owner, clock) { }
abc77_device::abc77_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- abc77_device(mconfig, ABC77, "Luxor ABC 77", tag, owner, clock, "abc77", __FILE__) { }
+ abc77_device(mconfig, ABC77, tag, owner, clock) { }
//-------------------------------------------------
diff --git a/src/devices/bus/abckb/abc77.h b/src/devices/bus/abckb/abc77.h
index 52114de522d..4d07bc1d2a4 100644
--- a/src/devices/bus/abckb/abc77.h
+++ b/src/devices/bus/abckb/abc77.h
@@ -26,12 +26,10 @@
// ======================> abc77_device
-class abc77_device : public device_t,
- public abc_keyboard_interface
+class abc77_device : public device_t, public abc_keyboard_interface
{
public:
// construction/destruction
- abc77_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
abc77_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -51,6 +49,8 @@ public:
DECLARE_WRITE8_MEMBER( j3_w );
protected:
+ abc77_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -99,8 +99,8 @@ public:
// device type definition
-extern const device_type ABC77;
-extern const device_type ABC55;
+DECLARE_DEVICE_TYPE(ABC77, abc77_device)
+DECLARE_DEVICE_TYPE(ABC55, abc55_device)
#endif // MAME_BUS_ABCKB_ABC77_H
diff --git a/src/devices/bus/abckb/abc800kb.cpp b/src/devices/bus/abckb/abc800kb.cpp
index 19962ff01f2..a158924ae9e 100644
--- a/src/devices/bus/abckb/abc800kb.cpp
+++ b/src/devices/bus/abckb/abc800kb.cpp
@@ -85,7 +85,7 @@ XR22-050-3B Pinout
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC800_KEYBOARD = device_creator<abc800_keyboard_device>;
+DEFINE_DEVICE_TYPE(ABC800_KEYBOARD, abc800_keyboard_device, "abc800kb", "ABC-800 Keyboard")
//-------------------------------------------------
@@ -325,7 +325,8 @@ inline void abc800_keyboard_device::key_down(int state)
// abc800_keyboard_device - constructor
//-------------------------------------------------
-abc800_keyboard_device::abc800_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ABC800_KEYBOARD, "ABC-800 Keyboard", tag, owner, clock, "abc800kb", __FILE__),
+abc800_keyboard_device::abc800_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, ABC800_KEYBOARD, tag, owner, clock),
abc_keyboard_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_x(*this, "X%u", 0),
diff --git a/src/devices/bus/abckb/abc800kb.h b/src/devices/bus/abckb/abc800kb.h
index d5dabb45ac5..e2bbd460cad 100644
--- a/src/devices/bus/abckb/abc800kb.h
+++ b/src/devices/bus/abckb/abc800kb.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCKB_ABC800KB_H
+#define MAME_BUS_ABCKB_ABC800KB_H
-#ifndef __ABC800_KEYBOARD__
-#define __ABC800_KEYBOARD__
+#pragma once
#include "cpu/mcs48/mcs48.h"
@@ -71,8 +71,6 @@ private:
// device type definition
-extern const device_type ABC800_KEYBOARD;
-
-
+DECLARE_DEVICE_TYPE(ABC800_KEYBOARD, abc800_keyboard_device)
-#endif
+#endif // MAME_BUS_ABCKB_ABC800KB_H
diff --git a/src/devices/bus/abckb/abc99.cpp b/src/devices/bus/abckb/abc99.cpp
index 0590046e6d0..51d78e85da7 100644
--- a/src/devices/bus/abckb/abc99.cpp
+++ b/src/devices/bus/abckb/abc99.cpp
@@ -71,7 +71,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ABC99 = device_creator<abc99_device>;
+DEFINE_DEVICE_TYPE(ABC99, abc99_device, "abc99", "Luxor ABC 99")
//-------------------------------------------------
@@ -479,7 +479,7 @@ inline void abc99_device::scan_mouse()
//-------------------------------------------------
abc99_device::abc99_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ABC99, "Luxor ABC 99", tag, owner, clock, "abc99", __FILE__),
+ device_t(mconfig, ABC99, tag, owner, clock),
abc_keyboard_interface(mconfig, *this), m_serial_timer(nullptr), m_mouse_timer(nullptr),
m_maincpu(*this, I8035_Z2_TAG),
m_mousecpu(*this, I8035_Z5_TAG),
diff --git a/src/devices/bus/abckb/abc99.h b/src/devices/bus/abckb/abc99.h
index ad421139e7d..b8ec975778c 100644
--- a/src/devices/bus/abckb/abc99.h
+++ b/src/devices/bus/abckb/abc99.h
@@ -107,7 +107,7 @@ private:
// device type definition
-extern const device_type ABC99;
+DECLARE_DEVICE_TYPE(ABC99, abc99_device)
#endif // MAME_BUS_ABCKB_ABC99_H
diff --git a/src/devices/bus/abckb/abckb.cpp b/src/devices/bus/abckb/abckb.cpp
index fd0478f54ef..3dfb80c04cc 100644
--- a/src/devices/bus/abckb/abckb.cpp
+++ b/src/devices/bus/abckb/abckb.cpp
@@ -16,7 +16,7 @@
//**************************************************************************
// device type definition
-const device_type ABC_KEYBOARD_PORT = device_creator<abc_keyboard_port_device>;
+DEFINE_DEVICE_TYPE(ABC_KEYBOARD_PORT, abc_keyboard_port_device, "abc_keyboard_port", "Luxor ABC keyboard port")
@@ -44,7 +44,7 @@ abc_keyboard_interface::abc_keyboard_interface(const machine_config &mconfig, de
//-------------------------------------------------
abc_keyboard_port_device::abc_keyboard_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ABC_KEYBOARD_PORT, "Luxor ABC keyboard port", tag, owner, clock, "abc_keyboard_port", __FILE__),
+ device_t(mconfig, ABC_KEYBOARD_PORT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_out_rx_handler(*this),
m_out_trxc_handler(*this),
diff --git a/src/devices/bus/abckb/abckb.h b/src/devices/bus/abckb/abckb.h
index e342bf1422f..302c5ef39fd 100644
--- a/src/devices/bus/abckb/abckb.h
+++ b/src/devices/bus/abckb/abckb.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ABCKB_ABCKB_H
+#define MAME_BUS_ABCKB_ABCKB_H
-#ifndef __ABC_KEYBOARD_PORT__
-#define __ABC_KEYBOARD_PORT__
+#pragma once
@@ -39,16 +39,15 @@
class abc_keyboard_interface;
-class abc_keyboard_port_device : public device_t,
- public device_slot_interface
+class abc_keyboard_port_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
abc_keyboard_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_rx_handler(device_t &device, _Object object) { return downcast<abc_keyboard_port_device &>(device).m_out_rx_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_out_trxc_handler(device_t &device, _Object object) { return downcast<abc_keyboard_port_device &>(device).m_out_trxc_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_out_keydown_handler(device_t &device, _Object object) { return downcast<abc_keyboard_port_device &>(device).m_out_keydown_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_out_rx_handler(device_t &device, Object &&cb) { return downcast<abc_keyboard_port_device &>(device).m_out_rx_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_trxc_handler(device_t &device, Object &&cb) { return downcast<abc_keyboard_port_device &>(device).m_out_trxc_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_keydown_handler(device_t &device, Object &&cb) { return downcast<abc_keyboard_port_device &>(device).m_out_keydown_handler.set_callback(std::forward<Object>(cb)); }
// computer interface
DECLARE_WRITE_LINE_MEMBER( txd_w );
@@ -74,23 +73,21 @@ protected:
class abc_keyboard_interface : public device_slot_card_interface
{
public:
+ virtual void txd_w(int state) { }
+
+protected:
// construction/destruction
abc_keyboard_interface(const machine_config &mconfig, device_t &device);
- virtual void txd_w(int state) { };
-
-protected:
abc_keyboard_port_device *m_slot;
};
// device type definition
-extern const device_type ABC_KEYBOARD_PORT;
+DECLARE_DEVICE_TYPE(ABC_KEYBOARD_PORT, abc_keyboard_port_device)
// supported devices
SLOT_INTERFACE_EXTERN( abc_keyboard_devices );
-
-
-#endif
+#endif // MAME_BUS_ABCKB_ABCKB_H
diff --git a/src/devices/bus/adam/adamlink.cpp b/src/devices/bus/adam/adamlink.cpp
index d4144d430e6..f4227273421 100644
--- a/src/devices/bus/adam/adamlink.cpp
+++ b/src/devices/bus/adam/adamlink.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ADAMLINK = device_creator<adamlink_device>;
+DEFINE_DEVICE_TYPE(ADAMLINK, adamlink_device, "adamlink", "AdamLink modem")
@@ -28,8 +28,8 @@ const device_type ADAMLINK = device_creator<adamlink_device>;
//-------------------------------------------------
adamlink_device::adamlink_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ADAMLINK, "AdamLink modem", tag, owner, clock, "adamlink", __FILE__),
- device_adam_expansion_slot_card_interface(mconfig, *this)
+ : device_t(mconfig, ADAMLINK, tag, owner, clock)
+ , device_adam_expansion_slot_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/adam/adamlink.h b/src/devices/bus/adam/adamlink.h
index 9897cd83dc1..42fd06490f9 100644
--- a/src/devices/bus/adam/adamlink.h
+++ b/src/devices/bus/adam/adamlink.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ADAM_ADAMLINK_H
+#define MAME_BUS_ADAM_ADAMLINK_H
-#ifndef __ADAMLINK__
-#define __ADAMLINK__
+#pragma once
#include "exp.h"
@@ -39,8 +39,6 @@ protected:
// device type definition
-extern const device_type ADAMLINK;
-
-
+DECLARE_DEVICE_TYPE(ADAMLINK, adamlink_device)
-#endif
+#endif // MAME_BUS_ADAM_ADAMLINK_H
diff --git a/src/devices/bus/adam/exp.cpp b/src/devices/bus/adam/exp.cpp
index a7ae7b5a11d..5c4b24481d7 100644
--- a/src/devices/bus/adam/exp.cpp
+++ b/src/devices/bus/adam/exp.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ADAM_EXPANSION_SLOT = device_creator<adam_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(ADAM_EXPANSION_SLOT, adam_expansion_slot_device, "adam_expansion_slot", "ADAM expansion slot")
@@ -53,7 +53,7 @@ device_adam_expansion_slot_card_interface::device_adam_expansion_slot_card_inter
//-------------------------------------------------
adam_expansion_slot_device::adam_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ADAM_EXPANSION_SLOT, "ADAM expansion slot", tag, owner, clock, "adam_expansion_slot", __FILE__),
+ device_t(mconfig, ADAM_EXPANSION_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
device_image_interface(mconfig, *this),
m_write_irq(*this), m_card(nullptr)
diff --git a/src/devices/bus/adam/exp.h b/src/devices/bus/adam/exp.h
index f0c5ee2d19b..6a856faa826 100644
--- a/src/devices/bus/adam/exp.h
+++ b/src/devices/bus/adam/exp.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ADAM_EXP_H
+#define MAME_BUS_ADAM_EXP_H
-#ifndef __ADAM_EXPANSION_SLOT__
-#define __ADAM_EXPANSION_SLOT__
+#pragma once
#include "softlist_dev.h"
@@ -55,7 +55,7 @@ public:
adam_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~adam_expansion_slot_device() { }
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<adam_expansion_slot_device &>(device).m_write_irq.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<adam_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t bd_r(address_space &space, offs_t offset, uint8_t data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2);
@@ -98,12 +98,10 @@ class device_adam_expansion_slot_card_interface : public device_slot_card_interf
{
friend class adam_expansion_slot_device;
-public:
+protected:
// construction/destruction
device_adam_expansion_slot_card_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_adam_expansion_slot_card_interface() { }
-protected:
// runtime
virtual uint8_t adam_bd_r(address_space &space, offs_t offset, uint8_t data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2) { return data; }
virtual void adam_bd_w(address_space &space, offs_t offset, uint8_t data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2) { }
@@ -115,13 +113,11 @@ protected:
// device type definition
-extern const device_type ADAM_EXPANSION_SLOT;
+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 );
-
-
-#endif
+#endif // MAME_BUS_ADAM_EXP_H
diff --git a/src/devices/bus/adam/ide.cpp b/src/devices/bus/adam/ide.cpp
index b49777663c4..d34fd71e7bb 100644
--- a/src/devices/bus/adam/ide.cpp
+++ b/src/devices/bus/adam/ide.cpp
@@ -35,7 +35,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ADAM_IDE = device_creator<powermate_ide_device>;
+DEFINE_DEVICE_TYPE(ADAM_IDE, powermate_ide_device, "adam_ide", "Powermate HP IDE")
//-------------------------------------------------
@@ -90,7 +90,7 @@ machine_config_constructor powermate_ide_device::device_mconfig_additions() cons
//-------------------------------------------------
powermate_ide_device::powermate_ide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ADAM_IDE, "Powermate HP IDE", tag, owner, clock, "adam_ide", __FILE__),
+ : device_t(mconfig, ADAM_IDE, tag, owner, clock),
device_adam_expansion_slot_card_interface(mconfig, *this),
m_ata(*this, ATA_TAG),
m_cent_data_out(*this, "cent_data_out"), m_ata_data(0)
diff --git a/src/devices/bus/adam/ide.h b/src/devices/bus/adam/ide.h
index 881129f6809..dd17f98ab03 100644
--- a/src/devices/bus/adam/ide.h
+++ b/src/devices/bus/adam/ide.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ADAM_IDE_H
+#define MAME_BUS_ADAM_IDE_H
-#ifndef __ADAM_IDE__
-#define __ADAM_IDE__
+#pragma once
#include "exp.h"
#include "machine/ataintf.h"
@@ -51,8 +51,6 @@ private:
// device type definition
-extern const device_type ADAM_IDE;
-
-
+DECLARE_DEVICE_TYPE(ADAM_IDE, powermate_ide_device)
-#endif
+#endif // MAME_BUS_ADAM_IDE_H
diff --git a/src/devices/bus/adam/ram.cpp b/src/devices/bus/adam/ram.cpp
index 5f627cd46fc..2a756000dc2 100644
--- a/src/devices/bus/adam/ram.cpp
+++ b/src/devices/bus/adam/ram.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ADAM_RAM = device_creator<adam_ram_expansion_device>;
+DEFINE_DEVICE_TYPE(ADAM_RAM, adam_ram_expansion_device, "adam_ram", "Adam 64KB RAM expansion")
@@ -28,7 +28,7 @@ const device_type ADAM_RAM = device_creator<adam_ram_expansion_device>;
//-------------------------------------------------
adam_ram_expansion_device::adam_ram_expansion_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ADAM_RAM, "Adam 64KB RAM expansion", tag, owner, clock, "adam_ram", __FILE__),
+ device_t(mconfig, ADAM_RAM, tag, owner, clock),
device_adam_expansion_slot_card_interface(mconfig, *this),
m_ram(*this, "ram")
{
diff --git a/src/devices/bus/adam/ram.h b/src/devices/bus/adam/ram.h
index 9dbcba75c03..80ec417f3cc 100644
--- a/src/devices/bus/adam/ram.h
+++ b/src/devices/bus/adam/ram.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ADAM_RAM_H
+#define MAME_BUS_ADAM_RAM_H
-#ifndef __ADAM_RAM__
-#define __ADAM_RAM__
+#pragma once
#include "exp.h"
@@ -42,8 +42,6 @@ private:
// device type definition
-extern const device_type ADAM_RAM;
-
-
+DECLARE_DEVICE_TYPE(ADAM_RAM, adam_ram_expansion_device)
-#endif
+#endif // MAME_BUS_ADAM_RAM_H
diff --git a/src/devices/bus/adamnet/adamnet.cpp b/src/devices/bus/adamnet/adamnet.cpp
index 17a38148196..832ea2309c4 100644
--- a/src/devices/bus/adamnet/adamnet.cpp
+++ b/src/devices/bus/adamnet/adamnet.cpp
@@ -15,8 +15,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ADAMNET = device_creator<adamnet_device>;
-const device_type ADAMNET_SLOT = device_creator<adamnet_slot_device>;
+DEFINE_DEVICE_TYPE(ADAMNET, adamnet_device, "adamnet", "ADAMnet bus")
+DEFINE_DEVICE_TYPE(ADAMNET_SLOT, adamnet_slot_device, "adamnet_slot", "ADAMnet slot")
@@ -53,7 +53,7 @@ device_adamnet_card_interface::~device_adamnet_card_interface()
// adamnet_slot_device - constructor
//-------------------------------------------------
adamnet_slot_device::adamnet_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ADAMNET_SLOT, "ADAMnet slot", tag, owner, clock, "adamnet_slot", __FILE__),
+ device_t(mconfig, ADAMNET_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this), m_bus(nullptr)
{
}
@@ -81,7 +81,7 @@ void adamnet_slot_device::device_start()
//-------------------------------------------------
adamnet_device::adamnet_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ADAMNET, "ADAMnet bus", tag, owner, clock, "adamnet", __FILE__),
+ device_t(mconfig, ADAMNET, tag, owner, clock),
m_txd(1),
m_reset(CLEAR_LINE)
{
diff --git a/src/devices/bus/adamnet/adamnet.h b/src/devices/bus/adamnet/adamnet.h
index 2fa5c724e22..76e42742f1c 100644
--- a/src/devices/bus/adamnet/adamnet.h
+++ b/src/devices/bus/adamnet/adamnet.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ADAMNET_ADAMNET_H
+#define MAME_BUS_ADAMNET_ADAMNET_H
-#ifndef __ADAMNET__
-#define __ADAMNET__
+#pragma once
@@ -107,24 +107,28 @@ protected:
class device_adamnet_card_interface : public device_slot_card_interface
{
+ friend class adamnet_device;
+
public:
// construction/destruction
- device_adamnet_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_adamnet_card_interface();
virtual void adamnet_reset_w(int state) = 0;
+protected:
+ device_adamnet_card_interface(const machine_config &mconfig, device_t &device);
+
adamnet_device *m_bus;
};
// device type definitions
-extern const device_type ADAMNET;
-extern const device_type ADAMNET_SLOT;
+DECLARE_DEVICE_TYPE(ADAMNET, adamnet_device)
+DECLARE_DEVICE_TYPE(ADAMNET_SLOT, adamnet_slot_device)
SLOT_INTERFACE_EXTERN( adamnet_devices );
-#endif
+#endif // MAME_BUS_ADAMNET_ADAMNET_H
diff --git a/src/devices/bus/adamnet/ddp.cpp b/src/devices/bus/adamnet/ddp.cpp
index 27bc97b3816..91b7127041d 100644
--- a/src/devices/bus/adamnet/ddp.cpp
+++ b/src/devices/bus/adamnet/ddp.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ADAM_DDP = device_creator<adam_digital_data_pack_device>;
+DEFINE_DEVICE_TYPE(ADAM_DDP, adam_digital_data_pack_device, "adam_ddp", "Adam Digital Data Pack")
//-------------------------------------------------
@@ -120,7 +120,7 @@ machine_config_constructor adam_digital_data_pack_device::device_mconfig_additio
//-------------------------------------------------
adam_digital_data_pack_device::adam_digital_data_pack_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ADAM_DDP, "Adam DDP", tag, owner, clock, "adam_ddp", __FILE__),
+ : device_t(mconfig, ADAM_DDP, tag, owner, clock),
device_adamnet_card_interface(mconfig, *this),
m_maincpu(*this, M6801_TAG),
m_ddp0(*this, "cassette"),
diff --git a/src/devices/bus/adamnet/ddp.h b/src/devices/bus/adamnet/ddp.h
index 72fd3a5929c..2ba54d7e006 100644
--- a/src/devices/bus/adamnet/ddp.h
+++ b/src/devices/bus/adamnet/ddp.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ADAMNET_DDP_H
+#define MAME_BUS_ADAMNET_DDP_H
-#ifndef __ADAM_DDP__
-#define __ADAM_DDP__
+#pragma once
#include "adamnet.h"
#include "cpu/m6800/m6800.h"
@@ -59,8 +59,6 @@ protected:
// device type definition
-extern const device_type ADAM_DDP;
-
-
+DECLARE_DEVICE_TYPE(ADAM_DDP, adam_digital_data_pack_device)
-#endif
+#endif // MAME_BUS_ADAMNET_DDP_H
diff --git a/src/devices/bus/adamnet/fdc.cpp b/src/devices/bus/adamnet/fdc.cpp
index c2cf39ec7f7..437492a814a 100644
--- a/src/devices/bus/adamnet/fdc.cpp
+++ b/src/devices/bus/adamnet/fdc.cpp
@@ -34,7 +34,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ADAM_FDC = device_creator<adam_fdc_device>;
+DEFINE_DEVICE_TYPE(ADAM_FDC, adam_fdc_device, "adam_fdc", "Adam FDC")
//-------------------------------------------------
@@ -81,16 +81,16 @@ static ADDRESS_MAP_START( adam_fdc_mem, AS_PROGRAM, 8, adam_fdc_device )
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(M6801_TAG, m6801_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0x0400, 0x07ff) AM_RAM AM_WRITEONLY AM_SHARE("ram")
- AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x3ff) AM_DEVREAD(WD2793_TAG, wd2793_t, status_r)
+ AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x3ff) AM_DEVREAD(WD2793_TAG, wd2793_device, status_r)
AM_RANGE(0x1400, 0x17ff) AM_RAM AM_READONLY AM_SHARE("ram")
- AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x3ff) AM_DEVWRITE(WD2793_TAG, wd2793_t, cmd_w)
- AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x3ff) AM_DEVREAD(WD2793_TAG, wd2793_t, track_r)
- AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x3ff) AM_DEVWRITE(WD2793_TAG, wd2793_t, track_w)
- AM_RANGE(0x4800, 0x4800) AM_MIRROR(0x3ff) AM_DEVREAD(WD2793_TAG, wd2793_t, sector_r)
- AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x3ff) AM_DEVWRITE(WD2793_TAG, wd2793_t, sector_w)
- AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x3ff) AM_DEVREAD(WD2793_TAG, wd2793_t, data_r)
+ AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x3ff) AM_DEVWRITE(WD2793_TAG, wd2793_device, cmd_w)
+ AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x3ff) AM_DEVREAD(WD2793_TAG, wd2793_device, track_r)
+ AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x3ff) AM_DEVWRITE(WD2793_TAG, wd2793_device, track_w)
+ AM_RANGE(0x4800, 0x4800) AM_MIRROR(0x3ff) AM_DEVREAD(WD2793_TAG, wd2793_device, sector_r)
+ AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x3ff) AM_DEVWRITE(WD2793_TAG, wd2793_device, sector_w)
+ AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x3ff) AM_DEVREAD(WD2793_TAG, wd2793_device, data_r)
AM_RANGE(0x6c00, 0x6fff) AM_READ(data_r)
- AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x3ff) AM_DEVWRITE(WD2793_TAG, wd2793_t, data_w)
+ AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x3ff) AM_DEVWRITE(WD2793_TAG, wd2793_device, data_w)
AM_RANGE(0x8000, 0x8fff) AM_MIRROR(0x7000) AM_ROM AM_REGION(M6801_TAG, 0)
ADDRESS_MAP_END
@@ -179,7 +179,7 @@ ioport_constructor adam_fdc_device::device_input_ports() const
//-------------------------------------------------
adam_fdc_device::adam_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ADAM_FDC, "Adam FDC", tag, owner, clock, "adam_fdc", __FILE__),
+ : device_t(mconfig, ADAM_FDC, tag, owner, clock),
device_adamnet_card_interface(mconfig, *this),
m_maincpu(*this, M6801_TAG),
m_fdc(*this, WD2793_TAG),
diff --git a/src/devices/bus/adamnet/fdc.h b/src/devices/bus/adamnet/fdc.h
index 48f17b29bb3..b966d938e33 100644
--- a/src/devices/bus/adamnet/fdc.h
+++ b/src/devices/bus/adamnet/fdc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ADAMNET_FDC_H
+#define MAME_BUS_ADAMNET_FDC_H
-#ifndef __ADAM_FDC__
-#define __ADAM_FDC__
+#pragma once
#include "adamnet.h"
#include "cpu/m6800/m6800.h"
@@ -53,7 +53,7 @@ protected:
virtual void adamnet_reset_w(int state) override;
required_device<cpu_device> m_maincpu;
- required_device<wd2793_t> m_fdc;
+ required_device<wd2793_device> m_fdc;
required_device<floppy_image_device> m_floppy0;
floppy_image_device *m_floppy;
required_shared_ptr<uint8_t> m_ram;
@@ -62,7 +62,7 @@ protected:
// device type definition
-extern const device_type ADAM_FDC;
+DECLARE_DEVICE_TYPE(ADAM_FDC, adam_fdc_device)
-#endif
+#endif // MAME_BUS_ADAMNET_FDC_H
diff --git a/src/devices/bus/adamnet/kb.cpp b/src/devices/bus/adamnet/kb.cpp
index 2f52e88a700..5bdf877e634 100644
--- a/src/devices/bus/adamnet/kb.cpp
+++ b/src/devices/bus/adamnet/kb.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ADAM_KB = device_creator<adam_keyboard_device>;
+DEFINE_DEVICE_TYPE(ADAM_KB, adam_keyboard_device, "adam_kb", "Adam keyboard")
//-------------------------------------------------
@@ -224,7 +224,7 @@ ioport_constructor adam_keyboard_device::device_input_ports() const
//-------------------------------------------------
adam_keyboard_device::adam_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ADAM_KB, "Adam keyboard", tag, owner, clock, "adam_kb", __FILE__),
+ device_t(mconfig, ADAM_KB, tag, owner, clock),
device_adamnet_card_interface(mconfig, *this),
m_maincpu(*this, M6801_TAG),
m_y(*this, "Y%u", 0),
diff --git a/src/devices/bus/adamnet/kb.h b/src/devices/bus/adamnet/kb.h
index bec487fe260..e438ec17b68 100644
--- a/src/devices/bus/adamnet/kb.h
+++ b/src/devices/bus/adamnet/kb.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ADAMNET_KB_H
+#define MAME_BUS_ADAMNET_KB_H
-#ifndef __ADAM_KB__
-#define __ADAM_KB__
+#pragma once
#include "adamnet.h"
#include "cpu/m6800/m6800.h"
@@ -58,8 +58,8 @@ protected:
// device type definition
-extern const device_type ADAM_KB;
+DECLARE_DEVICE_TYPE(ADAM_KB, adam_keyboard_device)
-#endif
+#endif // MAME_BUS_ADAMNET_KB_H
diff --git a/src/devices/bus/adamnet/printer.cpp b/src/devices/bus/adamnet/printer.cpp
index 6c2a609c1e5..d09f4f1d845 100644
--- a/src/devices/bus/adamnet/printer.cpp
+++ b/src/devices/bus/adamnet/printer.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ADAM_PRN = device_creator<adam_printer_device>;
+DEFINE_DEVICE_TYPE(ADAM_PRN, adam_printer_device, "adam_prn", "Adam printer")
//-------------------------------------------------
@@ -102,7 +102,7 @@ machine_config_constructor adam_printer_device::device_mconfig_additions() const
//-------------------------------------------------
adam_printer_device::adam_printer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ADAM_PRN, "Adam printer", tag, owner, clock, "adam_prn", __FILE__),
+ : device_t(mconfig, ADAM_PRN, tag, owner, clock),
device_adamnet_card_interface(mconfig, *this),
m_maincpu(*this, M6801_TAG)
{
diff --git a/src/devices/bus/adamnet/printer.h b/src/devices/bus/adamnet/printer.h
index 7c320b5840a..543cbfdded6 100644
--- a/src/devices/bus/adamnet/printer.h
+++ b/src/devices/bus/adamnet/printer.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ADAMNET_PRINTER_H
+#define MAME_BUS_ADAMNET_PRINTER_H
-#ifndef __ADAM_PRN__
-#define __ADAM_PRN__
+#pragma once
#include "adamnet.h"
#include "cpu/m6800/m6800.h"
@@ -53,8 +53,6 @@ protected:
// device type definition
-extern const device_type ADAM_PRN;
-
-
+DECLARE_DEVICE_TYPE(ADAM_PRN, adam_printer_device)
-#endif
+#endif // MAME_BUS_ADAMNET_PRINTER_H
diff --git a/src/devices/bus/adamnet/spi.cpp b/src/devices/bus/adamnet/spi.cpp
index 1fe2fbaf6cf..ca50e6def20 100644
--- a/src/devices/bus/adamnet/spi.cpp
+++ b/src/devices/bus/adamnet/spi.cpp
@@ -26,7 +26,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ADAM_SPI = device_creator<adam_spi_device>;
+DEFINE_DEVICE_TYPE(ADAM_SPI, adam_spi_device, "adam_spi", "Adam SPI")
//-------------------------------------------------
@@ -111,7 +111,7 @@ machine_config_constructor adam_spi_device::device_mconfig_additions() const
//-------------------------------------------------
adam_spi_device::adam_spi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ADAM_SPI, "Adam SPI", tag, owner, clock, "adam_spi", __FILE__),
+ : device_t(mconfig, ADAM_SPI, tag, owner, clock),
device_adamnet_card_interface(mconfig, *this),
m_maincpu(*this, M6801_TAG)
{
diff --git a/src/devices/bus/adamnet/spi.h b/src/devices/bus/adamnet/spi.h
index fad035fb686..01e86d5c67f 100644
--- a/src/devices/bus/adamnet/spi.h
+++ b/src/devices/bus/adamnet/spi.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ADAMNET_SPI_H
+#define MAME_BUS_ADAMNET_SPI_H
-#ifndef __ADAM_SPI__
-#define __ADAM_SPI__
+#pragma once
#include "adamnet.h"
#include "bus/centronics/ctronics.h"
@@ -52,8 +52,6 @@ protected:
// device type definition
-extern const device_type ADAM_SPI;
-
-
+DECLARE_DEVICE_TYPE(ADAM_SPI, adam_spi_device)
-#endif
+#endif // MAME_BUS_ADAMNET_SPI_H
diff --git a/src/devices/bus/amiga/keyboard/a1200.cpp b/src/devices/bus/amiga/keyboard/a1200.cpp
index 3b0278c62cf..e845d8ff582 100644
--- a/src/devices/bus/amiga/keyboard/a1200.cpp
+++ b/src/devices/bus/amiga/keyboard/a1200.cpp
@@ -23,7 +23,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-device_type const A1200_KBD = device_creator<bus::amiga::keyboard::a1200_kbd_device>;
+DEFINE_DEVICE_TYPE_NS(A1200_KBD, bus::amiga::keyboard, a1200_kbd_device, "a1200kbd_rb", "Amiga 1200 Keyboard Rev B")
@@ -74,7 +74,7 @@ ROM_END
//**************************************************************************
a1200_kbd_device::a1200_kbd_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, A1200_KBD, "Amiga 1200 Keyboard Rev B", tag, owner, clock, "a1200kbd_rb", __FILE__)
+ : device_t(mconfig, A1200_KBD, tag, owner, clock)
, device_amiga_keyboard_interface(mconfig, *this)
, m_rows(*this, "ROW%u", 0)
, m_mpu(*this, "mpu")
diff --git a/src/devices/bus/amiga/keyboard/a1200.h b/src/devices/bus/amiga/keyboard/a1200.h
index f29689b18e3..3927657174d 100644
--- a/src/devices/bus/amiga/keyboard/a1200.h
+++ b/src/devices/bus/amiga/keyboard/a1200.h
@@ -1,26 +1,19 @@
// license:BSD-3-Clause
-// copyright-holders: Vas Crabb
+// copyright-holders:Vas Crabb
/***************************************************************************
Amiga 1200 Keyboard
***************************************************************************/
-#ifndef DEVICES_BUS_AMIGA_KEYBOARD_A1200_H
-#define DEVICES_BUS_AMIGA_KEYBOARD_A1200_H
+#ifndef MAME_BUS_AMIGA_KEYBOARD_A1200_H
+#define MAME_BUS_AMIGA_KEYBOARD_A1200_H
#pragma once
#include "keyboard.h"
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-extern device_type const A1200_KBD;
-
-
namespace bus { namespace amiga { namespace keyboard {
//**************************************************************************
@@ -63,4 +56,11 @@ private:
} } } // namespace bus::amiga::keyboard
-#endif // DEVICES_BUS_AMIGA_KEYBOARD_A1200_H
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+DECLARE_DEVICE_TYPE_NS(A1200_KBD, bus::amiga::keyboard, a1200_kbd_device)
+
+#endif // MAME_BUS_AMIGA_KEYBOARD_A1200_H
diff --git a/src/devices/bus/amiga/keyboard/a500.cpp b/src/devices/bus/amiga/keyboard/a500.cpp
index b1cd982a780..f00f0970b24 100644
--- a/src/devices/bus/amiga/keyboard/a500.cpp
+++ b/src/devices/bus/amiga/keyboard/a500.cpp
@@ -20,16 +20,16 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type A500_KBD_US = device_creator<bus::amiga::keyboard::a500_kbd_us_device>;
-const device_type A500_KBD_DE = device_creator<bus::amiga::keyboard::a500_kbd_de_device>;
-const device_type A500_KBD_FR = device_creator<bus::amiga::keyboard::a500_kbd_fr_device>;
-const device_type A500_KBD_IT = device_creator<bus::amiga::keyboard::a500_kbd_it_device>;
-const device_type A500_KBD_SE = device_creator<bus::amiga::keyboard::a500_kbd_se_device>;
-const device_type A500_KBD_ES = device_creator<bus::amiga::keyboard::a500_kbd_es_device>;
-const device_type A500_KBD_DK = device_creator<bus::amiga::keyboard::a500_kbd_dk_device>;
-const device_type A500_KBD_CH = device_creator<bus::amiga::keyboard::a500_kbd_ch_device>;
-const device_type A500_KBD_NO = device_creator<bus::amiga::keyboard::a500_kbd_no_device>;
-const device_type A500_KBD_GB = device_creator<bus::amiga::keyboard::a500_kbd_gb_device>;
+DEFINE_DEVICE_TYPE_NS(A500_KBD_US, bus::amiga::keyboard, a500_kbd_us_device, "a500_kbd_us", "Amiga 500 Keyboard (U.S./Canada)")
+DEFINE_DEVICE_TYPE_NS(A500_KBD_DE, bus::amiga::keyboard, a500_kbd_de_device, "a500_kbd_de", "Amiga 500 Keyboard (Germany/Austria)")
+DEFINE_DEVICE_TYPE_NS(A500_KBD_FR, bus::amiga::keyboard, a500_kbd_fr_device, "a500_kbd_fr", "Amiga 500 Keyboard (France/Belgium)")
+DEFINE_DEVICE_TYPE_NS(A500_KBD_IT, bus::amiga::keyboard, a500_kbd_it_device, "a500_kbd_it", "Amiga 500 Keyboard (Italy)")
+DEFINE_DEVICE_TYPE_NS(A500_KBD_SE, bus::amiga::keyboard, a500_kbd_se_device, "a500_kbd_se", "Amiga 500 Keyboard (Sweden)")
+DEFINE_DEVICE_TYPE_NS(A500_KBD_ES, bus::amiga::keyboard, a500_kbd_es_device, "a500_kbd_es", "Amiga 500 Keyboard (Spain)")
+DEFINE_DEVICE_TYPE_NS(A500_KBD_DK, bus::amiga::keyboard, a500_kbd_dk_device, "a500_kbd_dk", "Amiga 500 Keyboard (Denmark)")
+DEFINE_DEVICE_TYPE_NS(A500_KBD_CH, bus::amiga::keyboard, a500_kbd_ch_device, "a500_kbd_ch", "Amiga 500 Keyboard (Switzerland)")
+DEFINE_DEVICE_TYPE_NS(A500_KBD_NO, bus::amiga::keyboard, a500_kbd_no_device, "a500_kbd_no", "Amiga 500 Keyboard (Norway)")
+DEFINE_DEVICE_TYPE_NS(A500_KBD_GB, bus::amiga::keyboard, a500_kbd_gb_device, "a500_kbd_gb", "Amiga 500 Keyboard (UK)")
namespace bus { namespace amiga { namespace keyboard {
@@ -172,11 +172,8 @@ a500_kbd_device::a500_kbd_device(
const char *tag,
device_t *owner,
uint32_t clock,
- device_type type,
- const char *name,
- const char *shortname,
- const char *file) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, file),
+ device_type type) :
+ device_t(mconfig, type, tag, owner, clock),
device_amiga_keyboard_interface(mconfig, *this),
m_mpu(*this, "ic1"),
m_special(*this, "special"),
@@ -197,52 +194,52 @@ a500_kbd_device::a500_kbd_device(
a500_kbd_us_device::a500_kbd_us_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_US, "Amiga 500 Keyboard (U.S./Canada)", "a500_kbd_us", __FILE__)
+ a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_US)
{
}
a500_kbd_de_device::a500_kbd_de_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_DE, "Amiga 500 Keyboard (Germany/Austria)", "a500_kbd_de", __FILE__)
+ a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_DE)
{
}
a500_kbd_fr_device::a500_kbd_fr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_FR, "Amiga 500 Keyboard (France/Belgium)", "a500_kbd_fr", __FILE__)
+ a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_FR)
{
}
a500_kbd_it_device::a500_kbd_it_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_IT, "Amiga 500 Keyboard (Italy)", "a500_kbd_it", __FILE__)
+ a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_IT)
{
}
a500_kbd_se_device::a500_kbd_se_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_SE, "Amiga 500 Keyboard (Sweden/Finland)", "a500_kbd_se", __FILE__)
+ a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_SE)
{
}
a500_kbd_es_device::a500_kbd_es_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_ES, "Amiga 500 Keyboard (Spain)", "a500_kbd_es", __FILE__)
+ a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_ES)
{
}
a500_kbd_dk_device::a500_kbd_dk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_DK, "Amiga 500 Keyboard (Denmark)", "a500_kbd_dk", __FILE__)
+ a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_DK)
{
}
a500_kbd_ch_device::a500_kbd_ch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_CH, "Amiga 500 Keyboard (Switzerland)", "a500_kbd_ch", __FILE__)
+ a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_CH)
{
}
a500_kbd_no_device::a500_kbd_no_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_NO, "Amiga 500 Keyboard (Norway)", "a500_kbd_no", __FILE__)
+ a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_NO)
{
}
a500_kbd_gb_device::a500_kbd_gb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_GB, "Amiga 500 Keyboard (UK)", "a500_kbd_gb", __FILE__)
+ a500_kbd_device(mconfig, tag, owner, clock, A500_KBD_GB)
{
}
diff --git a/src/devices/bus/amiga/keyboard/a500.h b/src/devices/bus/amiga/keyboard/a500.h
index 6716622a1e9..3d1a0fb47c9 100644
--- a/src/devices/bus/amiga/keyboard/a500.h
+++ b/src/devices/bus/amiga/keyboard/a500.h
@@ -27,8 +27,8 @@
***************************************************************************/
-#ifndef DEVICES_BUS_AMIGA_KEYBOARD_A500_H
-#define DEVICES_BUS_AMIGA_KEYBOARD_A500_H
+#ifndef MAME_BUS_AMIGA_KEYBOARD_A500_H
+#define MAME_BUS_AMIGA_KEYBOARD_A500_H
#pragma once
@@ -36,19 +36,6 @@
#include "cpu/m6502/m6502.h"
-// device type definition
-extern const device_type A500_KBD_US;
-extern const device_type A500_KBD_DE;
-extern const device_type A500_KBD_FR;
-extern const device_type A500_KBD_IT;
-extern const device_type A500_KBD_SE;
-extern const device_type A500_KBD_ES;
-extern const device_type A500_KBD_DK;
-extern const device_type A500_KBD_CH;
-extern const device_type A500_KBD_NO;
-extern const device_type A500_KBD_GB;
-
-
namespace bus { namespace amiga { namespace keyboard {
//**************************************************************************
@@ -85,10 +72,7 @@ protected:
const char *tag,
device_t *owner,
uint32_t clock,
- device_type type,
- const char *name,
- const char *shortname,
- const char *file);
+ device_type type);
// device-level overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -250,4 +234,17 @@ protected:
} } } // namespace bus::amiga::keyboard
-#endif // DEVICES_BUS_AMIGA_KEYBOARD_A500_H
+
+// device type definition
+DECLARE_DEVICE_TYPE_NS(A500_KBD_US, bus::amiga::keyboard, a500_kbd_us_device)
+DECLARE_DEVICE_TYPE_NS(A500_KBD_DE, bus::amiga::keyboard, a500_kbd_de_device)
+DECLARE_DEVICE_TYPE_NS(A500_KBD_FR, bus::amiga::keyboard, a500_kbd_fr_device)
+DECLARE_DEVICE_TYPE_NS(A500_KBD_IT, bus::amiga::keyboard, a500_kbd_it_device)
+DECLARE_DEVICE_TYPE_NS(A500_KBD_SE, bus::amiga::keyboard, a500_kbd_se_device)
+DECLARE_DEVICE_TYPE_NS(A500_KBD_ES, bus::amiga::keyboard, a500_kbd_es_device)
+DECLARE_DEVICE_TYPE_NS(A500_KBD_DK, bus::amiga::keyboard, a500_kbd_dk_device)
+DECLARE_DEVICE_TYPE_NS(A500_KBD_CH, bus::amiga::keyboard, a500_kbd_ch_device)
+DECLARE_DEVICE_TYPE_NS(A500_KBD_NO, bus::amiga::keyboard, a500_kbd_no_device)
+DECLARE_DEVICE_TYPE_NS(A500_KBD_GB, bus::amiga::keyboard, a500_kbd_gb_device)
+
+#endif // MAME_BUS_AMIGA_KEYBOARD_A500_H
diff --git a/src/devices/bus/amiga/keyboard/keyboard.cpp b/src/devices/bus/amiga/keyboard/keyboard.cpp
index 169fbb05448..8d617350296 100644
--- a/src/devices/bus/amiga/keyboard/keyboard.cpp
+++ b/src/devices/bus/amiga/keyboard/keyboard.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type AMIGA_KEYBOARD_INTERFACE = device_creator<amiga_keyboard_bus_device>;
+DEFINE_DEVICE_TYPE(AMIGA_KEYBOARD_INTERFACE, amiga_keyboard_bus_device, "amiga_kbd", "Amiga Keyboard Interface")
//**************************************************************************
@@ -28,7 +28,7 @@ const device_type AMIGA_KEYBOARD_INTERFACE = device_creator<amiga_keyboard_bus_d
//-------------------------------------------------
amiga_keyboard_bus_device::amiga_keyboard_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, AMIGA_KEYBOARD_INTERFACE, "Amiga Keyboard Interface", tag, owner, clock, "amiga_kbd", __FILE__),
+ device_t(mconfig, AMIGA_KEYBOARD_INTERFACE, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_kbd(nullptr),
m_kclk_handler(*this), m_kdat_handler(*this), m_krst_handler(*this)
diff --git a/src/devices/bus/amiga/keyboard/keyboard.h b/src/devices/bus/amiga/keyboard/keyboard.h
index 39625228c3f..4066ebd9d53 100644
--- a/src/devices/bus/amiga/keyboard/keyboard.h
+++ b/src/devices/bus/amiga/keyboard/keyboard.h
@@ -12,10 +12,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_AMIGA_KEYBOARD_H
+#define MAME_BUS_AMIGA_KEYBOARD_H
-#ifndef DEVICES_BUS_AMIGA_KEYBOARD_H
-#define DEVICES_BUS_AMIGA_KEYBOARD_H
+#pragma once
@@ -53,14 +53,14 @@ public:
virtual ~amiga_keyboard_bus_device();
// callbacks
- template<class _Object> static devcb_base &set_kclk_handler(device_t &device, _Object object)
- { return downcast<amiga_keyboard_bus_device &>(device).m_kclk_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_kclk_handler(device_t &device, Object &&cb)
+ { return downcast<amiga_keyboard_bus_device &>(device).m_kclk_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_kdat_handler(device_t &device, _Object object)
- { return downcast<amiga_keyboard_bus_device &>(device).m_kdat_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_kdat_handler(device_t &device, Object &&cb)
+ { return downcast<amiga_keyboard_bus_device &>(device).m_kdat_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_krst_handler(device_t &device, _Object object)
- { return downcast<amiga_keyboard_bus_device &>(device).m_krst_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_krst_handler(device_t &device, Object &&cb)
+ { return downcast<amiga_keyboard_bus_device &>(device).m_krst_handler.set_callback(std::forward<Object>(cb)); }
// called from keyboard
DECLARE_WRITE_LINE_MEMBER(kclk_w) { m_kclk_handler(state); }
@@ -89,19 +89,20 @@ class device_amiga_keyboard_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_amiga_keyboard_interface(const machine_config &mconfig, device_t &device);
virtual ~device_amiga_keyboard_interface();
virtual DECLARE_WRITE_LINE_MEMBER(kdat_w) = 0;
protected:
+ device_amiga_keyboard_interface(const machine_config &mconfig, device_t &device);
+
amiga_keyboard_bus_device *m_host;
};
// device type definition
-extern const device_type AMIGA_KEYBOARD_INTERFACE;
+DECLARE_DEVICE_TYPE(AMIGA_KEYBOARD_INTERFACE, amiga_keyboard_bus_device)
// supported devices
SLOT_INTERFACE_EXTERN( amiga_keyboard_devices );
-#endif // DEVICES_BUS_AMIGA_KEYBOARD_H
+#endif // MAME_BUS_AMIGA_KEYBOARD_H
diff --git a/src/devices/bus/amiga/keyboard/matrix.h b/src/devices/bus/amiga/keyboard/matrix.h
index aafc2942ce4..9bfa801f9c8 100644
--- a/src/devices/bus/amiga/keyboard/matrix.h
+++ b/src/devices/bus/amiga/keyboard/matrix.h
@@ -6,8 +6,8 @@
***************************************************************************/
-#ifndef DEVICES_BUS_AMIGA_KEYBOARD_MATRIX_H
-#define DEVICES_BUS_AMIGA_KEYBOARD_MATRIX_H
+#ifndef MAME_BUS_AMIGA_KEYBOARD_MATRIX_H
+#define MAME_BUS_AMIGA_KEYBOARD_MATRIX_H
#pragma once
@@ -26,4 +26,4 @@ INPUT_PORTS_EXTERN(matrix_gb);
} } } // namespace bus::amiga::keyboard
-#endif // DEVICES_BUS_AMIGA_KEYBOARD_MATRIX_H
+#endif // MAME_BUS_AMIGA_KEYBOARD_MATRIX_H
diff --git a/src/devices/bus/amiga/zorro/a2052.cpp b/src/devices/bus/amiga/zorro/a2052.cpp
index d0f777b333b..f2cef15b32e 100644
--- a/src/devices/bus/amiga/zorro/a2052.cpp
+++ b/src/devices/bus/amiga/zorro/a2052.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type A2052 = device_creator<a2052_device>;
+DEFINE_DEVICE_TYPE(A2052, a2052_device, "a2052", "CBM A2052 Fast Memory")
//-------------------------------------------------
// input_ports - device-specific input ports
@@ -52,7 +52,7 @@ ioport_constructor a2052_device::device_input_ports() const
//-------------------------------------------------
a2052_device::a2052_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2052, "CBM A2052 Fast Memory", tag, owner, clock, "a2052", __FILE__),
+ device_t(mconfig, A2052, tag, owner, clock),
device_zorro2_card_interface(mconfig, *this),
m_config(*this, "config")
{
diff --git a/src/devices/bus/amiga/zorro/a2052.h b/src/devices/bus/amiga/zorro/a2052.h
index 2928420996a..255b459767d 100644
--- a/src/devices/bus/amiga/zorro/a2052.h
+++ b/src/devices/bus/amiga/zorro/a2052.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_AMIGA_ZORRO_A2052_H
+#define MAME_BUS_AMIGA_ZORRO_A2052_H
-#ifndef __A2052_H__
-#define __A2052_H__
+#pragma once
#include "zorro.h"
#include "machine/autoconfig.h"
@@ -45,6 +45,6 @@ private:
};
// device type definition
-extern const device_type A2052;
+DECLARE_DEVICE_TYPE(A2052, a2052_device)
-#endif
+#endif // MAME_BUS_AMIGA_ZORRO_A2052_H
diff --git a/src/devices/bus/amiga/zorro/a2232.cpp b/src/devices/bus/amiga/zorro/a2232.cpp
index 19a8140f609..39521ee8cdc 100644
--- a/src/devices/bus/amiga/zorro/a2232.cpp
+++ b/src/devices/bus/amiga/zorro/a2232.cpp
@@ -24,7 +24,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type A2232 = device_creator<a2232_device>;
+DEFINE_DEVICE_TYPE(A2232, a2232_device, "a2232", "CBM A2232 Serial Card")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -153,7 +153,7 @@ machine_config_constructor a2232_device::device_mconfig_additions() const
//-------------------------------------------------
a2232_device::a2232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, A2232, "CBM A2232 Serial Card", tag, owner, clock, "a2232", __FILE__),
+ device_t(mconfig, A2232, tag, owner, clock),
device_zorro2_card_interface(mconfig, *this),
m_iocpu(*this, "iocpu"),
m_acia_0(*this, "acia_0"),
diff --git a/src/devices/bus/amiga/zorro/a2232.h b/src/devices/bus/amiga/zorro/a2232.h
index 2c1eb8c46ee..ca08ad3b152 100644
--- a/src/devices/bus/amiga/zorro/a2232.h
+++ b/src/devices/bus/amiga/zorro/a2232.h
@@ -10,10 +10,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_AMIGA_ZORRO_A2232_H
+#define MAME_BUS_AMIGA_ZORRO_A2232_H
-#ifndef __A2232_H__
-#define __A2232_H__
+#pragma once
#include "zorro.h"
#include "machine/autoconfig.h"
@@ -145,6 +145,6 @@ private:
};
// device type definition
-extern const device_type A2232;
+DECLARE_DEVICE_TYPE(A2232, a2232_device)
-#endif // __A2232_H__
+#endif // MAME_BUS_AMIGA_ZORRO_A2232_H
diff --git a/src/devices/bus/amiga/zorro/a590.cpp b/src/devices/bus/amiga/zorro/a590.cpp
index 09c9a3cf73d..dae30858cd5 100644
--- a/src/devices/bus/amiga/zorro/a590.cpp
+++ b/src/devices/bus/amiga/zorro/a590.cpp
@@ -18,8 +18,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type A590 = device_creator<a590_device>;
-const device_type A2091 = device_creator<a2091_device>;
+DEFINE_DEVICE_TYPE(A590, a590_device, "a590", "CBM A590 HD Controller")
+DEFINE_DEVICE_TYPE(A2091, a2091_device, "a2091", "CBM A2091 HD Controller")
//-------------------------------------------------
// input_ports - device-specific input ports
@@ -192,9 +192,8 @@ const tiny_rom_entry *dmac_hdc_device::device_rom_region() const
// dmac_hdc_device - constructor
//-------------------------------------------------
-dmac_hdc_device::dmac_hdc_device(const machine_config &mconfig, device_type type, const char *tag,
- device_t *owner, uint32_t clock, const char *name, const char *shortname) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+dmac_hdc_device::dmac_hdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
m_int6(false),
m_dmac(*this, "dmac"),
m_wdc(*this, "wd33c93")
@@ -202,7 +201,7 @@ dmac_hdc_device::dmac_hdc_device(const machine_config &mconfig, device_type type
}
a590_device::a590_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- dmac_hdc_device(mconfig, A590, tag, owner, clock, "CBM A590 HD Controller", "a590"),
+ dmac_hdc_device(mconfig, A590, tag, owner, clock),
device_exp_card_interface(mconfig, *this),
m_dips(*this, "dips"),
m_jp1(*this, "jp1"),
@@ -212,7 +211,7 @@ a590_device::a590_device(const machine_config &mconfig, const char *tag, device_
}
a2091_device::a2091_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- dmac_hdc_device(mconfig, A2091, tag, owner, clock, "CBM A2091 HD Controller", "a2091"),
+ dmac_hdc_device(mconfig, A2091, tag, owner, clock),
device_zorro2_card_interface(mconfig, *this),
m_jp1(*this, "jp1"),
m_jp2(*this, "jp2"),
diff --git a/src/devices/bus/amiga/zorro/a590.h b/src/devices/bus/amiga/zorro/a590.h
index 0e71423b8b7..7fe27c33d60 100644
--- a/src/devices/bus/amiga/zorro/a590.h
+++ b/src/devices/bus/amiga/zorro/a590.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_AMIGA_ZORRO_A590_H
+#define MAME_BUS_AMIGA_ZORRO_A590_H
-#ifndef __A590_H__
-#define __A590_H__
+#pragma once
#include "zorro.h"
#include "machine/dmac.h"
@@ -27,10 +27,6 @@
class dmac_hdc_device : public device_t
{
public:
- // construction/destruction
- dmac_hdc_device(const machine_config &mconfig, device_type type, const char *tag,
- device_t *owner, uint32_t clock, const char *name, const char *shortname);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -42,6 +38,9 @@ public:
DECLARE_WRITE_LINE_MEMBER( scsi_irq_w );
protected:
+ // construction/destruction
+ dmac_hdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -58,7 +57,7 @@ protected:
bool m_int6;
// sub-devices
- required_device<dmac_device> m_dmac;
+ required_device<amiga_dmac_device> m_dmac;
required_device<wd33c93_device> m_wdc;
std::vector<uint8_t> m_ram;
@@ -127,7 +126,7 @@ private:
};
// device type definition
-extern const device_type A590;
-extern const device_type A2091;
+DECLARE_DEVICE_TYPE(A590, a590_device)
+DECLARE_DEVICE_TYPE(A2091, a2091_device)
-#endif
+#endif // MAME_BUS_AMIGA_ZORRO_A590_H
diff --git a/src/devices/bus/amiga/zorro/action_replay.cpp b/src/devices/bus/amiga/zorro/action_replay.cpp
index e60dad68fdf..5f8641bb9bb 100644
--- a/src/devices/bus/amiga/zorro/action_replay.cpp
+++ b/src/devices/bus/amiga/zorro/action_replay.cpp
@@ -22,9 +22,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ACTION_REPLAY_MK1 = device_creator<action_replay_mk1_device>;
-const device_type ACTION_REPLAY_MK2 = device_creator<action_replay_mk2_device>;
-const device_type ACTION_REPLAY_MK3 = device_creator<action_replay_mk3_device>;
+DEFINE_DEVICE_TYPE(ACTION_REPLAY_MK1, action_replay_mk1_device, "amiga_ar1", "Datel Action Replay MK-I")
+DEFINE_DEVICE_TYPE(ACTION_REPLAY_MK2, action_replay_mk2_device, "amiga_ar2", "Datel Action Replay MK-II")
+DEFINE_DEVICE_TYPE(ACTION_REPLAY_MK3, action_replay_mk3_device, "amiga_ar3", "Datel Action Replay MK-III")
//-------------------------------------------------
// input_ports - device-specific input ports
@@ -98,26 +98,25 @@ const tiny_rom_entry *action_replay_mk3_device::device_rom_region() const
// action_replay_device - constructor
//-------------------------------------------------
-action_replay_device::action_replay_device(const machine_config &mconfig, device_type type, const char *tag,
- device_t *owner, uint32_t clock, const char *name, const char *shortname) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+action_replay_device::action_replay_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_exp_card_interface(mconfig, *this),
m_button(*this, "freeze")
{
}
action_replay_mk1_device::action_replay_mk1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- action_replay_device(mconfig, ACTION_REPLAY_MK1, tag, owner, clock, "Datel Action Replay MK-I", "amiga_ar1")
+ action_replay_device(mconfig, ACTION_REPLAY_MK1, tag, owner, clock)
{
}
action_replay_mk2_device::action_replay_mk2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- action_replay_device(mconfig, ACTION_REPLAY_MK2, tag, owner, clock, "Datel Action Replay MK-II", "amiga_ar2")
+ action_replay_device(mconfig, ACTION_REPLAY_MK2, tag, owner, clock)
{
}
action_replay_mk3_device::action_replay_mk3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- action_replay_device(mconfig, ACTION_REPLAY_MK3, tag, owner, clock, "Datel Action Replay MK-III", "amiga_ar3")
+ action_replay_device(mconfig, ACTION_REPLAY_MK3, tag, owner, clock)
{
}
diff --git a/src/devices/bus/amiga/zorro/action_replay.h b/src/devices/bus/amiga/zorro/action_replay.h
index 9931cdadaad..5dd1e347049 100644
--- a/src/devices/bus/amiga/zorro/action_replay.h
+++ b/src/devices/bus/amiga/zorro/action_replay.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_AMIGA_ZORRO_ACTION_REPLAY_H
+#define MAME_BUS_AMIGA_ZORRO_ACTION_REPLAY_H
-#ifndef __ACTION_REPLAY_H__
-#define __ACTION_REPLAY_H__
+#pragma once
#include "zorro.h"
@@ -25,16 +25,15 @@
class action_replay_device : public device_t, public device_exp_card_interface
{
public:
- // construction/destruction
- action_replay_device(const machine_config &mconfig, device_type type, const char *tag,
- device_t *owner, uint32_t clock, const char *name, const char *shortname);
-
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
DECLARE_INPUT_CHANGED_MEMBER( freeze );
protected:
+ // construction/destruction
+ action_replay_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -74,8 +73,8 @@ public:
};
// device type definition
-extern const device_type ACTION_REPLAY_MK1;
-extern const device_type ACTION_REPLAY_MK2;
-extern const device_type ACTION_REPLAY_MK3;
+DECLARE_DEVICE_TYPE(ACTION_REPLAY_MK1, action_replay_mk1_device)
+DECLARE_DEVICE_TYPE(ACTION_REPLAY_MK2, action_replay_mk2_device)
+DECLARE_DEVICE_TYPE(ACTION_REPLAY_MK3, action_replay_mk3_device)
-#endif
+#endif // MAME_BUS_AMIGA_ZORRO_ACTION_REPLAY_H
diff --git a/src/devices/bus/amiga/zorro/buddha.cpp b/src/devices/bus/amiga/zorro/buddha.cpp
index cc363a00d5d..46dfdb6bade 100644
--- a/src/devices/bus/amiga/zorro/buddha.cpp
+++ b/src/devices/bus/amiga/zorro/buddha.cpp
@@ -36,7 +36,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BUDDHA = device_creator<buddha_device>;
+DEFINE_DEVICE_TYPE(BUDDHA, buddha_device, "buddha", "Buddha IDE controller")
//-------------------------------------------------
// mmio_map - device-specific memory mapped I/O
@@ -98,7 +98,7 @@ const tiny_rom_entry *buddha_device::device_rom_region() const
//-------------------------------------------------
buddha_device::buddha_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BUDDHA, "Buddha IDE controller", tag, owner, clock, "buddha", __FILE__),
+ device_t(mconfig, BUDDHA, tag, owner, clock),
device_zorro2_card_interface(mconfig, *this),
m_ata_0(*this, "ata_0"),
m_ata_1(*this, "ata_1"),
diff --git a/src/devices/bus/amiga/zorro/buddha.h b/src/devices/bus/amiga/zorro/buddha.h
index fd7fb794eaa..cc01864b885 100644
--- a/src/devices/bus/amiga/zorro/buddha.h
+++ b/src/devices/bus/amiga/zorro/buddha.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_AMIGA_ZORRO_BUDDHA_H
+#define MAME_BUS_AMIGA_ZORRO_BUDDHA_H
-#ifndef __BUDDHA_H__
-#define __BUDDHA_H__
+#pragma once
#include "zorro.h"
#include "machine/autoconfig.h"
@@ -78,6 +78,6 @@ private:
};
// device type definition
-extern const device_type BUDDHA;
+DECLARE_DEVICE_TYPE(BUDDHA, buddha_device)
-#endif
+#endif // MAME_BUS_AMIGA_ZORRO_BUDDHA_H
diff --git a/src/devices/bus/amiga/zorro/cards.cpp b/src/devices/bus/amiga/zorro/cards.cpp
index 4647afa9d0a..572ee491d93 100644
--- a/src/devices/bus/amiga/zorro/cards.cpp
+++ b/src/devices/bus/amiga/zorro/cards.cpp
@@ -9,6 +9,13 @@
#include "emu.h"
#include "cards.h"
+#include "a2052.h"
+#include "a2232.h"
+#include "a590.h"
+#include "action_replay.h"
+#include "buddha.h"
+
+
SLOT_INTERFACE_START( a1000_expansion_cards )
SLOT_INTERFACE_END
diff --git a/src/devices/bus/amiga/zorro/cards.h b/src/devices/bus/amiga/zorro/cards.h
index 5f025ab08fd..3d1e00935ca 100644
--- a/src/devices/bus/amiga/zorro/cards.h
+++ b/src/devices/bus/amiga/zorro/cards.h
@@ -21,17 +21,11 @@
***************************************************************************/
-#pragma once
-
-#ifndef __CARDS_H__
-#define __CARDS_H__
+#ifndef MAME_BUS_AMIGA_ZORRO_CARDS_H
+#define MAME_BUS_AMIGA_ZORRO_CARDS_H
+#pragma once
-#include "a2052.h"
-#include "a2232.h"
-#include "a590.h"
-#include "action_replay.h"
-#include "buddha.h"
SLOT_INTERFACE_EXTERN( a1000_expansion_cards );
SLOT_INTERFACE_EXTERN( a500_expansion_cards );
@@ -40,4 +34,4 @@ SLOT_INTERFACE_EXTERN( a2000_expansion_cards );
SLOT_INTERFACE_EXTERN( zorro2_cards );
SLOT_INTERFACE_EXTERN( zorro3_cards );
-#endif // __CARDS_H__
+#endif // MAME_BUS_AMIGA_ZORRO_CARDS_H
diff --git a/src/devices/bus/amiga/zorro/zorro.cpp b/src/devices/bus/amiga/zorro/zorro.cpp
index 180f6091157..0e29f13893f 100644
--- a/src/devices/bus/amiga/zorro/zorro.cpp
+++ b/src/devices/bus/amiga/zorro/zorro.cpp
@@ -16,22 +16,19 @@
// ZORRO SLOT DEVICE
//**************************************************************************
-const device_type ZORRO_SLOT = device_creator<zorro_slot_device>;
+DEFINE_DEVICE_TYPE(ZORRO_SLOT, zorro_slot_device, "zorro_slot", "Zorro slot")
//-------------------------------------------------
// zorro_slot_device - constructor
//-------------------------------------------------
zorro_slot_device::zorro_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ZORRO_SLOT, "Zorro slot", tag, owner, clock, "zorro_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_zorro_tag(nullptr)
+ zorro_slot_device(mconfig, ZORRO_SLOT, tag, owner, clock)
{
}
-zorro_slot_device::zorro_slot_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+zorro_slot_device::zorro_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_zorro_tag(nullptr)
{
@@ -68,9 +65,8 @@ void zorro_slot_device::device_start()
// exp_slot_device - constructor
//-------------------------------------------------
-zorro_device::zorro_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+zorro_device::zorro_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
m_space(nullptr),
m_cputag(nullptr),
m_ovr_handler(*this),
@@ -115,22 +111,21 @@ WRITE_LINE_MEMBER( zorro_device::int6_w ) { m_int6_handler(state); }
// EXPANSION SLOT DEVICE
//**************************************************************************
-const device_type EXP_SLOT = device_creator<exp_slot_device>;
+DEFINE_DEVICE_TYPE(EXP_SLOT, exp_slot_device, "exp_slot", "86-pin expansion slot")
//-------------------------------------------------
// exp_slot_device - constructor
//-------------------------------------------------
exp_slot_device::exp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- zorro_device(mconfig, EXP_SLOT, "86-pin expansion slot", tag, owner, clock, "exp_slot", __FILE__),
+ zorro_device(mconfig, EXP_SLOT, tag, owner, clock),
m_ipl_handler(*this),
m_dev(nullptr)
{
}
-exp_slot_device::exp_slot_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- zorro_device(mconfig, type, name, tag, owner, clock, shortname, source),
+exp_slot_device::exp_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ zorro_device(mconfig, type, tag, owner, clock),
m_ipl_handler(*this),
m_dev(nullptr)
{
@@ -181,25 +176,19 @@ void exp_slot_device::fc_w(int code) { if (m_dev) m_dev->fc_w(code); }
// ZORRO2 DEVICE
//**************************************************************************
-const device_type ZORRO2 = device_creator<zorro2_device>;
+DEFINE_DEVICE_TYPE(ZORRO2, zorro2_device, "zorro2", "Zorro-II bus")
//-------------------------------------------------
// zorro2_device - constructor
//-------------------------------------------------
zorro2_device::zorro2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- zorro_device(mconfig, ZORRO2, "Zorro-II bus", tag, owner, clock, "zorro2", __FILE__),
- m_eint1_handler(*this),
- m_eint4_handler(*this),
- m_eint5_handler(*this),
- m_eint7_handler(*this),
- m_autoconfig_device(nullptr)
+ zorro2_device(mconfig, ZORRO2, tag, owner, clock)
{
}
-zorro2_device::zorro2_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- zorro_device(mconfig, type, name, tag, owner, clock, shortname, source),
+zorro2_device::zorro2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ zorro_device(mconfig, type, tag, owner, clock),
m_eint1_handler(*this),
m_eint4_handler(*this),
m_eint5_handler(*this),
diff --git a/src/devices/bus/amiga/zorro/zorro.h b/src/devices/bus/amiga/zorro/zorro.h
index 482608d7949..3429f668ff9 100644
--- a/src/devices/bus/amiga/zorro/zorro.h
+++ b/src/devices/bus/amiga/zorro/zorro.h
@@ -138,10 +138,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_AMIGA_ZORRO_ZORRO_H
+#define MAME_BUS_AMIGA_ZORRO_ZORRO_H
-#ifndef __ZORRO_H__
-#define __ZORRO_H__
+#pragma once
//**************************************************************************
@@ -230,8 +230,6 @@ class zorro_slot_device : public device_t, public device_slot_interface
public:
// construction/destruction
zorro_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- zorro_slot_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// device-level overrides
virtual void device_start() override;
@@ -240,31 +238,29 @@ public:
static void set_zorro_slot(device_t &device, device_t *owner, const char *zorro_tag);
protected:
+ zorro_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// configuration
const char *m_zorro_tag;
};
// device type definition
-extern const device_type ZORRO_SLOT;
+DECLARE_DEVICE_TYPE(ZORRO_SLOT, zorro_slot_device)
// ======================> base zorro bus device
class zorro_device : public device_t
{
public:
- // construction/destruction
- zorro_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// static configuration helpers
static void set_cputag(device_t &device, const char *tag);
- template<class _Object> static devcb_base &set_int2_handler(device_t &device, _Object object)
- { return downcast<zorro_device &>(device).m_int2_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_int6_handler(device_t &device, _Object object)
- { return downcast<zorro_device &>(device).m_int6_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ovr_handler(device_t &device, _Object object)
- { return downcast<zorro_device &>(device).m_ovr_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_int2_handler(device_t &device, Object &&cb)
+ { return downcast<zorro_device &>(device).m_int2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_int6_handler(device_t &device, Object &&cb)
+ { return downcast<zorro_device &>(device).m_int6_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ovr_handler(device_t &device, Object &&cb)
+ { return downcast<zorro_device &>(device).m_ovr_handler.set_callback(std::forward<Object>(cb)); }
virtual void add_card(device_zorro_card_interface *card) = 0;
@@ -282,6 +278,9 @@ public:
address_space *m_space;
protected:
+ // construction/destruction
+ zorro_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
@@ -300,11 +299,9 @@ class exp_slot_device : public zorro_device
public:
// construction/destruction
exp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- exp_slot_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- template<class _Object> static devcb_base &set_ipl_handler(device_t &device, _Object object)
- { return downcast<exp_slot_device &>(device).m_ipl_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ipl_handler(device_t &device, Object &&cb)
+ { return downcast<exp_slot_device &>(device).m_ipl_handler.set_callback(std::forward<Object>(cb)); }
// the expansion slot can only have a single card
virtual void add_card(device_zorro_card_interface *card) override;
@@ -316,6 +313,8 @@ public:
virtual void fc_w(int code) override;
protected:
+ exp_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -327,7 +326,7 @@ private:
};
// device type definition
-extern const device_type EXP_SLOT;
+DECLARE_DEVICE_TYPE(EXP_SLOT, exp_slot_device)
// ======================> zorro2 slot device
@@ -336,18 +335,16 @@ class zorro2_device : public zorro_device
public:
// construction/destruction
zorro2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- zorro2_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
~zorro2_device();
- template<class _Object> static devcb_base &set_eint1_handler(device_t &device, _Object object)
- { return downcast<zorro2_device &>(device).m_eint1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_eint4_handler(device_t &device, _Object object)
- { return downcast<zorro2_device &>(device).m_eint4_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_eint5_handler(device_t &device, _Object object)
- { return downcast<zorro2_device &>(device).m_eint5_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_eint7_handler(device_t &device, _Object object)
- { return downcast<zorro2_device &>(device).m_eint7_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_eint1_handler(device_t &device, Object &&cb)
+ { return downcast<zorro2_device &>(device).m_eint1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_eint4_handler(device_t &device, Object &&cb)
+ { return downcast<zorro2_device &>(device).m_eint4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_eint5_handler(device_t &device, Object &&cb)
+ { return downcast<zorro2_device &>(device).m_eint5_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_eint7_handler(device_t &device, Object &&cb)
+ { return downcast<zorro2_device &>(device).m_eint7_handler.set_callback(std::forward<Object>(cb)); }
// the zorro2 bus supports multiple cards
virtual void add_card(device_zorro_card_interface *card) override;
@@ -364,6 +361,8 @@ public:
virtual void fc_w(int code) override;
protected:
+ zorro2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -381,7 +380,7 @@ private:
};
// device type definition
-extern const device_type ZORRO2;
+DECLARE_DEVICE_TYPE(ZORRO2, zorro2_device)
// ======================> base zorro card interface
@@ -390,7 +389,6 @@ class device_zorro_card_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_zorro_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_zorro_card_interface();
virtual void set_zorro_device() = 0;
@@ -405,6 +403,8 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER( cfgin_w );
protected:
+ device_zorro_card_interface(const machine_config &mconfig, device_t &device);
+
zorro_device *m_zorro;
};
@@ -414,12 +414,13 @@ class device_exp_card_interface : public device_zorro_card_interface
{
public:
// construction/destruction
- device_exp_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_exp_card_interface();
virtual void set_zorro_device() override;
protected:
+ device_exp_card_interface(const machine_config &mconfig, device_t &device);
+
exp_slot_device *m_slot;
};
@@ -429,7 +430,6 @@ class device_zorro2_card_interface : public device_zorro_card_interface
{
public:
// construction/destruction
- device_zorro2_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_zorro2_card_interface();
virtual void set_zorro_device() override;
@@ -438,6 +438,8 @@ public:
device_zorro2_card_interface *m_next;
protected:
+ device_zorro2_card_interface(const machine_config &mconfig, device_t &device);
+
zorro2_device *m_slot;
};
@@ -447,4 +449,4 @@ protected:
#include "cards.h"
-#endif // __ZORRO_H__
+#endif // MAME_BUS_AMIGA_ZORRO_ZORRO_H
diff --git a/src/devices/bus/apf/rom.cpp b/src/devices/bus/apf/rom.cpp
index 616d4d42146..113e5bf5259 100644
--- a/src/devices/bus/apf/rom.cpp
+++ b/src/devices/bus/apf/rom.cpp
@@ -17,30 +17,28 @@
// apf_rom_device - constructor
//-------------------------------------------------
-const device_type APF_ROM_STD = device_creator<apf_rom_device>;
-const device_type APF_ROM_BASIC = device_creator<apf_basic_device>;
-const device_type APF_ROM_SPACEDST = device_creator<apf_spacedst_device>;
+DEFINE_DEVICE_TYPE(APF_ROM_STD, apf_rom_device, "apf_rom", "APF Standard Carts")
+DEFINE_DEVICE_TYPE(APF_ROM_BASIC, apf_basic_device, "apf_basic", "APF BASIC Carts")
+DEFINE_DEVICE_TYPE(APF_ROM_SPACEDST, apf_spacedst_device, "apf_spacedst", "APF Space Destroyer Cart")
-apf_rom_device::apf_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_apf_cart_interface( mconfig, *this )
+apf_rom_device::apf_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_apf_cart_interface(mconfig, *this)
{
}
apf_rom_device::apf_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, APF_ROM_STD, "APF Standard Carts", tag, owner, clock, "apf_rom", __FILE__),
- device_apf_cart_interface( mconfig, *this )
+ : apf_rom_device(mconfig, APF_ROM_STD, tag, owner, clock)
{
}
apf_basic_device::apf_basic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : apf_rom_device(mconfig, APF_ROM_BASIC, "APF BASIC Carts", tag, owner, clock, "apf_basic", __FILE__)
+ : apf_rom_device(mconfig, APF_ROM_BASIC, tag, owner, clock)
{
}
apf_spacedst_device::apf_spacedst_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : apf_rom_device(mconfig, APF_ROM_SPACEDST, "APF Space Destroyer Cart", tag, owner, clock, "apf_spacedst", __FILE__)
+ : apf_rom_device(mconfig, APF_ROM_SPACEDST, tag, owner, clock)
{
}
diff --git a/src/devices/bus/apf/rom.h b/src/devices/bus/apf/rom.h
index 68b9c3bdbd3..89d82f51a99 100644
--- a/src/devices/bus/apf/rom.h
+++ b/src/devices/bus/apf/rom.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __APF_ROM_H
-#define __APF_ROM_H
+#ifndef MAME_BUS_APF_ROM_H
+#define MAME_BUS_APF_ROM_H
#include "slot.h"
@@ -13,15 +13,17 @@ class apf_rom_device : public device_t,
{
public:
// construction/destruction
- apf_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
apf_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {}
- virtual void device_reset() override {}
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
+
+protected:
+ apf_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
};
// ======================> apf_basic_device
@@ -51,12 +53,9 @@ public:
-
-
// device type definition
-extern const device_type APF_ROM_STD;
-extern const device_type APF_ROM_BASIC;
-extern const device_type APF_ROM_SPACEDST;
-
+DECLARE_DEVICE_TYPE(APF_ROM_STD, apf_rom_device)
+DECLARE_DEVICE_TYPE(APF_ROM_BASIC, apf_basic_device)
+DECLARE_DEVICE_TYPE(APF_ROM_SPACEDST, apf_spacedst_device)
-#endif
+#endif // MAME_BUS_APF_ROM_H
diff --git a/src/devices/bus/apf/slot.cpp b/src/devices/bus/apf/slot.cpp
index b4048f70969..871c43e4655 100644
--- a/src/devices/bus/apf/slot.cpp
+++ b/src/devices/bus/apf/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type APF_CART_SLOT = device_creator<apf_cart_slot_device>;
+DEFINE_DEVICE_TYPE(APF_CART_SLOT, apf_cart_slot_device, "apf_cart_slot", "APF Cartridge Slot")
//**************************************************************************
// APF Cartridges Interface
@@ -73,10 +73,10 @@ void device_apf_cart_interface::ram_alloc(uint32_t size)
// apf_cart_slot_device - constructor
//-------------------------------------------------
apf_cart_slot_device::apf_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, APF_CART_SLOT, "APF Cartridge Slot", tag, owner, clock, "apf_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(APF_STD), m_cart(nullptr)
+ device_t(mconfig, APF_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(APF_STD), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/apf/slot.h b/src/devices/bus/apf/slot.h
index 501006cc0f8..92ebbe4ad43 100644
--- a/src/devices/bus/apf/slot.h
+++ b/src/devices/bus/apf/slot.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __APF_SLOT_H
-#define __APF_SLOT_H
+#ifndef MAME_BUS_APF_SLOT_H
+#define MAME_BUS_APF_SLOT_H
#include "softlist_dev.h"
@@ -101,7 +101,7 @@ protected:
// device type definition
-extern const device_type APF_CART_SLOT;
+DECLARE_DEVICE_TYPE(APF_CART_SLOT, apf_cart_slot_device)
/***************************************************************************
@@ -113,4 +113,5 @@ extern const device_type APF_CART_SLOT;
#define MCFG_APF_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, APF_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+
+#endif // MAME_BUS_APF_SLOT_H
diff --git a/src/devices/bus/apricot/expansion/cards.cpp b/src/devices/bus/apricot/expansion/cards.cpp
index 16804f896d8..eb5b71948c0 100644
--- a/src/devices/bus/apricot/expansion/cards.cpp
+++ b/src/devices/bus/apricot/expansion/cards.cpp
@@ -8,6 +8,7 @@
#include "emu.h"
#include "cards.h"
+#include "ram.h"
SLOT_INTERFACE_START( apricot_expansion_cards )
SLOT_INTERFACE("128k", APRICOT_128K_RAM)
diff --git a/src/devices/bus/apricot/expansion/cards.h b/src/devices/bus/apricot/expansion/cards.h
index 4d9b73b0b86..36767f81e44 100644
--- a/src/devices/bus/apricot/expansion/cards.h
+++ b/src/devices/bus/apricot/expansion/cards.h
@@ -6,13 +6,11 @@
***************************************************************************/
-#pragma once
-
-#ifndef __APRICOT_CARDS_H__
-#define __APRICOT_CARDS_H__
+#ifndef MAME_BUS_APRICOT_EXPANSION_CARDS_H
+#define MAME_BUS_APRICOT_EXPANSION_CARDS_H
-#include "ram.h"
+#pragma once
SLOT_INTERFACE_EXTERN( apricot_expansion_cards );
-#endif // __APRICOT_CARDS_H__
+#endif // MAME_BUS_APRICOT_EXPANSION_CARDS_H
diff --git a/src/devices/bus/apricot/expansion/expansion.cpp b/src/devices/bus/apricot/expansion/expansion.cpp
index 8f99831b482..b5717d320a5 100644
--- a/src/devices/bus/apricot/expansion/expansion.cpp
+++ b/src/devices/bus/apricot/expansion/expansion.cpp
@@ -14,21 +14,19 @@
// EXPANSION SLOT DEVICE
//**************************************************************************
-const device_type APRICOT_EXPANSION_SLOT = device_creator<apricot_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(APRICOT_EXPANSION_SLOT, apricot_expansion_slot_device, "apricot_exp_slot", "Apricot Expansion Slot")
//-------------------------------------------------
// apricot_expansion_slot_device - constructor
//-------------------------------------------------
apricot_expansion_slot_device::apricot_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, APRICOT_EXPANSION_SLOT, "Apricot Expansion Slot", tag, owner, clock, "apricot_exp_slot", __FILE__),
- device_slot_interface(mconfig, *this)
+ apricot_expansion_slot_device(mconfig, APRICOT_EXPANSION_SLOT, tag, owner, clock)
{
}
-apricot_expansion_slot_device::apricot_expansion_slot_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+apricot_expansion_slot_device::apricot_expansion_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_slot_interface(mconfig, *this)
{
}
@@ -53,14 +51,14 @@ void apricot_expansion_slot_device::device_start()
// EXPANSION BUS DEVICE
//**************************************************************************
-const device_type APRICOT_EXPANSION_BUS = device_creator<apricot_expansion_bus_device>;
+DEFINE_DEVICE_TYPE(APRICOT_EXPANSION_BUS, apricot_expansion_bus_device, "apricot_exp_bus", "Apricot Expansion Bus")
//-------------------------------------------------
// apricot_expansion_bus_device - constructor
//-------------------------------------------------
apricot_expansion_bus_device::apricot_expansion_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, APRICOT_EXPANSION_BUS, "Apricot Expansion Bus", tag, owner, clock, "apricot_exp_bus", __FILE__),
+ device_t(mconfig, APRICOT_EXPANSION_BUS, tag, owner, clock),
m_program(nullptr),
m_io(nullptr),
m_program_iop(nullptr),
@@ -174,8 +172,8 @@ void apricot_expansion_bus_device::install_ram(offs_t addrstart, offs_t addrend,
device_apricot_expansion_card_interface::device_apricot_expansion_card_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device),
- m_next(nullptr),
- m_bus(nullptr)
+ m_bus(nullptr),
+ m_next(nullptr)
{
}
diff --git a/src/devices/bus/apricot/expansion/expansion.h b/src/devices/bus/apricot/expansion/expansion.h
index e87bcf355d4..8ea2a850bc3 100644
--- a/src/devices/bus/apricot/expansion/expansion.h
+++ b/src/devices/bus/apricot/expansion/expansion.h
@@ -41,10 +41,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_APRICOT_EXPANSION_EXPANSION_H
+#define MAME_BUS_APRICOT_EXPANSION_EXPANSION_H
-#ifndef __APRICOT_EXPANSION_H__
-#define __APRICOT_EXPANSION_H__
+#pragma once
@@ -97,8 +97,9 @@ class apricot_expansion_slot_device : public device_t, public device_slot_interf
public:
// construction/destruction
apricot_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- apricot_expansion_slot_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+
+protected:
+ apricot_expansion_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -117,23 +118,23 @@ public:
apricot_expansion_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~apricot_expansion_bus_device();
- template<class _Object> static devcb_base &set_dma1_handler(device_t &device, _Object object)
- { return downcast<apricot_expansion_bus_device &>(device).m_dma1_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_dma1_handler(device_t &device, Object &&cb)
+ { return downcast<apricot_expansion_bus_device &>(device).m_dma1_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_dma2_handler(device_t &device, _Object object)
- { return downcast<apricot_expansion_bus_device &>(device).m_dma2_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_dma2_handler(device_t &device, Object &&cb)
+ { return downcast<apricot_expansion_bus_device &>(device).m_dma2_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_ext1_handler(device_t &device, _Object object)
- { return downcast<apricot_expansion_bus_device &>(device).m_ext1_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ext1_handler(device_t &device, Object &&cb)
+ { return downcast<apricot_expansion_bus_device &>(device).m_ext1_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_ext2_handler(device_t &device, _Object object)
- { return downcast<apricot_expansion_bus_device &>(device).m_ext2_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ext2_handler(device_t &device, Object &&cb)
+ { return downcast<apricot_expansion_bus_device &>(device).m_ext2_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_int2_handler(device_t &device, _Object object)
- { return downcast<apricot_expansion_bus_device &>(device).m_int2_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_int2_handler(device_t &device, Object &&cb)
+ { return downcast<apricot_expansion_bus_device &>(device).m_int2_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_int3_handler(device_t &device, _Object object)
- { return downcast<apricot_expansion_bus_device &>(device).m_int3_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_int3_handler(device_t &device, Object &&cb)
+ { return downcast<apricot_expansion_bus_device &>(device).m_int3_handler.set_callback(std::forward<Object>(cb)); }
// inline configuration
static void set_cpu_tag(device_t &device, device_t *owner, const char *tag);
@@ -178,25 +179,29 @@ private:
};
// device type definition
-extern const device_type APRICOT_EXPANSION_BUS;
+DECLARE_DEVICE_TYPE(APRICOT_EXPANSION_BUS, apricot_expansion_bus_device)
// ======================> device_apricot_expansion_card_interface
class device_apricot_expansion_card_interface : public device_slot_card_interface
{
+ template <class ElementType> friend class simple_list;
+
public:
// construction/destruction
- device_apricot_expansion_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_apricot_expansion_card_interface();
void set_bus_device(apricot_expansion_bus_device *bus);
device_apricot_expansion_card_interface *next() const { return m_next; }
- device_apricot_expansion_card_interface *m_next;
protected:
+ device_apricot_expansion_card_interface(const machine_config &mconfig, device_t &device);
+
apricot_expansion_bus_device *m_bus;
+
+ device_apricot_expansion_card_interface *m_next;
};
@@ -204,4 +209,4 @@ protected:
#include "cards.h"
-#endif // __APRICOT_EXPANSION_H__
+#endif // MAME_BUS_APRICOT_EXPANSION_EXPANSION_H
diff --git a/src/devices/bus/apricot/expansion/ram.cpp b/src/devices/bus/apricot/expansion/ram.cpp
index 46a5bee1543..ba9b146522d 100644
--- a/src/devices/bus/apricot/expansion/ram.cpp
+++ b/src/devices/bus/apricot/expansion/ram.cpp
@@ -14,9 +14,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type APRICOT_256K_RAM = device_creator<apricot_256k_ram_device>;
-const device_type APRICOT_128K_RAM = device_creator<apricot_128k_ram_device>;
-const device_type APRICOT_512K_RAM = device_creator<apricot_512k_ram_device>;
+DEFINE_DEVICE_TYPE(APRICOT_256K_RAM, apricot_256k_ram_device, "apricot_256k_ram", "Apricot 256K RAM Expansion Board")
+DEFINE_DEVICE_TYPE(APRICOT_128K_RAM, apricot_128k_ram_device, "apricot_128k_ram", "Apricot 128K/512K RAM Expansion Board (128K)")
+DEFINE_DEVICE_TYPE(APRICOT_512K_RAM, apricot_512k_ram_device, "apricot_512k_ram", "Apricot 128K/512K RAM Expansion Board (512K)")
//**************************************************************************
@@ -44,7 +44,7 @@ ioport_constructor apricot_256k_ram_device::device_input_ports() const
//-------------------------------------------------
apricot_256k_ram_device::apricot_256k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, APRICOT_256K_RAM, "Apricot 256K RAM Expansion Board", tag, owner, clock, "apricot_256k_ram", __FILE__),
+ device_t(mconfig, APRICOT_256K_RAM, tag, owner, clock),
device_apricot_expansion_card_interface(mconfig, *this),
m_sw(*this, "sw")
{
@@ -98,7 +98,7 @@ ioport_constructor apricot_128k_ram_device::device_input_ports() const
//-------------------------------------------------
apricot_128k_ram_device::apricot_128k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, APRICOT_128K_RAM, "Apricot 128/512K RAM Expansion Board (128K)", tag, owner, clock, "apricot_128k_ram", __FILE__),
+ device_t(mconfig, APRICOT_128K_RAM, tag, owner, clock),
device_apricot_expansion_card_interface(mconfig, *this),
m_strap(*this, "strap")
{
@@ -152,7 +152,7 @@ ioport_constructor apricot_512k_ram_device::device_input_ports() const
//-------------------------------------------------
apricot_512k_ram_device::apricot_512k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, APRICOT_512K_RAM, "Apricot 128/512K RAM Expansion Board (512K)", tag, owner, clock, "apricot_512k_ram", __FILE__),
+ device_t(mconfig, APRICOT_512K_RAM, tag, owner, clock),
device_apricot_expansion_card_interface(mconfig, *this),
m_strap(*this, "strap")
{
diff --git a/src/devices/bus/apricot/expansion/ram.h b/src/devices/bus/apricot/expansion/ram.h
index e9e837b660c..d6692b49ba7 100644
--- a/src/devices/bus/apricot/expansion/ram.h
+++ b/src/devices/bus/apricot/expansion/ram.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_APRICOT_RAM_H
+#define MAME_BUS_APRICOT_RAM_H
-#ifndef __APRICOT_RAM__
-#define __APRICOT_RAM__
+#pragma once
#include "expansion.h"
@@ -80,9 +80,9 @@ private:
// device type definition
-extern const device_type APRICOT_256K_RAM;
-extern const device_type APRICOT_128K_RAM;
-extern const device_type APRICOT_512K_RAM;
+DECLARE_DEVICE_TYPE(APRICOT_256K_RAM, apricot_256k_ram_device)
+DECLARE_DEVICE_TYPE(APRICOT_128K_RAM, apricot_128k_ram_device)
+DECLARE_DEVICE_TYPE(APRICOT_512K_RAM, apricot_512k_ram_device)
-#endif // __APRICOT_RAM__
+#endif // MAME_BUS_APRICOT_RAM_H
diff --git a/src/devices/bus/apricot/keyboard/hle.cpp b/src/devices/bus/apricot/keyboard/hle.cpp
index 7fef733b134..be7454c0da3 100644
--- a/src/devices/bus/apricot/keyboard/hle.cpp
+++ b/src/devices/bus/apricot/keyboard/hle.cpp
@@ -58,7 +58,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type APRICOT_KEYBOARD_HLE = device_creator<apricot_keyboard_hle_device>;
+DEFINE_DEVICE_TYPE(APRICOT_KEYBOARD_HLE, apricot_keyboard_hle_device, "apricotkb_hle", "Apricot Keyboard (HLE)")
//-------------------------------------------------
@@ -214,7 +214,7 @@ machine_config_constructor apricot_keyboard_hle_device::device_mconfig_additions
//-------------------------------------------------
apricot_keyboard_hle_device::apricot_keyboard_hle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, APRICOT_KEYBOARD_HLE, "Apricot Keyboard (HLE)", tag, owner, clock, "apricotkb_hle", __FILE__),
+ device_t(mconfig, APRICOT_KEYBOARD_HLE, tag, owner, clock),
device_apricot_keyboard_interface(mconfig, *this),
device_buffered_serial_interface(mconfig, *this),
device_matrix_keyboard_interface(mconfig, *this, "row_0", "row_1", "row_2", "row_3", "row_4", "row_5", "row_6", "row_7", "row_8", "row_9", "row_a", "row_b", "row_c"),
diff --git a/src/devices/bus/apricot/keyboard/hle.h b/src/devices/bus/apricot/keyboard/hle.h
index 9096c434f65..176a3bfcc22 100644
--- a/src/devices/bus/apricot/keyboard/hle.h
+++ b/src/devices/bus/apricot/keyboard/hle.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_APRICOT_KEYBOARD_HLE_H
+#define MAME_BUS_APRICOT_KEYBOARD_HLE_H
-#ifndef __APRICOT_KEYBOARD_HLE_H__
-#define __APRICOT_KEYBOARD_HLE_H__
+#pragma once
#include "keyboard.h"
#include "machine/keyboard.h"
@@ -52,8 +52,6 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
- required_device<msm5832_device> m_rtc;
-
enum {
CMD_REQ_TIME_AND_DATE = 0xe1,
CMD_SET_TIME_AND_DATE = 0xe4,
@@ -64,12 +62,14 @@ private:
ACK_DIAGNOSTICS = 0xfb
};
+ required_device<msm5832_device> m_rtc;
+
int m_rtc_index;
};
// device type definition
-extern const device_type APRICOT_KEYBOARD_HLE;
+DECLARE_DEVICE_TYPE(APRICOT_KEYBOARD_HLE, apricot_keyboard_hle_device)
-#endif // __APRICOT_KEYBOARD_HLE_H__
+#endif // MAME_BUS_APRICOT_KEYBOARD_HLE_H
diff --git a/src/devices/bus/apricot/keyboard/keyboard.cpp b/src/devices/bus/apricot/keyboard/keyboard.cpp
index e406c0c4cd5..87c491b6693 100644
--- a/src/devices/bus/apricot/keyboard/keyboard.cpp
+++ b/src/devices/bus/apricot/keyboard/keyboard.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type APRICOT_KEYBOARD_INTERFACE = device_creator<apricot_keyboard_bus_device>;
+DEFINE_DEVICE_TYPE(APRICOT_KEYBOARD_INTERFACE, apricot_keyboard_bus_device, "apricot_kbd", "Apricot Keyboard Interface")
//**************************************************************************
@@ -27,7 +27,7 @@ const device_type APRICOT_KEYBOARD_INTERFACE = device_creator<apricot_keyboard_b
//-------------------------------------------------
apricot_keyboard_bus_device::apricot_keyboard_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, APRICOT_KEYBOARD_INTERFACE, "Apricot Keyboard Interface", tag, owner, clock, "apricot_kbd", __FILE__),
+ device_t(mconfig, APRICOT_KEYBOARD_INTERFACE, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_kbd(nullptr),
m_in_handler(*this)
diff --git a/src/devices/bus/apricot/keyboard/keyboard.h b/src/devices/bus/apricot/keyboard/keyboard.h
index 8fa27f672ec..e7cc28ef584 100644
--- a/src/devices/bus/apricot/keyboard/keyboard.h
+++ b/src/devices/bus/apricot/keyboard/keyboard.h
@@ -27,10 +27,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_APRICOT_KEYBOARD_KEYBOARD_H
+#define MAME_BUS_APRICOT_KEYBOARD_KEYBOARD_H
-#ifndef __APRICOT_KEYBOARD_H__
-#define __APRICOT_KEYBOARD_H__
+#pragma once
@@ -62,8 +62,8 @@ public:
virtual ~apricot_keyboard_bus_device();
// callbacks
- template<class _Object> static devcb_base &set_in_handler(device_t &device, _Object object)
- { return downcast<apricot_keyboard_bus_device &>(device).m_in_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_in_handler(device_t &device, Object &&cb)
+ { return downcast<apricot_keyboard_bus_device &>(device).m_in_handler.set_callback(std::forward<Object>(cb)); }
// called from keyboard
DECLARE_WRITE_LINE_MEMBER( in_w ) { m_in_handler(state); }
@@ -88,21 +88,22 @@ class device_apricot_keyboard_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_apricot_keyboard_interface(const machine_config &mconfig, device_t &device);
virtual ~device_apricot_keyboard_interface();
- virtual void out_w(int state) {};
+ virtual void out_w(int state) = 0;
protected:
+ device_apricot_keyboard_interface(const machine_config &mconfig, device_t &device);
+
apricot_keyboard_bus_device *m_host;
};
// device type definition
-extern const device_type APRICOT_KEYBOARD_INTERFACE;
+DECLARE_DEVICE_TYPE(APRICOT_KEYBOARD_INTERFACE, apricot_keyboard_bus_device)
// supported devices
SLOT_INTERFACE_EXTERN( apricot_keyboard_devices );
-#endif // __APRICOT_KEYBOARD_H__
+#endif // MAME_BUS_APRICOT_KEYBOARD_KEYBOARD_H
diff --git a/src/devices/bus/arcadia/rom.cpp b/src/devices/bus/arcadia/rom.cpp
index 73640851160..2221fed2f2c 100644
--- a/src/devices/bus/arcadia/rom.cpp
+++ b/src/devices/bus/arcadia/rom.cpp
@@ -18,24 +18,22 @@
// arcadia_rom_device - constructor
//-------------------------------------------------
-const device_type ARCADIA_ROM_STD = device_creator<arcadia_rom_device>;
-const device_type ARCADIA_ROM_GOLF = device_creator<arcadia_golf_device>;
+DEFINE_DEVICE_TYPE(ARCADIA_ROM_STD, arcadia_rom_device, "arcadia_rom", "Emerson Arcadia Standard Carts")
+DEFINE_DEVICE_TYPE(ARCADIA_ROM_GOLF, arcadia_golf_device, "arcadia_golf", "Emerson Arcadia Golf Cart")
-arcadia_rom_device::arcadia_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_arcadia_cart_interface( mconfig, *this )
+arcadia_rom_device::arcadia_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_arcadia_cart_interface(mconfig, *this)
{
}
arcadia_rom_device::arcadia_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ARCADIA_ROM_STD, "Emerson Arcadia Standard Carts", tag, owner, clock, "arcadia_rom", __FILE__),
- device_arcadia_cart_interface( mconfig, *this )
+ : arcadia_rom_device(mconfig, ARCADIA_ROM_STD, tag, owner, clock)
{
}
arcadia_golf_device::arcadia_golf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arcadia_rom_device(mconfig, ARCADIA_ROM_GOLF, "Emerson Arcadia Golf Cart", tag, owner, clock, "arcadia_golf", __FILE__)
+ : arcadia_rom_device(mconfig, ARCADIA_ROM_GOLF, tag, owner, clock)
{
}
diff --git a/src/devices/bus/arcadia/rom.h b/src/devices/bus/arcadia/rom.h
index ad77caa1bc3..9cacb9b5e6e 100644
--- a/src/devices/bus/arcadia/rom.h
+++ b/src/devices/bus/arcadia/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __ARCADIA_ROM_H
-#define __ARCADIA_ROM_H
+#ifndef MAME_BUS_ARCADIA_ROM_H
+#define MAME_BUS_ARCADIA_ROM_H
+
+#pragma once
#include "slot.h"
@@ -13,16 +15,18 @@ class arcadia_rom_device : public device_t,
{
public:
// construction/destruction
- arcadia_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
arcadia_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {}
- virtual void device_reset() override {}
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_READ8_MEMBER(extra_rom) override;
+
+public:
+ arcadia_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
};
// ======================> arcadia_golf_device
@@ -40,5 +44,7 @@ public:
// device type definition
extern const device_type ARCADIA_ROM_STD;
extern const device_type ARCADIA_ROM_GOLF;
+DECLARE_DEVICE_TYPE(ARCADIA_ROM_STD, arcadia_rom_device)
+DECLARE_DEVICE_TYPE(ARCADIA_ROM_GOLF, arcadia_golf_device)
-#endif
+#endif // MAME_BUS_ARCADIA_ROM_H
diff --git a/src/devices/bus/arcadia/slot.cpp b/src/devices/bus/arcadia/slot.cpp
index d264205a21e..fed92bee9cd 100644
--- a/src/devices/bus/arcadia/slot.cpp
+++ b/src/devices/bus/arcadia/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type EA2001_CART_SLOT = device_creator<arcadia_cart_slot_device>;
+DEFINE_DEVICE_TYPE(EA2001_CART_SLOT, arcadia_cart_slot_device, "arcadia_cart_slot", "Emerson Arcadia Cartridge Slot")
//**************************************************************************
// ARCADIA Cartridges Interface
@@ -63,10 +63,10 @@ void device_arcadia_cart_interface::rom_alloc(uint32_t size, const char *tag)
// arcadia_cart_slot_device - constructor
//-------------------------------------------------
arcadia_cart_slot_device::arcadia_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EA2001_CART_SLOT, "Emerson Arcadia Cartridge Slot", tag, owner, clock, "arcadia_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(ARCADIA_STD), m_cart(nullptr)
+ device_t(mconfig, EA2001_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(ARCADIA_STD), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/arcadia/slot.h b/src/devices/bus/arcadia/slot.h
index 16af9153a6c..b67912d2cf7 100644
--- a/src/devices/bus/arcadia/slot.h
+++ b/src/devices/bus/arcadia/slot.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __ARCADIA_SLOT_H
-#define __ARCADIA_SLOT_H
+#ifndef MAME_BUS_ARCADIA_SLOT_H
+#define MAME_BUS_ARCADIA_SLOT_H
#include "softlist_dev.h"
@@ -54,9 +54,6 @@ public:
arcadia_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~arcadia_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override {}
@@ -81,6 +78,8 @@ public:
virtual DECLARE_READ8_MEMBER(extra_rom);
protected:
+ // device-level overrides
+ virtual void device_start() override;
int m_type;
device_arcadia_cart_interface* m_cart;
@@ -89,7 +88,7 @@ protected:
// device type definition
-extern const device_type EA2001_CART_SLOT;
+DECLARE_DEVICE_TYPE(EA2001_CART_SLOT, arcadia_cart_slot_device)
/***************************************************************************
@@ -101,4 +100,5 @@ extern const device_type EA2001_CART_SLOT;
#define MCFG_ARCADIA_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, EA2001_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+
+#endif // MAME_BUS_ARCADIA_SLOT_H
diff --git a/src/devices/bus/astrocde/exp.cpp b/src/devices/bus/astrocde/exp.cpp
index 3e67050ddc2..40b6fbecbc4 100644
--- a/src/devices/bus/astrocde/exp.cpp
+++ b/src/devices/bus/astrocde/exp.cpp
@@ -14,7 +14,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ASTROCADE_EXP_SLOT = device_creator<astrocade_exp_device>;
+DEFINE_DEVICE_TYPE(ASTROCADE_EXP_SLOT, astrocade_exp_device, "astrocade_exp", "Bally Astrocade expansion")
device_astrocade_card_interface::device_astrocade_card_interface(const machine_config &mconfig, device_t &device)
@@ -36,9 +36,9 @@ device_astrocade_card_interface::~device_astrocade_card_interface()
// astrocade_exp_device - constructor
//-------------------------------------------------
astrocade_exp_device::astrocade_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ASTROCADE_EXP_SLOT, "Bally Astrocade expansion", tag, owner, clock, "astrocde_exp", __FILE__),
- device_slot_interface(mconfig, *this),
- m_card_mounted(false), m_card(nullptr)
+ device_t(mconfig, ASTROCADE_EXP_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_card_mounted(false), m_card(nullptr)
{
}
diff --git a/src/devices/bus/astrocde/exp.h b/src/devices/bus/astrocde/exp.h
index 110bdaf0367..9be60975ed7 100644
--- a/src/devices/bus/astrocde/exp.h
+++ b/src/devices/bus/astrocde/exp.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __ASTROCADE_EXP_H
-#define __ASTROCADE_EXP_H
+#ifndef MAME_BUS_ASTROCADE_EXP_H
+#define MAME_BUS_ASTROCADE_EXP_H
// ======================> device_astrocade_card_interface
@@ -9,19 +9,20 @@ class device_astrocade_card_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_astrocade_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_astrocade_card_interface();
// reading and writing
virtual DECLARE_READ8_MEMBER(read) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write) {}
+ virtual DECLARE_WRITE8_MEMBER(write) { }
+
+protected:
+ device_astrocade_card_interface(const machine_config &mconfig, device_t &device);
};
// ======================> astrocade_exp_device
-class astrocade_exp_device : public device_t,
- public device_slot_interface
+class astrocade_exp_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
@@ -45,11 +46,11 @@ protected:
// device type definition
-extern const device_type ASTROCADE_EXP_SLOT;
+DECLARE_DEVICE_TYPE(ASTROCADE_EXP_SLOT, astrocade_exp_device)
#define MCFG_ASTROCADE_EXPANSION_SLOT_ADD(_tag, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, ASTROCADE_EXP_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+#endif // MAME_BUS_ASTROCADE_EXP_H
diff --git a/src/devices/bus/astrocde/ram.cpp b/src/devices/bus/astrocde/ram.cpp
index 89d16e6de77..36d1ed9ab77 100644
--- a/src/devices/bus/astrocde/ram.cpp
+++ b/src/devices/bus/astrocde/ram.cpp
@@ -60,56 +60,54 @@
// astrocade_rom_device - constructor
//-------------------------------------------------
-const device_type ASTROCADE_BLUERAM_4K = device_creator<astrocade_blueram_4k_device>;
-const device_type ASTROCADE_BLUERAM_16K = device_creator<astrocade_blueram_16k_device>;
-const device_type ASTROCADE_BLUERAM_32K = device_creator<astrocade_blueram_32k_device>;
-const device_type ASTROCADE_VIPER_SYS1 = device_creator<astrocade_viper_sys1_device>;
-const device_type ASTROCADE_WHITERAM = device_creator<astrocade_whiteram_device>;
-const device_type ASTROCADE_RL64RAM = device_creator<astrocade_rl64ram_device>;
+DEFINE_DEVICE_TYPE(ASTROCADE_BLUERAM_4K, astrocade_blueram_4k_device, "astrocade_br4", "Bally Astrocade Blue RAM 4K")
+DEFINE_DEVICE_TYPE(ASTROCADE_BLUERAM_16K, astrocade_blueram_16k_device, "astrocade_br16", "Bally Astrocade Blue RAM 16K")
+DEFINE_DEVICE_TYPE(ASTROCADE_BLUERAM_32K, astrocade_blueram_32k_device, "astrocade_br32", "Bally Astrocade Blue RAM 32K")
+DEFINE_DEVICE_TYPE(ASTROCADE_VIPER_SYS1, astrocade_viper_sys1_device, "astrocade_vs1", "Bally Astrocade Viper System 1")
+DEFINE_DEVICE_TYPE(ASTROCADE_WHITERAM, astrocade_whiteram_device, "astrocade_lwr", "Bally Astrocade Lil' White RAM 32K")
+DEFINE_DEVICE_TYPE(ASTROCADE_RL64RAM, astrocade_rl64ram_device, "astrocade_rl64", "Bally Astrocade R&L RAM 64K")
-astrocade_blueram_4k_device::astrocade_blueram_4k_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_astrocade_card_interface(mconfig, *this),
- m_write_prot(*this, "RAM_PROTECT")
+astrocade_blueram_4k_device::astrocade_blueram_4k_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
+ device_astrocade_card_interface(mconfig, *this),
+ m_write_prot(*this, "RAM_PROTECT")
{
}
astrocade_blueram_4k_device::astrocade_blueram_4k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ASTROCADE_BLUERAM_4K, "Bally Astrocade Blue RAM 4K", tag, owner, clock, "astrocade_br4", __FILE__),
- device_astrocade_card_interface(mconfig, *this),
- m_write_prot(*this, "RAM_PROTECT")
+ : astrocade_blueram_4k_device(mconfig, ASTROCADE_BLUERAM_4K, tag, owner, clock)
{
}
astrocade_blueram_16k_device::astrocade_blueram_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : astrocade_blueram_4k_device(mconfig, ASTROCADE_BLUERAM_16K, "Bally Astrocade Blue RAM 16K", tag, owner, clock, "astrocade_br16", __FILE__)
+ : astrocade_blueram_4k_device(mconfig, ASTROCADE_BLUERAM_16K, tag, owner, clock)
{
}
astrocade_blueram_32k_device::astrocade_blueram_32k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : astrocade_blueram_4k_device(mconfig, ASTROCADE_BLUERAM_32K, "Bally Astrocade Blue RAM 32K", tag, owner, clock, "astrocade_br32", __FILE__)
+ : astrocade_blueram_4k_device(mconfig, ASTROCADE_BLUERAM_32K, tag, owner, clock)
{
}
astrocade_viper_sys1_device::astrocade_viper_sys1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ASTROCADE_VIPER_SYS1, "Bally Astrocade Viper System 1", tag, owner, clock, "astrocade_vs1", __FILE__),
- device_astrocade_card_interface(mconfig, *this),
- m_write_prot(*this, "RAM_PROTECT")
+ : device_t(mconfig, ASTROCADE_VIPER_SYS1, tag, owner, clock),
+ device_astrocade_card_interface(mconfig, *this),
+ m_write_prot(*this, "RAM_PROTECT")
{
}
astrocade_whiteram_device::astrocade_whiteram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ASTROCADE_WHITERAM, "Bally Astrocade Lil' White RAM 32K", tag, owner, clock, "astrocade_lwr", __FILE__),
- device_astrocade_card_interface(mconfig, *this),
- m_write_prot(*this, "RAM_PROTECT")
+ : device_t(mconfig, ASTROCADE_WHITERAM, tag, owner, clock),
+ device_astrocade_card_interface(mconfig, *this),
+ m_write_prot(*this, "RAM_PROTECT")
{
}
astrocade_rl64ram_device::astrocade_rl64ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ASTROCADE_RL64RAM, "Bally Astrocade R&L RAM 64K", tag, owner, clock, "astrocade_rl64", __FILE__),
- device_astrocade_card_interface(mconfig, *this),
- m_write_prot(*this, "RAM_PROTECT")
+ : device_t(mconfig, ASTROCADE_RL64RAM, tag, owner, clock),
+ device_astrocade_card_interface(mconfig, *this),
+ m_write_prot(*this, "RAM_PROTECT")
{
}
diff --git a/src/devices/bus/astrocde/ram.h b/src/devices/bus/astrocde/ram.h
index d714c14e3b3..83f9483d2e8 100644
--- a/src/devices/bus/astrocde/ram.h
+++ b/src/devices/bus/astrocde/ram.h
@@ -1,24 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __ASTROCADE_RAM_H
-#define __ASTROCADE_RAM_H
+#ifndef MAME_BUS_ASTROCADE_RAM_H
+#define MAME_BUS_ASTROCADE_RAM_H
+
+#pragma once
#include "exp.h"
// ======================> astrocade_blueram_4k_device
-class astrocade_blueram_4k_device : public device_t,
- public device_astrocade_card_interface
+class astrocade_blueram_4k_device : public device_t, public device_astrocade_card_interface
{
public:
// construction/destruction
- astrocade_blueram_4k_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
astrocade_blueram_4k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override { m_ram.resize(0x1000); save_item(NAME(m_ram)); }
- virtual void device_reset() override {}
virtual ioport_constructor device_input_ports() const override;
// reading and writing
@@ -26,6 +24,11 @@ public:
virtual DECLARE_WRITE8_MEMBER(write) override;
protected:
+ astrocade_blueram_4k_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override { m_ram.resize(0x1000); save_item(NAME(m_ram)); }
+ virtual void device_reset() override { }
+
std::vector<uint8_t> m_ram;
required_ioport m_write_prot;
};
@@ -54,22 +57,23 @@ public:
// ======================> astrocade_viper_sys1_device
-class astrocade_viper_sys1_device : public device_t,
- public device_astrocade_card_interface
+class astrocade_viper_sys1_device : public device_t, public device_astrocade_card_interface
{
public:
// construction/destruction
astrocade_viper_sys1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override { m_ram.resize(0x4000); save_item(NAME(m_ram)); }
- virtual void device_reset() override {}
virtual ioport_constructor device_input_ports() const override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
+protected:
+ virtual void device_start() override { m_ram.resize(0x4000); save_item(NAME(m_ram)); }
+ virtual void device_reset() override { }
+
private:
std::vector<uint8_t> m_ram;
required_ioport m_write_prot;
@@ -77,22 +81,23 @@ private:
// ======================> astrocade_whiteram_device
-class astrocade_whiteram_device : public device_t,
- public device_astrocade_card_interface
+class astrocade_whiteram_device : public device_t, public device_astrocade_card_interface
{
public:
// construction/destruction
astrocade_whiteram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override { m_ram.resize(0x8000); save_item(NAME(m_ram)); }
- virtual void device_reset() override {}
virtual ioport_constructor device_input_ports() const override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
+protected:
+ virtual void device_start() override { m_ram.resize(0x8000); save_item(NAME(m_ram)); }
+ virtual void device_reset() override { }
+
private:
std::vector<uint8_t> m_ram;
required_ioport m_write_prot;
@@ -100,22 +105,23 @@ private:
// ======================> astrocade_rl64ram_device
-class astrocade_rl64ram_device : public device_t,
- public device_astrocade_card_interface
+class astrocade_rl64ram_device : public device_t, public device_astrocade_card_interface
{
public:
// construction/destruction
astrocade_rl64ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override { m_ram.resize(0xb000); save_item(NAME(m_ram)); }
- virtual void device_reset() override {}
virtual ioport_constructor device_input_ports() const override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
+protected:
+ virtual void device_start() override { m_ram.resize(0xb000); save_item(NAME(m_ram)); }
+ virtual void device_reset() override { }
+
private:
std::vector<uint8_t> m_ram;
required_ioport m_write_prot;
@@ -124,12 +130,12 @@ private:
// device type definition
-extern const device_type ASTROCADE_BLUERAM_4K;
-extern const device_type ASTROCADE_BLUERAM_16K;
-extern const device_type ASTROCADE_BLUERAM_32K;
-extern const device_type ASTROCADE_VIPER_SYS1;
-extern const device_type ASTROCADE_WHITERAM;
-extern const device_type ASTROCADE_RL64RAM;
+DECLARE_DEVICE_TYPE(ASTROCADE_BLUERAM_4K, astrocade_blueram_4k_device)
+DECLARE_DEVICE_TYPE(ASTROCADE_BLUERAM_16K, astrocade_blueram_16k_device)
+DECLARE_DEVICE_TYPE(ASTROCADE_BLUERAM_32K, astrocade_blueram_32k_device)
+DECLARE_DEVICE_TYPE(ASTROCADE_VIPER_SYS1, astrocade_viper_sys1_device)
+DECLARE_DEVICE_TYPE(ASTROCADE_WHITERAM, astrocade_whiteram_device)
+DECLARE_DEVICE_TYPE(ASTROCADE_RL64RAM, astrocade_rl64ram_device)
-#endif
+#endif // MAME_BUS_ASTROCADE_RAM_H
diff --git a/src/devices/bus/astrocde/rom.cpp b/src/devices/bus/astrocde/rom.cpp
index c5edddd7d3a..fcebedfc81d 100644
--- a/src/devices/bus/astrocde/rom.cpp
+++ b/src/devices/bus/astrocde/rom.cpp
@@ -17,31 +17,29 @@
// astrocade_rom_device - constructor
//-------------------------------------------------
-const device_type ASTROCADE_ROM_STD = device_creator<astrocade_rom_device>;
-const device_type ASTROCADE_ROM_256K = device_creator<astrocade_rom_256k_device>;
-const device_type ASTROCADE_ROM_512K = device_creator<astrocade_rom_512k_device>;
+DEFINE_DEVICE_TYPE(ASTROCADE_ROM_STD, astrocade_rom_device, "astrocade_rom", "Bally Astrocade Standard Carts")
+DEFINE_DEVICE_TYPE(ASTROCADE_ROM_256K, astrocade_rom_256k_device, "astrocade_256k", "Bally Astrocade 256K Carts")
+DEFINE_DEVICE_TYPE(ASTROCADE_ROM_512K, astrocade_rom_512k_device, "astrocade_512k", "Bally Astrocade 512K Carts")
-astrocade_rom_device::astrocade_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_astrocade_cart_interface(mconfig, *this)
+astrocade_rom_device::astrocade_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_astrocade_cart_interface(mconfig, *this)
{
}
astrocade_rom_device::astrocade_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ASTROCADE_ROM_STD, "Bally Astrocade Standard Carts", tag, owner, clock, "astrocade_rom", __FILE__),
- device_astrocade_cart_interface(mconfig, *this)
+ : astrocade_rom_device(mconfig, ASTROCADE_ROM_STD, tag, owner, clock)
{
}
astrocade_rom_256k_device::astrocade_rom_256k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : astrocade_rom_device(mconfig, ASTROCADE_ROM_256K, "Bally Astrocade 256K Carts", tag, owner, clock, "astrocade_256k", __FILE__), m_base_bank(0)
- {
+ : astrocade_rom_device(mconfig, ASTROCADE_ROM_256K, tag, owner, clock), m_base_bank(0)
+{
}
astrocade_rom_512k_device::astrocade_rom_512k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : astrocade_rom_device(mconfig, ASTROCADE_ROM_512K, "Bally Astrocade 512K Carts", tag, owner, clock, "astrocade_512k", __FILE__), m_base_bank(0)
- {
+ : astrocade_rom_device(mconfig, ASTROCADE_ROM_512K, tag, owner, clock), m_base_bank(0)
+{
}
diff --git a/src/devices/bus/astrocde/rom.h b/src/devices/bus/astrocde/rom.h
index 9fa0b20e5fe..0471ada8dd1 100644
--- a/src/devices/bus/astrocde/rom.h
+++ b/src/devices/bus/astrocde/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __ASTROCADE_ROM_H
-#define __ASTROCADE_ROM_H
+#ifndef MAME_BUS_ASTROCADE_ROM_H
+#define MAME_BUS_ASTROCADE_ROM_H
+
+#pragma once
#include "slot.h"
@@ -13,15 +15,17 @@ class astrocade_rom_device : public device_t,
{
public:
// construction/destruction
- astrocade_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
astrocade_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {}
- virtual void device_reset() override {}
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
+
+protected:
+ astrocade_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
};
// ======================> astrocade_rom_256k_device
@@ -32,13 +36,13 @@ public:
// construction/destruction
astrocade_rom_256k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
private:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_base_bank;
};
@@ -50,24 +54,20 @@ public:
// construction/destruction
astrocade_rom_512k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
private:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_base_bank;
};
-
-
-
// device type definition
-extern const device_type ASTROCADE_ROM_STD;
-extern const device_type ASTROCADE_ROM_256K;
-extern const device_type ASTROCADE_ROM_512K;
-
+DECLARE_DEVICE_TYPE(ASTROCADE_ROM_STD, astrocade_rom_device)
+DECLARE_DEVICE_TYPE(ASTROCADE_ROM_256K, astrocade_rom_256k_device)
+DECLARE_DEVICE_TYPE(ASTROCADE_ROM_512K, astrocade_rom_512k_device)
-#endif
+#endif // MAME_BUS_ASTROCADE_ROM_H
diff --git a/src/devices/bus/astrocde/slot.cpp b/src/devices/bus/astrocde/slot.cpp
index d997b6454e5..b83b8e576ad 100644
--- a/src/devices/bus/astrocde/slot.cpp
+++ b/src/devices/bus/astrocde/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ASTROCADE_CART_SLOT = device_creator<astrocade_cart_slot_device>;
+DEFINE_DEVICE_TYPE(ASTROCADE_CART_SLOT, astrocade_cart_slot_device, "astrocade_cart_slot", "Bally Astrocade Cartridge Slot")
//**************************************************************************
// Astrocade Cartridges Interface
@@ -63,10 +63,10 @@ void device_astrocade_cart_interface::rom_alloc(uint32_t size, const char *tag)
// astrocade_cart_slot_device - constructor
//-------------------------------------------------
astrocade_cart_slot_device::astrocade_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ASTROCADE_CART_SLOT, "Bally Astrocade Cartridge Slot", tag, owner, clock, "astrocade_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(ASTROCADE_STD), m_cart(nullptr)
+ device_t(mconfig, ASTROCADE_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(ASTROCADE_STD), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/astrocde/slot.h b/src/devices/bus/astrocde/slot.h
index 702342aad8c..dc7a2c84ca9 100644
--- a/src/devices/bus/astrocde/slot.h
+++ b/src/devices/bus/astrocde/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __ASTROCADE_SLOT_H
-#define __ASTROCADE_SLOT_H
+#ifndef MAME_BUS_ASTROCADE_SLOT_H
+#define MAME_BUS_ASTROCADE_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -26,7 +28,6 @@ class device_astrocade_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_astrocade_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_astrocade_cart_interface();
// reading and writing
@@ -37,6 +38,8 @@ public:
uint32_t get_rom_size() { return m_rom_size; }
protected:
+ device_astrocade_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -54,9 +57,6 @@ public:
astrocade_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~astrocade_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override {}
@@ -80,6 +80,8 @@ public:
virtual DECLARE_READ8_MEMBER(read_rom);
protected:
+ // device-level overrides
+ virtual void device_start() override;
int m_type;
device_astrocade_cart_interface* m_cart;
@@ -88,7 +90,7 @@ protected:
// device type definition
-extern const device_type ASTROCADE_CART_SLOT;
+DECLARE_DEVICE_TYPE(ASTROCADE_CART_SLOT, astrocade_cart_slot_device)
/***************************************************************************
@@ -100,4 +102,5 @@ extern const device_type ASTROCADE_CART_SLOT;
#define MCFG_ASTROCADE_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, ASTROCADE_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+
+#endif // MAME_BUS_ASTROCADE_SLOT_H
diff --git a/src/devices/bus/bbc/1mhzbus/1mhzbus.cpp b/src/devices/bus/bbc/1mhzbus/1mhzbus.cpp
index 273025a5ce9..a03d3b439ee 100644
--- a/src/devices/bus/bbc/1mhzbus/1mhzbus.cpp
+++ b/src/devices/bus/bbc/1mhzbus/1mhzbus.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_1MHZBUS_SLOT = device_creator<bbc_1mhzbus_slot_device>;
+DEFINE_DEVICE_TYPE(BBC_1MHZBUS_SLOT, bbc_1mhzbus_slot_device, "bbc_1mhzbus_slot", "BBC Micro 1MHz Bus port")
@@ -52,8 +52,8 @@ device_bbc_1mhzbus_interface::~device_bbc_1mhzbus_interface()
//-------------------------------------------------
bbc_1mhzbus_slot_device::bbc_1mhzbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BBC_1MHZBUS_SLOT, "BBC Micro 1MHz Bus port", tag, owner, clock, "bbc_1mhzbus_slot", __FILE__),
- device_slot_interface(mconfig, *this),
+ device_t(mconfig, BBC_1MHZBUS_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
m_card(nullptr),
m_irq_handler(*this),
m_nmi_handler(*this)
diff --git a/src/devices/bus/bbc/1mhzbus/1mhzbus.h b/src/devices/bus/bbc/1mhzbus/1mhzbus.h
index f8b5f4083f9..450e7fd8357 100644
--- a/src/devices/bus/bbc/1mhzbus/1mhzbus.h
+++ b/src/devices/bus/bbc/1mhzbus/1mhzbus.h
@@ -72,10 +72,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BBC_1MHZBUS_1MHZBUS_H
+#define MAME_BUS_BBC_1MHZBUS_1MHZBUS_H
-#ifndef __BBC_1MHZBUS_SLOT__
-#define __BBC_1MHZBUS_SLOT__
+#pragma once
@@ -122,11 +122,11 @@ public:
virtual ~bbc_1mhzbus_slot_device();
// callbacks
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object)
- { return downcast<bbc_1mhzbus_slot_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb)
+ { return downcast<bbc_1mhzbus_slot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_nmi_handler(device_t &device, _Object object)
- { return downcast<bbc_1mhzbus_slot_device &>(device).m_nmi_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
+ { return downcast<bbc_1mhzbus_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_irq_handler(state); }
DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_nmi_handler(state); }
@@ -150,19 +150,20 @@ class device_bbc_1mhzbus_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_bbc_1mhzbus_interface(const machine_config &mconfig, device_t &device);
virtual ~device_bbc_1mhzbus_interface();
protected:
+ device_bbc_1mhzbus_interface(const machine_config &mconfig, device_t &device);
+
bbc_1mhzbus_slot_device *m_slot;
};
// device type definition
-extern const device_type BBC_1MHZBUS_SLOT;
+DECLARE_DEVICE_TYPE(BBC_1MHZBUS_SLOT, bbc_1mhzbus_slot_device)
SLOT_INTERFACE_EXTERN( bbcb_1mhzbus_devices );
SLOT_INTERFACE_EXTERN( bbcm_1mhzbus_devices );
-#endif
+#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 ca748a4763f..cb2d41d5583 100644
--- a/src/devices/bus/bbc/1mhzbus/opus3.cpp
+++ b/src/devices/bus/bbc/1mhzbus/opus3.cpp
@@ -45,7 +45,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_OPUS3 = device_creator<bbc_opus3_device>;
+DEFINE_DEVICE_TYPE(BBC_OPUS3, bbc_opus3_device, "bbc_opus3", "Opus Challenger 3-in-1")
//-------------------------------------------------
@@ -117,7 +117,7 @@ const tiny_rom_entry *bbc_opus3_device::device_rom_region() const
//-------------------------------------------------
bbc_opus3_device::bbc_opus3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, BBC_OPUS3, "Opus Challenger 3-in-1", tag, owner, clock, "bbc_opus3", __FILE__),
+ : device_t(mconfig, BBC_OPUS3, tag, owner, clock),
device_bbc_1mhzbus_interface(mconfig, *this),
m_dfs_rom(*this, "dfs_rom"),
m_ramdisk(*this, "ramdisk"),
@@ -136,7 +136,7 @@ void bbc_opus3_device::device_start()
address_space& space = machine().device("maincpu")->memory().space(AS_PROGRAM);
m_slot = dynamic_cast<bbc_1mhzbus_slot_device *>(owner());
- space.install_readwrite_handler(0xfcf8, 0xfcfb, READ8_DEVICE_DELEGATE(m_fdc, wd1770_t, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd1770_t, write));
+ space.install_readwrite_handler(0xfcf8, 0xfcfb, READ8_DEVICE_DELEGATE(m_fdc, wd1770_device, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd1770_device, write));
space.install_write_handler(0xfcfc, 0xfcfc, WRITE8_DELEGATE(bbc_opus3_device, wd1770l_write));
space.install_write_handler(0xfcfe, 0xfcff, WRITE8_DELEGATE(bbc_opus3_device, page_w));
space.install_readwrite_handler(0xfd00, 0xfdff, READ8_DELEGATE(bbc_opus3_device, ramdisk_r), WRITE8_DELEGATE(bbc_opus3_device, ramdisk_w));
diff --git a/src/devices/bus/bbc/1mhzbus/opus3.h b/src/devices/bus/bbc/1mhzbus/opus3.h
index b521aa87de2..09139db001b 100644
--- a/src/devices/bus/bbc/1mhzbus/opus3.h
+++ b/src/devices/bus/bbc/1mhzbus/opus3.h
@@ -7,8 +7,8 @@
**********************************************************************/
-#ifndef __BBC_OPUS3__
-#define __BBC_OPUS3__
+#ifndef MAME_BUS_BBC_1MHZBUS_OPUS3_H
+#define MAME_BUS_BBC_1MHZBUS_OPUS3_H
#include "1mhzbus.h"
#include "machine/ram.h"
@@ -48,7 +48,7 @@ protected:
private:
required_memory_region m_dfs_rom;
required_device<ram_device> m_ramdisk;
- required_device<wd1770_t> m_fdc;
+ required_device<wd1770_device> m_fdc;
required_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1;
@@ -59,7 +59,7 @@ private:
// device type definition
-extern const device_type BBC_OPUS3;
+DECLARE_DEVICE_TYPE(BBC_OPUS3, bbc_opus3_device)
-#endif /* __BBC_OPUS3__ */
+#endif // MAME_BUS_BBC_1MHZBUS_OPUS3_H
diff --git a/src/devices/bus/bbc/analogue/analogue.cpp b/src/devices/bus/bbc/analogue/analogue.cpp
index 726f869771c..5d7f4497d67 100644
--- a/src/devices/bus/bbc/analogue/analogue.cpp
+++ b/src/devices/bus/bbc/analogue/analogue.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_ANALOGUE_SLOT = device_creator<bbc_analogue_slot_device>;
+DEFINE_DEVICE_TYPE(BBC_ANALOGUE_SLOT, bbc_analogue_slot_device, "bbc_analogue_slot", "BBC Micro Analogue port")
@@ -51,8 +51,8 @@ device_bbc_analogue_interface::~device_bbc_analogue_interface()
//-------------------------------------------------
bbc_analogue_slot_device::bbc_analogue_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BBC_ANALOGUE_SLOT, "BBC Micro Analogue port", tag, owner, clock, "bbc_analogue_slot", __FILE__),
- device_slot_interface(mconfig, *this)
+ device_t(mconfig, BBC_ANALOGUE_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/bbc/analogue/analogue.h b/src/devices/bus/bbc/analogue/analogue.h
index d63ef808018..6d831c109f8 100644
--- a/src/devices/bus/bbc/analogue/analogue.h
+++ b/src/devices/bus/bbc/analogue/analogue.h
@@ -26,10 +26,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BBC_ANALOGUE_ANALOGUE_H
+#define MAME_BUS_BBC_ANALOGUE_ANALOGUE_H
-#ifndef __BBC_ANALOGUE_SLOT__
-#define __BBC_ANALOGUE_SLOT__
+#pragma once
@@ -61,7 +61,6 @@ class bbc_analogue_slot_device : public device_t, public device_slot_interface
public:
// construction/destruction
bbc_analogue_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~bbc_analogue_slot_device() {}
uint8_t ch_r(int channel);
uint8_t pb_r();
@@ -81,21 +80,21 @@ class device_bbc_analogue_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_bbc_analogue_interface(const machine_config &mconfig, device_t &device);
virtual ~device_bbc_analogue_interface();
virtual uint8_t ch_r(int channel) { return 0x00; };
virtual uint8_t pb_r() { return 0x30; };
protected:
+ device_bbc_analogue_interface(const machine_config &mconfig, device_t &device);
+
bbc_analogue_slot_device *m_slot;
};
// device type definition
-extern const device_type BBC_ANALOGUE_SLOT;
+DECLARE_DEVICE_TYPE(BBC_ANALOGUE_SLOT, bbc_analogue_slot_device)
SLOT_INTERFACE_EXTERN( bbc_analogue_devices );
-
-#endif
+#endif // MAME_BUS_BBC_ANALOGUE_ANALOGUE_H
diff --git a/src/devices/bus/bbc/analogue/joystick.cpp b/src/devices/bus/bbc/analogue/joystick.cpp
index 8c6aa767af6..e67abff9e22 100644
--- a/src/devices/bus/bbc/analogue/joystick.cpp
+++ b/src/devices/bus/bbc/analogue/joystick.cpp
@@ -18,8 +18,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_ACORNJOY = device_creator<bbc_acornjoy_device>;
-const device_type BBC_VOLTMACE3B = device_creator<bbc_voltmace3b_device>;
+DEFINE_DEVICE_TYPE(BBC_ACORNJOY, bbc_acornjoy_device, "bbc_acornjoy", "Acorn Analogue Joysticks")
+DEFINE_DEVICE_TYPE(BBC_VOLTMACE3B, bbc_voltmace3b_device, "bbc_voltmace3b", "Voltmace Delta 3b Twin Joysticks")
static INPUT_PORTS_START( acornjoy )
@@ -82,8 +82,8 @@ ioport_constructor bbc_voltmace3b_device::device_input_ports() const
// bbc_joystick_device - constructor
//-------------------------------------------------
-bbc_joystick_device::bbc_joystick_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+bbc_joystick_device::bbc_joystick_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_bbc_analogue_interface(mconfig, *this),
m_joy(*this, "JOY%u", 0),
m_buttons(*this, "BUTTONS")
@@ -91,12 +91,12 @@ bbc_joystick_device::bbc_joystick_device(const machine_config &mconfig, device_t
}
bbc_acornjoy_device::bbc_acornjoy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- bbc_joystick_device(mconfig, BBC_ACORNJOY, "Acorn Analogue Joysticks", tag, owner, clock, "bbc_acornjoy", __FILE__)
+ bbc_joystick_device(mconfig, BBC_ACORNJOY, tag, owner, clock)
{
}
bbc_voltmace3b_device::bbc_voltmace3b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- bbc_joystick_device(mconfig, BBC_VOLTMACE3B, "Voltmace Delta 3b Twin Joysticks", tag, owner, clock, "bbc_voltmace3b", __FILE__)
+ bbc_joystick_device(mconfig, BBC_VOLTMACE3B, tag, owner, clock)
{
}
diff --git a/src/devices/bus/bbc/analogue/joystick.h b/src/devices/bus/bbc/analogue/joystick.h
index bf2b906102a..887e87c74d7 100644
--- a/src/devices/bus/bbc/analogue/joystick.h
+++ b/src/devices/bus/bbc/analogue/joystick.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BBC_ANALOGUE_JOYSTICK_H
+#define MAME_BUS_BBC_ANALOGUE_JOYSTICK_H
-#ifndef __BBC_JOYSTICK__
-#define __BBC_JOYSTICK__
+#pragma once
#include "analogue.h"
@@ -24,11 +24,10 @@ class bbc_joystick_device :
public device_t,
public device_bbc_analogue_interface
{
-public:
+protected:
// construction/destruction
- bbc_joystick_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ bbc_joystick_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -59,8 +58,7 @@ public:
// device type definition
-extern const device_type BBC_ACORNJOY;
-extern const device_type BBC_VOLTMACE3B;
-
+DECLARE_DEVICE_TYPE(BBC_ACORNJOY, bbc_acornjoy_device)
+DECLARE_DEVICE_TYPE(BBC_VOLTMACE3B, bbc_voltmace3b_device)
-#endif
+#endif // MAME_BUS_BBC_ANALOGUE_JOYSTICK_H
diff --git a/src/devices/bus/bbc/fdc/acorn.cpp b/src/devices/bus/bbc/fdc/acorn.cpp
index 45a13a5dc18..397f3b9408d 100644
--- a/src/devices/bus/bbc/fdc/acorn.cpp
+++ b/src/devices/bus/bbc/fdc/acorn.cpp
@@ -15,8 +15,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_ACORN8271 = device_creator<bbc_acorn8271_device>;
-const device_type BBC_ACORN1770 = device_creator<bbc_acorn1770_device>;
+DEFINE_DEVICE_TYPE(BBC_ACORN8271, bbc_acorn8271_device, "bbc_acorn8271", "Acorn 8721 FDC")
+DEFINE_DEVICE_TYPE(BBC_ACORN1770, bbc_acorn1770_device, "bbc_acorn1770", "Acorn 1770 FDC")
//-------------------------------------------------
@@ -171,7 +171,7 @@ const tiny_rom_entry *bbc_acorn1770_device::device_rom_region() const
//-------------------------------------------------
bbc_acorn8271_device::bbc_acorn8271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, BBC_ACORN8271, "Acorn 8271 FDC", tag, owner, clock, "bbc_acorn8271", __FILE__),
+ : device_t(mconfig, BBC_ACORN8271, tag, owner, clock),
device_bbc_fdc_interface(mconfig, *this),
m_dfs_rom(*this, "dfs_rom"),
m_fdc(*this, "i8271"),
@@ -181,7 +181,7 @@ bbc_acorn8271_device::bbc_acorn8271_device(const machine_config &mconfig, const
}
bbc_acorn1770_device::bbc_acorn1770_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, BBC_ACORN1770, "Acorn 1770 FDC", tag, owner, clock, "bbc_acorn1770", __FILE__),
+ : device_t(mconfig, BBC_ACORN1770, tag, owner, clock),
device_bbc_fdc_interface(mconfig, *this),
m_dfs_rom(*this, "dfs_rom"),
m_fdc(*this, "wd1770"),
@@ -212,7 +212,7 @@ void bbc_acorn1770_device::device_start()
m_slot = dynamic_cast<bbc_fdc_slot_device *>(owner());
space.install_readwrite_handler(0xfe80, 0xfe83, READ8_DELEGATE(bbc_acorn1770_device, wd1770l_read), WRITE8_DELEGATE(bbc_acorn1770_device, wd1770l_write));
- space.install_readwrite_handler(0xfe84, 0xfe9f, READ8_DEVICE_DELEGATE(m_fdc, wd1770_t, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd1770_t, write));
+ space.install_readwrite_handler(0xfe84, 0xfe9f, READ8_DEVICE_DELEGATE(m_fdc, wd1770_device, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd1770_device, write));
m_drive_control = 0xfe;
}
diff --git a/src/devices/bus/bbc/fdc/acorn.h b/src/devices/bus/bbc/fdc/acorn.h
index 9e1ded12cfb..30fd049432f 100644
--- a/src/devices/bus/bbc/fdc/acorn.h
+++ b/src/devices/bus/bbc/fdc/acorn.h
@@ -7,8 +7,10 @@
**********************************************************************/
-#ifndef __BBC_ACORN__
-#define __BBC_ACORN__
+#ifndef MAME_BUS__BBC_FDC_ACORN_H
+#define MAME_BUS__BBC_FDC_ACORN_H
+
+#pragma once
#include "fdc.h"
#include "machine/i8271.h"
@@ -78,7 +80,7 @@ protected:
private:
required_memory_region m_dfs_rom;
- required_device<wd1770_t> m_fdc;
+ required_device<wd1770_device> m_fdc;
required_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1;
@@ -87,8 +89,8 @@ private:
// device type definition
-extern const device_type BBC_ACORN8271;
-extern const device_type BBC_ACORN1770;
+DECLARE_DEVICE_TYPE(BBC_ACORN8271, bbc_acorn8271_device)
+DECLARE_DEVICE_TYPE(BBC_ACORN1770, bbc_acorn1770_device)
-#endif /* __BBC_ACORN__ */
+#endif // MAME_BUS__BBC_FDC_ACORN_H
diff --git a/src/devices/bus/bbc/fdc/cumana.cpp b/src/devices/bus/bbc/fdc/cumana.cpp
index ca36e75a2da..242d8b38a05 100644
--- a/src/devices/bus/bbc/fdc/cumana.cpp
+++ b/src/devices/bus/bbc/fdc/cumana.cpp
@@ -17,8 +17,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_CUMANA1 = device_creator<bbc_cumana1_device>;
-const device_type BBC_CUMANA2 = device_creator<bbc_cumana2_device>;
+DEFINE_DEVICE_TYPE(BBC_CUMANA1, bbc_cumana1_device, "bbc_cumana1", "Cumana QFS 8877A FDC")
+DEFINE_DEVICE_TYPE(BBC_CUMANA2, bbc_cumana2_device, "bbc_cumana2", "Cumana QFS Issue 2 8877A FDC")
//-------------------------------------------------
@@ -99,8 +99,8 @@ const tiny_rom_entry *bbc_cumana2_device::device_rom_region() const
// bbc_cumanafdc_device - constructor
//-------------------------------------------------
-bbc_cumanafdc_device::bbc_cumanafdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+bbc_cumanafdc_device::bbc_cumanafdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_bbc_fdc_interface(mconfig, *this),
m_dfs_rom(*this, "dfs_rom"),
m_fdc(*this, "mb8877a"),
@@ -110,13 +110,13 @@ bbc_cumanafdc_device::bbc_cumanafdc_device(const machine_config &mconfig, device
}
bbc_cumana1_device::bbc_cumana1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- bbc_cumanafdc_device(mconfig, BBC_CUMANA1, "Cumana QFS 8877A FDC", tag, owner, clock, "bbc_cumana1", __FILE__)
+ bbc_cumanafdc_device(mconfig, BBC_CUMANA1, tag, owner, clock)
{
m_invert = true;
}
bbc_cumana2_device::bbc_cumana2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- bbc_cumanafdc_device(mconfig, BBC_CUMANA2, "Cumana QFS Issue 2 8877A FDC", tag, owner, clock, "bbc_cumana2", __FILE__)
+ bbc_cumanafdc_device(mconfig, BBC_CUMANA2, tag, owner, clock)
{
m_invert = false;
}
@@ -133,7 +133,7 @@ void bbc_cumanafdc_device::device_start()
m_slot = dynamic_cast<bbc_fdc_slot_device *>(owner());
space.install_readwrite_handler(0xfe80, 0xfe83, READ8_DELEGATE(bbc_cumanafdc_device, ctrl_r), WRITE8_DELEGATE(bbc_cumanafdc_device, ctrl_w));
- space.install_readwrite_handler(0xfe84, 0xfe9f, READ8_DEVICE_DELEGATE(m_fdc, mb8877_t, read), WRITE8_DEVICE_DELEGATE(m_fdc, mb8877_t, write));
+ space.install_readwrite_handler(0xfe84, 0xfe9f, READ8_DEVICE_DELEGATE(m_fdc, mb8877_device, read), WRITE8_DEVICE_DELEGATE(m_fdc, mb8877_device, write));
}
//-------------------------------------------------
diff --git a/src/devices/bus/bbc/fdc/cumana.h b/src/devices/bus/bbc/fdc/cumana.h
index 5bae494f090..465644ba683 100644
--- a/src/devices/bus/bbc/fdc/cumana.h
+++ b/src/devices/bus/bbc/fdc/cumana.h
@@ -6,9 +6,10 @@
**********************************************************************/
+#ifndef MAME_BUS_BBC_FDC_CUMANA_H
+#define MAME_BUS_BBC_FDC_CUMANA_H
-#ifndef __BBC_CUMANA__
-#define __BBC_CUMANA__
+#pragma once
#include "fdc.h"
#include "machine/wd_fdc.h"
@@ -25,9 +26,6 @@ class bbc_cumanafdc_device :
{
public:
- // construction/destruction
- bbc_cumanafdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
DECLARE_FLOPPY_FORMATS(floppy_formats);
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
@@ -37,6 +35,9 @@ public:
DECLARE_WRITE8_MEMBER(ctrl_w);
protected:
+ // construction/destruction
+ bbc_cumanafdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -45,7 +46,7 @@ protected:
private:
required_memory_region m_dfs_rom;
- required_device<mb8877_t> m_fdc;
+ required_device<mb8877_device> m_fdc;
required_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1;
@@ -73,8 +74,8 @@ public:
// device type definition
-extern const device_type BBC_CUMANA1;
-extern const device_type BBC_CUMANA2;
+DECLARE_DEVICE_TYPE(BBC_CUMANA1, bbc_cumana1_device)
+DECLARE_DEVICE_TYPE(BBC_CUMANA2, bbc_cumana2_device)
-#endif /* __BBC_CUMANA__ */
+#endif // MAME_BUS_BBC_FDC_CUMANA_H
diff --git a/src/devices/bus/bbc/fdc/fdc.cpp b/src/devices/bus/bbc/fdc/fdc.cpp
index 58bbfc416e3..bd824459c2d 100644
--- a/src/devices/bus/bbc/fdc/fdc.cpp
+++ b/src/devices/bus/bbc/fdc/fdc.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_FDC_SLOT = device_creator<bbc_fdc_slot_device>;
+DEFINE_DEVICE_TYPE(BBC_FDC_SLOT, bbc_fdc_slot_device, "bbc_fdc_slot", "BBC Micro FDC slot")
//**************************************************************************
@@ -50,8 +50,8 @@ device_bbc_fdc_interface::~device_bbc_fdc_interface()
//-------------------------------------------------
bbc_fdc_slot_device::bbc_fdc_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BBC_FDC_SLOT, "BBC Micro FDC slot", tag, owner, clock, "bbc_fdc_slot", __FILE__),
- device_slot_interface(mconfig, *this),
+ device_t(mconfig, BBC_FDC_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
m_card(nullptr),
m_intrq_handler(*this),
m_drq_handler(*this)
diff --git a/src/devices/bus/bbc/fdc/fdc.h b/src/devices/bus/bbc/fdc/fdc.h
index 186d6497b0e..0aa5a54d15d 100644
--- a/src/devices/bus/bbc/fdc/fdc.h
+++ b/src/devices/bus/bbc/fdc/fdc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BBC_FDC_FDC_H
+#define MAME_BUS_BBC_FDC_FDC_H
-#ifndef __BBC_FDC_SLOT__
-#define __BBC_FDC_SLOT__
+#pragma once
@@ -44,10 +44,10 @@ public:
virtual ~bbc_fdc_slot_device();
// callbacks
- template<class _Object> static devcb_base &set_intrq_handler(device_t &device, _Object object)
- { return downcast<bbc_fdc_slot_device &>(device).m_intrq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_handler(device_t &device, _Object object)
- { return downcast<bbc_fdc_slot_device &>(device).m_drq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_intrq_handler(device_t &device, Object &&cb)
+ { return downcast<bbc_fdc_slot_device &>(device).m_intrq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb)
+ { return downcast<bbc_fdc_slot_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( intrq_w ) { m_intrq_handler(state); }
DECLARE_WRITE_LINE_MEMBER( drq_w) { m_drq_handler(state); }
@@ -71,18 +71,19 @@ class device_bbc_fdc_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_bbc_fdc_interface(const machine_config &mconfig, device_t &device);
virtual ~device_bbc_fdc_interface();
protected:
+ device_bbc_fdc_interface(const machine_config &mconfig, device_t &device);
+
bbc_fdc_slot_device *m_slot;
};
// device type definition
-extern const device_type BBC_FDC_SLOT;
+DECLARE_DEVICE_TYPE(BBC_FDC_SLOT, bbc_fdc_slot_device)
SLOT_INTERFACE_EXTERN( bbc_fdc_devices );
-#endif
+#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 ccc75650925..245b20f9c60 100644
--- a/src/devices/bus/bbc/fdc/opus.cpp
+++ b/src/devices/bus/bbc/fdc/opus.cpp
@@ -20,9 +20,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_OPUS2791 = device_creator<bbc_opus2791_device>;
-const device_type BBC_OPUS2793 = device_creator<bbc_opus2793_device>;
-const device_type BBC_OPUS1770 = device_creator<bbc_opus1770_device>;
+DEFINE_DEVICE_TYPE(BBC_OPUS2791, bbc_opus2791_device, "bbc_opus2791", "Opus 2791 FDC")
+DEFINE_DEVICE_TYPE(BBC_OPUS2793, bbc_opus2793_device, "bbc_opus2793", "Opus 2793 FDC")
+DEFINE_DEVICE_TYPE(BBC_OPUS1770, bbc_opus1770_device, "bbc_opus1770", "Opus D-DOS(B) 1770 FDC")
//-------------------------------------------------
@@ -144,8 +144,8 @@ const tiny_rom_entry *bbc_opus1770_device::device_rom_region() const
// bbc_opusfdc_device - constructor
//-------------------------------------------------
-bbc_opusfdc_device::bbc_opusfdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+bbc_opusfdc_device::bbc_opusfdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_bbc_fdc_interface(mconfig, *this),
m_dfs_rom(*this, "dfs_rom"),
m_fdc(*this, "fdc"),
@@ -155,17 +155,17 @@ bbc_opusfdc_device::bbc_opusfdc_device(const machine_config &mconfig, device_typ
}
bbc_opus2791_device::bbc_opus2791_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : bbc_opusfdc_device(mconfig, BBC_OPUS2791, "Opus 2791 FDC", tag, owner, clock, "bbc_opus2791", __FILE__)
+ : bbc_opusfdc_device(mconfig, BBC_OPUS2791, tag, owner, clock)
{
}
bbc_opus2793_device::bbc_opus2793_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : bbc_opusfdc_device(mconfig, BBC_OPUS2793, "Opus 2793 FDC", tag, owner, clock, "bbc_opus2793", __FILE__)
+ : bbc_opusfdc_device(mconfig, BBC_OPUS2793, tag, owner, clock)
{
}
bbc_opus1770_device::bbc_opus1770_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : bbc_opusfdc_device(mconfig, BBC_OPUS1770, "Opus D-DOS(B) 1770 FDC", tag, owner, clock, "bbc_opus1770", __FILE__)
+ : bbc_opusfdc_device(mconfig, BBC_OPUS1770, tag, owner, clock)
{
}
@@ -179,7 +179,7 @@ void bbc_opusfdc_device::device_start()
address_space& space = cpu->memory().space(AS_PROGRAM);
m_slot = dynamic_cast<bbc_fdc_slot_device *>(owner());
- space.install_readwrite_handler(0xfe80, 0xfe83, READ8_DEVICE_DELEGATE(m_fdc, wd_fdc_t, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd_fdc_t, write));
+ space.install_readwrite_handler(0xfe80, 0xfe83, READ8_DEVICE_DELEGATE(m_fdc, wd_fdc_device_base, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd_fdc_device_base, write));
space.install_readwrite_handler(0xfe84, 0xfe84, READ8_DELEGATE(bbc_opusfdc_device, ctrl_r), WRITE8_DELEGATE(bbc_opusfdc_device, ctrl_w));
}
diff --git a/src/devices/bus/bbc/fdc/opus.h b/src/devices/bus/bbc/fdc/opus.h
index b59291bf205..60deb3cd0af 100644
--- a/src/devices/bus/bbc/fdc/opus.h
+++ b/src/devices/bus/bbc/fdc/opus.h
@@ -6,9 +6,8 @@
**********************************************************************/
-
-#ifndef __BBC_OPUSFDC__
-#define __BBC_OPUSFDC__
+#ifndef MAME_BUS_BBC_FDC_OPUS_H
+#define MAME_BUS_BBC_FDC_OPUS_H
#include "fdc.h"
#include "machine/wd_fdc.h"
@@ -25,9 +24,6 @@ class bbc_opusfdc_device:
{
public:
- // construction/destruction
- bbc_opusfdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
DECLARE_FLOPPY_FORMATS(floppy_formats);
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
@@ -37,13 +33,16 @@ public:
DECLARE_WRITE8_MEMBER(ctrl_w);
protected:
+ // construction/destruction
+ bbc_opusfdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
private:
required_memory_region m_dfs_rom;
- required_device<wd_fdc_t> m_fdc;
+ required_device<wd_fdc_device_base> m_fdc;
required_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1;
@@ -78,8 +77,8 @@ public:
};
// device type definition
-extern const device_type BBC_OPUS2791;
-extern const device_type BBC_OPUS2793;
-extern const device_type BBC_OPUS1770;
+DECLARE_DEVICE_TYPE(BBC_OPUS2791, bbc_opus2791_device)
+DECLARE_DEVICE_TYPE(BBC_OPUS2793, bbc_opus2793_device)
+DECLARE_DEVICE_TYPE(BBC_OPUS1770, bbc_opus1770_device)
-#endif /* __BBC_OPUSFDC_ */
+#endif // MAME_BUS_BBC_FDC_OPUS_H
diff --git a/src/devices/bus/bbc/fdc/watford.cpp b/src/devices/bus/bbc/fdc/watford.cpp
index 158e7c9a9c3..b63e1e92f69 100644
--- a/src/devices/bus/bbc/fdc/watford.cpp
+++ b/src/devices/bus/bbc/fdc/watford.cpp
@@ -19,8 +19,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_WEDDB2 = device_creator<bbc_weddb2_device>;
-const device_type BBC_WEDDB3 = device_creator<bbc_weddb3_device>;
+DEFINE_DEVICE_TYPE(BBC_WEDDB2, bbc_weddb2_device, "bbc_weddb2", "Watford Electronics DDB2 1772 FDC")
+DEFINE_DEVICE_TYPE(BBC_WEDDB3, bbc_weddb3_device, "bbc_weddb3", "Watford Electronics DDB3 1770 FDC")
//-------------------------------------------------
@@ -114,14 +114,14 @@ const tiny_rom_entry *bbc_weddb3_device::device_rom_region() const
// bbc_watfordfdc_device - constructor
//-------------------------------------------------
-bbc_watfordfdc_device::bbc_watfordfdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+bbc_watfordfdc_device::bbc_watfordfdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_bbc_fdc_interface(mconfig, *this)
{
}
bbc_weddb2_device::bbc_weddb2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : bbc_watfordfdc_device(mconfig, BBC_WEDDB2, "Watford Electronics DDB2 1772 FDC", tag, owner, clock, "bbc_weddb2", __FILE__),
+ : bbc_watfordfdc_device(mconfig, BBC_WEDDB2, tag, owner, clock),
m_dfs_rom(*this, "dfs_rom"),
m_fdc(*this, "wd1772"),
m_floppy0(*this, "wd1772:0"),
@@ -130,7 +130,7 @@ bbc_weddb2_device::bbc_weddb2_device(const machine_config &mconfig, const char *
}
bbc_weddb3_device::bbc_weddb3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : bbc_watfordfdc_device(mconfig, BBC_WEDDB3, "Watford Electronics DDB3 1770 FDC", tag, owner, clock, "bbc_weddb3", __FILE__),
+ : bbc_watfordfdc_device(mconfig, BBC_WEDDB3, tag, owner, clock),
m_dfs_rom(*this, "dfs_rom"),
m_fdc(*this, "wd1770"),
m_floppy0(*this, "wd1770:0"),
@@ -149,7 +149,7 @@ void bbc_weddb2_device::device_start()
m_slot = dynamic_cast<bbc_fdc_slot_device *>(owner());
space.install_readwrite_handler(0xfe80, 0xfe83, READ8_DELEGATE(bbc_weddb2_device, wd177xl_read), WRITE8_DELEGATE(bbc_weddb2_device, wd177xl_write));
- space.install_readwrite_handler(0xfe84, 0xfe8f, READ8_DEVICE_DELEGATE(m_fdc, wd_fdc_t, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd_fdc_t, write));
+ space.install_readwrite_handler(0xfe84, 0xfe8f, READ8_DEVICE_DELEGATE(m_fdc, wd_fdc_device_base, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd_fdc_device_base, write));
}
void bbc_weddb3_device::device_start()
@@ -159,7 +159,7 @@ void bbc_weddb3_device::device_start()
m_slot = dynamic_cast<bbc_fdc_slot_device *>(owner());
space.install_readwrite_handler(0xfe80, 0xfe83, READ8_DELEGATE(bbc_weddb3_device, wd177xl_read), WRITE8_DELEGATE(bbc_weddb3_device, wd177xl_write));
- space.install_readwrite_handler(0xfe84, 0xfe8f, READ8_DEVICE_DELEGATE(m_fdc, wd_fdc_t, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd_fdc_t, write));
+ space.install_readwrite_handler(0xfe84, 0xfe8f, READ8_DEVICE_DELEGATE(m_fdc, wd_fdc_device_base, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd_fdc_device_base, write));
}
//-------------------------------------------------
diff --git a/src/devices/bus/bbc/fdc/watford.h b/src/devices/bus/bbc/fdc/watford.h
index 9a29ee79777..09b3a846a9a 100644
--- a/src/devices/bus/bbc/fdc/watford.h
+++ b/src/devices/bus/bbc/fdc/watford.h
@@ -6,9 +6,10 @@
**********************************************************************/
+#ifndef MAME_BUS_BBC_FDC_WATFORD_H
+#define MAME_BUS_BBC_FDC_WATFORD_H
-#ifndef __BBC_WATFORD__
-#define __BBC_WATFORD__
+#pragma once
#include "fdc.h"
#include "machine/wd_fdc.h"
@@ -25,13 +26,14 @@ class bbc_watfordfdc_device :
{
public:
- // construction/destruction
- bbc_watfordfdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
DECLARE_FLOPPY_FORMATS(floppy_formats);
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
+
+protected:
+ // construction/destruction
+ bbc_watfordfdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
class bbc_weddb2_device : public bbc_watfordfdc_device
@@ -52,7 +54,7 @@ protected:
private:
required_memory_region m_dfs_rom;
- required_device<wd_fdc_t> m_fdc;
+ required_device<wd_fdc_device_base> m_fdc;
required_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1;
@@ -77,7 +79,7 @@ protected:
private:
required_memory_region m_dfs_rom;
- required_device<wd_fdc_t> m_fdc;
+ required_device<wd_fdc_device_base> m_fdc;
required_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1;
@@ -86,8 +88,8 @@ private:
// device type definition
-extern const device_type BBC_WEDDB2;
-extern const device_type BBC_WEDDB3;
+DECLARE_DEVICE_TYPE(BBC_WEDDB2, bbc_weddb2_device)
+DECLARE_DEVICE_TYPE(BBC_WEDDB3, bbc_weddb3_device)
-#endif /* __BBC_WATFORD__ */
+#endif // MAME_BUS_BBC_FDC_WATFORD_H
diff --git a/src/devices/bus/bbc/joyport/joyport.cpp b/src/devices/bus/bbc/joyport/joyport.cpp
index 872aa0cb5f0..d15f0cb6166 100644
--- a/src/devices/bus/bbc/joyport/joyport.cpp
+++ b/src/devices/bus/bbc/joyport/joyport.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_JOYPORT_SLOT = device_creator<bbc_joyport_slot_device>;
+DEFINE_DEVICE_TYPE(BBC_JOYPORT_SLOT, bbc_joyport_slot_device, "bbc_joyport_slot", "BBC Master Compact Joystick/Mouse port")
//**************************************************************************
@@ -50,8 +50,8 @@ device_bbc_joyport_interface::~device_bbc_joyport_interface()
//-------------------------------------------------
bbc_joyport_slot_device::bbc_joyport_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BBC_JOYPORT_SLOT, "BBC Master Compact Joystick/Mouse port", tag, owner, clock, "bbc_joyport_slot", __FILE__),
- device_slot_interface(mconfig, *this),
+ device_t(mconfig, BBC_JOYPORT_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
m_device(nullptr)
{
}
diff --git a/src/devices/bus/bbc/joyport/joyport.h b/src/devices/bus/bbc/joyport/joyport.h
index 158ce1433f7..43de9d7b0c5 100644
--- a/src/devices/bus/bbc/joyport/joyport.h
+++ b/src/devices/bus/bbc/joyport/joyport.h
@@ -26,10 +26,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BBC_JOYPORT_JOYPORT_H
+#define MAME_BUS_BBC_JOYPORT_JOYPORT_H
-#ifndef __COMPACT_JOYPORT__
-#define __COMPACT_JOYPORT__
+#pragma once
@@ -54,7 +54,6 @@ class bbc_joyport_slot_device : public device_t, public device_slot_interface
public:
// construction/destruction
bbc_joyport_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~bbc_joyport_slot_device() {}
uint8_t cb_r();
uint8_t pb_r();
@@ -74,21 +73,22 @@ class device_bbc_joyport_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_bbc_joyport_interface(const machine_config &mconfig, device_t &device);
virtual ~device_bbc_joyport_interface();
virtual uint8_t cb_r() { return 0xff; }
virtual uint8_t pb_r() { return 0x1f; }
protected:
+ device_bbc_joyport_interface(const machine_config &mconfig, device_t &device);
+
bbc_joyport_slot_device *m_slot;
};
// device type definition
-extern const device_type BBC_JOYPORT_SLOT;
+DECLARE_DEVICE_TYPE(BBC_JOYPORT_SLOT, bbc_joyport_slot_device)
SLOT_INTERFACE_EXTERN( bbc_joyport_devices );
-#endif /* __COMPACT_JOYPORT__ */
+#endif // MAME_BUS_BBC_JOYPORT_JOYPORT_H
diff --git a/src/devices/bus/bbc/joyport/joystick.cpp b/src/devices/bus/bbc/joyport/joystick.cpp
index d4eecd8acaf..ee02a64a56a 100644
--- a/src/devices/bus/bbc/joyport/joystick.cpp
+++ b/src/devices/bus/bbc/joyport/joystick.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBCMC_JOYSTICK = device_creator<bbcmc_joystick_device>;
+DEFINE_DEVICE_TYPE(BBCMC_JOYSTICK, bbcmc_joystick_device, "bbcmc_joystick", "Master Compact Joystick")
static INPUT_PORTS_START( joystick )
@@ -45,9 +45,9 @@ ioport_constructor bbcmc_joystick_device::device_input_ports() const
//-------------------------------------------------
bbcmc_joystick_device::bbcmc_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, BBCMC_JOYSTICK, "Master Compact Joystick", tag, owner, clock, "bbcmc_joystick", __FILE__),
- device_bbc_joyport_interface(mconfig, *this),
- m_joy(*this, "JOY")
+ : device_t(mconfig, BBCMC_JOYSTICK, tag, owner, clock)
+ , device_bbc_joyport_interface(mconfig, *this)
+ , m_joy(*this, "JOY")
{
}
diff --git a/src/devices/bus/bbc/joyport/joystick.h b/src/devices/bus/bbc/joyport/joystick.h
index 4f1c3dba611..bfbc67543df 100644
--- a/src/devices/bus/bbc/joyport/joystick.h
+++ b/src/devices/bus/bbc/joyport/joystick.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BBC_JOYPORT_JOYSTICK_H
+#define MAME_BUS_BBC_JOYPORT_JOYSTICK_H
-#ifndef __BBCMC_JOYSTICK__
-#define __BBCMC_JOYSTICK__
+#pragma once
#include "joyport.h"
@@ -45,7 +45,7 @@ private:
// device type definition
-extern const device_type BBCMC_JOYSTICK;
+DECLARE_DEVICE_TYPE(BBCMC_JOYSTICK, bbcmc_joystick_device)
-#endif
+#endif // MAME_BUS_BBC_JOYPORT_JOYSTICK_H
diff --git a/src/devices/bus/bbc/tube/tube.cpp b/src/devices/bus/bbc/tube/tube.cpp
index 694cecfc2f3..5404402c0c6 100644
--- a/src/devices/bus/bbc/tube/tube.cpp
+++ b/src/devices/bus/bbc/tube/tube.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BBC_TUBE_SLOT = device_creator<bbc_tube_slot_device>;
+DEFINE_DEVICE_TYPE(BBC_TUBE_SLOT, bbc_tube_slot_device, "bbc_tube_slot", "BBC Micro Tube port")
@@ -53,8 +53,8 @@ device_bbc_tube_interface::~device_bbc_tube_interface()
//-------------------------------------------------
bbc_tube_slot_device::bbc_tube_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BBC_TUBE_SLOT, "BBC Micro Tube port", tag, owner, clock, "bbc_tube_slot", __FILE__),
- device_slot_interface(mconfig, *this)
+ device_t(mconfig, BBC_TUBE_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/bbc/tube/tube.h b/src/devices/bus/bbc/tube/tube.h
index 0828577de1d..404b9312902 100644
--- a/src/devices/bus/bbc/tube/tube.h
+++ b/src/devices/bus/bbc/tube/tube.h
@@ -31,10 +31,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BBC_TUBE_TUBE_H
+#define MAME_BUS_BBC_TUBE_TUBE_H
-#ifndef __BBC_TUBE_SLOT__
-#define __BBC_TUBE_SLOT__
+#pragma once
@@ -66,21 +66,17 @@
class device_bbc_tube_interface;
-class bbc_tube_slot_device : public device_t,
- public device_slot_interface
+class bbc_tube_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
bbc_tube_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~bbc_tube_slot_device() {}
-
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-
device_bbc_tube_interface *m_card;
};
@@ -91,19 +87,20 @@ class device_bbc_tube_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_bbc_tube_interface(const machine_config &mconfig, device_t &device);
virtual ~device_bbc_tube_interface();
protected:
+ device_bbc_tube_interface(const machine_config &mconfig, device_t &device);
+
bbc_tube_slot_device *m_slot;
};
// device type definition
-extern const device_type BBC_TUBE_SLOT;
+DECLARE_DEVICE_TYPE(BBC_TUBE_SLOT, bbc_tube_slot_device)
SLOT_INTERFACE_EXTERN( bbc_tube_ext_devices );
SLOT_INTERFACE_EXTERN( bbc_tube_int_devices );
-#endif
+#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 ed6858a20a6..51591bbe85e 100644
--- a/src/devices/bus/bbc/userport/userport.cpp
+++ b/src/devices/bus/bbc/userport/userport.cpp
@@ -14,7 +14,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type BBC_USERPORT_SLOT = device_creator<bbc_userport_device>;
+DEFINE_DEVICE_TYPE(BBC_USERPORT_SLOT, bbc_userport_device, "bbc_userport_slot", "BBC Micro User port")
@@ -52,8 +52,8 @@ device_bbc_userport_interface::~device_bbc_userport_interface()
//-------------------------------------------------
bbc_userport_device::bbc_userport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BBC_USERPORT_SLOT, "BBC Micro User port", tag, owner, clock, "bbc_userport_slot", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr)
+ device_t(mconfig, BBC_USERPORT_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this), m_device(nullptr)
{
}
diff --git a/src/devices/bus/bbc/userport/userport.h b/src/devices/bus/bbc/userport/userport.h
index 6258e57324c..0db9464af32 100644
--- a/src/devices/bus/bbc/userport/userport.h
+++ b/src/devices/bus/bbc/userport/userport.h
@@ -25,10 +25,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BBC_USERPORT_USERPORT_H
+#define MAME_BUS_BBC_USERPORT_USERPORT_H
-#ifndef __BBC_USERPORT_SLOT__
-#define __BBC_USERPORT_SLOT__
+#pragma once
//**************************************************************************
@@ -43,7 +43,6 @@ class device_bbc_userport_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_bbc_userport_interface(const machine_config &mconfig, device_t &device);
virtual ~device_bbc_userport_interface();
virtual uint8_t read_portb() { return 0xff; };
@@ -51,6 +50,8 @@ public:
virtual uint8_t read_cb2() { return 0xff; };
protected:
+ device_bbc_userport_interface(const machine_config &mconfig, device_t &device);
+
bbc_userport_device *m_slot;
};
@@ -62,7 +63,6 @@ class bbc_userport_device : public device_t,
public:
// construction/destruction
bbc_userport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~bbc_userport_device() {}
uint8_t read_portb();
uint8_t read_cb1();
@@ -76,7 +76,7 @@ protected:
};
// device type definition
-extern const device_type BBC_USERPORT_SLOT;
+DECLARE_DEVICE_TYPE(BBC_USERPORT_SLOT, bbc_userport_device)
//**************************************************************************
@@ -100,4 +100,4 @@ extern const device_type BBC_USERPORT_SLOT;
SLOT_INTERFACE_EXTERN( bbc_userport_devices );
-#endif
+#endif // MAME_BUS_BBC_USERPORT_USERPORT_H
diff --git a/src/devices/bus/bml3/bml3bus.cpp b/src/devices/bus/bml3/bml3bus.cpp
index 8bbc443672a..fc427756876 100644
--- a/src/devices/bus/bml3/bml3bus.cpp
+++ b/src/devices/bus/bml3/bml3bus.cpp
@@ -50,7 +50,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type BML3BUS_SLOT = device_creator<bml3bus_slot_device>;
+DEFINE_DEVICE_TYPE(BML3BUS_SLOT, bml3bus_slot_device, "bml3bus_slot", "Hitachi MB-6890 Slot")
//**************************************************************************
// LIVE DEVICE
@@ -60,14 +60,13 @@ const device_type BML3BUS_SLOT = device_creator<bml3bus_slot_device>;
// bml3bus_slot_device - constructor
//-------------------------------------------------
bml3bus_slot_device::bml3bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BML3BUS_SLOT, "Hitachi MB-6890 Slot", tag, owner, clock, "bml3bus_slot", __FILE__),
- device_slot_interface(mconfig, *this), m_bml3bus_tag(nullptr), m_bml3bus_slottag(nullptr)
+ bml3bus_slot_device(mconfig, BML3BUS_SLOT, tag, owner, clock)
{
}
-bml3bus_slot_device::bml3bus_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_interface(mconfig, *this), m_bml3bus_tag(nullptr), m_bml3bus_slottag(nullptr)
+bml3bus_slot_device::bml3bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_slot_interface(mconfig, *this), m_bml3bus_tag(nullptr), m_bml3bus_slottag(nullptr)
{
}
@@ -93,7 +92,7 @@ void bml3bus_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type BML3BUS = device_creator<bml3bus_device>;
+DEFINE_DEVICE_TYPE(BML3BUS, bml3bus_device, "bml3bus", "Hitachi MB-6890 Bus")
void bml3bus_device::static_set_cputag(device_t &device, const char *tag)
{
@@ -110,18 +109,17 @@ void bml3bus_device::static_set_cputag(device_t &device, const char *tag)
//-------------------------------------------------
bml3bus_device::bml3bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BML3BUS, "Hitachi MB-6890 Bus", tag, owner, clock, "bml3bus", __FILE__), m_maincpu(nullptr),
- m_out_nmi_cb(*this),
- m_out_irq_cb(*this),
- m_out_firq_cb(*this), m_cputag(nullptr)
+ bml3bus_device(mconfig, BML3BUS, tag, owner, clock)
{
}
-bml3bus_device::bml3bus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source), m_maincpu(nullptr),
- m_out_nmi_cb(*this),
- m_out_irq_cb(*this),
- m_out_firq_cb(*this), m_cputag(nullptr)
+bml3bus_device::bml3bus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ m_maincpu(nullptr),
+ m_out_nmi_cb(*this),
+ m_out_irq_cb(*this),
+ m_out_firq_cb(*this),
+ m_cputag(nullptr)
{
}
//-------------------------------------------------
diff --git a/src/devices/bus/bml3/bml3bus.h b/src/devices/bus/bml3/bml3bus.h
index 3b90a25fd60..32046d40f57 100644
--- a/src/devices/bus/bml3/bml3bus.h
+++ b/src/devices/bus/bml3/bml3bus.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_BML3_BML3BUS_H
+#define MAME_BUS_BML3_BML3BUS_H
-#ifndef __BML3BUS_H__
-#define __BML3BUS_H__
+#pragma once
#define BML3BUS_MAX_SLOTS 6
@@ -56,20 +56,22 @@ class bml3bus_slot_device : public device_t,
public:
// construction/destruction
bml3bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- bml3bus_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// device-level overrides
virtual void device_start() override;
// inline configuration
static void static_set_bml3bus_slot(device_t &device, const char *tag, const char *slottag);
+
protected:
+ bml3bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// configuration
const char *m_bml3bus_tag, *m_bml3bus_slottag;
};
// device type definition
-extern const device_type BML3BUS_SLOT;
+DECLARE_DEVICE_TYPE(BML3BUS_SLOT, bml3bus_slot_device)
class device_bml3bus_card_interface;
@@ -79,13 +81,12 @@ class bml3bus_device : public device_t
public:
// construction/destruction
bml3bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- bml3bus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// inline configuration
static void static_set_cputag(device_t &device, const char *tag);
- template<class _Object> static devcb_base &set_out_nmi_callback(device_t &device, _Object object) { return downcast<bml3bus_device &>(device).m_out_nmi_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<bml3bus_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_firq_callback(device_t &device, _Object object) { return downcast<bml3bus_device &>(device).m_out_firq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<bml3bus_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<bml3bus_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_firq_callback(device_t &device, Object &&cb) { return downcast<bml3bus_device &>(device).m_out_firq_cb.set_callback(std::forward<Object>(cb)); }
void add_bml3bus_card(int slot, device_bml3bus_card_interface *card);
device_bml3bus_card_interface *get_bml3bus_card(int slot);
@@ -99,6 +100,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( firq_w );
protected:
+ bml3bus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -116,7 +119,7 @@ protected:
// device type definition
-extern const device_type BML3BUS;
+DECLARE_DEVICE_TYPE(BML3BUS, bml3bus_device)
// ======================> device_bml3bus_card_interface
@@ -126,7 +129,6 @@ class device_bml3bus_card_interface : public device_slot_card_interface
friend class bml3bus_device;
public:
// construction/destruction
- device_bml3bus_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_bml3bus_card_interface();
device_bml3bus_card_interface *next() const { return m_next; }
@@ -142,11 +144,14 @@ public:
// inline configuration
static void static_set_bml3bus_tag(device_t &device, const char *tag, const char *slottag);
-public:
+
+protected:
+ device_bml3bus_card_interface(const machine_config &mconfig, device_t &device);
+
bml3bus_device *m_bml3bus;
const char *m_bml3bus_tag, *m_bml3bus_slottag;
int m_slot;
device_bml3bus_card_interface *m_next;
};
-#endif /* __BML3BUS_H__ */
+#endif // MAME_BUS_BML3_BML3BUS_H
diff --git a/src/devices/bus/bml3/bml3kanji.cpp b/src/devices/bus/bml3/bml3kanji.cpp
index 753b0665f19..a3e214fcab3 100644
--- a/src/devices/bus/bml3/bml3kanji.cpp
+++ b/src/devices/bus/bml3/bml3kanji.cpp
@@ -20,7 +20,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type BML3BUS_KANJI = device_creator<bml3bus_kanji_device>;
+DEFINE_DEVICE_TYPE(BML3BUS_KANJI, bml3bus_kanji_device, "bml3kanji", "Hitachi MP-9740 Kanji Character ROM Card")
#define KANJI_ROM_REGION "kanji_rom"
@@ -73,7 +73,7 @@ WRITE8_MEMBER( bml3bus_kanji_device::bml3_kanji_w )
//**************************************************************************
bml3bus_kanji_device::bml3bus_kanji_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BML3BUS_KANJI, "Hitachi MP-9740 Kanji Character ROM Card", tag, owner, clock, "bml3kanji", __FILE__),
+ device_t(mconfig, BML3BUS_KANJI, tag, owner, clock),
device_bml3bus_card_interface(mconfig, *this), m_kanji_addr(0), m_rom(nullptr)
{
}
diff --git a/src/devices/bus/bml3/bml3kanji.h b/src/devices/bus/bml3/bml3kanji.h
index 1472f82d40b..f8ada6a420f 100644
--- a/src/devices/bus/bml3/bml3kanji.h
+++ b/src/devices/bus/bml3/bml3kanji.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __BML3BUS_KANJI__
-#define __BML3BUS_KANJI__
+#ifndef MAME_BUS_BML3_BML3KANJI_H
+#define MAME_BUS_BML3_BML3KANJI_H
+
+#pragma once
#include "bml3bus.h"
@@ -43,6 +45,6 @@ private:
};
// device type definition
-extern const device_type BML3BUS_KANJI;
+DECLARE_DEVICE_TYPE(BML3BUS_KANJI, bml3bus_kanji_device)
-#endif /* __BML3BUS_KANJI__ */
+#endif // MAME_BUS_BML3_BML3KANJI_H
diff --git a/src/devices/bus/bml3/bml3mp1802.cpp b/src/devices/bus/bml3/bml3mp1802.cpp
index 201e28b87fc..ab51c2dd291 100644
--- a/src/devices/bus/bml3/bml3mp1802.cpp
+++ b/src/devices/bus/bml3/bml3mp1802.cpp
@@ -21,7 +21,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type BML3BUS_MP1802 = device_creator<bml3bus_mp1802_device>;
+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)
@@ -107,7 +107,7 @@ WRITE8_MEMBER( bml3bus_mp1802_device::bml3_mp1802_w)
//**************************************************************************
bml3bus_mp1802_device::bml3bus_mp1802_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BML3BUS_MP1802, "Hitachi MP-1802 Floppy Controller Card", tag, owner, clock, "bml3mp1802", __FILE__),
+ device_t(mconfig, BML3BUS_MP1802, tag, owner, clock),
device_bml3bus_card_interface(mconfig, *this),
m_fdc(*this, "fdc"),
m_floppy0(*this, "fdc:0"),
@@ -131,7 +131,7 @@ void bml3bus_mp1802_device::device_start()
// install into memory
address_space &space_prg = machine().firstcpu->space(AS_PROGRAM);
- space_prg.install_readwrite_handler(0xff00, 0xff03, read8_delegate(FUNC(mb8866_t::read),(mb8866_t*)m_fdc), write8_delegate(FUNC(mb8866_t::write),(mb8866_t*)m_fdc));
+ space_prg.install_readwrite_handler(0xff00, 0xff03, read8_delegate(FUNC(mb8866_device::read),(mb8866_device*)m_fdc), write8_delegate(FUNC(mb8866_device::write),(mb8866_device*)m_fdc));
space_prg.install_readwrite_handler(0xff04, 0xff04, read8_delegate(FUNC(bml3bus_mp1802_device::bml3_mp1802_r), this), write8_delegate(FUNC(bml3bus_mp1802_device::bml3_mp1802_w), this));
// overwriting the main ROM (rather than using e.g. install_rom) should mean that bank switches for RAM expansion still work...
uint8_t *mainrom = device().machine().root_device().memregion("maincpu")->base();
diff --git a/src/devices/bus/bml3/bml3mp1802.h b/src/devices/bus/bml3/bml3mp1802.h
index 27e109fc67d..7d519ebca75 100644
--- a/src/devices/bus/bml3/bml3mp1802.h
+++ b/src/devices/bus/bml3/bml3mp1802.h
@@ -9,8 +9,10 @@
*********************************************************************/
-#ifndef __BML3BUS_MP1802__
-#define __BML3BUS_MP1802__
+#ifndef MAME_BUS_BML3_BML3MP1802_H
+#define MAME_BUS_BML3_BML3MP1802_H
+
+#pragma once
#include "bml3bus.h"
#include "imagedev/flopdrv.h"
@@ -42,7 +44,7 @@ protected:
virtual void device_reset() override;
private:
- required_device<mb8866_t> m_fdc;
+ required_device<mb8866_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device<floppy_connector> m_floppy2;
@@ -53,5 +55,6 @@ private:
// device type definition
extern const device_type BML3BUS_MP1802;
+DECLARE_DEVICE_TYPE(BML3BUS_MP1802, bml3bus_mp1802_device)
-#endif /* __BML3BUS_MP1802__ */
+#endif // MAME_BUS_BML3_BML3MP1802_H
diff --git a/src/devices/bus/bml3/bml3mp1805.cpp b/src/devices/bus/bml3/bml3mp1805.cpp
index dc8b9e58551..5e72bd13b26 100644
--- a/src/devices/bus/bml3/bml3mp1805.cpp
+++ b/src/devices/bus/bml3/bml3mp1805.cpp
@@ -21,7 +21,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type BML3BUS_MP1805 = device_creator<bml3bus_mp1805_device>;
+DEFINE_DEVICE_TYPE(BML3BUS_MP1805, bml3bus_mp1805_device, "bml3mp1805", "Hitachi MP-1805 Floppy Controller Card")
static const floppy_interface bml3_mp1805_floppy_interface =
{
@@ -138,7 +138,7 @@ WRITE8_MEMBER( bml3bus_mp1805_device::bml3_mp1805_w)
//**************************************************************************
bml3bus_mp1805_device::bml3bus_mp1805_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BML3BUS_MP1805, "Hitachi MP-1805 Floppy Controller Card", tag, owner, clock, "bml3mp1805", __FILE__),
+ device_t(mconfig, BML3BUS_MP1805, tag, owner, clock),
device_bml3bus_card_interface(mconfig, *this),
m_mc6843(*this, "mc6843"), m_rom(nullptr)
{
diff --git a/src/devices/bus/bml3/bml3mp1805.h b/src/devices/bus/bml3/bml3mp1805.h
index 6ea64bc2956..19d8cbdc9fe 100644
--- a/src/devices/bus/bml3/bml3mp1805.h
+++ b/src/devices/bus/bml3/bml3mp1805.h
@@ -9,8 +9,10 @@
*********************************************************************/
-#ifndef __BML3BUS_MP1805__
-#define __BML3BUS_MP1805__
+#ifndef MAME_BUS_BML3_BML3MP1805_H
+#define MAME_BUS_BML3_BML3MP1805_H
+
+#pragma once
#include "bml3bus.h"
#include "imagedev/flopdrv.h"
@@ -48,6 +50,6 @@ private:
};
// device type definition
-extern const device_type BML3BUS_MP1805;
+DECLARE_DEVICE_TYPE(BML3BUS_MP1805, bml3bus_mp1805_device)
-#endif /* __BML3BUS_MP1805__ */
+#endif // MAME_BUS_BML3_BML3MP1805_H
diff --git a/src/devices/bus/bw2/exp.cpp b/src/devices/bus/bw2/exp.cpp
index 4002d5df709..94e7a616460 100644
--- a/src/devices/bus/bw2/exp.cpp
+++ b/src/devices/bus/bw2/exp.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type BW2_EXPANSION_SLOT = device_creator<bw2_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(BW2_EXPANSION_SLOT, bw2_expansion_slot_device, "bw2_expansion_slot", "Bondwell 2 expansion port")
@@ -53,7 +53,7 @@ device_bw2_expansion_slot_interface::~device_bw2_expansion_slot_interface()
//-------------------------------------------------
bw2_expansion_slot_device::bw2_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BW2_EXPANSION_SLOT, "Bondwell 2 expansion port", tag, owner, clock, "bw2_expansion_slot", __FILE__),
+ device_t(mconfig, BW2_EXPANSION_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/bw2/exp.h b/src/devices/bus/bw2/exp.h
index 1be10d400e7..fe4e51298a2 100644
--- a/src/devices/bus/bw2/exp.h
+++ b/src/devices/bus/bw2/exp.h
@@ -34,10 +34,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BW2_EXP_H
+#define MAME_BUS_BW2_EXP_H
-#ifndef __BW2_EXPANSION_SLOT__
-#define __BW2_EXPANSION_SLOT__
+#pragma once
@@ -102,7 +102,6 @@ class device_bw2_expansion_slot_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_bw2_expansion_slot_interface(const machine_config &mconfig, device_t &device);
virtual ~device_bw2_expansion_slot_interface();
virtual uint8_t bw2_cd_r(address_space &space, offs_t offset, uint8_t data, int ram2, int ram3, int ram4, int ram5, int ram6) { return data; };
@@ -115,16 +114,17 @@ public:
virtual void bw2_modsel_w(address_space &space, offs_t offset, uint8_t data) { }
protected:
+ device_bw2_expansion_slot_interface(const machine_config &mconfig, device_t &device);
+
bw2_expansion_slot_device *m_slot;
};
// device type definition
-extern const device_type BW2_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(BW2_EXPANSION_SLOT, bw2_expansion_slot_device)
SLOT_INTERFACE_EXTERN( bw2_expansion_cards );
-
-#endif
+#endif // MAME_BUS_BW2_EXP_H
diff --git a/src/devices/bus/bw2/ramcard.cpp b/src/devices/bus/bw2/ramcard.cpp
index 6e66de49933..b59159cd5b1 100644
--- a/src/devices/bus/bw2/ramcard.cpp
+++ b/src/devices/bus/bw2/ramcard.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type BW2_RAMCARD = device_creator<bw2_ramcard_device>;
+DEFINE_DEVICE_TYPE(BW2_RAMCARD, bw2_ramcard_device, "bw2_ramcard", "Bondwell 2 RAMCARD")
//-------------------------------------------------
@@ -48,7 +48,7 @@ const tiny_rom_entry *bw2_ramcard_device::device_rom_region() const
//-------------------------------------------------
bw2_ramcard_device::bw2_ramcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, BW2_RAMCARD, "RAMCARD", tag, owner, clock, "bw2_ramcard", __FILE__),
+ : device_t(mconfig, BW2_RAMCARD, tag, owner, clock),
device_bw2_expansion_slot_interface(mconfig, *this),
m_rom(*this, "ramcard"),
m_ram(*this, "ram"),
diff --git a/src/devices/bus/bw2/ramcard.h b/src/devices/bus/bw2/ramcard.h
index 260dc423e30..9ac2b0433fa 100644
--- a/src/devices/bus/bw2/ramcard.h
+++ b/src/devices/bus/bw2/ramcard.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BW2_RAMCARD_H
+#define MAME_BUS_BW2_RAMCARD_H
-#ifndef __BW2_RAMCARD__
-#define __BW2_RAMCARD__
+#pragma once
#include "exp.h"
@@ -51,8 +51,8 @@ private:
// device type definition
-extern const device_type BW2_RAMCARD;
+DECLARE_DEVICE_TYPE(BW2_RAMCARD, bw2_ramcard_device)
-#endif
+#endif // MAME_BUS_BW2_RAMCARD_H
diff --git a/src/devices/bus/c64/16kb.cpp b/src/devices/bus/c64/16kb.cpp
index 4c5520950ce..0eaddc9a0f6 100644
--- a/src/devices/bus/c64/16kb.cpp
+++ b/src/devices/bus/c64/16kb.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_16KB = device_creator<c64_16kb_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_16KB, c64_16kb_cartridge_device, "c64_16kb", "C64 16KB EPROM cartridge")
//-------------------------------------------------
@@ -75,7 +75,7 @@ ioport_constructor c64_16kb_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_16kb_cartridge_device::c64_16kb_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_16KB, "C64 16KB EPROM cartridge", tag, owner, clock, "c64_16kb", __FILE__),
+ device_t(mconfig, C64_16KB, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_sw1(*this, "SW1"),
m_low(*this, "roml"),
diff --git a/src/devices/bus/c64/16kb.h b/src/devices/bus/c64/16kb.h
index 4b688b35a0d..f1685ae5956 100644
--- a/src/devices/bus/c64/16kb.h
+++ b/src/devices/bus/c64/16kb.h
@@ -6,15 +6,15 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_16KB_H
+#define MAME_BUS_C64_16KB_H
-#ifndef __C64_16KB__
-#define __C64_16KB__
+#pragma once
+#include "exp.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
-#include "exp.h"
@@ -51,8 +51,6 @@ private:
// device type definition
-extern const device_type C64_16KB;
-
-
+DECLARE_DEVICE_TYPE(C64_16KB, c64_16kb_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_16KB_H
diff --git a/src/devices/bus/c64/4dxh.cpp b/src/devices/bus/c64/4dxh.cpp
index 3cd731215fd..4273388543b 100644
--- a/src/devices/bus/c64/4dxh.cpp
+++ b/src/devices/bus/c64/4dxh.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_4DXH = device_creator<c64_4dxh_device>;
+DEFINE_DEVICE_TYPE(C64_4DXH, c64_4dxh_device, "c64_4dxh", "C64 DXH 4-Player Adapter")
//-------------------------------------------------
@@ -63,7 +63,7 @@ ioport_constructor c64_4dxh_device::device_input_ports() const
//-------------------------------------------------
c64_4dxh_device::c64_4dxh_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_4DXH, "C64 DXH 4-Player Adapter", tag, owner, clock, "c64_4dxh", __FILE__),
+ device_t(mconfig, C64_4DXH, tag, owner, clock),
device_pet_user_port_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/4dxh.h b/src/devices/bus/c64/4dxh.h
index 2360307e26b..4f84231bf03 100644
--- a/src/devices/bus/c64/4dxh.h
+++ b/src/devices/bus/c64/4dxh.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_4DXH_H
+#define MAME_BUS_C64_4DXH_H
-#ifndef __C64_4DXH__
-#define __C64_4DXH__
+#pragma once
#include "user.h"
@@ -43,7 +43,7 @@ protected:
// device type definition
-extern const device_type C64_4DXH;
+DECLARE_DEVICE_TYPE(C64_4DXH, c64_4dxh_device)
-#endif
+#endif // MAME_BUS_C64_4DXH_H
diff --git a/src/devices/bus/c64/4ksa.cpp b/src/devices/bus/c64/4ksa.cpp
index a3f47f48405..39a86b6b17c 100644
--- a/src/devices/bus/c64/4ksa.cpp
+++ b/src/devices/bus/c64/4ksa.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_4KSA = device_creator<c64_4ksa_device>;
+DEFINE_DEVICE_TYPE(C64_4KSA, c64_4ksa_device, "c64_4ksa", "C64 Kingsoft 4-Player Adapter")
//-------------------------------------------------
@@ -63,7 +63,7 @@ ioport_constructor c64_4ksa_device::device_input_ports() const
//-------------------------------------------------
c64_4ksa_device::c64_4ksa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_4KSA, "C64 Kingsoft 4-Player Adapter", tag, owner, clock, "c64_4ksa", __FILE__),
+ device_t(mconfig, C64_4KSA, tag, owner, clock),
device_pet_user_port_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/4ksa.h b/src/devices/bus/c64/4ksa.h
index 7d9594cb4b3..7dc8676a6a8 100644
--- a/src/devices/bus/c64/4ksa.h
+++ b/src/devices/bus/c64/4ksa.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_4KSA_H
+#define MAME_BUS_C64_4KSA_H
-#ifndef __C64_4KSA__
-#define __C64_4KSA__
+#pragma once
#include "user.h"
@@ -43,7 +43,7 @@ protected:
// device type definition
-extern const device_type C64_4KSA;
+DECLARE_DEVICE_TYPE(C64_4KSA, c64_4ksa_device)
-#endif
+#endif // MAME_BUS_C64_4KSA_H
diff --git a/src/devices/bus/c64/4tba.cpp b/src/devices/bus/c64/4tba.cpp
index 7f4adc76bce..4fc58cb0d49 100644
--- a/src/devices/bus/c64/4tba.cpp
+++ b/src/devices/bus/c64/4tba.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_4TBA = device_creator<c64_4tba_device>;
+DEFINE_DEVICE_TYPE(C64_4TBA, c64_4tba_device, "c64_4tba", "C64 Tie Break Adapter")
//-------------------------------------------------
@@ -63,7 +63,7 @@ ioport_constructor c64_4tba_device::device_input_ports() const
//-------------------------------------------------
c64_4tba_device::c64_4tba_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_4TBA, "C64 Tie Break Adapter", tag, owner, clock, "c64_4tba", __FILE__),
+ device_t(mconfig, C64_4TBA, tag, owner, clock),
device_pet_user_port_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/4tba.h b/src/devices/bus/c64/4tba.h
index 01b185248dd..f96716c4839 100644
--- a/src/devices/bus/c64/4tba.h
+++ b/src/devices/bus/c64/4tba.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_4TBA_H
+#define MAME_BUS_C64_4TBA_H
-#ifndef __C64_4TBA__
-#define __C64_4TBA__
+#pragma once
#include "user.h"
@@ -43,7 +43,6 @@ protected:
// device type definition
-extern const device_type C64_4TBA;
-
+DECLARE_DEVICE_TYPE(C64_4TBA, c64_4tba_device)
-#endif
+#endif // MAME_BUS_C64_4TBA_H
diff --git a/src/devices/bus/c64/bn1541.cpp b/src/devices/bus/c64/bn1541.cpp
index bd3fc5a270b..dbb5fc4bb1a 100644
--- a/src/devices/bus/c64/bn1541.cpp
+++ b/src/devices/bus/c64/bn1541.cpp
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_BN1541 = device_creator<c64_bn1541_device>;
+DEFINE_DEVICE_TYPE(C64_BN1541, c64_bn1541_device, "c64_bn1541", "C64 Burst Nibbler 1541/1571 Parallel Cable")
@@ -62,7 +62,7 @@ device_c64_floppy_parallel_interface::~device_c64_floppy_parallel_interface()
//-------------------------------------------------
c64_bn1541_device::c64_bn1541_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_BN1541, "C64 Burst Nibbler 1541/1571 Parallel Cable", tag, owner, clock, "c64_bn1541", __FILE__),
+ device_t(mconfig, C64_BN1541, tag, owner, clock),
device_pet_user_port_interface(mconfig, *this),
device_c64_floppy_parallel_interface(mconfig, *this), m_parallel_output(0)
{
diff --git a/src/devices/bus/c64/bn1541.h b/src/devices/bus/c64/bn1541.h
index 9859b272bd7..1865adda460 100644
--- a/src/devices/bus/c64/bn1541.h
+++ b/src/devices/bus/c64/bn1541.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_BN1541_H
+#define MAME_BUS_C64_BN1541_H
-#ifndef __C64_BN1541__
-#define __C64_BN1541__
+#pragma once
#include "user.h"
@@ -75,7 +75,7 @@ private:
// device type definition
-extern const device_type C64_BN1541;
+DECLARE_DEVICE_TYPE(C64_BN1541, c64_bn1541_device)
-#endif
+#endif // MAME_BUS_C64_BN1541_H
diff --git a/src/devices/bus/c64/c128_comal80.cpp b/src/devices/bus/c64/c128_comal80.cpp
index 9f0e8a03954..234a3499a19 100644
--- a/src/devices/bus/c64/c128_comal80.cpp
+++ b/src/devices/bus/c64/c128_comal80.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C128_COMAL80 = device_creator<c128_comal80_cartridge_device>;
+DEFINE_DEVICE_TYPE(C128_COMAL80, c128_comal80_cartridge_device, "c128_comal80", "C128 COMAL 80 cartridge")
@@ -28,7 +28,7 @@ const device_type C128_COMAL80 = device_creator<c128_comal80_cartridge_device>;
//-------------------------------------------------
c128_comal80_cartridge_device::c128_comal80_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C128_COMAL80, "C128 COMAL 80 cartridge", tag, owner, clock, "c128_comal80", __FILE__),
+ device_t(mconfig, C128_COMAL80, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/c128_comal80.h b/src/devices/bus/c64/c128_comal80.h
index 58d92837f11..c141cffb69e 100644
--- a/src/devices/bus/c64/c128_comal80.h
+++ b/src/devices/bus/c64/c128_comal80.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_C128_COMAL80_H
+#define MAME_BUS_C64_C128_COMAL80_H
-#ifndef __C128_COMAL80__
-#define __C128_COMAL80__
+#pragma once
#include "exp.h"
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type C128_COMAL80;
+DECLARE_DEVICE_TYPE(C128_COMAL80, c128_comal80_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_C128_COMAL80_H
diff --git a/src/devices/bus/c64/c128_partner.cpp b/src/devices/bus/c64/c128_partner.cpp
index 3be09f7f258..d5e74cc43cb 100644
--- a/src/devices/bus/c64/c128_partner.cpp
+++ b/src/devices/bus/c64/c128_partner.cpp
@@ -37,14 +37,14 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C128_PARTNER = device_creator<partner128_t>;
+DEFINE_DEVICE_TYPE(C128_PARTNER, c128_partner_cartridge_device, "c128_partner", "PARTNER 128 cartridge")
//-------------------------------------------------
// INPUT_PORTS( c128_partner )
//-------------------------------------------------
-WRITE_LINE_MEMBER( partner128_t::nmi_w )
+WRITE_LINE_MEMBER( c128_partner_cartridge_device::nmi_w )
{
if (state)
{
@@ -54,7 +54,7 @@ WRITE_LINE_MEMBER( partner128_t::nmi_w )
static INPUT_PORTS_START( c128_partner )
PORT_START("NMI")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Menu") PORT_CODE(KEYCODE_END) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, partner128_t, nmi_w)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Menu") PORT_CODE(KEYCODE_END) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, c128_partner_cartridge_device, nmi_w)
INPUT_PORTS_END
@@ -62,7 +62,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor partner128_t::device_input_ports() const
+ioport_constructor c128_partner_cartridge_device::device_input_ports() const
{
return INPUT_PORTS_NAME( c128_partner );
}
@@ -74,13 +74,12 @@ ioport_constructor partner128_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// partner128_t - constructor
+// c128_partner_cartridge_device - constructor
//-------------------------------------------------
-partner128_t::partner128_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C128_PARTNER, "PARTNER 128", tag, owner, clock, "c128_partner", __FILE__),
+c128_partner_cartridge_device::c128_partner_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, C128_PARTNER, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
- //device_vcs_control_port_interface(mconfig, *this),
m_ram(*this, "ram"), t_joyb2(nullptr),
m_ram_a12_a7(0),
m_ls74_cd(0),
@@ -95,7 +94,7 @@ partner128_t::partner128_t(const machine_config &mconfig, const char *tag, devic
// device_start - device-specific startup
//-------------------------------------------------
-void partner128_t::device_start()
+void c128_partner_cartridge_device::device_start()
{
// allocate memory
m_ram.allocate(0x2000);
@@ -117,7 +116,7 @@ void partner128_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void partner128_t::device_reset()
+void c128_partner_cartridge_device::device_reset()
{
m_ram_a12_a7 = 0;
@@ -133,7 +132,7 @@ void partner128_t::device_reset()
// device_timer -
//-------------------------------------------------
-void partner128_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void c128_partner_cartridge_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
if (m_ls74_cd)
{
@@ -148,7 +147,7 @@ void partner128_t::device_timer(emu_timer &timer, device_timer_id id, int param,
// c64_cd_r - cartridge data read
//-------------------------------------------------
-uint8_t partner128_t::c64_cd_r(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2)
+uint8_t c128_partner_cartridge_device::c64_cd_r(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2)
{
if (!roml)
{
@@ -186,7 +185,7 @@ uint8_t partner128_t::c64_cd_r(address_space &space, offs_t offset, uint8_t data
// c64_cd_w - cartridge data write
//-------------------------------------------------
-void partner128_t::c64_cd_w(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2)
+void c128_partner_cartridge_device::c64_cd_w(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2)
{
if (!io1)
{
@@ -236,7 +235,7 @@ void partner128_t::c64_cd_w(address_space &space, offs_t offset, uint8_t data, i
// vcs_joy_w - joystick write
//-------------------------------------------------
-void partner128_t::vcs_joy_w(uint8_t data)
+void c128_partner_cartridge_device::vcs_joy_w(uint8_t data)
{
int joyb2 = BIT(data, 2);
diff --git a/src/devices/bus/c64/c128_partner.h b/src/devices/bus/c64/c128_partner.h
index f38295f7231..632e526b035 100644
--- a/src/devices/bus/c64/c128_partner.h
+++ b/src/devices/bus/c64/c128_partner.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_C128_PARTNER_H
+#define MAME_BUS_C64_C128_PARTNER_H
-#ifndef __C128_PARTNER__
-#define __C128_PARTNER__
+#pragma once
#include "bus/c64/exp.h"
#include "bus/vcs_ctrl/ctrl.h"
@@ -20,15 +20,15 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> partner128_t
+// ======================> c128_partner_cartridge_device
-class partner128_t : public device_t,
+class c128_partner_cartridge_device : public device_t,
public device_c64_expansion_card_interface
//public device_vcs_control_port_interface
{
public:
// construction/destruction
- partner128_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c128_partner_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
@@ -61,7 +61,7 @@ private:
// device type definition
-extern const device_type C128_PARTNER;
+DECLARE_DEVICE_TYPE(C128_PARTNER, c128_partner_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_C128_PARTNER_H
diff --git a/src/devices/bus/c64/comal80.cpp b/src/devices/bus/c64/comal80.cpp
index f3421510012..24c966eccc1 100644
--- a/src/devices/bus/c64/comal80.cpp
+++ b/src/devices/bus/c64/comal80.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_COMAL80 = device_creator<c64_comal80_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_COMAL80, c64_comal80_cartridge_device, "c64_comal80", "C64 COMAL 80 cartridge")
@@ -28,7 +28,7 @@ const device_type C64_COMAL80 = device_creator<c64_comal80_cartridge_device>;
//-------------------------------------------------
c64_comal80_cartridge_device::c64_comal80_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_COMAL80, "C64 COMAL 80 cartridge", tag, owner, clock, "c64_comal80", __FILE__),
+ device_t(mconfig, C64_COMAL80, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/comal80.h b/src/devices/bus/c64/comal80.h
index 349911eb9bb..fb0ceaad303 100644
--- a/src/devices/bus/c64/comal80.h
+++ b/src/devices/bus/c64/comal80.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_COMAL80_H
+#define MAME_BUS_C64_COMAL80_H
-#ifndef __COMAL80__
-#define __COMAL80__
+#pragma once
#include "exp.h"
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type C64_COMAL80;
+DECLARE_DEVICE_TYPE(C64_COMAL80, c64_comal80_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_COMAL80_H
diff --git a/src/devices/bus/c64/cpm.cpp b/src/devices/bus/c64/cpm.cpp
index 8544938255a..c18d0eff286 100644
--- a/src/devices/bus/c64/cpm.cpp
+++ b/src/devices/bus/c64/cpm.cpp
@@ -33,7 +33,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_CPM = device_creator<c64_cpm_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_CPM, c64_cpm_cartridge_device, "c64_cpm", "C64 CP/M cartridge")
//-------------------------------------------------
@@ -131,7 +131,7 @@ inline void c64_cpm_cartridge_device::update_signals()
//-------------------------------------------------
c64_cpm_cartridge_device::c64_cpm_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_CPM, "C64 CP/M cartridge", tag, owner, clock, "c64_cpm", __FILE__),
+ device_t(mconfig, C64_CPM, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG),
m_enabled(0),
diff --git a/src/devices/bus/c64/cpm.h b/src/devices/bus/c64/cpm.h
index 603465bae88..88e4c172da8 100644
--- a/src/devices/bus/c64/cpm.h
+++ b/src/devices/bus/c64/cpm.h
@@ -6,13 +6,13 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_CPM_H
+#define MAME_BUS_C64_CPM_H
-#ifndef __CPM__
-#define __CPM__
+#pragma once
-#include "cpu/z80/z80.h"
#include "exp.h"
+#include "cpu/z80/z80.h"
@@ -58,7 +58,7 @@ private:
// device type definition
-extern const device_type C64_CPM;
+DECLARE_DEVICE_TYPE(C64_CPM, c64_cpm_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_CPM_H
diff --git a/src/devices/bus/c64/currah_speech.cpp b/src/devices/bus/c64/currah_speech.cpp
index 7deb76db067..f71b9bcebde 100644
--- a/src/devices/bus/c64/currah_speech.cpp
+++ b/src/devices/bus/c64/currah_speech.cpp
@@ -85,7 +85,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_CURRAH_SPEECH = device_creator<c64_currah_speech_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_CURRAH_SPEECH, c64_currah_speech_cartridge_device, "c64_cs", "C64 Currah Speech")
//-------------------------------------------------
@@ -157,7 +157,7 @@ void c64_currah_speech_cartridge_device::set_osc1(int voice, int intonation)
//-------------------------------------------------
c64_currah_speech_cartridge_device::c64_currah_speech_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_CURRAH_SPEECH, "C64 Currah Speech", tag, owner, clock, "c64_cs", __FILE__),
+ device_t(mconfig, C64_CURRAH_SPEECH, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_nsp(*this, SP0256_TAG)
{
diff --git a/src/devices/bus/c64/currah_speech.h b/src/devices/bus/c64/currah_speech.h
index e11afc520fc..ce2e31db8e0 100644
--- a/src/devices/bus/c64/currah_speech.h
+++ b/src/devices/bus/c64/currah_speech.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_CURRAH_SPEECH_H
+#define MAME_BUS_C64_CURRAH_SPEECH_H
-#ifndef __CURRAH_SPEECH_64__
-#define __CURRAH_SPEECH_64__
+#pragma once
#include "exp.h"
@@ -51,7 +51,7 @@ private:
// device type definition
-extern const device_type C64_CURRAH_SPEECH;
+DECLARE_DEVICE_TYPE(C64_CURRAH_SPEECH, c64_currah_speech_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_CURRAH_SPEECH_H
diff --git a/src/devices/bus/c64/dela_ep256.cpp b/src/devices/bus/c64/dela_ep256.cpp
index 2dd9c890d44..04bd9137363 100644
--- a/src/devices/bus/c64/dela_ep256.cpp
+++ b/src/devices/bus/c64/dela_ep256.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_DELA_EP256 = device_creator<c64_dela_ep256_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_DELA_EP256, c64_dela_ep256_cartridge_device, "delep256", "C64 Dela 256KB EPROM cartridge")
//-------------------------------------------------
@@ -63,7 +63,7 @@ machine_config_constructor c64_dela_ep256_cartridge_device::device_mconfig_addit
//-------------------------------------------------
c64_dela_ep256_cartridge_device::c64_dela_ep256_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_DELA_EP256, "C64 Dela 256KB EPROM cartridge", tag, owner, clock, "delep256", __FILE__),
+ device_t(mconfig, C64_DELA_EP256, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
for (int i = 0; i < 8; i++)
diff --git a/src/devices/bus/c64/dela_ep256.h b/src/devices/bus/c64/dela_ep256.h
index 5b7c4413f5d..44b154ae50e 100644
--- a/src/devices/bus/c64/dela_ep256.h
+++ b/src/devices/bus/c64/dela_ep256.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_DELA_EP256_H
+#define MAME_BUS_C64_DELA_EP256_H
-#ifndef __DELA_EP256__
-#define __DELA_EP256__
+#pragma once
#include "exp.h"
@@ -52,8 +52,7 @@ private:
// device type definition
-extern const device_type C64_DELA_EP256;
-
+DECLARE_DEVICE_TYPE(C64_DELA_EP256, c64_dela_ep256_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_DELA_EP256_H
diff --git a/src/devices/bus/c64/dela_ep64.cpp b/src/devices/bus/c64/dela_ep64.cpp
index 65c371a1f8f..b6812f20bf5 100644
--- a/src/devices/bus/c64/dela_ep64.cpp
+++ b/src/devices/bus/c64/dela_ep64.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_DELA_EP64 = device_creator<c64_dela_ep64_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_DELA_EP64, c64_dela_ep64_cartridge_device, "c64_dela_ep64", "C64 Rex 64KB EPROM cartridge")
//-------------------------------------------------
@@ -50,7 +50,7 @@ machine_config_constructor c64_dela_ep64_cartridge_device::device_mconfig_additi
//-------------------------------------------------
c64_dela_ep64_cartridge_device::c64_dela_ep64_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_DELA_EP64, "C64 Rex 64KB EPROM cartridge", tag, owner, clock, "c64_dela_ep64", __FILE__),
+ device_t(mconfig, C64_DELA_EP64, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_eprom1(*this, "eprom1"),
m_eprom2(*this, "eprom2"), m_bank(0), m_reset(0), m_rom0_ce(0), m_rom1_ce(0), m_rom2_ce(0)
diff --git a/src/devices/bus/c64/dela_ep64.h b/src/devices/bus/c64/dela_ep64.h
index 88b1c91ad89..6e7aad548c8 100644
--- a/src/devices/bus/c64/dela_ep64.h
+++ b/src/devices/bus/c64/dela_ep64.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_DELA_EP64_H
+#define MAME_BUS_C64_DELA_EP64_H
-#ifndef __DELA_EP64__
-#define __DELA_EP64__
+#pragma once
#include "bus/generic/slot.h"
@@ -56,8 +56,8 @@ private:
// device type definition
-extern const device_type C64_DELA_EP64;
+DECLARE_DEVICE_TYPE(C64_DELA_EP64, c64_dela_ep64_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_DELA_EP64_H
diff --git a/src/devices/bus/c64/dela_ep7x8.cpp b/src/devices/bus/c64/dela_ep7x8.cpp
index eae8c4ae34b..0f973004ea4 100644
--- a/src/devices/bus/c64/dela_ep7x8.cpp
+++ b/src/devices/bus/c64/dela_ep7x8.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_DELA_EP7X8 = device_creator<c64_dela_ep7x8_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_DELA_EP7X8, c64_dela_ep7x8_cartridge_device, "c64_dela_ep7x8", "C64 Dela 7x8KB EPROM cartridge")
//-------------------------------------------------
@@ -60,7 +60,7 @@ machine_config_constructor c64_dela_ep7x8_cartridge_device::device_mconfig_addit
//-------------------------------------------------
c64_dela_ep7x8_cartridge_device::c64_dela_ep7x8_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_DELA_EP7X8, "C64 Dela 7x8KB EPROM cartridge", tag, owner, clock, "ep7x8", __FILE__),
+ device_t(mconfig, C64_DELA_EP7X8, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_eprom1(*this, "rom1"),
m_eprom2(*this, "rom2"),
diff --git a/src/devices/bus/c64/dela_ep7x8.h b/src/devices/bus/c64/dela_ep7x8.h
index a5f3fd5b4ab..e66cc211bc0 100644
--- a/src/devices/bus/c64/dela_ep7x8.h
+++ b/src/devices/bus/c64/dela_ep7x8.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_DELA_EP7X8_H
+#define MAME_BUS_C64_DELA_EP7X8_H
-#ifndef __DELA_EP7X8__
-#define __DELA_EP7X8__
+#pragma once
#include "bus/generic/slot.h"
@@ -57,8 +57,7 @@ private:
// device type definition
-extern const device_type C64_DELA_EP7X8;
-
+DECLARE_DEVICE_TYPE(C64_DELA_EP7X8, c64_dela_ep7x8_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_DELA_EP7X8_H
diff --git a/src/devices/bus/c64/dinamic.cpp b/src/devices/bus/c64/dinamic.cpp
index ada3ca405ee..8ab60892263 100644
--- a/src/devices/bus/c64/dinamic.cpp
+++ b/src/devices/bus/c64/dinamic.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_DINAMIC = device_creator<c64_dinamic_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_DINAMIC, c64_dinamic_cartridge_device, "c64_dinamic", "C64 Dinamic cartridge")
@@ -28,7 +28,7 @@ const device_type C64_DINAMIC = device_creator<c64_dinamic_cartridge_device>;
//-------------------------------------------------
c64_dinamic_cartridge_device::c64_dinamic_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_DINAMIC, "C64 Dinamic cartridge", tag, owner, clock, "c64_dinamic", __FILE__),
+ device_t(mconfig, C64_DINAMIC, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/dinamic.h b/src/devices/bus/c64/dinamic.h
index acab7b79563..84bd1503503 100644
--- a/src/devices/bus/c64/dinamic.h
+++ b/src/devices/bus/c64/dinamic.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_DINAMIC_H
+#define MAME_BUS_C64_DINAMIC_H
-#ifndef __DINAMIC__
-#define __DINAMIC__
+#pragma once
#include "exp.h"
@@ -43,7 +43,7 @@ private:
// device type definition
-extern const device_type C64_DINAMIC;
+DECLARE_DEVICE_TYPE(C64_DINAMIC, c64_dinamic_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_DINAMIC_H
diff --git a/src/devices/bus/c64/dqbb.cpp b/src/devices/bus/c64/dqbb.cpp
index 31458acb9a2..b9cb32ce1cc 100644
--- a/src/devices/bus/c64/dqbb.cpp
+++ b/src/devices/bus/c64/dqbb.cpp
@@ -24,7 +24,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_DQBB = device_creator<c64_dqbb_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_DQBB, c64_dqbb_cartridge_device, "c64_dqbb", "C64 Double Quick Brown Box cartridge")
@@ -37,7 +37,7 @@ const device_type C64_DQBB = device_creator<c64_dqbb_cartridge_device>;
//-------------------------------------------------
c64_dqbb_cartridge_device::c64_dqbb_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_DQBB, "C64 Double Quick Brown Box cartridge", tag, owner, clock, "c64_dqbb", __FILE__),
+ device_t(mconfig, C64_DQBB, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
device_nvram_interface(mconfig, *this),
m_cs(0),
diff --git a/src/devices/bus/c64/dqbb.h b/src/devices/bus/c64/dqbb.h
index 9a4233dc94e..6c472eb6696 100644
--- a/src/devices/bus/c64/dqbb.h
+++ b/src/devices/bus/c64/dqbb.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_DQBB_H
+#define MAME_BUS_C64_DQBB_H
-#ifndef __DQBB__
-#define __DQBB__
+#pragma once
#include "exp.h"
@@ -52,7 +52,7 @@ private:
// device type definition
-extern const device_type C64_DQBB;
+DECLARE_DEVICE_TYPE(C64_DQBB, c64_dqbb_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_DQBB_H
diff --git a/src/devices/bus/c64/easy_calc_result.cpp b/src/devices/bus/c64/easy_calc_result.cpp
index dd24e20d013..4ddd4cbdac0 100644
--- a/src/devices/bus/c64/easy_calc_result.cpp
+++ b/src/devices/bus/c64/easy_calc_result.cpp
@@ -36,7 +36,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_EASY_CALC_RESULT = device_creator<c64_easy_calc_result_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_EASY_CALC_RESULT, c64_easy_calc_result_cartridge_device, "c64_easy_calc_result", "C64 Easy Calc Result cartridge")
@@ -49,7 +49,7 @@ const device_type C64_EASY_CALC_RESULT = device_creator<c64_easy_calc_result_car
//-------------------------------------------------
c64_easy_calc_result_cartridge_device::c64_easy_calc_result_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_EASY_CALC_RESULT, "C64 Easy Calc Result cartridge", tag, owner, clock, "c64_easy_calc_result", __FILE__),
+ device_t(mconfig, C64_EASY_CALC_RESULT, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this), m_bank(0)
{
}
diff --git a/src/devices/bus/c64/easy_calc_result.h b/src/devices/bus/c64/easy_calc_result.h
index 51b5b053e64..377bbd12b17 100644
--- a/src/devices/bus/c64/easy_calc_result.h
+++ b/src/devices/bus/c64/easy_calc_result.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_EASY_CALC_RESULT_H
+#define MAME_BUS_C64_EASY_CALC_RESULT_H
-#ifndef __EASY_CALC_RESULT__
-#define __EASY_CALC_RESULT__
+#pragma once
#include "exp.h"
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type C64_EASY_CALC_RESULT;
+DECLARE_DEVICE_TYPE(C64_EASY_CALC_RESULT, c64_easy_calc_result_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_EASY_CALC_RESULT_H
diff --git a/src/devices/bus/c64/easyflash.cpp b/src/devices/bus/c64/easyflash.cpp
index edc7c4c3cff..04abd50a7fe 100644
--- a/src/devices/bus/c64/easyflash.cpp
+++ b/src/devices/bus/c64/easyflash.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_EASYFLASH = device_creator<c64_easyflash_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_EASYFLASH, c64_easyflash_cartridge_device, "c64_easyflash", "C64 EasyFlash cartridge")
//-------------------------------------------------
@@ -82,7 +82,7 @@ ioport_constructor c64_easyflash_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_easyflash_cartridge_device::c64_easyflash_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_EASYFLASH, "C64 EasyFlash cartridge", tag, owner, clock, "c64_easyflash", __FILE__),
+ device_t(mconfig, C64_EASYFLASH, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_flash_roml(*this, AM29F040_0_TAG),
m_flash_romh(*this, AM29F040_1_TAG),
diff --git a/src/devices/bus/c64/easyflash.h b/src/devices/bus/c64/easyflash.h
index aa28f13d23d..9760a247319 100644
--- a/src/devices/bus/c64/easyflash.h
+++ b/src/devices/bus/c64/easyflash.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_EASYFLASH_H
+#define MAME_BUS_C64_EASYFLASH_H
-#ifndef __EASYFLASH__
-#define __EASYFLASH__
+#pragma once
#include "exp.h"
@@ -57,7 +57,7 @@ private:
// device type definition
-extern const device_type C64_EASYFLASH;
+DECLARE_DEVICE_TYPE(C64_EASYFLASH, c64_easyflash_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_EASYFLASH_H
diff --git a/src/devices/bus/c64/epyx_fast_load.cpp b/src/devices/bus/c64/epyx_fast_load.cpp
index 75e4f7e2a35..d119091555b 100644
--- a/src/devices/bus/c64/epyx_fast_load.cpp
+++ b/src/devices/bus/c64/epyx_fast_load.cpp
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_EPYX_FAST_LOAD = device_creator<c64_epyx_fast_load_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_EPYX_FAST_LOAD, c64_epyx_fast_load_cartridge_device, "c64_epyx_fast_load", "C64 Epyx Fast Load cartridge")
@@ -38,7 +38,7 @@ const device_type C64_EPYX_FAST_LOAD = device_creator<c64_epyx_fast_load_cartrid
//-------------------------------------------------
c64_epyx_fast_load_cartridge_device::c64_epyx_fast_load_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_EPYX_FAST_LOAD, "C64 Epyx Fast Load cartridge", tag, owner, clock, "c64_epyx_fast_load", __FILE__),
+ device_t(mconfig, C64_EPYX_FAST_LOAD, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this), m_exrom_timer(nullptr)
{
}
diff --git a/src/devices/bus/c64/epyx_fast_load.h b/src/devices/bus/c64/epyx_fast_load.h
index cede6124a40..42f04254703 100644
--- a/src/devices/bus/c64/epyx_fast_load.h
+++ b/src/devices/bus/c64/epyx_fast_load.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_EPYX_FAST_LOAD_H
+#define MAME_BUS_C64_EPYX_FAST_LOAD_H
-#ifndef __EPYX_FAST_LOAD__
-#define __EPYX_FAST_LOAD__
+#pragma once
#include "exp.h"
@@ -45,7 +45,7 @@ private:
// device type definition
-extern const device_type C64_EPYX_FAST_LOAD;
+DECLARE_DEVICE_TYPE(C64_EPYX_FAST_LOAD, c64_epyx_fast_load_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_EPYX_FAST_LOAD_H
diff --git a/src/devices/bus/c64/exos.cpp b/src/devices/bus/c64/exos.cpp
index 5c2d51d864a..5c41cd7d6d3 100644
--- a/src/devices/bus/c64/exos.cpp
+++ b/src/devices/bus/c64/exos.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_EXOS = device_creator<c64_exos_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_EXOS, c64_exos_cartridge_device, "c64_exos", "C64 ExOS cartridge")
@@ -28,7 +28,7 @@ const device_type C64_EXOS = device_creator<c64_exos_cartridge_device>;
//-------------------------------------------------
c64_exos_cartridge_device::c64_exos_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_EXOS, "C64 ExOS cartridge", tag, owner, clock, "c64_exos", __FILE__),
+ device_t(mconfig, C64_EXOS, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/exos.h b/src/devices/bus/c64/exos.h
index 76bb85e1a0b..93872e38e7a 100644
--- a/src/devices/bus/c64/exos.h
+++ b/src/devices/bus/c64/exos.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_EXOS_H
+#define MAME_BUS_C64_EXOS_H
-#ifndef __EXOS__
-#define __EXOS__
+#pragma once
#include "exp.h"
@@ -40,7 +40,7 @@ protected:
// device type definition
-extern const device_type C64_EXOS;
+DECLARE_DEVICE_TYPE(C64_EXOS, c64_exos_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_EXOS_H
diff --git a/src/devices/bus/c64/exp.cpp b/src/devices/bus/c64/exp.cpp
index 9b774ec5d7b..c28c10e82f6 100644
--- a/src/devices/bus/c64/exp.cpp
+++ b/src/devices/bus/c64/exp.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_EXPANSION_SLOT = device_creator<c64_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(C64_EXPANSION_SLOT, c64_expansion_slot_device, "c64_expansion_slot", "C64 expansion port")
@@ -58,7 +58,7 @@ device_c64_expansion_card_interface::~device_c64_expansion_card_interface()
//-------------------------------------------------
c64_expansion_slot_device::c64_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_EXPANSION_SLOT, "C64 expansion port", tag, owner, clock, "c64_expansion_slot", __FILE__),
+ device_t(mconfig, C64_EXPANSION_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
device_image_interface(mconfig, *this),
m_read_dma_cd(*this),
diff --git a/src/devices/bus/c64/exp.h b/src/devices/bus/c64/exp.h
index c73b5281ad6..da1dc08fcb6 100644
--- a/src/devices/bus/c64/exp.h
+++ b/src/devices/bus/c64/exp.h
@@ -31,10 +31,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_EXP_H
+#define MAME_BUS_C64_EXP_H
-#ifndef __C64_EXPANSION_SLOT__
-#define __C64_EXPANSION_SLOT__
+#pragma once
#include "softlist_dev.h"
#include "formats/cbm_crt.h"
@@ -103,12 +103,12 @@ public:
// construction/destruction
c64_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<c64_expansion_slot_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<c64_expansion_slot_device &>(device).m_write_nmi.set_callback(object); }
- template<class _Object> static devcb_base &set_reset_wr_callback(device_t &device, _Object object) { return downcast<c64_expansion_slot_device &>(device).m_write_reset.set_callback(object); }
- template<class _Object> static devcb_base &set_cd_rd_callback(device_t &device, _Object object) { return downcast<c64_expansion_slot_device &>(device).m_read_dma_cd.set_callback(object); }
- template<class _Object> static devcb_base &set_cd_wr_callback(device_t &device, _Object object) { return downcast<c64_expansion_slot_device &>(device).m_write_dma_cd.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_wr_callback(device_t &device, _Object object) { return downcast<c64_expansion_slot_device &>(device).m_write_dma.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_reset_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_reset.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cd_rd_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_read_dma_cd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cd_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_dma_cd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<c64_expansion_slot_device &>(device).m_write_dma.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2);
@@ -170,7 +170,6 @@ class device_c64_expansion_card_interface : public device_slot_card_interface
public:
// construction/destruction
- device_c64_expansion_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_c64_expansion_card_interface();
virtual uint8_t c64_cd_r(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2) { return data; };
@@ -179,6 +178,8 @@ public:
virtual int c64_exrom_r(offs_t offset, int sphi2, int ba, int rw) { return m_exrom; }
protected:
+ device_c64_expansion_card_interface(const machine_config &mconfig, device_t &device);
+
optional_shared_ptr<uint8_t> m_roml;
optional_shared_ptr<uint8_t> m_romh;
optional_shared_ptr<uint8_t> m_nvram;
@@ -191,7 +192,7 @@ protected:
// device type definition
-extern const device_type C64_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(C64_EXPANSION_SLOT, c64_expansion_slot_device)
SLOT_INTERFACE_EXTERN( c64_expansion_cards );
diff --git a/src/devices/bus/c64/fcc.cpp b/src/devices/bus/c64/fcc.cpp
index 8bd0986ff04..c4e98e90738 100644
--- a/src/devices/bus/c64/fcc.cpp
+++ b/src/devices/bus/c64/fcc.cpp
@@ -37,7 +37,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_FCC = device_creator<c64_final_chesscard_device>;
+DEFINE_DEVICE_TYPE(C64_FCC, c64_final_chesscard_device, "c64_fcc", "Final ChessCard")
//-------------------------------------------------
@@ -120,7 +120,7 @@ ioport_constructor c64_final_chesscard_device::device_input_ports() const
//-------------------------------------------------
c64_final_chesscard_device::c64_final_chesscard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_FCC, "Final ChessCard", tag, owner, clock, "c64_fcc", __FILE__),
+ device_t(mconfig, C64_FCC, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
device_nvram_interface(mconfig, *this),
m_maincpu(*this, G65SC02P4_TAG),
diff --git a/src/devices/bus/c64/fcc.h b/src/devices/bus/c64/fcc.h
index 53573a4ea40..3460738a389 100644
--- a/src/devices/bus/c64/fcc.h
+++ b/src/devices/bus/c64/fcc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_FCC_H
+#define MAME_BUS_C64_FCC_H
-#ifndef __FCC__
-#define __FCC__
+#pragma once
#include "exp.h"
#include "cpu/m6502/m65sc02.h"
@@ -61,8 +61,7 @@ private:
// device type definition
-extern const device_type C64_FCC;
-
+DECLARE_DEVICE_TYPE(C64_FCC, c64_final_chesscard_device)
-#endif
+#endif // MAME_BUS_C64_FCC_H
diff --git a/src/devices/bus/c64/final.cpp b/src/devices/bus/c64/final.cpp
index 0c756ddecbd..90be1e6e588 100644
--- a/src/devices/bus/c64/final.cpp
+++ b/src/devices/bus/c64/final.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_FINAL = device_creator<c64_final_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_FINAL, c64_final_cartridge_device, "c64_final", "C64 Final Cartridge")
//-------------------------------------------------
@@ -64,7 +64,7 @@ ioport_constructor c64_final_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_final_cartridge_device::c64_final_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_FINAL, "C64 Final cartridge", tag, owner, clock, "c64_final", __FILE__),
+ device_t(mconfig, C64_FINAL, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/final.h b/src/devices/bus/c64/final.h
index 4bfe2e96d6d..a8ed113f13b 100644
--- a/src/devices/bus/c64/final.h
+++ b/src/devices/bus/c64/final.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_FINAL_H
+#define MAME_BUS_C64_FINAL_H
-#ifndef __FINAL__
-#define __FINAL__
+#pragma once
#include "exp.h"
@@ -46,7 +46,7 @@ protected:
// device type definition
-extern const device_type C64_FINAL;
+DECLARE_DEVICE_TYPE(C64_FINAL, c64_final_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_FINAL_H
diff --git a/src/devices/bus/c64/final3.cpp b/src/devices/bus/c64/final3.cpp
index 4226cb981c8..9a64e7c4172 100644
--- a/src/devices/bus/c64/final3.cpp
+++ b/src/devices/bus/c64/final3.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_FINAL3 = device_creator<c64_final3_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_FINAL3, c64_final3_cartridge_device, "c64_final3", "C64 Final Cartridge III")
//-------------------------------------------------
@@ -65,7 +65,7 @@ ioport_constructor c64_final3_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_final3_cartridge_device::c64_final3_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_FINAL3, "C64 Final Cartridge III", tag, owner, clock, "c64_final3", __FILE__),
+ device_t(mconfig, C64_FINAL3, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this), m_bank(0), m_hidden(0)
{
}
diff --git a/src/devices/bus/c64/final3.h b/src/devices/bus/c64/final3.h
index 759bba15514..d424c76537a 100644
--- a/src/devices/bus/c64/final3.h
+++ b/src/devices/bus/c64/final3.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C4_FINAL3_H
+#define MAME_BUS_C4_FINAL3_H
-#ifndef __FINAL3__
-#define __FINAL3__
+#pragma once
#include "exp.h"
@@ -50,7 +50,7 @@ private:
// device type definition
-extern const device_type C64_FINAL3;
+DECLARE_DEVICE_TYPE(C64_FINAL3, c64_final3_cartridge_device)
-#endif
+#endif // MAME_BUS_C4_FINAL3_H
diff --git a/src/devices/bus/c64/fun_play.cpp b/src/devices/bus/c64/fun_play.cpp
index c675ae763de..b4b7a7285d2 100644
--- a/src/devices/bus/c64/fun_play.cpp
+++ b/src/devices/bus/c64/fun_play.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_FUN_PLAY = device_creator<c64_fun_play_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_FUN_PLAY, c64_fun_play_cartridge_device, "c64_fun_play", "C64 Fun Play cartridge")
@@ -28,7 +28,7 @@ const device_type C64_FUN_PLAY = device_creator<c64_fun_play_cartridge_device>;
//-------------------------------------------------
c64_fun_play_cartridge_device::c64_fun_play_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_FUN_PLAY, "C64 Fun Play cartridge", tag, owner, clock, "c64_fun_play", __FILE__),
+ device_t(mconfig, C64_FUN_PLAY, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/fun_play.h b/src/devices/bus/c64/fun_play.h
index 7fcef385018..ba62626651a 100644
--- a/src/devices/bus/c64/fun_play.h
+++ b/src/devices/bus/c64/fun_play.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_FUN_PLAY_H
+#define MAME_BUS_C64_FUN_PLAY_H
-#ifndef __FUN_PLAY__
-#define __FUN_PLAY__
+#pragma once
#include "exp.h"
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type C64_FUN_PLAY;
+DECLARE_DEVICE_TYPE(C64_FUN_PLAY, c64_fun_play_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_FUN_PLAY_H
diff --git a/src/devices/bus/c64/geocable.cpp b/src/devices/bus/c64/geocable.cpp
index 7640251306f..8859612a4e1 100644
--- a/src/devices/bus/c64/geocable.cpp
+++ b/src/devices/bus/c64/geocable.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_GEOCABLE = device_creator<c64_geocable_device>;
+DEFINE_DEVICE_TYPE(C64_GEOCABLE, c64_geocable_device, "c64_geocable", "C64 geoCable")
//-------------------------------------------------
@@ -57,7 +57,7 @@ machine_config_constructor c64_geocable_device::device_mconfig_additions() const
//-------------------------------------------------
c64_geocable_device::c64_geocable_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_GEOCABLE, "C64 geoCable", tag, owner, clock, "c64_geocable", __FILE__),
+ device_t(mconfig, C64_GEOCABLE, tag, owner, clock),
device_pet_user_port_interface(mconfig, *this),
m_centronics(*this, CENTRONICS_TAG)
{
diff --git a/src/devices/bus/c64/geocable.h b/src/devices/bus/c64/geocable.h
index 5dd56ffa021..7ab6f88d68f 100644
--- a/src/devices/bus/c64/geocable.h
+++ b/src/devices/bus/c64/geocable.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_GEOCABLE_H
+#define MAME_BUS_C64_GEOCABLE_H
-#ifndef __C64_GEOCABLE__
-#define __C64_GEOCABLE__
+#pragma once
#include "user.h"
@@ -55,6 +55,7 @@ private:
// device type definition
extern const device_type C64_GEOCABLE;
+DECLARE_DEVICE_TYPE(C64_GEOCABLE, c64_geocable_device)
-#endif
+#endif // MAME_BUS_C64_GEOCABLE_H
diff --git a/src/devices/bus/c64/georam.cpp b/src/devices/bus/c64/georam.cpp
index c68efcc2a80..e82061df80e 100644
--- a/src/devices/bus/c64/georam.cpp
+++ b/src/devices/bus/c64/georam.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_GEORAM = device_creator<c64_georam_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_GEORAM, c64_georam_cartridge_device, "c64_georam", "C64 GeoRAM cartridge")
@@ -28,7 +28,7 @@ const device_type C64_GEORAM = device_creator<c64_georam_cartridge_device>;
//-------------------------------------------------
c64_georam_cartridge_device::c64_georam_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_GEORAM, "C64 GeoRAM cartridge", tag, owner, clock, "c64_georam", __FILE__),
+ device_t(mconfig, C64_GEORAM, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_ram(*this, "ram"),
m_bank(0)
diff --git a/src/devices/bus/c64/georam.h b/src/devices/bus/c64/georam.h
index ed285ce5221..352ddff6d1b 100644
--- a/src/devices/bus/c64/georam.h
+++ b/src/devices/bus/c64/georam.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUC_C64_GEORAM_H
+#define MAME_BUC_C64_GEORAM_H
-#ifndef __GEORAM__
-#define __GEORAM__
+#pragma once
#include "exp.h"
@@ -46,7 +46,7 @@ private:
// device type definition
-extern const device_type C64_GEORAM;
+DECLARE_DEVICE_TYPE(C64_GEORAM, c64_georam_cartridge_device)
-#endif
+#endif // MAME_BUC_C64_GEORAM_H
diff --git a/src/devices/bus/c64/ide64.cpp b/src/devices/bus/c64/ide64.cpp
index cd49717a148..b9112aa6ba3 100644
--- a/src/devices/bus/c64/ide64.cpp
+++ b/src/devices/bus/c64/ide64.cpp
@@ -39,7 +39,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_IDE64 = device_creator<c64_ide64_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_IDE64, c64_ide64_cartridge_device, "c64_ide64", "C64 IDE64 cartridge")
//-------------------------------------------------
@@ -96,7 +96,7 @@ ioport_constructor c64_ide64_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_ide64_cartridge_device::c64_ide64_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_IDE64, "C64 IDE64 cartridge", tag, owner, clock, "c64_ide64", __FILE__),
+ device_t(mconfig, C64_IDE64, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_flash_rom(*this, AT29C010A_TAG),
m_rtc(*this, DS1302_TAG),
diff --git a/src/devices/bus/c64/ide64.h b/src/devices/bus/c64/ide64.h
index ad7ad042ae9..cacf380f428 100644
--- a/src/devices/bus/c64/ide64.h
+++ b/src/devices/bus/c64/ide64.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_IDE64_H
+#define MAME_BUS_C64_IDE64_H
-#ifndef __IDE64__
-#define __IDE64__
+#pragma once
#include "exp.h"
@@ -63,7 +63,7 @@ private:
// device type definition
-extern const device_type C64_IDE64;
+DECLARE_DEVICE_TYPE(C64_IDE64, c64_ide64_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_IDE64_H
diff --git a/src/devices/bus/c64/ieee488.cpp b/src/devices/bus/c64/ieee488.cpp
index 8e57f6ef007..6282879786d 100644
--- a/src/devices/bus/c64/ieee488.cpp
+++ b/src/devices/bus/c64/ieee488.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_IEEE488 = device_creator<c64_ieee488_device>;
+DEFINE_DEVICE_TYPE(C64_IEEE488, c64_ieee488_device, "c64_ieee488_device", "C64 IEEE-488 cartridge")
//-------------------------------------------------
@@ -175,7 +175,7 @@ machine_config_constructor c64_ieee488_device::device_mconfig_additions() const
//-------------------------------------------------
c64_ieee488_device::c64_ieee488_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_IEEE488, "IEEE-488", tag, owner, clock, "c64_ieee488", __FILE__),
+ device_t(mconfig, C64_IEEE488, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_tpi(*this, MOS6525_TAG),
m_bus(*this, IEEE488_TAG),
diff --git a/src/devices/bus/c64/ieee488.h b/src/devices/bus/c64/ieee488.h
index 037f493cb7a..92a7de1f9f1 100644
--- a/src/devices/bus/c64/ieee488.h
+++ b/src/devices/bus/c64/ieee488.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_IEEE488_H
+#define MAME_BUS_C64_IEEE488_H
-#ifndef __C64_IEEE488__
-#define __C64_IEEE488__
+#pragma once
+#include "exp.h"
#include "bus/ieee488/ieee488.h"
#include "machine/6525tpi.h"
-#include "exp.h"
@@ -58,9 +58,8 @@ private:
};
-
// device type definition
-extern const device_type C64_IEEE488;
+DECLARE_DEVICE_TYPE(C64_IEEE488, c64_ieee488_device)
-#endif
+#endif // MAME_BUS_C64_IEEE488_H
diff --git a/src/devices/bus/c64/kingsoft.cpp b/src/devices/bus/c64/kingsoft.cpp
index 6716028f634..84263b71da7 100644
--- a/src/devices/bus/c64/kingsoft.cpp
+++ b/src/devices/bus/c64/kingsoft.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_KINGSOFT = device_creator<c64_kingsoft_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_KINGSOFT, c64_kingsoft_cartridge_device, "c64_kingsoft", "C64 Kingsoft cartridge")
@@ -28,7 +28,7 @@ const device_type C64_KINGSOFT = device_creator<c64_kingsoft_cartridge_device>;
//-------------------------------------------------
c64_kingsoft_cartridge_device::c64_kingsoft_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_KINGSOFT, "C64 Kingsoft cartridge", tag, owner, clock, "c64_kingsoft", __FILE__),
+ device_t(mconfig, C64_KINGSOFT, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/kingsoft.h b/src/devices/bus/c64/kingsoft.h
index 039bed77b09..89b2a4e0367 100644
--- a/src/devices/bus/c64/kingsoft.h
+++ b/src/devices/bus/c64/kingsoft.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_KINGSOFT_H
+#define MAME_BUS_C64_KINGSOFT_H
-#ifndef __KINGSOFT__
-#define __KINGSOFT__
+#pragma once
#include "exp.h"
@@ -42,7 +42,7 @@ protected:
// device type definition
-extern const device_type C64_KINGSOFT;
+DECLARE_DEVICE_TYPE(C64_KINGSOFT, c64_kingsoft_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_KINGSOFT_H
diff --git a/src/devices/bus/c64/mach5.cpp b/src/devices/bus/c64/mach5.cpp
index ff16f80ee4f..f312a14e1d4 100644
--- a/src/devices/bus/c64/mach5.cpp
+++ b/src/devices/bus/c64/mach5.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MACH5 = device_creator<c64_mach5_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MACH5, c64_mach5_cartridge_device, "c64_mach5", "C64 MACH5 cartridge")
//-------------------------------------------------
@@ -53,7 +53,7 @@ ioport_constructor c64_mach5_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_mach5_cartridge_device::c64_mach5_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MACH5, "C64 MACH5 cartridge", tag, owner, clock, "c64_mach5", __FILE__),
+ device_t(mconfig, C64_MACH5, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_s1(*this, "S1"), m_c128(false)
{
diff --git a/src/devices/bus/c64/mach5.h b/src/devices/bus/c64/mach5.h
index f93d23dc51b..affe03a52dc 100644
--- a/src/devices/bus/c64/mach5.h
+++ b/src/devices/bus/c64/mach5.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MACH5_H
+#define MAME_BUS_C64_MACH5_H
-#ifndef __MACH5__
-#define __MACH5__
+#pragma once
#include "exp.h"
@@ -48,7 +48,7 @@ private:
// device type definition
-extern const device_type C64_MACH5;
+DECLARE_DEVICE_TYPE(C64_MACH5, c64_mach5_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MACH5_H
diff --git a/src/devices/bus/c64/magic_desk.cpp b/src/devices/bus/c64/magic_desk.cpp
index a1ad9614530..9f72a1f416f 100644
--- a/src/devices/bus/c64/magic_desk.cpp
+++ b/src/devices/bus/c64/magic_desk.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MAGIC_DESK = device_creator<c64_magic_desk_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MAGIC_DESK, c64_magic_desk_cartridge_device, "c64_magic_desk", "C64 Magic Desk cartridge")
@@ -28,7 +28,7 @@ const device_type C64_MAGIC_DESK = device_creator<c64_magic_desk_cartridge_devic
//-------------------------------------------------
c64_magic_desk_cartridge_device::c64_magic_desk_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MAGIC_DESK, "C64 Magic Desk cartridge", tag, owner, clock, "c64_magic_desk", __FILE__),
+ device_t(mconfig, C64_MAGIC_DESK, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/magic_desk.h b/src/devices/bus/c64/magic_desk.h
index fb45fde1161..4082fc5ff56 100644
--- a/src/devices/bus/c64/magic_desk.h
+++ b/src/devices/bus/c64/magic_desk.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MAGIC_DESK_H
+#define MAME_BUS_C64_MAGIC_DESK_H
-#ifndef __MAGIC_DESK__
-#define __MAGIC_DESK__
+#pragma once
#include "exp.h"
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type C64_MAGIC_DESK;
+DECLARE_DEVICE_TYPE(C64_MAGIC_DESK, c64_magic_desk_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MAGIC_DESK_H
diff --git a/src/devices/bus/c64/magic_formel.cpp b/src/devices/bus/c64/magic_formel.cpp
index 0812e2aaeba..b85ef00813d 100644
--- a/src/devices/bus/c64/magic_formel.cpp
+++ b/src/devices/bus/c64/magic_formel.cpp
@@ -31,7 +31,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MAGIC_FORMEL = device_creator<c64_magic_formel_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MAGIC_FORMEL, c64_magic_formel_cartridge_device, "c64_magic_formel", "C64 Magic Formel cartridge")
WRITE8_MEMBER( c64_magic_formel_cartridge_device::pia_pa_w )
@@ -164,7 +164,7 @@ ioport_constructor c64_magic_formel_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_magic_formel_cartridge_device::c64_magic_formel_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MAGIC_FORMEL, "C64 Magic Formel cartridge", tag, owner, clock, "c64_magic_formel", __FILE__),
+ device_t(mconfig, C64_MAGIC_FORMEL, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_pia(*this, MC6821_TAG),
m_ram(*this, "ram"),
diff --git a/src/devices/bus/c64/magic_formel.h b/src/devices/bus/c64/magic_formel.h
index 3068a62ec66..687e9c8f935 100644
--- a/src/devices/bus/c64/magic_formel.h
+++ b/src/devices/bus/c64/magic_formel.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MAGIC_FORMEL_H
+#define MAME_BUS_C64_MAGIC_FORMEL_H
-#ifndef __MAGIC_FORMEL__
-#define __MAGIC_FORMEL__
+#pragma once
#include "exp.h"
#include "machine/6821pia.h"
@@ -64,7 +64,7 @@ private:
// device type definition
-extern const device_type C64_MAGIC_FORMEL;
+DECLARE_DEVICE_TYPE(C64_MAGIC_FORMEL, c64_magic_formel_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MAGIC_FORMEL_H
diff --git a/src/devices/bus/c64/magic_voice.cpp b/src/devices/bus/c64/magic_voice.cpp
index b973f87a0c4..e687a96ccca 100644
--- a/src/devices/bus/c64/magic_voice.cpp
+++ b/src/devices/bus/c64/magic_voice.cpp
@@ -66,7 +66,7 @@ http://www.stefan-uhlmann.de/cbm/MVM/index.html
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MAGIC_VOICE = device_creator<c64_magic_voice_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MAGIC_VOICE, c64_magic_voice_cartridge_device, "c64_magic_voice", "C64 Magic Voice cartridge")
//-------------------------------------------------
@@ -265,7 +265,7 @@ machine_config_constructor c64_magic_voice_cartridge_device::device_mconfig_addi
//-------------------------------------------------
c64_magic_voice_cartridge_device::c64_magic_voice_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MAGIC_VOICE, "C64 Magic Voice cartridge", tag, owner, clock, "c64_magic_voice", __FILE__),
+ device_t(mconfig, C64_MAGIC_VOICE, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_vslsi(*this, T6721A_TAG),
m_tpi(*this, MOS6525_TAG),
diff --git a/src/devices/bus/c64/magic_voice.h b/src/devices/bus/c64/magic_voice.h
index 06bb5df632b..e801da274d6 100644
--- a/src/devices/bus/c64/magic_voice.h
+++ b/src/devices/bus/c64/magic_voice.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MAGIC_VOICE_H
+#define MAME_BUS_C64_MAGIC_VOICE_H
-#ifndef __MAGIC_VOICE__
-#define __MAGIC_VOICE__
+#pragma once
+#include "exp.h"
#include "machine/40105.h"
#include "machine/6525tpi.h"
-#include "exp.h"
#include "sound/t6721a.h"
@@ -72,8 +72,7 @@ private:
// device type definition
-extern const device_type C64_MAGIC_VOICE;
-
+DECLARE_DEVICE_TYPE(C64_MAGIC_VOICE, c64_magic_voice_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MAGIC_VOICE_H
diff --git a/src/devices/bus/c64/midi_maplin.cpp b/src/devices/bus/c64/midi_maplin.cpp
index 092c0ff76db..d18e4396a88 100644
--- a/src/devices/bus/c64/midi_maplin.cpp
+++ b/src/devices/bus/c64/midi_maplin.cpp
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MIDI_MAPLIN = device_creator<c64_maplin_midi_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MIDI_MAPLIN, c64_maplin_midi_cartridge_device, "c64_midimap", "C64 Maplin MIDI")
WRITE_LINE_MEMBER( c64_maplin_midi_cartridge_device::acia_irq_w )
@@ -80,7 +80,7 @@ machine_config_constructor c64_maplin_midi_cartridge_device::device_mconfig_addi
//-------------------------------------------------
c64_maplin_midi_cartridge_device::c64_maplin_midi_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MIDI_MAPLIN, "C64 Maplin MIDI", tag, owner, clock, "c64_midimap", __FILE__),
+ device_t(mconfig, C64_MIDI_MAPLIN, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_acia(*this, MC6850_TAG)
{
diff --git a/src/devices/bus/c64/midi_maplin.h b/src/devices/bus/c64/midi_maplin.h
index 5608f506989..a9fefd89169 100644
--- a/src/devices/bus/c64/midi_maplin.h
+++ b/src/devices/bus/c64/midi_maplin.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MIDI_MAPLIN_H
+#define MAME_BUS_C64_MIDI_MAPLIN_H
-#ifndef __C64_MIDI_MAPLIN__
-#define __C64_MIDI_MAPLIN__
+#pragma once
#include "exp.h"
#include "machine/6850acia.h"
@@ -50,7 +50,7 @@ private:
// device type definition
-extern const device_type C64_MIDI_MAPLIN;
+DECLARE_DEVICE_TYPE(C64_MIDI_MAPLIN, c64_maplin_midi_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MIDI_MAPLIN_H
diff --git a/src/devices/bus/c64/midi_namesoft.cpp b/src/devices/bus/c64/midi_namesoft.cpp
index 6ef20e74b41..ca4ce072075 100644
--- a/src/devices/bus/c64/midi_namesoft.cpp
+++ b/src/devices/bus/c64/midi_namesoft.cpp
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MIDI_NAMESOFT = device_creator<c64_namesoft_midi_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MIDI_NAMESOFT, c64_namesoft_midi_cartridge_device, "c64_midins", "C64 Namesoft MIDI")
WRITE_LINE_MEMBER( c64_namesoft_midi_cartridge_device::acia_irq_w )
@@ -80,7 +80,7 @@ machine_config_constructor c64_namesoft_midi_cartridge_device::device_mconfig_ad
//-------------------------------------------------
c64_namesoft_midi_cartridge_device::c64_namesoft_midi_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MIDI_NAMESOFT, "C64 Namesoft MIDI", tag, owner, clock, "c64_midins", __FILE__),
+ device_t(mconfig, C64_MIDI_NAMESOFT, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_acia(*this, MC6850_TAG)
{
diff --git a/src/devices/bus/c64/midi_namesoft.h b/src/devices/bus/c64/midi_namesoft.h
index d9321d9f217..2b1a77b6e36 100644
--- a/src/devices/bus/c64/midi_namesoft.h
+++ b/src/devices/bus/c64/midi_namesoft.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MIDI_NAMESOFT_H
+#define MAME_BUS_C64_MIDI_NAMESOFT_H
-#ifndef __C64_MIDI_NAMESOFT__
-#define __C64_MIDI_NAMESOFT__
+#pragma once
#include "exp.h"
#include "machine/6850acia.h"
@@ -50,7 +50,7 @@ private:
// device type definition
-extern const device_type C64_MIDI_NAMESOFT;
+DECLARE_DEVICE_TYPE(C64_MIDI_NAMESOFT, c64_namesoft_midi_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MIDI_NAMESOFT_H
diff --git a/src/devices/bus/c64/midi_passport.cpp b/src/devices/bus/c64/midi_passport.cpp
index 4c229129112..de6a6dea5df 100644
--- a/src/devices/bus/c64/midi_passport.cpp
+++ b/src/devices/bus/c64/midi_passport.cpp
@@ -26,7 +26,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MIDI_PASSPORT = device_creator<c64_passport_midi_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MIDI_PASSPORT, c64_passport_midi_cartridge_device, "c64_midipp", "C64 Passport MIDI")
//-------------------------------------------------
@@ -98,7 +98,7 @@ machine_config_constructor c64_passport_midi_cartridge_device::device_mconfig_ad
//-------------------------------------------------
c64_passport_midi_cartridge_device::c64_passport_midi_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MIDI_PASSPORT, "C64 Passport MIDI", tag, owner, clock, "c64_midipp", __FILE__),
+ device_t(mconfig, C64_MIDI_PASSPORT, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_acia(*this, MC6850_TAG),
m_ptm(*this, MC6840_TAG),
diff --git a/src/devices/bus/c64/midi_passport.h b/src/devices/bus/c64/midi_passport.h
index 995c5b1d6ee..2660a696189 100644
--- a/src/devices/bus/c64/midi_passport.h
+++ b/src/devices/bus/c64/midi_passport.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MIDI_PASSPORT_H
+#define MAME_BUS_C64_MIDI_PASSPORT_H
-#ifndef __C64_MIDI_PASSPORT__
-#define __C64_MIDI_PASSPORT__
+#pragma once
#include "exp.h"
#include "machine/6840ptm.h"
@@ -56,7 +56,7 @@ private:
// device type definition
-extern const device_type C64_MIDI_PASSPORT;
+DECLARE_DEVICE_TYPE(C64_MIDI_PASSPORT, c64_passport_midi_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MIDI_PASSPORT_H
diff --git a/src/devices/bus/c64/midi_sci.cpp b/src/devices/bus/c64/midi_sci.cpp
index 120dd875be4..82df737966b 100644
--- a/src/devices/bus/c64/midi_sci.cpp
+++ b/src/devices/bus/c64/midi_sci.cpp
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MIDI_SCI = device_creator<c64_sequential_midi_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MIDI_SCI, c64_sequential_midi_cartridge_device, "c64_midisci", "C64 Sequential Circuits MIDI")
WRITE_LINE_MEMBER( c64_sequential_midi_cartridge_device::acia_irq_w )
@@ -80,7 +80,7 @@ machine_config_constructor c64_sequential_midi_cartridge_device::device_mconfig_
//-------------------------------------------------
c64_sequential_midi_cartridge_device::c64_sequential_midi_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MIDI_SCI, "C64 Sequential Circuits MIDI", tag, owner, clock, "c64_midisci", __FILE__),
+ device_t(mconfig, C64_MIDI_SCI, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_acia(*this, MC6850_TAG)
{
diff --git a/src/devices/bus/c64/midi_sci.h b/src/devices/bus/c64/midi_sci.h
index c4f49bb092c..b905784218a 100644
--- a/src/devices/bus/c64/midi_sci.h
+++ b/src/devices/bus/c64/midi_sci.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MIDI_SCI_H
+#define MAME_BUS_C64_MIDI_SCI_H
-#ifndef __C64_MIDI_SCI__
-#define __C64_MIDI_SCI__
+#pragma once
#include "exp.h"
#include "machine/6850acia.h"
@@ -50,7 +50,7 @@ private:
// device type definition
-extern const device_type C64_MIDI_SCI;
+DECLARE_DEVICE_TYPE(C64_MIDI_SCI, c64_sequential_midi_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MIDI_SCI_H
diff --git a/src/devices/bus/c64/midi_siel.cpp b/src/devices/bus/c64/midi_siel.cpp
index cb1b4e1a9c1..296e0991718 100644
--- a/src/devices/bus/c64/midi_siel.cpp
+++ b/src/devices/bus/c64/midi_siel.cpp
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MIDI_SIEL = device_creator<c64_siel_midi_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MIDI_SIEL, c64_siel_midi_cartridge_device, "c64_midisiel", "C64 Siel MIDI")
WRITE_LINE_MEMBER( c64_siel_midi_cartridge_device::acia_irq_w )
@@ -80,7 +80,7 @@ machine_config_constructor c64_siel_midi_cartridge_device::device_mconfig_additi
//-------------------------------------------------
c64_siel_midi_cartridge_device::c64_siel_midi_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MIDI_SIEL, "C64 Siel MIDI", tag, owner, clock, "c64_midisiel", __FILE__),
+ device_t(mconfig, C64_MIDI_SIEL, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_acia(*this, MC6850_TAG)
{
diff --git a/src/devices/bus/c64/midi_siel.h b/src/devices/bus/c64/midi_siel.h
index 35373dda012..3f647c9a089 100644
--- a/src/devices/bus/c64/midi_siel.h
+++ b/src/devices/bus/c64/midi_siel.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MIDI_SIEL_H
+#define MAME_BUS_C64_MIDI_SIEL_H
-#ifndef __C64_MIDI_SIEL__
-#define __C64_MIDI_SIEL__
+#pragma once
#include "exp.h"
#include "machine/6850acia.h"
@@ -50,7 +50,7 @@ private:
// device type definition
-extern const device_type C64_MIDI_SIEL;
+DECLARE_DEVICE_TYPE(C64_MIDI_SIEL, c64_siel_midi_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MIDI_SIEL_H
diff --git a/src/devices/bus/c64/mikro_assembler.cpp b/src/devices/bus/c64/mikro_assembler.cpp
index 18f7bcd2772..fe97c9472d7 100644
--- a/src/devices/bus/c64/mikro_assembler.cpp
+++ b/src/devices/bus/c64/mikro_assembler.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MIKRO_ASSEMBLER = device_creator<c64_mikro_assembler_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MIKRO_ASSEMBLER, c64_mikro_assembler_cartridge_device, "c64_mikro_assembler", "C64 Mikro Assembler cartridge")
@@ -28,7 +28,7 @@ const device_type C64_MIKRO_ASSEMBLER = device_creator<c64_mikro_assembler_cartr
//-------------------------------------------------
c64_mikro_assembler_cartridge_device::c64_mikro_assembler_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MIKRO_ASSEMBLER, "C64 Mikro Assembler cartridge", tag, owner, clock, "c64_mikro_assembler", __FILE__),
+ device_t(mconfig, C64_MIKRO_ASSEMBLER, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/mikro_assembler.h b/src/devices/bus/c64/mikro_assembler.h
index 0ab466d5057..edeb220fd43 100644
--- a/src/devices/bus/c64/mikro_assembler.h
+++ b/src/devices/bus/c64/mikro_assembler.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MIKRO_ASSEMBLER_H
+#define MAME_BUS_C64_MIKRO_ASSEMBLER_H
-#ifndef __MIKRO_ASSEMBLER__
-#define __MIKRO_ASSEMBLER__
+#pragma once
#include "exp.h"
@@ -39,7 +39,7 @@ protected:
// device type definition
-extern const device_type C64_MIKRO_ASSEMBLER;
+DECLARE_DEVICE_TYPE(C64_MIKRO_ASSEMBLER, c64_mikro_assembler_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MIKRO_ASSEMBLER_H
diff --git a/src/devices/bus/c64/multiscreen.cpp b/src/devices/bus/c64/multiscreen.cpp
index 37c077a1606..185162d2914 100644
--- a/src/devices/bus/c64/multiscreen.cpp
+++ b/src/devices/bus/c64/multiscreen.cpp
@@ -78,7 +78,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MULTISCREEN = device_creator<c64_multiscreen_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MULTISCREEN, c64_multiscreen_cartridge_device, "c64_mscr", "C64 Multiscreen cartridge")
//-------------------------------------------------
@@ -141,7 +141,7 @@ machine_config_constructor c64_multiscreen_cartridge_device::device_mconfig_addi
//-------------------------------------------------
c64_multiscreen_cartridge_device::c64_multiscreen_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MULTISCREEN, "C64 Multiscreen cartridge", tag, owner, clock, "c64_mscr", __FILE__),
+ device_t(mconfig, C64_MULTISCREEN, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this), m_bank(0)
{
}
diff --git a/src/devices/bus/c64/multiscreen.h b/src/devices/bus/c64/multiscreen.h
index c2e79272853..46a72bde046 100644
--- a/src/devices/bus/c64/multiscreen.h
+++ b/src/devices/bus/c64/multiscreen.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MULTISCREEN_H
+#define MAME_BUS_C64_MULTISCREEN_H
-#ifndef __MULTISCREEN__
-#define __MULTISCREEN__
+#pragma once
#include "cpu/m6800/m6800.h"
@@ -50,7 +50,7 @@ private:
// device type definition
-extern const device_type C64_MULTISCREEN;
+DECLARE_DEVICE_TYPE(C64_MULTISCREEN, c64_multiscreen_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MULTISCREEN_H
diff --git a/src/devices/bus/c64/music64.cpp b/src/devices/bus/c64/music64.cpp
index 3c886b60935..90f0e478c48 100644
--- a/src/devices/bus/c64/music64.cpp
+++ b/src/devices/bus/c64/music64.cpp
@@ -37,7 +37,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_MUSIC64 = device_creator<c64_music64_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_MUSIC64, c64_music64_cartridge_device, "c64_music64", "C64 Music 64 cartridge")
//-------------------------------------------------
@@ -151,7 +151,7 @@ ioport_constructor c64_music64_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_music64_cartridge_device::c64_music64_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_MUSIC64, "C64 Music 64 cartridge", tag, owner, clock, "c64_music64", __FILE__),
+ device_t(mconfig, C64_MUSIC64, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_exp(*this, C64_EXPANSION_SLOT_TAG),
m_kb(*this, "KB%u", 0)
diff --git a/src/devices/bus/c64/music64.h b/src/devices/bus/c64/music64.h
index 9de8f992131..eea75aae771 100644
--- a/src/devices/bus/c64/music64.h
+++ b/src/devices/bus/c64/music64.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_MUSIC64_H
+#define MAME_BUS_C64_MUSIC64_H
-#ifndef __MUSIC64__
-#define __MUSIC64__
+#pragma once
#include "exp.h"
@@ -50,7 +50,7 @@ private:
// device type definition
-extern const device_type C64_MUSIC64;
+DECLARE_DEVICE_TYPE(C64_MUSIC64, c64_music64_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_MUSIC64_H
diff --git a/src/devices/bus/c64/neoram.cpp b/src/devices/bus/c64/neoram.cpp
index f0686a9f077..a2576cebeeb 100644
--- a/src/devices/bus/c64/neoram.cpp
+++ b/src/devices/bus/c64/neoram.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_NEORAM = device_creator<c64_neoram_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_NEORAM, c64_neoram_cartridge_device, "c64_neoram", "C64 NeoRAM cartridge")
@@ -28,7 +28,7 @@ const device_type C64_NEORAM = device_creator<c64_neoram_cartridge_device>;
//-------------------------------------------------
c64_neoram_cartridge_device::c64_neoram_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_NEORAM, "C64 NeoRAM cartridge", tag, owner, clock, "c64_neoram", __FILE__),
+ device_t(mconfig, C64_NEORAM, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
device_nvram_interface(mconfig, *this),
m_bank(0)
diff --git a/src/devices/bus/c64/neoram.h b/src/devices/bus/c64/neoram.h
index 3890fd6c21e..e75a76cd088 100644
--- a/src/devices/bus/c64/neoram.h
+++ b/src/devices/bus/c64/neoram.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_NEORAM_H
+#define MAME_BUS_C64_NEORAM_H
-#ifndef __NEORAM__
-#define __NEORAM__
+#pragma once
#include "exp.h"
@@ -50,7 +50,7 @@ private:
// device type definition
-extern const device_type C64_NEORAM;
+DECLARE_DEVICE_TYPE(C64_NEORAM, c64_neoram_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_NEORAM_H
diff --git a/src/devices/bus/c64/ocean.cpp b/src/devices/bus/c64/ocean.cpp
index a6d3d17cc1b..6f4fecda52f 100644
--- a/src/devices/bus/c64/ocean.cpp
+++ b/src/devices/bus/c64/ocean.cpp
@@ -37,7 +37,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_OCEAN = device_creator<c64_ocean_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_OCEAN, c64_ocean_cartridge_device, "c64_ocean", "C64 Ocean cartridge")
@@ -50,7 +50,7 @@ const device_type C64_OCEAN = device_creator<c64_ocean_cartridge_device>;
//-------------------------------------------------
c64_ocean_cartridge_device::c64_ocean_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_OCEAN, "C64 Ocean cartridge", tag, owner, clock, "c64_ocean", __FILE__),
+ device_t(mconfig, C64_OCEAN, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/ocean.h b/src/devices/bus/c64/ocean.h
index b871dfac89e..1af2101b3fa 100644
--- a/src/devices/bus/c64/ocean.h
+++ b/src/devices/bus/c64/ocean.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_OCEAN_H
+#define MAME_BUS_C64_OCEAN_H
-#ifndef __OCEAN__
-#define __OCEAN__
+#pragma once
#include "exp.h"
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type C64_OCEAN;
+DECLARE_DEVICE_TYPE(C64_OCEAN, c64_ocean_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_OCEAN_H
diff --git a/src/devices/bus/c64/pagefox.cpp b/src/devices/bus/c64/pagefox.cpp
index 837e3ada595..975f64d5408 100644
--- a/src/devices/bus/c64/pagefox.cpp
+++ b/src/devices/bus/c64/pagefox.cpp
@@ -37,7 +37,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_PAGEFOX = device_creator<c64_pagefox_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_PAGEFOX, c64_pagefox_cartridge_device, "c64_pagefox", "C64 Pagefox cartridge")
@@ -50,7 +50,7 @@ const device_type C64_PAGEFOX = device_creator<c64_pagefox_cartridge_device>;
//-------------------------------------------------
c64_pagefox_cartridge_device::c64_pagefox_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_PAGEFOX, "C64 Pagefox cartridge", tag, owner, clock, "c64_pagefox", __FILE__),
+ device_t(mconfig, C64_PAGEFOX, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_ram(*this, "ram"), m_bank(0)
{
diff --git a/src/devices/bus/c64/pagefox.h b/src/devices/bus/c64/pagefox.h
index 2a8702af60b..25eedac9eb0 100644
--- a/src/devices/bus/c64/pagefox.h
+++ b/src/devices/bus/c64/pagefox.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_PAGEFOX_H
+#define MAME_BUS_C64_PAGEFOX_H
-#ifndef __PAGEFOX__
-#define __PAGEFOX__
+#pragma once
#include "exp.h"
@@ -46,7 +46,7 @@ private:
// device type definition
-extern const device_type C64_PAGEFOX;
+DECLARE_DEVICE_TYPE(C64_PAGEFOX, c64_pagefox_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_PAGEFOX_H
diff --git a/src/devices/bus/c64/partner.cpp b/src/devices/bus/c64/partner.cpp
index b431bc02b94..9f198bc1220 100644
--- a/src/devices/bus/c64/partner.cpp
+++ b/src/devices/bus/c64/partner.cpp
@@ -36,7 +36,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_PARTNER = device_creator<c64_partner_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_PARTNER, c64_partner_cartridge_device, "c64_partner", "C64 PARTNER 64 cartridge")
//-------------------------------------------------
@@ -78,7 +78,7 @@ ioport_constructor c64_partner_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_partner_cartridge_device::c64_partner_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_PARTNER, "C64 PARTNER 64 cartridge", tag, owner, clock, "c64_partner", __FILE__),
+ device_t(mconfig, C64_PARTNER, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_ram(*this, "ram"),
m_a0(1),
diff --git a/src/devices/bus/c64/partner.h b/src/devices/bus/c64/partner.h
index 9e44f0a1e6a..cfd82208a8b 100644
--- a/src/devices/bus/c64/partner.h
+++ b/src/devices/bus/c64/partner.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_PARTNER_H
+#define MAME_BUS_C64_PARTNER_H
-#ifndef __PARTNER__
-#define __PARTNER__
+#pragma once
#include "exp.h"
@@ -53,7 +53,7 @@ private:
// device type definition
-extern const device_type C64_PARTNER;
+DECLARE_DEVICE_TYPE(C64_PARTNER, c64_partner_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_PARTNER_H
diff --git a/src/devices/bus/c64/prophet64.cpp b/src/devices/bus/c64/prophet64.cpp
index 3a02de50eba..3b84ea81a5d 100644
--- a/src/devices/bus/c64/prophet64.cpp
+++ b/src/devices/bus/c64/prophet64.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_PROPHET64 = device_creator<c64_prophet64_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_PROPHET64, c64_prophet64_cartridge_device, "c64_prophet64", "PROPHET64")
@@ -28,7 +28,7 @@ const device_type C64_PROPHET64 = device_creator<c64_prophet64_cartridge_device>
//-------------------------------------------------
c64_prophet64_cartridge_device::c64_prophet64_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_PROPHET64, "PROPHET64", tag, owner, clock, "c64_prophet64", __FILE__),
+ device_t(mconfig, C64_PROPHET64, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/prophet64.h b/src/devices/bus/c64/prophet64.h
index 9c755b1aa97..af7b1c32544 100644
--- a/src/devices/bus/c64/prophet64.h
+++ b/src/devices/bus/c64/prophet64.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_PROPHET64_H
+#define MAME_BUS_C64_PROPHET64_H
-#ifndef __PROPHET64__
-#define __PROPHET64__
+#pragma once
#include "exp.h"
@@ -43,8 +43,6 @@ private:
// device type definition
-extern const device_type C64_PROPHET64;
-
-
+DECLARE_DEVICE_TYPE(C64_PROPHET64, c64_prophet64_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_PROPHET64_H
diff --git a/src/devices/bus/c64/ps64.cpp b/src/devices/bus/c64/ps64.cpp
index f12ef27280f..9ae20bb4162 100644
--- a/src/devices/bus/c64/ps64.cpp
+++ b/src/devices/bus/c64/ps64.cpp
@@ -57,7 +57,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_PS64 = device_creator<c64_ps64_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_PS64, c64_ps64_cartridge_device, "c64_ps64", "C64 PS-64")
//-------------------------------------------------
@@ -102,7 +102,7 @@ machine_config_constructor c64_ps64_cartridge_device::device_mconfig_additions()
//-------------------------------------------------
c64_ps64_cartridge_device::c64_ps64_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_PS64, "C64 PS-64", tag, owner, clock, "c64_ps64", __FILE__),
+ device_t(mconfig, C64_PS64, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/ps64.h b/src/devices/bus/c64/ps64.h
index f6f7be9ca12..d319cf5e573 100644
--- a/src/devices/bus/c64/ps64.h
+++ b/src/devices/bus/c64/ps64.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_PS64_H
+#define MAME_BUS_C64_PS64_H
-#ifndef __PS64__
-#define __PS64__
+#pragma once
#include "exp.h"
@@ -45,7 +45,7 @@ protected:
// device type definition
-extern const device_type C64_PS64;
+DECLARE_DEVICE_TYPE(C64_PS64, c64_ps64_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_PS64_H
diff --git a/src/devices/bus/c64/reu.cpp b/src/devices/bus/c64/reu.cpp
index 415bc8510db..124a624056f 100644
--- a/src/devices/bus/c64/reu.cpp
+++ b/src/devices/bus/c64/reu.cpp
@@ -22,9 +22,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_REU1700 = device_creator<c64_reu1700_cartridge_device>;
-const device_type C64_REU1750 = device_creator<c64_reu1750_cartridge_device>;
-const device_type C64_REU1764 = device_creator<c64_reu1764_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_REU1700, c64_reu1700_cartridge_device, "c64_1700reu", "1700 REU")
+DEFINE_DEVICE_TYPE(C64_REU1750, c64_reu1750_cartridge_device, "c64_1750reu", "1750 REU")
+DEFINE_DEVICE_TYPE(C64_REU1764, c64_reu1764_cartridge_device, "c64_1764reu", "1764 REU")
//-------------------------------------------------
@@ -59,8 +59,8 @@ machine_config_constructor c64_reu_cartridge_device::device_mconfig_additions()
// c64_reu_cartridge_device - constructor
//-------------------------------------------------
-c64_reu_cartridge_device::c64_reu_cartridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, int jp1, size_t ram_size, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+c64_reu_cartridge_device::c64_reu_cartridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, int jp1, size_t ram_size) :
+ device_t(mconfig, type, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_dmac(*this, MOS8726R1_TAG),
m_eprom(*this, "rom"),
@@ -72,13 +72,13 @@ c64_reu_cartridge_device::c64_reu_cartridge_device(const machine_config &mconfig
}
c64_reu1700_cartridge_device::c64_reu1700_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c64_reu_cartridge_device(mconfig, C64_REU1700, "1700 REU", tag, owner, clock, TYPE_1700, 0, 128 * 1024, "c64_1700reu", __FILE__) { }
+ : c64_reu_cartridge_device(mconfig, C64_REU1700, tag, owner, clock, TYPE_1700, 0, 128 * 1024) { }
c64_reu1750_cartridge_device::c64_reu1750_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c64_reu_cartridge_device(mconfig, C64_REU1750, "1750 REU", tag, owner, clock, TYPE_1750, 1, 256 * 1024, "c64_1750reu", __FILE__) { }
+ : c64_reu_cartridge_device(mconfig, C64_REU1750, tag, owner, clock, TYPE_1750, 1, 256 * 1024) { }
c64_reu1764_cartridge_device::c64_reu1764_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c64_reu_cartridge_device(mconfig, C64_REU1764, "1764 REU", tag, owner, clock, TYPE_1764, 1, 512 * 1024, "c64_1764reu", __FILE__) { }
+ : c64_reu_cartridge_device(mconfig, C64_REU1764, tag, owner, clock, TYPE_1764, 1, 512 * 1024) { }
//-------------------------------------------------
diff --git a/src/devices/bus/c64/reu.h b/src/devices/bus/c64/reu.h
index 66888f87f0d..7ace9c7b2a9 100644
--- a/src/devices/bus/c64/reu.h
+++ b/src/devices/bus/c64/reu.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_REU_H
+#define MAME_BUS_C64_REU_H
-#ifndef __REU__
-#define __REU__
+#pragma once
#include "bus/generic/slot.h"
@@ -29,9 +29,6 @@ class c64_reu_cartridge_device : public device_t,
public device_c64_expansion_card_interface
{
public:
- // construction/destruction
- c64_reu_cartridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, int jp1, size_t ram_size, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -43,6 +40,9 @@ protected:
TYPE_1764
};
+ // construction/destruction
+ c64_reu_cartridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, int jp1, size_t ram_size);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -91,10 +91,9 @@ public:
// device type definition
-extern const device_type C64_REU1700;
-extern const device_type C64_REU1750;
-extern const device_type C64_REU1764;
-
+DECLARE_DEVICE_TYPE(C64_REU1700, c64_reu1700_cartridge_device)
+DECLARE_DEVICE_TYPE(C64_REU1750, c64_reu1750_cartridge_device)
+DECLARE_DEVICE_TYPE(C64_REU1764, c64_reu1764_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_REU_H
diff --git a/src/devices/bus/c64/rex.cpp b/src/devices/bus/c64/rex.cpp
index 08b357dbc41..73bcdaf453a 100644
--- a/src/devices/bus/c64/rex.cpp
+++ b/src/devices/bus/c64/rex.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_REX = device_creator<c64_rex_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_REX, c64_rex_cartridge_device, "c64_rex", "C64 Rex cartridge")
@@ -28,7 +28,7 @@ const device_type C64_REX = device_creator<c64_rex_cartridge_device>;
//-------------------------------------------------
c64_rex_cartridge_device::c64_rex_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_REX, "C64 Rex cartridge", tag, owner, clock, "c64_rex", __FILE__),
+ device_t(mconfig, C64_REX, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/rex.h b/src/devices/bus/c64/rex.h
index 65ea804e159..42d565971ed 100644
--- a/src/devices/bus/c64/rex.h
+++ b/src/devices/bus/c64/rex.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_REX_H
+#define MAME_BUS_C64_REX_H
-#ifndef __REX__
-#define __REX__
+#pragma once
#include "exp.h"
@@ -40,7 +40,7 @@ protected:
// device type definition
-extern const device_type C64_REX;
+DECLARE_DEVICE_TYPE(C64_REX, c64_rex_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_REX_H
diff --git a/src/devices/bus/c64/rex_ep256.cpp b/src/devices/bus/c64/rex_ep256.cpp
index 7c93751ea10..6ba19fd1f2f 100644
--- a/src/devices/bus/c64/rex_ep256.cpp
+++ b/src/devices/bus/c64/rex_ep256.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_REX_EP256 = device_creator<c64_rex_ep256_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_REX_EP256, c64_rex_ep256_cartridge_device, "rexexp256", "C64 Rex 256KB EPROM cartridge")
//-------------------------------------------------
@@ -63,7 +63,7 @@ machine_config_constructor c64_rex_ep256_cartridge_device::device_mconfig_additi
//-------------------------------------------------
c64_rex_ep256_cartridge_device::c64_rex_ep256_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_REX_EP256, "C64 Rex 256KB EPROM cartridge", tag, owner, clock, "rexep256", __FILE__),
+ device_t(mconfig, C64_REX_EP256, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
for (int i = 0; i < 8; i++)
diff --git a/src/devices/bus/c64/rex_ep256.h b/src/devices/bus/c64/rex_ep256.h
index 05859b4fc3e..2d4cb25c95f 100644
--- a/src/devices/bus/c64/rex_ep256.h
+++ b/src/devices/bus/c64/rex_ep256.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_REX_EP256_H
+#define MAME_BUS_C64_REX_EP256_H
-#ifndef __REX_EP256__
-#define __REX_EP256__
+#pragma once
#include "bus/generic/slot.h"
@@ -52,8 +52,7 @@ private:
// device type definition
-extern const device_type C64_REX_EP256;
-
+DECLARE_DEVICE_TYPE(C64_REX_EP256, c64_rex_ep256_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_REX_EP256_H
diff --git a/src/devices/bus/c64/ross.cpp b/src/devices/bus/c64/ross.cpp
index add7f50bbe2..827f98f9401 100644
--- a/src/devices/bus/c64/ross.cpp
+++ b/src/devices/bus/c64/ross.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_ROSS = device_creator<c64_ross_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_ROSS, c64_ross_cartridge_device, "c64_ross", "C64 Ross cartridge")
@@ -28,7 +28,7 @@ const device_type C64_ROSS = device_creator<c64_ross_cartridge_device>;
//-------------------------------------------------
c64_ross_cartridge_device::c64_ross_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_ROSS, "C64 Ross cartridge", tag, owner, clock, "c64_ross", __FILE__),
+ device_t(mconfig, C64_ROSS, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this), m_bank(0)
{
}
diff --git a/src/devices/bus/c64/ross.h b/src/devices/bus/c64/ross.h
index e6096c1d9bd..c36e616948d 100644
--- a/src/devices/bus/c64/ross.h
+++ b/src/devices/bus/c64/ross.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_ROSS_H
+#define MAME_BUS_C64_ROSS_H
-#ifndef __ROSS__
-#define __ROSS__
+#pragma once
#include "exp.h"
@@ -44,8 +44,7 @@ private:
// device type definition
-extern const device_type C64_ROSS;
-
+DECLARE_DEVICE_TYPE(C64_ROSS, c64_ross_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_ROSS_H
diff --git a/src/devices/bus/c64/sfx_sound_expander.cpp b/src/devices/bus/c64/sfx_sound_expander.cpp
index b77dff2d61d..7c721d03b6c 100644
--- a/src/devices/bus/c64/sfx_sound_expander.cpp
+++ b/src/devices/bus/c64/sfx_sound_expander.cpp
@@ -24,7 +24,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_SFX_SOUND_EXPANDER = device_creator<c64_sfx_sound_expander_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_SFX_SOUND_EXPANDER, c64_sfx_sound_expander_cartridge_device, "c64_sfxse", "C64 SFX Sound Expander cartridge")
//-------------------------------------------------
@@ -183,7 +183,7 @@ inline offs_t c64_sfx_sound_expander_cartridge_device::get_offset(offs_t offset,
//-------------------------------------------------
c64_sfx_sound_expander_cartridge_device::c64_sfx_sound_expander_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_SFX_SOUND_EXPANDER, "C64 SFX Sound Expander cartridge", tag, owner, clock, "c64_sfxse", __FILE__),
+ device_t(mconfig, C64_SFX_SOUND_EXPANDER, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_opl(*this, YM3526_TAG),
m_exp(*this, C64_EXPANSION_SLOT_TAG),
diff --git a/src/devices/bus/c64/sfx_sound_expander.h b/src/devices/bus/c64/sfx_sound_expander.h
index f0d0e132dd1..8df5a1d6c0a 100644
--- a/src/devices/bus/c64/sfx_sound_expander.h
+++ b/src/devices/bus/c64/sfx_sound_expander.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_SFX_SOUND_EXPANDER_H
+#define MAME_BUS_C64_SFX_SOUND_EXPANDER_H
-#ifndef __SFX_SOUND_EXPANDER__
-#define __SFX_SOUND_EXPANDER__
+#pragma once
#include "exp.h"
#include "sound/3526intf.h"
@@ -56,8 +56,7 @@ private:
// device type definition
-extern const device_type C64_SFX_SOUND_EXPANDER;
-
+DECLARE_DEVICE_TYPE(C64_SFX_SOUND_EXPANDER, c64_sfx_sound_expander_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_SFX_SOUND_EXPANDER_H
diff --git a/src/devices/bus/c64/silverrock.cpp b/src/devices/bus/c64/silverrock.cpp
index d780445f714..2260b82738a 100644
--- a/src/devices/bus/c64/silverrock.cpp
+++ b/src/devices/bus/c64/silverrock.cpp
@@ -48,7 +48,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_SILVERROCK = device_creator<c64_silverrock_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_SILVERROCK, c64_silverrock_cartridge_device, "c64_silverrock", "C64 SilverRock cartridge")
@@ -61,7 +61,7 @@ const device_type C64_SILVERROCK = device_creator<c64_silverrock_cartridge_devic
//-------------------------------------------------
c64_silverrock_cartridge_device::c64_silverrock_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_SILVERROCK, "C64 SilverRock cartridge", tag, owner, clock, "c64_silverrock", __FILE__),
+ device_t(mconfig, C64_SILVERROCK, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this), m_bank(0)
{
}
diff --git a/src/devices/bus/c64/silverrock.h b/src/devices/bus/c64/silverrock.h
index ed399f18698..4bd33a4db71 100644
--- a/src/devices/bus/c64/silverrock.h
+++ b/src/devices/bus/c64/silverrock.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_SILVERROCK_H
+#define MAME_BUS_C64_SILVERROCK_H
-#ifndef __SILVERROCK__
-#define __SILVERROCK__
+#pragma once
#include "exp.h"
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type C64_SILVERROCK;
+DECLARE_DEVICE_TYPE(C64_SILVERROCK, c64_silverrock_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_SILVERROCK_H
diff --git a/src/devices/bus/c64/simons_basic.cpp b/src/devices/bus/c64/simons_basic.cpp
index 5ced074bc7c..043d43531c0 100644
--- a/src/devices/bus/c64/simons_basic.cpp
+++ b/src/devices/bus/c64/simons_basic.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_SIMONS_BASIC = device_creator<c64_simons_basic_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_SIMONS_BASIC, c64_simons_basic_cartridge_device, "c64_simons_basic", "C64 Simons' BASIC")
@@ -28,7 +28,7 @@ const device_type C64_SIMONS_BASIC = device_creator<c64_simons_basic_cartridge_d
//-------------------------------------------------
c64_simons_basic_cartridge_device::c64_simons_basic_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_SIMONS_BASIC, "Simons' BASIC", tag, owner, clock, "c64_simons_basic", __FILE__),
+ device_t(mconfig, C64_SIMONS_BASIC, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/simons_basic.h b/src/devices/bus/c64/simons_basic.h
index d08686018f9..9f9cd5a1636 100644
--- a/src/devices/bus/c64/simons_basic.h
+++ b/src/devices/bus/c64/simons_basic.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_SIMONS_BASIC_H
+#define MAME_BUS_C64_SIMONS_BASIC_H
-#ifndef __SIMONS_BASIC__
-#define __SIMONS_BASIC__
+#pragma once
#include "exp.h"
@@ -41,7 +41,7 @@ protected:
// device type definition
-extern const device_type C64_SIMONS_BASIC;
+DECLARE_DEVICE_TYPE(C64_SIMONS_BASIC, c64_simons_basic_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_SIMONS_BASIC_H
diff --git a/src/devices/bus/c64/speakeasy.cpp b/src/devices/bus/c64/speakeasy.cpp
index 41060e9b3bd..a4c2d02a278 100644
--- a/src/devices/bus/c64/speakeasy.cpp
+++ b/src/devices/bus/c64/speakeasy.cpp
@@ -24,7 +24,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_SPEAKEASY = device_creator<c64_speakeasy_t>;
+DEFINE_DEVICE_TYPE(C64_SPEAKEASY, c64_speakeasy_cartridge_device, "c64_speakeasy", "PPP Speakeasy 64")
//-------------------------------------------------
@@ -44,7 +44,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c64_speakeasy_t::device_mconfig_additions() const
+machine_config_constructor c64_speakeasy_cartridge_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( speakeasy );
}
@@ -56,11 +56,11 @@ machine_config_constructor c64_speakeasy_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// c64_speakeasy_t - constructor
+// c64_speakeasy_cartridge_device - constructor
//-------------------------------------------------
-c64_speakeasy_t::c64_speakeasy_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_SPEAKEASY, "Speakeasy 64", tag, owner, clock, "speakeasy64", __FILE__),
+c64_speakeasy_cartridge_device::c64_speakeasy_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, C64_SPEAKEASY, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_votrax(*this, SC01A_TAG)
{
@@ -71,7 +71,7 @@ c64_speakeasy_t::c64_speakeasy_t(const machine_config &mconfig, const char *tag,
// device_start - device-specific startup
//-------------------------------------------------
-void c64_speakeasy_t::device_start()
+void c64_speakeasy_cartridge_device::device_start()
{
}
@@ -80,7 +80,7 @@ void c64_speakeasy_t::device_start()
// c64_cd_r - cartridge data read
//-------------------------------------------------
-uint8_t c64_speakeasy_t::c64_cd_r(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2)
+uint8_t c64_speakeasy_cartridge_device::c64_cd_r(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2)
{
if (!io1)
{
@@ -95,7 +95,7 @@ uint8_t c64_speakeasy_t::c64_cd_r(address_space &space, offs_t offset, uint8_t d
// c64_cd_w - cartridge data write
//-------------------------------------------------
-void c64_speakeasy_t::c64_cd_w(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2)
+void c64_speakeasy_cartridge_device::c64_cd_w(address_space &space, offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2)
{
if (!io1)
{
diff --git a/src/devices/bus/c64/speakeasy.h b/src/devices/bus/c64/speakeasy.h
index 0dee7203789..9ff90a460b9 100644
--- a/src/devices/bus/c64/speakeasy.h
+++ b/src/devices/bus/c64/speakeasy.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_SPEAKEASY_H
+#define MAME_BUS_C64_SPEAKEASY_H
-#ifndef __C64_SPEAKEASY__
-#define __C64_SPEAKEASY__
+#pragma once
#include "exp.h"
#include "sound/votrax.h"
@@ -20,14 +20,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c64_speakeasy_t
+// ======================> c64_speakeasy_cartridge_device
-class c64_speakeasy_t : public device_t,
- public device_c64_expansion_card_interface
+class c64_speakeasy_cartridge_device : public device_t, public device_c64_expansion_card_interface
{
public:
// construction/destruction
- c64_speakeasy_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c64_speakeasy_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -46,8 +45,7 @@ private:
// device type definition
-extern const device_type C64_SPEAKEASY;
-
+DECLARE_DEVICE_TYPE(C64_SPEAKEASY, c64_speakeasy_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_SPEAKEASY_H
diff --git a/src/devices/bus/c64/stardos.cpp b/src/devices/bus/c64/stardos.cpp
index 945d089f15d..ce3d19f0b9b 100644
--- a/src/devices/bus/c64/stardos.cpp
+++ b/src/devices/bus/c64/stardos.cpp
@@ -44,7 +44,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_STARDOS = device_creator<c64_stardos_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_STARDOS, c64_stardos_cartridge_device, "c64_stardos", "C64 StarDOS cartridge")
//-------------------------------------------------
@@ -114,7 +114,7 @@ void c64_stardos_cartridge_device::charge_io2_capacitor()
//-------------------------------------------------
c64_stardos_cartridge_device::c64_stardos_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_STARDOS, "C64 StarDOS cartridge", tag, owner, clock, "c64_stardos", __FILE__),
+ device_t(mconfig, C64_STARDOS, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_io1_charge(0),
m_io2_charge(0)
diff --git a/src/devices/bus/c64/stardos.h b/src/devices/bus/c64/stardos.h
index 337101c8f7d..d9c8699a991 100644
--- a/src/devices/bus/c64/stardos.h
+++ b/src/devices/bus/c64/stardos.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C4_STARDOS_H
+#define MAME_BUS_C4_STARDOS_H
-#ifndef __STARDOS__
-#define __STARDOS__
+#pragma once
#include "exp.h"
@@ -53,7 +53,7 @@ private:
// device type definition
-extern const device_type C64_STARDOS;
+DECLARE_DEVICE_TYPE(C64_STARDOS, c64_stardos_cartridge_device)
-#endif
+#endif // MAME_BUS_C4_STARDOS_H
diff --git a/src/devices/bus/c64/std.cpp b/src/devices/bus/c64/std.cpp
index 2b75507d9b6..fac9d021696 100644
--- a/src/devices/bus/c64/std.cpp
+++ b/src/devices/bus/c64/std.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_STD = device_creator<c64_standard_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_STD, c64_standard_cartridge_device, "c64_standard", "C64 standard cartridge")
@@ -28,7 +28,7 @@ const device_type C64_STD = device_creator<c64_standard_cartridge_device>;
//-------------------------------------------------
c64_standard_cartridge_device::c64_standard_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_STD, "C64 standard cartridge", tag, owner, clock, "c64_standard", __FILE__),
+ device_t(mconfig, C64_STD, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/std.h b/src/devices/bus/c64/std.h
index 22c0d29e171..8a2599fe7bd 100644
--- a/src/devices/bus/c64/std.h
+++ b/src/devices/bus/c64/std.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_STD_H
+#define MAME_BUS_C64_STD_H
-#ifndef __C64_STANDARD_CARTRIDGE__
-#define __C64_STANDARD_CARTRIDGE__
+#pragma once
#include "exp.h"
@@ -39,7 +39,7 @@ protected:
// device type definition
-extern const device_type C64_STD;
+DECLARE_DEVICE_TYPE(C64_STD, c64_standard_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_STD_H
diff --git a/src/devices/bus/c64/structured_basic.cpp b/src/devices/bus/c64/structured_basic.cpp
index 9e5580545df..2f968643b7d 100644
--- a/src/devices/bus/c64/structured_basic.cpp
+++ b/src/devices/bus/c64/structured_basic.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_STRUCTURED_BASIC = device_creator<c64_structured_basic_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_STRUCTURED_BASIC, c64_structured_basic_cartridge_device, "c64_structured_basic", "C64 Structured Basic cartridge")
@@ -28,7 +28,7 @@ const device_type C64_STRUCTURED_BASIC = device_creator<c64_structured_basic_car
//-------------------------------------------------
c64_structured_basic_cartridge_device::c64_structured_basic_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_STRUCTURED_BASIC, "C64 Structured Basic cartridge", tag, owner, clock, "c64_structured_basic", __FILE__),
+ device_t(mconfig, C64_STRUCTURED_BASIC, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/structured_basic.h b/src/devices/bus/c64/structured_basic.h
index 21e44b42c8c..7b36402dcf5 100644
--- a/src/devices/bus/c64/structured_basic.h
+++ b/src/devices/bus/c64/structured_basic.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_STRUCTURED_BASIC_H
+#define MAME_BUS_C64_STRUCTURED_BASIC_H
-#ifndef __STRUCTURED_BASIC__
-#define __STRUCTURED_BASIC__
+#pragma once
#include "exp.h"
@@ -44,8 +44,7 @@ private:
// device type definition
-extern const device_type C64_STRUCTURED_BASIC;
-
+DECLARE_DEVICE_TYPE(C64_STRUCTURED_BASIC, c64_structured_basic_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_STRUCTURED_BASIC_H
diff --git a/src/devices/bus/c64/super_explode.cpp b/src/devices/bus/c64/super_explode.cpp
index d535d1d066e..88e7a9b48ab 100644
--- a/src/devices/bus/c64/super_explode.cpp
+++ b/src/devices/bus/c64/super_explode.cpp
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_SUPER_EXPLODE = device_creator<c64_super_explode_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_SUPER_EXPLODE, c64_super_explode_cartridge_device, "c64_super_explode", "C64 Super Explode! cartridge")
@@ -38,7 +38,7 @@ const device_type C64_SUPER_EXPLODE = device_creator<c64_super_explode_cartridge
//-------------------------------------------------
c64_super_explode_cartridge_device::c64_super_explode_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_SUPER_EXPLODE, "C64 Super Explode! cartridge", tag, owner, clock, "c64_super_explode", __FILE__),
+ device_t(mconfig, C64_SUPER_EXPLODE, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this), m_bank(0), m_exrom_timer(nullptr)
{
}
diff --git a/src/devices/bus/c64/super_explode.h b/src/devices/bus/c64/super_explode.h
index c65ebab167d..74edade0e6e 100644
--- a/src/devices/bus/c64/super_explode.h
+++ b/src/devices/bus/c64/super_explode.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_SUPER_EXPLODE_H
+#define MAME_BUS_C64_SUPER_EXPLODE_H
-#ifndef __SUPER_EXPLODE__
-#define __SUPER_EXPLODE__
+#pragma once
#include "exp.h"
@@ -47,7 +47,7 @@ private:
// device type definition
-extern const device_type C64_SUPER_EXPLODE;
+DECLARE_DEVICE_TYPE(C64_SUPER_EXPLODE, c64_super_explode_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_SUPER_EXPLODE_H
diff --git a/src/devices/bus/c64/super_games.cpp b/src/devices/bus/c64/super_games.cpp
index dde616c1719..7a58d29cd57 100644
--- a/src/devices/bus/c64/super_games.cpp
+++ b/src/devices/bus/c64/super_games.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_SUPER_GAMES = device_creator<c64_super_games_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_SUPER_GAMES, c64_super_games_cartridge_device, "c64_super_games", "C64 Super Games cartridge")
@@ -28,7 +28,7 @@ const device_type C64_SUPER_GAMES = device_creator<c64_super_games_cartridge_dev
//-------------------------------------------------
c64_super_games_cartridge_device::c64_super_games_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_SUPER_GAMES, "C64 Super Games cartridge", tag, owner, clock, "c64_super_games", __FILE__),
+ device_t(mconfig, C64_SUPER_GAMES, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/super_games.h b/src/devices/bus/c64/super_games.h
index 627eae89338..64a50f9e240 100644
--- a/src/devices/bus/c64/super_games.h
+++ b/src/devices/bus/c64/super_games.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_SUPER_GAMES_H
+#define MAME_BUS_C64_SUPER_GAMES_H
-#ifndef __SUPER_GAMES__
-#define __SUPER_GAMES__
+#pragma once
#include "exp.h"
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type C64_SUPER_GAMES;
+DECLARE_DEVICE_TYPE(C64_SUPER_GAMES, c64_super_games_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_SUPER_GAMES_H
diff --git a/src/devices/bus/c64/supercpu.cpp b/src/devices/bus/c64/supercpu.cpp
index 256a184664b..cedd3057f6f 100644
--- a/src/devices/bus/c64/supercpu.cpp
+++ b/src/devices/bus/c64/supercpu.cpp
@@ -22,7 +22,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_SUPERCPU = device_creator<c64_supercpu_device>;
+DEFINE_DEVICE_TYPE(C64_SUPERCPU, c64_supercpu_device, "c64_supercpu", "C64 SuperCPU v2 + SuperRAM")
//-------------------------------------------------
@@ -120,7 +120,7 @@ ioport_constructor c64_supercpu_device::device_input_ports() const
//-------------------------------------------------
c64_supercpu_device::c64_supercpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_SUPERCPU, "SuperCPU", tag, owner, clock, "c64_supercpu", __FILE__),
+ device_t(mconfig, C64_SUPERCPU, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_maincpu(*this, G65816_TAG),
m_exp(*this, C64_EXPANSION_SLOT_TAG),
diff --git a/src/devices/bus/c64/supercpu.h b/src/devices/bus/c64/supercpu.h
index 3db47899c01..c3c0308d471 100644
--- a/src/devices/bus/c64/supercpu.h
+++ b/src/devices/bus/c64/supercpu.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_SUPERCPU_H
+#define MAME_BUS_C64_SUPERCPU_H
-#ifndef __SUPERCPU__
-#define __SUPERCPU__
+#pragma once
#include "exp.h"
#include "cpu/g65816/g65816.h"
@@ -55,8 +55,7 @@ private:
// device type definition
-extern const device_type C64_SUPERCPU;
-
+DECLARE_DEVICE_TYPE(C64_SUPERCPU, c64_supercpu_device)
-#endif
+#endif // MAME_BUS_C64_SUPERCPU_H
diff --git a/src/devices/bus/c64/sw8k.cpp b/src/devices/bus/c64/sw8k.cpp
index 024d6c0145c..ff0e3310101 100644
--- a/src/devices/bus/c64/sw8k.cpp
+++ b/src/devices/bus/c64/sw8k.cpp
@@ -38,7 +38,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_SW8K = device_creator<c64_switchable_8k_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_SW8K, c64_switchable_8k_cartridge_device, "c64_sw8k", "C64 Switchable 8K cartridge")
//-------------------------------------------------
@@ -73,7 +73,7 @@ ioport_constructor c64_switchable_8k_cartridge_device::device_input_ports() cons
//-------------------------------------------------
c64_switchable_8k_cartridge_device::c64_switchable_8k_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_SW8K, "C64 Switchable 8K cartridge", tag, owner, clock, "c64_sw8k", __FILE__),
+ device_t(mconfig, C64_SW8K, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_sw(*this, "SW"), m_bank(0)
{
diff --git a/src/devices/bus/c64/sw8k.h b/src/devices/bus/c64/sw8k.h
index 6217da60d70..10ced77912a 100644
--- a/src/devices/bus/c64/sw8k.h
+++ b/src/devices/bus/c64/sw8k.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_SW8K_H
+#define MAME_BUS_C64_SW8K_H
-#ifndef __C64_SW8K__
-#define __C64_SW8K__
+#pragma once
#include "exp.h"
@@ -49,6 +49,7 @@ private:
// device type definition
extern const device_type C64_SW8K;
+DECLARE_DEVICE_TYPE(C64_SW8K, c64_switchable_8k_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_SW8K_H
diff --git a/src/devices/bus/c64/swiftlink.cpp b/src/devices/bus/c64/swiftlink.cpp
index eeaa9677568..a59c65d5048 100644
--- a/src/devices/bus/c64/swiftlink.cpp
+++ b/src/devices/bus/c64/swiftlink.cpp
@@ -31,7 +31,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_SWIFTLINK = device_creator<c64_swiftlink_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_SWIFTLINK, c64_swiftlink_cartridge_device, "c64_swiftlink", "C64 SwiftLink cartridge")
//-------------------------------------------------
@@ -101,7 +101,7 @@ ioport_constructor c64_swiftlink_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_swiftlink_cartridge_device::c64_swiftlink_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_SWIFTLINK, "C64 SwiftLink cartridge", tag, owner, clock, "c64_swiftlink", __FILE__),
+ device_t(mconfig, C64_SWIFTLINK, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_acia(*this, MOS6551_TAG),
m_io_cs(*this, "CS"),
diff --git a/src/devices/bus/c64/swiftlink.h b/src/devices/bus/c64/swiftlink.h
index 3cc2ed17165..fba041f1b11 100644
--- a/src/devices/bus/c64/swiftlink.h
+++ b/src/devices/bus/c64/swiftlink.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_SWIFTLINK_H
+#define MAME_BUS_C64_SWIFTLINK_H
-#ifndef __SWIFTLINK__
-#define __SWIFTLINK__
+#pragma once
#include "exp.h"
@@ -70,7 +70,7 @@ private:
// device type definition
-extern const device_type C64_SWIFTLINK;
+DECLARE_DEVICE_TYPE(C64_SWIFTLINK, c64_swiftlink_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_SWIFTLINK_H
diff --git a/src/devices/bus/c64/system3.cpp b/src/devices/bus/c64/system3.cpp
index c7a72e4d4a2..7a1fd54ab3e 100644
--- a/src/devices/bus/c64/system3.cpp
+++ b/src/devices/bus/c64/system3.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_SYSTEM3 = device_creator<c64_system3_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_SYSTEM3, c64_system3_cartridge_device, "c64_system3", "C64 System 3 cartridge")
@@ -28,7 +28,7 @@ const device_type C64_SYSTEM3 = device_creator<c64_system3_cartridge_device>;
//-------------------------------------------------
c64_system3_cartridge_device::c64_system3_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_SYSTEM3, "C64 System 3 cartridge", tag, owner, clock, "c64_system3", __FILE__),
+ device_t(mconfig, C64_SYSTEM3, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/system3.h b/src/devices/bus/c64/system3.h
index 4f348628222..ff5ed78b53d 100644
--- a/src/devices/bus/c64/system3.h
+++ b/src/devices/bus/c64/system3.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_BUS_SYSTEM3_H
+#define MAME_BUS_BUS_SYSTEM3_H
-#ifndef __SYSTEM3__
-#define __SYSTEM3__
+#pragma once
#include "exp.h"
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type C64_SYSTEM3;
+DECLARE_DEVICE_TYPE(C64_SYSTEM3, c64_system3_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_SYSTEM3_H
diff --git a/src/devices/bus/c64/tdos.cpp b/src/devices/bus/c64/tdos.cpp
index 276a1d8965e..11019901cdd 100644
--- a/src/devices/bus/c64/tdos.cpp
+++ b/src/devices/bus/c64/tdos.cpp
@@ -146,7 +146,7 @@ BASIC commands (SYS 32768 to activate)
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_TDOS = device_creator<c64_tdos_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_TDOS, c64_tdos_cartridge_device, "c64_tdos", "C64 TDOS cartridge")
//-------------------------------------------------
@@ -203,7 +203,7 @@ ioport_constructor c64_tdos_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_tdos_cartridge_device::c64_tdos_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_TDOS, "C64 TDOS cartridge", tag, owner, clock, "c64_tdos", __FILE__),
+ device_t(mconfig, C64_TDOS, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_ssda(*this, MC68A52P_TAG),
m_exp(*this, C64_EXPANSION_SLOT_TAG),
diff --git a/src/devices/bus/c64/tdos.h b/src/devices/bus/c64/tdos.h
index 79fcadd3537..164d2fd5ca0 100644
--- a/src/devices/bus/c64/tdos.h
+++ b/src/devices/bus/c64/tdos.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_TDOS_H
+#define MAME_BUS_C64_TDOS_H
-#ifndef __TDOS__
-#define __TDOS__
+#pragma once
#include "exp.h"
#include "machine/mc6852.h"
@@ -54,7 +54,7 @@ private:
// device type definition
-extern const device_type C64_TDOS;
+DECLARE_DEVICE_TYPE(C64_TDOS, c64_tdos_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_TDOS_H
diff --git a/src/devices/bus/c64/turbo232.cpp b/src/devices/bus/c64/turbo232.cpp
index 524cb98a26e..a62c0a58274 100644
--- a/src/devices/bus/c64/turbo232.cpp
+++ b/src/devices/bus/c64/turbo232.cpp
@@ -30,7 +30,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_TURBO232 = device_creator<c64_turbo232_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_TURBO232, c64_turbo232_cartridge_device, "c64_turbo232", "C64 Turbo232 cartridge")
//-------------------------------------------------
@@ -100,7 +100,7 @@ ioport_constructor c64_turbo232_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_turbo232_cartridge_device::c64_turbo232_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_TURBO232, "C64 Turbo232 cartridge", tag, owner, clock, "c64_turbo232", __FILE__),
+ device_t(mconfig, C64_TURBO232, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_acia(*this, MOS6551_TAG),
m_rs232(*this, RS232_TAG),
diff --git a/src/devices/bus/c64/turbo232.h b/src/devices/bus/c64/turbo232.h
index c98d9cc10eb..4ca2cb73084 100644
--- a/src/devices/bus/c64/turbo232.h
+++ b/src/devices/bus/c64/turbo232.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_TURBO232_H
+#define MAME_BUS_C64_TURBO232_H
-#ifndef __TURBO232__
-#define __TURBO232__
+#pragma once
#include "exp.h"
@@ -83,7 +83,7 @@ private:
// device type definition
-extern const device_type C64_TURBO232;
+DECLARE_DEVICE_TYPE(C64_TURBO232, c64_turbo232_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_TURBO232_H
diff --git a/src/devices/bus/c64/user.h b/src/devices/bus/c64/user.h
index 52aed6eb972..8e9ecf347b2 100644
--- a/src/devices/bus/c64/user.h
+++ b/src/devices/bus/c64/user.h
@@ -21,13 +21,13 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_USER_H
+#define MAME_BUS_C64_USER_H
-#ifndef __C64_USER_PORT__
-#define __C64_USER_PORT__
+#pragma once
#include "bus/pet/user.h"
SLOT_INTERFACE_EXTERN( c64_user_port_cards );
-#endif
+#endif // MAME_BUS_C64_USER_H
diff --git a/src/devices/bus/c64/vizastar.cpp b/src/devices/bus/c64/vizastar.cpp
index bd16f5b70bb..03043e7de93 100644
--- a/src/devices/bus/c64/vizastar.cpp
+++ b/src/devices/bus/c64/vizastar.cpp
@@ -47,7 +47,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_VIZASTAR = device_creator<c64_vizastar_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_VIZASTAR, c64_vizastar_cartridge_device, "c64_vizastar", "VizaStar 64 XL4")
@@ -60,7 +60,7 @@ const device_type C64_VIZASTAR = device_creator<c64_vizastar_cartridge_device>;
//-------------------------------------------------
c64_vizastar_cartridge_device::c64_vizastar_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_VIZASTAR, "VizaStar 64 XL4", tag, owner, clock, "c64_vizastar", __FILE__),
+ device_t(mconfig, C64_VIZASTAR, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/vizastar.h b/src/devices/bus/c64/vizastar.h
index dc541aec89e..95453eb6e38 100644
--- a/src/devices/bus/c64/vizastar.h
+++ b/src/devices/bus/c64/vizastar.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_VIZASTAR_H
+#define MAME_BUS_C64_VIZASTAR_H
-#ifndef __VIZASTAR__
-#define __VIZASTAR__
+#pragma once
#include "exp.h"
@@ -39,7 +39,7 @@ protected:
// device type definition
-extern const device_type C64_VIZASTAR;
+DECLARE_DEVICE_TYPE(C64_VIZASTAR, c64_vizastar_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_VIZASTAR_H
diff --git a/src/devices/bus/c64/vw64.cpp b/src/devices/bus/c64/vw64.cpp
index 794aa210a8f..f6ed996765a 100644
--- a/src/devices/bus/c64/vw64.cpp
+++ b/src/devices/bus/c64/vw64.cpp
@@ -55,7 +55,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_VW64 = device_creator<c64_vizawrite_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_VW64, c64_vizawrite_cartridge_device, "c64_vizawrite", "VizaWrite 64")
@@ -68,7 +68,7 @@ const device_type C64_VW64 = device_creator<c64_vizawrite_cartridge_device>;
//-------------------------------------------------
c64_vizawrite_cartridge_device::c64_vizawrite_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_VW64, "VizaWrite 64", tag, owner, clock, "c64_vizawrite", __FILE__),
+ device_t(mconfig, C64_VW64, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this), m_game_timer(nullptr)
{
}
diff --git a/src/devices/bus/c64/vw64.h b/src/devices/bus/c64/vw64.h
index a514931d58d..abff81acb4b 100644
--- a/src/devices/bus/c64/vw64.h
+++ b/src/devices/bus/c64/vw64.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_VW64_H
+#define MAME_BUS_C64_VW64_H
-#ifndef __VW64__
-#define __VW64__
+#pragma once
#include "exp.h"
@@ -45,7 +45,7 @@ private:
// device type definition
-extern const device_type C64_VW64;
+DECLARE_DEVICE_TYPE(C64_VW64, c64_vizawrite_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_VW64_H
diff --git a/src/devices/bus/c64/warp_speed.cpp b/src/devices/bus/c64/warp_speed.cpp
index 17ed11be1b3..e9098dadb44 100644
--- a/src/devices/bus/c64/warp_speed.cpp
+++ b/src/devices/bus/c64/warp_speed.cpp
@@ -49,7 +49,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_WARP_SPEED = device_creator<c64_warp_speed_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_WARP_SPEED, c64_warp_speed_cartridge_device, "c64_warp_speed", "C64 Warp Speed cartridge")
//-------------------------------------------------
@@ -87,7 +87,7 @@ ioport_constructor c64_warp_speed_cartridge_device::device_input_ports() const
//-------------------------------------------------
c64_warp_speed_cartridge_device::c64_warp_speed_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_WARP_SPEED, "C64 Warp Speed cartridge", tag, owner, clock, "c64_warp_speed", __FILE__),
+ device_t(mconfig, C64_WARP_SPEED, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/warp_speed.h b/src/devices/bus/c64/warp_speed.h
index 2a7f2db65c3..7a3b25cecfc 100644
--- a/src/devices/bus/c64/warp_speed.h
+++ b/src/devices/bus/c64/warp_speed.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_WARP_SPEED_H
+#define MAME_BUS_C64_WARP_SPEED_H
-#ifndef __WARP_SPEED__
-#define __WARP_SPEED__
+#pragma once
#include "exp.h"
@@ -44,7 +44,7 @@ protected:
// device type definition
-extern const device_type C64_WARP_SPEED;
+DECLARE_DEVICE_TYPE(C64_WARP_SPEED, c64_warp_speed_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_WARP_SPEED_H
diff --git a/src/devices/bus/c64/westermann.cpp b/src/devices/bus/c64/westermann.cpp
index d977e493cb5..8cb86b39a1c 100644
--- a/src/devices/bus/c64/westermann.cpp
+++ b/src/devices/bus/c64/westermann.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_WESTERMANN = device_creator<c64_westermann_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_WESTERMANN, c64_westermann_cartridge_device, "c64_westermann", "C64 Westermann cartridge")
@@ -28,7 +28,7 @@ const device_type C64_WESTERMANN = device_creator<c64_westermann_cartridge_devic
//-------------------------------------------------
c64_westermann_cartridge_device::c64_westermann_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_WESTERMANN, "C64 Westermann cartridge", tag, owner, clock, "c64_westermann", __FILE__),
+ device_t(mconfig, C64_WESTERMANN, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/c64/westermann.h b/src/devices/bus/c64/westermann.h
index 3e724a78f54..b9392c52f72 100644
--- a/src/devices/bus/c64/westermann.h
+++ b/src/devices/bus/c64/westermann.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_WESTERMANN_H
+#define MAME_BUS_C64_WESTERMANN_H
-#ifndef __WESTERMANN__
-#define __WESTERMANN__
+#pragma once
#include "exp.h"
@@ -40,7 +40,7 @@ protected:
// device type definition
-extern const device_type C64_WESTERMANN;
+DECLARE_DEVICE_TYPE(C64_WESTERMANN, c64_westermann_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_WESTERMANN_H
diff --git a/src/devices/bus/c64/xl80.cpp b/src/devices/bus/c64/xl80.cpp
index ef2891c68f4..31e66699b2d 100644
--- a/src/devices/bus/c64/xl80.cpp
+++ b/src/devices/bus/c64/xl80.cpp
@@ -57,7 +57,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_XL80 = device_creator<c64_xl80_device>;
+DEFINE_DEVICE_TYPE(C64_XL80, c64_xl80_device, "c64_xl80", "C64 XL 80 cartridge")
//-------------------------------------------------
@@ -161,7 +161,7 @@ machine_config_constructor c64_xl80_device::device_mconfig_additions() const
//-------------------------------------------------
c64_xl80_device::c64_xl80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_XL80, "XL 80", tag, owner, clock, "c64_xl80", __FILE__),
+ device_t(mconfig, C64_XL80, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_crtc(*this, HD46505SP_TAG),
m_palette(*this, "palette"),
diff --git a/src/devices/bus/c64/xl80.h b/src/devices/bus/c64/xl80.h
index 8da0a40a78f..ee3e1789fa1 100644
--- a/src/devices/bus/c64/xl80.h
+++ b/src/devices/bus/c64/xl80.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_XL80_H
+#define MAME_BUS_C64_XL80_H
-#ifndef __XL80__
-#define __XL80__
+#pragma once
#include "exp.h"
@@ -57,7 +57,7 @@ private:
// device type definition
-extern const device_type C64_XL80;
+DECLARE_DEVICE_TYPE(C64_XL80, c64_xl80_device)
-#endif
+#endif // MAME_BUS_C64_XL80_H
diff --git a/src/devices/bus/c64/zaxxon.cpp b/src/devices/bus/c64/zaxxon.cpp
index c6e5c1ef749..8de226cfb9d 100644
--- a/src/devices/bus/c64/zaxxon.cpp
+++ b/src/devices/bus/c64/zaxxon.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_ZAXXON = device_creator<c64_zaxxon_cartridge_device>;
+DEFINE_DEVICE_TYPE(C64_ZAXXON, c64_zaxxon_cartridge_device, "c64_zaxxon", "C64 Zaxxon cartridge")
@@ -28,7 +28,7 @@ const device_type C64_ZAXXON = device_creator<c64_zaxxon_cartridge_device>;
//-------------------------------------------------
c64_zaxxon_cartridge_device::c64_zaxxon_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_ZAXXON, "C64 Zaxxon cartridge", tag, owner, clock, "c64_zaxxon", __FILE__),
+ device_t(mconfig, C64_ZAXXON, tag, owner, clock),
device_c64_expansion_card_interface(mconfig, *this),
m_bank(0)
{
diff --git a/src/devices/bus/c64/zaxxon.h b/src/devices/bus/c64/zaxxon.h
index b15b0b0b4a5..dafd293081f 100644
--- a/src/devices/bus/c64/zaxxon.h
+++ b/src/devices/bus/c64/zaxxon.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_C64_ZAXXON_H
+#define MAME_BUS_C64_ZAXXON_H
-#ifndef __ZAXXON__
-#define __ZAXXON__
+#pragma once
#include "exp.h"
@@ -42,7 +42,7 @@ private:
// device type definition
-extern const device_type C64_ZAXXON;
+DECLARE_DEVICE_TYPE(C64_ZAXXON, c64_zaxxon_cartridge_device)
-#endif
+#endif // MAME_BUS_C64_ZAXXON_H
diff --git a/src/devices/bus/cbm2/24k.cpp b/src/devices/bus/cbm2/24k.cpp
index e9e94d272a5..9517337f8c1 100644
--- a/src/devices/bus/cbm2/24k.cpp
+++ b/src/devices/bus/cbm2/24k.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CBM2_24K = device_creator<cbm2_24k_cartridge_device>;
+DEFINE_DEVICE_TYPE(CBM2_24K, cbm2_24k_cartridge_device, "cbm2_24k", "CBM-II 24K RAM/ROM cartridge")
@@ -28,7 +28,7 @@ const device_type CBM2_24K = device_creator<cbm2_24k_cartridge_device>;
//-------------------------------------------------
cbm2_24k_cartridge_device::cbm2_24k_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CBM2_24K, "24K RAM/ROM cartridge", tag, owner, clock, "cbm2_24k", __FILE__),
+ device_t(mconfig, CBM2_24K, tag, owner, clock),
device_cbm2_expansion_card_interface(mconfig, *this),
m_ram(*this, "ram")
{
diff --git a/src/devices/bus/cbm2/24k.h b/src/devices/bus/cbm2/24k.h
index 52b75796402..0e40e67d478 100644
--- a/src/devices/bus/cbm2/24k.h
+++ b/src/devices/bus/cbm2/24k.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBM2_24K_H
+#define MAME_BUS_CBM2_24K_H
-#ifndef __CBM2_24K_CARTRIDGE__
-#define __CBM2_24K_CARTRIDGE__
+#pragma once
#include "exp.h"
@@ -41,7 +41,7 @@ protected:
// device type definition
-extern const device_type CBM2_24K;
+DECLARE_DEVICE_TYPE(CBM2_24K, cbm2_24k_cartridge_device)
-#endif
+#endif // MAME_BUS_CBM2_24K_H
diff --git a/src/devices/bus/cbm2/exp.cpp b/src/devices/bus/cbm2/exp.cpp
index bd6c2932128..0659fbc93ed 100644
--- a/src/devices/bus/cbm2/exp.cpp
+++ b/src/devices/bus/cbm2/exp.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CBM2_EXPANSION_SLOT = device_creator<cbm2_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(CBM2_EXPANSION_SLOT, cbm2_expansion_slot_device, "cbm2_expansion_slot", "CBM-II expansion port")
@@ -64,9 +64,10 @@ device_cbm2_expansion_card_interface::~device_cbm2_expansion_card_interface()
//-------------------------------------------------
cbm2_expansion_slot_device::cbm2_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CBM2_EXPANSION_SLOT, "CBM-II expansion port", tag, owner, clock, "cbm2_expansion_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- device_image_interface(mconfig, *this), m_card(nullptr)
+ device_t(mconfig, CBM2_EXPANSION_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ device_image_interface(mconfig, *this),
+ m_card(nullptr)
{
}
diff --git a/src/devices/bus/cbm2/exp.h b/src/devices/bus/cbm2/exp.h
index 061834b1504..0b6ca30a087 100644
--- a/src/devices/bus/cbm2/exp.h
+++ b/src/devices/bus/cbm2/exp.h
@@ -24,10 +24,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBM2_EXP_H
+#define MAME_BUS_CBM2_EXP_H
-#ifndef __CBM2_EXPANSION_SLOT__
-#define __CBM2_EXPANSION_SLOT__
+#pragma once
#include "softlist_dev.h"
@@ -108,13 +108,14 @@ class device_cbm2_expansion_card_interface : public device_slot_card_interface
public:
// construction/destruction
- device_cbm2_expansion_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_cbm2_expansion_card_interface();
virtual uint8_t cbm2_bd_r(address_space &space, offs_t offset, uint8_t data, int csbank1, int csbank2, int csbank3) { return data; };
virtual void cbm2_bd_w(address_space &space, offs_t offset, uint8_t data, int csbank1, int csbank2, int csbank3) { };
protected:
+ device_cbm2_expansion_card_interface(const machine_config &mconfig, device_t &device);
+
optional_shared_ptr<uint8_t> m_bank1;
optional_shared_ptr<uint8_t> m_bank2;
optional_shared_ptr<uint8_t> m_bank3;
@@ -124,11 +125,10 @@ protected:
// device type definition
-extern const device_type CBM2_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(CBM2_EXPANSION_SLOT, cbm2_expansion_slot_device)
SLOT_INTERFACE_EXTERN( cbm2_expansion_cards );
-
-#endif
+#endif // MAME_BUS_CBM2_EXP_H
diff --git a/src/devices/bus/cbm2/hrg.cpp b/src/devices/bus/cbm2/hrg.cpp
index cc06bbb7f40..c1c38b958f1 100644
--- a/src/devices/bus/cbm2/hrg.cpp
+++ b/src/devices/bus/cbm2/hrg.cpp
@@ -38,8 +38,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CBM2_HRG_A = device_creator<cbm2_hrg_a_t>;
-const device_type CBM2_HRG_B = device_creator<cbm2_hrg_b_t>;
+DEFINE_DEVICE_TYPE(CBM2_HRG_A, cbm2_hrg_a_device, "cbm2_hrga", "CBM 500/600/700 High Resolution Graphics (A)")
+DEFINE_DEVICE_TYPE(CBM2_HRG_B, cbm2_hrg_b_device, "cbm2_hrgb", "CBM 500/600/700 High Resolution Graphics (B)")
//-------------------------------------------------
@@ -56,7 +56,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *cbm2_hrg_t::device_rom_region() const
+const tiny_rom_entry *cbm2_hrg_device::device_rom_region() const
{
return ROM_NAME( cbm2_hrg );
}
@@ -66,7 +66,7 @@ const tiny_rom_entry *cbm2_hrg_t::device_rom_region() const
// ADDRESS_MAP( hrg_a_map )
//-------------------------------------------------
-static ADDRESS_MAP_START( hrg_a_map, AS_0, 8, cbm2_hrg_a_t )
+static ADDRESS_MAP_START( hrg_a_map, AS_0, 8, cbm2_hrg_a_device )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x7fff) AM_RAM
ADDRESS_MAP_END
@@ -76,7 +76,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( hrg_b_map )
//-------------------------------------------------
-static ADDRESS_MAP_START( hrg_b_map, AS_0, 8, cbm2_hrg_b_t )
+static ADDRESS_MAP_START( hrg_b_map, AS_0, 8, cbm2_hrg_b_device )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x3fff) AM_RAM
ADDRESS_MAP_END
@@ -99,7 +99,7 @@ static MACHINE_CONFIG_FRAGMENT( cbm2_hrg_a )
MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_a_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
- MCFG_EF936X_DISPLAYMODE(EF936X_512x512_DISPLAY_MODE);
+ MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x512);
MACHINE_CONFIG_END
@@ -120,7 +120,7 @@ static MACHINE_CONFIG_FRAGMENT( cbm2_hrg_b )
MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_b_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
- MCFG_EF936X_DISPLAYMODE(EF936X_512x256_DISPLAY_MODE);
+ MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x256);
MACHINE_CONFIG_END
@@ -129,12 +129,12 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor cbm2_hrg_a_t::device_mconfig_additions() const
+machine_config_constructor cbm2_hrg_a_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cbm2_hrg_a );
}
-machine_config_constructor cbm2_hrg_b_t::device_mconfig_additions() const
+machine_config_constructor cbm2_hrg_b_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cbm2_hrg_b );
}
@@ -146,24 +146,24 @@ machine_config_constructor cbm2_hrg_b_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// cbm2_hrg_t - constructor
+// cbm2_hrg_device - constructor
//-------------------------------------------------
-cbm2_hrg_t::cbm2_hrg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+cbm2_hrg_device::cbm2_hrg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_cbm2_expansion_card_interface(mconfig, *this),
m_gdc(*this, EF9366_TAG),
m_bank3(*this, "bank3")
{
}
-cbm2_hrg_a_t::cbm2_hrg_a_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- cbm2_hrg_t(mconfig, CBM2_HRG_A, "CBM 500/600/700 High Resolution Graphics (A)", tag, owner, clock, "cbm2_hrga", __FILE__)
+cbm2_hrg_a_device::cbm2_hrg_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ cbm2_hrg_device(mconfig, CBM2_HRG_A, tag, owner, clock)
{
}
-cbm2_hrg_b_t::cbm2_hrg_b_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- cbm2_hrg_t(mconfig, CBM2_HRG_B, "CBM 500/600/700 High Resolution Graphics (B)", tag, owner, clock, "cbm2_hrgb", __FILE__)
+cbm2_hrg_b_device::cbm2_hrg_b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ cbm2_hrg_device(mconfig, CBM2_HRG_B, tag, owner, clock)
{
}
@@ -172,7 +172,7 @@ cbm2_hrg_b_t::cbm2_hrg_b_t(const machine_config &mconfig, const char *tag, devic
// device_start - device-specific startup
//-------------------------------------------------
-void cbm2_hrg_t::device_start()
+void cbm2_hrg_device::device_start()
{
}
@@ -181,7 +181,7 @@ void cbm2_hrg_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void cbm2_hrg_t::device_reset()
+void cbm2_hrg_device::device_reset()
{
m_gdc->reset();
}
@@ -191,7 +191,7 @@ void cbm2_hrg_t::device_reset()
// cbm2_bd_r - cartridge data read
//-------------------------------------------------
-uint8_t cbm2_hrg_t::cbm2_bd_r(address_space &space, offs_t offset, uint8_t data, int csbank1, int csbank2, int csbank3)
+uint8_t cbm2_hrg_device::cbm2_bd_r(address_space &space, offs_t offset, uint8_t data, int csbank1, int csbank2, int csbank3)
{
if (!csbank3)
{
@@ -234,7 +234,7 @@ uint8_t cbm2_hrg_t::cbm2_bd_r(address_space &space, offs_t offset, uint8_t data,
// cbm2_bd_w - cartridge data write
//-------------------------------------------------
-void cbm2_hrg_t::cbm2_bd_w(address_space &space, offs_t offset, uint8_t data, int csbank1, int csbank2, int csbank3)
+void cbm2_hrg_device::cbm2_bd_w(address_space &space, offs_t offset, uint8_t data, int csbank1, int csbank2, int csbank3)
{
if (!csbank3)
{
diff --git a/src/devices/bus/cbm2/hrg.h b/src/devices/bus/cbm2/hrg.h
index 72db8dc8564..289ff89a604 100644
--- a/src/devices/bus/cbm2/hrg.h
+++ b/src/devices/bus/cbm2/hrg.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBM2_HRG_H
+#define MAME_BUS_CBM2_HRG_H
-#ifndef __CBM2_GRAPHIC__
-#define __CBM2_GRAPHIC__
+#pragma once
#include "exp.h"
#include "video/ef9365.h"
@@ -20,19 +20,19 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> cbm2_hrg_t
+// ======================> cbm2_hrg_device
-class cbm2_hrg_t : public device_t,
+class cbm2_hrg_device : public device_t,
public device_cbm2_expansion_card_interface
{
public:
- // construction/destruction
- cbm2_hrg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
+ // construction/destruction
+ cbm2_hrg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -47,26 +47,26 @@ private:
};
-// ======================> cbm2_hrg_a_t
+// ======================> cbm2_hrg_a_device
-class cbm2_hrg_a_t : public cbm2_hrg_t
+class cbm2_hrg_a_device : public cbm2_hrg_device
{
public:
// construction/destruction
- cbm2_hrg_a_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ cbm2_hrg_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
};
-// ======================> cbm2_hrg_b_t
+// ======================> cbm2_hrg_b_device
-class cbm2_hrg_b_t : public cbm2_hrg_t
+class cbm2_hrg_b_device : public cbm2_hrg_device
{
public:
// construction/destruction
- cbm2_hrg_b_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ cbm2_hrg_b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -74,9 +74,8 @@ public:
// device type definition
-extern const device_type CBM2_HRG_A;
-extern const device_type CBM2_HRG_B;
-
+DECLARE_DEVICE_TYPE(CBM2_HRG_A, cbm2_hrg_a_device)
+DECLARE_DEVICE_TYPE(CBM2_HRG_B, cbm2_hrg_b_device)
-#endif
+#endif // MAME_BUS_CBM2_HRG_H
diff --git a/src/devices/bus/cbm2/std.cpp b/src/devices/bus/cbm2/std.cpp
index d795fd8837a..5087e39cd93 100644
--- a/src/devices/bus/cbm2/std.cpp
+++ b/src/devices/bus/cbm2/std.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CBM2_STD = device_creator<cbm2_standard_cartridge_device>;
+DEFINE_DEVICE_TYPE(CBM2_STD, cbm2_standard_cartridge_device, "cbm2_standard", "CBM-II standard cartridge")
@@ -28,7 +28,7 @@ const device_type CBM2_STD = device_creator<cbm2_standard_cartridge_device>;
//-------------------------------------------------
cbm2_standard_cartridge_device::cbm2_standard_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CBM2_STD, "CBM-II standard cartridge", tag, owner, clock, "cbm2_standard", __FILE__),
+ device_t(mconfig, CBM2_STD, tag, owner, clock),
device_cbm2_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/cbm2/std.h b/src/devices/bus/cbm2/std.h
index cbfc3f6f5db..beb54e1fb2e 100644
--- a/src/devices/bus/cbm2/std.h
+++ b/src/devices/bus/cbm2/std.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBM2_STD_H
+#define MAME_BUS_CBM2_STD_H
-#ifndef __CBM2_STANDARD_CARTRIDGE__
-#define __CBM2_STANDARD_CARTRIDGE__
+#pragma once
#include "exp.h"
@@ -38,7 +38,7 @@ protected:
// device type definition
-extern const device_type CBM2_STD;
+DECLARE_DEVICE_TYPE(CBM2_STD, cbm2_standard_cartridge_device)
-#endif
+#endif // MAME_BUS_CBM2_STD_H
diff --git a/src/devices/bus/cbm2/user.cpp b/src/devices/bus/cbm2/user.cpp
index 118b379abc8..0c54e409901 100644
--- a/src/devices/bus/cbm2/user.cpp
+++ b/src/devices/bus/cbm2/user.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CBM2_USER_PORT = device_creator<cbm2_user_port_device>;
+DEFINE_DEVICE_TYPE(CBM2_USER_PORT, cbm2_user_port_device, "cbm2_user_port", "CBM-II user port")
@@ -44,7 +44,7 @@ device_cbm2_user_port_interface::device_cbm2_user_port_interface(const machine_c
//-------------------------------------------------
cbm2_user_port_device::cbm2_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CBM2_USER_PORT, "CBM2 user port", tag, owner, clock, "cbm2_user_port", __FILE__),
+ device_t(mconfig, CBM2_USER_PORT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_write_irq(*this),
m_write_sp(*this),
diff --git a/src/devices/bus/cbm2/user.h b/src/devices/bus/cbm2/user.h
index 02b7565b0e7..9c764d7315b 100644
--- a/src/devices/bus/cbm2/user.h
+++ b/src/devices/bus/cbm2/user.h
@@ -22,10 +22,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBM2_USER_H
+#define MAME_BUS_CBM2_USER_H
-#ifndef __CBM2_USER_PORT__
-#define __CBM2_USER_PORT__
+#pragma once
@@ -73,10 +73,6 @@ class cbm2_user_port_device;
class device_cbm2_user_port_interface : public device_slot_card_interface
{
public:
- // construction/destruction
- device_cbm2_user_port_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_cbm2_user_port_interface() { }
-
virtual uint8_t cbm2_d1_r(address_space &space, offs_t offset) { return 0xff; };
virtual void cbm2_d1_w(address_space &space, offs_t offset, uint8_t data) { };
@@ -93,6 +89,9 @@ public:
virtual void cbm2_sp_w(int state) { };
protected:
+ // construction/destruction
+ device_cbm2_user_port_interface(const machine_config &mconfig, device_t &device);
+
cbm2_user_port_device *m_slot;
};
@@ -105,12 +104,11 @@ class cbm2_user_port_device : public device_t,
public:
// construction/destruction
cbm2_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~cbm2_user_port_device() { }
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<cbm2_user_port_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_sp_wr_callback(device_t &device, _Object object) { return downcast<cbm2_user_port_device &>(device).m_write_sp.set_callback(object); }
- template<class _Object> static devcb_base &set_cnt_wr_callback(device_t &device, _Object object) { return downcast<cbm2_user_port_device &>(device).m_write_cnt.set_callback(object); }
- template<class _Object> static devcb_base &set_flag_wr_callback(device_t &device, _Object object) { return downcast<cbm2_user_port_device &>(device).m_write_flag.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sp_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_sp.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cnt_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_cnt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_flag_wr_callback(device_t &device, Object &&cb) { return downcast<cbm2_user_port_device &>(device).m_write_flag.set_callback(std::forward<Object>(cb)); }
// computer interface
DECLARE_READ8_MEMBER( d1_r ) { uint8_t data = 0xff; if (m_card != nullptr) data = m_card->cbm2_d1_r(space, offset); return data; }
@@ -145,12 +143,11 @@ protected:
// device type definition
-extern const device_type CBM2_USER_PORT;
+DECLARE_DEVICE_TYPE(CBM2_USER_PORT, cbm2_user_port_device)
// slot devices
SLOT_INTERFACE_EXTERN( cbm2_user_port_cards );
-
-#endif
+#endif // MAME_BUS_CBM2_USER_H
diff --git a/src/devices/bus/cbmiec/c1526.cpp b/src/devices/bus/cbmiec/c1526.cpp
index 4c13a5cb151..db9b513d92b 100644
--- a/src/devices/bus/cbmiec/c1526.cpp
+++ b/src/devices/bus/cbmiec/c1526.cpp
@@ -23,9 +23,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C1526 = device_creator<c1526_t>;
+DEFINE_DEVICE_TYPE(C1526, c1526_device, "c1526", "MPS802/C1526 Printer")
+DEFINE_DEVICE_TYPE(C4023, c4023_device, "c4023", "C4023 Printer")
const device_type MPS802 = C1526;
-const device_type C4023 = device_creator<c4023_t>;
//-------------------------------------------------
@@ -49,7 +49,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1526_t::device_rom_region() const
+const tiny_rom_entry *c1526_device::device_rom_region() const
{
return ROM_NAME( c1526 );
}
@@ -69,7 +69,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c4023_t::device_rom_region() const
+const tiny_rom_entry *c4023_device::device_rom_region() const
{
return ROM_NAME( c4023 );
}
@@ -79,7 +79,7 @@ const tiny_rom_entry *c4023_t::device_rom_region() const
// ADDRESS_MAP( c1526_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c1526_mem, AS_PROGRAM, 8, c1526_base_t )
+static ADDRESS_MAP_START( c1526_mem, AS_PROGRAM, 8, c1526_device_base )
AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION(M6504_TAG, 0)
ADDRESS_MAP_END
@@ -99,7 +99,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1526_t::device_mconfig_additions() const
+machine_config_constructor c1526_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1526 );
}
@@ -120,7 +120,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c4023_t::device_mconfig_additions() const
+machine_config_constructor c4023_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c4023 );
}
@@ -138,7 +138,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c1526_t::device_input_ports() const
+ioport_constructor c1526_device::device_input_ports() const
{
return INPUT_PORTS_NAME( c1526 );
}
@@ -156,7 +156,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c4023_t::device_input_ports() const
+ioport_constructor c4023_device::device_input_ports() const
{
return INPUT_PORTS_NAME( c4023 );
}
@@ -168,32 +168,32 @@ ioport_constructor c4023_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// c1526_base_t - constructor
+// c1526_device_base - constructor
//-------------------------------------------------
-c1526_base_t:: c1526_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+c1526_device_base::c1526_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock)
{
}
//-------------------------------------------------
-// c1526_t - constructor
+// c1526_device - constructor
//-------------------------------------------------
-c1526_t::c1526_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- c1526_base_t(mconfig, C1526, "MPS802/C1526 Printer", tag, owner, clock, "c1526", __FILE__),
+c1526_device::c1526_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ c1526_device_base(mconfig, C1526, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this)
{
}
//-------------------------------------------------
-// c4023_t - constructor
+// c4023_device - constructor
//-------------------------------------------------
-c4023_t::c4023_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- c1526_base_t(mconfig, C4023, "C4023 Printer", tag, owner, clock, "c4023", __FILE__),
+c4023_device::c4023_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ c1526_device_base(mconfig, C4023, tag, owner, clock),
device_ieee488_interface(mconfig, *this)
{
}
@@ -203,7 +203,7 @@ c4023_t::c4023_t(const machine_config &mconfig, const char *tag, device_t *owner
// device_start - device-specific startup
//-------------------------------------------------
-void c1526_base_t::device_start()
+void c1526_device_base::device_start()
{
}
@@ -212,7 +212,7 @@ void c1526_base_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c1526_base_t::device_reset()
+void c1526_device_base::device_reset()
{
}
@@ -221,7 +221,7 @@ void c1526_base_t::device_reset()
// cbm_iec_atn -
//-------------------------------------------------
-void c1526_t::cbm_iec_atn(int state)
+void c1526_device::cbm_iec_atn(int state)
{
}
@@ -230,7 +230,7 @@ void c1526_t::cbm_iec_atn(int state)
// cbm_iec_data -
//-------------------------------------------------
-void c1526_t::cbm_iec_data(int state)
+void c1526_device::cbm_iec_data(int state)
{
}
@@ -239,7 +239,7 @@ void c1526_t::cbm_iec_data(int state)
// cbm_iec_reset -
//-------------------------------------------------
-void c1526_t::cbm_iec_reset(int state)
+void c1526_device::cbm_iec_reset(int state)
{
if (!state)
{
@@ -252,7 +252,7 @@ void c1526_t::cbm_iec_reset(int state)
// ieee488_atn_w -
//-------------------------------------------------
-void c4023_t::ieee488_atn(int state)
+void c4023_device::ieee488_atn(int state)
{
}
@@ -261,7 +261,7 @@ void c4023_t::ieee488_atn(int state)
// ieee488_ifc_w -
//-------------------------------------------------
-void c4023_t::ieee488_ifc(int state)
+void c4023_device::ieee488_ifc(int state)
{
if (!state)
{
diff --git a/src/devices/bus/cbmiec/c1526.h b/src/devices/bus/cbmiec/c1526.h
index ba528485ac8..9d4d61ec7ae 100644
--- a/src/devices/bus/cbmiec/c1526.h
+++ b/src/devices/bus/cbmiec/c1526.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_C1626_H
+#define MAME_BUS_CBMIEC_C1626_H
-#ifndef __C1526__
-#define __C1526__
+#pragma once
#include "cbmiec.h"
#include "bus/ieee488/ieee488.h"
@@ -21,29 +21,27 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c1526_base_t
+// ======================> c1526_device_base
-class c1526_base_t : public device_t
+class c1526_device_base : public device_t
{
-public:
+protected:
// construction/destruction
- c1526_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ c1526_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
};
-// ======================> c1526_t
+// ======================> c1526_device
-class c1526_t : public c1526_base_t,
- public device_cbm_iec_interface
+class c1526_device : public c1526_device_base, public device_cbm_iec_interface
{
public:
// construction/destruction
- c1526_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1526_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -58,14 +56,13 @@ protected:
};
-// ======================> c4023_t
+// ======================> c4023_device
-class c4023_t : public c1526_base_t,
- public device_ieee488_interface
+class c4023_device : public c1526_device_base, public device_ieee488_interface
{
public:
// construction/destruction
- c4023_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c4023_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -80,10 +77,9 @@ protected:
// device type definition
-extern const device_type C1526;
+DECLARE_DEVICE_TYPE(C1526, c1526_device)
+DECLARE_DEVICE_TYPE(C4023, c4023_device)
extern const device_type MPS802;
-extern const device_type C4023;
-
-#endif
+#endif // MAME_BUS_CBMIEC_C1626_H
diff --git a/src/devices/bus/cbmiec/c1541.cpp b/src/devices/bus/cbmiec/c1541.cpp
index 9955cb5afeb..9bb72cc0745 100644
--- a/src/devices/bus/cbmiec/c1541.cpp
+++ b/src/devices/bus/cbmiec/c1541.cpp
@@ -161,18 +161,18 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C1540 = device_creator<c1540_t>;
-const device_type C1541 = device_creator<c1541_t>;
-const device_type C1541C = device_creator<c1541c_t>;
-const device_type C1541II = device_creator<c1541ii_t>;
-const device_type SX1541 = device_creator<sx1541_t>;
-const device_type FSD1 = device_creator<fsd1_t>;
-const device_type FSD2 = device_creator<fsd2_t>;
-const device_type CSD1 = device_creator<csd1_t>;
-const device_type C1541_DOLPHIN_DOS = device_creator<c1541_dolphin_dos_t>;
-const device_type C1541_PROFESSIONAL_DOS_V1 = device_creator<c1541_professional_dos_v1_t>;
-const device_type C1541_PROLOGIC_DOS_CLASSIC = device_creator<c1541_prologic_dos_classic_t>;
-const device_type INDUS_GT = device_creator<indus_gt_t>;
+DEFINE_DEVICE_TYPE(C1540, c1540_device, "c1540", "C1540")
+DEFINE_DEVICE_TYPE(C1541, c1541_device, "c1541", "C1541")
+DEFINE_DEVICE_TYPE(C1541C, c1541c_device, "c1541c", "C1541C")
+DEFINE_DEVICE_TYPE(C1541II, c1541ii_device, "c1541ii", "C1541-II")
+DEFINE_DEVICE_TYPE(SX1541, sx1541_device, "sx1541", "SX1541")
+DEFINE_DEVICE_TYPE(FSD1, fsd1_device, "fsd1", "FSD-1")
+DEFINE_DEVICE_TYPE(FSD2, fsd2_device, "fsd2", "FSD-2")
+DEFINE_DEVICE_TYPE(CSD1, csd1_device, "csd1", "CSD-1")
+DEFINE_DEVICE_TYPE(C1541_DOLPHIN_DOS, c1541_dolphin_dos_device, "c1541dd", "C1541 Dolphin-DOS 2.0")
+DEFINE_DEVICE_TYPE(C1541_PROFESSIONAL_DOS_V1, c1541_professional_dos_v1_device, "c1541pd", "C1541 Professional-DOS v1")
+DEFINE_DEVICE_TYPE(C1541_PROLOGIC_DOS_CLASSIC, c1541_prologic_dos_classic_device, "c1541pdc", "C1541 ProLogic-DOS Classic")
+DEFINE_DEVICE_TYPE(INDUS_GT, indus_gt_device, "indusgt", "Indus GT")
//-------------------------------------------------
@@ -190,7 +190,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1540_t::device_rom_region() const
+const tiny_rom_entry *c1540_device::device_rom_region() const
{
return ROM_NAME( c1540 );
}
@@ -234,7 +234,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_t::device_rom_region() const
+const tiny_rom_entry *c1541_device::device_rom_region() const
{
return ROM_NAME( c1541 );
}
@@ -258,7 +258,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541c_t::device_rom_region() const
+const tiny_rom_entry *c1541c_device::device_rom_region() const
{
return ROM_NAME( c1541c );
}
@@ -284,7 +284,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541ii_t::device_rom_region() const
+const tiny_rom_entry *c1541ii_device::device_rom_region() const
{
return ROM_NAME( c1541ii );
}
@@ -312,7 +312,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *sx1541_t::device_rom_region() const
+const tiny_rom_entry *sx1541_device::device_rom_region() const
{
return ROM_NAME( sx1541 );
}
@@ -332,7 +332,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *fsd1_t::device_rom_region() const
+const tiny_rom_entry *fsd1_device::device_rom_region() const
{
return ROM_NAME( fsd1 );
}
@@ -360,7 +360,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *fsd2_t::device_rom_region() const
+const tiny_rom_entry *fsd2_device::device_rom_region() const
{
return ROM_NAME( fsd2 );
}
@@ -381,7 +381,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *csd1_t::device_rom_region() const
+const tiny_rom_entry *csd1_device::device_rom_region() const
{
return ROM_NAME( csd1 );
}
@@ -401,7 +401,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_dolphin_dos_t::device_rom_region() const
+const tiny_rom_entry *c1541_dolphin_dos_device::device_rom_region() const
{
return ROM_NAME( c1541dd );
}
@@ -422,7 +422,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_professional_dos_v1_t::device_rom_region() const
+const tiny_rom_entry *c1541_professional_dos_v1_device::device_rom_region() const
{
return ROM_NAME( c1541pd );
}
@@ -447,7 +447,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_prologic_dos_classic_t::device_rom_region() const
+const tiny_rom_entry *c1541_prologic_dos_classic_device::device_rom_region() const
{
return ROM_NAME( c1541pdc );
}
@@ -471,7 +471,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *indus_gt_t::device_rom_region() const
+const tiny_rom_entry *indus_gt_device::device_rom_region() const
{
return ROM_NAME( indusgt );
}
@@ -481,7 +481,7 @@ const tiny_rom_entry *indus_gt_t::device_rom_region() const
// read -
//-------------------------------------------------
-READ8_MEMBER( c1541_prologic_dos_classic_t::read )
+READ8_MEMBER( c1541_prologic_dos_classic_device::read )
{
return 0;
}
@@ -491,7 +491,7 @@ READ8_MEMBER( c1541_prologic_dos_classic_t::read )
// write -
//-------------------------------------------------
-WRITE8_MEMBER( c1541_prologic_dos_classic_t::write )
+WRITE8_MEMBER( c1541_prologic_dos_classic_device::write )
{
}
@@ -500,7 +500,7 @@ WRITE8_MEMBER( c1541_prologic_dos_classic_t::write )
// ADDRESS_MAP( c1541_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c1541_mem, AS_PROGRAM, 8, c1541_base_t )
+static ADDRESS_MAP_START( c1541_mem, AS_PROGRAM, 8, c1541_device_base )
AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x6000) AM_RAM
AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
AM_RANGE(0x1c00, 0x1c0f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
@@ -512,7 +512,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( c1541dd_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c1541dd_mem, AS_PROGRAM, 8, c1541_base_t )
+static ADDRESS_MAP_START( c1541dd_mem, AS_PROGRAM, 8, c1541_device_base )
AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x6000) AM_RAM
AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
AM_RANGE(0x1c00, 0x1c0f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
@@ -525,7 +525,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( c1541pd_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c1541pd_mem, AS_PROGRAM, 8, c1541_base_t )
+static ADDRESS_MAP_START( c1541pd_mem, AS_PROGRAM, 8, c1541_device_base )
AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x6000) AM_RAM
AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
AM_RANGE(0x1c00, 0x1c0f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
@@ -540,7 +540,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( c1541pdc_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c1541pdc_mem, AS_PROGRAM, 8, c1541_prologic_dos_classic_t )
+static ADDRESS_MAP_START( c1541pdc_mem, AS_PROGRAM, 8, c1541_prologic_dos_classic_device )
AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
/* AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("share1")
AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
@@ -553,20 +553,20 @@ static ADDRESS_MAP_START( c1541pdc_mem, AS_PROGRAM, 8, c1541_prologic_dos_classi
ADDRESS_MAP_END
-WRITE_LINE_MEMBER( c1541_base_t::via0_irq_w )
+WRITE_LINE_MEMBER( c1541_device_base::via0_irq_w )
{
m_via0_irq = state;
m_maincpu->set_input_line(INPUT_LINE_IRQ0, (m_via0_irq || m_via1_irq) ? ASSERT_LINE : CLEAR_LINE);
}
-READ8_MEMBER( c1541_base_t::via0_pa_r )
+READ8_MEMBER( c1541_device_base::via0_pa_r )
{
// dummy read to acknowledge ATN IN interrupt
return m_parallel_data;
}
-WRITE8_MEMBER( c1541_base_t::via0_pa_w )
+WRITE8_MEMBER( c1541_device_base::via0_pa_w )
{
if (m_other != nullptr)
{
@@ -574,7 +574,7 @@ WRITE8_MEMBER( c1541_base_t::via0_pa_w )
}
}
-READ8_MEMBER( c1541_base_t::via0_pb_r )
+READ8_MEMBER( c1541_device_base::via0_pb_r )
{
/*
@@ -608,7 +608,7 @@ READ8_MEMBER( c1541_base_t::via0_pb_r )
return data;
}
-WRITE8_MEMBER( c1541_base_t::via0_pb_w )
+WRITE8_MEMBER( c1541_device_base::via0_pb_w )
{
/*
@@ -635,7 +635,7 @@ WRITE8_MEMBER( c1541_base_t::via0_pb_w )
m_bus->clk_w(this, !BIT(data, 3));
}
-WRITE_LINE_MEMBER( c1541_base_t::via0_ca2_w )
+WRITE_LINE_MEMBER( c1541_device_base::via0_ca2_w )
{
if (m_other != nullptr)
{
@@ -643,7 +643,7 @@ WRITE_LINE_MEMBER( c1541_base_t::via0_ca2_w )
}
}
-READ8_MEMBER( c1541c_t::via0_pa_r )
+READ8_MEMBER( c1541c_device::via0_pa_r )
{
/*
@@ -664,14 +664,14 @@ READ8_MEMBER( c1541c_t::via0_pa_r )
}
-WRITE_LINE_MEMBER( c1541_base_t::via1_irq_w )
+WRITE_LINE_MEMBER( c1541_device_base::via1_irq_w )
{
m_via1_irq = state;
m_maincpu->set_input_line(INPUT_LINE_IRQ0, (m_via0_irq || m_via1_irq) ? ASSERT_LINE : CLEAR_LINE);
}
-READ8_MEMBER( c1541_base_t::via1_pb_r )
+READ8_MEMBER( c1541_device_base::via1_pb_r )
{
/*
@@ -699,7 +699,7 @@ READ8_MEMBER( c1541_base_t::via1_pb_r )
return data;
}
-WRITE8_MEMBER( c1541_base_t::via1_pb_w )
+WRITE8_MEMBER( c1541_device_base::via1_pb_w )
{
/*
@@ -734,12 +734,12 @@ WRITE8_MEMBER( c1541_base_t::via1_pb_w )
// C64H156_INTERFACE( ga_intf )
//-------------------------------------------------
-WRITE_LINE_MEMBER( c1541_base_t::atn_w )
+WRITE_LINE_MEMBER( c1541_device_base::atn_w )
{
set_iec_data();
}
-WRITE_LINE_MEMBER( c1541_base_t::byte_w )
+WRITE_LINE_MEMBER( c1541_device_base::byte_w )
{
m_maincpu->set_input_line(M6502_SET_OVERFLOW, state);
@@ -752,7 +752,7 @@ WRITE_LINE_MEMBER( c1541_base_t::byte_w )
//-------------------------------------------------
static SLOT_INTERFACE_START( c1540_floppies )
- SLOT_INTERFACE( "525ssqd", ALPS_3255190x )
+ SLOT_INTERFACE( "525ssqd", ALPS_3255190X )
SLOT_INTERFACE_END
@@ -760,23 +760,23 @@ SLOT_INTERFACE_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c1541_base_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c1541_device_base::floppy_formats )
FLOPPY_D64_FORMAT,
FLOPPY_G64_FORMAT
FLOPPY_FORMATS_END
-READ8_MEMBER( c1541_prologic_dos_classic_t::pia_r )
+READ8_MEMBER( c1541_prologic_dos_classic_device::pia_r )
{
return m_pia->read(space, (offset >> 2) & 0x03);
}
-WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_w )
+WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_w )
{
m_pia->write(space, (offset >> 2) & 0x03, data);
}
-WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_pa_w )
+WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_pa_w )
{
/*
@@ -794,12 +794,12 @@ WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_pa_w )
*/
}
-READ8_MEMBER( c1541_prologic_dos_classic_t::pia_pb_r )
+READ8_MEMBER( c1541_prologic_dos_classic_device::pia_pb_r )
{
return m_parallel_data;
}
-WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_pb_w )
+WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_pb_w )
{
m_parallel_data = data;
@@ -817,26 +817,26 @@ static MACHINE_CONFIG_FRAGMENT( c1541 )
MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16)
- MCFG_VIA6522_READPA_HANDLER(READ8(c1541_base_t, via0_pa_r))
- MCFG_VIA6522_READPB_HANDLER(READ8(c1541_base_t, via0_pb_r))
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1541_base_t, via0_pa_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1541_base_t, via0_pb_w))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(c1541_base_t, via0_ca2_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1541_base_t, via0_irq_w))
+ MCFG_VIA6522_READPA_HANDLER(READ8(c1541_device_base, via0_pa_r))
+ MCFG_VIA6522_READPB_HANDLER(READ8(c1541_device_base, via0_pb_r))
+ MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1541_device_base, via0_pa_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1541_device_base, via0_pb_w))
+ MCFG_VIA6522_CB2_HANDLER(WRITELINE(c1541_device_base, via0_ca2_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1541_device_base, via0_irq_w))
MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16)
MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r))
- MCFG_VIA6522_READPB_HANDLER(READ8(c1541_base_t, via1_pb_r))
+ MCFG_VIA6522_READPB_HANDLER(READ8(c1541_device_base, via1_pb_r))
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1541_base_t, via1_pb_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1541_device_base, via1_pb_w))
MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w))
MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1541_base_t, via1_irq_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1541_device_base, via1_irq_w))
MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz)
- MCFG_64H156_ATN_CALLBACK(WRITELINE(c1541_base_t, atn_w))
- MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1541_base_t, byte_w))
- MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1540_floppies, "525ssqd", c1541_base_t::floppy_formats)
+ MCFG_64H156_ATN_CALLBACK(WRITELINE(c1541_device_base, atn_w))
+ MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1541_device_base, byte_w))
+ MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1540_floppies, "525ssqd", c1541_device_base::floppy_formats)
MACHINE_CONFIG_END
@@ -845,7 +845,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1541_base_t::device_mconfig_additions() const
+machine_config_constructor c1541_device_base::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1541 );
}
@@ -865,7 +865,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1541c_t::device_mconfig_additions() const
+machine_config_constructor c1541c_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1541c );
}
@@ -888,7 +888,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1541_dolphin_dos_t::device_mconfig_additions() const
+machine_config_constructor c1541_dolphin_dos_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1541dd );
}
@@ -911,7 +911,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1541_professional_dos_v1_t::device_mconfig_additions() const
+machine_config_constructor c1541_professional_dos_v1_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1541pd );
}
@@ -928,9 +928,9 @@ static MACHINE_CONFIG_FRAGMENT( c1541pdc )
MCFG_CPU_PROGRAM_MAP(c1541pdc_mem)
MCFG_DEVICE_ADD(MC6821_TAG, PIA6821, 0)
- MCFG_PIA_READPB_HANDLER(READ8(c1541_prologic_dos_classic_t, pia_pb_r))
- MCFG_PIA_WRITEPA_HANDLER(WRITE8(c1541_prologic_dos_classic_t, pia_pa_w))
- MCFG_PIA_WRITEPB_HANDLER(WRITE8(c1541_prologic_dos_classic_t, pia_pb_w))
+ MCFG_PIA_READPB_HANDLER(READ8(c1541_prologic_dos_classic_device, pia_pb_r))
+ MCFG_PIA_WRITEPA_HANDLER(WRITE8(c1541_prologic_dos_classic_device, pia_pa_w))
+ MCFG_PIA_WRITEPB_HANDLER(WRITE8(c1541_prologic_dos_classic_device, pia_pb_w))
MCFG_PIA_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, write_strobe))
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
@@ -944,7 +944,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1541_prologic_dos_classic_t::device_mconfig_additions() const
+machine_config_constructor c1541_prologic_dos_classic_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1541pdc );
}
@@ -968,7 +968,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c1541_base_t::device_input_ports() const
+ioport_constructor c1541_device_base::device_input_ports() const
{
return INPUT_PORTS_NAME( c1541 );
}
@@ -983,7 +983,7 @@ ioport_constructor c1541_base_t::device_input_ports() const
// set_iec_data -
//-------------------------------------------------
-inline void c1541_base_t::set_iec_data()
+inline void c1541_device_base::set_iec_data()
{
int data = !m_data_out && !m_ga->atn_r();
@@ -997,11 +997,11 @@ inline void c1541_base_t::set_iec_data()
//**************************************************************************
//-------------------------------------------------
-// c1541_base_t - constructor
+// c1541_device_base - constructor
//-------------------------------------------------
-c1541_base_t:: c1541_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+c1541_device_base::c1541_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this),
device_c64_floppy_parallel_interface(mconfig, *this),
m_maincpu(*this, M6502_TAG),
@@ -1018,91 +1018,91 @@ c1541_base_t:: c1541_base_t(const machine_config &mconfig, device_type type, con
//-------------------------------------------------
-// c1540_t - constructor
+// c1540_device - constructor
//-------------------------------------------------
-c1540_t::c1540_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1540, "C1540", tag, owner, clock, "c1540", __FILE__) { }
+c1540_device::c1540_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, C1540, tag, owner, clock) { }
//-------------------------------------------------
-// c1541_t - constructor
+// c1541_device - constructor
//-------------------------------------------------
-c1541_t::c1541_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541, "C1541", tag, owner, clock, "c1541", __FILE__) { }
+c1541_device::c1541_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, C1541, tag, owner, clock) { }
//-------------------------------------------------
-// c1541c_t - constructor
+// c1541c_device - constructor
//-------------------------------------------------
-c1541c_t::c1541c_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541C, "C1541C", tag, owner, clock, "c1541c", __FILE__) { }
+c1541c_device::c1541c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, C1541C, tag, owner, clock) { }
//-------------------------------------------------
-// c1541ii_t - constructor
+// c1541ii_device - constructor
//-------------------------------------------------
-c1541ii_t::c1541ii_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541II, "C1541-II", tag, owner, clock, "c1541ii", __FILE__) { }
+c1541ii_device::c1541ii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, C1541II, tag, owner, clock) { }
//-------------------------------------------------
-// sx1541_t - constructor
+// sx1541_device - constructor
//-------------------------------------------------
-sx1541_t::sx1541_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, SX1541, "SX1541", tag, owner, clock, "sx1541", __FILE__) { }
+sx1541_device::sx1541_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, SX1541, tag, owner, clock) { }
//-------------------------------------------------
-// fsd1_t - constructor
+// fsd1_device - constructor
//-------------------------------------------------
-fsd1_t::fsd1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, FSD1, "FSD-1", tag, owner, clock, "fsd1", __FILE__) { }
+fsd1_device::fsd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, FSD1, tag, owner, clock) { }
//-------------------------------------------------
-// fsd2_t - constructor
+// fsd2_device - constructor
//-------------------------------------------------
-fsd2_t::fsd2_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, FSD2, "FSD-2", tag, owner, clock, "fsd2", __FILE__) { }
+fsd2_device::fsd2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, FSD2, tag, owner, clock) { }
//-------------------------------------------------
-// csd1_t - constructor
+// csd1_device - constructor
//-------------------------------------------------
-csd1_t::csd1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, CSD1, "CSD-1", tag, owner, clock, "csd1", __FILE__) { }
+csd1_device::csd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, CSD1, tag, owner, clock) { }
//-------------------------------------------------
-// c1541_dolphin_dos_t - constructor
+// c1541_dolphin_dos_device - constructor
//-------------------------------------------------
-c1541_dolphin_dos_t::c1541_dolphin_dos_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541_DOLPHIN_DOS, "C1541 Dolphin-DOS 2.0", tag, owner, clock, "c1541dd", __FILE__) { }
+c1541_dolphin_dos_device::c1541_dolphin_dos_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, C1541_DOLPHIN_DOS, tag, owner, clock) { }
//-------------------------------------------------
-// c1541_professional_dos_v1_t - constructor
+// c1541_professional_dos_v1_device - constructor
//-------------------------------------------------
-c1541_professional_dos_v1_t::c1541_professional_dos_v1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541_PROFESSIONAL_DOS_V1, "C1541 Professional-DOS v1", tag, owner, clock, "c1541pd", __FILE__) { }
+c1541_professional_dos_v1_device::c1541_professional_dos_v1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, C1541_PROFESSIONAL_DOS_V1, tag, owner, clock) { }
//-------------------------------------------------
-// c1541_prologic_dos_classic_t - constructor
+// c1541_prologic_dos_classic_device - constructor
//-------------------------------------------------
-c1541_prologic_dos_classic_t::c1541_prologic_dos_classic_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541_PROLOGIC_DOS_CLASSIC, "C1541 ProLogic-DOS Classic", tag, owner, clock, "c1541pdc", __FILE__),
+c1541_prologic_dos_classic_device::c1541_prologic_dos_classic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, C1541_PROLOGIC_DOS_CLASSIC, tag, owner, clock),
m_pia(*this, MC6821_TAG),
m_cent_data_out(*this, "cent_data_out"),
m_mmu_rom(*this, "mmu")
@@ -1111,18 +1111,18 @@ c1541_prologic_dos_classic_t::c1541_prologic_dos_classic_t(const machine_config
//-------------------------------------------------
-// indus_gt_t - constructor
+// indus_gt_device - constructor
//-------------------------------------------------
-indus_gt_t::indus_gt_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, INDUS_GT, "Indus GT", tag, owner, clock, "indusgt", __FILE__) { }
+indus_gt_device::indus_gt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1541_device_base(mconfig, INDUS_GT, tag, owner, clock) { }
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void c1541_base_t::device_start()
+void c1541_device_base::device_start()
{
// install image callbacks
m_ga->set_floppy(m_floppy);
@@ -1133,9 +1133,9 @@ void c1541_base_t::device_start()
save_item(NAME(m_via1_irq));
}
-void fsd2_t::device_start()
+void fsd2_device::device_start()
{
- c1541_base_t::device_start();
+ c1541_device_base::device_start();
// decrypt ROM
uint8_t *rom = memregion(M6502_TAG)->base();
@@ -1153,7 +1153,7 @@ void fsd2_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c1541_base_t::device_reset()
+void c1541_device_base::device_reset()
{
m_maincpu->reset();
@@ -1170,7 +1170,7 @@ void c1541_base_t::device_reset()
// iec_atn_w -
//-------------------------------------------------
-void c1541_base_t::cbm_iec_atn(int state)
+void c1541_device_base::cbm_iec_atn(int state)
{
m_via0->write_ca1(!state);
m_ga->atni_w(!state);
@@ -1183,7 +1183,7 @@ void c1541_base_t::cbm_iec_atn(int state)
// iec_reset_w -
//-------------------------------------------------
-void c1541_base_t::cbm_iec_reset(int state)
+void c1541_device_base::cbm_iec_reset(int state)
{
if (!state)
{
@@ -1196,7 +1196,7 @@ void c1541_base_t::cbm_iec_reset(int state)
// parallel_data_w -
//-------------------------------------------------
-void c1541_base_t::parallel_data_w(uint8_t data)
+void c1541_device_base::parallel_data_w(uint8_t data)
{
m_parallel_data = data;
}
@@ -1206,7 +1206,7 @@ void c1541_base_t::parallel_data_w(uint8_t data)
// parallel_strobe_w -
//-------------------------------------------------
-void c1541_base_t::parallel_strobe_w(int state)
+void c1541_device_base::parallel_strobe_w(int state)
{
m_via0->write_cb1(state);
}
diff --git a/src/devices/bus/cbmiec/c1541.h b/src/devices/bus/cbmiec/c1541.h
index 73ceb88eef8..3725da29fa5 100644
--- a/src/devices/bus/cbmiec/c1541.h
+++ b/src/devices/bus/cbmiec/c1541.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_C1541_H
+#define MAME_BUS_CBMIEC_C1541_H
-#ifndef __C1541__
-#define __C1541__
+#pragma once
#include "cbmiec.h"
#include "bus/c64/bn1541.h"
@@ -33,16 +33,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c1541_base_t
+// ======================> c1541_device_base
-class c1541_base_t : public device_t,
+class c1541_device_base : public device_t,
public device_cbm_iec_interface,
public device_c64_floppy_parallel_interface
{
public:
- // construction/destruction
- c1541_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
@@ -62,6 +59,9 @@ public:
DECLARE_FLOPPY_FORMATS( floppy_formats );
protected:
+ // construction/destruction
+ c1541_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -98,39 +98,39 @@ protected:
};
-// ======================> c1540_t
+// ======================> c1540_device
-class c1540_t : public c1541_base_t
+class c1540_device : public c1541_device_base
{
public:
// construction/destruction
- c1540_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1540_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
};
-// ======================> c1541_t
+// ======================> c1541_device
-class c1541_t : public c1541_base_t
+class c1541_device : public c1541_device_base
{
public:
// construction/destruction
- c1541_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1541_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
};
-// ======================> c1541c_t
+// ======================> c1541c_device
-class c1541c_t : public c1541_base_t
+class c1541c_device : public c1541_device_base
{
public:
// construction/destruction
- c1541c_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1541c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -141,52 +141,52 @@ public:
};
-// ======================> c1541ii_t
+// ======================> c1541ii_device
-class c1541ii_t : public c1541_base_t
+class c1541ii_device : public c1541_device_base
{
public:
// construction/destruction
- c1541ii_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1541ii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
};
-// ======================> sx1541_t
+// ======================> sx1541_device
-class sx1541_t : public c1541_base_t
+class sx1541_device : public c1541_device_base
{
public:
// construction/destruction
- sx1541_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sx1541_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
};
-// ======================> fsd1_t
+// ======================> fsd1_device
-class fsd1_t : public c1541_base_t
+class fsd1_device : public c1541_device_base
{
public:
// construction/destruction
- fsd1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fsd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
};
-// ======================> fsd2_t
+// ======================> fsd2_device
-class fsd2_t : public c1541_base_t
+class fsd2_device : public c1541_device_base
{
public:
// construction/destruction
- fsd2_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fsd2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -196,26 +196,26 @@ public:
};
-// ======================> csd1_t
+// ======================> csd1_device
-class csd1_t : public c1541_base_t
+class csd1_device : public c1541_device_base
{
public:
// construction/destruction
- csd1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ csd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
};
-// ======================> c1541_dolphin_dos_t
+// ======================> c1541_dolphin_dos_device
-class c1541_dolphin_dos_t : public c1541_base_t
+class c1541_dolphin_dos_device : public c1541_device_base
{
public:
// construction/destruction
- c1541_dolphin_dos_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1541_dolphin_dos_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -223,13 +223,13 @@ public:
};
-// ======================> c1541_professional_dos_v1_t
+// ======================> c1541_professional_dos_v1_device
-class c1541_professional_dos_v1_t : public c1541_base_t
+class c1541_professional_dos_v1_device : public c1541_device_base
{
public:
// construction/destruction
- c1541_professional_dos_v1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1541_professional_dos_v1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -237,13 +237,13 @@ public:
};
-// ======================> c1541_prologic_dos_classic_t
+// ======================> c1541_prologic_dos_classic_device
-class c1541_prologic_dos_classic_t : public c1541_base_t
+class c1541_prologic_dos_classic_device : public c1541_device_base
{
public:
// construction/destruction
- c1541_prologic_dos_classic_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1541_prologic_dos_classic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -267,13 +267,13 @@ protected:
};
-// ======================> indus_gt_t
+// ======================> indus_gt_device
-class indus_gt_t : public c1541_base_t
+class indus_gt_device : public c1541_device_base
{
public:
// construction/destruction
- indus_gt_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ indus_gt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -281,19 +281,19 @@ public:
// device type definition
-extern const device_type C1540;
-extern const device_type C1541;
-extern const device_type C1541C;
-extern const device_type C1541II;
-extern const device_type SX1541;
-extern const device_type FSD1;
-extern const device_type FSD2;
-extern const device_type CSD1;
-extern const device_type C1541_DOLPHIN_DOS;
-extern const device_type C1541_PROFESSIONAL_DOS_V1;
-extern const device_type C1541_PROLOGIC_DOS_CLASSIC;
-extern const device_type INDUS_GT;
-
-
-
-#endif
+DECLARE_DEVICE_TYPE(C1540, c1540_device)
+DECLARE_DEVICE_TYPE(C1541, c1541_device)
+DECLARE_DEVICE_TYPE(C1541C, c1541c_device)
+DECLARE_DEVICE_TYPE(C1541II, c1541ii_device)
+DECLARE_DEVICE_TYPE(SX1541, sx1541_device)
+DECLARE_DEVICE_TYPE(FSD1, fsd1_device)
+DECLARE_DEVICE_TYPE(FSD2, fsd2_device)
+DECLARE_DEVICE_TYPE(CSD1, csd1_device)
+DECLARE_DEVICE_TYPE(C1541_DOLPHIN_DOS, c1541_dolphin_dos_device)
+DECLARE_DEVICE_TYPE(C1541_PROFESSIONAL_DOS_V1, c1541_professional_dos_v1_device)
+DECLARE_DEVICE_TYPE(C1541_PROLOGIC_DOS_CLASSIC, c1541_prologic_dos_classic_device)
+DECLARE_DEVICE_TYPE(INDUS_GT, indus_gt_device)
+
+
+
+#endif // MAME_BUS_CBMIEC_C1541_H
diff --git a/src/devices/bus/cbmiec/c1571.cpp b/src/devices/bus/cbmiec/c1571.cpp
index b1369d3cec9..daa9b9d08c9 100644
--- a/src/devices/bus/cbmiec/c1571.cpp
+++ b/src/devices/bus/cbmiec/c1571.cpp
@@ -44,10 +44,10 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C1570 = device_creator<c1570_t>;
-const device_type C1571 = device_creator<c1571_t>;
-const device_type C1571CR = device_creator<c1571cr_t>;
-const device_type MINI_CHIEF = device_creator<mini_chief_t>;
+DEFINE_DEVICE_TYPE(C1570, c1570_device, "c1570", "C1570")
+DEFINE_DEVICE_TYPE(C1571, c1571_device, "c1571", "C1571")
+DEFINE_DEVICE_TYPE(C1571CR, c1571cr_device, "c1571cr", "C1571CR")
+DEFINE_DEVICE_TYPE(MINI_CHIEF, mini_chief_device, "minichif", "ICT Mini Chief")
//-------------------------------------------------
@@ -64,7 +64,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1570_t::device_rom_region() const
+const tiny_rom_entry *c1570_device::device_rom_region() const
{
return ROM_NAME( c1570 );
}
@@ -90,7 +90,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1571_t::device_rom_region() const
+const tiny_rom_entry *c1571_device::device_rom_region() const
{
return ROM_NAME( c1571 );
}
@@ -114,7 +114,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1571cr_t::device_rom_region() const
+const tiny_rom_entry *c1571cr_device::device_rom_region() const
{
return ROM_NAME( c1571cr );
}
@@ -134,7 +134,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *mini_chief_t::device_rom_region() const
+const tiny_rom_entry *mini_chief_device::device_rom_region() const
{
return ROM_NAME( minichief );
}
@@ -144,11 +144,11 @@ const tiny_rom_entry *mini_chief_t::device_rom_region() const
// ADDRESS_MAP( c1571_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c1571_mem, AS_PROGRAM, 8, c1571_t )
+static ADDRESS_MAP_START( c1571_mem, AS_PROGRAM, 8, c1571_device )
AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x03f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
AM_RANGE(0x1c00, 0x1c0f) AM_MIRROR(0x03f0) AM_READWRITE(via1_r, via1_w)
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE(WD1770_TAG, wd1770_t, read, write)
+ AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE(WD1770_TAG, wd1770_device, read, write)
AM_RANGE(0x4000, 0x400f) AM_MIRROR(0x3ff0) AM_DEVREADWRITE(M6526_TAG, mos6526_device, read, write)
AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0)
ADDRESS_MAP_END
@@ -158,11 +158,11 @@ ADDRESS_MAP_END
// ADDRESS_MAP( mini_chief_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( mini_chief_mem, AS_PROGRAM, 8, mini_chief_t )
+static ADDRESS_MAP_START( mini_chief_mem, AS_PROGRAM, 8, mini_chief_device )
AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x03f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
AM_RANGE(0x1c00, 0x1c0f) AM_MIRROR(0x03f0) AM_READWRITE(via1_r, via1_w)
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE(WD1770_TAG, wd1770_t, read, write)
+ AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE(WD1770_TAG, wd1770_device, read, write)
AM_RANGE(0x4000, 0x400f) AM_MIRROR(0xff0) AM_DEVREADWRITE(M6526_TAG, mos6526_device, read, write)
AM_RANGE(0x5000, 0x5fff) AM_MIRROR(0x2000) AM_RAM
AM_RANGE(0x6000, 0x6fff) AM_RAM
@@ -170,14 +170,14 @@ static ADDRESS_MAP_START( mini_chief_mem, AS_PROGRAM, 8, mini_chief_t )
ADDRESS_MAP_END
-WRITE_LINE_MEMBER( c1571_t::via0_irq_w )
+WRITE_LINE_MEMBER( c1571_device::via0_irq_w )
{
m_via0_irq = state;
m_maincpu->set_input_line(INPUT_LINE_IRQ0, (m_via0_irq || m_via1_irq || m_cia_irq) ? ASSERT_LINE : CLEAR_LINE);
}
-READ8_MEMBER( c1571_t::via0_pa_r )
+READ8_MEMBER( c1571_device::via0_pa_r )
{
/*
@@ -205,7 +205,7 @@ READ8_MEMBER( c1571_t::via0_pa_r )
return data;
}
-WRITE8_MEMBER( c1571_t::via0_pa_w )
+WRITE8_MEMBER( c1571_device::via0_pa_w )
{
/*
@@ -250,7 +250,7 @@ WRITE8_MEMBER( c1571_t::via0_pa_w )
update_iec();
}
-WRITE8_MEMBER( c1571cr_t::via0_pa_w )
+WRITE8_MEMBER( c1571cr_device::via0_pa_w )
{
/*
@@ -287,7 +287,7 @@ WRITE8_MEMBER( c1571cr_t::via0_pa_w )
}
}
-READ8_MEMBER( c1571_t::via0_pb_r )
+READ8_MEMBER( c1571_device::via0_pb_r )
{
/*
@@ -321,7 +321,7 @@ READ8_MEMBER( c1571_t::via0_pb_r )
return data;
}
-WRITE8_MEMBER( c1571_t::via0_pb_w )
+WRITE8_MEMBER( c1571_device::via0_pb_w )
{
/*
@@ -350,7 +350,7 @@ WRITE8_MEMBER( c1571_t::via0_pb_w )
update_iec();
}
-WRITE8_MEMBER( c1571cr_t::via0_pb_w )
+WRITE8_MEMBER( c1571cr_device::via0_pb_w )
{
/*
@@ -380,7 +380,7 @@ WRITE8_MEMBER( c1571cr_t::via0_pb_w )
}
-READ8_MEMBER( c1571_t::via1_r )
+READ8_MEMBER( c1571_device::via1_r )
{
uint8_t data = m_via1->read(space, offset);
@@ -390,7 +390,7 @@ READ8_MEMBER( c1571_t::via1_r )
return data;
}
-WRITE8_MEMBER( c1571_t::via1_w )
+WRITE8_MEMBER( c1571_device::via1_w )
{
m_via1->write(space, offset, data);
@@ -398,14 +398,14 @@ WRITE8_MEMBER( c1571_t::via1_w )
m_ga->ted_w(1);
}
-WRITE_LINE_MEMBER( c1571_t::via1_irq_w )
+WRITE_LINE_MEMBER( c1571_device::via1_irq_w )
{
m_via1_irq = state;
m_maincpu->set_input_line(INPUT_LINE_IRQ0, (m_via0_irq || m_via1_irq || m_cia_irq) ? ASSERT_LINE : CLEAR_LINE);
}
-READ8_MEMBER( c1571_t::via1_pb_r )
+READ8_MEMBER( c1571_device::via1_pb_r )
{
/*
@@ -433,7 +433,7 @@ READ8_MEMBER( c1571_t::via1_pb_r )
return data;
}
-WRITE8_MEMBER( c1571_t::via1_pb_w )
+WRITE8_MEMBER( c1571_device::via1_pb_w )
{
/*
@@ -468,14 +468,14 @@ WRITE8_MEMBER( c1571_t::via1_pb_w )
// MOS6526_INTERFACE( cia_intf )
//-------------------------------------------------
-WRITE_LINE_MEMBER( c1571_t::cia_irq_w )
+WRITE_LINE_MEMBER( c1571_device::cia_irq_w )
{
m_cia_irq = state;
m_maincpu->set_input_line(INPUT_LINE_IRQ0, (m_via0_irq || m_via1_irq || m_cia_irq) ? ASSERT_LINE : CLEAR_LINE);
}
-WRITE_LINE_MEMBER( c1571_t::cia_pc_w )
+WRITE_LINE_MEMBER( c1571_device::cia_pc_w )
{
if (m_other != nullptr)
{
@@ -483,26 +483,26 @@ WRITE_LINE_MEMBER( c1571_t::cia_pc_w )
}
}
-WRITE_LINE_MEMBER( c1571_t::cia_cnt_w )
+WRITE_LINE_MEMBER( c1571_device::cia_cnt_w )
{
m_cnt_out = state;
update_iec();
}
-WRITE_LINE_MEMBER( c1571_t::cia_sp_w )
+WRITE_LINE_MEMBER( c1571_device::cia_sp_w )
{
m_sp_out = state;
update_iec();
}
-READ8_MEMBER( c1571_t::cia_pb_r )
+READ8_MEMBER( c1571_device::cia_pb_r )
{
return m_parallel_data;
}
-WRITE8_MEMBER( c1571_t::cia_pb_w )
+WRITE8_MEMBER( c1571_device::cia_pb_w )
{
if (m_other != nullptr)
{
@@ -515,19 +515,19 @@ WRITE8_MEMBER( c1571_t::cia_pb_w )
// MOS6526_INTERFACE( mini_chief_cia_intf )
//-------------------------------------------------
-READ8_MEMBER( mini_chief_t::cia_pa_r )
+READ8_MEMBER( mini_chief_device::cia_pa_r )
{
// TODO read from ISA bus @ 0x320 | A2 A1 A0
return 0;
}
-WRITE8_MEMBER( mini_chief_t::cia_pa_w )
+WRITE8_MEMBER( mini_chief_device::cia_pa_w )
{
// TODO write to ISA bus @ 0x320 | A2 A1 A0
}
-WRITE8_MEMBER( mini_chief_t::cia_pb_w )
+WRITE8_MEMBER( mini_chief_device::cia_pb_w )
{
/*
@@ -550,7 +550,7 @@ WRITE8_MEMBER( mini_chief_t::cia_pb_w )
// C64H156_INTERFACE( ga_intf )
//-------------------------------------------------
-WRITE_LINE_MEMBER( c1571_t::byte_w )
+WRITE_LINE_MEMBER( c1571_device::byte_w )
{
m_via1->write_ca1(state);
@@ -571,7 +571,7 @@ SLOT_INTERFACE_END
// floppy_interface c1571_floppy_interface
//-------------------------------------------------
-void c1571_t::wpt_callback(floppy_image_device *floppy, int state)
+void c1571_device::wpt_callback(floppy_image_device *floppy, int state)
{
m_via0->write_ca2(!state);
}
@@ -581,7 +581,7 @@ void c1571_t::wpt_callback(floppy_image_device *floppy, int state)
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c1571_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c1571_device::floppy_formats )
FLOPPY_D64_FORMAT,
FLOPPY_G64_FORMAT,
FLOPPY_D71_FORMAT
@@ -606,33 +606,33 @@ static MACHINE_CONFIG_FRAGMENT( c1570 )
MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16)
- MCFG_VIA6522_READPA_HANDLER(READ8(c1571_t, via0_pa_r))
- MCFG_VIA6522_READPB_HANDLER(READ8(c1571_t, via0_pb_r))
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571_t, via0_pa_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_t, via0_pb_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_t, via0_irq_w))
+ MCFG_VIA6522_READPA_HANDLER(READ8(c1571_device, via0_pa_r))
+ MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via0_pb_r))
+ MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571_device, via0_pa_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via0_pb_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via0_irq_w))
MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16)
MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r))
- MCFG_VIA6522_READPB_HANDLER(READ8(c1571_t, via1_pb_r))
+ MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via1_pb_r))
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_t, via1_pb_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via1_pb_w))
MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w))
MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_t, via1_irq_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via1_irq_w))
MCFG_DEVICE_ADD(M6526_TAG, MOS6526, XTAL_16MHz/16)
- MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c1571_t, cia_irq_w))
- MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c1571_t, cia_cnt_w))
- MCFG_MOS6526_SP_CALLBACK(WRITELINE(c1571_t, cia_sp_w))
- MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c1571_t, cia_pb_r))
- MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c1571_t, cia_pb_w))
- MCFG_MOS6526_PC_CALLBACK(WRITELINE(c1571_t, cia_pc_w))
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c1571_device, cia_irq_w))
+ MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c1571_device, cia_cnt_w))
+ MCFG_MOS6526_SP_CALLBACK(WRITELINE(c1571_device, cia_sp_w))
+ MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c1571_device, cia_pb_r))
+ MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c1571_device, cia_pb_w))
+ MCFG_MOS6526_PC_CALLBACK(WRITELINE(c1571_device, cia_pc_w))
MCFG_WD1770_ADD(WD1770_TAG, XTAL_16MHz/2)
MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz)
- MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_t, byte_w))
- MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_t::floppy_formats)
+ MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_device, byte_w))
+ MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats)
MACHINE_CONFIG_END
@@ -641,7 +641,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1570_t::device_mconfig_additions() const
+machine_config_constructor c1570_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1570 );
}
@@ -657,33 +657,33 @@ static MACHINE_CONFIG_FRAGMENT( c1571 )
MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16)
- MCFG_VIA6522_READPA_HANDLER(READ8(c1571_t, via0_pa_r))
- MCFG_VIA6522_READPB_HANDLER(READ8(c1571_t, via0_pb_r))
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571_t, via0_pa_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_t, via0_pb_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_t, via0_irq_w))
+ MCFG_VIA6522_READPA_HANDLER(READ8(c1571_device, via0_pa_r))
+ MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via0_pb_r))
+ MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571_device, via0_pa_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via0_pb_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via0_irq_w))
MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16)
MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r))
- MCFG_VIA6522_READPB_HANDLER(READ8(c1571_t, via1_pb_r))
+ MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via1_pb_r))
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_t, via1_pb_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via1_pb_w))
MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w))
MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_t, via1_irq_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via1_irq_w))
MCFG_DEVICE_ADD(M6526_TAG, MOS6526, XTAL_16MHz/16)
- MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c1571_t, cia_irq_w))
- MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c1571_t, cia_cnt_w))
- MCFG_MOS6526_SP_CALLBACK(WRITELINE(c1571_t, cia_sp_w))
- MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c1571_t, cia_pb_r))
- MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c1571_t, cia_pb_w))
- MCFG_MOS6526_PC_CALLBACK(WRITELINE(c1571_t, cia_pc_w))
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c1571_device, cia_irq_w))
+ MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c1571_device, cia_cnt_w))
+ MCFG_MOS6526_SP_CALLBACK(WRITELINE(c1571_device, cia_sp_w))
+ MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c1571_device, cia_pb_r))
+ MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c1571_device, cia_pb_w))
+ MCFG_MOS6526_PC_CALLBACK(WRITELINE(c1571_device, cia_pc_w))
MCFG_WD1770_ADD(WD1770_TAG, XTAL_16MHz/2)
MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz)
- MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_t, byte_w))
- MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_t::floppy_formats)
+ MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_device, byte_w))
+ MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats)
MACHINE_CONFIG_END
@@ -692,7 +692,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1571_t::device_mconfig_additions() const
+machine_config_constructor c1571_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1571 );
}
@@ -708,27 +708,27 @@ static MACHINE_CONFIG_FRAGMENT( c1571cr )
MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16)
- MCFG_VIA6522_READPA_HANDLER(READ8(c1571_t, via0_pa_r))
- MCFG_VIA6522_READPB_HANDLER(READ8(c1571_t, via0_pb_r))
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571cr_t, via0_pa_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571cr_t, via0_pb_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_t, via0_irq_w))
+ MCFG_VIA6522_READPA_HANDLER(READ8(c1571_device, via0_pa_r))
+ MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via0_pb_r))
+ MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571cr_device, via0_pa_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571cr_device, via0_pb_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via0_irq_w))
MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16)
MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r))
- MCFG_VIA6522_READPB_HANDLER(READ8(c1571_t, via1_pb_r))
+ MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via1_pb_r))
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_t, via1_pb_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via1_pb_w))
MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w))
MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_t, via1_irq_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via1_irq_w))
//MCFG_MOS5710_ADD(M5710_TAG, XTAL_16MHz/16, 0)
MCFG_WD1770_ADD(WD1770_TAG, XTAL_16MHz/2)
MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz)
- MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_t, byte_w))
- MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_t::floppy_formats)
+ MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_device, byte_w))
+ MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats)
MACHINE_CONFIG_END
@@ -737,7 +737,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1571cr_t::device_mconfig_additions() const
+machine_config_constructor c1571cr_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1571cr );
}
@@ -753,33 +753,33 @@ static MACHINE_CONFIG_FRAGMENT( mini_chief )
MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, XTAL_16MHz/16)
- MCFG_VIA6522_READPA_HANDLER(READ8(c1571_t, via0_pa_r))
- MCFG_VIA6522_READPB_HANDLER(READ8(c1571_t, via0_pb_r))
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571_t, via0_pa_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_t, via0_pb_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_t, via0_irq_w))
+ MCFG_VIA6522_READPA_HANDLER(READ8(c1571_device, via0_pa_r))
+ MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via0_pb_r))
+ MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(c1571_device, via0_pa_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via0_pb_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via0_irq_w))
MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_16MHz/16)
MCFG_VIA6522_READPA_HANDLER(DEVREAD8(C64H156_TAG, c64h156_device, yb_r))
- MCFG_VIA6522_READPB_HANDLER(READ8(c1571_t, via1_pb_r))
+ MCFG_VIA6522_READPB_HANDLER(READ8(c1571_device, via1_pb_r))
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_t, via1_pb_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c1571_device, via1_pb_w))
MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, soe_w))
MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(C64H156_TAG, c64h156_device, oe_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_t, via1_irq_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(c1571_device, via1_irq_w))
MCFG_DEVICE_ADD(M6526_TAG, MOS6526, XTAL_16MHz/16)
- MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c1571_t, cia_irq_w))
- MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c1571_t, cia_cnt_w))
- MCFG_MOS6526_SP_CALLBACK(WRITELINE(c1571_t, cia_sp_w))
- MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c1571_t, cia_pb_r))
- MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c1571_t, cia_pb_w))
- MCFG_MOS6526_PC_CALLBACK(WRITELINE(c1571_t, cia_pc_w))
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c1571_device, cia_irq_w))
+ MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c1571_device, cia_cnt_w))
+ MCFG_MOS6526_SP_CALLBACK(WRITELINE(c1571_device, cia_sp_w))
+ MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c1571_device, cia_pb_r))
+ MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c1571_device, cia_pb_w))
+ MCFG_MOS6526_PC_CALLBACK(WRITELINE(c1571_device, cia_pc_w))
MCFG_WD1770_ADD(WD1770_TAG, XTAL_16MHz/2)
MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz)
- MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_t, byte_w))
- MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_t::floppy_formats)
+ MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_device, byte_w))
+ MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats)
MCFG_DEVICE_ADD(ISA_BUS_TAG, ISA8, 0)
MCFG_ISA8_CPU(M6502_TAG)
@@ -792,7 +792,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor mini_chief_t::device_mconfig_additions() const
+machine_config_constructor mini_chief_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( mini_chief );
}
@@ -816,7 +816,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c1571_t::device_input_ports() const
+ioport_constructor c1571_device::device_input_ports() const
{
return INPUT_PORTS_NAME( c1571 );
}
@@ -828,11 +828,11 @@ ioport_constructor c1571_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// c1571_t - constructor
+// c1571_device - constructor
//-------------------------------------------------
-c1571_t::c1571_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+c1571_device::c1571_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this),
device_c64_floppy_parallel_interface(mconfig, *this),
m_maincpu(*this, M6502_TAG),
@@ -854,56 +854,38 @@ c1571_t::c1571_t(const machine_config &mconfig, device_type type, const char *na
{
}
-c1571_t::c1571_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, C1571, "C1571", tag, owner, clock, "c1571", __FILE__),
- device_cbm_iec_interface(mconfig, *this),
- device_c64_floppy_parallel_interface(mconfig, *this),
- m_maincpu(*this, M6502_TAG),
- m_via0(*this, M6522_0_TAG),
- m_via1(*this, M6522_1_TAG),
- m_cia(*this, M6526_TAG),
- m_fdc(*this, WD1770_TAG),
- m_ga(*this, C64H156_TAG),
- m_floppy(*this, C64H156_TAG":0:525qd"),
- m_address(*this, "ADDRESS"),
- m_1_2mhz(0),
- m_data_out(1),
- m_ser_dir(0),
- m_sp_out(1),
- m_cnt_out(1),
- m_via0_irq(CLEAR_LINE),
- m_via1_irq(CLEAR_LINE),
- m_cia_irq(CLEAR_LINE)
+c1571_device::c1571_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1571_device(mconfig, C1571, tag, owner, clock)
{
}
//-------------------------------------------------
-// c1570_t - constructor
+// c1570_device - constructor
//-------------------------------------------------
-c1570_t::c1570_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1571_t(mconfig, C1570, "C1570", tag, owner, clock, "c1570", __FILE__)
+c1570_device::c1570_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1571_device(mconfig, C1570, tag, owner, clock)
{
}
//-------------------------------------------------
-// c1571cr_t - constructor
+// c1571cr_device - constructor
//-------------------------------------------------
-c1571cr_t::c1571cr_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1571_t(mconfig, C1571CR, "C1571CR", tag, owner, clock, "c1571cr", __FILE__)
+c1571cr_device::c1571cr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1571_device(mconfig, C1571CR, tag, owner, clock)
{
}
//-------------------------------------------------
-// mini_chief_t - constructor
+// mini_chief_device - constructor
//-------------------------------------------------
-mini_chief_t::mini_chief_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1571_t(mconfig, MINI_CHIEF, "ICT Mini Chief", tag, owner, clock, "minichif", __FILE__)
+mini_chief_device::mini_chief_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1571_device(mconfig, MINI_CHIEF, tag, owner, clock)
{
}
@@ -912,12 +894,12 @@ mini_chief_t::mini_chief_t(const machine_config &mconfig, const char *tag, devic
// device_start - device-specific startup
//-------------------------------------------------
-void c1571_t::device_start()
+void c1571_device::device_start()
{
// install image callbacks
m_ga->set_floppy(m_floppy);
//m_fdc->set_floppy(m_floppy);
- m_floppy->setup_wpt_cb(floppy_image_device::wpt_cb(&c1571_t::wpt_callback, this));
+ m_floppy->setup_wpt_cb(floppy_image_device::wpt_cb(&c1571_device::wpt_callback, this));
// register for state saving
save_item(NAME(m_1_2mhz));
@@ -935,7 +917,7 @@ void c1571_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c1571_t::device_reset()
+void c1571_device::device_reset()
{
m_maincpu->reset();
@@ -957,7 +939,7 @@ void c1571_t::device_reset()
// cbm_iec_srq -
//-------------------------------------------------
-void c1571_t::cbm_iec_srq(int state)
+void c1571_device::cbm_iec_srq(int state)
{
update_iec();
}
@@ -967,7 +949,7 @@ void c1571_t::cbm_iec_srq(int state)
// cbm_iec_atn -
//-------------------------------------------------
-void c1571_t::cbm_iec_atn(int state)
+void c1571_device::cbm_iec_atn(int state)
{
update_iec();
}
@@ -977,7 +959,7 @@ void c1571_t::cbm_iec_atn(int state)
// cbm_iec_data -
//-------------------------------------------------
-void c1571_t::cbm_iec_data(int state)
+void c1571_device::cbm_iec_data(int state)
{
update_iec();
}
@@ -987,7 +969,7 @@ void c1571_t::cbm_iec_data(int state)
// cbm_iec_reset -
//-------------------------------------------------
-void c1571_t::cbm_iec_reset(int state)
+void c1571_device::cbm_iec_reset(int state)
{
if (!state)
{
@@ -1000,7 +982,7 @@ void c1571_t::cbm_iec_reset(int state)
// parallel_data_w -
//-------------------------------------------------
-void c1571_t::parallel_data_w(uint8_t data)
+void c1571_device::parallel_data_w(uint8_t data)
{
m_parallel_data = data;
}
@@ -1010,7 +992,7 @@ void c1571_t::parallel_data_w(uint8_t data)
// parallel_strobe_w -
//-------------------------------------------------
-void c1571_t::parallel_strobe_w(int state)
+void c1571_device::parallel_strobe_w(int state)
{
m_cia->flag_w(state);
}
@@ -1020,7 +1002,7 @@ void c1571_t::parallel_strobe_w(int state)
// update_iec -
//-------------------------------------------------
-void c1571_t::update_iec()
+void c1571_device::update_iec()
{
m_cia->cnt_w(m_ser_dir || m_bus->srq_r());
m_cia->sp_w(m_ser_dir || m_bus->data_r());
diff --git a/src/devices/bus/cbmiec/c1571.h b/src/devices/bus/cbmiec/c1571.h
index 027ab98d242..3bc5b287b98 100644
--- a/src/devices/bus/cbmiec/c1571.h
+++ b/src/devices/bus/cbmiec/c1571.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_C1571_H
+#define MAME_BUS_CBMIEC_C1571_H
-#ifndef __C1571__
-#define __C1571__
+#pragma once
#include "cbmiec.h"
#include "bus/c64/bn1541.h"
@@ -35,16 +35,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c1571_t
+// ======================> c1571_device
-class c1571_t : public device_t,
- public device_cbm_iec_interface,
- public device_c64_floppy_parallel_interface
+class c1571_device : public device_t, public device_cbm_iec_interface, public device_c64_floppy_parallel_interface
{
public:
// construction/destruction
- c1571_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- c1571_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1571_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -77,6 +74,8 @@ public:
void wpt_callback(floppy_image_device *floppy, int state);
protected:
+ c1571_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -103,7 +102,7 @@ protected:
required_device<via6522_device> m_via0;
required_device<via6522_device> m_via1;
required_device<mos6526_device> m_cia;
- required_device<wd1770_t> m_fdc;
+ required_device<wd1770_device> m_fdc;
required_device<c64h156_device> m_ga;
required_device<floppy_image_device> m_floppy;
required_ioport m_address;
@@ -124,13 +123,13 @@ protected:
};
-// ======================> c1570_t
+// ======================> c1570_device
-class c1570_t : public c1571_t
+class c1570_device : public c1571_device
{
public:
// construction/destruction
- c1570_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1570_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -138,13 +137,13 @@ public:
};
-// ======================> c1571cr_t
+// ======================> c1571cr_device
-class c1571cr_t : public c1571_t
+class c1571cr_device : public c1571_device
{
public:
// construction/destruction
- c1571cr_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1571cr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -155,13 +154,13 @@ public:
};
-// ======================> mini_chief_t
+// ======================> mini_chief_device
-class mini_chief_t : public c1571_t
+class mini_chief_device : public c1571_device
{
public:
// construction/destruction
- mini_chief_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mini_chief_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -174,11 +173,9 @@ public:
// device type definition
-extern const device_type C1570;
-extern const device_type C1571;
-extern const device_type C1571CR;
-extern const device_type MINI_CHIEF;
-
-
+DECLARE_DEVICE_TYPE(C1570, c1570_device)
+DECLARE_DEVICE_TYPE(C1571, c1571_device)
+DECLARE_DEVICE_TYPE(C1571CR, c1571cr_device)
+DECLARE_DEVICE_TYPE(MINI_CHIEF, mini_chief_device)
-#endif
+#endif // MAME_BUS_CBMIEC_C1571_H
diff --git a/src/devices/bus/cbmiec/c1581.cpp b/src/devices/bus/cbmiec/c1581.cpp
index eb48f99141d..28e6a504c47 100644
--- a/src/devices/bus/cbmiec/c1581.cpp
+++ b/src/devices/bus/cbmiec/c1581.cpp
@@ -33,8 +33,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C1563 = device_creator<c1563_t>;
-const device_type C1581 = device_creator<c1581_t>;
+DEFINE_DEVICE_TYPE(C1563, c1563_device, "c1563", "C1563")
+DEFINE_DEVICE_TYPE(C1581, c1581_device, "c1581", "C1581")
//-------------------------------------------------
@@ -59,7 +59,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1581_t::device_rom_region() const
+const tiny_rom_entry *c1581_device::device_rom_region() const
{
return ROM_NAME( c1581 );
}
@@ -79,7 +79,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1563_t::device_rom_region() const
+const tiny_rom_entry *c1563_device::device_rom_region() const
{
return ROM_NAME( c1563 );
}
@@ -89,10 +89,10 @@ const tiny_rom_entry *c1563_t::device_rom_region() const
// ADDRESS_MAP( c1581_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c1581_mem, AS_PROGRAM, 8, c1581_t )
+static ADDRESS_MAP_START( c1581_mem, AS_PROGRAM, 8, c1581_device )
AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x2000) AM_RAM
AM_RANGE(0x4000, 0x400f) AM_MIRROR(0x1ff0) AM_DEVREADWRITE(M8520_TAG, mos8520_device, read, write)
- AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE(WD1772_TAG, wd1772_t, read, write)
+ AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE(WD1772_TAG, wd1772_device, read, write)
AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0)
ADDRESS_MAP_END
@@ -101,21 +101,21 @@ ADDRESS_MAP_END
// MOS8520_INTERFACE( cia_intf )
//-------------------------------------------------
-WRITE_LINE_MEMBER( c1581_t::cnt_w )
+WRITE_LINE_MEMBER( c1581_device::cnt_w )
{
m_cnt_out = state;
update_iec();
}
-WRITE_LINE_MEMBER( c1581_t::sp_w )
+WRITE_LINE_MEMBER( c1581_device::sp_w )
{
m_sp_out = state;
update_iec();
}
-READ8_MEMBER( c1581_t::cia_pa_r )
+READ8_MEMBER( c1581_device::cia_pa_r )
{
/*
@@ -146,7 +146,7 @@ READ8_MEMBER( c1581_t::cia_pa_r )
return data;
}
-WRITE8_MEMBER( c1581_t::cia_pa_w )
+WRITE8_MEMBER( c1581_device::cia_pa_w )
{
/*
@@ -176,7 +176,7 @@ WRITE8_MEMBER( c1581_t::cia_pa_w )
machine().output().set_led_value(LED_ACT, BIT(data, 6));
}
-READ8_MEMBER( c1581_t::cia_pb_r )
+READ8_MEMBER( c1581_device::cia_pb_r )
{
/*
@@ -210,7 +210,7 @@ READ8_MEMBER( c1581_t::cia_pb_r )
return data;
}
-WRITE8_MEMBER( c1581_t::cia_pb_w )
+WRITE8_MEMBER( c1581_device::cia_pb_w )
{
/*
@@ -253,10 +253,10 @@ SLOT_INTERFACE_END
//-------------------------------------------------
-// FLOPPY_FORMATS( c1581_t::floppy_formats )
+// FLOPPY_FORMATS( c1581_device::floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c1581_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c1581_device::floppy_formats )
FLOPPY_D81_FORMAT
FLOPPY_FORMATS_END
@@ -271,15 +271,15 @@ static MACHINE_CONFIG_FRAGMENT( c1581 )
MCFG_DEVICE_ADD(M8520_TAG, MOS8520, XTAL_16MHz/8)
MCFG_MOS6526_IRQ_CALLBACK(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
- MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c1581_t, cnt_w))
- MCFG_MOS6526_SP_CALLBACK(WRITELINE(c1581_t, sp_w))
- MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(c1581_t, cia_pa_r))
- MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(c1581_t, cia_pa_w))
- MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c1581_t, cia_pb_r))
- MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c1581_t, cia_pb_w))
+ MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c1581_device, cnt_w))
+ MCFG_MOS6526_SP_CALLBACK(WRITELINE(c1581_device, sp_w))
+ MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(c1581_device, cia_pa_r))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(c1581_device, cia_pa_w))
+ MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c1581_device, cia_pb_r))
+ MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c1581_device, cia_pb_w))
MCFG_WD1772_ADD(WD1772_TAG, XTAL_16MHz/2)
- MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", c1581_floppies, "35dd", c1581_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", c1581_floppies, "35dd", c1581_device::floppy_formats)
MACHINE_CONFIG_END
@@ -288,7 +288,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1581_t::device_mconfig_additions() const
+machine_config_constructor c1581_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1581 );
}
@@ -312,7 +312,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c1581_t::device_input_ports() const
+ioport_constructor c1581_device::device_input_ports() const
{
return INPUT_PORTS_NAME( c1581 );
}
@@ -324,11 +324,11 @@ ioport_constructor c1581_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// c1581_t - constructor
+// c1581_device - constructor
//-------------------------------------------------
-c1581_t::c1581_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+c1581_device::c1581_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this),
m_maincpu(*this, M6502_TAG),
m_cia(*this, M8520_TAG),
@@ -343,36 +343,25 @@ c1581_t::c1581_t(const machine_config &mconfig, device_type type, const char *na
{
}
-c1581_t::c1581_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, C1581, "C1581", tag, owner, clock, "c1581", __FILE__),
- device_cbm_iec_interface(mconfig, *this),
- m_maincpu(*this, M6502_TAG),
- m_cia(*this, M8520_TAG),
- m_fdc(*this, WD1772_TAG),
- m_floppy(*this, WD1772_TAG":0:35dd"),
- m_address(*this, "ADDRESS"),
- m_data_out(0),
- m_atn_ack(0),
- m_fast_ser_dir(0),
- m_sp_out(1),
- m_cnt_out(1)
+c1581_device::c1581_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1581_device(mconfig, C1581, tag, owner, clock)
{
}
//-------------------------------------------------
-// c1563_t - constructor
+// c1563_device - constructor
//-------------------------------------------------
-c1563_t::c1563_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1581_t(mconfig, C1563, "C1563", tag, owner, clock, "c1563", __FILE__) { }
+c1563_device::c1563_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : c1581_device(mconfig, C1563, tag, owner, clock) { }
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void c1581_t::device_start()
+void c1581_device::device_start()
{
// state saving
save_item(NAME(m_data_out));
@@ -387,7 +376,7 @@ void c1581_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c1581_t::device_reset()
+void c1581_device::device_reset()
{
m_maincpu->reset();
@@ -408,7 +397,7 @@ void c1581_t::device_reset()
// cbm_iec_srq -
//-------------------------------------------------
-void c1581_t::cbm_iec_srq(int state)
+void c1581_device::cbm_iec_srq(int state)
{
update_iec();
}
@@ -418,7 +407,7 @@ void c1581_t::cbm_iec_srq(int state)
// cbm_iec_atn -
//-------------------------------------------------
-void c1581_t::cbm_iec_atn(int state)
+void c1581_device::cbm_iec_atn(int state)
{
update_iec();
}
@@ -428,7 +417,7 @@ void c1581_t::cbm_iec_atn(int state)
// cbm_iec_data -
//-------------------------------------------------
-void c1581_t::cbm_iec_data(int state)
+void c1581_device::cbm_iec_data(int state)
{
update_iec();
}
@@ -438,7 +427,7 @@ void c1581_t::cbm_iec_data(int state)
// cbm_iec_reset -
//-------------------------------------------------
-void c1581_t::cbm_iec_reset(int state)
+void c1581_device::cbm_iec_reset(int state)
{
if (!state)
{
@@ -451,7 +440,7 @@ void c1581_t::cbm_iec_reset(int state)
// update_iec -
//-------------------------------------------------
-void c1581_t::update_iec()
+void c1581_device::update_iec()
{
m_cia->cnt_w(m_fast_ser_dir || m_bus->srq_r());
m_cia->sp_w(m_fast_ser_dir || m_bus->data_r());
diff --git a/src/devices/bus/cbmiec/c1581.h b/src/devices/bus/cbmiec/c1581.h
index 5f4c9c47437..77d60400e8c 100644
--- a/src/devices/bus/cbmiec/c1581.h
+++ b/src/devices/bus/cbmiec/c1581.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_C1581_H
+#define MAME_BUS_CBMIEC_C1581_H
-#ifndef __C1581__
-#define __C1581__
+#pragma once
#include "cbmiec.h"
#include "cpu/m6502/m6502.h"
@@ -31,15 +31,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c1581_t
+// ======================> c1581_device
-class c1581_t : public device_t,
- public device_cbm_iec_interface
+class c1581_device : public device_t, public device_cbm_iec_interface
{
public:
// construction/destruction
- c1581_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- c1581_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1581_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -57,6 +55,8 @@ public:
DECLARE_FLOPPY_FORMATS( floppy_formats );
protected:
+ c1581_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -77,7 +77,7 @@ protected:
required_device<cpu_device> m_maincpu;
required_device<mos6526_device> m_cia;
- required_device<wd1772_t> m_fdc;
+ required_device<wd1772_device> m_fdc;
required_device<floppy_image_device> m_floppy;
required_ioport m_address;
@@ -89,13 +89,13 @@ protected:
};
-// ======================> c1563_t
+// ======================> c1563_device
-class c1563_t : public c1581_t
+class c1563_device : public c1581_device
{
public:
// construction/destruction
- c1563_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1563_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -103,9 +103,8 @@ public:
// device type definition
-extern const device_type C1563;
-extern const device_type C1581;
-
+DECLARE_DEVICE_TYPE(C1563, c1563_device)
+DECLARE_DEVICE_TYPE(C1581, c1581_device)
-#endif
+#endif // MAME_BUS_CBMIEC_C1581_H
diff --git a/src/devices/bus/cbmiec/c64_nl10.cpp b/src/devices/bus/cbmiec/c64_nl10.cpp
index 0288aa2874f..d4ed3467016 100644
--- a/src/devices/bus/cbmiec/c64_nl10.cpp
+++ b/src/devices/bus/cbmiec/c64_nl10.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_NL10_INTERFACE = device_creator<c64_nl10_interface_device>;
+DEFINE_DEVICE_TYPE(C64_NL10_INTERFACE, c64_nl10_interface_device, "c64_nl10", "Star NL-10 C64 Interface Cartridge")
//-------------------------------------------------
@@ -48,8 +48,8 @@ const tiny_rom_entry *c64_nl10_interface_device::device_rom_region() const
//-------------------------------------------------
c64_nl10_interface_device::c64_nl10_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, C64_NL10_INTERFACE, "Star NL-10 C64 Interface Cartridge", tag, owner, clock, "c64_nl10", __FILE__),
- device_cbm_iec_interface(mconfig, *this)
+ : device_t(mconfig, C64_NL10_INTERFACE, tag, owner, clock)
+ , device_cbm_iec_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/cbmiec/c64_nl10.h b/src/devices/bus/cbmiec/c64_nl10.h
index 3d6d1fae895..68f9f135c91 100644
--- a/src/devices/bus/cbmiec/c64_nl10.h
+++ b/src/devices/bus/cbmiec/c64_nl10.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_C64_NL10_H
+#define MAME_BUS_CBMIEC_C64_NL10_H
-#ifndef __C64_NL10_INTERFACE__
-#define __C64_NL10_INTERFACE__
+#pragma once
#include "cbmiec.h"
@@ -21,8 +21,7 @@
// ======================> c64_nl10_interface_device
-class c64_nl10_interface_device : public device_t,
- public device_cbm_iec_interface
+class c64_nl10_interface_device : public device_t, public device_cbm_iec_interface
{
public:
// construction/destruction
@@ -44,8 +43,7 @@ protected:
// device type definition
-extern const device_type C64_NL10_INTERFACE;
-
+DECLARE_DEVICE_TYPE(C64_NL10_INTERFACE, c64_nl10_interface_device)
-#endif
+#endif // MAME_BUS_CBMIEC_C64_NL10_H
diff --git a/src/devices/bus/cbmiec/cbmiec.cpp b/src/devices/bus/cbmiec/cbmiec.cpp
index 67276583fae..2ecf86420a3 100644
--- a/src/devices/bus/cbmiec/cbmiec.cpp
+++ b/src/devices/bus/cbmiec/cbmiec.cpp
@@ -209,8 +209,8 @@ static const char *const SIGNAL_NAME[] = { "SRQ", "ATN", "CLK", "DATA", "RESET"
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CBM_IEC = device_creator<cbm_iec_device>;
-const device_type CBM_IEC_SLOT = device_creator<cbm_iec_slot_device>;
+DEFINE_DEVICE_TYPE(CBM_IEC, cbm_iec_device, "cbm_iec", "CBM IEC bus")
+DEFINE_DEVICE_TYPE(CBM_IEC_SLOT, cbm_iec_slot_device, "cbm_iec_slot", "CBM IEC slot")
@@ -247,7 +247,7 @@ device_cbm_iec_interface::~device_cbm_iec_interface()
//-------------------------------------------------
cbm_iec_slot_device::cbm_iec_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CBM_IEC_SLOT, "CBM IEC slot", tag, owner, clock, "cbm_iec_slot", __FILE__),
+ device_t(mconfig, CBM_IEC_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this), m_address(0)
{
}
@@ -284,7 +284,7 @@ void cbm_iec_slot_device::device_start()
//-------------------------------------------------
cbm_iec_device::cbm_iec_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CBM_IEC, "CBM IEC bus", tag, owner, clock, "cbm_iec", __FILE__),
+ : device_t(mconfig, CBM_IEC, tag, owner, clock),
m_write_srq(*this),
m_write_atn(*this),
m_write_clk(*this),
diff --git a/src/devices/bus/cbmiec/cbmiec.h b/src/devices/bus/cbmiec/cbmiec.h
index 20146a78590..6c7d60f471b 100644
--- a/src/devices/bus/cbmiec/cbmiec.h
+++ b/src/devices/bus/cbmiec/cbmiec.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_CBMIEC_H
+#define MAME_BUS_CBMIEC_CBMIEC_H
-#ifndef __CBM_IEC__
-#define __CBM_IEC__
+#pragma once
@@ -77,11 +77,11 @@ public:
// construction/destruction
cbm_iec_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _write> devcb_base &set_srq_callback(_write wr) { return m_write_srq.set_callback(wr); }
- template<class _write> devcb_base &set_atn_callback(_write wr) { return m_write_atn.set_callback(wr); }
- template<class _write> devcb_base &set_clk_callback(_write wr) { return m_write_clk.set_callback(wr); }
- template<class _write> devcb_base &set_data_callback(_write wr) { return m_write_data.set_callback(wr); }
- template<class _write> devcb_base &set_reset_callback(_write wr) { return m_write_reset.set_callback(wr); }
+ template <class Object> devcb_base &set_srq_callback(Object &&wr) { return m_write_srq.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_atn_callback(Object &&wr) { return m_write_atn.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_clk_callback(Object &&wr) { return m_write_clk.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_data_callback(Object &&wr) { return m_write_data.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_reset_callback(Object &&wr) { return m_write_reset.set_callback(std::forward<Object>(wr)); }
void add_device(cbm_iec_slot_device *slot, device_t *target);
@@ -179,18 +179,20 @@ class device_cbm_iec_interface : public device_slot_card_interface
public:
// construction/destruction
- device_cbm_iec_interface(const machine_config &mconfig, device_t &device);
virtual ~device_cbm_iec_interface();
device_cbm_iec_interface *next() const { return m_next; }
device_cbm_iec_interface *m_next;
// optional operation overrides
- virtual void cbm_iec_srq(int state) { };
- virtual void cbm_iec_atn(int state) { };
- virtual void cbm_iec_clk(int state) { };
- virtual void cbm_iec_data(int state) { };
- virtual void cbm_iec_reset(int state) { };
+ virtual void cbm_iec_srq(int state) { }
+ virtual void cbm_iec_atn(int state) { }
+ virtual void cbm_iec_clk(int state) { }
+ virtual void cbm_iec_data(int state) { }
+ virtual void cbm_iec_reset(int state) { }
+
+protected:
+ device_cbm_iec_interface(const machine_config &mconfig, device_t &device);
cbm_iec_device *m_bus;
cbm_iec_slot_device *m_slot;
@@ -198,12 +200,11 @@ public:
// device type definition
-extern const device_type CBM_IEC;
-extern const device_type CBM_IEC_SLOT;
+DECLARE_DEVICE_TYPE(CBM_IEC, cbm_iec_device)
+DECLARE_DEVICE_TYPE(CBM_IEC_SLOT, cbm_iec_slot_device)
SLOT_INTERFACE_EXTERN( cbm_iec_devices );
-
-#endif
+#endif // MAME_BUS_CBMIEC_CBMIEC_H
diff --git a/src/devices/bus/cbmiec/cmdhd.cpp b/src/devices/bus/cbmiec/cmdhd.cpp
index b554c9bda71..247d627ce7a 100644
--- a/src/devices/bus/cbmiec/cmdhd.cpp
+++ b/src/devices/bus/cbmiec/cmdhd.cpp
@@ -29,7 +29,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CMD_HD = device_creator<cmd_hd_device>;
+DEFINE_DEVICE_TYPE(CMD_HD, cmd_hd_device, "cmdhd", "CMD HD")
//-------------------------------------------------
@@ -111,7 +111,7 @@ machine_config_constructor cmd_hd_device::device_mconfig_additions() const
//-------------------------------------------------
cmd_hd_device::cmd_hd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CMD_HD, "HD", tag, owner, clock, "cmdhd", __FILE__),
+ : device_t(mconfig, CMD_HD, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this),
m_maincpu(*this, M6502_TAG),
m_scsibus(*this, SCSIBUS_TAG)
diff --git a/src/devices/bus/cbmiec/cmdhd.h b/src/devices/bus/cbmiec/cmdhd.h
index fc38a89a2cb..e648f379281 100644
--- a/src/devices/bus/cbmiec/cmdhd.h
+++ b/src/devices/bus/cbmiec/cmdhd.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_CMDHD_H
+#define MAME_BUS_CBMIEC_CMDHD_H
-#ifndef __CMD_HD__
-#define __CMD_HD__
+#pragma once
#include "cbmiec.h"
#include "cpu/m6502/m6502.h"
@@ -34,8 +34,7 @@
// ======================> cmd_hd_device
-class cmd_hd_device : public device_t,
- public device_cbm_iec_interface
+class cmd_hd_device : public device_t, public device_cbm_iec_interface
{
public:
// construction/destruction
@@ -59,13 +58,12 @@ protected:
void cbm_iec_reset(int state) override;
required_device<cpu_device> m_maincpu;
- required_device<SCSI_PORT_DEVICE> m_scsibus;
+ required_device<scsi_port_device> m_scsibus;
};
// device type definition
-extern const device_type CMD_HD;
-
+DECLARE_DEVICE_TYPE(CMD_HD, cmd_hd_device)
-#endif
+#endif // MAME_BUS_CBMIEC_CMDHD_H
diff --git a/src/devices/bus/cbmiec/diag264_lb_iec.cpp b/src/devices/bus/cbmiec/diag264_lb_iec.cpp
index 7eb12763ef9..18dac929017 100644
--- a/src/devices/bus/cbmiec/diag264_lb_iec.cpp
+++ b/src/devices/bus/cbmiec/diag264_lb_iec.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type DIAG264_SERIAL_LOOPBACK = device_creator<diag264_serial_loopback_device>;
+DEFINE_DEVICE_TYPE(DIAG264_SERIAL_LOOPBACK, diag264_serial_loopback_device, "diag264_serial_loopback", "Diag264 Serial Loopback")
@@ -28,8 +28,8 @@ const device_type DIAG264_SERIAL_LOOPBACK = device_creator<diag264_serial_loopba
//-------------------------------------------------
diag264_serial_loopback_device::diag264_serial_loopback_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DIAG264_SERIAL_LOOPBACK, "Diag264 Serial Loopback", tag, owner, clock, "diag264_serial_loopback", __FILE__),
- device_cbm_iec_interface(mconfig, *this)
+ : device_t(mconfig, DIAG264_SERIAL_LOOPBACK, tag, owner, clock)
+ , device_cbm_iec_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/cbmiec/diag264_lb_iec.h b/src/devices/bus/cbmiec/diag264_lb_iec.h
index a998cd6fe06..6611fee413d 100644
--- a/src/devices/bus/cbmiec/diag264_lb_iec.h
+++ b/src/devices/bus/cbmiec/diag264_lb_iec.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_DIAG264_LB_IEC_H
+#define MAME_BUS_CBMIEC_DIAG264_LB_IEC_H
-#ifndef __DIAG264_IEC_LOOPBACK__
-#define __DIAG264_IEC_LOOPBACK__
+#pragma once
#include "cbmiec.h"
@@ -38,8 +38,7 @@ protected:
// device type definition
-extern const device_type DIAG264_SERIAL_LOOPBACK;
-
+DECLARE_DEVICE_TYPE(DIAG264_SERIAL_LOOPBACK, diag264_serial_loopback_device)
-#endif
+#endif // MAME_BUS_CBMIEC_DIAG264_LB_IEC_H
diff --git a/src/devices/bus/cbmiec/fd2000.cpp b/src/devices/bus/cbmiec/fd2000.cpp
index 92164c9299e..d169440a857 100644
--- a/src/devices/bus/cbmiec/fd2000.cpp
+++ b/src/devices/bus/cbmiec/fd2000.cpp
@@ -39,8 +39,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type FD2000 = device_creator<fd2000_device>;
-const device_type FD4000 = device_creator<fd4000_device>;
+DEFINE_DEVICE_TYPE(FD2000, fd2000_device, "fd2000", "FD-2000")
+DEFINE_DEVICE_TYPE(FD4000, fd4000_device, "fd4000", "FD-4000")
//-------------------------------------------------
@@ -276,22 +276,17 @@ machine_config_constructor fd2000_device::device_mconfig_additions() const
//-------------------------------------------------
fd2000_device::fd2000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, FD2000, "FD-2000", tag, owner, clock, "fd2000", __FILE__),
- device_cbm_iec_interface(mconfig, *this),
- m_maincpu(*this, G65SC02PI2_TAG),
- m_fdc(*this, DP8473V_TAG),
- m_floppy0(*this, DP8473V_TAG":0"),
- m_variant(TYPE_FD2000)
+ : fd2000_device(mconfig, FD2000, tag, owner, clock, TYPE_FD2000)
{
}
-fd2000_device::fd2000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_cbm_iec_interface(mconfig, *this),
- m_maincpu(*this, R65C02P4_TAG),
- m_fdc(*this, PC8477AV1_TAG),
- m_floppy0(*this, PC8477AV1_TAG":0"),
- m_variant(variant)
+fd2000_device::fd2000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_cbm_iec_interface(mconfig, *this)
+ , m_maincpu(*this, R65C02P4_TAG)
+ , m_fdc(*this, PC8477AV1_TAG)
+ , m_floppy0(*this, PC8477AV1_TAG":0")
+ , m_variant(variant)
{
}
@@ -301,7 +296,9 @@ fd2000_device::fd2000_device(const machine_config &mconfig, device_type type, co
//-------------------------------------------------
fd4000_device::fd4000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : fd2000_device(mconfig, FD4000, "FD-4000", tag, owner, clock, TYPE_FD4000, "fd4000", __FILE__ ) { }
+ : fd2000_device(mconfig, FD4000, tag, owner, clock, TYPE_FD4000)
+{
+}
//-------------------------------------------------
diff --git a/src/devices/bus/cbmiec/fd2000.h b/src/devices/bus/cbmiec/fd2000.h
index d0cc4585dff..4623a0d8d10 100644
--- a/src/devices/bus/cbmiec/fd2000.h
+++ b/src/devices/bus/cbmiec/fd2000.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_FD2000_H
+#define MAME_BUS_CBMIEC_FD2000_H
-#ifndef __FD2000__
-#define __FD2000__
+#pragma once
#include "cbmiec.h"
#include "cpu/m6502/m65c02.h"
@@ -39,13 +39,6 @@ class fd2000_device : public device_t,
public:
// construction/destruction
fd2000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- fd2000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
-
- enum
- {
- TYPE_FD2000,
- TYPE_FD4000
- };
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -59,6 +52,14 @@ public:
//DECLARE_FLOPPY_FORMATS( floppy_formats );
protected:
+ enum
+ {
+ TYPE_FD2000,
+ TYPE_FD4000
+ };
+
+ fd2000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -88,9 +89,8 @@ public:
// device type definition
-extern const device_type FD2000;
-extern const device_type FD4000;
-
+DECLARE_DEVICE_TYPE(FD2000, fd2000_device)
+DECLARE_DEVICE_TYPE(FD4000, fd4000_device)
-#endif
+#endif // MAME_BUS_CBMIEC_FD2000_H
diff --git a/src/devices/bus/cbmiec/interpod.cpp b/src/devices/bus/cbmiec/interpod.cpp
index 796802ab95e..850f403a122 100644
--- a/src/devices/bus/cbmiec/interpod.cpp
+++ b/src/devices/bus/cbmiec/interpod.cpp
@@ -76,7 +76,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type INTERPOD = device_creator<interpod_device>;
+DEFINE_DEVICE_TYPE(INTERPOD, interpod_device, "interpod", "Interpod")
@@ -110,8 +110,8 @@ const tiny_rom_entry *interpod_device::device_rom_region() const
//-------------------------------------------------
static ADDRESS_MAP_START( interpod_mem, AS_PROGRAM, 8, interpod_device )
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x3b80) AM_DEVICE(R6532_TAG, mos6532_t, ram_map)
- AM_RANGE(0x0400, 0x041f) AM_MIRROR(0x3be0) AM_DEVICE(R6532_TAG, mos6532_t, io_map)
+ AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x3b80) AM_DEVICE(R6532_TAG, mos6532_new_device, ram_map)
+ AM_RANGE(0x0400, 0x041f) AM_MIRROR(0x3be0) AM_DEVICE(R6532_TAG, mos6532_new_device, io_map)
AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x9ffe) AM_DEVREADWRITE(MC6850_TAG, acia6850_device, status_r, control_w)
AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x9ffe) AM_DEVREADWRITE(MC6850_TAG, acia6850_device, data_r, data_w)
AM_RANGE(0x4000, 0x47ff) AM_MIRROR(0xb800) AM_ROM AM_REGION(R6502_TAG, 0)
@@ -128,7 +128,7 @@ static MACHINE_CONFIG_FRAGMENT( interpod )
MCFG_CPU_PROGRAM_MAP(interpod_mem)
MCFG_DEVICE_ADD(R6522_TAG, VIA6522, 1000000)
- MCFG_DEVICE_ADD(R6532_TAG, MOS6532n, 1000000)
+ MCFG_DEVICE_ADD(R6532_TAG, MOS6532_NEW, 1000000)
MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0)
MCFG_CBM_IEEE488_ADD(nullptr)
@@ -155,7 +155,7 @@ machine_config_constructor interpod_device::device_mconfig_additions() const
//-------------------------------------------------
interpod_device::interpod_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, INTERPOD, "Interpod", tag, owner, clock, "interpod", __FILE__),
+ : device_t(mconfig, INTERPOD, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this),
m_maincpu(*this, R6502_TAG),
m_via(*this, R6522_TAG),
diff --git a/src/devices/bus/cbmiec/interpod.h b/src/devices/bus/cbmiec/interpod.h
index 718479effc7..b33eb8bcd86 100644
--- a/src/devices/bus/cbmiec/interpod.h
+++ b/src/devices/bus/cbmiec/interpod.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_INTERPOD_H
+#define MAME_BUS_CBMIEC_INTERPOD_H
-#ifndef __INTERPOD__
-#define __INTERPOD__
+#pragma once
#include "cbmiec.h"
#include "bus/ieee488/ieee488.h"
@@ -43,8 +43,7 @@
// ======================> interpod_device
-class interpod_device : public device_t,
- public device_cbm_iec_interface
+class interpod_device : public device_t, public device_cbm_iec_interface
{
public:
// construction/destruction
@@ -61,15 +60,14 @@ protected:
required_device<cpu_device> m_maincpu;
required_device<via6522_device> m_via;
- required_device<mos6532_t> m_riot;
+ required_device<mos6532_new_device> m_riot;
required_device<acia6850_device> m_acia;
required_device<ieee488_device> m_ieee;
};
// device type definition
-extern const device_type INTERPOD;
-
+DECLARE_DEVICE_TYPE(INTERPOD, interpod_device)
-#endif
+#endif // MAME_BUS_CBMIEC_INTERPOD_H
diff --git a/src/devices/bus/cbmiec/serialbox.cpp b/src/devices/bus/cbmiec/serialbox.cpp
index d47cf61a0dc..1d0ff2e8abb 100644
--- a/src/devices/bus/cbmiec/serialbox.cpp
+++ b/src/devices/bus/cbmiec/serialbox.cpp
@@ -32,7 +32,7 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SERIAL_BOX = device_creator<serial_box_device>;
+DEFINE_DEVICE_TYPE(SERIAL_BOX, serial_box_device, "serbox", "Serial Box")
//-------------------------------------------------
@@ -95,7 +95,7 @@ machine_config_constructor serial_box_device::device_mconfig_additions() const
//-------------------------------------------------
serial_box_device::serial_box_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SERIAL_BOX, "Serial Box", tag, owner, clock, "serbox", __FILE__),
+ : device_t(mconfig, SERIAL_BOX, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this),
m_maincpu(*this, M6502_TAG)
{
diff --git a/src/devices/bus/cbmiec/serialbox.h b/src/devices/bus/cbmiec/serialbox.h
index be7405a97d3..67fa9feacf5 100644
--- a/src/devices/bus/cbmiec/serialbox.h
+++ b/src/devices/bus/cbmiec/serialbox.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_SERIALBOX_H
+#define MAME_BUS_CBMIEC_SERIALBOX_H
-#ifndef __SERIAL_BOX__
-#define __SERIAL_BOX__
+#pragma once
#include "cpu/m6502/m65c02.h"
#include "bus/cbmiec/cbmiec.h"
@@ -30,8 +30,7 @@
// ======================> serial_box_device
-class serial_box_device : public device_t,
- public device_cbm_iec_interface
+class serial_box_device : public device_t, public device_cbm_iec_interface
{
public:
// construction/destruction
@@ -57,8 +56,7 @@ private:
// device type definition
-extern const device_type SERIAL_BOX;
-
+DECLARE_DEVICE_TYPE(SERIAL_BOX, serial_box_device)
-#endif
+#endif // MAME_BUS_CBMIEC_SERIALBOX_H
diff --git a/src/devices/bus/cbmiec/vic1515.cpp b/src/devices/bus/cbmiec/vic1515.cpp
index 77157cdea07..289ffeac4e1 100644
--- a/src/devices/bus/cbmiec/vic1515.cpp
+++ b/src/devices/bus/cbmiec/vic1515.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC1515 = device_creator<vic1515_t>;
+DEFINE_DEVICE_TYPE(VIC1515, vic1515_device, "vic1515", "VIC-1515")
//-------------------------------------------------
@@ -32,7 +32,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *vic1515_t::device_rom_region() const
+const tiny_rom_entry *vic1515_device::device_rom_region() const
{
return ROM_NAME( vic1515 );
}
@@ -42,7 +42,7 @@ const tiny_rom_entry *vic1515_t::device_rom_region() const
// ADDRESS_MAP( vic1515_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( vic1515_mem, AS_PROGRAM, 8, vic1515_t )
+static ADDRESS_MAP_START( vic1515_mem, AS_PROGRAM, 8, vic1515_device )
AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("rom", 0)
ADDRESS_MAP_END
@@ -51,7 +51,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( vic1515_io )
//-------------------------------------------------
-static ADDRESS_MAP_START( vic1515_io, AS_IO, 8, vic1515_t )
+static ADDRESS_MAP_START( vic1515_io, AS_IO, 8, vic1515_device )
ADDRESS_MAP_END
@@ -71,7 +71,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor vic1515_t::device_mconfig_additions() const
+machine_config_constructor vic1515_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( vic1515 );
}
@@ -94,7 +94,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor vic1515_t::device_input_ports() const
+ioport_constructor vic1515_device::device_input_ports() const
{
return INPUT_PORTS_NAME( vic1515 );
}
@@ -106,11 +106,11 @@ ioport_constructor vic1515_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// vic1515_t - constructor
+// vic1515_device - constructor
//-------------------------------------------------
-vic1515_t::vic1515_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VIC1515, "VIC-1515", tag, owner, clock, "vic1515", __FILE__),
+vic1515_device::vic1515_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VIC1515, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this)
{
}
@@ -120,7 +120,7 @@ vic1515_t::vic1515_t(const machine_config &mconfig, const char *tag, device_t *o
// device_start - device-specific startup
//-------------------------------------------------
-void vic1515_t::device_start()
+void vic1515_device::device_start()
{
}
@@ -129,7 +129,7 @@ void vic1515_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void vic1515_t::device_reset()
+void vic1515_device::device_reset()
{
}
@@ -138,7 +138,7 @@ void vic1515_t::device_reset()
// cbm_iec_atn -
//-------------------------------------------------
-void vic1515_t::cbm_iec_atn(int state)
+void vic1515_device::cbm_iec_atn(int state)
{
}
@@ -147,7 +147,7 @@ void vic1515_t::cbm_iec_atn(int state)
// cbm_iec_data -
//-------------------------------------------------
-void vic1515_t::cbm_iec_data(int state)
+void vic1515_device::cbm_iec_data(int state)
{
}
@@ -156,7 +156,7 @@ void vic1515_t::cbm_iec_data(int state)
// cbm_iec_reset -
//-------------------------------------------------
-void vic1515_t::cbm_iec_reset(int state)
+void vic1515_device::cbm_iec_reset(int state)
{
if (!state)
{
diff --git a/src/devices/bus/cbmiec/vic1515.h b/src/devices/bus/cbmiec/vic1515.h
index 2f511006ed4..ca5452aa35c 100644
--- a/src/devices/bus/cbmiec/vic1515.h
+++ b/src/devices/bus/cbmiec/vic1515.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_VIC1515_H
+#define MAME_BUS_CBMIEC_VIC1515_H
-#ifndef __VIC1515__
-#define __VIC1515__
+#pragma once
#include "cbmiec.h"
#include "cpu/mcs48/mcs48.h"
@@ -20,14 +20,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> vic1515_t
+// ======================> vic1515_device
-class vic1515_t : public device_t,
- public device_cbm_iec_interface
+class vic1515_device : public device_t, public device_cbm_iec_interface
{
public:
// construction/destruction
- vic1515_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vic1515_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -47,8 +46,7 @@ protected:
// device type definition
-extern const device_type VIC1515;
-
+DECLARE_DEVICE_TYPE(VIC1515, vic1515_device)
-#endif
+#endif // MAME_BUS_CBMIEC_VIC1515_H
diff --git a/src/devices/bus/cbmiec/vic1520.cpp b/src/devices/bus/cbmiec/vic1520.cpp
index e2275224f1e..f6f412ced18 100644
--- a/src/devices/bus/cbmiec/vic1520.cpp
+++ b/src/devices/bus/cbmiec/vic1520.cpp
@@ -52,7 +52,7 @@ PD7 Y MOTOR COM D
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC1520 = device_creator<vic1520_t>;
+DEFINE_DEVICE_TYPE(VIC1520, vic1520_device, "vic1520", "VIC-1520")
//-------------------------------------------------
@@ -72,7 +72,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *vic1520_t::device_rom_region() const
+const tiny_rom_entry *vic1520_device::device_rom_region() const
{
return ROM_NAME( vic1520 );
}
@@ -82,7 +82,7 @@ const tiny_rom_entry *vic1520_t::device_rom_region() const
// ADDRESS_MAP( vic1520_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( vic1520_mem, AS_PROGRAM, 8, vic1520_t )
+static ADDRESS_MAP_START( vic1520_mem, AS_PROGRAM, 8, vic1520_device )
ADDRESS_MAP_GLOBAL_MASK(0xfff)
AM_RANGE(0x000, 0x03f) AM_RAM
AM_RANGE(0x800, 0xfff) AM_ROM AM_REGION(M6500_1_TAG, 0)
@@ -104,7 +104,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor vic1520_t::device_mconfig_additions() const
+machine_config_constructor vic1520_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( vic1520 );
}
@@ -122,7 +122,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor vic1520_t::device_input_ports() const
+ioport_constructor vic1520_device::device_input_ports() const
{
return INPUT_PORTS_NAME( vic1520 );
}
@@ -134,11 +134,11 @@ ioport_constructor vic1520_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// vic1520_t - constructor
+// vic1520_device - constructor
//-------------------------------------------------
-vic1520_t::vic1520_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VIC1520, "VIC-1520", tag, owner, clock, "vic1520", __FILE__),
+vic1520_device::vic1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VIC1520, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this)
{
}
@@ -148,7 +148,7 @@ vic1520_t::vic1520_t(const machine_config &mconfig, const char *tag, device_t *o
// device_start - device-specific startup
//-------------------------------------------------
-void vic1520_t::device_start()
+void vic1520_device::device_start()
{
}
@@ -157,7 +157,7 @@ void vic1520_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void vic1520_t::device_reset()
+void vic1520_device::device_reset()
{
}
@@ -166,7 +166,7 @@ void vic1520_t::device_reset()
// cbm_iec_atn -
//-------------------------------------------------
-void vic1520_t::cbm_iec_atn(int state)
+void vic1520_device::cbm_iec_atn(int state)
{
}
@@ -175,7 +175,7 @@ void vic1520_t::cbm_iec_atn(int state)
// cbm_iec_data -
//-------------------------------------------------
-void vic1520_t::cbm_iec_data(int state)
+void vic1520_device::cbm_iec_data(int state)
{
}
@@ -184,7 +184,7 @@ void vic1520_t::cbm_iec_data(int state)
// cbm_iec_reset -
//-------------------------------------------------
-void vic1520_t::cbm_iec_reset(int state)
+void vic1520_device::cbm_iec_reset(int state)
{
if (!state)
{
diff --git a/src/devices/bus/cbmiec/vic1520.h b/src/devices/bus/cbmiec/vic1520.h
index 3f2ec228db1..b39fa85b9b1 100644
--- a/src/devices/bus/cbmiec/vic1520.h
+++ b/src/devices/bus/cbmiec/vic1520.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CBMIEC_VIC1520_H
+#define MAME_BUS_CBMIEC_VIC1520_H
-#ifndef __VIC1520__
-#define __VIC1520__
+#pragma once
#include "cbmiec.h"
#include "cpu/m6502/m6502.h"
@@ -20,14 +20,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> vic1520_t
+// ======================> vic1520_device
-class vic1520_t : public device_t,
- public device_cbm_iec_interface
+class vic1520_device : public device_t, public device_cbm_iec_interface
{
public:
// construction/destruction
- vic1520_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vic1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -50,5 +49,4 @@ protected:
extern const device_type VIC1520;
-
-#endif
+#endif // MAME_BUS_CBMIEC_VIC1520_H
diff --git a/src/devices/bus/centronics/comxpl80.cpp b/src/devices/bus/centronics/comxpl80.cpp
index bdca08de3e6..1faff54acf4 100644
--- a/src/devices/bus/centronics/comxpl80.cpp
+++ b/src/devices/bus/centronics/comxpl80.cpp
@@ -31,7 +31,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMX_PL80 = device_creator<comx_pl80_device>;
+DEFINE_DEVICE_TYPE(COMX_PL80, comx_pl80_device, "comx_pl80", "COMX PL-80")
//-------------------------------------------------
@@ -160,7 +160,7 @@ ioport_constructor comx_pl80_device::device_input_ports() const
//-------------------------------------------------
comx_pl80_device::comx_pl80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, COMX_PL80, "COMX PL-80", tag, owner, clock, "comx_pl80", __FILE__),
+ : device_t(mconfig, COMX_PL80, tag, owner, clock),
device_centronics_peripheral_interface(mconfig, *this),
m_plotter(*this, "gfx1"),
m_font(*this, "FONT"),
diff --git a/src/devices/bus/centronics/comxpl80.h b/src/devices/bus/centronics/comxpl80.h
index 0f648902639..2fbb809fd3b 100644
--- a/src/devices/bus/centronics/comxpl80.h
+++ b/src/devices/bus/centronics/comxpl80.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CENTRONICS_COMXPL80_H
+#define MAME_BUS_CENTRONICS_COMXPL80_H
-#ifndef __COMX_PL80__
-#define __COMX_PL80__
+#pragma once
#include "cpu/m6805/m6805.h"
#include "bus/centronics/ctronics.h"
@@ -73,8 +73,8 @@ private:
// device type definition
-extern const device_type COMX_PL80;
+DECLARE_DEVICE_TYPE(COMX_PL80, comx_pl80_device)
-#endif
+#endif // MAME_BUS_CENTRONICS_COMXPL80_H
diff --git a/src/devices/bus/centronics/covox.cpp b/src/devices/bus/centronics/covox.cpp
index 1caea17daae..ece3068f736 100644
--- a/src/devices/bus/centronics/covox.cpp
+++ b/src/devices/bus/centronics/covox.cpp
@@ -16,7 +16,7 @@
//**************************************************************************
// device type definition
-const device_type CENTRONICS_COVOX = device_creator<centronics_covox_device>;
+DEFINE_DEVICE_TYPE(CENTRONICS_COVOX, centronics_covox_device, "covox", "Covox Speech Thing")
static MACHINE_CONFIG_FRAGMENT( covox )
/* sound hardware */
@@ -35,7 +35,7 @@ MACHINE_CONFIG_END
//-------------------------------------------------
centronics_covox_device::centronics_covox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CENTRONICS_COVOX, "Covox Speech Thing", tag, owner, clock, "covox", __FILE__),
+ : device_t(mconfig, CENTRONICS_COVOX, tag, owner, clock),
device_centronics_peripheral_interface( mconfig, *this ),
m_dac(*this, "dac"),
m_data(0)
@@ -68,7 +68,7 @@ void centronics_covox_device::update_dac()
//**************************************************************************
// device type definition
-const device_type CENTRONICS_COVOX_STEREO = device_creator<centronics_covox_stereo_device>;
+DEFINE_DEVICE_TYPE(CENTRONICS_COVOX_STEREO, centronics_covox_stereo_device, "covox_stereo", "Covox (Stereo-in-1)")
static MACHINE_CONFIG_FRAGMENT( covox_stereo )
/* sound hardware */
@@ -89,7 +89,7 @@ MACHINE_CONFIG_END
//-------------------------------------------------
centronics_covox_stereo_device::centronics_covox_stereo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CENTRONICS_COVOX_STEREO, "Covox (Stereo-in-1)", tag, owner, clock, "covox_stereo", __FILE__),
+ : device_t(mconfig, CENTRONICS_COVOX_STEREO, tag, owner, clock),
device_centronics_peripheral_interface( mconfig, *this ),
m_ldac(*this, "ldac"),
m_rdac(*this, "rdac"),
diff --git a/src/devices/bus/centronics/covox.h b/src/devices/bus/centronics/covox.h
index 48036c05487..969065c117a 100644
--- a/src/devices/bus/centronics/covox.h
+++ b/src/devices/bus/centronics/covox.h
@@ -6,8 +6,8 @@
***************************************************************************/
-#ifndef __CENTRONICS_COVOX_H__
-#define __CENTRONICS_COVOX_H__
+#ifndef MAME_BUS_CENTRONICS_COVOX_H
+#define MAME_BUS_CENTRONICS_COVOX_H
#pragma once
@@ -48,7 +48,7 @@ private:
};
// device type definition
-extern const device_type CENTRONICS_COVOX;
+DECLARE_DEVICE_TYPE(CENTRONICS_COVOX, centronics_covox_device)
// ======================> centronics_covox_stereo_device
@@ -89,6 +89,6 @@ private:
};
// device type definition
-extern const device_type CENTRONICS_COVOX_STEREO;
+DECLARE_DEVICE_TYPE(CENTRONICS_COVOX_STEREO, centronics_covox_stereo_device)
-#endif /* __CENTRONICS_COVOX_H__ */
+#endif // MAME_BUS_CENTRONICS_COVOX_H
diff --git a/src/devices/bus/centronics/ctronics.cpp b/src/devices/bus/centronics/ctronics.cpp
index fd66f57d3ac..6c99dcf0786 100644
--- a/src/devices/bus/centronics/ctronics.cpp
+++ b/src/devices/bus/centronics/ctronics.cpp
@@ -11,10 +11,10 @@
// class centronics_device
-const device_type CENTRONICS = device_creator<centronics_device>;
+DEFINE_DEVICE_TYPE(CENTRONICS, centronics_device, "centronics", "Centronics")
centronics_device::centronics_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CENTRONICS, "Centronics", tag, owner, clock, "centronics", __FILE__),
+ : device_t(mconfig, CENTRONICS, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_strobe_handler(*this),
m_data0_handler(*this),
diff --git a/src/devices/bus/centronics/ctronics.h b/src/devices/bus/centronics/ctronics.h
index 514028f2c6e..62c1cf5a94e 100644
--- a/src/devices/bus/centronics/ctronics.h
+++ b/src/devices/bus/centronics/ctronics.h
@@ -5,12 +5,11 @@
Centronics printer interface
***************************************************************************/
+#ifndef MAME_BUS_CENTRONICS_CTRONICS_H
+#define MAME_BUS_CENTRONICS_CTRONICS_H
#pragma once
-#ifndef __CTRONICS_H__
-#define __CTRONICS_H__
-
#include "machine/buffer.h"
#include "machine/latch.h"
@@ -91,7 +90,7 @@
MCFG_CENTRONICS_DATA6_HANDLER(DEVWRITELINE(_tag, input_buffer_device, write_bit6)) \
MCFG_CENTRONICS_DATA7_HANDLER(DEVWRITELINE(_tag, input_buffer_device, write_bit7))
-extern const device_type CENTRONICS;
+DECLARE_DEVICE_TYPE(CENTRONICS, centronics_device)
class device_centronics_peripheral_interface;
@@ -103,23 +102,23 @@ class centronics_device : public device_t,
public:
centronics_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_strobe_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_strobe_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data0_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_data0_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data1_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_data1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data2_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_data2_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data3_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_data3_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data4_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_data4_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data5_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_data5_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data6_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_data6_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data7_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_data7_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ack_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_ack_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_busy_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_busy_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_perror_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_perror_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_select_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_select_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_autofd_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_autofd_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_fault_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_fault_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_init_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_init_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_select_in_handler(device_t &device, _Object object) { return downcast<centronics_device &>(device).m_select_in_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_strobe_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_strobe_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data0_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data1_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data2_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data3_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data3_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data4_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data5_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data5_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data6_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data6_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data7_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_data7_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ack_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_ack_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_busy_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_busy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_perror_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_perror_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_select_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_select_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_autofd_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_autofd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_fault_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_fault_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_init_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_init_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_select_in_handler(device_t &device, Object &&cb) { return downcast<centronics_device &>(device).m_select_in_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_strobe );
DECLARE_WRITE_LINE_MEMBER( write_data0 );
@@ -172,7 +171,6 @@ class device_centronics_peripheral_interface : public device_slot_card_interface
friend class centronics_device;
public:
- device_centronics_peripheral_interface(const machine_config &mconfig, device_t &device);
virtual ~device_centronics_peripheral_interface();
DECLARE_WRITE_LINE_MEMBER( output_strobe ) { m_slot->m_strobe_handler(state); }
@@ -194,23 +192,25 @@ public:
DECLARE_WRITE_LINE_MEMBER( output_select_in ) { m_slot->m_select_in_handler(state); }
protected:
- virtual DECLARE_WRITE_LINE_MEMBER( input_strobe ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data0 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data1 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data2 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data3 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data4 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data5 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data6 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data7 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_ack ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_busy ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_perror ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_select ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_autofd ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_fault ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_init ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_select_in ) {}
+ device_centronics_peripheral_interface(const machine_config &mconfig, device_t &device);
+
+ virtual DECLARE_WRITE_LINE_MEMBER( input_strobe ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data0 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data1 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data2 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data3 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data4 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data5 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data6 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data7 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_ack ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_busy ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_perror ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_select ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_autofd ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_fault ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_init ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_select_in ) { }
centronics_device *m_slot;
};
@@ -218,4 +218,4 @@ protected:
SLOT_INTERFACE_EXTERN( centronics_devices );
-#endif
+#endif // MAME_BUS_CENTRONICS_CTRONICS_H
diff --git a/src/devices/bus/centronics/digiblst.cpp b/src/devices/bus/centronics/digiblst.cpp
index 006fbb5068b..8afbe731960 100644
--- a/src/devices/bus/centronics/digiblst.cpp
+++ b/src/devices/bus/centronics/digiblst.cpp
@@ -16,7 +16,7 @@
//**************************************************************************
// device type definition
-const device_type CENTRONICS_DIGIBLASTER = device_creator<centronics_digiblaster_device>;
+DEFINE_DEVICE_TYPE(CENTRONICS_DIGIBLASTER, centronics_digiblaster_device, "digiblst", "Digiblaster (DIY)")
static MACHINE_CONFIG_FRAGMENT( digiblst )
/* sound hardware */
@@ -35,7 +35,7 @@ MACHINE_CONFIG_END
//-------------------------------------------------
centronics_digiblaster_device::centronics_digiblaster_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CENTRONICS_DIGIBLASTER, "Digiblaster (DIY)", tag, owner, clock, "digiblst", __FILE__),
+ : device_t(mconfig, CENTRONICS_DIGIBLASTER, tag, owner, clock),
device_centronics_peripheral_interface( mconfig, *this ),
m_dac(*this, "dac"),
m_data(0)
diff --git a/src/devices/bus/centronics/digiblst.h b/src/devices/bus/centronics/digiblst.h
index 4b5924b9f55..4521b8a2a6b 100644
--- a/src/devices/bus/centronics/digiblst.h
+++ b/src/devices/bus/centronics/digiblst.h
@@ -12,8 +12,8 @@
* Created on: 23/08/2014
*/
-#ifndef DIGIBLST_H_
-#define DIGIBLST_H_
+#ifndef MAME_BUS_CENTRONICS_DIGIBLST_H
+#define MAME_BUS_CENTRONICS_DIGIBLST_H
#pragma once
@@ -54,7 +54,7 @@ private:
};
// device type definition
-extern const device_type CENTRONICS_DIGIBLASTER;
+DECLARE_DEVICE_TYPE(CENTRONICS_DIGIBLASTER, centronics_digiblaster_device)
-#endif /* DIGIBLST_H_ */
+#endif // MAME_BUS_CENTRONICS_DIGIBLST_H
diff --git a/src/devices/bus/centronics/dsjoy.cpp b/src/devices/bus/centronics/dsjoy.cpp
index 7d1fa9dee78..a9209c264f8 100644
--- a/src/devices/bus/centronics/dsjoy.cpp
+++ b/src/devices/bus/centronics/dsjoy.cpp
@@ -4,10 +4,10 @@
#include "emu.h"
#include "dsjoy.h"
-const device_type DEMPA_SHINBUNSHA_JOYSTICK = device_creator<dempa_shinbunsha_joystick_device>;
+DEFINE_DEVICE_TYPE(DEMPA_SHINBUNSHA_JOYSTICK, dempa_shinbunsha_joystick_device, "dempa_shinbunsha_joystick", "Dempa Shinbunsha Joystick")
dempa_shinbunsha_joystick_device::dempa_shinbunsha_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, DEMPA_SHINBUNSHA_JOYSTICK, "Dempa Shinbunsha Joystick", tag, owner, clock, "dempa_shinbunsha_joystick", __FILE__),
+ device_t(mconfig, DEMPA_SHINBUNSHA_JOYSTICK, tag, owner, clock),
device_centronics_peripheral_interface( mconfig, *this ),
m_lptjoy(*this, "lptjoy"),
m_data(0xff),
diff --git a/src/devices/bus/centronics/dsjoy.h b/src/devices/bus/centronics/dsjoy.h
index 5db48e615fb..bcb91afceed 100644
--- a/src/devices/bus/centronics/dsjoy.h
+++ b/src/devices/bus/centronics/dsjoy.h
@@ -6,8 +6,8 @@
***************************************************************************/
-#ifndef __CENTRONICS_DSJOY_H__
-#define __CENTRONICS_DSJOY_H__
+#ifndef MAME_BUS_CENTRONICS_DSJOY_H
+#define MAME_BUS_CENTRONICS_DSJOY_H
#pragma once
@@ -42,6 +42,6 @@ private:
};
// device type definition
-extern const device_type DEMPA_SHINBUNSHA_JOYSTICK;
+DECLARE_DEVICE_TYPE(DEMPA_SHINBUNSHA_JOYSTICK, dempa_shinbunsha_joystick_device)
-#endif
+#endif // MAME_BUS_CENTRONICS_DSJOY_H
diff --git a/src/devices/bus/centronics/epson_ex800.cpp b/src/devices/bus/centronics/epson_ex800.cpp
index 6c42844ca79..83c95a59214 100644
--- a/src/devices/bus/centronics/epson_ex800.cpp
+++ b/src/devices/bus/centronics/epson_ex800.cpp
@@ -171,7 +171,7 @@ TODO: - The UPD7810 core is missing analog port emulation
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type EPSON_EX800 = device_creator<epson_ex800_t>;
+DEFINE_DEVICE_TYPE(EPSON_EX800, epson_ex800_device, "ex800", "Epson EX-800")
//-------------------------------------------------
@@ -188,7 +188,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *epson_ex800_t::device_rom_region() const
+const tiny_rom_entry *epson_ex800_device::device_rom_region() const
{
return ROM_NAME( ex800 );
}
@@ -198,7 +198,7 @@ const tiny_rom_entry *epson_ex800_t::device_rom_region() const
// ADDRESS_MAP( ex800_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( ex800_mem, AS_PROGRAM, 8, epson_ex800_t )
+static ADDRESS_MAP_START( ex800_mem, AS_PROGRAM, 8, epson_ex800_device )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
AM_RANGE(0x8000, 0xbfff) AM_RAM /* external RAM */
AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_READWRITE(devsel_r, devsel_w)
@@ -219,12 +219,12 @@ static MACHINE_CONFIG_FRAGMENT( epson_ex800 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", UPD7810, 12000000) /* 12 MHz? */
MCFG_CPU_PROGRAM_MAP(ex800_mem)
- MCFG_UPD7810_PORTA_READ_CB(READ8(epson_ex800_t, porta_r))
- MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(epson_ex800_t, porta_w))
- MCFG_UPD7810_PORTB_READ_CB(READ8(epson_ex800_t, portb_r))
- MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(epson_ex800_t, portb_w))
- MCFG_UPD7810_PORTC_READ_CB(READ8(epson_ex800_t, portc_r))
- MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(epson_ex800_t, portc_w))
+ MCFG_UPD7810_PORTA_READ_CB(READ8(epson_ex800_device, porta_r))
+ MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(epson_ex800_device, porta_w))
+ MCFG_UPD7810_PORTB_READ_CB(READ8(epson_ex800_device, portb_r))
+ MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(epson_ex800_device, portb_w))
+ MCFG_UPD7810_PORTC_READ_CB(READ8(epson_ex800_device, portc_r))
+ MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(epson_ex800_device, portc_w))
MCFG_DEFAULT_LAYOUT(layout_ex800)
@@ -240,14 +240,14 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor epson_ex800_t::device_mconfig_additions() const
+machine_config_constructor epson_ex800_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( epson_ex800 );
}
/* The ON LINE switch is directly connected to the INT1 input of the CPU */
-INPUT_CHANGED_MEMBER(epson_ex800_t::online_switch)
+INPUT_CHANGED_MEMBER(epson_ex800_device::online_switch)
{
if (newval)
{
@@ -264,7 +264,7 @@ INPUT_CHANGED_MEMBER(epson_ex800_t::online_switch)
INPUT_PORTS_START( epson_ex800 )
PORT_START("ONLISW")
PORT_BIT(0xfe, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ON LINE") PORT_CODE(KEYCODE_F9) PORT_CHANGED_MEMBER(DEVICE_SELF, epson_ex800_t, online_switch, nullptr)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ON LINE") PORT_CODE(KEYCODE_F9) PORT_CHANGED_MEMBER(DEVICE_SELF, epson_ex800_device, online_switch, nullptr)
PORT_START("FEED")
PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_UNUSED)
@@ -337,7 +337,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor epson_ex800_t::device_input_ports() const
+ioport_constructor epson_ex800_device::device_input_ports() const
{
return INPUT_PORTS_NAME( epson_ex800 );
}
@@ -349,11 +349,11 @@ ioport_constructor epson_ex800_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// epson_ex800_t - constructor
+// epson_ex800_device - constructor
//-------------------------------------------------
-epson_ex800_t::epson_ex800_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EPSON_EX800, "Epson EX-800", tag, owner, clock, "ex800", __FILE__),
+epson_ex800_device::epson_ex800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, EPSON_EX800, tag, owner, clock),
device_centronics_peripheral_interface(mconfig, *this),
m_maincpu(*this, "maincpu"),
m_beeper(*this, "beeper"), m_irq_state(0)
@@ -365,7 +365,7 @@ epson_ex800_t::epson_ex800_t(const machine_config &mconfig, const char *tag, dev
// device_start - device-specific startup
//-------------------------------------------------
-void epson_ex800_t::device_start()
+void epson_ex800_device::device_start()
{
m_irq_state = ASSERT_LINE;
}
@@ -375,32 +375,32 @@ void epson_ex800_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void epson_ex800_t::device_reset()
+void epson_ex800_device::device_reset()
{
/* Setup beep */
m_beeper->set_state(0);
}
-READ8_MEMBER(epson_ex800_t::porta_r)
+READ8_MEMBER(epson_ex800_device::porta_r)
{
logerror("PA R @%x\n", space.device().safe_pc());
return machine().rand();
}
-READ8_MEMBER(epson_ex800_t::portb_r)
+READ8_MEMBER(epson_ex800_device::portb_r)
{
logerror("PB R @%x\n", space.device().safe_pc());
return machine().rand();
}
-READ8_MEMBER(epson_ex800_t::portc_r)
+READ8_MEMBER(epson_ex800_device::portc_r)
{
logerror("PC R @%x\n", space.device().safe_pc());
return machine().rand();
}
-WRITE8_MEMBER(epson_ex800_t::porta_w)
+WRITE8_MEMBER(epson_ex800_device::porta_w)
{
if (PA6) logerror("BNK0 selected.\n");
if (PA7) logerror("BNK1 selected.\n");
@@ -408,7 +408,7 @@ WRITE8_MEMBER(epson_ex800_t::porta_w)
logerror("PA W %x @%x\n", data, space.device().safe_pc());
}
-WRITE8_MEMBER(epson_ex800_t::portb_w)
+WRITE8_MEMBER(epson_ex800_device::portb_w)
{
if (data & 3)
logerror("PB0/1 Line feed @%x\n", space.device().safe_pc());
@@ -432,7 +432,7 @@ WRITE8_MEMBER(epson_ex800_t::portb_w)
// logerror("PB W %x @%x\n", data, space.device().safe_pc());
}
-WRITE8_MEMBER(epson_ex800_t::portc_w)
+WRITE8_MEMBER(epson_ex800_device::portc_w)
{
if (data & 0x80)
m_beeper->set_state(0);
@@ -445,46 +445,46 @@ WRITE8_MEMBER(epson_ex800_t::portc_w)
/* Memory mapped I/O access */
-READ8_MEMBER(epson_ex800_t::devsel_r)
+READ8_MEMBER(epson_ex800_device::devsel_r)
{
logerror("DEVSEL R @%x with offset %x\n", space.device().safe_pc(), offset);
return machine().rand();
}
-WRITE8_MEMBER(epson_ex800_t::devsel_w)
+WRITE8_MEMBER(epson_ex800_device::devsel_w)
{
logerror("DEVSEL W %x @%x with offset %x\n", data, space.device().safe_pc(), offset);
}
-READ8_MEMBER(epson_ex800_t::gate5a_r)
+READ8_MEMBER(epson_ex800_device::gate5a_r)
{
logerror("GATE5A R @%x with offset %x\n", space.device().safe_pc(), offset);
return machine().rand();
}
-WRITE8_MEMBER(epson_ex800_t::gate5a_w)
+WRITE8_MEMBER(epson_ex800_device::gate5a_w)
{
logerror("GATE5A W %x @%x with offset %x\n", data, space.device().safe_pc(), offset);
}
-READ8_MEMBER(epson_ex800_t::iosel_r)
+READ8_MEMBER(epson_ex800_device::iosel_r)
{
logerror("IOSEL R @%x with offset %x\n", space.device().safe_pc(), offset);
return machine().rand();
}
-WRITE8_MEMBER(epson_ex800_t::iosel_w)
+WRITE8_MEMBER(epson_ex800_device::iosel_w)
{
logerror("IOSEL W %x @%x with offset %x\n", data, space.device().safe_pc(), offset);
}
-READ8_MEMBER(epson_ex800_t::gate7a_r)
+READ8_MEMBER(epson_ex800_device::gate7a_r)
{
logerror("GATE7A R @%x with offset %x\n", space.device().safe_pc(), offset);
return machine().rand();
}
-WRITE8_MEMBER(epson_ex800_t::gate7a_w)
+WRITE8_MEMBER(epson_ex800_device::gate7a_w)
{
logerror("GATE7A W %x @%x with offset %x\n", data, space.device().safe_pc(), offset);
}
diff --git a/src/devices/bus/centronics/epson_ex800.h b/src/devices/bus/centronics/epson_ex800.h
index 133bdb39897..453670750d5 100644
--- a/src/devices/bus/centronics/epson_ex800.h
+++ b/src/devices/bus/centronics/epson_ex800.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CENTRONICS_EPSON_EX800_H
+#define MAME_BUS_CENTRONICS_EPSON_EX800_H
-#ifndef __EPSON_EX800__
-#define __EPSON_EX800__
+#pragma once
#include "ctronics.h"
#include "cpu/upd7810/upd7810.h"
@@ -21,14 +21,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> epson_ex800_t
+// ======================> epson_ex800_device
-class epson_ex800_t : public device_t,
+class epson_ex800_device : public device_t,
public device_centronics_peripheral_interface
{
public:
// construction/destruction
- epson_ex800_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ epson_ex800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -67,8 +67,8 @@ private:
// device type definition
-extern const device_type EPSON_EX800;
+DECLARE_DEVICE_TYPE(EPSON_EX800, epson_ex800_device)
-#endif
+#endif // MAME_BUS_CENTRONICS_EPSON_EX800_H
diff --git a/src/devices/bus/centronics/epson_lx800.cpp b/src/devices/bus/centronics/epson_lx800.cpp
index 7870d3c72da..38be060268e 100644
--- a/src/devices/bus/centronics/epson_lx800.cpp
+++ b/src/devices/bus/centronics/epson_lx800.cpp
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type EPSON_LX800 = device_creator<epson_lx800_t>;
+DEFINE_DEVICE_TYPE(EPSON_LX800, epson_lx800_device, "lx800", "Epson LX-800")
//-------------------------------------------------
@@ -42,7 +42,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *epson_lx800_t::device_rom_region() const
+const tiny_rom_entry *epson_lx800_device::device_rom_region() const
{
return ROM_NAME( lx800 );
}
@@ -52,7 +52,7 @@ const tiny_rom_entry *epson_lx800_t::device_rom_region() const
// ADDRESS_MAP( lx800_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( lx800_mem, AS_PROGRAM, 8, epson_lx800_t )
+static ADDRESS_MAP_START( lx800_mem, AS_PROGRAM, 8, epson_lx800_device )
AM_RANGE(0x0000, 0x7fff) AM_ROM /* 32k firmware */
AM_RANGE(0x8000, 0x9fff) AM_RAM /* 8k external RAM */
AM_RANGE(0xa000, 0xbfff) AM_NOP /* not used */
@@ -70,17 +70,17 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx800 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", UPD7810, XTAL_14_7456MHz)
MCFG_CPU_PROGRAM_MAP(lx800_mem)
- MCFG_UPD7810_PORTA_READ_CB(READ8(epson_lx800_t, porta_r))
- MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(epson_lx800_t, porta_w))
+ MCFG_UPD7810_PORTA_READ_CB(READ8(epson_lx800_device, porta_r))
+ MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(epson_lx800_device, porta_w))
MCFG_UPD7810_PORTB_READ_CB(IOPORT("DIPSW1"))
- MCFG_UPD7810_PORTC_READ_CB(READ8(epson_lx800_t, portc_r))
- MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(epson_lx800_t, portc_w))
- MCFG_UPD7810_AN0(READLINE(epson_lx800_t, an0_r))
- MCFG_UPD7810_AN1(READLINE(epson_lx800_t, an1_r))
- MCFG_UPD7810_AN2(READLINE(epson_lx800_t, an2_r))
- MCFG_UPD7810_AN3(READLINE(epson_lx800_t, an3_r))
- MCFG_UPD7810_AN4(READLINE(epson_lx800_t, an4_r))
- MCFG_UPD7810_AN5(READLINE(epson_lx800_t, an5_r))
+ MCFG_UPD7810_PORTC_READ_CB(READ8(epson_lx800_device, portc_r))
+ MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(epson_lx800_device, portc_w))
+ MCFG_UPD7810_AN0(READLINE(epson_lx800_device, an0_r))
+ MCFG_UPD7810_AN1(READLINE(epson_lx800_device, an1_r))
+ MCFG_UPD7810_AN2(READLINE(epson_lx800_device, an2_r))
+ MCFG_UPD7810_AN3(READLINE(epson_lx800_device, an3_r))
+ MCFG_UPD7810_AN4(READLINE(epson_lx800_device, an4_r))
+ MCFG_UPD7810_AN5(READLINE(epson_lx800_device, an5_r))
MCFG_DEFAULT_LAYOUT(layout_lx800)
@@ -91,10 +91,10 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx800 )
/* gate array */
MCFG_DEVICE_ADD("ic3b", E05A03, 0)
- MCFG_E05A03_PE_LP_CALLBACK(WRITELINE(epson_lx800_t, paperempty_led_w))
- MCFG_E05A03_RESO_CALLBACK(WRITELINE(epson_lx800_t, reset_w))
- MCFG_E05A03_PE_CALLBACK(WRITELINE(epson_lx800_t, centronics_pe_w))
- MCFG_E05A03_DATA_CALLBACK(READ8(epson_lx800_t, centronics_data_r))
+ MCFG_E05A03_PE_LP_CALLBACK(WRITELINE(epson_lx800_device, paperempty_led_w))
+ MCFG_E05A03_RESO_CALLBACK(WRITELINE(epson_lx800_device, reset_w))
+ MCFG_E05A03_PE_CALLBACK(WRITELINE(epson_lx800_device, centronics_pe_w))
+ MCFG_E05A03_DATA_CALLBACK(READ8(epson_lx800_device, centronics_data_r))
MACHINE_CONFIG_END
@@ -103,7 +103,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor epson_lx800_t::device_mconfig_additions() const
+machine_config_constructor epson_lx800_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( epson_lx800 );
}
@@ -179,7 +179,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor epson_lx800_t::device_input_ports() const
+ioport_constructor epson_lx800_device::device_input_ports() const
{
return INPUT_PORTS_NAME( epson_lx800 );
}
@@ -191,19 +191,19 @@ ioport_constructor epson_lx800_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// epson_lx800_t - constructor
+// epson_lx800_device - constructor
//-------------------------------------------------
-epson_lx800_t::epson_lx800_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EPSON_LX800, "Epson LX-800", tag, owner, clock, "lx800", __FILE__),
+epson_lx800_device::epson_lx800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, EPSON_LX800, tag, owner, clock),
device_centronics_peripheral_interface(mconfig, *this),
m_maincpu(*this, "maincpu"),
m_beep(*this, "beeper")
{
}
-epson_lx800_t::epson_lx800_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+epson_lx800_device::epson_lx800_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_centronics_peripheral_interface(mconfig, *this),
m_maincpu(*this, "maincpu"),
m_beep(*this, "beeper")
@@ -215,7 +215,7 @@ epson_lx800_t::epson_lx800_t(const machine_config &mconfig, device_type type, co
// device_start - device-specific startup
//-------------------------------------------------
-void epson_lx800_t::device_start()
+void epson_lx800_device::device_start()
{
}
@@ -224,7 +224,7 @@ void epson_lx800_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void epson_lx800_t::device_reset()
+void epson_lx800_device::device_reset()
{
m_beep->set_state(0);
}
@@ -243,7 +243,7 @@ void epson_lx800_t::device_reset()
* PA6 not used
* PA7 R P/S P/S signal from the optional interface
*/
-READ8_MEMBER( epson_lx800_t::porta_r )
+READ8_MEMBER( epson_lx800_device::porta_r )
{
uint8_t result = 0;
@@ -258,7 +258,7 @@ READ8_MEMBER( epson_lx800_t::porta_r )
return result;
}
-WRITE8_MEMBER( epson_lx800_t::porta_w )
+WRITE8_MEMBER( epson_lx800_device::porta_w )
{
logerror("%s: lx800_porta_w(%02x): %02x\n", machine().describe_context(), offset, data);
logerror("--> carriage: %d, paper feed: %d\n", BIT(data, 0), BIT(data, 2));
@@ -273,7 +273,7 @@ WRITE8_MEMBER( epson_lx800_t::porta_w )
* PC6 W FIRE drive pulse width signal
* PC7 W BUZZER buzzer signal
*/
-READ8_MEMBER( epson_lx800_t::portc_r )
+READ8_MEMBER( epson_lx800_device::portc_r )
{
uint8_t result = 0;
@@ -284,7 +284,7 @@ READ8_MEMBER( epson_lx800_t::portc_r )
return result;
}
-WRITE8_MEMBER( epson_lx800_t::portc_w )
+WRITE8_MEMBER( epson_lx800_device::portc_w )
{
logerror("%s: lx800_portc_w(%02x): %02x\n", machine().describe_context(), offset, data);
logerror("--> err: %d, ack: %d, fire: %d, buzzer: %d\n", BIT(data, 4), BIT(data, 5), BIT(data, 6), BIT(data, 7));
@@ -293,32 +293,32 @@ WRITE8_MEMBER( epson_lx800_t::portc_w )
m_beep->set_state(!BIT(data, 7));
}
-READ_LINE_MEMBER( epson_lx800_t::an0_r )
+READ_LINE_MEMBER( epson_lx800_device::an0_r )
{
return BIT(ioport("DIPSW2")->read(), 0);
}
-READ_LINE_MEMBER( epson_lx800_t::an1_r )
+READ_LINE_MEMBER( epson_lx800_device::an1_r )
{
return BIT(ioport("DIPSW2")->read(), 1);
}
-READ_LINE_MEMBER( epson_lx800_t::an2_r )
+READ_LINE_MEMBER( epson_lx800_device::an2_r )
{
return BIT(ioport("DIPSW2")->read(), 2);
}
-READ_LINE_MEMBER( epson_lx800_t::an3_r )
+READ_LINE_MEMBER( epson_lx800_device::an3_r )
{
return BIT(ioport("DIPSW2")->read(), 3); // can also read an external line AUTO_FEED_XT
}
-READ_LINE_MEMBER( epson_lx800_t::an4_r )
+READ_LINE_MEMBER( epson_lx800_device::an4_r )
{
return 0; // Printer select line (0=always selected)
}
-READ_LINE_MEMBER( epson_lx800_t::an5_r )
+READ_LINE_MEMBER( epson_lx800_device::an5_r )
{
return 1; // Monitors 24v line, should return 4.08 volts
}
@@ -328,24 +328,24 @@ READ_LINE_MEMBER( epson_lx800_t::an5_r )
GATE ARRAY
***************************************************************************/
-READ8_MEMBER( epson_lx800_t::centronics_data_r )
+READ8_MEMBER( epson_lx800_device::centronics_data_r )
{
logerror("centronics: data read\n");
return 0x55;
}
-WRITE_LINE_MEMBER( epson_lx800_t::centronics_pe_w )
+WRITE_LINE_MEMBER( epson_lx800_device::centronics_pe_w )
{
logerror("centronics: pe = %d\n", state);
}
-WRITE_LINE_MEMBER( epson_lx800_t::paperempty_led_w )
+WRITE_LINE_MEMBER( epson_lx800_device::paperempty_led_w )
{
logerror("setting paperout led: %d\n", state);
machine().output().set_value("paperout_led", state);
}
-WRITE_LINE_MEMBER( epson_lx800_t::reset_w )
+WRITE_LINE_MEMBER( epson_lx800_device::reset_w )
{
logerror("cpu reset");
m_maincpu->reset();
diff --git a/src/devices/bus/centronics/epson_lx800.h b/src/devices/bus/centronics/epson_lx800.h
index 740a9a248d1..2cf67beb9eb 100644
--- a/src/devices/bus/centronics/epson_lx800.h
+++ b/src/devices/bus/centronics/epson_lx800.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CENTRONICS_EPSON_LX800_H
+#define MAME_BUS_CENTRONICS_EPSON_LX800_H
-#ifndef __EPSON_LX800__
-#define __EPSON_LX800__
+#pragma once
#include "ctronics.h"
#include "cpu/upd7810/upd7810.h"
@@ -22,15 +22,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> epson_lx800_t
+// ======================> epson_lx800_device
-class epson_lx800_t : public device_t,
+class epson_lx800_device : public device_t,
public device_centronics_peripheral_interface
{
public:
// construction/destruction
- epson_lx800_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- epson_lx800_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ epson_lx800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -53,6 +52,8 @@ public:
DECLARE_READ_LINE_MEMBER(an5_r);
protected:
+ epson_lx800_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -65,8 +66,8 @@ private:
// device type definition
-extern const device_type EPSON_LX800;
+DECLARE_DEVICE_TYPE(EPSON_LX800, epson_lx800_device)
-#endif
+#endif // MAME_BUS_CENTRONICS_EPSON_LX800_H
diff --git a/src/devices/bus/centronics/epson_lx810l.cpp b/src/devices/bus/centronics/epson_lx810l.cpp
index 1d288e41bff..b87609e685a 100644
--- a/src/devices/bus/centronics/epson_lx810l.cpp
+++ b/src/devices/bus/centronics/epson_lx810l.cpp
@@ -43,8 +43,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type EPSON_LX810L = device_creator<epson_lx810l_t>;
-const device_type EPSON_AP2000 = device_creator<epson_ap2000_t>;
+DEFINE_DEVICE_TYPE(EPSON_LX810L, epson_lx810l_device, "lx810l", "Espon LX-810L")
+DEFINE_DEVICE_TYPE(EPSON_AP2000, epson_ap2000_device, "ap2000", "Epson ActionPrinter 2000")
//-------------------------------------------------
@@ -75,7 +75,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *epson_lx810l_t::device_rom_region() const
+const tiny_rom_entry *epson_lx810l_device::device_rom_region() const
{
return ROM_NAME( lx810l );
}
@@ -85,7 +85,7 @@ const tiny_rom_entry *epson_lx810l_t::device_rom_region() const
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *epson_ap2000_t::device_rom_region() const
+const tiny_rom_entry *epson_ap2000_device::device_rom_region() const
{
return ROM_NAME( ap2000 );
}
@@ -95,7 +95,7 @@ const tiny_rom_entry *epson_ap2000_t::device_rom_region() const
// ADDRESS_MAP( lx810l_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( lx810l_mem, AS_PROGRAM, 8, epson_lx810l_t )
+static ADDRESS_MAP_START( lx810l_mem, AS_PROGRAM, 8, epson_lx810l_device )
AM_RANGE(0x0000, 0x7fff) AM_ROM /* 32k firmware */
AM_RANGE(0x8000, 0x9fff) AM_RAM /* 8k external RAM */
AM_RANGE(0xa000, 0xbfff) AM_READWRITE(fakemem_r, fakemem_w) /* fake memory, write one, set all */
@@ -113,21 +113,21 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx810l )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", UPD7810, XTAL_14_7456MHz)
MCFG_CPU_PROGRAM_MAP(lx810l_mem)
- MCFG_UPD7810_PORTA_READ_CB(READ8(epson_lx810l_t, porta_r))
- MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(epson_lx810l_t, porta_w))
- MCFG_UPD7810_PORTB_READ_CB(READ8(epson_lx810l_t, portb_r))
- MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(epson_lx810l_t, portb_w))
- MCFG_UPD7810_PORTC_READ_CB(READ8(epson_lx810l_t, portc_r))
- MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(epson_lx810l_t, portc_w))
- MCFG_UPD7810_AN0(READ8(epson_lx810l_t, an0_r))
- MCFG_UPD7810_AN1(READ8(epson_lx810l_t, an1_r))
- MCFG_UPD7810_AN2(READ8(epson_lx810l_t, an2_r))
- MCFG_UPD7810_AN3(READ8(epson_lx810l_t, an3_r))
- MCFG_UPD7810_AN4(READ8(epson_lx810l_t, an4_r))
- MCFG_UPD7810_AN5(READ8(epson_lx810l_t, an5_r))
- MCFG_UPD7810_AN6(READ8(epson_lx810l_t, an6_r))
- MCFG_UPD7810_AN7(READ8(epson_lx810l_t, an7_r))
- MCFG_UPD7810_CO0(WRITELINE(epson_lx810l_t, co0_w))
+ MCFG_UPD7810_PORTA_READ_CB(READ8(epson_lx810l_device, porta_r))
+ MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(epson_lx810l_device, porta_w))
+ MCFG_UPD7810_PORTB_READ_CB(READ8(epson_lx810l_device, portb_r))
+ MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(epson_lx810l_device, portb_w))
+ MCFG_UPD7810_PORTC_READ_CB(READ8(epson_lx810l_device, portc_r))
+ MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(epson_lx810l_device, portc_w))
+ MCFG_UPD7810_AN0(READ8(epson_lx810l_device, an0_r))
+ MCFG_UPD7810_AN1(READ8(epson_lx810l_device, an1_r))
+ MCFG_UPD7810_AN2(READ8(epson_lx810l_device, an2_r))
+ MCFG_UPD7810_AN3(READ8(epson_lx810l_device, an3_r))
+ MCFG_UPD7810_AN4(READ8(epson_lx810l_device, an4_r))
+ MCFG_UPD7810_AN5(READ8(epson_lx810l_device, an5_r))
+ MCFG_UPD7810_AN6(READ8(epson_lx810l_device, an6_r))
+ MCFG_UPD7810_AN7(READ8(epson_lx810l_device, an7_r))
+ MCFG_UPD7810_CO0(WRITELINE(epson_lx810l_device, co0_w))
MCFG_UPD7810_CO1(DEVWRITELINE("dac", dac_bit_interface, write))
// MCFG_DEFAULT_LAYOUT(layout_lx800)
@@ -138,7 +138,7 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx810l )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(PAPER_WIDTH, PAPER_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0, PAPER_WIDTH-1, 0, PAPER_HEIGHT-1)
- MCFG_SCREEN_UPDATE_DRIVER(epson_lx810l_t, screen_update_lx810l)
+ MCFG_SCREEN_UPDATE_DRIVER(epson_lx810l_device, screen_update_lx810l)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("speaker")
@@ -148,15 +148,15 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx810l )
/* gate array */
MCFG_DEVICE_ADD("e05a30", E05A30, 0)
- MCFG_E05A30_PRINTHEAD_CALLBACK(WRITE16(epson_lx810l_t, printhead))
- MCFG_E05A30_PF_STEPPER_CALLBACK(WRITE8(epson_lx810l_t, pf_stepper))
- MCFG_E05A30_CR_STEPPER_CALLBACK(WRITE8(epson_lx810l_t, cr_stepper))
- MCFG_E05A30_READY_CALLBACK(WRITELINE(epson_lx810l_t, e05a30_ready))
- MCFG_E05A30_CENTRONICS_ACK_CALLBACK(WRITELINE(epson_lx810l_t, e05a30_centronics_ack))
- MCFG_E05A30_CENTRONICS_BUSY_CALLBACK(WRITELINE(epson_lx810l_t, e05a30_centronics_busy))
- MCFG_E05A30_CENTRONICS_PERROR_CALLBACK(WRITELINE(epson_lx810l_t, e05a30_centronics_perror))
- MCFG_E05A30_CENTRONICS_FAULT_CALLBACK(WRITELINE(epson_lx810l_t, e05a30_centronics_fault))
- MCFG_E05A30_CENTRONICS_SELECT_CALLBACK(WRITELINE(epson_lx810l_t, e05a30_centronics_select))
+ MCFG_E05A30_PRINTHEAD_CALLBACK(WRITE16(epson_lx810l_device, printhead))
+ MCFG_E05A30_PF_STEPPER_CALLBACK(WRITE8(epson_lx810l_device, pf_stepper))
+ MCFG_E05A30_CR_STEPPER_CALLBACK(WRITE8(epson_lx810l_device, cr_stepper))
+ MCFG_E05A30_READY_CALLBACK(WRITELINE(epson_lx810l_device, e05a30_ready))
+ MCFG_E05A30_CENTRONICS_ACK_CALLBACK(WRITELINE(epson_lx810l_device, e05a30_centronics_ack))
+ MCFG_E05A30_CENTRONICS_BUSY_CALLBACK(WRITELINE(epson_lx810l_device, e05a30_centronics_busy))
+ MCFG_E05A30_CENTRONICS_PERROR_CALLBACK(WRITELINE(epson_lx810l_device, e05a30_centronics_perror))
+ MCFG_E05A30_CENTRONICS_FAULT_CALLBACK(WRITELINE(epson_lx810l_device, e05a30_centronics_fault))
+ MCFG_E05A30_CENTRONICS_SELECT_CALLBACK(WRITELINE(epson_lx810l_device, e05a30_centronics_select))
/* 256-bit eeprom */
MCFG_EEPROM_SERIAL_93C06_ADD("eeprom")
@@ -177,7 +177,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor epson_lx810l_t::device_mconfig_additions() const
+machine_config_constructor epson_lx810l_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( epson_lx810l );
}
@@ -191,7 +191,7 @@ static INPUT_PORTS_START( epson_lx810l )
/* Buttons on printer */
PORT_START("ONLINE")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("On Line") PORT_CODE(KEYCODE_O) PORT_CHANGED_MEMBER(DEVICE_SELF, epson_lx810l_t, online_sw, nullptr)
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("On Line") PORT_CODE(KEYCODE_O) PORT_CHANGED_MEMBER(DEVICE_SELF, epson_lx810l_device, online_sw, nullptr)
PORT_START("FORMFEED")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Form Feed") PORT_CODE(KEYCODE_F) PORT_TOGGLE
PORT_START("LINEFEED")
@@ -265,12 +265,12 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor epson_lx810l_t::device_input_ports() const
+ioport_constructor epson_lx810l_device::device_input_ports() const
{
return INPUT_PORTS_NAME( epson_lx810l );
}
-INPUT_CHANGED_MEMBER(epson_lx810l_t::online_sw)
+INPUT_CHANGED_MEMBER(epson_lx810l_device::online_sw)
{
m_maincpu->set_input_line(UPD7810_INTF2, newval ? CLEAR_LINE : ASSERT_LINE);
}
@@ -281,31 +281,16 @@ INPUT_CHANGED_MEMBER(epson_lx810l_t::online_sw)
//**************************************************************************
//-------------------------------------------------
-// epson_lx810l_t - constructor
+// epson_lx810l_device - constructor
//-------------------------------------------------
-epson_lx810l_t::epson_lx810l_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EPSON_LX810L, "Epson LX-810L", tag, owner, clock, "lx810l", __FILE__),
- device_centronics_peripheral_interface(mconfig, *this),
- m_maincpu(*this, "maincpu"),
- m_pf_stepper(*this, "pf_stepper"),
- m_cr_stepper(*this, "cr_stepper"),
- m_eeprom(*this, "eeprom"),
- m_e05a30(*this, "e05a30"),
- m_screen(*this, "screen"),
- m_93c06_clk(0),
- m_93c06_cs(0),
- m_printhead(0),
- m_pf_pos_abs(1),
- m_cr_pos_abs(1),
- m_real_cr_pos(1),
- m_real_cr_steps(0),
- m_real_cr_dir(0), m_fakemem(0)
+epson_lx810l_device::epson_lx810l_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ epson_lx810l_device(mconfig, EPSON_LX810L, tag, owner, clock)
{
}
-epson_lx810l_t::epson_lx810l_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+epson_lx810l_device::epson_lx810l_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_centronics_peripheral_interface(mconfig, *this),
m_maincpu(*this, "maincpu"),
m_pf_stepper(*this, "pf_stepper"),
@@ -324,8 +309,8 @@ epson_lx810l_t::epson_lx810l_t(const machine_config &mconfig, device_type type,
{
}
-epson_ap2000_t::epson_ap2000_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : epson_lx810l_t(mconfig, EPSON_AP2000, "Epson ActionPrinter 2000", tag, owner, clock, "ap2000", __FILE__)
+epson_ap2000_device::epson_ap2000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : epson_lx810l_device(mconfig, EPSON_AP2000, tag, owner, clock)
{ }
@@ -336,7 +321,7 @@ epson_ap2000_t::epson_ap2000_t(const machine_config &mconfig, const char *tag, d
-void epson_lx810l_t::device_start()
+void epson_lx810l_device::device_start()
{
machine().first_screen()->register_screen_bitmap(m_bitmap);
m_bitmap.fill(0xffffff); /* Start with a clean white piece of paper */
@@ -347,7 +332,7 @@ void epson_lx810l_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void epson_lx810l_t::device_reset()
+void epson_lx810l_device::device_reset()
{
}
@@ -356,7 +341,7 @@ void epson_lx810l_t::device_reset()
// device_timer - device-specific timer
//-------------------------------------------------
-void epson_lx810l_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void epson_lx810l_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
switch (id) {
case TIMER_CR:
@@ -379,12 +364,12 @@ void epson_lx810l_t::device_timer(emu_timer &timer, device_timer_id id, int para
FAKEMEM READ/WRITE
***************************************************************************/
-READ8_MEMBER(epson_lx810l_t::fakemem_r)
+READ8_MEMBER(epson_lx810l_device::fakemem_r)
{
return m_fakemem;
}
-WRITE8_MEMBER(epson_lx810l_t::fakemem_w)
+WRITE8_MEMBER(epson_lx810l_device::fakemem_w)
{
m_fakemem = data;
}
@@ -404,7 +389,7 @@ WRITE8_MEMBER(epson_lx810l_t::fakemem_w)
* PA6 R Line Feed SWITCH
* PA7 R Form Feed SWITCH
*/
-READ8_MEMBER( epson_lx810l_t::porta_r )
+READ8_MEMBER( epson_lx810l_device::porta_r )
{
uint8_t result = 0;
uint8_t hp_sensor = m_cr_pos_abs <= 0 ? 0 : 1;
@@ -420,7 +405,7 @@ READ8_MEMBER( epson_lx810l_t::porta_r )
return result;
}
-WRITE8_MEMBER( epson_lx810l_t::porta_w )
+WRITE8_MEMBER( epson_lx810l_device::porta_w )
{
LX810LLOG("%s: lx810l_PA_w(%02x): %02x: stepper vref %d\n", machine().describe_context(), offset, data, BIT(data, 3) | (BIT(data, 4)<<1) | (BIT(data, 5)<<2));
}
@@ -435,7 +420,7 @@ WRITE8_MEMBER( epson_lx810l_t::porta_w )
* PB6 R DIP1.6
* PB7 R DIP1.7
*/
-READ8_MEMBER( epson_lx810l_t::portb_r )
+READ8_MEMBER( epson_lx810l_device::portb_r )
{
uint8_t result = ~ioport("DIPSW1")->read();
@@ -451,7 +436,7 @@ READ8_MEMBER( epson_lx810l_t::portb_r )
return result;
}
-WRITE8_MEMBER( epson_lx810l_t::portb_w )
+WRITE8_MEMBER( epson_lx810l_device::portb_w )
{
uint8_t data_in = BIT(data, 1);
@@ -472,7 +457,7 @@ WRITE8_MEMBER( epson_lx810l_t::portb_w )
* PC6 W FIRE drive pulse width signal, also E05A30.57
* PC7 W BUZZER buzzer signal
*/
-READ8_MEMBER( epson_lx810l_t::portc_r )
+READ8_MEMBER( epson_lx810l_device::portc_r )
{
uint8_t result = 0;
@@ -486,7 +471,7 @@ READ8_MEMBER( epson_lx810l_t::portc_r )
return result;
}
-WRITE8_MEMBER( epson_lx810l_t::portc_w )
+WRITE8_MEMBER( epson_lx810l_device::portc_w )
{
/* ioport("serial")->write(BIT(data, 0)); */
@@ -506,12 +491,12 @@ WRITE8_MEMBER( epson_lx810l_t::portc_w )
GATE ARRAY
***************************************************************************/
-WRITE16_MEMBER( epson_lx810l_t::printhead )
+WRITE16_MEMBER( epson_lx810l_device::printhead )
{
m_printhead = data;
}
-WRITE8_MEMBER( epson_lx810l_t::pf_stepper )
+WRITE8_MEMBER( epson_lx810l_device::pf_stepper )
{
int changed = m_pf_stepper->update(data);
m_pf_pos_abs = -m_pf_stepper->get_absolute_position();
@@ -525,7 +510,7 @@ WRITE8_MEMBER( epson_lx810l_t::pf_stepper )
LX810LLOG("%s: %s(%02x); abs %d\n", machine().describe_context(), __func__, data, m_pf_pos_abs);
}
-WRITE8_MEMBER( epson_lx810l_t::cr_stepper )
+WRITE8_MEMBER( epson_lx810l_device::cr_stepper )
{
int m_cr_pos_abs_prev = m_cr_pos_abs;
@@ -547,7 +532,7 @@ WRITE8_MEMBER( epson_lx810l_t::cr_stepper )
LX810LLOG("%s: %s(%02x); abs %d\n", machine().describe_context(), __func__, data, m_cr_pos_abs);
}
-WRITE_LINE_MEMBER( epson_lx810l_t::e05a30_ready )
+WRITE_LINE_MEMBER( epson_lx810l_device::e05a30_ready )
{
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
@@ -557,7 +542,7 @@ WRITE_LINE_MEMBER( epson_lx810l_t::e05a30_ready )
Video hardware (simulates paper)
***************************************************************************/
-uint32_t epson_lx810l_t::screen_update_lx810l(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t epson_lx810l_device::screen_update_lx810l(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int scrolly = -bitmap_line(9);
copyscrollbitmap(bitmap, m_bitmap, 0, nullptr, 1, &scrolly, cliprect);
@@ -573,7 +558,7 @@ uint32_t epson_lx810l_t::screen_update_lx810l(screen_device &screen, bitmap_rgb3
Extended Timer Output
***************************************************************************/
-WRITE_LINE_MEMBER( epson_lx810l_t::co0_w )
+WRITE_LINE_MEMBER( epson_lx810l_device::co0_w )
{
/* Printhead is being fired on !state. */
if (!state) {
@@ -603,47 +588,47 @@ WRITE_LINE_MEMBER( epson_lx810l_t::co0_w )
ADC
***************************************************************************/
-READ8_MEMBER(epson_lx810l_t::an0_r)
+READ8_MEMBER(epson_lx810l_device::an0_r)
{
uint8_t res = !!(ioport("DIPSW2")->read() & 0x01);
return res - 1; /* DIPSW2.1 */
}
-READ8_MEMBER(epson_lx810l_t::an1_r)
+READ8_MEMBER(epson_lx810l_device::an1_r)
{
uint8_t res = !!(ioport("DIPSW2")->read() & 0x02);
return res - 1; /* DIPSW2.2 */
}
-READ8_MEMBER(epson_lx810l_t::an2_r)
+READ8_MEMBER(epson_lx810l_device::an2_r)
{
uint8_t res = !!(ioport("DIPSW2")->read() & 0x04);
return res - 1; /* DIPSW2.3 */
}
-READ8_MEMBER(epson_lx810l_t::an3_r)
+READ8_MEMBER(epson_lx810l_device::an3_r)
{
uint8_t res = !!(ioport("DIPSW2")->read() & 0x08);
return res - 1; /* DIPSW2.4 */
}
-READ8_MEMBER(epson_lx810l_t::an4_r)
+READ8_MEMBER(epson_lx810l_device::an4_r)
{
return 0xff;
}
-READ8_MEMBER(epson_lx810l_t::an5_r)
+READ8_MEMBER(epson_lx810l_device::an5_r)
{
return 0xCB; /* motor voltage, 0xcb = 24V */
}
-READ8_MEMBER(epson_lx810l_t::an6_r)
+READ8_MEMBER(epson_lx810l_device::an6_r)
{
uint8_t res = !ioport("LOADEJECT")->read();
return res - 1;
}
-READ8_MEMBER(epson_lx810l_t::an7_r)
+READ8_MEMBER(epson_lx810l_device::an7_r)
{
return 0xff;
}
diff --git a/src/devices/bus/centronics/epson_lx810l.h b/src/devices/bus/centronics/epson_lx810l.h
index c20041b821e..429266de8e4 100644
--- a/src/devices/bus/centronics/epson_lx810l.h
+++ b/src/devices/bus/centronics/epson_lx810l.h
@@ -5,10 +5,10 @@
*
*/
-#pragma once
+#ifndef MAME_BUS_CENTRONICS_EPSON_LX810L_H
+#define MAME_BUS_CENTRONICS_EPSON_LX810L_H
-#ifndef __EPSON_LX810L__
-#define __EPSON_LX810L__
+#pragma once
#include "ctronics.h"
#include "cpu/upd7810/upd7810.h"
@@ -33,18 +33,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> epson_lx810l_t
+// ======================> epson_lx810l_device
-class epson_lx810l_t : public device_t,
- public device_centronics_peripheral_interface
+class epson_lx810l_device : public device_t, public device_centronics_peripheral_interface
{
public:
// construction/destruction
- epson_lx810l_t(const machine_config &mconfig, const char *tag,
- device_t *owner, uint32_t clock);
- epson_lx810l_t(const machine_config &mconfig, device_type type,
- const char *name, const char *tag, device_t *owner,
- uint32_t clock, const char *shortname, const char *source);
+ epson_lx810l_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -106,6 +101,8 @@ public:
unsigned int bitmap_line(int i) { return ((uabs(m_pf_pos_abs) / 6) + i) % m_bitmap.height(); }
protected:
+ epson_lx810l_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -137,11 +134,11 @@ private:
// ======================> epson_ap2000_t
-class epson_ap2000_t : public epson_lx810l_t
+class epson_ap2000_device : public epson_lx810l_device
{
public:
// construction/destruction
- epson_ap2000_t(const machine_config &mconfig, const char *tag,
+ epson_ap2000_device(const machine_config &mconfig, const char *tag,
device_t *owner, uint32_t clock);
// optional information overrides
@@ -150,7 +147,7 @@ public:
// device type definition
-extern const device_type EPSON_LX810L;
-extern const device_type EPSON_AP2000;
+DECLARE_DEVICE_TYPE(EPSON_LX810L, epson_lx810l_device)
+DECLARE_DEVICE_TYPE(EPSON_AP2000, epson_ap2000_device)
-#endif
+#endif // MAME_BUS_CENTRONICS_EPSON_LX810L_H
diff --git a/src/devices/bus/centronics/nec_p72.cpp b/src/devices/bus/centronics/nec_p72.cpp
index 1e0cbbc985a..f9f8dc6a089 100644
--- a/src/devices/bus/centronics/nec_p72.cpp
+++ b/src/devices/bus/centronics/nec_p72.cpp
@@ -9,7 +9,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NEC_P72 = device_creator<nec_p72_t>;
+DEFINE_DEVICE_TYPE(NEC_P72, nec_p72_device, "p72", "NEC PinWriter P72")
//-------------------------------------------------
@@ -26,7 +26,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *nec_p72_t::device_rom_region() const
+const tiny_rom_entry *nec_p72_device::device_rom_region() const
{
return ROM_NAME( p72 );
}
@@ -36,7 +36,7 @@ const tiny_rom_entry *nec_p72_t::device_rom_region() const
// ADDRESS_MAP( p72_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( p72_mem, AS_PROGRAM, 16, nec_p72_t )
+static ADDRESS_MAP_START( p72_mem, AS_PROGRAM, 16, nec_p72_device )
AM_RANGE(0x000000, 0x0fffff) AM_ROM /* 1Mbyte firmware */
//AM_RANGE(0x100000, 0x1fffff) AM_RAM /* 1Mbyte external RAM */ /* TODO might be 2x1Mbit */
// [RH] 29 August 2016: Commented out because the NEC V33 only has 20 address lines, and
@@ -60,7 +60,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor nec_p72_t::device_mconfig_additions() const
+machine_config_constructor nec_p72_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( nec_p72 );
}
@@ -70,7 +70,7 @@ machine_config_constructor nec_p72_t::device_mconfig_additions() const
// device_start - device-specific startup
//-------------------------------------------------
-void nec_p72_t::device_start()
+void nec_p72_device::device_start()
{
}
@@ -79,18 +79,16 @@ void nec_p72_t::device_start()
//**************************************************************************
//-------------------------------------------------
-// nec_p72_t - constructor
+// nec_p72_device - constructor
//-------------------------------------------------
-nec_p72_t::nec_p72_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEC_P72, "NEC PinWrite P72", tag, owner, clock, "p72", __FILE__),
- device_centronics_peripheral_interface(mconfig, *this),
- m_maincpu(*this, "maincpu")
+nec_p72_device::nec_p72_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ nec_p72_device(mconfig, NEC_P72, tag, owner, clock)
{
}
-nec_p72_t::nec_p72_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+nec_p72_device::nec_p72_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_centronics_peripheral_interface(mconfig, *this),
m_maincpu(*this, "maincpu")
{
diff --git a/src/devices/bus/centronics/nec_p72.h b/src/devices/bus/centronics/nec_p72.h
index 1957dfb40c4..c34e1886c17 100644
--- a/src/devices/bus/centronics/nec_p72.h
+++ b/src/devices/bus/centronics/nec_p72.h
@@ -1,10 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Ramiro Polla
-#pragma once
+#ifndef MAME_BUS_CENTRONICS_NEC_P72_H
+#define MAME_BUS_CENTRONICS_NEC_P72_H
-#ifndef __NEC_P72__
-#define __NEC_P72__
+#pragma once
#include "ctronics.h"
#include "cpu/nec/nec.h"
@@ -13,24 +13,22 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> nec_p72_t
+// ======================> nec_p72_device
-class nec_p72_t : public device_t,
+class nec_p72_device : public device_t,
public device_centronics_peripheral_interface
{
public:
// construction/destruction
- nec_p72_t(const machine_config &mconfig, const char *tag,
- device_t *owner, uint32_t clock);
- nec_p72_t(const machine_config &mconfig, device_type type,
- const char *name, const char *tag, device_t *owner,
- uint32_t clock, const char *shortname, const char *source);
+ nec_p72_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
+ nec_p72_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
@@ -39,6 +37,6 @@ private:
};
// device type definition
-extern const device_type NEC_P72;
+DECLARE_DEVICE_TYPE(NEC_P72, nec_p72_device)
-#endif
+#endif // MAME_BUS_CENTRONICS_NEC_P72_H
diff --git a/src/devices/bus/centronics/printer.cpp b/src/devices/bus/centronics/printer.cpp
index 318ac9bd597..cf7a7dc9e4e 100644
--- a/src/devices/bus/centronics/printer.cpp
+++ b/src/devices/bus/centronics/printer.cpp
@@ -8,7 +8,7 @@
//**************************************************************************
// device type definition
-const device_type CENTRONICS_PRINTER = device_creator<centronics_printer_device>;
+DEFINE_DEVICE_TYPE(CENTRONICS_PRINTER, centronics_printer_device, "centronics_printer", "Centronics Printer")
static MACHINE_CONFIG_FRAGMENT( centronics_printer )
@@ -25,7 +25,7 @@ MACHINE_CONFIG_END
//-------------------------------------------------
centronics_printer_device::centronics_printer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CENTRONICS_PRINTER, "Centronics Printer", tag, owner, clock, "centronics_printer", __FILE__),
+ device_t(mconfig, CENTRONICS_PRINTER, tag, owner, clock),
device_centronics_peripheral_interface( mconfig, *this ),
m_strobe(0),
m_data(0),
diff --git a/src/devices/bus/centronics/printer.h b/src/devices/bus/centronics/printer.h
index 4c3cfa30393..9e1f358c569 100644
--- a/src/devices/bus/centronics/printer.h
+++ b/src/devices/bus/centronics/printer.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#pragma once
+#ifndef MAME_BUS_CENTRONICS_PRINTER_H
+#define MAME_BUS_CENTRONICS_PRINTER_H
-#ifndef __CENTRONICS_PRINTER_H__
-#define __CENTRONICS_PRINTER_H__
+#pragma once
#include "ctronics.h"
#include "imagedev/printer.h"
@@ -53,6 +53,6 @@ private:
};
// device type definition
-extern const device_type CENTRONICS_PRINTER;
+DECLARE_DEVICE_TYPE(CENTRONICS_PRINTER, centronics_printer_device)
-#endif
+#endif // MAME_BUS_CENTRONICS_PRINTER_H
diff --git a/src/devices/bus/cgenie/expansion/carts.cpp b/src/devices/bus/cgenie/expansion/carts.cpp
index 213d7dcdf5e..48779691821 100644
--- a/src/devices/bus/cgenie/expansion/carts.cpp
+++ b/src/devices/bus/cgenie/expansion/carts.cpp
@@ -8,7 +8,9 @@
#include "emu.h"
#include "carts.h"
+#include "floppy.h"
-SLOT_INTERFACE_START( expansion_slot_carts )
+
+SLOT_INTERFACE_START( cg_exp_slot_carts )
SLOT_INTERFACE("floppy", CGENIE_FDC)
SLOT_INTERFACE_END
diff --git a/src/devices/bus/cgenie/expansion/carts.h b/src/devices/bus/cgenie/expansion/carts.h
index 2f26f0a37b1..6f3503bdabf 100644
--- a/src/devices/bus/cgenie/expansion/carts.h
+++ b/src/devices/bus/cgenie/expansion/carts.h
@@ -6,14 +6,12 @@
***************************************************************************/
-#pragma once
-
-#ifndef __CGENIE_EXPANSION_CARTS_H__
-#define __CGENIE_EXPANSION_CARTS_H__
+#ifndef MAME_BUS_CGENIE_EXPANSION_CARTS_H
+#define MAME_BUS_CGENIE_EXPANSION_CARTS_H
+#pragma once
-#include "floppy.h"
-SLOT_INTERFACE_EXTERN( expansion_slot_carts );
+SLOT_INTERFACE_EXTERN( cg_exp_slot_carts );
-#endif // __CGENIE_EXPANSION_CARTS_H__
+#endif // MAME_BUS_CGENIE_EXPANSION_CARTS_H
diff --git a/src/devices/bus/cgenie/expansion/expansion.cpp b/src/devices/bus/cgenie/expansion/expansion.cpp
index ab7e083b84b..366b1513aca 100644
--- a/src/devices/bus/cgenie/expansion/expansion.cpp
+++ b/src/devices/bus/cgenie/expansion/expansion.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type EXPANSION_SLOT = device_creator<expansion_slot_device>;
+DEFINE_DEVICE_TYPE(CG_EXP_SLOT, cg_exp_slot_device, "cg_exp_slot", "Colour Genie Expansion Slot")
//**************************************************************************
@@ -24,11 +24,11 @@ const device_type EXPANSION_SLOT = device_creator<expansion_slot_device>;
//**************************************************************************
//-------------------------------------------------
-// expansion_slot_device - constructor
+// cg_exp - constructor
//-------------------------------------------------
-expansion_slot_device::expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EXPANSION_SLOT, "Expansion Slot", tag, owner, clock, "expansion_slot", __FILE__),
+cg_exp_slot_device::cg_exp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, CG_EXP_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_program(nullptr),
m_io(nullptr),
@@ -40,10 +40,10 @@ expansion_slot_device::expansion_slot_device(const machine_config &mconfig, cons
}
//-------------------------------------------------
-// expansion_slot_device - destructor
+// cg_exp_slot_device - destructor
//-------------------------------------------------
-expansion_slot_device::~expansion_slot_device()
+cg_exp_slot_device::~cg_exp_slot_device()
{
}
@@ -51,7 +51,7 @@ expansion_slot_device::~expansion_slot_device()
// device_start - device-specific startup
//-------------------------------------------------
-void expansion_slot_device::device_start()
+void cg_exp_slot_device::device_start()
{
// resolve callbacks
m_int_handler.resolve_safe();
@@ -63,7 +63,7 @@ void expansion_slot_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void expansion_slot_device::device_reset()
+void cg_exp_slot_device::device_reset()
{
}
@@ -71,7 +71,7 @@ void expansion_slot_device::device_reset()
// set_program_space - set address space we are attached to
//-------------------------------------------------
-void expansion_slot_device::set_program_space(address_space *program)
+void cg_exp_slot_device::set_program_space(address_space *program)
{
m_program = program;
}
@@ -80,7 +80,7 @@ void expansion_slot_device::set_program_space(address_space *program)
// set_io_space - set address space we are attached to
//-------------------------------------------------
-void expansion_slot_device::set_io_space(address_space *io)
+void cg_exp_slot_device::set_io_space(address_space *io)
{
m_io = io;
}
@@ -91,19 +91,19 @@ void expansion_slot_device::set_io_space(address_space *io)
//**************************************************************************
//-------------------------------------------------
-// device_expansion_interface - constructor
+// device_cg_exp_interface - constructor
//-------------------------------------------------
-device_expansion_interface::device_expansion_interface(const machine_config &mconfig, device_t &device) :
+device_cg_exp_interface::device_cg_exp_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device)
{
- m_slot = dynamic_cast<expansion_slot_device *>(device.owner());
+ m_slot = dynamic_cast<cg_exp_slot_device *>(device.owner());
}
//-------------------------------------------------
-// ~device_expansion_interface - destructor
+// ~device_cg_exp_interface - destructor
//-------------------------------------------------
-device_expansion_interface::~device_expansion_interface()
+device_cg_exp_interface::~device_cg_exp_interface()
{
}
diff --git a/src/devices/bus/cgenie/expansion/expansion.h b/src/devices/bus/cgenie/expansion/expansion.h
index 319f7c4878f..6c752efb331 100644
--- a/src/devices/bus/cgenie/expansion/expansion.h
+++ b/src/devices/bus/cgenie/expansion/expansion.h
@@ -34,10 +34,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_CGENIE_EXPANSION_EXPANSION_H
+#define MAME_BUS_CGENIE_EXPANSION_EXPANSION_H
-#ifndef __CGENIE_EXPANSION_H__
-#define __CGENIE_EXPANSION_H__
+#pragma once
@@ -45,45 +45,45 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_EXPANSION_SLOT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, EXPANSION_SLOT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(expansion_slot_carts, nullptr, false)
+#define MCFG_CG_EXP_SLOT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, CG_EXP_SLOT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(cg_exp_slot_carts, nullptr, false)
-#define MCFG_EXPANSION_SLOT_INT_HANDLER(_devcb) \
- devcb = &expansion_slot_device::set_int_handler(*device, DEVCB_##_devcb);
+#define MCFG_CG_EXP_SLOT_INT_HANDLER(_devcb) \
+ devcb = &cg_exp_slot_device::set_int_handler(*device, DEVCB_##_devcb);
-#define MCFG_EXPANSION_SLOT_NMI_HANDLER(_devcb) \
- devcb = &expansion_slot_device::set_nmi_handler(*device, DEVCB_##_devcb);
+#define MCFG_CG_EXP_SLOT_NMI_HANDLER(_devcb) \
+ devcb = &cg_exp_slot_device::set_nmi_handler(*device, DEVCB_##_devcb);
-#define MCFG_EXPANSION_SLOT_RESET_HANDLER(_devcb) \
- devcb = &expansion_slot_device::set_reset_handler(*device, DEVCB_##_devcb);
+#define MCFG_CG_EXP_SLOT_RESET_HANDLER(_devcb) \
+ devcb = &cg_exp_slot_device::set_reset_handler(*device, DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class device_expansion_interface;
+class device_cg_exp_interface;
-class expansion_slot_device : public device_t, public device_slot_interface
+class cg_exp_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
- expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~expansion_slot_device();
+ cg_exp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~cg_exp_slot_device();
void set_program_space(address_space *program);
void set_io_space(address_space *io);
// callbacks
- template<class _Object> static devcb_base &set_int_handler(device_t &device, _Object object)
- { return downcast<expansion_slot_device &>(device).m_int_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
+ { return downcast<cg_exp_slot_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_nmi_handler(device_t &device, _Object object)
- { return downcast<expansion_slot_device &>(device).m_nmi_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
+ { return downcast<cg_exp_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_reset_handler(device_t &device, _Object object)
- { return downcast<expansion_slot_device &>(device).m_reset_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb)
+ { return downcast<cg_exp_slot_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); }
// called from cart device
DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); }
@@ -98,7 +98,7 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
- device_expansion_interface *m_cart;
+ device_cg_exp_interface *m_cart;
private:
devcb_write_line m_int_handler;
@@ -107,21 +107,22 @@ private:
};
// class representing interface-specific live expansion device
-class device_expansion_interface : public device_slot_card_interface
+class device_cg_exp_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_expansion_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_expansion_interface();
+ virtual ~device_cg_exp_interface();
protected:
- expansion_slot_device *m_slot;
+ device_cg_exp_interface(const machine_config &mconfig, device_t &device);
+
+ cg_exp_slot_device *m_slot;
};
// device type definition
-extern const device_type EXPANSION_SLOT;
+extern const device_type CG_EXP_SLOT;
// include here so drivers don't need to
#include "carts.h"
-#endif // __CGENIE_EXPANSION_H__
+#endif // MAME_BUS_CGENIE_EXPANSION_EXPANSION_H
diff --git a/src/devices/bus/cgenie/expansion/floppy.cpp b/src/devices/bus/cgenie/expansion/floppy.cpp
index d784f0f8dc1..9179aea9b87 100644
--- a/src/devices/bus/cgenie/expansion/floppy.cpp
+++ b/src/devices/bus/cgenie/expansion/floppy.cpp
@@ -28,14 +28,14 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CGENIE_FDC = device_creator<cgenie_fdc_device>;
+DEFINE_DEVICE_TYPE(CGENIE_FDC, cgenie_fdc_device, "cgenie_fdc", "Colour Genie FDC")
DEVICE_ADDRESS_MAP_START( mmio, 8, cgenie_fdc_device )
AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x10) AM_READWRITE(irq_r, select_w)
- AM_RANGE(0xec, 0xec) AM_MIRROR(0x10) AM_DEVREAD("fd1793", fd1793_t, status_r) AM_WRITE(command_w)
- AM_RANGE(0xed, 0xed) AM_MIRROR(0x10) AM_DEVREADWRITE("fd1793", fd1793_t, track_r, track_w)
- AM_RANGE(0xee, 0xee) AM_MIRROR(0x10) AM_DEVREADWRITE("fd1793", fd1793_t, sector_r, sector_w)
- AM_RANGE(0xef, 0xef) AM_MIRROR(0x10) AM_DEVREADWRITE("fd1793", fd1793_t, data_r, data_w)
+ AM_RANGE(0xec, 0xec) AM_MIRROR(0x10) AM_DEVREAD("fd1793", fd1793_device, status_r) AM_WRITE(command_w)
+ AM_RANGE(0xed, 0xed) AM_MIRROR(0x10) AM_DEVREADWRITE("fd1793", fd1793_device, track_r, track_w)
+ AM_RANGE(0xee, 0xee) AM_MIRROR(0x10) AM_DEVREADWRITE("fd1793", fd1793_device, sector_r, sector_w)
+ AM_RANGE(0xef, 0xef) AM_MIRROR(0x10) AM_DEVREADWRITE("fd1793", fd1793_device, data_r, data_w)
ADDRESS_MAP_END
FLOPPY_FORMATS_MEMBER( cgenie_fdc_device::floppy_formats )
@@ -105,8 +105,8 @@ machine_config_constructor cgenie_fdc_device::device_mconfig_additions() const
//-------------------------------------------------
cgenie_fdc_device::cgenie_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CGENIE_FDC, "Floppy Disc Controller", tag, owner, clock, "cgenie_fdc", __FILE__),
- device_expansion_interface(mconfig, *this),
+ device_t(mconfig, CGENIE_FDC, tag, owner, clock),
+ device_cg_exp_interface(mconfig, *this),
m_fdc(*this, "fd1793"),
m_floppy0(*this, "fd1793:0"),
m_floppy1(*this, "fd1793:1"),
diff --git a/src/devices/bus/cgenie/expansion/floppy.h b/src/devices/bus/cgenie/expansion/floppy.h
index 686c1eb3871..b46f2eee796 100644
--- a/src/devices/bus/cgenie/expansion/floppy.h
+++ b/src/devices/bus/cgenie/expansion/floppy.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_CGENIE_EXPANSION_FLOPPY_H
+#define MAME_BUS_CGENIE_EXPANSION_FLOPPY_H
-#ifndef __CGENIE_EXPANSION_FLOPPY_H__
-#define __CGENIE_EXPANSION_FLOPPY_H__
+#pragma once
#include "expansion.h"
#include "machine/wd_fdc.h"
@@ -22,7 +22,7 @@
// ======================> floppy_controller_device
-class cgenie_fdc_device : public device_t, public device_expansion_interface
+class cgenie_fdc_device : public device_t, public device_cg_exp_interface
{
public:
// construction/destruction
@@ -49,7 +49,7 @@ protected:
virtual void device_reset() override;
private:
- required_device<fd1793_t> m_fdc;
+ required_device<fd1793_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device<floppy_connector> m_floppy2;
@@ -68,6 +68,6 @@ private:
};
// device type definition
-extern const device_type CGENIE_FDC;
+DECLARE_DEVICE_TYPE(CGENIE_FDC, cgenie_fdc_device)
-#endif // __CGENIE_EXPANSION_FLOPPY_H__
+#endif // MAME_BUS_CGENIE_EXPANSION_FLOPPY_H
diff --git a/src/devices/bus/cgenie/parallel/carts.cpp b/src/devices/bus/cgenie/parallel/carts.cpp
index 1de5c319105..627d969bd2f 100644
--- a/src/devices/bus/cgenie/parallel/carts.cpp
+++ b/src/devices/bus/cgenie/parallel/carts.cpp
@@ -8,8 +8,11 @@
#include "emu.h"
#include "carts.h"
+#include "joystick.h"
+#include "printer.h"
-SLOT_INTERFACE_START( parallel_slot_carts )
+
+SLOT_INTERFACE_START( cg_parallel_slot_carts )
SLOT_INTERFACE("joystick", CGENIE_JOYSTICK)
SLOT_INTERFACE("printer", CGENIE_PRINTER)
SLOT_INTERFACE_END
diff --git a/src/devices/bus/cgenie/parallel/carts.h b/src/devices/bus/cgenie/parallel/carts.h
index e654f5bf682..0c893368899 100644
--- a/src/devices/bus/cgenie/parallel/carts.h
+++ b/src/devices/bus/cgenie/parallel/carts.h
@@ -6,15 +6,12 @@
***************************************************************************/
-#pragma once
-
-#ifndef __CGENIE_PARALLEL_CARTS_H__
-#define __CGENIE_PARALLEL_CARTS_H__
+#ifndef MAME_BUS_CGENIE_PARALLEL_CARTS_H
+#define MAME_BUS_CGENIE_PARALLEL_CARTS_H
+#pragma once
-#include "joystick.h"
-#include "printer.h"
-SLOT_INTERFACE_EXTERN( parallel_slot_carts );
+SLOT_INTERFACE_EXTERN( cg_parallel_slot_carts );
-#endif // __CGENIE_PARALLEL_CARTS_H__
+#endif // MAME_BUS_CGENIE_PARALLEL_CARTS_H
diff --git a/src/devices/bus/cgenie/parallel/joystick.cpp b/src/devices/bus/cgenie/parallel/joystick.cpp
index 2e54551959a..2be4d5280b5 100644
--- a/src/devices/bus/cgenie/parallel/joystick.cpp
+++ b/src/devices/bus/cgenie/parallel/joystick.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CGENIE_JOYSTICK = device_creator<cgenie_joystick_device>;
+DEFINE_DEVICE_TYPE(CGENIE_JOYSTICK, cgenie_joystick_device, "cgenie_joystick", "Joystick Interface EG2013")
//-------------------------------------------------
// input_ports - device-specific input ports
@@ -94,8 +94,8 @@ ioport_constructor cgenie_joystick_device::device_input_ports() const
//-------------------------------------------------
cgenie_joystick_device::cgenie_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CGENIE_JOYSTICK, "Joystick Interface EG2013", tag, owner, clock, "cgenie_joystick", __FILE__),
- device_parallel_interface(mconfig, *this),
+ device_t(mconfig, CGENIE_JOYSTICK, tag, owner, clock),
+ device_cg_parallel_interface(mconfig, *this),
m_joy(*this, "JOY.%u", 0),
m_keypad(*this, "KEYPAD.%u", 0),
m_select(0)
diff --git a/src/devices/bus/cgenie/parallel/joystick.h b/src/devices/bus/cgenie/parallel/joystick.h
index 6625af5bdff..6a4025ada9f 100644
--- a/src/devices/bus/cgenie/parallel/joystick.h
+++ b/src/devices/bus/cgenie/parallel/joystick.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_CGENIE_PARALLEL_JOYSTICK_H
+#define MAME_BUS_CGENIE_PARALLEL_JOYSTICK_H
-#ifndef __CGENIE_PARALLEL_JOYSTICK_H__
-#define __CGENIE_PARALLEL_JOYSTICK_H__
+#pragma once
#include "parallel.h"
@@ -20,7 +20,7 @@
// ======================> cgenie_joystick_device
-class cgenie_joystick_device : public device_t, public device_parallel_interface
+class cgenie_joystick_device : public device_t, public device_cg_parallel_interface
{
public:
// construction/destruction
@@ -42,6 +42,6 @@ private:
};
// device type definition
-extern const device_type CGENIE_JOYSTICK;
+DECLARE_DEVICE_TYPE(CGENIE_JOYSTICK, cgenie_joystick_device)
-#endif // __CGENIE_PARALLEL_JOYSTICK_H__
+#endif // MAME_BUS_CGENIE_PARALLEL_JOYSTICK_H
diff --git a/src/devices/bus/cgenie/parallel/parallel.cpp b/src/devices/bus/cgenie/parallel/parallel.cpp
index 2f993298755..a5072e094ee 100644
--- a/src/devices/bus/cgenie/parallel/parallel.cpp
+++ b/src/devices/bus/cgenie/parallel/parallel.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PARALLEL_SLOT = device_creator<parallel_slot_device>;
+DEFINE_DEVICE_TYPE(CG_PARALLEL_SLOT, cg_parallel_slot_device, "cg_parallel_slot", "Colour Genie Parallel Slot")
//**************************************************************************
@@ -24,21 +24,21 @@ const device_type PARALLEL_SLOT = device_creator<parallel_slot_device>;
//**************************************************************************
//-------------------------------------------------
-// parallel_slot_device - constructor
+// cg_parallel_slot_device - constructor
//-------------------------------------------------
-parallel_slot_device::parallel_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PARALLEL_SLOT, "Parallel Slot", tag, owner, clock, "parallel_slot", __FILE__),
+cg_parallel_slot_device::cg_parallel_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, CG_PARALLEL_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_cart(nullptr)
{
}
//-------------------------------------------------
-// parallel_slot_device - destructor
+// cg_parallel_slot_device - destructor
//-------------------------------------------------
-parallel_slot_device::~parallel_slot_device()
+cg_parallel_slot_device::~cg_parallel_slot_device()
{
}
@@ -46,16 +46,16 @@ parallel_slot_device::~parallel_slot_device()
// device_start - device-specific startup
//-------------------------------------------------
-void parallel_slot_device::device_start()
+void cg_parallel_slot_device::device_start()
{
- m_cart = dynamic_cast<device_parallel_interface *>(get_card_device());
+ m_cart = dynamic_cast<device_cg_parallel_interface *>(get_card_device());
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
-void parallel_slot_device::device_reset()
+void cg_parallel_slot_device::device_reset()
{
}
@@ -64,7 +64,7 @@ void parallel_slot_device::device_reset()
// I/O PORTS
//**************************************************************************
-READ8_MEMBER( parallel_slot_device::pa_r )
+READ8_MEMBER( cg_parallel_slot_device::pa_r )
{
if (m_cart)
return m_cart->pa_r();
@@ -72,13 +72,13 @@ READ8_MEMBER( parallel_slot_device::pa_r )
return 0xff;
}
-WRITE8_MEMBER( parallel_slot_device::pa_w )
+WRITE8_MEMBER( cg_parallel_slot_device::pa_w )
{
if (m_cart)
m_cart->pa_w(data);
}
-READ8_MEMBER( parallel_slot_device::pb_r )
+READ8_MEMBER( cg_parallel_slot_device::pb_r )
{
if (m_cart)
return m_cart->pb_r();
@@ -86,7 +86,7 @@ READ8_MEMBER( parallel_slot_device::pb_r )
return 0xff;
}
-WRITE8_MEMBER( parallel_slot_device::pb_w )
+WRITE8_MEMBER( cg_parallel_slot_device::pb_w )
{
if (m_cart)
m_cart->pb_w(data);
@@ -98,19 +98,19 @@ WRITE8_MEMBER( parallel_slot_device::pb_w )
//**************************************************************************
//-------------------------------------------------
-// device_parallel_interface - constructor
+// device_cg_parallel_interface - constructor
//-------------------------------------------------
-device_parallel_interface::device_parallel_interface(const machine_config &mconfig, device_t &device) :
+device_cg_parallel_interface::device_cg_parallel_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device)
{
- m_slot = dynamic_cast<parallel_slot_device *>(device.owner());
+ m_slot = dynamic_cast<cg_parallel_slot_device *>(device.owner());
}
//-------------------------------------------------
-// ~device_parallel_interface - destructor
+// ~device_cg_parallel_interface - destructor
//-------------------------------------------------
-device_parallel_interface::~device_parallel_interface()
+device_cg_parallel_interface::~device_cg_parallel_interface()
{
}
diff --git a/src/devices/bus/cgenie/parallel/parallel.h b/src/devices/bus/cgenie/parallel/parallel.h
index 9f70f4b85ac..9bc8d5665c4 100644
--- a/src/devices/bus/cgenie/parallel/parallel.h
+++ b/src/devices/bus/cgenie/parallel/parallel.h
@@ -19,10 +19,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_CGENIE_PARALLEL_PARALLEL_H
+#define MAME_BUS_CGENIE_PARALLEL_PARALLEL_H
-#ifndef __CGENIE_PARALLEL_H__
-#define __CGENIE_PARALLEL_H__
+#pragma once
@@ -30,23 +30,23 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_PARALLEL_SLOT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, PARALLEL_SLOT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(parallel_slot_carts, nullptr, false)
+#define MCFG_CG_PARALLEL_SLOT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, CG_PARALLEL_SLOT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(cg_parallel_slot_carts, nullptr, false)
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class device_parallel_interface;
+class device_cg_parallel_interface;
-class parallel_slot_device : public device_t, public device_slot_interface
+class cg_parallel_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
- parallel_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~parallel_slot_device();
+ cg_parallel_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~cg_parallel_slot_device();
// IOA
DECLARE_READ8_MEMBER(pa_r);
@@ -61,31 +61,32 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
- device_parallel_interface *m_cart;
+ device_cg_parallel_interface *m_cart;
};
// class representing interface-specific live parallel device
-class device_parallel_interface : public device_slot_card_interface
+class device_cg_parallel_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_parallel_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_parallel_interface();
+ virtual ~device_cg_parallel_interface();
- virtual uint8_t pa_r() { return 0xff; };
- virtual void pa_w(uint8_t data) {};
+ virtual uint8_t pa_r() { return 0xff; }
+ virtual void pa_w(uint8_t data) { }
- virtual uint8_t pb_r() { return 0xff; };
- virtual void pb_w(uint8_t data) {};
+ virtual uint8_t pb_r() { return 0xff; }
+ virtual void pb_w(uint8_t data) { }
protected:
- parallel_slot_device *m_slot;
+ device_cg_parallel_interface(const machine_config &mconfig, device_t &device);
+
+ cg_parallel_slot_device *m_slot;
};
// device type definition
-extern const device_type PARALLEL_SLOT;
+DECLARE_DEVICE_TYPE(CG_PARALLEL_SLOT, cg_parallel_slot_device)
// include here so drivers don't need to
#include "carts.h"
-#endif // __CGENIE_PARALLEL_H__
+#endif // MAME_BUS_CGENIE_PARALLEL_PARALLEL_H
diff --git a/src/devices/bus/cgenie/parallel/printer.cpp b/src/devices/bus/cgenie/parallel/printer.cpp
index cd798e978d9..f23c2e6de86 100644
--- a/src/devices/bus/cgenie/parallel/printer.cpp
+++ b/src/devices/bus/cgenie/parallel/printer.cpp
@@ -21,7 +21,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CGENIE_PRINTER = device_creator<cgenie_printer_device>;
+DEFINE_DEVICE_TYPE(CGENIE_PRINTER, cgenie_printer_device, "cgenie_printer", "Printer Interface EG2012")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -52,8 +52,8 @@ machine_config_constructor cgenie_printer_device::device_mconfig_additions() con
//-------------------------------------------------
cgenie_printer_device::cgenie_printer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CGENIE_PRINTER, "Printer Interface EG2012", tag, owner, clock, "cgenie_printer", __FILE__),
- device_parallel_interface(mconfig, *this),
+ device_t(mconfig, CGENIE_PRINTER, tag, owner, clock),
+ device_cg_parallel_interface(mconfig, *this),
m_centronics(*this, "centronics"),
m_latch(*this, "latch"),
m_centronics_busy(0),
diff --git a/src/devices/bus/cgenie/parallel/printer.h b/src/devices/bus/cgenie/parallel/printer.h
index 313e61d9542..f2a5338be27 100644
--- a/src/devices/bus/cgenie/parallel/printer.h
+++ b/src/devices/bus/cgenie/parallel/printer.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_CGENIE_PARALLEL_PRINTER_H
+#define MAME_BUS_CGENIE_PARALLEL_PRINTER_H
-#ifndef __CGENIE_PARALLEL_PRINTER_H__
-#define __CGENIE_PARALLEL_PRINTER_H__
+#pragma once
#include "parallel.h"
#include "bus/centronics/ctronics.h"
@@ -21,7 +21,7 @@
// ======================> cgenie_printer_device
-class cgenie_printer_device : public device_t, public device_parallel_interface
+class cgenie_printer_device : public device_t, public device_cg_parallel_interface
{
public:
// construction/destruction
@@ -52,6 +52,6 @@ private:
};
// device type definition
-extern const device_type CGENIE_PRINTER;
+DECLARE_DEVICE_TYPE(CGENIE_PRINTER, cgenie_printer_device)
-#endif // __CGENIE_PARALLEL_PRINTER_H__
+#endif // MAME_BUS_CGENIE_PARALLEL_PRINTER_H
diff --git a/src/devices/bus/chanf/rom.cpp b/src/devices/bus/chanf/rom.cpp
index 35e886aeb0d..3dc509a29d9 100644
--- a/src/devices/bus/chanf/rom.cpp
+++ b/src/devices/bus/chanf/rom.cpp
@@ -23,49 +23,49 @@
// chanf_rom_device - constructor
//-------------------------------------------------
-const device_type CHANF_ROM_STD = device_creator<chanf_rom_device>;
-const device_type CHANF_ROM_MAZE = device_creator<chanf_maze_device>;
-const device_type CHANF_ROM_HANGMAN = device_creator<chanf_hangman_device>;
-const device_type CHANF_ROM_CHESS = device_creator<chanf_chess_device>;
-const device_type CHANF_ROM_MULTI_OLD = device_creator<chanf_multi_old_device>;
-const device_type CHANF_ROM_MULTI_FINAL = device_creator<chanf_multi_final_device>;
+DEFINE_DEVICE_TYPE(CHANF_ROM_STD, chanf_rom_device, "chanf_rom", "Channel F Standard Carts")
+DEFINE_DEVICE_TYPE(CHANF_ROM_MAZE, chanf_maze_device, "chanf_maze", "Channel F Maze Cart")
+DEFINE_DEVICE_TYPE(CHANF_ROM_HANGMAN, chanf_hangman_device, "chanf_hang", "Channel F Hangman Cart")
+DEFINE_DEVICE_TYPE(CHANF_ROM_CHESS, chanf_chess_device, "chanf_chess", "Channel F Chess Cart")
+DEFINE_DEVICE_TYPE(CHANF_ROM_MULTI_OLD, chanf_multi_old_device, "chanf_multi_old", "Channel F Multigame (Earlier Version) Cart")
+DEFINE_DEVICE_TYPE(CHANF_ROM_MULTI_FINAL, chanf_multi_final_device, "chanf_multi_fin", "Channel F Multigame (Final Version) Cart")
-chanf_rom_device::chanf_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_channelf_cart_interface( mconfig, *this ), m_addr_latch(0), m_addr(0), m_read_write(0), m_data0(0)
- {
+chanf_rom_device::chanf_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_channelf_cart_interface(mconfig, *this)
+ , m_addr_latch(0), m_addr(0), m_read_write(0), m_data0(0)
+{
}
chanf_rom_device::chanf_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CHANF_ROM_STD, "Channel F Standard Carts", tag, owner, clock, "chanf_rom", __FILE__),
- device_channelf_cart_interface( mconfig, *this ), m_addr_latch(0), m_addr(0), m_read_write(0), m_data0(0)
- {
+ : chanf_rom_device(mconfig, CHANF_ROM_STD, tag, owner, clock)
+{
}
chanf_maze_device::chanf_maze_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : chanf_rom_device(mconfig, CHANF_ROM_MAZE, "Channel F Maze Cart", tag, owner, clock, "chanf_maze", __FILE__)
+ : chanf_rom_device(mconfig, CHANF_ROM_MAZE, tag, owner, clock)
{
}
chanf_hangman_device::chanf_hangman_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : chanf_rom_device(mconfig, CHANF_ROM_HANGMAN, "Channel F Hangman Cart", tag, owner, clock, "chanf_hang", __FILE__)
+ : chanf_rom_device(mconfig, CHANF_ROM_HANGMAN, tag, owner, clock)
{
}
chanf_chess_device::chanf_chess_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : chanf_rom_device(mconfig, CHANF_ROM_CHESS, "Channel F Chess Cart", tag, owner, clock, "chanf_chess", __FILE__)
+ : chanf_rom_device(mconfig, CHANF_ROM_CHESS, tag, owner, clock)
{
}
chanf_multi_old_device::chanf_multi_old_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : chanf_rom_device(mconfig, CHANF_ROM_MULTI_OLD, "Channel F Multigame (Earlier Version) Cart", tag, owner, clock, "chanf_multi_old", __FILE__), m_base_bank(0)
- {
+ : chanf_rom_device(mconfig, CHANF_ROM_MULTI_OLD, tag, owner, clock), m_base_bank(0)
+{
}
chanf_multi_final_device::chanf_multi_final_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : chanf_rom_device(mconfig, CHANF_ROM_MULTI_FINAL, "Channel F Multigame (Final Version) Cart", tag, owner, clock, "chanf_multi_fin", __FILE__), m_base_bank(0), m_half_bank(0)
- {
+ : chanf_rom_device(mconfig, CHANF_ROM_MULTI_FINAL, tag, owner, clock), m_base_bank(0), m_half_bank(0)
+{
}
diff --git a/src/devices/bus/chanf/rom.h b/src/devices/bus/chanf/rom.h
index 7fd8944ba99..bd32f177ff8 100644
--- a/src/devices/bus/chanf/rom.h
+++ b/src/devices/bus/chanf/rom.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __CHANF_ROM_H
-#define __CHANF_ROM_H
+#ifndef MAME_BUS_CHANF_ROM_H
+#define MAME_BUS_CHANF_ROM_H
#include "slot.h"
@@ -13,7 +13,6 @@ class chanf_rom_device : public device_t,
{
public:
// construction/destruction
- chanf_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
chanf_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
@@ -28,8 +27,9 @@ public:
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
-
protected:
+ chanf_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// used for RAM chip in Hangman & Maze
uint8_t m_latch[2]; // PORT A & PORT B
uint16_t m_addr_latch, m_addr;
@@ -133,12 +133,12 @@ private:
// device type definition
-extern const device_type CHANF_ROM_STD;
-extern const device_type CHANF_ROM_MAZE;
-extern const device_type CHANF_ROM_HANGMAN;
-extern const device_type CHANF_ROM_CHESS;
-extern const device_type CHANF_ROM_MULTI_OLD;
-extern const device_type CHANF_ROM_MULTI_FINAL;
+DECLARE_DEVICE_TYPE(CHANF_ROM_STD, chanf_rom_device)
+DECLARE_DEVICE_TYPE(CHANF_ROM_MAZE, chanf_maze_device)
+DECLARE_DEVICE_TYPE(CHANF_ROM_HANGMAN, chanf_hangman_device)
+DECLARE_DEVICE_TYPE(CHANF_ROM_CHESS, chanf_chess_device)
+DECLARE_DEVICE_TYPE(CHANF_ROM_MULTI_OLD, chanf_multi_old_device)
+DECLARE_DEVICE_TYPE(CHANF_ROM_MULTI_FINAL, chanf_multi_final_device)
-#endif
+#endif // MAME_BUS_CHANF_ROM_H
diff --git a/src/devices/bus/chanf/slot.cpp b/src/devices/bus/chanf/slot.cpp
index 1b982151059..d9e1a27d399 100644
--- a/src/devices/bus/chanf/slot.cpp
+++ b/src/devices/bus/chanf/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type CHANF_CART_SLOT = device_creator<channelf_cart_slot_device>;
+DEFINE_DEVICE_TYPE(CHANF_CART_SLOT, channelf_cart_slot_device, "chanf_cart_slot", "Fairchild Channel F Cartridge Slot")
//**************************************************************************
// Channel F cartridges Interface
@@ -73,10 +73,10 @@ void device_channelf_cart_interface::ram_alloc(uint32_t size)
// channelf_cart_slot_device - constructor
//-------------------------------------------------
channelf_cart_slot_device::channelf_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CHANF_CART_SLOT, "Fairchild Channel F Cartridge Slot", tag, owner, clock, "cf_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(CF_CHESS), m_cart(nullptr)
+ device_t(mconfig, CHANF_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(CF_CHESS), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/chanf/slot.h b/src/devices/bus/chanf/slot.h
index 798d7c5dc65..289c1b3e600 100644
--- a/src/devices/bus/chanf/slot.h
+++ b/src/devices/bus/chanf/slot.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __CHANF_SLOT_H
-#define __CHANF_SLOT_H
+#ifndef MAME_BUS_CHANF_SLOT_H
+#define MAME_BUS_CHANF_SLOT_H
#include "softlist_dev.h"
@@ -29,14 +29,13 @@ class device_channelf_cart_interface : public device_slot_card_interface
{
public:
// device_channelf_cart_interface/destruction
- device_channelf_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_channelf_cart_interface();
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) { return 0xff; }
virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write_ram) {}
- virtual DECLARE_WRITE8_MEMBER(write_bank) {}
+ virtual DECLARE_WRITE8_MEMBER(write_ram) { }
+ virtual DECLARE_WRITE8_MEMBER(write_bank) {}
void rom_alloc(uint32_t size, const char *tag);
void ram_alloc(uint32_t size);
@@ -48,6 +47,8 @@ public:
void save_ram() { device().save_item(NAME(m_ram)); }
protected:
+ device_channelf_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -105,7 +106,7 @@ protected:
// device type definition
-extern const device_type CHANF_CART_SLOT;
+DECLARE_DEVICE_TYPE(CHANF_CART_SLOT, channelf_cart_slot_device)
/***************************************************************************
@@ -117,4 +118,5 @@ extern const device_type CHANF_CART_SLOT;
#define MCFG_CHANNELF_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, CHANF_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+
+#endif // MAME_BUS_CHANF_SLOT_H
diff --git a/src/devices/bus/coco/coco_232.cpp b/src/devices/bus/coco/coco_232.cpp
index 8973a36ccf6..431abfa958d 100644
--- a/src/devices/bus/coco/coco_232.cpp
+++ b/src/devices/bus/coco/coco_232.cpp
@@ -31,7 +31,7 @@ MACHINE_CONFIG_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type COCO_232 = device_creator<coco_232_device>;
+DEFINE_DEVICE_TYPE(COCO_232, coco_232_device, "coco_232", "CoCo RS-232 PAK")
//**************************************************************************
// LIVE DEVICE
@@ -42,9 +42,9 @@ const device_type COCO_232 = device_creator<coco_232_device>;
//-------------------------------------------------
coco_232_device::coco_232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, COCO_232, "CoCo RS-232 PAK", tag, owner, clock, "coco_232", __FILE__),
- device_cococart_interface( mconfig, *this ),
- m_uart(*this, UART_TAG)
+ : device_t(mconfig, COCO_232, tag, owner, clock)
+ , device_cococart_interface(mconfig, *this)
+ , m_uart(*this, UART_TAG)
{
}
diff --git a/src/devices/bus/coco/coco_232.h b/src/devices/bus/coco/coco_232.h
index 3ff2107985f..6b2a2d9de1e 100644
--- a/src/devices/bus/coco/coco_232.h
+++ b/src/devices/bus/coco/coco_232.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Nathan Woods
-#pragma once
+#ifndef MAME_BUS_COCO_COCO_232_H
+#define MAME_BUS_COCO_COCO_232_H
-#ifndef __COCO_232_H__
-#define __COCO_232_H__
+#pragma once
#include "cococart.h"
#include "machine/mos6551.h"
@@ -19,23 +19,23 @@ class coco_232_device :
public device_cococart_interface
{
public:
- // construction/destruction
- coco_232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ coco_232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual DECLARE_READ8_MEMBER(read) override;
- virtual DECLARE_WRITE8_MEMBER(write) override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual DECLARE_READ8_MEMBER(read) override;
+ virtual DECLARE_WRITE8_MEMBER(write) override;
private:
// internal state
- required_device<mos6551_device> m_uart;
+ required_device<mos6551_device> m_uart;
};
// device type definition
-extern const device_type COCO_232;
+DECLARE_DEVICE_TYPE(COCO_232, coco_232_device)
-#endif /* __COCO_232_H__ */
+#endif // MAME_BUS_COCO_COCO_232_H
diff --git a/src/devices/bus/coco/coco_dwsock.cpp b/src/devices/bus/coco/coco_dwsock.cpp
index 91fa892e950..28914abb994 100644
--- a/src/devices/bus/coco/coco_dwsock.cpp
+++ b/src/devices/bus/coco/coco_dwsock.cpp
@@ -1,5 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:Nathan Woods
+#include "emu.h"
+#include "coco_dwsock.h"
+
#include <stdio.h>
#include <stdlib.h>
#ifdef __GNUC__
@@ -8,16 +11,12 @@
#include <fcntl.h>
#include <sys/types.h>
-#include "emu.h"
-#include "osdcore.h"
-
-#include "coco_dwsock.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COCO_DWSOCK = device_creator<beckerport_device>;
+DEFINE_DEVICE_TYPE(COCO_DWSOCK, beckerport_device, "coco_dwsock", "Virtual Becker Port")
//-------------------------------------------------
// INPUT_PORTS( coco_drivewire )
@@ -64,8 +63,8 @@ INPUT_CHANGED_MEMBER(beckerport_device::drivewire_port_changed)
//-------------------------------------------------
beckerport_device::beckerport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, COCO_DWSOCK, "Virtual Becker Port", tag, owner, clock, "coco_dwsock", __FILE__), m_hostname(nullptr),
- m_dwconfigport(*this, DRIVEWIRE_PORT_TAG), m_dwtcpport(0)
+ : device_t(mconfig, COCO_DWSOCK, tag, owner, clock)
+ , m_hostname(nullptr), m_dwconfigport(*this, DRIVEWIRE_PORT_TAG), m_dwtcpport(0)
{
m_head = 0;
m_rx_pending = 0;
@@ -163,7 +162,7 @@ READ8_MEMBER(beckerport_device::read)
fprintf(stderr, "%s: read from bad offset %d\n", __FILE__, offset);
}
- return (int)data;
+ return data;
}
/*-------------------------------------------------
diff --git a/src/devices/bus/coco/coco_dwsock.h b/src/devices/bus/coco/coco_dwsock.h
index deba649f761..a9ac21a18e4 100644
--- a/src/devices/bus/coco/coco_dwsock.h
+++ b/src/devices/bus/coco/coco_dwsock.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Nathan Woods
-#ifndef MAME_DEVICES_BUS_COCO_DWSOCKH_H
-#define MAME_DEVICES_BUS_COCO_DWSOCKH_H
+#ifndef MAME_BUS_COCO_COCO_DWSOCKH_H
+#define MAME_BUS_COCO_COCO_DWSOCKH_H
#include "osdcore.h"
@@ -64,9 +64,9 @@ private:
};
// device type definition
-extern const device_type COCO_DWSOCK;
+DECLARE_DEVICE_TYPE(COCO_DWSOCK, beckerport_device)
// device iterator
typedef device_type_iterator<beckerport_device> beckerport_device_iterator;
-#endif // MAME_DEVICES_BUS_COCO_DWSOCKH_H
+#endif // MAME_BUS_COCO_COCO_DWSOCKH_H
diff --git a/src/devices/bus/coco/coco_fdc.cpp b/src/devices/bus/coco/coco_fdc.cpp
index 6cb6d6df646..29fdaef874f 100644
--- a/src/devices/bus/coco/coco_fdc.cpp
+++ b/src/devices/bus/coco/coco_fdc.cpp
@@ -71,11 +71,10 @@
class coco_fdc_device_base : public coco_family_fdc_device_base
{
-public:
+protected:
// construction/destruction
- coco_fdc_device_base(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ coco_fdc_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-protected:
enum class rtc_type
{
DISTO = 0x00,
@@ -94,7 +93,7 @@ protected:
rtc_type real_time_clock();
// devices
- required_device<wd1773_t> m_wd17xx;
+ required_device<wd1773_device> m_wd17xx;
required_device<ds1315_device> m_ds1315;
required_device_array<floppy_connector, 4> m_floppies;
@@ -185,8 +184,8 @@ uint8_t* coco_family_fdc_device_base::get_cart_base()
// coco_fdc_device_base - constructor
//-------------------------------------------------
-coco_fdc_device_base::coco_fdc_device_base(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : coco_family_fdc_device_base(mconfig, type, name, tag, owner, clock, shortname, source)
+coco_fdc_device_base::coco_fdc_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : coco_family_fdc_device_base(mconfig, type, tag, owner, clock)
, m_wd17xx(*this, WD_TAG)
, m_ds1315(*this, CLOUD9_TAG)
, m_floppies(*this, WD_TAG ":%u", 0)
@@ -418,7 +417,7 @@ namespace
public:
// construction/destruction
coco_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : coco_fdc_device_base(mconfig, COCO_FDC, "CoCo FDC", tag, owner, clock, "coco_fdc", __FILE__)
+ : coco_fdc_device_base(mconfig, COCO_FDC, tag, owner, clock)
{
}
@@ -432,7 +431,8 @@ namespace
};
}
-const device_type COCO_FDC = device_creator<coco_fdc_device>;
+
+DEFINE_DEVICE_TYPE(COCO_FDC, coco_fdc_device, "coco_fdc", "CoCo FDC")
//**************************************************************************
@@ -454,7 +454,7 @@ namespace
public:
// construction/destruction
coco_fdc_v11_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : coco_fdc_device_base(mconfig, COCO_FDC_V11, "CoCo FDC v1.1", tag, owner, clock, "coco_fdc_v11", __FILE__)
+ : coco_fdc_device_base(mconfig, COCO_FDC_V11, tag, owner, clock)
{
}
@@ -465,9 +465,9 @@ namespace
return ROM_NAME(coco_fdc_v11);
}
};
-};
+}
-const device_type COCO_FDC_V11 = device_creator<coco_fdc_v11_device>;
+DEFINE_DEVICE_TYPE(COCO_FDC_V11, coco_fdc_v11_device, "coco_fdc_v11", "CoCo FDC v1.1")
//**************************************************************************
@@ -489,7 +489,7 @@ namespace
public:
// construction/destruction
coco3_hdb1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : coco_fdc_device_base(mconfig, COCO3_HDB1, "CoCo3 HDB-DOS", tag, owner, clock, "coco3_hdb1", __FILE__)
+ : coco_fdc_device_base(mconfig, COCO3_HDB1, tag, owner, clock)
{
}
@@ -500,9 +500,9 @@ namespace
return ROM_NAME(coco3_hdb1);
}
};
-};
+}
-const device_type COCO3_HDB1 = device_creator<coco3_hdb1_device>;
+DEFINE_DEVICE_TYPE(COCO3_HDB1, coco3_hdb1_device, "coco3_hdb1", "CoCo3 HDB-DOS")
//**************************************************************************
// CP400 FDC
@@ -520,7 +520,7 @@ namespace
public:
// construction/destruction
cp400_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : coco_fdc_device_base(mconfig, CP400_FDC, "CP400 FDC", tag, owner, clock, "cp400_fdc", __FILE__)
+ : coco_fdc_device_base(mconfig, CP400_FDC, tag, owner, clock)
{
}
@@ -531,6 +531,6 @@ namespace
return ROM_NAME(cp400_fdc);
}
};
-};
+}
-const device_type CP400_FDC = device_creator<cp400_fdc_device>;
+DEFINE_DEVICE_TYPE(CP400_FDC, cp400_fdc_device, "cp400_fdc", "CP400 FDC")
diff --git a/src/devices/bus/coco/coco_fdc.h b/src/devices/bus/coco/coco_fdc.h
index 4dcd4b7b694..c596dfeef33 100644
--- a/src/devices/bus/coco/coco_fdc.h
+++ b/src/devices/bus/coco/coco_fdc.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef MAME_DEVICES_BUS_COCO_FDC_H
-#define MAME_DEVICES_BUS_COCO_FDC_H
+#ifndef MAME_BUS_COCO_COCO_FDC_H
+#define MAME_BUS_COCO_COCO_FDC_H
#include "cococart.h"
#include "imagedev/floppy.h"
@@ -26,20 +26,20 @@ class coco_family_fdc_device_base :
public device_cococart_interface
{
public:
- // construction/destruction
- coco_family_fdc_device_base(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
- , device_cococart_interface(mconfig, *this)
- {
- m_owner = dynamic_cast<cococart_slot_device *>(owner);
- };
-
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w) { m_intrq = state; update_lines(); }
DECLARE_WRITE_LINE_MEMBER(fdc_drq_w) { m_drq = state; update_lines(); }
DECLARE_FLOPPY_FORMATS(floppy_formats);
protected:
+ // construction/destruction
+ coco_family_fdc_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_cococart_interface(mconfig, *this)
+ {
+ m_owner = dynamic_cast<cococart_slot_device *>(owner);
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -84,4 +84,4 @@ extern const device_type CP400_FDC;
extern const device_type DRAGON_FDC;
extern const device_type SDTANDY_FDC;
-#endif // MAME_DEVICES_BUS_COCO_FDC_H
+#endif // MAME_BUS_COCO_COCO_FDC_H
diff --git a/src/devices/bus/coco/coco_multi.cpp b/src/devices/bus/coco/coco_multi.cpp
index 5e1737d7347..32813925984 100644
--- a/src/devices/bus/coco/coco_multi.cpp
+++ b/src/devices/bus/coco/coco_multi.cpp
@@ -111,7 +111,7 @@ MACHINE_CONFIG_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type COCO_MULTIPAK = device_creator<coco_multipak_device>;
+DEFINE_DEVICE_TYPE(COCO_MULTIPAK, coco_multipak_device, "coco_multipack", "CoCo Multi-Pak Interface")
@@ -124,8 +124,9 @@ const device_type COCO_MULTIPAK = device_creator<coco_multipak_device>;
//-------------------------------------------------
coco_multipak_device::coco_multipak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, COCO_MULTIPAK, "CoCo Multi-Pak Interface", tag, owner, clock, "coco_multipak", __FILE__),
- device_cococart_interface( mconfig, *this ), m_select(0)
+ : device_t(mconfig, COCO_MULTIPAK, tag, owner, clock)
+ , device_cococart_interface(mconfig, *this)
+ , m_slots(*this, "slot%u", 1), m_select(0)
{
}
@@ -136,12 +137,6 @@ coco_multipak_device::coco_multipak_device(const machine_config &mconfig, const
void coco_multipak_device::device_start()
{
- // identify slots
- m_slots[0] = dynamic_cast<cococart_slot_device *>(subdevice(SLOT1_TAG));
- m_slots[1] = dynamic_cast<cococart_slot_device *>(subdevice(SLOT2_TAG));
- m_slots[2] = dynamic_cast<cococart_slot_device *>(subdevice(SLOT3_TAG));
- m_slots[3] = dynamic_cast<cococart_slot_device *>(subdevice(SLOT4_TAG));
-
// install $FF7F handler
write8_delegate wh = write8_delegate(FUNC(coco_multipak_device::ff7f_write), this);
machine().device(":maincpu")->memory().space(AS_PROGRAM).install_write_handler(0xFF7F, 0xFF7F, wh);
diff --git a/src/devices/bus/coco/coco_multi.h b/src/devices/bus/coco/coco_multi.h
index 92f029a5703..e3e9ce850ab 100644
--- a/src/devices/bus/coco/coco_multi.h
+++ b/src/devices/bus/coco/coco_multi.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_COCO_COCO_MULTI_H
+#define MAME_BUS_COCO_COCO_MULTI_H
-#ifndef __COCO_MULTI_H__
-#define __COCO_MULTI_H__
+#pragma once
#include "cococart.h"
@@ -61,7 +61,7 @@ protected:
private:
// device references
- std::array<cococart_slot_device *, 4> m_slots;
+ required_device_array<cococart_slot_device, 4> m_slots;
// internal state
uint8_t m_select;
@@ -82,6 +82,6 @@ private:
// device type definition
-extern const device_type COCO_MULTIPAK;
+DECLARE_DEVICE_TYPE(COCO_MULTIPAK, coco_multipak_device)
-#endif /* __COCO_MULTI_H__ */
+#endif // MAME_BUS_COCO_COCO_MULTI_H
diff --git a/src/devices/bus/coco/coco_orch90.cpp b/src/devices/bus/coco/coco_orch90.cpp
index 1d3ee1c5a94..f1f66367ed6 100644
--- a/src/devices/bus/coco/coco_orch90.cpp
+++ b/src/devices/bus/coco/coco_orch90.cpp
@@ -32,7 +32,7 @@ MACHINE_CONFIG_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type COCO_ORCH90 = device_creator<coco_orch90_device>;
+DEFINE_DEVICE_TYPE(COCO_ORCH90, coco_orch90_device, "coco_orch90", "CoCo Orch-90 PAK")
//**************************************************************************
// LIVE DEVICE
@@ -43,10 +43,10 @@ const device_type COCO_ORCH90 = device_creator<coco_orch90_device>;
//-------------------------------------------------
coco_orch90_device::coco_orch90_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, COCO_ORCH90, "CoCo Orch-90 PAK", tag, owner, clock, "coco_orch90", __FILE__),
- device_cococart_interface(mconfig, *this ),
- m_ldac(*this, "ldac"),
- m_rdac(*this, "rdac")
+ : device_t(mconfig, COCO_ORCH90, tag, owner, clock)
+ , device_cococart_interface(mconfig, *this )
+ , m_ldac(*this, "ldac")
+ , m_rdac(*this, "rdac")
{
}
diff --git a/src/devices/bus/coco/coco_orch90.h b/src/devices/bus/coco/coco_orch90.h
index 8ef59729ceb..ceed461ba36 100644
--- a/src/devices/bus/coco/coco_orch90.h
+++ b/src/devices/bus/coco/coco_orch90.h
@@ -1,12 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:Nathan Woods
-#pragma once
+#ifndef MAME_BUS_COCO_COCO_ORCH90_H
+#define MAME_BUS_COCO_COCO_ORCH90_H
-#ifndef __COCO_ORCH90_H__
-#define __COCO_ORCH90_H__
+#pragma once
-#include "sound/dac.h"
#include "cococart.h"
+#include "sound/dac.h"
//**************************************************************************
// TYPE DEFINITIONS
@@ -36,6 +36,6 @@ private:
// device type definition
-extern const device_type COCO_ORCH90;
+DECLARE_DEVICE_TYPE(COCO_ORCH90, coco_orch90_device)
-#endif /* __COCO_ORCH90_H__ */
+#endif // MAME_BUS_COCO_COCO_ORCH90_H
diff --git a/src/devices/bus/coco/coco_pak.cpp b/src/devices/bus/coco/coco_pak.cpp
index f4efb829c70..97bcaddc6fa 100644
--- a/src/devices/bus/coco/coco_pak.cpp
+++ b/src/devices/bus/coco/coco_pak.cpp
@@ -43,7 +43,7 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type COCO_PAK = device_creator<coco_pak_device>;
+DEFINE_DEVICE_TYPE(COCO_PAK, coco_pak_device, "cocopak", "CoCo Program PAK")
//**************************************************************************
// LIVE DEVICE
@@ -52,18 +52,16 @@ const device_type COCO_PAK = device_creator<coco_pak_device>;
//-------------------------------------------------
// coco_pak_device - constructor
//-------------------------------------------------
-coco_pak_device::coco_pak_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_cococart_interface( mconfig, *this ), m_cart(nullptr), m_owner(nullptr),
- m_autostart(*this, CART_AUTOSTART_TAG)
+coco_pak_device::coco_pak_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_cococart_interface(mconfig, *this)
+ , m_cart(nullptr), m_owner(nullptr), m_autostart(*this, CART_AUTOSTART_TAG)
{
}
coco_pak_device::coco_pak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, COCO_PAK, "CoCo Program PAK", tag, owner, clock, "cocopak", __FILE__),
- device_cococart_interface( mconfig, *this ), m_cart(nullptr), m_owner(nullptr),
- m_autostart(*this, CART_AUTOSTART_TAG)
- {
+ : coco_pak_device(mconfig, COCO_PAK, tag, owner, clock)
+{
}
//-------------------------------------------------
@@ -138,7 +136,7 @@ uint8_t* coco_pak_device::get_cart_base()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type COCO_PAK_BANKED = device_creator<coco_pak_banked_device>;
+DEFINE_DEVICE_TYPE(COCO_PAK_BANKED, coco_pak_banked_device, "cocopak_banked", "CoCo Program PAK (Banked)")
//**************************************************************************
// LIVE DEVICE
@@ -149,7 +147,7 @@ const device_type COCO_PAK_BANKED = device_creator<coco_pak_banked_device>;
//-------------------------------------------------
coco_pak_banked_device::coco_pak_banked_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : coco_pak_device(mconfig, COCO_PAK_BANKED, "CoCo Program PAK (Banked)", tag, owner, clock, "cocopak_banked", __FILE__)
+ : coco_pak_device(mconfig, COCO_PAK_BANKED, tag, owner, clock)
{
}
diff --git a/src/devices/bus/coco/coco_pak.h b/src/devices/bus/coco/coco_pak.h
index f4fd2894681..6c7862da2ac 100644
--- a/src/devices/bus/coco/coco_pak.h
+++ b/src/devices/bus/coco/coco_pak.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Nathan Woods
-#pragma once
+#ifndef MAME_BUS_COCO_COCO_PAK_H
+#define MAME_BUS_COCO_COCO_PAK_H
-#ifndef __COCO_PAK_H__
-#define __COCO_PAK_H__
+#pragma once
#include "cococart.h"
@@ -18,50 +18,52 @@ class coco_pak_device :
public device_cococart_interface
{
public:
- // construction/destruction
- coco_pak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- coco_pak_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ // construction/destruction
+ coco_pak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual ioport_constructor device_input_ports() const override;
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual ioport_constructor device_input_ports() const override;
+ virtual uint8_t* get_cart_base() override;
- virtual uint8_t* get_cart_base() override;
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ coco_pak_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- // internal state
- device_image_interface *m_cart;
- cococart_slot_device *m_owner;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
- optional_ioport m_autostart;
+ // internal state
+ device_image_interface *m_cart;
+ cococart_slot_device *m_owner;
+
+ optional_ioport m_autostart;
};
// device type definition
-extern const device_type COCO_PAK;
+DECLARE_DEVICE_TYPE(COCO_PAK, coco_pak_device)
// ======================> coco_pak_banked_device
-class coco_pak_banked_device :
- public coco_pak_device
+class coco_pak_banked_device : public coco_pak_device
{
public:
- // construction/destruction
- coco_pak_banked_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ coco_pak_banked_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
- // device-level overrides
- virtual void device_reset() override;
- virtual DECLARE_WRITE8_MEMBER(write) override;
+ // device-level overrides
+ virtual void device_reset() override;
+ virtual DECLARE_WRITE8_MEMBER(write) override;
private:
- void banked_pak_set_bank(uint32_t bank);
+ void banked_pak_set_bank(uint32_t bank);
};
// device type definition
-extern const device_type COCO_PAK_BANKED;
-#endif /* __COCO_PAK_H__ */
+DECLARE_DEVICE_TYPE(COCO_PAK_BANKED, coco_pak_banked_device)
+
+#endif // MAME_BUS_COCO_COCO_PAK_H
diff --git a/src/devices/bus/coco/coco_t4426.cpp b/src/devices/bus/coco/coco_t4426.cpp
index f76094695bf..aea2403f076 100644
--- a/src/devices/bus/coco/coco_t4426.cpp
+++ b/src/devices/bus/coco/coco_t4426.cpp
@@ -124,7 +124,7 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type COCO_T4426 = device_creator<coco_t4426_device>;
+DEFINE_DEVICE_TYPE(COCO_T4426, coco_t4426_device, "coco_t4426", "Terco CNC Programming Station 4426 multi cart")
//**************************************************************************
// LIVE DEVICE
@@ -134,27 +134,20 @@ const device_type COCO_T4426 = device_creator<coco_t4426_device>;
// coco_t4426_device - constructor
//-------------------------------------------------
-coco_t4426_device::coco_t4426_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
- ,device_cococart_interface( mconfig, *this )
- ,m_cart(nullptr)
- ,m_owner(nullptr)
- ,m_select(0)
- ,m_autostart(*this, CART_AUTOSTART_TAG)
- ,m_uart(*this, UART_TAG)
- ,m_pia(*this, PIA_TAG)
+coco_t4426_device::coco_t4426_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_cococart_interface(mconfig, *this)
+ , m_cart(nullptr)
+ , m_owner(nullptr)
+ , m_select(0)
+ , m_autostart(*this, CART_AUTOSTART_TAG)
+ , m_uart(*this, UART_TAG)
+ , m_pia(*this, PIA_TAG)
{
}
coco_t4426_device::coco_t4426_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, COCO_T4426, "Terco CNC Programming Station 4426 multi cart", tag, owner, clock, "coco_t4426", __FILE__)
- ,device_cococart_interface( mconfig, *this )
- ,m_cart(nullptr)
- ,m_owner(nullptr)
- ,m_select(0)
- ,m_autostart(*this, CART_AUTOSTART_TAG)
- ,m_uart(*this, UART_TAG)
- ,m_pia(*this, PIA_TAG)
+ : coco_t4426_device(mconfig, COCO_T4426, tag, owner, clock)
{
}
diff --git a/src/devices/bus/coco/coco_t4426.h b/src/devices/bus/coco/coco_t4426.h
index 92beb845fd2..3d1aafacd7d 100644
--- a/src/devices/bus/coco/coco_t4426.h
+++ b/src/devices/bus/coco/coco_t4426.h
@@ -20,40 +20,41 @@ class coco_t4426_device :
public device_cococart_interface
{
public:
- // construction/destruction
- coco_t4426_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- coco_t4426_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ coco_t4426_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual ioport_constructor device_input_ports() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual ioport_constructor device_input_ports() const override;
- virtual uint8_t* get_cart_base() override;
- DECLARE_WRITE8_MEMBER( pia_A_w );
+ virtual uint8_t* get_cart_base() override;
+ DECLARE_WRITE8_MEMBER( pia_A_w );
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ coco_t4426_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- // internal state
- device_image_interface *m_cart;
- cococart_slot_device *m_owner;
- uint8_t m_select;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
- optional_ioport m_autostart;
+ // internal state
+ device_image_interface *m_cart;
+ cococart_slot_device *m_owner;
+ uint8_t m_select;
- virtual DECLARE_READ8_MEMBER(read) override;
- virtual DECLARE_WRITE8_MEMBER(write) override;
+ optional_ioport m_autostart;
+
+ virtual DECLARE_READ8_MEMBER(read) override;
+ virtual DECLARE_WRITE8_MEMBER(write) override;
private:
- // internal state
- required_device<acia6850_device> m_uart;
- required_device<pia6821_device> m_pia;
+ // internal state
+ required_device<acia6850_device> m_uart;
+ required_device<pia6821_device> m_pia;
};
// device type definition
-extern const device_type COCO_T4426;
+DECLARE_DEVICE_TYPE(COCO_T4426, coco_t4426_device)
-#endif /* MAME_BUS_COCO_T4426_H */
+#endif // MAME_BUS_COCO_T4426_H
diff --git a/src/devices/bus/coco/cococart.cpp b/src/devices/bus/coco/cococart.cpp
index 545c29b408e..db2651e32ee 100644
--- a/src/devices/bus/coco/cococart.cpp
+++ b/src/devices/bus/coco/cococart.cpp
@@ -23,7 +23,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type COCOCART_SLOT = device_creator<cococart_slot_device>;
+DEFINE_DEVICE_TYPE(COCOCART_SLOT, cococart_slot_device, "cococart_slot", "CoCo Cartridge Slot")
@@ -35,12 +35,12 @@ const device_type COCOCART_SLOT = device_creator<cococart_slot_device>;
// cococart_slot_device - constructor
//-------------------------------------------------
cococart_slot_device::cococart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COCOCART_SLOT, "CoCo Cartridge Slot", tag, owner, clock, "cococart_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- device_image_interface(mconfig, *this),
- m_cart_callback(*this),
- m_nmi_callback(*this),
- m_halt_callback(*this), m_cart(nullptr)
+ device_t(mconfig, COCOCART_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ device_image_interface(mconfig, *this),
+ m_cart_callback(*this),
+ m_nmi_callback(*this),
+ m_halt_callback(*this), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h
index bbb132359b0..1d6049119e7 100644
--- a/src/devices/bus/coco/cococart.h
+++ b/src/devices/bus/coco/cococart.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __COCOCART_H__
-#define __COCOCART_H__
+#ifndef MAME_BUS_COCO_COCOCART_H
+#define MAME_BUS_COCO_COCOCART_H
+
+#pragma once
#include "softlist_dev.h"
@@ -61,9 +63,9 @@ public:
// construction/destruction
cococart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &static_set_cart_callback(device_t &device, _Object object) { return downcast<cococart_slot_device &>(device).m_cart_callback.set_callback(object); }
- template<class _Object> static devcb_base &static_set_nmi_callback(device_t &device, _Object object) { return downcast<cococart_slot_device &>(device).m_nmi_callback.set_callback(object); }
- template<class _Object> static devcb_base &static_set_halt_callback(device_t &device, _Object object) { return downcast<cococart_slot_device &>(device).m_halt_callback.set_callback(object); }
+ template <class Object> static devcb_base &static_set_cart_callback(device_t &device, Object &&cb) { return downcast<cococart_slot_device &>(device).m_cart_callback.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_nmi_callback(device_t &device, Object &&cb) { return downcast<cococart_slot_device &>(device).m_nmi_callback.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_halt_callback(device_t &device, Object &&cb) { return downcast<cococart_slot_device &>(device).m_halt_callback.set_callback(std::forward<Object>(cb)); }
// device-level overrides
virtual void device_start() override;
@@ -144,6 +146,7 @@ private:
// device type definition
extern const device_type COCOCART_SLOT;
+DECLARE_DEVICE_TYPE(COCOCART_SLOT, cococart_slot_device)
// ======================> device_cococart_interface
@@ -151,7 +154,6 @@ class device_cococart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_cococart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_cococart_interface();
virtual DECLARE_READ8_MEMBER(read);
@@ -162,6 +164,8 @@ public:
void set_cart_base_update(cococart_base_update_delegate update);
protected:
+ device_cococart_interface(const machine_config &mconfig, device_t &device);
+
void cart_base_changed(void);
private:
@@ -179,4 +183,4 @@ private:
#define MCFG_COCO_CARTRIDGE_REMOVE(_tag) \
MCFG_DEVICE_REMOVE(_tag)
-#endif // __COCOCART_H__
+#endif // MAME_BUS_COCO_COCOCART_H
diff --git a/src/devices/bus/coco/dragon_fdc.cpp b/src/devices/bus/coco/dragon_fdc.cpp
index f6b161ba1f5..9b8a1d61317 100644
--- a/src/devices/bus/coco/dragon_fdc.cpp
+++ b/src/devices/bus/coco/dragon_fdc.cpp
@@ -91,11 +91,10 @@ namespace
{
class dragon_fdc_device_base : public coco_family_fdc_device_base
{
- public:
+ protected:
// construction/destruction
- dragon_fdc_device_base(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ dragon_fdc_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- protected:
// device-level overrides
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
@@ -104,13 +103,13 @@ namespace
private:
// device references
- required_device<wd2797_t> m_wd2797;
+ required_device<wd2797_device> m_wd2797;
required_device_array<floppy_connector, 4> m_floppies;
// methods
void dskreg_w(uint8_t data);
};
-};
+}
/***************************************************************************
LOCAL VARIABLES
@@ -144,8 +143,8 @@ MACHINE_CONFIG_END
//-------------------------------------------------
// dragon_fdc_device_base - constructor
//-------------------------------------------------
-dragon_fdc_device_base::dragon_fdc_device_base(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : coco_family_fdc_device_base(mconfig, type, name, tag, owner, clock, shortname, source)
+dragon_fdc_device_base::dragon_fdc_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : coco_family_fdc_device_base(mconfig, type, tag, owner, clock)
, m_wd2797(*this, WD2797_TAG)
, m_floppies(*this, WD2797_TAG ":%u", 0)
{
@@ -288,7 +287,7 @@ namespace
public:
// construction/destruction
dragon_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dragon_fdc_device_base(mconfig, DRAGON_FDC, "Dragon FDC", tag, owner, clock, "dragon_fdc", __FILE__)
+ : dragon_fdc_device_base(mconfig, DRAGON_FDC, tag, owner, clock)
{
}
@@ -299,9 +298,9 @@ namespace
return ROM_NAME(dragon_fdc);
}
};
-};
+}
-const device_type DRAGON_FDC = device_creator<dragon_fdc_device>;
+DEFINE_DEVICE_TYPE(DRAGON_FDC, dragon_fdc_device, "dragon_fdc", "Dragon FDC")
//**************************************************************************
@@ -320,7 +319,7 @@ namespace
public:
// construction/destruction
sdtandy_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dragon_fdc_device_base(mconfig, SDTANDY_FDC, "SDTANDY FDC", tag, owner, clock, "sdtandy_fdc", __FILE__)
+ : dragon_fdc_device_base(mconfig, SDTANDY_FDC, tag, owner, clock)
{
}
@@ -331,6 +330,6 @@ namespace
return ROM_NAME(sdtandy_fdc);
}
};
-};
+}
-const device_type SDTANDY_FDC = device_creator<sdtandy_fdc_device>;
+DEFINE_DEVICE_TYPE(SDTANDY_FDC, sdtandy_fdc_device, "sdtandy_fdc", "SDTANDY FDC")
diff --git a/src/devices/bus/coleco/ctrl.cpp b/src/devices/bus/coleco/ctrl.cpp
index 6553f56b19a..630553998de 100644
--- a/src/devices/bus/coleco/ctrl.cpp
+++ b/src/devices/bus/coleco/ctrl.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITION
//**************************************************************************
-const device_type COLECOVISION_CONTROL_PORT = device_creator<colecovision_control_port_device>;
+DEFINE_DEVICE_TYPE(COLECOVISION_CONTROL_PORT, colecovision_control_port_device, "colecovision_control_port", "ColecoVision control port")
@@ -46,8 +46,9 @@ device_colecovision_control_port_interface::device_colecovision_control_port_int
//-------------------------------------------------
colecovision_control_port_device::colecovision_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COLECOVISION_CONTROL_PORT, "ColecoVision control port", tag, owner, clock, "colecovision_control_port", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr),
+ device_t(mconfig, COLECOVISION_CONTROL_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_device(nullptr),
m_write_irq(*this)
{
}
diff --git a/src/devices/bus/coleco/ctrl.h b/src/devices/bus/coleco/ctrl.h
index 3555e0299e6..df39b41944c 100644
--- a/src/devices/bus/coleco/ctrl.h
+++ b/src/devices/bus/coleco/ctrl.h
@@ -9,10 +9,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COLECO_CTRL_H
+#define MAME_BUS_COLECO_CTRL_H
-#ifndef __COLECOVISION_CONTROL_PORT__
-#define __COLECOVISION_CONTROL_PORT__
+#pragma once
@@ -43,15 +43,14 @@ class colecovision_control_port_device;
class device_colecovision_control_port_interface : public device_slot_card_interface
{
public:
+ virtual uint8_t joy_r() { return 0xff; }
+ virtual void common0_w(int state) { m_common0 = state; }
+ virtual void common1_w(int state) { m_common1 = state; }
+
+protected:
// construction/destruction
device_colecovision_control_port_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_colecovision_control_port_interface() { }
- virtual uint8_t joy_r() { return 0xff; };
- virtual void common0_w(int state) { m_common0 = state; };
- virtual void common1_w(int state) { m_common1 = state; };
-
-protected:
colecovision_control_port_device *m_port;
int m_common0;
@@ -67,10 +66,9 @@ class colecovision_control_port_device : public device_t,
public:
// construction/destruction
colecovision_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~colecovision_control_port_device() { }
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<colecovision_control_port_device &>(device).m_write_irq.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<colecovision_control_port_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t read() { uint8_t data = 0xff; if (exists()) data = m_device->joy_r(); return data; }
@@ -95,10 +93,9 @@ private:
// device type definition
-extern const device_type COLECOVISION_CONTROL_PORT;
+DECLARE_DEVICE_TYPE(COLECOVISION_CONTROL_PORT, colecovision_control_port_device)
SLOT_INTERFACE_EXTERN( colecovision_control_port_devices );
-
-#endif
+#endif // MAME_BUS_COLECO_CTRL_H
diff --git a/src/devices/bus/coleco/exp.cpp b/src/devices/bus/coleco/exp.cpp
index 2eafe5ac05b..b092fd5a49b 100644
--- a/src/devices/bus/coleco/exp.cpp
+++ b/src/devices/bus/coleco/exp.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COLECOVISION_CARTRIDGE_SLOT = device_creator<colecovision_cartridge_slot_device>;
+DEFINE_DEVICE_TYPE(COLECOVISION_CARTRIDGE_SLOT, colecovision_cartridge_slot_device, "coleco_cartridge_port", "ColecoVision cartridge port")
@@ -54,9 +54,10 @@ void device_colecovision_cartridge_interface::rom_alloc(size_t size)
//-------------------------------------------------
colecovision_cartridge_slot_device::colecovision_cartridge_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COLECOVISION_CARTRIDGE_SLOT, "ColecoVision cartridge port", tag, owner, clock, "coleco_cartridge_port", __FILE__),
+ device_t(mconfig, COLECOVISION_CARTRIDGE_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
- device_image_interface(mconfig, *this), m_card(nullptr)
+ device_image_interface(mconfig, *this),
+ m_card(nullptr)
{
}
diff --git a/src/devices/bus/coleco/exp.h b/src/devices/bus/coleco/exp.h
index 2c9682381fc..4c4f8db8fa8 100644
--- a/src/devices/bus/coleco/exp.h
+++ b/src/devices/bus/coleco/exp.h
@@ -25,10 +25,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COLECO_EXP_H
+#define MAME_BUS_COLECO_EXP_H
-#ifndef __COLECOVISION_CARTRIDGE_SLOT__
-#define __COLECOVISION_CARTRIDGE_SLOT__
+#pragma once
#include "softlist_dev.h"
@@ -66,7 +66,6 @@ class colecovision_cartridge_slot_device : public device_t,
public:
// construction/destruction
colecovision_cartridge_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~colecovision_cartridge_slot_device() { }
// computer interface
uint8_t bd_r(address_space &space, offs_t offset, uint8_t data, int _8000, int _a000, int _c000, int _e000);
@@ -103,15 +102,14 @@ class device_colecovision_cartridge_interface : public device_slot_card_interfac
friend class colecovision_cartridge_slot_device;
public:
- // construction/destruction
- device_colecovision_cartridge_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_colecovision_cartridge_interface() { }
-
virtual uint8_t bd_r(address_space &space, offs_t offset, uint8_t data, int _8000, int _a000, int _c000, int _e000) { return 0xff; }
void rom_alloc(size_t size);
protected:
+ // construction/destruction
+ device_colecovision_cartridge_interface(const machine_config &mconfig, device_t &device);
+
uint8_t *m_rom;
size_t m_rom_size;
@@ -120,10 +118,9 @@ protected:
// device type definition
-extern const device_type COLECOVISION_CARTRIDGE_SLOT;
+DECLARE_DEVICE_TYPE(COLECOVISION_CARTRIDGE_SLOT, colecovision_cartridge_slot_device)
SLOT_INTERFACE_EXTERN( colecovision_cartridges );
-
-#endif
+#endif // MAME_BUS_COLECO_EXP_H
diff --git a/src/devices/bus/coleco/hand.cpp b/src/devices/bus/coleco/hand.cpp
index 9e9f7610dd4..c11652b5ad5 100644
--- a/src/devices/bus/coleco/hand.cpp
+++ b/src/devices/bus/coleco/hand.cpp
@@ -15,10 +15,10 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COLECO_HAND_CONTROLLER = device_creator<coleco_hand_controller_t>;
+DEFINE_DEVICE_TYPE(COLECO_HAND_CONTROLLER, coleco_hand_controller_device, "coleco_hand", "ColecoVision Hand Controller")
-CUSTOM_INPUT_MEMBER( coleco_hand_controller_t::keypad_r )
+CUSTOM_INPUT_MEMBER( coleco_hand_controller_device::keypad_r )
{
uint8_t data = 0xf;
uint16_t keypad = m_io_keypad->read();
@@ -50,7 +50,7 @@ static INPUT_PORTS_START( coleco_hand_controller )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )
PORT_START("COMMON1")
- PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, coleco_hand_controller_t, keypad_r, nullptr)
+ PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, coleco_hand_controller_device, keypad_r, nullptr)
PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )
@@ -75,7 +75,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor coleco_hand_controller_t::device_input_ports() const
+ioport_constructor coleco_hand_controller_device::device_input_ports() const
{
return INPUT_PORTS_NAME( coleco_hand_controller );
}
@@ -87,11 +87,11 @@ ioport_constructor coleco_hand_controller_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// coleco_hand_controller_t - constructor
+// coleco_hand_controller_device - constructor
//-------------------------------------------------
-coleco_hand_controller_t::coleco_hand_controller_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COLECO_HAND_CONTROLLER, "ColecoVision Hand Controller", tag, owner, clock, "coleco_hand", __FILE__),
+coleco_hand_controller_device::coleco_hand_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, COLECO_HAND_CONTROLLER, tag, owner, clock),
device_colecovision_control_port_interface(mconfig, *this),
m_io_common0(*this, "COMMON0"),
m_io_common1(*this, "COMMON1"),
@@ -104,7 +104,7 @@ coleco_hand_controller_t::coleco_hand_controller_t(const machine_config &mconfig
// device_start - device-specific startup
//-------------------------------------------------
-void coleco_hand_controller_t::device_start()
+void coleco_hand_controller_device::device_start()
{
// state saving
save_item(NAME(m_common0));
@@ -116,7 +116,7 @@ void coleco_hand_controller_t::device_start()
// joy_r - joystick read
//-------------------------------------------------
-uint8_t coleco_hand_controller_t::joy_r()
+uint8_t coleco_hand_controller_device::joy_r()
{
uint8_t data = 0x7f;
diff --git a/src/devices/bus/coleco/hand.h b/src/devices/bus/coleco/hand.h
index 01e4e928534..f65ad709106 100644
--- a/src/devices/bus/coleco/hand.h
+++ b/src/devices/bus/coleco/hand.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COLECO_HAND_H
+#define MAME_BUS_COLECO_HAND_H
-#ifndef __COLECO_HAND_CONTROLLER__
-#define __COLECO_HAND_CONTROLLER__
+#pragma once
#include "ctrl.h"
@@ -19,14 +19,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> coleco_hand_controller_t
+// ======================> coleco_hand_controller_device
-class coleco_hand_controller_t : public device_t,
+class coleco_hand_controller_device : public device_t,
public device_colecovision_control_port_interface
{
public:
// construction/destruction
- coleco_hand_controller_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ coleco_hand_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
@@ -48,7 +48,7 @@ private:
// device type definition
-extern const device_type COLECO_HAND_CONTROLLER;
+DECLARE_DEVICE_TYPE(COLECO_HAND_CONTROLLER, coleco_hand_controller_device)
-#endif
+#endif // MAME_BUS_COLECO_HAND_H
diff --git a/src/devices/bus/coleco/sac.cpp b/src/devices/bus/coleco/sac.cpp
index 28835f7ad85..fd016a0dc19 100644
--- a/src/devices/bus/coleco/sac.cpp
+++ b/src/devices/bus/coleco/sac.cpp
@@ -15,10 +15,10 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COLECO_SUPER_ACTION_CONTROLLER = device_creator<coleco_super_action_controller_t>;
+DEFINE_DEVICE_TYPE(COLECO_SUPER_ACTION_CONTROLLER, coleco_super_action_controller_device, "coleco_sac", "ColecoVision Super Action Controller")
-CUSTOM_INPUT_MEMBER( coleco_super_action_controller_t::keypad_r )
+CUSTOM_INPUT_MEMBER( coleco_super_action_controller_device::keypad_r )
{
uint8_t data = 0xf;
uint16_t keypad = m_io_keypad->read();
@@ -41,7 +41,7 @@ CUSTOM_INPUT_MEMBER( coleco_super_action_controller_t::keypad_r )
return data;
}
-INPUT_CHANGED_MEMBER( coleco_super_action_controller_t::slider_w )
+INPUT_CHANGED_MEMBER( coleco_super_action_controller_device::slider_w )
{
// TODO
}
@@ -57,7 +57,7 @@ static INPUT_PORTS_START( coleco_super_action_controller )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )
PORT_START("COMMON1")
- PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, coleco_super_action_controller_t, keypad_r, nullptr)
+ PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, coleco_super_action_controller_device, keypad_r, nullptr)
PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )
@@ -79,7 +79,7 @@ static INPUT_PORTS_START( coleco_super_action_controller )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON4 )
PORT_START("SLIDER")
- PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(25) PORT_REVERSE PORT_RESET PORT_CHANGED_MEMBER(DEVICE_SELF, coleco_super_action_controller_t, slider_w, nullptr)
+ PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(25) PORT_REVERSE PORT_RESET PORT_CHANGED_MEMBER(DEVICE_SELF, coleco_super_action_controller_device, slider_w, nullptr)
INPUT_PORTS_END
@@ -87,7 +87,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor coleco_super_action_controller_t::device_input_ports() const
+ioport_constructor coleco_super_action_controller_device::device_input_ports() const
{
return INPUT_PORTS_NAME( coleco_super_action_controller );
}
@@ -99,11 +99,11 @@ ioport_constructor coleco_super_action_controller_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// coleco_super_action_controller_t - constructor
+// coleco_super_action_controller_device - constructor
//-------------------------------------------------
-coleco_super_action_controller_t::coleco_super_action_controller_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COLECO_SUPER_ACTION_CONTROLLER, "ColecoVision Super Action Controller", tag, owner, clock, "coleco_sac", __FILE__),
+coleco_super_action_controller_device::coleco_super_action_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, COLECO_SUPER_ACTION_CONTROLLER, tag, owner, clock),
device_colecovision_control_port_interface(mconfig, *this),
m_io_common0(*this, "COMMON0"),
m_io_common1(*this, "COMMON1"),
@@ -116,7 +116,7 @@ coleco_super_action_controller_t::coleco_super_action_controller_t(const machine
// device_start - device-specific startup
//-------------------------------------------------
-void coleco_super_action_controller_t::device_start()
+void coleco_super_action_controller_device::device_start()
{
// state saving
save_item(NAME(m_common0));
@@ -128,7 +128,7 @@ void coleco_super_action_controller_t::device_start()
// joy_r - joystick read
//-------------------------------------------------
-uint8_t coleco_super_action_controller_t::joy_r()
+uint8_t coleco_super_action_controller_device::joy_r()
{
uint8_t data = 0x7f;
diff --git a/src/devices/bus/coleco/sac.h b/src/devices/bus/coleco/sac.h
index 7b6a65b6440..20078e33ef7 100644
--- a/src/devices/bus/coleco/sac.h
+++ b/src/devices/bus/coleco/sac.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COLECO_SAC_H
+#define MAME_BUS_COLECO_SAC_H
-#ifndef __COLECO_SUPER_ACTION_CONTROLLER__
-#define __COLECO_SUPER_ACTION_CONTROLLER__
+#pragma once
#include "ctrl.h"
@@ -19,14 +19,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> coleco_super_action_controller_t
+// ======================> coleco_super_action_controller_device
-class coleco_super_action_controller_t : public device_t,
+class coleco_super_action_controller_device : public device_t,
public device_colecovision_control_port_interface
{
public:
// construction/destruction
- coleco_super_action_controller_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ coleco_super_action_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
@@ -49,7 +49,7 @@ private:
// device type definition
-extern const device_type COLECO_SUPER_ACTION_CONTROLLER;
+DECLARE_DEVICE_TYPE(COLECO_SUPER_ACTION_CONTROLLER, coleco_super_action_controller_device)
-#endif
+#endif // MAME_BUS_COLECO_SAC_H
diff --git a/src/devices/bus/coleco/std.cpp b/src/devices/bus/coleco/std.cpp
index d6ba16eafa5..ae490dea2e9 100644
--- a/src/devices/bus/coleco/std.cpp
+++ b/src/devices/bus/coleco/std.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COLECOVISION_STANDARD = device_creator<colecovision_standard_cartridge_device>;
+DEFINE_DEVICE_TYPE(COLECOVISION_STANDARD, colecovision_standard_cartridge_device, "colecovision_standard", "ColecoVision standard cartridge")
@@ -28,7 +28,7 @@ const device_type COLECOVISION_STANDARD = device_creator<colecovision_standard_c
//-------------------------------------------------
colecovision_standard_cartridge_device::colecovision_standard_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COLECOVISION_STANDARD, "ColecoVision standard cartridge", tag, owner, clock, "colecovision_standard", __FILE__),
+ device_t(mconfig, COLECOVISION_STANDARD, tag, owner, clock),
device_colecovision_cartridge_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/coleco/std.h b/src/devices/bus/coleco/std.h
index ee3cb2adf1f..7ee221502a7 100644
--- a/src/devices/bus/coleco/std.h
+++ b/src/devices/bus/coleco/std.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COLECO_STD_H
+#define MAME_BUS_COLECO_STD_H
-#ifndef __COLECOVISION_STANDARD_CARTRIDGE__
-#define __COLECOVISION_STANDARD_CARTRIDGE__
+#pragma once
#include "exp.h"
@@ -38,7 +38,7 @@ protected:
// device type definition
-extern const device_type COLECOVISION_STANDARD;
+DECLARE_DEVICE_TYPE(COLECOVISION_STANDARD, colecovision_standard_cartridge_device)
-#endif
+#endif // MAME_BUS_COLECO_STD_H
diff --git a/src/devices/bus/coleco/xin1.cpp b/src/devices/bus/coleco/xin1.cpp
index d7de9dde30c..3538f93bb90 100644
--- a/src/devices/bus/coleco/xin1.cpp
+++ b/src/devices/bus/coleco/xin1.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COLECOVISION_XIN1 = device_creator<colecovision_xin1_cartridge_device>;
+DEFINE_DEVICE_TYPE(COLECOVISION_XIN1, colecovision_xin1_cartridge_device, "colecovision_xin1", "ColecoVision X-in-1 cartridge")
@@ -28,7 +28,7 @@ const device_type COLECOVISION_XIN1 = device_creator<colecovision_xin1_cartridge
//-------------------------------------------------
colecovision_xin1_cartridge_device::colecovision_xin1_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COLECOVISION_XIN1, "ColecoVision X-in-1 cartridge", tag, owner, clock, "colecovision_xin1", __FILE__),
+ device_t(mconfig, COLECOVISION_XIN1, tag, owner, clock),
device_colecovision_cartridge_interface(mconfig, *this),
m_current_offset(0)
{
diff --git a/src/devices/bus/coleco/xin1.h b/src/devices/bus/coleco/xin1.h
index 14802eb95da..c5b0ae49b76 100644
--- a/src/devices/bus/coleco/xin1.h
+++ b/src/devices/bus/coleco/xin1.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COLECO_XIN1_H
+#define MAME_BUS_COLECO_XIN1_H
-#ifndef __COLECOVISION_XIN1_CARTRIDGE__
-#define __COLECOVISION_XIN1_CARTRIDGE__
+#pragma once
#include "exp.h"
@@ -42,7 +42,7 @@ private:
// device type definition
-extern const device_type COLECOVISION_XIN1;
+DECLARE_DEVICE_TYPE(COLECOVISION_XIN1, colecovision_xin1_cartridge_device)
-#endif
+#endif // MAME_BUS_COLECO_XIN1_H
diff --git a/src/devices/bus/compis/graphics.cpp b/src/devices/bus/compis/graphics.cpp
index 879c75b5b47..cf66c311632 100644
--- a/src/devices/bus/compis/graphics.cpp
+++ b/src/devices/bus/compis/graphics.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMPIS_GRAPHICS_SLOT = device_creator<compis_graphics_slot_t>;
+DEFINE_DEVICE_TYPE(COMPIS_GRAPHICS_SLOT, compis_graphics_slot_device, "compisgfx_slot", "Compis graphics slot")
@@ -30,16 +30,16 @@ const device_type COMPIS_GRAPHICS_SLOT = device_creator<compis_graphics_slot_t>;
device_compis_graphics_card_interface::device_compis_graphics_card_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device)
{
- m_slot = dynamic_cast<compis_graphics_slot_t *>(device.owner());
+ m_slot = dynamic_cast<compis_graphics_slot_device *>(device.owner());
}
//-------------------------------------------------
-// compis_graphics_slot_t - constructor
+// compis_graphics_slot_device - constructor
//-------------------------------------------------
-compis_graphics_slot_t::compis_graphics_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMPIS_GRAPHICS_SLOT, "Compis graphics slot", tag, owner, clock, "compisgfx_slot", __FILE__),
+compis_graphics_slot_device::compis_graphics_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, COMPIS_GRAPHICS_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_write_dma_request(*this),
m_card(nullptr)
@@ -51,7 +51,7 @@ compis_graphics_slot_t::compis_graphics_slot_t(const machine_config &mconfig, co
// device_start - device-specific startup
//-------------------------------------------------
-void compis_graphics_slot_t::device_start()
+void compis_graphics_slot_device::device_start()
{
m_card = dynamic_cast<device_compis_graphics_card_interface *>(get_card_device());
diff --git a/src/devices/bus/compis/graphics.h b/src/devices/bus/compis/graphics.h
index 9985a41738d..f42bb2bdd30 100644
--- a/src/devices/bus/compis/graphics.h
+++ b/src/devices/bus/compis/graphics.h
@@ -8,10 +8,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMPIS_GRAPHICS_H
+#define MAME_BUS_COMPIS_GRAPHICS_H
-#ifndef __COMPIS_GRAPHICS_SLOT__
-#define __COMPIS_GRAPHICS_SLOT__
+#pragma once
@@ -26,7 +26,7 @@
#define MCFG_COMPIS_GRAPHICS_SLOT_DMA_REQUEST_CALLBACK(_dma_request) \
- downcast<compis_graphics_slot_t *>(device)->set_dma_request_callback(DEVCB_##_dma_request);
+ downcast<compis_graphics_slot_device *>(device)->set_dma_request_callback(DEVCB_##_dma_request);
@@ -36,14 +36,11 @@
// ======================> device_compis_graphics_card_interface
-class compis_graphics_slot_t;
+class compis_graphics_slot_device;
class device_compis_graphics_card_interface : public device_slot_card_interface
{
public:
- // construction/destruction
- device_compis_graphics_card_interface(const machine_config &mconfig, device_t &device);
-
virtual uint8_t mcs0_r(address_space &space, offs_t offset) { return 0xff; }
virtual void mcs0_w(address_space &space, offs_t offset, uint8_t data) { }
virtual uint8_t mcs1_r(address_space &space, offs_t offset) { return 0xff; }
@@ -56,18 +53,21 @@ public:
virtual void dma_ack_w(address_space &space, offs_t offset, uint8_t data) { }
protected:
- compis_graphics_slot_t *m_slot;
+ // construction/destruction
+ device_compis_graphics_card_interface(const machine_config &mconfig, device_t &device);
+
+ compis_graphics_slot_device *m_slot;
};
-// ======================> compis_graphics_slot_t
+// ======================> compis_graphics_slot_device
-class compis_graphics_slot_t : public device_t,
+class compis_graphics_slot_device : public device_t,
public device_slot_interface
{
public:
// construction/destruction
- compis_graphics_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ compis_graphics_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template<class _dma_request> void set_dma_request_callback(_dma_request dma_request) { m_write_dma_request.set_callback(dma_request); }
@@ -98,11 +98,10 @@ protected:
// device type definition
-extern const device_type COMPIS_GRAPHICS_SLOT;
+DECLARE_DEVICE_TYPE(COMPIS_GRAPHICS_SLOT, compis_graphics_slot_device)
SLOT_INTERFACE_EXTERN( compis_graphics_cards );
-
-#endif
+#endif // MAME_BUS_COMPIS_GRAPHICS_H
diff --git a/src/devices/bus/compis/hrg.cpp b/src/devices/bus/compis/hrg.cpp
index 052f2d5ee98..7931ee123d9 100644
--- a/src/devices/bus/compis/hrg.cpp
+++ b/src/devices/bus/compis/hrg.cpp
@@ -24,20 +24,20 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMPIS_HRG = device_creator<compis_hrg_t>;
-const device_type COMPIS_UHRG = device_creator<compis_uhrg_t>;
+DEFINE_DEVICE_TYPE(COMPIS_HRG, compis_hrg_device, "compis_hrg", "Compis HRG")
+DEFINE_DEVICE_TYPE(COMPIS_UHRG, compis_uhrg_device, "compis_uhrg", "Compis UHRG")
//-------------------------------------------------
// ADDRESS_MAP( upd7220_map )
//-------------------------------------------------
-static ADDRESS_MAP_START( hrg_map, AS_0, 16, compis_hrg_t )
+static ADDRESS_MAP_START( hrg_map, AS_0, 16, compis_hrg_device )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x00000, 0x7fff) AM_RAM AM_SHARE("video_ram")
ADDRESS_MAP_END
-static ADDRESS_MAP_START( uhrg_map, AS_0, 16, compis_uhrg_t )
+static ADDRESS_MAP_START( uhrg_map, AS_0, 16, compis_uhrg_device )
ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram")
ADDRESS_MAP_END
@@ -47,7 +47,7 @@ ADDRESS_MAP_END
// UPD7220_DISPLAY_PIXELS_MEMBER( display_pixels )
//-------------------------------------------------
-UPD7220_DISPLAY_PIXELS_MEMBER( compis_hrg_t::display_pixels )
+UPD7220_DISPLAY_PIXELS_MEMBER( compis_hrg_device::display_pixels )
{
uint16_t i,gfx = m_video_ram[(address & 0x7fff) >> 1];
const pen_t *pen = m_palette->pens();
@@ -61,7 +61,7 @@ UPD7220_DISPLAY_PIXELS_MEMBER( compis_hrg_t::display_pixels )
// UPD7220_DISPLAY_PIXELS_MEMBER( display_pixels )
//-------------------------------------------------
-UPD7220_DISPLAY_PIXELS_MEMBER( compis_uhrg_t::display_pixels )
+UPD7220_DISPLAY_PIXELS_MEMBER( compis_uhrg_device::display_pixels )
{
uint16_t i,gfx = m_video_ram[(address & 0x1ffff) >> 1];
const pen_t *pen = m_palette->pens();
@@ -86,7 +86,7 @@ static MACHINE_CONFIG_FRAGMENT( hrg )
MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, 2252500) // unknown clock
MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_map)
- MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_hrg_t, display_pixels)
+ MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_hrg_device, display_pixels)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_PALETTE_ADD_MONOCHROME("palette")
@@ -98,7 +98,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor compis_hrg_t::device_mconfig_additions() const
+machine_config_constructor compis_hrg_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( hrg );
}
@@ -119,7 +119,7 @@ static MACHINE_CONFIG_FRAGMENT( uhrg )
MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, 2252500*2) // unknown clock
MCFG_DEVICE_ADDRESS_MAP(AS_0, uhrg_map)
- MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_uhrg_t, display_pixels)
+ MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_uhrg_device, display_pixels)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_PALETTE_ADD_MONOCHROME("palette")
@@ -131,7 +131,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor compis_uhrg_t::device_mconfig_additions() const
+machine_config_constructor compis_uhrg_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( uhrg );
}
@@ -143,11 +143,11 @@ machine_config_constructor compis_uhrg_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// compis_hrg_t - constructor
+// compis_hrg_device - constructor
//-------------------------------------------------
-compis_hrg_t::compis_hrg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+compis_hrg_device::compis_hrg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_compis_graphics_card_interface(mconfig, *this),
m_crtc(*this, UPD7220_TAG),
m_palette(*this, "palette"),
@@ -155,13 +155,13 @@ compis_hrg_t::compis_hrg_t(const machine_config &mconfig, device_type type, cons
{
}
-compis_hrg_t::compis_hrg_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- compis_hrg_t(mconfig, COMPIS_HRG, "Compis HRG", tag, owner, clock, "compis_hrg", __FILE__)
+compis_hrg_device::compis_hrg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ compis_hrg_device(mconfig, COMPIS_HRG, tag, owner, clock)
{
}
-compis_uhrg_t::compis_uhrg_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- compis_hrg_t(mconfig, COMPIS_UHRG, "Compis UHRG", tag, owner, clock, "compis_uhrg", __FILE__)
+compis_uhrg_device::compis_uhrg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ compis_hrg_device(mconfig, COMPIS_UHRG, tag, owner, clock)
{
}
@@ -170,7 +170,7 @@ compis_uhrg_t::compis_uhrg_t(const machine_config &mconfig, const char *tag, dev
// device_start - device-specific startup
//-------------------------------------------------
-void compis_hrg_t::device_start()
+void compis_hrg_device::device_start()
{
}
@@ -179,7 +179,7 @@ void compis_hrg_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void compis_hrg_t::device_reset()
+void compis_hrg_device::device_reset()
{
}
@@ -188,7 +188,7 @@ void compis_hrg_t::device_reset()
// pcs6_6_r -
//-------------------------------------------------
-uint8_t compis_hrg_t::pcs6_6_r(address_space &space, offs_t offset)
+uint8_t compis_hrg_device::pcs6_6_r(address_space &space, offs_t offset)
{
uint8_t data = 0xff;
@@ -225,7 +225,7 @@ uint8_t compis_hrg_t::pcs6_6_r(address_space &space, offs_t offset)
// pcs6_6_w -
//-------------------------------------------------
-void compis_hrg_t::pcs6_6_w(address_space &space, offs_t offset, uint8_t data)
+void compis_hrg_device::pcs6_6_w(address_space &space, offs_t offset, uint8_t data)
{
//logerror("%s PCS 6:6 write %04x : %02x\n", machine().describe_context(), offset, data);
diff --git a/src/devices/bus/compis/hrg.h b/src/devices/bus/compis/hrg.h
index 96ea1db02cb..50dfe882d58 100644
--- a/src/devices/bus/compis/hrg.h
+++ b/src/devices/bus/compis/hrg.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMPIS_HRG_H
+#define MAME_BUS_COMPIS_HRG_H
-#ifndef __COMPIS_HRG__
-#define __COMPIS_HRG__
+#pragma once
#include "graphics.h"
#include "video/upd7220.h"
@@ -20,15 +20,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> compis_hrg_t
+// ======================> compis_hrg_device
-class compis_hrg_t : public device_t,
+class compis_hrg_device : public device_t,
public device_compis_graphics_card_interface
{
public:
// construction/destruction
- compis_hrg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- compis_hrg_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ compis_hrg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -36,6 +35,8 @@ public:
UPD7220_DISPLAY_PIXELS_MEMBER( display_pixels );
protected:
+ compis_hrg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -52,13 +53,13 @@ protected:
};
-// ======================> compis_uhrg_t
+// ======================> compis_uhrg_device
-class compis_uhrg_t : public compis_hrg_t
+class compis_uhrg_device : public compis_hrg_device
{
public:
// construction/destruction
- compis_uhrg_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ compis_uhrg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -68,9 +69,8 @@ public:
// device type definition
-extern const device_type COMPIS_HRG;
-extern const device_type COMPIS_UHRG;
-
+DECLARE_DEVICE_TYPE(COMPIS_HRG, compis_hrg_device)
+DECLARE_DEVICE_TYPE(COMPIS_UHRG, compis_uhrg_device)
-#endif
+#endif // MAME_BUS_COMPIS_HRG_H
diff --git a/src/devices/bus/compucolor/floppy.cpp b/src/devices/bus/compucolor/floppy.cpp
index 7c7fa88472b..77e4e0f5d53 100644
--- a/src/devices/bus/compucolor/floppy.cpp
+++ b/src/devices/bus/compucolor/floppy.cpp
@@ -15,8 +15,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMPUCOLOR_FLOPPY_PORT = device_creator<compucolor_floppy_port_device>;
-const device_type COMPUCOLOR_FLOPPY = device_creator<compucolor_floppy_device>;
+DEFINE_DEVICE_TYPE(COMPUCOLOR_FLOPPY_PORT, compucolor_floppy_port_device, "compclr_flp_port", "Compucolor Floppy Port")
+DEFINE_DEVICE_TYPE(COMPUCOLOR_FLOPPY, compucolor_floppy_device, "compclr_flp", "Compucolor floppy")
//-------------------------------------------------
@@ -86,7 +86,7 @@ device_compucolor_floppy_port_interface::device_compucolor_floppy_port_interface
//-------------------------------------------------
compucolor_floppy_port_device::compucolor_floppy_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : rs232_port_device(mconfig, COMPUCOLOR_FLOPPY_PORT, "Compucolor Floppy Port", tag, owner, clock, "compclr_flp_port", __FILE__), m_dev(nullptr)
+ : rs232_port_device(mconfig, COMPUCOLOR_FLOPPY_PORT, tag, owner, clock), m_dev(nullptr)
{
}
@@ -96,13 +96,13 @@ compucolor_floppy_port_device::compucolor_floppy_port_device(const machine_confi
//-------------------------------------------------
compucolor_floppy_device::compucolor_floppy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, COMPUCOLOR_FLOPPY, "Compucolor floppy", tag, owner, clock, "compclr_flp", __FILE__),
- device_compucolor_floppy_port_interface(mconfig, *this),
- m_floppy(*this, "floppy:525sssd"),
- m_rw(1),
- m_stp(0),
- m_sel(1),
- m_period(attotime::from_hz(9600*8))
+ : device_t(mconfig, COMPUCOLOR_FLOPPY, tag, owner, clock)
+ , device_compucolor_floppy_port_interface(mconfig, *this)
+ , m_floppy(*this, "floppy:525sssd")
+ , m_rw(1)
+ , m_stp(0)
+ , m_sel(1)
+ , m_period(attotime::from_hz(9600*8))
{
m_owner = dynamic_cast<compucolor_floppy_port_device *>(this->owner());
}
diff --git a/src/devices/bus/compucolor/floppy.h b/src/devices/bus/compucolor/floppy.h
index 22a716457f3..69c6524ab01 100644
--- a/src/devices/bus/compucolor/floppy.h
+++ b/src/devices/bus/compucolor/floppy.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMPUCOLOR_FLOPPY_H
+#define MAME_BUS_COMPUCOLOR_FLOPPY_H
-#ifndef __COMPCLR_FLP__
-#define __COMPCLR_FLP__
+#pragma once
#include "bus/rs232/rs232.h"
#include "formats/ccvf_dsk.h"
@@ -36,12 +36,12 @@
class device_compucolor_floppy_port_interface : public device_rs232_port_interface
{
public:
- device_compucolor_floppy_port_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_compucolor_floppy_port_interface() { }
-
virtual void rw_w(int state) = 0;
virtual void stepper_w(uint8_t data) = 0;
virtual void select_w(int state) = 0;
+
+protected:
+ device_compucolor_floppy_port_interface(const machine_config &mconfig, device_t &device);
};
@@ -51,7 +51,6 @@ class compucolor_floppy_port_device : public rs232_port_device
{
public:
compucolor_floppy_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~compucolor_floppy_port_device() { }
DECLARE_WRITE_LINE_MEMBER( rw_w ) { if (m_dev) m_dev->rw_w(state); }
void stepper_w(uint8_t data) { if (m_dev) m_dev->stepper_w(data); }
@@ -69,8 +68,7 @@ private:
// ======================> compucolor_floppy_device
-class compucolor_floppy_device : public device_t,
- public device_compucolor_floppy_port_interface
+class compucolor_floppy_device : public device_t, public device_compucolor_floppy_port_interface
{
public:
// construction/destruction
@@ -113,11 +111,11 @@ private:
// device type definition
-extern const device_type COMPUCOLOR_FLOPPY_PORT;
-extern const device_type COMPUCOLOR_FLOPPY;
+DECLARE_DEVICE_TYPE(COMPUCOLOR_FLOPPY_PORT, compucolor_floppy_port_device)
+DECLARE_DEVICE_TYPE(COMPUCOLOR_FLOPPY, compucolor_floppy_device)
// slot devices
SLOT_INTERFACE_EXTERN( compucolor_floppy_port_devices );
-#endif
+#endif // MAME_BUS_COMPUCOLOR_FLOPPY_H
diff --git a/src/devices/bus/comx35/clm.cpp b/src/devices/bus/comx35/clm.cpp
index 65a0b3fd9c9..0ddd65d5d6c 100644
--- a/src/devices/bus/comx35/clm.cpp
+++ b/src/devices/bus/comx35/clm.cpp
@@ -64,7 +64,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMX_CLM = device_creator<comx_clm_device>;
+DEFINE_DEVICE_TYPE(COMX_CLM, comx_clm_device, "comx_clm", "COMX 80 Column Card")
//-------------------------------------------------
@@ -175,7 +175,7 @@ machine_config_constructor comx_clm_device::device_mconfig_additions() const
//-------------------------------------------------
comx_clm_device::comx_clm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMX_CLM, "COMX 80 Column Card", tag, owner, clock, "comx_clm", __FILE__),
+ device_t(mconfig, COMX_CLM, tag, owner, clock),
device_comx_expansion_card_interface(mconfig, *this),
device_gfx_interface(mconfig, *this, nullptr, "palette"),
m_crtc(*this, MC6845_TAG),
diff --git a/src/devices/bus/comx35/clm.h b/src/devices/bus/comx35/clm.h
index 7230cece942..4967d386214 100644
--- a/src/devices/bus/comx35/clm.h
+++ b/src/devices/bus/comx35/clm.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMX35_CLM_H
+#define MAME_BUS_COMX35_CLM_H
-#ifndef __COMX_CLM__
-#define __COMX_CLM__
+#pragma once
#include "exp.h"
#include "video/mc6845.h"
@@ -57,7 +57,7 @@ private:
// device type definition
-extern const device_type COMX_CLM;
+DECLARE_DEVICE_TYPE(COMX_CLM, comx_clm_device)
-#endif
+#endif // MAME_BUS_COMX35_CLM_H
diff --git a/src/devices/bus/comx35/eprom.cpp b/src/devices/bus/comx35/eprom.cpp
index 701a78a9f8b..ab1b2b97504 100644
--- a/src/devices/bus/comx35/eprom.cpp
+++ b/src/devices/bus/comx35/eprom.cpp
@@ -21,7 +21,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMX_EPR = device_creator<comx_epr_device>;
+DEFINE_DEVICE_TYPE(COMX_EPR, comx_epr_device, "comx_epr", "COMX-35 F&M EPROM Switchboard")
//-------------------------------------------------
@@ -58,7 +58,7 @@ const tiny_rom_entry *comx_epr_device::device_rom_region() const
//-------------------------------------------------
comx_epr_device::comx_epr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMX_EPR, "COMX-35 F&M EPROM Switchboard", tag, owner, clock, "comx_epr", __FILE__),
+ device_t(mconfig, COMX_EPR, tag, owner, clock),
device_comx_expansion_card_interface(mconfig, *this),
m_rom(*this, "f800"),
m_eprom(*this, "eprom"),
diff --git a/src/devices/bus/comx35/eprom.h b/src/devices/bus/comx35/eprom.h
index afd0e4e08d9..c6489dfa774 100644
--- a/src/devices/bus/comx35/eprom.h
+++ b/src/devices/bus/comx35/eprom.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMX35_EPROM_H
+#define MAME_BUS_COMX35_EPROM_H
-#ifndef __COMX_EPR__
-#define __COMX_EPR__
+#pragma once
#include "exp.h"
@@ -49,7 +49,7 @@ private:
// device type definition
-extern const device_type COMX_EPR;
+DECLARE_DEVICE_TYPE(COMX_EPR, comx_epr_device)
-#endif
+#endif // MAME_BUS_COMX35_EPROM_H
diff --git a/src/devices/bus/comx35/exp.cpp b/src/devices/bus/comx35/exp.cpp
index 8e2aacf910e..8c160829bdc 100644
--- a/src/devices/bus/comx35/exp.cpp
+++ b/src/devices/bus/comx35/exp.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMX_EXPANSION_SLOT = device_creator<comx_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(COMX_EXPANSION_SLOT, comx_expansion_slot_device, "comx_expansion_slot", "COMX-35 expansion slot")
@@ -44,7 +44,7 @@ device_comx_expansion_card_interface::device_comx_expansion_card_interface(const
//-------------------------------------------------
comx_expansion_slot_device::comx_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMX_EXPANSION_SLOT, "COMX-35 expansion slot", tag, owner, clock, "comx_expansion_slot", __FILE__),
+ device_t(mconfig, COMX_EXPANSION_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_write_irq(*this), m_card(nullptr)
{
diff --git a/src/devices/bus/comx35/exp.h b/src/devices/bus/comx35/exp.h
index c8bec33960c..c52b7eee849 100644
--- a/src/devices/bus/comx35/exp.h
+++ b/src/devices/bus/comx35/exp.h
@@ -31,10 +31,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMX35_EXP_H
+#define MAME_BUS_COMX35_EXP_H
-#ifndef __COMX35_EXPANSION_SLOT__
-#define __COMX35_EXPANSION_SLOT__
+#pragma once
@@ -75,9 +75,8 @@ class comx_expansion_slot_device : public device_t,
public:
// construction/destruction
comx_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~comx_expansion_slot_device() { }
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<comx_expansion_slot_device &>(device).m_write_irq.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<comx_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
uint8_t mrd_r(address_space &space, offs_t offset, int *extrom);
void mwr_w(address_space &space, offs_t offset, uint8_t data);
@@ -109,24 +108,22 @@ class device_comx_expansion_card_interface : public device_slot_card_interface
{
friend class comx_expansion_slot_device;
-public:
+protected:
// construction/destruction
device_comx_expansion_card_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_comx_expansion_card_interface() { }
-protected:
// signals
virtual int comx_ef4_r() { return CLEAR_LINE; }
- virtual void comx_ds_w(int state) { m_ds = state; };
- virtual void comx_q_w(int state) { };
+ virtual void comx_ds_w(int state) { m_ds = state; }
+ virtual void comx_q_w(int state) { }
// memory access
- virtual uint8_t comx_mrd_r(address_space &space, offs_t offset, int *extrom) { return 0; };
- virtual void comx_mwr_w(address_space &space, offs_t offset, uint8_t data) { };
+ virtual uint8_t comx_mrd_r(address_space &space, offs_t offset, int *extrom) { return 0; }
+ virtual void comx_mwr_w(address_space &space, offs_t offset, uint8_t data) { }
// I/O access
- virtual uint8_t comx_io_r(address_space &space, offs_t offset) { return 0; };
- virtual void comx_io_w(address_space &space, offs_t offset, uint8_t data) { };
+ virtual uint8_t comx_io_r(address_space &space, offs_t offset) { return 0; }
+ virtual void comx_io_w(address_space &space, offs_t offset, uint8_t data) { }
comx_expansion_slot_device *m_slot;
@@ -135,10 +132,10 @@ protected:
// device type definition
-extern const device_type COMX_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(COMX_EXPANSION_SLOT, comx_expansion_slot_device)
SLOT_INTERFACE_EXTERN( comx_expansion_cards );
-#endif
+#endif // MAME_BUS_COMX35_EXP_H
diff --git a/src/devices/bus/comx35/expbox.cpp b/src/devices/bus/comx35/expbox.cpp
index 51962fb2d39..1eacd1dea5e 100644
--- a/src/devices/bus/comx35/expbox.cpp
+++ b/src/devices/bus/comx35/expbox.cpp
@@ -66,7 +66,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMX_EB = device_creator<comx_eb_device>;
+DEFINE_DEVICE_TYPE(COMX_EB, comx_eb_device, "comx_eb", "COMX-35E Expansion Box")
//-------------------------------------------------
@@ -131,7 +131,7 @@ machine_config_constructor comx_eb_device::device_mconfig_additions() const
//-------------------------------------------------
comx_eb_device::comx_eb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMX_EB, "COMX-35E Expansion Box", tag, owner, clock, "comx_eb", __FILE__),
+ device_t(mconfig, COMX_EB, tag, owner, clock),
device_comx_expansion_card_interface(mconfig, *this),
m_rom(*this, "e000"),
m_select(0)
diff --git a/src/devices/bus/comx35/expbox.h b/src/devices/bus/comx35/expbox.h
index 00febcb6188..ce266ee0402 100644
--- a/src/devices/bus/comx35/expbox.h
+++ b/src/devices/bus/comx35/expbox.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMX35_EXPBOX_H
+#define MAME_BUS_COMX35_EXPBOX_H
-#ifndef __COMX_EB__
-#define __COMX_EB__
+#pragma once
#include "exp.h"
@@ -71,7 +71,7 @@ private:
// device type definition
-extern const device_type COMX_EB;
+DECLARE_DEVICE_TYPE(COMX_EB, comx_eb_device)
-#endif
+#endif // MAME_BUS_COMX35_EXPBOX_H
diff --git a/src/devices/bus/comx35/fdc.cpp b/src/devices/bus/comx35/fdc.cpp
index 8550fe414ec..2c8a8e163cb 100644
--- a/src/devices/bus/comx35/fdc.cpp
+++ b/src/devices/bus/comx35/fdc.cpp
@@ -58,7 +58,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMX_FD = device_creator<comx_fd_device>;
+DEFINE_DEVICE_TYPE(COMX_FD, comx_fd_device, "comx_fd", "COMX FD")
//-------------------------------------------------
@@ -124,7 +124,7 @@ machine_config_constructor comx_fd_device::device_mconfig_additions() const
//-------------------------------------------------
comx_fd_device::comx_fd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMX_FD, "COMX FD", tag, owner, clock, "comx_fd", __FILE__),
+ device_t(mconfig, COMX_FD, tag, owner, clock),
device_comx_expansion_card_interface(mconfig, *this),
m_fdc(*this, WD1770_TAG),
m_floppy0(*this, WD1770_TAG":0"),
diff --git a/src/devices/bus/comx35/fdc.h b/src/devices/bus/comx35/fdc.h
index ced4a012216..bc23816da98 100644
--- a/src/devices/bus/comx35/fdc.h
+++ b/src/devices/bus/comx35/fdc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMX35_FD_H
+#define MAME_BUS_COMX35_FD_H
-#ifndef __COMX_FD__
-#define __COMX_FD__
+#pragma once
#include "exp.h"
#include "formats/comx35_dsk.h"
@@ -50,7 +50,7 @@ protected:
private:
// internal state
- required_device<wd1770_t> m_fdc;
+ required_device<wd1770_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_memory_region m_rom;
@@ -63,7 +63,7 @@ private:
// device type definition
-extern const device_type COMX_FD;
+DECLARE_DEVICE_TYPE(COMX_FD, comx_fd_device)
-#endif
+#endif // MAME_BUS_COMX35_FD_H
diff --git a/src/devices/bus/comx35/joycard.cpp b/src/devices/bus/comx35/joycard.cpp
index 3a7a7b9b311..4c6e46ff06e 100644
--- a/src/devices/bus/comx35/joycard.cpp
+++ b/src/devices/bus/comx35/joycard.cpp
@@ -22,7 +22,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMX_JOY = device_creator<comx_joy_device>;
+DEFINE_DEVICE_TYPE(COMX_JOY, comx_joy_device, "comx_joy", "COMX JoyCard")
//-------------------------------------------------
@@ -68,7 +68,7 @@ ioport_constructor comx_joy_device::device_input_ports() const
//-------------------------------------------------
comx_joy_device::comx_joy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMX_JOY, "COMX JoyCard", tag, owner, clock, "comx_joy", __FILE__),
+ device_t(mconfig, COMX_JOY, tag, owner, clock),
device_comx_expansion_card_interface(mconfig, *this),
m_joy1(*this, "JOY1"),
m_joy2(*this, "JOY2")
diff --git a/src/devices/bus/comx35/joycard.h b/src/devices/bus/comx35/joycard.h
index 567d2434599..e2d6bb40151 100644
--- a/src/devices/bus/comx35/joycard.h
+++ b/src/devices/bus/comx35/joycard.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMX35_JOYCARD_H
+#define MAME_BUS_COMX35_JOYCARD_H
-#ifndef __COMX_JOY__
-#define __COMX_JOY__
+#pragma once
#include "exp.h"
@@ -46,7 +46,7 @@ private:
// device type definition
-extern const device_type COMX_JOY;
+DECLARE_DEVICE_TYPE(COMX_JOY, comx_joy_device)
-#endif
+#endif // MAME_BUS_COMX35_JOYCARD_H
diff --git a/src/devices/bus/comx35/printer.cpp b/src/devices/bus/comx35/printer.cpp
index 1a24c93cae6..4a9ced09f17 100644
--- a/src/devices/bus/comx35/printer.cpp
+++ b/src/devices/bus/comx35/printer.cpp
@@ -24,7 +24,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMX_PRN = device_creator<comx_prn_device>;
+DEFINE_DEVICE_TYPE(COMX_PRN, comx_prn_device, "comx_prn", "COMX-35 Printer Card")
//-------------------------------------------------
@@ -88,7 +88,7 @@ machine_config_constructor comx_prn_device::device_mconfig_additions() const
//-------------------------------------------------
comx_prn_device::comx_prn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMX_PRN, "COMX-35 Printer Card", tag, owner, clock, "comx_prn", __FILE__),
+ device_t(mconfig, COMX_PRN, tag, owner, clock),
device_comx_expansion_card_interface(mconfig, *this),
m_centronics(*this, CENTRONICS_TAG),
m_cent_data_out(*this, "cent_data_out"),
diff --git a/src/devices/bus/comx35/printer.h b/src/devices/bus/comx35/printer.h
index 887abaa13d6..b973982b2f3 100644
--- a/src/devices/bus/comx35/printer.h
+++ b/src/devices/bus/comx35/printer.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMX35_PRINTER_H
+#define MAME_BUS_COMX35_PRINTER_H
-#ifndef __COMX_PRN__
-#define __COMX_PRN__
+#pragma once
#include "exp.h"
#include "machine/buffer.h"
@@ -23,8 +23,7 @@
// ======================> comx_prn_device
-class comx_prn_device : public device_t,
- public device_comx_expansion_card_interface
+class comx_prn_device : public device_t, public device_comx_expansion_card_interface
{
public:
// construction/destruction
@@ -53,7 +52,7 @@ private:
// device type definition
-extern const device_type COMX_PRN;
+DECLARE_DEVICE_TYPE(COMX_PRN, comx_prn_device)
-#endif
+#endif // MAME_BUS_COMX35_PRINTER_H
diff --git a/src/devices/bus/comx35/ram.cpp b/src/devices/bus/comx35/ram.cpp
index 89c7bfff728..c09ef729225 100644
--- a/src/devices/bus/comx35/ram.cpp
+++ b/src/devices/bus/comx35/ram.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMX_RAM = device_creator<comx_ram_device>;
+DEFINE_DEVICE_TYPE(COMX_RAM, comx_ram_device, "comx_ram", "COMX-35 RAM Card")
//**************************************************************************
@@ -35,7 +35,7 @@ const device_type COMX_RAM = device_creator<comx_ram_device>;
//-------------------------------------------------
comx_ram_device::comx_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMX_RAM, "COMX-35 RAM Card", tag, owner, clock, "comx_ram", __FILE__),
+ device_t(mconfig, COMX_RAM, tag, owner, clock),
device_comx_expansion_card_interface(mconfig, *this),
m_ram(*this, "ram"),
m_bank(0)
diff --git a/src/devices/bus/comx35/ram.h b/src/devices/bus/comx35/ram.h
index fc6af702fa3..251e47e2097 100644
--- a/src/devices/bus/comx35/ram.h
+++ b/src/devices/bus/comx35/ram.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMX35_RAM_H
+#define MAME_BUS_COMX35_RAM_H
-#ifndef __COMX_RAM__
-#define __COMX_RAM__
+#pragma once
#include "exp.h"
@@ -46,7 +46,7 @@ private:
// device type definition
-extern const device_type COMX_RAM;
+DECLARE_DEVICE_TYPE(COMX_RAM, comx_ram_device)
-#endif
+#endif // MAME_BUS_COMX35_RAM_H
diff --git a/src/devices/bus/comx35/thermal.cpp b/src/devices/bus/comx35/thermal.cpp
index d08aac2175e..e1d4f0ed8d3 100644
--- a/src/devices/bus/comx35/thermal.cpp
+++ b/src/devices/bus/comx35/thermal.cpp
@@ -21,7 +21,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMX_THM = device_creator<comx_thm_device>;
+DEFINE_DEVICE_TYPE(COMX_THM, comx_thm_device, "comx_thm", "COMX-35 Thermal Printer Card")
//-------------------------------------------------
@@ -53,7 +53,7 @@ const tiny_rom_entry *comx_thm_device::device_rom_region() const
//-------------------------------------------------
comx_thm_device::comx_thm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMX_THM, "COMX-35 Thermal Printer Card", tag, owner, clock, "comx_thm", __FILE__),
+ device_t(mconfig, COMX_THM, tag, owner, clock),
device_comx_expansion_card_interface(mconfig, *this),
m_rom(*this, "c000")
{
diff --git a/src/devices/bus/comx35/thermal.h b/src/devices/bus/comx35/thermal.h
index 08b46ba6945..feb92f7bc45 100644
--- a/src/devices/bus/comx35/thermal.h
+++ b/src/devices/bus/comx35/thermal.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_COMX35_THERMAL_H
+#define MAME_BUS_COMX35_THERMAL_H
-#ifndef __COMX_THM__
-#define __COMX_THM__
+#pragma once
#include "exp.h"
@@ -47,7 +47,7 @@ private:
// device type definition
-extern const device_type COMX_THM;
+DECLARE_DEVICE_TYPE(COMX_THM, comx_thm_device)
-#endif
+#endif // MAME_BUS_COMX35_THERMAL_H
diff --git a/src/devices/bus/cpc/amdrum.cpp b/src/devices/bus/cpc/amdrum.cpp
index 8cc82aea1cb..2cd233a1b9b 100644
--- a/src/devices/bus/cpc/amdrum.cpp
+++ b/src/devices/bus/cpc/amdrum.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_AMDRUM = device_creator<cpc_amdrum_device>;
+DEFINE_DEVICE_TYPE(CPC_AMDRUM, cpc_amdrum_device, "cpc_amdrum", "Amdrum")
static MACHINE_CONFIG_FRAGMENT( cpc_amdrum )
@@ -38,7 +38,7 @@ machine_config_constructor cpc_amdrum_device::device_mconfig_additions() const
//**************************************************************************
cpc_amdrum_device::cpc_amdrum_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_AMDRUM, "Amdrum", tag, owner, clock, "cpc_amdrum", __FILE__),
+ device_t(mconfig, CPC_AMDRUM, tag, owner, clock),
device_cpc_expansion_card_interface(mconfig, *this),
m_slot(nullptr),
m_dac(*this,"dac")
diff --git a/src/devices/bus/cpc/amdrum.h b/src/devices/bus/cpc/amdrum.h
index f9efb5ce411..6f68a506bd5 100644
--- a/src/devices/bus/cpc/amdrum.h
+++ b/src/devices/bus/cpc/amdrum.h
@@ -12,8 +12,10 @@
*
*/
-#ifndef AMDRUM_H_
-#define AMDRUM_H_
+#ifndef MAME_BUS_CPC_AMDRUM_H
+#define MAME_BUS_CPC_AMDRUM_H
+
+#pragma once
#include "cpcexp.h"
#include "sound/dac.h"
@@ -41,7 +43,7 @@ private:
};
// device type definition
-extern const device_type CPC_AMDRUM;
+DECLARE_DEVICE_TYPE(CPC_AMDRUM, cpc_amdrum_device)
-#endif /* AMDRUM_H_ */
+#endif // MAME_BUS_CPC_AMDRUM_H
diff --git a/src/devices/bus/cpc/brunword4.cpp b/src/devices/bus/cpc/brunword4.cpp
index 1118e0c8b61..6d5a7b885d3 100644
--- a/src/devices/bus/cpc/brunword4.cpp
+++ b/src/devices/bus/cpc/brunword4.cpp
@@ -14,7 +14,7 @@
#include "emu.h"
#include "brunword4.h"
-const device_type CPC_BRUNWORD_MK4 = device_creator<cpc_brunword4_device>;
+DEFINE_DEVICE_TYPE(CPC_BRUNWORD_MK4, cpc_brunword4_device, "cpc_brunword4", "Brunword Elite MK4")
ROM_START( cpc_brunword4 )
@@ -64,8 +64,9 @@ const tiny_rom_entry *cpc_brunword4_device::device_rom_region() const
}
cpc_brunword4_device::cpc_brunword4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_BRUNWORD_MK4, "Brunword Elite MK4", tag, owner, clock, "cpc_brunword4", __FILE__),
- device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr), m_rombank_active(false), m_bank_sel(0)
+ device_t(mconfig, CPC_BRUNWORD_MK4, tag, owner, clock),
+ device_cpc_expansion_card_interface(mconfig, *this),
+ m_slot(nullptr), m_rombank_active(false), m_bank_sel(0)
{
}
diff --git a/src/devices/bus/cpc/brunword4.h b/src/devices/bus/cpc/brunword4.h
index 31d8d38beb3..66d5cdebab5 100644
--- a/src/devices/bus/cpc/brunword4.h
+++ b/src/devices/bus/cpc/brunword4.h
@@ -5,6 +5,10 @@
Brunword MK4 - Word processor ROM / expansion
*/
+#ifndef MAME_BUS_CPC_BRUNWORD4_H
+#define MAME_BUS_CPC_BRUNWORD4_H
+
+#pragma once
#include "cpcexp.h"
@@ -34,4 +38,6 @@ private:
};
// device type definition
-extern const device_type CPC_BRUNWORD_MK4;
+DECLARE_DEVICE_TYPE(CPC_BRUNWORD_MK4, cpc_brunword4_device)
+
+#endif // MAME_BUS_CPC_BRUNWORD4_H
diff --git a/src/devices/bus/cpc/cpc_pds.cpp b/src/devices/bus/cpc/cpc_pds.cpp
index b9ab288ec9a..3273fcf8f8e 100644
--- a/src/devices/bus/cpc/cpc_pds.cpp
+++ b/src/devices/bus/cpc/cpc_pds.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_PDS = device_creator<cpc_pds_device>;
+DEFINE_DEVICE_TYPE(CPC_PDS, cpc_pds_device, "cpc_pds", "Programmers Development System (CPC Target)")
static MACHINE_CONFIG_FRAGMENT( cpc_pds )
@@ -35,8 +35,9 @@ machine_config_constructor cpc_pds_device::device_mconfig_additions() const
//**************************************************************************
cpc_pds_device::cpc_pds_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_PDS, "Programmers Development System (CPC Target)", tag, owner, clock, "cpc_pds", __FILE__),
- device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr),
+ device_t(mconfig, CPC_PDS, tag, owner, clock),
+ device_cpc_expansion_card_interface(mconfig, *this),
+ m_slot(nullptr),
m_pio(*this,"pio")
{
}
diff --git a/src/devices/bus/cpc/cpc_pds.h b/src/devices/bus/cpc/cpc_pds.h
index 5bc1a87cabc..2da3ac96a01 100644
--- a/src/devices/bus/cpc/cpc_pds.h
+++ b/src/devices/bus/cpc/cpc_pds.h
@@ -21,8 +21,10 @@
* running the target side
*/
-#ifndef CPC_PDS_H_
-#define CPC_PDS_H_
+#ifndef MAME_BUS_CPC_CPC_PDS_H
+#define MAME_BUS_CPC_CPC_PDS_H
+
+#pragma once
#include "cpcexp.h"
#include "machine/z80pio.h"
@@ -52,6 +54,6 @@ private:
};
// device type definition
-extern const device_type CPC_PDS;
+DECLARE_DEVICE_TYPE(CPC_PDS, cpc_pds_device)
-#endif /* CPC_PDS_H_ */
+#endif // MAME_BUS_CPC_CPC_PDS_H
diff --git a/src/devices/bus/cpc/cpc_rom.cpp b/src/devices/bus/cpc/cpc_rom.cpp
index 3fa2848aa8c..e3ff29108cc 100644
--- a/src/devices/bus/cpc/cpc_rom.cpp
+++ b/src/devices/bus/cpc/cpc_rom.cpp
@@ -9,7 +9,7 @@
#include "emu.h"
#include "cpc_rom.h"
-const device_type CPC_ROM = device_creator<cpc_rom_device>;
+DEFINE_DEVICE_TYPE(CPC_ROM, cpc_rom_device, "cpc_rom", "CPC ROM Box")
SLOT_INTERFACE_EXTERN(cpc_exp_cards);
@@ -19,14 +19,14 @@ SLOT_INTERFACE_EXTERN(cpc_exp_cards);
// device machine config
static MACHINE_CONFIG_FRAGMENT( cpc_rom )
- MCFG_ROMSLOT_ADD("rom1")
- MCFG_ROMSLOT_ADD("rom2")
- MCFG_ROMSLOT_ADD("rom3")
- MCFG_ROMSLOT_ADD("rom4")
- MCFG_ROMSLOT_ADD("rom5")
- MCFG_ROMSLOT_ADD("rom6")
- MCFG_ROMSLOT_ADD("rom7")
- MCFG_ROMSLOT_ADD("rom8")
+ MCFG_CPC_ROMSLOT_ADD("rom1")
+ MCFG_CPC_ROMSLOT_ADD("rom2")
+ MCFG_CPC_ROMSLOT_ADD("rom3")
+ MCFG_CPC_ROMSLOT_ADD("rom4")
+ MCFG_CPC_ROMSLOT_ADD("rom5")
+ MCFG_CPC_ROMSLOT_ADD("rom6")
+ MCFG_CPC_ROMSLOT_ADD("rom7")
+ MCFG_CPC_ROMSLOT_ADD("rom8")
// pass-through
MCFG_DEVICE_ADD("exp", CPC_EXPANSION_SLOT, 0)
@@ -48,8 +48,9 @@ machine_config_constructor cpc_rom_device::device_mconfig_additions() const
//**************************************************************************
cpc_rom_device::cpc_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_ROM, "ROM Box", tag, owner, clock, "cpc_rom", __FILE__),
- device_cpc_expansion_card_interface(mconfig, *this)
+ device_t(mconfig, CPC_ROM, tag, owner, clock),
+ device_cpc_expansion_card_interface(mconfig, *this),
+ m_rom(*this, "rom%u", 1)
{
}
@@ -73,23 +74,24 @@ void cpc_rom_device::device_reset()
/*** ROM image device ***/
// device type definition
-const device_type ROMSLOT = device_creator<rom_image_device>;
+DEFINE_DEVICE_TYPE(CPC_ROMSLOT, cpc_rom_image_device, "cpc_rom_image", "CPC ROM image")
//-------------------------------------------------
-// rom_image_device - constructor
+// cpc_rom_image_device - constructor
//-------------------------------------------------
-rom_image_device::rom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ROMSLOT, "ROM image", tag, owner, clock, "rom_image", __FILE__),
- device_image_interface(mconfig, *this), m_base(nullptr)
+cpc_rom_image_device::cpc_rom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, CPC_ROMSLOT, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
+ , m_base(nullptr)
{
}
//-------------------------------------------------
-// rom_image_device - destructor
+// cpc_rom_image_device - destructor
//-------------------------------------------------
-rom_image_device::~rom_image_device()
+cpc_rom_image_device::~cpc_rom_image_device()
{
}
@@ -97,7 +99,7 @@ rom_image_device::~rom_image_device()
// device_start - device-specific startup
//-------------------------------------------------
-void rom_image_device::device_start()
+void cpc_rom_image_device::device_start()
{
m_base = nullptr;
}
@@ -105,7 +107,7 @@ void rom_image_device::device_start()
/*-------------------------------------------------
DEVICE_IMAGE_LOAD( rom )
-------------------------------------------------*/
-image_init_result rom_image_device::call_load()
+image_init_result cpc_rom_image_device::call_load()
{
device_image_interface* image = this;
uint64_t size = image->length();
@@ -128,7 +130,7 @@ image_init_result rom_image_device::call_load()
/*-------------------------------------------------
DEVICE_IMAGE_UNLOAD( rom )
-------------------------------------------------*/
-void rom_image_device::call_unload()
+void cpc_rom_image_device::call_unload()
{
m_base = nullptr;
}
diff --git a/src/devices/bus/cpc/cpc_rom.h b/src/devices/bus/cpc/cpc_rom.h
index 8330e5baf20..979134b60e8 100644
--- a/src/devices/bus/cpc/cpc_rom.h
+++ b/src/devices/bus/cpc/cpc_rom.h
@@ -6,22 +6,23 @@
*
*/
-#ifndef CPC_ROM_H_
-#define CPC_ROM_H_
+#ifndef MAME_BUS_CPC_CPC_ROM_H
+#define MAME_BUS_CPC_CPC_ROM_H
+
+#pragma once
#include "cpcexp.h"
/*** ROM image device ***/
-// ======================> rom_image_device
+// ======================> cpc_rom_image_device
-class rom_image_device : public device_t,
- public device_image_interface
+class cpc_rom_image_device : public device_t, public device_image_interface
{
public:
// construction/destruction
- rom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~rom_image_device();
+ cpc_rom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~cpc_rom_image_device();
// image-level overrides
virtual image_init_result call_load() override;
@@ -49,11 +50,11 @@ private:
// device type definition
-extern const device_type ROMSLOT;
+DECLARE_DEVICE_TYPE(CPC_ROMSLOT, cpc_rom_image_device)
-#define MCFG_ROMSLOT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, ROMSLOT, 0)
+#define MCFG_CPC_ROMSLOT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, CPC_ROMSLOT, 0)
/*** ROM box device ***/
@@ -75,13 +76,11 @@ protected:
virtual void device_reset() override;
private:
- //cpc_expansion_slot_device *m_slot;
-
- rom_image_device* m_rom[8];
+ required_device_array<cpc_rom_image_device, 8> m_rom;
};
// device type definition
-extern const device_type CPC_ROM;
+DECLARE_DEVICE_TYPE(CPC_ROM, cpc_rom_device)
-#endif
+#endif // MAME_BUS_CPC_CPC_ROM_H
diff --git a/src/devices/bus/cpc/cpc_rs232.cpp b/src/devices/bus/cpc/cpc_rs232.cpp
index fee168423f0..3122eb1ff75 100644
--- a/src/devices/bus/cpc/cpc_rs232.cpp
+++ b/src/devices/bus/cpc/cpc_rs232.cpp
@@ -15,8 +15,8 @@ SLOT_INTERFACE_EXTERN(cpc_exp_cards);
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_RS232 = device_creator<cpc_rs232_device>;
-const device_type CPC_RS232_AMS = device_creator<cpc_ams_rs232_device>;
+DEFINE_DEVICE_TYPE(CPC_RS232, cpc_rs232_device, "cpc_ser", "Pace RS232C interface")
+DEFINE_DEVICE_TYPE(CPC_RS232_AMS, cpc_ams_rs232_device, "cpc_serams", "Amstrad RS232C interface")
// device machine config
static MACHINE_CONFIG_FRAGMENT( cpc_rs232 )
@@ -83,25 +83,22 @@ const tiny_rom_entry *cpc_ams_rs232_device::device_rom_region() const
//**************************************************************************
cpc_rs232_device::cpc_rs232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_RS232, "Pace RS232C interface", tag, owner, clock, "cpc_ser", __FILE__),
- device_cpc_expansion_card_interface(mconfig, *this),
- m_pit(*this,"pit"),
- m_dart(*this,"dart"),
- m_rs232(*this,"rs232"), m_slot(nullptr)
+ cpc_rs232_device(mconfig, CPC_RS232, tag, owner, clock)
{
}
-cpc_rs232_device::cpc_rs232_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+cpc_rs232_device::cpc_rs232_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_cpc_expansion_card_interface(mconfig, *this),
m_pit(*this,"pit"),
m_dart(*this,"dart"),
- m_rs232(*this,"rs232"), m_slot(nullptr)
+ m_rs232(*this,"rs232"),
+ m_slot(nullptr)
{
}
cpc_ams_rs232_device::cpc_ams_rs232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- cpc_rs232_device(mconfig, CPC_RS232_AMS, "Amstrad RS232C interface", tag, owner, clock, "cpc_serams", __FILE__)
+ cpc_rs232_device(mconfig, CPC_RS232_AMS, tag, owner, clock)
{
}
diff --git a/src/devices/bus/cpc/cpc_rs232.h b/src/devices/bus/cpc/cpc_rs232.h
index a55ca23fdf8..d6eb4c92d9b 100644
--- a/src/devices/bus/cpc/cpc_rs232.h
+++ b/src/devices/bus/cpc/cpc_rs232.h
@@ -6,23 +6,23 @@
* Created on: 22/04/2014
*/
-#ifndef CPC_RS232_H_
-#define CPC_RS232_H_
+#ifndef MAME_BUS_CPC_CPC_RS232_H
+#define MAME_BUS_CPC_CPC_RS232_H
+#pragma once
+
+#include "cpcexp.h"
#include "machine/z80dart.h"
#include "machine/pit8253.h"
#include "bus/rs232/rs232.h"
-#include "cpcexp.h"
-class cpc_rs232_device : public device_t,
- public device_cpc_expansion_card_interface
+class cpc_rs232_device : public device_t, public device_cpc_expansion_card_interface
{
public:
// construction/destruction
cpc_rs232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- cpc_rs232_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- // optional information overrides
+ // optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
DECLARE_WRITE_LINE_MEMBER(pit_out0_w);
@@ -34,15 +34,18 @@ public:
DECLARE_READ8_MEMBER(pit_r);
DECLARE_WRITE8_MEMBER(pit_w);
- required_device<pit8253_device> m_pit;
- required_device<z80dart_device> m_dart;
- required_device<rs232_port_device> m_rs232;
protected:
+ cpc_rs232_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual const tiny_rom_entry *device_rom_region() const override;
+ required_device<pit8253_device> m_pit;
+ required_device<z80dart_device> m_dart;
+ required_device<rs232_port_device> m_rs232;
+
private:
cpc_expansion_slot_device *m_slot;
};
@@ -58,7 +61,7 @@ protected:
};
// device type definition
-extern const device_type CPC_RS232;
-extern const device_type CPC_RS232_AMS;
+DECLARE_DEVICE_TYPE(CPC_RS232, cpc_rs232_device)
+DECLARE_DEVICE_TYPE(CPC_RS232_AMS, cpc_ams_rs232_device)
-#endif /* CPC_RS232_H_ */
+#endif // MAME_BUS_CPC_CPC_RS232_H
diff --git a/src/devices/bus/cpc/cpc_ssa1.cpp b/src/devices/bus/cpc/cpc_ssa1.cpp
index af2627e03bb..5e6132dfba0 100644
--- a/src/devices/bus/cpc/cpc_ssa1.cpp
+++ b/src/devices/bus/cpc/cpc_ssa1.cpp
@@ -19,8 +19,8 @@ SLOT_INTERFACE_EXTERN(cpc_exp_cards);
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_SSA1 = device_creator<cpc_ssa1_device>;
-const device_type CPC_DKSPEECH = device_creator<cpc_dkspeech_device>;
+DEFINE_DEVICE_TYPE(CPC_SSA1, cpc_ssa1_device, "cpc_ssa1", "Amstrad SSA-1")
+DEFINE_DEVICE_TYPE(CPC_DKSPEECH, cpc_dkspeech_device, "cpc_dkspeech", "DK'Tronics Speech Synthesiser")
//-------------------------------------------------
// device I/O handlers
@@ -162,7 +162,7 @@ machine_config_constructor cpc_dkspeech_device::device_mconfig_additions() const
//**************************************************************************
cpc_ssa1_device::cpc_ssa1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_SSA1, "SSA-1", tag, owner, clock, "cpc_ssa1", __FILE__),
+ device_t(mconfig, CPC_SSA1, tag, owner, clock),
device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr), m_rom(nullptr),
m_lrq(1), m_sby(0),
m_sp0256_device(*this,"sp0256")
@@ -170,7 +170,7 @@ cpc_ssa1_device::cpc_ssa1_device(const machine_config &mconfig, const char *tag,
}
cpc_dkspeech_device::cpc_dkspeech_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_DKSPEECH, "DK'Tronics Speech Synthesiser", tag, owner, clock, "cpc_dkspeech", __FILE__),
+ device_t(mconfig, CPC_DKSPEECH, tag, owner, clock),
device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr), m_rom(nullptr),
m_lrq(1), m_sby(0),
m_sp0256_device(*this,"sp0256")
diff --git a/src/devices/bus/cpc/cpc_ssa1.h b/src/devices/bus/cpc/cpc_ssa1.h
index a8943ec4392..da4aafa5a38 100644
--- a/src/devices/bus/cpc/cpc_ssa1.h
+++ b/src/devices/bus/cpc/cpc_ssa1.h
@@ -40,8 +40,10 @@
*
*/
-#ifndef CPC_SSA1_H_
-#define CPC_SSA1_H_
+#ifndef MAME_BUS_CPC_CPC_SSA1_H
+#define MAME_BUS_CPC_CPC_SSA1_H
+
+#pragma once
#include "cpcexp.h"
@@ -120,8 +122,8 @@ private:
};
// device type definition
-extern const device_type CPC_SSA1;
-extern const device_type CPC_DKSPEECH;
+DECLARE_DEVICE_TYPE(CPC_SSA1, cpc_ssa1_device)
+DECLARE_DEVICE_TYPE(CPC_DKSPEECH, cpc_dkspeech_device)
-#endif /* CPC_SSA1_H_ */
+#endif // MAME_BUS_CPC_CPC_SSA1_H
diff --git a/src/devices/bus/cpc/cpcexp.cpp b/src/devices/bus/cpc/cpcexp.cpp
index ff1db3d6741..d40af53711c 100644
--- a/src/devices/bus/cpc/cpcexp.cpp
+++ b/src/devices/bus/cpc/cpcexp.cpp
@@ -16,7 +16,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type CPC_EXPANSION_SLOT = device_creator<cpc_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(CPC_EXPANSION_SLOT, cpc_expansion_slot_device, "cpc_expansion_slot", "Amstrad CPC expansion port")
//**************************************************************************
@@ -25,8 +25,8 @@ const device_type CPC_EXPANSION_SLOT = device_creator<cpc_expansion_slot_device>
device_cpc_expansion_card_interface::device_cpc_expansion_card_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig,device),
- m_rom_sel(0)
+ : device_slot_card_interface(mconfig,device)
+ , m_rom_sel(0)
{
}
@@ -41,14 +41,15 @@ device_cpc_expansion_card_interface::~device_cpc_expansion_card_interface()
// LIVE DEVICE
//**************************************************************************
-cpc_expansion_slot_device::cpc_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_EXPANSION_SLOT, "Amstrad CPC expansion port", tag, owner, clock, "cpc_expansion_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_out_irq_cb(*this),
- m_out_nmi_cb(*this),
- m_out_reset_cb(*this),
- m_out_romdis_cb(*this),
- m_out_rom_select(*this), m_card(nullptr)
+cpc_expansion_slot_device::cpc_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, CPC_EXPANSION_SLOT, tag, owner, clock)
+ , device_slot_interface(mconfig, *this)
+ , m_out_irq_cb(*this)
+ , m_out_nmi_cb(*this)
+ , m_out_reset_cb(*this)
+ , m_out_romdis_cb(*this)
+ , m_out_rom_select(*this)
+ , m_card(nullptr)
{
}
diff --git a/src/devices/bus/cpc/cpcexp.h b/src/devices/bus/cpc/cpcexp.h
index 9552a4ee803..0f99ea051aa 100644
--- a/src/devices/bus/cpc/cpcexp.h
+++ b/src/devices/bus/cpc/cpcexp.h
@@ -43,10 +43,10 @@
*
*/
-#pragma once
+#ifndef MAME_BUS_CPC_CPCEXP_H
+#define MAME_BUS_CPC_CPCEXP_H
-#ifndef CPCEXP_H_
-#define CPCEXP_H_
+#pragma once
//**************************************************************************
@@ -55,13 +55,6 @@
#define CPC_EXP_SLOT_TAG "cpcexp"
-enum
-{
- MAP_LOWER = 0, // special lower ROM handling
- MAP_UPPER, // special upper ROM handling
- MAP_OTHER // custom ROM handling (eg: Brunword MK4)
-};
-
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
@@ -91,18 +84,27 @@ enum
class device_cpc_expansion_card_interface : public device_slot_card_interface
{
public:
+ enum
+ {
+ MAP_LOWER = 0, // special lower ROM handling
+ MAP_UPPER, // special upper ROM handling
+ MAP_OTHER // custom ROM handling (eg: Brunword MK4)
+ };
+
// construction/destruction
- device_cpc_expansion_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_cpc_expansion_card_interface();
// reset
- virtual void cpc_reset_w() { };
- virtual WRITE_LINE_MEMBER( cursor_w ) { };
- virtual WRITE_LINE_MEMBER( romen_w ) { };
+ virtual void cpc_reset_w() { }
+ virtual WRITE_LINE_MEMBER( cursor_w ) { }
+ virtual WRITE_LINE_MEMBER( romen_w ) { }
void set_rom_bank(uint8_t sel) { m_rom_sel = sel; } // tell device the currently selected ROM
uint8_t get_rom_bank() { return m_rom_sel; }
- virtual void set_mapping(uint8_t type) { };
+ virtual void set_mapping(uint8_t type) { }
+
+protected:
+ device_cpc_expansion_card_interface(const machine_config &mconfig, device_t &device);
private:
uint8_t m_rom_sel; // currently selected ROM
@@ -119,11 +121,11 @@ public:
cpc_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~cpc_expansion_slot_device();
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<cpc_expansion_slot_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_nmi_callback(device_t &device, _Object object) { return downcast<cpc_expansion_slot_device &>(device).m_out_nmi_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_reset_callback(device_t &device, _Object object) { return downcast<cpc_expansion_slot_device &>(device).m_out_reset_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_romdis_callback(device_t &device, _Object object) { return downcast<cpc_expansion_slot_device &>(device).m_out_romdis_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rom_select_callback(device_t &device, _Object object) { return downcast<cpc_expansion_slot_device &>(device).m_out_rom_select.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_reset_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_reset_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_romdis_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_romdis_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rom_select_callback(device_t &device, Object &&cb) { return downcast<cpc_expansion_slot_device &>(device).m_out_rom_select.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( irq_w );
DECLARE_WRITE_LINE_MEMBER( nmi_w );
@@ -153,6 +155,6 @@ protected:
// device type definition
-extern const device_type CPC_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(CPC_EXPANSION_SLOT, cpc_expansion_slot_device)
-#endif /* CPCEXP_H_ */
+#endif // MAME_BUS_CPC_CPCEXP_H
diff --git a/src/devices/bus/cpc/ddi1.cpp b/src/devices/bus/cpc/ddi1.cpp
index b78caa06129..1ee3ab13d06 100644
--- a/src/devices/bus/cpc/ddi1.cpp
+++ b/src/devices/bus/cpc/ddi1.cpp
@@ -7,13 +7,14 @@
#include "emu.h"
#include "ddi1.h"
#include "softlist.h"
+
SLOT_INTERFACE_EXTERN(cpc_exp_cards);
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_DDI1 = device_creator<cpc_ddi1_device>;
+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 )
@@ -62,7 +63,7 @@ machine_config_constructor cpc_ddi1_device::device_mconfig_additions() const
//**************************************************************************
cpc_ddi1_device::cpc_ddi1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_DDI1, "DDI-1", tag, owner, clock, "cpc_ddi1", __FILE__),
+ device_t(mconfig, CPC_DDI1, tag, owner, clock),
device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr),
m_fdc(*this,"upd765"),
m_connector(*this,"upd765:0"), m_rom_active(false), m_romen(false)
diff --git a/src/devices/bus/cpc/ddi1.h b/src/devices/bus/cpc/ddi1.h
index 8d900048b32..37d7cd32e1a 100644
--- a/src/devices/bus/cpc/ddi1.h
+++ b/src/devices/bus/cpc/ddi1.h
@@ -8,14 +8,15 @@
*
*/
-#ifndef CPC_DDI1_H_
-#define CPC_DDI1_H_
+#ifndef MAME_BUS_CPC_DDI1_H
+#define MAME_BUS_CPC_DDI1_H
+
+#pragma once
#include "cpcexp.h"
#include "machine/upd765.h"
-class cpc_ddi1_device : public device_t,
- public device_cpc_expansion_card_interface
+class cpc_ddi1_device : public device_t, public device_cpc_expansion_card_interface
{
public:
// construction/destruction
@@ -48,5 +49,6 @@ private:
// device type definition
extern const device_type CPC_DDI1;
+DECLARE_DEVICE_TYPE(CPC_DDI1, cpc_ddi1_device)
-#endif /* CPC_DDI1_H_ */
+#endif // MAME_BUS_CPC_DDI1_H
diff --git a/src/devices/bus/cpc/doubler.cpp b/src/devices/bus/cpc/doubler.cpp
index 5a26931e400..30642445277 100644
--- a/src/devices/bus/cpc/doubler.cpp
+++ b/src/devices/bus/cpc/doubler.cpp
@@ -8,13 +8,12 @@
#include "emu.h"
#include "doubler.h"
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_DOUBLER = device_creator<cpc_doubler_device>;
+DEFINE_DEVICE_TYPE(CPC_DOUBLER, cpc_doubler_device, "cpc_doubler", "Draysoft Doubler")
static MACHINE_CONFIG_FRAGMENT( cpc_doubler )
@@ -38,7 +37,7 @@ machine_config_constructor cpc_doubler_device::device_mconfig_additions() const
//**************************************************************************
cpc_doubler_device::cpc_doubler_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_DOUBLER, "Draysoft Doubler", tag, owner, clock, "cpc_doubler", __FILE__),
+ device_t(mconfig, CPC_DOUBLER, tag, owner, clock),
device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr),
m_tape(*this,"doubler_tape")
{
diff --git a/src/devices/bus/cpc/doubler.h b/src/devices/bus/cpc/doubler.h
index 673e592470e..03d75a16247 100644
--- a/src/devices/bus/cpc/doubler.h
+++ b/src/devices/bus/cpc/doubler.h
@@ -8,8 +8,10 @@
*
*/
-#ifndef DOUBLER_H_
-#define DOUBLER_H_
+#ifndef MAME_BUS_CPC_DOUBLER_H
+#define MAME_BUS_CPC_DOUBLER_H
+
+#pragma once
#include "cpcexp.h"
#include "imagedev/cassette.h"
@@ -39,6 +41,6 @@ private:
};
// device type definition
-extern const device_type CPC_DOUBLER;
+DECLARE_DEVICE_TYPE(CPC_DOUBLER, cpc_doubler_device)
-#endif /* DOUBLER_H_ */
+#endif // MAME_BUS_CPC_DOUBLER_H
diff --git a/src/devices/bus/cpc/hd20.cpp b/src/devices/bus/cpc/hd20.cpp
index 427ef00efd4..5a2a204346e 100644
--- a/src/devices/bus/cpc/hd20.cpp
+++ b/src/devices/bus/cpc/hd20.cpp
@@ -8,13 +8,12 @@
#include "emu.h"
#include "hd20.h"
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_HD20 = device_creator<cpc_hd20_device>;
+DEFINE_DEVICE_TYPE(CPC_HD20, cpc_hd20_device, "cpc_hd20", "Dobbertin HD20")
static MACHINE_CONFIG_FRAGMENT( cpc_hd20 )
MCFG_DEVICE_ADD("hdc",ST11M_HDC,0)
@@ -48,7 +47,7 @@ const tiny_rom_entry *cpc_hd20_device::device_rom_region() const
//**************************************************************************
cpc_hd20_device::cpc_hd20_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_HD20, "Dobbertin HD20", tag, owner, clock, "cpc_hd20", __FILE__),
+ device_t(mconfig, CPC_HD20, tag, owner, clock),
device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr),
m_hdc(*this,"hdc")
{
diff --git a/src/devices/bus/cpc/hd20.h b/src/devices/bus/cpc/hd20.h
index 2837a748b76..e0dd933da73 100644
--- a/src/devices/bus/cpc/hd20.h
+++ b/src/devices/bus/cpc/hd20.h
@@ -11,8 +11,10 @@
*/
-#ifndef HD20_H_
-#define HD20_H_
+#ifndef MAME_BUS_CPC_HD20_H
+#define MAME_BUS_CPC_HD20_H
+
+#pragma once
#include "cpcexp.h"
#include "bus/isa/hdc.h"
@@ -44,6 +46,6 @@ private:
};
// device type definition
-extern const device_type CPC_HD20;
+DECLARE_DEVICE_TYPE(CPC_HD20, cpc_hd20_device)
-#endif /* HD20_H_ */
+#endif // MAME_BUS_CPC_HD20_H
diff --git a/src/devices/bus/cpc/magicsound.cpp b/src/devices/bus/cpc/magicsound.cpp
index 6736f2367dd..c4feaa89f1a 100644
--- a/src/devices/bus/cpc/magicsound.cpp
+++ b/src/devices/bus/cpc/magicsound.cpp
@@ -13,13 +13,11 @@
#include "speaker.h"
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
-
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type AL_MAGICSOUND = device_creator<al_magicsound_device>;
+DEFINE_DEVICE_TYPE(AL_MAGICSOUND, al_magicsound_device, "al_magicsound", "Aleste Magic Sound Board")
static MACHINE_CONFIG_FRAGMENT( al_magicsound )
@@ -75,7 +73,7 @@ machine_config_constructor al_magicsound_device::device_mconfig_additions() cons
//**************************************************************************
al_magicsound_device::al_magicsound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, AL_MAGICSOUND, "Magic Sound Board", tag, owner, clock, "al_magicsound", __FILE__),
+ device_t(mconfig, AL_MAGICSOUND, tag, owner, clock),
device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr),
m_dac(*this,"dac"),
m_dmac(*this,"dmac"),
diff --git a/src/devices/bus/cpc/magicsound.h b/src/devices/bus/cpc/magicsound.h
index c0d276e5a23..ccb11091988 100644
--- a/src/devices/bus/cpc/magicsound.h
+++ b/src/devices/bus/cpc/magicsound.h
@@ -22,8 +22,10 @@
*
*/
-#ifndef MAGICSOUND_H_
-#define MAGICSOUND_H_
+#ifndef MAME_BUS_CPC_MAGICSOUND_H
+#define MAME_BUS_CPC_MAGICSOUND_H
+
+#pragma once
#include "cpcexp.h"
#include "sound/dmadac.h"
@@ -84,7 +86,7 @@ private:
};
// device type definition
-extern const device_type AL_MAGICSOUND;
+DECLARE_DEVICE_TYPE(AL_MAGICSOUND, al_magicsound_device)
-#endif /* MAGICSOUND_H_ */
+#endif // MAME_BUS_CPC_MAGICSOUND_H
diff --git a/src/devices/bus/cpc/mface2.cpp b/src/devices/bus/cpc/mface2.cpp
index 536a0133f56..0db80e55cc0 100644
--- a/src/devices/bus/cpc/mface2.cpp
+++ b/src/devices/bus/cpc/mface2.cpp
@@ -8,13 +8,14 @@
#include "emu.h"
#include "mface2.h"
+
SLOT_INTERFACE_EXTERN(cpc_exp_cards);
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_MFACE2 = device_creator<cpc_multiface2_device>;
+DEFINE_DEVICE_TYPE(CPC_MFACE2, cpc_multiface2_device, "cpc_mface2", "Multiface II")
// device machine config
static MACHINE_CONFIG_FRAGMENT( cpc_mface2 )
@@ -311,8 +312,9 @@ ioport_constructor cpc_multiface2_device::device_input_ports() const
//**************************************************************************
cpc_multiface2_device::cpc_multiface2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_MFACE2, "Multiface II", tag, owner, clock, "cpc_mf2", __FILE__),
- device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr), m_multiface_ram(nullptr), m_multiface_flags(0), m_romdis(0)
+ device_t(mconfig, CPC_MFACE2, tag, owner, clock),
+ device_cpc_expansion_card_interface(mconfig, *this),
+ m_slot(nullptr), m_multiface_ram(nullptr), m_multiface_flags(0), m_romdis(0)
{
}
diff --git a/src/devices/bus/cpc/mface2.h b/src/devices/bus/cpc/mface2.h
index 0df2cbab52c..de41dc97c15 100644
--- a/src/devices/bus/cpc/mface2.h
+++ b/src/devices/bus/cpc/mface2.h
@@ -17,8 +17,10 @@
* It also monitors all I/O port writes, so that it can restore them when resuming the current application.
*/
-#ifndef MFACE2_H_
-#define MFACE2_H_
+#ifndef MAME_BUS_CPC_MFACE2_H
+#define MAME_BUS_CPC_MFACE2_H
+
+#pragma once
#include "cpcexp.h"
@@ -62,6 +64,6 @@ private:
};
// device type definition
-extern const device_type CPC_MFACE2;
+DECLARE_DEVICE_TYPE(CPC_MFACE2, cpc_multiface2_device)
-#endif /* MFACE2_H_ */
+#endif // MAME_BUS_CPC_MFACE2_H
diff --git a/src/devices/bus/cpc/playcity.cpp b/src/devices/bus/cpc/playcity.cpp
index de8da2d8377..d303fc16f0f 100644
--- a/src/devices/bus/cpc/playcity.cpp
+++ b/src/devices/bus/cpc/playcity.cpp
@@ -21,7 +21,7 @@ SLOT_INTERFACE_EXTERN(cpc_exp_cards);
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_PLAYCITY = device_creator<cpc_playcity_device>;
+DEFINE_DEVICE_TYPE(CPC_PLAYCITY, cpc_playcity_device, "cpc_playcity", "PlayCity")
// device machine config
static MACHINE_CONFIG_FRAGMENT( cpc_playcity )
@@ -57,8 +57,9 @@ machine_config_constructor cpc_playcity_device::device_mconfig_additions() const
//**************************************************************************
cpc_playcity_device::cpc_playcity_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_PLAYCITY, "PlayCity", tag, owner, clock, "cpc_playcity", __FILE__),
- device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr),
+ device_t(mconfig, CPC_PLAYCITY, tag, owner, clock),
+ device_cpc_expansion_card_interface(mconfig, *this),
+ m_slot(nullptr),
m_ctc(*this,"ctc"),
m_ymz1(*this,"ymz_1"),
m_ymz2(*this,"ymz_2")
diff --git a/src/devices/bus/cpc/playcity.h b/src/devices/bus/cpc/playcity.h
index 27f9851bd6f..f7c2162051c 100644
--- a/src/devices/bus/cpc/playcity.h
+++ b/src/devices/bus/cpc/playcity.h
@@ -14,16 +14,17 @@
* F988 - YMZ294 #2 (left) register select
*/
-#ifndef CPC_PLAYCITY_H_
-#define CPC_PLAYCITY_H_
+#ifndef MAME_BUS_CPC_PLAYCITY_H
+#define MAME_BUS_CPC_PLAYCITY_H
+
+#pragma once
#include "cpcexp.h"
#include "sound/ay8910.h"
#include "machine/z80ctc.h"
-class cpc_playcity_device : public device_t,
- public device_cpc_expansion_card_interface
+class cpc_playcity_device : public device_t, public device_cpc_expansion_card_interface
{
public:
// construction/destruction
@@ -61,7 +62,7 @@ private:
};
// device type definition
-extern const device_type CPC_PLAYCITY;
+DECLARE_DEVICE_TYPE(CPC_PLAYCITY, cpc_playcity_device)
-#endif /* CPC_PLAYCITY_H_ */
+#endif // MAME_BUS_CPC_PLAYCITY_H
diff --git a/src/devices/bus/cpc/smartwatch.cpp b/src/devices/bus/cpc/smartwatch.cpp
index 89805cd607b..cef0a846572 100644
--- a/src/devices/bus/cpc/smartwatch.cpp
+++ b/src/devices/bus/cpc/smartwatch.cpp
@@ -11,13 +11,12 @@
#include "emu.h"
#include "smartwatch.h"
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_SMARTWATCH = device_creator<cpc_smartwatch_device>;
+DEFINE_DEVICE_TYPE(CPC_SMARTWATCH, cpc_smartwatch_device, "cpc_smartwatch", "Dobbertin Smartwatch")
static MACHINE_CONFIG_FRAGMENT( cpc_smartwatch )
@@ -45,7 +44,7 @@ const tiny_rom_entry *cpc_smartwatch_device::device_rom_region() const
//**************************************************************************
cpc_smartwatch_device::cpc_smartwatch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_SMARTWATCH, "Dobbertin Smartwatch", tag, owner, clock, "cpc_smartwatch", __FILE__),
+ device_t(mconfig, CPC_SMARTWATCH, tag, owner, clock),
device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr),
m_rtc(*this,"rtc"), m_bank(nullptr)
{
diff --git a/src/devices/bus/cpc/smartwatch.h b/src/devices/bus/cpc/smartwatch.h
index b27b7b4df67..a555b802553 100644
--- a/src/devices/bus/cpc/smartwatch.h
+++ b/src/devices/bus/cpc/smartwatch.h
@@ -9,14 +9,15 @@
*/
-#ifndef SMARTWATCH_H_
-#define SMARTWATCH_H_
+#ifndef MAME_BUS_CPC_SMARTWATCH_H
+#define MAME_BUS_CPC_SMARTWATCH_H
+
+#pragma once
#include "cpcexp.h"
#include "machine/ds1315.h"
-class cpc_smartwatch_device : public device_t,
- public device_cpc_expansion_card_interface
+class cpc_smartwatch_device : public device_t, public device_cpc_expansion_card_interface
{
public:
// construction/destruction
@@ -41,7 +42,7 @@ private:
};
// device type definition
-extern const device_type CPC_SMARTWATCH;
+DECLARE_DEVICE_TYPE(CPC_SMARTWATCH, cpc_smartwatch_device)
-#endif /* SMARTWATCH_H_ */
+#endif // MAME_BUS_CPC_SMARTWATCH_H
diff --git a/src/devices/bus/cpc/symbfac2.cpp b/src/devices/bus/cpc/symbfac2.cpp
index 049e5f487f2..cba1e4c5003 100644
--- a/src/devices/bus/cpc/symbfac2.cpp
+++ b/src/devices/bus/cpc/symbfac2.cpp
@@ -21,7 +21,7 @@
#include "symbfac2.h"
-const device_type CPC_SYMBIFACE2 = device_creator<cpc_symbiface2_device>;
+DEFINE_DEVICE_TYPE(CPC_SYMBIFACE2, cpc_symbiface2_device, "cpc_symf2", "SYMBiFACE II")
//**************************************************************************
// DEVICE CONFIG INTERFACE
@@ -73,14 +73,16 @@ ioport_constructor cpc_symbiface2_device::device_input_ports() const
//**************************************************************************
cpc_symbiface2_device::cpc_symbiface2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_SYMBIFACE2, "SYMBiFACE II", tag, owner, clock, "cpc_symf2", __FILE__),
- device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr),
+ device_t(mconfig, CPC_SYMBIFACE2, tag, owner, clock),
+ device_cpc_expansion_card_interface(mconfig, *this),
+ m_slot(nullptr),
m_ide(*this,"ide"),
m_rtc(*this,"rtc"),
m_nvram(*this,"nvram"),
m_mouse_x(*this,"sf2_mouse_x"),
m_mouse_y(*this,"sf2_mouse_y"),
- m_mouse_buttons(*this,"sf2_mouse_buttons"), m_iohigh(false), m_ide_data(0), m_mouse_state(0), m_input_x(0), m_input_y(0), m_4xxx_ptr_r(nullptr), m_4xxx_ptr_w(nullptr), m_6xxx_ptr_r(nullptr), m_6xxx_ptr_w(nullptr)
+ m_mouse_buttons(*this,"sf2_mouse_buttons"),
+ m_iohigh(false), m_ide_data(0), m_mouse_state(0), m_input_x(0), m_input_y(0), m_4xxx_ptr_r(nullptr), m_4xxx_ptr_w(nullptr), m_6xxx_ptr_r(nullptr), m_6xxx_ptr_w(nullptr)
{
}
diff --git a/src/devices/bus/cpc/symbfac2.h b/src/devices/bus/cpc/symbfac2.h
index a5a568b423f..9144d8a6519 100644
--- a/src/devices/bus/cpc/symbfac2.h
+++ b/src/devices/bus/cpc/symbfac2.h
@@ -6,13 +6,15 @@
* Created on: 2/08/2014
*/
-#ifndef SYMBFAC2_H_
-#define SYMBFAC2_H_
+#ifndef MAME_BUS_CPC_SYMBFAC2_H
+#define MAME_BUS_CPC_SYMBFAC2_H
+#pragma once
+
+#include "cpcexp.h"
#include "machine/ataintf.h"
#include "machine/ds128x.h"
#include "machine/nvram.h"
-#include "cpcexp.h"
class cpc_symbiface2_device : public device_t,
public device_cpc_expansion_card_interface
@@ -46,6 +48,7 @@ public:
PS2_MOUSE_BUTTONS,
PS2_MOUSE_SCROLL
};
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -78,7 +81,7 @@ private:
};
// device type definition
-extern const device_type CPC_SYMBIFACE2;
+DECLARE_DEVICE_TYPE(CPC_SYMBIFACE2, cpc_symbiface2_device)
-#endif /* SYMBFAC2_H_ */
+#endif // MAME_BUS_CPC_SYMBFAC2_H
diff --git a/src/devices/bus/cpc/transtape.cpp b/src/devices/bus/cpc/transtape.cpp
index 231333dd0e6..fbbe3bc464c 100644
--- a/src/devices/bus/cpc/transtape.cpp
+++ b/src/devices/bus/cpc/transtape.cpp
@@ -10,13 +10,12 @@
#include "emu.h"
#include "transtape.h"
-SLOT_INTERFACE_EXTERN(cpc_exp_cards);
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CPC_TRANSTAPE = device_creator<cpc_transtape_device>;
+DEFINE_DEVICE_TYPE(CPC_TRANSTAPE, cpc_transtape_device, "cpc_transtape", "Hard Micro Transtape")
ROM_START( cpc_transtape )
ROM_REGION( 0x4000, "tt_rom", 0 )
@@ -44,8 +43,9 @@ ioport_constructor cpc_transtape_device::device_input_ports() const
//**************************************************************************
cpc_transtape_device::cpc_transtape_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CPC_TRANSTAPE, "HM Transtape", tag, owner, clock, "cpc_transtape", __FILE__),
- device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr), m_cpu(nullptr), m_space(nullptr), m_ram(nullptr),
+ device_t(mconfig, CPC_TRANSTAPE, tag, owner, clock),
+ device_cpc_expansion_card_interface(mconfig, *this),
+ m_slot(nullptr), m_cpu(nullptr), m_space(nullptr), m_ram(nullptr),
m_rom_active(false),
m_romen(true),
m_output(0)
diff --git a/src/devices/bus/cpc/transtape.h b/src/devices/bus/cpc/transtape.h
index b8ae9037266..14fd81a0dc1 100644
--- a/src/devices/bus/cpc/transtape.h
+++ b/src/devices/bus/cpc/transtape.h
@@ -7,8 +7,10 @@
*
*/
-#ifndef TRANSTAPE_H_
-#define TRANSTAPE_H_
+#ifndef MAME_BUS_CPC_TRANSTAPE_H
+#define MAME_BUS_CPC_TRANSTAPE_H
+
+#pragma once
#include "cpcexp.h"
@@ -49,6 +51,6 @@ private:
};
// device type definition
-extern const device_type CPC_TRANSTAPE;
+DECLARE_DEVICE_TYPE(CPC_TRANSTAPE, cpc_transtape_device)
-#endif /* TRANSTAPE_H_ */
+#endif // MAME_BUS_CPC_TRANSTAPE_H
diff --git a/src/devices/bus/crvision/rom.cpp b/src/devices/bus/crvision/rom.cpp
index 773eb00472b..fad177683b0 100644
--- a/src/devices/bus/crvision/rom.cpp
+++ b/src/devices/bus/crvision/rom.cpp
@@ -17,54 +17,53 @@
// crvision_rom_device - constructor
//-------------------------------------------------
-const device_type CRVISION_ROM_4K = device_creator<crvision_rom_device>;
-const device_type CRVISION_ROM_6K = device_creator<crvision_rom6k_device>;
-const device_type CRVISION_ROM_8K = device_creator<crvision_rom8k_device>;
-const device_type CRVISION_ROM_10K = device_creator<crvision_rom10k_device>;
-const device_type CRVISION_ROM_12K = device_creator<crvision_rom12k_device>;
-const device_type CRVISION_ROM_16K = device_creator<crvision_rom16k_device>;
-const device_type CRVISION_ROM_18K = device_creator<crvision_rom18k_device>;
+DEFINE_DEVICE_TYPE(CRVISION_ROM_4K, crvision_rom_device, "crvision_4k", "CreatiVision 4K Carts")
+DEFINE_DEVICE_TYPE(CRVISION_ROM_6K, crvision_rom6k_device, "crvision_6k", "CreatiVision 6K Carts")
+DEFINE_DEVICE_TYPE(CRVISION_ROM_8K, crvision_rom8k_device, "crvision_8k", "CreatiVision 8K Carts")
+DEFINE_DEVICE_TYPE(CRVISION_ROM_10K, crvision_rom10k_device, "crvision_10k", "CreatiVision 10K Carts")
+DEFINE_DEVICE_TYPE(CRVISION_ROM_12K, crvision_rom12k_device, "crvision_12k", "CreatiVision 12K Carts")
+DEFINE_DEVICE_TYPE(CRVISION_ROM_16K, crvision_rom16k_device, "crvision_16k", "CreatiVision 16K Carts")
+DEFINE_DEVICE_TYPE(CRVISION_ROM_18K, crvision_rom18k_device, "crvision_18k", "CreatiVision 18K Carts")
-crvision_rom_device::crvision_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_crvision_cart_interface(mconfig, *this)
+crvision_rom_device::crvision_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_crvision_cart_interface(mconfig, *this)
{
}
crvision_rom_device::crvision_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CRVISION_ROM_4K, "CreatiVision 4K Carts", tag, owner, clock, "crvision_4k", __FILE__),
- device_crvision_cart_interface(mconfig, *this)
+ : crvision_rom_device(mconfig, CRVISION_ROM_4K, tag, owner, clock)
{
}
crvision_rom6k_device::crvision_rom6k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : crvision_rom_device(mconfig, CRVISION_ROM_6K, "CreatiVision 6K Carts", tag, owner, clock, "crvision_6k", __FILE__)
+ : crvision_rom_device(mconfig, CRVISION_ROM_6K, tag, owner, clock)
{
}
crvision_rom8k_device::crvision_rom8k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : crvision_rom_device(mconfig, CRVISION_ROM_8K, "CreatiVision 8K Carts", tag, owner, clock, "crvision_8k", __FILE__)
+ : crvision_rom_device(mconfig, CRVISION_ROM_8K, tag, owner, clock)
{
}
crvision_rom10k_device::crvision_rom10k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : crvision_rom_device(mconfig, CRVISION_ROM_10K, "CreatiVision 10K Carts", tag, owner, clock, "crvision_10k", __FILE__)
+ : crvision_rom_device(mconfig, CRVISION_ROM_10K, tag, owner, clock)
{
}
crvision_rom12k_device::crvision_rom12k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : crvision_rom_device(mconfig, CRVISION_ROM_12K, "CreatiVision 12K Carts", tag, owner, clock, "crvision_12k", __FILE__)
+ : crvision_rom_device(mconfig, CRVISION_ROM_12K, tag, owner, clock)
{
}
crvision_rom16k_device::crvision_rom16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : crvision_rom_device(mconfig, CRVISION_ROM_16K, "CreatiVision 16K Carts", tag, owner, clock, "crvision_16k", __FILE__)
+ : crvision_rom_device(mconfig, CRVISION_ROM_16K, tag, owner, clock)
{
}
crvision_rom18k_device::crvision_rom18k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : crvision_rom_device(mconfig, CRVISION_ROM_18K, "CreatiVision 18K Carts", tag, owner, clock, "crvision_18k", __FILE__)
+ : crvision_rom_device(mconfig, CRVISION_ROM_18K, tag, owner, clock)
{
}
diff --git a/src/devices/bus/crvision/rom.h b/src/devices/bus/crvision/rom.h
index c557389ec97..cf15b1e4e2a 100644
--- a/src/devices/bus/crvision/rom.h
+++ b/src/devices/bus/crvision/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __CRVISION_ROM_H
-#define __CRVISION_ROM_H
+#ifndef MAME_BUS_CPC_CRVISION_ROM_H
+#define MAME_BUS_CPC_CRVISION_ROM_H
+
+#pragma once
#include "slot.h"
@@ -13,15 +15,17 @@ class crvision_rom_device : public device_t,
{
public:
// construction/destruction
- crvision_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
crvision_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom80) override;
+
+protected:
+ crvision_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override {}
virtual void device_reset() override {}
-
- // reading and writing
- virtual DECLARE_READ8_MEMBER(read_rom80) override;
};
// ======================> crvision_rom6k_device
@@ -100,17 +104,14 @@ public:
};
-
-
-
// device type definition
-extern const device_type CRVISION_ROM_4K;
-extern const device_type CRVISION_ROM_6K;
-extern const device_type CRVISION_ROM_8K;
-extern const device_type CRVISION_ROM_10K;
-extern const device_type CRVISION_ROM_12K;
-extern const device_type CRVISION_ROM_16K;
-extern const device_type CRVISION_ROM_18K;
+DECLARE_DEVICE_TYPE(CRVISION_ROM_4K, crvision_rom_device)
+DECLARE_DEVICE_TYPE(CRVISION_ROM_6K, crvision_rom6k_device)
+DECLARE_DEVICE_TYPE(CRVISION_ROM_8K, crvision_rom8k_device)
+DECLARE_DEVICE_TYPE(CRVISION_ROM_10K, crvision_rom10k_device)
+DECLARE_DEVICE_TYPE(CRVISION_ROM_12K, crvision_rom12k_device)
+DECLARE_DEVICE_TYPE(CRVISION_ROM_16K, crvision_rom16k_device)
+DECLARE_DEVICE_TYPE(CRVISION_ROM_18K, crvision_rom18k_device)
-#endif
+#endif // MAME_BUS_CPC_CRVISION_ROM_H
diff --git a/src/devices/bus/crvision/slot.cpp b/src/devices/bus/crvision/slot.cpp
index 48e0fd719ea..a0398840f00 100644
--- a/src/devices/bus/crvision/slot.cpp
+++ b/src/devices/bus/crvision/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type CRVISION_CART_SLOT = device_creator<crvision_cart_slot_device>;
+DEFINE_DEVICE_TYPE(CRVISION_CART_SLOT, crvision_cart_slot_device, "crvision_cart_slot", "CreatiVision Cartridge Slot")
//**************************************************************************
// CreatiVision Cartridges Interface
@@ -63,10 +63,10 @@ void device_crvision_cart_interface::rom_alloc(uint32_t size, const char *tag)
// crvision_cart_slot_device - constructor
//-------------------------------------------------
crvision_cart_slot_device::crvision_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CRVISION_CART_SLOT, "CreatiVision Cartridge Slot", tag, owner, clock, "crvision_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(CRV_4K), m_cart(nullptr)
+ device_t(mconfig, CRVISION_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(CRV_4K), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/crvision/slot.h b/src/devices/bus/crvision/slot.h
index c705d016d1b..bcf841ecfdd 100644
--- a/src/devices/bus/crvision/slot.h
+++ b/src/devices/bus/crvision/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __CRVISION_SLOT_H
-#define __CRVISION_SLOT_H
+#ifndef MAME_BUS_CRVISION_SLOT_H
+#define MAME_BUS_CRVISION_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -30,7 +32,6 @@ class device_crvision_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_crvision_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_crvision_cart_interface();
// reading and writing
@@ -42,6 +43,8 @@ public:
uint32_t get_rom_size() { return m_rom_size; }
protected:
+ device_crvision_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -95,6 +98,7 @@ protected:
// device type definition
extern const device_type CRVISION_CART_SLOT;
+DECLARE_DEVICE_TYPE(CRVISION_CART_SLOT, crvision_cart_slot_device)
/***************************************************************************
@@ -106,4 +110,5 @@ extern const device_type CRVISION_CART_SLOT;
#define MCFG_CRVISION_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, CRVISION_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+
+#endif // MAME_BUS_CRVISION_SLOT_H
diff --git a/src/devices/bus/dmv/dmvbus.cpp b/src/devices/bus/dmv/dmvbus.cpp
index 379be49cef2..80cb8ae748c 100644
--- a/src/devices/bus/dmv/dmvbus.cpp
+++ b/src/devices/bus/dmv/dmvbus.cpp
@@ -162,7 +162,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type DMVCART_SLOT = device_creator<dmvcart_slot_device>;
+DEFINE_DEVICE_TYPE(DMVCART_SLOT, dmvcart_slot_device, "dmvcart_slot", "Decision Mate V cartridge slot")
//**************************************************************************
// DMV cartridge interface
@@ -195,13 +195,13 @@ device_dmvslot_interface::~device_dmvslot_interface()
// dmvcart_slot_device - constructor
//-------------------------------------------------
dmvcart_slot_device::dmvcart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, DMVCART_SLOT, "Decision Mate V cartridge slot", tag, owner, clock, "dmvcart_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_prog_read_cb(*this),
- m_prog_write_cb(*this),
- m_out_int_cb(*this),
- m_out_irq_cb(*this),
- m_out_thold_cb(*this), m_cart(nullptr)
+ device_t(mconfig, DMVCART_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_prog_read_cb(*this),
+ m_prog_write_cb(*this),
+ m_out_int_cb(*this),
+ m_out_irq_cb(*this),
+ m_out_thold_cb(*this), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/dmv/dmvbus.h b/src/devices/bus/dmv/dmvbus.h
index ab5d152515c..62a1d7254b9 100644
--- a/src/devices/bus/dmv/dmvbus.h
+++ b/src/devices/bus/dmv/dmvbus.h
@@ -6,8 +6,10 @@
*********************************************************************/
-#ifndef __DMV_CART_H__
-#define __DMV_CART_H__
+#ifndef MAME_BUS_DMV_DMVBUS_H
+#define MAME_BUS_DMV_DMVBUS_H
+
+#pragma once
/***************************************************************************
TYPE DEFINITIONS
@@ -19,7 +21,6 @@ class device_dmvslot_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_dmvslot_interface(const machine_config &mconfig, device_t &device);
virtual ~device_dmvslot_interface();
virtual bool read(offs_t offset, uint8_t &data) { return false; }
@@ -45,6 +46,9 @@ public:
virtual void irq4_w(int state) { }
virtual void irq5_w(int state) { }
virtual void irq6_w(int state) { }
+
+protected:
+ device_dmvslot_interface(const machine_config &mconfig, device_t &device);
};
@@ -58,11 +62,11 @@ public:
dmvcart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~dmvcart_slot_device();
- template<class _Object> static devcb_base &set_prog_read_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_prog_read_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_prog_write_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_prog_write_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_out_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_thold_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_out_thold_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_prog_read_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_prog_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_prog_write_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_prog_write_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_thold_callback(device_t &device, Object &&cb) { return downcast<dmvcart_slot_device &>(device).m_out_thold_cb.set_callback(std::forward<Object>(cb)); }
// device-level overrides
virtual void device_start() override;
@@ -99,7 +103,7 @@ public:
// device type definition
-extern const device_type DMVCART_SLOT;
+DECLARE_DEVICE_TYPE(DMVCART_SLOT, dmvcart_slot_device)
/***************************************************************************
@@ -119,4 +123,4 @@ extern const device_type DMVCART_SLOT;
#define MCFG_DMVCART_SLOT_OUT_THOLD_CB(_devcb) \
devcb = &dmvcart_slot_device::set_out_thold_callback(*device, DEVCB_##_devcb);
-#endif /* __DMV_CART_H__ */
+#endif // MAME_BUS_DMV_DMVBUS_H
diff --git a/src/devices/bus/dmv/k210.cpp b/src/devices/bus/dmv/k210.cpp
index cb3c67a5f4e..d8bc83f88a9 100644
--- a/src/devices/bus/dmv/k210.cpp
+++ b/src/devices/bus/dmv/k210.cpp
@@ -41,7 +41,7 @@ MACHINE_CONFIG_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type DMV_K210 = device_creator<dmv_k210_device>;
+DEFINE_DEVICE_TYPE(DMV_K210, dmv_k210_device, "dmv_k210", "K210 Centronics")
//**************************************************************************
// LIVE DEVICE
@@ -52,13 +52,14 @@ const device_type DMV_K210 = device_creator<dmv_k210_device>;
//-------------------------------------------------
dmv_k210_device::dmv_k210_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DMV_K210, "K210 Centronics", tag, owner, clock, "dmv_k210", __FILE__),
- device_dmvslot_interface( mconfig, *this ),
- m_ppi(*this, "ppi8255"),
- m_centronics(*this, "centronics"),
- m_cent_data_in(*this, "cent_data_in"),
- m_cent_data_out(*this, "cent_data_out"), m_bus(nullptr), m_clk1_timer(nullptr), m_portb(0), m_portc(0)
- {
+ : device_t(mconfig, DMV_K210, tag, owner, clock)
+ , device_dmvslot_interface(mconfig, *this)
+ , m_ppi(*this, "ppi8255")
+ , m_centronics(*this, "centronics")
+ , m_cent_data_in(*this, "cent_data_in")
+ , m_cent_data_out(*this, "cent_data_out")
+ , m_bus(nullptr), m_clk1_timer(nullptr), m_portb(0), m_portc(0)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/dmv/k210.h b/src/devices/bus/dmv/k210.h
index 4c31252218b..dea7863f19a 100644
--- a/src/devices/bus/dmv/k210.h
+++ b/src/devices/bus/dmv/k210.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_DMV_K210_H
+#define MAME_BUS_DMV_K210_H
-#ifndef __DMV_K210_H__
-#define __DMV_K210_H__
+#pragma once
#include "dmvbus.h"
#include "machine/i8255.h"
@@ -65,6 +65,6 @@ private:
// device type definition
-extern const device_type DMV_K210;
+DECLARE_DEVICE_TYPE(DMV_K210, dmv_k210_device)
-#endif /* __DMV_K210_H__ */
+#endif // MAME_BUS_DMV_K210_H
diff --git a/src/devices/bus/dmv/k220.cpp b/src/devices/bus/dmv/k220.cpp
index 9f5ad2dd154..863c5ce3f58 100644
--- a/src/devices/bus/dmv/k220.cpp
+++ b/src/devices/bus/dmv/k220.cpp
@@ -122,7 +122,7 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type DMV_K220 = device_creator<dmv_k220_device>;
+DEFINE_DEVICE_TYPE(DMV_K220, dmv_k220_device, "dmv_k220", "K220 diagnostic")
//**************************************************************************
// LIVE DEVICE
@@ -133,13 +133,14 @@ const device_type DMV_K220 = device_creator<dmv_k220_device>;
//-------------------------------------------------
dmv_k220_device::dmv_k220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DMV_K220, "K220 diagnostic", tag, owner, clock, "dmv_k220", __FILE__),
- device_dmvslot_interface( mconfig, *this ),
- m_pit(*this, "pit8253"),
- m_ppi(*this, "ppi8255"),
- m_ram(*this, "ram"),
- m_rom(*this, "rom"), m_portc(0)
- {
+ : device_t(mconfig, DMV_K220, tag, owner, clock)
+ , device_dmvslot_interface(mconfig, *this)
+ , m_pit(*this, "pit8253")
+ , m_ppi(*this, "ppi8255")
+ , m_ram(*this, "ram")
+ , m_rom(*this, "rom")
+ , m_portc(0)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/dmv/k220.h b/src/devices/bus/dmv/k220.h
index 125f317170a..fe71e2311da 100644
--- a/src/devices/bus/dmv/k220.h
+++ b/src/devices/bus/dmv/k220.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_DMV_K220_H
+#define MAME_BUS_DMV_K220_H
-#ifndef __DMV_K220_H__
-#define __DMV_K220_H__
+#pragma once
#include "dmvbus.h"
#include "machine/i8255.h"
@@ -55,5 +55,6 @@ private:
// device type definition
extern const device_type DMV_K220;
+DECLARE_DEVICE_TYPE(DMV_K220, dmv_k220_device)
-#endif /* __DMV_K220_H__ */
+#endif // MAME_BUS_DMV_K220_H
diff --git a/src/devices/bus/dmv/k230.cpp b/src/devices/bus/dmv/k230.cpp
index 4aad694c433..4d6dbe2d5f6 100644
--- a/src/devices/bus/dmv/k230.cpp
+++ b/src/devices/bus/dmv/k230.cpp
@@ -93,10 +93,10 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type DMV_K230 = device_creator<dmv_k230_device>;
-const device_type DMV_K231 = device_creator<dmv_k231_device>;
-const device_type DMV_K234 = device_creator<dmv_k234_device>;
-const device_type DMV_K235 = device_creator<dmv_k235_device>;
+DEFINE_DEVICE_TYPE(DMV_K230, dmv_k230_device, "dmv_k230", "K230 8088 without interrupt controller")
+DEFINE_DEVICE_TYPE(DMV_K231, dmv_k231_device, "dmv_k231", "K231 8088 without interrupt controller")
+DEFINE_DEVICE_TYPE(DMV_K234, dmv_k234_device, "dmv_k234", "K234 68008")
+DEFINE_DEVICE_TYPE(DMV_K235, dmv_k235_device, "dmv_k235", "K235 8088 with interrupt controller")
//**************************************************************************
// LIVE DEVICE
@@ -107,19 +107,16 @@ const device_type DMV_K235 = device_creator<dmv_k235_device>;
//-------------------------------------------------
dmv_k230_device::dmv_k230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DMV_K230, "K230 8088 without interrupt controller", tag, owner, clock, "dmv_k230", __FILE__),
- device_dmvslot_interface( mconfig, *this ),
- m_maincpu(*this, "maincpu"),
- m_rom(*this, "rom"), m_bus(nullptr), m_io(nullptr), m_switch16(0), m_hold(0)
- {
+ : dmv_k230_device(mconfig, DMV_K230, tag, owner, clock)
+{
}
-dmv_k230_device::dmv_k230_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_dmvslot_interface( mconfig, *this ),
- m_maincpu(*this, "maincpu"),
- m_rom(*this, "rom"), m_bus(nullptr), m_io(nullptr), m_switch16(0), m_hold(0)
- {
+dmv_k230_device::dmv_k230_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_dmvslot_interface(mconfig, *this)
+ , m_maincpu(*this, "maincpu")
+ , m_rom(*this, "rom"), m_bus(nullptr), m_io(nullptr), m_switch16(0), m_hold(0)
+{
}
//-------------------------------------------------
@@ -127,7 +124,7 @@ dmv_k230_device::dmv_k230_device(const machine_config &mconfig, device_type type
//-------------------------------------------------
dmv_k231_device::dmv_k231_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmv_k230_device(mconfig, DMV_K231, "K231 8088 without interrupt controller", tag, owner, clock, "dmv_k231", __FILE__)
+ : dmv_k230_device(mconfig, DMV_K231, tag, owner, clock)
{
}
@@ -136,8 +133,8 @@ dmv_k231_device::dmv_k231_device(const machine_config &mconfig, const char *tag,
//-------------------------------------------------
dmv_k234_device::dmv_k234_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmv_k230_device(mconfig, DMV_K234, "K234 68008", tag, owner, clock, "dmv_k234", __FILE__), m_snr(0)
- {
+ : dmv_k230_device(mconfig, DMV_K234, tag, owner, clock), m_snr(0)
+{
}
//-------------------------------------------------
@@ -145,9 +142,7 @@ dmv_k234_device::dmv_k234_device(const machine_config &mconfig, const char *tag,
//-------------------------------------------------
dmv_k235_device::dmv_k235_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmv_k230_device(mconfig, DMV_K235, "K235 8088 with interrupt controller", tag, owner, clock, "dmv_k235", __FILE__),
- m_pic(*this, "pic8259"),
- m_dsw(*this, "DSW")
+ : dmv_k230_device(mconfig, DMV_K235, tag, owner, clock), m_pic(*this, "pic8259"), m_dsw(*this, "DSW")
{
}
diff --git a/src/devices/bus/dmv/k230.h b/src/devices/bus/dmv/k230.h
index 1f5da13a87f..9e183b1c997 100644
--- a/src/devices/bus/dmv/k230.h
+++ b/src/devices/bus/dmv/k230.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_DMV_K230_H
+#define MAME_BUS_DMV_K230_H
-#ifndef __DMV_K230_H__
-#define __DMV_K230_H__
+#pragma once
#include "dmvbus.h"
#include "cpu/i86/i86.h"
@@ -28,7 +28,6 @@ class dmv_k230_device :
{
public:
// construction/destruction
- dmv_k230_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
dmv_k230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -42,6 +41,8 @@ public:
DECLARE_READ8_MEMBER(rom_r);
protected:
+ dmv_k230_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -137,9 +138,9 @@ private:
};
// device type definition
-extern const device_type DMV_K230;
-extern const device_type DMV_K231;
-extern const device_type DMV_K234;
-extern const device_type DMV_K235;
+DECLARE_DEVICE_TYPE(DMV_K230, dmv_k230_device)
+DECLARE_DEVICE_TYPE(DMV_K231, dmv_k231_device)
+DECLARE_DEVICE_TYPE(DMV_K234, dmv_k234_device)
+DECLARE_DEVICE_TYPE(DMV_K235, dmv_k235_device)
-#endif /* __DMV_K230_H__ */
+#endif // MAME_BUS_DMV_K230_H
diff --git a/src/devices/bus/dmv/k233.cpp b/src/devices/bus/dmv/k233.cpp
index 129823975a7..2ba68d3f53f 100644
--- a/src/devices/bus/dmv/k233.cpp
+++ b/src/devices/bus/dmv/k233.cpp
@@ -18,7 +18,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type DMV_K233 = device_creator<dmv_k233_device>;
+DEFINE_DEVICE_TYPE(DMV_K233, dmv_k233_device, "dmv_k233", "K233 16K Shared RAM")
//**************************************************************************
// LIVE DEVICE
@@ -29,11 +29,11 @@ const device_type DMV_K233 = device_creator<dmv_k233_device>;
//-------------------------------------------------
dmv_k233_device::dmv_k233_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DMV_K233, "K233 16K Shared RAM", tag, owner, clock, "dmv_k233", __FILE__),
- device_dmvslot_interface( mconfig, *this ),
- m_enabled(false),
- m_ram(nullptr)
- {
+ : device_t(mconfig, DMV_K233, tag, owner, clock)
+ , device_dmvslot_interface(mconfig, *this)
+ , m_enabled(false)
+ , m_ram(nullptr)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/dmv/k233.h b/src/devices/bus/dmv/k233.h
index 6641f97bf08..8aa2f0d235b 100644
--- a/src/devices/bus/dmv/k233.h
+++ b/src/devices/bus/dmv/k233.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_DMV_K233_H
+#define MAME_BUS_DMV_K233_H
-#ifndef __DMV_K233_H__
-#define __DMV_K233_H__
+#pragma once
#include "dmvbus.h"
@@ -38,6 +38,6 @@ private:
// device type definition
-extern const device_type DMV_K233;
+DECLARE_DEVICE_TYPE(DMV_K233, dmv_k233_device)
-#endif /* __DMV_K233_H__ */
+#endif // MAME_BUS_DMV_K233_H
diff --git a/src/devices/bus/dmv/k801.cpp b/src/devices/bus/dmv/k801.cpp
index c466e83e121..2a739363465 100644
--- a/src/devices/bus/dmv/k801.cpp
+++ b/src/devices/bus/dmv/k801.cpp
@@ -98,10 +98,10 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type DMV_K801 = device_creator<dmv_k801_device>;
-const device_type DMV_K211 = device_creator<dmv_k211_device>;
-const device_type DMV_K212 = device_creator<dmv_k212_device>;
-const device_type DMV_K213 = device_creator<dmv_k213_device>;
+DEFINE_DEVICE_TYPE(DMV_K801, dmv_k801_device, "dmv_k801", "K801 RS-232 Switchable Interface")
+DEFINE_DEVICE_TYPE(DMV_K211, dmv_k211_device, "dmv_k211", "K211 RS-232 Communications Interface")
+DEFINE_DEVICE_TYPE(DMV_K212, dmv_k212_device, "dmv_k212", "K212 RS-232 Printer Interface")
+DEFINE_DEVICE_TYPE(DMV_K213, dmv_k213_device, "dmv_k213", "K213 RS-232 Plotter Interface")
//**************************************************************************
// LIVE DEVICE
@@ -112,19 +112,16 @@ const device_type DMV_K213 = device_creator<dmv_k213_device>;
//-------------------------------------------------
dmv_k801_device::dmv_k801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DMV_K801, "K801 RS-232 Switchable Interface", tag, owner, clock, "dmv_k801", __FILE__),
- device_dmvslot_interface( mconfig, *this ),
- m_epci(*this, "epci"),
- m_dsw(*this, "DSW"), m_bus(nullptr)
- {
+ : dmv_k801_device(mconfig, DMV_K801, tag, owner, clock)
+{
}
-dmv_k801_device::dmv_k801_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_dmvslot_interface( mconfig, *this ),
- m_epci(*this, "epci"),
- m_dsw(*this, "DSW"), m_bus(nullptr)
- {
+dmv_k801_device::dmv_k801_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
+ device_dmvslot_interface( mconfig, *this ),
+ m_epci(*this, "epci"),
+ m_dsw(*this, "DSW"), m_bus(nullptr)
+{
}
//-------------------------------------------------
@@ -132,13 +129,13 @@ dmv_k801_device::dmv_k801_device(const machine_config &mconfig, device_type type
//-------------------------------------------------
dmv_k211_device::dmv_k211_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmv_k801_device(mconfig, DMV_K211, "K211 RS-232 Communications Interface", tag, owner, clock, "dmv_k211", __FILE__)
+ : dmv_k211_device(mconfig, DMV_K211, tag, owner, clock)
{
}
-dmv_k211_device::dmv_k211_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : dmv_k801_device(mconfig, type, name, tag, owner, clock, shortname, source)
+dmv_k211_device::dmv_k211_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : dmv_k801_device(mconfig, type, tag, owner, clock)
{
}
@@ -147,7 +144,7 @@ dmv_k211_device::dmv_k211_device(const machine_config &mconfig, device_type type
//-------------------------------------------------
dmv_k212_device::dmv_k212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmv_k211_device(mconfig, DMV_K212, "K212 RS-232 Printer Interface", tag, owner, clock, "dmv_k212", __FILE__)
+ : dmv_k211_device(mconfig, DMV_K212, tag, owner, clock)
{
}
@@ -156,7 +153,7 @@ dmv_k212_device::dmv_k212_device(const machine_config &mconfig, const char *tag,
//-------------------------------------------------
dmv_k213_device::dmv_k213_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmv_k211_device(mconfig, DMV_K213, "K213 RS-232 Plotter Interface", tag, owner, clock, "dmv_k213", __FILE__)
+ : dmv_k211_device(mconfig, DMV_K213, tag, owner, clock)
{
}
diff --git a/src/devices/bus/dmv/k801.h b/src/devices/bus/dmv/k801.h
index a569dc5efab..cad9701e61e 100644
--- a/src/devices/bus/dmv/k801.h
+++ b/src/devices/bus/dmv/k801.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_DMV_K801_H
+#define MAME_BUS_DMV_K801_H
-#ifndef __DMV_K801_H__
-#define __DMV_K801_H__
+#pragma once
#include "dmvbus.h"
#include "machine/mc2661.h"
@@ -23,7 +23,6 @@ class dmv_k801_device :
public:
// construction/destruction
dmv_k801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- dmv_k801_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
@@ -32,6 +31,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(epci_irq_w);
protected:
+ dmv_k801_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -55,13 +56,14 @@ class dmv_k211_device :
public:
// construction/destruction
dmv_k211_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- dmv_k211_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
+ dmv_k211_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// dmvcart_interface overrides
virtual void io_read(address_space &space, int ifsel, offs_t offset, uint8_t &data) override;
virtual void io_write(address_space &space, int ifsel, offs_t offset, uint8_t data) override;
@@ -97,9 +99,9 @@ public:
// device type definition
-extern const device_type DMV_K801;
-extern const device_type DMV_K211;
-extern const device_type DMV_K212;
-extern const device_type DMV_K213;
+DECLARE_DEVICE_TYPE(DMV_K801, dmv_k801_device)
+DECLARE_DEVICE_TYPE(DMV_K211, dmv_k211_device)
+DECLARE_DEVICE_TYPE(DMV_K212, dmv_k212_device)
+DECLARE_DEVICE_TYPE(DMV_K213, dmv_k213_device)
-#endif /* __DMV_K801_H__ */
+#endif // MAME_BUS_DMV_K801_H
diff --git a/src/devices/bus/dmv/k803.cpp b/src/devices/bus/dmv/k803.cpp
index be80480bac6..299b0655e40 100644
--- a/src/devices/bus/dmv/k803.cpp
+++ b/src/devices/bus/dmv/k803.cpp
@@ -38,7 +38,7 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type DMV_K803 = device_creator<dmv_k803_device>;
+DEFINE_DEVICE_TYPE(DMV_K803, dmv_k803_device, "dmv_k803", "K803 RTC")
//**************************************************************************
@@ -50,11 +50,11 @@ const device_type DMV_K803 = device_creator<dmv_k803_device>;
//-------------------------------------------------
dmv_k803_device::dmv_k803_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DMV_K803, "K803 RTC", tag, owner, clock, "dmv_k803", __FILE__),
- device_dmvslot_interface( mconfig, *this ),
- m_rtc(*this, "rtc"),
- m_dsw(*this, "DSW"), m_bus(nullptr), m_latch(0), m_rtc_int(0)
- {
+ : device_t(mconfig, DMV_K803, tag, owner, clock),
+ device_dmvslot_interface( mconfig, *this ),
+ m_rtc(*this, "rtc"),
+ m_dsw(*this, "DSW"), m_bus(nullptr), m_latch(0), m_rtc_int(0)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/dmv/k803.h b/src/devices/bus/dmv/k803.h
index 714c08b1e45..0446a8bbeb4 100644
--- a/src/devices/bus/dmv/k803.h
+++ b/src/devices/bus/dmv/k803.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_DMV_K803_H
+#define MAME_BUS_DMV_K803_H
-#ifndef __DMV_K803_H__
-#define __DMV_K803_H__
+#pragma once
#include "dmvbus.h"
#include "machine/mm58167.h"
@@ -48,6 +48,6 @@ private:
// device type definition
-extern const device_type DMV_K803;
+DECLARE_DEVICE_TYPE(DMV_K803, dmv_k803_device)
-#endif /* __DMV_K803_H__ */
+#endif // MAME_BUS_DMV_K803_H
diff --git a/src/devices/bus/dmv/k806.cpp b/src/devices/bus/dmv/k806.cpp
index 7e4309ac5a9..9d0f986b7f9 100644
--- a/src/devices/bus/dmv/k806.cpp
+++ b/src/devices/bus/dmv/k806.cpp
@@ -61,7 +61,7 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type DMV_K806 = device_creator<dmv_k806_device>;
+DEFINE_DEVICE_TYPE(DMV_K806, dmv_k806_device, "dmv_k806", "K806 mouse")
//**************************************************************************
// LIVE DEVICE
@@ -72,14 +72,15 @@ const device_type DMV_K806 = device_creator<dmv_k806_device>;
//-------------------------------------------------
dmv_k806_device::dmv_k806_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DMV_K806, "K806 mouse", tag, owner, clock, "dmv_k806", __FILE__),
- device_dmvslot_interface( mconfig, *this ),
- m_mcu(*this, "mcu"),
- m_jumpers(*this, "JUMPERS"),
- m_mouse_buttons(*this, "MOUSE"),
- m_mouse_x(*this, "MOUSEX"),
- m_mouse_y(*this, "MOUSEY"), m_bus(nullptr)
- {
+ : device_t(mconfig, DMV_K806, tag, owner, clock)
+ , device_dmvslot_interface( mconfig, *this )
+ , m_mcu(*this, "mcu")
+ , m_jumpers(*this, "JUMPERS")
+ , m_mouse_buttons(*this, "MOUSE")
+ , m_mouse_x(*this, "MOUSEX")
+ , m_mouse_y(*this, "MOUSEY")
+ , m_bus(nullptr)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/dmv/k806.h b/src/devices/bus/dmv/k806.h
index 4e1330d5578..bcb41068f82 100644
--- a/src/devices/bus/dmv/k806.h
+++ b/src/devices/bus/dmv/k806.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_DMV_K806_H
+#define MAME_BUS_DMV_K806_H
-#ifndef __DMV_K806_H__
-#define __DMV_K806_H__
+#pragma once
#include "dmvbus.h"
#include "cpu/mcs48/mcs48.h"
@@ -66,6 +66,6 @@ private:
// device type definition
-extern const device_type DMV_K806;
+DECLARE_DEVICE_TYPE(DMV_K806, dmv_k806_device)
-#endif /* __DMV_K806_H__ */
+#endif // MAME_BUS_DMV_K806_H
diff --git a/src/devices/bus/dmv/ram.cpp b/src/devices/bus/dmv/ram.cpp
index b676a7c3148..2e879fc9ce6 100644
--- a/src/devices/bus/dmv/ram.cpp
+++ b/src/devices/bus/dmv/ram.cpp
@@ -20,22 +20,23 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type DMV_K200 = device_creator<dmv_k200_device>;
-const device_type DMV_K202 = device_creator<dmv_k202_device>;
-const device_type DMV_K208 = device_creator<dmv_k208_device>;
+DEFINE_DEVICE_TYPE(DMV_K200, dmv_k200_device, "dmv_k200", "K200 64K RAM expansion")
+DEFINE_DEVICE_TYPE(DMV_K202, dmv_k202_device, "dmv_k202", "K202 192K RAM expansion")
+DEFINE_DEVICE_TYPE(DMV_K208, dmv_k208_device, "dmv_k208", "K208 448K RAM expansion")
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
-// dmv_ram_device - constructor
+// dmv_ram_device_base - constructor
//-------------------------------------------------
-dmv_ram_device::dmv_ram_device(const machine_config &mconfig, device_type type, uint32_t size, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_dmvslot_interface( mconfig, *this ), m_ram(nullptr),
- m_size(size)
+dmv_ram_device_base::dmv_ram_device_base(const machine_config &mconfig, device_type type, uint32_t size, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_dmvslot_interface(mconfig, *this)
+ , m_ram(nullptr)
+ , m_size(size)
{
}
@@ -44,7 +45,7 @@ dmv_ram_device::dmv_ram_device(const machine_config &mconfig, device_type type,
//-------------------------------------------------
dmv_k200_device::dmv_k200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmv_ram_device(mconfig, DMV_K200, 1, "K200 64K RAM expansion", tag, owner, clock, "dmv_k200", __FILE__)
+ : dmv_ram_device_base(mconfig, DMV_K200, 1, tag, owner, clock)
{
}
@@ -53,7 +54,7 @@ dmv_k200_device::dmv_k200_device(const machine_config &mconfig, const char *tag,
//-------------------------------------------------
dmv_k202_device::dmv_k202_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmv_ram_device(mconfig, DMV_K202, 3, "K202 192K RAM expansion", tag, owner, clock, "dmv_k202", __FILE__)
+ : dmv_ram_device_base(mconfig, DMV_K202, 3, tag, owner, clock)
{
}
@@ -62,7 +63,7 @@ dmv_k202_device::dmv_k202_device(const machine_config &mconfig, const char *tag,
//-------------------------------------------------
dmv_k208_device::dmv_k208_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmv_ram_device(mconfig, DMV_K208, 7 , "K208 448K RAM expansion", tag, owner, clock, "dmv_k208", __FILE__)
+ : dmv_ram_device_base(mconfig, DMV_K208, 7, tag, owner, clock)
{
}
@@ -70,7 +71,7 @@ dmv_k208_device::dmv_k208_device(const machine_config &mconfig, const char *tag,
// device_start - device-specific startup
//-------------------------------------------------
-void dmv_ram_device::device_start()
+void dmv_ram_device_base::device_start()
{
m_ram = machine().memory().region_alloc( "expram", m_size * 0x10000, 1, ENDIANNESS_LITTLE )->base();
}
@@ -79,7 +80,7 @@ void dmv_ram_device::device_start()
// read
//-------------------------------------------------
-void dmv_ram_device::ram_read(uint8_t cas, offs_t offset, uint8_t &data)
+void dmv_ram_device_base::ram_read(uint8_t cas, offs_t offset, uint8_t &data)
{
if (cas && cas <= m_size)
data = m_ram[((cas - 1) << 16) | (offset & 0xffff)];
@@ -89,7 +90,7 @@ void dmv_ram_device::ram_read(uint8_t cas, offs_t offset, uint8_t &data)
// write
//-------------------------------------------------
-void dmv_ram_device::ram_write(uint8_t cas, offs_t offset, uint8_t data)
+void dmv_ram_device_base::ram_write(uint8_t cas, offs_t offset, uint8_t data)
{
if (cas && cas <= m_size)
m_ram[((cas - 1) << 16) | (offset & 0xffff)] = data;
diff --git a/src/devices/bus/dmv/ram.h b/src/devices/bus/dmv/ram.h
index 783c7bacf42..43e7820a9ca 100644
--- a/src/devices/bus/dmv/ram.h
+++ b/src/devices/bus/dmv/ram.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_DMV_RAM_H
+#define MAME_BUS_DMV_RAM_H
-#ifndef __DMV_RAM_H__
-#define __DMV_RAM_H__
+#pragma once
#include "dmvbus.h"
@@ -13,15 +13,14 @@
// ======================>
-class dmv_ram_device :
+class dmv_ram_device_base :
public device_t,
public device_dmvslot_interface
{
-public:
+protected:
// construction/destruction
- dmv_ram_device(const machine_config &mconfig, device_type type, uint32_t size, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ dmv_ram_device_base(const machine_config &mconfig, device_type type, uint32_t size, const char *tag, device_t *owner, uint32_t clock);
-protected:
// device-level overrides
virtual void device_start() override;
@@ -35,8 +34,7 @@ private:
};
-class dmv_k200_device :
- public dmv_ram_device
+class dmv_k200_device : public dmv_ram_device_base
{
public:
// construction/destruction
@@ -44,8 +42,7 @@ public:
};
-class dmv_k202_device :
- public dmv_ram_device
+class dmv_k202_device : public dmv_ram_device_base
{
public:
// construction/destruction
@@ -53,8 +50,7 @@ public:
};
-class dmv_k208_device :
- public dmv_ram_device
+class dmv_k208_device : public dmv_ram_device_base
{
public:
// construction/destruction
@@ -63,8 +59,8 @@ public:
// device type definition
-extern const device_type DMV_K200;
-extern const device_type DMV_K202;
-extern const device_type DMV_K208;
+DECLARE_DEVICE_TYPE(DMV_K200, dmv_k200_device)
+DECLARE_DEVICE_TYPE(DMV_K202, dmv_k202_device)
+DECLARE_DEVICE_TYPE(DMV_K208, dmv_k208_device)
-#endif /* __DMV_RAM_H__ */
+#endif // MAME_BUS_DMV_RAM_H
diff --git a/src/devices/bus/ecbbus/ecbbus.cpp b/src/devices/bus/ecbbus/ecbbus.cpp
index 0947322dfc7..7649dea491a 100644
--- a/src/devices/bus/ecbbus/ecbbus.cpp
+++ b/src/devices/bus/ecbbus/ecbbus.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ECBBUS_SLOT = device_creator<ecbbus_slot_device>;
+DEFINE_DEVICE_TYPE(ECBBUS_SLOT, ecbbus_slot_device, "ecbbus_slot", "ECB bus slot")
@@ -28,8 +28,9 @@ const device_type ECBBUS_SLOT = device_creator<ecbbus_slot_device>;
//-------------------------------------------------
ecbbus_slot_device::ecbbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ECBBUS_SLOT, "ECB bus slot", tag, owner, clock, "ecbbus_slot", __FILE__),
- device_slot_interface(mconfig, *this), m_bus_tag(nullptr), m_bus_num(0), m_bus(nullptr)
+ device_t(mconfig, ECBBUS_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_bus_tag(nullptr), m_bus_num(0), m_bus(nullptr)
{
}
@@ -63,7 +64,7 @@ void ecbbus_slot_device::device_start()
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ECBBUS = device_creator<ecbbus_device>;
+DEFINE_DEVICE_TYPE(ECBBUS, ecbbus_device, "ecbbus", "ECB bus")
@@ -92,12 +93,11 @@ device_ecbbus_card_interface::device_ecbbus_card_interface(const machine_config
//-------------------------------------------------
ecbbus_device::ecbbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ECBBUS, "ECB bus", tag, owner, clock, "ecbbus", __FILE__),
+ device_t(mconfig, ECBBUS, tag, owner, clock),
m_write_irq(*this),
m_write_nmi(*this)
{
- for (auto & elem : m_ecbbus_device)
- elem = nullptr;
+ std::fill(std::begin(m_ecbbus_device), std::end(m_ecbbus_device), nullptr);
}
diff --git a/src/devices/bus/ecbbus/ecbbus.h b/src/devices/bus/ecbbus/ecbbus.h
index 8fb7e51f893..9a4943e0a19 100644
--- a/src/devices/bus/ecbbus/ecbbus.h
+++ b/src/devices/bus/ecbbus/ecbbus.h
@@ -42,10 +42,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ECBBUS_ECBBUS_H
+#define MAME_BUS_ECBBUS_ECBBUS_H
-#ifndef __ECBBUS__
-#define __ECBBUS__
+#pragma once
@@ -56,9 +56,6 @@
#define ECBBUS_TAG "ecbbus"
-#define MAX_ECBBUS_SLOTS 16
-
-
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -110,7 +107,7 @@ private:
// device type definition
-extern const device_type ECBBUS_SLOT;
+DECLARE_DEVICE_TYPE(ECBBUS_SLOT, ecbbus_slot_device)
// ======================> ecbbus_interface
@@ -126,8 +123,8 @@ public:
// construction/destruction
ecbbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<ecbbus_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<ecbbus_device &>(device).m_write_nmi.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<ecbbus_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<ecbbus_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); }
void add_card(device_ecbbus_card_interface *card, int pos);
@@ -145,6 +142,8 @@ protected:
virtual void device_start() override;
private:
+ static constexpr unsigned MAX_ECBBUS_SLOTS = 16;
+
devcb_write_line m_write_irq;
devcb_write_line m_write_nmi;
@@ -153,7 +152,7 @@ private:
// device type definition
-extern const device_type ECBBUS;
+DECLARE_DEVICE_TYPE(ECBBUS, ecbbus_device)
// ======================> device_ecbbus_card_interface
@@ -164,17 +163,16 @@ class device_ecbbus_card_interface : public device_slot_card_interface
friend class ecbbus_device;
public:
- // construction/destruction
- device_ecbbus_card_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_ecbbus_card_interface() { }
-
// optional operation overrides
virtual uint8_t ecbbus_mem_r(offs_t offset) { return 0; };
virtual void ecbbus_mem_w(offs_t offset, uint8_t data) { };
virtual uint8_t ecbbus_io_r(offs_t offset) { return 0; };
virtual void ecbbus_io_w(offs_t offset, uint8_t data) { };
-public:
+protected:
+ // construction/destruction
+ device_ecbbus_card_interface(const machine_config &mconfig, device_t &device);
+
ecbbus_slot_device *m_slot;
};
@@ -183,4 +181,4 @@ SLOT_INTERFACE_EXTERN( ecbbus_cards );
-#endif
+#endif // MAME_BUS_ECBBUS_ECBBUS_H
diff --git a/src/devices/bus/ecbbus/grip.cpp b/src/devices/bus/ecbbus/grip.cpp
index 3dea8a6b486..6ec37c878fd 100644
--- a/src/devices/bus/ecbbus/grip.cpp
+++ b/src/devices/bus/ecbbus/grip.cpp
@@ -35,7 +35,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ECB_GRIP21 = device_creator<grip_device>;
+DEFINE_DEVICE_TYPE(ECB_GRIP21, ecb_grip21_device, "ecb_grip21", "Conitec Datensysteme GRIP-2.1")
@@ -109,7 +109,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *grip_device::device_rom_region() const
+const tiny_rom_entry *ecb_grip21_device::device_rom_region() const
{
return ROM_NAME( grip21 );
}
@@ -124,7 +124,7 @@ const tiny_rom_entry *grip_device::device_rom_region() const
// ADDRESS_MAP( grip_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( grip_mem, AS_PROGRAM, 8, grip_device )
+static ADDRESS_MAP_START( grip_mem, AS_PROGRAM, 8, ecb_grip21_device )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x47ff) AM_RAM
AM_RANGE(0x8000, 0xffff) AM_RAMBANK("videoram")
@@ -135,7 +135,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( grip_io )
//-------------------------------------------------
-static ADDRESS_MAP_START( grip_io, AS_IO, 8, grip_device )
+static ADDRESS_MAP_START( grip_io, AS_IO, 8, ecb_grip21_device )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(cxstb_r, cxstb_w)
// AM_RANGE(0x10, 0x10) AM_WRITE(ccon_w)
@@ -227,7 +227,7 @@ ADDRESS_MAP_END
// mc6845
//-------------------------------------------------
-MC6845_UPDATE_ROW( grip_device::crtc_update_row )
+MC6845_UPDATE_ROW( ecb_grip21_device::crtc_update_row )
{
for (int column = 0; column < x_count; column++)
{
@@ -244,7 +244,7 @@ MC6845_UPDATE_ROW( grip_device::crtc_update_row )
}
}
/*
-MC6845_UPDATE_ROW( grip_device::grip5_update_row )
+MC6845_UPDATE_ROW( ecb_grip21_device::grip5_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
int column, bit;
@@ -264,7 +264,7 @@ MC6845_UPDATE_ROW( grip_device::grip5_update_row )
}
}
-MC6845_ON_UPDATE_ADDR_CHANGED( grip_device::grip5_addr_changed )
+MC6845_ON_UPDATE_ADDR_CHANGED( ecb_grip21_device::grip5_addr_changed )
{
}
*/
@@ -275,7 +275,7 @@ static const int16_t speaker_levels[] = { -32768, 0, 32767, 0 };
// I8255A interface
//-------------------------------------------------
-READ8_MEMBER( grip_device::ppi_pa_r )
+READ8_MEMBER( ecb_grip21_device::ppi_pa_r )
{
/*
@@ -295,7 +295,7 @@ READ8_MEMBER( grip_device::ppi_pa_r )
return m_ppi_pa;
}
-WRITE8_MEMBER( grip_device::ppi_pa_w )
+WRITE8_MEMBER( ecb_grip21_device::ppi_pa_w )
{
/*
@@ -315,7 +315,7 @@ WRITE8_MEMBER( grip_device::ppi_pa_w )
m_ppi_pa = data;
}
-READ8_MEMBER( grip_device::ppi_pb_r )
+READ8_MEMBER( ecb_grip21_device::ppi_pb_r )
{
/*
@@ -335,7 +335,7 @@ READ8_MEMBER( grip_device::ppi_pb_r )
return m_keydata;
}
-WRITE8_MEMBER( grip_device::ppi_pc_w )
+WRITE8_MEMBER( ecb_grip21_device::ppi_pc_w )
{
/*
@@ -371,12 +371,12 @@ WRITE8_MEMBER( grip_device::ppi_pc_w )
// Z80STI_INTERFACE( sti_intf )
//-------------------------------------------------
-WRITE_LINE_MEMBER(grip_device::write_centronics_busy)
+WRITE_LINE_MEMBER(ecb_grip21_device::write_centronics_busy)
{
m_centronics_busy = state;
}
-READ8_MEMBER( grip_device::sti_gpio_r )
+READ8_MEMBER( ecb_grip21_device::sti_gpio_r )
{
/*
@@ -413,7 +413,7 @@ READ8_MEMBER( grip_device::sti_gpio_r )
return data;
}
-WRITE_LINE_MEMBER( grip_device::speaker_w )
+WRITE_LINE_MEMBER( ecb_grip21_device::speaker_w )
{
int level = state && ((m_vol1 << 1) | m_vol0);
@@ -435,7 +435,7 @@ static const z80_daisy_config grip_daisy_chain[] =
// ASCII_KEYBOARD_INTERFACE( kb_intf )
//-------------------------------------------------
-WRITE8_MEMBER( grip_device::kb_w )
+void ecb_grip21_device::kb_w(uint8_t data)
{
if (!m_kbf)
{
@@ -482,33 +482,33 @@ static MACHINE_CONFIG_FRAGMENT( grip )
MCFG_MC6845_ADD(MC6845_TAG, MC6845, SCREEN_TAG, XTAL_16MHz/4)
MCFG_MC6845_SHOW_BORDER_AREA(true)
MCFG_MC6845_CHAR_WIDTH(8)
- MCFG_MC6845_UPDATE_ROW_CB(grip_device, crtc_update_row)
+ MCFG_MC6845_UPDATE_ROW_CB(ecb_grip21_device, crtc_update_row)
MCFG_MC6845_OUT_DE_CB(DEVWRITELINE(Z80STI_TAG, z80sti_device, i1_w))
MCFG_MC6845_OUT_CUR_CB(DEVWRITELINE(Z80STI_TAG, z80sti_device, i1_w))
// MCFG_MC6845_ADD(HD6345_TAG, HD6345, SCREEN_TAG, XTAL_16MHz/4)
MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0)
- MCFG_I8255_IN_PORTA_CB(READ8(grip_device, ppi_pa_r))
- MCFG_I8255_OUT_PORTA_CB(WRITE8(grip_device, ppi_pa_w))
- MCFG_I8255_IN_PORTB_CB(READ8(grip_device, ppi_pb_r))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(grip_device, ppi_pc_w))
+ MCFG_I8255_IN_PORTA_CB(READ8(ecb_grip21_device, ppi_pa_r))
+ MCFG_I8255_OUT_PORTA_CB(WRITE8(ecb_grip21_device, ppi_pa_w))
+ MCFG_I8255_IN_PORTB_CB(READ8(ecb_grip21_device, ppi_pb_r))
+ MCFG_I8255_OUT_PORTC_CB(WRITE8(ecb_grip21_device, ppi_pc_w))
MCFG_DEVICE_ADD(Z80STI_TAG, Z80STI, XTAL_16MHz/4)
MCFG_Z80STI_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
- MCFG_Z80STI_IN_GPIO_CB(READ8(grip_device, sti_gpio_r))
- MCFG_Z80STI_OUT_TBO_CB(WRITELINE(grip_device, speaker_w))
+ MCFG_Z80STI_IN_GPIO_CB(READ8(ecb_grip21_device, sti_gpio_r))
+ MCFG_Z80STI_OUT_TBO_CB(WRITELINE(ecb_grip21_device, speaker_w))
MCFG_Z80STI_OUT_TCO_CB(DEVWRITELINE(Z80STI_TAG, z80sti_device, tc_w))
MCFG_Z80STI_OUT_TDO_CB(DEVWRITELINE(Z80STI_TAG, z80sti_device, tc_w))
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
- MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(grip_device, write_centronics_busy))
- MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(grip_device, write_centronics_fault))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(ecb_grip21_device, write_centronics_busy))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(ecb_grip21_device, write_centronics_fault))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(WRITE8(grip_device, kb_w))
+ MCFG_GENERIC_KEYBOARD_CB(PUT(ecb_grip21_device, kb_w))
MACHINE_CONFIG_END
@@ -517,7 +517,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor grip_device::device_mconfig_additions() const
+machine_config_constructor ecb_grip21_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( grip );
}
@@ -602,7 +602,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor grip_device::device_input_ports() const
+ioport_constructor ecb_grip21_device::device_input_ports() const
{
return INPUT_PORTS_NAME( grip );
}
@@ -614,11 +614,11 @@ ioport_constructor grip_device::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// grip_device - constructor
+// ecb_grip21_device - constructor
//-------------------------------------------------
-grip_device::grip_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ECB_GRIP21, "GRIP-2.1", tag, owner, clock, "grip", __FILE__),
+ecb_grip21_device::ecb_grip21_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, ECB_GRIP21, tag, owner, clock),
device_ecbbus_card_interface(mconfig, *this),
m_ppi(*this, I8255A_TAG),
m_sti(*this, Z80STI_TAG),
@@ -629,7 +629,8 @@ grip_device::grip_device(const machine_config &mconfig, const char *tag, device_
m_video_ram(*this, "video_ram"),
m_j3a(*this, "J3A"),
m_j3b(*this, "J3B"),
- m_j7(*this, "J7"), m_centronics_busy(0), m_centronics_fault(0), m_vol0(0), m_vol1(0), m_ia(0), m_ib(0), m_keydata(0), m_kbf(0), m_lps(0), m_page(0), m_flash(0), m_base(0), m_ppi_pa(0), m_ppi_pc(0), m_kb_timer(nullptr)
+ m_j7(*this, "J7"),
+ m_centronics_busy(0), m_centronics_fault(0), m_vol0(0), m_vol1(0), m_ia(0), m_ib(0), m_keydata(0), m_kbf(0), m_lps(0), m_page(0), m_flash(0), m_base(0), m_ppi_pa(0), m_ppi_pc(0), m_kb_timer(nullptr)
{
}
@@ -637,7 +638,7 @@ grip_device::grip_device(const machine_config &mconfig, const char *tag, device_
// device_start - device-specific startup
//-------------------------------------------------
-void grip_device::device_start()
+void ecb_grip21_device::device_start()
{
// allocate video RAM
m_video_ram.allocate(VIDEORAM_SIZE);
@@ -663,7 +664,7 @@ void grip_device::device_start()
/*
void grip5_state::machine_start()
{
- grip_device::machine_start();
+ ecb_grip21_device::machine_start();
// setup ROM banking
membank("eprom")->configure_entries(0, 2, memregion(Z80_TAG)->base(), 0x4000);
@@ -678,7 +679,7 @@ void grip5_state::machine_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void grip_device::device_reset()
+void ecb_grip21_device::device_reset()
{
m_base = m_j7->read();
m_page = 0;
@@ -690,7 +691,7 @@ void grip_device::device_reset()
// vol0_w - volume 0
//-------------------------------------------------
-WRITE8_MEMBER( grip_device::vol0_w )
+WRITE8_MEMBER( ecb_grip21_device::vol0_w )
{
m_vol0 = BIT(data, 7);
}
@@ -700,7 +701,7 @@ WRITE8_MEMBER( grip_device::vol0_w )
// vol1_w - volume 1
//-------------------------------------------------
-WRITE8_MEMBER( grip_device::vol1_w )
+WRITE8_MEMBER( ecb_grip21_device::vol1_w )
{
m_vol1 = BIT(data, 7);
}
@@ -710,7 +711,7 @@ WRITE8_MEMBER( grip_device::vol1_w )
// flash_w -
//-------------------------------------------------
-WRITE8_MEMBER( grip_device::flash_w )
+WRITE8_MEMBER( ecb_grip21_device::flash_w )
{
m_flash = BIT(data, 7);
}
@@ -720,7 +721,7 @@ WRITE8_MEMBER( grip_device::flash_w )
// page_w - video page select
//-------------------------------------------------
-WRITE8_MEMBER( grip_device::page_w )
+WRITE8_MEMBER( ecb_grip21_device::page_w )
{
m_page = BIT(data, 7);
@@ -732,12 +733,12 @@ WRITE8_MEMBER( grip_device::page_w )
// stat_r -
//-------------------------------------------------
-WRITE_LINE_MEMBER(grip_device::write_centronics_fault)
+WRITE_LINE_MEMBER(ecb_grip21_device::write_centronics_fault)
{
m_centronics_fault = state;
}
-READ8_MEMBER( grip_device::stat_r )
+READ8_MEMBER( ecb_grip21_device::stat_r )
{
/*
@@ -795,7 +796,7 @@ READ8_MEMBER( grip_device::stat_r )
// lrs_r -
//-------------------------------------------------
-READ8_MEMBER( grip_device::lrs_r )
+READ8_MEMBER( ecb_grip21_device::lrs_r )
{
m_lps = 0;
@@ -807,7 +808,7 @@ READ8_MEMBER( grip_device::lrs_r )
// lrs_w -
//-------------------------------------------------
-WRITE8_MEMBER( grip_device::lrs_w )
+WRITE8_MEMBER( ecb_grip21_device::lrs_w )
{
m_lps = 0;
}
@@ -817,7 +818,7 @@ WRITE8_MEMBER( grip_device::lrs_w )
// cxstb_r - centronics strobe
//-------------------------------------------------
-READ8_MEMBER( grip_device::cxstb_r )
+READ8_MEMBER( ecb_grip21_device::cxstb_r )
{
m_centronics->write_strobe(0);
m_centronics->write_strobe(1);
@@ -830,7 +831,7 @@ READ8_MEMBER( grip_device::cxstb_r )
// cxstb_w - centronics strobe
//-------------------------------------------------
-WRITE8_MEMBER( grip_device::cxstb_w )
+WRITE8_MEMBER( ecb_grip21_device::cxstb_w )
{
m_centronics->write_strobe(0);
m_centronics->write_strobe(1);
@@ -862,7 +863,7 @@ WRITE8_MEMBER( grip5_state::dpage_w )
// ecbbus_io_r - I/O read
//-------------------------------------------------
-uint8_t grip_device::ecbbus_io_r(offs_t offset)
+uint8_t ecb_grip21_device::ecbbus_io_r(offs_t offset)
{
uint8_t data = 0;
@@ -890,7 +891,7 @@ uint8_t grip_device::ecbbus_io_r(offs_t offset)
// ecbbus_io_w - I/O write
//-------------------------------------------------
-void grip_device::ecbbus_io_w(offs_t offset, uint8_t data)
+void ecb_grip21_device::ecbbus_io_w(offs_t offset, uint8_t data)
{
if ((offset & 0xfe) == m_base)
{
diff --git a/src/devices/bus/ecbbus/grip.h b/src/devices/bus/ecbbus/grip.h
index 0dc2d86bf8b..a261b22a557 100644
--- a/src/devices/bus/ecbbus/grip.h
+++ b/src/devices/bus/ecbbus/grip.h
@@ -28,14 +28,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> grip_device
+// ======================> ecb_grip21_device
-class grip_device : public device_t,
- public device_ecbbus_card_interface
+class ecb_grip21_device : public device_t, public device_ecbbus_card_interface
{
public:
// construction/destruction
- grip_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ecb_grip21_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -58,7 +57,8 @@ public:
DECLARE_WRITE8_MEMBER( ppi_pc_w );
DECLARE_READ8_MEMBER( sti_gpio_r );
DECLARE_WRITE_LINE_MEMBER( speaker_w );
- DECLARE_WRITE8_MEMBER( kb_w );
+
+ void kb_w(uint8_t data);
DECLARE_WRITE_LINE_MEMBER( write_centronics_busy );
DECLARE_WRITE_LINE_MEMBER( write_centronics_fault );
@@ -126,6 +126,6 @@ private:
// device type definition
-extern const device_type ECB_GRIP21;
+DECLARE_DEVICE_TYPE(ECB_GRIP21, ecb_grip21_device)
#endif // MAME_BUS_ECBBUS_GRIP_H
diff --git a/src/devices/bus/econet/e01.cpp b/src/devices/bus/econet/e01.cpp
index 80fc8bb3029..675f270e0c9 100644
--- a/src/devices/bus/econet/e01.cpp
+++ b/src/devices/bus/econet/e01.cpp
@@ -75,11 +75,13 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type E01 = device_creator<e01_device>;
-const device_type E01S = device_creator<e01s_device>;
+DEFINE_DEVICE_TYPE(ECONET_E01, econet_e01_device, "econet_e01", "Acorn FileStore E01")
+DEFINE_DEVICE_TYPE(ECONET_E01S, econet_e01s_device, "econet_e01s", "Acorn FileStore E01S")
-e01s_device::e01s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- :e01_device(mconfig, E01S, "Acorn FileStore E01S", tag, owner, clock, "e01s", __FILE__) { m_variant = TYPE_E01S; }
+econet_e01s_device::econet_e01s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : econet_e01_device(mconfig, ECONET_E01S, tag, owner, clock, TYPE_E01S)
+{
+}
//-------------------------------------------------
@@ -113,7 +115,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *e01_device::device_rom_region() const
+const tiny_rom_entry *econet_e01_device::device_rom_region() const
{
switch (m_variant)
{
@@ -131,7 +133,7 @@ const tiny_rom_entry *e01_device::device_rom_region() const
// MC146818_INTERFACE( rtc_intf )
//-------------------------------------------------
-WRITE_LINE_MEMBER(e01_device::rtc_irq_w)
+WRITE_LINE_MEMBER(econet_e01_device::rtc_irq_w)
{
m_rtc_irq = state;
@@ -143,26 +145,26 @@ WRITE_LINE_MEMBER(e01_device::rtc_irq_w)
// mc6854_interface adlc_intf
//-------------------------------------------------
-WRITE_LINE_MEMBER( e01_device::adlc_irq_w )
+WRITE_LINE_MEMBER( econet_e01_device::adlc_irq_w )
{
m_adlc_irq = state;
update_interrupts();
}
-WRITE_LINE_MEMBER( e01_device::econet_data_w )
+WRITE_LINE_MEMBER( econet_e01_device::econet_data_w )
{
m_econet->data_w(this, state);
}
-WRITE_LINE_MEMBER(e01_device::via_irq_w)
+WRITE_LINE_MEMBER(econet_e01_device::via_irq_w)
{
m_via_irq = state;
update_interrupts();
}
-WRITE_LINE_MEMBER( e01_device::clk_en_w )
+WRITE_LINE_MEMBER( econet_e01_device::clk_en_w )
{
m_clk_en = state;
}
@@ -175,21 +177,21 @@ static SLOT_INTERFACE_START( e01_floppies )
SLOT_INTERFACE( "35dd", FLOPPY_35_DD ) // NEC FD1036 A
SLOT_INTERFACE_END
-WRITE_LINE_MEMBER( e01_device::fdc_irq_w )
+WRITE_LINE_MEMBER( econet_e01_device::fdc_irq_w )
{
m_fdc_irq = state;
update_interrupts();
}
-WRITE_LINE_MEMBER( e01_device::fdc_drq_w )
+WRITE_LINE_MEMBER( econet_e01_device::fdc_drq_w )
{
m_fdc_drq = state;
update_interrupts();
}
-WRITE_LINE_MEMBER( e01_device::scsi_bsy_w )
+WRITE_LINE_MEMBER( econet_e01_device::scsi_bsy_w )
{
m_scsi_ctrl_in->write_bit1(state);
@@ -199,7 +201,7 @@ WRITE_LINE_MEMBER( e01_device::scsi_bsy_w )
}
}
-WRITE_LINE_MEMBER( e01_device::scsi_req_w )
+WRITE_LINE_MEMBER( econet_e01_device::scsi_req_w )
{
m_scsi_ctrl_in->write_bit5(state);
@@ -217,12 +219,12 @@ WRITE_LINE_MEMBER( e01_device::scsi_req_w )
// ADDRESS_MAP( e01_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( e01_mem, AS_PROGRAM, 8, e01_device )
+static ADDRESS_MAP_START( e01_mem, AS_PROGRAM, 8, econet_e01_device )
AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
AM_RANGE(0xfc00, 0xfc00) AM_MIRROR(0x00c3) AM_READWRITE(rtc_address_r, rtc_address_w)
AM_RANGE(0xfc04, 0xfc04) AM_MIRROR(0x00c3) AM_READWRITE(rtc_data_r, rtc_data_w)
AM_RANGE(0xfc08, 0xfc08) AM_MIRROR(0x00c0) AM_READ(ram_select_r) AM_WRITE(floppy_w)
- AM_RANGE(0xfc0c, 0xfc0f) AM_MIRROR(0x00c0) AM_DEVREADWRITE(WD2793_TAG, wd2793_t, read, write)
+ AM_RANGE(0xfc0c, 0xfc0f) AM_MIRROR(0x00c0) AM_DEVREADWRITE(WD2793_TAG, wd2793_device, read, write)
AM_RANGE(0xfc10, 0xfc1f) AM_MIRROR(0x00c0) AM_DEVREADWRITE(R6522_TAG, via6522_device, read, write)
AM_RANGE(0xfc20, 0xfc23) AM_MIRROR(0x00c0) AM_DEVREADWRITE(MC6854_TAG, mc6854_device, read, write)
AM_RANGE(0xfc24, 0xfc24) AM_MIRROR(0x00c3) AM_READWRITE(network_irq_disable_r, network_irq_disable_w)
@@ -245,19 +247,19 @@ static MACHINE_CONFIG_FRAGMENT( e01 )
MCFG_CPU_PROGRAM_MAP(e01_mem)
MCFG_MC146818_ADD(HD146818_TAG, XTAL_32_768kHz)
- MCFG_MC146818_IRQ_HANDLER(WRITELINE(e01_device, rtc_irq_w))
+ MCFG_MC146818_IRQ_HANDLER(WRITELINE(econet_e01_device, rtc_irq_w))
// devices
MCFG_DEVICE_ADD(R6522_TAG, VIA6522, XTAL_8MHz / 4)
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("cent_data_out", output_latch_device, write))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(e01_device, via_irq_w))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(econet_e01_device, via_irq_w))
MCFG_DEVICE_ADD(MC6854_TAG, MC6854, 0)
- MCFG_MC6854_OUT_IRQ_CB(WRITELINE(e01_device, adlc_irq_w))
- MCFG_MC6854_OUT_TXD_CB(WRITELINE(e01_device, econet_data_w))
+ MCFG_MC6854_OUT_IRQ_CB(WRITELINE(econet_e01_device, adlc_irq_w))
+ MCFG_MC6854_OUT_TXD_CB(WRITELINE(econet_e01_device, econet_data_w))
MCFG_WD2793_ADD(WD2793_TAG, XTAL_8MHz/4)
- MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(e01_device, fdc_irq_w))
- MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(e01_device, fdc_drq_w))
+ MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(econet_e01_device, fdc_irq_w))
+ MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(econet_e01_device, fdc_drq_w))
MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", e01_floppies, "35dd", floppy_formats_afs)
MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":1", e01_floppies, "35dd", floppy_formats_afs)
MCFG_SOFTWARE_LIST_ADD("flop_ls_e01", "e01_flop")
@@ -270,11 +272,11 @@ static MACHINE_CONFIG_FRAGMENT( e01 )
MCFG_DEVICE_ADD(SCSIBUS_TAG, SCSI_PORT, 0)
MCFG_SCSI_DATA_INPUT_BUFFER("scsi_data_in")
MCFG_SCSI_MSG_HANDLER(DEVWRITELINE("scsi_ctrl_in", input_buffer_device, write_bit0))
- MCFG_SCSI_BSY_HANDLER(WRITELINE(e01_device, scsi_bsy_w)) // bit1
+ MCFG_SCSI_BSY_HANDLER(WRITELINE(econet_e01_device, scsi_bsy_w)) // bit1
// bit 2 0
// bit 3 0
// bit 4 NIRQ
- MCFG_SCSI_REQ_HANDLER(WRITELINE(e01_device, scsi_req_w)) // bit5
+ MCFG_SCSI_REQ_HANDLER(WRITELINE(econet_e01_device, scsi_req_w)) // bit5
MCFG_SCSI_IO_HANDLER(DEVWRITELINE("scsi_ctrl_in", input_buffer_device, write_bit6))
MCFG_SCSI_CD_HANDLER(DEVWRITELINE("scsi_ctrl_in", input_buffer_device, write_bit7))
MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0)
@@ -294,7 +296,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor e01_device::device_mconfig_additions() const
+machine_config_constructor econet_e01_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( e01 );
}
@@ -320,7 +322,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor e01_device::device_input_ports() const
+ioport_constructor econet_e01_device::device_input_ports() const
{
return INPUT_PORTS_NAME( e01 );
}
@@ -335,7 +337,7 @@ ioport_constructor e01_device::device_input_ports() const
// update_interrupts - update interrupt state
//-------------------------------------------------
-inline void e01_device::update_interrupts()
+inline void econet_e01_device::update_interrupts()
{
int irq = (m_via_irq || (m_hdc_ie & m_hdc_irq) || m_rtc_irq) ? ASSERT_LINE : CLEAR_LINE;
int nmi = (m_fdc_irq || m_fdc_drq || (m_adlc_ie & m_adlc_irq)) ? ASSERT_LINE : CLEAR_LINE;
@@ -349,7 +351,7 @@ inline void e01_device::update_interrupts()
// network_irq_enable - network interrupt enable
//-------------------------------------------------
-inline void e01_device::network_irq_enable(int enabled)
+inline void econet_e01_device::network_irq_enable(int enabled)
{
m_adlc_ie = enabled;
@@ -361,7 +363,7 @@ inline void e01_device::network_irq_enable(int enabled)
// hdc_irq_enable - hard disk interrupt enable
//-------------------------------------------------
-inline void e01_device::hdc_irq_enable(int enabled)
+inline void econet_e01_device::hdc_irq_enable(int enabled)
{
m_hdc_ie = enabled;
@@ -375,65 +377,43 @@ inline void e01_device::hdc_irq_enable(int enabled)
//**************************************************************************
//-------------------------------------------------
-// e01_device - constructor
-//-------------------------------------------------
-
-e01_device::e01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, E01, "Acorn FileStore E01", tag, owner, clock, "e01" , __FILE__),
- device_econet_interface(mconfig, *this),
- m_maincpu(*this, R65C102_TAG),
- m_fdc(*this, WD2793_TAG),
- m_adlc(*this, MC6854_TAG),
- m_rtc(*this, HD146818_TAG),
- m_ram(*this, RAM_TAG),
- m_scsibus(*this, SCSIBUS_TAG),
- m_scsi_data_out(*this, "scsi_data_out"),
- m_scsi_data_in(*this, "scsi_data_in"),
- m_scsi_ctrl_in(*this, "scsi_ctrl_in"),
- m_floppy0(*this, WD2793_TAG":0"),
- m_floppy1(*this, WD2793_TAG":1"),
- m_rom(*this, R65C102_TAG),
- m_centronics(*this, CENTRONICS_TAG),
- m_adlc_ie(0),
- m_hdc_ie(0),
- m_rtc_irq(CLEAR_LINE),
- m_via_irq(CLEAR_LINE),
- m_hdc_irq(CLEAR_LINE),
- m_fdc_irq(CLEAR_LINE),
- m_fdc_drq(CLEAR_LINE),
- m_adlc_irq(CLEAR_LINE),
- m_clk_en(0), m_ram_en(false),
- m_variant(TYPE_E01), m_clk_timer(nullptr)
-{
-}
-
-
-e01_device::e01_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_econet_interface(mconfig, *this),
- m_maincpu(*this, R65C102_TAG),
- m_fdc(*this, WD2793_TAG),
- m_adlc(*this, MC6854_TAG),
- m_rtc(*this, HD146818_TAG),
- m_ram(*this, RAM_TAG),
- m_scsibus(*this, SCSIBUS_TAG),
- m_scsi_data_out(*this, "scsi_data_out"),
- m_scsi_data_in(*this, "scsi_data_in"),
- m_scsi_ctrl_in(*this, "scsi_ctrl_in"),
- m_floppy0(*this, WD2793_TAG":0"),
- m_floppy1(*this, WD2793_TAG":1"),
- m_rom(*this, R65C102_TAG),
- m_centronics(*this, CENTRONICS_TAG),
- m_adlc_ie(0),
- m_hdc_ie(0),
- m_rtc_irq(CLEAR_LINE),
- m_via_irq(CLEAR_LINE),
- m_hdc_irq(CLEAR_LINE),
- m_fdc_irq(CLEAR_LINE),
- m_fdc_drq(CLEAR_LINE),
- m_adlc_irq(CLEAR_LINE),
- m_clk_en(0), m_ram_en(false),
- m_variant(TYPE_E01), m_clk_timer(nullptr)
+// econet_e01_device - constructor
+//-------------------------------------------------
+
+econet_e01_device::econet_e01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : econet_e01_device(mconfig, ECONET_E01, tag, owner, clock, TYPE_E01)
+{
+}
+
+
+econet_e01_device::econet_e01_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int variant)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_econet_interface(mconfig, *this)
+ , m_maincpu(*this, R65C102_TAG)
+ , m_fdc(*this, WD2793_TAG)
+ , m_adlc(*this, MC6854_TAG)
+ , m_rtc(*this, HD146818_TAG)
+ , m_ram(*this, RAM_TAG)
+ , m_scsibus(*this, SCSIBUS_TAG)
+ , m_scsi_data_out(*this, "scsi_data_out")
+ , m_scsi_data_in(*this, "scsi_data_in")
+ , m_scsi_ctrl_in(*this, "scsi_ctrl_in")
+ , m_floppy0(*this, WD2793_TAG":0")
+ , m_floppy1(*this, WD2793_TAG":1")
+ , m_rom(*this, R65C102_TAG)
+ , m_centronics(*this, CENTRONICS_TAG)
+ , m_adlc_ie(0)
+ , m_hdc_ie(0)
+ , m_rtc_irq(CLEAR_LINE)
+ , m_via_irq(CLEAR_LINE)
+ , m_hdc_irq(CLEAR_LINE)
+ , m_fdc_irq(CLEAR_LINE)
+ , m_fdc_drq(CLEAR_LINE)
+ , m_adlc_irq(CLEAR_LINE)
+ , m_clk_en(0)
+ , m_ram_en(false)
+ , m_variant(variant)
+ , m_clk_timer(nullptr)
{
}
@@ -441,7 +421,7 @@ e01_device::e01_device(const machine_config &mconfig, device_type type, const ch
// device_start - device-specific startup
//-------------------------------------------------
-void e01_device::device_start()
+void econet_e01_device::device_start()
{
// allocate timers
m_clk_timer = timer_alloc();
@@ -461,7 +441,7 @@ void e01_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void e01_device::device_reset()
+void econet_e01_device::device_reset()
{
m_clk_timer->adjust(attotime::zero, 0, attotime::from_hz(200000));
m_ram_en = false;
@@ -472,7 +452,7 @@ void e01_device::device_reset()
// device_timer - handler timer events
//-------------------------------------------------
-void e01_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void econet_e01_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
if (m_clk_en)
{
@@ -486,7 +466,7 @@ void e01_device::device_timer(emu_timer &timer, device_timer_id id, int param, v
// read -
//-------------------------------------------------
-READ8_MEMBER( e01_device::read )
+READ8_MEMBER( econet_e01_device::read )
{
uint8_t data;
@@ -507,7 +487,7 @@ READ8_MEMBER( e01_device::read )
// write -
//-------------------------------------------------
-WRITE8_MEMBER( e01_device::write )
+WRITE8_MEMBER( econet_e01_device::write )
{
m_ram->pointer()[offset] = data;
}
@@ -517,7 +497,7 @@ WRITE8_MEMBER( e01_device::write )
// eprom_r - ROM/RAM select read
//-------------------------------------------------
-READ8_MEMBER( e01_device::ram_select_r )
+READ8_MEMBER( econet_e01_device::ram_select_r )
{
m_ram_en = true;
@@ -529,7 +509,7 @@ READ8_MEMBER( e01_device::ram_select_r )
// floppy_w - floppy control write
//-------------------------------------------------
-WRITE8_MEMBER( e01_device::floppy_w )
+WRITE8_MEMBER( econet_e01_device::floppy_w )
{
/*
@@ -577,7 +557,7 @@ WRITE8_MEMBER( e01_device::floppy_w )
// network_irq_disable_r -
//-------------------------------------------------
-READ8_MEMBER( e01_device::network_irq_disable_r )
+READ8_MEMBER( econet_e01_device::network_irq_disable_r )
{
network_irq_enable(0);
@@ -589,7 +569,7 @@ READ8_MEMBER( e01_device::network_irq_disable_r )
// network_irq_disable_w -
//-------------------------------------------------
-WRITE8_MEMBER( e01_device::network_irq_disable_w )
+WRITE8_MEMBER( econet_e01_device::network_irq_disable_w )
{
network_irq_enable(0);
}
@@ -599,7 +579,7 @@ WRITE8_MEMBER( e01_device::network_irq_disable_w )
// network_irq_enable_r -
//-------------------------------------------------
-READ8_MEMBER( e01_device::network_irq_enable_r )
+READ8_MEMBER( econet_e01_device::network_irq_enable_r )
{
network_irq_enable(1);
@@ -611,7 +591,7 @@ READ8_MEMBER( e01_device::network_irq_enable_r )
// network_irq_enable_w -
//-------------------------------------------------
-WRITE8_MEMBER( e01_device::network_irq_enable_w )
+WRITE8_MEMBER( econet_e01_device::network_irq_enable_w )
{
network_irq_enable(1);
}
@@ -621,7 +601,7 @@ WRITE8_MEMBER( e01_device::network_irq_enable_w )
// hdc_data_r -
//-------------------------------------------------
-READ8_MEMBER( e01_device::hdc_data_r )
+READ8_MEMBER( econet_e01_device::hdc_data_r )
{
uint8_t data = m_scsi_data_in->read();
@@ -635,7 +615,7 @@ READ8_MEMBER( e01_device::hdc_data_r )
// hdc_data_w -
//-------------------------------------------------
-WRITE8_MEMBER( e01_device::hdc_data_w )
+WRITE8_MEMBER( econet_e01_device::hdc_data_w )
{
m_scsi_data_out->write(data);
@@ -647,7 +627,7 @@ WRITE8_MEMBER( e01_device::hdc_data_w )
// hdc_select_w -
//-------------------------------------------------
-WRITE8_MEMBER( e01_device::hdc_select_w )
+WRITE8_MEMBER( econet_e01_device::hdc_select_w )
{
m_scsibus->write_sel(1);
}
@@ -657,7 +637,7 @@ WRITE8_MEMBER( e01_device::hdc_select_w )
// hdc_irq_enable_w -
//-------------------------------------------------
-WRITE8_MEMBER( e01_device::hdc_irq_enable_w )
+WRITE8_MEMBER( econet_e01_device::hdc_irq_enable_w )
{
hdc_irq_enable(BIT(data, 0));
}
@@ -667,7 +647,7 @@ WRITE8_MEMBER( e01_device::hdc_irq_enable_w )
// rtc_address_r -
//-------------------------------------------------
-READ8_MEMBER( e01_device::rtc_address_r )
+READ8_MEMBER( econet_e01_device::rtc_address_r )
{
return m_rtc->read(space, 0);
}
@@ -677,7 +657,7 @@ READ8_MEMBER( e01_device::rtc_address_r )
// rtc_address_w -
//-------------------------------------------------
-WRITE8_MEMBER( e01_device::rtc_address_w )
+WRITE8_MEMBER( econet_e01_device::rtc_address_w )
{
m_rtc->write(space, 0, data);
}
@@ -687,7 +667,7 @@ WRITE8_MEMBER( e01_device::rtc_address_w )
// rtc_data_r -
//-------------------------------------------------
-READ8_MEMBER( e01_device::rtc_data_r )
+READ8_MEMBER( econet_e01_device::rtc_data_r )
{
return m_rtc->read(space, 1);
}
@@ -697,7 +677,7 @@ READ8_MEMBER( e01_device::rtc_data_r )
// rtc_data_w -
//-------------------------------------------------
-WRITE8_MEMBER( e01_device::rtc_data_w )
+WRITE8_MEMBER( econet_e01_device::rtc_data_w )
{
m_rtc->write(space, 1, data);
}
@@ -707,7 +687,7 @@ WRITE8_MEMBER( e01_device::rtc_data_w )
// econet_clk_w -
//-------------------------------------------------
-void e01_device::econet_data(int state)
+void econet_e01_device::econet_data(int state)
{
m_adlc->set_rx(state);
}
@@ -717,7 +697,7 @@ void e01_device::econet_data(int state)
// econet_clk_w -
//-------------------------------------------------
-void e01_device::econet_clk(int state)
+void econet_e01_device::econet_clk(int state)
{
m_adlc->rxc_w(state);
m_adlc->txc_w(state);
diff --git a/src/devices/bus/econet/e01.h b/src/devices/bus/econet/e01.h
index 4cf86c6cabd..dd9eab8fc4f 100644
--- a/src/devices/bus/econet/e01.h
+++ b/src/devices/bus/econet/e01.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ECONET_E01_H
+#define MAME_BUS_ECONET_E01_H
-#ifndef __E01__
-#define __E01__
+#pragma once
#include "econet.h"
#include "bus/centronics/ctronics.h"
@@ -24,19 +24,12 @@
#include "machine/wd_fdc.h"
#include "formats/afs_dsk.h"
-class e01_device : public device_t,
+class econet_e01_device : public device_t,
public device_econet_interface
{
public:
// construction/destruction
- e01_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- e01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- enum
- {
- TYPE_E01 = 0,
- TYPE_E01S
- };
+ econet_e01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_FLOPPY_FORMATS(floppy_formats_afs);
@@ -67,6 +60,14 @@ public:
DECLARE_WRITE_LINE_MEMBER( scsi_req_w );
protected:
+ enum
+ {
+ TYPE_E01 = 0,
+ TYPE_E01S
+ };
+
+ econet_e01_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -82,11 +83,11 @@ protected:
virtual void econet_clk(int state) override;
required_device<m65c02_device> m_maincpu;
- required_device<wd2793_t> m_fdc;
+ required_device<wd2793_device> m_fdc;
required_device<mc6854_device> m_adlc;
required_device<mc146818_device> m_rtc;
required_device<ram_device> m_ram;
- required_device<SCSI_PORT_DEVICE> m_scsibus;
+ required_device<scsi_port_device> m_scsibus;
required_device<output_latch_device> m_scsi_data_out;
required_device<input_buffer_device> m_scsi_data_in;
required_device<input_buffer_device> m_scsi_ctrl_in;
@@ -111,27 +112,27 @@ protected:
int m_clk_en;
bool m_ram_en;
- int m_variant;
+ const int m_variant;
// timers
emu_timer *m_clk_timer;
};
-// ======================> e01s_device
+// ======================> econet_e01s_device
-class e01s_device : public e01_device
+class econet_e01s_device : public econet_e01_device
{
public:
// construction/destruction
- e01s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ econet_e01s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
// device type definition
-extern const device_type E01;
-extern const device_type E01S;
+DECLARE_DEVICE_TYPE(ECONET_E01, econet_e01_device)
+DECLARE_DEVICE_TYPE(ECONET_E01S, econet_e01s_device)
-#endif
+#endif // MAME_BUS_ECONET_E01_H
diff --git a/src/devices/bus/econet/econet.cpp b/src/devices/bus/econet/econet.cpp
index 18e5134f459..e4acfe3c3d6 100644
--- a/src/devices/bus/econet/econet.cpp
+++ b/src/devices/bus/econet/econet.cpp
@@ -26,8 +26,8 @@ static const char *const SIGNAL_NAME[] = { "CLK", "DATA" };
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ECONET = device_creator<econet_device>;
-const device_type ECONET_SLOT = device_creator<econet_slot_device>;
+DEFINE_DEVICE_TYPE(ECONET, econet_device, "econet", "Econet")
+DEFINE_DEVICE_TYPE(ECONET_SLOT, econet_slot_device, "econet_slot", "Econet station")
@@ -40,7 +40,7 @@ const device_type ECONET_SLOT = device_creator<econet_slot_device>;
//-------------------------------------------------
device_econet_interface::device_econet_interface(const machine_config &mconfig, device_t &device) :
- device_slot_card_interface(mconfig, device), m_next(nullptr), m_econet(nullptr), m_address(0)
+ device_slot_card_interface(mconfig, device), m_econet(nullptr), m_address(0), m_next(nullptr)
{
}
@@ -55,8 +55,9 @@ device_econet_interface::device_econet_interface(const machine_config &mconfig,
//-------------------------------------------------
econet_slot_device::econet_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ECONET_SLOT, "Econet station", tag, owner, clock, "econet_slot", __FILE__),
- device_slot_interface(mconfig, *this), m_address(0), m_econet(nullptr)
+ device_t(mconfig, ECONET_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_address(0), m_econet(nullptr)
{
}
@@ -195,7 +196,7 @@ inline int econet_device::get_signal(int signal)
//-------------------------------------------------
econet_device::econet_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ECONET, "Econet", tag, owner, clock, "econet", __FILE__),
+ device_t(mconfig, ECONET, tag, owner, clock),
m_write_clk(*this),
m_write_data(*this)
{
@@ -309,6 +310,6 @@ void econet_device::data_w(device_t *device, int state)
#include "e01.h"
SLOT_INTERFACE_START( econet_devices )
- SLOT_INTERFACE("e01", E01)
- SLOT_INTERFACE("e01s", E01S)
+ SLOT_INTERFACE("e01", ECONET_E01)
+ SLOT_INTERFACE("e01s", ECONET_E01S)
SLOT_INTERFACE_END
diff --git a/src/devices/bus/econet/econet.h b/src/devices/bus/econet/econet.h
index e41b5dbf133..1531931f3c2 100644
--- a/src/devices/bus/econet/econet.h
+++ b/src/devices/bus/econet/econet.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ECONET_ECONET_H
+#define MAME_BUS_ECONET_ECONET_H
-#ifndef __ECONET__
-#define __ECONET__
+#pragma once
@@ -57,8 +57,8 @@ public:
// construction/destruction
econet_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_clk_wr_callback(device_t &device, _Object object) { return downcast<econet_device &>(device).m_write_clk.set_callback(object); }
- template<class _Object> static devcb_base &set_data_wr_callback(device_t &device, _Object object) { return downcast<econet_device &>(device).m_write_data.set_callback(object); }
+ template <class Object> static devcb_base &set_clk_wr_callback(device_t &device, Object &&cb) { return downcast<econet_device &>(device).m_write_clk.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data_wr_callback(device_t &device, Object &&cb) { return downcast<econet_device &>(device).m_write_data.set_callback(std::forward<Object>(cb)); }
void add_device(device_t *target, int address);
@@ -135,30 +135,35 @@ private:
class device_econet_interface : public device_slot_card_interface
{
friend class econet_device;
+ template <class ElementType> friend class simple_list;
public:
- // construction/destruction
- device_econet_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_econet_interface() { }
-
device_econet_interface *next() const { return m_next; }
- device_econet_interface *m_next;
virtual void econet_clk(int state) = 0;
virtual void econet_data(int state) = 0;
+protected:
+ // construction/destruction
+ device_econet_interface(const machine_config &mconfig, device_t &device);
+
econet_device *m_econet;
uint8_t m_address;
+
+private:
+ device_econet_interface *m_next;
};
// device type definition
extern const device_type ECONET;
extern const device_type ECONET_SLOT;
+DECLARE_DEVICE_TYPE(ECONET, econet_device)
+DECLARE_DEVICE_TYPE(ECONET_SLOT, econet_slot_device)
SLOT_INTERFACE_EXTERN( econet_devices );
-#endif
+#endif // MAME_BUS_ECONET_ECONET_H
diff --git a/src/devices/bus/electron/exp.cpp b/src/devices/bus/electron/exp.cpp
index 93175809a57..3bcc1377e19 100644
--- a/src/devices/bus/electron/exp.cpp
+++ b/src/devices/bus/electron/exp.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ELECTRON_EXPANSION_SLOT = device_creator<electron_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(ELECTRON_EXPANSION_SLOT, electron_expansion_slot_device, "electron_expansion_slot", "Acorn Electron Expansion port")
//**************************************************************************
@@ -50,8 +50,8 @@ device_electron_expansion_interface::~device_electron_expansion_interface()
//-------------------------------------------------
electron_expansion_slot_device::electron_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ELECTRON_EXPANSION_SLOT, "Acorn Electron Expansion port", tag, owner, clock, "electron_expansion_slot", __FILE__),
- device_slot_interface(mconfig, *this),
+ device_t(mconfig, ELECTRON_EXPANSION_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
m_card(nullptr),
m_irq_handler(*this),
m_nmi_handler(*this)
diff --git a/src/devices/bus/electron/exp.h b/src/devices/bus/electron/exp.h
index a87b1670fcc..57b98aa6d5c 100644
--- a/src/devices/bus/electron/exp.h
+++ b/src/devices/bus/electron/exp.h
@@ -83,10 +83,10 @@ AC RETURNS (pins 3,4) - adaptor. A total of 6W may be drawn from these lines as
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ELECTRON_EXP_H
+#define MAME_BUS_ELECTRON_EXP_H
-#ifndef __ELECTRON_EXPANSION_SLOT__
-#define __ELECTRON_EXPANSION_SLOT__
+#pragma once
@@ -133,11 +133,11 @@ public:
virtual ~electron_expansion_slot_device();
// callbacks
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object)
- { return downcast<electron_expansion_slot_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb)
+ { return downcast<electron_expansion_slot_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_nmi_handler(device_t &device, _Object object)
- { return downcast<electron_expansion_slot_device &>(device).m_nmi_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
+ { return downcast<electron_expansion_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_irq_handler(state); }
DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_nmi_handler(state); }
@@ -161,18 +161,20 @@ class device_electron_expansion_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_electron_expansion_interface(const machine_config &mconfig, device_t &device);
virtual ~device_electron_expansion_interface();
protected:
+ device_electron_expansion_interface(const machine_config &mconfig, device_t &device);
+
electron_expansion_slot_device *m_slot;
};
// device type definition
extern const device_type ELECTRON_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(ELECTRON_EXPANSION_SLOT, electron_expansion_device)
SLOT_INTERFACE_EXTERN( electron_expansion_devices );
-#endif
+#endif // MAME_BUS_ELECTRON_EXP_H
diff --git a/src/devices/bus/electron/fbjoy.cpp b/src/devices/bus/electron/fbjoy.cpp
index 532df461f6a..643b697615b 100644
--- a/src/devices/bus/electron/fbjoy.cpp
+++ b/src/devices/bus/electron/fbjoy.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ELECTRON_FBJOY = device_creator<electron_fbjoy_device>;
+DEFINE_DEVICE_TYPE(ELECTRON_FBJOY, electron_fbjoy_device, "electron_fbjoy", "First Byte Joystick Interface")
static INPUT_PORTS_START( fbjoy )
@@ -47,9 +47,9 @@ ioport_constructor electron_fbjoy_device::device_input_ports() const
//-------------------------------------------------
electron_fbjoy_device::electron_fbjoy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ELECTRON_FBJOY, "First Byte Joystick Interface", tag, owner, clock, "electron_fbjoy", __FILE__),
- device_electron_expansion_interface(mconfig, *this),
- m_joy(*this, "JOY")
+ : device_t(mconfig, ELECTRON_FBJOY, tag, owner, clock)
+ , device_electron_expansion_interface(mconfig, *this)
+ , m_joy(*this, "JOY")
{
}
diff --git a/src/devices/bus/electron/fbjoy.h b/src/devices/bus/electron/fbjoy.h
index 0323f4f4bbf..d532c896d46 100644
--- a/src/devices/bus/electron/fbjoy.h
+++ b/src/devices/bus/electron/fbjoy.h
@@ -8,10 +8,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ELECTRON_FBJOY_H
+#define MAME_BUS_ELECTRON_FBJOY_H
-#ifndef __ELECTRON_FBJOY__
-#define __ELECTRON_FBJOY__
+#pragma once
#include "exp.h"
@@ -46,7 +46,7 @@ private:
// device type definition
-extern const device_type ELECTRON_FBJOY;
+DECLARE_DEVICE_TYPE(ELECTRON_FBJOY, electron_fbjoy_device)
-#endif
+#endif // MAME_BUS_ELECTRON_FBJOY_H
diff --git a/src/devices/bus/electron/m2105.cpp b/src/devices/bus/electron/m2105.cpp
index ba437842a4c..1e3ebc2308a 100644
--- a/src/devices/bus/electron/m2105.cpp
+++ b/src/devices/bus/electron/m2105.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ELECTRON_M2105 = device_creator<electron_m2105_device>;
+DEFINE_DEVICE_TYPE(ELECTRON_M2105, electron_m2105_device, "electron_m2105", "Acorn M2105 Expansion")
//-------------------------------------------------
@@ -123,15 +123,15 @@ const tiny_rom_entry *electron_m2105_device::device_rom_region() const
//-------------------------------------------------
electron_m2105_device::electron_m2105_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ELECTRON_M2105, "Acorn M2105 Expansion", tag, owner, clock, "electron_m2105", __FILE__),
- device_electron_expansion_interface(mconfig, *this),
- m_exp_rom(*this, "exp_rom"),
- m_via6522_0(*this, "via6522_0"),
- m_via6522_1(*this, "via6522_1"),
- m_duart(*this, "sc2681"),
- m_tms(*this, "tms5220"),
- m_centronics(*this, "centronics"),
- m_irqs(*this, "irqs")
+ : device_t(mconfig, ELECTRON_M2105, tag, owner, clock)
+ , device_electron_expansion_interface(mconfig, *this)
+ , m_exp_rom(*this, "exp_rom")
+ , m_via6522_0(*this, "via6522_0")
+ , m_via6522_1(*this, "via6522_1")
+ , m_duart(*this, "sc2681")
+ , m_tms(*this, "tms5220")
+ , m_centronics(*this, "centronics")
+ , m_irqs(*this, "irqs")
{
}
diff --git a/src/devices/bus/electron/m2105.h b/src/devices/bus/electron/m2105.h
index d9d8d5b3aed..94ab1d8ec5f 100644
--- a/src/devices/bus/electron/m2105.h
+++ b/src/devices/bus/electron/m2105.h
@@ -6,9 +6,10 @@
**********************************************************************/
+#ifndef MAME_BUS_ELECTRON_M2105_M
+#define MAME_BUS_ELECTRON_M2105_M
-#ifndef __ELECTRON_M2105__
-#define __ELECTRON_M2105__
+#pragma once
#include "exp.h"
#include "machine/6522via.h"
@@ -53,7 +54,7 @@ private:
// device type definition
-extern const device_type ELECTRON_M2105;
+DECLARE_DEVICE_TYPE(ELECTRON_M2105, electron_m2105_device)
-#endif /* __ELECTRON_M2105__ */
+#endif // MAME_BUS_ELECTRON_M2105_M
diff --git a/src/devices/bus/electron/plus3.cpp b/src/devices/bus/electron/plus3.cpp
index 98189b6cae7..46395d81f09 100644
--- a/src/devices/bus/electron/plus3.cpp
+++ b/src/devices/bus/electron/plus3.cpp
@@ -24,7 +24,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ELECTRON_PLUS3 = device_creator<electron_plus3_device>;
+DEFINE_DEVICE_TYPE(ELECTRON_PLUS3, electron_plus3_device, "electron_plus3", "Acorn Plus 3 Disc Expansion")
//-------------------------------------------------
@@ -102,12 +102,12 @@ const tiny_rom_entry *electron_plus3_device::device_rom_region() const
//-------------------------------------------------
electron_plus3_device::electron_plus3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ELECTRON_PLUS3, "Acorn Plus 3 Disc Expansion", tag, owner, clock, "electron_plus3", __FILE__),
- device_electron_expansion_interface(mconfig, *this),
- m_exp_rom(*this, "exp_rom"),
- m_fdc(*this, "fdc"),
- m_floppy0(*this, "fdc:0"),
- m_floppy1(*this, "fdc:1")
+ : device_t(mconfig, ELECTRON_PLUS3, tag, owner, clock)
+ , device_electron_expansion_interface(mconfig, *this)
+ , m_exp_rom(*this, "exp_rom")
+ , m_fdc(*this, "fdc")
+ , m_floppy0(*this, "fdc:0")
+ , m_floppy1(*this, "fdc:1")
{
}
@@ -121,7 +121,7 @@ void electron_plus3_device::device_start()
m_slot = dynamic_cast<electron_expansion_slot_device *>(owner());
space.install_readwrite_handler(0xfcc0, 0xfcc0, READ8_DELEGATE(electron_plus3_device, wd1770_status_r), WRITE8_DELEGATE(electron_plus3_device, wd1770_status_w));
- space.install_readwrite_handler(0xfcc4, 0xfcc7, READ8_DEVICE_DELEGATE(m_fdc, wd1770_t, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd1770_t, write));
+ space.install_readwrite_handler(0xfcc4, 0xfcc7, READ8_DEVICE_DELEGATE(m_fdc, wd1770_device, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd1770_device, write));
}
//-------------------------------------------------
diff --git a/src/devices/bus/electron/plus3.h b/src/devices/bus/electron/plus3.h
index 80aa3ec2320..0fc49206f89 100644
--- a/src/devices/bus/electron/plus3.h
+++ b/src/devices/bus/electron/plus3.h
@@ -6,9 +6,8 @@
**********************************************************************/
-
-#ifndef __ELECTRON_PLUS3__
-#define __ELECTRON_PLUS3__
+#ifndef MAME_BUS_ELECTRON_PLUS3_H
+#define MAME_BUS_ELECTRON_PLUS3_H
#include "exp.h"
#include "machine/wd_fdc.h"
@@ -42,7 +41,7 @@ protected:
private:
required_memory_region m_exp_rom;
- required_device<wd1770_t> m_fdc;
+ required_device<wd1770_device> m_fdc;
required_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1;
@@ -51,7 +50,7 @@ private:
// device type definition
-extern const device_type ELECTRON_PLUS3;
+DECLARE_DEVICE_TYPE(ELECTRON_PLUS3, electron_plus3_device)
-#endif /* __ELECTRON_PLUS3__ */
+#endif // MAME_BUS_ELECTRON_PLUS3_H
diff --git a/src/devices/bus/electron/pwrjoy.cpp b/src/devices/bus/electron/pwrjoy.cpp
index 02f65b277e9..98d6422cdd8 100644
--- a/src/devices/bus/electron/pwrjoy.cpp
+++ b/src/devices/bus/electron/pwrjoy.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ELECTRON_PWRJOY = device_creator<electron_pwrjoy_device>;
+DEFINE_DEVICE_TYPE(ELECTRON_PWRJOY, electron_pwrjoy_device, "electron_pwrjoy", "Power Software Joystick Interface")
ROM_START( pwrjoy )
@@ -56,10 +56,10 @@ const tiny_rom_entry *electron_pwrjoy_device::device_rom_region() const
//-------------------------------------------------
electron_pwrjoy_device::electron_pwrjoy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ELECTRON_PWRJOY, "Power Software Joystick Interface", tag, owner, clock, "electron_pwrjoy", __FILE__),
- device_electron_expansion_interface(mconfig, *this),
- m_exp_rom(*this, "exp_rom"),
- m_joy(*this, "JOY")
+ : device_t(mconfig, ELECTRON_PWRJOY, tag, owner, clock)
+ , device_electron_expansion_interface(mconfig, *this)
+ , m_exp_rom(*this, "exp_rom")
+ , m_joy(*this, "JOY")
{
}
diff --git a/src/devices/bus/electron/pwrjoy.h b/src/devices/bus/electron/pwrjoy.h
index fba6b1b8c1e..1566f21d10d 100644
--- a/src/devices/bus/electron/pwrjoy.h
+++ b/src/devices/bus/electron/pwrjoy.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ELECTRON_PWRJOY_H
+#define MAME_BUS_ELECTRON_PWRJOY_H
-#ifndef __ELECTRON_PWRJOY__
-#define __ELECTRON_PWRJOY__
+#pragma once
#include "exp.h"
@@ -46,7 +46,6 @@ private:
// device type definition
-extern const device_type ELECTRON_PWRJOY;
-
+DECLARE_DEVICE_TYPE(ELECTRON_PWRJOY, electron_pwrjoy_device)
-#endif
+#endif // MAME_BUS_ELECTRON_PWRJOY_H
diff --git a/src/devices/bus/ep64/exdos.cpp b/src/devices/bus/ep64/exdos.cpp
index 9b8d6ea9d48..9a207b31f3b 100644
--- a/src/devices/bus/ep64/exdos.cpp
+++ b/src/devices/bus/ep64/exdos.cpp
@@ -62,7 +62,7 @@ This PCB plugs into the external expansion connector on the right side of the ma
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type EP64_EXDOS = device_creator<ep64_exdos_device>;
+DEFINE_DEVICE_TYPE(EP64_EXDOS, ep64_exdos_device, "ep64_exdos", "EP64 EXDOS")
//-------------------------------------------------
@@ -133,7 +133,7 @@ machine_config_constructor ep64_exdos_device::device_mconfig_additions() const
//-------------------------------------------------
ep64_exdos_device::ep64_exdos_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EP64_EXDOS, "EXDOS", tag, owner, clock, "ep64_exdos", __FILE__),
+ device_t(mconfig, EP64_EXDOS, tag, owner, clock),
device_ep64_expansion_bus_card_interface(mconfig, *this),
m_fdc(*this, WD1770_TAG),
m_floppy0(*this, WD1770_TAG":0"),
@@ -154,7 +154,7 @@ void ep64_exdos_device::device_start()
{
m_slot->program().install_rom(0x080000, 0x087fff, m_rom->base());
- m_slot->io().install_readwrite_handler(0x10, 0x13, 0, 0x04, 0, READ8_DEVICE_DELEGATE(m_fdc, wd_fdc_t, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd_fdc_t, write));
+ m_slot->io().install_readwrite_handler(0x10, 0x13, 0, 0x04, 0, READ8_DEVICE_DELEGATE(m_fdc, wd_fdc_device_base, read), WRITE8_DEVICE_DELEGATE(m_fdc, wd_fdc_device_base, write));
m_slot->io().install_readwrite_handler(0x18, 0x18, 0, 0x04, 0, READ8_DELEGATE(ep64_exdos_device, read), WRITE8_DELEGATE(ep64_exdos_device, write));
}
diff --git a/src/devices/bus/ep64/exdos.h b/src/devices/bus/ep64/exdos.h
index a2417e0b1fa..9cb002c7754 100644
--- a/src/devices/bus/ep64/exdos.h
+++ b/src/devices/bus/ep64/exdos.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_EP64_EXDOS_H
+#define MAME_BUS_EP64_EXDOS_H
-#ifndef __EP64_EXDOS__
-#define __EP64_EXDOS__
+#pragma once
#include "exp.h"
#include "formats/ep64_dsk.h"
@@ -45,7 +45,7 @@ protected:
virtual void device_reset() override;
private:
- required_device<wd1770_t> m_fdc;
+ required_device<wd1770_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device<floppy_connector> m_floppy2;
@@ -56,8 +56,7 @@ private:
// device type definition
-extern const device_type EP64_EXDOS;
-
+DECLARE_DEVICE_TYPE(EP64_EXDOS, ep64_exdos_device)
-#endif
+#endif // MAME_BUS_EP64_EXDOS_H
diff --git a/src/devices/bus/ep64/exp.cpp b/src/devices/bus/ep64/exp.cpp
index 028b397b6df..a60c4d386c8 100644
--- a/src/devices/bus/ep64/exp.cpp
+++ b/src/devices/bus/ep64/exp.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type EP64_EXPANSION_BUS_SLOT = device_creator<ep64_expansion_bus_slot_device>;
+DEFINE_DEVICE_TYPE(EP64_EXPANSION_BUS_SLOT, ep64_expansion_bus_slot_device, "ep64_expansion_bus_slot", "Enterprise Sixty Four expansion bus slot")
@@ -44,7 +44,7 @@ device_ep64_expansion_bus_card_interface::device_ep64_expansion_bus_card_interfa
//-------------------------------------------------
ep64_expansion_bus_slot_device::ep64_expansion_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, EP64_EXPANSION_BUS_SLOT, "Enterprise Sixty Four expansion bus slot", tag, owner, clock, "ep64_expansion_bus_slot", __FILE__)
+ : device_t(mconfig, EP64_EXPANSION_BUS_SLOT, tag, owner, clock)
, device_slot_interface(mconfig, *this)
, m_write_irq(*this)
, m_write_nmi(*this)
diff --git a/src/devices/bus/ep64/exp.h b/src/devices/bus/ep64/exp.h
index 1dd01eb1e5f..d66fd8536b0 100644
--- a/src/devices/bus/ep64/exp.h
+++ b/src/devices/bus/ep64/exp.h
@@ -42,10 +42,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_EP64_EXP_H
+#define MAME_BUS_EP64_EXP_H
-#ifndef __EP64_EXPANSION_BUS__
-#define __EP64_EXPANSION_BUS__
+#pragma once
#include "sound/dave.h"
@@ -99,9 +99,9 @@ public:
ep64_expansion_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_dave_tag(device_t &device, const char* tag) { downcast<ep64_expansion_bus_slot_device &>(device).m_dave.set_tag(tag); }
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_nmi.set_callback(object); }
- template<class _Object> static devcb_base &set_wait_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_wait.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_wait_wr_callback(device_t &device, Object &&cb) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_wait.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_write_irq(state); }
DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_write_nmi(state); }
@@ -130,21 +130,19 @@ private:
class device_ep64_expansion_bus_card_interface : public device_slot_card_interface
{
-public:
+protected:
// construction/destruction
device_ep64_expansion_bus_card_interface(const machine_config &mconfig, device_t &device);
-protected:
ep64_expansion_bus_slot_device *m_slot;
};
// device type definition
-extern const device_type EP64_EXPANSION_BUS_SLOT;
+DECLARE_DEVICE_TYPE(EP64_EXPANSION_BUS_SLOT, ep64_expansion_bus_slot_device)
SLOT_INTERFACE_EXTERN( ep64_expansion_bus_cards );
-
-#endif
+#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 6fd316989dc..74e9294d456 100644
--- a/src/devices/bus/epson_sio/epson_sio.cpp
+++ b/src/devices/bus/epson_sio/epson_sio.cpp
@@ -18,7 +18,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type EPSON_SIO = device_creator<epson_sio_device>;
+DEFINE_DEVICE_TYPE(EPSON_SIO, epson_sio_device, "epson_sio", "EPSON SIO port")
//**************************************************************************
@@ -54,10 +54,11 @@ device_epson_sio_interface::~device_epson_sio_interface()
//-------------------------------------------------
epson_sio_device::epson_sio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EPSON_SIO, "EPSON SIO port", tag, owner, clock, "epson_sio", __FILE__),
- device_slot_interface(mconfig, *this), m_cart(nullptr),
- m_write_rx(*this),
- m_write_pin(*this)
+ device_t(mconfig, EPSON_SIO, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_cart(nullptr),
+ m_write_rx(*this),
+ m_write_pin(*this)
{
}
diff --git a/src/devices/bus/epson_sio/epson_sio.h b/src/devices/bus/epson_sio/epson_sio.h
index cd853d950b9..7e1a001c8b1 100644
--- a/src/devices/bus/epson_sio/epson_sio.h
+++ b/src/devices/bus/epson_sio/epson_sio.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_EPSON_SIO_EPSON_SIO_H
+#define MAME_BUS_EPSON_SIO_EPSON_SIO_H
-#ifndef __EPSON_SIO_H__
-#define __EPSON_SIO_H__
+#pragma once
@@ -73,23 +73,24 @@ class device_epson_sio_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_epson_sio_interface(const machine_config &mconfig, device_t &device);
virtual ~device_epson_sio_interface();
virtual void tx_w(int state) { };
virtual void pout_w(int state) { };
protected:
+ device_epson_sio_interface(const machine_config &mconfig, device_t &device);
+
epson_sio_device *m_slot;
};
// device type definition
-extern const device_type EPSON_SIO;
+DECLARE_DEVICE_TYPE(EPSON_SIO, epson_sio_device)
// supported devices
SLOT_INTERFACE_EXTERN( epson_sio_devices );
-#endif // __EPSON_SIO_H__
+#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 0e3bac64c1a..9ece008557a 100644
--- a/src/devices/bus/epson_sio/pf10.cpp
+++ b/src/devices/bus/epson_sio/pf10.cpp
@@ -18,7 +18,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type EPSON_PF10 = device_creator<epson_pf10_device>;
+DEFINE_DEVICE_TYPE(EPSON_PF10, epson_pf10_device, "epson_pf10_device", "EPSON PF-10 Portable Floppy Unit")
//-------------------------------------------------
@@ -93,7 +93,7 @@ machine_config_constructor epson_pf10_device::device_mconfig_additions() const
//-------------------------------------------------
epson_pf10_device::epson_pf10_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EPSON_PF10, "EPSON PF-10 Portable Floppy Unit", tag, owner, clock, "epson_pf10", __FILE__),
+ device_t(mconfig, EPSON_PF10, tag, owner, clock),
device_epson_sio_interface(mconfig, *this),
m_cpu(*this, "maincpu"),
m_fdc(*this, "upd765a"),
diff --git a/src/devices/bus/epson_sio/pf10.h b/src/devices/bus/epson_sio/pf10.h
index ab89b0fe01c..e3d4f01e69c 100644
--- a/src/devices/bus/epson_sio/pf10.h
+++ b/src/devices/bus/epson_sio/pf10.h
@@ -8,14 +8,14 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_EPSON_SIO_PF10_H
+#define MAME_BUS_EPSON_SIO_PF10_H
-#ifndef __PF10_H__
-#define __PF10_H__
+#pragma once
+#include "epson_sio.h"
#include "cpu/m6800/m6800.h"
#include "machine/upd765.h"
-#include "epson_sio.h"
//**************************************************************************
@@ -94,7 +94,7 @@ private:
// device type definition
-extern const device_type EPSON_PF10;
+DECLARE_DEVICE_TYPE(EPSON_PF10, epson_pf10_device)
-#endif // __PF10_H__
+#endif // MAME_BUS_EPSON_SIO_PF10_H
diff --git a/src/devices/bus/epson_sio/tf20.cpp b/src/devices/bus/epson_sio/tf20.cpp
index f1af2da2c74..4b9ce2c1bbb 100644
--- a/src/devices/bus/epson_sio/tf20.cpp
+++ b/src/devices/bus/epson_sio/tf20.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type EPSON_TF20 = device_creator<epson_tf20_device>;
+DEFINE_DEVICE_TYPE(EPSON_TF20, epson_tf20_device, "epson_tf20", "EPSON TF-20 Dual Floppy Disk Drive")
//-------------------------------------------------
// address maps
@@ -128,7 +128,7 @@ machine_config_constructor epson_tf20_device::device_mconfig_additions() const
//-------------------------------------------------
epson_tf20_device::epson_tf20_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EPSON_TF20, "EPSON TF-20 Dual Floppy Disk Drive", tag, owner, clock, "epson_tf20", __FILE__),
+ device_t(mconfig, EPSON_TF20, tag, owner, clock),
device_epson_sio_interface(mconfig, *this),
m_cpu(*this, "19b"),
m_ram(*this, "ram"),
diff --git a/src/devices/bus/epson_sio/tf20.h b/src/devices/bus/epson_sio/tf20.h
index a82f38ce9d3..31c1232c4bb 100644
--- a/src/devices/bus/epson_sio/tf20.h
+++ b/src/devices/bus/epson_sio/tf20.h
@@ -8,16 +8,16 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_EPSON_SIO_TF20_H
+#define MAME_BUS_EPSON_SIO_TF20_H
-#ifndef __TF20_H__
-#define __TF20_H__
+#pragma once
+#include "epson_sio.h"
#include "cpu/z80/z80.h"
#include "machine/ram.h"
#include "machine/upd765.h"
#include "machine/z80dart.h"
-#include "epson_sio.h"
//**************************************************************************
@@ -84,7 +84,7 @@ private:
// device type definition
-extern const device_type EPSON_TF20;
+DECLARE_DEVICE_TYPE(EPSON_TF20, epson_tf20_device)
-#endif // __TF20_H__
+#endif // MAME_BUS_EPSON_SIO_TF20_H
diff --git a/src/devices/bus/gameboy/gb_slot.cpp b/src/devices/bus/gameboy/gb_slot.cpp
index 592ab91a507..5e767119e80 100644
--- a/src/devices/bus/gameboy/gb_slot.cpp
+++ b/src/devices/bus/gameboy/gb_slot.cpp
@@ -25,8 +25,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type GB_CART_SLOT = device_creator<gb_cart_slot_device>;
-const device_type MEGADUCK_CART_SLOT = device_creator<megaduck_cart_slot_device>;
+DEFINE_DEVICE_TYPE(GB_CART_SLOT, gb_cart_slot_device, "gb_cart_slot", "Game Boy Cartridge Slot")
+DEFINE_DEVICE_TYPE(MEGADUCK_CART_SLOT, megaduck_cart_slot_device, "megaduck_cart_slot", "Megaduck Cartridge Slot")
//**************************************************************************
// GB cartridges Interface
@@ -135,32 +135,33 @@ void device_gb_cart_interface::ram_map_setup(uint8_t banks)
//**************************************************************************
//-------------------------------------------------
-// base_gb_cart_slot_device - constructor
+// gb_cart_slot_device_base - constructor
//-------------------------------------------------
-base_gb_cart_slot_device::base_gb_cart_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_sgb_hack(0),
- m_type(GB_MBC_UNKNOWN), m_cart(nullptr)
+gb_cart_slot_device_base::gb_cart_slot_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_sgb_hack(0),
+ m_type(GB_MBC_UNKNOWN),
+ m_cart(nullptr)
{
}
gb_cart_slot_device::gb_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- base_gb_cart_slot_device(mconfig, GB_CART_SLOT, "Game Boy Cartridge Slot", tag, owner, clock, "gb_cart_slot", __FILE__)
+ gb_cart_slot_device_base(mconfig, GB_CART_SLOT, tag, owner, clock)
{
}
megaduck_cart_slot_device::megaduck_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- base_gb_cart_slot_device(mconfig, MEGADUCK_CART_SLOT, "Megaduck Cartridge Slot", tag, owner, clock, "megaduck_cart_slot", __FILE__)
+ gb_cart_slot_device_base(mconfig, MEGADUCK_CART_SLOT, tag, owner, clock)
{
}
//-------------------------------------------------
-// base_gb_cart_slot_device - destructor
+// gb_cart_slot_device_base - destructor
//-------------------------------------------------
-base_gb_cart_slot_device::~base_gb_cart_slot_device()
+gb_cart_slot_device_base::~gb_cart_slot_device_base()
{
}
@@ -168,7 +169,7 @@ base_gb_cart_slot_device::~base_gb_cart_slot_device()
// device_start - device-specific startup
//-------------------------------------------------
-void base_gb_cart_slot_device::device_start()
+void gb_cart_slot_device_base::device_start()
{
m_cart = dynamic_cast<device_gb_cart_interface *>(get_card_device());
}
@@ -246,7 +247,7 @@ static const char *gb_get_slot(int type)
-------------------------------------------------*/
-image_init_result base_gb_cart_slot_device::call_load()
+image_init_result gb_cart_slot_device_base::call_load()
{
if (m_cart)
{
@@ -424,13 +425,13 @@ image_init_result megaduck_cart_slot_device::call_load()
call_unload
-------------------------------------------------*/
-void base_gb_cart_slot_device::call_unload()
+void gb_cart_slot_device_base::call_unload()
{
if (m_cart && m_cart->get_ram_base() && m_cart->get_ram_size() && m_cart->get_has_battery())
battery_save(m_cart->get_ram_base(), m_cart->get_ram_size());
}
-void base_gb_cart_slot_device::setup_ram(uint8_t banks)
+void gb_cart_slot_device_base::setup_ram(uint8_t banks)
{
m_cart->ram_alloc(banks * 0x2000);
memset(m_cart->get_ram_base(), 0xff, m_cart->get_ram_size());
@@ -440,7 +441,7 @@ void base_gb_cart_slot_device::setup_ram(uint8_t banks)
// This fails to catch Mani 4-in-1 carts... even when they match this, then they have MBC1/3 in the internal header instead of MMM01...
-bool base_gb_cart_slot_device::get_mmm01_candidate(const uint8_t *ROM, uint32_t len)
+bool gb_cart_slot_device_base::get_mmm01_candidate(const uint8_t *ROM, uint32_t len)
{
if (len < 0x8147)
return false;
@@ -463,7 +464,7 @@ bool base_gb_cart_slot_device::get_mmm01_candidate(const uint8_t *ROM, uint32_t
return false;
}
-int base_gb_cart_slot_device::get_cart_type(const uint8_t *ROM, uint32_t len)
+int gb_cart_slot_device_base::get_cart_type(const uint8_t *ROM, uint32_t len)
{
int type = GB_MBC_NONE;
@@ -579,7 +580,7 @@ int base_gb_cart_slot_device::get_cart_type(const uint8_t *ROM, uint32_t len)
get default card software
-------------------------------------------------*/
-std::string base_gb_cart_slot_device::get_default_card_software(get_default_card_software_hook &hook) const
+std::string gb_cart_slot_device_base::get_default_card_software(get_default_card_software_hook &hook) const
{
if (hook.image_file())
{
@@ -622,7 +623,7 @@ std::string megaduck_cart_slot_device::get_default_card_software(get_default_car
read
-------------------------------------------------*/
-READ8_MEMBER(base_gb_cart_slot_device::read_rom)
+READ8_MEMBER(gb_cart_slot_device_base::read_rom)
{
if (m_cart)
return m_cart->read_rom(space, offset);
@@ -630,7 +631,7 @@ READ8_MEMBER(base_gb_cart_slot_device::read_rom)
return 0xff;
}
-READ8_MEMBER(base_gb_cart_slot_device::read_ram)
+READ8_MEMBER(gb_cart_slot_device_base::read_ram)
{
if (m_cart)
return m_cart->read_ram(space, offset);
@@ -643,13 +644,13 @@ READ8_MEMBER(base_gb_cart_slot_device::read_ram)
write
-------------------------------------------------*/
-WRITE8_MEMBER(base_gb_cart_slot_device::write_bank)
+WRITE8_MEMBER(gb_cart_slot_device_base::write_bank)
{
if (m_cart)
m_cart->write_bank(space, offset, data);
}
-WRITE8_MEMBER(base_gb_cart_slot_device::write_ram)
+WRITE8_MEMBER(gb_cart_slot_device_base::write_ram)
{
if (m_cart)
m_cart->write_ram(space, offset, data);
@@ -660,7 +661,7 @@ WRITE8_MEMBER(base_gb_cart_slot_device::write_ram)
Internal header logging
-------------------------------------------------*/
-void base_gb_cart_slot_device::internal_header_logging(uint8_t *ROM, uint32_t len)
+void gb_cart_slot_device_base::internal_header_logging(uint8_t *ROM, uint32_t len)
{
static const char *const cart_types[] =
{
diff --git a/src/devices/bus/gameboy/gb_slot.h b/src/devices/bus/gameboy/gb_slot.h
index 9ac41618f82..f3198f8e20c 100644
--- a/src/devices/bus/gameboy/gb_slot.h
+++ b/src/devices/bus/gameboy/gb_slot.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli, Wilbert Pol
-#ifndef __GB_SLOT_H
-#define __GB_SLOT_H
+#ifndef MAME_BUS_GAMEBOY_GB_SLOT_H
+#define MAME_BUS_GAMEBOY_GB_SLOT_H
#include "softlist_dev.h"
@@ -55,7 +55,6 @@ class device_gb_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_gb_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_gb_cart_interface();
// reading and writing
@@ -82,6 +81,9 @@ public:
void save_ram() { device().save_item(NAME(m_ram)); }
+protected:
+ device_gb_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -103,16 +105,15 @@ public:
};
-// ======================> base_gb_cart_slot_device
+// ======================> gb_cart_slot_device_base
-class base_gb_cart_slot_device : public device_t,
+class gb_cart_slot_device_base : public device_t,
public device_image_interface,
public device_slot_interface
{
public:
// construction/destruction
- base_gb_cart_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- virtual ~base_gb_cart_slot_device();
+ virtual ~gb_cart_slot_device_base();
// device-level overrides
virtual void device_start() override;
@@ -152,6 +153,8 @@ public:
protected:
+ gb_cart_slot_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// Donkey Kong Land 2 + 3 store SGB border tiles differently... this will be hopefully be removed when SGB is properly emulated!
int m_sgb_hack;
@@ -161,7 +164,7 @@ protected:
// ======================> gb_cart_slot_device
-class gb_cart_slot_device : public base_gb_cart_slot_device
+class gb_cart_slot_device : public gb_cart_slot_device_base
{
public:
// construction/destruction
@@ -171,7 +174,7 @@ public:
// ======================> megaduck_cart_slot_device
-class megaduck_cart_slot_device : public base_gb_cart_slot_device
+class megaduck_cart_slot_device : public gb_cart_slot_device_base
{
public:
// construction/destruction
@@ -190,8 +193,8 @@ public:
// device type definition
-extern const device_type GB_CART_SLOT;
-extern const device_type MEGADUCK_CART_SLOT;
+DECLARE_DEVICE_TYPE(GB_CART_SLOT, gb_cart_slot_device)
+DECLARE_DEVICE_TYPE(MEGADUCK_CART_SLOT, megaduck_cart_slot_device)
/***************************************************************************
@@ -209,4 +212,4 @@ extern const device_type MEGADUCK_CART_SLOT;
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+#endif // MAME_BUS_GAMEBOY_GB_SLOT_H
diff --git a/src/devices/bus/gameboy/mbc.cpp b/src/devices/bus/gameboy/mbc.cpp
index 6aba03a2124..5bcc83377f3 100644
--- a/src/devices/bus/gameboy/mbc.cpp
+++ b/src/devices/bus/gameboy/mbc.cpp
@@ -18,133 +18,133 @@
// gb_rom_mbc*_device - constructor
//-------------------------------------------------
-const device_type GB_ROM_MBC1 = device_creator<gb_rom_mbc1_device>;
-const device_type GB_ROM_MBC2 = device_creator<gb_rom_mbc2_device>;
-const device_type GB_ROM_MBC3 = device_creator<gb_rom_mbc3_device>;
-const device_type GB_ROM_MBC5 = device_creator<gb_rom_mbc5_device>;
-const device_type GB_ROM_MBC6 = device_creator<gb_rom_mbc6_device>;
-const device_type GB_ROM_MBC7 = device_creator<gb_rom_mbc7_device>;
-const device_type GB_ROM_M161 = device_creator<gb_rom_m161_device>;
-const device_type GB_ROM_MMM01 = device_creator<gb_rom_mmm01_device>;
-const device_type GB_ROM_SACHEN1 = device_creator<gb_rom_sachen_mmc1_device>;
-const device_type GB_ROM_SACHEN2 = device_creator<gb_rom_sachen_mmc2_device>;
-const device_type GB_ROM_188IN1 = device_creator<gb_rom_188in1_device>;
-const device_type GB_ROM_SINTAX = device_creator<gb_rom_sintax_device>;
-const device_type GB_ROM_CHONGWU = device_creator<gb_rom_chongwu_device>;
-const device_type GB_ROM_LICHENG = device_creator<gb_rom_licheng_device>;
-const device_type GB_ROM_DIGIMON = device_creator<gb_rom_digimon_device>;
-const device_type GB_ROM_ROCKMAN8 = device_creator<gb_rom_rockman8_device>;
-const device_type GB_ROM_SM3SP = device_creator<gb_rom_sm3sp_device>;
-
-
-gb_rom_mbc_device::gb_rom_mbc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_gb_cart_interface( mconfig, *this ), m_ram_enable(0)
- {
-}
-
-gb_rom_mbc1_device::gb_rom_mbc1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : gb_rom_mbc_device(mconfig, type, name, tag, owner, clock, shortname, source), m_mode(MODE_16M_64k),
- m_mask(0x1f),
- m_shift(0)
+DEFINE_DEVICE_TYPE(GB_ROM_MBC1, gb_rom_mbc1_device, "gb_rom_mbc1", "GB MBC1 Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_MBC2, gb_rom_mbc2_device, "gb_rom_mbc2", "GB MBC2 Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_MBC3, gb_rom_mbc3_device, "gb_rom_mbc3", "GB MBC3 Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_MBC5, gb_rom_mbc5_device, "gb_rom_mbc5", "GB MBC5 Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_MBC6, gb_rom_mbc6_device, "gb_rom_mbc6", "GB MBC6 Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_MBC7, gb_rom_mbc7_device, "gb_rom_mbc7", "GB MBC7 Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_M161, gb_rom_m161_device, "gb_rom_m161", "GB M161 Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_MMM01, gb_rom_mmm01_device, "gb_rom_mmm01", "GB MMM01 Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_SACHEN1, gb_rom_sachen_mmc1_device, "gb_rom_sachen1", "GB Sachen MMC1 Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_SACHEN2, gb_rom_sachen_mmc2_device, "gb_rom_sachen2", "GB Sachen MMC2 Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_188IN1, gb_rom_188in1_device, "gb_rom_188in1", "GB 188in1")
+DEFINE_DEVICE_TYPE(GB_ROM_SINTAX, gb_rom_sintax_device, "gb_rom_sintax", "GB MBC5 Sintax Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_CHONGWU, gb_rom_chongwu_device, "gb_rom_chongwu", "GB Chong Wu Xiao Jing Ling")
+DEFINE_DEVICE_TYPE(GB_ROM_LICHENG, gb_rom_licheng_device, "gb_rom_licheng", "GB MBC5 Li Cheng Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_DIGIMON, gb_rom_digimon_device, "gb_rom_digimon", "GB Digimon")
+DEFINE_DEVICE_TYPE(GB_ROM_ROCKMAN8, gb_rom_rockman8_device, "gb_rom_rockman8", "GB MBC1 Rockman 8")
+DEFINE_DEVICE_TYPE(GB_ROM_SM3SP, gb_rom_sm3sp_device, "gb_sm3sp", "GB MBC1 Super Mario 3 Special")
+
+
+gb_rom_mbc_device::gb_rom_mbc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_gb_cart_interface(mconfig, *this)
+ , m_ram_enable(0)
+{
+}
+
+gb_rom_mbc1_device::gb_rom_mbc1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : gb_rom_mbc_device(mconfig, type, tag, owner, clock)
+ , m_mode(MODE_16M_64k)
+ , m_mask(0x1f)
+ , m_shift(0)
{
}
gb_rom_mbc1_device::gb_rom_mbc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_MBC1, "GB MBC1 Carts", tag, owner, clock, "gb_rom_mbc1", __FILE__), m_mode(MODE_16M_64k),
- m_mask(0x1f),
- m_shift(0)
+ : gb_rom_mbc1_device(mconfig, GB_ROM_MBC1, tag, owner, clock)
{
}
gb_rom_mbc2_device::gb_rom_mbc2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_MBC2, "GB MBC2 Carts", tag, owner, clock, "gb_rom_mbc2", __FILE__)
+ : gb_rom_mbc_device(mconfig, GB_ROM_MBC2, tag, owner, clock)
{
}
gb_rom_mbc3_device::gb_rom_mbc3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_MBC3, "GB MBC3 Carts", tag, owner, clock, "gb_rom_mbc3", __FILE__)
+ : gb_rom_mbc_device(mconfig, GB_ROM_MBC3, tag, owner, clock)
{
}
-gb_rom_mbc5_device::gb_rom_mbc5_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : gb_rom_mbc_device(mconfig, type, name, tag, owner, clock, shortname, source)
+gb_rom_mbc5_device::gb_rom_mbc5_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : gb_rom_mbc_device(mconfig, type, tag, owner, clock)
{
}
gb_rom_mbc5_device::gb_rom_mbc5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_MBC5, "GB MBC5 Carts", tag, owner, clock, "gb_rom_mbc5", __FILE__)
+ : gb_rom_mbc5_device(mconfig, GB_ROM_MBC5, tag, owner, clock)
{
}
gb_rom_mbc6_device::gb_rom_mbc6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_MBC6, "GB MBC6 Carts", tag, owner, clock, "gb_rom_mbc6", __FILE__), m_latch1(0), m_latch2(0), m_bank_4000(0), m_bank_6000(0)
- {
+ : gb_rom_mbc_device(mconfig, GB_ROM_MBC6, tag, owner, clock), m_latch1(0), m_latch2(0), m_bank_4000(0), m_bank_6000(0)
+{
}
gb_rom_mbc7_device::gb_rom_mbc7_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_MBC7, "GB MBC7 Carts", tag, owner, clock, "gb_rom_mbc7", __FILE__)
+ : gb_rom_mbc_device(mconfig, GB_ROM_MBC7, tag, owner, clock)
{
}
gb_rom_m161_device::gb_rom_m161_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_M161, "GB M161 Carts", tag, owner, clock, "gb_rom_m161", __FILE__), m_base_bank(0), m_load_disable(0)
- {
+ : gb_rom_mbc_device(mconfig, GB_ROM_M161, tag, owner, clock), m_base_bank(0), m_load_disable(0)
+{
}
gb_rom_mmm01_device::gb_rom_mmm01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_MMM01, "GB MMM01 Carts", tag, owner, clock, "gb_rom_mmm01", __FILE__), m_romb(0), m_romb_nwe(0), m_ramb(0), m_ramb_nwe(0), m_mode(0), m_mode_nwe(0), m_map(0), m_mux(0)
- {
+ : gb_rom_mbc_device(mconfig, GB_ROM_MMM01, tag, owner, clock), m_romb(0), m_romb_nwe(0), m_ramb(0), m_ramb_nwe(0), m_mode(0), m_mode_nwe(0), m_map(0), m_mux(0)
+{
}
gb_rom_sachen_mmc1_device::gb_rom_sachen_mmc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_SACHEN1, "GB Sachen MMC1 Carts", tag, owner, clock, "gb_rom_sachen1", __FILE__), m_base_bank(0), m_mask(0), m_mode(0), m_unlock_cnt(0)
- {
+ : gb_rom_sachen_mmc1_device(mconfig, GB_ROM_SACHEN1, tag, owner, clock)
+{
}
-gb_rom_sachen_mmc1_device::gb_rom_sachen_mmc1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : gb_rom_mbc_device(mconfig, type, name, tag, owner, clock, shortname, source), m_base_bank(0), m_mask(0), m_mode(0), m_unlock_cnt(0)
- {
+gb_rom_sachen_mmc1_device::gb_rom_sachen_mmc1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : gb_rom_mbc_device(mconfig, type, tag, owner, clock), m_base_bank(0), m_mask(0), m_mode(0), m_unlock_cnt(0)
+{
}
gb_rom_sachen_mmc2_device::gb_rom_sachen_mmc2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_sachen_mmc1_device(mconfig, GB_ROM_SACHEN2, "GB Sachen MMC2 Carts", tag, owner, clock, "gb_rom_sachen2", __FILE__)
+ : gb_rom_sachen_mmc1_device(mconfig, GB_ROM_SACHEN2, tag, owner, clock)
{
}
gb_rom_188in1_device::gb_rom_188in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc1_device(mconfig, GB_ROM_188IN1, "GB 188in1", tag, owner, clock, "gb_rom_188in1", __FILE__), m_game_base(0)
- {
+ : gb_rom_mbc1_device(mconfig, GB_ROM_188IN1, tag, owner, clock), m_game_base(0)
+{
}
gb_rom_sintax_device::gb_rom_sintax_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_SINTAX, "GB MBC5 Sintax Carts", tag, owner, clock, "gb_rom_sintax", __FILE__), m_bank_mask(0), m_bank(0), m_reg(0), m_currentxor(0), m_xor2(0), m_xor3(0), m_xor4(0), m_xor5(0), m_sintax_mode(0)
- {
+ : gb_rom_mbc_device(mconfig, GB_ROM_SINTAX, tag, owner, clock), m_bank_mask(0), m_bank(0), m_reg(0), m_currentxor(0), m_xor2(0), m_xor3(0), m_xor4(0), m_xor5(0), m_sintax_mode(0)
+{
}
gb_rom_chongwu_device::gb_rom_chongwu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc5_device(mconfig, GB_ROM_CHONGWU, "GB Chong Wu Xiao Jing Ling", tag, owner, clock, "gb_rom_chongwu", __FILE__), m_protection_checked(0)
- {
+ : gb_rom_mbc5_device(mconfig, GB_ROM_CHONGWU, tag, owner, clock), m_protection_checked(0)
+{
}
gb_rom_licheng_device::gb_rom_licheng_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc5_device(mconfig, GB_ROM_LICHENG, "GB MBC5 Li Cheng Carts", tag, owner, clock, "gb_rom_licheng", __FILE__)
+ : gb_rom_mbc5_device(mconfig, GB_ROM_LICHENG, tag, owner, clock)
{
}
gb_rom_digimon_device::gb_rom_digimon_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc5_device(mconfig, GB_ROM_DIGIMON, "GB Digimon", tag, owner, clock, "gb_rom_digimon", __FILE__)
+ : gb_rom_mbc5_device(mconfig, GB_ROM_DIGIMON, tag, owner, clock)
{
}
gb_rom_rockman8_device::gb_rom_rockman8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_ROCKMAN8, "GB MBC1 Rockman 8", tag, owner, clock, "gb_rom_rockman8", __FILE__), m_bank_mask(0), m_bank(0), m_reg(0)
- {
+ : gb_rom_mbc_device(mconfig, GB_ROM_ROCKMAN8, tag, owner, clock), m_bank_mask(0), m_bank(0), m_reg(0)
+{
}
gb_rom_sm3sp_device::gb_rom_sm3sp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_mbc_device(mconfig, GB_ROM_SM3SP, "GB MBC1 Super Mario 3 Special", tag, owner, clock, "gb_rom_sm3sp", __FILE__), m_bank_mask(0), m_bank(0), m_reg(0), m_mode(0)
- {
+ : gb_rom_mbc_device(mconfig, GB_ROM_SM3SP, tag, owner, clock), m_bank_mask(0), m_bank(0), m_reg(0), m_mode(0)
+{
}
diff --git a/src/devices/bus/gameboy/mbc.h b/src/devices/bus/gameboy/mbc.h
index 4a9b49bd52e..a99f859639b 100644
--- a/src/devices/bus/gameboy/mbc.h
+++ b/src/devices/bus/gameboy/mbc.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli, Wilbert Pol
-#ifndef __GB_MBC_H
-#define __GB_MBC_H
+#ifndef MAME_BUS_GAMEBOY_MBC_H
+#define MAME_BUS_GAMEBOY_MBC_H
#include "gb_slot.h"
@@ -12,21 +12,22 @@ class gb_rom_mbc_device : public device_t,
public device_gb_cart_interface
{
public:
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom) override;
+ virtual DECLARE_READ8_MEMBER(read_ram) override;
+ virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
// construction/destruction
- gb_rom_mbc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ gb_rom_mbc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
void shared_start();
void shared_reset();
- // reading and writing
- virtual DECLARE_READ8_MEMBER(read_rom) override;
- virtual DECLARE_READ8_MEMBER(read_ram) override;
- virtual DECLARE_WRITE8_MEMBER(write_ram) override;
-
uint8_t m_ram_enable;
};
@@ -36,25 +37,27 @@ class gb_rom_mbc1_device : public gb_rom_mbc_device
{
public:
+ // construction/destruction
+ gb_rom_mbc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual DECLARE_READ8_MEMBER(read_rom) override;
+ virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+ virtual DECLARE_READ8_MEMBER(read_ram) override;
+ virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
enum {
MODE_16M_64k = 0, /// 16Mbit ROM, 64kBit RAM
MODE_4M_256k = 1 /// 4Mbit ROM, 256kBit RAM
};
- // construction/destruction
- gb_rom_mbc1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- gb_rom_mbc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ gb_rom_mbc1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override { shared_start(); save_item(NAME(m_mode)); };
- virtual void device_reset() override { shared_reset(); m_mode = MODE_16M_64k; };
+ virtual void device_start() override { shared_start(); save_item(NAME(m_mode)); }
+ virtual void device_reset() override { shared_reset(); m_mode = MODE_16M_64k; }
virtual void set_additional_wirings(uint8_t mask, int shift) override { m_mask = mask; m_shift = shift; } // these get set at cart loading
- virtual DECLARE_READ8_MEMBER(read_rom) override;
- virtual DECLARE_WRITE8_MEMBER(write_bank) override;
- virtual DECLARE_READ8_MEMBER(read_ram) override;
- virtual DECLARE_WRITE8_MEMBER(write_ram) override;
-
uint8_t m_mode, m_mask;
int m_shift;
};
@@ -67,14 +70,15 @@ public:
// construction/destruction
gb_rom_mbc2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
};
// ======================> gb_rom_mbc3_device
@@ -85,15 +89,16 @@ public:
// construction/destruction
gb_rom_mbc3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
void update_rtc();
uint8_t m_rtc_regs[5];
@@ -106,17 +111,19 @@ class gb_rom_mbc5_device : public gb_rom_mbc_device
{
public:
// construction/destruction
- gb_rom_mbc5_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
gb_rom_mbc5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
+ gb_rom_mbc5_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
};
// ======================> gb_rom_mbc6_device
@@ -127,14 +134,16 @@ public:
// construction/destruction
gb_rom_mbc6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint16_t m_latch1, m_latch2;
uint8_t m_bank_4000, m_bank_6000;
};
@@ -147,14 +156,15 @@ public:
// construction/destruction
gb_rom_mbc7_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
};
// ======================> gb_rom_m161_device
@@ -162,19 +172,19 @@ public:
class gb_rom_m161_device : public gb_rom_mbc_device
{
public:
-
// construction/destruction
gb_rom_m161_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override { return 0xff; }
virtual DECLARE_WRITE8_MEMBER(write_ram) override { }
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_base_bank;
uint8_t m_load_disable;
};
@@ -186,16 +196,17 @@ public:
// construction/destruction
gb_rom_mmm01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint16_t m_romb;
uint8_t m_romb_nwe;
uint8_t m_ramb;
@@ -211,25 +222,26 @@ public:
class gb_rom_sachen_mmc1_device : public gb_rom_mbc_device
{
public:
+ // construction/destruction
+ gb_rom_sachen_mmc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual DECLARE_READ8_MEMBER(read_rom) override;
+ virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+ virtual DECLARE_READ8_MEMBER(read_ram) override { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER(write_ram) override { }
+
+protected:
enum {
MODE_LOCKED,
MODE_UNLOCKED
};
- // construction/destruction
- gb_rom_sachen_mmc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- gb_rom_sachen_mmc1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ gb_rom_sachen_mmc1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual DECLARE_READ8_MEMBER(read_rom) override;
- virtual DECLARE_WRITE8_MEMBER(write_bank) override;
- virtual DECLARE_READ8_MEMBER(read_ram) override { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write_ram) override { }
-
uint8_t m_base_bank, m_mask, m_mode, m_unlock_cnt;
};
@@ -238,24 +250,23 @@ public:
class gb_rom_sachen_mmc2_device : public gb_rom_sachen_mmc1_device
{
public:
+ // construction/destruction
+ gb_rom_sachen_mmc2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual DECLARE_READ8_MEMBER(read_rom) override;
+ virtual DECLARE_READ8_MEMBER(read_ram) override;
+ virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+protected:
enum {
MODE_LOCKED_DMG,
MODE_LOCKED_CGB,
MODE_UNLOCKED
};
- // construction/destruction
- gb_rom_sachen_mmc2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-
- virtual DECLARE_READ8_MEMBER(read_rom) override;
- virtual DECLARE_READ8_MEMBER(read_ram) override;
- virtual DECLARE_WRITE8_MEMBER(write_ram) override;
-
};
// ======================> gb_rom_188in1_device
@@ -265,14 +276,15 @@ public:
// construction/destruction
gb_rom_188in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); save_item(NAME(m_game_base)); };
- virtual void device_reset() override { shared_reset(); m_game_base = 0; };
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override { shared_start(); save_item(NAME(m_game_base)); }
+ virtual void device_reset() override { shared_reset(); m_game_base = 0; }
+
private:
uint32_t m_game_base;
};
@@ -284,16 +296,18 @@ public:
// construction/destruction
gb_rom_sintax_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- void set_xor_for_bank(uint8_t bank);
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ void set_xor_for_bank(uint8_t bank);
+
uint8_t m_bank_mask, m_bank, m_reg;
uint8_t m_currentxor, m_xor2, m_xor3, m_xor4, m_xor5, m_sintax_mode;
@@ -307,11 +321,13 @@ public:
// construction/destruction
gb_rom_chongwu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual DECLARE_READ8_MEMBER(read_rom) override;
+
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual DECLARE_READ8_MEMBER(read_rom) override;
uint8_t m_protection_checked;
};
@@ -334,13 +350,14 @@ public:
// construction/destruction
gb_rom_digimon_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
};
@@ -351,15 +368,17 @@ public:
// construction/destruction
gb_rom_rockman8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
+
uint8_t m_bank_mask, m_bank, m_reg;
};
@@ -370,39 +389,39 @@ public:
// construction/destruction
gb_rom_sm3sp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
+
uint8_t m_bank_mask, m_bank, m_reg, m_mode;
};
// device type definition
-extern const device_type GB_ROM_MBC1;
-extern const device_type GB_ROM_MBC1_COL;
-extern const device_type GB_ROM_MBC2;
-extern const device_type GB_ROM_MBC3;
-extern const device_type GB_ROM_MBC4;
-extern const device_type GB_ROM_MBC5;
-extern const device_type GB_ROM_MBC6;
-extern const device_type GB_ROM_MBC7;
-extern const device_type GB_ROM_M161;
-extern const device_type GB_ROM_MMM01;
-extern const device_type GB_ROM_SACHEN1;
-extern const device_type GB_ROM_SACHEN2;
-extern const device_type GB_ROM_188IN1;
-extern const device_type GB_ROM_SINTAX;
-extern const device_type GB_ROM_CHONGWU;
-extern const device_type GB_ROM_LICHENG;
-extern const device_type GB_ROM_DIGIMON;
-extern const device_type GB_ROM_ROCKMAN8;
-extern const device_type GB_ROM_SM3SP;
-
-#endif
+DECLARE_DEVICE_TYPE(GB_ROM_MBC1, gb_rom_mbc1_device)
+DECLARE_DEVICE_TYPE(GB_ROM_MBC2, gb_rom_mbc2_device)
+DECLARE_DEVICE_TYPE(GB_ROM_MBC3, gb_rom_mbc3_device)
+DECLARE_DEVICE_TYPE(GB_ROM_MBC5, gb_rom_mbc5_device)
+DECLARE_DEVICE_TYPE(GB_ROM_MBC6, gb_rom_mbc6_device)
+DECLARE_DEVICE_TYPE(GB_ROM_MBC7, gb_rom_mbc7_device)
+DECLARE_DEVICE_TYPE(GB_ROM_M161, gb_rom_m161_device)
+DECLARE_DEVICE_TYPE(GB_ROM_MMM01, gb_rom_mmm01_device)
+DECLARE_DEVICE_TYPE(GB_ROM_SACHEN1, gb_rom_sachen_mmc1_device)
+DECLARE_DEVICE_TYPE(GB_ROM_SACHEN2, gb_rom_sachen_mmc2_device)
+DECLARE_DEVICE_TYPE(GB_ROM_188IN1, gb_rom_188in1_device)
+DECLARE_DEVICE_TYPE(GB_ROM_SINTAX, gb_rom_sintax_device)
+DECLARE_DEVICE_TYPE(GB_ROM_CHONGWU, gb_rom_chongwu_device)
+DECLARE_DEVICE_TYPE(GB_ROM_LICHENG, gb_rom_licheng_device)
+DECLARE_DEVICE_TYPE(GB_ROM_DIGIMON, gb_rom_digimon_device)
+DECLARE_DEVICE_TYPE(GB_ROM_ROCKMAN8, gb_rom_rockman8_device)
+DECLARE_DEVICE_TYPE(GB_ROM_SM3SP, gb_rom_sm3sp_device)
+
+#endif // MAME_BUS_GAMEBOY_MBC_H
diff --git a/src/devices/bus/gameboy/rom.cpp b/src/devices/bus/gameboy/rom.cpp
index f06164426ef..1d907d8db37 100644
--- a/src/devices/bus/gameboy/rom.cpp
+++ b/src/devices/bus/gameboy/rom.cpp
@@ -19,63 +19,61 @@
// gb_rom_device - constructor
//-------------------------------------------------
-const device_type GB_STD_ROM = device_creator<gb_rom_device>;
-const device_type GB_ROM_TAMA5 = device_creator<gb_rom_tama5_device>;
-const device_type GB_ROM_WISDOM = device_creator<gb_rom_wisdom_device>;
-const device_type GB_ROM_YONG = device_creator<gb_rom_yong_device>;
-const device_type GB_ROM_ATVRAC = device_creator<gb_rom_atvrac_device>;
-const device_type GB_ROM_LASAMA = device_creator<gb_rom_lasama_device>;
+DEFINE_DEVICE_TYPE(GB_STD_ROM, gb_rom_device, "gb_rom", "GB Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_TAMA5, gb_rom_tama5_device, "gb_rom_tama5", "GB Tamagotchi")
+DEFINE_DEVICE_TYPE(GB_ROM_WISDOM, gb_rom_wisdom_device, "gb_rom_wisdom", "GB Wisdom Tree Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_YONG, gb_rom_yong_device, "gb_rom_yong", "GB Young Yong Carts")
+DEFINE_DEVICE_TYPE(GB_ROM_ATVRAC, gb_rom_atvrac_device, "gb_rom_atvrac", "GB ATV Racin'")
+DEFINE_DEVICE_TYPE(GB_ROM_LASAMA, gb_rom_lasama_device, "gb_rom_lasama", "GB LaSaMa")
-const device_type MEGADUCK_ROM = device_creator<megaduck_rom_device>;
+DEFINE_DEVICE_TYPE(MEGADUCK_ROM, megaduck_rom_device, "megaduck_rom", "MegaDuck Carts")
-gb_rom_device::gb_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_gb_cart_interface( mconfig, *this )
+gb_rom_device::gb_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_gb_cart_interface(mconfig, *this)
{
}
gb_rom_device::gb_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, GB_STD_ROM, "GB Carts", tag, owner, clock, "gb_rom", __FILE__),
- device_gb_cart_interface( mconfig, *this )
+ : gb_rom_device(mconfig, GB_STD_ROM, tag, owner, clock)
{
}
gb_rom_tama5_device::gb_rom_tama5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_device(mconfig, GB_ROM_TAMA5, "GB Tamagotchi", tag, owner, clock, "gb_rom_tama5", __FILE__), m_tama5_data(0), m_tama5_addr(0), m_tama5_cmd(0), m_rtc_reg(0)
- {
+ : gb_rom_device(mconfig, GB_ROM_TAMA5, tag, owner, clock), m_tama5_data(0), m_tama5_addr(0), m_tama5_cmd(0), m_rtc_reg(0)
+{
}
gb_rom_wisdom_device::gb_rom_wisdom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_device(mconfig, GB_ROM_WISDOM, "GB Wisdom Tree Carts", tag, owner, clock, "gb_rom_wisdom", __FILE__)
+ : gb_rom_device(mconfig, GB_ROM_WISDOM, tag, owner, clock)
{
}
gb_rom_yong_device::gb_rom_yong_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_device(mconfig, GB_ROM_YONG, "GB Yong Yong Carts", tag, owner, clock, "gb_rom_yong", __FILE__)
+ : gb_rom_device(mconfig, GB_ROM_YONG, tag, owner, clock)
{
}
gb_rom_atvrac_device::gb_rom_atvrac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_device(mconfig, GB_ROM_ATVRAC, "GB ATV Racin'", tag, owner, clock, "gb_rom_atvrac", __FILE__)
+ : gb_rom_device(mconfig, GB_ROM_ATVRAC, tag, owner, clock)
{
}
gb_rom_lasama_device::gb_rom_lasama_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gb_rom_device(mconfig, GB_ROM_LASAMA, "GB LaSaMa", tag, owner, clock, "gb_rom_lasama", __FILE__)
+ : gb_rom_device(mconfig, GB_ROM_LASAMA, tag, owner, clock)
{
}
-megaduck_rom_device::megaduck_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_gb_cart_interface( mconfig, *this )
+megaduck_rom_device::megaduck_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_gb_cart_interface(mconfig, *this)
{
}
megaduck_rom_device::megaduck_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MEGADUCK_ROM, "MegaDuck Carts", tag, owner, clock, "megaduck_rom", __FILE__),
- device_gb_cart_interface( mconfig, *this )
+ : megaduck_rom_device(mconfig, MEGADUCK_ROM, tag, owner, clock)
{
}
diff --git a/src/devices/bus/gameboy/rom.h b/src/devices/bus/gameboy/rom.h
index 99a1602efa9..a5439fba598 100644
--- a/src/devices/bus/gameboy/rom.h
+++ b/src/devices/bus/gameboy/rom.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli, Wilbert Pol
-#ifndef __GB_ROM_H
-#define __GB_ROM_H
+#ifndef MAME_BUS_GAMEBOY_ROM_H
+#define MAME_BUS_GAMEBOY_ROM_H
#include "gb_slot.h"
@@ -13,20 +13,22 @@ class gb_rom_device : public device_t,
{
public:
// construction/destruction
- gb_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
gb_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
- void shared_start();
- void shared_reset();
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
+ gb_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
+
+ void shared_start();
+ void shared_reset();
};
// ======================> gb_rom_tama5_device
@@ -36,15 +38,16 @@ public:
// construction/destruction
gb_rom_tama5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint16_t m_tama5_data, m_tama5_addr, m_tama5_cmd;
uint8_t m_regs[32];
uint8_t m_rtc_reg;
@@ -57,13 +60,14 @@ public:
// construction/destruction
gb_rom_wisdom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
};
// ======================> gb_rom_yong_device
@@ -73,13 +77,14 @@ public:
// construction/destruction
gb_rom_yong_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
};
// ======================> gb_rom_atvrac_device
@@ -89,13 +94,14 @@ public:
// construction/destruction
gb_rom_atvrac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
};
// ======================> gb_rom_lasama_device
@@ -105,13 +111,14 @@ public:
// construction/destruction
gb_rom_lasama_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { shared_start(); };
- virtual void device_reset() override { shared_reset(); };
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override { shared_start(); }
+ virtual void device_reset() override { shared_reset(); }
};
@@ -121,27 +128,29 @@ class megaduck_rom_device :public device_t,
{
public:
// construction/destruction
- megaduck_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
megaduck_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
+ megaduck_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
};
// device type definition
-extern const device_type GB_STD_ROM;
-extern const device_type GB_ROM_TAMA5;
-extern const device_type GB_ROM_WISDOM;
-extern const device_type GB_ROM_YONG;
-extern const device_type GB_ROM_ATVRAC;
-extern const device_type GB_ROM_LASAMA;
+DECLARE_DEVICE_TYPE(GB_STD_ROM, gb_rom_device)
+DECLARE_DEVICE_TYPE(GB_ROM_TAMA5, gb_rom_tama5_device)
+DECLARE_DEVICE_TYPE(GB_ROM_WISDOM, gb_rom_wisdom_device)
+DECLARE_DEVICE_TYPE(GB_ROM_YONG, gb_rom_yong_device)
+DECLARE_DEVICE_TYPE(GB_ROM_ATVRAC, gb_rom_atvrac_device)
+DECLARE_DEVICE_TYPE(GB_ROM_LASAMA, gb_rom_lasama_device)
-extern const device_type MEGADUCK_ROM;
+DECLARE_DEVICE_TYPE(MEGADUCK_ROM, megaduck_rom_device)
-#endif
+#endif // MAME_BUS_GAMEBOY_ROM_H
diff --git a/src/devices/bus/gamegear/ggext.cpp b/src/devices/bus/gamegear/ggext.cpp
index 3be7f8a1080..4cdd0d59afc 100644
--- a/src/devices/bus/gamegear/ggext.cpp
+++ b/src/devices/bus/gamegear/ggext.cpp
@@ -18,7 +18,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type GG_EXT_PORT = device_creator<gg_ext_port_device>;
+DEFINE_DEVICE_TYPE(GG_EXT_PORT, gg_ext_port_device, "gg_ext_port", "Game Gear EXT Port")
@@ -56,10 +56,11 @@ device_gg_ext_port_interface::~device_gg_ext_port_interface()
//-------------------------------------------------
gg_ext_port_device::gg_ext_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, GG_EXT_PORT, "EXT Port", tag, owner, clock, "gg_ext_port", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr),
- m_th_pin_handler(*this),
- m_pixel_handler(*this)
+ device_t(mconfig, GG_EXT_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_device(nullptr),
+ m_th_pin_handler(*this),
+ m_pixel_handler(*this)
{
}
diff --git a/src/devices/bus/gamegear/ggext.h b/src/devices/bus/gamegear/ggext.h
index cdcbcb0dc00..64ac953b3f4 100644
--- a/src/devices/bus/gamegear/ggext.h
+++ b/src/devices/bus/gamegear/ggext.h
@@ -10,10 +10,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_GAMEGEAR_GGEXT_H
+#define MAME_BUS_GAMEGEAR_GGEXT_H
-#ifndef __GG_EXT_PORT__
-#define __GG_EXT_PORT__
+#pragma once
@@ -55,9 +55,9 @@ public:
virtual ~gg_ext_port_device();
// static configuration helpers
- template<class _Object> static devcb_base &set_th_input_handler(device_t &device, _Object object) { return downcast<gg_ext_port_device &>(device).m_th_pin_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_th_input_handler(device_t &device, Object &&cb) { return downcast<gg_ext_port_device &>(device).m_th_pin_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_pixel_handler(device_t &device, _Object object) { return downcast<gg_ext_port_device &>(device).m_pixel_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_pixel_handler(device_t &device, Object &&cb) { return downcast<gg_ext_port_device &>(device).m_pixel_handler.set_callback(std::forward<Object>(cb)); }
// Currently, only the support for SMS Controller Adaptor is emulated,
// for when SMS Compatibility mode is enabled. In that mode, the 10 pins
@@ -100,13 +100,14 @@ class device_gg_ext_port_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_gg_ext_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_gg_ext_port_interface();
- virtual uint8_t peripheral_r() { return 0xff; };
- virtual void peripheral_w(uint8_t data) { };
+ virtual uint8_t peripheral_r() { return 0xff; }
+ virtual void peripheral_w(uint8_t data) { }
protected:
+ device_gg_ext_port_interface(const machine_config &mconfig, device_t &device);
+
gg_ext_port_device *m_port;
};
@@ -118,4 +119,4 @@ extern const device_type GG_EXT_PORT;
SLOT_INTERFACE_EXTERN( gg_ext_port_devices );
-#endif
+#endif // MAME_BUS_GAMEGEAR_GGEXT_H
diff --git a/src/devices/bus/gamegear/smsctrladp.cpp b/src/devices/bus/gamegear/smsctrladp.cpp
index e829dd80e5e..cfa70510101 100644
--- a/src/devices/bus/gamegear/smsctrladp.cpp
+++ b/src/devices/bus/gamegear/smsctrladp.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SMS_CTRL_ADAPTOR = device_creator<sms_ctrl_adaptor_device>;
+DEFINE_DEVICE_TYPE(SMS_CTRL_ADAPTOR, sms_ctrl_adaptor_device, "sms_ctrl_adaptor", "SMS Controller Adaptor")
//**************************************************************************
@@ -28,7 +28,7 @@ const device_type SMS_CTRL_ADAPTOR = device_creator<sms_ctrl_adaptor_device>;
//-------------------------------------------------
sms_ctrl_adaptor_device::sms_ctrl_adaptor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_CTRL_ADAPTOR, "SMS Controller Adaptor", tag, owner, clock, "sms_ctrl_adaptor", __FILE__),
+ device_t(mconfig, SMS_CTRL_ADAPTOR, tag, owner, clock),
device_gg_ext_port_interface(mconfig, *this),
m_subctrl_port(*this, "ctrl")
{
@@ -41,7 +41,6 @@ sms_ctrl_adaptor_device::sms_ctrl_adaptor_device(const machine_config &mconfig,
void sms_ctrl_adaptor_device::device_start()
{
- m_subctrl_port->device_start();
}
diff --git a/src/devices/bus/gamegear/smsctrladp.h b/src/devices/bus/gamegear/smsctrladp.h
index 4a4b9958ef5..8d139eb0371 100644
--- a/src/devices/bus/gamegear/smsctrladp.h
+++ b/src/devices/bus/gamegear/smsctrladp.h
@@ -7,10 +7,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_GAMEGEAR_SMSCRTLADP_H
+#define MAME_BUS_GAMEGEAR_SMSCRTLADP_H
-#ifndef __SMS_CTRL_ADAPTOR__
-#define __SMS_CTRL_ADAPTOR__
+#pragma once
#include "ggext.h"
@@ -49,7 +49,7 @@ private:
// device type definition
-extern const device_type SMS_CTRL_ADAPTOR;
+DECLARE_DEVICE_TYPE(SMS_CTRL_ADAPTOR, sms_ctrl_adaptor_device)
-#endif
+#endif // MAME_BUS_GAMEGEAR_SMSCRTLADP_H
diff --git a/src/devices/bus/gba/gba_slot.cpp b/src/devices/bus/gba/gba_slot.cpp
index 9df15197487..07af56d800a 100644
--- a/src/devices/bus/gba/gba_slot.cpp
+++ b/src/devices/bus/gba/gba_slot.cpp
@@ -12,11 +12,463 @@
#include "emu.h"
#include "gba_slot.h"
+namespace {
+
+struct gba_chip_fix_conflict_item
+{
+ char game_code[5];
+ uint32_t chip;
+};
+
+const gba_chip_fix_conflict_item gba_chip_fix_conflict_list[] =
+{
+ { "ABFJ", GBA_CHIP_SRAM }, // 0059 - Breath of Fire - Ryuu no Senshi (JPN)
+ { "AHMJ", GBA_CHIP_EEPROM_4K }, // 0364 - Dai-Mahjong (JPN)
+ { "A2GJ", GBA_CHIP_EEPROM_64K }, // 0399 - Advance GT2 (JPN)
+ { "AK9E", GBA_CHIP_EEPROM_4K }, // 0479 - Medabots AX - Rokusho Version (USA)
+ { "AK8E", GBA_CHIP_EEPROM_4K }, // 0480 - Medabots AX - Metabee Version (USA)
+ { "AK9P", GBA_CHIP_EEPROM_4K }, // 0515 - Medabots AX - Rokusho Version (EUR)
+ { "AGIJ", GBA_CHIP_EEPROM_4K }, // 0548 - Medarot G - Kuwagata Version (JPN)
+ { "A3DJ", GBA_CHIP_EEPROM_4K }, // 0567 - Disney Sports - American Football (JPN)
+ { "AF7J", GBA_CHIP_EEPROM_64K }, // 0605 - Tokimeki Yume Series 1 - Ohanaya-san ni Narou! (JPN)
+ { "AH7J", GBA_CHIP_EEPROM_64K }, // 0617 - Nakayoshi Pet Advance Series 1 - Kawaii Hamster (JPN)
+ { "AGHJ", GBA_CHIP_EEPROM_4K }, // 0620 - Medarot G - Kabuto Version (JPN)
+ { "AR8E", GBA_CHIP_SRAM }, // 0727 - Rocky (USA)
+ { "ALUE", GBA_CHIP_EEPROM_4K }, // 0751 - Super Monkey Ball Jr. (USA)
+ { "A3DE", GBA_CHIP_EEPROM_4K }, // 0800 - Disney Sports - Football (USA)
+ { "A87J", GBA_CHIP_EEPROM_64K }, // 0817 - Ohanaya-San Monogatari GBA (JPN)
+ { "A56J", GBA_CHIP_EEPROM_64K }, // 0827 - DokiDoki Cooking Series 1 - Komugi-chan no Happy Cake (JPN)
+ { "AUSJ", GBA_CHIP_FLASH }, // 0906 - One Piece - Mezase! King of Berries (JPN)
+ { "ANTJ", GBA_CHIP_SRAM }, // 0950 - Nippon Pro Mahjong Renmei Kounin - Tetsuman Advance (JPN)
+ { "A8OJ", GBA_CHIP_EEPROM_64K }, // 0988 - DokiDoki Cooking Series 2 - Gourmet Kitchen - Suteki na Obentou (JPN)
+ { "AK8P", GBA_CHIP_EEPROM_4K }, // 1022 - Medabots AX - Metabee Version (EUR)
+ { "A6OJ", GBA_CHIP_EEPROM_64K }, // 1092 - Onimusha Tactics (JPN)
+ { "A6OE", GBA_CHIP_EEPROM_64K }, // 1241 - Onimusha Tactics (USA)
+ { "A6OP", GBA_CHIP_EEPROM_64K }, // 1288 - Onimusha Tactics (EUR)
+ { "BKME", GBA_CHIP_EEPROM_4K }, // 1545 - Kim Possible 2 - Drakken's Demise (USA)
+ { "BDKJ", GBA_CHIP_EEPROM_64K }, // 1555 - Digi Communication 2 in 1 Datou! Black Gemagema Dan (JPN)
+ { "BR4J", GBA_CHIP_FLASH }, // 1586 - Rockman EXE 4.5 - Real Operation (JPN)
+ { "BG8J", GBA_CHIP_EEPROM_64K }, // 1853 - Ganbare! Dodge Fighters (JPN)
+ { "AROP", GBA_CHIP_EEPROM_4K }, // 1862 - Rocky (EUR)
+// "A2YE" - 1906 - Top Gun - Combat Zones (USA) - multiple NVRAM chips detected, but none present (protection against emu?)
+ { "BKMJ", GBA_CHIP_EEPROM_4K }, // 2039 - Kim Possible (JPN)
+ { "BKEJ", GBA_CHIP_EEPROM_64K }, // 2047 - Konjiki no Gashbell - The Card Battle for GBA (JPN)
+ { "BKMP", GBA_CHIP_EEPROM_4K }, // 2297 - Kim Possible 2 - Drakken's Demise (EUR)
+ { "BUHJ", GBA_CHIP_EEPROM_4K }, // 2311 - Ueki no Housoku Shinki Sakuretsu! Nouryokumono Battle (JPN)
+ { "BYUJ", GBA_CHIP_EEPROM_64K }, // 2322 - Yggdra Union (JPN)
+};
+
+struct gba_chip_fix_item
+{
+ char game_code[5];
+};
+
+const gba_chip_fix_item gba_chip_fix_eeprom_list[] =
+{
+ // gba scan no. 7
+ { "AKTJ" }, // 0145 - Hello Kitty Collection - Miracle Fashion Maker (JPN)
+ { "AISP" }, // 0185 - International Superstar Soccer (EUR)
+ { "AKGP" }, // 0204 - Mech Platoon (EUR)
+ { "AX2E" }, // 0207 - Dave Mirra Freestyle BMX 2 (USA)
+ { "AASJ" }, // 0234 - World Advance Soccer - Shouri heno Michi (JPN)
+ { "AA2J" }, // 0237 - Super Mario World - Super Mario Advance 2 (JPN)
+ { "AJWJ" }, // 0242 - Jikkyou World Soccer Pocket (JPN)
+ { "AABE" }, // 0244 - American Bass Challenge (USA)
+ { "AWXJ" }, // 0254 - ESPN Winter X-Games Snowboarding 2002 (JPN)
+ { "AALJ" }, // 0259 - Kidou Tenshi Angelic Layer - Misaki to Yume no Tenshi-tachi (JPN)
+ { "AKGE" }, // 0263 - Mech Platoon (USA)
+ { "AGLJ" }, // 0273 - Tomato Adventure (JPN)
+ { "AWIJ" }, // 0274 - Hyper Sports 2002 Winter (JPN)
+ { "APNJ" }, // 0286 - Pinky Monkey Town (JPN)
+ { "AA2E" }, // 0288 - Super Mario World - Super Mario Advance 2 (USA)
+ { "AX2P" }, // 0293 - Dave Mirra Freestyle BMX 2 (EUR)
+ { "AMGP" }, // 0296 - ESPN Great Outdoor Games - Bass Tournament (EUR)
+ { "AMHJ" }, // 0308 - Bomberman Max 2 - Bomberman Version (JPN)
+ { "AGNJ" }, // 0311 - Goemon - New Age Shutsudou! (JPN)
+ { "AMYJ" }, // 0324 - Bomberman Max 2 - Max Version (JPN)
+ { "AT3E" }, // 0326 - Tony Hawk's Pro Skater 3 (USA)
+ { "AHHE" }, // 0327 - High Heat - Major League Baseball 2003 (USA)
+ { "ANLE" }, // 0328 - NHL 2002 (USA)
+ { "AAGJ" }, // 0345 - Angelique (JPN)
+ { "ABJP" }, // 0351 - Broken Sword - The Shadow of the Templars (EUR)
+ { "AKVJ" }, // 0357 - K-1 Pocket Grand Prix (JPN)
+ { "AKGJ" }, // 0361 - Kikaika Guntai - Mech Platoon (JPN)
+ { "ADDJ" }, // 0362 - Diadroids World - Evil Teikoku no Yabou (JPN)
+ { "ABJE" }, // 0365 - Broken Sword - The Shadow of the Templars (USA)
+ { "AABP" }, // 0380 - Super Black Bass Advance (EUR)
+ { "AA2P" }, // 0390 - Super Mario World - Super Mario Advance 2 (EUR)
+ { "A2GJ" }, // 0399 - Advance GT2 (JPN)
+ { "AEWJ" }, // 0400 - Ui-Ire - World Soccer Winning Eleven (JPN)
+ { "ADPJ" }, // 0417 - Doraemon - Dokodemo Walker (JPN)
+ { "AN5J" }, // 0420 - Kawa no Nushi Tsuri 5 - Fushigi no Mori Kara (JPN)
+ { "ACBJ" }, // 0421 - Gekitou! Car Battler Go!! (JPN)
+ { "AHIJ" }, // 0426 - Hitsuji no Kimochi (JPN)
+ { "ATFP" }, // 0429 - Alex Ferguson's Player Manager 2002 (EUR)
+ { "AFUJ" }, // 0431 - Youkaidou (JPN)
+ { "AEPP" }, // 0435 - Sheep (EUR)
+ { "AMHE" }, // 0442 - Bomberman Max 2 - Blue Advance (USA)
+ { "AMYE" }, // 0443 - Bomberman Max 2 - Red Advance (USA)
+ { "AT3F" }, // 0457 - Tony Hawk's Pro Skater 3 (FRA)
+ { "ARJJ" }, // 0497 - Custom Robo GX (JPN)
+ { "AFCJ" }, // 0521 - RockMan & Forte (JPN)
+ { "ANJE" }, // 0528 - Madden NFL 2003 (USA)
+ { "AN7J" }, // 0533 - Famista Advance (JPN)
+ { "ATYJ" }, // 0540 - Gambler Densetsu Tetsuya - Yomigaeru Densetsu (JPN)
+ { "AXBJ" }, // 0551 - Black Matrix Zero (JPN)
+ { "A3AE" }, // 0580 - Yoshi's Island - Super Mario Advance 3 (USA)
+ { "A3AJ" }, // 0582 - Super Mario Advance 3 (JPN)
+ { "AZUJ" }, // 0595 - Street Fighter Zero 3 - Upper (JPN)
+ { "ALOE" }, // 0600 - The Lord of the Rings - The Fellowship of the Ring (USA)
+ { "A2SE" }, // 0602 - Spyro 2 - Season of Flame (USA)
+ { "AF7J" }, // 0605 - Tokimeki Yume Series 1 - Ohanaya-san ni Narou! (JPN)
+ { "A3AP" }, // 0610 - Yoshi's Island - Super Mario Advance 3 (EUR)
+ { "AH7J" }, // 0617 - Nakayoshi Pet Advance Series 1 - Kawaii Hamster (JPN)
+ { "AI7J" }, // 0618 - Nakayoshi Pet Advance Series 2 - Kawaii Koinu (JPN)
+ { "AN3J" }, // 0619 - Nakayoshi Pet Advance Series 3 - Kawaii Koneko (JPN)
+ { "AAPJ" }, // 0632 - Metalgun Slinger (JPN)
+ { "A2JJ" }, // 0643 - J.League - Winning Eleven Advance 2002 (JPN)
+ { "AHXJ" }, // 0649 - High Heat - Major League Baseball 2003 (JPN)
+ { "AHAJ" }, // 0651 - Hamster Paradise Advance (JPN)
+ { "APUJ" }, // 0653 - PukuPuku Tennen Kairanban (JPN)
+ { "A2SP" }, // 0673 - Spyro 2 - Season of Flame (EUR)
+ { "AN9J" }, // 0675 - Tales of the World - Narikiri Dungeon 2 (JPN)
+ { "ACBE" }, // 0683 - Car Battler Joe (USA)
+ { "AT6E" }, // 0693 - Tony Hawk's Pro Skater 4 (USA)
+ { "ALOP" }, // 0702 - The Lord of the Rings - The Fellowship of the Ring (EUR)
+ { "A63J" }, // 0710 - Kawaii Pet Shop Monogatari 3 (JPN)
+ { "AAXJ" }, // 0748 - Fantastic Maerchen - Cake-yasan Monogatari (JPN)
+ { "AZLE" }, // 0763 - The Legend of Zelda - A Link to the Past & Four Swords (USA)
+ { "AZUP" }, // 0765 - Street Fighter Alpha 3 - Upper (EUR)
+ { "AJKJ" }, // 0769 - Jikkyou World Soccer Pocket 2 (JPN)
+ { "AB3E" }, // 0781 - Dave Mirra Freestyle BMX 3 (USA)
+ { "A2IJ" }, // 0791 - Magi Nation (JPN)
+ { "AK7J" }, // 0792 - Klonoa Heroes - Densetsu no Star Medal (JPN)
+ { "A2HJ" }, // 0794 - Hajime no Ippo - The Fighting! (JPN)
+ { "ALNE" }, // 0795 - Lunar Legend (USA)
+ { "AUCJ" }, // 0808 - Uchuu Daisakusen Choco Vader - Uchuu Kara no Shinryakusha (JPN)
+ { "A59J" }, // 0809 - Toukon Heat (JPN)
+ { "ALJE" }, // 0815 - Sea Trader - Rise of Taipan (USA)
+ { "A87J" }, // 0817 - Ohanaya-San Monogatari GBA (JPN)
+ { "A56J" }, // 0827 - DokiDoki Cooking Series 1 - Komugi-chan no Happy Cake (JPN)
+ { "AHZJ" }, // 0830 - Higanbana (JPN)
+ { "A8BP" }, // 0832 - Medabots - Metabee Version (EUR)
+ { "A2OJ" }, // 0833 - K-1 Pocket Grand Prix 2 (JPN)
+ { "AY2P" }, // 0843 - International Superstar Soccer Advance (EUR)
+ { "ANSJ" }, // 0845 - Marie, Elie & Anis no Atelier - Soyokaze Kara no Dengon (JPN)
+ { "ACOJ" }, // 0865 - Manga-ka Debut Monogatari (JPN)
+ { "AZLP" }, // 0870 - The Legend of Zelda - A Link to the Past & Four Swords (EUR)
+ { "AWKJ" }, // 0879 - Wagamama Fairy Mirumo de Pon! - Ougon Maracas no Densetsu (JPN)
+ { "AZUE" }, // 0886 - Street Fighter Alpha 3 - Upper (USA)
+ { "AZLJ" }, // 0887 - Zelda no Densetsu - Kamigami no Triforce & 4tsu no Tsurugi (JPN)
+ { "A6ME" }, // 0889 - MegaMan & Bass (USA)
+ { "A64J" }, // 0915 - Shimura Ken no Baka Tonosama (JPN)
+ { "A9HJ" }, // 0917 - Dragon Quest Monsters - Caravan Heart (JPN)
+ { "AMHP" }, // 0929 - Bomberman Max 2 - Blue Advance (EUR)
+ { "AMYP" }, // 0930 - Bomberman Max 2 - Red Advance (EUR)
+ { "AMGJ" }, // 0943 - Exciting Bass (JPN)
+ { "A5KJ" }, // 0946 - Medarot 2 Core - Kabuto Version (JPN)
+ { "A4LJ" }, // 0949 - Sylvania Family 4 - Meguru Kisetsu no Tapestry (JPN)
+ { "A2VJ" }, // 0955 - Kisekko Gurumi - Chesty to Nuigurumi-tachi no Mahou no Bouken (JPN)
+ { "A5QJ" }, // 0956 - Medarot 2 Core - Kuwagata Version (JPN)
+ { "AZBJ" }, // 0958 - Bass Tsuri Shiyouze! (JPN)
+ { "AO2J" }, // 0961 - Oshare Princess 2 (JPN)
+ { "AB4J" }, // 0965 - Summon Night - Craft Sword Monogatari (JPN)
+ { "AZAJ" }, // 0971 - Azumanga Daiou Advance (JPN)
+ { "AF3J" }, // 0974 - Zero One (JPN)
+ { "A8OJ" }, // 0988 - DokiDoki Cooking Series 2 - Gourmet Kitchen - Suteki na Obentou (JPN)
+ { "AT3D" }, // 1016 - Tony Hawk's Pro Skater 3 (GER)
+ { "A6MP" }, // 1031 - MegaMan & Bass (EUR)
+ { "ANNJ" }, // 1032 - Gekitou Densetsu Noah - Dream Management (JPN)
+ { "AFNJ" }, // 1036 - Angel Collection - Mezase! Gakuen no Fashion Leader (JPN)
+ { "ALFP" }, // 1041 - Dragon Ball Z - The Legacy of Goku II (EUR)
+ { "A9TJ" }, // 1055 - Metal Max 2 Kai (JPN)
+ { "ALFE" }, // 1070 - Dragon Ball Z - The Legacy of Goku II (USA)
+ { "BHCJ" }, // 1074 - Hamster Monogatari Collection (JPN)
+ { "BKKJ" }, // 1075 - Minna no Shiiku Series - Boku no Kabuto-Kuwagata (JPN)
+ { "BKIJ" }, // 1083 - Nakayoshi Pet Advance Series 4 - Kawaii Koinu Kogata Inu (JPN)
+ { "BGBJ" }, // 1084 - Get! - Boku no Mushi Tsukamaete (JPN)
+ { "A82J" }, // 1085 - Hamster Paradise - Pure Heart (JPN)
+ { "U3IJ" }, // 1087 - Bokura no Taiyou - Taiyou Action RPG (JPN)
+ { "A6OJ" }, // 1092 - Onimusha Tactics (JPN)
+ { "AN8J" }, // 1102 - Tales of Phantasia (JPN)
+ { "AC4J" }, // 1104 - Meitantei Conan - Nerawareta Tantei (JPN)
+ { "A8ZJ" }, // 1108 - Shin Megami Tensei Devil Children - Puzzle de Call! (JPN)
+ { "BGMJ" }, // 1113 - Gensou Maden Saiyuuki - Hangyaku no Toushin-taishi (JPN)
+ { "BMDE" }, // 1115 - Madden NFL 2004 (USA)
+ { "BO3J" }, // 1141 - Oshare Princess 3 (JPN)
+ { "U3IE" }, // 1145 - Boktai - The Sun is in Your Hand (USA)
+ { "BMRJ" }, // 1194 - Matantei Loki Ragnarok - Gensou no Labyrinth (JPN)
+ { "BLME" }, // 1204 - Lizzie McGuire (USA)
+ { "AOWE" }, // 1208 - Spyro - Attack of the Rhynocs (USA)
+ { "BTOE" }, // 1209 - Tony Hawk's Underground (USA)
+ { "BFJE" }, // 1212 - Frogger's Journey - The Forgotten Relic (USA)
+ { "A88P" }, // 1229 - Mario & Luigi - Superstar Saga (EUR)
+ { "BEYP" }, // 1236 - Beyblade VForce - Ultimate Blader Jam (EUR)
+ { "A85J" }, // 1239 - Sanrio Puroland All Characters (JPN)
+ { "BMZJ" }, // 1240 - Zooo (JPN)
+ { "A6OE" }, // 1241 - Onimusha Tactics (USA)
+ { "AOWP" }, // 1253 - Spyro Adventure (EUR)
+ { "A88E" }, // 1260 - Mario & Luigi - Superstar Saga (USA)
+ { "BEYE" }, // 1262 - Beyblade VForce - Ultimate Blader Jam (USA)
+ { "BCME" }, // 1264 - CIMA - The Enemy (USA)
+ { "A88J" }, // 1266 - Mario & Luigi RPG (JPN)
+ { "A5CP" }, // 1269 - Sim City 2000 (EUR)
+ { "BGAJ" }, // 1277 - SD Gundam G Generation (JPN)
+ { "A6OP" }, // 1288 - Onimusha Tactics (EUR)
+ { "BLMP" }, // 1289 - Lizzie McGuire (EUR)
+ { "ASIE" }, // 1295 - The Sims - Bustin' Out (USA)
+ { "BISJ" }, // 1299 - Koinu-Chan no Hajimete no Osanpo - Koinu no Kokoro Ikusei Game (JPN)
+ { "BK3J" }, // 1305 - Card Captor Sakura - Sakura Card de Mini Game (JPN)
+ { "A4GJ" }, // 1306 - Konjiki no Gashbell!! - Unare! Yuujou no Zakeru (JPN)
+ { "BTAJ" }, // 1315 - Astro Boy - Tetsuwan Atom (JPN)
+ { "BS5J" }, // 1322 - Sylvanian Family - Yousei no Stick to Fushigi no Ki (JPN)
+ { "A5CE" }, // 1326 - Sim City 2000 (USA)
+ { "B4PJ" }, // 1342 - The Sims (JPN)
+ { "BDTJ" }, // 1383 - Downtown - Nekketsu Monogatari EX (JPN)
+ { "B08J" }, // 1391 - One Piece - Going Baseball (JPN)
+ { "AWUP" }, // 1394 - Sabre Wulf (EUR)
+ { "BRPJ" }, // 1421 - Liliput Oukoku (JPN)
+ { "BPNJ" }, // 1435 - Pika Pika Nurse Monogatari - Nurse Ikusei Game (JPN)
+ { "BP3J" }, // 1446 - Pia Carrot he Youkoso!! 3.3 (JPN)
+ { "BKCJ" }, // 1461 - Crayon Shin-Chan - Arashi no Yobu Cinema-Land no Daibouken! (JPN)
+ { "BGNJ" }, // 1464 - Battle Suit Gundam Seed - Battle Assault (JPN)
+ { "U3IP" }, // 1465 - Boktai - The Sun is in Your Hand (EUR)
+ { "BDTE" }, // 1484 - River City Ransom EX (USA)
+ { "BHTE" }, // 1485 - Harry Potter and the Prisoner of Azkaban (USA)
+ { "FZLE" }, // 1494 - Classic NES Series - The Legend of Zelda (USA)
+ { "FEBE" }, // 1499 - Classic NES Series - ExciteBike (USA)
+ { "BUCE" }, // 1505 - Ultimate Card Games (USA)
+ { "AWUE" }, // 1511 - Sabre Wulf (USA)
+ { "B2DP" }, // 1522 - Donkey Kong Country 2 (EUR)
+ { "BHTJ" }, // 1528 - Harry Potter to Azkaban no Shuujin (JPN)
+ { "A5SJ" }, // 1534 - Oshare Wanko (JPN)
+ { "B2DJ" }, // 1541 - Super Donkey Kong 2 (JPN)
+ { "BTAE" }, // 1551 - Astro Boy - Omega Factor (USA)
+ { "BKOJ" }, // 1553 - Kaiketsu Zorori to Mahou no Yuuenchi (JPN)
+ { "BDKJ" }, // 1555 - Digi Communication 2 in 1 Datou! Black Gemagema Dan (JPN)
+ { "U32J" }, // 1567 - Zoku Bokura no Taiyou - Taiyou Shounen Django (JPN)
+ { "ALFJ" }, // 1573 - Dragon Ball Z - The Legacy of Goku II - International (JPN)
+ { "BGHJ" }, // 1575 - Gakkou no Kaidan - Hyakuyobako no Fuuin (JPN)
+ { "BZOJ" }, // 1576 - Zero One SP (JPN)
+ { "BDXJ" }, // 1587 - B-Densetsu! Battle B-Daman Moero! B-Kon (JPN)
+ { "BNBJ" }, // 1589 - Himawari Doubutsu Byouin Pet no Oishasan (JPN)
+ { "BMFE" }, // 1595 - Madden NFL 2005 (USA)
+ { "FMRJ" }, // 1599 - Famicom Mini Series 23 - Metroid (JPN)
+ { "FPTJ" }, // 1600 - Famicom Mini Series 24 - Hikari Shinwa - Palutena no Kagame (JPN)
+ { "FLBJ" }, // 1601 - Famicom Mini Series 25 - The Legend of Zelda 2 - Link no Bouken (JPN)
+ { "FSDJ" }, // 1606 - Famicom Mini Series 30 - SD Gundam World - Gachapon Senshi Scramble Wars (JPN)
+ { "BSKJ" }, // 1611 - Summon Night - Craft Sword Monogatari 2 (JPN)
+ { "BG3E" }, // 1628 - Dragon Ball Z - Buu's Fury (USA)
+ { "BECJ" }, // 1644 - Angel Collection 2 - Pichimo ni Narou (JPN)
+ { "B2TE" }, // 1672 - Tony Hawk's Underground 2 (USA)
+ { "BTYE" }, // 1689 - Ty the Tasmanian Tiger 2 - Bush Rescue (USA)
+ { "BT2E" }, // 1695 - Teenage Mutant Ninja Turtles 2 - Battlenexus (USA)
+ { "U32E" }, // 1697 - Boktai 2 - Solar Boy Django (USA)
+ { "BFDJ" }, // 1708 - Fruit Mura no Doubutsu Tachi (JPN)
+ { "BPQJ" }, // 1717 - PukuPuku Tennen Kairanban - Koi no Cupid Daisakusen (JPN)
+ { "BZMJ" }, // 1721 - The Legend of Zelda - Fushigi no Boushi (JPN)
+ { "FLBE" }, // 1723 - Classic NES Series - Zelda II - The Adventure of Link (USA)
+ { "BZMP" }, // 1736 - The Legend of Zelda - The Minish Cap (EUR)
+ { "B2DE" }, // 1754 - Donkey Kong Country 2 (USA)
+ { "BT2P" }, // 1758 - Teenage Mutant Ninja Turtles 2 - Battle Nexus (EUR)
+ { "BB2E" }, // 1759 - Beyblade G-Revolution (USA)
+ { "BRGE" }, // 1761 - Yu-Yu-Hakusho - Tournament Tactics (USA)
+ { "BFJJ" }, // 1766 - Frogger - Kodaibunmei no Nazo (JPN)
+ { "BB2P" }, // 1776 - Beyblade G-Revolution (EUR)
+ { "BSFJ" }, // 1791 - Sylvania Family - Fashion Designer ni Naritai (JPN)
+ { "BPIE" }, // 1798 - It's Mr Pants (USA)
+ { "B3PJ" }, // 1809 - Pukupuku Tennen Kairanban Youkoso Illusion Land (JPN)
+ { "BHDJ" }, // 1812 - Hello Idol Debut (JPN)
+ { "BKUJ" }, // 1823 - Shingata Medarot - Kuwagata Version (JPN)
+ { "BKVJ" }, // 1824 - Shingata Medarot - Kabuto Version (JPN)
+ { "BLIJ" }, // 1825 - Little Patissier Cake no Oshiro (JPN)
+ { "B3TJ" }, // 1833 - Tales of the World - Narikiri Dungeon 3 (JPN)
+ { "B2KJ" }, // 1836 - Kiss x Kiss - Seirei Gakuen (JPN)
+ { "A9BE" }, // 1837 - Medabots - Rokusho Version (USA)
+ { "BZME" }, // 1842 - The Legend of Zelda - The Minish Cap (USA)
+ { "B8MJ" }, // 1845 - Mario Party Advance (JPN)
+ { "A8BE" }, // 1871 - Medabots - Metabee Version (USA)
+ { "BTAP" }, // 1879 - Astro Boy - Omega Factor (EUR)
+ { "FSRJ" }, // 1916 - Famicom Mini Series - Dai 2 Ji Super Robot Taisen (JPN)
+ { "B8ME" }, // 1931 - Mario Party Advance (USA)
+ { "BO8K" }, // 1938 - One Piece - Going Baseball Haejeok Yaku (KOR)
+ { "B4ZJ" }, // 1941 - Rockman Zero 4 (JPN)
+ { "BQAJ" }, // 1953 - Meitantei Conan Akatsuki no Monument (JPN)
+ { "BIPJ" }, // 1956 - One Piece - Dragon Dream (JPN)
+ { "BQBJ" }, // 1970 - Konchu Monster Battle Master (JPN)
+ { "BQSJ" }, // 1971 - Konchu Monster Battle Stadium (JPN)
+ { "BWXJ" }, // 1982 - Wanko Mix Chiwanko World (JPN)
+ { "A9TJ" }, // 1984 - Metal Max 2 - Kai Version (JPN)
+ { "U32P" }, // 1992 - Boktai 2 - Solar Boy Django (EUR)
+ { "B4RJ" }, // 2005 - Shikakui Atama wo Marukusuru Advance - Kokugo Sansu Rika Shakai (JPN)
+ { "B4KJ" }, // 2007 - Shikakui Atama wo Marukusuru Advance - Kanji Keisan (JPN)
+ { "BFCJ" }, // 2019 - Fantasic Children (JPN)
+ { "BCSP" }, // 2020 - 2 in 1 - V-Rally 3 - Stuntman (EUR)
+ { "BM2J" }, // 2024 - Momotarou Densetsu G Gold Deck wo Tsukure! (JPN)
+ { "BEJJ" }, // 2026 - Erementar Gerad (JPN)
+ { "B5AP" }, // 2034 - Crash & Spyro - Super Pack Volume 1 (EUR)
+ { "B52P" }, // 2035 - Crash & Spyro - Super Pack Volume 2 (EUR)
+ { "BFMJ" }, // 2046 - Futari wa Precure Max Heart Maji! Maji! Fight de IN Janai (JPN)
+ { "BKEJ" }, // 2047 - Konjiki no Gashbell - The Card Battle for GBA (JPN)
+ { "U33J" }, // 2048 - Shin Bokura no Taiyou - Gyakushuu no Sabata (JPN)
+ { "BHFJ" }, // 2050 - Twin Series 4 - Ham Ham Monster EX + Fantasy Puzzle Hamster Monogatari (JPN)
+ { "BMWJ" }, // 2051 - Twin Series 5 - Wan Wan Meitantei EX + Mahou no Kuni no Keaki-Okusan Monogatari (JPN)
+ { "BMZP" }, // 2055 - Zooo (EUR)
+ { "B6ME" }, // 2057 - Madden NFL 06 (USA)
+ { "BT4E" }, // 2058 - Dragon Ball GT - Transformation (USA)
+ { "B2OJ" }, // 2071 - Pro Mahjong - Tsuwamono GBA (JPN)
+ { "BX4E" }, // 2079 - 2 in 1 - Tony Hawk's Underground + Kelly Slater's Pro Surfer (USA)
+ { "BRLE" }, // 2097 - Rebelstar - Tactical Command (USA)
+ { "BX5P" }, // 2100 - Rayman - 10th Anniversary (EUR)
+ { "B4ZP" }, // 2108 - MegaMan Zero 4 (EUR)
+ { "BX5E" }, // 2123 - Rayman - 10th Anniversary (USA)
+ { "BGXJ" }, // 2143 - Gunstar Super Heroes (JPN)
+ { "B4ZE" }, // 2144 - Megaman Zero 4 (USA)
+ { "B53P" }, // 2164 - Crash & Spyro - Super Pack Volume 3 (EUR)
+ { "B26E" }, // 2169 - World Poker Tour (USA)
+ { "BH9E" }, // 2172 - Tony Hawk's American Sk8land (USA)
+ { "BHGE" }, // 2177 - Gunstar Super Heroes (USA)
+ { "BCMJ" }, // 2178 - Frontier Stories (JPN)
+ { "BUZE" }, // 2182 - Ultimate Arcade Games (USA)
+ { "BTVE" }, // 2198 - Ty the Tasmanian Tiger 3 - Night of the Quinkan (USA)
+ { "BHGP" }, // 2199 - Gunstar Future Heroes (EUR)
+ { "BH9X" }, // 2214 - Tony Hawk's American Sk8land (EUR)
+ { "BWIP" }, // 2231 - Win X Club (EUR)
+ { "BQTP" }, // 2232 - My Pet Hotel (EUR)
+ { "B4LJ" }, // 2245 - Sugar Sugar Une - Heart Gaippai! Moegi Gakuen (JPN)
+ { "B3CJ" }, // 2249 - Summon Night Craft Sword Monogatari - Hajimari no Ishi (JPN)
+ { "A4GE" }, // 2260 - ZatchBell! - Electric Arena (USA)
+ { "BLFE" }, // 2264 - 2 in 1 - Dragon Ball Z 1 and 2 (USA)
+ { "BO2J" }, // 2272 - Ochainu no Bouken Jima (JPN)
+ { "BWIE" }, // 2276 - WinX Club (USA)
+ { "BGQE" }, // 2279 - Greg Hastings' Tournament Paintball Max'd (USA)
+ { "BURE" }, // 2298 - Paws & Claws - Pet Resort (USA)
+ { "A3AC" }, // 2303 - Yaoxi Dao (CHN)
+ { "AN8E" }, // 2305 - Tales of Phantasia (USA)
+ { "BZWJ" }, // 2309 - Akagi (JPN)
+ { "BT8P" }, // 2316 - Teenage Mutant Ninja Turtles Double Pack (EUR)
+ { "BYUJ" }, // 2322 - Yggdra Union (JPN)
+ { "AN3E" }, // 2324 - Catz (USA)
+ { "AN8P" }, // 2325 - Tales of Phantasia (EUR)
+ { "AA2C" }, // 2332 - Chaoji Maliou Shijie (CHN)
+ { "BWOP" }, // 2333 - World Poker Tour (EUR)
+ { "BKCS" }, // 2334 - Shinchan - Aventuras en Cineland (ESP)
+ { "BC2J" }, // 2341 - Crayon Shin chan - Densetsu wo Yobu Omake no Miyako Shockgaan (JPN)
+ { "BUOJ" }, // 2345 - Minna no Soft Series - Numpla Advance (JPN)
+ { "AN3J" }, // 2347 - Minna no Soft Series - Kawaii Koneko (JPN)
+ { "BUOE" }, // 2366 - Dr. Sudoku (USA)
+ { "B8SE" }, // 2368 - Spyro Superpack - Season of Ice + Season of Flame (USA)
+ { "U32J" }, // 2369 - Zoku Bokura no Taiyou - Taiyou Shounen Django (v01) (JPN)
+ { "BBMJ" }, // 2388 - B-Legend! Battle B-Daman - Moero! B-Damashi!! (JPN)
+ { "B53E" }, // 2395 - Crash & Spyro Superpack - Ripto's Rampage + The Cortex Conspiracy (USA)
+ { "BH9P" }, // 2399 - Tony Hawk's American Sk8land (EUR)
+ { "BAQP" }, // 2406 - Premier Action Soccer (EUR)
+ { "AB4E" }, // 2432 - Summon Night - Swordcraft Story (USA)
+ { "BBYE" }, // 2436 - Barnyard (USA)
+ { "BDXE" }, // 2438 - Battle B-Daman (USA)
+ { "B7ME" }, // 2446 - Madden NFL 07 (USA)
+ { "BUFE" }, // 2447 - 2 Games in 1 - Dragon Ball Z - Buu's Fury + Dragon Ball GT - Transformation (USA)
+ { "BUOP" }, // 2449 - Dr. Sudoku (EUR)
+ { "BBYX" }, // 2461 - Barnyard (EUR)
+ { "BFEE" }, // 2466 - Dogz - Fashion (USA)
+ { "AN3X" }, // 2468 - Catz (EUR)
+ { "BBME" }, // 2481 - Battle B-Daman - Fire Spirits (USA)
+ { "BQZE" }, // 2487 - Avatar - The Last Airbender (USA)
+ { "BXFE" }, // 2498 - Bratz - Forever Diamondz (USA)
+ { "BT8E" }, // 2500 - Teenage Mutant Ninja Turtles Double Pack (USA)
+ { "B3YE" }, // 2504 - The Legend of Spyro - A New Beginning (USA)
+ { "BSKE" }, // 2505 - Summon Night - Swordcraft Story 2 (USA)
+ { "BHBP" }, // 2513 - Best Friends - Hunde & Katzen (EUR)
+ { "B3YP" }, // 2519 - The Legend Of Spyro - A New Beginning (EUR)
+ { "BXFD" }, // 2520 - Bratz - Forever Diamondz (GER)
+ { "BRLP" }, // 2532 - Rebelstar - Tactical Command (EUR)
+ { "BENP" }, // 2560 - Eragon (EUR)
+ { "BENE" }, // 2561 - Eragon (USA)
+ { "BYUE" }, // 2573 - Yggdra Union - We'll Never Fight Alone (USA)
+ { "BFRP" }, // 2588 - My Animal Centre in Africa (EUR)
+ { "BFQE" }, // 2606 - Mazes of Fate (USA)
+ { "BQZP" }, // 2607 - Avatar - The Legend of Aang (EUR)
+ { "BFEP" }, // 2613 - Dogz Fashion (EUR)
+ { "BC2S" }, // 2631 - Shinchan contra los Munecos de Shock Gahn (ESP)
+ { "BXFP" }, // 2640 - Bratz - Forever Diamondz (EUR)
+ { "BEFP" }, // 2652 - Best Friends - My Horse (EUR)
+ { "BNBE" }, // 2695 - Petz Vet (USA)
+ { "BIME" }, // 2696 - Dogz 2 (USA)
+ { "BQTX" }, // 2710 - Mijn Dierenpension (EUR)
+ { "BIMP" }, // 2720 - Dogz 2 (EUR)
+ { "BIMX" }, // 2727 - Dogz 2 (EUR)
+ { "BHUE" }, // 2730 - Horsez (USA)
+ { "BQTF" }, // 2732 - Lea - Passion Veterinaire (FRA)
+ { "BJPP" }, // 2770 - Harry Potter Collection (EUR)
+ { "BEFE" }, // 2772 - Let's Ride - Friends Forever (USA)
+ { "BHBE" }, // 2774 - Best Friends - Dogs & Cats (USA)
+ { "BYUP" }, // 2781 - Yggdra Union - We'll Never Fight Alone (EUR)
+ { "ACOJ" }, // 2787 - Manga-ka Debut Monogatari (v01) (JPN)
+ { "BFDJ" }, // 2789 - Fruit Mura no Doubutsu Tachi (v02) (JPN)
+ // gba scan no. 8
+ { "AYSJ" }, // 0229 - Gakkou wo Tsukurou!! Advance (JPN)
+ { "ASNJ" }, // 0260 - Sansara Naga 1x2 (JPN)
+ { "ACTX" }, // 0265 - Creatures (EUR)
+ { "ASFJ" }, // 0359 - Slot! Pro Advance - Takarabune & Ooedo Sakurafubuki 2 (JPN)
+ { "ABGJ" }, // 0404 - Sweet Cookie Pie (JPN)
+ { "ARNJ" }, // 0615 - Harukanaru Toki no Naka de (JPN)
+ { "AOPJ" }, // 0646 - Oshare Princess (JPN)
+ { "AHVJ" }, // 0664 - Nakayoshi Youchien - Sukoyaka Enji Ikusei Game (JPN)
+ { "AYCE" }, // 0758 - Phantasy Star Collection (USA)
+ { "AYCP" }, // 0877 - Phantasy Star Collection (EUR)
+ { "ATBJ" }, // 0948 - Slot! Pro 2 Advance - GoGo Juggler & New Tairyou (JPN)
+ { "A83J" }, // 1012 - Hamster Monogatari 3 GBA (JPN)
+ { "AEHJ" }, // 1014 - Puzzle & Tantei Collection (JPN)
+ { "BWDJ" }, // 1114 - Wan Nyan Doubutsu Byouin (JPN)
+ { "BKZE" }, // 1138 - Banjo-Kazooie - Grunty's Revenge (USA)
+ { "FZLJ" }, // 1369 - Famicom Mini Series 5 - Zelda no Denzetsu 1 (JPN)
+ { "BPVP" }, // 1738 - Pferd & Pony - Mein Pferdehof (EUR)
+ { "ACTY" }, // 1763 - Creatures (EUR)
+ { "BITJ" }, // 1811 - Onmyou Taisenki Zeroshik (JPN)
+ { "BOVJ" }, // 1848 - Bouken-Ou Beet - Busters Road (JPN)
+ { "BT3J" }, // 1852 - Tantei Jinguuji Saburou Shiroi Kage no Syoujyo (JPN)
+ { "BG8J" }, // 1853 - Ganbare! Dodge Fighters (JPN)
+ { "BLDS" }, // 1919 - 2 Games in 1 - Lizzie McGuire - Disney Princesas (ESP)
+ { "BLDP" }, // 1934 - 2 Games in 1 - Lizzie McGuire - Disney Princess (EUR)
+ { "B8MP" }, // 1993 - Mario Party Advance (EUR)
+ { "BYPP" }, // 2155 - Horse & Pony - Let`s Ride 2 (EUR)
+ { "B8AE" }, // 2174 - Crash Superpack - N-Tranced + Nitro Kart (USA)
+ { "BL9E" }, // 2329 - Let's Ride! Dreamer (USA)
+ { "B34E" }, // 2331 - Let's Ride! - Sunshine Stables (USA)
+ { "BQVP" }, // 2414 - Meine Tierarztpraxis (EUR)
+ { "BHUP" }, // 2480 - Horse and Pony - My Stud Farm (EUR)
+ { "BPVX" }, // 2645 - Pippa Funnell - Stable Adventures (EUR)
+ { "BYPX" }, // 2653 - Pippa Funell 2 (EUR)
+ { "BQVX" }, // 2711 - Mijn Dierenpraktijk (EUR)
+ { "BPVY" }, // 2712 - Paard & Pony - Mijn Manege (EUR)
+ { "BYPY" }, // 2713 - Paard & Pony - Paard in Galop (EUR)
+ { "B54E" }, // 2757 - Crash & Spyro Superpack - The Huge Adventure + Season of Ice (USA)
+ // gba scan no. 9
+ { "BKZX" }, // 1199 - Banjo-Kazooie - Grunty's Revenge (EUR)
+ { "BKZI" }, // 1381 - Banjo Kazooie - La Vendetta di Grunty (ITA)
+ { "BAZJ" }, // 1710 - Akachan Doubutsu Sono (JPN)
+ { "BKZS" }, // 1883 - Banjo Kazooie - La Venganza de Grunty (ESP)
+ // gba scan no. 11
+ { "A9BP" }, // 0925 - Medabots - Rokusho Version (EUR)
+ { "A3IJ" }, // bokura no taiyou - taiyou action rpg - kabunushi go-yuutai ban (japan) (demo)
+};
+
+const gba_chip_fix_item gba_chip_fix_rumble_list[] =
+{
+ { "KYGP" }, // Yoshi's Universal Gravitation (EUR)
+ { "KYGE" }, // Yoshi - Topsy-Turvy (USA)
+ { "KYGJ" }, // Yoshi no Banyuuinryoku (JPN)
+ { "KHPJ" } // Koro Koro Puzzle - Happy Panechu! (JPN)
+};
+
+} // anonymous namespace
+
+
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
-const device_type GBA_CART_SLOT = device_creator<gba_cart_slot_device>;
+DEFINE_DEVICE_TYPE(GBA_CART_SLOT, gba_cart_slot_device, "gba_cart_slot", "Game Boy Advance Cartridge Slot")
//**************************************************************************
// GBA cartridges Interface
@@ -27,9 +479,9 @@ const device_type GBA_CART_SLOT = device_creator<gba_cart_slot_device>;
//-------------------------------------------------
device_gba_cart_interface::device_gba_cart_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_rom(nullptr),
- m_rom_size(0)
+ : device_slot_card_interface(mconfig, device)
+ , m_rom(nullptr)
+ , m_rom_size(0)
{
}
@@ -81,10 +533,11 @@ void device_gba_cart_interface::nvram_alloc(uint32_t size)
// gba_cart_slot_device - constructor
//-------------------------------------------------
gba_cart_slot_device::gba_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, GBA_CART_SLOT, "Game Boy Advance Cartridge Slot", tag, owner, clock, "gba_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(GBA_STD), m_cart(nullptr)
+ device_t(mconfig, GBA_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(GBA_STD),
+ m_cart(nullptr)
{
}
diff --git a/src/devices/bus/gba/gba_slot.h b/src/devices/bus/gba/gba_slot.h
index 959f62dd332..d2c042b3ba9 100644
--- a/src/devices/bus/gba/gba_slot.h
+++ b/src/devices/bus/gba/gba_slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont,Ryan Holtz,Fabio Priuli
-#ifndef __GBA_SLOT_H
-#define __GBA_SLOT_H
+#ifndef MAME_BUS_GBA_GBA_SLOT_H
+#define MAME_BUS_GBA_GBA_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -38,7 +40,6 @@ class device_gba_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_gba_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_gba_cart_interface();
// reading and writing
@@ -46,10 +47,10 @@ public:
virtual DECLARE_READ32_MEMBER(read_ram) { return 0xffffffff; }
virtual DECLARE_READ32_MEMBER(read_gpio) { return 0; }
virtual DECLARE_READ32_MEMBER(read_tilt) { return 0xffffffff; }
- virtual DECLARE_WRITE32_MEMBER(write_ram) {};
- virtual DECLARE_WRITE32_MEMBER(write_gpio) {};
- virtual DECLARE_WRITE32_MEMBER(write_tilt) {};
- virtual DECLARE_WRITE32_MEMBER(write_mapper) {};
+ virtual DECLARE_WRITE32_MEMBER(write_ram) { }
+ virtual DECLARE_WRITE32_MEMBER(write_gpio) { }
+ virtual DECLARE_WRITE32_MEMBER(write_tilt) { }
+ virtual DECLARE_WRITE32_MEMBER(write_mapper) { }
void rom_alloc(uint32_t size, const char *tag);
void nvram_alloc(uint32_t size);
@@ -63,6 +64,9 @@ public:
void save_nvram() { device().save_item(NAME(m_nvram)); }
+protected:
+ device_gba_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint32_t *m_rom; // this points to the cart rom region
uint32_t m_rom_size; // this is the actual game size, not the rom region size!
@@ -96,8 +100,8 @@ public:
void internal_header_logging(uint8_t *ROM, uint32_t len);
- void save_nvram() { if (m_cart && m_cart->get_nvram_size()) m_cart->save_nvram(); }
- uint32_t get_rom_size() { if (m_cart) return m_cart->get_rom_size(); return 0; }
+ void save_nvram() { if (m_cart && m_cart->get_nvram_size()) m_cart->save_nvram(); }
+ uint32_t get_rom_size() { if (m_cart) return m_cart->get_rom_size(); return 0; }
virtual iodevice_t image_type() const override { return IO_CARTSLOT; }
virtual bool is_readable() const override { return 1; }
@@ -125,13 +129,13 @@ public:
protected:
int m_type;
- device_gba_cart_interface* m_cart;
+ device_gba_cart_interface* m_cart;
};
// device type definition
-extern const device_type GBA_CART_SLOT;
+DECLARE_DEVICE_TYPE(GBA_CART_SLOT, gba_cart_slot_device)
/***************************************************************************
@@ -164,452 +168,4 @@ extern const device_type GBA_CART_SLOT;
#define GBA_CHIP_EEPROM_4K (1 << 7)
-struct gba_chip_fix_conflict_item
-{
- char game_code[5];
- uint32_t chip;
-};
-
-static const gba_chip_fix_conflict_item gba_chip_fix_conflict_list[] =
-{
- { "ABFJ", GBA_CHIP_SRAM }, // 0059 - Breath of Fire - Ryuu no Senshi (JPN)
- { "AHMJ", GBA_CHIP_EEPROM_4K }, // 0364 - Dai-Mahjong (JPN)
- { "A2GJ", GBA_CHIP_EEPROM_64K }, // 0399 - Advance GT2 (JPN)
- { "AK9E", GBA_CHIP_EEPROM_4K }, // 0479 - Medabots AX - Rokusho Version (USA)
- { "AK8E", GBA_CHIP_EEPROM_4K }, // 0480 - Medabots AX - Metabee Version (USA)
- { "AK9P", GBA_CHIP_EEPROM_4K }, // 0515 - Medabots AX - Rokusho Version (EUR)
- { "AGIJ", GBA_CHIP_EEPROM_4K }, // 0548 - Medarot G - Kuwagata Version (JPN)
- { "A3DJ", GBA_CHIP_EEPROM_4K }, // 0567 - Disney Sports - American Football (JPN)
- { "AF7J", GBA_CHIP_EEPROM_64K }, // 0605 - Tokimeki Yume Series 1 - Ohanaya-san ni Narou! (JPN)
- { "AH7J", GBA_CHIP_EEPROM_64K }, // 0617 - Nakayoshi Pet Advance Series 1 - Kawaii Hamster (JPN)
- { "AGHJ", GBA_CHIP_EEPROM_4K }, // 0620 - Medarot G - Kabuto Version (JPN)
- { "AR8E", GBA_CHIP_SRAM }, // 0727 - Rocky (USA)
- { "ALUE", GBA_CHIP_EEPROM_4K }, // 0751 - Super Monkey Ball Jr. (USA)
- { "A3DE", GBA_CHIP_EEPROM_4K }, // 0800 - Disney Sports - Football (USA)
- { "A87J", GBA_CHIP_EEPROM_64K }, // 0817 - Ohanaya-San Monogatari GBA (JPN)
- { "A56J", GBA_CHIP_EEPROM_64K }, // 0827 - DokiDoki Cooking Series 1 - Komugi-chan no Happy Cake (JPN)
- { "AUSJ", GBA_CHIP_FLASH }, // 0906 - One Piece - Mezase! King of Berries (JPN)
- { "ANTJ", GBA_CHIP_SRAM }, // 0950 - Nippon Pro Mahjong Renmei Kounin - Tetsuman Advance (JPN)
- { "A8OJ", GBA_CHIP_EEPROM_64K }, // 0988 - DokiDoki Cooking Series 2 - Gourmet Kitchen - Suteki na Obentou (JPN)
- { "AK8P", GBA_CHIP_EEPROM_4K }, // 1022 - Medabots AX - Metabee Version (EUR)
- { "A6OJ", GBA_CHIP_EEPROM_64K }, // 1092 - Onimusha Tactics (JPN)
- { "A6OE", GBA_CHIP_EEPROM_64K }, // 1241 - Onimusha Tactics (USA)
- { "A6OP", GBA_CHIP_EEPROM_64K }, // 1288 - Onimusha Tactics (EUR)
- { "BKME", GBA_CHIP_EEPROM_4K }, // 1545 - Kim Possible 2 - Drakken's Demise (USA)
- { "BDKJ", GBA_CHIP_EEPROM_64K }, // 1555 - Digi Communication 2 in 1 Datou! Black Gemagema Dan (JPN)
- { "BR4J", GBA_CHIP_FLASH }, // 1586 - Rockman EXE 4.5 - Real Operation (JPN)
- { "BG8J", GBA_CHIP_EEPROM_64K }, // 1853 - Ganbare! Dodge Fighters (JPN)
- { "AROP", GBA_CHIP_EEPROM_4K }, // 1862 - Rocky (EUR)
-// "A2YE" - 1906 - Top Gun - Combat Zones (USA) - multiple NVRAM chips detected, but none present (protection against emu?)
- { "BKMJ", GBA_CHIP_EEPROM_4K }, // 2039 - Kim Possible (JPN)
- { "BKEJ", GBA_CHIP_EEPROM_64K }, // 2047 - Konjiki no Gashbell - The Card Battle for GBA (JPN)
- { "BKMP", GBA_CHIP_EEPROM_4K }, // 2297 - Kim Possible 2 - Drakken's Demise (EUR)
- { "BUHJ", GBA_CHIP_EEPROM_4K }, // 2311 - Ueki no Housoku Shinki Sakuretsu! Nouryokumono Battle (JPN)
- { "BYUJ", GBA_CHIP_EEPROM_64K }, // 2322 - Yggdra Union (JPN)
-};
-
-struct gba_chip_fix_item
-{
- char game_code[5];
-};
-
-static const gba_chip_fix_item gba_chip_fix_eeprom_list[] =
-{
- // gba scan no. 7
- { "AKTJ" }, // 0145 - Hello Kitty Collection - Miracle Fashion Maker (JPN)
- { "AISP" }, // 0185 - International Superstar Soccer (EUR)
- { "AKGP" }, // 0204 - Mech Platoon (EUR)
- { "AX2E" }, // 0207 - Dave Mirra Freestyle BMX 2 (USA)
- { "AASJ" }, // 0234 - World Advance Soccer - Shouri heno Michi (JPN)
- { "AA2J" }, // 0237 - Super Mario World - Super Mario Advance 2 (JPN)
- { "AJWJ" }, // 0242 - Jikkyou World Soccer Pocket (JPN)
- { "AABE" }, // 0244 - American Bass Challenge (USA)
- { "AWXJ" }, // 0254 - ESPN Winter X-Games Snowboarding 2002 (JPN)
- { "AALJ" }, // 0259 - Kidou Tenshi Angelic Layer - Misaki to Yume no Tenshi-tachi (JPN)
- { "AKGE" }, // 0263 - Mech Platoon (USA)
- { "AGLJ" }, // 0273 - Tomato Adventure (JPN)
- { "AWIJ" }, // 0274 - Hyper Sports 2002 Winter (JPN)
- { "APNJ" }, // 0286 - Pinky Monkey Town (JPN)
- { "AA2E" }, // 0288 - Super Mario World - Super Mario Advance 2 (USA)
- { "AX2P" }, // 0293 - Dave Mirra Freestyle BMX 2 (EUR)
- { "AMGP" }, // 0296 - ESPN Great Outdoor Games - Bass Tournament (EUR)
- { "AMHJ" }, // 0308 - Bomberman Max 2 - Bomberman Version (JPN)
- { "AGNJ" }, // 0311 - Goemon - New Age Shutsudou! (JPN)
- { "AMYJ" }, // 0324 - Bomberman Max 2 - Max Version (JPN)
- { "AT3E" }, // 0326 - Tony Hawk's Pro Skater 3 (USA)
- { "AHHE" }, // 0327 - High Heat - Major League Baseball 2003 (USA)
- { "ANLE" }, // 0328 - NHL 2002 (USA)
- { "AAGJ" }, // 0345 - Angelique (JPN)
- { "ABJP" }, // 0351 - Broken Sword - The Shadow of the Templars (EUR)
- { "AKVJ" }, // 0357 - K-1 Pocket Grand Prix (JPN)
- { "AKGJ" }, // 0361 - Kikaika Guntai - Mech Platoon (JPN)
- { "ADDJ" }, // 0362 - Diadroids World - Evil Teikoku no Yabou (JPN)
- { "ABJE" }, // 0365 - Broken Sword - The Shadow of the Templars (USA)
- { "AABP" }, // 0380 - Super Black Bass Advance (EUR)
- { "AA2P" }, // 0390 - Super Mario World - Super Mario Advance 2 (EUR)
- { "A2GJ" }, // 0399 - Advance GT2 (JPN)
- { "AEWJ" }, // 0400 - Ui-Ire - World Soccer Winning Eleven (JPN)
- { "ADPJ" }, // 0417 - Doraemon - Dokodemo Walker (JPN)
- { "AN5J" }, // 0420 - Kawa no Nushi Tsuri 5 - Fushigi no Mori Kara (JPN)
- { "ACBJ" }, // 0421 - Gekitou! Car Battler Go!! (JPN)
- { "AHIJ" }, // 0426 - Hitsuji no Kimochi (JPN)
- { "ATFP" }, // 0429 - Alex Ferguson's Player Manager 2002 (EUR)
- { "AFUJ" }, // 0431 - Youkaidou (JPN)
- { "AEPP" }, // 0435 - Sheep (EUR)
- { "AMHE" }, // 0442 - Bomberman Max 2 - Blue Advance (USA)
- { "AMYE" }, // 0443 - Bomberman Max 2 - Red Advance (USA)
- { "AT3F" }, // 0457 - Tony Hawk's Pro Skater 3 (FRA)
- { "ARJJ" }, // 0497 - Custom Robo GX (JPN)
- { "AFCJ" }, // 0521 - RockMan & Forte (JPN)
- { "ANJE" }, // 0528 - Madden NFL 2003 (USA)
- { "AN7J" }, // 0533 - Famista Advance (JPN)
- { "ATYJ" }, // 0540 - Gambler Densetsu Tetsuya - Yomigaeru Densetsu (JPN)
- { "AXBJ" }, // 0551 - Black Matrix Zero (JPN)
- { "A3AE" }, // 0580 - Yoshi's Island - Super Mario Advance 3 (USA)
- { "A3AJ" }, // 0582 - Super Mario Advance 3 (JPN)
- { "AZUJ" }, // 0595 - Street Fighter Zero 3 - Upper (JPN)
- { "ALOE" }, // 0600 - The Lord of the Rings - The Fellowship of the Ring (USA)
- { "A2SE" }, // 0602 - Spyro 2 - Season of Flame (USA)
- { "AF7J" }, // 0605 - Tokimeki Yume Series 1 - Ohanaya-san ni Narou! (JPN)
- { "A3AP" }, // 0610 - Yoshi's Island - Super Mario Advance 3 (EUR)
- { "AH7J" }, // 0617 - Nakayoshi Pet Advance Series 1 - Kawaii Hamster (JPN)
- { "AI7J" }, // 0618 - Nakayoshi Pet Advance Series 2 - Kawaii Koinu (JPN)
- { "AN3J" }, // 0619 - Nakayoshi Pet Advance Series 3 - Kawaii Koneko (JPN)
- { "AAPJ" }, // 0632 - Metalgun Slinger (JPN)
- { "A2JJ" }, // 0643 - J.League - Winning Eleven Advance 2002 (JPN)
- { "AHXJ" }, // 0649 - High Heat - Major League Baseball 2003 (JPN)
- { "AHAJ" }, // 0651 - Hamster Paradise Advance (JPN)
- { "APUJ" }, // 0653 - PukuPuku Tennen Kairanban (JPN)
- { "A2SP" }, // 0673 - Spyro 2 - Season of Flame (EUR)
- { "AN9J" }, // 0675 - Tales of the World - Narikiri Dungeon 2 (JPN)
- { "ACBE" }, // 0683 - Car Battler Joe (USA)
- { "AT6E" }, // 0693 - Tony Hawk's Pro Skater 4 (USA)
- { "ALOP" }, // 0702 - The Lord of the Rings - The Fellowship of the Ring (EUR)
- { "A63J" }, // 0710 - Kawaii Pet Shop Monogatari 3 (JPN)
- { "AAXJ" }, // 0748 - Fantastic Maerchen - Cake-yasan Monogatari (JPN)
- { "AZLE" }, // 0763 - The Legend of Zelda - A Link to the Past & Four Swords (USA)
- { "AZUP" }, // 0765 - Street Fighter Alpha 3 - Upper (EUR)
- { "AJKJ" }, // 0769 - Jikkyou World Soccer Pocket 2 (JPN)
- { "AB3E" }, // 0781 - Dave Mirra Freestyle BMX 3 (USA)
- { "A2IJ" }, // 0791 - Magi Nation (JPN)
- { "AK7J" }, // 0792 - Klonoa Heroes - Densetsu no Star Medal (JPN)
- { "A2HJ" }, // 0794 - Hajime no Ippo - The Fighting! (JPN)
- { "ALNE" }, // 0795 - Lunar Legend (USA)
- { "AUCJ" }, // 0808 - Uchuu Daisakusen Choco Vader - Uchuu Kara no Shinryakusha (JPN)
- { "A59J" }, // 0809 - Toukon Heat (JPN)
- { "ALJE" }, // 0815 - Sea Trader - Rise of Taipan (USA)
- { "A87J" }, // 0817 - Ohanaya-San Monogatari GBA (JPN)
- { "A56J" }, // 0827 - DokiDoki Cooking Series 1 - Komugi-chan no Happy Cake (JPN)
- { "AHZJ" }, // 0830 - Higanbana (JPN)
- { "A8BP" }, // 0832 - Medabots - Metabee Version (EUR)
- { "A2OJ" }, // 0833 - K-1 Pocket Grand Prix 2 (JPN)
- { "AY2P" }, // 0843 - International Superstar Soccer Advance (EUR)
- { "ANSJ" }, // 0845 - Marie, Elie & Anis no Atelier - Soyokaze Kara no Dengon (JPN)
- { "ACOJ" }, // 0865 - Manga-ka Debut Monogatari (JPN)
- { "AZLP" }, // 0870 - The Legend of Zelda - A Link to the Past & Four Swords (EUR)
- { "AWKJ" }, // 0879 - Wagamama Fairy Mirumo de Pon! - Ougon Maracas no Densetsu (JPN)
- { "AZUE" }, // 0886 - Street Fighter Alpha 3 - Upper (USA)
- { "AZLJ" }, // 0887 - Zelda no Densetsu - Kamigami no Triforce & 4tsu no Tsurugi (JPN)
- { "A6ME" }, // 0889 - MegaMan & Bass (USA)
- { "A64J" }, // 0915 - Shimura Ken no Baka Tonosama (JPN)
- { "A9HJ" }, // 0917 - Dragon Quest Monsters - Caravan Heart (JPN)
- { "AMHP" }, // 0929 - Bomberman Max 2 - Blue Advance (EUR)
- { "AMYP" }, // 0930 - Bomberman Max 2 - Red Advance (EUR)
- { "AMGJ" }, // 0943 - Exciting Bass (JPN)
- { "A5KJ" }, // 0946 - Medarot 2 Core - Kabuto Version (JPN)
- { "A4LJ" }, // 0949 - Sylvania Family 4 - Meguru Kisetsu no Tapestry (JPN)
- { "A2VJ" }, // 0955 - Kisekko Gurumi - Chesty to Nuigurumi-tachi no Mahou no Bouken (JPN)
- { "A5QJ" }, // 0956 - Medarot 2 Core - Kuwagata Version (JPN)
- { "AZBJ" }, // 0958 - Bass Tsuri Shiyouze! (JPN)
- { "AO2J" }, // 0961 - Oshare Princess 2 (JPN)
- { "AB4J" }, // 0965 - Summon Night - Craft Sword Monogatari (JPN)
- { "AZAJ" }, // 0971 - Azumanga Daiou Advance (JPN)
- { "AF3J" }, // 0974 - Zero One (JPN)
- { "A8OJ" }, // 0988 - DokiDoki Cooking Series 2 - Gourmet Kitchen - Suteki na Obentou (JPN)
- { "AT3D" }, // 1016 - Tony Hawk's Pro Skater 3 (GER)
- { "A6MP" }, // 1031 - MegaMan & Bass (EUR)
- { "ANNJ" }, // 1032 - Gekitou Densetsu Noah - Dream Management (JPN)
- { "AFNJ" }, // 1036 - Angel Collection - Mezase! Gakuen no Fashion Leader (JPN)
- { "ALFP" }, // 1041 - Dragon Ball Z - The Legacy of Goku II (EUR)
- { "A9TJ" }, // 1055 - Metal Max 2 Kai (JPN)
- { "ALFE" }, // 1070 - Dragon Ball Z - The Legacy of Goku II (USA)
- { "BHCJ" }, // 1074 - Hamster Monogatari Collection (JPN)
- { "BKKJ" }, // 1075 - Minna no Shiiku Series - Boku no Kabuto-Kuwagata (JPN)
- { "BKIJ" }, // 1083 - Nakayoshi Pet Advance Series 4 - Kawaii Koinu Kogata Inu (JPN)
- { "BGBJ" }, // 1084 - Get! - Boku no Mushi Tsukamaete (JPN)
- { "A82J" }, // 1085 - Hamster Paradise - Pure Heart (JPN)
- { "U3IJ" }, // 1087 - Bokura no Taiyou - Taiyou Action RPG (JPN)
- { "A6OJ" }, // 1092 - Onimusha Tactics (JPN)
- { "AN8J" }, // 1102 - Tales of Phantasia (JPN)
- { "AC4J" }, // 1104 - Meitantei Conan - Nerawareta Tantei (JPN)
- { "A8ZJ" }, // 1108 - Shin Megami Tensei Devil Children - Puzzle de Call! (JPN)
- { "BGMJ" }, // 1113 - Gensou Maden Saiyuuki - Hangyaku no Toushin-taishi (JPN)
- { "BMDE" }, // 1115 - Madden NFL 2004 (USA)
- { "BO3J" }, // 1141 - Oshare Princess 3 (JPN)
- { "U3IE" }, // 1145 - Boktai - The Sun is in Your Hand (USA)
- { "BMRJ" }, // 1194 - Matantei Loki Ragnarok - Gensou no Labyrinth (JPN)
- { "BLME" }, // 1204 - Lizzie McGuire (USA)
- { "AOWE" }, // 1208 - Spyro - Attack of the Rhynocs (USA)
- { "BTOE" }, // 1209 - Tony Hawk's Underground (USA)
- { "BFJE" }, // 1212 - Frogger's Journey - The Forgotten Relic (USA)
- { "A88P" }, // 1229 - Mario & Luigi - Superstar Saga (EUR)
- { "BEYP" }, // 1236 - Beyblade VForce - Ultimate Blader Jam (EUR)
- { "A85J" }, // 1239 - Sanrio Puroland All Characters (JPN)
- { "BMZJ" }, // 1240 - Zooo (JPN)
- { "A6OE" }, // 1241 - Onimusha Tactics (USA)
- { "AOWP" }, // 1253 - Spyro Adventure (EUR)
- { "A88E" }, // 1260 - Mario & Luigi - Superstar Saga (USA)
- { "BEYE" }, // 1262 - Beyblade VForce - Ultimate Blader Jam (USA)
- { "BCME" }, // 1264 - CIMA - The Enemy (USA)
- { "A88J" }, // 1266 - Mario & Luigi RPG (JPN)
- { "A5CP" }, // 1269 - Sim City 2000 (EUR)
- { "BGAJ" }, // 1277 - SD Gundam G Generation (JPN)
- { "A6OP" }, // 1288 - Onimusha Tactics (EUR)
- { "BLMP" }, // 1289 - Lizzie McGuire (EUR)
- { "ASIE" }, // 1295 - The Sims - Bustin' Out (USA)
- { "BISJ" }, // 1299 - Koinu-Chan no Hajimete no Osanpo - Koinu no Kokoro Ikusei Game (JPN)
- { "BK3J" }, // 1305 - Card Captor Sakura - Sakura Card de Mini Game (JPN)
- { "A4GJ" }, // 1306 - Konjiki no Gashbell!! - Unare! Yuujou no Zakeru (JPN)
- { "BTAJ" }, // 1315 - Astro Boy - Tetsuwan Atom (JPN)
- { "BS5J" }, // 1322 - Sylvanian Family - Yousei no Stick to Fushigi no Ki (JPN)
- { "A5CE" }, // 1326 - Sim City 2000 (USA)
- { "B4PJ" }, // 1342 - The Sims (JPN)
- { "BDTJ" }, // 1383 - Downtown - Nekketsu Monogatari EX (JPN)
- { "B08J" }, // 1391 - One Piece - Going Baseball (JPN)
- { "AWUP" }, // 1394 - Sabre Wulf (EUR)
- { "BRPJ" }, // 1421 - Liliput Oukoku (JPN)
- { "BPNJ" }, // 1435 - Pika Pika Nurse Monogatari - Nurse Ikusei Game (JPN)
- { "BP3J" }, // 1446 - Pia Carrot he Youkoso!! 3.3 (JPN)
- { "BKCJ" }, // 1461 - Crayon Shin-Chan - Arashi no Yobu Cinema-Land no Daibouken! (JPN)
- { "BGNJ" }, // 1464 - Battle Suit Gundam Seed - Battle Assault (JPN)
- { "U3IP" }, // 1465 - Boktai - The Sun is in Your Hand (EUR)
- { "BDTE" }, // 1484 - River City Ransom EX (USA)
- { "BHTE" }, // 1485 - Harry Potter and the Prisoner of Azkaban (USA)
- { "FZLE" }, // 1494 - Classic NES Series - The Legend of Zelda (USA)
- { "FEBE" }, // 1499 - Classic NES Series - ExciteBike (USA)
- { "BUCE" }, // 1505 - Ultimate Card Games (USA)
- { "AWUE" }, // 1511 - Sabre Wulf (USA)
- { "B2DP" }, // 1522 - Donkey Kong Country 2 (EUR)
- { "BHTJ" }, // 1528 - Harry Potter to Azkaban no Shuujin (JPN)
- { "A5SJ" }, // 1534 - Oshare Wanko (JPN)
- { "B2DJ" }, // 1541 - Super Donkey Kong 2 (JPN)
- { "BTAE" }, // 1551 - Astro Boy - Omega Factor (USA)
- { "BKOJ" }, // 1553 - Kaiketsu Zorori to Mahou no Yuuenchi (JPN)
- { "BDKJ" }, // 1555 - Digi Communication 2 in 1 Datou! Black Gemagema Dan (JPN)
- { "U32J" }, // 1567 - Zoku Bokura no Taiyou - Taiyou Shounen Django (JPN)
- { "ALFJ" }, // 1573 - Dragon Ball Z - The Legacy of Goku II - International (JPN)
- { "BGHJ" }, // 1575 - Gakkou no Kaidan - Hyakuyobako no Fuuin (JPN)
- { "BZOJ" }, // 1576 - Zero One SP (JPN)
- { "BDXJ" }, // 1587 - B-Densetsu! Battle B-Daman Moero! B-Kon (JPN)
- { "BNBJ" }, // 1589 - Himawari Doubutsu Byouin Pet no Oishasan (JPN)
- { "BMFE" }, // 1595 - Madden NFL 2005 (USA)
- { "FMRJ" }, // 1599 - Famicom Mini Series 23 - Metroid (JPN)
- { "FPTJ" }, // 1600 - Famicom Mini Series 24 - Hikari Shinwa - Palutena no Kagame (JPN)
- { "FLBJ" }, // 1601 - Famicom Mini Series 25 - The Legend of Zelda 2 - Link no Bouken (JPN)
- { "FSDJ" }, // 1606 - Famicom Mini Series 30 - SD Gundam World - Gachapon Senshi Scramble Wars (JPN)
- { "BSKJ" }, // 1611 - Summon Night - Craft Sword Monogatari 2 (JPN)
- { "BG3E" }, // 1628 - Dragon Ball Z - Buu's Fury (USA)
- { "BECJ" }, // 1644 - Angel Collection 2 - Pichimo ni Narou (JPN)
- { "B2TE" }, // 1672 - Tony Hawk's Underground 2 (USA)
- { "BTYE" }, // 1689 - Ty the Tasmanian Tiger 2 - Bush Rescue (USA)
- { "BT2E" }, // 1695 - Teenage Mutant Ninja Turtles 2 - Battlenexus (USA)
- { "U32E" }, // 1697 - Boktai 2 - Solar Boy Django (USA)
- { "BFDJ" }, // 1708 - Fruit Mura no Doubutsu Tachi (JPN)
- { "BPQJ" }, // 1717 - PukuPuku Tennen Kairanban - Koi no Cupid Daisakusen (JPN)
- { "BZMJ" }, // 1721 - The Legend of Zelda - Fushigi no Boushi (JPN)
- { "FLBE" }, // 1723 - Classic NES Series - Zelda II - The Adventure of Link (USA)
- { "BZMP" }, // 1736 - The Legend of Zelda - The Minish Cap (EUR)
- { "B2DE" }, // 1754 - Donkey Kong Country 2 (USA)
- { "BT2P" }, // 1758 - Teenage Mutant Ninja Turtles 2 - Battle Nexus (EUR)
- { "BB2E" }, // 1759 - Beyblade G-Revolution (USA)
- { "BRGE" }, // 1761 - Yu-Yu-Hakusho - Tournament Tactics (USA)
- { "BFJJ" }, // 1766 - Frogger - Kodaibunmei no Nazo (JPN)
- { "BB2P" }, // 1776 - Beyblade G-Revolution (EUR)
- { "BSFJ" }, // 1791 - Sylvania Family - Fashion Designer ni Naritai (JPN)
- { "BPIE" }, // 1798 - It's Mr Pants (USA)
- { "B3PJ" }, // 1809 - Pukupuku Tennen Kairanban Youkoso Illusion Land (JPN)
- { "BHDJ" }, // 1812 - Hello Idol Debut (JPN)
- { "BKUJ" }, // 1823 - Shingata Medarot - Kuwagata Version (JPN)
- { "BKVJ" }, // 1824 - Shingata Medarot - Kabuto Version (JPN)
- { "BLIJ" }, // 1825 - Little Patissier Cake no Oshiro (JPN)
- { "B3TJ" }, // 1833 - Tales of the World - Narikiri Dungeon 3 (JPN)
- { "B2KJ" }, // 1836 - Kiss x Kiss - Seirei Gakuen (JPN)
- { "A9BE" }, // 1837 - Medabots - Rokusho Version (USA)
- { "BZME" }, // 1842 - The Legend of Zelda - The Minish Cap (USA)
- { "B8MJ" }, // 1845 - Mario Party Advance (JPN)
- { "A8BE" }, // 1871 - Medabots - Metabee Version (USA)
- { "BTAP" }, // 1879 - Astro Boy - Omega Factor (EUR)
- { "FSRJ" }, // 1916 - Famicom Mini Series - Dai 2 Ji Super Robot Taisen (JPN)
- { "B8ME" }, // 1931 - Mario Party Advance (USA)
- { "BO8K" }, // 1938 - One Piece - Going Baseball Haejeok Yaku (KOR)
- { "B4ZJ" }, // 1941 - Rockman Zero 4 (JPN)
- { "BQAJ" }, // 1953 - Meitantei Conan Akatsuki no Monument (JPN)
- { "BIPJ" }, // 1956 - One Piece - Dragon Dream (JPN)
- { "BQBJ" }, // 1970 - Konchu Monster Battle Master (JPN)
- { "BQSJ" }, // 1971 - Konchu Monster Battle Stadium (JPN)
- { "BWXJ" }, // 1982 - Wanko Mix Chiwanko World (JPN)
- { "A9TJ" }, // 1984 - Metal Max 2 - Kai Version (JPN)
- { "U32P" }, // 1992 - Boktai 2 - Solar Boy Django (EUR)
- { "B4RJ" }, // 2005 - Shikakui Atama wo Marukusuru Advance - Kokugo Sansu Rika Shakai (JPN)
- { "B4KJ" }, // 2007 - Shikakui Atama wo Marukusuru Advance - Kanji Keisan (JPN)
- { "BFCJ" }, // 2019 - Fantasic Children (JPN)
- { "BCSP" }, // 2020 - 2 in 1 - V-Rally 3 - Stuntman (EUR)
- { "BM2J" }, // 2024 - Momotarou Densetsu G Gold Deck wo Tsukure! (JPN)
- { "BEJJ" }, // 2026 - Erementar Gerad (JPN)
- { "B5AP" }, // 2034 - Crash & Spyro - Super Pack Volume 1 (EUR)
- { "B52P" }, // 2035 - Crash & Spyro - Super Pack Volume 2 (EUR)
- { "BFMJ" }, // 2046 - Futari wa Precure Max Heart Maji! Maji! Fight de IN Janai (JPN)
- { "BKEJ" }, // 2047 - Konjiki no Gashbell - The Card Battle for GBA (JPN)
- { "U33J" }, // 2048 - Shin Bokura no Taiyou - Gyakushuu no Sabata (JPN)
- { "BHFJ" }, // 2050 - Twin Series 4 - Ham Ham Monster EX + Fantasy Puzzle Hamster Monogatari (JPN)
- { "BMWJ" }, // 2051 - Twin Series 5 - Wan Wan Meitantei EX + Mahou no Kuni no Keaki-Okusan Monogatari (JPN)
- { "BMZP" }, // 2055 - Zooo (EUR)
- { "B6ME" }, // 2057 - Madden NFL 06 (USA)
- { "BT4E" }, // 2058 - Dragon Ball GT - Transformation (USA)
- { "B2OJ" }, // 2071 - Pro Mahjong - Tsuwamono GBA (JPN)
- { "BX4E" }, // 2079 - 2 in 1 - Tony Hawk's Underground + Kelly Slater's Pro Surfer (USA)
- { "BRLE" }, // 2097 - Rebelstar - Tactical Command (USA)
- { "BX5P" }, // 2100 - Rayman - 10th Anniversary (EUR)
- { "B4ZP" }, // 2108 - MegaMan Zero 4 (EUR)
- { "BX5E" }, // 2123 - Rayman - 10th Anniversary (USA)
- { "BGXJ" }, // 2143 - Gunstar Super Heroes (JPN)
- { "B4ZE" }, // 2144 - Megaman Zero 4 (USA)
- { "B53P" }, // 2164 - Crash & Spyro - Super Pack Volume 3 (EUR)
- { "B26E" }, // 2169 - World Poker Tour (USA)
- { "BH9E" }, // 2172 - Tony Hawk's American Sk8land (USA)
- { "BHGE" }, // 2177 - Gunstar Super Heroes (USA)
- { "BCMJ" }, // 2178 - Frontier Stories (JPN)
- { "BUZE" }, // 2182 - Ultimate Arcade Games (USA)
- { "BTVE" }, // 2198 - Ty the Tasmanian Tiger 3 - Night of the Quinkan (USA)
- { "BHGP" }, // 2199 - Gunstar Future Heroes (EUR)
- { "BH9X" }, // 2214 - Tony Hawk's American Sk8land (EUR)
- { "BWIP" }, // 2231 - Win X Club (EUR)
- { "BQTP" }, // 2232 - My Pet Hotel (EUR)
- { "B4LJ" }, // 2245 - Sugar Sugar Une - Heart Gaippai! Moegi Gakuen (JPN)
- { "B3CJ" }, // 2249 - Summon Night Craft Sword Monogatari - Hajimari no Ishi (JPN)
- { "A4GE" }, // 2260 - ZatchBell! - Electric Arena (USA)
- { "BLFE" }, // 2264 - 2 in 1 - Dragon Ball Z 1 and 2 (USA)
- { "BO2J" }, // 2272 - Ochainu no Bouken Jima (JPN)
- { "BWIE" }, // 2276 - WinX Club (USA)
- { "BGQE" }, // 2279 - Greg Hastings' Tournament Paintball Max'd (USA)
- { "BURE" }, // 2298 - Paws & Claws - Pet Resort (USA)
- { "A3AC" }, // 2303 - Yaoxi Dao (CHN)
- { "AN8E" }, // 2305 - Tales of Phantasia (USA)
- { "BZWJ" }, // 2309 - Akagi (JPN)
- { "BT8P" }, // 2316 - Teenage Mutant Ninja Turtles Double Pack (EUR)
- { "BYUJ" }, // 2322 - Yggdra Union (JPN)
- { "AN3E" }, // 2324 - Catz (USA)
- { "AN8P" }, // 2325 - Tales of Phantasia (EUR)
- { "AA2C" }, // 2332 - Chaoji Maliou Shijie (CHN)
- { "BWOP" }, // 2333 - World Poker Tour (EUR)
- { "BKCS" }, // 2334 - Shinchan - Aventuras en Cineland (ESP)
- { "BC2J" }, // 2341 - Crayon Shin chan - Densetsu wo Yobu Omake no Miyako Shockgaan (JPN)
- { "BUOJ" }, // 2345 - Minna no Soft Series - Numpla Advance (JPN)
- { "AN3J" }, // 2347 - Minna no Soft Series - Kawaii Koneko (JPN)
- { "BUOE" }, // 2366 - Dr. Sudoku (USA)
- { "B8SE" }, // 2368 - Spyro Superpack - Season of Ice + Season of Flame (USA)
- { "U32J" }, // 2369 - Zoku Bokura no Taiyou - Taiyou Shounen Django (v01) (JPN)
- { "BBMJ" }, // 2388 - B-Legend! Battle B-Daman - Moero! B-Damashi!! (JPN)
- { "B53E" }, // 2395 - Crash & Spyro Superpack - Ripto's Rampage + The Cortex Conspiracy (USA)
- { "BH9P" }, // 2399 - Tony Hawk's American Sk8land (EUR)
- { "BAQP" }, // 2406 - Premier Action Soccer (EUR)
- { "AB4E" }, // 2432 - Summon Night - Swordcraft Story (USA)
- { "BBYE" }, // 2436 - Barnyard (USA)
- { "BDXE" }, // 2438 - Battle B-Daman (USA)
- { "B7ME" }, // 2446 - Madden NFL 07 (USA)
- { "BUFE" }, // 2447 - 2 Games in 1 - Dragon Ball Z - Buu's Fury + Dragon Ball GT - Transformation (USA)
- { "BUOP" }, // 2449 - Dr. Sudoku (EUR)
- { "BBYX" }, // 2461 - Barnyard (EUR)
- { "BFEE" }, // 2466 - Dogz - Fashion (USA)
- { "AN3X" }, // 2468 - Catz (EUR)
- { "BBME" }, // 2481 - Battle B-Daman - Fire Spirits (USA)
- { "BQZE" }, // 2487 - Avatar - The Last Airbender (USA)
- { "BXFE" }, // 2498 - Bratz - Forever Diamondz (USA)
- { "BT8E" }, // 2500 - Teenage Mutant Ninja Turtles Double Pack (USA)
- { "B3YE" }, // 2504 - The Legend of Spyro - A New Beginning (USA)
- { "BSKE" }, // 2505 - Summon Night - Swordcraft Story 2 (USA)
- { "BHBP" }, // 2513 - Best Friends - Hunde & Katzen (EUR)
- { "B3YP" }, // 2519 - The Legend Of Spyro - A New Beginning (EUR)
- { "BXFD" }, // 2520 - Bratz - Forever Diamondz (GER)
- { "BRLP" }, // 2532 - Rebelstar - Tactical Command (EUR)
- { "BENP" }, // 2560 - Eragon (EUR)
- { "BENE" }, // 2561 - Eragon (USA)
- { "BYUE" }, // 2573 - Yggdra Union - We'll Never Fight Alone (USA)
- { "BFRP" }, // 2588 - My Animal Centre in Africa (EUR)
- { "BFQE" }, // 2606 - Mazes of Fate (USA)
- { "BQZP" }, // 2607 - Avatar - The Legend of Aang (EUR)
- { "BFEP" }, // 2613 - Dogz Fashion (EUR)
- { "BC2S" }, // 2631 - Shinchan contra los Munecos de Shock Gahn (ESP)
- { "BXFP" }, // 2640 - Bratz - Forever Diamondz (EUR)
- { "BEFP" }, // 2652 - Best Friends - My Horse (EUR)
- { "BNBE" }, // 2695 - Petz Vet (USA)
- { "BIME" }, // 2696 - Dogz 2 (USA)
- { "BQTX" }, // 2710 - Mijn Dierenpension (EUR)
- { "BIMP" }, // 2720 - Dogz 2 (EUR)
- { "BIMX" }, // 2727 - Dogz 2 (EUR)
- { "BHUE" }, // 2730 - Horsez (USA)
- { "BQTF" }, // 2732 - Lea - Passion Veterinaire (FRA)
- { "BJPP" }, // 2770 - Harry Potter Collection (EUR)
- { "BEFE" }, // 2772 - Let's Ride - Friends Forever (USA)
- { "BHBE" }, // 2774 - Best Friends - Dogs & Cats (USA)
- { "BYUP" }, // 2781 - Yggdra Union - We'll Never Fight Alone (EUR)
- { "ACOJ" }, // 2787 - Manga-ka Debut Monogatari (v01) (JPN)
- { "BFDJ" }, // 2789 - Fruit Mura no Doubutsu Tachi (v02) (JPN)
- // gba scan no. 8
- { "AYSJ" }, // 0229 - Gakkou wo Tsukurou!! Advance (JPN)
- { "ASNJ" }, // 0260 - Sansara Naga 1x2 (JPN)
- { "ACTX" }, // 0265 - Creatures (EUR)
- { "ASFJ" }, // 0359 - Slot! Pro Advance - Takarabune & Ooedo Sakurafubuki 2 (JPN)
- { "ABGJ" }, // 0404 - Sweet Cookie Pie (JPN)
- { "ARNJ" }, // 0615 - Harukanaru Toki no Naka de (JPN)
- { "AOPJ" }, // 0646 - Oshare Princess (JPN)
- { "AHVJ" }, // 0664 - Nakayoshi Youchien - Sukoyaka Enji Ikusei Game (JPN)
- { "AYCE" }, // 0758 - Phantasy Star Collection (USA)
- { "AYCP" }, // 0877 - Phantasy Star Collection (EUR)
- { "ATBJ" }, // 0948 - Slot! Pro 2 Advance - GoGo Juggler & New Tairyou (JPN)
- { "A83J" }, // 1012 - Hamster Monogatari 3 GBA (JPN)
- { "AEHJ" }, // 1014 - Puzzle & Tantei Collection (JPN)
- { "BWDJ" }, // 1114 - Wan Nyan Doubutsu Byouin (JPN)
- { "BKZE" }, // 1138 - Banjo-Kazooie - Grunty's Revenge (USA)
- { "FZLJ" }, // 1369 - Famicom Mini Series 5 - Zelda no Denzetsu 1 (JPN)
- { "BPVP" }, // 1738 - Pferd & Pony - Mein Pferdehof (EUR)
- { "ACTY" }, // 1763 - Creatures (EUR)
- { "BITJ" }, // 1811 - Onmyou Taisenki Zeroshik (JPN)
- { "BOVJ" }, // 1848 - Bouken-Ou Beet - Busters Road (JPN)
- { "BT3J" }, // 1852 - Tantei Jinguuji Saburou Shiroi Kage no Syoujyo (JPN)
- { "BG8J" }, // 1853 - Ganbare! Dodge Fighters (JPN)
- { "BLDS" }, // 1919 - 2 Games in 1 - Lizzie McGuire - Disney Princesas (ESP)
- { "BLDP" }, // 1934 - 2 Games in 1 - Lizzie McGuire - Disney Princess (EUR)
- { "B8MP" }, // 1993 - Mario Party Advance (EUR)
- { "BYPP" }, // 2155 - Horse & Pony - Let`s Ride 2 (EUR)
- { "B8AE" }, // 2174 - Crash Superpack - N-Tranced + Nitro Kart (USA)
- { "BL9E" }, // 2329 - Let's Ride! Dreamer (USA)
- { "B34E" }, // 2331 - Let's Ride! - Sunshine Stables (USA)
- { "BQVP" }, // 2414 - Meine Tierarztpraxis (EUR)
- { "BHUP" }, // 2480 - Horse and Pony - My Stud Farm (EUR)
- { "BPVX" }, // 2645 - Pippa Funnell - Stable Adventures (EUR)
- { "BYPX" }, // 2653 - Pippa Funell 2 (EUR)
- { "BQVX" }, // 2711 - Mijn Dierenpraktijk (EUR)
- { "BPVY" }, // 2712 - Paard & Pony - Mijn Manege (EUR)
- { "BYPY" }, // 2713 - Paard & Pony - Paard in Galop (EUR)
- { "B54E" }, // 2757 - Crash & Spyro Superpack - The Huge Adventure + Season of Ice (USA)
- // gba scan no. 9
- { "BKZX" }, // 1199 - Banjo-Kazooie - Grunty's Revenge (EUR)
- { "BKZI" }, // 1381 - Banjo Kazooie - La Vendetta di Grunty (ITA)
- { "BAZJ" }, // 1710 - Akachan Doubutsu Sono (JPN)
- { "BKZS" }, // 1883 - Banjo Kazooie - La Venganza de Grunty (ESP)
- // gba scan no. 11
- { "A9BP" }, // 0925 - Medabots - Rokusho Version (EUR)
- { "A3IJ" }, // bokura no taiyou - taiyou action rpg - kabunushi go-yuutai ban (japan) (demo)
-};
-
-static const gba_chip_fix_item gba_chip_fix_rumble_list[] =
-{
- { "KYGP" }, // Yoshi's Universal Gravitation (EUR)
- { "KYGE" }, // Yoshi - Topsy-Turvy (USA)
- { "KYGJ" }, // Yoshi no Banyuuinryoku (JPN)
- { "KHPJ" } // Koro Koro Puzzle - Happy Panechu! (JPN)
-};
-
-
-#endif
+#endif // MAME_BUS_GBA_GBA_SLOT_H
diff --git a/src/devices/bus/gba/rom.cpp b/src/devices/bus/gba/rom.cpp
index 78875860300..d6aad07ac0d 100644
--- a/src/devices/bus/gba/rom.cpp
+++ b/src/devices/bus/gba/rom.cpp
@@ -21,127 +21,122 @@
// gba_rom_device - constructor
//-------------------------------------------------
-const device_type GBA_ROM_STD = device_creator<gba_rom_device>;
-const device_type GBA_ROM_SRAM = device_creator<gba_rom_sram_device>;
-const device_type GBA_ROM_DRILLDOZ = device_creator<gba_rom_drilldoz_device>;
-const device_type GBA_ROM_WARIOTWS = device_creator<gba_rom_wariotws_device>;
-const device_type GBA_ROM_EEPROM = device_creator<gba_rom_eeprom_device>;
-const device_type GBA_ROM_YOSHIUG = device_creator<gba_rom_yoshiug_device>;
-const device_type GBA_ROM_EEPROM64 = device_creator<gba_rom_eeprom64_device>;
-const device_type GBA_ROM_BOKTAI = device_creator<gba_rom_boktai_device>;
-const device_type GBA_ROM_FLASH = device_creator<gba_rom_flash_device>;
-const device_type GBA_ROM_FLASH_RTC = device_creator<gba_rom_flash_rtc_device>;
-const device_type GBA_ROM_FLASH1M = device_creator<gba_rom_flash1m_device>;
-const device_type GBA_ROM_FLASH1M_RTC = device_creator<gba_rom_flash1m_rtc_device>;
-const device_type GBA_ROM_3DMATRIX = device_creator<gba_rom_3dmatrix_device>;
+DEFINE_DEVICE_TYPE(GBA_ROM_STD, gba_rom_device, "gba_rom", "GBA Carts")
+DEFINE_DEVICE_TYPE(GBA_ROM_SRAM, gba_rom_sram_device, "gba_rom_sram", "GBA Carts + SRAM")
+DEFINE_DEVICE_TYPE(GBA_ROM_DRILLDOZ, gba_rom_drilldoz_device, "gba_rom_drilldoz", "GBA Carts + SRAM + Rumble")
+DEFINE_DEVICE_TYPE(GBA_ROM_WARIOTWS, gba_rom_wariotws_device, "gba_rom_wariotws", "GBA Carts + SRAM + Rumble + Gyroscope")
+DEFINE_DEVICE_TYPE(GBA_ROM_EEPROM, gba_rom_eeprom_device, "gba_rom_eeprom", "GBA Carts + EEPROM")
+DEFINE_DEVICE_TYPE(GBA_ROM_YOSHIUG, gba_rom_yoshiug_device, "gba_rom_yoshiug", "GBA Carts + EEPROM + Tilt Sensor")
+DEFINE_DEVICE_TYPE(GBA_ROM_EEPROM64, gba_rom_eeprom64_device, "gba_rom_eeprom64", "GBA Carts + EEPROM 64K")
+DEFINE_DEVICE_TYPE(GBA_ROM_BOKTAI, gba_rom_boktai_device, "gba_rom_boktai", "GBA Carts + EEPROM 64K + RTC + Light Sensor")
+DEFINE_DEVICE_TYPE(GBA_ROM_FLASH, gba_rom_flash_device, "gba_rom_flash", "GBA Carts + Panasonic Flash")
+DEFINE_DEVICE_TYPE(GBA_ROM_FLASH_RTC, gba_rom_flash_rtc_device, "gba_rom_flash_rtc", "GBA Carts + Panasonic Flash + RTC")
+DEFINE_DEVICE_TYPE(GBA_ROM_FLASH1M, gba_rom_flash1m_device, "gba_rom_flash1m", "GBA Carts + Sanyo Flash")
+DEFINE_DEVICE_TYPE(GBA_ROM_FLASH1M_RTC, gba_rom_flash1m_rtc_device, "gba_rom_flash1m_rtc", "GBA Carts + Sanyo Flash + RTC")
+DEFINE_DEVICE_TYPE(GBA_ROM_3DMATRIX, gba_rom_3dmatrix_device, "gba_rom_3dmatrix", "3D Matrix Memory Mapper")
-gba_rom_device::gba_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_gba_cart_interface( mconfig, *this )
+gba_rom_device::gba_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_gba_cart_interface(mconfig, *this)
{
}
gba_rom_device::gba_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, GBA_ROM_STD, "GBA Carts", tag, owner, clock, "gba_rom", __FILE__),
- device_gba_cart_interface( mconfig, *this )
+ : gba_rom_device(mconfig, GBA_ROM_STD, tag, owner, clock)
{
}
-gba_rom_sram_device::gba_rom_sram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : gba_rom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+gba_rom_sram_device::gba_rom_sram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : gba_rom_device(mconfig, type, tag, owner, clock)
{
}
gba_rom_sram_device::gba_rom_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_device(mconfig, GBA_ROM_SRAM, "GBA Carts + SRAM", tag, owner, clock, "gba_sram", __FILE__)
+ : gba_rom_sram_device(mconfig, GBA_ROM_SRAM, tag, owner, clock)
{
}
gba_rom_drilldoz_device::gba_rom_drilldoz_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_sram_device(mconfig, GBA_ROM_DRILLDOZ, "GBA Carts + SRAM + Rumble", tag, owner, clock, "gba_drilldoz", __FILE__)
+ : gba_rom_sram_device(mconfig, GBA_ROM_DRILLDOZ, tag, owner, clock)
{
}
gba_rom_wariotws_device::gba_rom_wariotws_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_sram_device(mconfig, GBA_ROM_WARIOTWS, "GBA Carts + SRAM + Rumble + Gyroscope", tag, owner, clock, "gba_wariotws", __FILE__),
- m_gyro_z(*this, "GYROZ")
+ : gba_rom_sram_device(mconfig, GBA_ROM_WARIOTWS, tag, owner, clock)
+ , m_gyro_z(*this, "GYROZ")
{
}
-gba_rom_eeprom_device::gba_rom_eeprom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : gba_rom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+gba_rom_eeprom_device::gba_rom_eeprom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : gba_rom_device(mconfig, type, tag, owner, clock)
{
}
gba_rom_eeprom_device::gba_rom_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_device(mconfig, GBA_ROM_EEPROM, "GBA Carts + EEPROM", tag, owner, clock, "gba_eeprom", __FILE__)
+ : gba_rom_eeprom_device(mconfig, GBA_ROM_EEPROM, tag, owner, clock)
{
}
gba_rom_yoshiug_device::gba_rom_yoshiug_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_eeprom_device(mconfig, GBA_ROM_YOSHIUG, "GBA Carts + EEPROM + Tilt Sensor", tag, owner, clock, "gba_yoshiug", __FILE__),
- m_tilt_x(*this, "TILTX"),
- m_tilt_y(*this, "TILTY")
+ : gba_rom_eeprom_device(mconfig, GBA_ROM_YOSHIUG, tag, owner, clock)
+ , m_tilt_x(*this, "TILTX")
+ , m_tilt_y(*this, "TILTY")
{
}
-gba_rom_eeprom64_device::gba_rom_eeprom64_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : gba_rom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+gba_rom_eeprom64_device::gba_rom_eeprom64_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : gba_rom_device(mconfig, type, tag, owner, clock)
{
}
gba_rom_eeprom64_device::gba_rom_eeprom64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_device(mconfig, GBA_ROM_EEPROM64, "GBA Carts + EEPROM 64K", tag, owner, clock, "gba_eeprom64", __FILE__)
+ : gba_rom_eeprom64_device(mconfig, GBA_ROM_EEPROM64, tag, owner, clock)
{
}
gba_rom_boktai_device::gba_rom_boktai_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_eeprom64_device(mconfig, GBA_ROM_BOKTAI, "GBA Carts + EEPROM 64K + RTC", tag, owner, clock, "gba_boktai", __FILE__),
- m_sensor(*this, "LIGHTSENSE")
+ : gba_rom_eeprom64_device(mconfig, GBA_ROM_BOKTAI, tag, owner, clock)
+ , m_sensor(*this, "LIGHTSENSE")
{
}
-gba_rom_flash_device::gba_rom_flash_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : gba_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_flash_mask(0),
- m_flash(*this, "flash")
+gba_rom_flash_device::gba_rom_flash_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : gba_rom_device(mconfig, type, tag, owner, clock)
+ , m_flash_mask(0)
+ , m_flash(*this, "flash")
{
}
gba_rom_flash_device::gba_rom_flash_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_device(mconfig, GBA_ROM_FLASH, "GBA Carts + Panasonic Flash", tag, owner, clock, "gba_flash", __FILE__),
- m_flash_mask(0),
- m_flash(*this, "flash")
+ : gba_rom_flash_device(mconfig, GBA_ROM_FLASH, tag, owner, clock)
{
}
gba_rom_flash_rtc_device::gba_rom_flash_rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_flash_device(mconfig, GBA_ROM_FLASH_RTC, "GBA Carts + Panasonic Flash + RTC", tag, owner, clock, "gba_flash_rtc", __FILE__)
+ : gba_rom_flash_device(mconfig, GBA_ROM_FLASH_RTC, tag, owner, clock)
{
}
-gba_rom_flash1m_device::gba_rom_flash1m_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : gba_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_flash_mask(0),
- m_flash(*this, "flash")
+gba_rom_flash1m_device::gba_rom_flash1m_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : gba_rom_device(mconfig, type, tag, owner, clock)
+ , m_flash_mask(0)
+ , m_flash(*this, "flash")
{
}
gba_rom_flash1m_device::gba_rom_flash1m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_device(mconfig, GBA_ROM_FLASH1M, "GBA Carts + Sanyo Flash", tag, owner, clock, "gba_flash1m", __FILE__),
- m_flash_mask(0),
- m_flash(*this, "flash")
+ : gba_rom_flash1m_device(mconfig, GBA_ROM_FLASH1M, tag, owner, clock)
{
}
gba_rom_flash1m_rtc_device::gba_rom_flash1m_rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_flash1m_device(mconfig, GBA_ROM_FLASH1M_RTC, "GBA Carts + Sanyo Flash + RTC", tag, owner, clock, "gba_flash1m_rtc", __FILE__)
+ : gba_rom_flash1m_device(mconfig, GBA_ROM_FLASH1M_RTC, tag, owner, clock)
{
}
gba_rom_3dmatrix_device::gba_rom_3dmatrix_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gba_rom_device(mconfig, GBA_ROM_3DMATRIX, "GBA Carts + 3D Matrix Memory Mapper", tag, owner, clock, "gba_3dmatrix", __FILE__)
+ : gba_rom_device(mconfig, GBA_ROM_3DMATRIX, tag, owner, clock)
{
}
diff --git a/src/devices/bus/gba/rom.h b/src/devices/bus/gba/rom.h
index a7886c79c59..118f075e416 100644
--- a/src/devices/bus/gba/rom.h
+++ b/src/devices/bus/gba/rom.h
@@ -1,20 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont,Ryan Holtz,Fabio Priuli
-#ifndef __GBA_ROM_H
-#define __GBA_ROM_H
+#ifndef MAME_BUS_GBA_ROM_H
+#define MAME_BUS_GBA_ROM_H
+
+#pragma once
#include "gba_slot.h"
#include "machine/intelfsh.h"
// GBA RTC device
-enum {
- S3511_RTC_IDLE = 0,
- S3511_RTC_DATAOUT,
- S3511_RTC_DATAIN,
- S3511_RTC_COMMAND
-};
-
class gba_s3511_device
{
public:
@@ -28,6 +23,14 @@ public:
void write(uint16_t data, int gpio_dirs);
protected:
+ enum
+ {
+ S3511_RTC_IDLE = 0,
+ S3511_RTC_DATAOUT,
+ S3511_RTC_DATAIN,
+ S3511_RTC_COMMAND
+ };
+
int m_phase;
uint8_t m_last_val, m_bits, m_command;
int m_data_len;
@@ -41,18 +44,6 @@ protected:
// GBA EEPROM device
// TODO: is it possible to merge this with the standard EEPROM devices in the core?
-enum
-{
- EEP_IDLE = 0,
- EEP_COMMAND,
- EEP_ADDR,
- EEP_AFTERADDR,
- EEP_READ,
- EEP_WRITE,
- EEP_AFTERWRITE,
- EEP_READFIRST
-};
-
class gba_eeprom_device
{
public:
@@ -63,6 +54,18 @@ public:
void write(uint32_t data);
protected:
+ enum
+ {
+ EEP_IDLE = 0,
+ EEP_COMMAND,
+ EEP_ADDR,
+ EEP_AFTERADDR,
+ EEP_READ,
+ EEP_WRITE,
+ EEP_AFTERWRITE,
+ EEP_READFIRST
+ };
+
uint8_t *m_data;
uint32_t m_data_size;
int m_state;
@@ -85,13 +88,8 @@ class gba_rom_device : public device_t,
{
public:
// construction/destruction
- gba_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
gba_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ32_MEMBER(read_rom) override { return m_rom[offset]; }
@@ -99,7 +97,14 @@ public:
virtual DECLARE_WRITE32_MEMBER(write_gpio) override;
virtual uint16_t gpio_dev_read(int gpio_dirs) { return 0; }
- virtual void gpio_dev_write(uint16_t data, int gpio_dirs) {}
+ virtual void gpio_dev_write(uint16_t data, int gpio_dirs) { }
+
+protected:
+ gba_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
uint16_t m_gpio_regs[4];
@@ -113,12 +118,14 @@ class gba_rom_sram_device : public gba_rom_device
{
public:
// construction/destruction
- gba_rom_sram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
gba_rom_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
virtual DECLARE_READ32_MEMBER(read_ram) override;
virtual DECLARE_WRITE32_MEMBER(write_ram) override;
+
+protected:
+ gba_rom_sram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
@@ -145,13 +152,14 @@ public:
virtual ioport_constructor device_input_ports() const override;
+ virtual uint16_t gpio_dev_read(int gpio_dirs) override;
+ virtual void gpio_dev_write(uint16_t data, int gpio_dirs) override;
+
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual uint16_t gpio_dev_read(int gpio_dirs) override;
- virtual void gpio_dev_write(uint16_t data, int gpio_dirs) override;
-
private:
uint8_t m_last_val;
int m_counter;
@@ -165,18 +173,20 @@ class gba_rom_flash_device : public gba_rom_device
{
public:
// construction/destruction
- gba_rom_flash_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
gba_rom_flash_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_reset() override;
// reading and writing
virtual DECLARE_READ32_MEMBER(read_ram) override;
virtual DECLARE_WRITE32_MEMBER(write_ram) override;
protected:
+ gba_rom_flash_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_reset() override;
+
//uint32_t m_flash_size;
uint32_t m_flash_mask;
required_device<intelfsh8_device> m_flash;
@@ -192,10 +202,12 @@ public:
gba_rom_flash_rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual uint16_t gpio_dev_read(int gpio_dirs) override;
virtual void gpio_dev_write(uint16_t data, int gpio_dirs) override;
+protected:
+ virtual void device_start() override;
+
private:
std::unique_ptr<gba_s3511_device> m_rtc;
};
@@ -207,18 +219,20 @@ class gba_rom_flash1m_device : public gba_rom_device
{
public:
// construction/destruction
- gba_rom_flash1m_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
gba_rom_flash1m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_reset() override;
// reading and writing
virtual DECLARE_READ32_MEMBER(read_ram) override;
virtual DECLARE_WRITE32_MEMBER(write_ram) override;
protected:
+ gba_rom_flash1m_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_reset() override;
+
//uint32_t m_flash_size;
uint32_t m_flash_mask;
required_device<intelfsh8_device> m_flash;
@@ -234,10 +248,12 @@ public:
gba_rom_flash1m_rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual uint16_t gpio_dev_read(int gpio_dirs) override;
virtual void gpio_dev_write(uint16_t data, int gpio_dirs) override;
+protected:
+ virtual void device_start() override;
+
private:
std::unique_ptr<gba_s3511_device> m_rtc;
};
@@ -249,16 +265,18 @@ class gba_rom_eeprom_device : public gba_rom_device
{
public:
// construction/destruction
- gba_rom_eeprom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
gba_rom_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
-
// reading and writing
virtual DECLARE_READ32_MEMBER(read_ram) override;
virtual DECLARE_WRITE32_MEMBER(write_ram) override;
+protected:
+ gba_rom_eeprom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
private:
std::unique_ptr<gba_eeprom_device> m_eeprom;
};
@@ -273,14 +291,16 @@ public:
gba_rom_yoshiug_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual ioport_constructor device_input_ports() const override;
// reading and writing
virtual DECLARE_READ32_MEMBER(read_tilt) override;
virtual DECLARE_WRITE32_MEMBER(write_tilt) override;
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
int m_tilt_ready;
uint16_t m_xpos, m_ypos;
@@ -295,17 +315,18 @@ class gba_rom_eeprom64_device : public gba_rom_device
{
public:
// construction/destruction
- gba_rom_eeprom64_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
gba_rom_eeprom64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
-
// reading and writing
virtual DECLARE_READ32_MEMBER(read_ram) override;
virtual DECLARE_WRITE32_MEMBER(write_ram) override;
protected:
+ gba_rom_eeprom64_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
std::unique_ptr<gba_eeprom_device> m_eeprom;
};
@@ -319,14 +340,15 @@ public:
gba_rom_boktai_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual ioport_constructor device_input_ports() const override;
virtual uint16_t gpio_dev_read(int gpio_dirs) override;
virtual void gpio_dev_write(uint16_t data, int gpio_dirs) override;
private:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
std::unique_ptr<gba_s3511_device> m_rtc;
required_ioport m_sensor;
uint8_t m_last_val;
@@ -342,33 +364,33 @@ public:
// construction/destruction
gba_rom_3dmatrix_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // reading and writing
+ virtual DECLARE_WRITE32_MEMBER(write_mapper) override;
+
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- // reading and writing
- virtual DECLARE_WRITE32_MEMBER(write_mapper) override;
-
private:
uint32_t m_src, m_dst, m_nblock;
};
// device type definition
-extern const device_type GBA_ROM_STD;
-extern const device_type GBA_ROM_SRAM;
-extern const device_type GBA_ROM_DRILLDOZ;
-extern const device_type GBA_ROM_WARIOTWS;
-extern const device_type GBA_ROM_EEPROM;
-extern const device_type GBA_ROM_YOSHIUG;
-extern const device_type GBA_ROM_EEPROM64;
-extern const device_type GBA_ROM_BOKTAI;
-extern const device_type GBA_ROM_FLASH;
-extern const device_type GBA_ROM_FLASH_RTC;
-extern const device_type GBA_ROM_FLASH1M;
-extern const device_type GBA_ROM_FLASH1M_RTC;
-extern const device_type GBA_ROM_3DMATRIX;
-
-
-
-#endif
+DECLARE_DEVICE_TYPE(GBA_ROM_STD, gba_rom_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_SRAM, gba_rom_sram_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_DRILLDOZ, gba_rom_drilldoz_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_WARIOTWS, gba_rom_wariotws_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_EEPROM, gba_rom_eeprom_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_YOSHIUG, gba_rom_yoshiug_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_EEPROM64, gba_rom_eeprom64_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_BOKTAI, gba_rom_boktai_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_FLASH, gba_rom_flash_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_FLASH_RTC, gba_rom_flash_rtc_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_FLASH1M, gba_rom_flash1m_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_FLASH1M_RTC, gba_rom_flash1m_rtc_device)
+DECLARE_DEVICE_TYPE(GBA_ROM_3DMATRIX, gba_rom_3dmatrix_device)
+
+
+#endif // MAME_BUS_GBA_ROM_H
diff --git a/src/devices/bus/generic/carts.cpp b/src/devices/bus/generic/carts.cpp
index b5a7dc7514a..032899823f8 100644
--- a/src/devices/bus/generic/carts.cpp
+++ b/src/devices/bus/generic/carts.cpp
@@ -9,6 +9,9 @@
#include "emu.h"
#include "carts.h"
+#include "rom.h"
+#include "ram.h"
+
SLOT_INTERFACE_START(generic_plain_slot)
SLOT_INTERFACE_INTERNAL("rom", GENERIC_ROM_PLAIN)
diff --git a/src/devices/bus/generic/carts.h b/src/devices/bus/generic/carts.h
index e7989272b32..a5b4660b4dc 100644
--- a/src/devices/bus/generic/carts.h
+++ b/src/devices/bus/generic/carts.h
@@ -6,18 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __GENERIC_CARTS_H__
-#define __GENERIC_CARTS_H__
+#ifndef MAME_BUS_GENERIC_CARTS_H
+#define MAME_BUS_GENERIC_CARTS_H
-
-#include "rom.h"
-#include "ram.h"
+#pragma once
SLOT_INTERFACE_EXTERN( generic_plain_slot );
SLOT_INTERFACE_EXTERN( generic_linear_slot );
SLOT_INTERFACE_EXTERN( generic_romram_plain_slot );
-#endif
+#endif // MAME_BUS_GENERIC_CARTS_H
diff --git a/src/devices/bus/generic/ram.cpp b/src/devices/bus/generic/ram.cpp
index 15db67732cc..601db4d0470 100644
--- a/src/devices/bus/generic/ram.cpp
+++ b/src/devices/bus/generic/ram.cpp
@@ -26,56 +26,56 @@
// constructor
//-------------------------------------------------
-const device_type GENERIC_RAM_32K_PLAIN = device_creator<generic_ram_32k_plain_device>;
-const device_type GENERIC_RAM_64K_PLAIN = device_creator<generic_ram_64k_plain_device>;
-const device_type GENERIC_RAM_128K_PLAIN = device_creator<generic_ram_128k_plain_device>;
-const device_type GENERIC_RAM_32K_LINEAR = device_creator<generic_ram_32k_linear_device>;
-const device_type GENERIC_RAM_64K_LINEAR = device_creator<generic_ram_64k_linear_device>;
-const device_type GENERIC_RAM_128K_LINEAR = device_creator<generic_ram_128k_linear_device>;
-
-
-generic_ram_plain_device::generic_ram_plain_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t size, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_generic_cart_interface(mconfig, *this),
- m_size(size)
+DEFINE_DEVICE_TYPE(GENERIC_RAM_32K_PLAIN, generic_ram_32k_plain_device, "generic_ram32p", "Generic RAM 32K (plain mapping)")
+DEFINE_DEVICE_TYPE(GENERIC_RAM_64K_PLAIN, generic_ram_64k_plain_device, "generic_ram64p", "Generic RAM 64K (plain mapping)")
+DEFINE_DEVICE_TYPE(GENERIC_RAM_128K_PLAIN, generic_ram_128k_plain_device, "generic_ram128p", "Generic RAM 128K (plain mapping)")
+DEFINE_DEVICE_TYPE(GENERIC_RAM_32K_LINEAR, generic_ram_32k_linear_device, "generic_ram32l", "Generic RAM 32K (linear mapping)")
+DEFINE_DEVICE_TYPE(GENERIC_RAM_64K_LINEAR, generic_ram_64k_linear_device, "generic_ram64l", "Generic RAM 64K (linear mapping)")
+DEFINE_DEVICE_TYPE(GENERIC_RAM_128K_LINEAR, generic_ram_128k_linear_device, "generic_ram128l", "Generic RAM 128K (linear mapping)")
+
+
+generic_ram_plain_device::generic_ram_plain_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t size)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_generic_cart_interface(mconfig, *this)
+ , m_size(size)
{
}
-generic_ram_linear_device::generic_ram_linear_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t size, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_generic_cart_interface(mconfig, *this),
- m_size(size)
+generic_ram_linear_device::generic_ram_linear_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t size)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_generic_cart_interface(mconfig, *this)
+ , m_size(size)
{
}
generic_ram_32k_plain_device::generic_ram_32k_plain_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_ram_plain_device(mconfig, GENERIC_RAM_32K_PLAIN, "Generic RAM 32K (plain mapping)", tag, owner, clock, 0x8000, "generic_ram32p", __FILE__)
+ : generic_ram_plain_device(mconfig, GENERIC_RAM_32K_PLAIN, tag, owner, clock, 0x8000)
{
}
generic_ram_64k_plain_device::generic_ram_64k_plain_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_ram_plain_device(mconfig, GENERIC_RAM_64K_PLAIN, "Generic RAM 64K (plain mapping)", tag, owner, clock, 0x10000, "generic_ram64p", __FILE__)
+ : generic_ram_plain_device(mconfig, GENERIC_RAM_64K_PLAIN, tag, owner, clock, 0x10000)
{
}
generic_ram_128k_plain_device::generic_ram_128k_plain_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_ram_plain_device(mconfig, GENERIC_RAM_128K_PLAIN, "Generic RAM 128K (plain mapping)", tag, owner, clock, 0x20000, "generic_ram128p", __FILE__)
+ : generic_ram_plain_device(mconfig, GENERIC_RAM_128K_PLAIN, tag, owner, clock, 0x20000)
{
}
generic_ram_32k_linear_device::generic_ram_32k_linear_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_ram_linear_device(mconfig, GENERIC_RAM_32K_LINEAR, "Generic RAM 32K (linear mapping)", tag, owner, clock, 0x8000, "generic_ram32l", __FILE__)
+ : generic_ram_linear_device(mconfig, GENERIC_RAM_32K_LINEAR, tag, owner, clock, 0x8000)
{
}
generic_ram_64k_linear_device::generic_ram_64k_linear_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_ram_linear_device(mconfig, GENERIC_RAM_64K_LINEAR, "Generic RAM 64K (linear mapping)", tag, owner, clock, 0x10000, "generic_ram64l", __FILE__)
+ : generic_ram_linear_device(mconfig, GENERIC_RAM_64K_LINEAR, tag, owner, clock, 0x10000)
{
}
generic_ram_128k_linear_device::generic_ram_128k_linear_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_ram_linear_device(mconfig, GENERIC_RAM_128K_LINEAR, "Generic RAM 128K (linear mapping)", tag, owner, clock, 0x20000, "generic_ram128l", __FILE__)
+ : generic_ram_linear_device(mconfig, GENERIC_RAM_128K_LINEAR, tag, owner, clock, 0x20000)
{
}
diff --git a/src/devices/bus/generic/ram.h b/src/devices/bus/generic/ram.h
index 213ed8178db..aa8323ba8af 100644
--- a/src/devices/bus/generic/ram.h
+++ b/src/devices/bus/generic/ram.h
@@ -1,27 +1,29 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __GENERIC_RAM_H
-#define __GENERIC_RAM_H
+#ifndef MAME_BUS_GENERIC_RAM_H
+#define MAME_BUS_GENERIC_RAM_H
+
+#pragma once
#include "slot.h"
// ======================> generic_ram_plain_device
-class generic_ram_plain_device : public device_t,
- public device_generic_cart_interface
+class generic_ram_plain_device : public device_t, public device_generic_cart_interface
{
public:
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_ram) override;
+ virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
// construction/destruction
- generic_ram_plain_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t size, const char *shortname, const char *source);
+ generic_ram_plain_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t size);
// device-level overrides
virtual void device_start() override;
- // reading and writing
- virtual DECLARE_READ8_MEMBER(read_ram) override;
- virtual DECLARE_WRITE8_MEMBER(write_ram) override;
-
private:
uint32_t m_size;
};
@@ -29,20 +31,20 @@ private:
// ======================> generic_ram_linear_device
-class generic_ram_linear_device : public device_t,
- public device_generic_cart_interface
+class generic_ram_linear_device : public device_t, public device_generic_cart_interface
{
public:
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_ram) override;
+ virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
// construction/destruction
- generic_ram_linear_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t size, const char *shortname, const char *source);
+ generic_ram_linear_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t size);
// device-level overrides
virtual void device_start() override;
- // reading and writing
- virtual DECLARE_READ8_MEMBER(read_ram) override;
- virtual DECLARE_WRITE8_MEMBER(write_ram) override;
-
private:
uint32_t m_size;
};
@@ -98,12 +100,12 @@ public:
// device type definition
-extern const device_type GENERIC_RAM_32K_PLAIN;
-extern const device_type GENERIC_RAM_64K_PLAIN;
-extern const device_type GENERIC_RAM_128K_PLAIN;
-extern const device_type GENERIC_RAM_32K_LINEAR;
-extern const device_type GENERIC_RAM_64K_LINEAR;
-extern const device_type GENERIC_RAM_128K_LINEAR;
+DECLARE_DEVICE_TYPE(GENERIC_RAM_32K_PLAIN, generic_ram_32k_plain_device)
+DECLARE_DEVICE_TYPE(GENERIC_RAM_64K_PLAIN, generic_ram_64k_plain_device)
+DECLARE_DEVICE_TYPE(GENERIC_RAM_128K_PLAIN, generic_ram_128k_plain_device)
+DECLARE_DEVICE_TYPE(GENERIC_RAM_32K_LINEAR, generic_ram_32k_linear_device)
+DECLARE_DEVICE_TYPE(GENERIC_RAM_64K_LINEAR, generic_ram_64k_linear_device)
+DECLARE_DEVICE_TYPE(GENERIC_RAM_128K_LINEAR, generic_ram_128k_linear_device)
-#endif
+#endif // MAME_BUS_GENERIC_RAM_H
diff --git a/src/devices/bus/generic/rom.cpp b/src/devices/bus/generic/rom.cpp
index 9a965cc2ccb..3a63b1f90dc 100644
--- a/src/devices/bus/generic/rom.cpp
+++ b/src/devices/bus/generic/rom.cpp
@@ -26,34 +26,33 @@
// constructor
//-------------------------------------------------
-const device_type GENERIC_ROM_PLAIN = device_creator<generic_rom_plain_device>;
-const device_type GENERIC_ROM_LINEAR = device_creator<generic_rom_linear_device>;
-const device_type GENERIC_ROMRAM_PLAIN = device_creator<generic_romram_plain_device>;
+DEFINE_DEVICE_TYPE(GENERIC_ROM_PLAIN, generic_rom_plain_device, "generic_rom_plain", "Generic ROM (plain mapping)")
+DEFINE_DEVICE_TYPE(GENERIC_ROM_LINEAR, generic_rom_linear_device, "generic_rom_linear", "Generic ROM (linear mapping)")
+DEFINE_DEVICE_TYPE(GENERIC_ROMRAM_PLAIN, generic_romram_plain_device, "generic_romram_plain", "Generic ROM + RAM (plain mapping)")
-generic_rom_device::generic_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_generic_cart_interface(mconfig, *this)
+generic_rom_device::generic_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_generic_cart_interface(mconfig, *this)
{
}
-generic_rom_plain_device::generic_rom_plain_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : generic_rom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+generic_rom_plain_device::generic_rom_plain_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : generic_rom_device(mconfig, type, tag, owner, clock)
{
}
generic_rom_plain_device::generic_rom_plain_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_rom_device(mconfig, GENERIC_ROM_PLAIN, "Generic ROM (plain mapping)", tag, owner, clock, "generic_rom_plain", __FILE__)
+ : generic_rom_plain_device(mconfig, GENERIC_ROM_PLAIN, tag, owner, clock)
{
}
generic_rom_linear_device::generic_rom_linear_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_rom_device(mconfig, GENERIC_ROM_LINEAR, "Generic ROM (linear mapping)", tag, owner, clock, "generic_rom_linear", __FILE__)
+ : generic_rom_device(mconfig, GENERIC_ROM_LINEAR, tag, owner, clock)
{
}
generic_romram_plain_device::generic_romram_plain_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_rom_plain_device(mconfig, GENERIC_ROMRAM_PLAIN, "Generic ROM + RAM (plain mapping)", tag, owner, clock, "generic_romram_plain", __FILE__)
+ : generic_rom_plain_device(mconfig, GENERIC_ROMRAM_PLAIN, tag, owner, clock)
{
}
diff --git a/src/devices/bus/generic/rom.h b/src/devices/bus/generic/rom.h
index 1cf583c0858..2fc1011c25b 100644
--- a/src/devices/bus/generic/rom.h
+++ b/src/devices/bus/generic/rom.h
@@ -1,22 +1,23 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __GENERIC_ROM_H
-#define __GENERIC_ROM_H
+#ifndef MAME_BUS_GENERIC_ROM_H
+#define MAME_BUS_GENERIC_ROM_H
+
+#pragma once
#include "slot.h"
// ======================> generic_rom_device
-class generic_rom_device : public device_t,
- public device_generic_cart_interface
+class generic_rom_device : public device_t, public device_generic_cart_interface
{
-public:
+protected:
// construction/destruction
- generic_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ generic_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override {}
+ virtual void device_start() override { }
};
@@ -26,13 +27,15 @@ class generic_rom_plain_device : public generic_rom_device
{
public:
// construction/destruction
- generic_rom_plain_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
generic_rom_plain_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_READ16_MEMBER(read16_rom) override;
virtual DECLARE_READ32_MEMBER(read32_rom) override;
+
+protected:
+ generic_rom_plain_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
@@ -67,9 +70,9 @@ public:
// device type definition
-extern const device_type GENERIC_ROM_PLAIN;
-extern const device_type GENERIC_ROM_LINEAR;
-extern const device_type GENERIC_ROMRAM_PLAIN;
+DECLARE_DEVICE_TYPE(GENERIC_ROM_PLAIN, generic_rom_plain_device)
+DECLARE_DEVICE_TYPE(GENERIC_ROM_LINEAR, generic_rom_linear_device)
+DECLARE_DEVICE_TYPE(GENERIC_ROMRAM_PLAIN, generic_romram_plain_device)
-#endif
+#endif // MAME_BUS_GENERIC_ROM_H
diff --git a/src/devices/bus/generic/slot.cpp b/src/devices/bus/generic/slot.cpp
index c7ae4a4bf0c..b2ee9c53f93 100644
--- a/src/devices/bus/generic/slot.cpp
+++ b/src/devices/bus/generic/slot.cpp
@@ -28,7 +28,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type GENERIC_SOCKET = device_creator<generic_slot_device>;
+DEFINE_DEVICE_TYPE(GENERIC_SOCKET, generic_slot_device, "generic_socket", "Generic ROM Socket / RAM Socket / Cartridge Slot")
//-------------------------------------------------
@@ -85,15 +85,16 @@ void device_generic_cart_interface::ram_alloc(uint32_t size)
// generic_slot_device - constructor
//-------------------------------------------------
generic_slot_device::generic_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, GENERIC_SOCKET, "Generic ROM Socket / RAM Socket / Cartridge Slot", tag, owner, clock, "generic_socket", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_interface(nullptr),
- m_default_card("rom"),
- m_extensions("bin"),
- m_must_be_loaded(false),
- m_width(GENERIC_ROM8_WIDTH),
- m_endianness(ENDIANNESS_LITTLE), m_cart(nullptr)
+ device_t(mconfig, GENERIC_SOCKET, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_interface(nullptr),
+ m_default_card("rom"),
+ m_extensions("bin"),
+ m_must_be_loaded(false),
+ m_width(GENERIC_ROM8_WIDTH),
+ m_endianness(ENDIANNESS_LITTLE),
+ m_cart(nullptr)
{
}
diff --git a/src/devices/bus/generic/slot.h b/src/devices/bus/generic/slot.h
index 014f6ba80fa..c7add69a8bd 100644
--- a/src/devices/bus/generic/slot.h
+++ b/src/devices/bus/generic/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __GENERIC_SLOT_H
-#define __GENERIC_SLOT_H
+#ifndef MAME_BUS_GENERIC_SLOT_H
+#define MAME_BUS_GENERIC_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -17,7 +19,6 @@ class device_generic_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_generic_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_generic_cart_interface();
// reading and writing
@@ -40,7 +41,10 @@ public:
uint8_t* get_ram_base() { return &m_ram[0]; }
uint32_t get_ram_size() { return m_ram.size(); }
- void save_ram() { device().save_item(NAME(m_ram)); }
+ void save_ram() { device().save_item(NAME(m_ram)); }
+
+protected:
+ device_generic_cart_interface(const machine_config &mconfig, device_t &device);
// internal state
uint8_t *m_rom;
@@ -144,7 +148,8 @@ public:
virtual void rom_alloc(size_t size, int width, endianness_t end) { if (m_cart) m_cart->rom_alloc(size, width, end, tag()); }
virtual void ram_alloc(uint32_t size) { if (m_cart) m_cart->ram_alloc(size); }
- uint8_t* get_rom_base() {
+ uint8_t* get_rom_base()
+ {
if (m_cart)
{
if (!user_loadable())
@@ -154,7 +159,8 @@ public:
}
return nullptr;
}
- uint32_t get_rom_size() {
+ uint32_t get_rom_size()
+ {
if (m_cart)
{
if (!user_loadable())
@@ -166,10 +172,9 @@ public:
}
uint8_t* get_ram_base() { if (m_cart) return m_cart->get_ram_base(); return nullptr; }
- void save_ram() { if (m_cart && m_cart->get_ram_size()) m_cart->save_ram(); }
+ void save_ram() { if (m_cart && m_cart->get_ram_size()) m_cart->save_ram(); }
protected:
-
const char *m_interface;
const char *m_default_card;
const char *m_extensions;
@@ -183,7 +188,7 @@ protected:
// device type definition
-extern const device_type GENERIC_SOCKET;
+DECLARE_DEVICE_TYPE(GENERIC_SOCKET, generic_slot_device)
/***************************************************************************
@@ -203,4 +208,5 @@ extern const device_type GENERIC_SOCKET;
MCFG_DEVICE_ADD(_tag, GENERIC_SOCKET, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _default, false) \
MCFG_GENERIC_INTERFACE(_dev_intf)
-#endif
+
+#endif // MAME_BUS_GENERIC_SLOT_H
diff --git a/src/devices/bus/hp9845_io/98034.cpp b/src/devices/bus/hp9845_io/98034.cpp
index 3dbae257f9a..c9a2f263259 100644
--- a/src/devices/bus/hp9845_io/98034.cpp
+++ b/src/devices/bus/hp9845_io/98034.cpp
@@ -18,8 +18,9 @@
#include "coreutil.h"
// Debugging
-#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
+
#define BIT_MASK(n) (1U << (n))
@@ -27,15 +28,15 @@
#define BIT_CLR(w , n) ((w) &= ~BIT_MASK(n))
#define BIT_SET(w , n) ((w) |= BIT_MASK(n))
-hp98034_io_card::hp98034_io_card(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hp9845_io_card_device(mconfig , HP98034_IO_CARD , "HP98034 card" , tag , owner , clock , "hp98034" , __FILE__),
+hp98034_io_card_device::hp98034_io_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : hp9845_io_card_device(mconfig , HP98034_IO_CARD , tag , owner , clock),
m_cpu(*this , "np"),
m_sw1(*this , "sw1"),
m_ieee488(*this , IEEE488_TAG)
{
}
-hp98034_io_card::~hp98034_io_card()
+hp98034_io_card_device::~hp98034_io_card_device()
{
}
@@ -82,12 +83,12 @@ static INPUT_PORTS_START(hp98034_port)
PORT_DIPSETTING(0x20 , DEF_STR(Off))
INPUT_PORTS_END
-ioport_constructor hp98034_io_card::device_input_ports() const
+ioport_constructor hp98034_io_card_device::device_input_ports() const
{
return INPUT_PORTS_NAME(hp98034_port);
}
-void hp98034_io_card::device_start()
+void hp98034_io_card_device::device_start()
{
save_item(NAME(m_dc));
save_item(NAME(m_idr));
@@ -99,7 +100,7 @@ void hp98034_io_card::device_start()
save_item(NAME(m_data_out));
}
-void hp98034_io_card::device_reset()
+void hp98034_io_card_device::device_reset()
{
hp9845_io_card_device::device_reset();
@@ -113,7 +114,7 @@ void hp98034_io_card::device_reset()
update_dc();
}
-READ16_MEMBER(hp98034_io_card::reg_r)
+READ16_MEMBER(hp98034_io_card_device::reg_r)
{
uint16_t res = m_odr;
@@ -136,11 +137,11 @@ READ16_MEMBER(hp98034_io_card::reg_r)
// (horrible race conditions lurking...)
space.device().execute().yield();
- LOG(("read R%u=%04x\n" , offset + 4 , res));
+ LOG("read R%u=%04x\n" , offset + 4 , res);
return res;
}
-WRITE16_MEMBER(hp98034_io_card::reg_w)
+WRITE16_MEMBER(hp98034_io_card_device::reg_w)
{
m_idr = (uint8_t)data;
@@ -158,19 +159,19 @@ WRITE16_MEMBER(hp98034_io_card::reg_w)
// PPU yields to let NP see FLG=0 immediately
// (horrible race conditions lurking...)
space.device().execute().yield();
- LOG(("write R%u=%04x\n" , offset + 4 , data));
+ LOG("write R%u=%04x\n" , offset + 4 , data);
}
-WRITE8_MEMBER(hp98034_io_card::dc_w)
+WRITE8_MEMBER(hp98034_io_card_device::dc_w)
{
if (data != m_dc) {
- //LOG(("DC=%02x\n" , data));
+ //LOG("DC=%02x\n" , data);
m_dc = data;
update_dc();
}
}
-READ8_MEMBER(hp98034_io_card::dc_r)
+READ8_MEMBER(hp98034_io_card_device::dc_r)
{
uint8_t res;
@@ -184,19 +185,19 @@ READ8_MEMBER(hp98034_io_card::dc_r)
return res;
}
-WRITE8_MEMBER(hp98034_io_card::hpib_data_w)
+WRITE8_MEMBER(hp98034_io_card_device::hpib_data_w)
{
m_data_out = data;
update_data_out();
}
-WRITE8_MEMBER(hp98034_io_card::hpib_ctrl_w)
+WRITE8_MEMBER(hp98034_io_card_device::hpib_ctrl_w)
{
m_ctrl_out = data;
update_ctrl_out();
}
-READ8_MEMBER(hp98034_io_card::hpib_ctrl_r)
+READ8_MEMBER(hp98034_io_card_device::hpib_ctrl_r)
{
uint8_t res = 0;
@@ -228,39 +229,39 @@ READ8_MEMBER(hp98034_io_card::hpib_ctrl_r)
return res;
}
-READ8_MEMBER(hp98034_io_card::hpib_data_r)
+READ8_MEMBER(hp98034_io_card_device::hpib_data_r)
{
return ~m_ieee488->dio_r();
}
-READ8_MEMBER(hp98034_io_card::idr_r)
+READ8_MEMBER(hp98034_io_card_device::idr_r)
{
return m_idr;
}
-WRITE8_MEMBER(hp98034_io_card::odr_w)
+WRITE8_MEMBER(hp98034_io_card_device::odr_w)
{
m_odr = data;
}
-READ8_MEMBER(hp98034_io_card::mode_reg_r)
+READ8_MEMBER(hp98034_io_card_device::mode_reg_r)
{
return m_mode_reg;
}
-WRITE8_MEMBER(hp98034_io_card::mode_reg_clear_w)
+WRITE8_MEMBER(hp98034_io_card_device::mode_reg_clear_w)
{
m_mode_reg = 0xff;
m_force_flg = false;
update_flg();
}
-READ8_MEMBER(hp98034_io_card::switch_r)
+READ8_MEMBER(hp98034_io_card_device::switch_r)
{
return m_sw1->read() | 0xc0;
}
-IRQ_CALLBACK_MEMBER(hp98034_io_card::irq_callback)
+IRQ_CALLBACK_MEMBER(hp98034_io_card_device::irq_callback)
{
int res = 0xff;
@@ -271,12 +272,12 @@ IRQ_CALLBACK_MEMBER(hp98034_io_card::irq_callback)
return res;
}
-WRITE_LINE_MEMBER(hp98034_io_card::ieee488_ctrl_w)
+WRITE_LINE_MEMBER(hp98034_io_card_device::ieee488_ctrl_w)
{
update_clr_hpib();
}
-void hp98034_io_card::update_dc(void)
+void hp98034_io_card_device::update_dc()
{
irq_w(!BIT(m_dc , 0));
sts_w(BIT(m_dc , 4));
@@ -284,17 +285,17 @@ void hp98034_io_card::update_dc(void)
update_clr_hpib();
}
-void hp98034_io_card::update_flg(void)
+void hp98034_io_card_device::update_flg()
{
flg_w(BIT(m_dc , 3) && !m_force_flg);
}
-void hp98034_io_card::update_np_irq(void)
+void hp98034_io_card_device::update_np_irq()
{
m_cpu->set_input_line(0 , (!m_ieee488->ifc_r() || m_clr_hpib) && BIT(m_dc , HP_NANO_IE_DC));
}
-void hp98034_io_card::update_data_out(void)
+void hp98034_io_card_device::update_data_out()
{
if (m_clr_hpib) {
m_data_out = 0;
@@ -302,7 +303,7 @@ void hp98034_io_card::update_data_out(void)
m_ieee488->dio_w(~m_data_out);
}
-void hp98034_io_card::update_ctrl_out(void)
+void hp98034_io_card_device::update_ctrl_out()
{
if (m_clr_hpib) {
m_ieee488->dav_w(1);
@@ -321,13 +322,13 @@ void hp98034_io_card::update_ctrl_out(void)
m_ieee488->ifc_w(!BIT(m_ctrl_out , 3));
}
-void hp98034_io_card::update_clr_hpib(void)
+void hp98034_io_card_device::update_clr_hpib()
{
m_clr_hpib = !m_ieee488->atn_r() && BIT(m_dc , 5);
update_data_out();
update_ctrl_out();
update_np_irq();
- LOG(("clr_hpib %d\n" , m_clr_hpib));
+ LOG("clr_hpib %d\n" , m_clr_hpib);
}
ROM_START(hp98034)
@@ -335,12 +336,12 @@ ROM_START(hp98034)
ROM_LOAD("1816-1242.bin" , 0 , 0x400 , CRC(301a9f5f) SHA1(3d7c1ace38c4d3178fdbf764c044535d9f6ac94f))
ROM_END
-static ADDRESS_MAP_START(np_program_map , AS_PROGRAM , 8 , hp98034_io_card)
+static ADDRESS_MAP_START(np_program_map , AS_PROGRAM , 8 , hp98034_io_card_device)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000 , 0x3ff) AM_ROM AM_REGION("np" , 0)
ADDRESS_MAP_END
-static ADDRESS_MAP_START(np_io_map , AS_IO , 8 , hp98034_io_card)
+static ADDRESS_MAP_START(np_io_map , AS_IO , 8 , hp98034_io_card_device)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0 , 0) AM_WRITE(hpib_data_w)
AM_RANGE(1 , 1) AM_WRITE(hpib_ctrl_w)
@@ -358,25 +359,25 @@ static MACHINE_CONFIG_FRAGMENT(hp98034)
MCFG_CPU_ADD("np" , HP_NANOPROCESSOR , 2000000)
MCFG_CPU_PROGRAM_MAP(np_program_map)
MCFG_CPU_IO_MAP(np_io_map)
- MCFG_HP_NANO_DC_CHANGED(WRITE8(hp98034_io_card , dc_w))
- MCFG_HP_NANO_READ_DC_CB(READ8(hp98034_io_card , dc_r))
- MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(hp98034_io_card , irq_callback)
+ MCFG_HP_NANO_DC_CHANGED(WRITE8(hp98034_io_card_device , dc_w))
+ MCFG_HP_NANO_READ_DC_CB(READ8(hp98034_io_card_device , dc_r))
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(hp98034_io_card_device , irq_callback)
MCFG_IEEE488_SLOT_ADD("ieee_dev" , 0 , hp_ieee488_devices , nullptr)
MCFG_IEEE488_BUS_ADD()
- MCFG_IEEE488_IFC_CALLBACK(WRITELINE(hp98034_io_card , ieee488_ctrl_w))
- MCFG_IEEE488_ATN_CALLBACK(WRITELINE(hp98034_io_card , ieee488_ctrl_w))
+ MCFG_IEEE488_IFC_CALLBACK(WRITELINE(hp98034_io_card_device , ieee488_ctrl_w))
+ MCFG_IEEE488_ATN_CALLBACK(WRITELINE(hp98034_io_card_device , ieee488_ctrl_w))
MACHINE_CONFIG_END
-const tiny_rom_entry *hp98034_io_card::device_rom_region() const
+const tiny_rom_entry *hp98034_io_card_device::device_rom_region() const
{
return ROM_NAME(hp98034);
}
-machine_config_constructor hp98034_io_card::device_mconfig_additions() const
+machine_config_constructor hp98034_io_card_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME(hp98034);
}
// device type definition
-const device_type HP98034_IO_CARD = device_creator<hp98034_io_card>;
+DEFINE_DEVICE_TYPE(HP98034_IO_CARD, hp98034_io_card_device, "hp98034", "HP98034 card")
diff --git a/src/devices/bus/hp9845_io/98034.h b/src/devices/bus/hp9845_io/98034.h
index bf36dc80380..9d751a29568 100644
--- a/src/devices/bus/hp9845_io/98034.h
+++ b/src/devices/bus/hp9845_io/98034.h
@@ -8,26 +8,24 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_HP9845_IO_98034_H
+#define MAME_BUS_HP9845_IO_98034_H
-#ifndef _98034_H_
-#define _98034_H_
+#pragma once
#include "hp9845_io.h"
#include "cpu/nanoprocessor/nanoprocessor.h"
#include "bus/ieee488/ieee488.h"
-class hp98034_io_card : public hp9845_io_card_device
+class hp98034_io_card_device : public hp9845_io_card_device
{
public:
// construction/destruction
- hp98034_io_card(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~hp98034_io_card();
+ hp98034_io_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~hp98034_io_card_device();
// device-level overrides
virtual ioport_constructor device_input_ports() const override;
- virtual void device_start() override;
- virtual void device_reset() override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -51,6 +49,10 @@ public:
DECLARE_WRITE_LINE_MEMBER(ieee488_ctrl_w);
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
required_device<hp_nanoprocessor_device> m_cpu;
required_ioport m_sw1;
@@ -70,16 +72,16 @@ private:
uint8_t m_ctrl_out;
uint8_t m_data_out;
- void update_dc(void);
- void update_flg(void);
- void update_np_irq(void);
- void update_data_out(void);
- void update_ctrl_out(void);
- void update_clr_hpib(void);
+ void update_dc();
+ void update_flg();
+ void update_np_irq();
+ void update_data_out();
+ void update_ctrl_out();
+ void update_clr_hpib();
};
// device type definition
-extern const device_type HP98034_IO_CARD;
+DECLARE_DEVICE_TYPE(HP98034_IO_CARD, hp98034_io_card_device)
-#endif /* _98034_H_ */
+#endif // MAME_BUS_HP9845_IO_98034_H
diff --git a/src/devices/bus/hp9845_io/98035.cpp b/src/devices/bus/hp9845_io/98035.cpp
index 061d42158a5..74d8639cb45 100644
--- a/src/devices/bus/hp9845_io/98035.cpp
+++ b/src/devices/bus/hp9845_io/98035.cpp
@@ -142,14 +142,14 @@ static const uint8_t dec_2_seven_segs[] = {
0xc8 // 9
};
-hp98035_io_card::hp98035_io_card(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hp9845_io_card_device(mconfig , HP98035_IO_CARD , "HP98035 card" , tag , owner , clock , "hp98035" , __FILE__),
+hp98035_io_card_device::hp98035_io_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : hp9845_io_card_device(mconfig , HP98035_IO_CARD , tag , owner , clock),
device_rtc_interface(mconfig , *this),
m_cpu(*this , "np")
{
}
-hp98035_io_card::~hp98035_io_card()
+hp98035_io_card_device::~hp98035_io_card_device()
{
}
@@ -157,12 +157,12 @@ static INPUT_PORTS_START(hp98035_port)
MCFG_HP9845_IO_SC(9)
INPUT_PORTS_END
-ioport_constructor hp98035_io_card::device_input_ports() const
+ioport_constructor hp98035_io_card_device::device_input_ports() const
{
return INPUT_PORTS_NAME(hp98035_port);
}
-void hp98035_io_card::device_start()
+void hp98035_io_card_device::device_start()
{
save_item(NAME(m_np_ram));
save_item(NAME(m_ram_addr));
@@ -189,7 +189,7 @@ void hp98035_io_card::device_start()
m_clock_timer = timer_alloc(CLOCK_TMR_ID);
}
-void hp98035_io_card::device_reset()
+void hp98035_io_card_device::device_reset()
{
hp9845_io_card_device::device_reset();
@@ -208,7 +208,7 @@ void hp98035_io_card::device_reset()
half_init();
}
-void hp98035_io_card::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void hp98035_io_card_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
if (id == MSEC_TMR_ID) {
// On real hw there's a full 4-bit decimal counter, but only the LSB is used to
@@ -255,7 +255,7 @@ void hp98035_io_card::device_timer(emu_timer &timer, device_timer_id id, int par
}
}
-READ16_MEMBER(hp98035_io_card::reg_r)
+READ16_MEMBER(hp98035_io_card_device::reg_r)
{
uint16_t res;
@@ -288,7 +288,7 @@ READ16_MEMBER(hp98035_io_card::reg_r)
return res;
}
-WRITE16_MEMBER(hp98035_io_card::reg_w)
+WRITE16_MEMBER(hp98035_io_card_device::reg_w)
{
bool new_inten;
@@ -318,33 +318,33 @@ WRITE16_MEMBER(hp98035_io_card::reg_w)
LOG(("write R%u=%04x\n" , offset + 4 , data));
}
-WRITE8_MEMBER(hp98035_io_card::ram_addr_w)
+WRITE8_MEMBER(hp98035_io_card_device::ram_addr_w)
{
m_ram_addr = data;
}
-READ8_MEMBER(hp98035_io_card::ram_data_r)
+READ8_MEMBER(hp98035_io_card_device::ram_data_r)
{
return m_np_ram[ m_ram_addr ];
}
-WRITE8_MEMBER(hp98035_io_card::ram_addr_data_w)
+WRITE8_MEMBER(hp98035_io_card_device::ram_addr_data_w)
{
m_ram_addr = data;
m_np_ram[ m_ram_addr ] = m_ram_data_in;
}
-WRITE8_MEMBER(hp98035_io_card::ram_data_w)
+WRITE8_MEMBER(hp98035_io_card_device::ram_data_w)
{
m_ram_data_in = data;
}
-WRITE8_MEMBER(hp98035_io_card::clock_key_w)
+WRITE8_MEMBER(hp98035_io_card_device::clock_key_w)
{
m_clock_keys = data & 7;
}
-READ8_MEMBER(hp98035_io_card::clock_digit_r)
+READ8_MEMBER(hp98035_io_card_device::clock_digit_r)
{
switch (m_clock_mux) {
case 1:
@@ -361,20 +361,20 @@ READ8_MEMBER(hp98035_io_card::clock_digit_r)
}
}
-WRITE8_MEMBER(hp98035_io_card::odr_w)
+WRITE8_MEMBER(hp98035_io_card_device::odr_w)
{
m_odr = data;
set_flg(true);
}
-READ8_MEMBER(hp98035_io_card::idr_r)
+READ8_MEMBER(hp98035_io_card_device::idr_r)
{
set_flg(true);
m_idr_full = false;
return m_idr;
}
-READ8_MEMBER(hp98035_io_card::np_status_r)
+READ8_MEMBER(hp98035_io_card_device::np_status_r)
{
// Bit 2 = 0: use US date format
uint8_t res = 0x03;
@@ -397,13 +397,13 @@ READ8_MEMBER(hp98035_io_card::np_status_r)
return res;
}
-WRITE8_MEMBER(hp98035_io_card::clear_np_irq_w)
+WRITE8_MEMBER(hp98035_io_card_device::clear_np_irq_w)
{
m_np_irq = false;
update_dc();
}
-READ8_MEMBER(hp98035_io_card::clock_mux_r)
+READ8_MEMBER(hp98035_io_card_device::clock_mux_r)
{
// External input lines are always active (bits 7-4)
uint8_t res = 0xf0 | m_clock_mux;
@@ -414,13 +414,13 @@ READ8_MEMBER(hp98035_io_card::clock_mux_r)
return res;
}
-WRITE8_MEMBER(hp98035_io_card::set_irq_w)
+WRITE8_MEMBER(hp98035_io_card_device::set_irq_w)
{
m_irq = true;
update_irq();
}
-READ8_MEMBER(hp98035_io_card::clr_inten_r)
+READ8_MEMBER(hp98035_io_card_device::clr_inten_r)
{
m_intflag = false;
m_inten = false;
@@ -429,14 +429,14 @@ READ8_MEMBER(hp98035_io_card::clr_inten_r)
return 0xff;
}
-WRITE8_MEMBER(hp98035_io_card::clr_inten_w)
+WRITE8_MEMBER(hp98035_io_card_device::clr_inten_w)
{
m_intflag = false;
m_inten = false;
update_irq();
}
-WRITE8_MEMBER(hp98035_io_card::dc_w)
+WRITE8_MEMBER(hp98035_io_card_device::dc_w)
{
if (data != m_dc) {
//LOG(("DC=%02x\n" , data));
@@ -445,7 +445,7 @@ WRITE8_MEMBER(hp98035_io_card::dc_w)
}
}
-void hp98035_io_card::half_init(void)
+void hp98035_io_card_device::half_init()
{
m_inten = false;
m_intflag = false;
@@ -460,13 +460,13 @@ void hp98035_io_card::half_init(void)
regen_clock_image();
}
-void hp98035_io_card::set_flg(bool value)
+void hp98035_io_card_device::set_flg(bool value)
{
m_flg = value;
flg_w(m_flg);
}
-void hp98035_io_card::update_irq(void)
+void hp98035_io_card_device::update_irq()
{
if (!m_inten) {
m_irq = false;
@@ -474,12 +474,12 @@ void hp98035_io_card::update_irq(void)
irq_w(m_inten && m_irq);
}
-void hp98035_io_card::update_dc(void)
+void hp98035_io_card_device::update_dc()
{
m_cpu->set_input_line(0 , m_np_irq && BIT(m_dc , HP_NANO_IE_DC));
}
-void hp98035_io_card::set_lhs_digits(unsigned v)
+void hp98035_io_card_device::set_lhs_digits(unsigned v)
{
if (v < 10) {
m_clock_segh = false;
@@ -490,13 +490,13 @@ void hp98035_io_card::set_lhs_digits(unsigned v)
m_clock_digits[ 2 ] = dec_2_seven_segs[ v ];
}
-void hp98035_io_card::set_rhs_digits(unsigned v)
+void hp98035_io_card_device::set_rhs_digits(unsigned v)
{
m_clock_digits[ 0 ] = dec_2_seven_segs[ v % 10 ];
m_clock_digits[ 1 ] = dec_2_seven_segs[ v / 10 ];
}
-void hp98035_io_card::regen_clock_image(void)
+void hp98035_io_card_device::regen_clock_image()
{
int tmp;
bool pm;
@@ -566,7 +566,7 @@ void hp98035_io_card::regen_clock_image(void)
m_clock_digits[ 1 ] , m_clock_digits[ 0 ]));
}
-void hp98035_io_card::clock_short_press(void)
+void hp98035_io_card_device::clock_short_press()
{
LOG(("Short press:%u\n" , m_clock_keys));
@@ -676,7 +676,7 @@ void hp98035_io_card::clock_short_press(void)
}
}
-void hp98035_io_card::clock_long_press(void)
+void hp98035_io_card_device::clock_long_press()
{
LOG(("Long press:%u\n" , m_clock_keys));
@@ -710,14 +710,14 @@ void hp98035_io_card::clock_long_press(void)
}
}
-void hp98035_io_card::log_current_time(void)
+void hp98035_io_card_device::log_current_time()
{
LOG(("Time = %d:%d:%d:%d:%d\n" , get_clock_register(RTC_MONTH) ,
get_clock_register(RTC_DAY) , get_clock_register(RTC_HOUR) ,
get_clock_register(RTC_MINUTE) , get_clock_register(RTC_SECOND)));
}
-void hp98035_io_card::rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second)
+void hp98035_io_card_device::rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second)
{
// Do nothing, time is kept in "device_rtc_interface" registers
}
@@ -727,12 +727,12 @@ ROM_START(hp98035)
ROM_LOAD("1818-0469.bin" , 0 , 0x800 , CRC(e16ab3bc) SHA1(34e89a37a2822f27af21969941201317dbff615b))
ROM_END
-static ADDRESS_MAP_START(np_program_map , AS_PROGRAM , 8 , hp98035_io_card)
+static ADDRESS_MAP_START(np_program_map , AS_PROGRAM , 8 , hp98035_io_card_device)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000 , 0x7ff) AM_ROM AM_REGION("np" , 0)
ADDRESS_MAP_END
-static ADDRESS_MAP_START(np_io_map , AS_IO , 8 , hp98035_io_card)
+static ADDRESS_MAP_START(np_io_map , AS_IO , 8 , hp98035_io_card_device)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0 , 0x0) AM_WRITE(ram_addr_w)
AM_RANGE(0x1 , 0x1) AM_READ(ram_data_r)
@@ -753,18 +753,18 @@ static MACHINE_CONFIG_FRAGMENT(hp98035)
MCFG_CPU_ADD("np" , HP_NANOPROCESSOR , XTAL_1MHz)
MCFG_CPU_PROGRAM_MAP(np_program_map)
MCFG_CPU_IO_MAP(np_io_map)
- MCFG_HP_NANO_DC_CHANGED(WRITE8(hp98035_io_card , dc_w))
+ MCFG_HP_NANO_DC_CHANGED(WRITE8(hp98035_io_card_device , dc_w))
MACHINE_CONFIG_END
-const tiny_rom_entry *hp98035_io_card::device_rom_region() const
+const tiny_rom_entry *hp98035_io_card_device::device_rom_region() const
{
return ROM_NAME(hp98035);
}
-machine_config_constructor hp98035_io_card::device_mconfig_additions() const
+machine_config_constructor hp98035_io_card_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME(hp98035);
}
// device type definition
-const device_type HP98035_IO_CARD = device_creator<hp98035_io_card>;
+DEFINE_DEVICE_TYPE(HP98035_IO_CARD, hp98035_io_card_device, "hp98035", "HP98035 card")
diff --git a/src/devices/bus/hp9845_io/98035.h b/src/devices/bus/hp9845_io/98035.h
index af096b8be93..7bfa8a7db58 100644
--- a/src/devices/bus/hp9845_io/98035.h
+++ b/src/devices/bus/hp9845_io/98035.h
@@ -8,28 +8,24 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_HP_9845_IO_98035_H
+#define MAME_BUS_HP_9845_IO_98035_H
-#ifndef _98035_H_
-#define _98035_H_
+#pragma once
#include "hp9845_io.h"
#include "cpu/nanoprocessor/nanoprocessor.h"
#include "dirtc.h"
-class hp98035_io_card : public hp9845_io_card_device,
- public device_rtc_interface
+class hp98035_io_card_device : public hp9845_io_card_device, public device_rtc_interface
{
public:
// construction/destruction
- hp98035_io_card(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~hp98035_io_card();
+ hp98035_io_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~hp98035_io_card_device();
// device-level overrides
virtual ioport_constructor device_input_ports() const override;
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -55,6 +51,11 @@ public:
DECLARE_WRITE8_MEMBER(dc_w);
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
required_device<hp_nanoprocessor_device> m_cpu;
@@ -102,21 +103,21 @@ private:
uint8_t m_prev_clock_keys;
unsigned m_clock_key_cnt;
- void half_init(void);
+ void half_init();
void set_flg(bool value);
- void update_irq(void);
- void update_dc(void);
+ void update_irq();
+ void update_dc();
void set_lhs_digits(unsigned v);
void set_rhs_digits(unsigned v);
- void regen_clock_image(void);
- void clock_short_press(void);
- void clock_long_press(void);
- void log_current_time(void);
+ void regen_clock_image();
+ void clock_short_press();
+ void clock_long_press();
+ void log_current_time();
virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override;
};
// device type definition
-extern const device_type HP98035_IO_CARD;
+DECLARE_DEVICE_TYPE(HP98035_IO_CARD, hp98035_io_card_device)
-#endif /* _98035_H_ */
+#endif // MAME_BUS_HP_9845_IO_98035_H
diff --git a/src/devices/bus/hp9845_io/hp9845_io.cpp b/src/devices/bus/hp9845_io/hp9845_io.cpp
index fa853d66c52..d270ac89e4b 100644
--- a/src/devices/bus/hp9845_io/hp9845_io.cpp
+++ b/src/devices/bus/hp9845_io/hp9845_io.cpp
@@ -12,13 +12,13 @@
#include "hp9845_io.h"
// device type definition
-const device_type HP9845_IO_SLOT = device_creator<hp9845_io_slot_device>;
+DEFINE_DEVICE_TYPE(HP9845_IO_SLOT, hp9845_io_slot_device, "hp9845_io_slot", "HP9845 I/O Slot")
// +---------------------+
// |hp9845_io_slot_device|
// +---------------------+
hp9845_io_slot_device::hp9845_io_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, HP9845_IO_SLOT, "HP9845 I/O Slot", tag, owner, clock, "hp9845_io_slot", __FILE__),
+ device_t(mconfig, HP9845_IO_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_irq_cb_func(*this),
m_sts_cb_func(*this),
@@ -84,8 +84,8 @@ uint8_t hp9845_io_card_device::get_sc(void)
return m_select_code_port->read() + HP9845_IO_FIRST_SC;
}
-hp9845_io_card_device::hp9845_io_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+hp9845_io_card_device::hp9845_io_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_slot_card_interface(mconfig, *this),
m_slot_dev(nullptr),
m_select_code_port(*this , "SC"),
diff --git a/src/devices/bus/hp9845_io/hp9845_io.h b/src/devices/bus/hp9845_io/hp9845_io.h
index 873a062e4b4..0125f1ca833 100644
--- a/src/devices/bus/hp9845_io/hp9845_io.h
+++ b/src/devices/bus/hp9845_io/hp9845_io.h
@@ -8,10 +8,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_HP9845_IO_HP9845_IO_H
+#define MAME_BUS_HP9845_IO_HP9845_IO_H
-#ifndef _HP9845_IO_H_
-#define _HP9845_IO_H_
+#pragma once
#define MCFG_HP9845_IO_SLOT_ADD(_tag) \
@@ -57,9 +57,9 @@ public:
virtual void device_start() override;
// Callback setups
- template<class _Object> static devcb_base &set_irq_cb_func(device_t &device, _Object object) { return downcast<hp9845_io_slot_device &>(device).m_irq_cb_func.set_callback(object); }
- template<class _Object> static devcb_base &set_sts_cb_func(device_t &device, _Object object) { return downcast<hp9845_io_slot_device &>(device).m_sts_cb_func.set_callback(object); }
- template<class _Object> static devcb_base &set_flg_cb_func(device_t &device, _Object object) { return downcast<hp9845_io_slot_device &>(device).m_flg_cb_func.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_cb_func(device_t &device, Object &&cb) { return downcast<hp9845_io_slot_device &>(device).m_irq_cb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sts_cb_func(device_t &device, Object &&cb) { return downcast<hp9845_io_slot_device &>(device).m_sts_cb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_flg_cb_func(device_t &device, Object &&cb) { return downcast<hp9845_io_slot_device &>(device).m_flg_cb_func.set_callback(std::forward<Object>(cb)); }
// irq/sts/flg signal handlers
void irq_w(uint8_t sc , int state);
@@ -90,7 +90,7 @@ public:
protected:
// construction/destruction
- hp9845_io_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ hp9845_io_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual ~hp9845_io_card_device();
// device-level overrides
@@ -107,8 +107,8 @@ protected:
};
// device type definition
-extern const device_type HP9845_IO_SLOT;
+DECLARE_DEVICE_TYPE(HP9845_IO_SLOT, hp9845_io_slot_devices)
SLOT_INTERFACE_EXTERN(hp9845_io_slot_devices);
-#endif /* _HP9845_IO_H_ */
+#endif // MAME_BUS_HP9845_IO_HP9845_IO_H
diff --git a/src/devices/bus/hp_hil/hil_devices.h b/src/devices/bus/hp_hil/hil_devices.h
index 23c0d5ed6ee..01b74af07a4 100644
--- a/src/devices/bus/hp_hil/hil_devices.h
+++ b/src/devices/bus/hp_hil/hil_devices.h
@@ -6,8 +6,8 @@
***************************************************************************/
-#ifndef __HP_HIL_DEVICES_H__
-#define __HP_HIL_DEVICES_H__
+#ifndef MAME_BUS_HP_HIL_HIL_DEVICES_H
+#define MAME_BUS_HP_HIL_HIL_DEVICES_H
#define STR_KBD_HP_46020A "hp_46020a" // ITF Keyboard
@@ -22,4 +22,4 @@
SLOT_INTERFACE_EXTERN(hp_hil_devices);
-#endif /* __HP_HIL_DEVICES_H__ */
+#endif // MAME_BUS_HP_HIL_HIL_DEVICES_H
diff --git a/src/devices/bus/hp_hil/hlekbd.cpp b/src/devices/bus/hp_hil/hlekbd.cpp
index 980d373750d..e068e9a0ec5 100644
--- a/src/devices/bus/hp_hil/hlekbd.cpp
+++ b/src/devices/bus/hp_hil/hlekbd.cpp
@@ -9,11 +9,13 @@
DEVICE TYPE GLOBALS
***************************************************************************/
-device_type const HP_IPC_HLE_KEYBOARD = device_creator<bus::hp_hil::hle_hp_ipc_device>;
+DEFINE_DEVICE_TYPE_NS(HP_IPC_HLE_KEYBOARD, bus::hp_hil, hle_hp_ipc_device, "hp_ipc_hle_kbd", "HP Integral Keyboard (HLE)")
namespace bus { namespace hp_hil {
+
namespace {
+
/***************************************************************************
INPUT PORT DEFINITIONS
***************************************************************************/
@@ -228,8 +230,8 @@ INPUT_PORTS_END
designated device constructor
--------------------------------------------------*/
-hle_device_base::hle_device_base(machine_config const &mconfig, device_type type, char const *name, char const *tag, device_t *owner, uint32_t clock, char const *shortname, char const *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+hle_device_base::hle_device_base(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_hp_hil_interface(mconfig, *this)
, device_matrix_keyboard_interface(mconfig, *this, "COL1", "COL2", "COL3", "COL4", "COL5", "COL6", "COL7", "COL8", "COL9", "COL10", "COL11", "COL12", "COL13", "COL14", "COL15")
{ }
@@ -394,7 +396,7 @@ void hle_device_base::key_break(uint8_t row, uint8_t column)
--------------------------------------------------*/
hle_hp_ipc_device::hle_hp_ipc_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
- : hle_device_base(mconfig, HP_IPC_HLE_KEYBOARD, "HP Integral Keyboard (HLE)", tag, owner, clock, "hp_ipc_hle_kbd", __FILE__)
+ : hle_device_base(mconfig, HP_IPC_HLE_KEYBOARD, tag, owner, clock)
{ }
diff --git a/src/devices/bus/hp_hil/hlekbd.h b/src/devices/bus/hp_hil/hlekbd.h
index 5b72367f010..3c7f3fdda8c 100644
--- a/src/devices/bus/hp_hil/hlekbd.h
+++ b/src/devices/bus/hp_hil/hlekbd.h
@@ -9,21 +9,19 @@
#include "machine/keyboard.h"
-extern device_type const HP_IPC_HLE_KEYBOARD;
-
-
namespace bus { namespace hp_hil {
+
class hle_device_base
: public device_t
, public device_hp_hil_interface
, protected device_matrix_keyboard_interface<15U>
{
public:
+ virtual ~hle_device_base() override;
protected:
// constructor/destructor
- hle_device_base(machine_config const &mconfig, device_type type, char const *name, char const *tag, device_t *owner, uint32_t clock, char const *shortname, char const *source);
- virtual ~hle_device_base() override;
+ hle_device_base(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, uint32_t clock);
// device overrides
virtual void device_start() override;
@@ -57,4 +55,7 @@ public:
} } // namespace bus::hp_hil
+
+DECLARE_DEVICE_TYPE_NS(HP_IPC_HLE_KEYBOARD, bus::hp_hil, hle_hp_ipc_device);
+
#endif // MAME_DEVICES_HP_HIL_HLEKBD_H
diff --git a/src/devices/bus/hp_hil/hp_hil.cpp b/src/devices/bus/hp_hil/hp_hil.cpp
index 991cb808667..653e4766842 100644
--- a/src/devices/bus/hp_hil/hp_hil.cpp
+++ b/src/devices/bus/hp_hil/hp_hil.cpp
@@ -28,7 +28,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type HP_HIL_SLOT = device_creator<hp_hil_slot_device>;
+DEFINE_DEVICE_TYPE(HP_HIL_SLOT, hp_hil_slot_device, "hp_hil_slot", "HP-HIL Slot")
//**************************************************************************
// LIVE DEVICE
@@ -38,7 +38,7 @@ const device_type HP_HIL_SLOT = device_creator<hp_hil_slot_device>;
// hp_hil_slot_device - constructor
//-------------------------------------------------
hp_hil_slot_device::hp_hil_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HP_HIL_SLOT, "HP_HIL_SLOT", tag, owner, clock, "hp_hil_slot", __FILE__)
+ : device_t(mconfig, HP_HIL_SLOT, tag, owner, clock)
, device_slot_interface(mconfig, *this)
{
}
@@ -67,14 +67,14 @@ void hp_hil_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type HP_HIL_MLC = device_creator<hp_hil_mlc_device>;
+DEFINE_DEVICE_TYPE(HP_HIL_MLC, hp_hil_mlc_device, "hp_hil_mlc", "HP-HIL Master Link Controller")
//-------------------------------------------------
// hp_hil_mlc_device - constructor
//-------------------------------------------------
hp_hil_mlc_device::hp_hil_mlc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HP_HIL_MLC, "HP-HIL Master Link Controller", tag, owner, clock, "hp_hil", __FILE__)
+ : device_t(mconfig, HP_HIL_MLC, tag, owner, clock)
, int_cb(*this)
, nmi_cb(*this)
{
diff --git a/src/devices/bus/hp_hil/hp_hil.h b/src/devices/bus/hp_hil/hp_hil.h
index 7b805f1528f..178f512e350 100644
--- a/src/devices/bus/hp_hil/hp_hil.h
+++ b/src/devices/bus/hp_hil/hp_hil.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_HP_HIL_HP_HIL_H
+#define MAME_BUS_HP_HIL_HP_HIL_H
-#ifndef __HP_HIL_H__
-#define __HP_HIL_H__
+#pragma once
#include "emu.h"
@@ -97,8 +97,7 @@
//**************************************************************************
-class hp_hil_slot_device : public device_t,
- public device_slot_interface
+class hp_hil_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
@@ -118,7 +117,7 @@ protected:
// device type definition
-extern const device_type HP_HIL_SLOT;
+DECLARE_DEVICE_TYPE(HP_HIL_SLOT, hp_hil_slot_device)
class device_hp_hil_interface;
@@ -130,8 +129,8 @@ public:
hp_hil_mlc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~hp_hil_mlc_device() { m_device_list.detach_all(); }
- template<class _Object> static devcb_base &set_int_callback(device_t &device, _Object object) { return downcast<hp_hil_mlc_device &>(device).int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nmi_callback(device_t &device, _Object object) { return downcast<hp_hil_mlc_device &>(device).nmi_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_int_callback(device_t &device, Object &&cb) { return downcast<hp_hil_mlc_device &>(device).int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nmi_callback(device_t &device, Object &&cb) { return downcast<hp_hil_mlc_device &>(device).nmi_cb.set_callback(std::forward<Object>(cb)); }
void add_hp_hil_device(device_hp_hil_interface *device);
@@ -157,7 +156,7 @@ private:
// device type definition
-extern const device_type HP_HIL_MLC;
+DECLARE_DEVICE_TYPE(HP_HIL_MLC, hp_hil_mlc_device)
// ======================> device_hp_hil_interface
@@ -165,10 +164,10 @@ extern const device_type HP_HIL_MLC;
class device_hp_hil_interface : public device_slot_card_interface
{
friend class hp_hil_mlc_device;
+ template <class ElementType> friend class simple_list;
public:
// construction/destruction
- device_hp_hil_interface(const machine_config &mconfig, device_t &device);
virtual ~device_hp_hil_interface();
device_hp_hil_interface *next() const { return m_next; }
@@ -181,20 +180,24 @@ public:
virtual void hil_write(uint16_t data) { };
int device_id() { return m_device_id; };
- hp_hil_mlc_device *m_hp_hil_mlc;
- device_t *m_hp_hil_mlc_dev;
- device_hp_hil_interface *m_next;
-
protected:
+ device_hp_hil_interface(const machine_config &mconfig, device_t &device);
+
virtual void device_reset() { }
+ hp_hil_mlc_device *m_hp_hil_mlc;
+ device_t *m_hp_hil_mlc_dev;
+
hp_hil_slot_device *m_slot;
int m_device_id;
uint16_t m_device_id16;
bool m_powerup;
bool m_passthru;
+
+private:
+ device_hp_hil_interface *m_next;
};
-#endif /* __HP_HIL_H__ */
+#endif // MAME_BUS_HP_HIL_HP_HIL_H
diff --git a/src/devices/bus/hp_optroms/hp_optrom.cpp b/src/devices/bus/hp_optroms/hp_optrom.cpp
index 0887367f3b3..389293e7fea 100644
--- a/src/devices/bus/hp_optroms/hp_optrom.cpp
+++ b/src/devices/bus/hp_optroms/hp_optrom.cpp
@@ -13,21 +13,20 @@
#include "softlist.h"
#include "cpu/hphybrid/hphybrid.h"
-const device_type HP_OPTROM_CART = device_creator<hp_optrom_cart_device>;
-const device_type HP_OPTROM_SLOT = device_creator<hp_optrom_slot_device>;
+DEFINE_DEVICE_TYPE(HP_OPTROM_CART, hp_optrom_cart_device, "hp_optrom_cart", "HP9845 optional ROM cartridge")
+DEFINE_DEVICE_TYPE(HP_OPTROM_SLOT, hp_optrom_slot_device, "hp_optrom_slot", "HP9845 optional ROM slot")
// +---------------------+
// |hp_optrom_cart_device|
// +---------------------+
-hp_optrom_cart_device::hp_optrom_cart_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+hp_optrom_cart_device::hp_optrom_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_slot_card_interface(mconfig, *this)
{
}
hp_optrom_cart_device::hp_optrom_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, HP_OPTROM_CART, "HP9845 optional ROM cartridge", tag, owner, clock, "hp_optrom_cart", __FILE__),
- device_slot_card_interface(mconfig, *this)
+ hp_optrom_cart_device(mconfig, HP_OPTROM_CART, tag, owner, clock)
{
}
@@ -35,7 +34,7 @@ hp_optrom_cart_device::hp_optrom_cart_device(const machine_config &mconfig, cons
// |hp_optrom_slot_device|
// +---------------------+
hp_optrom_slot_device::hp_optrom_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, HP_OPTROM_SLOT, "HP9845 optional ROM Slot", tag, owner, clock, "hp_optrom_slot", __FILE__),
+ device_t(mconfig, HP_OPTROM_SLOT, tag, owner, clock),
device_image_interface(mconfig, *this),
device_slot_interface(mconfig, *this),
m_cart(nullptr),
diff --git a/src/devices/bus/hp_optroms/hp_optrom.h b/src/devices/bus/hp_optroms/hp_optrom.h
index 13a550c202d..dfc43021035 100644
--- a/src/devices/bus/hp_optroms/hp_optrom.h
+++ b/src/devices/bus/hp_optroms/hp_optrom.h
@@ -8,10 +8,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_HP_OPTROMS_HP_OPTROM_H
+#define MAME_BUS_HP_OPTROMS_HP_OPTROM_H
-#ifndef _HP_OPTROM_H_
-#define _HP_OPTROM_H_
+#pragma once
#include "softlist_dev.h"
@@ -20,12 +20,14 @@ class hp_optrom_cart_device : public device_t,
public device_slot_card_interface
{
public:
- // construction/destruction
- hp_optrom_cart_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- hp_optrom_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ hp_optrom_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ hp_optrom_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {}
+ // device-level overrides
+ virtual void device_start() override { }
};
class hp_optrom_slot_device : public device_t,
@@ -34,40 +36,40 @@ class hp_optrom_slot_device : public device_t,
{
public:
// construction/destruction
- hp_optrom_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~hp_optrom_slot_device();
-
- // device-level overrides
- virtual void device_start() override;
-
- // image-level overrides
- virtual image_init_result call_load() override;
- virtual void call_unload() override;
- virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); }
-
- virtual iodevice_t image_type() const override { return IO_ROM; }
- virtual bool is_readable() const override { return true; }
- virtual bool is_writeable() const override { return false; }
- virtual bool is_creatable() const override { return false; }
- virtual bool must_be_loaded() const override { return false; }
- virtual bool is_reset_on_load() const override { return true; }
- virtual const char *image_interface() const override { return "hp9845b_rom"; }
- virtual const char *file_extensions() const override { return "bin"; }
-
- // slot interface overrides
- virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override;
+ hp_optrom_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~hp_optrom_slot_device();
protected:
- hp_optrom_cart_device *m_cart;
- std::vector<uint8_t> m_content;
- offs_t m_base_addr;
- offs_t m_end_addr;
+ // device-level overrides
+ virtual void device_start() override;
+
+ // image-level overrides
+ virtual image_init_result call_load() override;
+ virtual void call_unload() override;
+ virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); }
+
+ virtual iodevice_t image_type() const override { return IO_ROM; }
+ virtual bool is_readable() const override { return true; }
+ virtual bool is_writeable() const override { return false; }
+ virtual bool is_creatable() const override { return false; }
+ virtual bool must_be_loaded() const override { return false; }
+ virtual bool is_reset_on_load() const override { return true; }
+ virtual const char *image_interface() const override { return "hp9845b_rom"; }
+ virtual const char *file_extensions() const override { return "bin"; }
+
+ // slot interface overrides
+ virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override;
+
+ hp_optrom_cart_device *m_cart;
+ std::vector<uint8_t> m_content;
+ offs_t m_base_addr;
+ offs_t m_end_addr;
};
// device type definition
-extern const device_type HP_OPTROM_SLOT;
-extern const device_type HP_OPTROM_CART;
+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);
-#endif /* _HP_OPTROM_H_ */
+#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 b23fb0c02d1..f068a5f29f3 100644
--- a/src/devices/bus/ieee488/c2031.cpp
+++ b/src/devices/bus/ieee488/c2031.cpp
@@ -33,7 +33,7 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C2031 = device_creator<c2031_device>;
+DEFINE_DEVICE_TYPE(C2031, c2031_device, "c2031", "Commodore 2031")
//-------------------------------------------------
@@ -399,19 +399,20 @@ inline int c2031_device::get_device_number()
//-------------------------------------------------
c2031_device::c2031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, C2031, "C2031", tag, owner, clock, "c2031", __FILE__),
- device_ieee488_interface(mconfig, *this),
- m_maincpu(*this, M6502_TAG),
- m_via0(*this, M6522_0_TAG),
- m_via1(*this, M6522_1_TAG),
- m_ga(*this, C64H156_TAG),
- m_floppy(*this, C64H156_TAG":0:525ssqd"),
- m_address(*this, "ADDRESS"),
- m_nrfd_out(1),
- m_ndac_out(1),
- m_atna(1), m_ifc(0),
- m_via0_irq(0),
- m_via1_irq(0)
+ : device_t(mconfig, C2031, tag, owner, clock)
+ , device_ieee488_interface(mconfig, *this)
+ , m_maincpu(*this, M6502_TAG)
+ , m_via0(*this, M6522_0_TAG)
+ , m_via1(*this, M6522_1_TAG)
+ , m_ga(*this, C64H156_TAG)
+ , m_floppy(*this, C64H156_TAG":0:525ssqd")
+ , m_address(*this, "ADDRESS")
+ , m_nrfd_out(1)
+ , m_ndac_out(1)
+ , m_atna(1)
+ , m_ifc(0)
+ , m_via0_irq(0)
+ , m_via1_irq(0)
{
}
diff --git a/src/devices/bus/ieee488/c2031.h b/src/devices/bus/ieee488/c2031.h
index 1b7212e0581..38b102d381a 100644
--- a/src/devices/bus/ieee488/c2031.h
+++ b/src/devices/bus/ieee488/c2031.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_C2031_H
+#define MAME_BUS_IEEE488_C2031_H
-#ifndef __C2031__
-#define __C2031__
+#pragma once
#include "ieee488.h"
#include "cpu/m6502/m6502.h"
@@ -79,8 +79,7 @@ protected:
// device type definition
-extern const device_type C2031;
-
+DECLARE_DEVICE_TYPE(C2031, c2031_device)
-#endif
+#endif // MAME_BUS_IEEE488_C2031_H
diff --git a/src/devices/bus/ieee488/c2040.cpp b/src/devices/bus/ieee488/c2040.cpp
index f16ba22261a..35bba2028c7 100644
--- a/src/devices/bus/ieee488/c2040.cpp
+++ b/src/devices/bus/ieee488/c2040.cpp
@@ -70,9 +70,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C2040 = device_creator<c2040_t>;
-const device_type C3040 = device_creator<c3040_t>;
-const device_type C4040 = device_creator<c4040_t>;
+DEFINE_DEVICE_TYPE(C2040, c2040_device, "c2040", "Commodore 2040")
+DEFINE_DEVICE_TYPE(C3040, c3040_device, "c3040", "Commodore 3040")
+DEFINE_DEVICE_TYPE(C4040, c4040_device, "c4040", "Commodore 4040")
//-------------------------------------------------
@@ -97,7 +97,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c2040_t::device_rom_region() const
+const tiny_rom_entry *c2040_device::device_rom_region() const
{
return ROM_NAME( c2040 );
}
@@ -124,7 +124,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c3040_t::device_rom_region() const
+const tiny_rom_entry *c3040_device::device_rom_region() const
{
return ROM_NAME( c3040 );
}
@@ -159,7 +159,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c4040_t::device_rom_region() const
+const tiny_rom_entry *c4040_device::device_rom_region() const
{
return ROM_NAME( c4040 );
}
@@ -169,12 +169,12 @@ const tiny_rom_entry *c4040_t::device_rom_region() const
// ADDRESS_MAP( c2040_main_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c2040_main_mem, AS_PROGRAM, 8, c2040_t )
+static ADDRESS_MAP_START( c2040_main_mem, AS_PROGRAM, 8, c2040_device )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0100) AM_DEVICE(M6532_0_TAG, mos6532_t, ram_map)
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0100) AM_DEVICE(M6532_1_TAG, mos6532_t, ram_map)
- AM_RANGE(0x0200, 0x021f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_0_TAG, mos6532_t, io_map)
- AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_1_TAG, mos6532_t, io_map)
+ AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0100) AM_DEVICE(M6532_0_TAG, mos6532_new_device, ram_map)
+ AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0100) AM_DEVICE(M6532_1_TAG, mos6532_new_device, ram_map)
+ AM_RANGE(0x0200, 0x021f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_0_TAG, mos6532_new_device, io_map)
+ AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_1_TAG, mos6532_new_device, io_map)
AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share1")
AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share2")
AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share3")
@@ -187,11 +187,11 @@ ADDRESS_MAP_END
// ADDRESS_MAP( c2040_fdc_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c2040_fdc_mem, AS_PROGRAM, 8, c2040_t )
+static ADDRESS_MAP_START( c2040_fdc_mem, AS_PROGRAM, 8, c2040_device )
ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_DEVICE(M6530_TAG, mos6530_t, ram_map)
+ AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_DEVICE(M6530_TAG, mos6530_new_device, ram_map)
AM_RANGE(0x0040, 0x004f) AM_MIRROR(0x0330) AM_DEVICE(M6522_TAG, via6522_device, map)
- AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVICE(M6530_TAG, mos6530_t, io_map)
+ AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVICE(M6530_TAG, mos6530_new_device, io_map)
AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("share2")
AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("share3")
@@ -204,7 +204,7 @@ ADDRESS_MAP_END
// riot6532 uc1
//-------------------------------------------------
-READ8_MEMBER( c2040_t::dio_r )
+READ8_MEMBER( c2040_device::dio_r )
{
/*
@@ -224,7 +224,7 @@ READ8_MEMBER( c2040_t::dio_r )
return m_bus->dio_r();
}
-WRITE8_MEMBER( c2040_t::dio_w )
+WRITE8_MEMBER( c2040_device::dio_w )
{
/*
@@ -249,7 +249,7 @@ WRITE8_MEMBER( c2040_t::dio_w )
// riot6532 ue1
//-------------------------------------------------
-READ8_MEMBER( c2040_t::riot1_pa_r )
+READ8_MEMBER( c2040_device::riot1_pa_r )
{
/*
@@ -280,7 +280,7 @@ READ8_MEMBER( c2040_t::riot1_pa_r )
return data;
}
-WRITE8_MEMBER( c2040_t::riot1_pa_w )
+WRITE8_MEMBER( c2040_device::riot1_pa_w )
{
/*
@@ -315,7 +315,7 @@ WRITE8_MEMBER( c2040_t::riot1_pa_w )
update_ieee_signals();
}
-READ8_MEMBER( c2040_t::riot1_pb_r )
+READ8_MEMBER( c2040_device::riot1_pb_r )
{
/*
@@ -346,7 +346,7 @@ READ8_MEMBER( c2040_t::riot1_pb_r )
return data;
}
-WRITE8_MEMBER( c2040_t::riot1_pb_w )
+WRITE8_MEMBER( c2040_device::riot1_pb_w )
{
/*
@@ -374,7 +374,7 @@ WRITE8_MEMBER( c2040_t::riot1_pb_w )
}
-WRITE8_MEMBER( c2040_t::via_pb_w )
+WRITE8_MEMBER( c2040_device::via_pb_w )
{
/*
@@ -418,7 +418,7 @@ SLOT_INTERFACE_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c2040_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c2040_device::floppy_formats )
FLOPPY_C3040_FORMAT,
FLOPPY_G64_FORMAT
FLOPPY_FORMATS_END
@@ -428,7 +428,7 @@ FLOPPY_FORMATS_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c3040_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c3040_device::floppy_formats )
FLOPPY_C3040_FORMAT,
FLOPPY_G64_FORMAT
FLOPPY_FORMATS_END
@@ -438,7 +438,7 @@ FLOPPY_FORMATS_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c4040_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c4040_device::floppy_formats )
FLOPPY_C4040_FORMAT,
FLOPPY_G64_FORMAT
FLOPPY_FORMATS_END
@@ -453,15 +453,15 @@ static MACHINE_CONFIG_FRAGMENT( c2040 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
MCFG_CPU_PROGRAM_MAP(c2040_main_mem)
- MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532n, XTAL_16MHz/16)
- MCFG_MOS6530n_IN_PA_CB(READ8(c2040_t, dio_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_t, dio_w))
+ MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532_NEW, XTAL_16MHz/16)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c2040_device, dio_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_device, dio_w))
- MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532n, XTAL_16MHz/16)
- MCFG_MOS6530n_IN_PA_CB(READ8(c2040_t, riot1_pa_r))
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(c2040_t, riot1_pa_w))
- MCFG_MOS6530n_IN_PB_CB(READ8(c2040_t, riot1_pb_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_t, riot1_pb_w))
+ MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532_NEW, XTAL_16MHz/16)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c2040_device, riot1_pa_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(c2040_device, riot1_pa_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(c2040_device, riot1_pb_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_device, riot1_pb_w))
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
@@ -469,25 +469,25 @@ static MACHINE_CONFIG_FRAGMENT( c2040 )
MCFG_CPU_PROGRAM_MAP(c2040_fdc_mem)
MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_16MHz/16)
- MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c2040_fdc_t, read))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2040_t, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530n, XTAL_16MHz/16)
- MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c2040_fdc_t, write))
- MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_t, drv_sel_w))
- MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_t, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_t, ds1_w))
+ MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c2040_fdc_device, read))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2040_device, via_pb_w))
+ MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_device, rw_sel_w))
+
+ MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL_16MHz/16)
+ MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c2040_fdc_device, write))
+ MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_device, drv_sel_w))
+ MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_device, ds0_w))
+ MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_device, ds1_w))
MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
- MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c2040_fdc_t, wps_r))
+ MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c2040_fdc_device, wps_r))
MCFG_DEVICE_ADD(FDC_TAG, C2040_FDC, XTAL_16MHz)
- MCFG_C2040_SYNC_CALLBACK(DEVWRITELINE(M6530_TAG, mos6530_t, pb6_w))
+ MCFG_C2040_SYNC_CALLBACK(DEVWRITELINE(M6530_TAG, mos6530_new_device, pb6_w))
MCFG_C2040_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1))
MCFG_C2040_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1))
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c2040_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c2040_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c2040_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c2040_device::floppy_formats)
MACHINE_CONFIG_END
@@ -496,7 +496,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c2040_t::device_mconfig_additions() const
+machine_config_constructor c2040_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c2040 );
}
@@ -511,15 +511,15 @@ static MACHINE_CONFIG_FRAGMENT( c3040 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
MCFG_CPU_PROGRAM_MAP(c2040_main_mem)
- MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532n, XTAL_16MHz/16)
- MCFG_MOS6530n_IN_PA_CB(READ8(c2040_t, dio_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_t, dio_w))
+ MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532_NEW, XTAL_16MHz/16)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c2040_device, dio_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_device, dio_w))
- MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532n, XTAL_16MHz/16)
- MCFG_MOS6530n_IN_PA_CB(READ8(c2040_t, riot1_pa_r))
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(c2040_t, riot1_pa_w))
- MCFG_MOS6530n_IN_PB_CB(READ8(c2040_t, riot1_pb_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_t, riot1_pb_w))
+ MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532_NEW, XTAL_16MHz/16)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c2040_device, riot1_pa_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(c2040_device, riot1_pa_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(c2040_device, riot1_pb_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_device, riot1_pb_w))
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
@@ -527,25 +527,25 @@ static MACHINE_CONFIG_FRAGMENT( c3040 )
MCFG_CPU_PROGRAM_MAP(c2040_fdc_mem)
MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_16MHz/16)
- MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c2040_fdc_t, read))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2040_t, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530n, XTAL_16MHz/16)
- MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c2040_fdc_t, write))
- MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_t, drv_sel_w))
- MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_t, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_t, ds1_w))
- MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c2040_fdc_t, wps_r))
+ MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c2040_fdc_device, read))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2040_device, via_pb_w))
+ MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_device, rw_sel_w))
+
+ MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL_16MHz/16)
+ MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c2040_fdc_device, write))
+ MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_device, drv_sel_w))
+ MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_device, ds0_w))
+ MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_device, ds1_w))
+ MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c2040_fdc_device, wps_r))
MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
MCFG_DEVICE_ADD(FDC_TAG, C2040_FDC, XTAL_16MHz)
- MCFG_C2040_SYNC_CALLBACK(DEVWRITELINE(M6530_TAG, mos6530_t, pb6_w))
+ MCFG_C2040_SYNC_CALLBACK(DEVWRITELINE(M6530_TAG, mos6530_new_device, pb6_w))
MCFG_C2040_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1))
MCFG_C2040_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1))
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c3040_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c3040_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c3040_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c3040_device::floppy_formats)
MACHINE_CONFIG_END
@@ -554,7 +554,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c3040_t::device_mconfig_additions() const
+machine_config_constructor c3040_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c3040 );
}
@@ -569,15 +569,15 @@ static MACHINE_CONFIG_FRAGMENT( c4040 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
MCFG_CPU_PROGRAM_MAP(c2040_main_mem)
- MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532n, XTAL_16MHz/16)
- MCFG_MOS6530n_IN_PA_CB(READ8(c2040_t, dio_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_t, dio_w))
+ MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532_NEW, XTAL_16MHz/16)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c2040_device, dio_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_device, dio_w))
- MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532n, XTAL_16MHz/16)
- MCFG_MOS6530n_IN_PA_CB(READ8(c2040_t, riot1_pa_r))
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(c2040_t, riot1_pa_w))
- MCFG_MOS6530n_IN_PB_CB(READ8(c2040_t, riot1_pb_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_t, riot1_pb_w))
+ MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532_NEW, XTAL_16MHz/16)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c2040_device, riot1_pa_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(c2040_device, riot1_pa_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(c2040_device, riot1_pb_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c2040_device, riot1_pb_w))
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
@@ -585,25 +585,25 @@ static MACHINE_CONFIG_FRAGMENT( c4040 )
MCFG_CPU_PROGRAM_MAP(c2040_fdc_mem)
MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_16MHz/16)
- MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c2040_fdc_t, read))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2040_t, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530n, XTAL_16MHz/16)
- MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c2040_fdc_t, write))
- MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_t, drv_sel_w))
- MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_t, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_t, ds1_w))
- MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c2040_fdc_t, wps_r))
+ MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c2040_fdc_device, read))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2040_device, via_pb_w))
+ MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_device, rw_sel_w))
+
+ MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL_16MHz/16)
+ MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c2040_fdc_device, write))
+ MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_device, drv_sel_w))
+ MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_device, ds0_w))
+ MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c2040_fdc_device, ds1_w))
+ MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c2040_fdc_device, wps_r))
MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
MCFG_DEVICE_ADD(FDC_TAG, C2040_FDC, XTAL_16MHz)
- MCFG_C2040_SYNC_CALLBACK(DEVWRITELINE(M6530_TAG, mos6530_t, pb6_w))
+ MCFG_C2040_SYNC_CALLBACK(DEVWRITELINE(M6530_TAG, mos6530_new_device, pb6_w))
MCFG_C2040_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1))
MCFG_C2040_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1))
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c4040_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c4040_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c4040_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c4040_device::floppy_formats)
MACHINE_CONFIG_END
@@ -612,7 +612,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c4040_t::device_mconfig_additions() const
+machine_config_constructor c4040_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c4040 );
}
@@ -640,7 +640,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c2040_t::device_input_ports() const
+ioport_constructor c2040_device::device_input_ports() const
{
return INPUT_PORTS_NAME( c2040 );
}
@@ -655,7 +655,7 @@ ioport_constructor c2040_t::device_input_ports() const
// update_ieee_signals -
//-------------------------------------------------
-inline void c2040_t::update_ieee_signals()
+inline void c2040_device::update_ieee_signals()
{
int atn = m_bus->atn_r();
int nrfd = !(!(!(atn && m_atna) && m_rfdo) || !(atn || m_atna));
@@ -672,11 +672,11 @@ inline void c2040_t::update_ieee_signals()
//**************************************************************************
//-------------------------------------------------
-// c2040_t - constructor
+// c2040_device - constructor
//-------------------------------------------------
-c2040_t::c2040_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+c2040_device::c2040_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_ieee488_interface(mconfig, *this),
m_maincpu(*this, M6502_TAG),
m_fdccpu(*this, M6504_TAG),
@@ -691,52 +691,42 @@ c2040_t::c2040_t(const machine_config &mconfig, device_type type, const char *na
m_address(*this, "ADDRESS"),
m_rfdo(1),
m_daco(1),
- m_atna(1), m_ifc(0)
+ m_atna(1),
+ m_ifc(0)
{
}
-c2040_t::c2040_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C2040, "C2040", tag, owner, clock, "c2040", __FILE__),
- device_ieee488_interface(mconfig, *this),
- m_maincpu(*this, M6502_TAG),
- m_fdccpu(*this, M6504_TAG),
- m_riot0(*this, M6532_0_TAG),
- m_riot1(*this, M6532_1_TAG),
- m_miot(*this, M6530_TAG),
- m_via(*this, M6522_TAG),
- m_floppy0(*this, FDC_TAG":0:525ssqd"),
- m_floppy1(*this, FDC_TAG":1:525ssqd"),
- m_fdc(*this, FDC_TAG),
- m_gcr(*this, "gcr"),
- m_address(*this, "ADDRESS"),
- m_rfdo(1),
- m_daco(1),
- m_atna(1), m_ifc(0)
+c2040_device::c2040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ c2040_device(mconfig, C2040, tag, owner, clock)
{
}
//-------------------------------------------------
-// c3040_t - constructor
+// c3040_device - constructor
//-------------------------------------------------
-c3040_t::c3040_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- c2040_t(mconfig, C3040, "C3040", tag, owner, clock, "c3040", __FILE__) { }
+c3040_device::c3040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ c2040_device(mconfig, C3040, tag, owner, clock)
+{
+}
//-------------------------------------------------
-// c4040_t - constructor
+// c4040_device - constructor
//-------------------------------------------------
-c4040_t::c4040_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- c2040_t(mconfig, C4040, "C4040", tag, owner, clock, "c4040", __FILE__) { }
+c4040_device::c4040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ c2040_device(mconfig, C4040, tag, owner, clock)
+{
+}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void c2040_t::device_start()
+void c2040_device::device_start()
{
// install image callbacks
m_fdc->set_floppy(m_floppy0, m_floppy1);
@@ -753,7 +743,7 @@ void c2040_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c2040_t::device_reset()
+void c2040_device::device_reset()
{
m_maincpu->reset();
@@ -780,7 +770,7 @@ void c2040_t::device_reset()
// ieee488_atn -
//-------------------------------------------------
-void c2040_t::ieee488_atn(int state)
+void c2040_device::ieee488_atn(int state)
{
update_ieee_signals();
@@ -792,7 +782,7 @@ void c2040_t::ieee488_atn(int state)
// ieee488_ifc -
//-------------------------------------------------
-void c2040_t::ieee488_ifc(int state)
+void c2040_device::ieee488_ifc(int state)
{
if (!m_ifc && state)
{
diff --git a/src/devices/bus/ieee488/c2040.h b/src/devices/bus/ieee488/c2040.h
index d56da37ea9b..7289c99c43e 100644
--- a/src/devices/bus/ieee488/c2040.h
+++ b/src/devices/bus/ieee488/c2040.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_C2040_H
+#define MAME_BUS_IEEE488_C2040_H
-#ifndef __C2040__
-#define __C2040__
+#pragma once
#include "ieee488.h"
#include "c2040fdc.h"
@@ -24,15 +24,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c2040_t
+// ======================> c2040_device
-class c2040_t : public device_t,
- public device_ieee488_interface
+class c2040_device : public device_t, public device_ieee488_interface
{
public:
// construction/destruction
- c2040_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- c2040_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c2040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -50,6 +48,8 @@ public:
DECLARE_FLOPPY_FORMATS( floppy_formats );
protected:
+ c2040_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -70,13 +70,13 @@ protected:
required_device<m6502_device> m_maincpu;
required_device<m6504_device> m_fdccpu;
- required_device<mos6532_t> m_riot0;
- required_device<mos6532_t> m_riot1;
- required_device<mos6530_t> m_miot;
+ required_device<mos6532_new_device> m_riot0;
+ required_device<mos6532_new_device> m_riot1;
+ required_device<mos6530_new_device> m_miot;
required_device<via6522_device> m_via;
required_device<floppy_image_device> m_floppy0;
optional_device<floppy_image_device> m_floppy1;
- required_device<c2040_fdc_t> m_fdc;
+ required_device<c2040_fdc_device> m_fdc;
required_memory_region m_gcr;
required_ioport m_address;
@@ -88,13 +88,13 @@ protected:
};
-// ======================> c3040_t
+// ======================> c3040_device
-class c3040_t : public c2040_t
+class c3040_device : public c2040_device
{
public:
// construction/destruction
- c3040_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c3040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -104,13 +104,13 @@ public:
};
-// ======================> c4040_t
+// ======================> c4040_device
-class c4040_t : public c2040_t
+class c4040_device : public c2040_device
{
public:
// construction/destruction
- c4040_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c4040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -121,10 +121,9 @@ public:
// device type definition
-extern const device_type C2040;
-extern const device_type C3040;
-extern const device_type C4040;
-
+DECLARE_DEVICE_TYPE(C2040, c2040_device)
+DECLARE_DEVICE_TYPE(C3040, c3040_device)
+DECLARE_DEVICE_TYPE(C4040, c4040_device)
-#endif
+#endif // MAME_BUS_IEEE488_C2040_H
diff --git a/src/devices/bus/ieee488/c2040fdc.cpp b/src/devices/bus/ieee488/c2040fdc.cpp
index 7256457371f..7d99eb780cf 100644
--- a/src/devices/bus/ieee488/c2040fdc.cpp
+++ b/src/devices/bus/ieee488/c2040fdc.cpp
@@ -38,7 +38,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C2040_FDC = device_creator<c2040_fdc_t>;
+DEFINE_DEVICE_TYPE(C2040_FDC, c2040_fdc_device, "c2040_fdc", "Commodore 2040 FDC")
//-------------------------------------------------
@@ -55,7 +55,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c2040_fdc_t::device_rom_region() const
+const tiny_rom_entry *c2040_fdc_device::device_rom_region() const
{
return ROM_NAME( c2040_fdc );
}
@@ -67,11 +67,11 @@ const tiny_rom_entry *c2040_fdc_t::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// c2040_fdc_t - constructor
+// c2040_fdc_device - constructor
//-------------------------------------------------
-c2040_fdc_t::c2040_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C2040_FDC, "C2040 FDC", tag, owner, clock, "c2040fdc", __FILE__),
+c2040_fdc_device::c2040_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, C2040_FDC, tag, owner, clock),
m_write_sync(*this),
m_write_ready(*this),
m_write_error(*this),
@@ -103,7 +103,7 @@ c2040_fdc_t::c2040_fdc_t(const machine_config &mconfig, const char *tag, device_
// device_start - device-specific startup
//-------------------------------------------------
-void c2040_fdc_t::device_start()
+void c2040_fdc_device::device_start()
{
// resolve callbacks
m_write_sync.resolve_safe();
@@ -132,7 +132,7 @@ void c2040_fdc_t::device_start()
// device clock is altered in any way
//-------------------------------------------------
-void c2040_fdc_t::device_clock_changed()
+void c2040_fdc_device::device_clock_changed()
{
m_period = attotime::from_hz(clock());
}
@@ -142,7 +142,7 @@ void c2040_fdc_t::device_clock_changed()
// device_reset - device-specific reset
//-------------------------------------------------
-void c2040_fdc_t::device_reset()
+void c2040_fdc_device::device_reset()
{
live_abort();
}
@@ -152,18 +152,18 @@ void c2040_fdc_t::device_reset()
// device_timer - handler timer events
//-------------------------------------------------
-void c2040_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void c2040_fdc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
live_sync();
live_run();
}
-floppy_image_device* c2040_fdc_t::get_floppy()
+floppy_image_device* c2040_fdc_device::get_floppy()
{
return cur_live.drv_sel ? m_floppy1 : m_floppy0;
}
-void c2040_fdc_t::live_start()
+void c2040_fdc_device::live_start()
{
cur_live.tm = machine().time();
cur_live.state = RUNNING;
@@ -185,31 +185,31 @@ void c2040_fdc_t::live_start()
live_run();
}
-void c2040_fdc_t::checkpoint()
+void c2040_fdc_device::checkpoint()
{
get_next_edge(machine().time());
checkpoint_live = cur_live;
}
-void c2040_fdc_t::rollback()
+void c2040_fdc_device::rollback()
{
cur_live = checkpoint_live;
get_next_edge(cur_live.tm);
}
-void c2040_fdc_t::start_writing(const attotime &tm)
+void c2040_fdc_device::start_writing(const attotime &tm)
{
cur_live.write_start_time = tm;
cur_live.write_position = 0;
}
-void c2040_fdc_t::stop_writing(const attotime &tm)
+void c2040_fdc_device::stop_writing(const attotime &tm)
{
commit(tm);
cur_live.write_start_time = attotime::never;
}
-bool c2040_fdc_t::write_next_bit(bool bit, const attotime &limit)
+bool c2040_fdc_device::write_next_bit(bool bit, const attotime &limit)
{
if(cur_live.write_start_time.is_never()) {
cur_live.write_start_time = cur_live.tm;
@@ -228,7 +228,7 @@ bool c2040_fdc_t::write_next_bit(bool bit, const attotime &limit)
return false;
}
-void c2040_fdc_t::commit(const attotime &tm)
+void c2040_fdc_device::commit(const attotime &tm)
{
if(cur_live.write_start_time.is_never() || tm == cur_live.write_start_time || !cur_live.write_position)
return;
@@ -242,7 +242,7 @@ void c2040_fdc_t::commit(const attotime &tm)
cur_live.write_position = 0;
}
-void c2040_fdc_t::live_delay(int state)
+void c2040_fdc_device::live_delay(int state)
{
cur_live.next_state = state;
if(cur_live.tm != machine().time())
@@ -251,7 +251,7 @@ void c2040_fdc_t::live_delay(int state)
live_sync();
}
-void c2040_fdc_t::live_sync()
+void c2040_fdc_device::live_sync()
{
if(!cur_live.tm.is_never()) {
if(cur_live.tm > machine().time()) {
@@ -274,7 +274,7 @@ void c2040_fdc_t::live_sync()
}
}
-void c2040_fdc_t::live_abort()
+void c2040_fdc_device::live_abort()
{
if(!cur_live.tm.is_never() && cur_live.tm > machine().time()) {
rollback();
@@ -294,7 +294,7 @@ void c2040_fdc_t::live_abort()
cur_live.error = 1;
}
-void c2040_fdc_t::live_run(const attotime &limit)
+void c2040_fdc_device::live_run(const attotime &limit)
{
if(cur_live.state == IDLE || cur_live.next_state != -1)
return;
@@ -423,14 +423,14 @@ void c2040_fdc_t::live_run(const attotime &limit)
}
}
-void c2040_fdc_t::get_next_edge(const attotime &when)
+void c2040_fdc_device::get_next_edge(const attotime &when)
{
floppy_image_device *floppy = get_floppy();
cur_live.edge = floppy ? floppy->get_next_transition(when) : attotime::never;
}
-int c2040_fdc_t::get_next_bit(attotime &tm, const attotime &limit)
+int c2040_fdc_device::get_next_bit(attotime &tm, const attotime &limit)
{
attotime next = tm + m_period;
@@ -443,7 +443,7 @@ int c2040_fdc_t::get_next_bit(attotime &tm, const attotime &limit)
return bit && cur_live.rw_sel;
}
-READ8_MEMBER( c2040_fdc_t::read )
+READ8_MEMBER( c2040_fdc_device::read )
{
uint8_t e = checkpoint_live.e;
offs_t i = checkpoint_live.i;
@@ -455,7 +455,7 @@ READ8_MEMBER( c2040_fdc_t::read )
return data;
}
-WRITE8_MEMBER( c2040_fdc_t::write )
+WRITE8_MEMBER( c2040_fdc_device::write )
{
if (m_pi != data)
{
@@ -467,19 +467,19 @@ WRITE8_MEMBER( c2040_fdc_t::write )
}
}
-WRITE_LINE_MEMBER( c2040_fdc_t::ds0_w )
+WRITE_LINE_MEMBER( c2040_fdc_device::ds0_w )
{
m_ds0 = state;
}
-WRITE_LINE_MEMBER( c2040_fdc_t::ds1_w )
+WRITE_LINE_MEMBER( c2040_fdc_device::ds1_w )
{
m_ds1 = state;
ds_w(m_ds1 << 1 | m_ds0);
}
-WRITE_LINE_MEMBER( c2040_fdc_t::drv_sel_w )
+WRITE_LINE_MEMBER( c2040_fdc_device::drv_sel_w )
{
if (m_drv_sel != state)
{
@@ -491,7 +491,7 @@ WRITE_LINE_MEMBER( c2040_fdc_t::drv_sel_w )
}
}
-WRITE_LINE_MEMBER( c2040_fdc_t::mode_sel_w )
+WRITE_LINE_MEMBER( c2040_fdc_device::mode_sel_w )
{
if (m_mode_sel != state)
{
@@ -503,7 +503,7 @@ WRITE_LINE_MEMBER( c2040_fdc_t::mode_sel_w )
}
}
-WRITE_LINE_MEMBER( c2040_fdc_t::rw_sel_w )
+WRITE_LINE_MEMBER( c2040_fdc_device::rw_sel_w )
{
if (m_rw_sel != state)
{
@@ -520,7 +520,7 @@ WRITE_LINE_MEMBER( c2040_fdc_t::rw_sel_w )
}
}
-WRITE_LINE_MEMBER( c2040_fdc_t::mtr0_w )
+WRITE_LINE_MEMBER( c2040_fdc_device::mtr0_w )
{
if (m_mtr0 != state)
{
@@ -542,7 +542,7 @@ WRITE_LINE_MEMBER( c2040_fdc_t::mtr0_w )
}
}
-WRITE_LINE_MEMBER( c2040_fdc_t::mtr1_w )
+WRITE_LINE_MEMBER( c2040_fdc_device::mtr1_w )
{
if (m_mtr1 != state)
{
@@ -564,7 +564,7 @@ WRITE_LINE_MEMBER( c2040_fdc_t::mtr1_w )
}
}
-void c2040_fdc_t::stp_w(floppy_image_device *floppy, int mtr, int &old_stp, int stp)
+void c2040_fdc_device::stp_w(floppy_image_device *floppy, int mtr, int &old_stp, int stp)
{
if (mtr) return;
@@ -594,7 +594,7 @@ void c2040_fdc_t::stp_w(floppy_image_device *floppy, int mtr, int &old_stp, int
old_stp = stp;
}
-void c2040_fdc_t::stp0_w(int stp)
+void c2040_fdc_device::stp0_w(int stp)
{
if (m_stp0 != stp)
{
@@ -605,7 +605,7 @@ void c2040_fdc_t::stp0_w(int stp)
}
}
-void c2040_fdc_t::stp1_w(int stp)
+void c2040_fdc_device::stp1_w(int stp)
{
if (m_stp1 != stp)
{
@@ -616,7 +616,7 @@ void c2040_fdc_t::stp1_w(int stp)
}
}
-void c2040_fdc_t::ds_w(int ds)
+void c2040_fdc_device::ds_w(int ds)
{
if (m_ds != ds)
{
@@ -628,7 +628,7 @@ void c2040_fdc_t::ds_w(int ds)
}
}
-void c2040_fdc_t::set_floppy(floppy_image_device *floppy0, floppy_image_device *floppy1)
+void c2040_fdc_device::set_floppy(floppy_image_device *floppy0, floppy_image_device *floppy1)
{
m_floppy0 = floppy0;
m_floppy1 = floppy1;
diff --git a/src/devices/bus/ieee488/c2040fdc.h b/src/devices/bus/ieee488/c2040fdc.h
index 45690295b9a..bbbd799182c 100644
--- a/src/devices/bus/ieee488/c2040fdc.h
+++ b/src/devices/bus/ieee488/c2040fdc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_C2040FDC_H
+#define MAME_BUS_IEEE488_C2040FDC_H
-#ifndef __C2040_FLOPPY__
-#define __C2040_FLOPPY__
+#pragma once
#include "formats/c3040_dsk.h"
#include "formats/c4040_dsk.h"
@@ -24,13 +24,13 @@
//**************************************************************************
#define MCFG_C2040_SYNC_CALLBACK(_write) \
- devcb = &c2040_fdc_t::set_sync_wr_callback(*device, DEVCB_##_write);
+ devcb = &c2040_fdc_device::set_sync_wr_callback(*device, DEVCB_##_write);
#define MCFG_C2040_READY_CALLBACK(_write) \
- devcb = &c2040_fdc_t::set_ready_wr_callback(*device, DEVCB_##_write);
+ devcb = &c2040_fdc_device::set_ready_wr_callback(*device, DEVCB_##_write);
#define MCFG_C2040_ERROR_CALLBACK(_write) \
- devcb = &c2040_fdc_t::set_error_wr_callback(*device, DEVCB_##_write);
+ devcb = &c2040_fdc_device::set_error_wr_callback(*device, DEVCB_##_write);
@@ -38,17 +38,17 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c2040_fdc_t
+// ======================> c2040_fdc_device
-class c2040_fdc_t : public device_t
+class c2040_fdc_device : public device_t
{
public:
// construction/destruction
- c2040_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c2040_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_sync_wr_callback(device_t &device, _Object object) { return downcast<c2040_fdc_t &>(device).m_write_sync.set_callback(object); }
- template<class _Object> static devcb_base &set_ready_wr_callback(device_t &device, _Object object) { return downcast<c2040_fdc_t &>(device).m_write_ready.set_callback(object); }
- template<class _Object> static devcb_base &set_error_wr_callback(device_t &device, _Object object) { return downcast<c2040_fdc_t &>(device).m_write_error.set_callback(object); }
+ template <class Object> static devcb_base &set_sync_wr_callback(device_t &device, Object &&cb) { return downcast<c2040_fdc_device &>(device).m_write_sync.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<c2040_fdc_device &>(device).m_write_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<c2040_fdc_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -161,8 +161,6 @@ protected:
// device type definition
-extern const device_type C2040_FDC;
-
-
+DECLARE_DEVICE_TYPE(C2040_FDC, c2040_fdc_device)
-#endif
+#endif // MAME_BUS_IEEE488_C2040FDC_H
diff --git a/src/devices/bus/ieee488/c8050.cpp b/src/devices/bus/ieee488/c8050.cpp
index 11ea6204870..91118edd649 100644
--- a/src/devices/bus/ieee488/c8050.cpp
+++ b/src/devices/bus/ieee488/c8050.cpp
@@ -54,10 +54,10 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C8050 = device_creator<c8050_t>;
-const device_type C8250 = device_creator<c8250_t>;
-const device_type C8250LP = device_creator<c8250lp_t>;
-const device_type SFD1001 = device_creator<sfd1001_t>;
+DEFINE_DEVICE_TYPE(C8050, c8050_device, "c8050", "Commodore 8050")
+DEFINE_DEVICE_TYPE(C8250, c8250_device, "c8250", "Commodore 8250")
+DEFINE_DEVICE_TYPE(C8250LP, c8250lp_device, "c8250lp", "Commodore 8250LP")
+DEFINE_DEVICE_TYPE(SFD1001, sfd1001_device, "sfd10001", "Commodore SFD-1001")
//-------------------------------------------------
@@ -110,7 +110,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c8050_t::device_rom_region() const
+const tiny_rom_entry *c8050_device::device_rom_region() const
{
return ROM_NAME( c8050 );
}
@@ -144,7 +144,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c8250lp_t::device_rom_region() const
+const tiny_rom_entry *c8250lp_device::device_rom_region() const
{
return ROM_NAME( c8250lp );
}
@@ -174,7 +174,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *sfd1001_t::device_rom_region() const
+const tiny_rom_entry *sfd1001_device::device_rom_region() const
{
return ROM_NAME( sfd1001 );
}
@@ -184,11 +184,11 @@ const tiny_rom_entry *sfd1001_t::device_rom_region() const
// ADDRESS_MAP( c8050_main_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c8050_main_mem, AS_PROGRAM, 8, c8050_t )
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0100) AM_DEVICE(M6532_0_TAG, mos6532_t, ram_map)
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0100) AM_DEVICE(M6532_1_TAG, mos6532_t, ram_map)
- AM_RANGE(0x0200, 0x021f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_0_TAG, mos6532_t, io_map)
- AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_1_TAG, mos6532_t, io_map)
+static ADDRESS_MAP_START( c8050_main_mem, AS_PROGRAM, 8, c8050_device )
+ AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0100) AM_DEVICE(M6532_0_TAG, mos6532_new_device, ram_map)
+ AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0100) AM_DEVICE(M6532_1_TAG, mos6532_new_device, ram_map)
+ AM_RANGE(0x0200, 0x021f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_0_TAG, mos6532_new_device, io_map)
+ AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_1_TAG, mos6532_new_device, io_map)
AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share1")
AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share2")
AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share3")
@@ -201,16 +201,16 @@ ADDRESS_MAP_END
// ADDRESS_MAP( c8050_fdc_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c8050_fdc_mem, AS_PROGRAM, 8, c8050_t )
+static ADDRESS_MAP_START( c8050_fdc_mem, AS_PROGRAM, 8, c8050_device )
ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_DEVICE(M6530_TAG, mos6530_t, ram_map)
+ AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_DEVICE(M6530_TAG, mos6530_new_device, ram_map)
AM_RANGE(0x0040, 0x004f) AM_MIRROR(0x0330) AM_DEVICE(M6522_TAG, via6522_device, map)
- AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVICE(M6530_TAG, mos6530_t, io_map)
+ AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVICE(M6530_TAG, mos6530_new_device, io_map)
AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("share2")
AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("share3")
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("share4")
- AM_RANGE(0x1c00, 0x1fff) AM_DEVICE(M6530_TAG, mos6530_t, rom_map)
+ AM_RANGE(0x1c00, 0x1fff) AM_DEVICE(M6530_TAG, mos6530_new_device, rom_map)
ADDRESS_MAP_END
@@ -218,11 +218,11 @@ ADDRESS_MAP_END
// ADDRESS_MAP( c8250lp_fdc_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c8250lp_fdc_mem, AS_PROGRAM, 8, c8050_t )
+static ADDRESS_MAP_START( c8250lp_fdc_mem, AS_PROGRAM, 8, c8050_device )
ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_DEVICE(M6530_TAG, mos6530_t, ram_map)
+ AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_DEVICE(M6530_TAG, mos6530_new_device, ram_map)
AM_RANGE(0x0040, 0x004f) AM_MIRROR(0x0330) AM_DEVICE(M6522_TAG, via6522_device, map)
- AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVICE(M6530_TAG, mos6530_t, io_map)
+ AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVICE(M6530_TAG, mos6530_new_device, io_map)
AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("share2")
AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("share3")
@@ -235,11 +235,11 @@ ADDRESS_MAP_END
// ADDRESS_MAP( sfd1001_fdc_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( sfd1001_fdc_mem, AS_PROGRAM, 8, c8050_t )
+static ADDRESS_MAP_START( sfd1001_fdc_mem, AS_PROGRAM, 8, c8050_device )
ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_DEVICE(M6530_TAG, mos6530_t, ram_map)
+ AM_RANGE(0x0000, 0x003f) AM_MIRROR(0x0300) AM_DEVICE(M6530_TAG, mos6530_new_device, ram_map)
AM_RANGE(0x0040, 0x004f) AM_MIRROR(0x0330) AM_DEVICE(M6522_TAG, via6522_device, map)
- AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVICE(M6530_TAG, mos6530_t, io_map)
+ AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x0330) AM_DEVICE(M6530_TAG, mos6530_new_device, io_map)
AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("share2")
AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("share3")
@@ -252,7 +252,7 @@ ADDRESS_MAP_END
// riot6532 uc1
//-------------------------------------------------
-READ8_MEMBER( c8050_t::dio_r )
+READ8_MEMBER( c8050_device::dio_r )
{
/*
@@ -272,7 +272,7 @@ READ8_MEMBER( c8050_t::dio_r )
return m_bus->dio_r();
}
-WRITE8_MEMBER( c8050_t::dio_w )
+WRITE8_MEMBER( c8050_device::dio_w )
{
/*
@@ -296,7 +296,7 @@ WRITE8_MEMBER( c8050_t::dio_w )
// riot6532 ue1
//-------------------------------------------------
-READ8_MEMBER( c8050_t::riot1_pa_r )
+READ8_MEMBER( c8050_device::riot1_pa_r )
{
/*
@@ -327,7 +327,7 @@ READ8_MEMBER( c8050_t::riot1_pa_r )
return data;
}
-WRITE8_MEMBER( c8050_t::riot1_pa_w )
+WRITE8_MEMBER( c8050_device::riot1_pa_w )
{
/*
@@ -362,7 +362,7 @@ WRITE8_MEMBER( c8050_t::riot1_pa_w )
update_ieee_signals();
}
-READ8_MEMBER( c8050_t::riot1_pb_r )
+READ8_MEMBER( c8050_device::riot1_pb_r )
{
/*
@@ -393,7 +393,7 @@ READ8_MEMBER( c8050_t::riot1_pb_r )
return data;
}
-WRITE8_MEMBER( c8050_t::riot1_pb_w )
+WRITE8_MEMBER( c8050_device::riot1_pb_w )
{
/*
@@ -420,7 +420,7 @@ WRITE8_MEMBER( c8050_t::riot1_pb_w )
machine().output().set_led_value(LED_ERR, BIT(data, 5));
}
-WRITE8_MEMBER( c8050_t::via_pb_w )
+WRITE8_MEMBER( c8050_device::via_pb_w )
{
/*
@@ -467,7 +467,7 @@ SLOT_INTERFACE_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c8050_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c8050_device::floppy_formats )
FLOPPY_D80_FORMAT
FLOPPY_FORMATS_END
@@ -494,7 +494,7 @@ SLOT_INTERFACE_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c8250_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c8250_device::floppy_formats )
FLOPPY_D80_FORMAT,
FLOPPY_D82_FORMAT
FLOPPY_FORMATS_END
@@ -504,7 +504,7 @@ FLOPPY_FORMATS_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c8250lp_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c8250lp_device::floppy_formats )
FLOPPY_D80_FORMAT,
FLOPPY_D82_FORMAT
FLOPPY_FORMATS_END
@@ -514,7 +514,7 @@ FLOPPY_FORMATS_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( sfd1001_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( sfd1001_device::floppy_formats )
FLOPPY_D80_FORMAT,
FLOPPY_D82_FORMAT
FLOPPY_FORMATS_END
@@ -529,15 +529,15 @@ static MACHINE_CONFIG_FRAGMENT( c8050 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_12MHz/12)
MCFG_CPU_PROGRAM_MAP(c8050_main_mem)
- MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532n, XTAL_12MHz/12)
- MCFG_MOS6530n_IN_PA_CB(READ8(c8050_t, dio_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_t, dio_w))
+ MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c8050_device, dio_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_device, dio_w))
- MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532n, XTAL_12MHz/12)
- MCFG_MOS6530n_IN_PA_CB(READ8(c8050_t, riot1_pa_r))
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(c8050_t, riot1_pa_w))
- MCFG_MOS6530n_IN_PB_CB(READ8(c8050_t, riot1_pb_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_t, riot1_pb_w))
+ MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c8050_device, riot1_pa_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(c8050_device, riot1_pa_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(c8050_device, riot1_pb_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_device, riot1_pb_w))
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
@@ -545,17 +545,17 @@ static MACHINE_CONFIG_FRAGMENT( c8050 )
MCFG_CPU_PROGRAM_MAP(c8050_fdc_mem)
MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_12MHz/12)
- MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c8050_fdc_t, read))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_t, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_t, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_t, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530n, XTAL_12MHz/12)
- MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c8050_fdc_t, write))
- MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, drv_sel_w))
- MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, ds1_w))
- MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c8050_fdc_t, wps_r))
+ MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c8050_fdc_device, read))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_device, via_pb_w))
+ MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_device, rw_sel_w))
+
+ MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c8050_fdc_device, write))
+ MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, drv_sel_w))
+ MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, ds0_w))
+ MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, ds1_w))
+ MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c8050_fdc_device, wps_r))
MCFG_MOS6530n_IN_PB6_CB(VCC) // SINGLE SIDED
MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
@@ -564,8 +564,8 @@ static MACHINE_CONFIG_FRAGMENT( c8050 )
MCFG_C8050_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1))
MCFG_C8050_BRDY_CALLBACK(INPUTLINE(M6504_TAG, M6502_SET_OVERFLOW)) MCFG_DEVCB_XOR(1)
MCFG_C8050_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1))
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", c8050_floppies, "525ssqd", c8050_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", c8050_floppies, "525ssqd", c8050_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", c8050_floppies, "525ssqd", c8050_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", c8050_floppies, "525ssqd", c8050_device::floppy_formats)
MACHINE_CONFIG_END
@@ -574,7 +574,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c8050_t::device_mconfig_additions() const
+machine_config_constructor c8050_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c8050 );
}
@@ -589,15 +589,15 @@ static MACHINE_CONFIG_FRAGMENT( c8250 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_12MHz/12)
MCFG_CPU_PROGRAM_MAP(c8050_main_mem)
- MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532n, XTAL_12MHz/12)
- MCFG_MOS6530n_IN_PA_CB(READ8(c8050_t, dio_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_t, dio_w))
+ MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c8050_device, dio_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_device, dio_w))
- MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532n, XTAL_12MHz/12)
- MCFG_MOS6530n_IN_PA_CB(READ8(c8050_t, riot1_pa_r))
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(c8050_t, riot1_pa_w))
- MCFG_MOS6530n_IN_PB_CB(READ8(c8050_t, riot1_pb_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_t, riot1_pb_w))
+ MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c8050_device, riot1_pa_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(c8050_device, riot1_pa_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(c8050_device, riot1_pb_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_device, riot1_pb_w))
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
@@ -605,18 +605,18 @@ static MACHINE_CONFIG_FRAGMENT( c8250 )
MCFG_CPU_PROGRAM_MAP(c8050_fdc_mem)
MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_12MHz/12)
- MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c8050_fdc_t, read))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_t, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_t, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_t, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530n, XTAL_12MHz/12)
- MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c8050_fdc_t, write))
- MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, drv_sel_w))
- MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, ds1_w))
- MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c8050_fdc_t, wps_r))
- MCFG_MOS6530n_OUT_PB4_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, odd_hd_w))
+ MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c8050_fdc_device, read))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_device, via_pb_w))
+ MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_device, rw_sel_w))
+
+ MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c8050_fdc_device, write))
+ MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, drv_sel_w))
+ MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, ds0_w))
+ MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, ds1_w))
+ MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c8050_fdc_device, wps_r))
+ MCFG_MOS6530n_OUT_PB4_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, odd_hd_w))
MCFG_MOS6530n_IN_PB6_CB(GND) // DOUBLE SIDED
MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
@@ -625,8 +625,8 @@ static MACHINE_CONFIG_FRAGMENT( c8250 )
MCFG_C8050_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1))
MCFG_C8050_BRDY_CALLBACK(INPUTLINE(M6504_TAG, M6502_SET_OVERFLOW)) MCFG_DEVCB_XOR(1)
MCFG_C8050_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1))
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", c8250_floppies, "525qd", c8250_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", c8250_floppies, "525qd", c8250_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", c8250_floppies, "525qd", c8250_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", c8250_floppies, "525qd", c8250_device::floppy_formats)
MACHINE_CONFIG_END
@@ -635,7 +635,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c8250_t::device_mconfig_additions() const
+machine_config_constructor c8250_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c8250 );
}
@@ -650,15 +650,15 @@ static MACHINE_CONFIG_FRAGMENT( c8250lp )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_12MHz/12)
MCFG_CPU_PROGRAM_MAP(c8050_main_mem)
- MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532n, XTAL_12MHz/12)
- MCFG_MOS6530n_IN_PA_CB(READ8(c8050_t, dio_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_t, dio_w))
+ MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c8050_device, dio_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_device, dio_w))
- MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532n, XTAL_12MHz/12)
- MCFG_MOS6530n_IN_PA_CB(READ8(c8050_t, riot1_pa_r))
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(c8050_t, riot1_pa_w))
- MCFG_MOS6530n_IN_PB_CB(READ8(c8050_t, riot1_pb_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_t, riot1_pb_w))
+ MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c8050_device, riot1_pa_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(c8050_device, riot1_pa_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(c8050_device, riot1_pb_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_device, riot1_pb_w))
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
@@ -666,18 +666,18 @@ static MACHINE_CONFIG_FRAGMENT( c8250lp )
MCFG_CPU_PROGRAM_MAP(c8250lp_fdc_mem)
MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_12MHz/12)
- MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c8050_fdc_t, read))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_t, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_t, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_t, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530n, XTAL_12MHz/12)
- MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c8050_fdc_t, write))
- MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, drv_sel_w))
- MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, ds1_w))
- MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c8050_fdc_t, wps_r))
- MCFG_MOS6530n_OUT_PB4_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, odd_hd_w))
+ MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c8050_fdc_device, read))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_device, via_pb_w))
+ MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_device, rw_sel_w))
+
+ MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c8050_fdc_device, write))
+ MCFG_MOS6530n_OUT_PB0_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, drv_sel_w))
+ MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, ds0_w))
+ MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, ds1_w))
+ MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c8050_fdc_device, wps_r))
+ MCFG_MOS6530n_OUT_PB4_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, odd_hd_w))
MCFG_MOS6530n_IN_PB6_CB(GND) // DOUBLE SIDED
MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
@@ -686,8 +686,8 @@ static MACHINE_CONFIG_FRAGMENT( c8250lp )
MCFG_C8050_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1))
MCFG_C8050_BRDY_CALLBACK(INPUTLINE(M6504_TAG, M6502_SET_OVERFLOW)) MCFG_DEVCB_XOR(1)
MCFG_C8050_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1))
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", c8250_floppies, "525qd", c8250lp_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", c8250_floppies, "525qd", c8250lp_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", c8250_floppies, "525qd", c8250lp_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", c8250_floppies, "525qd", c8250lp_device::floppy_formats)
MACHINE_CONFIG_END
@@ -696,7 +696,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c8250lp_t::device_mconfig_additions() const
+machine_config_constructor c8250lp_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c8250lp );
}
@@ -711,15 +711,15 @@ static MACHINE_CONFIG_FRAGMENT( sfd1001 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_12MHz/12)
MCFG_CPU_PROGRAM_MAP(c8050_main_mem)
- MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532n, XTAL_12MHz/12)
- MCFG_MOS6530n_IN_PA_CB(READ8(c8050_t, dio_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_t, dio_w))
+ MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c8050_device, dio_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_device, dio_w))
- MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532n, XTAL_12MHz/12)
- MCFG_MOS6530n_IN_PA_CB(READ8(c8050_t, riot1_pa_r))
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(c8050_t, riot1_pa_w))
- MCFG_MOS6530n_IN_PB_CB(READ8(c8050_t, riot1_pb_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_t, riot1_pb_w))
+ MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c8050_device, riot1_pa_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(c8050_device, riot1_pa_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(c8050_device, riot1_pb_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8050_device, riot1_pb_w))
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
@@ -727,17 +727,17 @@ static MACHINE_CONFIG_FRAGMENT( sfd1001 )
MCFG_CPU_PROGRAM_MAP(sfd1001_fdc_mem)
MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_12MHz/12)
- MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c8050_fdc_t, read))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_t, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_t, mode_sel_w))
- MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_t, rw_sel_w))
-
- MCFG_DEVICE_ADD(M6530_TAG, MOS6530n, XTAL_12MHz/12)
- MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c8050_fdc_t, write))
- MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, ds0_w))
- MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, ds1_w))
- MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c8050_fdc_t, wps_r))
- MCFG_MOS6530n_OUT_PB4_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_t, odd_hd_w))
+ MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c8050_fdc_device, read))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c8050_device, via_pb_w))
+ MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_device, mode_sel_w))
+ MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c8050_fdc_device, rw_sel_w))
+
+ MCFG_DEVICE_ADD(M6530_TAG, MOS6530_NEW, XTAL_12MHz/12)
+ MCFG_MOS6530n_OUT_PA_CB(DEVWRITE8(FDC_TAG, c8050_fdc_device, write))
+ MCFG_MOS6530n_OUT_PB1_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, ds0_w))
+ MCFG_MOS6530n_OUT_PB2_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, ds1_w))
+ MCFG_MOS6530n_IN_PB3_CB(DEVREADLINE(FDC_TAG, c8050_fdc_device, wps_r))
+ MCFG_MOS6530n_OUT_PB4_CB(DEVWRITELINE(FDC_TAG, c8050_fdc_device, odd_hd_w))
MCFG_MOS6530n_IN_PB6_CB(GND) // DOUBLE SIDED
MCFG_MOS6530n_OUT_PB7_CB(INPUTLINE(M6504_TAG, M6502_IRQ_LINE))
@@ -746,7 +746,7 @@ static MACHINE_CONFIG_FRAGMENT( sfd1001 )
MCFG_C8050_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1))
MCFG_C8050_BRDY_CALLBACK(INPUTLINE(M6504_TAG, M6502_SET_OVERFLOW)) MCFG_DEVCB_XOR(1)
MCFG_C8050_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1))
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", sfd1001_floppies, "525qd", sfd1001_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", sfd1001_floppies, "525qd", sfd1001_device::floppy_formats)
MACHINE_CONFIG_END
@@ -755,7 +755,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor sfd1001_t::device_mconfig_additions() const
+machine_config_constructor sfd1001_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( sfd1001 );
}
@@ -783,7 +783,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c8050_t::device_input_ports() const
+ioport_constructor c8050_device::device_input_ports() const
{
return INPUT_PORTS_NAME( c8050 );
}
@@ -798,7 +798,7 @@ ioport_constructor c8050_t::device_input_ports() const
// update_ieee_signals -
//-------------------------------------------------
-inline void c8050_t::update_ieee_signals()
+inline void c8050_device::update_ieee_signals()
{
int atn = m_bus->atn_r();
int nrfd = !(!(!(atn && m_atna) && m_rfdo) || !(atn || m_atna));
@@ -815,11 +815,11 @@ inline void c8050_t::update_ieee_signals()
//**************************************************************************
//-------------------------------------------------
-// c8050_t - constructor
+// c8050_device - constructor
//-------------------------------------------------
-c8050_t::c8050_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+c8050_device::c8050_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_ieee488_interface(mconfig, *this),
m_maincpu(*this, M6502_TAG),
m_fdccpu(*this, M6504_TAG),
@@ -833,59 +833,52 @@ c8050_t::c8050_t(const machine_config &mconfig, device_type type, const char *na
m_address(*this, "ADDRESS"),
m_rfdo(1),
m_daco(1),
- m_atna(1), m_ifc(0)
+ m_atna(1),
+ m_ifc(0)
{
}
-c8050_t::c8050_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C8050, "C8050", tag, owner, clock, "c8050", __FILE__),
- device_ieee488_interface(mconfig, *this),
- m_maincpu(*this, M6502_TAG),
- m_fdccpu(*this, M6504_TAG),
- m_riot0(*this, M6532_0_TAG),
- m_riot1(*this, M6532_1_TAG),
- m_miot(*this, M6530_TAG),
- m_via(*this, M6522_TAG),
- m_floppy0(*this, FDC_TAG ":0"),
- m_floppy1(*this, FDC_TAG ":1"),
- m_fdc(*this, FDC_TAG),
- m_address(*this, "ADDRESS"),
- m_rfdo(1),
- m_daco(1),
- m_atna(1), m_ifc(0)
+c8050_device::c8050_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ c8050_device(mconfig, C8050, tag, owner, clock)
{
}
//-------------------------------------------------
-// c8250_t - constructor
+// c8250_device - constructor
//-------------------------------------------------
-c8250_t::c8250_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- c8050_t(mconfig, C8250, "C8250", tag, owner, clock, "c8250", __FILE__) { }
+c8250_device::c8250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ c8050_device(mconfig, C8250, tag, owner, clock)
+{
+}
//-------------------------------------------------
-// c8250lp_t - constructor
+// c8250lp_device - constructor
//-------------------------------------------------
-c8250lp_t::c8250lp_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- c8050_t(mconfig, C8250LP, "C8250LP", tag, owner, clock, "c8250lp", __FILE__) { }
+c8250lp_device::c8250lp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ c8050_device(mconfig, C8250LP, tag, owner, clock)
+{
+}
//-------------------------------------------------
-// sfd1001_t - constructor
+// sfd1001_device - constructor
//-------------------------------------------------
-sfd1001_t::sfd1001_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- c8050_t(mconfig, SFD1001, "SFD1001", tag, owner, clock, "sfd1001", __FILE__) { }
+sfd1001_device::sfd1001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ c8050_device(mconfig, SFD1001, tag, owner, clock)
+{
+}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void c8050_t::device_start()
+void c8050_device::device_start()
{
// install image callbacks
m_fdc->set_floppy(m_floppy0, m_floppy1);
@@ -901,7 +894,7 @@ void c8050_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c8050_t::device_reset()
+void c8050_device::device_reset()
{
m_maincpu->reset();
@@ -928,7 +921,7 @@ void c8050_t::device_reset()
// ieee488_atn -
//-------------------------------------------------
-void c8050_t::ieee488_atn(int state)
+void c8050_device::ieee488_atn(int state)
{
update_ieee_signals();
@@ -940,7 +933,7 @@ void c8050_t::ieee488_atn(int state)
// ieee488_ifc -
//-------------------------------------------------
-void c8050_t::ieee488_ifc(int state)
+void c8050_device::ieee488_ifc(int state)
{
if (!m_ifc && state)
{
diff --git a/src/devices/bus/ieee488/c8050.h b/src/devices/bus/ieee488/c8050.h
index d1200326aae..c777a2b4b5b 100644
--- a/src/devices/bus/ieee488/c8050.h
+++ b/src/devices/bus/ieee488/c8050.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEE488_C8050_H
+#define MAME_BUS_IEE488_C8050_H
-#ifndef __C8050__
-#define __C8050__
+#pragma once
#include "ieee488.h"
#include "c8050fdc.h"
@@ -24,15 +24,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c8050_t
+// ======================> c8050_device
-class c8050_t : public device_t,
- public device_ieee488_interface
+class c8050_device : public device_t, public device_ieee488_interface
{
public:
// construction/destruction
- c8050_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- c8050_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c8050_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -50,6 +48,8 @@ public:
DECLARE_FLOPPY_FORMATS( floppy_formats );
protected:
+ c8050_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -62,13 +62,13 @@ protected:
required_device<m6502_device> m_maincpu;
required_device<m6504_device> m_fdccpu;
- required_device<mos6532_t> m_riot0;
- required_device<mos6532_t> m_riot1;
- required_device<mos6530_t> m_miot;
+ required_device<mos6532_new_device> m_riot0;
+ required_device<mos6532_new_device> m_riot1;
+ required_device<mos6530_new_device> m_miot;
required_device<via6522_device> m_via;
required_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1;
- required_device<c8050_fdc_t> m_fdc;
+ required_device<c8050_fdc_device> m_fdc;
required_ioport m_address;
// IEEE-488 bus
@@ -79,13 +79,13 @@ protected:
};
-// ======================> c8250_t
+// ======================> c8250_device
-class c8250_t : public c8050_t
+class c8250_device : public c8050_device
{
public:
// construction/destruction
- c8250_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c8250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -94,13 +94,13 @@ public:
};
-// ======================> c8250lp_t
+// ======================> c8250lp_device
-class c8250lp_t : public c8050_t
+class c8250lp_device : public c8050_device
{
public:
// construction/destruction
- c8250lp_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c8250lp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -110,13 +110,13 @@ public:
};
-// ======================> sfd1001_t
+// ======================> sfd1001_device
-class sfd1001_t : public c8050_t
+class sfd1001_device : public c8050_device
{
public:
// construction/destruction
- sfd1001_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sfd1001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -127,11 +127,10 @@ public:
// device type definition
-extern const device_type C8050;
-extern const device_type C8250;
-extern const device_type C8250LP;
-extern const device_type SFD1001;
-
+DECLARE_DEVICE_TYPE(C8050, c8050_device)
+DECLARE_DEVICE_TYPE(C8250, c8250_device)
+DECLARE_DEVICE_TYPE(C8250LP, c8250lp_device)
+DECLARE_DEVICE_TYPE(SFD1001, sfd1001_device)
-#endif
+#endif // MAME_BUS_IEE488_C8050_H
diff --git a/src/devices/bus/ieee488/c8050fdc.cpp b/src/devices/bus/ieee488/c8050fdc.cpp
index ae0fe558153..50861316839 100644
--- a/src/devices/bus/ieee488/c8050fdc.cpp
+++ b/src/devices/bus/ieee488/c8050fdc.cpp
@@ -40,7 +40,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C8050_FDC = device_creator<c8050_fdc_t>;
+DEFINE_DEVICE_TYPE(C8050_FDC, c8050_fdc_device, "c8050fdc", "Commodore 8050 FDC")
//-------------------------------------------------
@@ -57,7 +57,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c8050_fdc_t::device_rom_region() const
+const tiny_rom_entry *c8050_fdc_device::device_rom_region() const
{
return ROM_NAME( c8050_fdc );
}
@@ -69,11 +69,11 @@ const tiny_rom_entry *c8050_fdc_t::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// c8050_fdc_t - constructor
+// c8050_fdc_device - constructor
//-------------------------------------------------
-c8050_fdc_t::c8050_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C8050_FDC, "Commodore 8050 FDC", tag, owner, clock, "c8050fdc", __FILE__),
+c8050_fdc_device::c8050_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, C8050_FDC, tag, owner, clock),
m_write_sync(*this),
m_write_ready(*this),
m_write_brdy(*this),
@@ -103,7 +103,7 @@ c8050_fdc_t::c8050_fdc_t(const machine_config &mconfig, const char *tag, device_
// device_start - device-specific startup
//-------------------------------------------------
-void c8050_fdc_t::device_start()
+void c8050_fdc_device::device_start()
{
// resolve callbacks
m_write_sync.resolve_safe();
@@ -134,7 +134,7 @@ void c8050_fdc_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c8050_fdc_t::device_reset()
+void c8050_fdc_device::device_reset()
{
live_abort();
}
@@ -144,18 +144,18 @@ void c8050_fdc_t::device_reset()
// device_timer - handler timer events
//-------------------------------------------------
-void c8050_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void c8050_fdc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
live_sync();
live_run();
}
-floppy_image_device* c8050_fdc_t::get_floppy()
+floppy_image_device* c8050_fdc_device::get_floppy()
{
return cur_live.drv_sel ? m_floppy1 : m_floppy0;
}
-void c8050_fdc_t::stp_w(floppy_image_device *floppy, int mtr, int &old_stp, int stp)
+void c8050_fdc_device::stp_w(floppy_image_device *floppy, int mtr, int &old_stp, int stp)
{
if (mtr) return;
@@ -185,7 +185,7 @@ void c8050_fdc_t::stp_w(floppy_image_device *floppy, int mtr, int &old_stp, int
old_stp = stp;
}
-void c8050_fdc_t::stp0_w(int stp)
+void c8050_fdc_device::stp0_w(int stp)
{
if (m_stp0 != stp)
{
@@ -196,7 +196,7 @@ void c8050_fdc_t::stp0_w(int stp)
}
}
-void c8050_fdc_t::stp1_w(int stp)
+void c8050_fdc_device::stp1_w(int stp)
{
if (m_stp1 != stp)
{
@@ -207,7 +207,7 @@ void c8050_fdc_t::stp1_w(int stp)
}
}
-void c8050_fdc_t::ds_w(int ds)
+void c8050_fdc_device::ds_w(int ds)
{
if (m_ds != ds)
{
@@ -220,7 +220,7 @@ void c8050_fdc_t::ds_w(int ds)
}
}
-void c8050_fdc_t::set_floppy(floppy_connector *floppy0, floppy_connector *floppy1)
+void c8050_fdc_device::set_floppy(floppy_connector *floppy0, floppy_connector *floppy1)
{
m_floppy0 = floppy0->get_device();
@@ -229,7 +229,7 @@ void c8050_fdc_t::set_floppy(floppy_connector *floppy0, floppy_connector *floppy
}
}
-void c8050_fdc_t::live_start()
+void c8050_fdc_device::live_start()
{
cur_live.tm = machine().time();
cur_live.state = RUNNING;
@@ -251,63 +251,63 @@ void c8050_fdc_t::live_start()
live_run();
}
-void c8050_fdc_t::pll_reset(const attotime &when)
+void c8050_fdc_device::pll_reset(const attotime &when)
{
cur_pll.reset(when);
cur_pll.set_clock(attotime::from_hz(clock() / (16 - m_ds)));
}
-void c8050_fdc_t::pll_start_writing(const attotime &tm)
+void c8050_fdc_device::pll_start_writing(const attotime &tm)
{
cur_pll.start_writing(tm);
pll_reset(cur_live.tm);
}
-void c8050_fdc_t::pll_commit(floppy_image_device *floppy, const attotime &tm)
+void c8050_fdc_device::pll_commit(floppy_image_device *floppy, const attotime &tm)
{
cur_pll.commit(floppy, tm);
}
-void c8050_fdc_t::pll_stop_writing(floppy_image_device *floppy, const attotime &tm)
+void c8050_fdc_device::pll_stop_writing(floppy_image_device *floppy, const attotime &tm)
{
cur_pll.stop_writing(floppy, tm);
pll_reset(cur_live.tm);
}
-void c8050_fdc_t::pll_save_checkpoint()
+void c8050_fdc_device::pll_save_checkpoint()
{
checkpoint_pll = cur_pll;
}
-void c8050_fdc_t::pll_retrieve_checkpoint()
+void c8050_fdc_device::pll_retrieve_checkpoint()
{
cur_pll = checkpoint_pll;
}
-int c8050_fdc_t::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
+int c8050_fdc_device::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
return cur_pll.get_next_bit(tm, floppy, limit);
}
-bool c8050_fdc_t::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
+bool c8050_fdc_device::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
return cur_pll.write_next_bit(bit, tm, floppy, limit);
}
-void c8050_fdc_t::checkpoint()
+void c8050_fdc_device::checkpoint()
{
pll_commit(get_floppy(), cur_live.tm);
checkpoint_live = cur_live;
pll_save_checkpoint();
}
-void c8050_fdc_t::rollback()
+void c8050_fdc_device::rollback()
{
cur_live = checkpoint_live;
pll_retrieve_checkpoint();
}
-void c8050_fdc_t::live_delay(int state)
+void c8050_fdc_device::live_delay(int state)
{
cur_live.next_state = state;
if(cur_live.tm != machine().time())
@@ -316,7 +316,7 @@ void c8050_fdc_t::live_delay(int state)
live_sync();
}
-void c8050_fdc_t::live_sync()
+void c8050_fdc_device::live_sync()
{
if(!cur_live.tm.is_never()) {
if(cur_live.tm > machine().time()) {
@@ -339,7 +339,7 @@ void c8050_fdc_t::live_sync()
}
}
-void c8050_fdc_t::live_abort()
+void c8050_fdc_device::live_abort()
{
if(!cur_live.tm.is_never() && cur_live.tm > machine().time()) {
rollback();
@@ -358,7 +358,7 @@ void c8050_fdc_t::live_abort()
cur_live.error = 1;
}
-void c8050_fdc_t::live_run(const attotime &limit)
+void c8050_fdc_device::live_run(const attotime &limit)
{
if(cur_live.state == IDLE || cur_live.next_state != -1)
return;
@@ -497,7 +497,7 @@ void c8050_fdc_t::live_run(const attotime &limit)
}
}
-READ8_MEMBER( c8050_fdc_t::read )
+READ8_MEMBER( c8050_fdc_device::read )
{
uint8_t e = checkpoint_live.e;
offs_t i = checkpoint_live.i;
@@ -505,7 +505,7 @@ READ8_MEMBER( c8050_fdc_t::read )
return GCR_DECODE(e, i);
}
-WRITE8_MEMBER( c8050_fdc_t::write )
+WRITE8_MEMBER( c8050_fdc_device::write )
{
if (LOG) logerror("%s %s PI %02x\n", machine().time().as_string(), machine().describe_context(), data);
@@ -518,19 +518,19 @@ WRITE8_MEMBER( c8050_fdc_t::write )
}
}
-WRITE_LINE_MEMBER( c8050_fdc_t::ds0_w )
+WRITE_LINE_MEMBER( c8050_fdc_device::ds0_w )
{
m_ds0 = state;
}
-WRITE_LINE_MEMBER( c8050_fdc_t::ds1_w )
+WRITE_LINE_MEMBER( c8050_fdc_device::ds1_w )
{
m_ds1 = state;
ds_w(m_ds1 << 1 | m_ds0);
}
-WRITE_LINE_MEMBER( c8050_fdc_t::drv_sel_w )
+WRITE_LINE_MEMBER( c8050_fdc_device::drv_sel_w )
{
if (m_drv_sel != state)
{
@@ -542,7 +542,7 @@ WRITE_LINE_MEMBER( c8050_fdc_t::drv_sel_w )
}
}
-WRITE_LINE_MEMBER( c8050_fdc_t::mode_sel_w )
+WRITE_LINE_MEMBER( c8050_fdc_device::mode_sel_w )
{
if (m_mode_sel != state)
{
@@ -554,7 +554,7 @@ WRITE_LINE_MEMBER( c8050_fdc_t::mode_sel_w )
}
}
-WRITE_LINE_MEMBER( c8050_fdc_t::rw_sel_w )
+WRITE_LINE_MEMBER( c8050_fdc_device::rw_sel_w )
{
if (m_rw_sel != state)
{
@@ -571,7 +571,7 @@ WRITE_LINE_MEMBER( c8050_fdc_t::rw_sel_w )
}
}
-WRITE_LINE_MEMBER( c8050_fdc_t::mtr0_w )
+WRITE_LINE_MEMBER( c8050_fdc_device::mtr0_w )
{
if (m_mtr0 != state)
{
@@ -593,7 +593,7 @@ WRITE_LINE_MEMBER( c8050_fdc_t::mtr0_w )
}
}
-WRITE_LINE_MEMBER( c8050_fdc_t::mtr1_w )
+WRITE_LINE_MEMBER( c8050_fdc_device::mtr1_w )
{
if (m_mtr1 != state)
{
@@ -615,7 +615,7 @@ WRITE_LINE_MEMBER( c8050_fdc_t::mtr1_w )
}
}
-WRITE_LINE_MEMBER( c8050_fdc_t::odd_hd_w )
+WRITE_LINE_MEMBER( c8050_fdc_device::odd_hd_w )
{
if (m_odd_hd != state)
{
@@ -629,7 +629,7 @@ WRITE_LINE_MEMBER( c8050_fdc_t::odd_hd_w )
}
}
-WRITE_LINE_MEMBER( c8050_fdc_t::pull_sync_w )
+WRITE_LINE_MEMBER( c8050_fdc_device::pull_sync_w )
{
if (LOG_MORE) logerror("%s %s PULL SYNC %u\n", machine().time().as_string(), machine().describe_context(), state);
}
diff --git a/src/devices/bus/ieee488/c8050fdc.h b/src/devices/bus/ieee488/c8050fdc.h
index 12cdc0d7def..733100327ba 100644
--- a/src/devices/bus/ieee488/c8050fdc.h
+++ b/src/devices/bus/ieee488/c8050fdc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_C8050FDC_H
+#define MAME_BUS_IEEE488_C8050FDC_H
-#ifndef __C8050_FLOPPY__
-#define __C8050_FLOPPY__
+#pragma once
#include "formats/d80_dsk.h"
#include "formats/d82_dsk.h"
@@ -23,16 +23,16 @@
//**************************************************************************
#define MCFG_C8050_SYNC_CALLBACK(_write) \
- devcb = &c8050_fdc_t::set_sync_wr_callback(*device, DEVCB_##_write);
+ devcb = &c8050_fdc_device::set_sync_wr_callback(*device, DEVCB_##_write);
#define MCFG_C8050_READY_CALLBACK(_write) \
- devcb = &c8050_fdc_t::set_ready_wr_callback(*device, DEVCB_##_write);
+ devcb = &c8050_fdc_device::set_ready_wr_callback(*device, DEVCB_##_write);
#define MCFG_C8050_BRDY_CALLBACK(_write) \
- devcb = &c8050_fdc_t::set_brdy_wr_callback(*device, DEVCB_##_write);
+ devcb = &c8050_fdc_device::set_brdy_wr_callback(*device, DEVCB_##_write);
#define MCFG_C8050_ERROR_CALLBACK(_write) \
- devcb = &c8050_fdc_t::set_error_wr_callback(*device, DEVCB_##_write);
+ devcb = &c8050_fdc_device::set_error_wr_callback(*device, DEVCB_##_write);
@@ -40,18 +40,18 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c8050_fdc_t
+// ======================> c8050_fdc_device
-class c8050_fdc_t : public device_t
+class c8050_fdc_device : public device_t
{
public:
// construction/destruction
- c8050_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c8050_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_sync_wr_callback(device_t &device, _Object object) { return downcast<c8050_fdc_t &>(device).m_write_sync.set_callback(object); }
- template<class _Object> static devcb_base &set_ready_wr_callback(device_t &device, _Object object) { return downcast<c8050_fdc_t &>(device).m_write_ready.set_callback(object); }
- template<class _Object> static devcb_base &set_brdy_wr_callback(device_t &device, _Object object) { return downcast<c8050_fdc_t &>(device).m_write_brdy.set_callback(object); }
- template<class _Object> static devcb_base &set_error_wr_callback(device_t &device, _Object object) { return downcast<c8050_fdc_t &>(device).m_write_error.set_callback(object); }
+ template <class Object> static devcb_base &set_sync_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_sync.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_brdy_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_brdy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<c8050_fdc_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -162,8 +162,6 @@ protected:
// device type definition
-extern const device_type C8050_FDC;
-
-
+DECLARE_DEVICE_TYPE(C8050_FDC, c8050_fdc_device)
-#endif
+#endif // MAME_BUS_IEEE488_C8050FDC_H
diff --git a/src/devices/bus/ieee488/c8280.cpp b/src/devices/bus/ieee488/c8280.cpp
index 82fa2e1c4e0..22930d68f39 100644
--- a/src/devices/bus/ieee488/c8280.cpp
+++ b/src/devices/bus/ieee488/c8280.cpp
@@ -36,7 +36,7 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C8280 = device_creator<c8280_t>;
+DEFINE_DEVICE_TYPE(C8280, c8280_device, "c8280", "Commodore 8280")
//-------------------------------------------------
@@ -63,7 +63,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c8280_t::device_rom_region() const
+const tiny_rom_entry *c8280_device::device_rom_region() const
{
return ROM_NAME( c8280 );
}
@@ -73,11 +73,11 @@ const tiny_rom_entry *c8280_t::device_rom_region() const
// ADDRESS_MAP( c8280_main_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c8280_main_mem, AS_PROGRAM, 8, c8280_t )
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x100) AM_DEVICE(M6532_0_TAG, mos6532_t, ram_map)
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x100) AM_DEVICE(M6532_1_TAG, mos6532_t, ram_map)
- AM_RANGE(0x0200, 0x021f) AM_MIRROR(0xd60) AM_DEVICE(M6532_0_TAG, mos6532_t, io_map)
- AM_RANGE(0x0280, 0x029f) AM_MIRROR(0xd60) AM_DEVICE(M6532_1_TAG, mos6532_t, io_map)
+static ADDRESS_MAP_START( c8280_main_mem, AS_PROGRAM, 8, c8280_device )
+ AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x100) AM_DEVICE(M6532_0_TAG, mos6532_new_device, ram_map)
+ AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x100) AM_DEVICE(M6532_1_TAG, mos6532_new_device, ram_map)
+ AM_RANGE(0x0200, 0x021f) AM_MIRROR(0xd60) AM_DEVICE(M6532_0_TAG, mos6532_new_device, io_map)
+ AM_RANGE(0x0280, 0x029f) AM_MIRROR(0xd60) AM_DEVICE(M6532_1_TAG, mos6532_new_device, io_map)
AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0xc00) AM_RAM AM_SHARE("share1")
AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0xc00) AM_RAM AM_SHARE("share2")
AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0xc00) AM_RAM AM_SHARE("share3")
@@ -90,10 +90,10 @@ ADDRESS_MAP_END
// ADDRESS_MAP( c8280_fdc_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c8280_fdc_mem, AS_PROGRAM, 8, c8280_t )
+static ADDRESS_MAP_START( c8280_fdc_mem, AS_PROGRAM, 8, c8280_device )
ADDRESS_MAP_GLOBAL_MASK(0x1fff)
AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x300) AM_RAM
- AM_RANGE(0x0080, 0x0083) AM_MIRROR(0x37c) AM_DEVREADWRITE(WD1797_TAG, fd1797_t, read, write)
+ AM_RANGE(0x0080, 0x0083) AM_MIRROR(0x37c) AM_DEVREADWRITE(WD1797_TAG, fd1797_device, read, write)
AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("share2")
AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("share3")
@@ -107,7 +107,7 @@ ADDRESS_MAP_END
// riot6532 0
//-------------------------------------------------
-READ8_MEMBER( c8280_t::dio_r )
+READ8_MEMBER( c8280_device::dio_r )
{
/*
@@ -127,7 +127,7 @@ READ8_MEMBER( c8280_t::dio_r )
return m_bus->dio_r();
}
-WRITE8_MEMBER( c8280_t::dio_w )
+WRITE8_MEMBER( c8280_device::dio_w )
{
/*
@@ -152,7 +152,7 @@ WRITE8_MEMBER( c8280_t::dio_w )
// riot6532 1
//-------------------------------------------------
-READ8_MEMBER( c8280_t::riot1_pa_r )
+READ8_MEMBER( c8280_device::riot1_pa_r )
{
/*
@@ -183,7 +183,7 @@ READ8_MEMBER( c8280_t::riot1_pa_r )
return data;
}
-WRITE8_MEMBER( c8280_t::riot1_pa_w )
+WRITE8_MEMBER( c8280_device::riot1_pa_w )
{
/*
@@ -218,7 +218,7 @@ WRITE8_MEMBER( c8280_t::riot1_pa_w )
update_ieee_signals();
}
-READ8_MEMBER( c8280_t::riot1_pb_r )
+READ8_MEMBER( c8280_device::riot1_pb_r )
{
/*
@@ -249,7 +249,7 @@ READ8_MEMBER( c8280_t::riot1_pb_r )
return data;
}
-WRITE8_MEMBER( c8280_t::riot1_pb_w )
+WRITE8_MEMBER( c8280_device::riot1_pb_w )
{
/*
@@ -280,7 +280,7 @@ static SLOT_INTERFACE_START( c8280_floppies )
SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD )
SLOT_INTERFACE_END
-FLOPPY_FORMATS_MEMBER( c8280_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c8280_device::floppy_formats )
FLOPPY_C8280_FORMAT
FLOPPY_FORMATS_END
@@ -293,15 +293,15 @@ static MACHINE_CONFIG_FRAGMENT( c8280 )
MCFG_CPU_ADD(M6502_DOS_TAG, M6502, XTAL_12MHz/8)
MCFG_CPU_PROGRAM_MAP(c8280_main_mem)
- MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532n, XTAL_12MHz/8)
- MCFG_MOS6530n_IN_PA_CB(READ8(c8280_t, dio_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8280_t, dio_w))
+ MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532_NEW, XTAL_12MHz/8)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c8280_device, dio_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8280_device, dio_w))
- MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532n, XTAL_12MHz/8)
- MCFG_MOS6530n_IN_PA_CB(READ8(c8280_t, riot1_pa_r))
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(c8280_t, riot1_pa_w))
- MCFG_MOS6530n_IN_PB_CB(READ8(c8280_t, riot1_pb_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8280_t, riot1_pb_w))
+ MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532_NEW, XTAL_12MHz/8)
+ MCFG_MOS6530n_IN_PA_CB(READ8(c8280_device, riot1_pa_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(c8280_device, riot1_pa_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(c8280_device, riot1_pb_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(c8280_device, riot1_pb_w))
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_DOS_TAG, INPUT_LINE_IRQ0))
MCFG_CPU_ADD(M6502_FDC_TAG, M6502, XTAL_12MHz/8)
@@ -310,8 +310,8 @@ static MACHINE_CONFIG_FRAGMENT( c8280 )
MCFG_FD1797_ADD(WD1797_TAG, XTAL_12MHz/6)
MCFG_WD_FDC_INTRQ_CALLBACK(INPUTLINE(M6502_FDC_TAG, M6502_IRQ_LINE))
MCFG_WD_FDC_DRQ_CALLBACK(INPUTLINE(M6502_FDC_TAG, M6502_SET_OVERFLOW))
- MCFG_FLOPPY_DRIVE_ADD(WD1797_TAG ":0", c8280_floppies, "8dsdd", c8280_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(WD1797_TAG ":1", c8280_floppies, "8dsdd", c8280_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1797_TAG ":0", c8280_floppies, "8dsdd", c8280_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1797_TAG ":1", c8280_floppies, "8dsdd", c8280_device::floppy_formats)
MACHINE_CONFIG_END
@@ -320,7 +320,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c8280_t::device_mconfig_additions() const
+machine_config_constructor c8280_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c8280 );
}
@@ -348,7 +348,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c8280_t::device_input_ports() const
+ioport_constructor c8280_device::device_input_ports() const
{
return INPUT_PORTS_NAME( c8280 );
}
@@ -363,7 +363,7 @@ ioport_constructor c8280_t::device_input_ports() const
// update_ieee_signals -
//-------------------------------------------------
-inline void c8280_t::update_ieee_signals()
+inline void c8280_device::update_ieee_signals()
{
int atn = m_bus->atn_r();
int nrfd = !(!(!(atn && m_atna) && m_rfdo) || !(atn || m_atna));
@@ -380,11 +380,11 @@ inline void c8280_t::update_ieee_signals()
//**************************************************************************
//-------------------------------------------------
-// c8280_t - constructor
+// c8280_device - constructor
//-------------------------------------------------
-c8280_t::c8280_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C8280, "C8280", tag, owner, clock, "c8280", __FILE__),
+c8280_device::c8280_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, C8280, tag, owner, clock),
device_ieee488_interface(mconfig, *this),
m_maincpu(*this, M6502_DOS_TAG),
m_fdccpu(*this, M6502_FDC_TAG),
@@ -405,7 +405,7 @@ c8280_t::c8280_t(const machine_config &mconfig, const char *tag, device_t *owner
// device_start - device-specific startup
//-------------------------------------------------
-void c8280_t::device_start()
+void c8280_device::device_start()
{
// state saving
save_item(NAME(m_rfdo));
@@ -420,7 +420,7 @@ void c8280_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c8280_t::device_reset()
+void c8280_device::device_reset()
{
m_maincpu->reset();
@@ -447,7 +447,7 @@ void c8280_t::device_reset()
// ieee488_atn -
//-------------------------------------------------
-void c8280_t::ieee488_atn(int state)
+void c8280_device::ieee488_atn(int state)
{
update_ieee_signals();
@@ -459,7 +459,7 @@ void c8280_t::ieee488_atn(int state)
// ieee488_ifc -
//-------------------------------------------------
-void c8280_t::ieee488_ifc(int state)
+void c8280_device::ieee488_ifc(int state)
{
if (!m_ifc && state)
{
@@ -469,7 +469,7 @@ void c8280_t::ieee488_ifc(int state)
m_ifc = state;
}
-READ8_MEMBER( c8280_t::fk5_r )
+READ8_MEMBER( c8280_device::fk5_r )
{
/*
@@ -494,7 +494,7 @@ READ8_MEMBER( c8280_t::fk5_r )
return data;
}
-WRITE8_MEMBER( c8280_t::fk5_w )
+WRITE8_MEMBER( c8280_device::fk5_w )
{
/*
diff --git a/src/devices/bus/ieee488/c8280.h b/src/devices/bus/ieee488/c8280.h
index 2a3c1a4f153..8c840d707f5 100644
--- a/src/devices/bus/ieee488/c8280.h
+++ b/src/devices/bus/ieee488/c8280.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_C8280_H
+#define MAME_BUS_IEEE488_C8280_H
-#ifndef __C8280__
-#define __C8280__
+#pragma once
#include "ieee488.h"
#include "cpu/m6502/m6502.h"
@@ -23,14 +23,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c8280_t
+// ======================> c8280_device
-class c8280_t : public device_t,
- public device_ieee488_interface
+class c8280_device : public device_t, public device_ieee488_interface
{
public:
// construction/destruction
- c8280_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c8280_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -63,9 +62,9 @@ private:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_fdccpu;
- required_device<mos6532_t> m_riot0;
- required_device<mos6532_t> m_riot1;
- required_device<fd1797_t> m_fdc;
+ required_device<mos6532_new_device> m_riot0;
+ required_device<mos6532_new_device> m_riot1;
+ required_device<fd1797_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_ioport m_address;
@@ -82,8 +81,7 @@ private:
// device type definition
-extern const device_type C8280;
-
+DECLARE_DEVICE_TYPE(C8280, c8280_device)
-#endif
+#endif // MAME_BUS_IEEE488_C8280_H
diff --git a/src/devices/bus/ieee488/d9060.cpp b/src/devices/bus/ieee488/d9060.cpp
index e89dea811eb..a6866ccad2a 100644
--- a/src/devices/bus/ieee488/d9060.cpp
+++ b/src/devices/bus/ieee488/d9060.cpp
@@ -61,8 +61,8 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type D9060 = device_creator<d9060_t>;
-const device_type D9090 = device_creator<d9090_t>;
+DEFINE_DEVICE_TYPE(D9060, d9060_device, "d9060", "Commodore D9060")
+DEFINE_DEVICE_TYPE(D9090, d9090_device, "d9090", "Commodore D9090")
//-------------------------------------------------
@@ -99,7 +99,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *d9060_base_t::device_rom_region() const
+const tiny_rom_entry *d9060_device_base::device_rom_region() const
{
return ROM_NAME( d9060 );
}
@@ -109,11 +109,11 @@ const tiny_rom_entry *d9060_base_t::device_rom_region() const
// ADDRESS_MAP( d9060_main_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( d9060_main_mem, AS_PROGRAM, 8, d9060_base_t )
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0100) AM_DEVICE(M6532_0_TAG, mos6532_t, ram_map)
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0100) AM_DEVICE(M6532_1_TAG, mos6532_t, ram_map)
- AM_RANGE(0x0200, 0x021f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_0_TAG, mos6532_t, io_map)
- AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_1_TAG, mos6532_t, io_map)
+static ADDRESS_MAP_START( d9060_main_mem, AS_PROGRAM, 8, d9060_device_base )
+ AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0100) AM_DEVICE(M6532_0_TAG, mos6532_new_device, ram_map)
+ AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0100) AM_DEVICE(M6532_1_TAG, mos6532_new_device, ram_map)
+ AM_RANGE(0x0200, 0x021f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_0_TAG, mos6532_new_device, io_map)
+ AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d60) AM_DEVICE(M6532_1_TAG, mos6532_new_device, io_map)
AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share1")
AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share2")
AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM AM_SHARE("share3")
@@ -126,7 +126,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( d9060_hdc_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( d9060_hdc_mem, AS_PROGRAM, 8, d9060_base_t )
+static ADDRESS_MAP_START( d9060_hdc_mem, AS_PROGRAM, 8, d9060_device_base )
ADDRESS_MAP_GLOBAL_MASK(0x1fff)
AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x300) AM_RAM
AM_RANGE(0x0080, 0x008f) AM_MIRROR(0x380) AM_DEVREADWRITE(M6522_TAG, via6522_device, read, write)
@@ -142,7 +142,7 @@ ADDRESS_MAP_END
// riot6532 0
//-------------------------------------------------
-READ8_MEMBER( d9060_base_t::dio_r )
+READ8_MEMBER( d9060_device_base::dio_r )
{
/*
@@ -163,7 +163,7 @@ READ8_MEMBER( d9060_base_t::dio_r )
}
-WRITE8_MEMBER( d9060_base_t::dio_w )
+WRITE8_MEMBER( d9060_device_base::dio_w )
{
/*
@@ -188,7 +188,7 @@ WRITE8_MEMBER( d9060_base_t::dio_w )
// riot6532 1
//-------------------------------------------------
-READ8_MEMBER( d9060_base_t::riot1_pa_r )
+READ8_MEMBER( d9060_device_base::riot1_pa_r )
{
/*
@@ -219,7 +219,7 @@ READ8_MEMBER( d9060_base_t::riot1_pa_r )
return data;
}
-WRITE8_MEMBER( d9060_base_t::riot1_pa_w )
+WRITE8_MEMBER( d9060_device_base::riot1_pa_w )
{
/*
@@ -254,7 +254,7 @@ WRITE8_MEMBER( d9060_base_t::riot1_pa_w )
update_ieee_signals();
}
-READ8_MEMBER( d9060_base_t::riot1_pb_r )
+READ8_MEMBER( d9060_device_base::riot1_pb_r )
{
/*
@@ -285,7 +285,7 @@ READ8_MEMBER( d9060_base_t::riot1_pb_r )
return data;
}
-WRITE8_MEMBER( d9060_base_t::riot1_pb_w )
+WRITE8_MEMBER( d9060_device_base::riot1_pb_w )
{
/*
@@ -313,7 +313,7 @@ WRITE8_MEMBER( d9060_base_t::riot1_pb_w )
}
-WRITE8_MEMBER( d9060_base_t::via_pb_w )
+WRITE8_MEMBER( d9060_device_base::via_pb_w )
{
/*
@@ -334,12 +334,12 @@ WRITE8_MEMBER( d9060_base_t::via_pb_w )
m_sasibus->write_rst(BIT(data, 1));
}
-WRITE_LINE_MEMBER( d9060_base_t::ack_w )
+WRITE_LINE_MEMBER( d9060_device_base::ack_w )
{
m_sasibus->write_ack(!state);
}
-WRITE_LINE_MEMBER( d9060_base_t::enable_w )
+WRITE_LINE_MEMBER( d9060_device_base::enable_w )
{
m_enable = state;
@@ -353,7 +353,7 @@ WRITE_LINE_MEMBER( d9060_base_t::enable_w )
}
}
-WRITE8_MEMBER( d9060_base_t::scsi_data_w )
+WRITE8_MEMBER( d9060_device_base::scsi_data_w )
{
m_data = data;
@@ -373,15 +373,15 @@ static MACHINE_CONFIG_FRAGMENT( d9060 )
MCFG_CPU_ADD(M6502_DOS_TAG, M6502, XTAL_4MHz/4)
MCFG_CPU_PROGRAM_MAP(d9060_main_mem)
- MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532n, XTAL_4MHz/4)
- MCFG_MOS6530n_IN_PA_CB(READ8(d9060_base_t, dio_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(d9060_base_t, dio_w))
+ MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532_NEW, XTAL_4MHz/4)
+ MCFG_MOS6530n_IN_PA_CB(READ8(d9060_device_base, dio_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(d9060_device_base, dio_w))
- MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532n, XTAL_4MHz/4)
- MCFG_MOS6530n_IN_PA_CB(READ8(d9060_base_t, riot1_pa_r))
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(d9060_base_t, riot1_pa_w))
- MCFG_MOS6530n_IN_PB_CB(READ8(d9060_base_t, riot1_pb_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(d9060_base_t, riot1_pb_w))
+ MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532_NEW, XTAL_4MHz/4)
+ MCFG_MOS6530n_IN_PA_CB(READ8(d9060_device_base, riot1_pa_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(d9060_device_base, riot1_pa_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(d9060_device_base, riot1_pb_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(d9060_device_base, riot1_pb_w))
MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_DOS_TAG, INPUT_LINE_IRQ0))
// controller
@@ -389,10 +389,10 @@ static MACHINE_CONFIG_FRAGMENT( d9060 )
MCFG_CPU_PROGRAM_MAP(d9060_hdc_mem)
MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_4MHz/4)
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(d9060_base_t, scsi_data_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(d9060_base_t, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(WRITELINE(d9060_base_t, ack_w))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(d9060_base_t, enable_w))
+ MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(d9060_device_base, scsi_data_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(d9060_device_base, via_pb_w))
+ MCFG_VIA6522_CA2_HANDLER(WRITELINE(d9060_device_base, ack_w))
+ MCFG_VIA6522_CB2_HANDLER(WRITELINE(d9060_device_base, enable_w))
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE(M6502_HDC_TAG, M6502_IRQ_LINE))
MCFG_DEVICE_ADD(SASIBUS_TAG, SCSI_PORT, 0)
@@ -421,7 +421,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor d9060_base_t::device_mconfig_additions() const
+machine_config_constructor d9060_device_base::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( d9060 );
}
@@ -449,7 +449,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor d9060_base_t::device_input_ports() const
+ioport_constructor d9060_device_base::device_input_ports() const
{
return INPUT_PORTS_NAME( d9060 );
}
@@ -464,7 +464,7 @@ ioport_constructor d9060_base_t::device_input_ports() const
// update_ieee_signals -
//-------------------------------------------------
-inline void d9060_base_t::update_ieee_signals()
+inline void d9060_device_base::update_ieee_signals()
{
int atn = m_bus->atn_r();
int nrfd = !(!(!(atn && m_atna) && m_rfdo) || !(atn || m_atna));
@@ -481,50 +481,56 @@ inline void d9060_base_t::update_ieee_signals()
//**************************************************************************
//-------------------------------------------------
-// d9060_base_t - constructor
-//-------------------------------------------------
-
-d9060_base_t::d9060_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_ieee488_interface(mconfig, *this),
- m_maincpu(*this, M6502_DOS_TAG),
- m_hdccpu(*this, M6502_HDC_TAG),
- m_riot0(*this, M6532_0_TAG),
- m_riot1(*this, M6532_1_TAG),
- m_via(*this, M6522_TAG),
- m_sasibus(*this, SASIBUS_TAG),
- m_sasi_data_out(*this, "sasi_data_out"),
- m_address(*this, "ADDRESS"),
- m_rfdo(1),
- m_daco(1),
- m_atna(1), m_ifc(0),
- m_enable(0), m_data(0),
- m_variant(variant)
+// d9060_device_base - constructor
+//-------------------------------------------------
+
+d9060_device_base::d9060_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_ieee488_interface(mconfig, *this)
+ , m_maincpu(*this, M6502_DOS_TAG)
+ , m_hdccpu(*this, M6502_HDC_TAG)
+ , m_riot0(*this, M6532_0_TAG)
+ , m_riot1(*this, M6532_1_TAG)
+ , m_via(*this, M6522_TAG)
+ , m_sasibus(*this, SASIBUS_TAG)
+ , m_sasi_data_out(*this, "sasi_data_out")
+ , m_address(*this, "ADDRESS")
+ , m_rfdo(1)
+ , m_daco(1)
+ , m_atna(1)
+ , m_ifc(0)
+ , m_enable(0)
+ , m_data(0)
+ , m_variant(variant)
{
}
//-------------------------------------------------
-// d9060_t - constructor
+// d9060_device - constructor
//-------------------------------------------------
-d9060_t::d9060_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : d9060_base_t(mconfig, D9060, "D9060", tag, owner, clock, TYPE_9060, "d9060", __FILE__) { }
+d9060_device::d9060_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : d9060_device_base(mconfig, D9060, tag, owner, clock, TYPE_9060)
+{
+}
//-------------------------------------------------
-// d9090_t - constructor
+// d9090_device - constructor
//-------------------------------------------------
-d9090_t::d9090_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : d9060_base_t(mconfig, D9090, "D9090", tag, owner, clock, TYPE_9090, "d9090", __FILE__) { }
+d9090_device::d9090_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : d9060_device_base(mconfig, D9090, tag, owner, clock, TYPE_9090)
+{
+}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void d9060_base_t::device_start()
+void d9060_device_base::device_start()
{
// state saving
save_item(NAME(m_rfdo));
@@ -541,7 +547,7 @@ void d9060_base_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void d9060_base_t::device_reset()
+void d9060_device_base::device_reset()
{
m_maincpu->set_input_line(M6502_SET_OVERFLOW, ASSERT_LINE);
m_maincpu->set_input_line(M6502_SET_OVERFLOW, CLEAR_LINE);
@@ -556,7 +562,7 @@ void d9060_base_t::device_reset()
// ieee488_atn - attention
//-------------------------------------------------
-void d9060_base_t::ieee488_atn(int state)
+void d9060_device_base::ieee488_atn(int state)
{
update_ieee_signals();
@@ -568,7 +574,7 @@ void d9060_base_t::ieee488_atn(int state)
// ieee488_ifc - interface clear
//-------------------------------------------------
-void d9060_base_t::ieee488_ifc(int state)
+void d9060_device_base::ieee488_ifc(int state)
{
if (!m_ifc && state)
{
diff --git a/src/devices/bus/ieee488/d9060.h b/src/devices/bus/ieee488/d9060.h
index 9934c0e0cb0..e58f4c5f01c 100644
--- a/src/devices/bus/ieee488/d9060.h
+++ b/src/devices/bus/ieee488/d9060.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_D9060_H
+#define MAME_BUS_IEEE488_D9060_H
-#ifndef __D9060__
-#define __D9060__
+#pragma once
#include "ieee488.h"
#include "cpu/m6502/m6502.h"
@@ -24,21 +24,11 @@
//**************************************************************************
-// ======================> d9060_base_t
+// ======================> d9060_device_base
-class d9060_base_t : public device_t,
- public device_ieee488_interface
+class d9060_device_base : public device_t, public device_ieee488_interface
{
public:
- enum
- {
- TYPE_9060,
- TYPE_9090
- };
-
- // construction/destruction
- d9060_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
-
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -57,6 +47,15 @@ public:
DECLARE_WRITE8_MEMBER( scsi_data_w );
protected:
+ enum
+ {
+ TYPE_9060,
+ TYPE_9090
+ };
+
+ // construction/destruction
+ d9060_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -70,10 +69,10 @@ private:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_hdccpu;
- required_device<mos6532_t> m_riot0;
- required_device<mos6532_t> m_riot1;
+ required_device<mos6532_new_device> m_riot0;
+ required_device<mos6532_new_device> m_riot1;
required_device<via6522_device> m_via;
- required_device<SCSI_PORT_DEVICE> m_sasibus;
+ required_device<scsi_port_device> m_sasibus;
required_device<output_latch_device> m_sasi_data_out;
required_ioport m_address;
@@ -91,30 +90,28 @@ private:
};
-// ======================> d9060_t
+// ======================> d9060_device
-class d9060_t : public d9060_base_t
+class d9060_device : public d9060_device_base
{
public:
// construction/destruction
- d9060_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ d9060_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-// ======================> d9090_t
+// ======================> d9090_device
-class d9090_t : public d9060_base_t
+class d9090_device : public d9060_device_base
{
public:
// construction/destruction
- d9090_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ d9090_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
// device type definition
-extern const device_type D9060;
-extern const device_type D9090;
-
-
+DECLARE_DEVICE_TYPE(D9060, d9060_device)
+DECLARE_DEVICE_TYPE(D9090, d9090_device)
-#endif
+#endif // MAME_BUS_IEEE488_D9060_H
diff --git a/src/devices/bus/ieee488/hardbox.cpp b/src/devices/bus/ieee488/hardbox.cpp
index 5aa56ad92d9..0a61dca52a7 100644
--- a/src/devices/bus/ieee488/hardbox.cpp
+++ b/src/devices/bus/ieee488/hardbox.cpp
@@ -58,7 +58,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type HARDBOX = device_creator<hardbox_device>;
+DEFINE_DEVICE_TYPE(HARDBOX, hardbox_device, "hardbox", "SSE HardBox")
//-------------------------------------------------
@@ -119,7 +119,7 @@ static ADDRESS_MAP_START( hardbox_io, AS_IO, 8, hardbox_device )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(I8255_0_TAG, i8255_device, read, write)
AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(I8255_1_TAG, i8255_device, read, write)
- AM_RANGE(0x18, 0x18) AM_DEVREADWRITE(CORVUS_HDC_TAG, corvus_hdc_t, read, write)
+ AM_RANGE(0x18, 0x18) AM_DEVREADWRITE(CORVUS_HDC_TAG, corvus_hdc_device, read, write)
ADDRESS_MAP_END
@@ -232,8 +232,8 @@ READ8_MEMBER( hardbox_device::ppi1_pc_r )
uint8_t status = m_hdc->status_r(space, 0);
uint8_t data = 0;
- data |= (status & CONTROLLER_BUSY) ? 0 : 0x10;
- data |= (status & CONTROLLER_DIRECTION) ? 0 : 0x20;
+ data |= (status & corvus_hdc_device::CONTROLLER_BUSY) ? 0 : 0x10;
+ data |= (status & corvus_hdc_device::CONTROLLER_DIRECTION) ? 0 : 0x20;
return data;
}
@@ -348,10 +348,11 @@ ioport_constructor hardbox_device::device_input_ports() const
//-------------------------------------------------
hardbox_device::hardbox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HARDBOX, "HardBox", tag, owner, clock, "hardbox", __FILE__),
- device_ieee488_interface(mconfig, *this),
- m_maincpu(*this, Z80_TAG),
- m_hdc(*this, CORVUS_HDC_TAG), m_ifc(0)
+ : device_t(mconfig, HARDBOX, tag, owner, clock)
+ , device_ieee488_interface(mconfig, *this)
+ , m_maincpu(*this, Z80_TAG)
+ , m_hdc(*this, CORVUS_HDC_TAG)
+ , m_ifc(0)
{
}
diff --git a/src/devices/bus/ieee488/hardbox.h b/src/devices/bus/ieee488/hardbox.h
index 8ea1acc5445..d10a19c7268 100644
--- a/src/devices/bus/ieee488/hardbox.h
+++ b/src/devices/bus/ieee488/hardbox.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_HARDBOX_H
+#define MAME_BUS_IEEE488_HARDBOX_H
-#ifndef __PET_HARDBOX__
-#define __PET_HARDBOX__
+#pragma once
#include "ieee488.h"
#include "cpu/z80/z80.h"
@@ -64,14 +64,13 @@ private:
};
required_device<cpu_device> m_maincpu;
- required_device<corvus_hdc_t> m_hdc;
+ required_device<corvus_hdc_device> m_hdc;
int m_ifc; // Tracks previous state of IEEE-488 IFC line
};
// device type definition
-extern const device_type HARDBOX;
-
+DECLARE_DEVICE_TYPE(HARDBOX, hardbox_device)
-#endif
+#endif // MAME_BUS_IEEE488_HARDBOX_H
diff --git a/src/devices/bus/ieee488/hp9895.cpp b/src/devices/bus/ieee488/hp9895.cpp
index 131e115f073..6e5e62d6e53 100644
--- a/src/devices/bus/ieee488/hp9895.cpp
+++ b/src/devices/bus/ieee488/hp9895.cpp
@@ -130,7 +130,7 @@ enum {
#define MIN_SYNC_BITS 29 // Number of bits to synchronize
// device type definition
-const device_type HP9895 = device_creator<hp9895_device>;
+DEFINE_DEVICE_TYPE(HP9895, hp9895_device, "hp9895", "HP9895")
// Masks of drive selectors in XV register
static const uint8_t xv_drive_masks[] = {
@@ -139,7 +139,7 @@ static const uint8_t xv_drive_masks[] = {
};
hp9895_device::hp9895_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HP9895, "HP9895", tag, owner, clock, "hp9895", __FILE__),
+ : device_t(mconfig, HP9895, tag, owner, clock),
device_ieee488_interface(mconfig, *this),
m_cpu(*this , "cpu"),
m_phi(*this , "phi"),
diff --git a/src/devices/bus/ieee488/hp9895.h b/src/devices/bus/ieee488/hp9895.h
index 49b99ec0017..001a03abd56 100644
--- a/src/devices/bus/ieee488/hp9895.h
+++ b/src/devices/bus/ieee488/hp9895.h
@@ -8,10 +8,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_HP9895_H
+#define MAME_BUS_IEEE488_HP9895_H
-#ifndef _HP9895_H_
-#define _HP9895_H_
+#pragma once
#include "ieee488.h"
#include "cpu/z80/z80.h"
@@ -28,9 +28,6 @@ public:
// device-level overrides
virtual ioport_constructor device_input_ports() const override;
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -82,6 +79,11 @@ public:
// Floppy drive interface
void floppy_ready_cb(floppy_image_device *floppy , int state);
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
required_device<z80_device> m_cpu;
required_device<phi_device> m_phi;
@@ -129,6 +131,6 @@ private:
};
// device type definition
-extern const device_type HP9895;
+DECLARE_DEVICE_TYPE(HP9895, hp9895_device)
-#endif /* _HP9895_H_ */
+#endif // MAME_BUS_IEEE488_HP9895_H
diff --git a/src/devices/bus/ieee488/ieee488.cpp b/src/devices/bus/ieee488/ieee488.cpp
index 5b0ba2d9197..e224419c408 100644
--- a/src/devices/bus/ieee488/ieee488.cpp
+++ b/src/devices/bus/ieee488/ieee488.cpp
@@ -27,11 +27,8 @@ static const char *const SIGNAL_NAME[] = { "EOI", "DAV", "NRFD", "NDAC", "IFC",
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type IEEE488 = device_creator<ieee488_device>;
-const device_type IEEE488_SLOT = device_creator<ieee488_slot_device>;
-
-template class device_finder<ieee488_device, false>;
-template class device_finder<ieee488_device, true>;
+DEFINE_DEVICE_TYPE(IEEE488, ieee488_device, "ieee488", "IEEE-488 bus")
+DEFINE_DEVICE_TYPE(IEEE488_SLOT, ieee488_slot_device, "ieee488_slot", "IEEE-488 slot")
@@ -44,7 +41,7 @@ template class device_finder<ieee488_device, true>;
//-------------------------------------------------
device_ieee488_interface::device_ieee488_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device), m_next(nullptr), m_bus(nullptr), m_slot(nullptr)
+ : device_slot_card_interface(mconfig, device), m_bus(nullptr), m_slot(nullptr), m_next(nullptr)
{
}
@@ -68,8 +65,9 @@ device_ieee488_interface::~device_ieee488_interface()
//-------------------------------------------------
ieee488_slot_device::ieee488_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, IEEE488_SLOT, "IEEE-488 slot", tag, owner, clock, "ieee488_slot", __FILE__),
- device_slot_interface(mconfig, *this), m_address(0)
+ device_t(mconfig, IEEE488_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_address(0)
{
}
@@ -104,17 +102,17 @@ void ieee488_slot_device::device_start()
// ieee488_device - constructor
//-------------------------------------------------
-ieee488_device::ieee488_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IEEE488, "IEEE-488 bus", tag, owner, clock, "ieee488", __FILE__),
- m_write_eoi(*this),
- m_write_dav(*this),
- m_write_nrfd(*this),
- m_write_ndac(*this),
- m_write_ifc(*this),
- m_write_srq(*this),
- m_write_atn(*this),
- m_write_ren(*this),
- m_dio(0xff)
+ieee488_device::ieee488_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, IEEE488, tag, owner, clock),
+ m_write_eoi(*this),
+ m_write_dav(*this),
+ m_write_nrfd(*this),
+ m_write_ndac(*this),
+ m_write_ifc(*this),
+ m_write_srq(*this),
+ m_write_atn(*this),
+ m_write_ren(*this),
+ m_dio(0xff)
{
for (auto & elem : m_line)
{
@@ -398,7 +396,7 @@ SLOT_INTERFACE_START( cbm_ieee488_devices )
SLOT_INTERFACE("d9090", D9090)
SLOT_INTERFACE("softbox", SOFTBOX)
SLOT_INTERFACE("hardbox", HARDBOX)
- SLOT_INTERFACE("shark", SHARK)
+ SLOT_INTERFACE("shark", MSHARK)
SLOT_INTERFACE("c4023", C4023)
SLOT_INTERFACE_END
diff --git a/src/devices/bus/ieee488/ieee488.h b/src/devices/bus/ieee488/ieee488.h
index 681dbb8f1fe..c5dbb770e55 100644
--- a/src/devices/bus/ieee488/ieee488.h
+++ b/src/devices/bus/ieee488/ieee488.h
@@ -7,10 +7,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_IEEE488_H
+#define MAME_BUS_IEEE488_IEEE488_H
-#ifndef __IEEE488__
-#define __IEEE488__
+#pragma once
@@ -91,14 +91,14 @@ public:
// construction/destruction
ieee488_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _write> devcb_base &set_eoi_callback(_write wr) { return m_write_eoi.set_callback(wr); }
- template<class _write> devcb_base &set_dav_callback(_write wr) { return m_write_dav.set_callback(wr); }
- template<class _write> devcb_base &set_nrfd_callback(_write wr) { return m_write_nrfd.set_callback(wr); }
- template<class _write> devcb_base &set_ndac_callback(_write wr) { return m_write_ndac.set_callback(wr); }
- template<class _write> devcb_base &set_ifc_callback(_write wr) { return m_write_ifc.set_callback(wr); }
- template<class _write> devcb_base &set_srq_callback(_write wr) { return m_write_srq.set_callback(wr); }
- template<class _write> devcb_base &set_atn_callback(_write wr) { return m_write_atn.set_callback(wr); }
- template<class _write> devcb_base &set_ren_callback(_write wr) { return m_write_ren.set_callback(wr); }
+ template <class Object> devcb_base &set_eoi_callback(Object &&cb) { return m_write_eoi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_dav_callback(Object &&cb) { return m_write_dav.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_nrfd_callback(Object &&cb) { return m_write_nrfd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ndac_callback(Object &&cb) { return m_write_ndac.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ifc_callback(Object &&cb) { return m_write_ifc.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_srq_callback(Object &&cb) { return m_write_srq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_atn_callback(Object &&cb) { return m_write_atn.set_callback(std::forward<Object>(cb)); }
+ template <class Object> devcb_base &set_ren_callback(Object &&cb) { return m_write_ren.set_callback(std::forward<Object>(cb)); }
void add_device(ieee488_slot_device *slot, device_t *target);
@@ -216,41 +216,42 @@ protected:
class device_ieee488_interface : public device_slot_card_interface
{
friend class ieee488_device;
+ template <class ElementType> friend class simple_list;
public:
// construction/destruction
- device_ieee488_interface(const machine_config &mconfig, device_t &device);
virtual ~device_ieee488_interface();
device_ieee488_interface *next() const { return m_next; }
- device_ieee488_interface *m_next;
// optional operation overrides
- virtual void ieee488_eoi(int state) { };
- virtual void ieee488_dav(int state) { };
- virtual void ieee488_nrfd(int state) { };
- virtual void ieee488_ndac(int state) { };
- virtual void ieee488_ifc(int state) { };
- virtual void ieee488_srq(int state) { };
- virtual void ieee488_atn(int state) { };
- virtual void ieee488_ren(int state) { };
+ virtual void ieee488_eoi(int state) { }
+ virtual void ieee488_dav(int state) { }
+ virtual void ieee488_nrfd(int state) { }
+ virtual void ieee488_ndac(int state) { }
+ virtual void ieee488_ifc(int state) { }
+ virtual void ieee488_srq(int state) { }
+ virtual void ieee488_atn(int state) { }
+ virtual void ieee488_ren(int state) { }
+
+protected:
+ device_ieee488_interface(const machine_config &mconfig, device_t &device);
ieee488_device *m_bus;
ieee488_slot_device *m_slot;
+
+private:
+ device_ieee488_interface *m_next;
};
// device type definition
-extern const device_type IEEE488;
-extern const device_type IEEE488_SLOT;
-
-extern template class device_finder<ieee488_device, false>;
-extern template class device_finder<ieee488_device, true>;
+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 );
-
-#endif
+#endif // MAME_BUS_IEEE488_IEEE488_H
diff --git a/src/devices/bus/ieee488/shark.cpp b/src/devices/bus/ieee488/shark.cpp
index 10c911cca61..31d747446ab 100644
--- a/src/devices/bus/ieee488/shark.cpp
+++ b/src/devices/bus/ieee488/shark.cpp
@@ -27,7 +27,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SHARK = device_creator<mshark_device>;
+DEFINE_DEVICE_TYPE(MSHARK, mshark_device, "mshark", "Mator SHARK")
//-------------------------------------------------
@@ -129,9 +129,9 @@ ioport_constructor mshark_device::device_input_ports() const
//-------------------------------------------------
mshark_device::mshark_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SHARK, "Mator SHARK", tag, owner, clock, "mshark", __FILE__),
- device_ieee488_interface(mconfig, *this),
- m_maincpu(*this, I8085_TAG)
+ : device_t(mconfig, MSHARK, tag, owner, clock)
+ , device_ieee488_interface(mconfig, *this)
+ , m_maincpu(*this, I8085_TAG)
{
}
diff --git a/src/devices/bus/ieee488/shark.h b/src/devices/bus/ieee488/shark.h
index e7d92a5da4c..5b3893cd910 100644
--- a/src/devices/bus/ieee488/shark.h
+++ b/src/devices/bus/ieee488/shark.h
@@ -8,10 +8,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_SHARK_H
+#define MAME_BUS_IEEE488_SHARK_H
-#ifndef __SHARK__
-#define __SHARK__
+#pragma once
#include "ieee488.h"
@@ -45,8 +45,6 @@ private:
// device type definition
-extern const device_type SHARK;
-
-
+DECLARE_DEVICE_TYPE(MSHARK, mshark_device)
-#endif
+#endif // MAME_BUS_IEEE488_SHARK_H
diff --git a/src/devices/bus/ieee488/softbox.cpp b/src/devices/bus/ieee488/softbox.cpp
index b2086a995b9..3010e87cd21 100644
--- a/src/devices/bus/ieee488/softbox.cpp
+++ b/src/devices/bus/ieee488/softbox.cpp
@@ -36,7 +36,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SOFTBOX = device_creator<softbox_device>;
+DEFINE_DEVICE_TYPE(SOFTBOX, softbox_device, "pet_softbox", "SSE SoftBox")
//-------------------------------------------------
@@ -89,7 +89,7 @@ static ADDRESS_MAP_START( softbox_io, AS_IO, 8, softbox_device )
AM_RANGE(0x0c, 0x0c) AM_WRITE(dbrg_w)
AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(I8255_0_TAG, i8255_device, read, write)
AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(I8255_1_TAG, i8255_device, read, write)
- AM_RANGE(0x18, 0x18) AM_DEVREADWRITE(CORVUS_HDC_TAG, corvus_hdc_t, read, write)
+ AM_RANGE(0x18, 0x18) AM_DEVREADWRITE(CORVUS_HDC_TAG, corvus_hdc_device, read, write)
ADDRESS_MAP_END
@@ -190,8 +190,8 @@ READ8_MEMBER( softbox_device::ppi1_pc_r )
uint8_t status = m_hdc->status_r(space, 0);
uint8_t data = 0;
- data |= (status & CONTROLLER_BUSY) ? 0 : 0x10;
- data |= (status & CONTROLLER_DIRECTION) ? 0 : 0x20;
+ data |= (status & corvus_hdc_device::CONTROLLER_BUSY) ? 0 : 0x10;
+ data |= (status & corvus_hdc_device::CONTROLLER_DIRECTION) ? 0 : 0x20;
return data;
}
@@ -328,11 +328,12 @@ ioport_constructor softbox_device::device_input_ports() const
//-------------------------------------------------
softbox_device::softbox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SOFTBOX, "PET SoftBox", tag, owner, clock, "pet_softbox", __FILE__),
- device_ieee488_interface(mconfig, *this),
- m_maincpu(*this, Z80_TAG),
- m_dbrg(*this, COM8116_TAG),
- m_hdc(*this, CORVUS_HDC_TAG), m_ifc(0)
+ : device_t(mconfig, SOFTBOX, tag, owner, clock)
+ , device_ieee488_interface(mconfig, *this)
+ , m_maincpu(*this, Z80_TAG)
+ , m_dbrg(*this, COM8116_TAG)
+ , m_hdc(*this, CORVUS_HDC_TAG)
+ , m_ifc(0)
{
}
diff --git a/src/devices/bus/ieee488/softbox.h b/src/devices/bus/ieee488/softbox.h
index 9b0d5611c1a..07bb986ba91 100644
--- a/src/devices/bus/ieee488/softbox.h
+++ b/src/devices/bus/ieee488/softbox.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IEEE488_SOFTBOX_H
+#define MAME_BUS_IEEE488_SOFTBOX_H
-#ifndef __PET_SOFTBOX__
-#define __PET_SOFTBOX__
+#pragma once
#include "ieee488.h"
#include "bus/rs232/rs232.h"
@@ -68,15 +68,14 @@ private:
required_device<cpu_device> m_maincpu;
required_device<com8116_device> m_dbrg;
- required_device<corvus_hdc_t> m_hdc;
+ required_device<corvus_hdc_device> m_hdc;
int m_ifc; // Tracks previous state of IEEE-488 IFC line
};
// device type definition
-extern const device_type SOFTBOX;
-
+DECLARE_DEVICE_TYPE(SOFTBOX, softbox_device)
-#endif
+#endif // MAME_BUS_IEEE488_SOFTBOX_H
diff --git a/src/devices/bus/imi7000/imi5000h.cpp b/src/devices/bus/imi7000/imi5000h.cpp
index 5d72030ad44..751721d4db7 100644
--- a/src/devices/bus/imi7000/imi5000h.cpp
+++ b/src/devices/bus/imi7000/imi5000h.cpp
@@ -29,7 +29,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type IMI5000H = device_creator<imi5000h_device>;
+DEFINE_DEVICE_TYPE(IMI5000H, imi5000h_device, "imi5000h", "IMI 5000H")
//-------------------------------------------------
@@ -447,7 +447,7 @@ ioport_constructor imi5000h_device::device_input_ports() const
//-------------------------------------------------
imi5000h_device::imi5000h_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, IMI5000H, "IMI 5000H", tag, owner, clock, "imi5000h", __FILE__),
+ device_t(mconfig, IMI5000H, tag, owner, clock),
device_imi7000_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG),
m_ctc(*this, Z80CTC_TAG),
diff --git a/src/devices/bus/imi7000/imi5000h.h b/src/devices/bus/imi7000/imi5000h.h
index 153ad678d37..89165ef328e 100644
--- a/src/devices/bus/imi7000/imi5000h.h
+++ b/src/devices/bus/imi7000/imi5000h.h
@@ -8,10 +8,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IMI7000_IMI5000H_H
+#define MAME_BUS_IMI7000_IMI5000H_H
-#ifndef __IMI5000H__
-#define __IMI5000H__
+#pragma once
#include "imi7000.h"
#include "cpu/z80/z80.h"
@@ -82,7 +82,6 @@ private:
// device type definition
extern const device_type IMI5000H;
+DECLARE_DEVICE_TYPE(IMI5000H, imi5000h_device)
-
-
-#endif
+#endif // MAME_BUS_IMI7000_IMI5000H_H
diff --git a/src/devices/bus/imi7000/imi7000.cpp b/src/devices/bus/imi7000/imi7000.cpp
index c558770c4f6..95f693a571e 100644
--- a/src/devices/bus/imi7000/imi7000.cpp
+++ b/src/devices/bus/imi7000/imi7000.cpp
@@ -23,8 +23,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type IMI7000_BUS = device_creator<imi7000_bus_device>;
-const device_type IMI7000_SLOT = device_creator<imi7000_slot_device>;
+DEFINE_DEVICE_TYPE(IMI7000_BUS, imi7000_bus_device, "imi7000", "IMI7000 bus")
+DEFINE_DEVICE_TYPE(IMI7000_SLOT, imi7000_slot_device, "imi7000_slot", "IMI7000 slot")
@@ -51,9 +51,10 @@ device_imi7000_interface::device_imi7000_interface(const machine_config &mconfig
// imi7000_slot_device - constructor
//-------------------------------------------------
-imi7000_slot_device::imi7000_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, IMI7000_SLOT, "IMI 7000 slot", tag, owner, clock, "imi7000_slot", __FILE__),
- device_slot_interface(mconfig, *this), m_card(nullptr)
+imi7000_slot_device::imi7000_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, IMI7000_SLOT, tag, owner, clock)
+ , device_slot_interface(mconfig, *this)
+ , m_card(nullptr)
{
}
@@ -76,8 +77,8 @@ void imi7000_slot_device::device_start()
// imi7000_bus_device - constructor
//-------------------------------------------------
-imi7000_bus_device::imi7000_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, IMI7000_BUS, "IMI 7000 bus", tag, owner, clock, "imi7000", __FILE__)
+imi7000_bus_device::imi7000_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, IMI7000_BUS, tag, owner, clock)
{
}
diff --git a/src/devices/bus/imi7000/imi7000.h b/src/devices/bus/imi7000/imi7000.h
index 765f2ef5a3f..90b195a2667 100644
--- a/src/devices/bus/imi7000/imi7000.h
+++ b/src/devices/bus/imi7000/imi7000.h
@@ -26,10 +26,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_IMI7000_IMI7000_H
+#define MAME_BUS_IMI7000_IMI7000_H
-#ifndef __IMI7000_BUS__
-#define __IMI7000_BUS__
+#pragma once
@@ -106,24 +106,20 @@ class device_imi7000_interface : public device_slot_card_interface
{
friend class imi7000_slot_device;
-public:
+protected:
// construction/destruction
device_imi7000_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_imi7000_interface() { }
-protected:
imi7000_slot_device *m_slot;
};
// device type definition
-extern const device_type IMI7000_BUS;
-extern const device_type IMI7000_SLOT;
+DECLARE_DEVICE_TYPE(IMI7000_BUS, imi7000_bus_device)
+DECLARE_DEVICE_TYPE(IMI7000_SLOT, imi7000_slot_device)
// slot interface
SLOT_INTERFACE_EXTERN( imi7000_devices );
-
-
-#endif
+#endif // MAME_BUS_IMI7000_IMI7000_H
diff --git a/src/devices/bus/intv/ecs.cpp b/src/devices/bus/intv/ecs.cpp
index 006de780b73..d591a34f570 100644
--- a/src/devices/bus/intv/ecs.cpp
+++ b/src/devices/bus/intv/ecs.cpp
@@ -26,10 +26,10 @@
// intv_ecs_device - constructor
//-------------------------------------------------
-const device_type INTV_ROM_ECS = device_creator<intv_ecs_device>;
+DEFINE_DEVICE_TYPE(INTV_ROM_ECS, intv_ecs_device, "intv_ecs", "Intellivision ECS Expansion")
intv_ecs_device::intv_ecs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intv_rom_device(mconfig, INTV_ROM_ECS, "Intellivision ECS Expansion", tag, owner, clock, "intv_ecs", __FILE__),
+ : intv_rom_device(mconfig, INTV_ROM_ECS, tag, owner, clock),
m_snd(*this, "ay8914"),
m_subslot(*this, "subslot"),
m_voice_enabled(false),
@@ -186,3 +186,66 @@ WRITE16_MEMBER(intv_ecs_device::write_ay)
if (ACCESSING_BITS_0_7)
return m_snd->write(space, offset, data, mem_mask);
}
+
+
+READ16_MEMBER(intv_ecs_device::read_rom80)
+{
+ if (m_ram88_enabled && offset >= 0x800)
+ return m_subslot->read_ram(space, offset & 0x7ff, mem_mask);
+ else
+ return m_subslot->read_rom80(space, offset, mem_mask);
+}
+
+
+READ16_MEMBER(intv_ecs_device::read_romd0)
+{
+ if (m_ramd0_enabled && offset < 0x800)
+ return m_subslot->read_ram(space, offset, mem_mask);
+ else
+ return m_subslot->read_romd0(space, offset, mem_mask);
+}
+
+
+WRITE16_MEMBER(intv_ecs_device::write_rom20)
+{
+ if (offset == 0xfff)
+ {
+ if (data == 0x2a50)
+ m_bank_base[2] = 0;
+ else if (data == 0x2a51)
+ m_bank_base[2] = 1;
+ }
+}
+
+WRITE16_MEMBER(intv_ecs_device::write_rom70)
+{
+ if (offset == 0xfff)
+ {
+ if (data == 0x7a50)
+ m_bank_base[7] = 0;
+ else if (data == 0x7a51)
+ m_bank_base[7] = 1;
+ }
+}
+
+WRITE16_MEMBER(intv_ecs_device::write_rome0)
+{
+ if (offset == 0xfff)
+ {
+ if (data == 0xea50)
+ m_bank_base[14] = 0;
+ else if (data == 0xea51)
+ m_bank_base[14] = 1;
+ }
+}
+
+WRITE16_MEMBER(intv_ecs_device::write_romf0)
+{
+ if (offset == 0xfff)
+ {
+ if (data == 0xfa50)
+ m_bank_base[15] = 0;
+ else if (data == 0xfa51)
+ m_bank_base[15] = 1;
+ }
+}
diff --git a/src/devices/bus/intv/ecs.h b/src/devices/bus/intv/ecs.h
index e4d6867996e..d577ba66250 100644
--- a/src/devices/bus/intv/ecs.h
+++ b/src/devices/bus/intv/ecs.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __INTV_ECS_H
-#define __INTV_ECS_H
+#ifndef MAME_BUS_INTV_ECS_H
+#define MAME_BUS_INTV_ECS_H
+
+#pragma once
#include "slot.h"
#include "rom.h"
@@ -18,8 +20,6 @@ public:
intv_ecs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -44,66 +44,18 @@ public:
virtual DECLARE_READ16_MEMBER(read_rom48) override { return m_subslot->read_rom48(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_rom50) override { return m_subslot->read_rom50(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_rom60) override { return m_subslot->read_rom60(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom80) override
- {
- if (m_ram88_enabled && offset >= 0x800)
- return m_subslot->read_ram(space, offset & 0x7ff, mem_mask);
- else
- return m_subslot->read_rom80(space, offset, mem_mask);
- }
+ virtual DECLARE_READ16_MEMBER(read_rom80) override;
virtual DECLARE_READ16_MEMBER(read_rom90) override { return m_subslot->read_rom90(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_roma0) override { return m_subslot->read_roma0(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_romb0) override { return m_subslot->read_romb0(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_romc0) override { return m_subslot->read_romc0(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_romd0) override
- {
- if (m_ramd0_enabled && offset < 0x800)
- return m_subslot->read_ram(space, offset, mem_mask);
- else
- return m_subslot->read_romd0(space, offset, mem_mask);
- }
+ virtual DECLARE_READ16_MEMBER(read_romd0) override;
// paged ROM banking
- virtual DECLARE_WRITE16_MEMBER(write_rom20) override
- {
- if (offset == 0xfff)
- {
- if (data == 0x2a50)
- m_bank_base[2] = 0;
- else if (data == 0x2a51)
- m_bank_base[2] = 1;
- }
- }
- virtual DECLARE_WRITE16_MEMBER(write_rom70) override
- {
- if (offset == 0xfff)
- {
- if (data == 0x7a50)
- m_bank_base[7] = 0;
- else if (data == 0x7a51)
- m_bank_base[7] = 1;
- }
- }
- virtual DECLARE_WRITE16_MEMBER(write_rome0) override
- {
- if (offset == 0xfff)
- {
- if (data == 0xea50)
- m_bank_base[14] = 0;
- else if (data == 0xea51)
- m_bank_base[14] = 1;
- }
- }
- virtual DECLARE_WRITE16_MEMBER(write_romf0) override
- {
- if (offset == 0xfff)
- {
- if (data == 0xfa50)
- m_bank_base[15] = 0;
- else if (data == 0xfa51)
- m_bank_base[15] = 1;
- }
- }
+ virtual DECLARE_WRITE16_MEMBER(write_rom20) override;
+ virtual DECLARE_WRITE16_MEMBER(write_rom70) override;
+ virtual DECLARE_WRITE16_MEMBER(write_rome0) override;
+ virtual DECLARE_WRITE16_MEMBER(write_romf0) override;
// RAM passthru write
virtual DECLARE_WRITE16_MEMBER(write_88) override { if (m_ram88_enabled) m_subslot->write_ram(space, offset, data, mem_mask); }
virtual DECLARE_WRITE16_MEMBER(write_d0) override { if (m_ramd0_enabled) m_subslot->write_ram(space, offset, data, mem_mask); }
@@ -113,6 +65,10 @@ public:
virtual void late_subslot_setup() override;
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
required_device<ay8914_device> m_snd;
@@ -124,6 +80,6 @@ private:
// device type definition
-extern const device_type INTV_ROM_ECS;
+DECLARE_DEVICE_TYPE(INTV_ROM_ECS, intv_ecs_device)
-#endif
+#endif // MAME_BUS_INTV_ECS_H
diff --git a/src/devices/bus/intv/rom.cpp b/src/devices/bus/intv/rom.cpp
index 8fef5d47432..f320d1cae49 100644
--- a/src/devices/bus/intv/rom.cpp
+++ b/src/devices/bus/intv/rom.cpp
@@ -17,35 +17,34 @@
// intv_rom_device - constructor
//-------------------------------------------------
-const device_type INTV_ROM_STD = device_creator<intv_rom_device>;
-const device_type INTV_ROM_RAM = device_creator<intv_ram_device>;
-const device_type INTV_ROM_GFACT = device_creator<intv_gfact_device>;
-const device_type INTV_ROM_WSMLB = device_creator<intv_wsmlb_device>;
+DEFINE_DEVICE_TYPE(INTV_ROM_STD, intv_rom_device, "intv_rom", "Intellivision Standard Carts")
+DEFINE_DEVICE_TYPE(INTV_ROM_RAM, intv_ram_device, "intv_ram", "Intellivision Carts w/RAM")
+DEFINE_DEVICE_TYPE(INTV_ROM_GFACT, intv_gfact_device, "intv_gfact", "Intellivision Game Factory Cart")
+DEFINE_DEVICE_TYPE(INTV_ROM_WSMLB, intv_wsmlb_device, "intv_wsmlb", "Intellivision World Series Baseball Cart")
-intv_rom_device::intv_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_intv_cart_interface( mconfig, *this )
+intv_rom_device::intv_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_intv_cart_interface(mconfig, *this)
{
}
intv_rom_device::intv_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, INTV_ROM_STD, "Intellivision Standard Carts", tag, owner, clock, "intv_rom", __FILE__),
- device_intv_cart_interface( mconfig, *this )
+ : intv_rom_device(mconfig, INTV_ROM_STD, tag, owner, clock)
{
}
intv_ram_device::intv_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intv_rom_device(mconfig, INTV_ROM_RAM, "Intellivision Carts w/RAM", tag, owner, clock, "intv_ram", __FILE__)
+ : intv_rom_device(mconfig, INTV_ROM_RAM, tag, owner, clock)
{
}
intv_gfact_device::intv_gfact_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intv_rom_device(mconfig, INTV_ROM_GFACT, "Intellivision Game Factory Cart", tag, owner, clock, "intv_gfact", __FILE__)
+ : intv_rom_device(mconfig, INTV_ROM_GFACT, tag, owner, clock)
{
}
intv_wsmlb_device::intv_wsmlb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intv_rom_device(mconfig, INTV_ROM_WSMLB, "Intellivision World Series Baseball Cart", tag, owner, clock, "intv_wsmlb", __FILE__)
+ : intv_rom_device(mconfig, INTV_ROM_WSMLB, tag, owner, clock)
{
}
diff --git a/src/devices/bus/intv/rom.h b/src/devices/bus/intv/rom.h
index 1db545b2678..7b83b2709fe 100644
--- a/src/devices/bus/intv/rom.h
+++ b/src/devices/bus/intv/rom.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __INTV_ROM_H
-#define __INTV_ROM_H
+#ifndef MAME_BUS_INTV_ROM_H
+#define MAME_BUS_INTV_ROM_H
#include "slot.h"
@@ -13,7 +13,6 @@ class intv_rom_device : public device_t,
{
public:
// construction/destruction
- intv_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
intv_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
@@ -33,6 +32,9 @@ public:
virtual DECLARE_READ16_MEMBER(read_rome0) override { return INTV_ROM16_READ(offset + 0xe000); }
virtual DECLARE_READ16_MEMBER(read_romf0) override { return INTV_ROM16_READ(offset + 0xf000); }
+protected:
+ intv_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override {}
virtual void device_reset() override {}
@@ -76,9 +78,9 @@ public:
// device type definition
-extern const device_type INTV_ROM_STD;
-extern const device_type INTV_ROM_RAM;
-extern const device_type INTV_ROM_GFACT;
-extern const device_type INTV_ROM_WSMLB;
+DECLARE_DEVICE_TYPE(INTV_ROM_STD, intv_rom_device)
+DECLARE_DEVICE_TYPE(INTV_ROM_RAM, intv_ram_device)
+DECLARE_DEVICE_TYPE(INTV_ROM_GFACT, intv_gfact_device)
+DECLARE_DEVICE_TYPE(INTV_ROM_WSMLB, intv_wsmlb_device)
-#endif
+#endif // MAME_BUS_INTV_ROM_H
diff --git a/src/devices/bus/intv/slot.cpp b/src/devices/bus/intv/slot.cpp
index 99ae2618c7b..d86c8fe91c4 100644
--- a/src/devices/bus/intv/slot.cpp
+++ b/src/devices/bus/intv/slot.cpp
@@ -86,7 +86,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type INTV_CART_SLOT = device_creator<intv_cart_slot_device>;
+DEFINE_DEVICE_TYPE(INTV_CART_SLOT, intv_cart_slot_device, "intv_cart_slot", "Intellivision Cartridge Slot")
//**************************************************************************
// Intellivision Cartridges Interface
@@ -145,10 +145,11 @@ void device_intv_cart_interface::ram_alloc(uint32_t size)
// intv_cart_slot_device - constructor
//-------------------------------------------------
intv_cart_slot_device::intv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, INTV_CART_SLOT, "Intellivision Cartridge Slot", tag, owner, clock, "intv_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(INTV_STD), m_cart(nullptr)
+ device_t(mconfig, INTV_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(INTV_STD),
+ m_cart(nullptr)
{
}
diff --git a/src/devices/bus/intv/slot.h b/src/devices/bus/intv/slot.h
index 5036c25ecb5..9442160625a 100644
--- a/src/devices/bus/intv/slot.h
+++ b/src/devices/bus/intv/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __INTV_SLOT_H
-#define __INTV_SLOT_H
+#ifndef MAME_BUS_INTV_SLOT_H
+#define MAME_BUS_INTV_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -34,7 +36,6 @@ class device_intv_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_intv_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_intv_cart_interface();
// reading and writing
@@ -80,6 +81,8 @@ public:
virtual void late_subslot_setup() {}
protected:
+ device_intv_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -98,9 +101,6 @@ public:
intv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~intv_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override {}
@@ -159,7 +159,9 @@ public:
virtual DECLARE_WRITE16_MEMBER(write_rome0) { if (m_cart) m_cart->write_rome0(space, offset, data, mem_mask); }
virtual DECLARE_WRITE16_MEMBER(write_romf0) { if (m_cart) m_cart->write_romf0(space, offset, data, mem_mask); }
-//protected:
+protected:
+ // device-level overrides
+ virtual void device_start() override;
int m_type;
device_intv_cart_interface* m_cart;
@@ -168,7 +170,7 @@ public:
// device type definition
-extern const device_type INTV_CART_SLOT;
+DECLARE_DEVICE_TYPE(INTV_CART_SLOT, intv_cart_slot_device)
/***************************************************************************
@@ -183,4 +185,4 @@ extern const device_type INTV_CART_SLOT;
SLOT_INTERFACE_EXTERN(intv_cart);
-#endif
+#endif // MAME_BUS_INTV_SLOT_H
diff --git a/src/devices/bus/intv/voice.cpp b/src/devices/bus/intv/voice.cpp
index b144b0008c4..04fd90f4277 100644
--- a/src/devices/bus/intv/voice.cpp
+++ b/src/devices/bus/intv/voice.cpp
@@ -20,10 +20,10 @@
// intv_voice_device - constructor
//-------------------------------------------------
-const device_type INTV_ROM_VOICE = device_creator<intv_voice_device>;
+DEFINE_DEVICE_TYPE(INTV_ROM_VOICE, intv_voice_device, "intv_voice", "Intellivision Intellivoice Expansion")
intv_voice_device::intv_voice_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intv_rom_device(mconfig, INTV_ROM_VOICE, "Intellivision Intellivoice Expansion", tag, owner, clock, "intv_voice", __FILE__),
+ : intv_rom_device(mconfig, INTV_ROM_VOICE, tag, owner, clock),
m_speech(*this, "sp0256_speech"),
m_subslot(*this, "subslot"),
m_ramd0_enabled(false),
@@ -123,3 +123,20 @@ WRITE16_MEMBER(intv_voice_device::write_speech)
if (ACCESSING_BITS_0_7)
return m_speech->spb640_w(space, offset, data, mem_mask);
}
+
+
+READ16_MEMBER(intv_voice_device::read_rom80)
+{
+ if (m_ram88_enabled && offset >= 0x800)
+ return m_subslot->read_ram(space, offset & 0x7ff, mem_mask);
+ else
+ return m_subslot->read_rom80(space, offset, mem_mask);
+}
+
+READ16_MEMBER(intv_voice_device::read_romd0)
+{
+ if (m_ramd0_enabled && offset < 0x800)
+ return m_subslot->read_ram(space, offset, mem_mask);
+ else
+ return m_subslot->read_romd0(space, offset, mem_mask);
+}
diff --git a/src/devices/bus/intv/voice.h b/src/devices/bus/intv/voice.h
index 133f16c62a6..0cf6a2d433b 100644
--- a/src/devices/bus/intv/voice.h
+++ b/src/devices/bus/intv/voice.h
@@ -17,7 +17,6 @@ public:
intv_voice_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -34,24 +33,12 @@ public:
virtual DECLARE_READ16_MEMBER(read_rom50) override { return m_subslot->read_rom50(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_rom60) override { return m_subslot->read_rom60(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_rom70) override { return m_subslot->read_rom70(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom80) override
- {
- if (m_ram88_enabled && offset >= 0x800)
- return m_subslot->read_ram(space, offset & 0x7ff, mem_mask);
- else
- return m_subslot->read_rom80(space, offset, mem_mask);
- }
+ virtual DECLARE_READ16_MEMBER(read_rom80) override;
virtual DECLARE_READ16_MEMBER(read_rom90) override { return m_subslot->read_rom90(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_roma0) override { return m_subslot->read_roma0(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_romb0) override { return m_subslot->read_romb0(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_romc0) override { return m_subslot->read_romc0(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_romd0) override
- {
- if (m_ramd0_enabled && offset < 0x800)
- return m_subslot->read_ram(space, offset, mem_mask);
- else
- return m_subslot->read_romd0(space, offset, mem_mask);
- }
+ virtual DECLARE_READ16_MEMBER(read_romd0) override;
virtual DECLARE_READ16_MEMBER(read_rome0) override { return m_subslot->read_rome0(space, offset, mem_mask); }
virtual DECLARE_READ16_MEMBER(read_romf0) override { return m_subslot->read_romf0(space, offset, mem_mask); }
@@ -63,6 +50,9 @@ public:
virtual void late_subslot_setup() override;
+protected:
+ virtual void device_start() override;
+
private:
required_device<sp0256_device> m_speech;
required_device<intv_cart_slot_device> m_subslot;
@@ -70,9 +60,7 @@ private:
};
-
-
// device type definition
-extern const device_type INTV_ROM_VOICE;
+DECLARE_DEVICE_TYPE(INTV_ROM_VOICE, intv_voice_device)
-#endif
+#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 510ac13cba8..01b64ba6aef 100644
--- a/src/devices/bus/intv_ctrl/ctrl.cpp
+++ b/src/devices/bus/intv_ctrl/ctrl.cpp
@@ -16,7 +16,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type INTV_CONTROL_PORT = device_creator<intv_control_port_device>;
+DEFINE_DEVICE_TYPE(INTV_CONTROL_PORT, intv_control_port_device, "intv_control_port", "Mattel Intellivision control port")
//**************************************************************************
@@ -52,8 +52,9 @@ device_intv_control_port_interface::~device_intv_control_port_interface()
//-------------------------------------------------
intv_control_port_device::intv_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, INTV_CONTROL_PORT, "Mattel Intellivision control port", tag, owner, clock, "intv_control_port", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr)
+ device_t(mconfig, INTV_CONTROL_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_device(nullptr)
{
}
diff --git a/src/devices/bus/intv_ctrl/ctrl.h b/src/devices/bus/intv_ctrl/ctrl.h
index 0507dbf062d..a46011845f2 100644
--- a/src/devices/bus/intv_ctrl/ctrl.h
+++ b/src/devices/bus/intv_ctrl/ctrl.h
@@ -6,12 +6,11 @@
**********************************************************************/
+#ifndef MAME_BUS_INTV_CTRL_CTRL_H
+#define MAME_BUS_INTV_CTRL_CTRL_H
#pragma once
-#ifndef __INTV_CONTROL_PORT__
-#define __INTV_CONTROL_PORT__
-
//**************************************************************************
// TYPE DEFINITIONS
@@ -25,12 +24,13 @@ class device_intv_control_port_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_intv_control_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_intv_control_port_interface();
virtual uint8_t read_ctrl() { return 0; };
protected:
+ device_intv_control_port_interface(const machine_config &mconfig, device_t &device);
+
intv_control_port_device *m_port;
};
@@ -56,7 +56,7 @@ protected:
// device type definition
-extern const device_type INTV_CONTROL_PORT;
+DECLARE_DEVICE_TYPE(INTV_CONTROL_PORT, intv_control_port_device)
//**************************************************************************
@@ -72,4 +72,4 @@ extern const device_type INTV_CONTROL_PORT;
SLOT_INTERFACE_EXTERN( intv_control_port_devices );
-#endif
+#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 4b187442585..077c9685c7b 100644
--- a/src/devices/bus/intv_ctrl/ecs_ctrl.cpp
+++ b/src/devices/bus/intv_ctrl/ecs_ctrl.cpp
@@ -30,7 +30,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type INTVECS_CONTROL_PORT = device_creator<intvecs_control_port_device>;
+DEFINE_DEVICE_TYPE(INTVECS_CONTROL_PORT, intvecs_control_port_device, "intvecs_control_port", "Mattel Intellivision ECS control port (HACK)")
//**************************************************************************
@@ -66,8 +66,8 @@ device_intvecs_control_port_interface::~device_intvecs_control_port_interface()
//-------------------------------------------------
intvecs_control_port_device::intvecs_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, INTVECS_CONTROL_PORT, "Mattel Intellivision ECS control port (HACK)", tag, owner, clock, "intvecs_control_port", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr)
+ device_t(mconfig, INTVECS_CONTROL_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this), m_device(nullptr)
{
}
@@ -137,7 +137,7 @@ SLOT_INTERFACE_END
// ECS_CTRLS - A pair of hand controllers
//-------------------------------------------------
-const device_type ECS_CTRLS = device_creator<intvecs_ctrls_device>;
+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)
@@ -155,7 +155,7 @@ machine_config_constructor intvecs_ctrls_device::device_mconfig_additions() cons
}
intvecs_ctrls_device::intvecs_ctrls_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ECS_CTRLS, "Mattel Intellivision ECS Hand Controller x2 (HACK)", tag, owner, clock, "intvecs_ctrls", __FILE__),
+ device_t(mconfig, ECS_CTRLS, tag, owner, clock),
device_intvecs_control_port_interface(mconfig, *this),
m_hand1(*this, "port1"),
m_hand2(*this, "port2")
@@ -184,7 +184,7 @@ uint8_t intvecs_ctrls_device::read_portB()
// ECS_KEYBD - Keyboard
//-------------------------------------------------
-const device_type ECS_KEYBD = device_creator<intvecs_keybd_device>;
+DEFINE_DEVICE_TYPE(ECS_KEYBD, intvecs_keybd_device, "intvecs_keybd", "Mattel Intellivision ECS Keyboard")
static INPUT_PORTS_START( intvecs_keybd )
/*
@@ -281,7 +281,7 @@ ioport_constructor intvecs_keybd_device::device_input_ports() const
}
intvecs_keybd_device::intvecs_keybd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ECS_KEYBD, "Mattel Intellivision ECS Keyboard", tag, owner, clock, "intvecs_keybd", __FILE__)
+ : device_t(mconfig, ECS_KEYBD, tag, owner, clock)
, device_intvecs_control_port_interface(mconfig, *this)
, m_keybd(*this, "ROW.%u", 0)
{
@@ -320,7 +320,7 @@ void intvecs_keybd_device::write_portA(uint8_t data)
// ECS_SYNTH - Synth
//-------------------------------------------------
-const device_type ECS_SYNTH = device_creator<intvecs_synth_device>;
+DEFINE_DEVICE_TYPE(ECS_SYNTH, intvecs_synth_device, "intvecs_synth", "Mattel Intellivision ECS Synthesizer")
static INPUT_PORTS_START( intvecs_synth )
@@ -414,7 +414,7 @@ ioport_constructor intvecs_synth_device::device_input_ports() const
intvecs_synth_device::intvecs_synth_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ECS_SYNTH, "Mattel Intellivision ECS Synthetizer", tag, owner, clock, "intvecs_synth", __FILE__),
+ device_t(mconfig, ECS_SYNTH, tag, owner, clock),
device_intvecs_control_port_interface(mconfig, *this),
m_synth(*this, "SYNTH.%u", 0)
{
diff --git a/src/devices/bus/intv_ctrl/ecs_ctrl.h b/src/devices/bus/intv_ctrl/ecs_ctrl.h
index 02dd10f8e02..5bf1ef69c1f 100644
--- a/src/devices/bus/intv_ctrl/ecs_ctrl.h
+++ b/src/devices/bus/intv_ctrl/ecs_ctrl.h
@@ -6,11 +6,11 @@
**********************************************************************/
+#ifndef MAME_BUS_INTV_CTRL_ECS_CTRL_H
+#define MAME_BUS_INTV_CTRL_ECS_CTRL_H
#pragma once
-#ifndef __INTVECS_CONTROL_PORT__
-#define __INTVECS_CONTROL_PORT__
#include "bus/intv_ctrl/ctrl.h"
#include "bus/intv_ctrl/handctrl.h"
@@ -27,14 +27,15 @@ class device_intvecs_control_port_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_intvecs_control_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_intvecs_control_port_interface();
- virtual uint8_t read_portA() { return 0xff; };
- virtual uint8_t read_portB() { return 0xff; };
- virtual void write_portA(uint8_t data) { };
+ virtual uint8_t read_portA() { return 0xff; }
+ virtual uint8_t read_portB() { return 0xff; }
+ virtual void write_portA(uint8_t data) { }
protected:
+ device_intvecs_control_port_interface(const machine_config &mconfig, device_t &device);
+
intvecs_control_port_device *m_port;
};
@@ -64,7 +65,7 @@ protected:
// device type definition
-extern const device_type INTVECS_CONTROL_PORT;
+DECLARE_DEVICE_TYPE(INTVECS_CONTROL_PORT, intvecs_control_port_device)
//**************************************************************************
@@ -161,10 +162,9 @@ private:
// device type definition
-extern const device_type ECS_CTRLS;
-extern const device_type ECS_KEYBD;
-extern const device_type ECS_SYNTH;
-
+DECLARE_DEVICE_TYPE(ECS_CTRLS, intvecs_ctrls_device)
+DECLARE_DEVICE_TYPE(ECS_KEYBD, intvecs_keybd_device)
+DECLARE_DEVICE_TYPE(ECS_SYNTH, intvecs_synth_device)
-#endif
+#endif // MAME_BUS_INTV_CTRL_ECS_CTRL_H
diff --git a/src/devices/bus/intv_ctrl/handctrl.cpp b/src/devices/bus/intv_ctrl/handctrl.cpp
index 6208c270ab6..43cdfad91b1 100644
--- a/src/devices/bus/intv_ctrl/handctrl.cpp
+++ b/src/devices/bus/intv_ctrl/handctrl.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type INTV_HANDCTRL = device_creator<intv_handctrl_device>;
+DEFINE_DEVICE_TYPE(INTV_HANDCTRL, intv_handctrl_device, "intv_handctrl", "Mattel Intellivision Hand Controller")
static INPUT_PORTS_START( intv_handctrl )
@@ -87,13 +87,13 @@ ioport_constructor intv_handctrl_device::device_input_ports() const
//-------------------------------------------------
intv_handctrl_device::intv_handctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, INTV_HANDCTRL, "Mattel Intellivision Hand Controller", tag, owner, clock, "intv_hand", __FILE__),
- device_intv_control_port_interface(mconfig, *this),
- m_cfg(*this, "OPTIONS"),
- m_keypad(*this, "KEYPAD"),
- m_disc_dig(*this, "DISC_DG"),
- m_disc_anx(*this, "DISC_AN_X"),
- m_disc_any(*this, "DISC_AN_Y")
+ device_t(mconfig, INTV_HANDCTRL, tag, owner, clock),
+ device_intv_control_port_interface(mconfig, *this),
+ m_cfg(*this, "OPTIONS"),
+ m_keypad(*this, "KEYPAD"),
+ m_disc_dig(*this, "DISC_DG"),
+ m_disc_anx(*this, "DISC_AN_X"),
+ m_disc_any(*this, "DISC_AN_Y")
{
}
diff --git a/src/devices/bus/intv_ctrl/handctrl.h b/src/devices/bus/intv_ctrl/handctrl.h
index bc15a8c28d3..4aa021c1ff8 100644
--- a/src/devices/bus/intv_ctrl/handctrl.h
+++ b/src/devices/bus/intv_ctrl/handctrl.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_INTV_CTRL_HANDCTRL_H
+#define MAME_BUS_INTV_CTRL_HANDCTRL_H
-#ifndef __INTV_HANDCTRL__
-#define __INTV_HANDCTRL__
+#pragma once
#include "ctrl.h"
@@ -48,7 +48,7 @@ private:
// device type definition
-extern const device_type INTV_HANDCTRL;
+DECLARE_DEVICE_TYPE(INTV_HANDCTRL, intv_handctrl_device)
-#endif
+#endif // MAME_BUS_INTV_CTRL_HANDCTRL_H
diff --git a/src/devices/bus/iq151/disc2.cpp b/src/devices/bus/iq151/disc2.cpp
index 3ce901c61fb..8883a2a8ef5 100644
--- a/src/devices/bus/iq151/disc2.cpp
+++ b/src/devices/bus/iq151/disc2.cpp
@@ -38,7 +38,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IQ151_DISC2 = device_creator<iq151_disc2_device>;
+DEFINE_DEVICE_TYPE(IQ151_DISC2, iq151_disc2_device, "iq151_disc2", "IQ151 Disc2")
//**************************************************************************
// LIVE DEVICE
@@ -49,10 +49,10 @@ const device_type IQ151_DISC2 = device_creator<iq151_disc2_device>;
//-------------------------------------------------
iq151_disc2_device::iq151_disc2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IQ151_DISC2, "IQ151 Disc2", tag, owner, clock, "iq151_disc2", __FILE__),
- device_iq151cart_interface( mconfig, *this ),
- m_fdc(*this, "fdc"), m_rom(nullptr), m_rom_enabled(false)
- {
+ : device_t(mconfig, IQ151_DISC2, tag, owner, clock)
+ , device_iq151cart_interface(mconfig, *this)
+ , m_fdc(*this, "fdc"), m_rom(nullptr), m_rom_enabled(false)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/iq151/disc2.h b/src/devices/bus/iq151/disc2.h
index fd2eabc4aa7..c7452ef1415 100644
--- a/src/devices/bus/iq151/disc2.h
+++ b/src/devices/bus/iq151/disc2.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_IQ151_DISC2_H
+#define MAME_BUS_IQ151_DISC2_H
-#ifndef __IQ151_DISC2_H__
-#define __IQ151_DISC2_H__
+#pragma once
#include "iq151.h"
#include "machine/upd765.h"
@@ -39,7 +39,6 @@ protected:
virtual void io_write(offs_t offset, uint8_t data) override;
private:
-
required_device<upd765a_device> m_fdc;
uint8_t * m_rom;
bool m_rom_enabled;
@@ -47,6 +46,6 @@ private:
// device type definition
-extern const device_type IQ151_DISC2;
+DECLARE_DEVICE_TYPE(IQ151_DISC2, iq151_disc2_device)
-#endif /* __IQ151_DISC2_H__ */
+#endif // MAME_BUS_IQ151_DISC2_H
diff --git a/src/devices/bus/iq151/grafik.cpp b/src/devices/bus/iq151/grafik.cpp
index 4eda406479f..84c7ea4ee08 100644
--- a/src/devices/bus/iq151/grafik.cpp
+++ b/src/devices/bus/iq151/grafik.cpp
@@ -28,7 +28,7 @@ MACHINE_CONFIG_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IQ151_GRAFIK = device_creator<iq151_grafik_device>;
+DEFINE_DEVICE_TYPE(IQ151_GRAFIK, iq151_grafik_device, "iq151_grafik", "IQ151 grafik")
//**************************************************************************
// LIVE DEVICE
@@ -39,10 +39,10 @@ const device_type IQ151_GRAFIK = device_creator<iq151_grafik_device>;
//-------------------------------------------------
iq151_grafik_device::iq151_grafik_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IQ151_GRAFIK, "IQ151 grafik", tag, owner, clock, "iq151_grafik", __FILE__),
- device_iq151cart_interface( mconfig, *this ),
- m_ppi8255(*this, "ppi8255"), m_posx(0), m_posy(0), m_all(0), m_pen(0), m_fast(0), m_ev(0), m_ex(0), m_sel(0)
- {
+ : device_t(mconfig, IQ151_GRAFIK, tag, owner, clock)
+ , device_iq151cart_interface(mconfig, *this)
+ , m_ppi8255(*this, "ppi8255"), m_posx(0), m_posy(0), m_all(0), m_pen(0), m_fast(0), m_ev(0), m_ex(0), m_sel(0)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/iq151/grafik.h b/src/devices/bus/iq151/grafik.h
index 87e2e6d6d17..afdb233b4f6 100644
--- a/src/devices/bus/iq151/grafik.h
+++ b/src/devices/bus/iq151/grafik.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_IQ151_GRAFIK_H
+#define MAME_BUS_IQ151_GRAFIK_H
-#ifndef __IQ151_GRAFIK_H__
-#define __IQ151_GRAFIK_H__
+#pragma once
#include "iq151.h"
#include "machine/i8255.h"
@@ -58,5 +58,6 @@ private:
// device type definition
extern const device_type IQ151_GRAFIK;
+DECLARE_DEVICE_TYPE(IQ151_GRAFIK, iq151_grafik_device)
-#endif /* __IQ151_GRAFIK_H__ */
+#endif // MAME_BUS_IQ151_GRAFIK_H
diff --git a/src/devices/bus/iq151/iq151.cpp b/src/devices/bus/iq151/iq151.cpp
index 2b72156dbe9..125ba03a909 100644
--- a/src/devices/bus/iq151/iq151.cpp
+++ b/src/devices/bus/iq151/iq151.cpp
@@ -20,7 +20,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IQ151CART_SLOT = device_creator<iq151cart_slot_device>;
+DEFINE_DEVICE_TYPE(IQ151CART_SLOT, iq151cart_slot_device, "iq151cart_slot", "IQ151 cartridge slot")
//**************************************************************************
// IQ151 cartridge interface
@@ -53,15 +53,16 @@ device_iq151cart_interface::~device_iq151cart_interface()
// iq151cart_slot_device - constructor
//-------------------------------------------------
iq151cart_slot_device::iq151cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, IQ151CART_SLOT, "IQ151 cartridge slot", tag, owner, clock, "iq151cart_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- device_image_interface(mconfig, *this),
- m_out_irq0_cb(*this),
- m_out_irq1_cb(*this),
- m_out_irq2_cb(*this),
- m_out_irq3_cb(*this),
- m_out_irq4_cb(*this),
- m_out_drq_cb(*this), m_cart(nullptr)
+ device_t(mconfig, IQ151CART_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ device_image_interface(mconfig, *this),
+ m_out_irq0_cb(*this),
+ m_out_irq1_cb(*this),
+ m_out_irq2_cb(*this),
+ m_out_irq3_cb(*this),
+ m_out_irq4_cb(*this),
+ m_out_drq_cb(*this),
+ m_cart(nullptr)
{
}
diff --git a/src/devices/bus/iq151/iq151.h b/src/devices/bus/iq151/iq151.h
index 22288e2ccb5..649f397d2b9 100644
--- a/src/devices/bus/iq151/iq151.h
+++ b/src/devices/bus/iq151/iq151.h
@@ -42,8 +42,10 @@
*********************************************************************/
-#ifndef __IQ151CART_H__
-#define __IQ151CART_H__
+#ifndef MAME_BUS_IQ151_IQ151_H
+#define MAME_BUS_IQ151_IQ151_H
+
+#pragma once
#include "softlist_dev.h"
@@ -57,7 +59,6 @@ class device_iq151cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_iq151cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_iq151cart_interface();
// reading and writing
@@ -69,6 +70,9 @@ public:
// video update
virtual void video_update(bitmap_ind16 &bitmap, const rectangle &cliprect) { }
+
+protected:
+ device_iq151cart_interface(const machine_config &mconfig, device_t &device);
};
// ======================> iq151cart_slot_device
@@ -82,12 +86,12 @@ public:
iq151cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~iq151cart_slot_device();
- template<class _Object> static devcb_base &set_out_irq0_callback(device_t &device, _Object object) { return downcast<iq151cart_slot_device &>(device).m_out_irq0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq1_callback(device_t &device, _Object object) { return downcast<iq151cart_slot_device &>(device).m_out_irq1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq2_callback(device_t &device, _Object object) { return downcast<iq151cart_slot_device &>(device).m_out_irq2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq3_callback(device_t &device, _Object object) { return downcast<iq151cart_slot_device &>(device).m_out_irq3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq4_callback(device_t &device, _Object object) { return downcast<iq151cart_slot_device &>(device).m_out_irq4_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_drq_callback(device_t &device, _Object object) { return downcast<iq151cart_slot_device &>(device).m_out_drq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq0_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq1_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq3_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_drq_callback(device_t &device, Object &&cb) { return downcast<iq151cart_slot_device &>(device).m_out_drq_cb.set_callback(std::forward<Object>(cb)); }
// device-level overrides
virtual void device_start() override;
@@ -127,7 +131,7 @@ public:
// device type definition
-extern const device_type IQ151CART_SLOT;
+DECLARE_DEVICE_TYPE(IQ151CART_SLOT, iq151cart_slot_device)
/***************************************************************************
@@ -152,4 +156,4 @@ extern const device_type IQ151CART_SLOT;
#define MCFG_IQ151CART_SLOT_OUT_DRQ_CB(_devcb) \
devcb = &iq151cart_slot_device::set_out_drq_callback(*device, DEVCB_##_devcb);
-#endif /* __IQ151CART_H__ */
+#endif // MAME_BUS_IQ151_IQ151_H
diff --git a/src/devices/bus/iq151/minigraf.cpp b/src/devices/bus/iq151/minigraf.cpp
index 10572aa553c..d5bf2da1f8b 100644
--- a/src/devices/bus/iq151/minigraf.cpp
+++ b/src/devices/bus/iq151/minigraf.cpp
@@ -37,7 +37,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IQ151_MINIGRAF = device_creator<iq151_minigraf_device>;
+DEFINE_DEVICE_TYPE(IQ151_MINIGRAF, iq151_minigraf_device, "iq151_minigraf", "IQ151 Minigraf")
//**************************************************************************
// LIVE DEVICE
@@ -48,9 +48,10 @@ const device_type IQ151_MINIGRAF = device_creator<iq151_minigraf_device>;
//-------------------------------------------------
iq151_minigraf_device::iq151_minigraf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IQ151_MINIGRAF, "IQ151 Minigraf", tag, owner, clock, "iq151_minigraf", __FILE__),
- device_iq151cart_interface( mconfig, *this ), m_rom(nullptr), m_posx(0), m_posy(0), m_pen(0), m_control(0), m_paper(nullptr)
- {
+ : device_t(mconfig, IQ151_MINIGRAF, tag, owner, clock)
+ , device_iq151cart_interface(mconfig, *this)
+ , m_rom(nullptr), m_posx(0), m_posy(0), m_pen(0), m_control(0), m_paper(nullptr)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/iq151/minigraf.h b/src/devices/bus/iq151/minigraf.h
index 78ba888f4f6..16113288094 100644
--- a/src/devices/bus/iq151/minigraf.h
+++ b/src/devices/bus/iq151/minigraf.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_IQ151_MINIGRAF_H
+#define MAME_BUS_IQ151_MINIGRAF_H
-#ifndef __IQ151_MINIGRAF_H__
-#define __IQ151_MINIGRAF_H__
+#pragma once
#include "iq151.h"
@@ -50,6 +50,6 @@ private:
// device type definition
-extern const device_type IQ151_MINIGRAF;
+DECLARE_DEVICE_TYPE(IQ151_MINIGRAF, iq151_minigraf_device)
-#endif /* __IQ151_MINIGRAF_H__ */
+#endif // MAME_BUS_IQ151_MINIGRAF_H
diff --git a/src/devices/bus/iq151/ms151a.cpp b/src/devices/bus/iq151/ms151a.cpp
index 12e514b15ac..447c9f0d43a 100644
--- a/src/devices/bus/iq151/ms151a.cpp
+++ b/src/devices/bus/iq151/ms151a.cpp
@@ -36,7 +36,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IQ151_MS151A = device_creator<iq151_ms151a_device>;
+DEFINE_DEVICE_TYPE(IQ151_MS151A, iq151_ms151a_device, "iq151_ms15a", "IQ151 MS151A XY plotter")
//**************************************************************************
// LIVE DEVICE
@@ -47,9 +47,10 @@ const device_type IQ151_MS151A = device_creator<iq151_ms151a_device>;
//-------------------------------------------------
iq151_ms151a_device::iq151_ms151a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IQ151_MS151A, "IQ151 MS151A", tag, owner, clock, "iq151_ms151a", __FILE__),
- device_iq151cart_interface( mconfig, *this ), m_rom(nullptr), m_posx(0), m_posy(0), m_pen(0), m_paper(nullptr)
- {
+ : device_t(mconfig, IQ151_MS151A, tag, owner, clock)
+ , device_iq151cart_interface(mconfig, *this)
+ , m_rom(nullptr), m_posx(0), m_posy(0), m_pen(0), m_paper(nullptr)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/iq151/ms151a.h b/src/devices/bus/iq151/ms151a.h
index a00d541cee8..735729b15f1 100644
--- a/src/devices/bus/iq151/ms151a.h
+++ b/src/devices/bus/iq151/ms151a.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_IQ151_MS151A_H
+#define MAME_BUS_IQ151_MS151A_H
-#ifndef __IQ151_MS151A_H__
-#define __IQ151_MS151A_H__
+#pragma once
#include "iq151.h"
@@ -50,6 +50,6 @@ private:
// device type definition
-extern const device_type IQ151_MS151A;
+DECLARE_DEVICE_TYPE(IQ151_MS151A, iq151_ms151a_device)
-#endif /* __IQ151_MS151A_H__ */
+#endif // MAME_BUS_IQ151_MS151A_H
diff --git a/src/devices/bus/iq151/rom.cpp b/src/devices/bus/iq151/rom.cpp
index 076efa1f5a2..94658c100db 100644
--- a/src/devices/bus/iq151/rom.cpp
+++ b/src/devices/bus/iq151/rom.cpp
@@ -27,11 +27,11 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IQ151_BASIC6 = device_creator<iq151_basic6_device>;
-const device_type IQ151_BASICG = device_creator<iq151_basicg_device>;
-const device_type IQ151_AMOS1 = device_creator<iq151_amos1_device>;
-const device_type IQ151_AMOS2 = device_creator<iq151_amos2_device>;
-const device_type IQ151_AMOS3 = device_creator<iq151_amos3_device>;
+DEFINE_DEVICE_TYPE(IQ151_BASIC6, iq151_basic6_device, "iq151_basic6", "IQ151 BASIC6")
+DEFINE_DEVICE_TYPE(IQ151_BASICG, iq151_basicg_device, "iq151_basicg", "IQ151 BASICG")
+DEFINE_DEVICE_TYPE(IQ151_AMOS1, iq151_amos1_device, "iq151_amos1", "IQ151 AMOS cart 1")
+DEFINE_DEVICE_TYPE(IQ151_AMOS2, iq151_amos2_device, "iq151_amos2", "IQ151 AMOS cart 2")
+DEFINE_DEVICE_TYPE(IQ151_AMOS3, iq151_amos3_device, "iq151_amos3", "IQ151 AMOS cart 3")
//**************************************************************************
// LIVE DEVICE
@@ -41,9 +41,10 @@ const device_type IQ151_AMOS3 = device_creator<iq151_amos3_device>;
// iq151_rom_device - constructor
//-------------------------------------------------
-iq151_rom_device::iq151_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_iq151cart_interface(mconfig, *this), m_rom(nullptr)
+iq151_rom_device::iq151_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_iq151cart_interface(mconfig, *this),
+ m_rom(*this, "rom")
{
}
@@ -53,7 +54,6 @@ iq151_rom_device::iq151_rom_device(const machine_config &mconfig, device_type ty
void iq151_rom_device::device_start()
{
- m_rom = (uint8_t*)memregion("rom")->base();
}
//-------------------------------------------------
@@ -84,7 +84,7 @@ uint8_t* iq151_rom_device::get_cart_base()
//-------------------------------------------------
iq151_basic6_device::iq151_basic6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : iq151_rom_device(mconfig, IQ151_BASIC6, "IQ151 BASIC6", tag, owner, clock, "iq151_basic6", __FILE__)
+ : iq151_rom_device(mconfig, IQ151_BASIC6, tag, owner, clock)
{
}
@@ -109,7 +109,7 @@ void iq151_basic6_device::read(offs_t offset, uint8_t &data)
//-------------------------------------------------
iq151_basicg_device::iq151_basicg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : iq151_rom_device(mconfig, IQ151_BASICG, "IQ151 BASICG", tag, owner, clock, "iq151_basicg", __FILE__)
+ : iq151_rom_device(mconfig, IQ151_BASICG, tag, owner, clock)
{
}
@@ -135,8 +135,8 @@ void iq151_basicg_device::read(offs_t offset, uint8_t &data)
//-------------------------------------------------
iq151_amos1_device::iq151_amos1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : iq151_rom_device(mconfig, IQ151_AMOS1, "IQ151 AMOS cart 1", tag, owner, clock, "iq151_amos1", __FILE__),
- m_active(true)
+ : iq151_rom_device(mconfig, IQ151_AMOS1, tag, owner, clock)
+ , m_active(true)
{
}
@@ -169,8 +169,8 @@ void iq151_amos1_device::io_write(offs_t offset, uint8_t data)
//-------------------------------------------------
iq151_amos2_device::iq151_amos2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : iq151_rom_device(mconfig, IQ151_AMOS2, "IQ151 AMOS cart 2", tag, owner, clock, "iq151_amos2", __FILE__),
- m_active(false)
+ : iq151_rom_device(mconfig, IQ151_AMOS2, tag, owner, clock)
+ , m_active(false)
{
}
@@ -203,8 +203,8 @@ void iq151_amos2_device::io_write(offs_t offset, uint8_t data)
//-------------------------------------------------
iq151_amos3_device::iq151_amos3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : iq151_rom_device(mconfig, IQ151_AMOS3, "IQ151 AMOS cart 3", tag, owner, clock, "iq151_amos3", __FILE__),
- m_active(true)
+ : iq151_rom_device(mconfig, IQ151_AMOS3, tag, owner, clock)
+ , m_active(true)
{
}
diff --git a/src/devices/bus/iq151/rom.h b/src/devices/bus/iq151/rom.h
index bd17fc4e65e..56544a24d9f 100644
--- a/src/devices/bus/iq151/rom.h
+++ b/src/devices/bus/iq151/rom.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_IQ151_ROM_H
+#define MAME_BUS_IQ151_ROM_H
-#ifndef __IQ151_ROM_H__
-#define __IQ151_ROM_H__
+#pragma once
#include "iq151.h"
#include "machine/i8255.h"
@@ -19,20 +19,20 @@ class iq151_rom_device :
public device_iq151cart_interface
{
public:
- // construction/destruction
- iq151_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
+ // construction/destruction
+ iq151_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
// iq151cart_interface overrides
virtual uint8_t* get_cart_base() override;
- uint8_t * m_rom;
+ required_region_ptr<uint8_t> m_rom;
};
@@ -120,10 +120,10 @@ protected:
// device type definition
-extern const device_type IQ151_BASIC6;
-extern const device_type IQ151_BASICG;
-extern const device_type IQ151_AMOS1;
-extern const device_type IQ151_AMOS2;
-extern const device_type IQ151_AMOS3;
+DECLARE_DEVICE_TYPE(IQ151_BASIC6, iq151_basic6_device)
+DECLARE_DEVICE_TYPE(IQ151_BASICG, iq151_basicg_device)
+DECLARE_DEVICE_TYPE(IQ151_AMOS1, iq151_amos1_device)
+DECLARE_DEVICE_TYPE(IQ151_AMOS2, iq151_amos2_device)
+DECLARE_DEVICE_TYPE(IQ151_AMOS3, iq151_amos3_device)
-#endif /* __IQ151_ROM_H__ */
+#endif // MAME_BUS_IQ151_ROM_H
diff --git a/src/devices/bus/iq151/staper.cpp b/src/devices/bus/iq151/staper.cpp
index 692c4e9431a..f04c4302540 100644
--- a/src/devices/bus/iq151/staper.cpp
+++ b/src/devices/bus/iq151/staper.cpp
@@ -34,7 +34,7 @@ MACHINE_CONFIG_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IQ151_STAPER = device_creator<iq151_staper_device>;
+DEFINE_DEVICE_TYPE(IQ151_STAPER, iq151_staper_device, "iq151_staper", "IQ151 STAPER")
//**************************************************************************
// LIVE DEVICE
@@ -45,11 +45,13 @@ const device_type IQ151_STAPER = device_creator<iq151_staper_device>;
//-------------------------------------------------
iq151_staper_device::iq151_staper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IQ151_STAPER, "IQ151 STAPER", tag, owner, clock, "iq151_staper", __FILE__),
- device_iq151cart_interface( mconfig, *this ),
- m_ppi(*this, "ppi8255"),
- m_printer(*this, "printer"), m_printer_timer(nullptr), m_ppi_portc(0)
- {
+ : device_t(mconfig, IQ151_STAPER, tag, owner, clock)
+ , device_iq151cart_interface(mconfig, *this)
+ , m_ppi(*this, "ppi8255")
+ , m_printer(*this, "printer")
+ , m_printer_timer(nullptr)
+ , m_ppi_portc(0)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/iq151/staper.h b/src/devices/bus/iq151/staper.h
index 54bd6823088..65df83e03fd 100644
--- a/src/devices/bus/iq151/staper.h
+++ b/src/devices/bus/iq151/staper.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_IQ151_STAPER_H
+#define MAME_BUS_IQ151_STAPER_H
-#ifndef __IQ151_STAPER_H__
-#define __IQ151_STAPER_H__
+#pragma once
#include "iq151.h"
#include "machine/i8255.h"
@@ -53,6 +53,6 @@ private:
// device type definition
-extern const device_type IQ151_STAPER;
+DECLARE_DEVICE_TYPE(IQ151_STAPER, iq151_staper_device)
-#endif /* __IQ151_STAPER_H__ */
+#endif // MAME_BUS_IQ151_STAPER_H
diff --git a/src/devices/bus/iq151/video32.cpp b/src/devices/bus/iq151/video32.cpp
index b9d4beb92ea..c11e03bafff 100644
--- a/src/devices/bus/iq151/video32.cpp
+++ b/src/devices/bus/iq151/video32.cpp
@@ -41,7 +41,7 @@ static const gfx_layout iq151_video32_charlayout =
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IQ151_VIDEO32 = device_creator<iq151_video32_device>;
+DEFINE_DEVICE_TYPE(IQ151_VIDEO32, iq151_video32_device, "iq151_video32", "IQ151 video32")
//**************************************************************************
// LIVE DEVICE
@@ -52,9 +52,11 @@ const device_type IQ151_VIDEO32 = device_creator<iq151_video32_device>;
//-------------------------------------------------
iq151_video32_device::iq151_video32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IQ151_VIDEO32, "IQ151 video32", tag, owner, clock, "iq151_video32", __FILE__),
- device_gfx_interface(mconfig, *this, nullptr, "^^palette"),
- device_iq151cart_interface( mconfig, *this ), m_videoram(nullptr), m_chargen(nullptr)
+ : device_t(mconfig, IQ151_VIDEO32, tag, owner, clock)
+ , device_gfx_interface(mconfig, *this, nullptr, "^^palette")
+ , device_iq151cart_interface(mconfig, *this)
+ , m_videoram(*this, "videoram")
+ , m_chargen(*this, "chargen")
{
}
@@ -65,9 +67,6 @@ iq151_video32_device::iq151_video32_device(const machine_config &mconfig, const
void iq151_video32_device::device_start()
{
- m_videoram = (uint8_t*)memregion("videoram")->base();
- m_chargen = (uint8_t*)memregion("chargen")->base();
-
set_gfx(0, std::make_unique<gfx_element>(palette(), iq151_video32_charlayout, m_chargen, 0, 1, 0));
}
diff --git a/src/devices/bus/iq151/video32.h b/src/devices/bus/iq151/video32.h
index 8bdd46c671b..9dc32765f6b 100644
--- a/src/devices/bus/iq151/video32.h
+++ b/src/devices/bus/iq151/video32.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_IQ151_VIDEO32_H
+#define MAME_BUS_IQ151_VIDEO32_H
-#ifndef __IQ151_VIDEO32_H__
-#define __IQ151_VIDEO32_H__
+#pragma once
#include "iq151.h"
@@ -36,12 +36,12 @@ protected:
virtual void video_update(bitmap_ind16 &bitmap, const rectangle &cliprect) override;
private:
- uint8_t * m_videoram;
- uint8_t * m_chargen;
+ required_region_ptr<uint8_t> m_videoram;
+ required_region_ptr<uint8_t> m_chargen;
};
// device type definition
-extern const device_type IQ151_VIDEO32;
+DECLARE_DEVICE_TYPE(IQ151_VIDEO32, iq151_video32_device)
-#endif /* __IQ151_VIDEO32_H__ */
+#endif // MAME_BUS_IQ151_VIDEO32_H
diff --git a/src/devices/bus/iq151/video64.cpp b/src/devices/bus/iq151/video64.cpp
index 0ee3b71dd4b..403dc9aa51e 100644
--- a/src/devices/bus/iq151/video64.cpp
+++ b/src/devices/bus/iq151/video64.cpp
@@ -42,7 +42,7 @@ static const gfx_layout iq151_video64_charlayout =
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IQ151_VIDEO64 = device_creator<iq151_video64_device>;
+DEFINE_DEVICE_TYPE(IQ151_VIDEO64, iq151_video64_device, "iq151_video64", "IQ151 video64")
//**************************************************************************
// LIVE DEVICE
@@ -53,9 +53,11 @@ const device_type IQ151_VIDEO64 = device_creator<iq151_video64_device>;
//-------------------------------------------------
iq151_video64_device::iq151_video64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IQ151_VIDEO64, "IQ151 video64", tag, owner, clock, "iq151_video64", __FILE__),
- device_gfx_interface(mconfig, *this, nullptr, "^^palette"),
- device_iq151cart_interface( mconfig, *this ), m_videoram(nullptr), m_chargen(nullptr)
+ : device_t(mconfig, IQ151_VIDEO64, tag, owner, clock)
+ , device_gfx_interface(mconfig, *this, nullptr, "^^palette")
+ , device_iq151cart_interface( mconfig, *this )
+ , m_videoram(*this, "videoram")
+ , m_chargen(*this, "chargen")
{
}
@@ -65,10 +67,7 @@ iq151_video64_device::iq151_video64_device(const machine_config &mconfig, const
void iq151_video64_device::device_start()
{
- m_videoram = (uint8_t*)memregion("videoram")->base();
- m_chargen = (uint8_t*)memregion("chargen")->base();
-
- set_gfx(0,std::make_unique<gfx_element>(palette(), iq151_video64_charlayout, m_chargen, 0, 1, 0));
+ set_gfx(0, std::make_unique<gfx_element>(palette(), iq151_video64_charlayout, m_chargen, 0, 1, 0));
}
//-------------------------------------------------
diff --git a/src/devices/bus/iq151/video64.h b/src/devices/bus/iq151/video64.h
index 773f71cd7d6..7b152fc8fd6 100644
--- a/src/devices/bus/iq151/video64.h
+++ b/src/devices/bus/iq151/video64.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_IQ151_VIDEO64_H
+#define MAME_BUS_IQ151_VIDEO64_H
-#ifndef __IQ151_VIDEO64_H__
-#define __IQ151_VIDEO64_H__
+#pragma once
#include "iq151.h"
@@ -37,12 +37,12 @@ protected:
virtual void video_update(bitmap_ind16 &bitmap, const rectangle &cliprect) override;
private:
- uint8_t * m_videoram;
- uint8_t * m_chargen;
+ required_region_ptr<uint8_t> m_videoram;
+ required_region_ptr<uint8_t> m_chargen;
};
// device type definition
-extern const device_type IQ151_VIDEO64;
+DECLARE_DEVICE_TYPE(IQ151_VIDEO64, iq151_video64_device)
-#endif /* __IQ151_VIDEO64_H__ */
+#endif // MAME_BUS_IQ151_VIDEO64_H
diff --git a/src/devices/bus/isa/3c503.cpp b/src/devices/bus/isa/3c503.cpp
index 21172ea6ecf..baeed57b6d7 100644
--- a/src/devices/bus/isa/3c503.cpp
+++ b/src/devices/bus/isa/3c503.cpp
@@ -12,17 +12,17 @@ static MACHINE_CONFIG_FRAGMENT(el2_3c503_config)
MCFG_DP8390D_MEM_WRITE_CB(WRITE8(el2_3c503_device, el2_3c503_mem_write))
MACHINE_CONFIG_END
-const device_type EL2_3C503 = device_creator<el2_3c503_device>;
+DEFINE_DEVICE_TYPE(EL2_3C503, el2_3c503_device, "el2_3c503", "3C503 Network Adapter")
machine_config_constructor el2_3c503_device::device_mconfig_additions() const {
return MACHINE_CONFIG_NAME(el2_3c503_config);
}
el2_3c503_device::el2_3c503_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock)
- : device_t(mconfig, EL2_3C503, "3C503 Network Adapter", tag, owner, clock, "el2_3c503", __FILE__),
- device_isa8_card_interface(mconfig, *this),
- m_dp8390(*this, "dp8390d"),
- m_irq_state(0)
+ : device_t(mconfig, EL2_3C503, tag, owner, clock)
+ , device_isa8_card_interface(mconfig, *this)
+ , m_dp8390(*this, "dp8390d")
+ , m_irq_state(0)
{
}
diff --git a/src/devices/bus/isa/3c503.h b/src/devices/bus/isa/3c503.h
index 06efe90f168..9db5b7c5e70 100644
--- a/src/devices/bus/isa/3c503.h
+++ b/src/devices/bus/isa/3c503.h
@@ -2,14 +2,15 @@
// copyright-holders:Carl
/* 3com Etherlink II 3c503 */
-#ifndef __3C503_H__
-#define __3C503_H__
+#ifndef MAME_BUS_ISA_3C503_H
+#define MAME_BUS_ISA_3C503_H
+
+#pragma once
#include "isa.h"
#include "machine/dp8390.h"
-class el2_3c503_device: public device_t,
- public device_isa8_card_interface
+class el2_3c503_device : public device_t, public device_isa8_card_interface
{
public:
el2_3c503_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -58,6 +59,6 @@ private:
} m_regs;
};
-extern const device_type EL2_3C503;
+DECLARE_DEVICE_TYPE(EL2_3C503, el2_3c503_device)
-#endif
+#endif // MAME_BUS_ISA_3C503_H
diff --git a/src/devices/bus/isa/3c505.cpp b/src/devices/bus/isa/3c505.cpp
index 3efe0d29213..555aefd9142 100644
--- a/src/devices/bus/isa/3c505.cpp
+++ b/src/devices/bus/isa/3c505.cpp
@@ -295,30 +295,28 @@ INPUT_PORTS_END
IMPLEMENTATION
***************************************************************************/
+constexpr unsigned threecom3c505_device::ETH_BUFFER_SIZE;
+
// device type definition
-const device_type ISA16_3C505 = device_creator<threecom3c505_device> ;
+DEFINE_DEVICE_TYPE(ISA16_3C505, threecom3c505_device, "3c505", "3Com 3C505 Network Adaptor")
//-------------------------------------------------
// threecom3c505_device - constructor
//-------------------------------------------------
threecom3c505_device::threecom3c505_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ISA16_3C505, "3Com 3C505 Network Adaptor", tag, owner, clock, "3c505", __FILE__),
- device_network_interface(mconfig, *this, 10.0f),
- device_isa16_card_interface(mconfig, *this),
- m_iobase(*this, "IO_BASE"),
- m_irqdrq(*this, "IRQ_DRQ"),
- m_romopts(*this, "ROM_OPTS"), m_status(0), m_control(0), m_command_index(0), m_command_pending(0), m_wait_for_ack(0), m_wait_for_nak(0), m_rx_data_index(0), m_rx_pending(0), m_tx_data_length(0), m_program_length(0), m_response_length(0), m_response_index(0), m_microcode_version(0), m_microcode_running(0), m_i82586_config(0), irq_state(), m_do_command_timer(nullptr), m_installed(false), m_irq(0), m_drq(0)
+ : threecom3c505_device(mconfig, ISA16_3C505, tag, owner, clock)
{
}
threecom3c505_device::threecom3c505_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, type, "3Com 3C505 Network Adaptor", tag, owner, clock, "3c505", __FILE__),
+ : device_t(mconfig, type, tag, owner, clock),
device_network_interface(mconfig, *this, 10.0f),
device_isa16_card_interface(mconfig, *this),
m_iobase(*this, "IO_BASE"),
m_irqdrq(*this, "IRQ_DRQ"),
- m_romopts(*this, "ROM_OPTS"), m_status(0), m_control(0), m_command_index(0), m_command_pending(0), m_wait_for_ack(0), m_wait_for_nak(0), m_rx_data_index(0), m_rx_pending(0), m_tx_data_length(0), m_program_length(0), m_response_length(0), m_response_index(0), m_microcode_version(0), m_microcode_running(0), m_i82586_config(0), irq_state(), m_do_command_timer(nullptr), m_installed(false), m_irq(0), m_drq(0)
+ m_romopts(*this, "ROM_OPTS"),
+ m_status(0), m_control(0), m_command_index(0), m_command_pending(0), m_wait_for_ack(0), m_wait_for_nak(0), m_rx_data_index(0), m_rx_pending(0), m_tx_data_length(0), m_program_length(0), m_response_length(0), m_response_index(0), m_microcode_version(0), m_microcode_running(0), m_i82586_config(0), irq_state(), m_do_command_timer(nullptr), m_installed(false), m_irq(0), m_drq(0)
{
}
diff --git a/src/devices/bus/isa/3c505.h b/src/devices/bus/isa/3c505.h
index 13f784aba56..aed8556c0a2 100644
--- a/src/devices/bus/isa/3c505.h
+++ b/src/devices/bus/isa/3c505.h
@@ -8,21 +8,13 @@
*
*/
-#pragma once
+#ifndef MAME_BUS_ISA_3C505_H
+#define MAME_BUS_ISA_3C505_H
-#ifndef THREECOM3C505_H_
-#define THREECOM3C505_H_
+#pragma once
#include "bus/isa/isa.h"
-#define CMD_BUFFER_SIZE 100
-#define ETH_BUFFER_SIZE 2048
-#define PGM_BUFFER_SIZE 0x2000
-
-#define ETHERNET_ADDR_SIZE 6 /* size of ethernet addr */
-
-#define RX_FIFO_SIZE 32
-
// ======================> PCB data structure
#pragma pack(1)
@@ -123,7 +115,6 @@ class threecom3c505_device: public device_t,
public:
// construction/destruction
threecom3c505_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- threecom3c505_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device register I/O
virtual DECLARE_READ16_MEMBER(read);
@@ -131,13 +122,19 @@ public:
static void set_verbose(int on_off);
- required_ioport m_iobase;
- required_ioport m_irqdrq;
- required_ioport m_romopts;
-
virtual void recv_cb(uint8_t *data, int length) override;
protected:
+ static constexpr unsigned CMD_BUFFER_SIZE = 100;
+ static constexpr unsigned ETH_BUFFER_SIZE = 2048;
+ static constexpr unsigned PGM_BUFFER_SIZE = 0x2000;
+
+ static constexpr unsigned ETHERNET_ADDR_SIZE = 6;
+
+ static constexpr unsigned RX_FIFO_SIZE = 32;
+
+ threecom3c505_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual int tx_data(device_t *, const uint8_t *, int);
virtual int setfilter(device_t *, int);
@@ -148,6 +145,10 @@ protected:
virtual void device_start() override;
virtual const tiny_rom_entry *device_rom_region() const override;
+ required_ioport m_iobase;
+ required_ioport m_irqdrq;
+ required_ioport m_romopts;
+
private:
// device-level overrides
virtual void device_reset() override;
@@ -276,6 +277,6 @@ private:
};
// device type definition
-extern const device_type ISA16_3C505;
+DECLARE_DEVICE_TYPE(ISA16_3C505, threecom3c505_device)
-#endif /* THREECOM3C505_H_ */
+#endif // MAME_BUS_ISA_3C505_H
diff --git a/src/devices/bus/isa/adlib.cpp b/src/devices/bus/isa/adlib.cpp
index 4193091f9d2..512d14cdad6 100644
--- a/src/devices/bus/isa/adlib.cpp
+++ b/src/devices/bus/isa/adlib.cpp
@@ -44,7 +44,7 @@ WRITE8_MEMBER( isa8_adlib_device::ym3812_16_w )
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_ADLIB = device_creator<isa8_adlib_device>;
+DEFINE_DEVICE_TYPE(ISA8_ADLIB, isa8_adlib_device, "isa_adlib", "Ad Lib Sound Card")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -65,9 +65,9 @@ machine_config_constructor isa8_adlib_device::device_mconfig_additions() const
//-------------------------------------------------
isa8_adlib_device::isa8_adlib_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ISA8_ADLIB, "Ad Lib Sound Card", tag, owner, clock, "isa_adlib", __FILE__),
- device_isa8_card_interface( mconfig, *this ),
- m_ym3812(*this, "ym3812")
+ : device_t(mconfig, ISA8_ADLIB, tag, owner, clock)
+ , device_isa8_card_interface(mconfig, *this)
+ , m_ym3812(*this, "ym3812")
{
}
diff --git a/src/devices/bus/isa/adlib.h b/src/devices/bus/isa/adlib.h
index 2c871235b76..e91c4f4521d 100644
--- a/src/devices/bus/isa/adlib.h
+++ b/src/devices/bus/isa/adlib.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
-#pragma once
+#ifndef MAME_BUS_ISA_ADLIB_H
+#define MAME_BUS_ISA_ADLIB_H
-#ifndef __ISA_ADLIB_H__
-#define __ISA_ADLIB_H__
+#pragma once
#include "isa.h"
#include "sound/3812intf.h"
@@ -38,6 +38,6 @@ private:
// device type definition
-extern const device_type ISA8_ADLIB;
+DECLARE_DEVICE_TYPE(ISA8_ADLIB, isa8_adlib_device)
-#endif /* __ISA_ADLIB_H__ */
+#endif // MAME_BUS_ISA_ADLIB_H
diff --git a/src/devices/bus/isa/aga.cpp b/src/devices/bus/isa/aga.cpp
index ad4269dba8b..5f5430d4d04 100644
--- a/src/devices/bus/isa/aga.cpp
+++ b/src/devices/bus/isa/aga.cpp
@@ -51,49 +51,36 @@ INPUT_PORTS_END
#define CGA_MONITOR (m_cga_config->read()&0x1C)
#define CGA_MONITOR_COMPOSITE 0x08 /* Colour composite */
-const device_type ISA8_AGA = device_creator<isa8_aga_device>;
+DEFINE_DEVICE_TYPE(ISA8_AGA, isa8_aga_device, "aga", "AGA")
//-------------------------------------------------
// isa8_aga_device - constructor
//-------------------------------------------------
isa8_aga_device::isa8_aga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t( mconfig, ISA8_AGA, "AGA", tag, owner, clock, "aga", __FILE__),
- device_isa8_card_interface(mconfig, *this),
- m_palette(*this, "palette"),
- m_mc6845(*this, AGA_MC6845_NAME),
- m_cga_config(*this, "cga_config"),
- m_update_row_type(-1),
- m_mode(),
- m_mda_mode_control(0),
- m_mda_status(0),
- m_mda_chr_gen(nullptr),
- m_cga_mode_control(0),
- m_cga_color_select(0),
- m_cga_status(0),
- m_cga_chr_gen(nullptr),
- m_framecnt(0),
- m_vsync(0),
- m_hsync(0),
- m_videoram(nullptr)
-{
-}
-
-isa8_aga_device::isa8_aga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_isa8_card_interface(mconfig, *this),
- m_palette(*this, "palette"),
- m_mc6845(*this, AGA_MC6845_NAME),
- m_cga_config(*this, "cga_config"),
- m_update_row_type(-1), m_mode(),
- m_mda_mode_control(0),
- m_mda_status(0), m_mda_chr_gen(nullptr),
- m_cga_mode_control(0),
- m_cga_color_select(0),
- m_cga_status(0), m_cga_chr_gen(nullptr),
- m_framecnt(0),
- m_vsync(0),
- m_hsync(0), m_videoram(nullptr)
+ isa8_aga_device(mconfig, ISA8_AGA, tag, owner, clock)
+{
+}
+
+isa8_aga_device::isa8_aga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this),
+ m_palette(*this, "palette"),
+ m_mc6845(*this, AGA_MC6845_NAME),
+ m_cga_config(*this, "cga_config"),
+ m_update_row_type(-1),
+ m_mode(),
+ m_mda_mode_control(0),
+ m_mda_status(0),
+ m_mda_chr_gen(nullptr),
+ m_cga_mode_control(0),
+ m_cga_color_select(0),
+ m_cga_status(0),
+ m_cga_chr_gen(nullptr),
+ m_framecnt(0),
+ m_vsync(0),
+ m_hsync(0),
+ m_videoram(nullptr)
{
}
//-------------------------------------------------
@@ -159,17 +146,17 @@ ioport_constructor isa8_aga_device::device_input_ports() const
-const device_type ISA8_AGA_PC200 = device_creator<isa8_aga_pc200_device>;
+DEFINE_DEVICE_TYPE(ISA8_AGA_PC200, isa8_aga_pc200_device, "aga_pc200", "AGA PC200")
//-------------------------------------------------
// isa8_aga_pc200_device - constructor
//-------------------------------------------------
isa8_aga_pc200_device::isa8_aga_pc200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_aga_device( mconfig, ISA8_AGA_PC200, "AGA PC200", tag, owner, clock, "aga_pc200", __FILE__),
- m_port8(0),
- m_portd(0),
- m_porte(0)
+ isa8_aga_device(mconfig, ISA8_AGA_PC200, tag, owner, clock),
+ m_port8(0),
+ m_portd(0),
+ m_porte(0)
{
}
diff --git a/src/devices/bus/isa/aga.h b/src/devices/bus/isa/aga.h
index 371e185bc4c..528fced9bda 100644
--- a/src/devices/bus/isa/aga.h
+++ b/src/devices/bus/isa/aga.h
@@ -19,8 +19,8 @@
ROM_LOAD("hercules.chr", 0x00000, 0x1000, CRC(7e8c9d76))
*/
-#ifndef __ISA_AGA_H__
-#define __ISA_AGA_H__
+#ifndef MAME_BUS_ISA_AGA_H
+#define MAME_BUS_ISA_AGA_H
#include "isa.h"
#include "cga.h"
@@ -37,9 +37,6 @@ class isa8_aga_device :
public:
// construction/destruction
isa8_aga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- isa8_aga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- // device-level overrides
- virtual void device_start() override;
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -72,6 +69,11 @@ public:
required_device<palette_device> m_palette;
required_device<mc6845_device> m_mc6845;
+protected:
+ isa8_aga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ // device-level overrides
+ virtual void device_start() override;
+
required_ioport m_cga_config;
int m_update_row_type;
@@ -96,7 +98,7 @@ public:
};
// device type definition
-extern const device_type ISA8_AGA;
+DECLARE_DEVICE_TYPE(ISA8_AGA, isa8_aga_device)
// ======================> isa8_aga_pc200_device
@@ -106,22 +108,24 @@ class isa8_aga_pc200_device :
public:
// construction/destruction
isa8_aga_pc200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
- uint8_t m_port8;
- uint8_t m_portd;
- uint8_t m_porte;
-
DECLARE_READ8_MEMBER( pc200_videoram_r );
DECLARE_WRITE8_MEMBER( pc200_videoram_w );
DECLARE_WRITE8_MEMBER( pc200_cga_w );
DECLARE_READ8_MEMBER( pc200_cga_r );
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+ uint8_t m_port8;
+ uint8_t m_portd;
+ uint8_t m_porte;
};
// device type definition
-extern const device_type ISA8_AGA_PC200;
+DECLARE_DEVICE_TYPE(ISA8_AGA_PC200, isa8_aga_pc200_device)
-#endif
+#endif // MAME_BUS_ISA_AGA_H
diff --git a/src/devices/bus/isa/aha1542.cpp b/src/devices/bus/isa/aha1542.cpp
index 0ca3b9ca80e..98ae5edb735 100644
--- a/src/devices/bus/isa/aha1542.cpp
+++ b/src/devices/bus/isa/aha1542.cpp
@@ -134,7 +134,7 @@
#define CMD_EXTBIOS 0x28 // return extended BIOS information
#define CMD_MBENABLE 0x29 // set mailbox interface enable
-const device_type AHA1542 = device_creator<aha1542_device>;
+DEFINE_DEVICE_TYPE(AHA1542, aha1542_device, "aha1542", "AHA1542 SCSI Controller")
#define Z84C0010_TAG "u5"
@@ -185,7 +185,7 @@ machine_config_constructor aha1542_device::device_mconfig_additions() const
}
aha1542_device::aha1542_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, AHA1542, "AHA1542 SCSI Controller", tag, owner, clock, "aha1542", __FILE__ ),
+ device_t(mconfig, AHA1542, tag, owner, clock),
device_isa16_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/isa/aha1542.h b/src/devices/bus/isa/aha1542.h
index 703bd48f28b..2b9fd179054 100644
--- a/src/devices/bus/isa/aha1542.h
+++ b/src/devices/bus/isa/aha1542.h
@@ -10,10 +10,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_AHA1542_H
+#define MAME_BUS_AHA1542_H
-#ifndef __AHA1542__
-#define __AHA1542__
+#pragma once
#include "isa.h"
@@ -46,7 +46,6 @@ protected:
};
// device type definition
+DECLARE_DEVICE_TYPE(AHA1542, aha1542_device)
-extern const device_type AHA1542;
-
-#endif
+#endif // MAME_BUS_AHA1542_H
diff --git a/src/devices/bus/isa/cga.cpp b/src/devices/bus/isa/cga.cpp
index f44cdfb5900..c20fc47f403 100644
--- a/src/devices/bus/isa/cga.cpp
+++ b/src/devices/bus/isa/cga.cpp
@@ -273,7 +273,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_CGA = device_creator<isa8_cga_device>;
+DEFINE_DEVICE_TYPE(ISA8_CGA, isa8_cga_device, "cga", "IBM Color/Graphics Monitor Adapter")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -305,29 +305,18 @@ const tiny_rom_entry *isa8_cga_device::device_rom_region() const
//-------------------------------------------------
isa8_cga_device::isa8_cga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_CGA, "IBM Color/Graphics Monitor Adapter", tag, owner, clock, "cga", __FILE__),
- device_isa8_card_interface(mconfig, *this),
- m_cga_config(*this, "cga_config"), m_framecnt(0), m_mode_control(0), m_color_select(0),
- m_update_row_type(-1), m_y(0), m_chr_gen_base(nullptr), m_chr_gen(nullptr), m_vsync(0), m_hsync(0),
- m_vram_size( 0x4000 ), m_plantronics(0),
- m_palette(*this, "palette"),
- m_screen(*this, "screen")
+ isa8_cga_device(mconfig, ISA8_CGA, tag, owner, clock)
{
- m_chr_gen_offset[0] = m_chr_gen_offset[2] = 0x1800;
- m_chr_gen_offset[1] = m_chr_gen_offset[3] = 0x1000;
- m_font_selection_mask = 0x01;
- m_start_offset = 0;
- m_superimpose = false;
}
-isa8_cga_device::isa8_cga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_isa8_card_interface(mconfig, *this),
- m_cga_config(*this, "cga_config"), m_framecnt(0), m_mode_control(0), m_color_select(0),
- m_update_row_type(-1), m_y(0), m_chr_gen_base(nullptr), m_chr_gen(nullptr), m_vsync(0), m_hsync(0),
- m_vram_size( 0x4000 ), m_plantronics(0),
- m_palette(*this, "palette"),
- m_screen(*this, "screen")
+isa8_cga_device::isa8_cga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this),
+ m_cga_config(*this, "cga_config"), m_framecnt(0), m_mode_control(0), m_color_select(0),
+ m_update_row_type(-1), m_y(0), m_chr_gen_base(nullptr), m_chr_gen(nullptr), m_vsync(0), m_hsync(0),
+ m_vram_size( 0x4000 ), m_plantronics(0),
+ m_palette(*this, "palette"),
+ m_screen(*this, "screen")
{
m_chr_gen_offset[0] = m_chr_gen_offset[2] = 0x1800;
m_chr_gen_offset[1] = m_chr_gen_offset[3] = 0x1000;
@@ -439,14 +428,14 @@ uint32_t isa8_cga_device::screen_update(screen_device &screen, bitmap_rgb32 &bit
}
-const device_type ISA8_CGA_POISK2 = device_creator<isa8_cga_poisk2_device>;
+DEFINE_DEVICE_TYPE(ISA8_CGA_POISK2, isa8_cga_poisk2_device, "cga_poisk2", "ISA8_CGA_POISK2")
//-------------------------------------------------
// isa8_cga_poisk2_device - constructor
//-------------------------------------------------
isa8_cga_poisk2_device::isa8_cga_poisk2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_cga_device( mconfig, ISA8_CGA_POISK2, "ISA8_CGA_POISK2", tag, owner, clock, "cga_poisk2", __FILE__)
+ isa8_cga_device(mconfig, ISA8_CGA_POISK2, tag, owner, clock)
{
m_chr_gen_offset[0] = 0x0000;
m_chr_gen_offset[1] = 0x0800;
@@ -468,20 +457,19 @@ const tiny_rom_entry *isa8_cga_poisk2_device::device_rom_region() const
/* for superimposing CGA over a different source video (i.e. tetriskr) */
-const device_type ISA8_CGA_SUPERIMPOSE = device_creator<isa8_cga_superimpose_device>;
+DEFINE_DEVICE_TYPE(ISA8_CGA_SUPERIMPOSE, isa8_cga_superimpose_device, "cga_superimpose", "ISA8_CGA_SUPERIMPOSE")
//-------------------------------------------------
// isa8_cga_superimpose_device - constructor
//-------------------------------------------------
isa8_cga_superimpose_device::isa8_cga_superimpose_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_cga_device( mconfig, ISA8_CGA_SUPERIMPOSE, "ISA8_CGA_SUPERIMPOSE", tag, owner, clock, "cga_superimpose", __FILE__)
+ isa8_cga_superimpose_device(mconfig, ISA8_CGA_SUPERIMPOSE, tag, owner, clock)
{
- m_superimpose = true;
}
-isa8_cga_superimpose_device::isa8_cga_superimpose_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- isa8_cga_device( mconfig, type, name, tag, owner, clock, shortname, source)
+isa8_cga_superimpose_device::isa8_cga_superimpose_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ isa8_cga_device(mconfig, type, tag, owner, clock)
{
m_superimpose = true;
}
@@ -1538,7 +1526,7 @@ WRITE8_MEMBER( isa8_cga_pc1512_device::vram_w )
}
-const device_type ISA8_CGA_PC1512 = device_creator<isa8_cga_pc1512_device>;
+DEFINE_DEVICE_TYPE(ISA8_CGA_PC1512, isa8_cga_pc1512_device, "cga_pc1512", "ISA8_CGA_PC1512")
const offs_t isa8_cga_pc1512_device::vram_offset[4]= { 0x0000, 0x4000, 0x8000, 0xC000 };
const uint8_t isa8_cga_pc1512_device::mc6845_writeonce_register[31] =
@@ -1551,7 +1539,7 @@ const uint8_t isa8_cga_pc1512_device::mc6845_writeonce_register[31] =
//-------------------------------------------------
isa8_cga_pc1512_device::isa8_cga_pc1512_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_cga_device( mconfig, ISA8_CGA_PC1512, "ISA8_CGA_PC1512", tag, owner, clock, "cga_pc1512", __FILE__), m_write(0), m_read(0), m_mc6845_address(0)
+ isa8_cga_device(mconfig, ISA8_CGA_PC1512, tag, owner, clock), m_write(0), m_read(0), m_mc6845_address(0)
{
m_vram_size = 0x10000;
m_chr_gen_offset[0] = 0x0000;
@@ -1673,7 +1661,7 @@ READ8_MEMBER( isa8_wyse700_device::io_read )
}
-const device_type ISA8_WYSE700 = device_creator<isa8_wyse700_device>;
+DEFINE_DEVICE_TYPE(ISA8_WYSE700, isa8_wyse700_device, "wyse700", "Wyse 700")
//-------------------------------------------------
@@ -1681,7 +1669,7 @@ const device_type ISA8_WYSE700 = device_creator<isa8_wyse700_device>;
//-------------------------------------------------
isa8_wyse700_device::isa8_wyse700_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_cga_device( mconfig, ISA8_WYSE700, "Wyse 700", tag, owner, clock, "wyse700", __FILE__), m_bank_offset(0), m_bank_base(0), m_control(0)
+ isa8_cga_device(mconfig, ISA8_WYSE700, tag, owner, clock), m_bank_offset(0), m_bank_base(0), m_control(0)
{
m_vram_size = 0x20000;
m_start_offset = 0x18000;
@@ -1762,14 +1750,14 @@ uint32_t isa8_wyse700_device::screen_update(screen_device &screen, bitmap_rgb32
}
-const device_type ISA8_EC1841_0002 = device_creator<isa8_ec1841_0002_device>;
+DEFINE_DEVICE_TYPE(ISA8_EC1841_0002, isa8_ec1841_0002_device, "ec1841_0002", "EC 1841.0002 (CGA)")
//-------------------------------------------------
// isa8_ec1841_0002_device - constructor
//-------------------------------------------------
isa8_ec1841_0002_device::isa8_ec1841_0002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_cga_device( mconfig, ISA8_EC1841_0002, "EC 1841.0002 (CGA)", tag, owner, clock, "ec1841_0002", __FILE__), m_p3df(0)
+ isa8_cga_device(mconfig, ISA8_EC1841_0002, tag, owner, clock), m_p3df(0)
{
}
@@ -1848,14 +1836,14 @@ READ8_MEMBER( isa8_ec1841_0002_device::io_read )
return data;
}
-const device_type ISA8_CGA_MC1502 = device_creator<isa8_cga_mc1502_device>;
+DEFINE_DEVICE_TYPE(ISA8_CGA_MC1502, isa8_cga_mc1502_device, "cga_mc1502", "MC1502 CGA")
//-------------------------------------------------
// isa8_cga_mc1502_device - constructor
//-------------------------------------------------
isa8_cga_mc1502_device::isa8_cga_mc1502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_cga_device( mconfig, ISA8_CGA_MC1502, "MC1502 CGA", tag, owner, clock, "cga_mc1502", __FILE__)
+ isa8_cga_device(mconfig, ISA8_CGA_MC1502, tag, owner, clock)
{
m_vram_size = 0x8000;
m_chr_gen_offset[0] = 0x0000;
@@ -1877,14 +1865,14 @@ const tiny_rom_entry *isa8_cga_iskr1031_device::device_rom_region() const
return ROM_NAME( cga_iskr1031 );
}
-const device_type ISA8_CGA_ISKR1031 = device_creator<isa8_cga_iskr1031_device>;
+DEFINE_DEVICE_TYPE(ISA8_CGA_ISKR1031, isa8_cga_iskr1031_device, "cga_iskr1031", "Iskra-1031 CGA")
//-------------------------------------------------
// isa8_cga_iskr1031_device - constructor
//-------------------------------------------------
isa8_cga_iskr1031_device::isa8_cga_iskr1031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_cga_device( mconfig, ISA8_CGA_ISKR1031, "Iskra-1031 CGA", tag, owner, clock, "cga_iskr1031", __FILE__)
+ isa8_cga_device(mconfig, ISA8_CGA_ISKR1031, tag, owner, clock)
{
}
@@ -1902,14 +1890,14 @@ const tiny_rom_entry *isa8_cga_iskr1030m_device::device_rom_region() const
return ROM_NAME( cga_iskr1030m );
}
-const device_type ISA8_CGA_ISKR1030M = device_creator<isa8_cga_iskr1030m_device>;
+DEFINE_DEVICE_TYPE(ISA8_CGA_ISKR1030M, isa8_cga_iskr1030m_device, "cga_iskr1030m", "Iskra-1030M CGA")
//-------------------------------------------------
// isa8_cga_iskr1030m_device - constructor
//-------------------------------------------------
isa8_cga_iskr1030m_device::isa8_cga_iskr1030m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_cga_device( mconfig, ISA8_CGA_ISKR1030M, "Iskra-1030M CGA", tag, owner, clock, "cga_iskr1030m", __FILE__)
+ isa8_cga_device(mconfig, ISA8_CGA_ISKR1030M, tag, owner, clock)
{
}
@@ -1926,7 +1914,7 @@ const tiny_rom_entry *isa8_cga_mc1502_device::device_rom_region() const
return ROM_NAME( mc1502 );
}
-const device_type ISA8_CGA_M24 = device_creator<isa8_cga_m24_device>;
+DEFINE_DEVICE_TYPE(ISA8_CGA_M24, isa8_cga_m24_device, "cga_m24", "Olivetti M24 CGA")
static MACHINE_CONFIG_DERIVED( m24, cga )
MCFG_DEVICE_MODIFY(CGA_SCREEN_NAME)
@@ -1940,7 +1928,7 @@ machine_config_constructor isa8_cga_m24_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME( m24 );
}
isa8_cga_m24_device::isa8_cga_m24_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_cga_device( mconfig, ISA8_CGA_M24, "Olivetti M24 CGA", tag, owner, clock, "cga_m24", __FILE__), m_mode2(0), m_index(0)
+ isa8_cga_device(mconfig, ISA8_CGA_M24, tag, owner, clock), m_mode2(0), m_index(0)
{
m_vram_size = 0x8000;
}
diff --git a/src/devices/bus/isa/cga.h b/src/devices/bus/isa/cga.h
index 2b34695cc83..a8f8b737c93 100644
--- a/src/devices/bus/isa/cga.h
+++ b/src/devices/bus/isa/cga.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef MAME_DEVICE_BUS_ISA_CGA_H
-#define MAME_DEVICE_BUS_ISA_CGA_H
+#ifndef MAME_BUS_ISA_CGA_H
+#define MAME_BUS_ISA_CGA_H
#pragma once
@@ -28,7 +28,6 @@ class isa8_cga_device :
public:
// construction/destruction
isa8_cga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- isa8_cga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual MC6845_UPDATE_ROW( crtc_update_row );
MC6845_UPDATE_ROW( cga_text_inten_update_row );
@@ -48,6 +47,8 @@ public:
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
+ isa8_cga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
required_ioport m_cga_config;
// device-level overrides
@@ -88,7 +89,7 @@ public:
};
// device type definition
-extern const device_type ISA8_CGA;
+DECLARE_DEVICE_TYPE(ISA8_CGA, isa8_cga_device)
// ======================> isa8_cga_superimpose_device
@@ -99,11 +100,12 @@ class isa8_cga_superimpose_device :
public:
// construction/destruction
isa8_cga_superimpose_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- isa8_cga_superimpose_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+protected:
+ isa8_cga_superimpose_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
// device type definition
-extern const device_type ISA8_CGA_SUPERIMPOSE;
+DECLARE_DEVICE_TYPE(ISA8_CGA_SUPERIMPOSE, isa8_cga_superimpose_device)
// ======================> isa8_poisk2_device
@@ -119,7 +121,7 @@ public:
};
// device type definition
-extern const device_type ISA8_CGA_POISK2;
+DECLARE_DEVICE_TYPE(ISA8_CGA_POISK2, isa8_cga_poisk2_device)
// ======================> isa8_pc1512_device
@@ -162,7 +164,7 @@ public:
};
// device type definition
-extern const device_type ISA8_CGA_PC1512;
+DECLARE_DEVICE_TYPE(ISA8_CGA_PC1512, isa8_cga_pc1512_device)
// ======================> isa8_wyse700_device
@@ -192,7 +194,7 @@ public:
};
// device type definition
-extern const device_type ISA8_WYSE700;
+DECLARE_DEVICE_TYPE(ISA8_WYSE700, isa8_wyse700_device)
// ======================> isa8_ec1841_0002_device
@@ -218,7 +220,7 @@ public:
};
// device type definition
-extern const device_type ISA8_EC1841_0002;
+DECLARE_DEVICE_TYPE(ISA8_EC1841_0002, isa8_ec1841_0002_device)
// ======================> isa8_cga_iskr1031_device
@@ -232,7 +234,7 @@ public:
};
// device type definition
-extern const device_type ISA8_CGA_ISKR1030M;
+DECLARE_DEVICE_TYPE(ISA8_CGA_ISKR1030M, isa8_cga_iskr1030m_device)
// ======================> isa8_cga_iskr1031_device
@@ -246,7 +248,7 @@ public:
};
// device type definition
-extern const device_type ISA8_CGA_ISKR1031;
+DECLARE_DEVICE_TYPE(ISA8_CGA_ISKR1031, isa8_cga_iskr1031_device)
// ======================> isa8_cga_mc1502_device
@@ -261,7 +263,7 @@ public:
};
// device type definition
-extern const device_type ISA8_CGA_MC1502;
+DECLARE_DEVICE_TYPE(ISA8_CGA_MC1502, isa8_cga_mc1502_device)
class isa8_cga_m24_device :
@@ -285,6 +287,6 @@ private:
};
// device type definition
-extern const device_type ISA8_CGA_M24;
+DECLARE_DEVICE_TYPE(ISA8_CGA_M24, isa8_cga_m24)
-#endif // MAME_DEVICE_BUS_ISA_CGA_H
+#endif // MAME_BUS_ISA_CGA_H
diff --git a/src/devices/bus/isa/com.cpp b/src/devices/bus/isa/com.cpp
index bce1eab2120..dd532542cf7 100644
--- a/src/devices/bus/isa/com.cpp
+++ b/src/devices/bus/isa/com.cpp
@@ -76,7 +76,7 @@ MACHINE_CONFIG_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_COM = device_creator<isa8_com_device>;
+DEFINE_DEVICE_TYPE(ISA8_COM, isa8_com_device, "isa_com", "Communications Adapter PC/XT")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -97,14 +97,13 @@ machine_config_constructor isa8_com_device::device_mconfig_additions() const
//-------------------------------------------------
isa8_com_device::isa8_com_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_COM, "Communications Adapter PC/XT", tag, owner, clock, "isa_com", __FILE__),
- device_isa8_card_interface(mconfig, *this)
+ isa8_com_device(mconfig, ISA8_COM, tag, owner, clock)
{
}
-isa8_com_device::isa8_com_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_isa8_card_interface(mconfig, *this)
+isa8_com_device::isa8_com_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this)
{
}
@@ -173,7 +172,7 @@ MACHINE_CONFIG_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_COM_AT = device_creator<isa8_com_at_device>;
+DEFINE_DEVICE_TYPE(ISA8_COM_AT, isa8_com_at_device, "isa_com_at", "Communications Adapter")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -190,6 +189,6 @@ machine_config_constructor isa8_com_at_device::device_mconfig_additions() const
//-------------------------------------------------
isa8_com_at_device::isa8_com_at_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_com_device(mconfig, ISA8_COM_AT, "Communications Adapter", tag, owner, clock, "isa_com_at", __FILE__)
+ isa8_com_device(mconfig, ISA8_COM_AT, tag, owner, clock)
{
}
diff --git a/src/devices/bus/isa/com.h b/src/devices/bus/isa/com.h
index ef503bd770d..b0230fbc405 100644
--- a/src/devices/bus/isa/com.h
+++ b/src/devices/bus/isa/com.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl,Miodrag Milanovic
-#pragma once
+#ifndef MAME_BUS_ISA_COM_H
+#define MAME_BUS_ISA_COM_H
-#ifndef __ISA_COM_H__
-#define __ISA_COM_H__
+#pragma once
#include "isa.h"
@@ -19,23 +19,25 @@ class isa8_com_device :
public device_isa8_card_interface
{
public:
- // construction/destruction
- isa8_com_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- isa8_com_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ // construction/destruction
+ isa8_com_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
DECLARE_WRITE_LINE_MEMBER(pc_com_interrupt_1) { m_isa->irq4_w(state); }
DECLARE_WRITE_LINE_MEMBER(pc_com_interrupt_2) { m_isa->irq3_w(state); }
+
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ isa8_com_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
};
// device type definition
-extern const device_type ISA8_COM;
+DECLARE_DEVICE_TYPE(ISA8_COM, isa8_com_device)
// ======================> isa8_com_at_device
@@ -43,8 +45,8 @@ class isa8_com_at_device :
public isa8_com_device
{
public:
- // construction/destruction
- isa8_com_at_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa8_com_at_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -52,6 +54,6 @@ public:
// device type definition
-extern const device_type ISA8_COM_AT;
+DECLARE_DEVICE_TYPE(ISA8_COM_AT, isa8_com_at_device)
-#endif /* __ISA_COM_H__ */
+#endif // MAME_BUS_ISA_COM_H
diff --git a/src/devices/bus/isa/dectalk.cpp b/src/devices/bus/isa/dectalk.cpp
index 5995db6b5a2..bc1a767c8a3 100644
--- a/src/devices/bus/isa/dectalk.cpp
+++ b/src/devices/bus/isa/dectalk.cpp
@@ -7,10 +7,10 @@
#include "speaker.h"
-const device_type ISA8_DECTALK = device_creator<dectalk_isa_device>;
+DEFINE_DEVICE_TYPE(ISA8_DECTALK, dectalk_isa_device, "dectalk_isa", "DECTalk-PC")
dectalk_isa_device::dectalk_isa_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) :
- device_t(mconfig, ISA8_DECTALK, "DECTalk-PC", tag, owner, clock, "dectalk_isa", __FILE__),
+ device_t(mconfig, ISA8_DECTALK, tag, owner, clock),
device_isa8_card_interface(mconfig, *this),
m_cmd(0),
m_stat(0),
diff --git a/src/devices/bus/isa/dectalk.h b/src/devices/bus/isa/dectalk.h
index cace3a9d488..eaab353afb7 100644
--- a/src/devices/bus/isa/dectalk.h
+++ b/src/devices/bus/isa/dectalk.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef ISA_DECTALK_H_
-#define ISA_DECTALK_H_
+#ifndef MAME_BUS_ISA_DECTALK_H
+#define MAME_BUS_ISA_DECTALK_H
+
+#pragma once
#include "isa.h"
#include "sound/dac.h"
@@ -50,6 +52,6 @@ private:
required_device<cpu_device> m_dsp;
};
-extern const device_type ISA8_DECTALK;
+DECLARE_DEVICE_TYPE(ISA8_DECTALK, dectalk_isa_device)
-#endif /* ISA_DECTALK_H_ */
+#endif // MAME_BUS_ISA_DECTALK_H
diff --git a/src/devices/bus/isa/ega.cpp b/src/devices/bus/isa/ega.cpp
index 9891b37bf6e..440e6a7be05 100644
--- a/src/devices/bus/isa/ega.cpp
+++ b/src/devices/bus/isa/ega.cpp
@@ -538,7 +538,7 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_EGA = device_creator<isa8_ega_device>;
+DEFINE_DEVICE_TYPE(ISA8_EGA, isa8_ega_device, "ega", "IBM Enhanced Graphics Adapter")
//-------------------------------------------------
@@ -574,18 +574,16 @@ ioport_constructor isa8_ega_device::device_input_ports() const
//-------------------------------------------------
isa8_ega_device::isa8_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_EGA, "IBM Enhanced Graphics Adapter", tag, owner, clock, "ega", __FILE__),
- device_isa8_card_interface(mconfig, *this), m_crtc_ega(nullptr), m_vram(nullptr), m_videoram(nullptr), m_charA(nullptr), m_charB(nullptr),
- m_misc_output(0), m_feature_control(0), m_frame_cnt(0), m_hsync(0), m_vsync(0), m_vblank(0), m_display_enable(0), m_video_mode(0),
- m_palette(*this, "palette")
+ isa8_ega_device(mconfig, ISA8_EGA, tag, owner, clock)
{
}
-isa8_ega_device::isa8_ega_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_isa8_card_interface(mconfig, *this), m_crtc_ega(nullptr), m_vram(nullptr), m_videoram(nullptr), m_charA(nullptr), m_charB(nullptr),
- m_misc_output(0), m_feature_control(0), m_frame_cnt(0), m_hsync(0), m_vsync(0), m_vblank(0), m_display_enable(0), m_video_mode(0),
- m_palette(*this, "palette")
+isa8_ega_device::isa8_ega_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this),
+ m_crtc_ega(nullptr), m_vram(nullptr), m_videoram(nullptr), m_charA(nullptr), m_charB(nullptr),
+ m_misc_output(0), m_feature_control(0), m_frame_cnt(0), m_hsync(0), m_vsync(0), m_vblank(0), m_display_enable(0), m_video_mode(0),
+ m_palette(*this, "palette")
{
}
diff --git a/src/devices/bus/isa/ega.h b/src/devices/bus/isa/ega.h
index e292c5d5e4f..38310580de4 100644
--- a/src/devices/bus/isa/ega.h
+++ b/src/devices/bus/isa/ega.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#pragma once
+#ifndef MAME_BUS_ISA_EGA_H
+#define MAME_BUS_ISA_EGA_H
-#ifndef __ISA_EGA_H__
-#define __ISA_EGA_H__
+#pragma once
#include "isa.h"
#include "video/crtc_ega.h"
@@ -19,92 +19,93 @@ class isa8_ega_device :
public device_isa8_card_interface
{
public:
- // construction/destruction
- isa8_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- isa8_ega_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual ioport_constructor device_input_ports() const override;
-
- DECLARE_READ8_MEMBER(read);
- DECLARE_WRITE8_MEMBER(write);
- DECLARE_READ8_MEMBER(pc_ega8_3b0_r);
- DECLARE_WRITE8_MEMBER(pc_ega8_3b0_w);
- DECLARE_READ8_MEMBER(pc_ega8_3c0_r);
- DECLARE_WRITE8_MEMBER(pc_ega8_3c0_w);
- DECLARE_READ8_MEMBER(pc_ega8_3d0_r);
- DECLARE_WRITE8_MEMBER(pc_ega8_3d0_w);
- DECLARE_WRITE_LINE_MEMBER(de_changed);
- DECLARE_WRITE_LINE_MEMBER(hsync_changed);
- DECLARE_WRITE_LINE_MEMBER(vsync_changed);
- DECLARE_WRITE_LINE_MEMBER(vblank_changed);
-
- CRTC_EGA_ROW_UPDATE(ega_update_row);
- CRTC_EGA_ROW_UPDATE(pc_ega_graphics);
- CRTC_EGA_ROW_UPDATE(pc_ega_text);
+ // construction/destruction
+ isa8_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual ioport_constructor device_input_ports() const override;
+
+ DECLARE_READ8_MEMBER(read);
+ DECLARE_WRITE8_MEMBER(write);
+ DECLARE_READ8_MEMBER(pc_ega8_3b0_r);
+ DECLARE_WRITE8_MEMBER(pc_ega8_3b0_w);
+ DECLARE_READ8_MEMBER(pc_ega8_3c0_r);
+ DECLARE_WRITE8_MEMBER(pc_ega8_3c0_w);
+ DECLARE_READ8_MEMBER(pc_ega8_3d0_r);
+ DECLARE_WRITE8_MEMBER(pc_ega8_3d0_w);
+ DECLARE_WRITE_LINE_MEMBER(de_changed);
+ DECLARE_WRITE_LINE_MEMBER(hsync_changed);
+ DECLARE_WRITE_LINE_MEMBER(vsync_changed);
+ DECLARE_WRITE_LINE_MEMBER(vblank_changed);
+
+ CRTC_EGA_ROW_UPDATE(ega_update_row);
+ CRTC_EGA_ROW_UPDATE(pc_ega_graphics);
+ CRTC_EGA_ROW_UPDATE(pc_ega_text);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ isa8_ega_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
- uint8_t alu_op( uint8_t data, uint8_t latch_data );
+ uint8_t alu_op( uint8_t data, uint8_t latch_data );
public:
- crtc_ega_device *m_crtc_ega;
-
- void install_banks();
- void change_mode();
- DECLARE_WRITE8_MEMBER(pc_ega8_3X0_w);
- DECLARE_READ8_MEMBER(pc_ega8_3X0_r);
-
- /* Video memory and related variables */
- memory_region *m_vram;
- uint8_t *m_plane[4];
- uint8_t m_read_latch[4];
- uint8_t *m_videoram;
- uint8_t *m_charA;
- uint8_t *m_charB;
-
- /* Registers */
- uint8_t m_misc_output;
- uint8_t m_feature_control;
-
- /* Attribute registers AR00 - AR14
- */
- struct {
- uint8_t index;
- uint8_t data[32];
- uint8_t index_write;
- } m_attribute;
-
- /* Sequencer registers SR00 - SR04
- */
- struct {
- uint8_t index;
- uint8_t data[8];
- } m_sequencer;
-
- /* Graphics controller registers GR00 - GR08
- */
- struct {
- uint8_t index;
- uint8_t data[16];
- } m_graphics_controller;
-
- uint8_t m_frame_cnt;
- uint8_t m_hsync;
- uint8_t m_vsync;
- uint8_t m_vblank;
- uint8_t m_display_enable;
- int m_video_mode;
- required_device<palette_device> m_palette;
+ crtc_ega_device *m_crtc_ega;
+
+ void install_banks();
+ void change_mode();
+ DECLARE_WRITE8_MEMBER(pc_ega8_3X0_w);
+ DECLARE_READ8_MEMBER(pc_ega8_3X0_r);
+
+ /* Video memory and related variables */
+ memory_region *m_vram;
+ uint8_t *m_plane[4];
+ uint8_t m_read_latch[4];
+ uint8_t *m_videoram;
+ uint8_t *m_charA;
+ uint8_t *m_charB;
+
+ /* Registers */
+ uint8_t m_misc_output;
+ uint8_t m_feature_control;
+
+ /* Attribute registers AR00 - AR14
+ */
+ struct {
+ uint8_t index;
+ uint8_t data[32];
+ uint8_t index_write;
+ } m_attribute;
+
+ /* Sequencer registers SR00 - SR04
+ */
+ struct {
+ uint8_t index;
+ uint8_t data[8];
+ } m_sequencer;
+
+ /* Graphics controller registers GR00 - GR08
+ */
+ struct {
+ uint8_t index;
+ uint8_t data[16];
+ } m_graphics_controller;
+
+ uint8_t m_frame_cnt;
+ uint8_t m_hsync;
+ uint8_t m_vsync;
+ uint8_t m_vblank;
+ uint8_t m_display_enable;
+ int m_video_mode;
+ required_device<palette_device> m_palette;
};
// device type definition
-extern const device_type ISA8_EGA;
+DECLARE_DEVICE_TYPE(ISA8_EGA, isa8_ega_device)
-#endif /* __ISA_EGA_H__ */
+#endif // MAME_BUS_ISA_EGA_H
diff --git a/src/devices/bus/isa/fdc.cpp b/src/devices/bus/isa/fdc.cpp
index 72495c68857..d5516ffad47 100644
--- a/src/devices/bus/isa/fdc.cpp
+++ b/src/devices/bus/isa/fdc.cpp
@@ -72,8 +72,8 @@ static MACHINE_CONFIG_FRAGMENT( cfg_superio )
MACHINE_CONFIG_END
-isa8_fdc_device::isa8_fdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+isa8_fdc_device::isa8_fdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_isa8_card_interface(mconfig, *this),
fdc(*this, "fdc")
{
@@ -115,7 +115,7 @@ void isa8_fdc_device::eop_w(int state)
fdc->tc_w(state == ASSERT_LINE);
}
-isa8_fdc_xt_device::isa8_fdc_xt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_XT, "ISA 8bits XT FDC hookup", tag, owner, clock, "isa8_fdc_xt", __FILE__)
+isa8_fdc_xt_device::isa8_fdc_xt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_XT, tag, owner, clock)
{
}
@@ -124,7 +124,7 @@ machine_config_constructor isa8_fdc_xt_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME(cfg_xt);
}
-isa8_fdc_at_device::isa8_fdc_at_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_AT, "ISA 8bits AT FDC hookup", tag, owner, clock, "isa8_fdc_at", __FILE__)
+isa8_fdc_at_device::isa8_fdc_at_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_AT, tag, owner, clock)
{
}
@@ -133,7 +133,7 @@ machine_config_constructor isa8_fdc_at_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME(cfg_at);
}
-isa8_fdc_smc_device::isa8_fdc_smc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_SMC, "ISA 8bits SMC FDC hookup", tag, owner, clock, "isa8_fdc_smc", __FILE__)
+isa8_fdc_smc_device::isa8_fdc_smc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_SMC, tag, owner, clock)
{
}
@@ -142,7 +142,7 @@ machine_config_constructor isa8_fdc_smc_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME(cfg_smc);
}
-isa8_fdc_ps2_device::isa8_fdc_ps2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_PS2, "ISA 8bits PS/2 FDC hookup", tag, owner, clock, "isa8_fdc_ps2", __FILE__)
+isa8_fdc_ps2_device::isa8_fdc_ps2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_PS2, tag, owner, clock)
{
}
@@ -151,7 +151,7 @@ machine_config_constructor isa8_fdc_ps2_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME(cfg_ps2);
}
-isa8_fdc_superio_device::isa8_fdc_superio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_SUPERIO, "ISA 8bits SUPERIO FDC hookup", tag, owner, clock, "isa8_fdc_superio", __FILE__)
+isa8_fdc_superio_device::isa8_fdc_superio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_SUPERIO, tag, owner, clock)
{
}
@@ -160,8 +160,8 @@ machine_config_constructor isa8_fdc_superio_device::device_mconfig_additions() c
return MACHINE_CONFIG_NAME(cfg_superio);
}
-const device_type ISA8_FDC_XT = device_creator<isa8_fdc_xt_device>;
-const device_type ISA8_FDC_AT = device_creator<isa8_fdc_at_device>;
-const device_type ISA8_FDC_SMC = device_creator<isa8_fdc_smc_device>;
-const device_type ISA8_FDC_PS2 = device_creator<isa8_fdc_ps2_device>;
-const device_type ISA8_FDC_SUPERIO = device_creator<isa8_fdc_superio_device>;
+DEFINE_DEVICE_TYPE(ISA8_FDC_XT, isa8_fdc_xt_device, "isa8_fdc_xt", "ISA 8bits XT FDC hookup")
+DEFINE_DEVICE_TYPE(ISA8_FDC_AT, isa8_fdc_at_device, "isa8_fdc_at", "ISA 8bits AT FDC hookup")
+DEFINE_DEVICE_TYPE(ISA8_FDC_SMC, isa8_fdc_smc_device, "isa8_fdc_smc", "ISA 8bits SMC FDC hookup")
+DEFINE_DEVICE_TYPE(ISA8_FDC_PS2, isa8_fdc_ps2_device, "isa8_fdc_ps2", "ISA 8bits PS/2 FDC hookup")
+DEFINE_DEVICE_TYPE(ISA8_FDC_SUPERIO, isa8_fdc_superio_device, "isa8_fdc_superio", "ISA 8bits SUPERIO FDC hookup")
diff --git a/src/devices/bus/isa/fdc.h b/src/devices/bus/isa/fdc.h
index bdcebdce2bd..0d9227a04e4 100644
--- a/src/devices/bus/isa/fdc.h
+++ b/src/devices/bus/isa/fdc.h
@@ -5,10 +5,10 @@
ISA 8 bit Floppy Disk Controller
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_FDC_H
+#define MAME_BUS_ISA_FDC_H
-#ifndef ISA_FDC_H
-#define ISA_FDC_H
+#pragma once
#include "isa.h"
#include "machine/upd765.h"
@@ -24,16 +24,14 @@ class isa8_fdc_device :
public device_isa8_card_interface
{
public:
- // construction/destruction
- isa8_fdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- required_device<pc_fdc_interface> fdc;
-
DECLARE_WRITE_LINE_MEMBER( irq_w );
DECLARE_WRITE_LINE_MEMBER( drq_w );
DECLARE_FLOPPY_FORMATS( floppy_formats );
protected:
+ // construction/destruction
+ isa8_fdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -41,6 +39,8 @@ protected:
virtual uint8_t dack_r(int line) override;
virtual void dack_w(int line, uint8_t data) override;
virtual void eop_w(int state) override;
+
+ required_device<pc_fdc_interface> fdc;
};
class isa8_fdc_xt_device : public isa8_fdc_device {
@@ -74,10 +74,10 @@ public:
};
// device type definition
-extern const device_type ISA8_FDC_XT;
-extern const device_type ISA8_FDC_AT;
-extern const device_type ISA8_FDC_SMC;
-extern const device_type ISA8_FDC_PS2;
-extern const device_type ISA8_FDC_SUPERIO;
+DECLARE_DEVICE_TYPE(ISA8_FDC_XT, isa8_fdc_xt_device)
+DECLARE_DEVICE_TYPE(ISA8_FDC_AT, isa8_fdc_at_device)
+DECLARE_DEVICE_TYPE(ISA8_FDC_SMC, isa8_fdc_smc_device)
+DECLARE_DEVICE_TYPE(ISA8_FDC_PS2, isa8_fdc_ps2_device)
+DECLARE_DEVICE_TYPE(ISA8_FDC_SUPERIO, isa8_fdc_superio_device)
-#endif /* ISA_FDC_H */
+#endif // MAME_BUS_ISA_FDC_H
diff --git a/src/devices/bus/isa/finalchs.cpp b/src/devices/bus/isa/finalchs.cpp
index 00ce6f31a92..00740d9f264 100644
--- a/src/devices/bus/isa/finalchs.cpp
+++ b/src/devices/bus/isa/finalchs.cpp
@@ -69,7 +69,7 @@ WRITE8_MEMBER( isa8_finalchs_device::finalchs_w )
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_FINALCHS = device_creator<isa8_finalchs_device>;
+DEFINE_DEVICE_TYPE(ISA8_FINALCHS, isa8_finalchs_device, "isa_finalchs", "Final Chess Card")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -90,9 +90,10 @@ machine_config_constructor isa8_finalchs_device::device_mconfig_additions() cons
//-------------------------------------------------
isa8_finalchs_device::isa8_finalchs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ISA8_FINALCHS, "Final Chess Card", tag, owner, clock, "finalchs", __FILE__),
- device_isa8_card_interface( mconfig, *this ), m_FCH_latch_data(0)
- {
+ : device_t(mconfig, ISA8_FINALCHS, tag, owner, clock)
+ , device_isa8_card_interface(mconfig, *this)
+ , m_FCH_latch_data(0)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/isa/finalchs.h b/src/devices/bus/isa/finalchs.h
index e105a8a0289..f287489cb3f 100644
--- a/src/devices/bus/isa/finalchs.h
+++ b/src/devices/bus/isa/finalchs.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Jonathan Gevaryahu
-#pragma once
+#ifndef MAME_BUS_ISA_FINALCHS_H
+#define MAME_BUS_ISA_FINALCHS_H
-#ifndef __ISA_FINALCHS_H__
-#define __ISA_FINALCHS_H__
+#pragma once
#include "isa.h"
@@ -18,32 +18,32 @@ class isa8_finalchs_device :
public device_isa8_card_interface
{
public:
- // construction/destruction
- isa8_finalchs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa8_finalchs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_READ8_MEMBER(finalchs_r);
- DECLARE_WRITE8_MEMBER(finalchs_w);
+ DECLARE_READ8_MEMBER(finalchs_r);
+ DECLARE_WRITE8_MEMBER(finalchs_w);
- DECLARE_WRITE8_MEMBER( io7ff8_write );
- DECLARE_READ8_MEMBER( io7ff8_read );
- DECLARE_READ8_MEMBER( io6000_read );
- DECLARE_WRITE8_MEMBER( io6000_write );
+ DECLARE_WRITE8_MEMBER( io7ff8_write );
+ DECLARE_READ8_MEMBER( io7ff8_read );
+ DECLARE_READ8_MEMBER( io6000_read );
+ DECLARE_WRITE8_MEMBER( io6000_write );
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- // internal state
- uint8_t m_FCH_latch_data;
+ // internal state
+ uint8_t m_FCH_latch_data;
};
// device type definition
-extern const device_type ISA8_FINALCHS;
+DECLARE_DEVICE_TYPE(ISA8_FINALCHS, isa8_finalchs_device)
-#endif /* __ISA_FINALCHS_H__ */
+#endif // MAME_BUS_ISA_FINALCHS_H
diff --git a/src/devices/bus/isa/gblaster.cpp b/src/devices/bus/isa/gblaster.cpp
index 9ff7d0d9f3c..59cafbd1226 100644
--- a/src/devices/bus/isa/gblaster.cpp
+++ b/src/devices/bus/isa/gblaster.cpp
@@ -78,7 +78,7 @@ WRITE8_MEMBER( isa8_gblaster_device::detect_w )
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_GAME_BLASTER = device_creator<isa8_gblaster_device>;
+DEFINE_DEVICE_TYPE(ISA8_GAME_BLASTER, isa8_gblaster_device, "isa_gblaster", "Game Blaster Sound Card")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -99,11 +99,11 @@ machine_config_constructor isa8_gblaster_device::device_mconfig_additions() cons
//-------------------------------------------------
isa8_gblaster_device::isa8_gblaster_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_GAME_BLASTER, "Game Blaster Sound Card", tag, owner, clock, "isa_gblaster", __FILE__),
- device_isa8_card_interface(mconfig, *this),
- m_saa1099_1(*this, "saa1099.1"),
- m_saa1099_2(*this, "saa1099.2"),
- detect_reg(0xFF)
+ device_t(mconfig, ISA8_GAME_BLASTER, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this),
+ m_saa1099_1(*this, "saa1099.1"),
+ m_saa1099_2(*this, "saa1099.2"),
+ detect_reg(0xFF)
{
}
diff --git a/src/devices/bus/isa/gblaster.h b/src/devices/bus/isa/gblaster.h
index 43aa55107b6..32cebdaa0ba 100644
--- a/src/devices/bus/isa/gblaster.h
+++ b/src/devices/bus/isa/gblaster.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
-#pragma once
+#ifndef MAME_BUS_ISA_GBLASTER_H
+#define MAME_BUS_ISA_GBLASTER_H
-#ifndef __ISA_GAME_BLASTER_H__
-#define __ISA_GAME_BLASTER_H__
+#pragma once
#include "isa.h"
#include "sound/saa1099.h"
@@ -19,30 +19,30 @@ class isa8_gblaster_device :
public device_isa8_card_interface
{
public:
- // construction/destruction
- isa8_gblaster_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa8_gblaster_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
- DECLARE_READ8_MEMBER(saa1099_16_r);
- DECLARE_WRITE8_MEMBER(saa1099_1_16_w);
- DECLARE_WRITE8_MEMBER(saa1099_2_16_w);
- DECLARE_READ8_MEMBER(detect_r);
- DECLARE_WRITE8_MEMBER(detect_w);
+ DECLARE_READ8_MEMBER(saa1099_16_r);
+ DECLARE_WRITE8_MEMBER(saa1099_1_16_w);
+ DECLARE_WRITE8_MEMBER(saa1099_2_16_w);
+ DECLARE_READ8_MEMBER(detect_r);
+ DECLARE_WRITE8_MEMBER(detect_w);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- // internal state
- required_device<saa1099_device> m_saa1099_1;
- required_device<saa1099_device> m_saa1099_2;
- uint8_t detect_reg;
+ // internal state
+ required_device<saa1099_device> m_saa1099_1;
+ required_device<saa1099_device> m_saa1099_2;
+ uint8_t detect_reg;
};
// device type definition
-extern const device_type ISA8_GAME_BLASTER;
+DECLARE_DEVICE_TYPE(ISA8_GAME_BLASTER, isa8_gblaster_device)
-#endif /* __ISA_GAME_BLASTER_H__ */
+#endif // MAME_BUS_ISA_GBLASTER_H
diff --git a/src/devices/bus/isa/gus.cpp b/src/devices/bus/isa/gus.cpp
index a81a2f7a57f..157c1d13ff2 100644
--- a/src/devices/bus/isa/gus.cpp
+++ b/src/devices/bus/isa/gus.cpp
@@ -15,6 +15,16 @@
#include "speaker.h"
+#define IRQ_2XF 0x00
+#define IRQ_MIDI_TRANSMIT 0x01
+#define IRQ_MIDI_RECEIVE 0x02
+#define IRQ_TIMER1 0x04
+#define IRQ_TIMER2 0x08
+#define IRQ_SB 0x10
+#define IRQ_WAVETABLE 0x20
+#define IRQ_VOLUME_RAMP 0x40
+#define IRQ_DRAM_TC_DMA 0x80
+
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
@@ -36,8 +46,8 @@ static const uint16_t volume_ramp_table[4] =
1, 8, 64, 512
};
-const device_type GGF1 = device_creator<gf1_device>;
-const device_type ISA16_GUS = device_creator<isa16_gus_device>;
+DEFINE_DEVICE_TYPE(GGF1, gf1_device, "gf1", "Gravis GF1")
+DEFINE_DEVICE_TYPE(ISA16_GUS, isa16_gus_device, "isa_gus", "Gravis Ultrasound")
#ifdef LOG_SOUND
FILE* f;
@@ -354,8 +364,12 @@ void gf1_device::sound_stream_update(sound_stream &stream, stream_sample_t **inp
//-------------------------------------------------
gf1_device::gf1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- acia6850_device(mconfig, GGF1, "Gravis GF1", tag, owner, clock, "gf1", __FILE__),
- device_sound_interface( mconfig, *this ), m_dma_dram_ctrl(0), m_dma_start_addr(0), m_dram_addr(0), m_timer_ctrl(0), m_timer1_count(0), m_timer2_count(0), m_timer1_value(0), m_timer2_value(0), m_sampling_freq(0), m_sampling_ctrl(0), m_joy_trim_dac(0), m_reset(0), m_active_voices(0), m_irq_source(0), m_stream(nullptr), m_timer1(nullptr), m_timer2(nullptr), m_dmatimer(nullptr), m_voltimer(nullptr), m_current_voice(0), m_current_reg(0), m_adlib_cmd(0), m_mix_ctrl(0), m_gf1_irq(0), m_midi_irq(0), m_dma_channel1(0), m_dma_channel2(0), m_irq_combine(0), m_dma_combine(0), m_adlib_timer_cmd(0), m_adlib_timer1_enable(0), m_adlib_timer2_enable(0), m_adlib_status(0), m_adlib_data(0), m_voice_irq_ptr(0), m_voice_irq_current(0), m_dma_16bit(0), m_statread(0), m_sb_data_2xc(0), m_sb_data_2xe(0), m_reg_ctrl(0), m_fake_adlib_status(0), m_dma_current(0), m_txirq(0), m_rxirq(0),
+ acia6850_device(mconfig, GGF1, tag, owner, clock),
+ device_sound_interface(mconfig, *this),
+ m_dma_dram_ctrl(0), m_dma_start_addr(0), m_dram_addr(0), m_timer_ctrl(0), m_timer1_count(0), m_timer2_count(0), m_timer1_value(0), m_timer2_value(0), m_sampling_freq(0), m_sampling_ctrl(0), m_joy_trim_dac(0), m_reset(0), m_active_voices(0), m_irq_source(0),
+ m_stream(nullptr),
+ m_timer1(nullptr), m_timer2(nullptr), m_dmatimer(nullptr), m_voltimer(nullptr),
+ m_current_voice(0), m_current_reg(0), m_adlib_cmd(0), m_mix_ctrl(0), m_gf1_irq(0), m_midi_irq(0), m_dma_channel1(0), m_dma_channel2(0), m_irq_combine(0), m_dma_combine(0), m_adlib_timer_cmd(0), m_adlib_timer1_enable(0), m_adlib_timer2_enable(0), m_adlib_status(0), m_adlib_data(0), m_voice_irq_ptr(0), m_voice_irq_current(0), m_dma_16bit(0), m_statread(0), m_sb_data_2xc(0), m_sb_data_2xe(0), m_reg_ctrl(0), m_fake_adlib_status(0), m_dma_current(0), m_txirq(0), m_rxirq(0),
m_txirq_handler(*this),
m_rxirq_handler(*this),
m_wave_irq_handler(*this),
@@ -1277,9 +1291,10 @@ ioport_constructor isa16_gus_device::device_input_ports() const
isa16_gus_device::isa16_gus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_GUS, "Gravis Ultrasound", tag, owner, clock, "isa_gus", __FILE__),
- device_isa16_card_interface( mconfig, *this ),
- m_gf1(*this, "gf1"), m_irq_status(0)
+ device_t(mconfig, ISA16_GUS, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_gf1(*this, "gf1"),
+ m_irq_status(0)
{
}
diff --git a/src/devices/bus/isa/gus.h b/src/devices/bus/isa/gus.h
index bf1d1cb852e..fe0103734d5 100644
--- a/src/devices/bus/isa/gus.h
+++ b/src/devices/bus/isa/gus.h
@@ -37,10 +37,10 @@
* 0x3X6: Data port (write only)
*/
-#pragma once
+#ifndef MAME_BUS_ISA_GUS_H
+#define MAME_BUS_ISA_GUS_H
-#ifndef __ISA_GUS_H__
-#define __ISA_GUS_H__
+#pragma once
#include "isa.h"
#include "machine/6850acia.h"
@@ -86,53 +86,43 @@
#define GF1_CLOCK 9878400
-#define IRQ_2XF 0x00
-#define IRQ_MIDI_TRANSMIT 0x01
-#define IRQ_MIDI_RECEIVE 0x02
-#define IRQ_TIMER1 0x04
-#define IRQ_TIMER2 0x08
-#define IRQ_SB 0x10
-#define IRQ_WAVETABLE 0x20
-#define IRQ_VOLUME_RAMP 0x40
-#define IRQ_DRAM_TC_DMA 0x80
-
-struct gus_voice
-{
- uint8_t voice_ctrl;
- uint16_t freq_ctrl;
- uint32_t start_addr;
- uint32_t end_addr;
- uint8_t vol_ramp_rate;
- uint8_t vol_ramp_start;
- uint8_t vol_ramp_end;
- uint16_t current_vol;
- uint32_t current_addr;
- uint8_t pan_position;
- uint8_t vol_ramp_ctrl;
- uint32_t vol_count;
- bool rollover;
- int16_t sample; // current sample data
-};
-
class gf1_device :
public acia6850_device,
public device_sound_interface
{
public:
+ struct gus_voice
+ {
+ uint8_t voice_ctrl;
+ uint16_t freq_ctrl;
+ uint32_t start_addr;
+ uint32_t end_addr;
+ uint8_t vol_ramp_rate;
+ uint8_t vol_ramp_start;
+ uint8_t vol_ramp_end;
+ uint16_t current_vol;
+ uint32_t current_addr;
+ uint8_t pan_position;
+ uint8_t vol_ramp_ctrl;
+ uint32_t vol_count;
+ bool rollover;
+ int16_t sample; // current sample data
+ };
+
// construction/destruction
gf1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_txirq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_txirq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rxirq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_rxirq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_wave_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_wave_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ramp_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_ramp_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_timer1_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_timer1_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_timer2_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_timer2_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_sb_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_sb_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_dma_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_drq1_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_drq1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_drq2_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_drq2_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_nmi_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_nmi_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_txirq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_txirq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rxirq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_rxirq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_wave_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_wave_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ramp_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_ramp_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_timer1_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_timer1_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_timer2_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_timer2_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sb_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_sb_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_irq_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_dma_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq1_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_drq1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq2_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_drq2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb) { return downcast<gf1_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
// current IRQ/DMA channel getters
uint8_t gf1_irq() { if(m_gf1_irq != 0) return m_gf1_irq; else return m_midi_irq; } // workaround for win95 loading dumb values
@@ -167,6 +157,7 @@ public:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+protected:
// voice-specific registers
gus_voice m_voice[32];
@@ -192,7 +183,6 @@ public:
std::vector<uint8_t> m_wave_ram;
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -316,7 +306,7 @@ private:
};
// device type definition
-extern const device_type GGF1;
-extern const device_type ISA16_GUS;
+DECLARE_DEVICE_TYPE(GF1, gf1_device)
+DECLARE_DEVICE_TYPE(ISA16_GUS, isa16_gus_device)
-#endif /* __ISA_GUS_H__ */
+#endif // MAME_BUS_ISA_GUS_H
diff --git a/src/devices/bus/isa/hdc.cpp b/src/devices/bus/isa/hdc.cpp
index 6efe2dbfde0..52a8bb34e0c 100644
--- a/src/devices/bus/isa/hdc.cpp
+++ b/src/devices/bus/isa/hdc.cpp
@@ -157,37 +157,36 @@ static INPUT_PORTS_START( isa_hdc )
PORT_DIPSETTING( 0x00, DEF_STR(No) )
INPUT_PORTS_END
-const device_type XT_HDC = device_creator<xt_hdc_device>;
-const device_type EC1841_HDC = device_creator<ec1841_device>;
-const device_type ST11M_HDC = device_creator<st11m_device>;
+DEFINE_DEVICE_TYPE(XT_HDC, xt_hdc_device, "xt_hdc", "Generic PC-XT Fixed Disk Controller")
+DEFINE_DEVICE_TYPE(EC1841_HDC, ec1841_device, "ec1481", "EX1841 Fixed Disk Controller")
+DEFINE_DEVICE_TYPE(ST11M_HDC, st11m_device, "st11m", "Seagate ST11M Fixed Disk Controller")
xt_hdc_device::xt_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, XT_HDC, "Generic PC-XT Fixed Disk Controller", tag, owner, clock, "xt_hdc", __FILE__), buffer_ptr(nullptr), csb(0), status(0), error(0), m_current_cmd(0),
- m_irq_handler(*this),
- m_drq_handler(*this), drv(0), timer(nullptr), data_cnt(0), hdc_control(0), hdcdma_src(nullptr), hdcdma_dst(nullptr), hdcdma_read(0), hdcdma_write(0), hdcdma_size(0)
+ xt_hdc_device(mconfig, XT_HDC, tag, owner, clock)
{
m_type = STANDARD;
}
-xt_hdc_device::xt_hdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source), buffer_ptr(nullptr), csb(0), status(0), error(0), m_type(0), m_current_cmd(0),
- m_irq_handler(*this),
- m_drq_handler(*this), drv(0), timer(nullptr), data_cnt(0), hdc_control(0), hdcdma_src(nullptr), hdcdma_dst(nullptr), hdcdma_read(0), hdcdma_write(0), hdcdma_size(0)
+xt_hdc_device::xt_hdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ buffer_ptr(nullptr), csb(0), status(0), error(0), m_type(0), m_current_cmd(0),
+ m_irq_handler(*this),
+ m_drq_handler(*this), drv(0), timer(nullptr), data_cnt(0), hdc_control(0), hdcdma_src(nullptr), hdcdma_dst(nullptr), hdcdma_read(0), hdcdma_write(0), hdcdma_size(0)
{
}
ec1841_device::ec1841_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- xt_hdc_device(mconfig, EC1841_HDC, "EC1841 Fixed Disk Controller", tag, owner, clock, "ec1481", __FILE__),
- m_irq_handler(*this),
- m_drq_handler(*this)
+ xt_hdc_device(mconfig, EC1841_HDC, tag, owner, clock),
+ m_irq_handler(*this),
+ m_drq_handler(*this)
{
m_type = EC1841;
}
st11m_device::st11m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- xt_hdc_device(mconfig, ST11M_HDC, "Seagate ST11M Fixed Disk Controller", tag, owner, clock, "st11m", __FILE__),
- m_irq_handler(*this),
- m_drq_handler(*this)
+ xt_hdc_device(mconfig, ST11M_HDC, tag, owner, clock),
+ m_irq_handler(*this),
+ m_drq_handler(*this)
{
m_type = ST11M;
}
@@ -928,8 +927,8 @@ void xt_hdc_device::set_ready()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_HDC = device_creator<isa8_hdc_device>;
-const device_type ISA8_HDC_EC1841 = device_creator<isa8_hdc_ec1841_device>;
+DEFINE_DEVICE_TYPE(ISA8_HDC, isa8_hdc_device, "isa_hdc", "Fixed Disk Controller Card")
+DEFINE_DEVICE_TYPE(ISA8_HDC_EC1841, isa8_hdc_ec1841_device, "isa_hdc_ec1841", "EC1841 HDC Card")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -973,22 +972,20 @@ ioport_constructor isa8_hdc_device::device_input_ports() const
//-------------------------------------------------
isa8_hdc_device::isa8_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_HDC, "Fixed Disk Controller Card", tag, owner, clock, "hdc", __FILE__),
- device_isa8_card_interface(mconfig, *this),
- m_hdc(*this,"hdc"), dip(0)
+ isa8_hdc_device(mconfig, ISA8_HDC, tag, owner, clock)
{
}
-isa8_hdc_device::isa8_hdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_isa8_card_interface(mconfig, *this),
- m_hdc(*this,"hdc"), dip(0)
+isa8_hdc_device::isa8_hdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this),
+ m_hdc(*this,"hdc"), dip(0)
{
}
isa8_hdc_ec1841_device::isa8_hdc_ec1841_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_hdc_device( mconfig, ISA8_HDC_EC1841, "EC1841 HDC", tag, owner, clock, "hdc_ec1841", __FILE__),
- m_hdc(*this,"hdc")
+ isa8_hdc_device( mconfig, ISA8_HDC_EC1841, tag, owner, clock),
+ m_hdc(*this,"hdc")
{
}
diff --git a/src/devices/bus/isa/hdc.h b/src/devices/bus/isa/hdc.h
index 52c190b3796..b631fc91818 100644
--- a/src/devices/bus/isa/hdc.h
+++ b/src/devices/bus/isa/hdc.h
@@ -5,10 +5,10 @@
ISA 8 bit XT Hard Disk Controller
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_HDC_H
+#define MAME_BUS_ISA_HDC_H
-#ifndef ISA_HDC_H
-#define ISA_HDC_H
+#pragma once
#include "isa.h"
#include "imagedev/harddriv.h"
@@ -31,10 +31,9 @@ class xt_hdc_device :
public:
// construction/destruction
xt_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- xt_hdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<xt_hdc_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_handler(device_t &device, _Object object) { return downcast<xt_hdc_device &>(device).m_drq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<xt_hdc_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb) { return downcast<xt_hdc_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); }
int dack_r();
int dack_rs();
@@ -53,6 +52,8 @@ public:
bool install_rom() { return (m_type != EC1841); }
protected:
+ xt_hdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -132,9 +133,9 @@ protected:
devcb_write_line m_drq_handler;
};
-extern const device_type XT_HDC;
-extern const device_type EC1841_HDC;
-extern const device_type ST11M_HDC;
+DECLARE_DEVICE_TYPE(XT_HDC, xt_hdc_device)
+DECLARE_DEVICE_TYPE(EC1841_HDC, ec1841_device)
+DECLARE_DEVICE_TYPE(ST11M_HDC, st11m_device)
// ======================> isa8_hdc_device
@@ -143,30 +144,32 @@ class isa8_hdc_device :
public device_isa8_card_interface
{
public:
- // construction/destruction
- isa8_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- isa8_hdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- DECLARE_READ8_MEMBER(pc_hdc_r);
- DECLARE_WRITE8_MEMBER(pc_hdc_w);
- DECLARE_WRITE_LINE_MEMBER(irq_w);
- DECLARE_WRITE_LINE_MEMBER(drq_w);
- required_device<xt_hdc_device> m_hdc;
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual ioport_constructor device_input_ports() const override;
+ // construction/destruction
+ isa8_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ DECLARE_READ8_MEMBER(pc_hdc_r);
+ DECLARE_WRITE8_MEMBER(pc_hdc_w);
+ DECLARE_WRITE_LINE_MEMBER(irq_w);
+ DECLARE_WRITE_LINE_MEMBER(drq_w);
+ required_device<xt_hdc_device> m_hdc;
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual ioport_constructor device_input_ports() const override;
+
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ isa8_hdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
public:
- virtual uint8_t dack_r(int line) override;
- virtual void dack_w(int line,uint8_t data) override;
- uint8_t pc_hdc_dipswitch_r();
+ virtual uint8_t dack_r(int line) override;
+ virtual void dack_w(int line,uint8_t data) override;
+ uint8_t pc_hdc_dipswitch_r();
- int dip; /* dip switches */
+ int dip; /* dip switches */
};
@@ -182,7 +185,7 @@ public:
};
// device type definition
-extern const device_type ISA8_HDC;
-extern const device_type ISA8_HDC_EC1841;
+DECLARE_DEVICE_TYPE(ISA8_HDC, isa8_hdc_device)
+DECLARE_DEVICE_TYPE(ISA8_HDC_EC1841, isa8_hdc_ec1841_device)
-#endif /* ISA_HDC_H */
+#endif // MAME_BUS_ISA_HDC_H
diff --git a/src/devices/bus/isa/ibm_mfc.cpp b/src/devices/bus/isa/ibm_mfc.cpp
index 2b1b5f17fcb..71fb83d93ef 100644
--- a/src/devices/bus/isa/ibm_mfc.cpp
+++ b/src/devices/bus/isa/ibm_mfc.cpp
@@ -63,7 +63,7 @@ enum
// Globals
//-------------------------------------------------
-const device_type ISA8_IBM_MFC = device_creator<isa8_ibm_mfc_device>;
+DEFINE_DEVICE_TYPE(ISA8_IBM_MFC, isa8_ibm_mfc_device, "ibm_mfc", "IBM PC Music Feature Card")
//-------------------------------------------------
@@ -450,14 +450,15 @@ const tiny_rom_entry *isa8_ibm_mfc_device::device_rom_region() const
//-------------------------------------------------
isa8_ibm_mfc_device::isa8_ibm_mfc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_IBM_MFC, "IBM PC Music Feature Card", tag, owner, clock, "ibm_mfc", __FILE__),
- device_isa8_card_interface(mconfig, *this), m_tcr(0), m_pc_ppi_c(0), m_z80_ppi_c(0), m_pc_irq_state(0), m_z80_irq_state(0),
- m_cpu(*this, "ibm_mfc"),
- m_ym2151(*this, "ym2151"),
- m_d8253(*this, "d8253"),
- m_d71051(*this, "d71051"),
- m_d71055c_0(*this, "d71055c_0"),
- m_d71055c_1(*this, "d71055c_1")
+ device_t(mconfig, ISA8_IBM_MFC, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this),
+ m_tcr(0), m_pc_ppi_c(0), m_z80_ppi_c(0), m_pc_irq_state(0), m_z80_irq_state(0),
+ m_cpu(*this, "ibm_mfc"),
+ m_ym2151(*this, "ym2151"),
+ m_d8253(*this, "d8253"),
+ m_d71051(*this, "d71051"),
+ m_d71055c_0(*this, "d71055c_0"),
+ m_d71055c_1(*this, "d71055c_1")
{
}
diff --git a/src/devices/bus/isa/ibm_mfc.h b/src/devices/bus/isa/ibm_mfc.h
index a315a55dc72..019f89d5da2 100644
--- a/src/devices/bus/isa/ibm_mfc.h
+++ b/src/devices/bus/isa/ibm_mfc.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_IBM_MFC_H
+#define MAME_BUS_ISA_IBM_MFC_H
-#ifndef __ISA_IBM_MUSIC_FEATURE_CARD_H__
-#define __ISA_IBM_MUSIC_FEATURE_CARD_H__
+#pragma once
#include "isa.h"
@@ -84,6 +84,6 @@ private:
// Device type definition
-extern const device_type ISA8_IBM_MFC;
+DECLARE_DEVICE_TYPE(ISA8_IBM_MFC, isa8_ibm_mfc_device)
-#endif /* __ISA_IBM_MUSIC_FEATURE_CARD_H__ */
+#endif // MAME_BUS_ISA_IBM_MFC_H
diff --git a/src/devices/bus/isa/ide.cpp b/src/devices/bus/isa/ide.cpp
index d932543a586..0d5ee8cd352 100644
--- a/src/devices/bus/isa/ide.cpp
+++ b/src/devices/bus/isa/ide.cpp
@@ -73,7 +73,7 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA16_IDE = device_creator<isa16_ide_device>;
+DEFINE_DEVICE_TYPE(ISA16_IDE, isa16_ide_device, "isa_ide", "IDE Fixed Drive Adapter")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -103,10 +103,10 @@ ioport_constructor isa16_ide_device::device_input_ports() const
//-------------------------------------------------
isa16_ide_device::isa16_ide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ISA16_IDE, "IDE Fixed Drive Adapter", tag, owner, clock, "isa_ide", __FILE__),
- device_isa16_card_interface( mconfig, *this ),
- m_is_primary(true),
- m_ide(*this, "ide")
+ : device_t(mconfig, ISA16_IDE, tag, owner, clock)
+ , device_isa16_card_interface(mconfig, *this)
+ , m_is_primary(true)
+ , m_ide(*this, "ide")
{
}
diff --git a/src/devices/bus/isa/ide.h b/src/devices/bus/isa/ide.h
index 4957890c0ba..6f34b144461 100644
--- a/src/devices/bus/isa/ide.h
+++ b/src/devices/bus/isa/ide.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
-#pragma once
+#ifndef MAME_BUS_ISA_IDE_H
+#define MAME_BUS_ISA_IDE_H
-#ifndef __ISA_IDE_H__
-#define __ISA_IDE_H__
+#pragma once
#include "isa.h"
#include "machine/idectrl.h"
@@ -44,6 +44,6 @@ private:
// device type definition
-extern const device_type ISA16_IDE;
+DECLARE_DEVICE_TYPE(ISA16_IDE, isa16_ide_device)
-#endif /* __ISA_IDE_H__ */
+#endif // MAME_BUS_ISA_IDE_H
diff --git a/src/devices/bus/isa/isa.cpp b/src/devices/bus/isa/isa.cpp
index b624df933d5..263d4452f98 100644
--- a/src/devices/bus/isa/isa.cpp
+++ b/src/devices/bus/isa/isa.cpp
@@ -14,7 +14,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_SLOT = device_creator<isa8_slot_device>;
+DEFINE_DEVICE_TYPE(ISA8_SLOT, isa8_slot_device, "isa8_slot", "8-bit ISA slot")
//**************************************************************************
// LIVE DEVICE
@@ -24,16 +24,14 @@ const device_type ISA8_SLOT = device_creator<isa8_slot_device>;
// isa8_slot_device - constructor
//-------------------------------------------------
isa8_slot_device::isa8_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_SLOT, "ISA8_SLOT", tag, owner, clock, "isa8_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_owner(nullptr),
- m_isa_tag(nullptr)
+ isa8_slot_device(mconfig, ISA8_SLOT, tag, owner, clock)
{
}
-isa8_slot_device::isa8_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_interface(mconfig, *this), m_owner(nullptr), m_isa_tag(nullptr)
+isa8_slot_device::isa8_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_owner(nullptr), m_isa_tag(nullptr)
{
}
@@ -64,7 +62,7 @@ void isa8_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA16_SLOT = device_creator<isa16_slot_device>;
+DEFINE_DEVICE_TYPE(ISA16_SLOT, isa16_slot_device, "isa16_slot", "16-bit ISA slot")
//**************************************************************************
// LIVE DEVICE
@@ -74,7 +72,7 @@ const device_type ISA16_SLOT = device_creator<isa16_slot_device>;
// isa16_slot_device - constructor
//-------------------------------------------------
isa16_slot_device::isa16_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_slot_device(mconfig, ISA16_SLOT, "ISA16_SLOT", tag, owner, clock, "isa16_slot", __FILE__)
+ isa8_slot_device(mconfig, ISA16_SLOT, tag, owner, clock)
{
}
@@ -100,7 +98,7 @@ void isa16_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8 = device_creator<isa8_device>;
+DEFINE_DEVICE_TYPE(ISA8, isa8_device, "isa8", "8-bit ISA bus")
void isa8_device::static_set_cputag(device_t &device, const char *tag)
{
@@ -124,50 +122,30 @@ void isa8_device::static_set_custom_spaces(device_t &device)
//-------------------------------------------------
isa8_device::isa8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8, "ISA8", tag, owner, clock, "isa8", __FILE__),
- device_memory_interface(mconfig, *this),
- m_program_config("ISA 8-bit program", ENDIANNESS_LITTLE, 8, 24, 0, nullptr),
- m_io_config("ISA 8-bit I/O", ENDIANNESS_LITTLE, 8, 16, 0, nullptr),
- m_program16_config("ISA 16-bit program", ENDIANNESS_LITTLE, 16, 24, 0, nullptr),
- m_io16_config("ISA 16-bit I/O", ENDIANNESS_LITTLE, 16, 16, 0, nullptr), m_maincpu(nullptr), m_iospace(nullptr), m_prgspace(nullptr),
- m_out_irq2_cb(*this),
- m_out_irq3_cb(*this),
- m_out_irq4_cb(*this),
- m_out_irq5_cb(*this),
- m_out_irq6_cb(*this),
- m_out_irq7_cb(*this),
- m_out_drq1_cb(*this),
- m_out_drq2_cb(*this),
- m_out_drq3_cb(*this), m_cputag(nullptr),
- m_write_iochck(*this)
-{
- for(int i=0;i<8;i++)
- {
- m_dma_device[i] = nullptr;
- m_dma_eop[i] = false;
- }
- m_nmi_enabled = false;
- m_iowidth = m_prgwidth = 0;
- m_allocspaces = false;
-}
-
-isa8_device::isa8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_memory_interface(mconfig, *this),
- m_program_config("ISA 8-bit program", ENDIANNESS_LITTLE, 8, 24, 0, nullptr),
- m_io_config("ISA 8-bit I/O", ENDIANNESS_LITTLE, 8, 16, 0, nullptr),
- m_program16_config("ISA 16-bit program", ENDIANNESS_LITTLE, 16, 24, 0, nullptr),
- m_io16_config("ISA 16-bit I/O", ENDIANNESS_LITTLE, 16, 16, 0, nullptr), m_maincpu(nullptr), m_iospace(nullptr), m_prgspace(nullptr),
- m_out_irq2_cb(*this),
- m_out_irq3_cb(*this),
- m_out_irq4_cb(*this),
- m_out_irq5_cb(*this),
- m_out_irq6_cb(*this),
- m_out_irq7_cb(*this),
- m_out_drq1_cb(*this),
- m_out_drq2_cb(*this),
- m_out_drq3_cb(*this), m_cputag(nullptr),
- m_write_iochck(*this)
+ isa8_device(mconfig, ISA8, tag, owner, clock)
+{
+}
+
+isa8_device::isa8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_memory_interface(mconfig, *this),
+ m_program_config("ISA 8-bit program", ENDIANNESS_LITTLE, 8, 24, 0, nullptr),
+ m_io_config("ISA 8-bit I/O", ENDIANNESS_LITTLE, 8, 16, 0, nullptr),
+ m_program16_config("ISA 16-bit program", ENDIANNESS_LITTLE, 16, 24, 0, nullptr),
+ m_io16_config("ISA 16-bit I/O", ENDIANNESS_LITTLE, 16, 16, 0, nullptr),
+ m_maincpu(nullptr),
+ m_iospace(nullptr),
+ m_prgspace(nullptr),
+ m_out_irq2_cb(*this),
+ m_out_irq3_cb(*this),
+ m_out_irq4_cb(*this),
+ m_out_irq5_cb(*this),
+ m_out_irq6_cb(*this),
+ m_out_irq7_cb(*this),
+ m_out_drq1_cb(*this),
+ m_out_drq2_cb(*this),
+ m_out_drq3_cb(*this), m_cputag(nullptr),
+ m_write_iochck(*this)
{
for(int i=0;i<8;i++)
{
@@ -444,23 +422,23 @@ void device_isa8_card_interface::set_isa_device()
}
-const device_type ISA16 = device_creator<isa16_device>;
+DEFINE_DEVICE_TYPE(ISA16, isa16_device, "isa16", "16-bit ISA bus")
//-------------------------------------------------
// isa16_device - constructor
//-------------------------------------------------
isa16_device::isa16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_device(mconfig, ISA16, "ISA16", tag, owner, clock, "isa16", __FILE__),
- m_out_irq10_cb(*this),
- m_out_irq11_cb(*this),
- m_out_irq12_cb(*this),
- m_out_irq14_cb(*this),
- m_out_irq15_cb(*this),
- m_out_drq0_cb(*this),
- m_out_drq5_cb(*this),
- m_out_drq6_cb(*this),
- m_out_drq7_cb(*this)
+ isa8_device(mconfig, ISA16, tag, owner, clock),
+ m_out_irq10_cb(*this),
+ m_out_irq11_cb(*this),
+ m_out_irq12_cb(*this),
+ m_out_irq14_cb(*this),
+ m_out_irq15_cb(*this),
+ m_out_drq0_cb(*this),
+ m_out_drq5_cb(*this),
+ m_out_drq6_cb(*this),
+ m_out_drq7_cb(*this)
{
}
diff --git a/src/devices/bus/isa/isa.h b/src/devices/bus/isa/isa.h
index 4ba5b764d24..36e949fc76f 100644
--- a/src/devices/bus/isa/isa.h
+++ b/src/devices/bus/isa/isa.h
@@ -62,10 +62,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_ISA_H
+#define MAME_BUS_ISA_ISA_H
-#ifndef __ISA_H__
-#define __ISA_H__
+#pragma once
@@ -162,21 +162,23 @@ class isa8_slot_device : public device_t,
public:
// construction/destruction
isa8_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- isa8_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// device-level overrides
virtual void device_start() override;
// inline configuration
static void static_set_isa8_slot(device_t &device, device_t *owner, const char *isa_tag);
+
protected:
+ isa8_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// configuration
device_t *m_owner;
const char *m_isa_tag;
};
// device type definition
-extern const device_type ISA8_SLOT;
+DECLARE_DEVICE_TYPE(ISA8_SLOT, isa8_slot_device)
class device_isa8_card_interface;
// ======================> isa8_device
@@ -186,20 +188,19 @@ class isa8_device : public device_t,
public:
// construction/destruction
isa8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- isa8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// inline configuration
static void static_set_cputag(device_t &device, const char *tag);
static void static_set_custom_spaces(device_t &device);
- template<class _iochck> devcb_base &set_iochck_callback(_iochck iochck) { return m_write_iochck.set_callback(iochck); }
- template<class _Object> static devcb_base &set_out_irq2_callback(device_t &device, _Object object) { return downcast<isa8_device &>(device).m_out_irq2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq3_callback(device_t &device, _Object object) { return downcast<isa8_device &>(device).m_out_irq3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq4_callback(device_t &device, _Object object) { return downcast<isa8_device &>(device).m_out_irq4_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq5_callback(device_t &device, _Object object) { return downcast<isa8_device &>(device).m_out_irq5_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq6_callback(device_t &device, _Object object) { return downcast<isa8_device &>(device).m_out_irq6_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq7_callback(device_t &device, _Object object) { return downcast<isa8_device &>(device).m_out_irq7_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_drq1_callback(device_t &device, _Object object) { return downcast<isa8_device &>(device).m_out_drq1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_drq2_callback(device_t &device, _Object object) { return downcast<isa8_device &>(device).m_out_drq2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_drq3_callback(device_t &device, _Object object) { return downcast<isa8_device &>(device).m_out_drq3_cb.set_callback(object); }
+ template <class Object> devcb_base &set_iochck_callback(Object &&cb) { return m_write_iochck.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq3_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq5_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq6_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq6_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq7_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_irq7_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_drq1_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_drq2_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_drq3_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq3_cb.set_callback(std::forward<Object>(cb)); }
// for ISA8, put the 8-bit configs in the primary slots and the 16-bit configs in the secondary
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override
@@ -260,6 +261,8 @@ public:
const address_space_config m_program_config, m_io_config, m_program16_config, m_io16_config;
protected:
+ isa8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
void install_space(address_spacenum spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler);
// device-level overrides
@@ -295,7 +298,7 @@ private:
// device type definition
-extern const device_type ISA8;
+DECLARE_DEVICE_TYPE(ISA8, isa8_device)
// ======================> device_isa8_card_interface
@@ -303,9 +306,9 @@ extern const device_type ISA8;
class device_isa8_card_interface : public device_slot_card_interface
{
friend class isa8_device;
+ template <class ElementType> friend class simple_list;
public:
// construction/destruction
- device_isa8_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_isa8_card_interface();
device_isa8_card_interface *next() const { return m_next; }
@@ -318,9 +321,14 @@ public:
// inline configuration
static void static_set_isabus(device_t &device, device_t *isa_device);
+
public:
+ device_isa8_card_interface(const machine_config &mconfig, device_t &device);
+
isa8_device *m_isa;
device_t *m_isa_dev;
+
+private:
device_isa8_card_interface *m_next;
};
@@ -340,7 +348,7 @@ public:
// device type definition
-extern const device_type ISA16_SLOT;
+DECLARE_DEVICE_TYPE(ISA16_SLOT, isa16_slot_device)
// ======================> isa16_device
class isa16_device : public isa8_device
@@ -349,15 +357,15 @@ public:
// construction/destruction
isa16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_irq10_callback(device_t &device, _Object object) { return downcast<isa16_device &>(device).m_out_irq10_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq11_callback(device_t &device, _Object object) { return downcast<isa16_device &>(device).m_out_irq11_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq12_callback(device_t &device, _Object object) { return downcast<isa16_device &>(device).m_out_irq12_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq14_callback(device_t &device, _Object object) { return downcast<isa16_device &>(device).m_out_irq14_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq15_callback(device_t &device, _Object object) { return downcast<isa16_device &>(device).m_out_irq15_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_drq0_callback(device_t &device, _Object object) { return downcast<isa16_device &>(device).m_out_drq0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_drq5_callback(device_t &device, _Object object) { return downcast<isa16_device &>(device).m_out_drq5_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_drq6_callback(device_t &device, _Object object) { return downcast<isa16_device &>(device).m_out_drq6_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_drq7_callback(device_t &device, _Object object) { return downcast<isa16_device &>(device).m_out_drq7_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq10_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq10_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq11_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq11_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq12_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq12_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq14_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq14_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq15_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_irq15_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_drq0_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_drq5_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_drq6_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq6_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_drq7_callback(device_t &device, Object &&cb) { return downcast<isa16_device &>(device).m_out_drq7_cb.set_callback(std::forward<Object>(cb)); }
void install16_device(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler);
@@ -418,7 +426,7 @@ private:
// device type definition
-extern const device_type ISA16;
+DECLARE_DEVICE_TYPE(ISA16, isa16_device)
// ======================> device_isa16_card_interface
@@ -428,13 +436,16 @@ class device_isa16_card_interface : public device_isa8_card_interface
friend class isa16_device;
public:
// construction/destruction
- device_isa16_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_isa16_card_interface();
virtual uint16_t dack16_r(int line);
virtual void dack16_w(int line,uint16_t data);
void set_isa_device();
+
+protected:
+ device_isa16_card_interface(const machine_config &mconfig, device_t &device);
+
isa16_device *m_isa;
};
-#endif /* __ISA_H__ */
+#endif // MAME_BUS_ISA_ISA_H
diff --git a/src/devices/bus/isa/isa_cards.cpp b/src/devices/bus/isa/isa_cards.cpp
index 53e61c5e72a..218c0231baa 100644
--- a/src/devices/bus/isa/isa_cards.cpp
+++ b/src/devices/bus/isa/isa_cards.cpp
@@ -9,6 +9,59 @@
#include "emu.h"
#include "isa_cards.h"
+// video
+#include "mda.h"
+#include "cga.h"
+#include "aga.h"
+#include "ega.h"
+#include "pgc.h"
+#include "vga.h"
+#include "vga_ati.h"
+#include "svga_cirrus.h"
+#include "svga_s3.h"
+#include "svga_tseng.h"
+#include "svga_trident.h"
+#include "num9rev.h"
+
+// storage
+#include "fdc.h"
+#include "mufdc.h"
+#include "hdc.h"
+#include "wdxt_gen.h"
+#include "ide.h"
+#include "xtide.h"
+#include "side116.h"
+#include "aha1542.h"
+#include "wd1002a_wx1.h"
+#include "mcd.h"
+
+// sound
+#include "adlib.h"
+#include "gblaster.h"
+#include "gus.h"
+#include "ibm_mfc.h"
+#include "mpu401.h"
+#include "sblaster.h"
+#include "ssi2001.h"
+#include "stereo_fx.h"
+#include "dectalk.h"
+#include "sb16.h"
+
+// network
+#include "3c503.h"
+#include "ne1000.h"
+#include "ne2000.h"
+#include "3c505.h"
+
+// communication ports
+#include "lpt.h"
+#include "com.h"
+#include "pds.h"
+
+// other
+#include "finalchs.h"
+
+
SLOT_INTERFACE_START( pc_isa8_cards )
SLOT_INTERFACE("mda", ISA8_MDA)
SLOT_INTERFACE("cga", ISA8_CGA)
diff --git a/src/devices/bus/isa/isa_cards.h b/src/devices/bus/isa/isa_cards.h
index 9699ed4214f..da83f77c5e1 100644
--- a/src/devices/bus/isa/isa_cards.h
+++ b/src/devices/bus/isa/isa_cards.h
@@ -6,66 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __ISA_CARDS_H__
-#define __ISA_CARDS_H__
-
-
-// video
-#include "mda.h"
-#include "cga.h"
-#include "aga.h"
-#include "ega.h"
-#include "pgc.h"
-#include "vga.h"
-#include "vga_ati.h"
-#include "svga_cirrus.h"
-#include "svga_s3.h"
-#include "svga_tseng.h"
-#include "svga_trident.h"
-#include "num9rev.h"
+#ifndef MAME_BUS_ISA_ISA_CARDS_H
+#define MAME_BUS_ISA_ISA_CARDS_H
-// storage
-#include "fdc.h"
-#include "mufdc.h"
-#include "hdc.h"
-#include "wdxt_gen.h"
-#include "ide.h"
-#include "xtide.h"
-#include "side116.h"
-#include "aha1542.h"
-#include "wd1002a_wx1.h"
-#include "mcd.h"
-
-// sound
-#include "adlib.h"
-#include "gblaster.h"
-#include "gus.h"
-#include "ibm_mfc.h"
-#include "mpu401.h"
-#include "sblaster.h"
-#include "ssi2001.h"
-#include "stereo_fx.h"
-#include "dectalk.h"
-#include "sb16.h"
-
-// network
-#include "3c503.h"
-#include "ne1000.h"
-#include "ne2000.h"
-#include "3c505.h"
-
-// communication ports
-#include "lpt.h"
-#include "com.h"
-#include "pds.h"
+#pragma once
-// other
-#include "finalchs.h"
// supported devices
SLOT_INTERFACE_EXTERN( pc_isa8_cards );
SLOT_INTERFACE_EXTERN( pc_isa16_cards );
-#endif // __ISA_CARDS_H__
+#endif // MAME_BUS_ISA_ISA_CARDS_H
diff --git a/src/devices/bus/isa/lpt.cpp b/src/devices/bus/isa/lpt.cpp
index 5f1e0f24917..ce24502432e 100644
--- a/src/devices/bus/isa/lpt.cpp
+++ b/src/devices/bus/isa/lpt.cpp
@@ -10,10 +10,10 @@
#include "lpt.h"
#include "machine/pc_lpt.h"
-const device_type ISA8_LPT = device_creator<isa8_lpt_device>;
+DEFINE_DEVICE_TYPE(ISA8_LPT, isa8_lpt_device, "isa_lpt", "Printer Adapter")
isa8_lpt_device::isa8_lpt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_LPT, "Printer Adapter", tag, owner, clock, "isa_lpt", __FILE__),
+ device_t(mconfig, ISA8_LPT, tag, owner, clock),
device_isa8_card_interface(mconfig, *this),
m_is_primary(false)
{
diff --git a/src/devices/bus/isa/lpt.h b/src/devices/bus/isa/lpt.h
index c559c4df162..4ff3e60a9e2 100644
--- a/src/devices/bus/isa/lpt.h
+++ b/src/devices/bus/isa/lpt.h
@@ -6,8 +6,10 @@
***************************************************************************/
-#ifndef __ISA_LPT_H__
-#define __ISA_LPT_H__
+#ifndef MAME_BUS_ISA_LPT_H
+#define MAME_BUS_ISA_LPT_H
+
+#pragma once
#include "isa.h"
@@ -45,6 +47,6 @@ private:
};
// device type definition
-extern const device_type ISA8_LPT;
+DECLARE_DEVICE_TYPE(ISA8_LPT, isa8_lpt_device)
-#endif /* __ISA_LPT_H__ */
+#endif // MAME_BUS_ISA_LPT_H
diff --git a/src/devices/bus/isa/mach32.cpp b/src/devices/bus/isa/mach32.cpp
index a40503f8769..3035e1f0161 100644
--- a/src/devices/bus/isa/mach32.cpp
+++ b/src/devices/bus/isa/mach32.cpp
@@ -15,10 +15,10 @@
#include "screen.h"
-const device_type ATIMACH32 = device_creator<mach32_device>;
-const device_type ATIMACH32_8514A = device_creator<mach32_8514a_device>;
-const device_type ATIMACH64 = device_creator<mach64_device>;
-const device_type ATIMACH64_8514A = device_creator<mach64_8514a_device>;
+DEFINE_DEVICE_TYPE(ATIMACH32, mach32_device, "mach32", "ATi mach32")
+DEFINE_DEVICE_TYPE(ATIMACH32_8514A, mach32_8514a_device, "mach32_8514a", "ATi mach32 (2D acceleration module)")
+DEFINE_DEVICE_TYPE(ATIMACH64, mach64_device, "mach64", "ATi mach64")
+DEFINE_DEVICE_TYPE(ATIMACH64_8514A, mach64_8514a_device, "mach64_8514a", "ATi mach64 (2D acceleration module)")
/*
@@ -27,30 +27,24 @@ const device_type ATIMACH64_8514A = device_creator<mach64_8514a_device>;
// 8514/A device
mach32_8514a_device::mach32_8514a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mach8_device(mconfig, ATIMACH32_8514A, "ATi mach32 (2D acceleration module)", tag, owner, clock, "mach32_8514a", __FILE__),
- m_chip_ID(0),
- m_membounds(0)
+ : mach32_8514a_device(mconfig, ATIMACH32_8514A, tag, owner, clock)
{
}
-mach32_8514a_device::mach32_8514a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : mach8_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_chip_ID(0),
- m_membounds(0)
+mach32_8514a_device::mach32_8514a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : mach8_device(mconfig, type, tag, owner, clock), m_chip_ID(0), m_membounds(0)
{
}
// SVGA device
mach32_device::mach32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ati_vga_device(mconfig, ATIMACH32, "ATi mach32", tag, owner, clock, "mach32", __FILE__),
- m_8514a(*this,"8514a")
+ : mach32_device(mconfig, ATIMACH32, tag, owner, clock)
{
}
-mach32_device::mach32_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : ati_vga_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_8514a(*this,"8514a")
+mach32_device::mach32_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : ati_vga_device(mconfig, type, tag, owner, clock), m_8514a(*this,"8514a")
{
}
@@ -100,26 +94,24 @@ void mach32_device::device_reset()
// 8514/A device
mach64_8514a_device::mach64_8514a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mach32_8514a_device(mconfig, ATIMACH64_8514A, "ATi mach64 (2D acceleration module)", tag, owner, clock, "mach64_8514a", __FILE__)
+ : mach64_8514a_device(mconfig, ATIMACH64_8514A, tag, owner, clock)
{
}
-mach64_8514a_device::mach64_8514a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : mach32_8514a_device(mconfig, type, name, tag, owner, clock, shortname, source)
+mach64_8514a_device::mach64_8514a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : mach32_8514a_device(mconfig, type, tag, owner, clock)
{
}
// SVGA device
mach64_device::mach64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mach32_device(mconfig, ATIMACH64, "ATi mach64", tag, owner, clock, "mach64", __FILE__),
- m_8514a(*this,"8514a")
+ : mach64_device(mconfig, ATIMACH64, tag, owner, clock)
{
}
-mach64_device::mach64_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : mach32_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_8514a(*this,"8514a")
+mach64_device::mach64_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : mach32_device(mconfig, type, tag, owner, clock), m_8514a(*this, "8514a")
{
}
diff --git a/src/devices/bus/isa/mach32.h b/src/devices/bus/isa/mach32.h
index 135d923fc57..f3aba4a911a 100644
--- a/src/devices/bus/isa/mach32.h
+++ b/src/devices/bus/isa/mach32.h
@@ -6,8 +6,10 @@
* Created on: 16/05/2014
*/
-#ifndef MACH32_H_
-#define MACH32_H_
+#ifndef MAME_BUS_ISA_MACH32_H
+#define MAME_BUS_ISA_MACH32_H
+
+#pragma once
#include "video/pc_vga.h"
#include "machine/eepromser.h"
@@ -18,7 +20,6 @@ class mach32_8514a_device : public mach8_device
public:
// construction/destruction
mach32_8514a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- mach32_8514a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
DECLARE_READ16_MEMBER(mach32_chipid_r) { return m_chip_ID; }
DECLARE_WRITE16_MEMBER(mach32_clksel_w) { mach8.clksel = data; } // read only on the mach8
@@ -26,6 +27,8 @@ public:
DECLARE_WRITE16_MEMBER(mach32_mem_boundary_w) { m_membounds = data; if(data & 0x10) logerror("ATI: Unimplemented memory boundary activated."); }
protected:
+ mach32_8514a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_config_complete() override;
@@ -40,7 +43,6 @@ class mach32_device : public ati_vga_device
public:
// construction/destruction
mach32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- mach32_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
required_device<mach32_8514a_device> m_8514a; // provides accelerated 2D drawing, derived from the Mach8 device
@@ -120,7 +122,10 @@ public:
DECLARE_READ16_MEMBER(mach32_mem_boundary_r) { return m_8514a->mach32_mem_boundary_r(space,offset,mem_mask); }
DECLARE_WRITE16_MEMBER(mach32_mem_boundary_w) { m_8514a->mach32_mem_boundary_w(space,offset,data,mem_mask); } // read only on the mach8
DECLARE_READ16_MEMBER(mach32_status_r) { return vga_vblank() << 1; }
+
protected:
+ mach32_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -137,9 +142,10 @@ class mach64_8514a_device : public mach32_8514a_device
public:
// construction/destruction
mach64_8514a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- mach64_8514a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ mach64_8514a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_config_complete() override;
@@ -151,23 +157,25 @@ class mach64_device : public mach32_device
public:
// construction/destruction
mach64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- mach64_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- required_device<mach64_8514a_device> m_8514a; // provides accelerated 2D drawing, derived from the Mach8 device
-
- DECLARE_WRITE16_MEMBER(mach64_config1_w) { } // why does the mach64 BIOS write to these, they are read only on the mach32 and earlier
- DECLARE_WRITE16_MEMBER(mach64_config2_w) { }
+ DECLARE_WRITE16_MEMBER(mach64_config1_w) { } // why does the mach64 BIOS write to these, they are read only on the mach32 and earlier
+ DECLARE_WRITE16_MEMBER(mach64_config2_w) { }
protected:
+ mach64_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
+
+ required_device<mach64_8514a_device> m_8514a; // provides accelerated 2D drawing, derived from the Mach8 device
};
+
// device type definition
-extern const device_type ATIMACH32;
-extern const device_type ATIMACH32_8514A;
-extern const device_type ATIMACH64;
-extern const device_type ATIMACH64_8514A;
+DECLARE_DEVICE_TYPE(ATIMACH32, mach32_device)
+DECLARE_DEVICE_TYPE(ATIMACH32_8514A, mach32_8514a_device)
+DECLARE_DEVICE_TYPE(ATIMACH64, mach64_device)
+DECLARE_DEVICE_TYPE(ATIMACH64_8514A, mach64_8514a_device)
-#endif /* MACH32_H_ */
+#endif // MAME_BUS_ISA_MACH32_H
diff --git a/src/devices/bus/isa/mc1502_fdc.cpp b/src/devices/bus/isa/mc1502_fdc.cpp
index b943c1a191b..0ad8f6056f2 100644
--- a/src/devices/bus/isa/mc1502_fdc.cpp
+++ b/src/devices/bus/isa/mc1502_fdc.cpp
@@ -29,7 +29,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MC1502_FDC = device_creator<mc1502_fdc_device>;
+DEFINE_DEVICE_TYPE(MC1502_FDC, mc1502_fdc_device, "mc1502_fdc", "MC-1502 floppy")
FLOPPY_FORMATS_MEMBER( mc1502_fdc_device::floppy_formats )
FLOPPY_PC_FORMAT
@@ -204,7 +204,7 @@ WRITE8_MEMBER(mc1502_fdc_device::mc1502_fdc_w)
//-------------------------------------------------
mc1502_fdc_device::mc1502_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC1502_FDC, "MC-1502 floppy", tag, owner, clock, "mc1502_fdc", __FILE__)
+ : device_t(mconfig, MC1502_FDC, tag, owner, clock)
, device_isa8_card_interface(mconfig, *this)
, m_fdc(*this, "fdc")
, motor_on(0)
@@ -222,14 +222,14 @@ void mc1502_fdc_device::device_start()
// BIOS 5.0-5.2x
m_isa->install_device(0x010c, 0x010f,
- READ8_DEVICE_DELEGATE(m_fdc, fd1793_t, read),
- WRITE8_DEVICE_DELEGATE(m_fdc, fd1793_t, write) );
+ READ8_DEVICE_DELEGATE(m_fdc, fd1793_device, read),
+ WRITE8_DEVICE_DELEGATE(m_fdc, fd1793_device, write) );
m_isa->install_device(0x0100, 0x010b, read8_delegate( FUNC(mc1502_fdc_device::mc1502_fdc_r), this ), write8_delegate( FUNC(mc1502_fdc_device::mc1502_fdc_w), this ) );
// BIOS 5.3x
m_isa->install_device(0x0048, 0x004b,
- READ8_DEVICE_DELEGATE(m_fdc, fd1793_t, read),
- WRITE8_DEVICE_DELEGATE(m_fdc, fd1793_t, write) );
+ READ8_DEVICE_DELEGATE(m_fdc, fd1793_device, read),
+ WRITE8_DEVICE_DELEGATE(m_fdc, fd1793_device, write) );
m_isa->install_device(0x004c, 0x004f, read8_delegate( FUNC(mc1502_fdc_device::mc1502_fdcv2_r), this ), write8_delegate( FUNC(mc1502_fdc_device::mc1502_fdc_w), this ) );
motor_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mc1502_fdc_device::motor_callback),this));
diff --git a/src/devices/bus/isa/mc1502_fdc.h b/src/devices/bus/isa/mc1502_fdc.h
index af8c3ee7d54..0d3b97f326c 100644
--- a/src/devices/bus/isa/mc1502_fdc.h
+++ b/src/devices/bus/isa/mc1502_fdc.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_MC1502_FDC_H
+#define MAME_BUS_ISA_MC1502_FDC_H
-#ifndef __MC1502_FDC__
-#define __MC1502_FDC__
+#pragma once
-#include "imagedev/flopdrv.h"
#include "isa.h"
+#include "imagedev/flopdrv.h"
#include "machine/wd_fdc.h"
//**************************************************************************
@@ -44,7 +44,7 @@ protected:
virtual void device_start() override;
private:
- required_device<fd1793_t> m_fdc;
+ required_device<fd1793_device> m_fdc;
int motor_on;
emu_timer *motor_timer;
@@ -57,7 +57,6 @@ public:
// device type definition
-extern const device_type MC1502_FDC;
-
+DECLARE_DEVICE_TYPE(MC1502_FDC, mc1502_fdc_device)
-#endif
+#endif // MAME_BUS_ISA_MC1502_FDC_H
diff --git a/src/devices/bus/isa/mc1502_rom.cpp b/src/devices/bus/isa/mc1502_rom.cpp
index d5a5b189ac1..7e612c10832 100644
--- a/src/devices/bus/isa/mc1502_rom.cpp
+++ b/src/devices/bus/isa/mc1502_rom.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MC1502_ROM = device_creator<mc1502_rom_device>;
+DEFINE_DEVICE_TYPE(MC1502_ROM, mc1502_rom_device, "mc1502_rom", "MC-1502 ROM cart")
//-------------------------------------------------
@@ -46,7 +46,7 @@ const tiny_rom_entry *mc1502_rom_device::device_rom_region() const
//-------------------------------------------------
mc1502_rom_device::mc1502_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC1502_ROM, "MC-1502 ROM cart", tag, owner, clock, "mc1502_rom", __FILE__)
+ : device_t(mconfig, MC1502_ROM, tag, owner, clock)
, device_isa8_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/isa/mc1502_rom.h b/src/devices/bus/isa/mc1502_rom.h
index 193a9bf3274..bbb152df72f 100644
--- a/src/devices/bus/isa/mc1502_rom.h
+++ b/src/devices/bus/isa/mc1502_rom.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_MC1502_ROM_H
+#define MAME_BUS_ISA_MC1502_ROM_H
-#ifndef __MC1502_ROM__
-#define __MC1502_ROM__
+#pragma once
#include "isa.h"
@@ -35,7 +35,7 @@ protected:
// device type definition
-extern const device_type MC1502_ROM;
+DECLARE_DEVICE_TYPE(MC1502_ROM, mc1502_rom_device)
-#endif
+#endif // MAME_BUS_ISA_MC1502_ROM_H
diff --git a/src/devices/bus/isa/mcd.cpp b/src/devices/bus/isa/mcd.cpp
index d31896f43f0..70e1be82556 100644
--- a/src/devices/bus/isa/mcd.cpp
+++ b/src/devices/bus/isa/mcd.cpp
@@ -17,7 +17,7 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA16_MCD = device_creator<mcd_isa_device>;
+DEFINE_DEVICE_TYPE(ISA16_MCD, mcd_isa_device, "mcd_isa", "Mitsumi ISA CD-ROM Adapter")
//-------------------------------------------------
// input_ports - device-specific input ports
@@ -37,8 +37,8 @@ ioport_constructor mcd_isa_device::device_input_ports() const
//-------------------------------------------------
mcd_isa_device::mcd_isa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- cdrom_image_device(mconfig, ISA16_MCD, "Mitsumi ISA CDROM Adapter", tag, owner, clock, "mcd_isa", __FILE__),
- device_isa16_card_interface( mconfig, *this )
+ cdrom_image_device(mconfig, ISA16_MCD, tag, owner, clock),
+ device_isa16_card_interface( mconfig, *this )
{
}
diff --git a/src/devices/bus/isa/mcd.h b/src/devices/bus/isa/mcd.h
index e7a70b598df..a39d08bb142 100644
--- a/src/devices/bus/isa/mcd.h
+++ b/src/devices/bus/isa/mcd.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#pragma once
+#ifndef MAME_BUS_ISA_MCD_H
+#define MAME_BUS_ISA_MCD_H
-#ifndef __MCD_H__
-#define __MCD_H__
+#pragma once
#include "isa.h"
#include "imagedev/chd_cd.h"
@@ -31,10 +31,12 @@ public:
DECLARE_WRITE8_MEMBER(cmd_w);
DECLARE_WRITE8_MEMBER(reset_w);
virtual uint16_t dack16_r(int line) override;
+
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+
private:
bool read_sector(bool first = false);
@@ -113,6 +115,6 @@ private:
// device type definition
-extern const device_type ISA16_MCD;
+DECLARE_DEVICE_TYPE(ISA16_MCD, mcd_isa_device)
-#endif
+#endif // MAME_BUS_ISA_MCD_H
diff --git a/src/devices/bus/isa/mda.cpp b/src/devices/bus/isa/mda.cpp
index e311ce1c1ee..f5f520c5c75 100644
--- a/src/devices/bus/isa/mda.cpp
+++ b/src/devices/bus/isa/mda.cpp
@@ -123,7 +123,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_MDA = device_creator<isa8_mda_device>;
+DEFINE_DEVICE_TYPE(ISA8_MDA, isa8_mda_device, "isa_ibm_mda", "IBM Monochrome Display adn Printer Adapter")
//-------------------------------------------------
@@ -154,18 +154,15 @@ const tiny_rom_entry *isa8_mda_device::device_rom_region() const
//-------------------------------------------------
isa8_mda_device::isa8_mda_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_MDA, "IBM Monochrome Display and Printer Adapter", tag, owner, clock, "isa_ibm_mda", __FILE__),
- device_isa8_card_interface(mconfig, *this), m_framecnt(0), m_mode_control(0),
- m_update_row_type(-1), m_chr_gen(nullptr), m_vsync(0), m_hsync(0), m_pixel(0),
- m_palette(*this, "palette")
+ isa8_mda_device(mconfig, ISA8_MDA, tag, owner, clock)
{
}
-isa8_mda_device::isa8_mda_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_isa8_card_interface(mconfig, *this), m_framecnt(0), m_mode_control(0),
- m_update_row_type(-1), m_chr_gen(nullptr), m_vsync(0), m_hsync(0), m_pixel(0),
- m_palette(*this, "palette")
+isa8_mda_device::isa8_mda_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this), m_framecnt(0), m_mode_control(0),
+ m_update_row_type(-1), m_chr_gen(nullptr), m_vsync(0), m_hsync(0), m_pixel(0),
+ m_palette(*this, "palette")
{
}
@@ -191,7 +188,7 @@ void isa8_mda_device::device_start()
m_isa->install_bank(0xb7000, 0xb7fff, "bank_mda", &m_videoram[0]);
/* Initialise the mda palette */
- for(int i = 0; i < 4; i++)
+ for (int i = 0; i < 4; i++)
m_palette->set_pen_color(i, rgb_t(mda_palette[i][0], mda_palette[i][1], mda_palette[i][2]));
}
@@ -561,7 +558,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_HERCULES = device_creator<isa8_hercules_device>;
+DEFINE_DEVICE_TYPE(ISA8_HERCULES, isa8_hercules_device, "isa_hercules", "Hercules Graphics Card")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -591,7 +588,7 @@ const tiny_rom_entry *isa8_hercules_device::device_rom_region() const
//-------------------------------------------------
isa8_hercules_device::isa8_hercules_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_mda_device(mconfig, ISA8_HERCULES, "Hercules Graphics Card", tag, owner, clock, "isa_hercules", __FILE__), m_configuration_switch(0)
+ isa8_mda_device(mconfig, ISA8_HERCULES, tag, owner, clock), m_configuration_switch(0)
{
}
@@ -779,7 +776,7 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_ec1840_0002 )
MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(isa8_mda_device, vsync_changed))
MACHINE_CONFIG_END
-const device_type ISA8_EC1840_0002 = device_creator<isa8_ec1840_0002_device>;
+DEFINE_DEVICE_TYPE(ISA8_EC1840_0002, isa8_ec1840_0002_device, "ec1840_0002", "EC1840.0002 (MDA)")
//-------------------------------------------------
@@ -797,7 +794,7 @@ machine_config_constructor isa8_ec1840_0002_device::device_mconfig_additions() c
//-------------------------------------------------
isa8_ec1840_0002_device::isa8_ec1840_0002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- isa8_mda_device( mconfig, ISA8_EC1840_0002, "EC 1840.0002 (MDA)", tag, owner, clock, "ec1840_0002", __FILE__), m_soft_chr_gen(nullptr)
+ isa8_mda_device(mconfig, ISA8_EC1840_0002, tag, owner, clock), m_soft_chr_gen(nullptr)
{
}
diff --git a/src/devices/bus/isa/mda.h b/src/devices/bus/isa/mda.h
index 4632b94dab7..effbf2b59e5 100644
--- a/src/devices/bus/isa/mda.h
+++ b/src/devices/bus/isa/mda.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol, Miodrag Milanovic
-#pragma once
+#ifndef MAME_BUS_ISA_MDA_H
+#define MAME_BUS_ISA_MDA_H
-#ifndef __ISA_MDA_H__
-#define __ISA_MDA_H__
+#pragma once
#include "isa.h"
#include "video/mc6845.h"
@@ -22,7 +22,6 @@ public:
// construction/destruction
isa8_mda_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- isa8_mda_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -42,9 +41,12 @@ public:
MC6845_UPDATE_ROW( mda_text_blink_update_row );
protected:
+ isa8_mda_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+
public:
int m_framecnt;
@@ -61,7 +63,7 @@ public:
// device type definition
-extern const device_type ISA8_MDA;
+DECLARE_DEVICE_TYPE(ISA8_MDA, isa8_mda_device)
// ======================> isa8_hercules_device
@@ -94,7 +96,7 @@ public:
// device type definition
-extern const device_type ISA8_HERCULES;
+DECLARE_DEVICE_TYPE(ISA8_HERCULES, isa8_hercules_device)
// ======================> isa8_ec1840_0002_device
@@ -124,6 +126,6 @@ public:
};
// device type definition
-extern const device_type ISA8_EC1840_0002;
+DECLARE_DEVICE_TYPE(ISA8_EC1840_0002, isa8_ec1840_0002_device)
-#endif /* __ISA_MDA_H__ */
+#endif // MAME_BUS_ISA_MDA_H
diff --git a/src/devices/bus/isa/mpu401.cpp b/src/devices/bus/isa/mpu401.cpp
index 2690f6e333f..53a69afd38e 100644
--- a/src/devices/bus/isa/mpu401.cpp
+++ b/src/devices/bus/isa/mpu401.cpp
@@ -45,7 +45,7 @@ WRITE_LINE_MEMBER( isa8_mpu401_device::mpu_irq_out )
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_MPU401 = device_creator<isa8_mpu401_device>;
+DEFINE_DEVICE_TYPE(ISA8_MPU401, isa8_mpu401_device, "isa_mpu401", "Roland MPU-401 MIDI Interface (ISA)")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -67,9 +67,9 @@ machine_config_constructor isa8_mpu401_device::device_mconfig_additions() const
//-------------------------------------------------
isa8_mpu401_device::isa8_mpu401_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ISA8_MPU401, "Roland MPU-401 MIDI Interface", tag, owner, clock, "isa_mpu401", __FILE__),
- device_isa8_card_interface( mconfig, *this ),
- m_mpu401(*this, MPU_CORE_TAG)
+ : device_t(mconfig, ISA8_MPU401, tag, owner, clock)
+ , device_isa8_card_interface(mconfig, *this)
+ , m_mpu401(*this, MPU_CORE_TAG)
{
}
diff --git a/src/devices/bus/isa/mpu401.h b/src/devices/bus/isa/mpu401.h
index d0d5c89b346..2daabbac9e7 100644
--- a/src/devices/bus/isa/mpu401.h
+++ b/src/devices/bus/isa/mpu401.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont,Kevin Horton
-#pragma once
+#ifndef MAME_BUS_ISA_MPU401_H
+#define MAME_BUS_ISA_MPU401_H
-#ifndef __ISA_MPU401_H__
-#define __ISA_MPU401_H__
+#pragma once
#include "isa.h"
#include "machine/mpu401.h"
@@ -19,24 +19,24 @@ class isa8_mpu401_device :
public device_isa8_card_interface
{
public:
- // construction/destruction
- isa8_mpu401_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa8_mpu401_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- required_device<mpu401_device> m_mpu401;
+ // called back by the MPU401 core to set the IRQ line state
+ DECLARE_WRITE_LINE_MEMBER(mpu_irq_out);
- // called back by the MPU401 core to set the IRQ line state
- DECLARE_WRITE_LINE_MEMBER(mpu_irq_out);
-
- // optional information overrides
+ // optional information overrides
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual machine_config_constructor device_mconfig_additions() const override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual machine_config_constructor device_mconfig_additions() const override;
+
+ required_device<mpu401_device> m_mpu401;
};
// device type definition
-extern const device_type ISA8_MPU401;
+DECLARE_DEVICE_TYPE(ISA8_MPU401, isa8_mpu401_device)
-#endif /* __ISA_MPU401_H__ */
+#endif // MAME_BUS_ISA_MPU401_H
diff --git a/src/devices/bus/isa/mufdc.cpp b/src/devices/bus/isa/mufdc.cpp
index 3a88ce16ec7..aa35397953b 100644
--- a/src/devices/bus/isa/mufdc.cpp
+++ b/src/devices/bus/isa/mufdc.cpp
@@ -16,6 +16,7 @@
#include "emu.h"
#include "mufdc.h"
+
#include "formats/naslite_dsk.h"
#include "formats/pc_dsk.h"
@@ -24,8 +25,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ISA8_FDC344 = device_creator<fdc344_device>;
-const device_type ISA8_FDCMAG = device_creator<fdcmag_device>;
+DEFINE_DEVICE_TYPE(ISA8_FDC344, fdc344_device, "fdc344", "Ably-Tech FDC-344")
+DEFINE_DEVICE_TYPE(ISA8_FDCMAG, fdcmag_device, "fdcmag", "Magitronic Multi Floppy Controller Card")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -130,21 +131,21 @@ const tiny_rom_entry *fdcmag_device::device_rom_region() const
// mufdc_device - constructor
//-------------------------------------------------
-mufdc_device::mufdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const char *name, const char *shortname) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
- device_isa8_card_interface( mconfig, *this ),
+mufdc_device::mufdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_isa8_card_interface( mconfig, *this),
m_fdc(*this, "fdc"),
m_config(*this, "configuration")
{
}
fdc344_device::fdc344_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- mufdc_device(mconfig, ISA8_FDC344, tag, owner, clock, "Ably-Tech FDC-344", "fdc344")
+ mufdc_device(mconfig, ISA8_FDC344, tag, owner, clock)
{
}
fdcmag_device::fdcmag_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- mufdc_device(mconfig, ISA8_FDCMAG, tag, owner, clock, "Magitronic Multi Floppy Controller Card", "fdcmag")
+ mufdc_device(mconfig, ISA8_FDCMAG, tag, owner, clock)
{
}
@@ -163,7 +164,7 @@ void mufdc_device::device_start()
void mufdc_device::device_reset()
{
- m_isa->install_rom(this, 0xc8000, 0xc9fff, m_shortname.c_str(), "option");
+ m_isa->install_rom(this, 0xc8000, 0xc9fff, shortname(), "option");
m_isa->install_device(0x3f0, 0x3f7, *m_fdc, &pc_fdc_interface::map);
m_isa->set_dma_channel(2, this, true);
}
diff --git a/src/devices/bus/isa/mufdc.h b/src/devices/bus/isa/mufdc.h
index 46f46cb5539..3f62b9862ed 100644
--- a/src/devices/bus/isa/mufdc.h
+++ b/src/devices/bus/isa/mufdc.h
@@ -14,10 +14,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_MUFDC_H
+#define MAME_BUS_ISA_MUFDC_H
-#ifndef __ISA_MUFDC_H__
-#define __ISA_MUFDC_H__
+#pragma once
#include "isa.h"
#include "imagedev/floppy.h"
@@ -30,13 +30,9 @@
// ======================> mufdc_device
-class mufdc_device : public device_t,
- public device_isa8_card_interface
+class mufdc_device : public device_t, public device_isa8_card_interface
{
public:
- // construction/destruction
- mufdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const char *name, const char *shortname);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
@@ -48,6 +44,9 @@ public:
DECLARE_WRITE_LINE_MEMBER( fdc_drq_w );
protected:
+ // construction/destruction
+ mufdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -69,9 +68,6 @@ public:
fdc344_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual const tiny_rom_entry *device_rom_region() const override;
-
-protected:
- virtual void device_config_complete() override { m_shortname = "fdc344"; }
};
class fdcmag_device : public mufdc_device
@@ -81,13 +77,10 @@ public:
fdcmag_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual const tiny_rom_entry *device_rom_region() const override;
-
-protected:
- virtual void device_config_complete() override { m_shortname = "fdcmag"; }
};
// device type definition
-extern const device_type ISA8_FDC344;
-extern const device_type ISA8_FDCMAG;
+DECLARE_DEVICE_TYPE(ISA8_FDC344, fdc344_device)
+DECLARE_DEVICE_TYPE(ISA8_FDCMAG, fdcmag_device)
-#endif
+#endif // MAME_BUS_ISA_MUFDC_H
diff --git a/src/devices/bus/isa/ne1000.cpp b/src/devices/bus/isa/ne1000.cpp
index 4fa63153c30..ad7ce5d8f69 100644
--- a/src/devices/bus/isa/ne1000.cpp
+++ b/src/devices/bus/isa/ne1000.cpp
@@ -10,18 +10,18 @@ static MACHINE_CONFIG_FRAGMENT(ne1000_config)
MCFG_DP8390D_MEM_WRITE_CB(WRITE8(ne1000_device, ne1000_mem_write))
MACHINE_CONFIG_END
-const device_type NE1000 = device_creator<ne1000_device>;
+DEFINE_DEVICE_TYPE(NE1000, ne1000_device, "ne1000", "NE1000 Network Adapter")
machine_config_constructor ne1000_device::device_mconfig_additions() const {
return MACHINE_CONFIG_NAME(ne1000_config);
}
ne1000_device::ne1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NE1000, "NE1000 Network Adapter", tag, owner, clock, "ne1000", __FILE__),
- device_isa8_card_interface(mconfig, *this),
- m_dp8390(*this, "dp8390d"),
+ : device_t(mconfig, NE1000, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this),
+ m_dp8390(*this, "dp8390d"),
m_irq(0)
- {
+{
}
void ne1000_device::device_start() {
diff --git a/src/devices/bus/isa/ne1000.h b/src/devices/bus/isa/ne1000.h
index 6aff2bef047..5277b4d61c5 100644
--- a/src/devices/bus/isa/ne1000.h
+++ b/src/devices/bus/isa/ne1000.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef __NE1000_H__
-#define __NE1000_H__
+#ifndef MAME_BUS_ISA_NE1000_H
+#define MAME_BUS_ISA_NE1000_H
+
+#pragma once
// NE1000 is 8bit has 8KB ram; NE2000 is 16bit has 16KB ram
@@ -31,6 +33,6 @@ private:
uint8_t m_prom[16];
};
-extern const device_type NE1000;
+DECLARE_DEVICE_TYPE(NE1000, ne1000_device)
-#endif
+#endif // MAME_BUS_ISA_NE1000_H
diff --git a/src/devices/bus/isa/ne2000.cpp b/src/devices/bus/isa/ne2000.cpp
index 82997bb38d0..d348a7fe095 100644
--- a/src/devices/bus/isa/ne2000.cpp
+++ b/src/devices/bus/isa/ne2000.cpp
@@ -11,17 +11,17 @@ static MACHINE_CONFIG_FRAGMENT(ne2000_config)
MCFG_DP8390D_MEM_WRITE_CB(WRITE8(ne2000_device, ne2000_mem_write))
MACHINE_CONFIG_END
-const device_type NE2000 = device_creator<ne2000_device>;
+DEFINE_DEVICE_TYPE(NE2000, ne2000_device, "ne2000", "NE2000 Network Adapter")
machine_config_constructor ne2000_device::device_mconfig_additions() const {
return MACHINE_CONFIG_NAME(ne2000_config);
}
ne2000_device::ne2000_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock)
- : device_t(mconfig, NE2000, "NE2000 Network Adapter", tag, owner, clock, "ne2000", __FILE__),
- device_isa16_card_interface(mconfig, *this),
- m_dp8390(*this, "dp8390d"),
- m_irq(0)
+ : device_t(mconfig, NE2000, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_dp8390(*this, "dp8390d"),
+ m_irq(0)
{
}
diff --git a/src/devices/bus/isa/ne2000.h b/src/devices/bus/isa/ne2000.h
index e99308749d7..27f3688d1b5 100644
--- a/src/devices/bus/isa/ne2000.h
+++ b/src/devices/bus/isa/ne2000.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef __NE2000_H__
-#define __NE2000_H__
+#ifndef MAME_BUS_ISA_NE2000_H
+#define MAME_BUS_ISA_NE2000_H
+
+#pragma once
#include "isa.h"
#include "machine/dp8390.h"
@@ -29,6 +31,6 @@ private:
uint8_t m_prom[16];
};
-extern const device_type NE2000;
+DECLARE_DEVICE_TYPE(NE2000, ne2000_device)
-#endif
+#endif // MAME_BUS_ISA_NE2000_H
diff --git a/src/devices/bus/isa/num9rev.cpp b/src/devices/bus/isa/num9rev.cpp
index c2ee133c394..8e0963a0fa8 100644
--- a/src/devices/bus/isa/num9rev.cpp
+++ b/src/devices/bus/isa/num9rev.cpp
@@ -12,7 +12,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_NUM_9_REV = device_creator<isa8_number_9_rev_device>;
+DEFINE_DEVICE_TYPE(ISA8_NUM_9_REV, isa8_number_9_rev_device, "number_9_rev", "Number Nine Revolution 512x32/1024x8")
static ADDRESS_MAP_START( upd7220_map, AS_0, 16, isa8_number_9_rev_device )
AM_RANGE(0x00000, 0x3ffff) AM_NOP
@@ -80,12 +80,12 @@ machine_config_constructor isa8_number_9_rev_device::device_mconfig_additions()
//-------------------------------------------------
isa8_number_9_rev_device::isa8_number_9_rev_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_NUM_9_REV, "Number Nine Revolution 512x32/1024x8", tag, owner, clock, "number_9_rev", __FILE__),
- device_isa8_card_interface(mconfig, *this),
- m_upd7220(*this, "upd7220"),
- m_palette(*this, "palette"),
- m_ram(1024*1024),
- m_overlay(1024), m_bank(0), m_mode(0), m_1024(false)
+ device_t(mconfig, ISA8_NUM_9_REV, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this),
+ m_upd7220(*this, "upd7220"),
+ m_palette(*this, "palette"),
+ m_ram(1024*1024),
+ m_overlay(1024), m_bank(0), m_mode(0), m_1024(false)
{
}
diff --git a/src/devices/bus/isa/num9rev.h b/src/devices/bus/isa/num9rev.h
index a7f4d5b39ac..805ee13d449 100644
--- a/src/devices/bus/isa/num9rev.h
+++ b/src/devices/bus/isa/num9rev.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#pragma once
+#ifndef MAME_BUS_ISA_NUM9REV_H
+#define MAME_BUS_ISA_NUM9REV_H
-#ifndef __NUM9REV_H__
-#define __NUM9REV_H__
+#pragma once
#include "isa.h"
#include "video/upd7220.h"
@@ -57,6 +57,6 @@ private:
};
// device type definition
-extern const device_type ISA8_NUM_9_REV;
+DECLARE_DEVICE_TYPE(ISA8_NUM_9_REV, isa8_number_9_rev_device)
-#endif /* __NUM9REV_H__ */
+#endif // MAME_BUS_ISA_NUM9REV_H
diff --git a/src/devices/bus/isa/omti8621.cpp b/src/devices/bus/isa/omti8621.cpp
index 93822d01ae3..1b210ae4c0c 100644
--- a/src/devices/bus/isa/omti8621.cpp
+++ b/src/devices/bus/isa/omti8621.cpp
@@ -12,10 +12,6 @@
* * http://www.bitsavers.org/pdf/sms/pc/OMTI_AT_Controller_Series_Jan87.pdf
*/
-#define VERBOSE 0
-
-static int verbose = VERBOSE;
-
#include "emu.h"
#include "omti8621.h"
#include "image.h"
@@ -23,6 +19,10 @@ static int verbose = VERBOSE;
#include "formats/naslite_dsk.h"
#include "formats/apollo_dsk.h"
+#define VERBOSE 0
+
+static int verbose = VERBOSE;
+
#define LOG(x) { logerror ("%s: ", cpu_context(this)); logerror x; logerror ("\n"); }
#define LOG1(x) { if (verbose > 0) LOG(x)}
#define LOG2(x) { if (verbose > 1) LOG(x)}
@@ -45,7 +45,7 @@ static int verbose = VERBOSE;
#define OMTI_BIOS_REGION "omti_bios"
// forward declaration of image class
-extern const device_type OMTI_DISK;
+DECLARE_DEVICE_TYPE(OMTI_DISK, omti_disk_image_device)
class omti_disk_image_device : public device_t,
public device_image_interface
@@ -376,30 +376,27 @@ void omti8621_device::device_reset()
alternate_track_address[1] = 0;
}
-const device_type ISA16_OMTI8621 = device_creator<omti8621_pc_device>;
+DEFINE_DEVICE_TYPE(ISA16_OMTI8621, omti8621_pc_device, "omti8621isa", "OMTI 8621 ESDI/floppy controller (ISA)")
omti8621_pc_device::omti8621_pc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : omti8621_device(mconfig, ISA16_OMTI8621, "OMTI 8621 ESDI/floppy controller (ISA)", tag, owner, clock, "omti8621isa", __FILE__)
+ : omti8621_device(mconfig, ISA16_OMTI8621, tag, owner, clock)
{
}
-const device_type ISA16_OMTI8621_APOLLO = device_creator<omti8621_apollo_device>;
+DEFINE_DEVICE_TYPE(ISA16_OMTI8621_APOLLO, omti8621_apollo_device, "omti8621ap", "OMTI 8621 ESDI/floppy controller (Apollo)")
omti8621_apollo_device::omti8621_apollo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : omti8621_device(mconfig, ISA16_OMTI8621_APOLLO, "OMTI 8621 ESDI/floppy controller (Apollo)", tag, owner, clock, "omti8621ap", __FILE__)
+ : omti8621_device(mconfig, ISA16_OMTI8621_APOLLO, tag, owner, clock)
{
}
omti8621_device::omti8621_device(
const machine_config &mconfig,
device_type type,
- const char *name,
const char *tag,
device_t *owner,
- uint32_t clock,
- const char *shortname,
- const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_isa16_card_interface(mconfig, *this)
, m_fdc(*this, OMTI_FDC_TAG)
, m_iobase(*this, "IO_BASE")
@@ -1309,11 +1306,12 @@ void omti8621_device::eop_w(int state)
//##########################################################################
// device type definition
-const device_type OMTI_DISK = device_creator<omti_disk_image_device>;
+DEFINE_DEVICE_TYPE(OMTI_DISK, omti_disk_image_device, "omti_disk_image", "OMTI 8621 ESDI disk")
omti_disk_image_device::omti_disk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, OMTI_DISK, "OMTI8621 ESDI disk", tag, owner, clock, "omti_disk_image", __FILE__),
- device_image_interface(mconfig, *this), m_type(0), m_cylinders(0), m_heads(0), m_sectors(0), m_sectorbytes(0), m_sector_count(0), m_image(nullptr)
+ : device_t(mconfig, OMTI_DISK, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
+ , m_type(0), m_cylinders(0), m_heads(0), m_sectors(0), m_sectorbytes(0), m_sector_count(0), m_image(nullptr)
{
}
diff --git a/src/devices/bus/isa/omti8621.h b/src/devices/bus/isa/omti8621.h
index 2c031f1113e..66f5ad64b73 100644
--- a/src/devices/bus/isa/omti8621.h
+++ b/src/devices/bus/isa/omti8621.h
@@ -18,9 +18,6 @@
#include "isa.h"
#include "machine/pc_fdc.h"
-#define OMTI_MAX_LUN 1
-#define CDB_SIZE 10
-
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -37,24 +34,20 @@ public:
static void set_verbose(int on_off);
- required_device<pc_fdc_interface> m_fdc;
- required_ioport m_iobase;
- required_ioport m_biosopts;
-
DECLARE_WRITE_LINE_MEMBER( fdc_irq_w );
DECLARE_WRITE_LINE_MEMBER( fdc_drq_w );
DECLARE_FLOPPY_FORMATS( floppy_formats );
protected:
+ static constexpr unsigned OMTI_MAX_LUN = 1;
+ static constexpr unsigned CDB_SIZE = 10;
+
omti8621_device(
const machine_config &mconfig,
device_type type,
- const char *name,
const char *tag,
device_t *owner,
- uint32_t clock,
- const char *shortname,
- const char *source);
+ uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -70,6 +63,10 @@ protected:
void set_interrupt(enum line_state line_state);
+ required_device<pc_fdc_interface> m_fdc;
+ required_ioport m_iobase;
+ required_ioport m_biosopts;
+
omti_disk_image_device *our_disks[OMTI_MAX_LUN+1];
private:
@@ -141,7 +138,7 @@ public:
omti8621_pc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type ISA16_OMTI8621;
+DECLARE_DEVICE_TYPE(ISA16_OMTI8621, omti8621_pc_device)
/* ----- omti8621 for apollo device interface ----- */
@@ -156,7 +153,7 @@ protected:
virtual const tiny_rom_entry *device_rom_region() const override;
};
-extern const device_type ISA16_OMTI8621_APOLLO;
+DECLARE_DEVICE_TYPE(ISA16_OMTI8621_APOLLO, omti8621_apollo_device)
//###############################################################
diff --git a/src/devices/bus/isa/p1_fdc.cpp b/src/devices/bus/isa/p1_fdc.cpp
index 27983e5abdd..b2eacdb35e6 100644
--- a/src/devices/bus/isa/p1_fdc.cpp
+++ b/src/devices/bus/isa/p1_fdc.cpp
@@ -29,7 +29,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type P1_FDC = device_creator<p1_fdc_device>;
+DEFINE_DEVICE_TYPE(P1_FDC, p1_fdc_device, "p1_fdc", "Poisk-1 floppy B504")
FLOPPY_FORMATS_MEMBER( p1_fdc_device::floppy_formats )
FLOPPY_PC_FORMAT
@@ -178,7 +178,7 @@ WRITE8_MEMBER(p1_fdc_device::p1_fdc_w)
//-------------------------------------------------
p1_fdc_device::p1_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, P1_FDC, "Poisk-1 floppy B504", tag, owner, clock, "p1_fdc", __FILE__)
+ : device_t(mconfig, P1_FDC, tag, owner, clock)
, device_isa8_card_interface(mconfig, *this)
, m_fdc(*this, "fdc")
{
@@ -194,8 +194,8 @@ void p1_fdc_device::device_start()
set_isa_device();
m_isa->install_rom(this, 0xe0000, 0xe07ff, "XXX", "p1_fdc");
m_isa->install_device(0x00c0, 0x00c3,
- READ8_DEVICE_DELEGATE(m_fdc, fd1793_t, read),
- WRITE8_DEVICE_DELEGATE(m_fdc, fd1793_t, write) );
+ READ8_DEVICE_DELEGATE(m_fdc, fd1793_device, read),
+ WRITE8_DEVICE_DELEGATE(m_fdc, fd1793_device, write) );
m_isa->install_device(0x00c4, 0x00c7, read8_delegate( FUNC(p1_fdc_device::p1_fdc_r), this ), write8_delegate( FUNC(p1_fdc_device::p1_fdc_w), this ) );
}
diff --git a/src/devices/bus/isa/p1_fdc.h b/src/devices/bus/isa/p1_fdc.h
index 672d80f7773..81d17bb4bf5 100644
--- a/src/devices/bus/isa/p1_fdc.h
+++ b/src/devices/bus/isa/p1_fdc.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_P1_FDC_H
+#define MAME_BUS_ISA_P1_FDC_H
-#ifndef __P1_FDC__
-#define __P1_FDC__
+#pragma once
-#include "imagedev/flopdrv.h"
#include "isa.h"
+#include "imagedev/flopdrv.h"
#include "machine/wd_fdc.h"
//**************************************************************************
@@ -42,7 +42,7 @@ protected:
virtual void device_reset() override;
private:
- required_device<fd1793_t> m_fdc;
+ required_device<fd1793_device> m_fdc;
public:
void p1_wd17xx_aux_w(int data);
@@ -52,7 +52,7 @@ public:
// device type definition
-extern const device_type P1_FDC;
+DECLARE_DEVICE_TYPE(P1_FDC, p1_fdc_device)
-#endif
+#endif // MAME_BUS_ISA_P1_FDC_H
diff --git a/src/devices/bus/isa/p1_hdc.cpp b/src/devices/bus/isa/p1_hdc.cpp
index 206c3c04360..22f60d71d1a 100644
--- a/src/devices/bus/isa/p1_hdc.cpp
+++ b/src/devices/bus/isa/p1_hdc.cpp
@@ -33,7 +33,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type P1_HDC = device_creator<p1_hdc_device>;
+DEFINE_DEVICE_TYPE(P1_HDC, p1_hdc_device, "p1_hdc", "Poisk-1 MFM disk B942")
static MACHINE_CONFIG_FRAGMENT( hdc_b942 )
MCFG_DEVICE_ADD(KM1809VG7_TAG, WD2010, 5000000) // XXX clock?
@@ -121,7 +121,7 @@ WRITE8_MEMBER(p1_hdc_device::p1_HDC_w)
//-------------------------------------------------
p1_hdc_device::p1_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, P1_HDC, "Poisk-1 MFM disk B942", tag, owner, clock, "p1_hdc", __FILE__)
+ : device_t(mconfig, P1_HDC, tag, owner, clock)
, device_isa8_card_interface(mconfig, *this)
, m_hdc(*this, KM1809VG7_TAG)
{
diff --git a/src/devices/bus/isa/p1_hdc.h b/src/devices/bus/isa/p1_hdc.h
index ef3e16c526e..071cbcded95 100644
--- a/src/devices/bus/isa/p1_hdc.h
+++ b/src/devices/bus/isa/p1_hdc.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_P1_HDC_H
+#define MAME_BUS_ISA_P1_HDC_H
-#ifndef __P1_HDC__
-#define __P1_HDC__
+#pragma once
-#include "imagedev/harddriv.h"
#include "isa.h"
+#include "imagedev/harddriv.h"
#include "machine/wd2010.h"
//**************************************************************************
@@ -48,7 +48,7 @@ public:
// device type definition
-extern const device_type P1_HDC;
+DECLARE_DEVICE_TYPE(P1_HDC, p1_hdc_device)
-#endif
+#endif // MAME_BUS_ISA_P1_HDC_H
diff --git a/src/devices/bus/isa/p1_rom.cpp b/src/devices/bus/isa/p1_rom.cpp
index b46b495b6a0..d35135f95bc 100644
--- a/src/devices/bus/isa/p1_rom.cpp
+++ b/src/devices/bus/isa/p1_rom.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type P1_ROM = device_creator<p1_rom_device>;
+DEFINE_DEVICE_TYPE(P1_ROM, p1_rom_device, "p1_rom", "Poisk-1 ROM cart")
//-------------------------------------------------
@@ -51,7 +51,7 @@ const tiny_rom_entry *p1_rom_device::device_rom_region() const
//-------------------------------------------------
p1_rom_device::p1_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, P1_ROM, "Poisk-1 ROM cart", tag, owner, clock, "p1_rom", __FILE__)
+ : device_t(mconfig, P1_ROM, tag, owner, clock)
, device_isa8_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/isa/p1_rom.h b/src/devices/bus/isa/p1_rom.h
index fc88dd08222..f91d048a523 100644
--- a/src/devices/bus/isa/p1_rom.h
+++ b/src/devices/bus/isa/p1_rom.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_P1_ROM_H
+#define MAME_BUS_ISA_P1_ROM_H
-#ifndef __P1_ROM__
-#define __P1_ROM__
+#pragma once
#include "isa.h"
@@ -38,4 +38,4 @@ protected:
extern const device_type P1_ROM;
-#endif
+#endif // MAME_BUS_ISA_P1_ROM_H
diff --git a/src/devices/bus/isa/p1_sound.cpp b/src/devices/bus/isa/p1_sound.cpp
index d0c37039030..103d1b2f6c6 100644
--- a/src/devices/bus/isa/p1_sound.cpp
+++ b/src/devices/bus/isa/p1_sound.cpp
@@ -22,7 +22,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type P1_SOUND = device_creator<p1_sound_device>;
+DEFINE_DEVICE_TYPE(P1_SOUND, p1_sound_device, "p1_sound", "Poisk-1 sound card (B623)")
//-------------------------------------------------
@@ -93,7 +93,7 @@ machine_config_constructor p1_sound_device::device_mconfig_additions() const
//-------------------------------------------------
p1_sound_device::p1_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, P1_SOUND, "Poisk-1 sound card (B623)", tag, owner, clock, "p1_sound", __FILE__)
+ : device_t(mconfig, P1_SOUND, tag, owner, clock)
, device_isa8_card_interface(mconfig, *this)
, m_dac(*this, "dac")
, m_filter(*this, "filter")
@@ -207,5 +207,5 @@ void p1_sound_device::device_reset()
m_dac_ptr = 0;
// 5 kHz lowpass filter. XXX check schematics
- m_filter->filter_rc_set_RC(FLT_RC_LOWPASS, 330, 0, 0, CAP_N(100));
+ m_filter->filter_rc_set_RC(filter_rc_device::LOWPASS, 330, 0, 0, CAP_N(100));
}
diff --git a/src/devices/bus/isa/p1_sound.h b/src/devices/bus/isa/p1_sound.h
index 039d5b7868a..aee52304b99 100644
--- a/src/devices/bus/isa/p1_sound.h
+++ b/src/devices/bus/isa/p1_sound.h
@@ -9,14 +9,14 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_P1_SOUND_H
+#define MAME_BUS_P1_SOUND_H
-#ifndef __P1_SOUND__
-#define __P1_SOUND__
+#pragma once
-#include "bus/midi/midi.h"
#include "isa.h"
+#include "bus/midi/midi.h"
#include "machine/i8251.h"
#include "machine/pit8253.h"
#include "sound/dac.h"
@@ -66,7 +66,7 @@ private:
// device type definition
-extern const device_type P1_SOUND;
+DECLARE_DEVICE_TYPE(P1_SOUND, p1_sound_device)
-#endif
+#endif // MAME_BUS_P1_SOUND_H
diff --git a/src/devices/bus/isa/pc1640_iga.cpp b/src/devices/bus/isa/pc1640_iga.cpp
index 69d3e037edf..83accf6794c 100644
--- a/src/devices/bus/isa/pc1640_iga.cpp
+++ b/src/devices/bus/isa/pc1640_iga.cpp
@@ -36,7 +36,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ISA8_PC1640_IGA = device_creator<isa8_pc1640_iga_device>;
+DEFINE_DEVICE_TYPE(ISA8_PC1640_IGA, isa8_pc1640_iga_device, "pc1640_iga", "Amstrad PC1640 IGA")
//-------------------------------------------------
@@ -69,7 +69,7 @@ const tiny_rom_entry *isa8_pc1640_iga_device::device_rom_region() const
//-------------------------------------------------
isa8_pc1640_iga_device::isa8_pc1640_iga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : isa8_ega_device(mconfig, ISA8_PC1640_IGA, "Amstrad PC1640 IGA", tag, owner, clock, "pc1640_iga", __FILE__)
+ : isa8_ega_device(mconfig, ISA8_PC1640_IGA, tag, owner, clock)
{
}
diff --git a/src/devices/bus/isa/pc1640_iga.h b/src/devices/bus/isa/pc1640_iga.h
index 4e3bf60613d..0cee53d6329 100644
--- a/src/devices/bus/isa/pc1640_iga.h
+++ b/src/devices/bus/isa/pc1640_iga.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_PC1640_IGA_H
+#define MAME_BUS_ISA_PC1640_IGA_H
-#ifndef __ISA8_PC1640_IGA__
-#define __ISA8_PC1640_IGA__
+#pragma once
#include "isa.h"
#include "ega.h"
@@ -38,8 +38,7 @@ protected:
// device type definition
-extern const device_type ISA8_PC1640_IGA;
-
+DECLARE_DEVICE_TYPE(ISA8_PC1640_IGA, isa8_pc1640_iga_device)
-#endif
+#endif // MAME_BUS_ISA_PC1640_IGA_H
diff --git a/src/devices/bus/isa/pds.cpp b/src/devices/bus/isa/pds.cpp
index f4567c234e2..2a5c35d2785 100644
--- a/src/devices/bus/isa/pds.cpp
+++ b/src/devices/bus/isa/pds.cpp
@@ -19,12 +19,12 @@
#include "emu.h"
#include "pds.h"
-const device_type ISA8_PDS = device_creator<isa8_pds_device>;
+DEFINE_DEVICE_TYPE(ISA8_PDS, isa8_pds_device, "isa_pds", "Programmers Development System (host)")
isa8_pds_device::isa8_pds_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ISA8_PDS, "Programmers Development System", tag, owner, clock, "isa_pds", __FILE__),
- device_isa8_card_interface( mconfig, *this ),
- m_ppi(*this,"pds_ppi")
+ : device_t(mconfig, ISA8_PDS, tag, owner, clock)
+ , device_isa8_card_interface(mconfig, *this)
+ , m_ppi(*this,"pds_ppi")
{
}
diff --git a/src/devices/bus/isa/pds.h b/src/devices/bus/isa/pds.h
index 1bbcf2007d5..7b92f10350b 100644
--- a/src/devices/bus/isa/pds.h
+++ b/src/devices/bus/isa/pds.h
@@ -6,8 +6,8 @@
* Created on: 31/01/2014
*/
-#ifndef ISA_PDS_H_
-#define ISA_PDS_H_
+#ifndef MAME_BUS_ISA_PDS_H
+#define MAME_BUS_ISA_PDS_H
#include "isa.h"
#include "machine/i8255.h"
@@ -17,23 +17,22 @@ class isa8_pds_device :
public device_isa8_card_interface
{
public:
- isa8_pds_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ isa8_pds_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_READ8_MEMBER(ppi_r);
- DECLARE_WRITE8_MEMBER(ppi_w);
+ DECLARE_READ8_MEMBER(ppi_r);
+ DECLARE_WRITE8_MEMBER(ppi_w);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
-
- required_device<i8255_device> m_ppi;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_stop() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_stop() override;
+ required_device<i8255_device> m_ppi;
};
-extern const device_type ISA8_PDS;
+DECLARE_DEVICE_TYPE(ISA8_PDS, isa8_pds_device)
-#endif /* ISA_PDS_H_ */
+#endif // MAME_BUS_ISA_PDS_H
diff --git a/src/devices/bus/isa/pgc.cpp b/src/devices/bus/isa/pgc.cpp
index 3d004231fbf..261fbc6eda3 100644
--- a/src/devices/bus/isa/pgc.cpp
+++ b/src/devices/bus/isa/pgc.cpp
@@ -166,7 +166,7 @@ MACHINE_CONFIG_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_PGC = device_creator<isa8_pgc_device>;
+DEFINE_DEVICE_TYPE(ISA8_PGC, isa8_pgc_device, "isa_ibm_pgc", "IBM Professional Graphics Controller")
//-------------------------------------------------
@@ -206,20 +206,17 @@ ioport_constructor isa8_pgc_device::device_input_ports() const
//-------------------------------------------------
isa8_pgc_device::isa8_pgc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_PGC, "IBM Professional Graphics Controller", tag, owner, clock, "isa_ibm_pgc", __FILE__),
- device_isa8_card_interface(mconfig, *this),
- m_cpu(*this, "maincpu"),
- m_screen(*this, PGC_SCREEN_NAME),
- m_palette(*this, "palette"), m_commarea(nullptr), m_vram(nullptr), m_eram(nullptr), m_bitmap(nullptr)
+ isa8_pgc_device(mconfig, ISA8_PGC, tag, owner, clock)
{
}
-isa8_pgc_device::isa8_pgc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+isa8_pgc_device::isa8_pgc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_isa8_card_interface(mconfig, *this),
m_cpu(*this, "maincpu"),
m_screen(*this, PGC_SCREEN_NAME),
- m_palette(*this, "palette"), m_commarea(nullptr), m_vram(nullptr), m_eram(nullptr), m_bitmap(nullptr)
+ m_palette(*this, "palette"),
+ m_commarea(nullptr), m_vram(nullptr), m_eram(nullptr), m_bitmap(nullptr)
{
}
diff --git a/src/devices/bus/isa/pgc.h b/src/devices/bus/isa/pgc.h
index 37de1f6e260..546c1d24f5a 100644
--- a/src/devices/bus/isa/pgc.h
+++ b/src/devices/bus/isa/pgc.h
@@ -1,10 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Sergey Svishchev
-#pragma once
+#ifndef MAME_BUS_ISA_PGC_H
+#define MAME_BUS_ISA_PGC_H
-#ifndef __ISA_PGC_H__
-#define __ISA_PGC_H__
+#pragma once
#include "cpu/i86/i86.h"
@@ -23,7 +23,6 @@ class isa8_pgc_device :
public:
// construction/destruction
isa8_pgc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- isa8_pgc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -44,6 +43,8 @@ public:
void reset_common();
protected:
+ isa8_pgc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -63,6 +64,6 @@ private:
// device type definition
-extern const device_type ISA8_PGC;
+DECLARE_DEVICE_TYPE(ISA8_PGC, isa8_pgc_device)
-#endif /* __ISA_PGC_H__ */
+#endif // MAME_BUS_ISA_PGC_H
diff --git a/src/devices/bus/isa/s3virge.cpp b/src/devices/bus/isa/s3virge.cpp
index b9df7bca59b..27c142036bf 100644
--- a/src/devices/bus/isa/s3virge.cpp
+++ b/src/devices/bus/isa/s3virge.cpp
@@ -20,32 +20,32 @@
#define CRTC_PORT_ADDR ((vga.miscellaneous_output & 1) ? 0x3d0 : 0x3b0)
#define LOG_REG 1
-const device_type S3VIRGE = device_creator<s3virge_vga_device>;
-const device_type S3VIRGEDX = device_creator<s3virgedx_vga_device>;
-const device_type S3VIRGEDX1 = device_creator<s3virgedx_rev1_vga_device>;
+DEFINE_DEVICE_TYPE(S3VIRGE, s3virge_vga_device, "virge_vga", "S3 86C325")
+DEFINE_DEVICE_TYPE(S3VIRGEDX, s3virgedx_vga_device, "virgedx_vga", "S3 86C375")
+DEFINE_DEVICE_TYPE(S3VIRGEDX1, s3virgedx_rev1_vga_device, "virgedx_vga_r1", "S3 86C375 (rev 1)")
s3virge_vga_device::s3virge_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : s3_vga_device(mconfig, S3VIRGE, "S3 86C325", tag, owner, clock, "virge_vga", __FILE__)
+ : s3virge_vga_device(mconfig, S3VIRGE, tag, owner, clock)
{
}
-s3virge_vga_device::s3virge_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : s3_vga_device(mconfig, type, name, tag, owner, clock, shortname, source)
+s3virge_vga_device::s3virge_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : s3_vga_device(mconfig, type, tag, owner, clock)
{
}
s3virgedx_vga_device::s3virgedx_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : s3virge_vga_device(mconfig, S3VIRGEDX, "S3 86C375", tag, owner, clock, "virgedx_vga", __FILE__)
+ : s3virgedx_vga_device(mconfig, S3VIRGEDX, tag, owner, clock)
{
}
-s3virgedx_vga_device::s3virgedx_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : s3virge_vga_device(mconfig, type, name, tag, owner, clock, shortname, source)
+s3virgedx_vga_device::s3virgedx_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : s3virge_vga_device(mconfig, type, tag, owner, clock)
{
}
s3virgedx_rev1_vga_device::s3virgedx_rev1_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : s3virgedx_vga_device(mconfig, S3VIRGEDX1, "S3 86C375 (rev 1)", tag, owner, clock, "virgedx_r1", __FILE__)
+ : s3virgedx_vga_device(mconfig, S3VIRGEDX1, tag, owner, clock)
{
}
diff --git a/src/devices/bus/isa/s3virge.h b/src/devices/bus/isa/s3virge.h
index cadbcd8ef63..0ee07815092 100644
--- a/src/devices/bus/isa/s3virge.h
+++ b/src/devices/bus/isa/s3virge.h
@@ -7,8 +7,10 @@
*
*/
-#ifndef S3VIRGE_H_
-#define S3VIRGE_H_
+#ifndef MAME_BUS_ISA_S3VIRGE_H
+#define MAME_BUS_ISA_S3VIRGE_H
+
+#pragma once
#include "video/pc_vga.h"
@@ -19,7 +21,6 @@ class s3virge_vga_device : public s3_vga_device
public:
// construction/destruction
s3virge_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- s3virge_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual READ8_MEMBER(port_03b0_r) override;
virtual WRITE8_MEMBER(port_03b0_w) override;
@@ -31,7 +32,10 @@ public:
virtual WRITE8_MEMBER(mem_w) override;
ibm8514a_device* get_8514() { fatalerror("s3virge requested non-existant 8514/A device\n"); return nullptr; }
+
protected:
+ s3virge_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -51,9 +55,10 @@ class s3virgedx_vga_device : public s3virge_vga_device
public:
// construction/destruction
s3virgedx_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- s3virgedx_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ s3virgedx_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -74,8 +79,8 @@ protected:
};
// device type definition
-extern const device_type S3VIRGE;
-extern const device_type S3VIRGEDX;
-extern const device_type S3VIRGEDX1;
+DECLARE_DEVICE_TYPE(S3VIRGE, s3virge_vga_device)
+DECLARE_DEVICE_TYPE(S3VIRGEDX, s3virgedx_vga_device)
+DECLARE_DEVICE_TYPE(S3VIRGEDX1, s3virgedx_rev1_vga_device)
-#endif /* S3VIRGE_H_ */
+#endif // MAME_BUS_ISA_S3VIRGE_H
diff --git a/src/devices/bus/isa/sb16.cpp b/src/devices/bus/isa/sb16.cpp
index 1c8a9cda8c0..1207b6dfafd 100644
--- a/src/devices/bus/isa/sb16.cpp
+++ b/src/devices/bus/isa/sb16.cpp
@@ -12,7 +12,7 @@
#include "speaker.h"
-const device_type ISA16_SB16 = device_creator<sb16_lle_device>;
+DEFINE_DEVICE_TYPE(ISA16_SB16, sb16_lle_device, "sb16", "SoundBlaster 16 Audio Adapter LLE")
READ8_MEMBER( sb16_lle_device::dsp_data_r )
{
@@ -681,7 +681,7 @@ WRITE8_MEMBER( sb16_lle_device::mpu401_w )
}
sb16_lle_device::sb16_lle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_SB16, "SoundBlaster 16 Audio Adapter LLE", tag, owner, clock, "sb16", __FILE__),
+ device_t(mconfig, ISA16_SB16, tag, owner, clock),
device_isa16_card_interface(mconfig, *this),
m_ldac(*this, "ldac"),
m_rdac(*this, "rdac"),
diff --git a/src/devices/bus/isa/sb16.h b/src/devices/bus/isa/sb16.h
index a8de59fea45..8f02531ae55 100644
--- a/src/devices/bus/isa/sb16.h
+++ b/src/devices/bus/isa/sb16.h
@@ -1,14 +1,14 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef __SB16__
-#define __SB16__
+#ifndef MAME_BUS_ISA_SB16_H
+#define MAME_BUS_ISA_SB16_H
#include "isa.h"
-#include "sound/dac.h"
#include "bus/pc_joy/pc_joy.h"
#include "cpu/mcs51/mcs51.h"
#include "sound/262intf.h"
+#include "sound/dac.h"
//*********************************************************************
// TYPE DEFINITIONS
@@ -16,8 +16,7 @@
// ====================> sb16_device
-class sb16_lle_device : public device_t,
- public device_isa16_card_interface
+class sb16_lle_device : public device_t, public device_isa16_card_interface
{
public:
// construction/destruction
@@ -27,11 +26,6 @@ public:
virtual const tiny_rom_entry *device_rom_region() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
- required_device<dac_word_interface> m_ldac;
- required_device<dac_word_interface> m_rdac;
- required_device<pc_joy_device> m_joy;
- required_device<cpu_device> m_cpu;
-
READ8_MEMBER( mpu401_r );
WRITE8_MEMBER( mpu401_w );
@@ -88,6 +82,12 @@ protected:
void dack_w(int line, uint8_t data) override;
uint16_t dack16_r(int line) override;
void dack16_w(int line, uint16_t data) override;
+
+ required_device<dac_word_interface> m_ldac;
+ required_device<dac_word_interface> m_rdac;
+ required_device<pc_joy_device> m_joy;
+ required_device<cpu_device> m_cpu;
+
private:
void control_timer(bool start);
@@ -116,4 +116,4 @@ private:
extern const device_type ISA16_SB16;
-#endif
+#endif // MAME_BUS_ISA_SB16_H
diff --git a/src/devices/bus/isa/sblaster.cpp b/src/devices/bus/isa/sblaster.cpp
index 54a861a6526..235c9d92de7 100644
--- a/src/devices/bus/isa/sblaster.cpp
+++ b/src/devices/bus/isa/sblaster.cpp
@@ -21,6 +21,18 @@
#include "speaker.h"
+#define SIXTEENBIT 0x01
+#define STEREO 0x02
+#define SIGNED 0x04
+#define ADPCM2 0x08
+#define ADPCM3 0x10
+#define ADPCM4 0x20
+
+#define IRQ_DMA8 0x01
+#define IRQ_DMA16 0x02
+#define IRQ_MPU 0x04
+#define IRQ_ALL 0xff
+
/*
adlib (YM3812/OPL2 chip), part of many many soundcards (soundblaster)
@@ -1194,9 +1206,9 @@ ioport_constructor sb16_device::device_input_ports() const
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_SOUND_BLASTER_1_0 = device_creator<isa8_sblaster1_0_device>;
-const device_type ISA8_SOUND_BLASTER_1_5 = device_creator<isa8_sblaster1_5_device>;
-const device_type ISA16_SOUND_BLASTER_16 = device_creator<isa16_sblaster16_device>;
+DEFINE_DEVICE_TYPE(ISA8_SOUND_BLASTER_1_0, isa8_sblaster1_0_device, "isa_sblaster1_0", "Sound Blaster 1.0")
+DEFINE_DEVICE_TYPE(ISA8_SOUND_BLASTER_1_5, isa8_sblaster1_5_device, "isa_sblaster1_5", "Sound Blaster 1.5")
+DEFINE_DEVICE_TYPE(ISA16_SOUND_BLASTER_16, isa16_sblaster16_device, "isa_sblaster_16", "Sound Blaster 16")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -1222,8 +1234,8 @@ machine_config_constructor isa16_sblaster16_device::device_mconfig_additions() c
// LIVE DEVICE
//**************************************************************************
-sb_device::sb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const char *name, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+sb_device::sb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_serial_interface(mconfig, *this),
m_ldac(*this, "ldac"),
m_rdac(*this, "rdac"),
@@ -1233,15 +1245,15 @@ sb_device::sb_device(const machine_config &mconfig, device_type type, const char
{
}
-sb8_device::sb8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const char *name, const char *shortname, const char *source) :
- sb_device(mconfig, type, tag, owner, clock, name, shortname, source),
+sb8_device::sb8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ sb_device(mconfig, type, tag, owner, clock),
device_isa8_card_interface(mconfig, *this),
m_ym3812(*this, "ym3812")
{
}
-sb16_device::sb16_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const char *name, const char *shortname, const char *source) :
- sb_device(mconfig, type, tag, owner, clock, name, shortname, source),
+sb16_device::sb16_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ sb_device(mconfig, type, tag, owner, clock),
device_isa16_card_interface(mconfig, *this)
{
}
@@ -1251,19 +1263,19 @@ sb16_device::sb16_device(const machine_config &mconfig, device_type type, const
//-------------------------------------------------
isa8_sblaster1_0_device::isa8_sblaster1_0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- sb8_device(mconfig, ISA8_SOUND_BLASTER_1_0, tag, owner, clock, "Sound Blaster 1.0", "isa_sblaster1_0", __FILE__),
+ sb8_device(mconfig, ISA8_SOUND_BLASTER_1_0, tag, owner, clock),
m_saa1099_1(*this, "saa1099.1"),
m_saa1099_2(*this, "saa1099.2")
{
}
isa8_sblaster1_5_device::isa8_sblaster1_5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- sb8_device(mconfig, ISA8_SOUND_BLASTER_1_5, tag, owner, clock, "Sound Blaster 1.5", "isa_sblaster1_5", __FILE__)
+ sb8_device(mconfig, ISA8_SOUND_BLASTER_1_5, tag, owner, clock)
{
}
isa16_sblaster16_device::isa16_sblaster16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- sb16_device(mconfig, ISA16_SOUND_BLASTER_16, tag, owner, clock, "Sound Blaster 16", "isa_sblaster_16", __FILE__)
+ sb16_device(mconfig, ISA16_SOUND_BLASTER_16, tag, owner, clock)
{
}
diff --git a/src/devices/bus/isa/sblaster.h b/src/devices/bus/isa/sblaster.h
index 3c4b75b6655..8411a35acac 100644
--- a/src/devices/bus/isa/sblaster.h
+++ b/src/devices/bus/isa/sblaster.h
@@ -1,258 +1,245 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont, Miodrag Milanovic
-#pragma once
+#ifndef MAME_BUS_ISA_SBLASTER_H
+#define MAME_BUS_ISA_SBLASTER_H
-#ifndef __ISA_SOUND_BLASTER_H__
-#define __ISA_SOUND_BLASTER_H__
+#pragma once
-#include "bus/midi/midi.h"
#include "isa.h"
-#include "sound/dac.h"
+#include "bus/midi/midi.h"
#include "bus/pc_joy/pc_joy.h"
#include "sound/3812intf.h"
+#include "sound/dac.h"
#include "sound/saa1099.h"
-#define SIXTEENBIT 0x01
-#define STEREO 0x02
-#define SIGNED 0x04
-#define ADPCM2 0x08
-#define ADPCM3 0x10
-#define ADPCM4 0x20
-
-#define IRQ_DMA8 0x01
-#define IRQ_DMA16 0x02
-#define IRQ_MPU 0x04
-#define IRQ_ALL 0xff
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-struct sb8_dsp_state
-{
- uint8_t reset_latch;
- uint8_t rbuf_status;
- uint8_t wbuf_status;
- uint8_t fifo[16],fifo_ptr;
- uint8_t fifo_r[52],fifo_r_ptr;
- uint16_t version;
- uint8_t test_reg;
- uint8_t speaker_on;
- bool dma_no_irq;
- uint32_t prot_count;
- int32_t prot_value;
- uint32_t frequency;
- uint32_t adc_freq;
- uint32_t dma_length, dma_transferred;
- uint32_t adc_length, adc_transferred;
- uint8_t dma_autoinit;
- uint8_t data[128], d_wptr, d_rptr;
- bool dma_timer_started;
- bool dma_throttled;
- uint8_t flags;
- uint8_t irq_active;
- bool adpcm_new_ref;
- uint8_t adpcm_ref;
- uint8_t adpcm_step;
- uint8_t adpcm_count;
-};
-
-struct sb8_mixer
-{
- uint8_t status;
- uint8_t main_vol;
- uint8_t dac_vol;
- uint8_t fm_vol;
- uint8_t mic_vol;
- uint8_t in_filter;
- uint8_t stereo_sel;
- uint8_t cd_vol;
- uint8_t line_vol;
-};
-
-struct sb16_mixer
-{
- uint8_t data;
- uint8_t status;
- uint8_t main_vol[2];
- uint8_t dac_vol[2];
- uint8_t fm_vol[2];
- uint8_t cd_vol[2];
- uint8_t line_vol[2];
- uint8_t mic_vol;
- uint8_t pc_speaker_vol;
- uint8_t output_ctl;
- uint8_t input_ctl[2];
- uint8_t input_gain[2];
- uint8_t output_gain[2];
- uint8_t agc;
- uint8_t treble[2];
- uint8_t bass[2];
-};
-
// ======================> sb_device (parent)
class sb_device :
public device_t, public device_serial_interface
{
public:
- // construction/destruction
- sb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const char *name, const char *shortname, const char *source);
-
- required_device<dac_16bit_r2r_device> m_ldac;
- required_device<dac_16bit_r2r_device> m_rdac;
- required_device<pc_joy_device> m_joy;
- required_device<midi_port_device> m_mdout;
- required_ioport m_config;
-
- void process_fifo(uint8_t cmd);
- void queue(uint8_t data);
- void queue_r(uint8_t data);
- uint8_t dequeue_r();
-
- DECLARE_READ8_MEMBER(dsp_reset_r);
- DECLARE_WRITE8_MEMBER(dsp_reset_w);
- DECLARE_READ8_MEMBER(dsp_data_r);
- DECLARE_WRITE8_MEMBER(dsp_data_w);
- DECLARE_READ8_MEMBER(dsp_rbuf_status_r);
- DECLARE_READ8_MEMBER(dsp_wbuf_status_r);
- DECLARE_WRITE8_MEMBER(dsp_rbuf_status_w);
- DECLARE_WRITE8_MEMBER(dsp_cmd_w);
-
- DECLARE_WRITE_LINE_MEMBER( midi_rx_w ) { device_serial_interface::rx_w((uint8_t)state); }
+ void process_fifo(uint8_t cmd);
+ void queue(uint8_t data);
+ void queue_r(uint8_t data);
+ uint8_t dequeue_r();
+
+ DECLARE_READ8_MEMBER(dsp_reset_r);
+ DECLARE_WRITE8_MEMBER(dsp_reset_w);
+ DECLARE_READ8_MEMBER(dsp_data_r);
+ DECLARE_WRITE8_MEMBER(dsp_data_w);
+ DECLARE_READ8_MEMBER(dsp_rbuf_status_r);
+ DECLARE_READ8_MEMBER(dsp_wbuf_status_r);
+ DECLARE_WRITE8_MEMBER(dsp_rbuf_status_w);
+ DECLARE_WRITE8_MEMBER(dsp_cmd_w);
+
+ DECLARE_WRITE_LINE_MEMBER( midi_rx_w ) { device_serial_interface::rx_w((uint8_t)state); }
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- uint8_t dack_r(int line);
- void dack_w(int line, uint8_t data);
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual void drq16_w(int state) { }
- virtual void drq_w(int state) { }
- virtual void irq_w(int state, int source) { }
- virtual void mixer_reset() {}
- void adpcm_decode(uint8_t sample, int size);
-
- // serial overrides
- virtual void rcv_complete() override; // Rx completed receiving byte
- virtual void tra_complete() override; // Tx completed sending byte
- virtual void tra_callback() override; // Tx send bit
-
- static const int MIDI_RING_SIZE = 2048;
-
- struct sb8_dsp_state m_dsp;
- uint8_t m_dack_out;
- void xmit_char(uint8_t data);
- bool m_onebyte_midi, m_uart_midi, m_uart_irq, m_mpu_midi;
- int m_rx_waiting, m_tx_waiting;
- uint8_t m_recvring[MIDI_RING_SIZE];
- uint8_t m_xmitring[MIDI_RING_SIZE];
- int m_xmit_read, m_xmit_write;
- int m_recv_read, m_recv_write;
- bool m_tx_busy;
-
- emu_timer *m_timer;
+ struct sb8_dsp_state
+ {
+ uint8_t reset_latch;
+ uint8_t rbuf_status;
+ uint8_t wbuf_status;
+ uint8_t fifo[16],fifo_ptr;
+ uint8_t fifo_r[52],fifo_r_ptr;
+ uint16_t version;
+ uint8_t test_reg;
+ uint8_t speaker_on;
+ bool dma_no_irq;
+ uint32_t prot_count;
+ int32_t prot_value;
+ uint32_t frequency;
+ uint32_t adc_freq;
+ uint32_t dma_length, dma_transferred;
+ uint32_t adc_length, adc_transferred;
+ uint8_t dma_autoinit;
+ uint8_t data[128], d_wptr, d_rptr;
+ bool dma_timer_started;
+ bool dma_throttled;
+ uint8_t flags;
+ uint8_t irq_active;
+ bool adpcm_new_ref;
+ uint8_t adpcm_ref;
+ uint8_t adpcm_step;
+ uint8_t adpcm_count;
+ };
+
+ struct sb8_mixer
+ {
+ uint8_t status;
+ uint8_t main_vol;
+ uint8_t dac_vol;
+ uint8_t fm_vol;
+ uint8_t mic_vol;
+ uint8_t in_filter;
+ uint8_t stereo_sel;
+ uint8_t cd_vol;
+ uint8_t line_vol;
+ };
+
+ struct sb16_mixer
+ {
+ uint8_t data;
+ uint8_t status;
+ uint8_t main_vol[2];
+ uint8_t dac_vol[2];
+ uint8_t fm_vol[2];
+ uint8_t cd_vol[2];
+ uint8_t line_vol[2];
+ uint8_t mic_vol;
+ uint8_t pc_speaker_vol;
+ uint8_t output_ctl;
+ uint8_t input_ctl[2];
+ uint8_t input_gain[2];
+ uint8_t output_gain[2];
+ uint8_t agc;
+ uint8_t treble[2];
+ uint8_t bass[2];
+ };
+
+ // construction/destruction
+ sb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ uint8_t dack_r(int line);
+ void dack_w(int line, uint8_t data);
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual void drq16_w(int state) { }
+ virtual void drq_w(int state) { }
+ virtual void irq_w(int state, int source) { }
+ virtual void mixer_reset() {}
+ void adpcm_decode(uint8_t sample, int size);
+
+ // serial overrides
+ virtual void rcv_complete() override; // Rx completed receiving byte
+ virtual void tra_complete() override; // Tx completed sending byte
+ virtual void tra_callback() override; // Tx send bit
+
+ static constexpr unsigned MIDI_RING_SIZE = 2048;
+
+ required_device<dac_16bit_r2r_device> m_ldac;
+ required_device<dac_16bit_r2r_device> m_rdac;
+ required_device<pc_joy_device> m_joy;
+ required_device<midi_port_device> m_mdout;
+ required_ioport m_config;
+
+ struct sb8_dsp_state m_dsp;
+ uint8_t m_dack_out;
+ void xmit_char(uint8_t data);
+ bool m_onebyte_midi, m_uart_midi, m_uart_irq, m_mpu_midi;
+ int m_rx_waiting, m_tx_waiting;
+ uint8_t m_recvring[MIDI_RING_SIZE];
+ uint8_t m_xmitring[MIDI_RING_SIZE];
+ int m_xmit_read, m_xmit_write;
+ int m_recv_read, m_recv_write;
+ bool m_tx_busy;
+
+ emu_timer *m_timer;
};
class sb8_device : public sb_device,
public device_isa8_card_interface
{
public:
- // construction/destruction
- sb8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const char *name, const char *shortname, const char *source);
-
- DECLARE_READ8_MEMBER(ym3812_16_r);
- DECLARE_WRITE8_MEMBER(ym3812_16_w);
- virtual ioport_constructor device_input_ports() const override;
+ DECLARE_READ8_MEMBER(ym3812_16_r);
+ DECLARE_WRITE8_MEMBER(ym3812_16_w);
+ virtual ioport_constructor device_input_ports() const override;
protected:
- virtual void device_start() override;
- virtual void drq_w(int state) override;
- virtual void irq_w(int state, int source) override;
- virtual uint8_t dack_r(int line) override { return sb_device::dack_r(line); }
- virtual void dack_w(int line, uint8_t data) override { sb_device::dack_w(line, data); }
+ // construction/destruction
+ sb8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void drq_w(int state) override;
+ virtual void irq_w(int state, int source) override;
+ virtual uint8_t dack_r(int line) override { return sb_device::dack_r(line); }
+ virtual void dack_w(int line, uint8_t data) override { sb_device::dack_w(line, data); }
private:
- required_device<ym3812_device> m_ym3812;
+ required_device<ym3812_device> m_ym3812;
};
class isa8_sblaster1_0_device : public sb8_device
{
public:
- // construction/destruction
- isa8_sblaster1_0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa8_sblaster1_0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
- DECLARE_READ8_MEMBER(saa1099_16_r);
- DECLARE_WRITE8_MEMBER(saa1099_1_16_w);
- DECLARE_WRITE8_MEMBER(saa1099_2_16_w);
+ DECLARE_READ8_MEMBER(saa1099_16_r);
+ DECLARE_WRITE8_MEMBER(saa1099_1_16_w);
+ DECLARE_WRITE8_MEMBER(saa1099_2_16_w);
protected:
- // device-level overrides
- virtual void device_start() override;
+ // device-level overrides
+ virtual void device_start() override;
private:
- // internal state
- required_device<saa1099_device> m_saa1099_1;
- required_device<saa1099_device> m_saa1099_2;
-
+ // internal state
+ required_device<saa1099_device> m_saa1099_1;
+ required_device<saa1099_device> m_saa1099_2;
};
class isa8_sblaster1_5_device : public sb8_device
{
public:
- // construction/destruction
- isa8_sblaster1_5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa8_sblaster1_5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
protected:
- // device-level overrides
- virtual void device_start() override;
+ // device-level overrides
+ virtual void device_start() override;
};
class sb16_device : public sb_device,
public device_isa16_card_interface
{
public:
- // construction/destruction
- sb16_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const char *name, const char *shortname, const char *source);
- DECLARE_READ8_MEMBER(mpu401_r);
- DECLARE_WRITE8_MEMBER(mpu401_w);
- DECLARE_READ8_MEMBER(mixer_r);
- DECLARE_WRITE8_MEMBER(mixer_w);
- virtual ioport_constructor device_input_ports() const override;
+ DECLARE_READ8_MEMBER(mpu401_r);
+ DECLARE_WRITE8_MEMBER(mpu401_w);
+ DECLARE_READ8_MEMBER(mixer_r);
+ DECLARE_WRITE8_MEMBER(mixer_w);
+ virtual ioport_constructor device_input_ports() const override;
protected:
- virtual void device_start() override;
- virtual uint16_t dack16_r(int line) override;
- virtual uint8_t dack_r(int line) override { return sb_device::dack_r(line); }
- virtual void dack_w(int line, uint8_t data) override { sb_device::dack_w(line, data); }
- virtual void dack16_w(int line, uint16_t data) override;
- virtual void drq16_w(int state) override;
- virtual void drq_w(int state) override;
- virtual void irq_w(int state, int source) override;
- virtual void mixer_reset() override;
- void mixer_set();
- virtual void rcv_complete() override; // Rx completed receiving byte
+ // construction/destruction
+ sb16_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ virtual void device_start() override;
+ virtual uint16_t dack16_r(int line) override;
+ virtual uint8_t dack_r(int line) override { return sb_device::dack_r(line); }
+ virtual void dack_w(int line, uint8_t data) override { sb_device::dack_w(line, data); }
+ virtual void dack16_w(int line, uint16_t data) override;
+ virtual void drq16_w(int state) override;
+ virtual void drq_w(int state) override;
+ virtual void irq_w(int state, int source) override;
+ virtual void mixer_reset() override;
+ void mixer_set();
+ virtual void rcv_complete() override; // Rx completed receiving byte
private:
- struct sb16_mixer m_mixer;
+ struct sb16_mixer m_mixer;
};
class isa16_sblaster16_device : public sb16_device
{
public:
- // construction/destruction
- isa16_sblaster16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_sblaster16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
protected:
- // device-level overrides
- virtual void device_start() override;
+ // device-level overrides
+ virtual void device_start() override;
};
// device type definition
-extern const device_type ISA8_SOUND_BLASTER_1_0;
-extern const device_type ISA8_SOUND_BLASTER_1_5;
-extern const device_type ISA16_SOUND_BLASTER_16;
+DECLARE_DEVICE_TYPE(ISA8_SOUND_BLASTER_1_0, isa8_sblaster1_0_device)
+DECLARE_DEVICE_TYPE(ISA8_SOUND_BLASTER_1_5, isa8_sblaster1_5_device)
+DECLARE_DEVICE_TYPE(ISA16_SOUND_BLASTER_16, isa16_sblaster16_device)
-#endif /* __ISA_SOUND_BLASTER_H__ */
+#endif // MAME_BUS_ISA_SBLASTER_H
diff --git a/src/devices/bus/isa/sc499.cpp b/src/devices/bus/isa/sc499.cpp
index 8dda45a4535..35f945b9a9c 100644
--- a/src/devices/bus/isa/sc499.cpp
+++ b/src/devices/bus/isa/sc499.cpp
@@ -28,7 +28,7 @@ static int verbose = VERBOSE;
#define LOG3(x) { if (verbose > 2) LOG(x)}
#define SC499_CTAPE_TAG "sc499_ctape"
-extern const device_type SC499_CTAPE;
+DECLARE_DEVICE_TYPE(SC499_CTAPE, sc499_ctape_image_device)
static INPUT_PORTS_START( sc499_port )
PORT_START("IO_BASE")
@@ -190,7 +190,7 @@ machine_config_constructor sc499_device::device_mconfig_additions() const
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ISA8_SC499 = device_creator<sc499_device>;
+DEFINE_DEVICE_TYPE(ISA8_SC499, sc499_device, "sc499", "Archive SC-499")
//**************************************************************************
// CONSTANTS
@@ -313,7 +313,7 @@ const device_type ISA8_SC499 = device_creator<sc499_device>;
//-------------------------------------------------
sc499_device::sc499_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ISA8_SC499, "Archive SC-499", tag, owner, clock, "sc499", __FILE__),
+ : device_t(mconfig, ISA8_SC499, tag, owner, clock),
device_isa8_card_interface(mconfig, *this),
m_iobase(*this, "IO_BASE"),
m_irqdrq(*this, "IRQ_DRQ"), m_data(0), m_command(0), m_status(0), m_control(0), m_has_cartridge(0), m_is_writable(0), m_current_command(0), m_first_block_hack(0), m_nasty_readahead(0), m_read_block_pending(0),
@@ -1298,11 +1298,11 @@ void sc499_device::block_set_filemark()
//##########################################################################
-const device_type SC499_CTAPE = device_creator<sc499_ctape_image_device>;
+DEFINE_DEVICE_TYPE(SC499_CTAPE, sc499_ctape_image_device, "sc499_ctape", "SC-499 Cartridge Tape")
sc499_ctape_image_device::sc499_ctape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SC499_CTAPE, "Cartridge Tape", tag, owner, clock, "sc499_ctape", __FILE__),
- device_image_interface(mconfig, *this)
+ : device_t(mconfig, SC499_CTAPE, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/isa/sc499.h b/src/devices/bus/isa/sc499.h
index d2082dd028a..4f3bd24ab64 100644
--- a/src/devices/bus/isa/sc499.h
+++ b/src/devices/bus/isa/sc499.h
@@ -8,10 +8,10 @@
*
*/
-#pragma once
+#ifndef MAME_BUS_ISA_SC499_H
+#define MAME_BUS_ISA_SC499_H
-#ifndef SC499_H_
-#define SC499_H_
+#pragma once
#include "bus/isa/isa.h"
#include "softlist_dev.h"
@@ -52,7 +52,7 @@ public:
protected:
// device-level overrides
- virtual void device_start() override { };
+ virtual void device_start() override { }
std::vector<uint8_t> m_ctape_data;
};
@@ -65,6 +65,7 @@ public:
// construction/destruction
sc499_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
required_ioport m_iobase;
required_ioport m_irqdrq;
@@ -154,6 +155,6 @@ private:
// device type definition
-extern const device_type ISA8_SC499;
+DECLARE_DEVICE_TYPE(ISA8_SC499, sc499_device)
-#endif /* SC499_H_ */
+#endif // MAME_BUS_ISA_SC499_H
diff --git a/src/devices/bus/isa/side116.cpp b/src/devices/bus/isa/side116.cpp
index 785703f07f8..290143aa2fc 100644
--- a/src/devices/bus/isa/side116.cpp
+++ b/src/devices/bus/isa/side116.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ISA8_SIDE116 = device_creator<side116_device>;
+DEFINE_DEVICE_TYPE(ISA8_SIDE116, side116_device, "side116", "Acculogic sIDE-1/16 IDE Disk Controller")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -88,7 +88,7 @@ const tiny_rom_entry *side116_device::device_rom_region() const
//-------------------------------------------------
side116_device::side116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_SIDE116, "Acculogic sIDE-1/16 IDE Disk Controller", tag, owner, clock, "side116", __FILE__),
+ device_t(mconfig, ISA8_SIDE116, tag, owner, clock),
device_isa8_card_interface( mconfig, *this ),
m_ata(*this, "ata"),
m_config(*this, "configuration"),
diff --git a/src/devices/bus/isa/side116.h b/src/devices/bus/isa/side116.h
index 993d2bef258..00095bf6279 100644
--- a/src/devices/bus/isa/side116.h
+++ b/src/devices/bus/isa/side116.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_SIDE116_H
+#define MAME_BUS_ISA_SIDE116_H
-#ifndef __ISA_SIDE116_H__
-#define __ISA_SIDE116_H__
+#pragma once
#include "machine/ataintf.h"
#include "isa.h"
@@ -23,8 +23,7 @@
// ======================> side116_device
-class side116_device : public device_t,
- public device_isa8_card_interface
+class side116_device : public device_t, public device_isa8_card_interface
{
public:
// construction/destruction
@@ -43,7 +42,6 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual void device_config_complete() override { m_shortname = "side116"; }
private:
required_device<ata_interface_device> m_ata;
@@ -53,6 +51,6 @@ private:
// device type definition
-extern const device_type ISA8_SIDE116;
+DECLARE_DEVICE_TYPE(ISA8_SIDE116, side116_device)
-#endif
+#endif // MAME_BUS_ISA_SIDE116_H
diff --git a/src/devices/bus/isa/ssi2001.cpp b/src/devices/bus/isa/ssi2001.cpp
index 1d2669c8420..c673ed21a81 100644
--- a/src/devices/bus/isa/ssi2001.cpp
+++ b/src/devices/bus/isa/ssi2001.cpp
@@ -8,7 +8,7 @@
#include "speaker.h"
-const device_type ISA8_SSI2001 = device_creator<ssi2001_device>;
+DEFINE_DEVICE_TYPE(ISA8_SSI2001, ssi2001_device, "ssi2001", "Innovation SSI-2001 Audio Adapter")
static MACHINE_CONFIG_FRAGMENT( ssi2001 )
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -23,7 +23,7 @@ machine_config_constructor ssi2001_device::device_mconfig_additions() const
}
ssi2001_device::ssi2001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_SSI2001, "Innovation SSI-2001 Audio Adapter", tag, owner, clock, "ssi2001", __FILE__),
+ device_t(mconfig, ISA8_SSI2001, tag, owner, clock),
device_isa8_card_interface(mconfig, *this),
m_joy(*this, "pc_joy"),
m_sid(*this, "sid6581")
diff --git a/src/devices/bus/isa/ssi2001.h b/src/devices/bus/isa/ssi2001.h
index e141c891bc0..3facf845c03 100644
--- a/src/devices/bus/isa/ssi2001.h
+++ b/src/devices/bus/isa/ssi2001.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef __SSI2001__
-#define __SSI2001__
+#ifndef MAME_BUS_ISA_SSI2001_H
+#define MAME_BUS_ISA_SSI2001_H
+
+#pragma once
#include "isa.h"
#include "sound/mos6581.h"
@@ -23,17 +25,17 @@ public:
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- required_device<pc_joy_device> m_joy;
- required_device<mos6581_device> m_sid;
-
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+
+ required_device<pc_joy_device> m_joy;
+ required_device<mos6581_device> m_sid;
};
// device type definition
-extern const device_type ISA8_SSI2001;
+DECLARE_DEVICE_TYPE(ISA8_SSI2001, ssi2001_device)
-#endif
+#endif // MAME_BUS_ISA_SSI2001_H
diff --git a/src/devices/bus/isa/stereo_fx.cpp b/src/devices/bus/isa/stereo_fx.cpp
index 079c4d15b75..fef1737b6b0 100644
--- a/src/devices/bus/isa/stereo_fx.cpp
+++ b/src/devices/bus/isa/stereo_fx.cpp
@@ -12,7 +12,7 @@
#include "speaker.h"
-const device_type ISA8_STEREO_FX = device_creator<stereo_fx_device>;
+DEFINE_DEVICE_TYPE(ISA8_STEREO_FX, stereo_fx_device, "stereo_fx", "ATi Stereo F/X Audio Adapter")
READ8_MEMBER( stereo_fx_device::dev_dsp_data_r )
{
@@ -194,7 +194,7 @@ READ8_MEMBER( stereo_fx_device::invalid_r )
}
stereo_fx_device::stereo_fx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_STEREO_FX, "ATI Stereo F/X Audio Adapter", tag, owner, clock, "stereo_fx", __FILE__),
+ device_t(mconfig, ISA8_STEREO_FX, tag, owner, clock),
device_isa8_card_interface(mconfig, *this),
m_joy(*this, "pc_joy"),
m_cpu(*this, "stereo_fx_cpu"), m_data_in(false), m_in_byte(0), m_data_out(false), m_out_byte(0), m_port20(0), m_port00(0), m_timer(nullptr), m_t0(0)
diff --git a/src/devices/bus/isa/stereo_fx.h b/src/devices/bus/isa/stereo_fx.h
index 5db2e1927c4..738841e9178 100644
--- a/src/devices/bus/isa/stereo_fx.h
+++ b/src/devices/bus/isa/stereo_fx.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef __STEREO_FX__
-#define __STEREO_FX__
+#ifndef MAME_BUS_ISA_STEREO_FX_H
+#define MAME_BUS_ISA_STEREO_FX_H
+
+#pragma once
#include "isa.h"
#include "bus/pc_joy/pc_joy.h"
@@ -25,9 +27,6 @@ public:
virtual const tiny_rom_entry *device_rom_region() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
- required_device<pc_joy_device> m_joy;
- required_device<cpu_device> m_cpu;
-
// mcu ports
DECLARE_READ8_MEMBER( dev_dsp_data_r );
DECLARE_WRITE8_MEMBER( dev_dsp_data_w );
@@ -56,6 +55,10 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
uint8_t dack_r(int line) override;
void dack_w(int line, uint8_t data) override;
+
+ required_device<pc_joy_device> m_joy;
+ required_device<cpu_device> m_cpu;
+
private:
// internal state
bool m_data_in;
@@ -72,6 +75,6 @@ private:
// device type definition
-extern const device_type ISA8_STEREO_FX;
+DECLARE_DEVICE_TYPE(ISA8_STEREO_FX, stereo_fx_device)
-#endif
+#endif // MAME_BUS_ISA_STEREO_FX_H
diff --git a/src/devices/bus/isa/svga_cirrus.cpp b/src/devices/bus/isa/svga_cirrus.cpp
index f5f117e76bb..587f578a90f 100644
--- a/src/devices/bus/isa/svga_cirrus.cpp
+++ b/src/devices/bus/isa/svga_cirrus.cpp
@@ -22,8 +22,8 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA16_SVGA_CIRRUS = device_creator<isa16_svga_cirrus_device>;
-const device_type ISA16_SVGA_CIRRUS_GD542X = device_creator<isa16_svga_cirrus_gd542x_device>;
+DEFINE_DEVICE_TYPE(ISA16_SVGA_CIRRUS, isa16_svga_cirrus_device, "dm_clgd5430", "Diamond Speedstar Pro SE ISA Graphics Card (BIOS v1.00)")
+DEFINE_DEVICE_TYPE(ISA16_SVGA_CIRRUS_GD542X, isa16_svga_cirrus_gd542x_device, "clgd542x", "Generic Cirrus Logic CD542 Graphics Card (BIOS v1.20)")
static MACHINE_CONFIG_FRAGMENT( vga_cirrus )
MCFG_SCREEN_ADD("screen", RASTER)
@@ -63,8 +63,9 @@ const tiny_rom_entry *isa16_svga_cirrus_device::device_rom_region() const
//-------------------------------------------------
isa16_svga_cirrus_device::isa16_svga_cirrus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_SVGA_CIRRUS, "Diamond Speedstar Pro SE ISA Graphics Card (BIOS v1.00)", tag, owner, clock, "dm_clgd5430", __FILE__),
- device_isa16_card_interface(mconfig, *this), m_vga(nullptr)
+ device_t(mconfig, ISA16_SVGA_CIRRUS, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_vga(nullptr)
{
}
@@ -149,8 +150,9 @@ const tiny_rom_entry *isa16_svga_cirrus_gd542x_device::device_rom_region() const
//-------------------------------------------------
isa16_svga_cirrus_gd542x_device::isa16_svga_cirrus_gd542x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_SVGA_CIRRUS_GD542X, "Generic Cirrus Logic GD542x Graphics Card (BIOS v1.20)", tag, owner, clock, "clgd542x", __FILE__),
- device_isa16_card_interface(mconfig, *this), m_vga(nullptr)
+ device_t(mconfig, ISA16_SVGA_CIRRUS_GD542X, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_vga(nullptr)
{
}
diff --git a/src/devices/bus/isa/svga_cirrus.h b/src/devices/bus/isa/svga_cirrus.h
index 8207b24252a..3d5f3f5678d 100644
--- a/src/devices/bus/isa/svga_cirrus.h
+++ b/src/devices/bus/isa/svga_cirrus.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Barry Rodewald
-#pragma once
+#ifndef MAME_BUS_ISA_SVGA_CIRRUS_H
+#define MAME_BUS_ISA_SVGA_CIRRUS_H
-#ifndef __ISA_SVGA_CIRRUS_H__
-#define __ISA_SVGA_CIRRUS_H__
+#pragma once
#include "isa.h"
#include "video/clgd542x.h"
@@ -17,20 +17,20 @@ class isa16_svga_cirrus_device :
public device_isa16_card_interface
{
public:
- // construction/destruction
- isa16_svga_cirrus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_svga_cirrus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- cirrus_gd5430_device *m_vga;
+ cirrus_gd5430_device *m_vga;
};
class isa16_svga_cirrus_gd542x_device :
@@ -38,25 +38,25 @@ class isa16_svga_cirrus_gd542x_device :
public device_isa16_card_interface
{
public:
- // construction/destruction
- isa16_svga_cirrus_gd542x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_svga_cirrus_gd542x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- cirrus_gd5428_device *m_vga;
+ cirrus_gd5428_device *m_vga;
};
// device type definition
-extern const device_type ISA16_SVGA_CIRRUS;
-extern const device_type ISA16_SVGA_CIRRUS_GD542X;
+DECLARE_DEVICE_TYPE(ISA16_SVGA_CIRRUS, isa16_svga_cirrus_device)
+DECLARE_DEVICE_TYPE(ISA16_SVGA_CIRRUS_GD542X, isa16_svga_cirrus_gd542x_device)
-#endif /* __ISA_VGA_H__ */
+#endif // MAME_BUS_ISA_SVGA_CIRRUS_H
diff --git a/src/devices/bus/isa/svga_s3.cpp b/src/devices/bus/isa/svga_s3.cpp
index 1414022b132..cbb74d20a76 100644
--- a/src/devices/bus/isa/svga_s3.cpp
+++ b/src/devices/bus/isa/svga_s3.cpp
@@ -33,7 +33,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA16_SVGA_S3 = device_creator<isa16_svga_s3_device>;
+DEFINE_DEVICE_TYPE(ISA16_SVGA_S3, isa16_svga_s3_device, "s3_764", "Number Nine 9FX Vision 330 (S3 764)")
static MACHINE_CONFIG_FRAGMENT( vga_s3 )
@@ -74,8 +74,9 @@ const tiny_rom_entry *isa16_svga_s3_device::device_rom_region() const
//-------------------------------------------------
isa16_svga_s3_device::isa16_svga_s3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_SVGA_S3, "Number Nine 9FX Vision 330 (S3 764) Graphics Card", tag, owner, clock, "s3_764", __FILE__),
- device_isa16_card_interface(mconfig, *this), m_vga(nullptr), m_8514(nullptr)
+ device_t(mconfig, ISA16_SVGA_S3, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_vga(nullptr), m_8514(nullptr)
{
}
@@ -145,7 +146,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA16_S3VIRGE = device_creator<isa16_s3virge_device>;
+DEFINE_DEVICE_TYPE(ISA16_S3VIRGE, isa16_s3virge_device, "s3virge", "S3 ViRGE Graphics Card")
static MACHINE_CONFIG_FRAGMENT( vga_s3virge )
@@ -186,8 +187,9 @@ const tiny_rom_entry *isa16_s3virge_device::device_rom_region() const
//-------------------------------------------------
isa16_s3virge_device::isa16_s3virge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_S3VIRGE, "S3 ViRGE Graphics Card", tag, owner, clock, "s3virge", __FILE__),
- device_isa16_card_interface(mconfig, *this), m_vga(nullptr)
+ device_t(mconfig, ISA16_S3VIRGE, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_vga(nullptr)
{
}
@@ -242,7 +244,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA16_S3VIRGEDX = device_creator<isa16_s3virgedx_device>;
+DEFINE_DEVICE_TYPE(ISA16_S3VIRGEDX, isa16_s3virgedx_device, "s3virgedx", "S3 ViRGE/DX Graphics Card")
//-------------------------------------------------
@@ -273,8 +275,9 @@ const tiny_rom_entry *isa16_s3virgedx_device::device_rom_region() const
//-------------------------------------------------
isa16_s3virgedx_device::isa16_s3virgedx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_S3VIRGEDX, "S3 ViRGE/DX Graphics Card", tag, owner, clock, "s3virgedx", __FILE__),
- device_isa16_card_interface(mconfig, *this), m_vga(nullptr)
+ device_t(mconfig, ISA16_S3VIRGEDX, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_vga(nullptr)
{
}
@@ -330,7 +333,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA16_DMS3D2KPRO = device_creator<isa16_stealth3d2kpro_device>;
+DEFINE_DEVICE_TYPE(ISA16_DMS3D2KPRO, isa16_stealth3d2kpro_device, "dms3d2kp", "Diamond Stealth 3D 2000 Pro")
//-------------------------------------------------
@@ -361,8 +364,9 @@ const tiny_rom_entry *isa16_stealth3d2kpro_device::device_rom_region() const
//-------------------------------------------------
isa16_stealth3d2kpro_device::isa16_stealth3d2kpro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_DMS3D2KPRO, "Diamond Stealth 3D 2000 Pro", tag, owner, clock, "dms3d2kp", __FILE__),
- device_isa16_card_interface(mconfig, *this), m_vga(nullptr)
+ device_t(mconfig, ISA16_DMS3D2KPRO, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_vga(nullptr)
{
}
diff --git a/src/devices/bus/isa/svga_s3.h b/src/devices/bus/isa/svga_s3.h
index 0bd4cfc48e3..fbfba9bd35b 100644
--- a/src/devices/bus/isa/svga_s3.h
+++ b/src/devices/bus/isa/svga_s3.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Barry Rodewald
-#pragma once
+#ifndef MAME_BUS_ISA_SVGA_S3_H
+#define MAME_BUS_ISA_SVGA_S3_H
-#ifndef __ISA_SVGA_S3_H__
-#define __ISA_SVGA_S3_H__
+#pragma once
#include "isa.h"
#include "video/pc_vga.h"
@@ -20,21 +20,21 @@ class isa16_svga_s3_device :
public device_isa16_card_interface
{
public:
- // construction/destruction
- isa16_svga_s3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_svga_s3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- s3_vga_device *m_vga;
- ibm8514a_device *m_8514;
+ s3_vga_device *m_vga;
+ ibm8514a_device *m_8514;
};
class isa16_s3virge_device :
@@ -42,20 +42,20 @@ class isa16_s3virge_device :
public device_isa16_card_interface
{
public:
- // construction/destruction
- isa16_s3virge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_s3virge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- s3virge_vga_device *m_vga;
+ s3virge_vga_device *m_vga;
};
class isa16_s3virgedx_device :
@@ -63,20 +63,20 @@ class isa16_s3virgedx_device :
public device_isa16_card_interface
{
public:
- // construction/destruction
- isa16_s3virgedx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_s3virgedx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- s3virgedx_vga_device *m_vga;
+ s3virgedx_vga_device *m_vga;
};
class isa16_stealth3d2kpro_device :
@@ -84,27 +84,27 @@ class isa16_stealth3d2kpro_device :
public device_isa16_card_interface
{
public:
- // construction/destruction
- isa16_stealth3d2kpro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_stealth3d2kpro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- s3virgedx_vga_device *m_vga;
+ s3virgedx_vga_device *m_vga;
};
// device type definition
-extern const device_type ISA16_SVGA_S3;
-extern const device_type ISA16_S3VIRGE;
-extern const device_type ISA16_S3VIRGEDX;
-extern const device_type ISA16_DMS3D2KPRO;
+DECLARE_DEVICE_TYPE(ISA16_SVGA_S3, isa16_svga_s3_device)
+DECLARE_DEVICE_TYPE(ISA16_S3VIRGE, isa16_s3virge_device)
+DECLARE_DEVICE_TYPE(ISA16_S3VIRGEDX, isa16_s3virgedx_device)
+DECLARE_DEVICE_TYPE(ISA16_DMS3D2KPRO, isa16_stealth3d2kpro_device)
-#endif /* __ISA_VGA_H__ */
+#endif // MAME_BUS_ISA_SVGA_S3_H
diff --git a/src/devices/bus/isa/svga_trident.cpp b/src/devices/bus/isa/svga_trident.cpp
index 505737ec8e6..1c7e8cf7074 100644
--- a/src/devices/bus/isa/svga_trident.cpp
+++ b/src/devices/bus/isa/svga_trident.cpp
@@ -23,7 +23,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA16_SVGA_TGUI9680 = device_creator<isa16_svga_tgui9680_device>;
+DEFINE_DEVICE_TYPE(ISA16_SVGA_TGUI9680, isa16_svga_tgui9680_device, "igui9680", "Trident TGUI9680 Graphics Card (BIOS X5.5 (02) 02/13/96)")
static MACHINE_CONFIG_FRAGMENT( vga_trident )
@@ -64,8 +64,9 @@ const tiny_rom_entry *isa16_svga_tgui9680_device::device_rom_region() const
//-------------------------------------------------
isa16_svga_tgui9680_device::isa16_svga_tgui9680_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_SVGA_TGUI9680, "Trident TGUI9680 Graphics Card (BIOS X5.5 (02) 02/13/96)", tag, owner, clock, "tgui9680", __FILE__),
- device_isa16_card_interface(mconfig, *this), m_vga(nullptr)
+ device_t(mconfig, ISA16_SVGA_TGUI9680, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_vga(nullptr)
{
}
diff --git a/src/devices/bus/isa/svga_trident.h b/src/devices/bus/isa/svga_trident.h
index 11885c0e048..7cfac58b4f6 100644
--- a/src/devices/bus/isa/svga_trident.h
+++ b/src/devices/bus/isa/svga_trident.h
@@ -6,8 +6,8 @@
* Created on: 6/09/2014
*/
-#ifndef SVGA_TRIDENT_H_
-#define SVGA_TRIDENT_H_
+#ifndef MAME_BUS_ISA_SVGA_TRIDENT_H
+#define MAME_BUS_ISA_SVGA_TRIDENT_H
#include "isa.h"
#include "video/pc_vga.h"
@@ -24,25 +24,25 @@ class isa16_svga_tgui9680_device :
public device_isa16_card_interface
{
public:
- // construction/destruction
- isa16_svga_tgui9680_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_svga_tgui9680_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- trident_vga_device *m_vga;
+ trident_vga_device *m_vga;
};
// device type definition
-extern const device_type ISA16_SVGA_TGUI9680;
+DECLARE_DEVICE_TYPE(ISA16_SVGA_TGUI9680, isa16_svga_tgui9680_device)
-#endif /* SVGA_TRIDENT_H_ */
+#endif // MAME_BUS_ISA_SVGA_TRIDENT_H
diff --git a/src/devices/bus/isa/svga_tseng.cpp b/src/devices/bus/isa/svga_tseng.cpp
index 8fa56a6c4ff..2fe25a14514 100644
--- a/src/devices/bus/isa/svga_tseng.cpp
+++ b/src/devices/bus/isa/svga_tseng.cpp
@@ -22,7 +22,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_SVGA_ET4K = device_creator<isa8_svga_et4k_device>;
+DEFINE_DEVICE_TYPE(ISA8_SVGA_ET4K, isa8_svga_et4k_device, "et4000", "SVGA Tseng ET4000 Graphics Card")
static MACHINE_CONFIG_FRAGMENT( vga_tseng )
@@ -63,8 +63,9 @@ const tiny_rom_entry *isa8_svga_et4k_device::device_rom_region() const
//-------------------------------------------------
isa8_svga_et4k_device::isa8_svga_et4k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_SVGA_ET4K, "SVGA Tseng ET4000 Graphics Card", tag, owner, clock, "et4000", __FILE__),
- device_isa8_card_interface(mconfig, *this), m_vga(nullptr)
+ device_t(mconfig, ISA8_SVGA_ET4K, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this),
+ m_vga(nullptr)
{
}
diff --git a/src/devices/bus/isa/svga_tseng.h b/src/devices/bus/isa/svga_tseng.h
index 8c39db16fdf..6f430af17d6 100644
--- a/src/devices/bus/isa/svga_tseng.h
+++ b/src/devices/bus/isa/svga_tseng.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Barry Rodewald
-#pragma once
+#ifndef MAME_BUS_ISA_SVGA_TSENG_H
+#define MAME_BUS_ISA_SVGA_TSENG_H
-#ifndef __ISA_SVGA_ET4K_H__
-#define __ISA_SVGA_ET4K_H__
+#pragma once
#include "isa.h"
#include "video/pc_vga.h"
@@ -19,24 +19,24 @@ class isa8_svga_et4k_device :
public device_isa8_card_interface
{
public:
- // construction/destruction
- isa8_svga_et4k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa8_svga_et4k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- tseng_vga_device *m_vga;
+ tseng_vga_device *m_vga;
};
// device type definition
-extern const device_type ISA8_SVGA_ET4K;
+DECLARE_DEVICE_TYPE(ISA8_SVGA_ET4K, isa8_svga_et4k_device)
-#endif /* __ISA_SVGA_ET4K_H__ */
+#endif // MAME_BUS_ISA_SVGA_TSENG_H
diff --git a/src/devices/bus/isa/trident.cpp b/src/devices/bus/isa/trident.cpp
index 72ff1f21fbd..287ef49b40a 100644
--- a/src/devices/bus/isa/trident.cpp
+++ b/src/devices/bus/isa/trident.cpp
@@ -15,27 +15,27 @@
#include "screen.h"
-const device_type TRIDENT_VGA = device_creator<tgui9860_device>;
-const device_type TVGA9000_VGA = device_creator<tvga9000_device>;
+DEFINE_DEVICE_TYPE(TRIDENT_VGA, tgui9860_device, "trident_vga", "Trident TGUI9860")
+DEFINE_DEVICE_TYPE(TVGA9000_VGA, tvga9000_device, "tvga9000_vga", "Trident TVGA9000")
#define CRTC_PORT_ADDR ((vga.miscellaneous_output&1)?0x3d0:0x3b0)
#define LOG (1)
#define LOG_ACCEL (1)
-trident_vga_device::trident_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : svga_device(mconfig, type, name, tag, owner, clock, shortname, source)
+trident_vga_device::trident_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : svga_device(mconfig, type, tag, owner, clock)
{
}
tgui9860_device::tgui9860_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : trident_vga_device(mconfig, TRIDENT_VGA, "Trident TGUI9680", tag, owner, clock, "trident_vga", __FILE__)
+ : trident_vga_device(mconfig, TRIDENT_VGA, tag, owner, clock)
{
m_version = 0xd3; // 0xd3 identifies at TGUI9660XGi (set to 0xe3 to identify at TGUI9440AGi)
}
tvga9000_device::tvga9000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : trident_vga_device(mconfig, TVGA9000_VGA, "Trident TVGA9000", tag, owner, clock, "tvga9000_vga", __FILE__)
+ : trident_vga_device(mconfig, TVGA9000_VGA, tag, owner, clock)
{
m_version = 0x43;
}
diff --git a/src/devices/bus/isa/trident.h b/src/devices/bus/isa/trident.h
index 63ef51aa36a..eadd479f14c 100644
--- a/src/devices/bus/isa/trident.h
+++ b/src/devices/bus/isa/trident.h
@@ -5,8 +5,10 @@
*
*/
-#ifndef TRIDENT_H_
-#define TRIDENT_H_
+#ifndef MAME_BUS_ISA_TRIDENT_H
+#define MAME_BUS_ISA_TRIDENT_H
+
+#pragma once
#include "video/pc_vga.h"
@@ -15,9 +17,6 @@
class trident_vga_device : public svga_device
{
public:
- // construction/destruction
- trident_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
virtual READ8_MEMBER(port_03c0_r) override;
virtual WRITE8_MEMBER(port_03c0_w) override;
virtual READ8_MEMBER(port_03d0_r) override;
@@ -38,6 +37,9 @@ public:
virtual uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) override;
protected:
+ // construction/destruction
+ trident_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -160,7 +162,7 @@ public:
};
// device type definition
-extern const device_type TRIDENT_VGA;
-extern const device_type TVGA9000_VGA;
+DECLARE_DEVICE_TYPE(TRIDENT_VGA, tgui9860_device)
+DECLARE_DEVICE_TYPE(TVGA9000_VGA, tvga9000_device)
-#endif /* TRIDENT_H_ */
+#endif // MAME_BUS_ISA_TRIDENT_H
diff --git a/src/devices/bus/isa/vga.cpp b/src/devices/bus/isa/vga.cpp
index 24c7d457958..d0e49ce0d56 100644
--- a/src/devices/bus/isa/vga.cpp
+++ b/src/devices/bus/isa/vga.cpp
@@ -19,7 +19,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_VGA = device_creator<isa8_vga_device>;
+DEFINE_DEVICE_TYPE(ISA8_VGA, isa8_vga_device, "ibm_vga", "IBM VGA Graphics Card")
//-------------------------------------------------
@@ -50,8 +50,8 @@ const tiny_rom_entry *isa8_vga_device::device_rom_region() const
//-------------------------------------------------
isa8_vga_device::isa8_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_VGA, "IBM VGA Graphics Card", tag, owner, clock, "ibm_vga", __FILE__),
- device_isa8_card_interface(mconfig, *this), m_vga(nullptr)
+ device_t(mconfig, ISA8_VGA, tag, owner, clock),
+ device_isa8_card_interface(mconfig, *this), m_vga(nullptr)
{
}
diff --git a/src/devices/bus/isa/vga.h b/src/devices/bus/isa/vga.h
index 8baf7e0d2fc..3d306be8d6b 100644
--- a/src/devices/bus/isa/vga.h
+++ b/src/devices/bus/isa/vga.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Barry Rodewald
-#pragma once
+#ifndef MAME_BUS_ISA_VGA_H
+#define MAME_BUS_ISA_VGA_H
-#ifndef __ISA_VGA_H__
-#define __ISA_VGA_H__
+#pragma once
#include "isa.h"
#include "video/pc_vga.h"
@@ -19,24 +19,24 @@ class isa8_vga_device :
public device_isa8_card_interface
{
public:
- // construction/destruction
- isa8_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa8_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- vga_device *m_vga;
+ vga_device *m_vga;
};
// device type definition
-extern const device_type ISA8_VGA;
+DECLARE_DEVICE_TYPE(ISA8_VGA, isa8_vga_device)
-#endif /* __ISA_VGA_H__ */
+#endif // MAME_BUS_ISA_VGA_H
diff --git a/src/devices/bus/isa/vga_ati.cpp b/src/devices/bus/isa/vga_ati.cpp
index 3452f2eddf3..12a33581c77 100644
--- a/src/devices/bus/isa/vga_ati.cpp
+++ b/src/devices/bus/isa/vga_ati.cpp
@@ -68,9 +68,9 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA16_VGA_GFXULTRA = device_creator<isa16_vga_gfxultra_device>;
-const device_type ISA16_SVGA_GFXULTRAPRO = device_creator<isa16_vga_gfxultrapro_device>;
-const device_type ISA16_SVGA_MACH64 = device_creator<isa16_vga_mach64_device>;
+DEFINE_DEVICE_TYPE(ISA16_VGA_GFXULTRA, isa16_vga_gfxultra_device, "gfxulra", "ATi Graphics Ultra Card")
+DEFINE_DEVICE_TYPE(ISA16_SVGA_GFXULTRAPRO, isa16_vga_gfxultrapro_device, "gfxxultrp", "ATi Graphics Ultra Pro Card")
+DEFINE_DEVICE_TYPE(ISA16_SVGA_MACH64, isa16_vga_mach64_device, "mach64isa", "ATi mach64 Card")
static MACHINE_CONFIG_FRAGMENT( vga_ati )
MCFG_SCREEN_ADD("screen", RASTER)
@@ -150,20 +150,23 @@ const tiny_rom_entry *isa16_vga_mach64_device::device_rom_region() const
//-------------------------------------------------
isa16_vga_gfxultra_device::isa16_vga_gfxultra_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_VGA_GFXULTRA, "ATi Graphics Ultra Card", tag, owner, clock, "gfxultra", __FILE__),
- device_isa16_card_interface(mconfig, *this), m_vga(nullptr), m_8514(nullptr)
+ device_t(mconfig, ISA16_VGA_GFXULTRA, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_vga(nullptr), m_8514(nullptr)
{
}
isa16_vga_gfxultrapro_device::isa16_vga_gfxultrapro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_SVGA_GFXULTRAPRO, "ATi Graphics Ultra Pro Card", tag, owner, clock, "gfxultrp", __FILE__),
- device_isa16_card_interface(mconfig, *this), m_vga(nullptr)
+ device_t(mconfig, ISA16_SVGA_GFXULTRAPRO, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_vga(nullptr)
{
}
isa16_vga_mach64_device::isa16_vga_mach64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA16_SVGA_MACH64, "ATi mach64 Card", tag, owner, clock, "mach64isa", __FILE__),
- device_isa16_card_interface(mconfig, *this), m_vga(nullptr)
+ device_t(mconfig, ISA16_SVGA_MACH64, tag, owner, clock),
+ device_isa16_card_interface(mconfig, *this),
+ m_vga(nullptr)
{
}
diff --git a/src/devices/bus/isa/vga_ati.h b/src/devices/bus/isa/vga_ati.h
index 1dee4d1e2d2..33cf8718e79 100644
--- a/src/devices/bus/isa/vga_ati.h
+++ b/src/devices/bus/isa/vga_ati.h
@@ -7,10 +7,10 @@
*
* Created on: 9/09/2012
*/
-#pragma once
+#ifndef MAME_BUS_ISA_VGA_ATI_H
+#define MAME_BUS_ISA_VGA_ATI_H
-#ifndef ISA_VGA_ATI_H_
-#define ISA_VGA_ATI_H_
+#pragma once
#include "isa.h"
#include "video/pc_vga.h"
@@ -27,21 +27,21 @@ class isa16_vga_gfxultra_device :
public device_isa16_card_interface
{
public:
- // construction/destruction
- isa16_vga_gfxultra_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_vga_gfxultra_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- ati_vga_device *m_vga;
- mach8_device *m_8514;
+ ati_vga_device *m_vga;
+ mach8_device *m_8514;
};
class isa16_vga_gfxultrapro_device :
@@ -49,20 +49,20 @@ class isa16_vga_gfxultrapro_device :
public device_isa16_card_interface
{
public:
- // construction/destruction
- isa16_vga_gfxultrapro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_vga_gfxultrapro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- mach32_device *m_vga;
+ mach32_device *m_vga;
};
class isa16_vga_mach64_device :
@@ -70,27 +70,27 @@ class isa16_vga_mach64_device :
public device_isa16_card_interface
{
public:
- // construction/destruction
- isa16_vga_mach64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ isa16_vga_mach64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ8_MEMBER(input_port_0_r);
+ DECLARE_READ8_MEMBER(input_port_0_r);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- mach64_device *m_vga;
+ mach64_device *m_vga;
};
// device type definition
-extern const device_type ISA16_VGA_GFXULTRA;
-extern const device_type ISA16_SVGA_GFXULTRAPRO;
-extern const device_type ISA16_SVGA_MACH64;
+DECLARE_DEVICE_TYPE(ISA16_VGA_GFXULTRA, isa16_vga_gfxultra_device)
+DECLARE_DEVICE_TYPE(ISA16_SVGA_GFXULTRAPRO, isa16_vga_gfxultrapro_device)
+DECLARE_DEVICE_TYPE(ISA16_SVGA_MACH64, isa16_vga_mach64_device)
-#endif /* ISA_VGA_ATI_H_ */
+#endif // MAME_BUS_ISA_VGA_ATI_H
diff --git a/src/devices/bus/isa/wd1002a_wx1.cpp b/src/devices/bus/isa/wd1002a_wx1.cpp
index 4ce188fda51..2e86d3b0523 100644
--- a/src/devices/bus/isa/wd1002a_wx1.cpp
+++ b/src/devices/bus/isa/wd1002a_wx1.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ISA8_WD1002A_WX1 = device_creator<isa8_wd1002a_wx1_device>;
+DEFINE_DEVICE_TYPE(ISA8_WD1002A_WX1, isa8_wd1002a_wx1_device, "wd1002a_wx1", "WD1002A-WX1")
//-------------------------------------------------
@@ -47,8 +47,8 @@ const tiny_rom_entry *isa8_wd1002a_wx1_device::device_rom_region() const
//-------------------------------------------------
isa8_wd1002a_wx1_device::isa8_wd1002a_wx1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ISA8_WD1002A_WX1, "WD1002A-WX1", tag, owner, clock, "wd1002a_wx1", __FILE__),
- device_isa8_card_interface( mconfig, *this )
+ : device_t(mconfig, ISA8_WD1002A_WX1, tag, owner, clock)
+ , device_isa8_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/isa/wd1002a_wx1.h b/src/devices/bus/isa/wd1002a_wx1.h
index a58f75178d7..7a66db54dd5 100644
--- a/src/devices/bus/isa/wd1002a_wx1.h
+++ b/src/devices/bus/isa/wd1002a_wx1.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA_WD1002A_WX1_H
+#define MAME_BUS_ISA_WD1002A_WX1_H
-#ifndef __ISA_WD1002A_WX1__
-#define __ISA_WD1002A_WX1__
+#pragma once
#include "isa.h"
@@ -39,7 +39,7 @@ protected:
// device type definition
-extern const device_type ISA8_WD1002A_WX1;
+DECLARE_DEVICE_TYPE(ISA8_WD1002A_WX1, isa8_wd1002a_wx1_device)
-#endif
+#endif // MAME_BUS_ISA_WD1002A_WX1_H
diff --git a/src/devices/bus/isa/wdxt_gen.cpp b/src/devices/bus/isa/wdxt_gen.cpp
index daef4a36704..8831e42ca19 100644
--- a/src/devices/bus/isa/wdxt_gen.cpp
+++ b/src/devices/bus/isa/wdxt_gen.cpp
@@ -62,7 +62,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ISA8_WDXT_GEN = device_creator<wdxt_gen_device>;
+DEFINE_DEVICE_TYPE(ISA8_WDXT_GEN, wdxt_gen_device, "wdxt_gen", "Western Digital WDXT-GEN (Amstrad PC1512/1640)")
//-------------------------------------------------
@@ -193,11 +193,11 @@ machine_config_constructor wdxt_gen_device::device_mconfig_additions() const
//-------------------------------------------------
wdxt_gen_device::wdxt_gen_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ISA8_WDXT_GEN, "Western Digital WDXT-GEN (Amstrad PC1512/1640)", tag, owner, clock, "wdxt_gen", __FILE__),
- device_isa8_card_interface(mconfig, *this),
- m_maincpu(*this, WD1015_TAG),
- m_host(*this, WD11C00_17_TAG),
- m_hdc(*this, WD2010A_TAG)
+ : device_t(mconfig, ISA8_WDXT_GEN, tag, owner, clock)
+ , device_isa8_card_interface(mconfig, *this)
+ , m_maincpu(*this, WD1015_TAG)
+ , m_host(*this, WD11C00_17_TAG)
+ , m_hdc(*this, WD2010A_TAG)
{
}
diff --git a/src/devices/bus/isa/wdxt_gen.h b/src/devices/bus/isa/wdxt_gen.h
index 5a19cc8542c..cfced925737 100644
--- a/src/devices/bus/isa/wdxt_gen.h
+++ b/src/devices/bus/isa/wdxt_gen.h
@@ -13,14 +13,14 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISA8_WDXT_GEN_H
+#define MAME_BUS_ISA8_WDXT_GEN_H
-#ifndef __ISA8_WDXT_GEN__
-#define __ISA8_WDXT_GEN__
+#pragma once
-#include "cpu/mcs48/mcs48.h"
#include "isa.h"
+#include "cpu/mcs48/mcs48.h"
#include "machine/wd11c00_17.h"
#include "machine/wd2010.h"
#include "imagedev/harddriv.h"
@@ -78,6 +78,6 @@ private:
// device type definition
-extern const device_type ISA8_WDXT_GEN;
+DECLARE_DEVICE_TYPE(ISA8_WDXT_GEN, wdxt_gen_device)
-#endif
+#endif // MAME_BUS_ISA8_WDXT_GEN_H
diff --git a/src/devices/bus/isa/xsu_cards.cpp b/src/devices/bus/isa/xsu_cards.cpp
index f7fbc3f6d02..d8839ebd4d9 100644
--- a/src/devices/bus/isa/xsu_cards.cpp
+++ b/src/devices/bus/isa/xsu_cards.cpp
@@ -7,9 +7,29 @@
**********************************************************************/
#include "emu.h"
-#include "isa_cards.h"
#include "xsu_cards.h"
+#include "cga.h"
+
+// storage
+#include "mc1502_fdc.h"
+#include "p1_fdc.h"
+#include "p1_hdc.h"
+
+// misc
+#include "mc1502_rom.h"
+#include "p1_rom.h"
+#include "p1_sound.h"
+
+// non-native
+#include "com.h"
+#include "fdc.h"
+#include "hdc.h"
+#include "lpt.h"
+#include "mda.h"
+#include "xtide.h"
+
+
SLOT_INTERFACE_START( p1_isa8_cards )
SLOT_INTERFACE("rom", P1_ROM) // B003
SLOT_INTERFACE("fdc", P1_FDC) // B504
diff --git a/src/devices/bus/isa/xsu_cards.h b/src/devices/bus/isa/xsu_cards.h
index c2508c7108f..d8b98be154c 100644
--- a/src/devices/bus/isa/xsu_cards.h
+++ b/src/devices/bus/isa/xsu_cards.h
@@ -6,27 +6,11 @@
**********************************************************************/
-#pragma once
-
-#ifndef __XSU_CARDS_H__
-#define __XSU_CARDS_H__
-
+#ifndef MAME_BUS_ISA_XSU_CARDS_H
+#define MAME_BUS_ISA_XSU_CARDS_H
-#include "cga.h"
-// storage
-#include "mc1502_fdc.h"
-#include "p1_fdc.h"
-#include "p1_hdc.h"
-
-// misc
-#include "mc1502_rom.h"
-#include "p1_rom.h"
-#include "p1_sound.h"
+#pragma once
-// non-native
-#include "com.h"
-#include "xtide.h"
-#include "lpt.h"
// supported devices
SLOT_INTERFACE_EXTERN( p1_isa8_cards );
@@ -34,4 +18,4 @@ SLOT_INTERFACE_EXTERN( mc1502_isa8_cards );
SLOT_INTERFACE_EXTERN( ec184x_isa8_cards );
SLOT_INTERFACE_EXTERN( iskr103x_isa8_cards );
-#endif // __XSU_CARDS_H__
+#endif // MAME_BUS_ISA_XSU_CARDS_H
diff --git a/src/devices/bus/isa/xtide.cpp b/src/devices/bus/isa/xtide.cpp
index a0e339be11e..6ea02ee3c77 100644
--- a/src/devices/bus/isa/xtide.cpp
+++ b/src/devices/bus/isa/xtide.cpp
@@ -262,7 +262,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type ISA8_XTIDE = device_creator<xtide_device>;
+DEFINE_DEVICE_TYPE(ISA8_XTIDE, xtide_device, "xtide", "XT-IDE Fixed Drive Adapter")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -301,7 +301,7 @@ const tiny_rom_entry *xtide_device::device_rom_region() const
//-------------------------------------------------
xtide_device::xtide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ISA8_XTIDE, "XT-IDE Fixed Drive Adapter", tag, owner, clock, "isa8_xtide", __FILE__),
+ : device_t(mconfig, ISA8_XTIDE, tag, owner, clock),
device_isa8_card_interface( mconfig, *this ),
m_ata(*this, "ata"),
m_eeprom(*this, "eeprom"), m_irq_number(0), m_d8_d15_latch(0)
diff --git a/src/devices/bus/isa/xtide.h b/src/devices/bus/isa/xtide.h
index 0fc61a0d4e2..b78d7bd6229 100644
--- a/src/devices/bus/isa/xtide.h
+++ b/src/devices/bus/isa/xtide.h
@@ -1,20 +1,19 @@
// license:BSD-3-Clause
// copyright-holders:Phill Harvey-Smith
-#pragma once
+#ifndef MAME_BUS_ISA_XTIDE_H
+#define MAME_BUS_ISA_XTIDE_H
-#ifndef __XTIDE_H__
-#define __XTIDE_H__
+#pragma once
+#include "isa.h"
#include "machine/ataintf.h"
#include "machine/eeprompar.h"
-#include "isa.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class xtide_device : public device_t,
- public device_isa8_card_interface
+class xtide_device : public device_t, public device_isa8_card_interface
{
public:
// construction/destruction
@@ -33,7 +32,6 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual void device_config_complete() override { m_shortname = "xtide"; }
private:
required_device<ata_interface_device> m_ata;
@@ -45,6 +43,6 @@ private:
// device type definition
-extern const device_type ISA8_XTIDE;
+DECLARE_DEVICE_TYPE(ISA8_XTIDE, xtide_device)
-#endif /* __XTIDE__ */
+#endif // MAME_BUS_ISA_XTIDE_H
diff --git a/src/devices/bus/isbx/compis_fdc.cpp b/src/devices/bus/isbx/compis_fdc.cpp
index 6f06976e925..91fedb13fa6 100644
--- a/src/devices/bus/isbx/compis_fdc.cpp
+++ b/src/devices/bus/isbx/compis_fdc.cpp
@@ -22,7 +22,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type COMPIS_FDC = device_creator<compis_fdc_device>;
+DEFINE_DEVICE_TYPE(COMPIS_FDC, compis_fdc_device, "compis_fdc", "Compis FDC")
//-------------------------------------------------
@@ -83,7 +83,7 @@ machine_config_constructor compis_fdc_device::device_mconfig_additions() const
//-------------------------------------------------
compis_fdc_device::compis_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COMPIS_FDC, "Compis FDC", tag, owner, clock, "compis_fdc", __FILE__),
+ device_t(mconfig, COMPIS_FDC, tag, owner, clock),
device_isbx_card_interface(mconfig, *this),
m_fdc(*this, I8272_TAG),
m_floppy0(*this, I8272_TAG":0"),
diff --git a/src/devices/bus/isbx/compis_fdc.h b/src/devices/bus/isbx/compis_fdc.h
index 0fccc9e9d80..2caf59513d3 100644
--- a/src/devices/bus/isbx/compis_fdc.h
+++ b/src/devices/bus/isbx/compis_fdc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISBX_COMPIS_FDC_H
+#define MAME_BUS_ISBX_COMPIS_FDC_H
-#ifndef __COMPIS_FDC__
-#define __COMPIS_FDC__
+#pragma once
#include "isbx.h"
#include "formats/cpis_dsk.h"
@@ -58,7 +58,7 @@ private:
// device type definition
-extern const device_type COMPIS_FDC;
+DECLARE_DEVICE_TYPE(COMPIS_FDC, compis_fdc_device)
-#endif
+#endif // MAME_BUS_ISBX_COMPIS_FDC_H
diff --git a/src/devices/bus/isbx/isbc_218a.cpp b/src/devices/bus/isbx/isbc_218a.cpp
index 4537dbd6261..e174b734f00 100644
--- a/src/devices/bus/isbx/isbc_218a.cpp
+++ b/src/devices/bus/isbx/isbc_218a.cpp
@@ -22,7 +22,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ISBC_218A = device_creator<isbc_218a_device>;
+DEFINE_DEVICE_TYPE(ISBC_218A, isbc_218a_device, "isbc_218a", "ISBX 218a for ISBC")
//-------------------------------------------------
@@ -82,7 +82,7 @@ machine_config_constructor isbc_218a_device::device_mconfig_additions() const
//-------------------------------------------------
isbc_218a_device::isbc_218a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISBC_218A, "ISBX 218a for ISBC", tag, owner, clock, "isbc_218a", __FILE__),
+ device_t(mconfig, ISBC_218A, tag, owner, clock),
device_isbx_card_interface(mconfig, *this),
m_fdc(*this, I8272_TAG),
m_floppy0(*this, I8272_TAG":0"), m_reset(false), m_motor(false)
diff --git a/src/devices/bus/isbx/isbc_218a.h b/src/devices/bus/isbx/isbc_218a.h
index aa12b81aa84..f22391a4c4e 100644
--- a/src/devices/bus/isbx/isbc_218a.h
+++ b/src/devices/bus/isbx/isbc_218a.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISBX_ISBC_218A_H
+#define MAME_BUS_ISBX_ISBC_218A_H
-#ifndef __ISBC_218A__
-#define __ISBC_218A__
+#pragma once
#include "isbx.h"
#include "formats/pc_dsk.h"
@@ -60,7 +60,7 @@ private:
// device type definition
-extern const device_type ISBC_218A;
+DECLARE_DEVICE_TYPE(ISBC_218A, isbc_218a_device)
-#endif
+#endif // MAME_BUS_ISBX_ISBC_218A_H
diff --git a/src/devices/bus/isbx/isbx.cpp b/src/devices/bus/isbx/isbx.cpp
index 6746969a5b7..ce658e6b1d3 100644
--- a/src/devices/bus/isbx/isbx.cpp
+++ b/src/devices/bus/isbx/isbx.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ISBX_SLOT = device_creator<isbx_slot_device>;
+DEFINE_DEVICE_TYPE(ISBX_SLOT, isbx_slot_device, "isbx_slot", "iSBX bus slot")
@@ -39,7 +39,7 @@ device_isbx_card_interface::device_isbx_card_interface(const machine_config &mco
//-------------------------------------------------
isbx_slot_device::isbx_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISBX_SLOT, "iSBX bus slot", tag, owner, clock, "isbx_slot", __FILE__),
+ device_t(mconfig, ISBX_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_write_mintr0(*this),
m_write_mintr1(*this),
diff --git a/src/devices/bus/isbx/isbx.h b/src/devices/bus/isbx/isbx.h
index 69e80b1df52..3cd74178228 100644
--- a/src/devices/bus/isbx/isbx.h
+++ b/src/devices/bus/isbx/isbx.h
@@ -31,10 +31,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_ISBX_ISBX_SLOT_H
+#define MAME_BUS_ISBX_ISBX_SLOT_H
-#ifndef __ISBX_SLOT__
-#define __ISBX_SLOT__
+#pragma once
@@ -73,9 +73,6 @@ class isbx_slot_device;
class device_isbx_card_interface : public device_slot_card_interface
{
public:
- // construction/destruction
- device_isbx_card_interface(const machine_config &mconfig, device_t &device);
-
virtual uint8_t mcs0_r(address_space &space, offs_t offset) { return 0xff; }
virtual void mcs0_w(address_space &space, offs_t offset, uint8_t data) { }
virtual uint8_t mcs1_r(address_space &space, offs_t offset) { return 0xff; }
@@ -90,6 +87,9 @@ public:
virtual void mclk_w(int state) { }
protected:
+ // construction/destruction
+ device_isbx_card_interface(const machine_config &mconfig, device_t &device);
+
isbx_slot_device *m_slot;
};
@@ -103,10 +103,10 @@ public:
// construction/destruction
isbx_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _mintr0> void set_mintr0_callback(_mintr0 mintr0) { m_write_mintr0.set_callback(mintr0); }
- template<class _mintr1> void set_mintr1_callback(_mintr1 mintr1) { m_write_mintr1.set_callback(mintr1); }
- template<class _mdrqt> void set_mdrqt_callback(_mdrqt mdrqt) { m_write_mdrqt.set_callback(mdrqt); }
- template<class _mwait> void set_mwait_callback(_mwait mwait) { m_write_mwait.set_callback(mwait); }
+ template <class Object> void set_mintr0_callback(Object &&cb) { m_write_mintr0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> void set_mintr1_callback(Object &&cb) { m_write_mintr1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> void set_mdrqt_callback(Object &&cb) { m_write_mdrqt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> void set_mwait_callback(Object &&cb) { m_write_mwait.set_callback(std::forward<Object>(cb)); }
// computer interface
DECLARE_READ8_MEMBER( mcs0_r ) { return m_card ? m_card->mcs0_r(space, offset) : 0xff; }
@@ -144,11 +144,10 @@ protected:
// device type definition
-extern const device_type ISBX_SLOT;
+DECLARE_DEVICE_TYPE(ISBX_SLOT, isbx_slot_device)
SLOT_INTERFACE_EXTERN( isbx_cards );
-
-#endif
+#endif // MAME_BUS_ISBX_ISBX_SLOT_H
diff --git a/src/devices/bus/kc/d002.cpp b/src/devices/bus/kc/d002.cpp
index d36ada24b53..ac3928acd6e 100644
--- a/src/devices/bus/kc/d002.cpp
+++ b/src/devices/bus/kc/d002.cpp
@@ -11,6 +11,11 @@
#include "emu.h"
#include "d002.h"
+#include "ram.h"
+#include "rom.h"
+#include "d004.h"
+
+
/***************************************************************************
IMPLEMENTATION
***************************************************************************/
@@ -98,7 +103,7 @@ MACHINE_CONFIG_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type KC_D002 = device_creator<kc_d002_device>;
+DEFINE_DEVICE_TYPE(KC_D002, kc_d002_device, "kc_d002", "D002 Bus Driver")
//**************************************************************************
// LIVE DEVICE
@@ -109,9 +114,11 @@ const device_type KC_D002 = device_creator<kc_d002_device>;
//-------------------------------------------------
kc_d002_device::kc_d002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, KC_D002, "D002 Bus Driver", tag, owner, clock, "kc_d002", __FILE__),
- device_kcexp_interface( mconfig, *this ), m_slot(nullptr)
- {
+ : device_t(mconfig, KC_D002, tag, owner, clock)
+ , device_kcexp_interface(mconfig, *this)
+ , m_slot(nullptr)
+ , m_expansions(*this, { "m0", "m4", "m8", "mc", "exp" })
+{
}
//-------------------------------------------------
@@ -121,12 +128,6 @@ kc_d002_device::kc_d002_device(const machine_config &mconfig, const char *tag, d
void kc_d002_device::device_start()
{
m_slot = dynamic_cast<kcexp_slot_device *>(owner());
-
- m_expansions[0] = downcast<kcexp_slot_device *>(subdevice("m0"));
- m_expansions[1] = downcast<kcexp_slot_device *>(subdevice("m4"));
- m_expansions[2] = downcast<kcexp_slot_device *>(subdevice("m8"));
- m_expansions[3] = downcast<kcexp_slot_device *>(subdevice("mc"));
- m_expansions[4] = downcast<kcexp_slot_device *>(subdevice("exp"));
}
//-------------------------------------------------
diff --git a/src/devices/bus/kc/d002.h b/src/devices/bus/kc/d002.h
index 3a93ee8564c..48bd97336b2 100644
--- a/src/devices/bus/kc/d002.h
+++ b/src/devices/bus/kc/d002.h
@@ -1,14 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_KC_D002_H
+#define MAME_BUS_KC_D002_H
-#ifndef __KC_D002_H__
-#define __KC_D002_H__
+#pragma once
#include "kc.h"
-#include "ram.h"
-#include "rom.h"
-#include "d004.h"
//**************************************************************************
// TYPE DEFINITIONS
@@ -49,11 +46,11 @@ private:
kcexp_slot_device *m_slot;
// internal state
- kcexp_slot_device *m_expansions[5];
+ required_device_array<kcexp_slot_device, 5> m_expansions;
};
// device type definition
-extern const device_type KC_D002;
+DECLARE_DEVICE_TYPE(KC_D002, kc_d002_device)
-#endif /* __KC_D002_H__ */
+#endif // MAME_BUS_KC_D002_H
diff --git a/src/devices/bus/kc/d004.cpp b/src/devices/bus/kc/d004.cpp
index 2afd3ca0422..dafee6a6f4f 100644
--- a/src/devices/bus/kc/d004.cpp
+++ b/src/devices/bus/kc/d004.cpp
@@ -117,8 +117,8 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type KC_D004 = device_creator<kc_d004_device>;
-const device_type KC_D004_GIDE = device_creator<kc_d004_gide_device>;
+DEFINE_DEVICE_TYPE(KC_D004, kc_d004_device, "kc_d004", "D004 Floppy Disk Interface")
+DEFINE_DEVICE_TYPE(KC_D004_GIDE, kc_d004_gide_device, "kc_d004_gide", "D004 Floppy Disk + GIDE Interface")
//**************************************************************************
// LIVE DEVICE
@@ -129,21 +129,22 @@ const device_type KC_D004_GIDE = device_creator<kc_d004_gide_device>;
//-------------------------------------------------
kc_d004_device::kc_d004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : kc_d004_device(mconfig, KC_D004, "D004 Floppy Disk Interface", tag, owner, clock, "kc_d004", __FILE__)
+ : kc_d004_device(mconfig, KC_D004, tag, owner, clock)
{
}
-kc_d004_device::kc_d004_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_kcexp_interface( mconfig, *this ),
- m_cpu(*this, Z80_TAG),
- m_fdc(*this, UPD765_TAG),
- m_floppy0(*this, UPD765_TAG ":0"),
- m_floppy1(*this, UPD765_TAG ":1"),
- m_floppy2(*this, UPD765_TAG ":2"),
- m_floppy3(*this, UPD765_TAG ":3"),
- m_koppel_ram(*this, "koppelram"), m_reset_timer(nullptr), m_rom(nullptr), m_rom_base(0), m_enabled(0), m_connected(0), m_floppy(nullptr)
- {
+kc_d004_device::kc_d004_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
+ device_kcexp_interface( mconfig, *this ),
+ m_cpu(*this, Z80_TAG),
+ m_fdc(*this, UPD765_TAG),
+ m_floppy0(*this, UPD765_TAG ":0"),
+ m_floppy1(*this, UPD765_TAG ":1"),
+ m_floppy2(*this, UPD765_TAG ":2"),
+ m_floppy3(*this, UPD765_TAG ":3"),
+ m_koppel_ram(*this, "koppelram"),
+ m_reset_timer(nullptr), m_rom(nullptr), m_rom_base(0), m_enabled(0), m_connected(0), m_floppy(nullptr)
+{
}
//-------------------------------------------------
@@ -375,9 +376,9 @@ WRITE_LINE_MEMBER(kc_d004_device::fdc_irq)
//-------------------------------------------------
kc_d004_gide_device::kc_d004_gide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : kc_d004_device(mconfig, KC_D004_GIDE, "D004 Floppy Disk + GIDE Interface", tag, owner, clock, "kc_d004gide", __FILE__),
- m_ata(*this, ATA_TAG), m_ata_data(0), m_lh(0)
- {
+ : kc_d004_device(mconfig, KC_D004_GIDE, tag, owner, clock),
+ m_ata(*this, ATA_TAG), m_ata_data(0), m_lh(0)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/kc/d004.h b/src/devices/bus/kc/d004.h
index 521289a076d..bbac3463866 100644
--- a/src/devices/bus/kc/d004.h
+++ b/src/devices/bus/kc/d004.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_KC_D004_H
+#define MAME_BUS_KC_D004_H
-#ifndef __KC_D004_H__
-#define __KC_D004_H__
+#pragma once
#include "kc.h"
#include "machine/z80ctc.h"
@@ -26,7 +26,6 @@ class kc_d004_device :
public:
// construction/destruction
kc_d004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- kc_d004_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -34,7 +33,15 @@ public:
DECLARE_FLOPPY_FORMATS( floppy_formats );
+ DECLARE_READ8_MEMBER(hw_input_gate_r);
+ DECLARE_WRITE8_MEMBER(fdd_select_w);
+ DECLARE_WRITE8_MEMBER(hw_terminal_count_w);
+
+ DECLARE_WRITE_LINE_MEMBER( fdc_irq );
+
protected:
+ kc_d004_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -47,13 +54,6 @@ protected:
virtual void io_read(offs_t offset, uint8_t &data) override;
virtual void io_write(offs_t offset, uint8_t data) override;
-public:
- DECLARE_READ8_MEMBER(hw_input_gate_r);
- DECLARE_WRITE8_MEMBER(fdd_select_w);
- DECLARE_WRITE8_MEMBER(hw_terminal_count_w);
-
- DECLARE_WRITE_LINE_MEMBER( fdc_irq );
-
private:
static const device_timer_id TIMER_RESET = 0;
@@ -91,14 +91,13 @@ public:
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
+ DECLARE_READ8_MEMBER(gide_r);
+ DECLARE_WRITE8_MEMBER(gide_w);
+
protected:
// device-level overrides
virtual void device_reset() override;
-public:
- DECLARE_READ8_MEMBER(gide_r);
- DECLARE_WRITE8_MEMBER(gide_w);
-
private:
required_device<ata_interface_device> m_ata;
@@ -107,7 +106,7 @@ private:
};
// device type definition
-extern const device_type KC_D004;
-extern const device_type KC_D004_GIDE;
+DECLARE_DEVICE_TYPE(KC_D004, kc_d004_device)
+DECLARE_DEVICE_TYPE(KC_D004_GIDE, kc_d004_gide_device)
-#endif /* __KC_D004_H__ */
+#endif // MAME_BUS_KC_D004_H
diff --git a/src/devices/bus/kc/kc.cpp b/src/devices/bus/kc/kc.cpp
index 8995aeaa39c..99da30bb188 100644
--- a/src/devices/bus/kc/kc.cpp
+++ b/src/devices/bus/kc/kc.cpp
@@ -118,8 +118,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type KCEXP_SLOT = device_creator<kcexp_slot_device>;
-const device_type KCCART_SLOT = device_creator<kccart_slot_device>;
+DEFINE_DEVICE_TYPE(KCEXP_SLOT, kcexp_slot_device, "kcexp_slot", "KC85 Expansion Slot")
+DEFINE_DEVICE_TYPE(KCCART_SLOT, kccart_slot_device, "kccart_slot", "KC85 Cartridge Slot")
//**************************************************************************
@@ -153,20 +153,17 @@ device_kcexp_interface::~device_kcexp_interface()
// kcexp_slot_device - constructor
//-------------------------------------------------
kcexp_slot_device::kcexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, KCEXP_SLOT, "KC85 Expansion Slot", tag, owner, clock, "kcexp_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_out_irq_cb(*this),
- m_out_nmi_cb(*this),
- m_out_halt_cb(*this), m_cart(nullptr), m_next_slot_tag(nullptr), m_next_slot(nullptr)
+ kcexp_slot_device(mconfig, KCEXP_SLOT, tag, owner, clock)
{
}
-kcexp_slot_device::kcexp_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_interface(mconfig, *this),
- m_out_irq_cb(*this),
- m_out_nmi_cb(*this),
- m_out_halt_cb(*this), m_cart(nullptr), m_next_slot_tag(nullptr), m_next_slot(nullptr)
+kcexp_slot_device::kcexp_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_out_irq_cb(*this),
+ m_out_nmi_cb(*this),
+ m_out_halt_cb(*this),
+ m_cart(nullptr), m_next_slot_tag(nullptr), m_next_slot(nullptr)
{
}
@@ -299,8 +296,8 @@ WRITE_LINE_MEMBER( kcexp_slot_device::meo_w )
// kccart_slot_device - constructor
//-------------------------------------------------
kccart_slot_device::kccart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- kcexp_slot_device(mconfig, KCCART_SLOT, "KC85 Cartridge Slot", tag, owner, clock, "kccart_slot", __FILE__),
- device_image_interface(mconfig, *this)
+ kcexp_slot_device(mconfig, KCCART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/kc/kc.h b/src/devices/bus/kc/kc.h
index 4408b6913c8..a058a80c9af 100644
--- a/src/devices/bus/kc/kc.h
+++ b/src/devices/bus/kc/kc.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __KCEXP_H__
-#define __KCEXP_H__
+#ifndef MAME_BUS_KC_KC_H
+#define MAME_BUS_KC_KC_H
+
+#pragma once
#include "softlist_dev.h"
@@ -23,7 +25,6 @@ class device_kcexp_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_kcexp_interface(const machine_config &mconfig, device_t &device);
virtual ~device_kcexp_interface();
// reading and writing
@@ -34,7 +35,10 @@ public:
virtual void io_read(offs_t offset, uint8_t &data) { }
virtual void io_write(offs_t offset, uint8_t data) { }
virtual uint8_t* get_cart_base() { return nullptr; }
- virtual DECLARE_WRITE_LINE_MEMBER( mei_w ) { };
+ virtual DECLARE_WRITE_LINE_MEMBER( mei_w ) { }
+
+protected:
+ device_kcexp_interface(const machine_config &mconfig, device_t &device);
};
// ======================> kcexp_slot_device
@@ -45,15 +49,11 @@ class kcexp_slot_device : public device_t,
public:
// construction/destruction
kcexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- kcexp_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual ~kcexp_slot_device();
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<kcexp_slot_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_nmi_callback(device_t &device, _Object object) { return downcast<kcexp_slot_device &>(device).m_out_nmi_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_halt_callback(device_t &device, _Object object) { return downcast<kcexp_slot_device &>(device).m_out_halt_cb.set_callback(object); }
-
- // device-level overrides
- virtual void device_start() override;
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<kcexp_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<kcexp_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_halt_callback(device_t &device, Object &&cb) { return downcast<kcexp_slot_device &>(device).m_out_halt_cb.set_callback(std::forward<Object>(cb)); }
// inline configuration
static void static_set_next_slot(device_t &device, const char *next_module_tag);
@@ -72,6 +72,12 @@ public:
devcb_write_line m_out_nmi_cb;
devcb_write_line m_out_halt_cb;
+protected:
+ kcexp_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
device_kcexp_interface* m_cart;
const char* m_next_slot_tag;
@@ -106,8 +112,8 @@ public:
};
// device type definition
-extern const device_type KCEXP_SLOT;
-extern const device_type KCCART_SLOT;
+DECLARE_DEVICE_TYPE(KCEXP_SLOT, kcexp_slot_device)
+DECLARE_DEVICE_TYPE(KCCART_SLOT, kccart_slot_device)
/***************************************************************************
@@ -147,4 +153,4 @@ extern const device_type KCCART_SLOT;
// MCFG_DEVICE_ADD(_tag, KCCART_SLOT, 0)
// MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif /* __KCEXP_H__ */
+#endif // MAME_BUS_KC_KC_H
diff --git a/src/devices/bus/kc/ram.cpp b/src/devices/bus/kc/ram.cpp
index ed55a3a9784..5e69b397508 100644
--- a/src/devices/bus/kc/ram.cpp
+++ b/src/devices/bus/kc/ram.cpp
@@ -27,12 +27,12 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type KC_M011 = device_creator<kc_m011_device>;
-const device_type KC_M022 = device_creator<kc_m022_device>;
-const device_type KC_M032 = device_creator<kc_m032_device>;
-const device_type KC_M034 = device_creator<kc_m034_device>;
-const device_type KC_M035 = device_creator<kc_m035_device>;
-const device_type KC_M036 = device_creator<kc_m036_device>;
+DEFINE_DEVICE_TYPE(KC_M011, kc_m011_device, "kc_m011", "M011 64KB RAM")
+DEFINE_DEVICE_TYPE(KC_M022, kc_m022_device, "kc_m022", "M022 16KB RAM")
+DEFINE_DEVICE_TYPE(KC_M032, kc_m032_device, "kc_m032", "M032 256KB segmented RAM")
+DEFINE_DEVICE_TYPE(KC_M034, kc_m034_device, "kc_m034", "M034 512KB segmented RAM")
+DEFINE_DEVICE_TYPE(KC_M035, kc_m035_device, "kc_m035", "M035 1MB segmented RAM")
+DEFINE_DEVICE_TYPE(KC_M036, kc_m036_device, "kc_m036", "M036 128KB segmented RAM")
//**************************************************************************
// M011 64KB RAM
@@ -43,14 +43,14 @@ const device_type KC_M036 = device_creator<kc_m036_device>;
//-------------------------------------------------
kc_m011_device::kc_m011_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, KC_M011, "M011 64KB RAM", tag, owner, clock, "kc_m011", __FILE__),
- device_kcexp_interface( mconfig, *this ), m_slot(nullptr), m_mei(0), m_ram(nullptr), m_enabled(0), m_write_enabled(0), m_base(0), m_segment(0)
- {
+ : kc_m011_device(mconfig, KC_M011, tag, owner, clock)
+{
}
-kc_m011_device::kc_m011_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_kcexp_interface( mconfig, *this ), m_slot(nullptr), m_mei(0), m_ram(nullptr), m_enabled(0), m_write_enabled(0), m_base(0), m_segment(0)
+kc_m011_device::kc_m011_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_kcexp_interface(mconfig, *this)
+ , m_slot(nullptr), m_mei(0), m_ram(nullptr), m_enabled(0), m_write_enabled(0), m_base(0), m_segment(0)
{
}
@@ -148,7 +148,7 @@ WRITE_LINE_MEMBER( kc_m011_device::mei_w )
//-------------------------------------------------
kc_m022_device::kc_m022_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : kc_m011_device(mconfig, KC_M022, "M022 16KB RAM", tag, owner, clock, "kc_m022", __FILE__)
+ : kc_m011_device(mconfig, KC_M022, tag, owner, clock)
{
}
@@ -193,7 +193,7 @@ void kc_m022_device::write(offs_t offset, uint8_t data)
//-------------------------------------------------
kc_m032_device::kc_m032_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : kc_m011_device(mconfig, KC_M032, "M032 256KB segmented RAM", tag, owner, clock, "kc_m032", __FILE__)
+ : kc_m011_device(mconfig, KC_M032, tag, owner, clock)
{
}
@@ -262,7 +262,7 @@ void kc_m032_device::write(offs_t offset, uint8_t data)
//-------------------------------------------------
kc_m034_device::kc_m034_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : kc_m011_device(mconfig, KC_M034, "M034 512KB segmented RAM", tag, owner, clock, "kc_m034", __FILE__)
+ : kc_m011_device(mconfig, KC_M034, tag, owner, clock)
{
}
@@ -331,7 +331,7 @@ void kc_m034_device::write(offs_t offset, uint8_t data)
//-------------------------------------------------
kc_m035_device::kc_m035_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : kc_m011_device(mconfig, KC_M035, "M035 1MB segmented RAM", tag, owner, clock, "kc_m035", __FILE__)
+ : kc_m011_device(mconfig, KC_M035, tag, owner, clock)
{
}
@@ -389,7 +389,7 @@ void kc_m035_device::write(offs_t offset, uint8_t data)
//-------------------------------------------------
kc_m036_device::kc_m036_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : kc_m011_device(mconfig, KC_M036, "M036 128KB segmented RAM", tag, owner, clock, "kc_m036", __FILE__)
+ : kc_m011_device(mconfig, KC_M036, tag, owner, clock)
{
}
diff --git a/src/devices/bus/kc/ram.h b/src/devices/bus/kc/ram.h
index 97e735e64d2..823d32bdb31 100644
--- a/src/devices/bus/kc/ram.h
+++ b/src/devices/bus/kc/ram.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_KC_RAM_H
+#define MAME_BUS_KC_RAM_H
-#ifndef __KC_RAM_H__
-#define __KC_RAM_H__
+#pragma once
#include "kc.h"
@@ -20,9 +20,10 @@ class kc_m011_device :
public:
// construction/destruction
kc_m011_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- kc_m011_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ kc_m011_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -169,11 +170,11 @@ private:
};
// device type definition
-extern const device_type KC_M011;
-extern const device_type KC_M022;
-extern const device_type KC_M032;
-extern const device_type KC_M034;
-extern const device_type KC_M035;
-extern const device_type KC_M036;
-
-#endif /* __KC_RAM_H__ */
+DECLARE_DEVICE_TYPE(KC_M011, kc_m011_device)
+DECLARE_DEVICE_TYPE(KC_M022, kc_m022_device)
+DECLARE_DEVICE_TYPE(KC_M032, kc_m032_device)
+DECLARE_DEVICE_TYPE(KC_M034, kc_m034_device)
+DECLARE_DEVICE_TYPE(KC_M035, kc_m035_device)
+DECLARE_DEVICE_TYPE(KC_M036, kc_m036_device)
+
+#endif // MAME_BUS_KC_RAM_H
diff --git a/src/devices/bus/kc/rom.cpp b/src/devices/bus/kc/rom.cpp
index 027b7347398..eca6d6a1907 100644
--- a/src/devices/bus/kc/rom.cpp
+++ b/src/devices/bus/kc/rom.cpp
@@ -30,9 +30,9 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type KC_STANDARD = device_creator<kc_8k_device>;
-const device_type KC_M006 = device_creator<kc_m006_device>;
-const device_type KC_M033 = device_creator<kc_m033_device>;
+DEFINE_DEVICE_TYPE(KC_STANDARD, kc_8k_device, "kc_8k", "Standard 8K ROM module")
+DEFINE_DEVICE_TYPE(KC_M006, kc_m006_device, "kc_m006", "M006 BASIC")
+DEFINE_DEVICE_TYPE(KC_M033, kc_m033_device, "kc_m033", "M033 TypeStar")
//**************************************************************************
// LIVE DEVICE
@@ -43,15 +43,15 @@ const device_type KC_M033 = device_creator<kc_m033_device>;
//-------------------------------------------------
kc_8k_device::kc_8k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, KC_STANDARD, "Standard 8K ROM module", tag, owner, clock, "kc_8k", __FILE__),
- device_kcexp_interface( mconfig, *this ), m_slot(nullptr), m_mei(0), m_rom(nullptr), m_enabled(0), m_base(0)
- {
+ : kc_8k_device(mconfig, KC_STANDARD, tag, owner, clock)
+{
}
-kc_8k_device::kc_8k_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_kcexp_interface( mconfig, *this ), m_slot(nullptr), m_mei(0), m_rom(nullptr), m_enabled(0), m_base(0)
- {
+kc_8k_device::kc_8k_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_kcexp_interface(mconfig, *this)
+ , m_slot(nullptr), m_mei(0), m_rom(nullptr), m_enabled(0), m_base(0)
+{
}
@@ -143,7 +143,7 @@ WRITE_LINE_MEMBER( kc_8k_device::mei_w )
//-------------------------------------------------
kc_m006_device::kc_m006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : kc_8k_device(mconfig, KC_M006, "M006 BASIC", tag, owner, clock, "kc_m006", __FILE__)
+ : kc_8k_device(mconfig, KC_M006, tag, owner, clock)
{
}
@@ -185,8 +185,9 @@ void kc_m006_device::read(offs_t offset, uint8_t &data)
//-------------------------------------------------
kc_m033_device::kc_m033_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : kc_8k_device(mconfig, KC_M033, "M033 TypeStar", tag, owner, clock, "kc_m033", __FILE__), m_bank(0)
- {
+ : kc_8k_device(mconfig, KC_M033, tag, owner, clock)
+ , m_bank(0)
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/kc/rom.h b/src/devices/bus/kc/rom.h
index 9568bcdaea7..024969d68b4 100644
--- a/src/devices/bus/kc/rom.h
+++ b/src/devices/bus/kc/rom.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_KC_ROM_H
+#define MAME_BUS_KC_ROM_H
-#ifndef __KC_ROM_H__
-#define __KC_ROM_H__
+#pragma once
#include "kc.h"
@@ -20,11 +20,10 @@ class kc_8k_device :
public:
// construction/destruction
kc_8k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- kc_8k_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
protected:
+ kc_8k_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -90,8 +89,8 @@ private:
// device type definition
-extern const device_type KC_STANDARD;
-extern const device_type KC_M006;
-extern const device_type KC_M033;
+DECLARE_DEVICE_TYPE(KC_STANDARD, kc_8k_device)
+DECLARE_DEVICE_TYPE(KC_M006, kc_m006_device)
+DECLARE_DEVICE_TYPE(KC_M033, kc_m033_device)
-#endif /* __KC_ROM_H__ */
+#endif // MAME_BUS_KC_ROM_H
diff --git a/src/devices/bus/lpci/cirrus.cpp b/src/devices/bus/lpci/cirrus.cpp
index 611965d0419..ddfe9d81330 100644
--- a/src/devices/bus/lpci/cirrus.cpp
+++ b/src/devices/bus/lpci/cirrus.cpp
@@ -73,19 +73,19 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CIRRUS = device_creator<cirrus_device>;
+DEFINE_DEVICE_TYPE(PCI_CIRRUS_SVGA, pci_cirrus_svga_device, "pci_cirrus_svga", "Cirrus SVGA (PCI)")
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
-// cirrus_device - constructor
+// pci_cirrus_svga_device - constructor
//-------------------------------------------------
-cirrus_device::cirrus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CIRRUS, "CIRRUS", tag, owner, clock, "cirrus", __FILE__),
- pci_device_interface( mconfig, *this )
+pci_cirrus_svga_device::pci_cirrus_svga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, PCI_CIRRUS_SVGA, tag, owner, clock)
+ , pci_device_interface( mconfig, *this )
{
}
@@ -93,7 +93,7 @@ cirrus_device::cirrus_device(const machine_config &mconfig, const char *tag, dev
// device_start - device-specific startup
//-------------------------------------------------
-void cirrus_device::device_start()
+void pci_cirrus_svga_device::device_start()
{
}
@@ -101,7 +101,7 @@ void cirrus_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void cirrus_device::device_reset()
+void pci_cirrus_svga_device::device_reset()
{
}
@@ -109,7 +109,7 @@ void cirrus_device::device_reset()
// pci_read - implementation of PCI read
//-------------------------------------------------
-uint32_t cirrus_device::pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask)
+uint32_t pci_cirrus_svga_device::pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask)
{
uint32_t result = 0;
@@ -145,7 +145,7 @@ uint32_t cirrus_device::pci_read(pci_bus_device *pcibus, int function, int offse
// pci_write - implementation of PCI write
//-------------------------------------------------
-void cirrus_device::pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask)
+void pci_cirrus_svga_device::pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask)
{
if (LOG_PCIACCESS)
logerror("cirrus5430_pci_write(): function=%d offset=0x%02X data=0x%04X\n", function, offset, data);
@@ -157,7 +157,7 @@ void cirrus_device::pci_write(pci_bus_device *pcibus, int function, int offset,
*
*************************************/
-WRITE8_MEMBER( cirrus_device::cirrus_42E8_w )
+WRITE8_MEMBER( pci_cirrus_svga_device::cirrus_42E8_w )
{
if (data & 0x80)
machine().device("vga")->reset();
diff --git a/src/devices/bus/lpci/cirrus.h b/src/devices/bus/lpci/cirrus.h
index e9c4aeeccd3..22eabaff906 100644
--- a/src/devices/bus/lpci/cirrus.h
+++ b/src/devices/bus/lpci/cirrus.h
@@ -8,19 +8,20 @@
***************************************************************************/
-#ifndef CIRRUS_H
-#define CIRRUS_H
+#ifndef MAME_BUS_LPCI_CIRRUS_H
+#define MAME_BUS_LPCI_CIRRUS_H
+
+#pragma once
#include "bus/lpci/pci.h"
-// ======================> cirrus_device
+// ======================> pci_cirrus_svga_device
-class cirrus_device : public device_t,
- public pci_device_interface
+class pci_cirrus_svga_device : public device_t, public pci_device_interface
{
public:
// construction/destruction
- cirrus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pci_cirrus_svga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual uint32_t pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask) override;
virtual void pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask) override;
@@ -35,6 +36,6 @@ protected:
// device type definition
-extern const device_type CIRRUS;
+DECLARE_DEVICE_TYPE(PCI_CIRRUS_SVGA, pci_cirrus_svga_device)
-#endif /* CIRRUS_H */
+#endif // MAME_BUS_LPCI_CIRRUS_H
diff --git a/src/devices/bus/lpci/i82371ab.cpp b/src/devices/bus/lpci/i82371ab.cpp
index 80c711f5f13..1c6d2f0e166 100644
--- a/src/devices/bus/lpci/i82371ab.cpp
+++ b/src/devices/bus/lpci/i82371ab.cpp
@@ -19,12 +19,12 @@
#include "emu.h"
#include "i82371ab.h"
-const device_type I82371AB = device_creator<i82371ab_device>;
+DEFINE_DEVICE_TYPE(I82371AB, i82371ab_device, "i82371ab", "Intel 82371AB")
i82371ab_device::i82371ab_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : southbridge_device(mconfig, I82371AB, "Intel 82371AB", tag, owner, clock, "i82371ab", __FILE__),
- pci_device_interface( mconfig, *this )
+ : southbridge_device(mconfig, I82371AB, tag, owner, clock)
+ , pci_device_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/lpci/i82371ab.h b/src/devices/bus/lpci/i82371ab.h
index 637819d9694..dc251bee0bf 100644
--- a/src/devices/bus/lpci/i82371ab.h
+++ b/src/devices/bus/lpci/i82371ab.h
@@ -8,8 +8,10 @@
***************************************************************************/
-#ifndef __I82371AB_H__
-#define __I82371AB_H__
+#ifndef MAME_BUS_LPCI_I82371AB_H
+#define MAME_BUS_LPCI_I82371AB_H
+
+#pragma once
#include "pci.h"
#include "southbridge.h"
@@ -48,6 +50,6 @@ private:
};
// device type definition
-extern const device_type I82371AB;
+DECLARE_DEVICE_TYPE(I82371AB, i82371ab_device)
-#endif /* __I82371AB_H__ */
+#endif // MAME_BUS_LPCI_I82371AB_H
diff --git a/src/devices/bus/lpci/i82371sb.cpp b/src/devices/bus/lpci/i82371sb.cpp
index 1193ed8d64e..4b3744721df 100644
--- a/src/devices/bus/lpci/i82371sb.cpp
+++ b/src/devices/bus/lpci/i82371sb.cpp
@@ -24,12 +24,12 @@
IMPLEMENTATION
***************************************************************************/
-const device_type I82371SB = device_creator<i82371sb_device>;
+DEFINE_DEVICE_TYPE(I82371SB, i82371sb_device, "i82371sb", "Intel 82371SB")
i82371sb_device::i82371sb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : southbridge_device(mconfig, I82371SB, "Intel 82371SB", tag, owner, clock, "i82371sb", __FILE__),
- pci_device_interface( mconfig, *this )
+ : southbridge_device(mconfig, I82371SB, tag, owner, clock)
+ , pci_device_interface( mconfig, *this )
{
}
diff --git a/src/devices/bus/lpci/i82371sb.h b/src/devices/bus/lpci/i82371sb.h
index 9627e82f8cf..c9d71a817b7 100644
--- a/src/devices/bus/lpci/i82371sb.h
+++ b/src/devices/bus/lpci/i82371sb.h
@@ -8,16 +8,17 @@
***************************************************************************/
-#ifndef __I82371SB_H__
-#define __I82371SB_H__
+#ifndef MAME_BUS_LPCI_I82371SB_H
+#define MAME_BUS_LPCI_I82371SB_H
+
+#pragma once
#include "pci.h"
#include "southbridge.h"
// ======================> i82371sb_device
-class i82371sb_device : public southbridge_device,
- public pci_device_interface
+class i82371sb_device : public southbridge_device, public pci_device_interface
{
public:
// construction/destruction
@@ -45,6 +46,6 @@ private:
// device type definition
extern const device_type I82371SB;
+DECLARE_DEVICE_TYPE(I82371SB, i82371sb_device)
-
-#endif /* __I82371SB_H__ */
+#endif // MAME_BUS_LPCI_I82371SB_H
diff --git a/src/devices/bus/lpci/i82439tx.cpp b/src/devices/bus/lpci/i82439tx.cpp
index 568cba45c08..b4bebc8e233 100644
--- a/src/devices/bus/lpci/i82439tx.cpp
+++ b/src/devices/bus/lpci/i82439tx.cpp
@@ -13,14 +13,14 @@
IMPLEMENTATION
***************************************************************************/
-const device_type I82439TX = device_creator<i82439tx_device>;
+DEFINE_DEVICE_TYPE(I82439TX, i82439tx_device, "i82439tx", "Intel 82439TX")
i82439tx_device::i82439tx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : northbridge_device(mconfig, I82439TX, "Intel 82439TX", tag, owner, clock, "i82439tx", __FILE__),
- pci_device_interface( mconfig, *this ),
- m_cpu_tag( nullptr ),
- m_region_tag( nullptr ),
+ : northbridge_device(mconfig, I82439TX, tag, owner, clock),
+ pci_device_interface(mconfig, *this),
+ m_cpu_tag(nullptr),
+ m_region_tag(nullptr),
m_space(nullptr),
m_rom(nullptr)
{
diff --git a/src/devices/bus/lpci/i82439tx.h b/src/devices/bus/lpci/i82439tx.h
index 41626c7f627..e94b95629c0 100644
--- a/src/devices/bus/lpci/i82439tx.h
+++ b/src/devices/bus/lpci/i82439tx.h
@@ -8,8 +8,10 @@
***************************************************************************/
-#ifndef __I82439TX_H__
-#define __I82439TX_H__
+#ifndef MAME_BUS_LPCI_I82439TX_H
+#define MAME_BUS_LPCI_I82439TX_H
+
+#pragma once
#include "pci.h"
#include "northbridge.h"
@@ -22,8 +24,7 @@
// ======================> i82439tx_device
-class i82439tx_device : public northbridge_device,
- public pci_device_interface
+class i82439tx_device : public northbridge_device, public pci_device_interface
{
public:
// construction/destruction
@@ -54,6 +55,6 @@ private:
};
// device type definition
-extern const device_type I82439TX;
+DECLARE_DEVICE_TYPE(I82439TX, i82439tx_device)
-#endif /* __I82439TX_H__ */
+#endif // MAME_BUS_LPCI_I82439TX_H
diff --git a/src/devices/bus/lpci/mpc105.cpp b/src/devices/bus/lpci/mpc105.cpp
index 45958b4196c..74e11d3f5d5 100644
--- a/src/devices/bus/lpci/mpc105.cpp
+++ b/src/devices/bus/lpci/mpc105.cpp
@@ -18,7 +18,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MPC105 = device_creator<mpc105_device>;
+DEFINE_DEVICE_TYPE(MPC105, mpc105_device, "mpc105", "Motorola MPC105")
//**************************************************************************
@@ -30,7 +30,7 @@ const device_type MPC105 = device_creator<mpc105_device>;
//-------------------------------------------------
mpc105_device::mpc105_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MPC105, "MPC105", tag, owner, clock, "mpc105", __FILE__),
+ : device_t(mconfig, MPC105, tag, owner, clock),
pci_device_interface( mconfig, *this ),
m_cpu_tag(nullptr),
m_bank_base_default(0),
diff --git a/src/devices/bus/lpci/mpc105.h b/src/devices/bus/lpci/mpc105.h
index abd71070b57..3b3a726c4b1 100644
--- a/src/devices/bus/lpci/mpc105.h
+++ b/src/devices/bus/lpci/mpc105.h
@@ -8,8 +8,10 @@
***************************************************************************/
-#ifndef MPC105_H
-#define MPC105_H
+#ifndef MAME_BUS_LPCI_MPC105_H
+#define MAME_BUS_LPCI_MPC105_H
+
+#pragma once
#include "pci.h"
@@ -55,6 +57,6 @@ private:
// device type definition
-extern const device_type MPC105;
+DECLARE_DEVICE_TYPE(MPC105, mpc105_device)
-#endif /* MPC105_H */
+#endif // MAME_BUS_LPCI_MPC105_H
diff --git a/src/devices/bus/lpci/northbridge.cpp b/src/devices/bus/lpci/northbridge.cpp
index 7b69334b688..a2b9314b40a 100644
--- a/src/devices/bus/lpci/northbridge.cpp
+++ b/src/devices/bus/lpci/northbridge.cpp
@@ -13,8 +13,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-northbridge_device::northbridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+northbridge_device::northbridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
m_maincpu(*this, ":maincpu"),
m_ram(*this, ":" RAM_TAG)
{
diff --git a/src/devices/bus/lpci/northbridge.h b/src/devices/bus/lpci/northbridge.h
index 99bf8ad7922..dd557427f16 100644
--- a/src/devices/bus/lpci/northbridge.h
+++ b/src/devices/bus/lpci/northbridge.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
-#pragma once
+#ifndef MAME_BUS_LPCI_NORTHBRIDGE_H
+#define MAME_BUS_LPCI_NORTHBRIDGE_H
-#ifndef __NORTHBRIDGE_H__
-#define __NORTHBRIDGE_H__
+#pragma once
#include "machine/ram.h"
@@ -14,20 +14,18 @@
// ======================> northbridge_device
-class northbridge_device :
- public device_t
+class northbridge_device : public device_t
{
-public:
- // construction/destruction
- northbridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-public:
- required_device<cpu_device> m_maincpu;
- required_device<ram_device> m_ram;
+ // construction/destruction
+ northbridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ required_device<cpu_device> m_maincpu;
+ required_device<ram_device> m_ram;
};
-#endif /* __NORTHBRIDGE_H__ */
+#endif // MAME_BUS_LPCI_NORTHBRIDGE_H
diff --git a/src/devices/bus/lpci/pci.cpp b/src/devices/bus/lpci/pci.cpp
index 19e3d3ed63c..d6c8aef5bba 100644
--- a/src/devices/bus/lpci/pci.cpp
+++ b/src/devices/bus/lpci/pci.cpp
@@ -80,7 +80,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PCI_BUS = device_creator<pci_bus_device>;
+DEFINE_DEVICE_TYPE(PCI_BUS, pci_bus_device, "pci_bus", "PCI Bus")
//**************************************************************************
// LIVE DEVICE
@@ -90,8 +90,8 @@ const device_type PCI_BUS = device_creator<pci_bus_device>;
// pci_bus_device - constructor
//-------------------------------------------------
pci_bus_device::pci_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PCI_BUS, "PCI Bus", tag, owner, clock, "pci_bus", __FILE__), m_busnum(0),
- m_father(nullptr), m_address(0), m_devicenum(0), m_busnumber(0), m_busnumaddr(nullptr)
+ device_t(mconfig, PCI_BUS, tag, owner, clock), m_busnum(0),
+ m_father(nullptr), m_address(0), m_devicenum(0), m_busnumber(0), m_busnumaddr(nullptr)
{
for (auto & elem : m_devtag) {
elem= nullptr;
@@ -262,7 +262,7 @@ void pci_bus_device::device_start()
for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++)
{
sprintf(id, "%d", i);
- pci_connector *conn = downcast<pci_connector *>(subdevice(id));
+ pci_connector_device *conn = downcast<pci_connector_device *>(subdevice(id));
if (conn!=nullptr)
m_device[i] = conn->get_device();
else
@@ -311,24 +311,24 @@ pci_device_interface::~pci_device_interface()
}
-const device_type PCI_CONNECTOR = device_creator<pci_connector>;
+DEFINE_DEVICE_TYPE(PCI_CONNECTOR, pci_connector_device, "pci_connector", "PCI device connector abstraction")
-pci_connector::pci_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PCI_CONNECTOR, "PCI device connector abstraction", tag, owner, clock, "pci_connector", __FILE__),
+pci_connector_device::pci_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PCI_CONNECTOR, tag, owner, clock),
device_slot_interface(mconfig, *this)
{
}
-pci_connector::~pci_connector()
+pci_connector_device::~pci_connector_device()
{
}
-void pci_connector::device_start()
+void pci_connector_device::device_start()
{
}
-pci_device_interface *pci_connector::get_device()
+pci_device_interface *pci_connector_device::get_device()
{
return dynamic_cast<pci_device_interface *>(get_card_device());
}
diff --git a/src/devices/bus/lpci/pci.h b/src/devices/bus/lpci/pci.h
index 4b2ee41e748..f6c30037597 100644
--- a/src/devices/bus/lpci/pci.h
+++ b/src/devices/bus/lpci/pci.h
@@ -8,8 +8,10 @@
***************************************************************************/
-#ifndef PCI_H
-#define PCI_H
+#ifndef MAME_BUS_LPCI_PCI_H
+#define MAME_BUS_LPCI_PCI_H
+
+#pragma once
//**************************************************************************
// TYPE DEFINITIONS
@@ -22,19 +24,21 @@ class pci_device_interface : public device_slot_card_interface
{
public:
// construction/destruction
- pci_device_interface(const machine_config &mconfig, device_t &device);
virtual ~pci_device_interface();
virtual uint32_t pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask) = 0;
virtual void pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask) = 0;
+
+protected:
+ pci_device_interface(const machine_config &mconfig, device_t &device);
};
-class pci_connector: public device_t,
+class pci_connector_device : public device_t,
public device_slot_interface
{
public:
- pci_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~pci_connector();
+ pci_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~pci_connector_device();
pci_device_interface *get_device();
@@ -42,7 +46,7 @@ protected:
virtual void device_start() override;
};
-extern const device_type PCI_CONNECTOR;
+DECLARE_DEVICE_TYPE(PCI_CONNECTOR, pci_connector_device)
// ======================> pci_bus_device
@@ -90,7 +94,7 @@ private:
};
// device type definition
-extern const device_type PCI_BUS;
+DECLARE_DEVICE_TYPE(PCI_BUS, pci_bus_device)
/***************************************************************************
@@ -108,4 +112,4 @@ extern const device_type PCI_BUS;
downcast<pci_bus_device *>(device)->set_father(_father_tag);
-#endif /* PCI_H */
+#endif // MAME_BUS_LPCI_PCI_H
diff --git a/src/devices/bus/lpci/southbridge.cpp b/src/devices/bus/lpci/southbridge.cpp
index 362f5053295..7c9720f4068 100644
--- a/src/devices/bus/lpci/southbridge.cpp
+++ b/src/devices/bus/lpci/southbridge.cpp
@@ -9,6 +9,9 @@
#include "emu.h"
#include "southbridge.h"
+#include "bus/isa/com.h"
+#include "bus/isa/fdc.h"
+#include "bus/isa/lpt.h"
#include "bus/pc_kbd/keyboards.h"
#include "cpu/i386/i386.h"
#include "speaker.h"
@@ -129,8 +132,8 @@ machine_config_constructor southbridge_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME( southbridge );
}
-southbridge_device::southbridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+southbridge_device::southbridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
m_maincpu(*this, ":maincpu"),
m_pic8259_master(*this, "pic8259_master"),
m_pic8259_slave(*this, "pic8259_slave"),
diff --git a/src/devices/bus/lpci/southbridge.h b/src/devices/bus/lpci/southbridge.h
index f5e78c1af9e..f1e8fb7571b 100644
--- a/src/devices/bus/lpci/southbridge.h
+++ b/src/devices/bus/lpci/southbridge.h
@@ -5,6 +5,7 @@
#pragma once
+#include "pci.h"
#include "machine/ins8250.h"
#include "machine/ds128x.h"
@@ -13,15 +14,14 @@
#include "machine/ataintf.h"
#include "machine/at_keybc.h"
+#include "machine/idectrl.h"
#include "imagedev/harddriv.h"
-#include "pci.h"
#include "sound/spkrdev.h"
#include "machine/ram.h"
#include "machine/nvram.h"
#include "bus/isa/isa.h"
-#include "bus/isa/isa_cards.h"
#include "machine/pc_lpt.h"
#include "bus/pc_kbd/pc_kbdc.h"
@@ -38,92 +38,92 @@ class southbridge_device :
public device_t
{
public:
- // construction/destruction
- southbridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-public:
+ DECLARE_READ8_MEMBER(at_page8_r);
+ DECLARE_WRITE8_MEMBER(at_page8_w);
+ DECLARE_READ8_MEMBER(at_portb_r);
+ DECLARE_WRITE8_MEMBER(at_portb_w);
+ DECLARE_READ8_MEMBER(get_slave_ack);
+ DECLARE_WRITE_LINE_MEMBER(at_pit8254_out0_changed);
+ DECLARE_WRITE_LINE_MEMBER(at_pit8254_out1_changed);
+ DECLARE_WRITE_LINE_MEMBER(at_pit8254_out2_changed);
+ DECLARE_WRITE_LINE_MEMBER(pc_dma_hrq_changed);
+ DECLARE_READ8_MEMBER(pc_dma8237_0_dack_r);
+ DECLARE_READ8_MEMBER(pc_dma8237_1_dack_r);
+ DECLARE_READ8_MEMBER(pc_dma8237_2_dack_r);
+ DECLARE_READ8_MEMBER(pc_dma8237_3_dack_r);
+ DECLARE_READ8_MEMBER(pc_dma8237_5_dack_r);
+ DECLARE_READ8_MEMBER(pc_dma8237_6_dack_r);
+ DECLARE_READ8_MEMBER(pc_dma8237_7_dack_r);
+ DECLARE_WRITE8_MEMBER(pc_dma8237_0_dack_w);
+ DECLARE_WRITE8_MEMBER(pc_dma8237_1_dack_w);
+ DECLARE_WRITE8_MEMBER(pc_dma8237_2_dack_w);
+ DECLARE_WRITE8_MEMBER(pc_dma8237_3_dack_w);
+ DECLARE_WRITE8_MEMBER(pc_dma8237_5_dack_w);
+ DECLARE_WRITE8_MEMBER(pc_dma8237_6_dack_w);
+ DECLARE_WRITE8_MEMBER(pc_dma8237_7_dack_w);
+ DECLARE_WRITE_LINE_MEMBER(at_dma8237_out_eop);
+ DECLARE_WRITE_LINE_MEMBER(pc_dack0_w);
+ DECLARE_WRITE_LINE_MEMBER(pc_dack1_w);
+ DECLARE_WRITE_LINE_MEMBER(pc_dack2_w);
+ DECLARE_WRITE_LINE_MEMBER(pc_dack3_w);
+ DECLARE_WRITE_LINE_MEMBER(pc_dack4_w);
+ DECLARE_WRITE_LINE_MEMBER(pc_dack5_w);
+ DECLARE_WRITE_LINE_MEMBER(pc_dack6_w);
+ DECLARE_WRITE_LINE_MEMBER(pc_dack7_w);
+ DECLARE_READ8_MEMBER(ide_read_cs1_r);
+ DECLARE_WRITE8_MEMBER(ide_write_cs1_w);
+ DECLARE_READ8_MEMBER(ide2_read_cs1_r);
+ DECLARE_WRITE8_MEMBER(ide2_write_cs1_w);
+ DECLARE_READ8_MEMBER(at_dma8237_2_r);
+ DECLARE_WRITE8_MEMBER(at_dma8237_2_w);
+ DECLARE_READ8_MEMBER(at_keybc_r);
+ DECLARE_WRITE8_MEMBER(at_keybc_w);
+ DECLARE_WRITE8_MEMBER(write_rtc);
+ DECLARE_READ8_MEMBER(pc_dma_read_byte);
+ DECLARE_WRITE8_MEMBER(pc_dma_write_byte);
+ DECLARE_READ8_MEMBER(pc_dma_read_word);
+ DECLARE_WRITE8_MEMBER(pc_dma_write_word);
- required_device<cpu_device> m_maincpu;
- required_device<pic8259_device> m_pic8259_master;
- required_device<pic8259_device> m_pic8259_slave;
- required_device<am9517a_device> m_dma8237_1;
- required_device<am9517a_device> m_dma8237_2;
- required_device<pit8254_device> m_pit8254;
- required_device<at_keyboard_controller_device> m_keybc;
- required_device<isa16_device> m_isabus;
- required_device<speaker_sound_device> m_speaker;
- required_device<ds12885_device> m_ds12885;
- required_device<pc_kbdc_device> m_pc_kbdc;
- required_device<bus_master_ide_controller_device> m_ide;
- required_device<bus_master_ide_controller_device> m_ide2;
- DECLARE_READ8_MEMBER(at_page8_r);
- DECLARE_WRITE8_MEMBER(at_page8_w);
- DECLARE_READ8_MEMBER(at_portb_r);
- DECLARE_WRITE8_MEMBER(at_portb_w);
- DECLARE_READ8_MEMBER(get_slave_ack);
- DECLARE_WRITE_LINE_MEMBER(at_pit8254_out0_changed);
- DECLARE_WRITE_LINE_MEMBER(at_pit8254_out1_changed);
- DECLARE_WRITE_LINE_MEMBER(at_pit8254_out2_changed);
- DECLARE_WRITE_LINE_MEMBER(pc_dma_hrq_changed);
- DECLARE_READ8_MEMBER(pc_dma8237_0_dack_r);
- DECLARE_READ8_MEMBER(pc_dma8237_1_dack_r);
- DECLARE_READ8_MEMBER(pc_dma8237_2_dack_r);
- DECLARE_READ8_MEMBER(pc_dma8237_3_dack_r);
- DECLARE_READ8_MEMBER(pc_dma8237_5_dack_r);
- DECLARE_READ8_MEMBER(pc_dma8237_6_dack_r);
- DECLARE_READ8_MEMBER(pc_dma8237_7_dack_r);
- DECLARE_WRITE8_MEMBER(pc_dma8237_0_dack_w);
- DECLARE_WRITE8_MEMBER(pc_dma8237_1_dack_w);
- DECLARE_WRITE8_MEMBER(pc_dma8237_2_dack_w);
- DECLARE_WRITE8_MEMBER(pc_dma8237_3_dack_w);
- DECLARE_WRITE8_MEMBER(pc_dma8237_5_dack_w);
- DECLARE_WRITE8_MEMBER(pc_dma8237_6_dack_w);
- DECLARE_WRITE8_MEMBER(pc_dma8237_7_dack_w);
- DECLARE_WRITE_LINE_MEMBER(at_dma8237_out_eop);
- DECLARE_WRITE_LINE_MEMBER(pc_dack0_w);
- DECLARE_WRITE_LINE_MEMBER(pc_dack1_w);
- DECLARE_WRITE_LINE_MEMBER(pc_dack2_w);
- DECLARE_WRITE_LINE_MEMBER(pc_dack3_w);
- DECLARE_WRITE_LINE_MEMBER(pc_dack4_w);
- DECLARE_WRITE_LINE_MEMBER(pc_dack5_w);
- DECLARE_WRITE_LINE_MEMBER(pc_dack6_w);
- DECLARE_WRITE_LINE_MEMBER(pc_dack7_w);
- DECLARE_READ8_MEMBER(ide_read_cs1_r);
- DECLARE_WRITE8_MEMBER(ide_write_cs1_w);
- DECLARE_READ8_MEMBER(ide2_read_cs1_r);
- DECLARE_WRITE8_MEMBER(ide2_write_cs1_w);
- DECLARE_READ8_MEMBER(at_dma8237_2_r);
- DECLARE_WRITE8_MEMBER(at_dma8237_2_w);
- DECLARE_READ8_MEMBER(at_keybc_r);
- DECLARE_WRITE8_MEMBER(at_keybc_w);
- DECLARE_WRITE8_MEMBER(write_rtc);
- DECLARE_READ8_MEMBER(pc_dma_read_byte);
- DECLARE_WRITE8_MEMBER(pc_dma_write_byte);
- DECLARE_READ8_MEMBER(pc_dma_read_word);
- DECLARE_WRITE8_MEMBER(pc_dma_write_word);
protected:
- uint8_t m_at_spkrdata;
- uint8_t m_pit_out2;
- int m_dma_channel;
- bool m_cur_eop;
- uint8_t m_dma_offset[2][4];
- uint8_t m_at_pages[0x10];
- uint16_t m_dma_high_byte;
- uint8_t m_at_speaker;
- bool m_refresh;
- void at_speaker_set_spkrdata(uint8_t data);
-
- uint8_t m_channel_check;
- uint8_t m_nmi_enabled;
-
- void pc_select_dma_channel(int channel, bool state);
+ // construction/destruction
+ southbridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ required_device<cpu_device> m_maincpu;
+ required_device<pic8259_device> m_pic8259_master;
+ required_device<pic8259_device> m_pic8259_slave;
+ required_device<am9517a_device> m_dma8237_1;
+ required_device<am9517a_device> m_dma8237_2;
+ required_device<pit8254_device> m_pit8254;
+ required_device<at_keyboard_controller_device> m_keybc;
+ required_device<isa16_device> m_isabus;
+ required_device<speaker_sound_device> m_speaker;
+ required_device<ds12885_device> m_ds12885;
+ required_device<pc_kbdc_device> m_pc_kbdc;
+ required_device<bus_master_ide_controller_device> m_ide;
+ required_device<bus_master_ide_controller_device> m_ide2;
+
+ uint8_t m_at_spkrdata;
+ uint8_t m_pit_out2;
+ int m_dma_channel;
+ bool m_cur_eop;
+ uint8_t m_dma_offset[2][4];
+ uint8_t m_at_pages[0x10];
+ uint16_t m_dma_high_byte;
+ uint8_t m_at_speaker;
+ bool m_refresh;
+ void at_speaker_set_spkrdata(uint8_t data);
+
+ uint8_t m_channel_check;
+ uint8_t m_nmi_enabled;
+
+ void pc_select_dma_channel(int channel, bool state);
};
#endif // MAME_BUS_LPCI_SOUTHBRIDGE_H
diff --git a/src/devices/bus/lpci/vt82c505.cpp b/src/devices/bus/lpci/vt82c505.cpp
index d6e2ea56302..a7bad9cc0a2 100644
--- a/src/devices/bus/lpci/vt82c505.cpp
+++ b/src/devices/bus/lpci/vt82c505.cpp
@@ -14,12 +14,12 @@
IMPLEMENTATION
***************************************************************************/
-const device_type VT82C505 = device_creator<vt82c505_device>;
+DEFINE_DEVICE_TYPE(VT82C505, vt82c505_device, "vt82c505_device", "VIA VT82C505 PCI bridge")
vt82c505_device::vt82c505_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VT82C505, "VIA VT82C505 PCI bridge", tag, owner, clock, "vt82c505", __FILE__),
- pci_device_interface( mconfig, *this )
+ : device_t(mconfig, VT82C505, tag, owner, clock)
+ , pci_device_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/lpci/vt82c505.h b/src/devices/bus/lpci/vt82c505.h
index 7bd37b568b5..bbe790781d2 100644
--- a/src/devices/bus/lpci/vt82c505.h
+++ b/src/devices/bus/lpci/vt82c505.h
@@ -6,13 +6,12 @@
*/
-#ifndef __VT82C505_H__
-#define __VT82C505_H__
+#ifndef MAME_BUS_LPCI_VT82C505_H
+#define MAME_BUS_LPCI_VT82C505_H
#include "pci.h"
-class vt82c505_device : public device_t,
- public pci_device_interface
+class vt82c505_device : public device_t, public pci_device_interface
{
public:
// construction/destruction
@@ -32,7 +31,6 @@ private:
};
// device type definition
-extern const device_type VT82C505;
+DECLARE_DEVICE_TYPE(VT82C505, vt82c505_device)
-
-#endif /* __VT82C505_H__ */
+#endif // MAME_BUS_LPCI_VT82C505_H
diff --git a/src/devices/bus/m5/rom.cpp b/src/devices/bus/m5/rom.cpp
index 7ca9a2400d1..5bb1ee371cc 100644
--- a/src/devices/bus/m5/rom.cpp
+++ b/src/devices/bus/m5/rom.cpp
@@ -17,25 +17,24 @@
// m5_rom_device - constructor
//-------------------------------------------------
-const device_type M5_ROM_STD = device_creator<m5_rom_device>;
-const device_type M5_ROM_RAM = device_creator<m5_ram_device>;
+DEFINE_DEVICE_TYPE(M5_ROM_STD, m5_rom_device, "m5_rom", "M5 Standard ROM Carts")
+DEFINE_DEVICE_TYPE(M5_ROM_RAM, m5_ram_device, "m5_ram", "M5 Expansion memory cart")
-m5_rom_device::m5_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_m5_cart_interface( mconfig, *this )
+m5_rom_device::m5_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_m5_cart_interface(mconfig, *this)
{
}
m5_rom_device::m5_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, M5_ROM_STD, "M5 Standard ROM Carts", tag, owner, clock, "m5_rom", __FILE__),
- device_m5_cart_interface( mconfig, *this )
+ : m5_rom_device(mconfig, M5_ROM_STD, tag, owner, clock)
{
}
m5_ram_device::m5_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m5_rom_device(mconfig, M5_ROM_RAM, "M5 Expansion memory cart", tag, owner, clock, "m5_ram", __FILE__)
+ : m5_rom_device(mconfig, M5_ROM_RAM, tag, owner, clock)
{
}
diff --git a/src/devices/bus/m5/rom.h b/src/devices/bus/m5/rom.h
index bfa40ee08ed..6050920c153 100644
--- a/src/devices/bus/m5/rom.h
+++ b/src/devices/bus/m5/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __M5_ROM_H
-#define __M5_ROM_H
+#ifndef MAME_BUS_M5_ROM_H
+#define MAME_BUS_M5_ROM_H
+
+#pragma once
#include "slot.h"
@@ -13,7 +15,6 @@ class m5_rom_device : public device_t,
{
public:
// construction/destruction
- m5_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
m5_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
@@ -22,6 +23,9 @@ public:
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
+
+protected:
+ m5_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
// ======================> m5_ram_device
@@ -32,19 +36,20 @@ public:
// construction/destruction
m5_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {}
- virtual void device_reset() override {}
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
};
// device type definition
-extern const device_type M5_ROM_STD;
-extern const device_type M5_ROM_RAM;
+DECLARE_DEVICE_TYPE(M5_ROM_STD, m5_rom_device)
+DECLARE_DEVICE_TYPE(M5_ROM_RAM, m5_ram_device)
-#endif
+#endif // MAME_BUS_M5_ROM_H
diff --git a/src/devices/bus/m5/slot.cpp b/src/devices/bus/m5/slot.cpp
index 71f9fd2c608..cdfb88466e1 100644
--- a/src/devices/bus/m5/slot.cpp
+++ b/src/devices/bus/m5/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type M5_CART_SLOT = device_creator<m5_cart_slot_device>;
+DEFINE_DEVICE_TYPE(M5_CART_SLOT, m5_cart_slot_device, "m5_cart_slot", "M5 Cartridge Slot")
//**************************************************************************
// M5 Cartridges Interface
@@ -73,10 +73,10 @@ void device_m5_cart_interface::ram_alloc(uint32_t size)
// m5_cart_slot_device - constructor
//-------------------------------------------------
m5_cart_slot_device::m5_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, M5_CART_SLOT, "M5 Cartridge Slot", tag, owner, clock, "m5_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(M5_STD), m_cart(nullptr)
+ device_t(mconfig, M5_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(M5_STD), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/m5/slot.h b/src/devices/bus/m5/slot.h
index 80735c62154..48cb4d15124 100644
--- a/src/devices/bus/m5/slot.h
+++ b/src/devices/bus/m5/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __M5_SLOT_H
-#define __M5_SLOT_H
+#ifndef MAME_BUS_M5_SLOT_H
+#define MAME_BUS_M5_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -30,7 +32,6 @@ class device_m5_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_m5_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_m5_cart_interface();
// reading and writing
@@ -48,6 +49,8 @@ public:
void save_ram() { device().save_item(NAME(m_ram)); }
protected:
+ device_m5_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -104,7 +107,7 @@ protected:
// device type definition
-extern const device_type M5_CART_SLOT;
+DECLARE_DEVICE_TYPE(M5_CART_SLOT, m5_cart_slot_device)
/***************************************************************************
@@ -116,4 +119,6 @@ extern const device_type M5_CART_SLOT;
#define MCFG_M5_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, M5_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+
+
+#endif // MAME_BUS_M5_SLOT_H
diff --git a/src/devices/bus/macpds/macpds.cpp b/src/devices/bus/macpds/macpds.cpp
index b28f864bb80..36f6cf90219 100644
--- a/src/devices/bus/macpds/macpds.cpp
+++ b/src/devices/bus/macpds/macpds.cpp
@@ -16,7 +16,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type MACPDS_SLOT = device_creator<macpds_slot_device>;
+DEFINE_DEVICE_TYPE(MACPDS_SLOT, macpds_slot_device, "macpds_slot", "Mac 68000 Processor-Direct Slot")
//**************************************************************************
// LIVE DEVICE
@@ -26,16 +26,15 @@ const device_type MACPDS_SLOT = device_creator<macpds_slot_device>;
// macpds_slot_device - constructor
//-------------------------------------------------
macpds_slot_device::macpds_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MACPDS_SLOT, "Mac 68000 Processor-Direct Slot", tag, owner, clock, "macpds_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_macpds_tag(nullptr),
- m_macpds_slottag(nullptr)
+ macpds_slot_device(mconfig, MACPDS_SLOT, tag, owner, clock)
{
}
-macpds_slot_device::macpds_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_interface(mconfig, *this), m_macpds_tag(nullptr), m_macpds_slottag(nullptr)
+macpds_slot_device::macpds_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_macpds_tag(nullptr),
+ m_macpds_slottag(nullptr)
{
}
@@ -61,7 +60,7 @@ void macpds_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type MACPDS = device_creator<macpds_device>;
+DEFINE_DEVICE_TYPE(MACPDS, macpds_device, "macpds", "Mac 68000 Processor-Direct Bus")
void macpds_device::static_set_cputag(device_t &device, const char *tag)
{
@@ -78,12 +77,14 @@ void macpds_device::static_set_cputag(device_t &device, const char *tag)
//-------------------------------------------------
macpds_device::macpds_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MACPDS, "MACPDS", tag, owner, clock, "macpds", __FILE__), m_maincpu(nullptr), m_cputag(nullptr)
+ macpds_device(mconfig, MACPDS, tag, owner, clock)
{
}
-macpds_device::macpds_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source), m_maincpu(nullptr), m_cputag(nullptr)
+macpds_device::macpds_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ m_maincpu(nullptr),
+ m_cputag(nullptr)
{
}
//-------------------------------------------------
diff --git a/src/devices/bus/macpds/macpds.h b/src/devices/bus/macpds/macpds.h
index 848d5d726f5..fdd62404fac 100644
--- a/src/devices/bus/macpds/macpds.h
+++ b/src/devices/bus/macpds/macpds.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_MACPDS_MACPDS_H
+#define MAME_BUS_MACPDS_MACPDS_H
-#ifndef __MACPDS_H__
-#define __MACPDS_H__
+#pragma once
@@ -51,20 +51,22 @@ class macpds_slot_device : public device_t,
public:
// construction/destruction
macpds_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- macpds_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // device-level overrides
- virtual void device_start() override;
// inline configuration
static void static_set_macpds_slot(device_t &device, const char *tag, const char *slottag);
+
protected:
+ macpds_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
// configuration
const char *m_macpds_tag, *m_macpds_slottag;
};
// device type definition
-extern const device_type MACPDS_SLOT;
+DECLARE_DEVICE_TYPE(MACPDS_SLOT, macpds_slot_device)
class device_macpds_card_interface;
@@ -75,7 +77,6 @@ class macpds_device : public device_t
public:
// construction/destruction
macpds_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- macpds_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
~macpds_device() { m_device_list.detach_all(); }
// inline configuration
static void static_set_cputag(device_t &device, const char *tag);
@@ -87,6 +88,8 @@ public:
void set_irq_line(int line, int state);
protected:
+ macpds_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -100,7 +103,7 @@ protected:
// device type definition
-extern const device_type MACPDS;
+DECLARE_DEVICE_TYPE(MACPDS, macpds_device)
// ======================> device_macpds_card_interface
@@ -108,9 +111,9 @@ extern const device_type MACPDS;
class device_macpds_card_interface : public device_slot_card_interface
{
friend class macpds_device;
+ template <class ElememtType> friend class simple_list;
public:
// construction/destruction
- device_macpds_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_macpds_card_interface();
device_macpds_card_interface *next() const { return m_next; }
@@ -123,10 +126,15 @@ public:
// inline configuration
static void static_set_macpds_tag(device_t &device, const char *tag, const char *slottag);
-public:
+
+protected:
+ device_macpds_card_interface(const machine_config &mconfig, device_t &device);
+
macpds_device *m_macpds;
const char *m_macpds_tag, *m_macpds_slottag;
+
+private:
device_macpds_card_interface *m_next;
};
-#endif /* __MACPDS_H__ */
+#endif // MAME_BUS_MACPDS_MACPDS_H
diff --git a/src/devices/bus/macpds/pds_tpdfpd.cpp b/src/devices/bus/macpds/pds_tpdfpd.cpp
index 6b3260f74f5..a148c57e639 100644
--- a/src/devices/bus/macpds/pds_tpdfpd.cpp
+++ b/src/devices/bus/macpds/pds_tpdfpd.cpp
@@ -59,7 +59,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PDS_SEDISPLAY = device_creator<macpds_sedisplay_device>;
+DEFINE_DEVICE_TYPE(PDS_SEDISPLAY, macpds_sedisplay_device, "pds_sefp", "Radius SE Full Page Display")
//-------------------------------------------------
@@ -90,20 +90,17 @@ const tiny_rom_entry *macpds_sedisplay_device::device_rom_region() const
//-------------------------------------------------
macpds_sedisplay_device::macpds_sedisplay_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PDS_SEDISPLAY, "Radius SE Full Page Display", tag, owner, clock, "pds_sefp", __FILE__),
- device_video_interface(mconfig, *this),
- device_macpds_card_interface(mconfig, *this), m_vram(nullptr), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+ macpds_sedisplay_device(mconfig, PDS_SEDISPLAY, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(SEDISPLAY_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-macpds_sedisplay_device::macpds_sedisplay_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_macpds_card_interface(mconfig, *this), m_vram(nullptr), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+macpds_sedisplay_device::macpds_sedisplay_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_macpds_card_interface(mconfig, *this),
+ m_vram(nullptr), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, SEDISPLAY_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(SEDISPLAY_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/macpds/pds_tpdfpd.h b/src/devices/bus/macpds/pds_tpdfpd.h
index 0082df18349..b0111bcef8e 100644
--- a/src/devices/bus/macpds/pds_tpdfpd.h
+++ b/src/devices/bus/macpds/pds_tpdfpd.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_PDS_TPDFPD_H
+#define MAME_BUS_PDS_TPDFPD_H
-#ifndef __PDS_SEDISPLAY_H__
-#define __PDS_SEDISPLAY_H__
+#pragma once
#include "macpds.h"
@@ -19,36 +19,37 @@ class macpds_sedisplay_device :
public device_macpds_card_interface
{
public:
- // construction/destruction
- macpds_sedisplay_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- macpds_sedisplay_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // construction/destruction
+ macpds_sedisplay_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ16_MEMBER(sedisplay_r);
- DECLARE_WRITE16_MEMBER(sedisplay_w);
- DECLARE_READ16_MEMBER(ramdac_r);
- DECLARE_WRITE16_MEMBER(ramdac_w);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-public:
- std::unique_ptr<uint8_t[]> m_vram;
- uint32_t m_vbl_disable;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+protected:
+ macpds_sedisplay_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ DECLARE_READ16_MEMBER(sedisplay_r);
+ DECLARE_WRITE16_MEMBER(sedisplay_w);
+ DECLARE_READ16_MEMBER(ramdac_r);
+ DECLARE_WRITE16_MEMBER(ramdac_w);
+
+ std::unique_ptr<uint8_t[]> m_vram;
+ uint32_t m_vbl_disable;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
};
// device type definition
-extern const device_type PDS_SEDISPLAY;
+DECLARE_DEVICE_TYPE(PDS_SEDISPLAY, macpds_sedisplay_device)
-#endif /* __MACPDS_SEDISPLAY_H__ */
+#endif // MAME_BUS_PDS_TPDFPD_H
diff --git a/src/devices/bus/megadrive/eeprom.cpp b/src/devices/bus/megadrive/eeprom.cpp
index 128de4da279..96b9f0bb335 100644
--- a/src/devices/bus/megadrive/eeprom.cpp
+++ b/src/devices/bus/megadrive/eeprom.cpp
@@ -51,56 +51,54 @@
// md_rom_device - constructor
//-------------------------------------------------
-const device_type MD_STD_EEPROM = device_creator<md_std_eeprom_device>;
-const device_type MD_EEPROM_NBAJAM = device_creator<md_eeprom_nbajam_device>;
-const device_type MD_EEPROM_NBAJAMTE = device_creator<md_eeprom_nbajamte_device>;
-const device_type MD_EEPROM_NFLQB = device_creator<md_eeprom_nflqb_device>;
-const device_type MD_EEPROM_CSLAM = device_creator<md_eeprom_cslam_device>;
-const device_type MD_EEPROM_NHLPA = device_creator<md_eeprom_nhlpa_device>;
-const device_type MD_EEPROM_BLARA = device_creator<md_eeprom_blara_device>;
-
-
-md_std_eeprom_device::md_std_eeprom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_md_cart_interface( mconfig, *this ),
- m_i2cmem(*this, "i2cmem"), m_i2c_mem(0), m_i2c_clk(0)
- {
+DEFINE_DEVICE_TYPE(MD_STD_EEPROM, md_std_eeprom_device, "md_std_eeprom", "MD Standard cart + EEPROM")
+DEFINE_DEVICE_TYPE(MD_EEPROM_NBAJAM, md_eeprom_nbajam_device, "md_eeprom_nbajam", "MD NBA Jam")
+DEFINE_DEVICE_TYPE(MD_EEPROM_NBAJAMTE, md_eeprom_nbajamte_device, "md_eeprom_nbajamte", "MD NBA Jam TE") // and a few more
+DEFINE_DEVICE_TYPE(MD_EEPROM_NFLQB, md_eeprom_nflqb_device, "md_eeprom_nflqb", "MD NFL Quarterback 96")
+DEFINE_DEVICE_TYPE(MD_EEPROM_CSLAM, md_eeprom_cslam_device, "md_eeprom_cslam", "MD College Slam")
+DEFINE_DEVICE_TYPE(MD_EEPROM_NHLPA, md_eeprom_nhlpa_device, "md_eeprom_nhlpa", "MD NHLPA 93")
+DEFINE_DEVICE_TYPE(MD_EEPROM_BLARA, md_eeprom_blara_device, "md_eeprom_blara", "MD Brian Lara")
+
+
+md_std_eeprom_device::md_std_eeprom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_md_cart_interface(mconfig, *this)
+ , m_i2cmem(*this, "i2cmem"), m_i2c_mem(0), m_i2c_clk(0)
+{
}
md_std_eeprom_device::md_std_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MD_STD_EEPROM, "MD Standard cart + EEPROM", tag, owner, clock, "md_std_eeprom", __FILE__),
- device_md_cart_interface( mconfig, *this ),
- m_i2cmem(*this, "i2cmem"), m_i2c_mem(0), m_i2c_clk(0)
- {
+ : md_std_eeprom_device(mconfig, MD_STD_EEPROM, tag, owner, clock)
+{
}
md_eeprom_nbajam_device::md_eeprom_nbajam_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_eeprom_device(mconfig, MD_EEPROM_NBAJAM, "MD NBA Jam", tag, owner, clock, "md_eeprom_nbajam", __FILE__)
+ : md_std_eeprom_device(mconfig, MD_EEPROM_NBAJAM, tag, owner, clock)
{
}
md_eeprom_nbajamte_device::md_eeprom_nbajamte_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_eeprom_device(mconfig, MD_EEPROM_NBAJAMTE, "MD NBA Jam TE (and a few more)", tag, owner, clock, "md_eeprom_nbajamte", __FILE__)
+ : md_std_eeprom_device(mconfig, MD_EEPROM_NBAJAMTE, tag, owner, clock)
{
}
-md_eeprom_cslam_device::md_eeprom_cslam_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_eeprom_device(mconfig, MD_EEPROM_CSLAM, "MD College Slam", tag, owner, clock, "md_eeprom_cslam", __FILE__)
+md_eeprom_nflqb_device::md_eeprom_nflqb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : md_std_eeprom_device(mconfig, MD_EEPROM_NFLQB, tag, owner, clock)
{
}
-md_eeprom_nflqb_device::md_eeprom_nflqb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_eeprom_device(mconfig, MD_EEPROM_NFLQB, "MD NFL Quarterback 96", tag, owner, clock, "md_eeprom_nflqb", __FILE__)
+md_eeprom_cslam_device::md_eeprom_cslam_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : md_std_eeprom_device(mconfig, MD_EEPROM_CSLAM, tag, owner, clock)
{
}
md_eeprom_nhlpa_device::md_eeprom_nhlpa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_eeprom_device(mconfig, MD_EEPROM_NHLPA, "MD NHLPA 93", tag, owner, clock, "md_eeprom_nhlpa", __FILE__)
+ : md_std_eeprom_device(mconfig, MD_EEPROM_NHLPA, tag, owner, clock)
{
}
md_eeprom_blara_device::md_eeprom_blara_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_eeprom_device(mconfig, MD_EEPROM_BLARA, "MD Brian Lara", tag, owner, clock, "md_eeprom_blara", __FILE__)
+ : md_std_eeprom_device(mconfig, MD_EEPROM_BLARA, tag, owner, clock)
{
}
@@ -378,20 +376,20 @@ WRITE16_MEMBER(md_eeprom_blara_device::write)
// TEMPORARY ADDITION UNTIL WE FIND OUT WHAT IS MISSING IN THE CORE X24C02 CODE
// THIS IS A CUSTOM I2C EEPROM EMULATION THAT ALLOWS NBA JAM TO WORK
-const device_type MD_EEPROM_NBAJAM_ALT = device_creator<md_eeprom_nbajam_device_alt>;
+DEFINE_DEVICE_TYPE(MD_EEPROM_NBAJAM_ALT, md_eeprom_nbajam_alt_device, "md_eeprom_nbajama", "MD NBA Jam (Alt)")
-md_eeprom_nbajam_device_alt::md_eeprom_nbajam_device_alt(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_eeprom_device(mconfig, MD_EEPROM_NBAJAM_ALT, "MD NBA Jam (Alt)", tag, owner, clock, "md_eeprom_nbajama", __FILE__)
+md_eeprom_nbajam_alt_device::md_eeprom_nbajam_alt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : md_std_eeprom_device(mconfig, MD_EEPROM_NBAJAM_ALT, tag, owner, clock)
{
}
-void md_eeprom_nbajam_device_alt::device_start()
+void md_eeprom_nbajam_alt_device::device_start()
{
eeprom_i2c_init();
}
-void md_eeprom_nbajam_device_alt::eeprom_i2c_init()
+void md_eeprom_nbajam_alt_device::eeprom_i2c_init()
{
m_eeprom_cnt = 0;
m_eeprom_readwrite = 0;
@@ -410,7 +408,7 @@ void md_eeprom_nbajam_device_alt::eeprom_i2c_init()
// this is analogous to i2cmem.cpp implementation of write_sda
-void md_eeprom_nbajam_device_alt::idle_devsel_check()
+void md_eeprom_nbajam_alt_device::idle_devsel_check()
{
if (m_eeprom_scl)
{
@@ -431,7 +429,7 @@ void md_eeprom_nbajam_device_alt::idle_devsel_check()
}
}
-void md_eeprom_nbajam_device_alt::eeprom_i2c_update(void)
+void md_eeprom_nbajam_alt_device::eeprom_i2c_update(void)
{
switch (m_eeprom_cur_state)
{
@@ -574,7 +572,7 @@ void md_eeprom_nbajam_device_alt::eeprom_i2c_update(void)
//printf("Write line : status %d SDA %x SCL %x (count %d)\n", m_eeprom_cur_state, m_eeprom_sda, m_eeprom_scl, m_eeprom_cnt);
}
-uint8_t md_eeprom_nbajam_device_alt::eeprom_i2c_out()
+uint8_t md_eeprom_nbajam_alt_device::eeprom_i2c_out()
{
uint8_t res = m_eeprom_sda;
@@ -614,7 +612,7 @@ uint8_t md_eeprom_nbajam_device_alt::eeprom_i2c_out()
}
-READ16_MEMBER(md_eeprom_nbajam_device_alt::read)
+READ16_MEMBER(md_eeprom_nbajam_alt_device::read)
{
if (offset == 0x200000/2)
{
@@ -626,7 +624,7 @@ READ16_MEMBER(md_eeprom_nbajam_device_alt::read)
return 0xffff;
}
-WRITE16_MEMBER(md_eeprom_nbajam_device_alt::write)
+WRITE16_MEMBER(md_eeprom_nbajam_alt_device::write)
{
if (offset == 0x200000/2)
{
diff --git a/src/devices/bus/megadrive/eeprom.h b/src/devices/bus/megadrive/eeprom.h
index a99766a8681..aaa4f196fe2 100644
--- a/src/devices/bus/megadrive/eeprom.h
+++ b/src/devices/bus/megadrive/eeprom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __MD_EEPROM_H
-#define __MD_EEPROM_H
+#ifndef MAME_BUS_MEGADRIVE_EEPROM_H
+#define MAME_BUS_MEGADRIVE_EEPROM_H
+
+#pragma once
#include "md_slot.h"
#include "machine/i2cmem.h"
@@ -18,7 +20,6 @@ class md_std_eeprom_device : public device_t,
{
public:
// construction/destruction
- md_std_eeprom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
md_std_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
@@ -30,6 +31,9 @@ public:
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ md_std_eeprom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
required_device<i2cmem_device> m_i2cmem;
uint8_t m_i2c_mem, m_i2c_clk;
};
@@ -132,13 +136,13 @@ public:
// device type definition
-extern const device_type MD_STD_EEPROM;
-extern const device_type MD_EEPROM_NBAJAM;
-extern const device_type MD_EEPROM_NBAJAMTE;
-extern const device_type MD_EEPROM_CSLAM;
-extern const device_type MD_EEPROM_NFLQB;
-extern const device_type MD_EEPROM_NHLPA;
-extern const device_type MD_EEPROM_BLARA;
+DECLARE_DEVICE_TYPE(MD_STD_EEPROM, md_std_eeprom_device)
+DECLARE_DEVICE_TYPE(MD_EEPROM_NBAJAM, md_eeprom_nbajam_device)
+DECLARE_DEVICE_TYPE(MD_EEPROM_NBAJAMTE, md_eeprom_nbajamte_device)
+DECLARE_DEVICE_TYPE(MD_EEPROM_CSLAM, md_eeprom_cslam_device)
+DECLARE_DEVICE_TYPE(MD_EEPROM_NFLQB, md_eeprom_nflqb_device)
+DECLARE_DEVICE_TYPE(MD_EEPROM_NHLPA, md_eeprom_nhlpa_device)
+DECLARE_DEVICE_TYPE(MD_EEPROM_BLARA, md_eeprom_blara_device)
@@ -155,30 +159,30 @@ enum
STATE_I2C_READ_DATA
};
-// ======================> md_eeprom_nbajam_device_alt
+// ======================> md_eeprom_nbajam_alt_device
-class md_eeprom_nbajam_device_alt : public md_std_eeprom_device
+class md_eeprom_nbajam_alt_device : public md_std_eeprom_device
{
public:
// construction/destruction
- md_eeprom_nbajam_device_alt(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
-// virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_start() override;
+ md_eeprom_nbajam_alt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
- std::vector<uint8_t> m_sram;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+private:
void eeprom_i2c_init();
void idle_devsel_check();
void eeprom_i2c_update();
uint8_t eeprom_i2c_out();
-private:
+ std::vector<uint8_t> m_sram;
+
// EEPROM runtime vars
uint8_t m_eeprom_sda; // current SDA
uint8_t m_eeprom_prev_sda; // previous SDA
@@ -197,8 +201,7 @@ private:
};
-extern const device_type MD_EEPROM_NBAJAM_ALT;
-
+DECLARE_DEVICE_TYPE(MD_EEPROM_NBAJAM_ALT, md_eeprom_nbajam_alt_device)
-#endif
+#endif // MAME_BUS_MEGADRIVE_EEPROM_H
diff --git a/src/devices/bus/megadrive/ggenie.cpp b/src/devices/bus/megadrive/ggenie.cpp
index 0fa81aa1022..a809e0a948d 100644
--- a/src/devices/bus/megadrive/ggenie.cpp
+++ b/src/devices/bus/megadrive/ggenie.cpp
@@ -29,14 +29,15 @@
// md_rom_device - constructor
//-------------------------------------------------
-const device_type MD_ROM_GAMEGENIE = device_creator<md_rom_ggenie_device>;
+DEFINE_DEVICE_TYPE(MD_ROM_GAMEGENIE, md_rom_ggenie_device, "md_ggenie", "MD Game Genie")
md_rom_ggenie_device::md_rom_ggenie_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MD_ROM_GAMEGENIE, "MD Game Genie", tag, owner, clock, "md_ggenie", __FILE__),
- device_md_cart_interface( mconfig, *this ),
- m_exp(*this, "subslot"), m_gg_bypass(0), m_reg_enable(0)
- {
+ : device_t(mconfig, MD_ROM_GAMEGENIE, tag, owner, clock)
+ , device_md_cart_interface(mconfig, *this)
+ , m_exp(*this, "subslot")
+ , m_gg_bypass(0), m_reg_enable(0)
+{
}
diff --git a/src/devices/bus/megadrive/ggenie.h b/src/devices/bus/megadrive/ggenie.h
index 5970ca1d172..49cf1784f64 100644
--- a/src/devices/bus/megadrive/ggenie.h
+++ b/src/devices/bus/megadrive/ggenie.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __MD_GGENIE_H
-#define __MD_GGENIE_H
+#ifndef MAME_BUS_MEGADRIVE_GGENIE_H
+#define MAME_BUS_MEGADRIVE_GGENIE_H
+
+#pragma once
#include "md_slot.h"
@@ -16,14 +18,16 @@ public:
md_rom_ggenie_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
required_device<md_cart_slot_device> m_exp;
uint16_t m_gg_regs[0x20];
@@ -35,6 +39,6 @@ private:
// device type definition
-extern const device_type MD_ROM_GAMEGENIE;
+DECLARE_DEVICE_TYPE(MD_ROM_GAMEGENIE, md_rom_ggenie_device)
-#endif
+#endif // MAME_BUS_MEGADRIVE_GGENIE_H
diff --git a/src/devices/bus/megadrive/jcart.cpp b/src/devices/bus/megadrive/jcart.cpp
index 06ed2720eff..d432e8f135b 100644
--- a/src/devices/bus/megadrive/jcart.cpp
+++ b/src/devices/bus/megadrive/jcart.cpp
@@ -35,43 +35,39 @@
// md_rom_device - constructor
//-------------------------------------------------
-const device_type MD_JCART = device_creator<md_jcart_device>;
-const device_type MD_SEPROM_CODEMAST = device_creator<md_seprom_codemast_device>;
-const device_type MD_SEPROM_MM96 = device_creator<md_seprom_mm96_device>;
+DEFINE_DEVICE_TYPE(MD_JCART, md_jcart_device, "md_jcart", "MD J-Cart games")
+DEFINE_DEVICE_TYPE(MD_SEPROM_CODEMAST, md_seprom_codemast_device, "md_seprom_codemast", "MD J-Cart games + SEPROM")
+DEFINE_DEVICE_TYPE(MD_SEPROM_MM96, md_seprom_mm96_device, "md_seprom_mm96", "MD Micro Machine 96")
// Sampras, Super Skidmarks?
-md_jcart_device::md_jcart_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_md_cart_interface( mconfig, *this ),
- m_jcart3(*this, "JCART3"),
- m_jcart4(*this, "JCART4")
+md_jcart_device::md_jcart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_md_cart_interface(mconfig, *this)
+ , m_jcart3(*this, "JCART3")
+ , m_jcart4(*this, "JCART4")
{
}
md_jcart_device::md_jcart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MD_JCART, "MD J-Cart games", tag, owner, clock, "md_jcart", __FILE__),
- device_md_cart_interface( mconfig, *this ),
- m_jcart3(*this, "JCART3"),
- m_jcart4(*this, "JCART4")
+ : md_jcart_device(mconfig, MD_JCART, tag, owner, clock)
{
}
// Micro Machines 2, Micro Machines Military
-md_seprom_codemast_device::md_seprom_codemast_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : md_jcart_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_i2cmem(*this, "i2cmem"), m_i2c_mem(0), m_i2c_clk(0)
- {
+md_seprom_codemast_device::md_seprom_codemast_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : md_jcart_device(mconfig, type, tag, owner, clock)
+ , m_i2cmem(*this, "i2cmem"), m_i2c_mem(0), m_i2c_clk(0)
+{
}
md_seprom_codemast_device::md_seprom_codemast_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_jcart_device(mconfig, MD_SEPROM_CODEMAST, "MD J-Cart games + SEPROM", tag, owner, clock, "md_seprom_codemast", __FILE__),
- m_i2cmem(*this, "i2cmem"), m_i2c_mem(0), m_i2c_clk(0)
- {
+ : md_seprom_codemast_device(mconfig, MD_SEPROM_CODEMAST, tag, owner, clock)
+{
}
// Micro Machines 96
md_seprom_mm96_device::md_seprom_mm96_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_seprom_codemast_device(mconfig, MD_SEPROM_MM96, "MD Micro Machine 96", tag, owner, clock, "md_seprom_mm96", __FILE__)
+ : md_seprom_codemast_device(mconfig, MD_SEPROM_MM96, tag, owner, clock)
{
}
diff --git a/src/devices/bus/megadrive/jcart.h b/src/devices/bus/megadrive/jcart.h
index 3d2a6c10bd7..1962930d23a 100644
--- a/src/devices/bus/megadrive/jcart.h
+++ b/src/devices/bus/megadrive/jcart.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __MD_JCART_H
-#define __MD_JCART_H
+#ifndef MAME_BUS_NEGADRIVE_JCART_H
+#define MAME_BUS_NEGADRIVE_JCART_H
#include "md_slot.h"
#include "machine/i2cmem.h"
@@ -18,18 +18,21 @@ class md_jcart_device : public device_t,
{
public:
// construction/destruction
- md_jcart_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
md_jcart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual ioport_constructor device_input_ports() const override;
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ md_jcart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
required_ioport m_jcart3;
required_ioport m_jcart4;
@@ -43,18 +46,21 @@ class md_seprom_codemast_device : public md_jcart_device
{
public:
// construction/destruction
- md_seprom_codemast_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
md_seprom_codemast_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ md_seprom_codemast_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
required_device<i2cmem_device> m_i2cmem;
private:
@@ -75,10 +81,9 @@ public:
};
-
// device type definition
-extern const device_type MD_JCART;
-extern const device_type MD_SEPROM_CODEMAST;
-extern const device_type MD_SEPROM_MM96;
+DECLARE_DEVICE_TYPE(MD_JCART, md_jcart_device)
+DECLARE_DEVICE_TYPE(MD_SEPROM_CODEMAST, md_seprom_codemast_device)
+DECLARE_DEVICE_TYPE(MD_SEPROM_MM96, md_seprom_mm96_device)
-#endif
+#endif // MAME_BUS_NEGADRIVE_JCART_H
diff --git a/src/devices/bus/megadrive/md_carts.cpp b/src/devices/bus/megadrive/md_carts.cpp
index 8c1d5080e1d..30fff82a81e 100644
--- a/src/devices/bus/megadrive/md_carts.cpp
+++ b/src/devices/bus/megadrive/md_carts.cpp
@@ -9,6 +9,15 @@
#include "emu.h"
#include "md_carts.h"
+#include "rom.h"
+#include "svp.h"
+#include "sk.h"
+#include "ggenie.h"
+#include "eeprom.h"
+#include "jcart.h"
+#include "stm95.h"
+
+
SLOT_INTERFACE_START(md_cart)
SLOT_INTERFACE_INTERNAL("rom", MD_STD_ROM)
SLOT_INTERFACE_INTERNAL("rom_svp", MD_ROM_SVP)
diff --git a/src/devices/bus/megadrive/md_carts.h b/src/devices/bus/megadrive/md_carts.h
index 622c22f784c..7547a015657 100644
--- a/src/devices/bus/megadrive/md_carts.h
+++ b/src/devices/bus/megadrive/md_carts.h
@@ -6,21 +6,13 @@
**********************************************************************/
-#pragma once
-
-#ifndef __MD_CARTS_H__
-#define __MD_CARTS_H__
+#ifndef MAME_BUS_MEGADRIVE_MD_CARTS_H
+#define MAME_BUS_MEGADRIVE_MD_CARTS_H
+#pragma once
-#include "rom.h"
-#include "svp.h"
-#include "sk.h"
-#include "ggenie.h"
-#include "eeprom.h"
-#include "jcart.h"
-#include "stm95.h"
// supported devices
SLOT_INTERFACE_EXTERN(md_cart);
-#endif // __MD_CARTS_H__
+#endif // MAME_BUS_MEGADRIVE_MD_CARTS_H
diff --git a/src/devices/bus/megadrive/md_slot.cpp b/src/devices/bus/megadrive/md_slot.cpp
index 122ab4b6e97..8c62da3861c 100644
--- a/src/devices/bus/megadrive/md_slot.cpp
+++ b/src/devices/bus/megadrive/md_slot.cpp
@@ -51,9 +51,9 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type MD_CART_SLOT = device_creator<md_cart_slot_device>;
-const device_type PICO_CART_SLOT = device_creator<pico_cart_slot_device>;
-const device_type COPERA_CART_SLOT = device_creator<copera_cart_slot_device>;
+DEFINE_DEVICE_TYPE(MD_CART_SLOT, md_cart_slot_device, "md_cart_slot", "Mega Drive Cartridge Slot")
+DEFINE_DEVICE_TYPE(PICO_CART_SLOT, pico_cart_slot_device, "pico_cart_slot", "Pico Cartridge Slot")
+DEFINE_DEVICE_TYPE(COPERA_CART_SLOT, copera_cart_slot_device, "copera_cart_slot", "Copera Cartridge Slot")
//**************************************************************************
// MD cartridges Interface
@@ -160,27 +160,27 @@ uint32_t device_md_cart_interface::get_padded_size(uint32_t size)
//-------------------------------------------------
// base_md_cart_slot_device - constructor
//-------------------------------------------------
-base_md_cart_slot_device::base_md_cart_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(SEGA_STD), m_cart(nullptr),
- m_must_be_loaded(1)
+base_md_cart_slot_device::base_md_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(SEGA_STD), m_cart(nullptr),
+ m_must_be_loaded(1)
{
}
md_cart_slot_device::md_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- base_md_cart_slot_device(mconfig, MD_CART_SLOT, "MD Cartridge Slot", tag, owner, clock, "md_cart_slot", __FILE__)
+ base_md_cart_slot_device(mconfig, MD_CART_SLOT, tag, owner, clock)
{
}
pico_cart_slot_device::pico_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- base_md_cart_slot_device(mconfig, PICO_CART_SLOT, "Pico Cartridge Slot", tag, owner, clock, "pico_cart_slot", __FILE__)
+ base_md_cart_slot_device(mconfig, PICO_CART_SLOT, tag, owner, clock)
{
}
copera_cart_slot_device::copera_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- base_md_cart_slot_device(mconfig, COPERA_CART_SLOT, "Copera Cartridge Slot", tag, owner, clock, "copera_cart_slot", __FILE__)
+ base_md_cart_slot_device(mconfig, COPERA_CART_SLOT, tag, owner, clock)
{
}
diff --git a/src/devices/bus/megadrive/md_slot.h b/src/devices/bus/megadrive/md_slot.h
index 7c30ad04a2b..78388c4dcbd 100644
--- a/src/devices/bus/megadrive/md_slot.h
+++ b/src/devices/bus/megadrive/md_slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __MD_SLOT_H
-#define __MD_SLOT_H
+#ifndef MAME_BUS_MEGADRIVE_MD_SLOT_H
+#define MAME_BUS_MEGADRIVE_MD_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -89,9 +91,9 @@ enum
class device_md_cart_interface : public device_slot_card_interface
{
+ friend class base_md_cart_slot_device;
public:
// construction/destruction
- device_md_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_md_cart_interface();
// reading and writing
@@ -120,6 +122,9 @@ public:
void rom_map_setup(uint32_t size);
uint32_t get_padded_size(uint32_t size);
+protected:
+ device_md_cart_interface(const machine_config &mconfig, device_t &device);
+
int m_nvram_start, m_nvram_end;
int m_nvram_active, m_nvram_readonly;
@@ -129,7 +134,9 @@ public:
int m_nvram_handlers_installed;
// internal state
+public: // FIXME: this needs to be public becuase the S&K "lock-on" cart is implemented in a really dodgy way
uint16_t *m_rom;
+protected:
uint32_t m_rom_size;
std::vector<uint16_t> m_nvram;
@@ -145,7 +152,7 @@ class base_md_cart_slot_device : public device_t,
{
public:
// construction/destruction
- base_md_cart_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ base_md_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual ~base_md_cart_slot_device();
// device-level overrides
@@ -233,9 +240,9 @@ public:
// device type definition
-extern const device_type MD_CART_SLOT;
-extern const device_type PICO_CART_SLOT;
-extern const device_type COPERA_CART_SLOT;
+DECLARE_DEVICE_TYPE(MD_CART_SLOT, md_cart_slot_device)
+DECLARE_DEVICE_TYPE(PICO_CART_SLOT, pico_cart_slot_device)
+DECLARE_DEVICE_TYPE(COPERA_CART_SLOT, copera_cart_slot_device)
/***************************************************************************
@@ -262,4 +269,4 @@ extern const device_type COPERA_CART_SLOT;
static_cast<md_cart_slot_device *>(device)->set_must_be_loaded(false);
-#endif
+#endif // MAME_BUS_MEGADRIVE_MD_SLOT_H
diff --git a/src/devices/bus/megadrive/rom.cpp b/src/devices/bus/megadrive/rom.cpp
index bb9e7c4fab0..962033ab5c9 100644
--- a/src/devices/bus/megadrive/rom.cpp
+++ b/src/devices/bus/megadrive/rom.cpp
@@ -24,226 +24,224 @@
//-------------------------------------------------
// BASE CARTS + NVRAM
-const device_type MD_STD_ROM = device_creator<md_std_rom_device>;
-const device_type MD_ROM_SRAM = device_creator<md_rom_sram_device>;
-const device_type MD_ROM_FRAM = device_creator<md_rom_fram_device>;
+DEFINE_DEVICE_TYPE(MD_STD_ROM, md_std_rom_device, "md_std_rom", "MD Standard cart")
+DEFINE_DEVICE_TYPE(MD_ROM_SRAM, md_rom_sram_device, "md_rom_sram", "MD Standard cart + SRAM")
+DEFINE_DEVICE_TYPE(MD_ROM_FRAM, md_rom_fram_device, "md_rom_fram", "MD Standard cart + FRAM")
// BASE CARTS + BANKSWITCH AT RESET
-const device_type MD_ROM_CM2IN1 = device_creator<md_rom_cm2in1_device>;
+DEFINE_DEVICE_TYPE(MD_ROM_CM2IN1, md_rom_cm2in1_device, "md_rom_cm2in1", "MD Codemasters 2in1")
// BASE CARTS + PROTECTION / BANKSWITCH
-const device_type MD_ROM_SSF2 = device_creator<md_rom_ssf2_device>;
-const device_type MD_ROM_BUGSLIFE = device_creator<md_rom_bugslife_device>;
-const device_type MD_ROM_SMOUSE = device_creator<md_rom_smouse_device>;
-const device_type MD_ROM_SMW64 = device_creator<md_rom_smw64_device>;
-const device_type MD_ROM_SMB = device_creator<md_rom_smb_device>;
-const device_type MD_ROM_SMB2 = device_creator<md_rom_smb2_device>;
-const device_type MD_ROM_SBUBL = device_creator<md_rom_sbubl_device>;
-const device_type MD_ROM_RX3 = device_creator<md_rom_rx3_device>;
-const device_type MD_ROM_MJLOV = device_creator<md_rom_mjlov_device>;
-const device_type MD_ROM_CJMJCLUB = device_creator<md_rom_cjmjclub_device>;
-const device_type MD_ROM_KOF98 = device_creator<md_rom_kof98_device>;
-const device_type MD_ROM_KOF99 = device_creator<md_rom_kof99_device>;
-const device_type MD_ROM_SOULB = device_creator<md_rom_soulb_device>;
-const device_type MD_ROM_CHINF3 = device_creator<md_rom_chinf3_device>;
-const device_type MD_ROM_16MJ2 = device_creator<md_rom_16mj2_device>;
-const device_type MD_ROM_ELFWOR = device_creator<md_rom_elfwor_device>;
-const device_type MD_ROM_YASECH = device_creator<md_rom_yasech_device>;
-const device_type MD_ROM_LION2 = device_creator<md_rom_lion2_device>;
-const device_type MD_ROM_LION3 = device_creator<md_rom_lion3_device>;
-const device_type MD_ROM_MCPIR = device_creator<md_rom_mcpirate_device>;
-const device_type MD_ROM_POKEA = device_creator<md_rom_pokea_device>;
-const device_type MD_ROM_POKESTAD = device_creator<md_rom_pokestad_device>;
-const device_type MD_ROM_REALTEC = device_creator<md_rom_realtec_device>;
-const device_type MD_ROM_REDCL = device_creator<md_rom_redcl_device>;
-const device_type MD_ROM_SQUIR = device_creator<md_rom_squir_device>;
-const device_type MD_ROM_TEKKENSP = device_creator<md_rom_tekkensp_device>;
-const device_type MD_ROM_TOPF = device_creator<md_rom_topf_device>;
-const device_type MD_ROM_RADICA = device_creator<md_rom_radica_device>;
-const device_type MD_ROM_BEGGARP = device_creator<md_rom_beggarp_device>;
-const device_type MD_ROM_WUKONG = device_creator<md_rom_wukong_device>;
-const device_type MD_ROM_STARODYS = device_creator<md_rom_starodys_device>;
-
-
-md_std_rom_device::md_std_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_md_cart_interface( mconfig, *this )
+DEFINE_DEVICE_TYPE(MD_ROM_SSF2, md_rom_ssf2_device, "md_rom_ssf2", "MD Super SF2")
+DEFINE_DEVICE_TYPE(MD_ROM_BUGSLIFE, md_rom_bugslife_device, "md_rom_bugslife", "MD A Bug's Life")
+DEFINE_DEVICE_TYPE(MD_ROM_SMOUSE, md_rom_smouse_device, "md_rom_smouse", "MD Huan Le Tao Qi Shu / Smart Mouse")
+DEFINE_DEVICE_TYPE(MD_ROM_SMW64, md_rom_smw64_device, "md_rom_smw64", "MD Super Mario World 64")
+DEFINE_DEVICE_TYPE(MD_ROM_SMB, md_rom_smb_device, "md_rom_smb", "MD Super Mario Bros.")
+DEFINE_DEVICE_TYPE(MD_ROM_SMB2, md_rom_smb2_device, "md_rom_smb2", "MD Super Mario Bros. 2")
+DEFINE_DEVICE_TYPE(MD_ROM_SBUBL, md_rom_sbubl_device, "md_rom_sbubl", "MD Super Bubble Bobble")
+DEFINE_DEVICE_TYPE(MD_ROM_RX3, md_rom_rx3_device, "md_rom_rx3", "MD Rockman X3")
+DEFINE_DEVICE_TYPE(MD_ROM_MJLOV, md_rom_mjlov_device, "md_rom_mjlov", "MD Majiang Qingren / Mahjong Lover")
+DEFINE_DEVICE_TYPE(MD_ROM_CJMJCLUB, md_rom_cjmjclub_device, "md_rom_cjmjclub", "MD Chaoji Majiang Club / Super Mahjong Club")
+DEFINE_DEVICE_TYPE(MD_ROM_KOF98, md_rom_kof98_device, "md_rom_kof98", "MD KOF 98")
+DEFINE_DEVICE_TYPE(MD_ROM_KOF99, md_rom_kof99_device, "md_rom_kof99", "MD KOF 99") // and others
+DEFINE_DEVICE_TYPE(MD_ROM_SOULB, md_rom_soulb_device, "md_rom_soulb", "MD Soul Blade")
+DEFINE_DEVICE_TYPE(MD_ROM_CHINF3, md_rom_chinf3_device, "md_rom_chinf3", "MD Chinese Fighter 3")
+DEFINE_DEVICE_TYPE(MD_ROM_16MJ2, md_rom_16mj2_device, "md_rom_16mj2", "MD 16 Majong Tiles II")
+DEFINE_DEVICE_TYPE(MD_ROM_ELFWOR, md_rom_elfwor_device, "md_rom_elfwor", "MD Linghuan Daoshi Super Magician / Elf Wor")
+DEFINE_DEVICE_TYPE(MD_ROM_YASECH, md_rom_yasech_device, "md_rom_yasech", "MD Ya Se Chuan Shuo")
+DEFINE_DEVICE_TYPE(MD_ROM_LION2, md_rom_lion2_device, "md_rom_lion2", "MD Lion King 2")
+DEFINE_DEVICE_TYPE(MD_ROM_LION3, md_rom_lion3_device, "md_rom_lion3", "MD Lion King 3")
+DEFINE_DEVICE_TYPE(MD_ROM_MCPIR, md_rom_mcpirate_device, "md_rom_mcpirate", "MD Pirate Multicarts (various)")
+DEFINE_DEVICE_TYPE(MD_ROM_POKEA, md_rom_pokea_device, "md_rom_pokea", "MD Pokemon (alt protection)")
+DEFINE_DEVICE_TYPE(MD_ROM_POKESTAD, md_rom_pokestad_device, "md_rom_pokestad", "MD Pokemon Stadium")
+DEFINE_DEVICE_TYPE(MD_ROM_REALTEC, md_rom_realtec_device, "md_rom_realtec", "MD Realtec")
+DEFINE_DEVICE_TYPE(MD_ROM_REDCL, md_rom_redcl_device, "md_rom_redcl", "MD Redcliff")
+DEFINE_DEVICE_TYPE(MD_ROM_SQUIR, md_rom_squir_device, "md_rom_squir", "MD Squirrel King")
+DEFINE_DEVICE_TYPE(MD_ROM_TEKKENSP, md_rom_tekkensp_device, "md_rom_tekkensp", "MD Tekken Special")
+DEFINE_DEVICE_TYPE(MD_ROM_TOPF, md_rom_topf_device, "md_rom_topf", "MD Top Fighter")
+DEFINE_DEVICE_TYPE(MD_ROM_RADICA, md_rom_radica_device, "md_rom_radica", "MD Radica TV games")
+DEFINE_DEVICE_TYPE(MD_ROM_BEGGARP, md_rom_beggarp_device, "md_rom_beggarp", "MD Beggar Prince")
+DEFINE_DEVICE_TYPE(MD_ROM_WUKONG, md_rom_wukong_device, "md_rom_wukong", "MD Legend of Wukong")
+DEFINE_DEVICE_TYPE(MD_ROM_STARODYS, md_rom_starodys_device, "md_rom_starodys", "MD Star Odyssey")
+
+
+md_std_rom_device::md_std_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_md_cart_interface(mconfig, *this)
{
}
md_std_rom_device::md_std_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MD_STD_ROM, "MD Standard cart", tag, owner, clock, "md_std_rom", __FILE__),
- device_md_cart_interface( mconfig, *this )
+ : md_std_rom_device(mconfig, MD_STD_ROM, tag, owner, clock)
{
}
md_rom_sram_device::md_rom_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_SRAM, "MD Standard cart + SRAM", tag, owner, clock, "md_rom_sram", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_SRAM, tag, owner, clock)
{
}
md_rom_fram_device::md_rom_fram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_FRAM, "MD Standard cart + FRAM", tag, owner, clock, "md_rom_fram", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_FRAM, tag, owner, clock)
{
}
-md_rom_ssf2_device::md_rom_ssf2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_SSF2, "MD Super SF2", tag, owner, clock, "md_rom_ssf2", __FILE__), m_lastoff(0), m_lastdata(0)
- {
-}
-
md_rom_cm2in1_device::md_rom_cm2in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_CM2IN1, "MD Codemasters 2in1", tag, owner, clock, "md_rom_cm2in1", __FILE__), m_base(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_CM2IN1, tag, owner, clock), m_base(0)
+{
}
-md_rom_mcpirate_device::md_rom_mcpirate_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_MCPIR, "MD Pirate Multicarts (Various)", tag, owner, clock, "md_rom_mcpirate", __FILE__), m_bank(0)
- {
+md_rom_ssf2_device::md_rom_ssf2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : md_std_rom_device(mconfig, MD_ROM_SSF2, tag, owner, clock), m_lastoff(0), m_lastdata(0)
+{
}
md_rom_bugslife_device::md_rom_bugslife_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_BUGSLIFE, "MD A Bug's Life", tag, owner, clock, "md_rom_bugslife", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_BUGSLIFE, tag, owner, clock)
{
}
md_rom_smouse_device::md_rom_smouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_SMOUSE, "MD Huan Le Tao Qi Shu / Smart Mouse", tag, owner, clock, "md_rom_smouse", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_SMOUSE, tag, owner, clock)
{
}
-md_rom_smb_device::md_rom_smb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_SMB, "MD Super Mario Bros.", tag, owner, clock, "md_rom_smb", __FILE__)
+md_rom_smw64_device::md_rom_smw64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : md_std_rom_device(mconfig, MD_ROM_SMW64, tag, owner, clock), m_latch0(0), m_latch1(0)
{
}
-md_rom_smb2_device::md_rom_smb2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_SMB2, "MD Super Mario Bros. 2", tag, owner, clock, "md_rom_smb2", __FILE__)
+md_rom_smb_device::md_rom_smb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : md_std_rom_device(mconfig, MD_ROM_SMB, tag, owner, clock)
{
}
-md_rom_smw64_device::md_rom_smw64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_SMW64, "MD Super Mario World 64", tag, owner, clock, "md_rom_smw64", __FILE__), m_latch0(0), m_latch1(0)
- {
+md_rom_smb2_device::md_rom_smb2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : md_std_rom_device(mconfig, MD_ROM_SMB2, tag, owner, clock)
+{
}
md_rom_sbubl_device::md_rom_sbubl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_SBUBL, "MD Super Bubble Bobble", tag, owner, clock, "md_rom_sbubl", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_SBUBL, tag, owner, clock)
{
}
md_rom_rx3_device::md_rom_rx3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_RX3, "MD Rockman X3", tag, owner, clock, "md_rom_rx3", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_RX3, tag, owner, clock)
{
}
md_rom_mjlov_device::md_rom_mjlov_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_MJLOV, "MD Ma Jiang Qing Ren / Mahjong Lover", tag, owner, clock, "md_rom_mjlov", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_MJLOV, tag, owner, clock)
{
}
md_rom_cjmjclub_device::md_rom_cjmjclub_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_CJMJCLUB, "MD Chaoji Majiang Club / Super Mahjong Club", tag, owner, clock, "md_rom_cjmjclub", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_CJMJCLUB, tag, owner, clock)
{
}
md_rom_kof98_device::md_rom_kof98_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_KOF98, "MD KOF 98", tag, owner, clock, "md_rom_kof98", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_KOF98, tag, owner, clock)
{
}
md_rom_kof99_device::md_rom_kof99_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_KOF99, "MD KOF 99 (and others)", tag, owner, clock, "md_rom_kof99", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_KOF99, tag, owner, clock)
{
}
md_rom_soulb_device::md_rom_soulb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_SOULB, "MD Soul Blade", tag, owner, clock, "md_rom_soulb", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_SOULB, tag, owner, clock)
{
}
md_rom_chinf3_device::md_rom_chinf3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_CHINF3, "MD Chinese Fighter 3", tag, owner, clock, "md_rom_chinf3", __FILE__), m_bank(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_CHINF3, tag, owner, clock), m_bank(0)
+{
}
md_rom_16mj2_device::md_rom_16mj2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_16MJ2, "MD 16 Mahjong Tiles II", tag, owner, clock, "md_rom_16mj2", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_16MJ2, tag, owner, clock)
{
}
md_rom_elfwor_device::md_rom_elfwor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_ELFWOR, "MD Linghuan Daoshi Super Magician / Elf Wor", tag, owner, clock, "md_rom_elfwor", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_ELFWOR, tag, owner, clock)
{
}
md_rom_yasech_device::md_rom_yasech_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_YASECH, "MD Ya Se Chuan Shuo", tag, owner, clock, "md_rom_yasech", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_YASECH, tag, owner, clock)
{
}
md_rom_lion2_device::md_rom_lion2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_LION2, "MD Lion King 2", tag, owner, clock, "md_rom_lion2", __FILE__), m_prot1_data(0), m_prot2_data(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_LION2, tag, owner, clock), m_prot1_data(0), m_prot2_data(0)
+{
}
md_rom_lion3_device::md_rom_lion3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_LION3, "MD Lion King 3", tag, owner, clock, "md_rom_lion3", __FILE__), m_bank(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_LION3, tag, owner, clock), m_bank(0)
+{
+}
+
+md_rom_mcpirate_device::md_rom_mcpirate_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : md_std_rom_device(mconfig, MD_ROM_MCPIR, tag, owner, clock), m_bank(0)
+{
}
md_rom_pokea_device::md_rom_pokea_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_POKEA, "MD Pokemon (Alt Protection)", tag, owner, clock, "md_rom_pokea", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_POKEA, tag, owner, clock)
{
}
md_rom_pokestad_device::md_rom_pokestad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_POKESTAD, "MD Pokemon Stadium", tag, owner, clock, "md_rom_pokestad", __FILE__), m_bank(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_POKESTAD, tag, owner, clock), m_bank(0)
+{
}
md_rom_realtec_device::md_rom_realtec_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_REALTEC, "MD Realtec", tag, owner, clock, "md_rom_realtec", __FILE__), m_bank_addr(0), m_bank_size(0), m_old_bank_addr(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_REALTEC, tag, owner, clock), m_bank_addr(0), m_bank_size(0), m_old_bank_addr(0)
+{
}
md_rom_redcl_device::md_rom_redcl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_REDCL, "MD Redcliff", tag, owner, clock, "md_rom_redcl", __FILE__)
+ : md_std_rom_device(mconfig, MD_ROM_REDCL, tag, owner, clock)
{
}
md_rom_squir_device::md_rom_squir_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_SQUIR, "MD Squirrel King", tag, owner, clock, "md_rom_squir", __FILE__), m_latch(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_SQUIR, tag, owner, clock), m_latch(0)
+{
}
md_rom_tekkensp_device::md_rom_tekkensp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_TEKKENSP, "MD Tekken Special", tag, owner, clock, "md_rom_tekkensp", __FILE__), m_reg(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_TEKKENSP, tag, owner, clock), m_reg(0)
+{
}
md_rom_topf_device::md_rom_topf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_TOPF, "MD Top Fighter", tag, owner, clock, "md_rom_topf", __FILE__), m_latch(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_TOPF, tag, owner, clock), m_latch(0)
+{
}
md_rom_radica_device::md_rom_radica_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_RADICA, "MD Radica TV games", tag, owner, clock, "md_rom_radica", __FILE__), m_bank(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_RADICA, tag, owner, clock), m_bank(0)
+{
}
md_rom_beggarp_device::md_rom_beggarp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_BEGGARP, "MD Beggar Prince", tag, owner, clock, "md_rom_beggarp", __FILE__), m_mode(0), m_lock(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_BEGGARP, tag, owner, clock), m_mode(0), m_lock(0)
+{
}
md_rom_wukong_device::md_rom_wukong_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_WUKONG, "MD Legend of Wukong", tag, owner, clock, "md_rom_wukong", __FILE__), m_mode(0)
- {
+ : md_std_rom_device(mconfig, MD_ROM_WUKONG, tag, owner, clock), m_mode(0)
+{
}
md_rom_starodys_device::md_rom_starodys_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : md_std_rom_device(mconfig, MD_ROM_STARODYS, "MD Star Odyssey", tag, owner, clock, "md_rom_starodys", __FILE__), m_mode(0), m_lock(0), m_ram_enable(0), m_base(0)
+ : md_std_rom_device(mconfig, MD_ROM_STARODYS, tag, owner, clock), m_mode(0), m_lock(0), m_ram_enable(0), m_base(0)
{
}
diff --git a/src/devices/bus/megadrive/rom.h b/src/devices/bus/megadrive/rom.h
index a75068c2ae2..8077ad7e0c6 100644
--- a/src/devices/bus/megadrive/rom.h
+++ b/src/devices/bus/megadrive/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __MD_ROM_H
-#define __MD_ROM_H
+#ifndef MAME_BUS_MEGADRIVE_ROM_H
+#define MAME_BUS_MEGADRIVE_ROM_H
+
+#pragma once
#include "md_slot.h"
@@ -16,15 +18,17 @@ class md_std_rom_device : public device_t,
{
public:
// construction/destruction
- md_std_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
md_std_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {};
-
// reading and writing
- virtual DECLARE_READ16_MEMBER(read) override { if (offset < 0x400000/2) return m_rom[MD_ADDR(offset)]; else return 0xffff; };
- virtual DECLARE_WRITE16_MEMBER(write) override { };
+ virtual DECLARE_READ16_MEMBER(read) override { if (offset < 0x400000/2) return m_rom[MD_ADDR(offset)]; else return 0xffff; }
+ virtual DECLARE_WRITE16_MEMBER(write) override { }
+
+protected:
+ md_std_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { }
};
// ======================> md_rom_sram_device
@@ -64,14 +68,15 @@ public:
// construction/destruction
md_rom_ssf2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write_a13) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_bank[16];
int m_lastoff, m_lastdata;
@@ -85,13 +90,14 @@ public:
// construction/destruction
md_rom_cm2in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // reading and writing
+ virtual DECLARE_READ16_MEMBER(read) override;
+
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- // reading and writing
- virtual DECLARE_READ16_MEMBER(read) override;
-
private:
int m_base;
};
@@ -105,14 +111,15 @@ public:
// construction/destruction
md_rom_mcpirate_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write_a13) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_bank;
};
@@ -138,14 +145,15 @@ public:
// construction/destruction
md_rom_chinf3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
int m_bank;
};
@@ -218,14 +226,15 @@ public:
// construction/destruction
md_rom_lion2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint16_t m_prot1_data, m_prot2_data;
};
@@ -238,14 +247,15 @@ public:
// construction/destruction
md_rom_lion3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_reg[3];
uint16_t m_bank;
@@ -295,14 +305,15 @@ public:
// construction/destruction
md_rom_pokestad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_bank;
};
@@ -315,14 +326,15 @@ public:
// construction/destruction
md_rom_realtec_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint16_t m_bank_addr, m_bank_size, m_old_bank_addr;
};
@@ -395,14 +407,15 @@ public:
// construction/destruction
md_rom_smw64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint32_t m_latch0, m_latch1;
uint16_t m_reg[6];
@@ -442,14 +455,15 @@ public:
// construction/destruction
md_rom_squir_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint16_t m_latch;
};
@@ -462,14 +476,15 @@ public:
// construction/destruction
md_rom_tekkensp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint16_t m_reg;
};
@@ -482,14 +497,15 @@ public:
// construction/destruction
md_rom_topf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint16_t m_latch;
uint8_t m_bank[3];
@@ -503,14 +519,15 @@ public:
// construction/destruction
md_rom_radica_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_READ16_MEMBER(read_a13) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_bank;
};
@@ -523,15 +540,16 @@ public:
// construction/destruction
md_rom_beggarp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
virtual DECLARE_WRITE16_MEMBER(write_a13) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_mode, m_lock;
};
@@ -544,15 +562,16 @@ public:
// construction/destruction
md_rom_wukong_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
virtual DECLARE_WRITE16_MEMBER(write_a13) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_mode;
};
@@ -565,16 +584,17 @@ public:
// construction/destruction
md_rom_starodys_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
virtual DECLARE_READ16_MEMBER(read_a13) override;
virtual DECLARE_WRITE16_MEMBER(write_a13) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_mode, m_lock, m_ram_enable, m_base;
};
@@ -582,40 +602,40 @@ private:
// device type definition
-extern const device_type MD_STD_ROM;
-extern const device_type MD_ROM_SRAM;
-extern const device_type MD_ROM_FRAM;
-extern const device_type MD_ROM_CM2IN1;
-extern const device_type MD_ROM_16MJ2;
-extern const device_type MD_ROM_BUGSLIFE;
-extern const device_type MD_ROM_CHINF3;
-extern const device_type MD_ROM_ELFWOR;
-extern const device_type MD_ROM_YASECH;
-extern const device_type MD_ROM_KOF98;
-extern const device_type MD_ROM_KOF99;
-extern const device_type MD_ROM_LION2;
-extern const device_type MD_ROM_LION3;
-extern const device_type MD_ROM_MCPIR;
-extern const device_type MD_ROM_MJLOV;
-extern const device_type MD_ROM_CJMJCLUB;
-extern const device_type MD_ROM_POKEA;
-extern const device_type MD_ROM_POKESTAD;
-extern const device_type MD_ROM_REALTEC;
-extern const device_type MD_ROM_REDCL;
-extern const device_type MD_ROM_RX3;
-extern const device_type MD_ROM_SBUBL;
-extern const device_type MD_ROM_SMB;
-extern const device_type MD_ROM_SMB2;
-extern const device_type MD_ROM_SMW64;
-extern const device_type MD_ROM_SMOUSE;
-extern const device_type MD_ROM_SOULB;
-extern const device_type MD_ROM_SSF2;
-extern const device_type MD_ROM_SQUIR;
-extern const device_type MD_ROM_TEKKENSP;
-extern const device_type MD_ROM_TOPF;
-extern const device_type MD_ROM_RADICA;
-extern const device_type MD_ROM_BEGGARP;
-extern const device_type MD_ROM_WUKONG;
-extern const device_type MD_ROM_STARODYS;
-
-#endif
+DECLARE_DEVICE_TYPE(MD_STD_ROM, md_std_rom_device)
+DECLARE_DEVICE_TYPE(MD_ROM_SRAM, md_rom_sram_device)
+DECLARE_DEVICE_TYPE(MD_ROM_FRAM, md_rom_fram_device)
+DECLARE_DEVICE_TYPE(MD_ROM_CM2IN1, md_rom_cm2in1_device)
+DECLARE_DEVICE_TYPE(MD_ROM_SSF2, md_rom_ssf2_device)
+DECLARE_DEVICE_TYPE(MD_ROM_BUGSLIFE, md_rom_bugslife_device)
+DECLARE_DEVICE_TYPE(MD_ROM_SMOUSE, md_rom_smouse_device)
+DECLARE_DEVICE_TYPE(MD_ROM_SMW64, md_rom_smw64_device)
+DECLARE_DEVICE_TYPE(MD_ROM_SMB, md_rom_smb_device)
+DECLARE_DEVICE_TYPE(MD_ROM_SMB2, md_rom_smb2_device)
+DECLARE_DEVICE_TYPE(MD_ROM_SBUBL, md_rom_sbubl_device)
+DECLARE_DEVICE_TYPE(MD_ROM_RX3, md_rom_rx3_device)
+DECLARE_DEVICE_TYPE(MD_ROM_MJLOV, md_rom_mjlov_device)
+DECLARE_DEVICE_TYPE(MD_ROM_CJMJCLUB, md_rom_cjmjclub_device)
+DECLARE_DEVICE_TYPE(MD_ROM_KOF98, md_rom_kof98_device)
+DECLARE_DEVICE_TYPE(MD_ROM_KOF99, md_rom_kof99_device)
+DECLARE_DEVICE_TYPE(MD_ROM_SOULB, md_rom_soulb_device)
+DECLARE_DEVICE_TYPE(MD_ROM_CHINF3, md_rom_chinf3_device)
+DECLARE_DEVICE_TYPE(MD_ROM_16MJ2, md_rom_16mj2_device)
+DECLARE_DEVICE_TYPE(MD_ROM_ELFWOR, md_rom_elfwor_device)
+DECLARE_DEVICE_TYPE(MD_ROM_YASECH, md_rom_yasech_device)
+DECLARE_DEVICE_TYPE(MD_ROM_LION2, md_rom_lion2_device)
+DECLARE_DEVICE_TYPE(MD_ROM_LION3, md_rom_lion3_device)
+DECLARE_DEVICE_TYPE(MD_ROM_MCPIR, md_rom_mcpirate_device)
+DECLARE_DEVICE_TYPE(MD_ROM_POKEA, md_rom_pokea_device)
+DECLARE_DEVICE_TYPE(MD_ROM_POKESTAD, md_rom_pokestad_device)
+DECLARE_DEVICE_TYPE(MD_ROM_REALTEC, md_rom_realtec_device)
+DECLARE_DEVICE_TYPE(MD_ROM_REDCL, md_rom_redcl_device)
+DECLARE_DEVICE_TYPE(MD_ROM_SQUIR, md_rom_squir_device)
+DECLARE_DEVICE_TYPE(MD_ROM_TEKKENSP, md_rom_tekkensp_device)
+DECLARE_DEVICE_TYPE(MD_ROM_TOPF, md_rom_topf_device)
+DECLARE_DEVICE_TYPE(MD_ROM_RADICA, md_rom_radica_device)
+DECLARE_DEVICE_TYPE(MD_ROM_BEGGARP, md_rom_beggarp_device)
+DECLARE_DEVICE_TYPE(MD_ROM_WUKONG, md_rom_wukong_device)
+DECLARE_DEVICE_TYPE(MD_ROM_STARODYS, md_rom_starodys_device)
+
+#endif // MAME_BUS_MEGADRIVE_ROM_H
diff --git a/src/devices/bus/megadrive/sk.cpp b/src/devices/bus/megadrive/sk.cpp
index 8260ae4abf4..a186f035c03 100644
--- a/src/devices/bus/megadrive/sk.cpp
+++ b/src/devices/bus/megadrive/sk.cpp
@@ -24,20 +24,18 @@
// md_rom_device - constructor
//-------------------------------------------------
-const device_type MD_ROM_SK = device_creator<md_rom_sk_device>;
+DEFINE_DEVICE_TYPE(MD_ROM_SK, md_rom_sk_device, "md_rom_sk", "MD Sonic & Knuckles")
-md_rom_sk_device::md_rom_sk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_md_cart_interface( mconfig, *this ),
- m_exp(*this, "subslot")
+md_rom_sk_device::md_rom_sk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_md_cart_interface(mconfig, *this)
+ , m_exp(*this, "subslot")
{
}
md_rom_sk_device::md_rom_sk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MD_ROM_SK, "MD Sonic & Knuckles", tag, owner, clock, "md_rom_sk", __FILE__),
- device_md_cart_interface( mconfig, *this ),
- m_exp(*this, "subslot")
+ : md_rom_sk_device(mconfig, MD_ROM_SK, tag, owner, clock)
{
}
diff --git a/src/devices/bus/megadrive/sk.h b/src/devices/bus/megadrive/sk.h
index 526a2aa47ea..091fd9325c9 100644
--- a/src/devices/bus/megadrive/sk.h
+++ b/src/devices/bus/megadrive/sk.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __MD_SK_H
-#define __MD_SK_H
+#ifndef MAME_BUS_MEGADRIVE_SK_H
+#define MAME_BUS_MEGADRIVE_SK_H
+
+#pragma once
#include "md_slot.h"
@@ -13,23 +15,25 @@ class md_rom_sk_device : public device_t,
{
public:
// construction/destruction
- md_rom_sk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
md_rom_sk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
+protected:
+ md_rom_sk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ virtual void device_start() override;
+
private:
required_device<md_cart_slot_device> m_exp;
};
// device type definition
-extern const device_type MD_ROM_SK;
+DECLARE_DEVICE_TYPE(MD_ROM_SK, md_rom_sk_device)
-#endif
+#endif // MAME_BUS_MEGADRIVE_SK_H
diff --git a/src/devices/bus/megadrive/stm95.cpp b/src/devices/bus/megadrive/stm95.cpp
index 05adacac57f..4f536766b01 100644
--- a/src/devices/bus/megadrive/stm95.cpp
+++ b/src/devices/bus/megadrive/stm95.cpp
@@ -16,9 +16,9 @@
stm95_eeprom_device::stm95_eeprom_device(running_machine &machine, uint8_t *eeprom) :
- stm_state(IDLE),
- stream_pos(0),
- m_machine(machine)
+ stm_state(IDLE),
+ stream_pos(0),
+ m_machine(machine)
{
eeprom_data = eeprom;
m_machine.save().save_item(latch, "STM95/latch");
@@ -172,25 +172,25 @@ void stm95_eeprom_device::set_sck_line(int state)
// md_rom_device - constructor
//-------------------------------------------------
-const device_type MD_EEPROM_STM95 = device_creator<md_eeprom_stm95_device>;
+DEFINE_DEVICE_TYPE(MD_EEPROM_STM95, md_eeprom_stm95_device, "md_eeprom_stm95", "MD Cart + EEPROM STM95")
-md_eeprom_stm95_device::md_eeprom_stm95_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_md_cart_interface( mconfig, *this ), m_rdcnt(0)
- {
+md_eeprom_stm95_device::md_eeprom_stm95_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_md_cart_interface(mconfig, *this)
+ , m_rdcnt(0)
+{
}
md_eeprom_stm95_device::md_eeprom_stm95_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MD_EEPROM_STM95, "MD Cart + EEPROM STM95", tag, owner, clock, "md_eeprom_stm95", __FILE__),
- device_md_cart_interface( mconfig, *this ), m_rdcnt(0)
- {
+ : md_eeprom_stm95_device(mconfig, MD_EEPROM_STM95, tag, owner, clock)
+{
}
void md_eeprom_stm95_device::device_start()
{
- nvram_alloc(M95320_SIZE);
+ nvram_alloc(stm95_eeprom_device::M95320_SIZE);
m_stm95 = std::make_unique<stm95_eeprom_device>(machine(), (uint8_t*)get_nvram_base());
save_item(NAME(m_rdcnt));
diff --git a/src/devices/bus/megadrive/stm95.h b/src/devices/bus/megadrive/stm95.h
index 1e0561f3fae..c1291e1f12f 100644
--- a/src/devices/bus/megadrive/stm95.h
+++ b/src/devices/bus/megadrive/stm95.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli, MetalliC
-#ifndef __MD_STM95_H
-#define __MD_STM95_H
+#ifndef MAME_BUS_MEGADRIVE_STM95_H
+#define MAME_BUS_MEGADRIVE_STM95_H
+
+#pragma once
#include "md_slot.h"
@@ -12,22 +14,11 @@
/* ST M95320 32Kbit serial EEPROM implementation */
// TO DO: STM95 should be made a separate EEPROM device and this should be merged with md_eeprom.c!
-#define M95320_SIZE 0x1000
-
-enum STMSTATE
-{
- IDLE = 0,
- CMD_WRSR,
- CMD_RDSR,
- M95320_CMD_READ,
- CMD_WRITE,
- READING,
- WRITING
-};
-
class stm95_eeprom_device
{
public:
+ static constexpr unsigned M95320_SIZE = 0x1000;
+
stm95_eeprom_device(running_machine &machine, uint8_t *eeprom);
running_machine &machine() const { return m_machine; }
@@ -39,6 +30,17 @@ public:
int get_so_line(void);
protected:
+ enum STMSTATE
+ {
+ IDLE = 0,
+ CMD_WRSR,
+ CMD_RDSR,
+ M95320_CMD_READ,
+ CMD_WRITE,
+ READING,
+ WRITING
+ };
+
int latch;
int reset_line;
int sck_line;
@@ -55,23 +57,24 @@ protected:
// ======================> md_eeprom_stm95_device
-class md_eeprom_stm95_device : public device_t,
- public device_md_cart_interface
+class md_eeprom_stm95_device : public device_t, public device_md_cart_interface
{
public:
// construction/destruction
- md_eeprom_stm95_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
md_eeprom_stm95_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_READ16_MEMBER(read_a13) override;
virtual DECLARE_WRITE16_MEMBER(write_a13) override;
+protected:
+ md_eeprom_stm95_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_bank[3];
int m_rdcnt;
@@ -81,6 +84,6 @@ private:
// device type definition
-extern const device_type MD_EEPROM_STM95;
+DECLARE_DEVICE_TYPE(MD_EEPROM_STM95, md_eeprom_stm95_device)
-#endif
+#endif // MAME_BUS_MEGADRIVE_STM95_H
diff --git a/src/devices/bus/megadrive/svp.cpp b/src/devices/bus/megadrive/svp.cpp
index 05ac7f024a2..b07f14735d8 100644
--- a/src/devices/bus/megadrive/svp.cpp
+++ b/src/devices/bus/megadrive/svp.cpp
@@ -34,22 +34,20 @@
// md_rom_device - constructor
//-------------------------------------------------
-const device_type MD_ROM_SVP = device_creator<md_rom_svp_device>;
-
-md_rom_svp_device::md_rom_svp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_md_cart_interface( mconfig, *this ),
- m_svp(*this, "svp"),
- m_test_ipt(*this, "MEMORY_TEST"), m_emu_status(0), m_xst(0), m_xst2(0)
- {
+DEFINE_DEVICE_TYPE(MD_ROM_SVP, md_rom_svp_device, "md_rom_svp", "MD Virtua Racing")
+
+md_rom_svp_device::md_rom_svp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_md_cart_interface(mconfig, *this)
+ , m_svp(*this, "svp")
+ , m_test_ipt(*this, "MEMORY_TEST")
+ , m_emu_status(0), m_xst(0), m_xst2(0)
+{
}
md_rom_svp_device::md_rom_svp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MD_ROM_SVP, "MD Virtua Racing", tag, owner, clock, "md_rom_svp", __FILE__),
- device_md_cart_interface( mconfig, *this ),
- m_svp(*this, "svp"),
- m_test_ipt(*this, "MEMORY_TEST"), m_emu_status(0), m_xst(0), m_xst2(0)
- {
+ : md_rom_svp_device(mconfig, MD_ROM_SVP, tag, owner, clock)
+{
}
diff --git a/src/devices/bus/megadrive/svp.h b/src/devices/bus/megadrive/svp.h
index 57aa7713b67..328864d91e6 100644
--- a/src/devices/bus/megadrive/svp.h
+++ b/src/devices/bus/megadrive/svp.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli,Pierpaolo Prazzoli,Grazvydas Ignotas
-#ifndef __MD_SVP_H
-#define __MD_SVP_H
+#ifndef MAME_BUS_MEGADRIVE_SVP_H
+#define MAME_BUS_MEGADRIVE_SVP_H
#include "md_slot.h"
#include "cpu/ssp1601/ssp1601.h"
@@ -17,19 +17,13 @@ class md_rom_svp_device : public device_t,
{
public:
// construction/destruction
- md_rom_svp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
md_rom_svp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-//protected:
// device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
virtual void set_bank_to_rom(const char *banktag, uint32_t offset) override;
- required_device<device_t> m_svp;
- required_ioport m_test_ipt;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(read) override;
virtual DECLARE_WRITE16_MEMBER(write) override;
@@ -56,6 +50,14 @@ public:
virtual DECLARE_WRITE16_MEMBER(write_pmc);
virtual DECLARE_WRITE16_MEMBER(write_al);
+protected:
+ md_rom_svp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+
+ required_device<device_t> m_svp;
+ required_ioport m_test_ipt;
+
uint32_t pm_io(int reg, int write, uint32_t d);
uint32_t m_pmac_read[6]; // read modes/addrs for PM0-PM5
@@ -70,6 +72,6 @@ public:
// device type definition
-extern const device_type MD_ROM_SVP;
+DECLARE_DEVICE_TYPE(MD_ROM_SVP, md_rom_svp_device)
-#endif
+#endif // MAME_BUS_MEGADRIVE_SVP_H
diff --git a/src/devices/bus/midi/midi.cpp b/src/devices/bus/midi/midi.cpp
index eb3cd8a2803..baf8cf91a8e 100644
--- a/src/devices/bus/midi/midi.cpp
+++ b/src/devices/bus/midi/midi.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "midi.h"
-const device_type MIDI_PORT = device_creator<midi_port_device>;
+DEFINE_DEVICE_TYPE(MIDI_PORT, midi_port_device, "midi_port", "MIDI port")
midi_port_device::midi_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MIDI_PORT, "Midi Port", tag, owner, clock, "midi_port", __FILE__),
+ : device_t(mconfig, MIDI_PORT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_rxd(0),
m_rxd_handler(*this),
diff --git a/src/devices/bus/midi/midi.h b/src/devices/bus/midi/midi.h
index 2ce2afd1bd7..a14a7b8e627 100644
--- a/src/devices/bus/midi/midi.h
+++ b/src/devices/bus/midi/midi.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#ifndef __BUS_MIDI_H__
-#define __BUS_MIDI_H__
+#ifndef MAME_BUS_MIDI_MIDI_H
+#define MAME_BUS_MIDI_MIDI_H
+
+#pragma once
#define MCFG_MIDI_PORT_ADD(_tag, _slot_intf, _def_slot) \
@@ -23,7 +25,7 @@ public:
virtual ~midi_port_device();
// static configuration helpers
- template<class _Object> static devcb_base &set_rx_handler(device_t &device, _Object object) { return downcast<midi_port_device &>(device).m_rxd_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_rx_handler(device_t &device, Object &&cb) { return downcast<midi_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_txd );
@@ -46,19 +48,21 @@ class device_midi_port_interface : public device_slot_card_interface
friend class midi_port_device;
public:
- device_midi_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_midi_port_interface();
- virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) {}
+ virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) { }
DECLARE_WRITE_LINE_MEMBER( output_rxd ) { m_port->m_rxd = state; m_port->m_rxd_handler(state); }
protected:
+ device_midi_port_interface(const machine_config &mconfig, device_t &device);
+
midi_port_device *m_port;
};
extern const device_type MIDI_PORT;
+DECLARE_DEVICE_TYPE(MIDI_PORT, midi_port_device)
SLOT_INTERFACE_EXTERN(midiin_slot);
SLOT_INTERFACE_EXTERN(midiout_slot);
-#endif
+#endif // MAME_BUS_MIDI_MIDI_H
diff --git a/src/devices/bus/midi/midiinport.cpp b/src/devices/bus/midi/midiinport.cpp
index 4ad00742af1..cac476ac2f2 100644
--- a/src/devices/bus/midi/midiinport.cpp
+++ b/src/devices/bus/midi/midiinport.cpp
@@ -11,10 +11,10 @@
#include "emu.h"
#include "midiinport.h"
-const device_type MIDIIN_PORT = device_creator<midiin_port_device>;
+DEFINE_DEVICE_TYPE(MIDIIN_PORT, midiin_port_device, "midiin_port", "MIDI In port")
midiin_port_device::midiin_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MIDIIN_PORT, "MIDI In port", tag, owner, clock, "midiin_port", __FILE__),
+ : device_t(mconfig, MIDIIN_PORT, tag, owner, clock),
device_midi_port_interface(mconfig, *this),
m_midiin(*this, "midiinimg")
{
diff --git a/src/devices/bus/midi/midiinport.h b/src/devices/bus/midi/midiinport.h
index 0f69cb11620..daf3a5cfdb9 100644
--- a/src/devices/bus/midi/midiinport.h
+++ b/src/devices/bus/midi/midiinport.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef _MIDIINPORT_H_
-#define _MIDIINPORT_H_
+#ifndef MAME_BUS_MIDI_MIDIINPORT_H
+#define MAME_BUS_MIDI_MIDIINPORT_H
+
+#pragma once
#include "midi.h"
#include "imagedev/midiin.h"
@@ -31,6 +33,6 @@ private:
required_device<midiin_device> m_midiin;
};
-extern const device_type MIDIIN_PORT;
+DECLARE_DEVICE_TYPE(MIDIIN_PORT, midiin_port_device)
-#endif
+#endif // MAME_BUS_MIDI_MIDIINPORT_H
diff --git a/src/devices/bus/midi/midioutport.cpp b/src/devices/bus/midi/midioutport.cpp
index f9a37ee486d..cf97bfbcb27 100644
--- a/src/devices/bus/midi/midioutport.cpp
+++ b/src/devices/bus/midi/midioutport.cpp
@@ -11,10 +11,10 @@
#include "emu.h"
#include "midioutport.h"
-const device_type MIDIOUT_PORT = device_creator<midiout_port_device>;
+DEFINE_DEVICE_TYPE(MIDIOUT_PORT, midiout_port_device, "midiout_port", "MIDI Out port")
midiout_port_device::midiout_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MIDIOUT_PORT, "MIDI Out port", tag, owner, clock, "midiout_port", __FILE__),
+ : device_t(mconfig, MIDIOUT_PORT, tag, owner, clock),
device_midi_port_interface(mconfig, *this),
m_midiout(*this, "midioutimg")
{
diff --git a/src/devices/bus/midi/midioutport.h b/src/devices/bus/midi/midioutport.h
index 8fca565f82d..bd594c48732 100644
--- a/src/devices/bus/midi/midioutport.h
+++ b/src/devices/bus/midi/midioutport.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef _MIDIOUTPORT_H_
-#define _MIDIOUTPORT_H_
+#ifndef MAME_BUS_MIDI_MIDIOUTPORT_H
+#define MAME_BUS_MIDI_MIDIOUTPORT_H
+
+#pragma once
#include "midi.h"
#include "imagedev/midiout.h"
@@ -31,6 +33,6 @@ private:
required_device<midiout_device> m_midiout;
};
-extern const device_type MIDIOUT_PORT;
+DECLARE_DEVICE_TYPE(MIDIOUT_PORT, midiout_port_device)
-#endif
+#endif // MAME_BUS_MIDI_MIDIOUTPORT_H
diff --git a/src/devices/bus/msx_cart/arc.cpp b/src/devices/bus/msx_cart/arc.cpp
index b2e0395aadf..3504071ec4c 100644
--- a/src/devices/bus/msx_cart/arc.cpp
+++ b/src/devices/bus/msx_cart/arc.cpp
@@ -4,33 +4,33 @@
#include "arc.h"
-const device_type MSX_CART_ARC = device_creator<msx_cart_arc>;
+DEFINE_DEVICE_TYPE(MSX_CART_ARC, msx_cart_arc_device, "msx_cart_arc", "MSX Cartridge - Arc")
-msx_cart_arc::msx_cart_arc(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_ARC, "MSX Cartridge - Arc", tag, owner, clock, "msx_cart_arc", __FILE__)
+msx_cart_arc_device::msx_cart_arc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_ARC, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_7f(0)
{
}
-void msx_cart_arc::device_start()
+void msx_cart_arc_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
- space.install_write_handler(0x7f, 0x7f, write8_delegate(FUNC(msx_cart_arc::io_7f_w), this));
- space.install_read_handler(0x7f, 0x7f, read8_delegate(FUNC(msx_cart_arc::io_7f_r), this));
+ space.install_write_handler(0x7f, 0x7f, write8_delegate(FUNC(msx_cart_arc_device::io_7f_w), this));
+ space.install_read_handler(0x7f, 0x7f, read8_delegate(FUNC(msx_cart_arc_device::io_7f_r), this));
}
-void msx_cart_arc::device_reset()
+void msx_cart_arc_device::device_reset()
{
m_7f = 0;
}
-void msx_cart_arc::initialize_cartridge()
+void msx_cart_arc_device::initialize_cartridge()
{
if (get_rom_size() != 0x8000)
{
@@ -39,7 +39,7 @@ void msx_cart_arc::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_arc::read_cart)
+READ8_MEMBER(msx_cart_arc_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -49,7 +49,7 @@ READ8_MEMBER(msx_cart_arc::read_cart)
}
-WRITE8_MEMBER(msx_cart_arc::io_7f_w)
+WRITE8_MEMBER(msx_cart_arc_device::io_7f_w)
{
if (data == 0x35)
{
@@ -58,7 +58,7 @@ WRITE8_MEMBER(msx_cart_arc::io_7f_w)
}
-READ8_MEMBER(msx_cart_arc::io_7f_r)
+READ8_MEMBER(msx_cart_arc_device::io_7f_r)
{
return ((m_7f & 0x03) == 0x03) ? 0xda : 0xff;
}
diff --git a/src/devices/bus/msx_cart/arc.h b/src/devices/bus/msx_cart/arc.h
index 748b225935d..308589961fd 100644
--- a/src/devices/bus/msx_cart/arc.h
+++ b/src/devices/bus/msx_cart/arc.h
@@ -1,23 +1,20 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_ARC_H
-#define __MSX_CART_ARC_H
+#ifndef MAME_BUS_MSX_CART_ARC_H
+#define MAME_BUS_MSX_CART_ARC_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_ARC;
+DECLARE_DEVICE_TYPE(MSX_CART_ARC, msx_cart_arc_device)
-class msx_cart_arc : public device_t
- , public msx_cart_interface
+class msx_cart_arc_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_arc(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_arc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
@@ -26,9 +23,13 @@ public:
DECLARE_WRITE8_MEMBER(io_7f_w);
DECLARE_READ8_MEMBER(io_7f_r);
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_7f;
};
-
-#endif
+#endif // MAME_BUS_MSX_CART_ARC_H
diff --git a/src/devices/bus/msx_cart/ascii.cpp b/src/devices/bus/msx_cart/ascii.cpp
index 9263ca01b72..c7598a8ccc0 100644
--- a/src/devices/bus/msx_cart/ascii.cpp
+++ b/src/devices/bus/msx_cart/ascii.cpp
@@ -4,15 +4,15 @@
#include "ascii.h"
-const device_type MSX_CART_ASCII8 = device_creator<msx_cart_ascii8>;
-const device_type MSX_CART_ASCII16 = device_creator<msx_cart_ascii16>;
-const device_type MSX_CART_ASCII8_SRAM = device_creator<msx_cart_ascii8_sram>;
-const device_type MSX_CART_ASCII16_SRAM = device_creator<msx_cart_ascii16_sram>;
-const device_type MSX_CART_MSXWRITE = device_creator<msx_cart_msxwrite>;
+DEFINE_DEVICE_TYPE(MSX_CART_ASCII8, msx_cart_ascii8_device, "msx_cart_ascii8", "MSX Cartridge - ASCII8")
+DEFINE_DEVICE_TYPE(MSX_CART_ASCII16, msx_cart_ascii16_device, "msx_cart_ascii16", "MSX Cartridge - ASCII16")
+DEFINE_DEVICE_TYPE(MSX_CART_ASCII8_SRAM, msx_cart_ascii8_sram_device, "msx_cart_ascii8_sram", "MSX Cartridge - ASCII8 w/SRAM")
+DEFINE_DEVICE_TYPE(MSX_CART_ASCII16_SRAM, msx_cart_ascii16_sram_device, "msx_cart_ascii16_sram", "MSX Cartridge - ASCII16 w/SRAM")
+DEFINE_DEVICE_TYPE(MSX_CART_MSXWRITE, msx_cart_msxwrite_device, "msx_cart_msxwrite", "MSX Cartridge - MSXWRITE")
-msx_cart_ascii8::msx_cart_ascii8(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_ASCII8, "MSX Cartridge - ASCII8", tag, owner, clock, "msx_cart_ascii8", __FILE__)
+msx_cart_ascii8_device::msx_cart_ascii8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_ASCII8, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bank_mask(0)
{
@@ -24,15 +24,15 @@ msx_cart_ascii8::msx_cart_ascii8(const machine_config &mconfig, const char *tag,
}
-void msx_cart_ascii8::device_start()
+void msx_cart_ascii8_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii8::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii8_device::restore_banks), this));
}
-void msx_cart_ascii8::restore_banks()
+void msx_cart_ascii8_device::restore_banks()
{
for (int i = 0; i < 4; i++)
{
@@ -41,7 +41,7 @@ void msx_cart_ascii8::restore_banks()
}
-void msx_cart_ascii8::device_reset()
+void msx_cart_ascii8_device::device_reset()
{
for (auto & elem : m_selected_bank)
{
@@ -50,7 +50,7 @@ void msx_cart_ascii8::device_reset()
}
-void msx_cart_ascii8::initialize_cartridge()
+void msx_cart_ascii8_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
@@ -72,7 +72,7 @@ void msx_cart_ascii8::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_ascii8::read_cart)
+READ8_MEMBER(msx_cart_ascii8_device::read_cart)
{
if ( offset >= 0x4000 && offset < 0xC000 )
{
@@ -82,7 +82,7 @@ READ8_MEMBER(msx_cart_ascii8::read_cart)
}
-WRITE8_MEMBER(msx_cart_ascii8::write_cart)
+WRITE8_MEMBER(msx_cart_ascii8_device::write_cart)
{
if (offset >= 0x6000 && offset < 0x8000)
{
@@ -95,8 +95,8 @@ WRITE8_MEMBER(msx_cart_ascii8::write_cart)
-msx_cart_ascii16::msx_cart_ascii16(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_ASCII16, "MSX Cartridge - ASCII16", tag, owner, clock, "msx_cart_ascii16", __FILE__)
+msx_cart_ascii16_device::msx_cart_ascii16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_ASCII16, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bank_mask(0)
{
@@ -108,15 +108,15 @@ msx_cart_ascii16::msx_cart_ascii16(const machine_config &mconfig, const char *ta
}
-void msx_cart_ascii16::device_start()
+void msx_cart_ascii16_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii16::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii16_device::restore_banks), this));
}
-void msx_cart_ascii16::restore_banks()
+void msx_cart_ascii16_device::restore_banks()
{
for (int i = 0; i < 2; i++)
{
@@ -125,7 +125,7 @@ void msx_cart_ascii16::restore_banks()
}
-void msx_cart_ascii16::device_reset()
+void msx_cart_ascii16_device::device_reset()
{
for (auto & elem : m_selected_bank)
{
@@ -134,7 +134,7 @@ void msx_cart_ascii16::device_reset()
}
-void msx_cart_ascii16::initialize_cartridge()
+void msx_cart_ascii16_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
@@ -156,7 +156,7 @@ void msx_cart_ascii16::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_ascii16::read_cart)
+READ8_MEMBER(msx_cart_ascii16_device::read_cart)
{
if ( offset >= 0x4000 && offset < 0xC000 )
{
@@ -166,7 +166,7 @@ READ8_MEMBER(msx_cart_ascii16::read_cart)
}
-WRITE8_MEMBER(msx_cart_ascii16::write_cart)
+WRITE8_MEMBER(msx_cart_ascii16_device::write_cart)
{
if (offset >= 0x6000 && offset < 0x6800)
{
@@ -185,8 +185,8 @@ WRITE8_MEMBER(msx_cart_ascii16::write_cart)
-msx_cart_ascii8_sram::msx_cart_ascii8_sram(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_ASCII8_SRAM, "MSX Cartridge - ASCII8 w/SRAM", tag, owner, clock, "msx_cart_ascii8_sram", __FILE__)
+msx_cart_ascii8_sram_device::msx_cart_ascii8_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_ASCII8_SRAM, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bank_mask(0)
, m_sram_select_mask(0)
@@ -199,15 +199,15 @@ msx_cart_ascii8_sram::msx_cart_ascii8_sram(const machine_config &mconfig, const
}
-void msx_cart_ascii8_sram::device_start()
+void msx_cart_ascii8_sram_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii8_sram::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii8_sram_device::restore_banks), this));
}
-void msx_cart_ascii8_sram::setup_bank(uint8_t bank)
+void msx_cart_ascii8_sram_device::setup_bank(uint8_t bank)
{
if (m_selected_bank[bank] & ~(m_sram_select_mask | m_bank_mask))
{
@@ -226,7 +226,7 @@ void msx_cart_ascii8_sram::setup_bank(uint8_t bank)
}
-void msx_cart_ascii8_sram::restore_banks()
+void msx_cart_ascii8_sram_device::restore_banks()
{
for (int i = 0; i < 4; i++)
{
@@ -235,7 +235,7 @@ void msx_cart_ascii8_sram::restore_banks()
}
-void msx_cart_ascii8_sram::device_reset()
+void msx_cart_ascii8_sram_device::device_reset()
{
for (auto & elem : m_selected_bank)
{
@@ -244,7 +244,7 @@ void msx_cart_ascii8_sram::device_reset()
}
-void msx_cart_ascii8_sram::initialize_cartridge()
+void msx_cart_ascii8_sram_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
@@ -272,7 +272,7 @@ void msx_cart_ascii8_sram::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_ascii8_sram::read_cart)
+READ8_MEMBER(msx_cart_ascii8_sram_device::read_cart)
{
if ( offset >= 0x4000 && offset < 0xC000 )
{
@@ -287,7 +287,7 @@ READ8_MEMBER(msx_cart_ascii8_sram::read_cart)
}
-WRITE8_MEMBER(msx_cart_ascii8_sram::write_cart)
+WRITE8_MEMBER(msx_cart_ascii8_sram_device::write_cart)
{
if (offset >= 0x6000 && offset < 0x8000)
{
@@ -310,8 +310,8 @@ WRITE8_MEMBER(msx_cart_ascii8_sram::write_cart)
-msx_cart_ascii16_sram::msx_cart_ascii16_sram(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_ASCII16_SRAM, "MSX Cartridge - ASCII16 w/SRAM", tag, owner, clock, "msx_cart_ascii16_sram", __FILE__)
+msx_cart_ascii16_sram_device::msx_cart_ascii16_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_ASCII16_SRAM, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bank_mask(0)
, m_sram_select_mask(0)
@@ -324,15 +324,15 @@ msx_cart_ascii16_sram::msx_cart_ascii16_sram(const machine_config &mconfig, cons
}
-void msx_cart_ascii16_sram::device_start()
+void msx_cart_ascii16_sram_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii16_sram::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii16_sram_device::restore_banks), this));
}
-void msx_cart_ascii16_sram::setup_bank(uint8_t bank)
+void msx_cart_ascii16_sram_device::setup_bank(uint8_t bank)
{
if (m_selected_bank[bank] & ~(m_sram_select_mask | m_bank_mask))
{
@@ -351,7 +351,7 @@ void msx_cart_ascii16_sram::setup_bank(uint8_t bank)
}
-void msx_cart_ascii16_sram::restore_banks()
+void msx_cart_ascii16_sram_device::restore_banks()
{
for (int i = 0; i < 2; i++)
{
@@ -360,7 +360,7 @@ void msx_cart_ascii16_sram::restore_banks()
}
-void msx_cart_ascii16_sram::device_reset()
+void msx_cart_ascii16_sram_device::device_reset()
{
for (auto & elem : m_selected_bank)
{
@@ -369,7 +369,7 @@ void msx_cart_ascii16_sram::device_reset()
}
-void msx_cart_ascii16_sram::initialize_cartridge()
+void msx_cart_ascii16_sram_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
@@ -397,7 +397,7 @@ void msx_cart_ascii16_sram::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_ascii16_sram::read_cart)
+READ8_MEMBER(msx_cart_ascii16_sram_device::read_cart)
{
if ( offset >= 0x4000 && offset < 0xC000 )
{
@@ -419,7 +419,7 @@ READ8_MEMBER(msx_cart_ascii16_sram::read_cart)
}
-WRITE8_MEMBER(msx_cart_ascii16_sram::write_cart)
+WRITE8_MEMBER(msx_cart_ascii16_sram_device::write_cart)
{
if (offset >= 0x6000 && offset < 0x6800)
{
@@ -445,8 +445,8 @@ WRITE8_MEMBER(msx_cart_ascii16_sram::write_cart)
-msx_cart_msxwrite::msx_cart_msxwrite(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_MSXWRITE, "MSX Cartridge - MSXWRITE", tag, owner, clock, "msx_cart_msxwrite", __FILE__)
+msx_cart_msxwrite_device::msx_cart_msxwrite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_MSXWRITE, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bank_mask(0)
{
@@ -458,15 +458,15 @@ msx_cart_msxwrite::msx_cart_msxwrite(const machine_config &mconfig, const char *
}
-void msx_cart_msxwrite::device_start()
+void msx_cart_msxwrite_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_msxwrite::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_msxwrite_device::restore_banks), this));
}
-void msx_cart_msxwrite::restore_banks()
+void msx_cart_msxwrite_device::restore_banks()
{
for (int i = 0; i < 2; i++)
{
@@ -475,7 +475,7 @@ void msx_cart_msxwrite::restore_banks()
}
-void msx_cart_msxwrite::device_reset()
+void msx_cart_msxwrite_device::device_reset()
{
for (auto & elem : m_selected_bank)
{
@@ -484,7 +484,7 @@ void msx_cart_msxwrite::device_reset()
}
-void msx_cart_msxwrite::initialize_cartridge()
+void msx_cart_msxwrite_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
@@ -506,7 +506,7 @@ void msx_cart_msxwrite::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_msxwrite::read_cart)
+READ8_MEMBER(msx_cart_msxwrite_device::read_cart)
{
if ( offset >= 0x4000 && offset < 0xC000 )
{
@@ -516,7 +516,7 @@ READ8_MEMBER(msx_cart_msxwrite::read_cart)
}
-WRITE8_MEMBER(msx_cart_msxwrite::write_cart)
+WRITE8_MEMBER(msx_cart_msxwrite_device::write_cart)
{
// The rom writes to 6fff and 7fff for banking, unknown whether
// other locations also trigger banking.
diff --git a/src/devices/bus/msx_cart/ascii.h b/src/devices/bus/msx_cart/ascii.h
index 926560d1bea..2df178dc31d 100644
--- a/src/devices/bus/msx_cart/ascii.h
+++ b/src/devices/bus/msx_cart/ascii.h
@@ -1,33 +1,35 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_ASCII_H
-#define __MSX_CART_ASCII_H
+#ifndef MAME_BUS_MSX_CART_ASCII_H
+#define MAME_BUS_MSX_CART_ASCII_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_ASCII8;
-extern const device_type MSX_CART_ASCII16;
-extern const device_type MSX_CART_ASCII8_SRAM;
-extern const device_type MSX_CART_ASCII16_SRAM;
-extern const device_type MSX_CART_MSXWRITE;
+DECLARE_DEVICE_TYPE(MSX_CART_ASCII8, msx_cart_ascii8_device)
+DECLARE_DEVICE_TYPE(MSX_CART_ASCII16, msx_cart_ascii16_device)
+DECLARE_DEVICE_TYPE(MSX_CART_ASCII8_SRAM, msx_cart_ascii8_sram_device)
+DECLARE_DEVICE_TYPE(MSX_CART_ASCII16_SRAM, msx_cart_ascii16_sram_device)
+DECLARE_DEVICE_TYPE(MSX_CART_MSXWRITE, msx_cart_msxwrite_device)
-class msx_cart_ascii8 : public device_t
- , public msx_cart_interface
+class msx_cart_ascii8_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_ascii8(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_ascii8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -37,21 +39,21 @@ private:
};
-class msx_cart_ascii16 : public device_t
- , public msx_cart_interface
+class msx_cart_ascii16_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_ascii16(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_ascii16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -61,21 +63,21 @@ private:
};
-class msx_cart_ascii8_sram : public device_t
- , public msx_cart_interface
+class msx_cart_ascii8_sram_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_ascii8_sram(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_ascii8_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -88,21 +90,21 @@ private:
};
-class msx_cart_ascii16_sram : public device_t
- , public msx_cart_interface
+class msx_cart_ascii16_sram_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_ascii16_sram(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_ascii16_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -115,21 +117,21 @@ private:
};
-class msx_cart_msxwrite : public device_t
- , public msx_cart_interface
+class msx_cart_msxwrite_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_msxwrite(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_msxwrite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -138,4 +140,4 @@ private:
uint8_t *m_bank_base[2];
};
-#endif
+#endif // MAME_BUS_MSX_CART_ASCII_H
diff --git a/src/devices/bus/msx_cart/bm_012.cpp b/src/devices/bus/msx_cart/bm_012.cpp
index 77ddcd71a06..e6f56a7b40a 100644
--- a/src/devices/bus/msx_cart/bm_012.cpp
+++ b/src/devices/bus/msx_cart/bm_012.cpp
@@ -19,11 +19,11 @@ TODO:
#include "cpu/z80/z80.h"
-const device_type MSX_CART_BM_012 = device_creator<msx_cart_bm_012>;
+DEFINE_DEVICE_TYPE(MSX_CART_BM_012, msx_cart_bm_012_device, "msx_cart_bm_012", "MSX Cartridge - BM-012")
-msx_cart_bm_012::msx_cart_bm_012(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_BM_012, "MSX Cartridge - BM-012", tag, owner, clock, "msx_cart_bm_012", __FILE__)
+msx_cart_bm_012_device::msx_cart_bm_012_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_BM_012, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_tmpz84c015af(*this, "tmpz84c015af")
, m_bm012_pio(*this, "bm012_pio")
@@ -32,7 +32,7 @@ msx_cart_bm_012::msx_cart_bm_012(const machine_config &mconfig, const char *tag,
}
-static ADDRESS_MAP_START( bm_012_memory_map, AS_PROGRAM, 8, msx_cart_bm_012 )
+static ADDRESS_MAP_START( bm_012_memory_map, AS_PROGRAM, 8, msx_cart_bm_012_device )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xe000, 0xffff) AM_RAM
ADDRESS_MAP_END
@@ -69,7 +69,7 @@ static MACHINE_CONFIG_FRAGMENT( msx_cart_bm_012 )
// MIDI ports
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
- MCFG_MIDI_RX_HANDLER(WRITELINE(msx_cart_bm_012, midi_in))
+ MCFG_MIDI_RX_HANDLER(WRITELINE(msx_cart_bm_012_device, midi_in))
MCFG_MIDI_PORT_ADD("mdthru", midiout_slot, "midiout")
@@ -77,7 +77,7 @@ static MACHINE_CONFIG_FRAGMENT( msx_cart_bm_012 )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_bm_012::device_mconfig_additions() const
+machine_config_constructor msx_cart_bm_012_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( msx_cart_bm_012 );
}
@@ -90,13 +90,13 @@ ROM_START( msx_cart_bm_012 )
ROM_END
-const tiny_rom_entry *msx_cart_bm_012::device_rom_region() const
+const tiny_rom_entry *msx_cart_bm_012_device::device_rom_region() const
{
return ROM_NAME( msx_cart_bm_012 );
}
-void msx_cart_bm_012::device_start()
+void msx_cart_bm_012_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
@@ -105,7 +105,7 @@ void msx_cart_bm_012::device_start()
}
-WRITE_LINE_MEMBER(msx_cart_bm_012::midi_in)
+WRITE_LINE_MEMBER(msx_cart_bm_012_device::midi_in)
{
m_mdthru->write_txd(state);
m_tmpz84c015af->rxb_w(state);
diff --git a/src/devices/bus/msx_cart/bm_012.h b/src/devices/bus/msx_cart/bm_012.h
index 4c526f3ac49..3b8ed797622 100644
--- a/src/devices/bus/msx_cart/bm_012.h
+++ b/src/devices/bus/msx_cart/bm_012.h
@@ -1,29 +1,32 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_BM_012_H
-#define __MSX_CART_BM_012_H
+#ifndef MAME_BUS_MSX_CART_BM_012_H
+#define MAME_BUS_MSX_CART_BM_012_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
#include "cpu/z80/tmpz84c015.h"
#include "bus/midi/midi.h"
-extern const device_type MSX_CART_BM_012;
+DECLARE_DEVICE_TYPE(MSX_CART_BM_012, msx_cart_bm_012_device)
-class msx_cart_bm_012 : public device_t
- , public msx_cart_interface
+class msx_cart_bm_012_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_bm_012(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_bm_012_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
- virtual void device_start() override;
DECLARE_WRITE_LINE_MEMBER(midi_in);
+protected:
+ virtual void device_start() override;
+
private:
required_device<tmpz84c015_device> m_tmpz84c015af;
required_device<z80pio_device> m_bm012_pio;
@@ -31,4 +34,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_BM_012_H
diff --git a/src/devices/bus/msx_cart/cartridge.h b/src/devices/bus/msx_cart/cartridge.h
index 5025f6cfa2b..c80f2949732 100644
--- a/src/devices/bus/msx_cart/cartridge.h
+++ b/src/devices/bus/msx_cart/cartridge.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_CARTRIDGE_H
-#define __MSX_CART_CARTRIDGE_H
+#ifndef MAME_BUS_MSX_CART_CARTRIDGE_H
+#define MAME_BUS_MSX_CART_CARTRIDGE_H
+
+#pragma once
SLOT_INTERFACE_EXTERN(msx_cart);
@@ -11,18 +13,16 @@ SLOT_INTERFACE_EXTERN(msx_yamaha_60pin); // 60 pin expansion slots as found in
class msx_cart_interface : public device_slot_card_interface
{
public:
- msx_cart_interface(const machine_config &mconfig, device_t &device);
-
- template<class _Object> void set_out_irq_cb(_Object object) { m_out_irq_cb.set_callback(object); m_out_irq_cb.resolve_safe(); }
+ template <class Object> void set_out_irq_cb(Object &&cb) { m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
// This is called after loading cartridge contents and allows the cartridge
// implementation to perform some additional initialization based on the
// cartridge contents.
- virtual void initialize_cartridge() {}
+ virtual void initialize_cartridge() { }
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write_cart) {}
+ virtual DECLARE_WRITE8_MEMBER(write_cart) { }
// ROM/RAM/SRAM management
// Mainly used by the cartridge slot when loading images
@@ -41,6 +41,10 @@ public:
uint32_t get_sram_size() { return m_sram.size(); }
protected:
+ msx_cart_interface(const machine_config &mconfig, device_t &device);
+
+ virtual void interface_pre_start() override { m_out_irq_cb.resolve_safe(); }
+
std::vector<uint8_t> m_rom;
std::vector<uint8_t> m_ram;
std::vector<uint8_t> m_rom_vlm5030;
@@ -49,4 +53,4 @@ protected:
};
-#endif
+#endif // MAME_BUS_MSX_CART_CARTRIDGE_H
diff --git a/src/devices/bus/msx_cart/crossblaim.cpp b/src/devices/bus/msx_cart/crossblaim.cpp
index 97e875c5432..dfd7907ac46 100644
--- a/src/devices/bus/msx_cart/crossblaim.cpp
+++ b/src/devices/bus/msx_cart/crossblaim.cpp
@@ -3,11 +3,11 @@
#include "emu.h"
#include "crossblaim.h"
-const device_type MSX_CART_CROSSBLAIM = device_creator<msx_cart_crossblaim>;
+DEFINE_DEVICE_TYPE(MSX_CART_CROSSBLAIM, msx_cart_crossblaim_device, "msx_cart_crossblaim", "MSX Cartridge Cross Blaim")
-msx_cart_crossblaim::msx_cart_crossblaim(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_CROSSBLAIM, "MSX Cartridge - Cross Blaim", tag, owner, clock, "msx_cart_crossblaim", __FILE__)
+msx_cart_crossblaim_device::msx_cart_crossblaim_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_CROSSBLAIM, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_selected_bank(1)
{
@@ -18,15 +18,15 @@ msx_cart_crossblaim::msx_cart_crossblaim(const machine_config &mconfig, const ch
}
-void msx_cart_crossblaim::device_start()
+void msx_cart_crossblaim_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_crossblaim::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_crossblaim_device::restore_banks), this));
}
-void msx_cart_crossblaim::setup_bank()
+void msx_cart_crossblaim_device::setup_bank()
{
m_bank_base[0] = ( m_selected_bank & 2 ) ? nullptr : get_rom_base() + ( m_selected_bank & 0x03 ) * 0x4000;
m_bank_base[2] = get_rom_base() + ( m_selected_bank & 0x03 ) * 0x4000;
@@ -34,20 +34,20 @@ void msx_cart_crossblaim::setup_bank()
}
-void msx_cart_crossblaim::restore_banks()
+void msx_cart_crossblaim_device::restore_banks()
{
m_bank_base[1] = get_rom_base();
setup_bank();
}
-void msx_cart_crossblaim::device_reset()
+void msx_cart_crossblaim_device::device_reset()
{
m_selected_bank = 1;
}
-void msx_cart_crossblaim::initialize_cartridge()
+void msx_cart_crossblaim_device::initialize_cartridge()
{
if (get_rom_size() != 0x10000)
{
@@ -58,7 +58,7 @@ void msx_cart_crossblaim::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_crossblaim::read_cart)
+READ8_MEMBER(msx_cart_crossblaim_device::read_cart)
{
uint8_t *bank_base = m_bank_base[offset >> 14];
@@ -71,7 +71,7 @@ READ8_MEMBER(msx_cart_crossblaim::read_cart)
}
-WRITE8_MEMBER(msx_cart_crossblaim::write_cart)
+WRITE8_MEMBER(msx_cart_crossblaim_device::write_cart)
{
m_selected_bank = data & 3;
if (m_selected_bank == 0)
diff --git a/src/devices/bus/msx_cart/crossblaim.h b/src/devices/bus/msx_cart/crossblaim.h
index 8ee0a0ad6a7..a1321dd06df 100644
--- a/src/devices/bus/msx_cart/crossblaim.h
+++ b/src/devices/bus/msx_cart/crossblaim.h
@@ -1,29 +1,31 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_CROSSBLAIM_H
-#define __MSX_CART_CROSSBLAIM_H
+#ifndef MAME_BUS_MSX_CART_CROSSBLAIM_H
+#define MAME_BUS_MSX_CART_CROSSBLAIM_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_CROSSBLAIM;
+DECLARE_DEVICE_TYPE(MSX_CART_CROSSBLAIM, msx_cart_crossblaim_device)
-class msx_cart_crossblaim : public device_t
- , public msx_cart_interface
+class msx_cart_crossblaim_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_crossblaim(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_crossblaim_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -34,4 +36,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_CROSSBLAIM_H
diff --git a/src/devices/bus/msx_cart/disk.cpp b/src/devices/bus/msx_cart/disk.cpp
index 2355f8959ca..79313b49012 100644
--- a/src/devices/bus/msx_cart/disk.cpp
+++ b/src/devices/bus/msx_cart/disk.cpp
@@ -105,13 +105,13 @@
#include "formats/msx_dsk.h"
#include "softlist.h"
-const device_type MSX_CART_VY0010 = device_creator<msx_cart_vy0010>;
-const device_type MSX_CART_FSFD1 = device_creator<msx_cart_fsfd1>;
-const device_type MSX_CART_FSFD1A = device_creator<msx_cart_fsfd1a>;
-const device_type MSX_CART_FSCF351 = device_creator<msx_cart_fscf351>;
+DEFINE_DEVICE_TYPE(MSX_CART_VY0010, msx_cart_vy0010_device, "msx_cart_vy0010", "MSX Cartridge - VY0010")
+DEFINE_DEVICE_TYPE(MSX_CART_FSFD1, msx_cart_fsfd1_device, "msx_cart_fsfd1", "MSX Cartridge - FS-FD1")
+DEFINE_DEVICE_TYPE(MSX_CART_FSFD1A, msx_cart_fsfd1a_device, "msx_cart_fsfd1a", "MSX Cartridge - FS-FD1A")
+DEFINE_DEVICE_TYPE(MSX_CART_FSCF351, msx_cart_fscf351_device, "msx_cart_fscf351", "MSX Cartridge - FS-CF351")
-FLOPPY_FORMATS_MEMBER( msx_cart_disk::floppy_formats )
+FLOPPY_FORMATS_MEMBER( msx_cart_disk_device::floppy_formats )
FLOPPY_MSX_FORMAT
FLOPPY_FORMATS_END
@@ -122,8 +122,8 @@ static SLOT_INTERFACE_START( msx_floppies )
SLOT_INTERFACE_END
-msx_cart_disk::msx_cart_disk(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+msx_cart_disk_device::msx_cart_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_floppy0(*this, "fdc:0")
, m_floppy1(*this, "fdc:1")
@@ -132,63 +132,64 @@ msx_cart_disk::msx_cart_disk(const machine_config &mconfig, device_type type, co
}
-msx_cart_disk_wd::msx_cart_disk_wd(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : msx_cart_disk(mconfig, type, name, tag, owner, clock, shortname)
+msx_cart_disk_wd_device::msx_cart_disk_wd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_disk_device(mconfig, type, tag, owner, clock)
, m_fdc(*this, "fdc")
{
}
-msx_cart_disk_type1::msx_cart_disk_type1(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : msx_cart_disk_wd(mconfig, type, name, tag, owner, clock, shortname), m_side_control(0)
- , m_control(0)
+msx_cart_disk_type1_device::msx_cart_disk_type1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_disk_wd_device(mconfig, type, tag, owner, clock)
+ , m_side_control(0)
+ , m_control(0)
{
}
-msx_cart_disk_type2::msx_cart_disk_type2(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : msx_cart_disk_wd(mconfig, type, name, tag, owner, clock, shortname)
+msx_cart_disk_type2_device::msx_cart_disk_type2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_disk_wd_device(mconfig, type, tag, owner, clock)
, m_control(0)
{
}
-msx_cart_vy0010::msx_cart_vy0010(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_cart_disk_type1(mconfig, MSX_CART_VY0010, "MSX Cartridge - VY0010", tag, owner, clock, "msx_cart_vy0010")
+msx_cart_vy0010_device::msx_cart_vy0010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_disk_type1_device(mconfig, MSX_CART_VY0010, tag, owner, clock)
{
}
-msx_cart_fsfd1::msx_cart_fsfd1(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_cart_disk_type1(mconfig, MSX_CART_FSFD1, "MSX Cartridge - FS-FD1", tag, owner, clock, "msx_cart_fsfd1")
+msx_cart_fsfd1_device::msx_cart_fsfd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_disk_type1_device(mconfig, MSX_CART_FSFD1, tag, owner, clock)
{
}
-msx_cart_fscf351::msx_cart_fscf351(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_cart_disk_type2(mconfig, MSX_CART_FSCF351, "MSX Cartridge - FS-CF351", tag, owner, clock, "msx_cart_fscf351")
+msx_cart_fscf351_device::msx_cart_fscf351_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_disk_type2_device(mconfig, MSX_CART_FSCF351, tag, owner, clock)
{
}
-msx_cart_disk_tc8566::msx_cart_disk_tc8566(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : msx_cart_disk(mconfig, type, name, tag, owner, clock, shortname)
+msx_cart_disk_tc8566_device::msx_cart_disk_tc8566_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_disk_device(mconfig, type, tag, owner, clock)
, m_fdc(*this, "fdc")
{
}
-msx_cart_fsfd1a::msx_cart_fsfd1a(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_cart_disk_tc8566(mconfig, MSX_CART_FSFD1A, "MSX Cartridge - FS-FD1A", tag, owner, clock, "msx_cart_fsfd1a")
+msx_cart_fsfd1a_device::msx_cart_fsfd1a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_disk_tc8566_device(mconfig, MSX_CART_FSFD1A, tag, owner, clock)
{
}
-void msx_cart_disk::initialize_cartridge()
+void msx_cart_disk_device::initialize_cartridge()
{
if ( get_rom_size() != 0x4000 )
{
- fatalerror("msx_cart_disk: Invalid ROM size\n");
+ fatalerror("msx_cart_disk_device: Invalid ROM size\n");
}
}
@@ -202,7 +203,7 @@ static MACHINE_CONFIG_FRAGMENT( vy0010 )
MCFG_WD_FDC_FORCE_READY
// Single sided 3.5" floppy drive
- MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35ssdd", msx_cart_disk::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35ssdd", msx_cart_disk_device::floppy_formats)
// Attach software lists
// We do not know in what kind of machine the user has inserted the floppy interface
@@ -213,7 +214,7 @@ static MACHINE_CONFIG_FRAGMENT( vy0010 )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_vy0010::device_mconfig_additions() const
+machine_config_constructor msx_cart_vy0010_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( vy0010 );
}
@@ -223,7 +224,7 @@ static MACHINE_CONFIG_FRAGMENT( fsfd1 )
MCFG_WD2793_ADD("fdc", XTAL_4MHz / 4)
// Double sided 3.5" floppy drive
- MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35dd", msx_cart_disk::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35dd", msx_cart_disk_device::floppy_formats)
// Attach software lists
// We do not know in what kind of machine the user has inserted the floppy interface
@@ -234,7 +235,7 @@ static MACHINE_CONFIG_FRAGMENT( fsfd1 )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_fsfd1::device_mconfig_additions() const
+machine_config_constructor msx_cart_fsfd1_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( fsfd1 );
}
@@ -244,7 +245,7 @@ static MACHINE_CONFIG_FRAGMENT( fsfd1a )
MCFG_TC8566AF_ADD("fdc")
// Double sided 3.5" floppy drive
- MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35dd", msx_cart_disk::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35dd", msx_cart_disk_device::floppy_formats)
// Attach software lists
// We do not know in what kind of machine the user has inserted the floppy interface
@@ -255,7 +256,7 @@ static MACHINE_CONFIG_FRAGMENT( fsfd1a )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_fsfd1a::device_mconfig_additions() const
+machine_config_constructor msx_cart_fsfd1a_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( fsfd1a );
}
@@ -266,7 +267,7 @@ static MACHINE_CONFIG_FRAGMENT( fscf351 )
MCFG_WD_FDC_FORCE_READY
// Double sided 3.5" floppy drive
- MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35dd", msx_cart_disk::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35dd", msx_cart_disk_device::floppy_formats)
// Attach software lists
// We do not know in what kind of machine the user has inserted the floppy interface
@@ -277,22 +278,22 @@ static MACHINE_CONFIG_FRAGMENT( fscf351 )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_fscf351::device_mconfig_additions() const
+machine_config_constructor msx_cart_fscf351_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( fscf351 );
}
-void msx_cart_disk_type1::device_start()
+void msx_cart_disk_type1_device::device_start()
{
save_item(NAME(m_side_control));
save_item(NAME(m_control));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_disk_type1::post_load), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_disk_type1_device::post_load), this));
}
-void msx_cart_disk_type1::post_load()
+void msx_cart_disk_type1_device::post_load()
{
uint8_t data = m_control;
@@ -303,7 +304,7 @@ void msx_cart_disk_type1::post_load()
}
-void msx_cart_disk_type1::set_control(uint8_t data)
+void msx_cart_disk_type1_device::set_control(uint8_t data)
{
uint8_t old_m_control = m_control;
@@ -340,7 +341,7 @@ void msx_cart_disk_type1::set_control(uint8_t data)
}
-void msx_cart_disk_type1::set_side_control(uint8_t data)
+void msx_cart_disk_type1_device::set_side_control(uint8_t data)
{
m_side_control = data;
@@ -351,13 +352,13 @@ void msx_cart_disk_type1::set_side_control(uint8_t data)
}
-void msx_cart_disk_type1::device_reset()
+void msx_cart_disk_type1_device::device_reset()
{
m_fdc->dden_w(false);
}
-READ8_MEMBER(msx_cart_disk_type1::read_cart)
+READ8_MEMBER(msx_cart_disk_type1_device::read_cart)
{
switch (offset)
{
@@ -398,7 +399,7 @@ READ8_MEMBER(msx_cart_disk_type1::read_cart)
}
-WRITE8_MEMBER(msx_cart_disk_type1::write_cart)
+WRITE8_MEMBER(msx_cart_disk_type1_device::write_cart)
{
switch (offset)
{
@@ -433,27 +434,27 @@ WRITE8_MEMBER(msx_cart_disk_type1::write_cart)
break;
default:
- logerror("msx_cart_disk_type1::write_cart: Unmapped write writing %02x to %04x\n", data, offset);
+ logerror("msx_cart_disk_type1_device::write_cart: Unmapped write writing %02x to %04x\n", data, offset);
break;
}
}
-void msx_cart_disk_type2::device_start()
+void msx_cart_disk_type2_device::device_start()
{
save_item(NAME(m_control));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_disk_type2::post_load), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_disk_type2_device::post_load), this));
}
-void msx_cart_disk_type2::device_reset()
+void msx_cart_disk_type2_device::device_reset()
{
m_fdc->dden_w(false);
}
-void msx_cart_disk_type2::post_load()
+void msx_cart_disk_type2_device::post_load()
{
uint8_t data = m_control;
@@ -464,7 +465,7 @@ void msx_cart_disk_type2::post_load()
}
-void msx_cart_disk_type2::set_control(uint8_t data)
+void msx_cart_disk_type2_device::set_control(uint8_t data)
{
uint8_t old_m_control = m_control;
@@ -500,7 +501,7 @@ void msx_cart_disk_type2::set_control(uint8_t data)
}
-READ8_MEMBER(msx_cart_disk_type2::read_cart)
+READ8_MEMBER(msx_cart_disk_type2_device::read_cart)
{
switch (offset)
{
@@ -533,7 +534,7 @@ READ8_MEMBER(msx_cart_disk_type2::read_cart)
}
-WRITE8_MEMBER(msx_cart_disk_type2::write_cart)
+WRITE8_MEMBER(msx_cart_disk_type2_device::write_cart)
{
switch (offset)
{
@@ -563,7 +564,7 @@ WRITE8_MEMBER(msx_cart_disk_type2::write_cart)
break;
default:
- logerror("msx_cart_disk_type2::write_cart: Unmapped write writing %02x to %04x\n", data, offset);
+ logerror("msx_cart_disk_type2_device::write_cart: Unmapped write writing %02x to %04x\n", data, offset);
break;
}
}
@@ -571,17 +572,17 @@ WRITE8_MEMBER(msx_cart_disk_type2::write_cart)
-void msx_cart_fsfd1a::device_start()
+void msx_cart_fsfd1a_device::device_start()
{
}
-void msx_cart_fsfd1a::device_reset()
+void msx_cart_fsfd1a_device::device_reset()
{
}
-READ8_MEMBER(msx_cart_fsfd1a::read_cart)
+READ8_MEMBER(msx_cart_fsfd1a_device::read_cart)
{
switch (offset)
{
@@ -602,7 +603,7 @@ READ8_MEMBER(msx_cart_fsfd1a::read_cart)
}
-WRITE8_MEMBER(msx_cart_fsfd1a::write_cart)
+WRITE8_MEMBER(msx_cart_fsfd1a_device::write_cart)
{
switch (offset)
{
@@ -622,7 +623,7 @@ WRITE8_MEMBER(msx_cart_fsfd1a::write_cart)
break;
default:
- logerror("msx_cart_fsfd1a::write_cart: Unmapped write writing %02x to %04x\n", data, offset);
+ logerror("msx_cart_fsfd1a_device::write_cart: Unmapped write writing %02x to %04x\n", data, offset);
break;
}
}
diff --git a/src/devices/bus/msx_cart/disk.h b/src/devices/bus/msx_cart/disk.h
index 2724ef39d4e..4d8a4d79146 100644
--- a/src/devices/bus/msx_cart/disk.h
+++ b/src/devices/bus/msx_cart/disk.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_DISK_H
-#define __MSX_CART_DISK_H
+#ifndef MAME_BUS_MSX_CART_DISK_H
+#define MAME_BUS_MSX_CART_DISK_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
#include "machine/wd_fdc.h"
@@ -10,54 +12,52 @@
#include "imagedev/floppy.h"
-extern const device_type MSX_CART_VY0010;
-extern const device_type MSX_CART_FSFD1;
-extern const device_type MSX_CART_FSFD1A;
-extern const device_type MSX_CART_FSCF351;
+DECLARE_DEVICE_TYPE(MSX_CART_VY0010, msx_cart_vy0010_device)
+DECLARE_DEVICE_TYPE(MSX_CART_FSFD1, msx_cart_fsfd1_device)
+DECLARE_DEVICE_TYPE(MSX_CART_FSFD1A, msx_cart_fsfd1a_device)
+DECLARE_DEVICE_TYPE(MSX_CART_FSCF351, msx_cart_fscf351_device)
-class msx_cart_disk : public device_t
- , public msx_cart_interface
+class msx_cart_disk_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_disk(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
-
virtual void initialize_cartridge() override;
DECLARE_FLOPPY_FORMATS(floppy_formats);
protected:
+ msx_cart_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
required_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1;
floppy_image_device *m_floppy;
};
-class msx_cart_disk_wd : public msx_cart_disk
+class msx_cart_disk_wd_device : public msx_cart_disk_device
{
-public:
- msx_cart_disk_wd(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
-
protected:
- required_device<wd_fdc_analog_t> m_fdc;
+ msx_cart_disk_wd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ required_device<wd_fdc_analog_device_base> m_fdc;
};
-class msx_cart_disk_type1 : public msx_cart_disk_wd
+class msx_cart_disk_type1_device : public msx_cart_disk_wd_device
{
public:
- msx_cart_disk_type1(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
+ virtual DECLARE_READ8_MEMBER(read_cart) override;
+ virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+
+protected:
+ msx_cart_disk_type1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual DECLARE_READ8_MEMBER(read_cart) override;
- virtual DECLARE_WRITE8_MEMBER(write_cart) override;
-
void post_load();
-protected:
uint8_t m_side_control;
uint8_t m_control;
@@ -66,77 +66,78 @@ protected:
};
-class msx_cart_disk_type2 : public msx_cart_disk_wd
+class msx_cart_disk_type2_device : public msx_cart_disk_wd_device
{
public:
- msx_cart_disk_type2(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
+ virtual DECLARE_READ8_MEMBER(read_cart) override;
+ virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+
+protected:
+ msx_cart_disk_type2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual DECLARE_READ8_MEMBER(read_cart) override;
- virtual DECLARE_WRITE8_MEMBER(write_cart) override;
-
void post_load();
-protected:
uint8_t m_control;
void set_control(uint8_t data);
};
-class msx_cart_vy0010 : public msx_cart_disk_type1
+class msx_cart_vy0010_device : public msx_cart_disk_type1_device
{
public:
- msx_cart_vy0010(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_vy0010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual machine_config_constructor device_mconfig_additions() const override;
};
-class msx_cart_fsfd1 : public msx_cart_disk_type1
+class msx_cart_fsfd1_device : public msx_cart_disk_type1_device
{
public:
- msx_cart_fsfd1(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_fsfd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual machine_config_constructor device_mconfig_additions() const override;
};
-class msx_cart_fscf351 : public msx_cart_disk_type2
+class msx_cart_fscf351_device : public msx_cart_disk_type2_device
{
public:
- msx_cart_fscf351(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_fscf351_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual machine_config_constructor device_mconfig_additions() const override;
};
-class msx_cart_disk_tc8566 : public msx_cart_disk
+class msx_cart_disk_tc8566_device : public msx_cart_disk_device
{
-public:
- msx_cart_disk_tc8566(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
-
protected:
+ msx_cart_disk_tc8566_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
required_device<tc8566af_device> m_fdc;
};
-class msx_cart_fsfd1a : public msx_cart_disk_tc8566
+class msx_cart_fsfd1a_device : public msx_cart_disk_tc8566_device
{
public:
- msx_cart_fsfd1a(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_fsfd1a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
};
-#endif
+#endif // MAME_BUS_MSX_CART_DISK_H
diff --git a/src/devices/bus/msx_cart/dooly.cpp b/src/devices/bus/msx_cart/dooly.cpp
index 05a29131cea..389e0c3da77 100644
--- a/src/devices/bus/msx_cart/dooly.cpp
+++ b/src/devices/bus/msx_cart/dooly.cpp
@@ -4,30 +4,30 @@
#include "dooly.h"
-const device_type MSX_CART_DOOLY = device_creator<msx_cart_dooly>;
+DEFINE_DEVICE_TYPE(MSX_CART_DOOLY, msx_cart_dooly_device, "msx_cart_dooly", "MSX Cartridge - Dooly")
-msx_cart_dooly::msx_cart_dooly(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_DOOLY, "MSX Cartridge - Dooly", tag, owner, clock, "msx_cart_dooly", __FILE__)
+msx_cart_dooly_device::msx_cart_dooly_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_DOOLY, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_prot(0)
{
}
-void msx_cart_dooly::device_start()
+void msx_cart_dooly_device::device_start()
{
save_item(NAME(m_prot));
}
-void msx_cart_dooly::device_reset()
+void msx_cart_dooly_device::device_reset()
{
m_prot = 0;
}
-void msx_cart_dooly::initialize_cartridge()
+void msx_cart_dooly_device::initialize_cartridge()
{
if (get_rom_size() != 0x8000)
{
@@ -36,7 +36,7 @@ void msx_cart_dooly::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_dooly::read_cart)
+READ8_MEMBER(msx_cart_dooly_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -54,14 +54,14 @@ READ8_MEMBER(msx_cart_dooly::read_cart)
}
-WRITE8_MEMBER(msx_cart_dooly::write_cart)
+WRITE8_MEMBER(msx_cart_dooly_device::write_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
m_prot = data & 0x07;
if (m_prot != 0 && m_prot != 4)
{
- logerror("msx_cart_dooly: unhandled write %02x to %04x\n", data, offset);
+ logerror("msx_cart_dooly_device: unhandled write %02x to %04x\n", data, offset);
}
}
}
diff --git a/src/devices/bus/msx_cart/dooly.h b/src/devices/bus/msx_cart/dooly.h
index 150d8ad452a..3ef7b365c82 100644
--- a/src/devices/bus/msx_cart/dooly.h
+++ b/src/devices/bus/msx_cart/dooly.h
@@ -1,32 +1,34 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_DOOLY_H
-#define __MSX_CART_DOOLY_H
+#ifndef MAME_BUS_MSX_CART_DOOLY_H
+#define MAME_BUS_MSX_CART_DOOLY_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_DOOLY;
+DECLARE_DEVICE_TYPE(MSX_CART_DOOLY, msx_cart_dooly_device)
-class msx_cart_dooly : public device_t
- , public msx_cart_interface
+class msx_cart_dooly_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_dooly(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_dooly_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_prot;
};
-#endif
+#endif // MAME_BUS_MSX_CART_DOOLY_H
diff --git a/src/devices/bus/msx_cart/fmpac.cpp b/src/devices/bus/msx_cart/fmpac.cpp
index 3eb388ddb8e..be434e55e41 100644
--- a/src/devices/bus/msx_cart/fmpac.cpp
+++ b/src/devices/bus/msx_cart/fmpac.cpp
@@ -11,11 +11,11 @@ with: PAC2 BACKUP DATA. We only store the raw sram contents.
#include "fmpac.h"
#include "speaker.h"
-const device_type MSX_CART_FMPAC = device_creator<msx_cart_fmpac>;
+DEFINE_DEVICE_TYPE(MSX_CART_FMPAC, msx_cart_fmpac_device, "msx_cart_fmpac", "MSX Cartridge - FM-PAC")
-msx_cart_fmpac::msx_cart_fmpac(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_FMPAC, "MSX Cartridge - FM-PAC", tag, owner, clock, "msx_cart_fmpac", __FILE__)
+msx_cart_fmpac_device::msx_cart_fmpac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_FMPAC, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_ym2413(*this, "ym2413")
, m_selected_bank(0)
@@ -37,13 +37,13 @@ static MACHINE_CONFIG_FRAGMENT( fmpac )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_fmpac::device_mconfig_additions() const
+machine_config_constructor msx_cart_fmpac_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( fmpac );
}
-void msx_cart_fmpac::device_start()
+void msx_cart_fmpac_device::device_start()
{
save_item(NAME(m_selected_bank));
save_item(NAME(m_sram_active));
@@ -52,21 +52,21 @@ void msx_cart_fmpac::device_start()
save_item(NAME(m_1fff));
save_item(NAME(m_7ff6));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_fmpac::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_fmpac_device::restore_banks), this));
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
- space.install_write_handler(0x7c, 0x7d, write8_delegate(FUNC(msx_cart_fmpac::write_ym2413), this));
+ space.install_write_handler(0x7c, 0x7d, write8_delegate(FUNC(msx_cart_fmpac_device::write_ym2413), this));
}
-void msx_cart_fmpac::restore_banks()
+void msx_cart_fmpac_device::restore_banks()
{
m_bank_base = get_rom_base() + ( m_selected_bank & 0x03 ) * 0x4000;
}
-void msx_cart_fmpac::device_reset()
+void msx_cart_fmpac_device::device_reset()
{
m_selected_bank = 0;
m_sram_active = false;
@@ -77,7 +77,7 @@ void msx_cart_fmpac::device_reset()
}
-void msx_cart_fmpac::initialize_cartridge()
+void msx_cart_fmpac_device::initialize_cartridge()
{
if ( get_rom_size() != 0x10000 )
{
@@ -93,7 +93,7 @@ void msx_cart_fmpac::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_fmpac::read_cart)
+READ8_MEMBER(msx_cart_fmpac_device::read_cart)
{
if (offset >= 0x4000 && offset < 0x8000)
{
@@ -122,7 +122,7 @@ READ8_MEMBER(msx_cart_fmpac::read_cart)
}
-WRITE8_MEMBER(msx_cart_fmpac::write_cart)
+WRITE8_MEMBER(msx_cart_fmpac_device::write_cart)
{
if (offset >= 0x4000 && offset < 0x6000)
{
@@ -165,7 +165,7 @@ WRITE8_MEMBER(msx_cart_fmpac::write_cart)
}
-WRITE8_MEMBER(msx_cart_fmpac::write_ym2413)
+WRITE8_MEMBER(msx_cart_fmpac_device::write_ym2413)
{
if (m_opll_active)
{
diff --git a/src/devices/bus/msx_cart/fmpac.h b/src/devices/bus/msx_cart/fmpac.h
index ed75abdbe05..2051cdafa81 100644
--- a/src/devices/bus/msx_cart/fmpac.h
+++ b/src/devices/bus/msx_cart/fmpac.h
@@ -1,24 +1,23 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_FMPAC_H
-#define __MSX_CART_FMPAC_H
+#ifndef MAME_BUS_MSX_CART_FMPAC_H
+#define MAME_BUS_MSX_CART_FMPAC_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
#include "sound/ym2413.h"
-extern const device_type MSX_CART_FMPAC;
+DECLARE_DEVICE_TYPE(MSX_CART_FMPAC, msx_art_fmpac_device)
-class msx_cart_fmpac : public device_t
- , public msx_cart_interface
+class msx_cart_fmpac_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_fmpac(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_fmpac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void initialize_cartridge() override;
@@ -26,10 +25,14 @@ public:
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
- void restore_banks();
-
DECLARE_WRITE8_MEMBER(write_ym2413);
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ void restore_banks();
+
private:
required_device<ym2413_device> m_ym2413;
@@ -43,4 +46,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_FMPAC_H
diff --git a/src/devices/bus/msx_cart/fs_sr022.cpp b/src/devices/bus/msx_cart/fs_sr022.cpp
index 6b7cb69c17a..7e0eac793df 100644
--- a/src/devices/bus/msx_cart/fs_sr022.cpp
+++ b/src/devices/bus/msx_cart/fs_sr022.cpp
@@ -4,11 +4,11 @@
#include "fs_sr022.h"
-const device_type MSX_CART_FS_SR022 = device_creator<msx_cart_fs_sr022>;
+DEFINE_DEVICE_TYPE(MSX_CART_FS_SR022, msx_cart_fs_sr022_device, "msx_cart_fs_sr022", "MSX Cartridge - FS-SR022")
-msx_cart_fs_sr022::msx_cart_fs_sr022(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_FS_SR022, "MSX Cartridge - FS-SR022", tag, owner, clock, "msx_cart_fs_sr022", __FILE__)
+msx_cart_fs_sr022_device::msx_cart_fs_sr022_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_FS_SR022, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bunsetsu_rom(nullptr)
, m_bunsetsu_address(0)
@@ -16,19 +16,19 @@ msx_cart_fs_sr022::msx_cart_fs_sr022(const machine_config &mconfig, const char *
}
-void msx_cart_fs_sr022::device_start()
+void msx_cart_fs_sr022_device::device_start()
{
save_item(NAME(m_bunsetsu_address));
}
-void msx_cart_fs_sr022::device_reset()
+void msx_cart_fs_sr022_device::device_reset()
{
m_bunsetsu_address = 0;
}
-void msx_cart_fs_sr022::initialize_cartridge()
+void msx_cart_fs_sr022_device::initialize_cartridge()
{
if (get_rom_size() != 0x40000)
{
@@ -38,7 +38,7 @@ void msx_cart_fs_sr022::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_fs_sr022::read_cart)
+READ8_MEMBER(msx_cart_fs_sr022_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -52,7 +52,7 @@ READ8_MEMBER(msx_cart_fs_sr022::read_cart)
}
-WRITE8_MEMBER(msx_cart_fs_sr022::write_cart)
+WRITE8_MEMBER(msx_cart_fs_sr022_device::write_cart)
{
switch (offset)
{
diff --git a/src/devices/bus/msx_cart/fs_sr022.h b/src/devices/bus/msx_cart/fs_sr022.h
index 8318669d198..bf3259090e1 100644
--- a/src/devices/bus/msx_cart/fs_sr022.h
+++ b/src/devices/bus/msx_cart/fs_sr022.h
@@ -1,33 +1,35 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_FS_SR022_H
-#define __MSX_CART_FS_SR022_H
+#ifndef MAME_BUS_MSX_CART_FS_SR022_H
+#define MAME_BUS_MSX_CART_FS_SR022_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_FS_SR022;
+DECLARE_DEVICE_TYPE(MSX_CART_FS_SR022, msx_cart_fs_sr022_device)
-class msx_cart_fs_sr022 : public device_t
- , public msx_cart_interface
+class msx_cart_fs_sr022_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_fs_sr022(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_fs_sr022_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
const uint8_t *m_bunsetsu_rom;
uint32_t m_bunsetsu_address;
};
-#endif
+#endif // MAME_BUS_MSX_CART_FS_SR022_H
diff --git a/src/devices/bus/msx_cart/halnote.cpp b/src/devices/bus/msx_cart/halnote.cpp
index a4a25378d6e..013d2b83680 100644
--- a/src/devices/bus/msx_cart/halnote.cpp
+++ b/src/devices/bus/msx_cart/halnote.cpp
@@ -4,30 +4,27 @@
#include "halnote.h"
-const device_type MSX_CART_HALNOTE = device_creator<msx_cart_halnote>;
+DEFINE_DEVICE_TYPE(MSX_CART_HALNOTE, msx_cart_halnote_device, "msx_cart_halnote", "MSX Cartridge - Halnote")
-msx_cart_halnote::msx_cart_halnote(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_HALNOTE, "MSX Cartridge - Halnote", tag, owner, clock, "msx_cart_halnote", __FILE__)
+msx_cart_halnote_device::msx_cart_halnote_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_HALNOTE, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
+ , m_selected_bank{ 0, 0, 0, 0, 0, 0, 0, 0 }
+ , m_bank_base{ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
{
- for (int i = 0; i < 8; i++)
- {
- m_selected_bank[i] = 0;
- m_bank_base[i] = nullptr;
- }
}
-void msx_cart_halnote::device_start()
+void msx_cart_halnote_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_halnote::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_halnote_device::restore_banks), this));
}
-void msx_cart_halnote::map_bank(int bank)
+void msx_cart_halnote_device::map_bank(int bank)
{
if (bank < 2)
{
@@ -58,7 +55,7 @@ void msx_cart_halnote::map_bank(int bank)
}
-void msx_cart_halnote::restore_banks()
+void msx_cart_halnote_device::restore_banks()
{
for (int i = 0; i < 8; i++)
{
@@ -67,7 +64,7 @@ void msx_cart_halnote::restore_banks()
}
-void msx_cart_halnote::device_reset()
+void msx_cart_halnote_device::device_reset()
{
for (auto & elem : m_selected_bank)
{
@@ -76,7 +73,7 @@ void msx_cart_halnote::device_reset()
}
-void msx_cart_halnote::initialize_cartridge()
+void msx_cart_halnote_device::initialize_cartridge()
{
if (get_rom_size() != 0x100000)
{
@@ -87,7 +84,7 @@ void msx_cart_halnote::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_halnote::read_cart)
+READ8_MEMBER(msx_cart_halnote_device::read_cart)
{
if (offset >= 0xc000)
{
@@ -109,7 +106,7 @@ READ8_MEMBER(msx_cart_halnote::read_cart)
}
-WRITE8_MEMBER(msx_cart_halnote::write_cart)
+WRITE8_MEMBER(msx_cart_halnote_device::write_cart)
{
if (offset < 0x4000)
{
@@ -153,7 +150,7 @@ WRITE8_MEMBER(msx_cart_halnote::write_cart)
break;
default:
- logerror("msx_cart_halnote: Unhandled write %02x to %04x\n", data, offset);
+ logerror("msx_cart_halnote_device: Unhandled write %02x to %04x\n", data, offset);
break;
}
}
diff --git a/src/devices/bus/msx_cart/halnote.h b/src/devices/bus/msx_cart/halnote.h
index 79002eca1bc..ad64d2539ee 100644
--- a/src/devices/bus/msx_cart/halnote.h
+++ b/src/devices/bus/msx_cart/halnote.h
@@ -1,29 +1,31 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_HALNOTE_H
-#define __MSX_CART_HALNOTE_H
+#ifndef MAME_BUS_MSX_CART_HALNOTE_H
+#define MAME_BUS_MSX_CART_HALNOTE_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_HALNOTE;
+DECLARE_DEVICE_TYPE(MSX_CART_HALNOTE, msx_cart_halnote_device)
-class msx_cart_halnote : public device_t
- , public msx_cart_interface
+class msx_cart_halnote_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_halnote(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_halnote_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -34,4 +36,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_HALNOTE_H
diff --git a/src/devices/bus/msx_cart/hfox.cpp b/src/devices/bus/msx_cart/hfox.cpp
index fa8ea7b8870..d7fb793e42d 100644
--- a/src/devices/bus/msx_cart/hfox.cpp
+++ b/src/devices/bus/msx_cart/hfox.cpp
@@ -4,40 +4,40 @@
#include "hfox.h"
-const device_type MSX_CART_HFOX = device_creator<msx_cart_hfox>;
+DEFINE_DEVICE_TYPE(MSX_CART_HFOX, msx_cart_hfox_device, "msx_cart_hfox", "MSX Cartridge - Harry Fox")
-msx_cart_hfox::msx_cart_hfox(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_HFOX, "MSX Cartridge - Harry Fox", tag, owner, clock, "msx_cart_hfox", __FILE__)
+msx_cart_hfox_device::msx_cart_hfox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_HFOX, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
+ , m_selected_bank{ 0, 0 }
+ , m_bank_base{ nullptr, nullptr }
{
- m_selected_bank[0] = m_selected_bank[1] = 0;
- m_bank_base[0] = m_bank_base[1] = nullptr;
}
-void msx_cart_hfox::device_start()
+void msx_cart_hfox_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_hfox::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_hfox_device::restore_banks), this));
}
-void msx_cart_hfox::restore_banks()
+void msx_cart_hfox_device::restore_banks()
{
m_bank_base[0] = get_rom_base() + ((m_selected_bank[0] & 0x01) * 0x8000);
m_bank_base[1] = get_rom_base() + ((m_selected_bank[1] & 0x01) * 0x8000) + 0x4000;
}
-void msx_cart_hfox::device_reset()
+void msx_cart_hfox_device::device_reset()
{
m_selected_bank[0] = m_selected_bank[1] = 0;
}
-void msx_cart_hfox::initialize_cartridge()
+void msx_cart_hfox_device::initialize_cartridge()
{
if (get_rom_size() < 0x10000)
{
@@ -48,7 +48,7 @@ void msx_cart_hfox::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_hfox::read_cart)
+READ8_MEMBER(msx_cart_hfox_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -58,7 +58,7 @@ READ8_MEMBER(msx_cart_hfox::read_cart)
}
-WRITE8_MEMBER(msx_cart_hfox::write_cart)
+WRITE8_MEMBER(msx_cart_hfox_device::write_cart)
{
switch (offset)
{
@@ -73,7 +73,7 @@ WRITE8_MEMBER(msx_cart_hfox::write_cart)
break;
default:
- logerror("msx_cart_hfox: unhandled write %02x to %04x\n", data, offset);
+ logerror("msx_cart_hfox_device: unhandled write %02x to %04x\n", data, offset);
break;
}
}
diff --git a/src/devices/bus/msx_cart/hfox.h b/src/devices/bus/msx_cart/hfox.h
index 7e58a07b10f..debcbc31308 100644
--- a/src/devices/bus/msx_cart/hfox.h
+++ b/src/devices/bus/msx_cart/hfox.h
@@ -1,29 +1,29 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_HFOX_H
-#define __MSX_CART_HFOX_H
+#ifndef MAME_BUS_MSX_CART_HFOX_H
+#define MAME_BUS_MSX_CART_HFOX_H
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_HFOX;
+DECLARE_DEVICE_TYPE(MSX_CART_HFOX, msx_cart_hfox_device)
-class msx_cart_hfox : public device_t
- , public msx_cart_interface
+class msx_cart_hfox_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_hfox(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_hfox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -32,4 +32,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_HFOX_H
diff --git a/src/devices/bus/msx_cart/holy_quran.cpp b/src/devices/bus/msx_cart/holy_quran.cpp
index 2c6eaca3eb0..c461b83ee16 100644
--- a/src/devices/bus/msx_cart/holy_quran.cpp
+++ b/src/devices/bus/msx_cart/holy_quran.cpp
@@ -4,20 +4,16 @@
#include "holy_quran.h"
-const device_type MSX_CART_HOLY_QURAN = device_creator<msx_cart_holy_quran>;
+DEFINE_DEVICE_TYPE(MSX_CART_HOLY_QURAN, msx_cart_holy_quran_device, "msx_cart_holy_quran", "MSX Cartridge - Holy Quran")
-msx_cart_holy_quran::msx_cart_holy_quran(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_HOLY_QURAN, "MSX Cartridge - Holy Quran", tag, owner, clock, "msx_cart_holy_quran", __FILE__)
+msx_cart_holy_quran_device::msx_cart_holy_quran_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_HOLY_QURAN, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
+ , m_selected_bank{ 0, 0, 0, 0 }
+ , m_bank_base{ nullptr, nullptr, nullptr, nullptr }
, m_decrypt(false)
{
- for (int i = 0; i < 4; i++)
- {
- m_selected_bank[i] = 0;
- m_bank_base[i] = nullptr;
- }
-
/* protection uses a simple rotation on databus, some lines inverted:
D0 D4 D4 D5
D1 ~ D3 D5 ~ D2
@@ -30,16 +26,16 @@ msx_cart_holy_quran::msx_cart_holy_quran(const machine_config &mconfig, const ch
}
-void msx_cart_holy_quran::device_start()
+void msx_cart_holy_quran_device::device_start()
{
save_item(NAME(m_selected_bank));
save_item(NAME(m_decrypt));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_holy_quran::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_holy_quran_device::restore_banks), this));
}
-void msx_cart_holy_quran::restore_banks()
+void msx_cart_holy_quran_device::restore_banks()
{
m_bank_base[0] = get_rom_base() + (m_selected_bank[0] & 0x7f) * 0x2000;
m_bank_base[1] = get_rom_base() + (m_selected_bank[1] & 0x7f) * 0x2000;
@@ -48,7 +44,7 @@ void msx_cart_holy_quran::restore_banks()
}
-void msx_cart_holy_quran::device_reset()
+void msx_cart_holy_quran_device::device_reset()
{
for (auto & elem : m_selected_bank)
{
@@ -57,7 +53,7 @@ void msx_cart_holy_quran::device_reset()
}
-void msx_cart_holy_quran::initialize_cartridge()
+void msx_cart_holy_quran_device::initialize_cartridge()
{
if (get_rom_size() != 0x100000)
{
@@ -68,7 +64,7 @@ void msx_cart_holy_quran::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_holy_quran::read_cart)
+READ8_MEMBER(msx_cart_holy_quran_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -92,7 +88,7 @@ READ8_MEMBER(msx_cart_holy_quran::read_cart)
}
-WRITE8_MEMBER(msx_cart_holy_quran::write_cart)
+WRITE8_MEMBER(msx_cart_holy_quran_device::write_cart)
{
switch (offset)
{
@@ -113,7 +109,7 @@ WRITE8_MEMBER(msx_cart_holy_quran::write_cart)
restore_banks();
break;
default:
- logerror("msx_cart_holy_quran: unhandled write %02x to %04x\n", data, offset);
+ logerror("msx_cart_holy_quran_device: unhandled write %02x to %04x\n", data, offset);
break;
}
}
diff --git a/src/devices/bus/msx_cart/holy_quran.h b/src/devices/bus/msx_cart/holy_quran.h
index 0b2bd1a06f8..b805282790c 100644
--- a/src/devices/bus/msx_cart/holy_quran.h
+++ b/src/devices/bus/msx_cart/holy_quran.h
@@ -1,29 +1,31 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_HOLY_QURAN_H
-#define __MSX_CART_HOLY_QURAN_H
+#ifndef MAME_BUS_MSX_CART_HOLY_QURAN_H
+#define MAME_BUS_MSX_CART_HOLY_QURAN_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_HOLY_QURAN;
+DECLARE_DEVICE_TYPE(MSX_CART_HOLY_QURAN, msx_cart_holy_quran_device)
-class msx_cart_holy_quran : public device_t
- , public msx_cart_interface
+class msx_cart_holy_quran_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_holy_quran(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_holy_quran_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -34,4 +36,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_HOLY_QURAN_H
diff --git a/src/devices/bus/msx_cart/konami.cpp b/src/devices/bus/msx_cart/konami.cpp
index b082e5c9703..4d7be20e91c 100644
--- a/src/devices/bus/msx_cart/konami.cpp
+++ b/src/devices/bus/msx_cart/konami.cpp
@@ -7,17 +7,17 @@
#include "speaker.h"
-const device_type MSX_CART_KONAMI = device_creator<msx_cart_konami>;
-const device_type MSX_CART_KONAMI_SCC = device_creator<msx_cart_konami_scc>;
-const device_type MSX_CART_GAMEMASTER2 = device_creator<msx_cart_gamemaster2>;
-const device_type MSX_CART_SYNTHESIZER = device_creator<msx_cart_synthesizer>;
-const device_type MSX_CART_SOUND_SNATCHER = device_creator<msx_cart_konami_sound_snatcher>;
-const device_type MSX_CART_SOUND_SDSNATCHER = device_creator<msx_cart_konami_sound_sdsnatcher>;
-const device_type MSX_CART_KEYBOARD_MASTER = device_creator<msx_cart_keyboard_master>;
+DEFINE_DEVICE_TYPE(MSX_CART_KONAMI, msx_cart_konami_device, "msx_cart_konami", "MSX Cartridge - KONAMI")
+DEFINE_DEVICE_TYPE(MSX_CART_KONAMI_SCC, msx_cart_konami_scc_device, "msx_cart_konami_scc", "MSX Cartridge - KONAMI+SCC")
+DEFINE_DEVICE_TYPE(MSX_CART_GAMEMASTER2, msx_cart_gamemaster2_device, "msx_cart_gamemaster2", "MSX Cartridge - GAMEMASTER2")
+DEFINE_DEVICE_TYPE(MSX_CART_SYNTHESIZER, msx_cart_synthesizer_device, "msx_cart_synthesizer", "MSX Cartridge - Synthesizer")
+DEFINE_DEVICE_TYPE(MSX_CART_SOUND_SNATCHER, msx_cart_konami_sound_snatcher_device, "msx_cart_sound_snatcher", "MSX Cartridge - Sound Snatcher")
+DEFINE_DEVICE_TYPE(MSX_CART_SOUND_SDSNATCHER, msx_cart_konami_sound_sdsnatcher_device, "msx_cart_sound_sdsnatcher", "MSX Cartridge - Sound SD Snatcher")
+DEFINE_DEVICE_TYPE(MSX_CART_KEYBOARD_MASTER, msx_cart_keyboard_master_device, "msx_cart_keyboard_master", "MSX Cartridge - Keyboard Master")
-msx_cart_konami::msx_cart_konami(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_KONAMI, "MSX Cartridge - KONAMI", tag, owner, clock, "msx_cart_konami", __FILE__)
+msx_cart_konami_device::msx_cart_konami_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_KONAMI, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bank_mask(0)
{
@@ -32,15 +32,15 @@ msx_cart_konami::msx_cart_konami(const machine_config &mconfig, const char *tag,
}
-void msx_cart_konami::device_start()
+void msx_cart_konami_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_konami::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_konami_device::restore_banks), this));
}
-void msx_cart_konami::restore_banks()
+void msx_cart_konami_device::restore_banks()
{
m_bank_base[0] = get_rom_base() + ( m_selected_bank[0] & m_bank_mask ) * 0x2000;
m_bank_base[1] = get_rom_base() + ( m_selected_bank[1] & m_bank_mask ) * 0x2000;
@@ -53,7 +53,7 @@ void msx_cart_konami::restore_banks()
}
-void msx_cart_konami::device_reset()
+void msx_cart_konami_device::device_reset()
{
for (int i = 0; i < 4; i++)
{
@@ -62,7 +62,7 @@ void msx_cart_konami::device_reset()
}
-void msx_cart_konami::initialize_cartridge()
+void msx_cart_konami_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
@@ -84,13 +84,13 @@ void msx_cart_konami::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_konami::read_cart)
+READ8_MEMBER(msx_cart_konami_device::read_cart)
{
return m_bank_base[offset >> 13][offset & 0x1fff];
}
-WRITE8_MEMBER(msx_cart_konami::write_cart)
+WRITE8_MEMBER(msx_cart_konami_device::write_cart)
{
switch (offset & 0xe000)
{
@@ -123,8 +123,8 @@ WRITE8_MEMBER(msx_cart_konami::write_cart)
-msx_cart_konami_scc::msx_cart_konami_scc(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_KONAMI_SCC, "MSX Cartridge - KONAMI+SCC", tag, owner, clock, "msx_cart_konami_scc", __FILE__)
+msx_cart_konami_scc_device::msx_cart_konami_scc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_KONAMI_SCC, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_k051649(*this, "k051649")
, m_bank_mask(0)
@@ -149,22 +149,22 @@ static MACHINE_CONFIG_FRAGMENT( konami_scc )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_konami_scc::device_mconfig_additions() const
+machine_config_constructor msx_cart_konami_scc_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( konami_scc );
}
-void msx_cart_konami_scc::device_start()
+void msx_cart_konami_scc_device::device_start()
{
save_item(NAME(m_selected_bank));
save_item(NAME(m_scc_active));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_konami_scc::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_konami_scc_device::restore_banks), this));
}
-void msx_cart_konami_scc::restore_banks()
+void msx_cart_konami_scc_device::restore_banks()
{
m_bank_base[0] = get_rom_base() + ( m_selected_bank[2] & m_bank_mask ) * 0x2000;
m_bank_base[1] = get_rom_base() + ( m_selected_bank[3] & m_bank_mask ) * 0x2000;
@@ -177,7 +177,7 @@ void msx_cart_konami_scc::restore_banks()
}
-void msx_cart_konami_scc::device_reset()
+void msx_cart_konami_scc_device::device_reset()
{
for (int i = 0; i < 4; i++)
{
@@ -187,7 +187,7 @@ void msx_cart_konami_scc::device_reset()
}
-void msx_cart_konami_scc::initialize_cartridge()
+void msx_cart_konami_scc_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
@@ -209,7 +209,7 @@ void msx_cart_konami_scc::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_konami_scc::read_cart)
+READ8_MEMBER(msx_cart_konami_scc_device::read_cart)
{
if ( m_scc_active && offset >= 0x9800 && offset < 0xa000 )
{
@@ -231,7 +231,7 @@ READ8_MEMBER(msx_cart_konami_scc::read_cart)
}
-WRITE8_MEMBER(msx_cart_konami_scc::write_cart)
+WRITE8_MEMBER(msx_cart_konami_scc_device::write_cart)
{
switch (offset & 0xf800)
{
@@ -299,8 +299,8 @@ WRITE8_MEMBER(msx_cart_konami_scc::write_cart)
-msx_cart_gamemaster2::msx_cart_gamemaster2(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_GAMEMASTER2, "MSX Cartridge - GAMEMASTER2", tag, owner, clock, "msx_cart_gamemaster2", __FILE__)
+msx_cart_gamemaster2_device::msx_cart_gamemaster2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_GAMEMASTER2, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
{
for (auto & elem : m_selected_bank)
@@ -314,15 +314,15 @@ msx_cart_gamemaster2::msx_cart_gamemaster2(const machine_config &mconfig, const
}
-void msx_cart_gamemaster2::device_start()
+void msx_cart_gamemaster2_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_gamemaster2::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_gamemaster2_device::restore_banks), this));
}
-void msx_cart_gamemaster2::setup_bank(uint8_t bank)
+void msx_cart_gamemaster2_device::setup_bank(uint8_t bank)
{
switch (bank)
{
@@ -368,7 +368,7 @@ void msx_cart_gamemaster2::setup_bank(uint8_t bank)
}
-void msx_cart_gamemaster2::restore_banks()
+void msx_cart_gamemaster2_device::restore_banks()
{
m_bank_base[0] = get_rom_base();
m_bank_base[2] = get_rom_base();
@@ -378,7 +378,7 @@ void msx_cart_gamemaster2::restore_banks()
}
-void msx_cart_gamemaster2::device_reset()
+void msx_cart_gamemaster2_device::device_reset()
{
for (int i = 0; i < 3; i++)
{
@@ -387,7 +387,7 @@ void msx_cart_gamemaster2::device_reset()
}
-void msx_cart_gamemaster2::initialize_cartridge()
+void msx_cart_gamemaster2_device::initialize_cartridge()
{
if ( get_rom_size() != 0x20000 )
{
@@ -403,7 +403,7 @@ void msx_cart_gamemaster2::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_gamemaster2::read_cart)
+READ8_MEMBER(msx_cart_gamemaster2_device::read_cart)
{
uint8_t bank = offset >> 13;
@@ -437,7 +437,7 @@ READ8_MEMBER(msx_cart_gamemaster2::read_cart)
}
-WRITE8_MEMBER(msx_cart_gamemaster2::write_cart)
+WRITE8_MEMBER(msx_cart_gamemaster2_device::write_cart)
{
switch (offset & 0xf000)
{
@@ -469,8 +469,8 @@ WRITE8_MEMBER(msx_cart_gamemaster2::write_cart)
-msx_cart_synthesizer::msx_cart_synthesizer(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_SYNTHESIZER, "MSX Cartridge - Synthesizer", tag, owner, clock, "msx_cart_synthesizer", __FILE__)
+msx_cart_synthesizer_device::msx_cart_synthesizer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_SYNTHESIZER, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bank_base(nullptr)
, m_dac(*this, "dac")
@@ -487,18 +487,18 @@ static MACHINE_CONFIG_FRAGMENT( synthesizer )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_synthesizer::device_mconfig_additions() const
+machine_config_constructor msx_cart_synthesizer_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( synthesizer );
}
-void msx_cart_synthesizer::device_start()
+void msx_cart_synthesizer_device::device_start()
{
}
-void msx_cart_synthesizer::initialize_cartridge()
+void msx_cart_synthesizer_device::initialize_cartridge()
{
if ( get_rom_size() != 0x8000 )
{
@@ -509,7 +509,7 @@ void msx_cart_synthesizer::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_synthesizer::read_cart)
+READ8_MEMBER(msx_cart_synthesizer_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000 )
{
@@ -519,7 +519,7 @@ READ8_MEMBER(msx_cart_synthesizer::read_cart)
}
-WRITE8_MEMBER(msx_cart_synthesizer::write_cart)
+WRITE8_MEMBER(msx_cart_synthesizer_device::write_cart)
{
if ((offset & 0xc010) == 0x4000)
{
@@ -530,8 +530,8 @@ WRITE8_MEMBER(msx_cart_synthesizer::write_cart)
-msx_cart_konami_sound::msx_cart_konami_sound(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+msx_cart_konami_sound_device::msx_cart_konami_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_k052539(*this, "k052539")
, m_scc_active(false)
@@ -565,24 +565,24 @@ static MACHINE_CONFIG_FRAGMENT( konami_sound )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_konami_sound::device_mconfig_additions() const
+machine_config_constructor msx_cart_konami_sound_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( konami_sound );
}
-void msx_cart_konami_sound::device_start()
+void msx_cart_konami_sound_device::device_start()
{
save_item(NAME(m_selected_bank));
save_item(NAME(m_scc_active));
save_item(NAME(m_sccplus_active));
save_item(NAME(m_ram_enabled));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_konami_sound::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_konami_sound_device::restore_banks), this));
}
-void msx_cart_konami_sound::restore_banks()
+void msx_cart_konami_sound_device::restore_banks()
{
for (int i = 0; i < 4; i++)
{
@@ -591,7 +591,7 @@ void msx_cart_konami_sound::restore_banks()
}
-void msx_cart_konami_sound::setup_bank(uint8_t bank)
+void msx_cart_konami_sound_device::setup_bank(uint8_t bank)
{
switch (bank)
{
@@ -618,7 +618,7 @@ void msx_cart_konami_sound::setup_bank(uint8_t bank)
}
-void msx_cart_konami_sound::device_reset()
+void msx_cart_konami_sound_device::device_reset()
{
for (int i = 0; i < 4; i++)
{
@@ -630,13 +630,13 @@ void msx_cart_konami_sound::device_reset()
}
-void msx_cart_konami_sound::initialize_cartridge()
+void msx_cart_konami_sound_device::initialize_cartridge()
{
restore_banks();
}
-READ8_MEMBER(msx_cart_konami_sound::read_cart)
+READ8_MEMBER(msx_cart_konami_sound_device::read_cart)
{
if ( m_scc_active && offset >= 0x9800 && offset < 0x9fe0 )
{
@@ -684,7 +684,7 @@ READ8_MEMBER(msx_cart_konami_sound::read_cart)
}
-WRITE8_MEMBER(msx_cart_konami_sound::write_cart)
+WRITE8_MEMBER(msx_cart_konami_sound_device::write_cart)
{
switch (offset & 0xe000)
{
@@ -826,15 +826,15 @@ WRITE8_MEMBER(msx_cart_konami_sound::write_cart)
}
-msx_cart_konami_sound_snatcher::msx_cart_konami_sound_snatcher(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_cart_konami_sound(mconfig, MSX_CART_SOUND_SNATCHER, "MSX Cartridge - Sound Snatcher", tag, owner, clock, "msx_cart_sound_snatcher", __FILE__)
+msx_cart_konami_sound_snatcher_device::msx_cart_konami_sound_snatcher_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_konami_sound_device(mconfig, MSX_CART_SOUND_SNATCHER, tag, owner, clock)
{
}
-void msx_cart_konami_sound_snatcher::initialize_cartridge()
+void msx_cart_konami_sound_snatcher_device::initialize_cartridge()
{
- msx_cart_konami_sound::initialize_cartridge();
+ msx_cart_konami_sound_device::initialize_cartridge();
if (get_ram_size() != 0x10000)
{
@@ -850,15 +850,15 @@ void msx_cart_konami_sound_snatcher::initialize_cartridge()
}
-msx_cart_konami_sound_sdsnatcher::msx_cart_konami_sound_sdsnatcher(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_cart_konami_sound(mconfig, MSX_CART_SOUND_SDSNATCHER, "MSX Cartridge - Sound SD Snatcher", tag, owner, clock, "msx_cart_sound_sdsnatcher", __FILE__)
+msx_cart_konami_sound_sdsnatcher_device::msx_cart_konami_sound_sdsnatcher_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_konami_sound_device(mconfig, MSX_CART_SOUND_SDSNATCHER, tag, owner, clock)
{
}
-void msx_cart_konami_sound_sdsnatcher::initialize_cartridge()
+void msx_cart_konami_sound_sdsnatcher_device::initialize_cartridge()
{
- msx_cart_konami_sound::initialize_cartridge();
+ msx_cart_konami_sound_device::initialize_cartridge();
if (get_ram_size() != 0x10000)
{
@@ -876,15 +876,15 @@ void msx_cart_konami_sound_sdsnatcher::initialize_cartridge()
-msx_cart_keyboard_master::msx_cart_keyboard_master(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_KEYBOARD_MASTER, "MSX Cartridge - Keyboard Master", tag, owner, clock, "msx_cart_keyboard_master", __FILE__)
+msx_cart_keyboard_master_device::msx_cart_keyboard_master_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_KEYBOARD_MASTER, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_vlm5030(*this, "vlm5030")
{
}
-static ADDRESS_MAP_START( vlm_map, AS_0, 8, msx_cart_keyboard_master )
+static ADDRESS_MAP_START( vlm_map, AS_0, 8, msx_cart_keyboard_master_device )
AM_RANGE(0x0000, 0xffff) AM_READ(read_vlm)
ADDRESS_MAP_END
@@ -898,23 +898,23 @@ static MACHINE_CONFIG_FRAGMENT( msx_cart_keyboard_master )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_keyboard_master::device_mconfig_additions() const
+machine_config_constructor msx_cart_keyboard_master_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( msx_cart_keyboard_master );
}
-void msx_cart_keyboard_master::device_start()
+void msx_cart_keyboard_master_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0x00, 0x00, write8_delegate(FUNC(vlm5030_device::data_w), m_vlm5030.target()));
- space.install_write_handler(0x20, 0x20, write8_delegate(FUNC(msx_cart_keyboard_master::io_20_w), this));
- space.install_read_handler(0x00, 0x00, read8_delegate(FUNC(msx_cart_keyboard_master::io_00_r), this));
+ space.install_write_handler(0x20, 0x20, write8_delegate(FUNC(msx_cart_keyboard_master_device::io_20_w), this));
+ space.install_read_handler(0x00, 0x00, read8_delegate(FUNC(msx_cart_keyboard_master_device::io_00_r), this));
}
-void msx_cart_keyboard_master::initialize_cartridge()
+void msx_cart_keyboard_master_device::initialize_cartridge()
{
if (get_rom_size() != 0x4000)
{
@@ -923,7 +923,7 @@ void msx_cart_keyboard_master::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_keyboard_master::read_cart)
+READ8_MEMBER(msx_cart_keyboard_master_device::read_cart)
{
if (offset >= 0x4000 && offset < 0x8000)
{
@@ -933,13 +933,13 @@ READ8_MEMBER(msx_cart_keyboard_master::read_cart)
}
-READ8_MEMBER(msx_cart_keyboard_master::read_vlm)
+READ8_MEMBER(msx_cart_keyboard_master_device::read_vlm)
{
return m_rom_vlm5030[offset];
}
-WRITE8_MEMBER(msx_cart_keyboard_master::io_20_w)
+WRITE8_MEMBER(msx_cart_keyboard_master_device::io_20_w)
{
m_vlm5030->rst((data & 0x01) ? 1 : 0);
m_vlm5030->vcu((data & 0x04) ? 1 : 0);
@@ -947,7 +947,7 @@ WRITE8_MEMBER(msx_cart_keyboard_master::io_20_w)
}
-READ8_MEMBER(msx_cart_keyboard_master::io_00_r)
+READ8_MEMBER(msx_cart_keyboard_master_device::io_00_r)
{
return m_vlm5030->bsy() ? 0x10 : 0x00;
}
diff --git a/src/devices/bus/msx_cart/konami.h b/src/devices/bus/msx_cart/konami.h
index 74400582420..a086e6467a2 100644
--- a/src/devices/bus/msx_cart/konami.h
+++ b/src/devices/bus/msx_cart/konami.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_KONAMI_H
-#define __MSX_CART_KONAMI_H
+#ifndef MAME_BUS_MSX_CART_KONAMI_H
+#define MAME_BUS_MSX_CART_KONAMI_H
#include "bus/msx_cart/cartridge.h"
#include "sound/k051649.h"
@@ -9,30 +9,30 @@
#include "sound/dac.h"
-extern const device_type MSX_CART_KONAMI;
-extern const device_type MSX_CART_KONAMI_SCC;
-extern const device_type MSX_CART_GAMEMASTER2;
-extern const device_type MSX_CART_SYNTHESIZER;
-extern const device_type MSX_CART_SOUND_SNATCHER;
-extern const device_type MSX_CART_SOUND_SDSNATCHER;
-extern const device_type MSX_CART_KEYBOARD_MASTER;
+DECLARE_DEVICE_TYPE(MSX_CART_KONAMI, msx_cart_konami_device)
+DECLARE_DEVICE_TYPE(MSX_CART_KONAMI_SCC, msx_cart_konami_scc_device)
+DECLARE_DEVICE_TYPE(MSX_CART_GAMEMASTER2, msx_cart_gamemaster2_device)
+DECLARE_DEVICE_TYPE(MSX_CART_SYNTHESIZER, msx_cart_synthesizer_device)
+DECLARE_DEVICE_TYPE(MSX_CART_SOUND_SNATCHER, msx_cart_konami_sound_snatcher_device)
+DECLARE_DEVICE_TYPE(MSX_CART_SOUND_SDSNATCHER, msx_cart_konami_sound_sdsnatcher_device)
+DECLARE_DEVICE_TYPE(MSX_CART_KEYBOARD_MASTER, msx_cart_keyboard_master_device)
-class msx_cart_konami : public device_t
- , public msx_cart_interface
+class msx_cart_konami_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_konami(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_konami_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -42,15 +42,11 @@ private:
};
-class msx_cart_konami_scc : public device_t
- , public msx_cart_interface
+class msx_cart_konami_scc_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_konami_scc(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_konami_scc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void initialize_cartridge() override;
@@ -58,6 +54,11 @@ public:
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -70,21 +71,21 @@ private:
};
-class msx_cart_gamemaster2 : public device_t
- , public msx_cart_interface
+class msx_cart_gamemaster2_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_gamemaster2(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_gamemaster2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -95,14 +96,11 @@ private:
};
-class msx_cart_synthesizer : public device_t
- , public msx_cart_interface
+class msx_cart_synthesizer_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_synthesizer(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_synthesizer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void initialize_cartridge() override;
@@ -110,21 +108,19 @@ public:
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t *m_bank_base;
required_device<dac_byte_interface> m_dac;
};
-class msx_cart_konami_sound : public device_t
- , public msx_cart_interface
+class msx_cart_konami_sound_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_konami_sound(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void initialize_cartridge() override;
@@ -132,9 +128,15 @@ public:
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ msx_cart_konami_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
-protected:
uint8_t *m_ram_bank[16];
private:
@@ -152,34 +154,32 @@ private:
};
-class msx_cart_konami_sound_snatcher : public msx_cart_konami_sound
+class msx_cart_konami_sound_snatcher_device : public msx_cart_konami_sound_device
{
public:
- msx_cart_konami_sound_snatcher(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_konami_sound_snatcher_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
};
-class msx_cart_konami_sound_sdsnatcher : public msx_cart_konami_sound
+class msx_cart_konami_sound_sdsnatcher_device : public msx_cart_konami_sound_device
{
public:
- msx_cart_konami_sound_sdsnatcher(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_konami_sound_sdsnatcher_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
};
-class msx_cart_keyboard_master : public device_t
- , public msx_cart_interface
+class msx_cart_keyboard_master_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_keyboard_master(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_keyboard_master_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_start() override;
virtual void initialize_cartridge() override;
@@ -189,10 +189,13 @@ public:
DECLARE_WRITE8_MEMBER(io_20_w);
DECLARE_READ8_MEMBER(io_00_r);
+protected:
+ virtual void device_start() override;
+
private:
required_device<vlm5030_device> m_vlm5030;
};
-#endif
+#endif // MAME_BUS_MSX_CART_KONAMI_H
diff --git a/src/devices/bus/msx_cart/korean.cpp b/src/devices/bus/msx_cart/korean.cpp
index 8ea5b5cfac3..cfa96ecb7aa 100644
--- a/src/devices/bus/msx_cart/korean.cpp
+++ b/src/devices/bus/msx_cart/korean.cpp
@@ -3,39 +3,36 @@
#include "emu.h"
#include "korean.h"
-const device_type MSX_CART_KOREAN_80IN1 = device_creator<msx_cart_korean_80in1>;
-const device_type MSX_CART_KOREAN_90IN1 = device_creator<msx_cart_korean_90in1>;
-const device_type MSX_CART_KOREAN_126IN1 = device_creator<msx_cart_korean_126in1>;
+DEFINE_DEVICE_TYPE(MSX_CART_KOREAN_80IN1, msx_cart_korean_80in1_device, "msx_cart_korean_80in1", "MSX Cartridge - Korean 80-in-1")
+DEFINE_DEVICE_TYPE(MSX_CART_KOREAN_90IN1, msx_cart_korean_90in1_device, "msx_cart_korean_90in1", "MSX Cartridge - Korean 90-in-1")
+DEFINE_DEVICE_TYPE(MSX_CART_KOREAN_126IN1, msx_cart_korean_126in1_device, "msx_cart_korean_126in1", "MSX Cartridge - Korean 126-in-1")
-msx_cart_korean_80in1::msx_cart_korean_80in1(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_KOREAN_80IN1, "MSX Cartridge - Korean 80-in-1", tag, owner, clock, "msx_cart_korean_80in1", __FILE__)
+msx_cart_korean_80in1_device::msx_cart_korean_80in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_KOREAN_80IN1, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bank_mask(0)
+ , m_selected_bank{ 0, 1, 2, 3 }
+ , m_bank_base{ nullptr, nullptr, nullptr, nullptr }
{
- for (int i = 0; i < 4; i++)
- {
- m_selected_bank[i] = i;
- m_bank_base[i] = nullptr;
- }
}
-void msx_cart_korean_80in1::device_start()
+void msx_cart_korean_80in1_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_korean_80in1::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_korean_80in1_device::restore_banks), this));
}
-void msx_cart_korean_80in1::setup_bank(uint8_t bank)
+void msx_cart_korean_80in1_device::setup_bank(uint8_t bank)
{
m_bank_base[bank] = get_rom_base() + ( m_selected_bank[bank] & m_bank_mask ) * 0x2000;
}
-void msx_cart_korean_80in1::restore_banks()
+void msx_cart_korean_80in1_device::restore_banks()
{
for (int i = 0; i < 4; i++)
{
@@ -44,7 +41,7 @@ void msx_cart_korean_80in1::restore_banks()
}
-void msx_cart_korean_80in1::device_reset()
+void msx_cart_korean_80in1_device::device_reset()
{
for (int i = 0; i < 4; i++)
{
@@ -53,7 +50,7 @@ void msx_cart_korean_80in1::device_reset()
}
-void msx_cart_korean_80in1::initialize_cartridge()
+void msx_cart_korean_80in1_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
@@ -75,7 +72,7 @@ void msx_cart_korean_80in1::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_korean_80in1::read_cart)
+READ8_MEMBER(msx_cart_korean_80in1_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -86,7 +83,7 @@ READ8_MEMBER(msx_cart_korean_80in1::read_cart)
}
-WRITE8_MEMBER(msx_cart_korean_80in1::write_cart)
+WRITE8_MEMBER(msx_cart_korean_80in1_device::write_cart)
{
if (offset >= 0x4000 && offset < 0x4004)
{
@@ -101,32 +98,29 @@ WRITE8_MEMBER(msx_cart_korean_80in1::write_cart)
-msx_cart_korean_90in1::msx_cart_korean_90in1(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_KOREAN_90IN1, "MSX Cartridge - Korean 90-in-1", tag, owner, clock, "msx_cart_korean_90in1", __FILE__)
+msx_cart_korean_90in1_device::msx_cart_korean_90in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_KOREAN_90IN1, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bank_mask(0)
, m_selected_bank(0)
+ , m_bank_base{ nullptr, nullptr, nullptr, nullptr }
{
- for (auto & elem : m_bank_base)
- {
- elem = nullptr;
- }
}
-void msx_cart_korean_90in1::device_start()
+void msx_cart_korean_90in1_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_korean_90in1::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_korean_90in1_device::restore_banks), this));
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
- space.install_write_handler(0x77, 0x77, write8_delegate(FUNC(msx_cart_korean_90in1::banking), this));
+ space.install_write_handler(0x77, 0x77, write8_delegate(FUNC(msx_cart_korean_90in1_device::banking), this));
}
-void msx_cart_korean_90in1::restore_banks()
+void msx_cart_korean_90in1_device::restore_banks()
{
uint8_t *base = get_rom_base();
@@ -159,13 +153,13 @@ void msx_cart_korean_90in1::restore_banks()
}
-void msx_cart_korean_90in1::device_reset()
+void msx_cart_korean_90in1_device::device_reset()
{
m_selected_bank = 0;
}
-void msx_cart_korean_90in1::initialize_cartridge()
+void msx_cart_korean_90in1_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
@@ -187,7 +181,7 @@ void msx_cart_korean_90in1::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_korean_90in1::read_cart)
+READ8_MEMBER(msx_cart_korean_90in1_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -198,7 +192,7 @@ READ8_MEMBER(msx_cart_korean_90in1::read_cart)
}
-WRITE8_MEMBER(msx_cart_korean_90in1::banking)
+WRITE8_MEMBER(msx_cart_korean_90in1_device::banking)
{
m_selected_bank = data;
restore_banks();
@@ -208,34 +202,31 @@ WRITE8_MEMBER(msx_cart_korean_90in1::banking)
-msx_cart_korean_126in1::msx_cart_korean_126in1(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_KOREAN_126IN1, "MSX Cartridge - Korean 126-in-1", tag, owner, clock, "msx_cart_korean_126in1", __FILE__)
+msx_cart_korean_126in1_device::msx_cart_korean_126in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_KOREAN_126IN1, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_bank_mask(0)
+ , m_selected_bank{ 0, 1 }
+ , m_bank_base{ nullptr, nullptr }
{
- for (int i = 0; i < 2; i++)
- {
- m_selected_bank[i] = i;
- m_bank_base[i] = nullptr;
- }
}
-void msx_cart_korean_126in1::device_start()
+void msx_cart_korean_126in1_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_korean_126in1::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_korean_126in1_device::restore_banks), this));
}
-void msx_cart_korean_126in1::setup_bank(uint8_t bank)
+void msx_cart_korean_126in1_device::setup_bank(uint8_t bank)
{
m_bank_base[bank] = get_rom_base() + ( m_selected_bank[bank] & m_bank_mask ) * 0x4000;
}
-void msx_cart_korean_126in1::restore_banks()
+void msx_cart_korean_126in1_device::restore_banks()
{
for (int i = 0; i < 2; i++)
{
@@ -244,7 +235,7 @@ void msx_cart_korean_126in1::restore_banks()
}
-void msx_cart_korean_126in1::device_reset()
+void msx_cart_korean_126in1_device::device_reset()
{
for (int i = 0; i < 2; i++)
{
@@ -253,7 +244,7 @@ void msx_cart_korean_126in1::device_reset()
}
-void msx_cart_korean_126in1::initialize_cartridge()
+void msx_cart_korean_126in1_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
@@ -275,7 +266,7 @@ void msx_cart_korean_126in1::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_korean_126in1::read_cart)
+READ8_MEMBER(msx_cart_korean_126in1_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -286,7 +277,7 @@ READ8_MEMBER(msx_cart_korean_126in1::read_cart)
}
-WRITE8_MEMBER(msx_cart_korean_126in1::write_cart)
+WRITE8_MEMBER(msx_cart_korean_126in1_device::write_cart)
{
if (offset >= 0x4000 && offset < 0x4002)
{
diff --git a/src/devices/bus/msx_cart/korean.h b/src/devices/bus/msx_cart/korean.h
index 9dd19addf15..b34438da13e 100644
--- a/src/devices/bus/msx_cart/korean.h
+++ b/src/devices/bus/msx_cart/korean.h
@@ -1,51 +1,47 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_KOREAN_H
-#define __MSX_CART_KOREAN_H
+#ifndef MAME_BUS_MSX_CART_KOREAN_H
+#define MAME_BUS_MSX_CART_KOREAN_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_KOREAN_80IN1;
-extern const device_type MSX_CART_KOREAN_90IN1;
-extern const device_type MSX_CART_KOREAN_126IN1;
+DECLARE_DEVICE_TYPE(MSX_CART_KOREAN_80IN1, msx_cart_korean_80in1_device)
+DECLARE_DEVICE_TYPE(MSX_CART_KOREAN_90IN1, msx_cart_korean_90in1_device)
+DECLARE_DEVICE_TYPE(MSX_CART_KOREAN_126IN1, msx_cart_korean_126in1_device)
-class msx_cart_korean_80in1 : public device_t
- , public msx_cart_interface
+class msx_cart_korean_80in1_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_korean_80in1(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_korean_80in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
- void restore_banks();
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
+ void restore_banks();
+ void setup_bank(uint8_t bank);
+
uint8_t m_bank_mask;
uint8_t m_selected_bank[4];
uint8_t *m_bank_base[4];
-
- void setup_bank(uint8_t bank);
};
-class msx_cart_korean_90in1 : public device_t
- , public msx_cart_interface
+class msx_cart_korean_90in1_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_korean_90in1(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_korean_90in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
@@ -53,39 +49,43 @@ public:
DECLARE_WRITE8_MEMBER(banking);
- void restore_banks();
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
+ void restore_banks();
+
uint8_t m_bank_mask;
uint8_t m_selected_bank;
uint8_t *m_bank_base[4];
};
-class msx_cart_korean_126in1 : public device_t
- , public msx_cart_interface
+class msx_cart_korean_126in1_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_korean_126in1(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_korean_126in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
- void restore_banks();
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
+ void restore_banks();
+ void setup_bank(uint8_t bank);
+
uint8_t m_bank_mask;
uint8_t m_selected_bank[2];
uint8_t *m_bank_base[2];
-
- void setup_bank(uint8_t bank);
};
-#endif
+#endif // MAME_BUS_MSX_CART_KOREAN_H
diff --git a/src/devices/bus/msx_cart/majutsushi.cpp b/src/devices/bus/msx_cart/majutsushi.cpp
index 8617860431d..94ac0a41969 100644
--- a/src/devices/bus/msx_cart/majutsushi.cpp
+++ b/src/devices/bus/msx_cart/majutsushi.cpp
@@ -7,11 +7,11 @@
#include "speaker.h"
-const device_type MSX_CART_MAJUTSUSHI = device_creator<msx_cart_majutsushi>;
+DEFINE_DEVICE_TYPE(MSX_CART_MAJUTSUSHI, msx_cart_majutsushi_device, "msx_cart_majutsushi", "MSX Cartridge - Majutsushi")
-msx_cart_majutsushi::msx_cart_majutsushi(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_MAJUTSUSHI, "MSX Cartridge - Majutsushi", tag, owner, clock, "msx_cart_majutsushi", __FILE__)
+msx_cart_majutsushi_device::msx_cart_majutsushi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_MAJUTSUSHI, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_dac(*this, "dac")
{
@@ -35,21 +35,21 @@ static MACHINE_CONFIG_FRAGMENT( majutsushi )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_majutsushi::device_mconfig_additions() const
+machine_config_constructor msx_cart_majutsushi_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( majutsushi );
}
-void msx_cart_majutsushi::device_start()
+void msx_cart_majutsushi_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_majutsushi::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_majutsushi_device::restore_banks), this));
}
-void msx_cart_majutsushi::restore_banks()
+void msx_cart_majutsushi_device::restore_banks()
{
m_bank_base[0] = get_rom_base() + ( m_selected_bank[0] & 0x0f ) * 0x2000;
m_bank_base[1] = get_rom_base() + ( m_selected_bank[1] & 0x0f ) * 0x2000;
@@ -62,7 +62,7 @@ void msx_cart_majutsushi::restore_banks()
}
-void msx_cart_majutsushi::device_reset()
+void msx_cart_majutsushi_device::device_reset()
{
for (int i = 0; i < 4; i++)
{
@@ -71,7 +71,7 @@ void msx_cart_majutsushi::device_reset()
}
-void msx_cart_majutsushi::initialize_cartridge()
+void msx_cart_majutsushi_device::initialize_cartridge()
{
if ( get_rom_size() != 0x20000 )
{
@@ -82,13 +82,13 @@ void msx_cart_majutsushi::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_majutsushi::read_cart)
+READ8_MEMBER(msx_cart_majutsushi_device::read_cart)
{
return m_bank_base[offset >> 13][offset & 0x1fff];
}
-WRITE8_MEMBER(msx_cart_majutsushi::write_cart)
+WRITE8_MEMBER(msx_cart_majutsushi_device::write_cart)
{
switch (offset & 0xe000)
{
diff --git a/src/devices/bus/msx_cart/majutsushi.h b/src/devices/bus/msx_cart/majutsushi.h
index 94be25040c3..db45c111383 100644
--- a/src/devices/bus/msx_cart/majutsushi.h
+++ b/src/devices/bus/msx_cart/majutsushi.h
@@ -1,24 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_MAJUTSUSHI_H
-#define __MSX_CART_MAJUTSUSHI_H
+#ifndef MAME_BUS_MSX_CART_MAJUTSUSHI_H
+#define MAME_BUS_MSX_CART_MAJUTSUSHI_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
#include "sound/dac.h"
-extern const device_type MSX_CART_MAJUTSUSHI;
+DECLARE_DEVICE_TYPE(MSX_CART_MAJUTSUSHI, msx_cart_majutsushi_device)
-class msx_cart_majutsushi : public device_t
- , public msx_cart_interface
+class msx_cart_majutsushi_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_majutsushi(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_majutsushi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void initialize_cartridge() override;
@@ -26,6 +24,11 @@ public:
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -36,4 +39,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_MAJUTSUSHI_H
diff --git a/src/devices/bus/msx_cart/moonsound.cpp b/src/devices/bus/msx_cart/moonsound.cpp
index 95a212ebb67..ea98a467b77 100644
--- a/src/devices/bus/msx_cart/moonsound.cpp
+++ b/src/devices/bus/msx_cart/moonsound.cpp
@@ -15,21 +15,21 @@ TODO:
#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+#include "logmacro.h"
-const device_type MSX_CART_MOONSOUND = device_creator<msx_cart_moonsound>;
+DEFINE_DEVICE_TYPE(MSX_CART_MOONSOUND, msx_cart_moonsound_device, "msx_moonsound", "MSX Cartridge - MoonSound")
-msx_cart_moonsound::msx_cart_moonsound(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_MOONSOUND, "MSX Cartridge - MoonSound", tag, owner, clock, "msx_moonsound", __FILE__)
+msx_cart_moonsound_device::msx_cart_moonsound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_MOONSOUND, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_ymf278b(*this, "ymf278b")
{
}
-static ADDRESS_MAP_START( ymf278b_map, AS_0, 8, msx_cart_moonsound )
+static ADDRESS_MAP_START( ymf278b_map, AS_0, 8, msx_cart_moonsound_device )
AM_RANGE(0x000000, 0x1fffff) AM_ROM
AM_RANGE(0x200000, 0x3fffff) AM_RAM // 2MB sram for testing
ADDRESS_MAP_END
@@ -40,7 +40,7 @@ static MACHINE_CONFIG_FRAGMENT( moonsound )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("ymf278b", YMF278B, YMF278B_STD_CLOCK)
MCFG_DEVICE_ADDRESS_MAP(AS_0, ymf278b_map)
- MCFG_YMF278B_IRQ_HANDLER(WRITELINE(msx_cart_moonsound,irq_w))
+ MCFG_YMF278B_IRQ_HANDLER(WRITELINE(msx_cart_moonsound_device,irq_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
MCFG_SOUND_ROUTE(2, "lspeaker", 0.40)
@@ -50,7 +50,7 @@ static MACHINE_CONFIG_FRAGMENT( moonsound )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_moonsound::device_mconfig_additions() const
+machine_config_constructor msx_cart_moonsound_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( moonsound );
}
@@ -62,67 +62,67 @@ ROM_START( msx_cart_moonsound )
ROM_END
-const tiny_rom_entry *msx_cart_moonsound::device_rom_region() const
+const tiny_rom_entry *msx_cart_moonsound_device::device_rom_region() const
{
return ROM_NAME( msx_cart_moonsound );
}
-void msx_cart_moonsound::device_start()
+void msx_cart_moonsound_device::device_start()
{
m_out_irq_cb.resolve_safe();
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
- space.install_readwrite_handler(0x7e, 0x7f, read8_delegate(FUNC(msx_cart_moonsound::read_ymf278b_pcm), this), write8_delegate(FUNC(msx_cart_moonsound::write_ymf278b_pcm), this));
- space.install_readwrite_handler(0xc4, 0xc7, read8_delegate(FUNC(msx_cart_moonsound::read_ymf278b_fm), this), write8_delegate(FUNC(msx_cart_moonsound::write_ymf278b_fm), this));
- space.install_read_handler(0xc0, 0xc0, read8_delegate(FUNC(msx_cart_moonsound::read_c0), this));
+ space.install_readwrite_handler(0x7e, 0x7f, read8_delegate(FUNC(msx_cart_moonsound_device::read_ymf278b_pcm), this), write8_delegate(FUNC(msx_cart_moonsound_device::write_ymf278b_pcm), this));
+ space.install_readwrite_handler(0xc4, 0xc7, read8_delegate(FUNC(msx_cart_moonsound_device::read_ymf278b_fm), this), write8_delegate(FUNC(msx_cart_moonsound_device::write_ymf278b_fm), this));
+ space.install_read_handler(0xc0, 0xc0, read8_delegate(FUNC(msx_cart_moonsound_device::read_c0), this));
}
-void msx_cart_moonsound::device_reset()
+void msx_cart_moonsound_device::device_reset()
{
}
-WRITE_LINE_MEMBER(msx_cart_moonsound::irq_w)
+WRITE_LINE_MEMBER(msx_cart_moonsound_device::irq_w)
{
- LOG(("moonsound: irq state %d\n", state));
+ LOG("moonsound: irq state %d\n", state);
m_out_irq_cb(state);
}
-WRITE8_MEMBER(msx_cart_moonsound::write_ymf278b_fm)
+WRITE8_MEMBER(msx_cart_moonsound_device::write_ymf278b_fm)
{
- LOG(("moonsound: write 0x%02x, data 0x%02x\n", 0xc4 + offset, data));
+ LOG("moonsound: write 0x%02x, data 0x%02x\n", 0xc4 + offset, data);
m_ymf278b->write(space, offset, data);
}
-READ8_MEMBER(msx_cart_moonsound::read_ymf278b_fm)
+READ8_MEMBER(msx_cart_moonsound_device::read_ymf278b_fm)
{
- LOG(("moonsound: read 0x%02x\n", 0xc4 + offset));
+ LOG("moonsound: read 0x%02x\n", 0xc4 + offset);
return m_ymf278b->read(space, offset);
}
-WRITE8_MEMBER(msx_cart_moonsound::write_ymf278b_pcm)
+WRITE8_MEMBER(msx_cart_moonsound_device::write_ymf278b_pcm)
{
- LOG(("moonsound: write 0x%02x, data 0x%02x\n", 0x7e + offset, data));
+ LOG("moonsound: write 0x%02x, data 0x%02x\n", 0x7e + offset, data);
m_ymf278b->write(space, 4 + offset, data);
}
-READ8_MEMBER(msx_cart_moonsound::read_ymf278b_pcm)
+READ8_MEMBER(msx_cart_moonsound_device::read_ymf278b_pcm)
{
- LOG(("moonsound: read 0x%02x\n", 0x7e + offset));
+ LOG("moonsound: read 0x%02x\n", 0x7e + offset);
return m_ymf278b->read(space, 4 + offset);
}
// For detecting presence of moonsound cartridge
-READ8_MEMBER(msx_cart_moonsound::read_c0)
+READ8_MEMBER(msx_cart_moonsound_device::read_c0)
{
- LOG(("moonsound: read 0xc0\n"));
+ LOG("moonsound: read 0xc0\n");
return 0x00;
}
diff --git a/src/devices/bus/msx_cart/moonsound.h b/src/devices/bus/msx_cart/moonsound.h
index 94adfb6ee6a..1fee19bc133 100644
--- a/src/devices/bus/msx_cart/moonsound.h
+++ b/src/devices/bus/msx_cart/moonsound.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_MOONSOUND_H
-#define __MSX_CART_MOONSOUND_H
+#ifndef MAME_BUS_MSX_CART_MOONSOUND_H
+#define MAME_BUS_MSX_CART_MOONSOUND_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
#include "sound/ymf278b.h"
@@ -10,15 +12,11 @@
extern const device_type MSX_CART_MOONSOUND;
-class msx_cart_moonsound : public device_t
- , public msx_cart_interface
+class msx_cart_moonsound_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_moonsound(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_moonsound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -29,9 +27,14 @@ public:
DECLARE_READ8_MEMBER(read_c0);
DECLARE_WRITE_LINE_MEMBER(irq_w);
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
required_device<ymf278b_device> m_ymf278b;
};
-#endif
+#endif // MAME_BUS_MSX_CART_MOONSOUND_H
diff --git a/src/devices/bus/msx_cart/msx_audio.cpp b/src/devices/bus/msx_cart/msx_audio.cpp
index 19a48299e7c..7ed03d4255e 100644
--- a/src/devices/bus/msx_cart/msx_audio.cpp
+++ b/src/devices/bus/msx_cart/msx_audio.cpp
@@ -67,13 +67,13 @@ and/or http://ngs.no.coocan.jp/doc/wiki.cgi/datapack?page=4.2+MSX-AUDIO+%B3%C8%C
#include "speaker.h"
-const device_type MSX_CART_MSX_AUDIO_HXMU900 = device_creator<msx_cart_msx_audio_hxmu900>;
-const device_type MSX_CART_MSX_AUDIO_NMS1205 = device_creator<msx_cart_msx_audio_nms1205>;
-const device_type MSX_CART_MSX_AUDIO_FSCA1 = device_creator<msx_cart_msx_audio_fsca1>;
+DEFINE_DEVICE_TYPE(MSX_CART_MSX_AUDIO_HXMU900, msx_cart_msx_audio_hxmu900_device, "msx_audio_hxmu900", "MSX Cartridge - MSX-AUDIO HX-MU900")
+DEFINE_DEVICE_TYPE(MSX_CART_MSX_AUDIO_NMS1205, msx_cart_msx_audio_nms1205_device, "msx_audio_nms1205", "MSX Cartridge - MSX-AUDIO NMS-1205")
+DEFINE_DEVICE_TYPE(MSX_CART_MSX_AUDIO_FSCA1, msx_cart_msx_audio_fsca1_device, "msx_audio_fsca1", "MSX Cartridge - MSX-AUDIO FS-CA1")
-msx_cart_msx_audio_hxmu900::msx_cart_msx_audio_hxmu900(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_MSX_AUDIO_HXMU900, "MSX Cartridge - MSX-AUDIO HX-MU900", tag, owner, clock, "msx_audio_hxmu900", __FILE__)
+msx_cart_msx_audio_hxmu900_device::msx_cart_msx_audio_hxmu900_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_MSX_AUDIO_HXMU900, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_y8950(*this, "y8950")
{
@@ -92,13 +92,13 @@ static MACHINE_CONFIG_FRAGMENT( msx_audio_hxmu900 )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_msx_audio_hxmu900::device_mconfig_additions() const
+machine_config_constructor msx_cart_msx_audio_hxmu900_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( msx_audio_hxmu900 );
}
-void msx_cart_msx_audio_hxmu900::device_start()
+void msx_cart_msx_audio_hxmu900_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
@@ -107,7 +107,7 @@ void msx_cart_msx_audio_hxmu900::device_start()
}
-void msx_cart_msx_audio_hxmu900::initialize_cartridge()
+void msx_cart_msx_audio_hxmu900_device::initialize_cartridge()
{
if (get_rom_size() < 0x8000)
{
@@ -116,7 +116,7 @@ void msx_cart_msx_audio_hxmu900::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_msx_audio_hxmu900::read_cart)
+READ8_MEMBER(msx_cart_msx_audio_hxmu900_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xC000)
{
@@ -129,8 +129,8 @@ READ8_MEMBER(msx_cart_msx_audio_hxmu900::read_cart)
-msx_cart_msx_audio_nms1205::msx_cart_msx_audio_nms1205(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_MSX_AUDIO_NMS1205, "MSX Cartridge - MSX-AUDIO NMS-1205", tag, owner, clock, "msx_audio_nms1205", __FILE__)
+msx_cart_msx_audio_nms1205_device::msx_cart_msx_audio_nms1205_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_MSX_AUDIO_NMS1205, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_y8950(*this, "y8950")
, m_acia6850(*this, "acia6850")
@@ -148,7 +148,7 @@ static MACHINE_CONFIG_FRAGMENT( msx_audio_nms1205 )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
MCFG_Y8950_KEYBOARD_WRITE_HANDLER(DEVWRITE8("kbdc", msx_audio_kbdc_port_device, write))
MCFG_Y8950_KEYBOARD_READ_HANDLER(DEVREAD8("kbdc", msx_audio_kbdc_port_device, read))
- MCFG_Y8950_IRQ_HANDLER(WRITELINE(msx_cart_msx_audio_nms1205, irq_write))
+ MCFG_Y8950_IRQ_HANDLER(WRITELINE(msx_cart_msx_audio_nms1205_device, irq_write))
MCFG_MSX_AUDIO_KBDC_PORT_ADD("kbdc", msx_audio_keyboards, nullptr)
@@ -157,7 +157,7 @@ static MACHINE_CONFIG_FRAGMENT( msx_audio_nms1205 )
MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
- MCFG_MIDI_RX_HANDLER(WRITELINE(msx_cart_msx_audio_nms1205, midi_in))
+ MCFG_MIDI_RX_HANDLER(WRITELINE(msx_cart_msx_audio_nms1205_device, midi_in))
MCFG_MIDI_PORT_ADD("mdthru", midiout_slot, "midiout")
@@ -165,7 +165,7 @@ static MACHINE_CONFIG_FRAGMENT( msx_audio_nms1205 )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_msx_audio_nms1205::device_mconfig_additions() const
+machine_config_constructor msx_cart_msx_audio_nms1205_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( msx_audio_nms1205 );
}
@@ -176,13 +176,13 @@ ROM_START( msx_nms1205 )
ROM_END
-const tiny_rom_entry *msx_cart_msx_audio_nms1205::device_rom_region() const
+const tiny_rom_entry *msx_cart_msx_audio_nms1205_device::device_rom_region() const
{
return ROM_NAME( msx_nms1205 );
}
-WRITE_LINE_MEMBER(msx_cart_msx_audio_nms1205::irq_write)
+WRITE_LINE_MEMBER(msx_cart_msx_audio_nms1205_device::irq_write)
{
// Trigger IRQ on the maincpu
// The 8950 seems to trigger an irq on reset, this causes an infinite loop of continuously triggering
@@ -192,7 +192,7 @@ WRITE_LINE_MEMBER(msx_cart_msx_audio_nms1205::irq_write)
}
-WRITE_LINE_MEMBER(msx_cart_msx_audio_nms1205::midi_in)
+WRITE_LINE_MEMBER(msx_cart_msx_audio_nms1205_device::midi_in)
{
// MIDI in signals is sent to both the 6850 and the MIDI thru output port
m_acia6850->write_rxd(state);
@@ -200,7 +200,7 @@ WRITE_LINE_MEMBER(msx_cart_msx_audio_nms1205::midi_in)
}
-void msx_cart_msx_audio_nms1205::device_start()
+void msx_cart_msx_audio_nms1205_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
@@ -213,7 +213,7 @@ void msx_cart_msx_audio_nms1205::device_start()
}
-void msx_cart_msx_audio_nms1205::initialize_cartridge()
+void msx_cart_msx_audio_nms1205_device::initialize_cartridge()
{
if (get_rom_size() < 0x8000)
{
@@ -222,7 +222,7 @@ void msx_cart_msx_audio_nms1205::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_msx_audio_nms1205::read_cart)
+READ8_MEMBER(msx_cart_msx_audio_nms1205_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xC000)
{
@@ -237,8 +237,8 @@ READ8_MEMBER(msx_cart_msx_audio_nms1205::read_cart)
-msx_cart_msx_audio_fsca1::msx_cart_msx_audio_fsca1(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_MSX_AUDIO_FSCA1, "MSX Cartridge - MSX-AUDIO FS-CA1", tag, owner, clock, "msx_audio_fsca1", __FILE__)
+msx_cart_msx_audio_fsca1_device::msx_cart_msx_audio_fsca1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_MSX_AUDIO_FSCA1, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_y8950(*this, "y8950")
, m_io_config(*this, "CONFIG")
@@ -256,14 +256,14 @@ static MACHINE_CONFIG_FRAGMENT( msx_audio_fsca1 )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
MCFG_Y8950_KEYBOARD_WRITE_HANDLER(DEVWRITE8("kbdc", msx_audio_kbdc_port_device, write))
MCFG_Y8950_KEYBOARD_READ_HANDLER(DEVREAD8("kbdc", msx_audio_kbdc_port_device, read))
- MCFG_Y8950_IO_READ_HANDLER(READ8(msx_cart_msx_audio_fsca1, y8950_io_r))
- MCFG_Y8950_IO_WRITE_HANDLER(WRITE8(msx_cart_msx_audio_fsca1, y8950_io_w))
+ MCFG_Y8950_IO_READ_HANDLER(READ8(msx_cart_msx_audio_fsca1_device, y8950_io_r))
+ MCFG_Y8950_IO_WRITE_HANDLER(WRITE8(msx_cart_msx_audio_fsca1_device, y8950_io_w))
MCFG_MSX_AUDIO_KBDC_PORT_ADD("kbdc", msx_audio_keyboards, nullptr)
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_msx_audio_fsca1::device_mconfig_additions() const
+machine_config_constructor msx_cart_msx_audio_fsca1_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( msx_audio_fsca1 );
}
@@ -278,7 +278,7 @@ static INPUT_PORTS_START( msx_audio_fsca1 )
INPUT_PORTS_END
-ioport_constructor msx_cart_msx_audio_fsca1::device_input_ports() const
+ioport_constructor msx_cart_msx_audio_fsca1_device::device_input_ports() const
{
return INPUT_PORTS_NAME( msx_audio_fsca1 );
}
@@ -289,22 +289,22 @@ ROM_START( msx_fsca1 )
ROM_END
-const tiny_rom_entry *msx_cart_msx_audio_fsca1::device_rom_region() const
+const tiny_rom_entry *msx_cart_msx_audio_fsca1_device::device_rom_region() const
{
return ROM_NAME( msx_fsca1 );
}
-void msx_cart_msx_audio_fsca1::device_start()
+void msx_cart_msx_audio_fsca1_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
- space.install_write_handler(0xc0, 0xc3, write8_delegate(FUNC(msx_cart_msx_audio_fsca1::write_y8950), this));
- space.install_read_handler(0xc0, 0xc3, read8_delegate(FUNC(msx_cart_msx_audio_fsca1::read_y8950), this));
+ space.install_write_handler(0xc0, 0xc3, write8_delegate(FUNC(msx_cart_msx_audio_fsca1_device::write_y8950), this));
+ space.install_read_handler(0xc0, 0xc3, read8_delegate(FUNC(msx_cart_msx_audio_fsca1_device::read_y8950), this));
}
-void msx_cart_msx_audio_fsca1::initialize_cartridge()
+void msx_cart_msx_audio_fsca1_device::initialize_cartridge()
{
if (get_rom_size() < 0x20000)
{
@@ -313,7 +313,7 @@ void msx_cart_msx_audio_fsca1::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_msx_audio_fsca1::read_cart)
+READ8_MEMBER(msx_cart_msx_audio_fsca1_device::read_cart)
{
if (m_7ffe == 0 && (offset & 0xB000) == 0x3000)
{
@@ -323,7 +323,7 @@ READ8_MEMBER(msx_cart_msx_audio_fsca1::read_cart)
}
-WRITE8_MEMBER(msx_cart_msx_audio_fsca1::write_cart)
+WRITE8_MEMBER(msx_cart_msx_audio_fsca1_device::write_cart)
{
if (offset == 0x7ffe)
{
@@ -343,11 +343,11 @@ WRITE8_MEMBER(msx_cart_msx_audio_fsca1::write_cart)
return;
}
- logerror("msx_cart_msx_audio_fsca1: Unhandled write %02x to %04x\n", data, offset);
+ logerror("msx_cart_msx_audio_fsca1_device: Unhandled write %02x to %04x\n", data, offset);
}
-WRITE8_MEMBER(msx_cart_msx_audio_fsca1::write_y8950)
+WRITE8_MEMBER(msx_cart_msx_audio_fsca1_device::write_y8950)
{
if (offset & 2)
{
@@ -366,7 +366,7 @@ WRITE8_MEMBER(msx_cart_msx_audio_fsca1::write_y8950)
}
-READ8_MEMBER(msx_cart_msx_audio_fsca1::read_y8950)
+READ8_MEMBER(msx_cart_msx_audio_fsca1_device::read_y8950)
{
if (offset & 2)
{
@@ -379,13 +379,13 @@ READ8_MEMBER(msx_cart_msx_audio_fsca1::read_y8950)
}
-WRITE8_MEMBER(msx_cart_msx_audio_fsca1::y8950_io_w)
+WRITE8_MEMBER(msx_cart_msx_audio_fsca1_device::y8950_io_w)
{
logerror("msx_fsca1::y8950_io_w: %02x\n", data);
}
-READ8_MEMBER(msx_cart_msx_audio_fsca1::y8950_io_r)
+READ8_MEMBER(msx_cart_msx_audio_fsca1_device::y8950_io_r)
{
return m_io_config->read();
}
diff --git a/src/devices/bus/msx_cart/msx_audio.h b/src/devices/bus/msx_cart/msx_audio.h
index 9de471ce170..02093ce94f4 100644
--- a/src/devices/bus/msx_cart/msx_audio.h
+++ b/src/devices/bus/msx_cart/msx_audio.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_MSX_AUDIO_H
-#define __MSX_CART_MSX_AUDIO_H
+#ifndef MAME_BUS_MSX_CART_MSX_AUDIO_H
+#define MAME_BUS_MSX_CART_MSX_AUDIO_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
#include "sound/8950intf.h"
@@ -9,38 +11,37 @@
#include "bus/midi/midi.h"
-extern const device_type MSX_CART_MSX_AUDIO_NMS1205;
-extern const device_type MSX_CART_MSX_AUDIO_HXMU900;
-extern const device_type MSX_CART_MSX_AUDIO_FSCA1;
+DECLARE_DEVICE_TYPE(MSX_CART_MSX_AUDIO_HXMU900, msx_cart_msx_audio_hxmu900_device)
+DECLARE_DEVICE_TYPE(MSX_CART_MSX_AUDIO_NMS1205, msx_cart_msx_audio_nms1205_device)
+DECLARE_DEVICE_TYPE(MSX_CART_MSX_AUDIO_FSCA1, msx_cart_msx_audio_fsca1_device)
-class msx_cart_msx_audio_hxmu900 : public device_t
- , public msx_cart_interface
+class msx_cart_msx_audio_hxmu900_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_msx_audio_hxmu900(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_msx_audio_hxmu900_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
+protected:
+ virtual void device_start() override;
+
private:
required_device<y8950_device> m_y8950;
};
-class msx_cart_msx_audio_nms1205 : public device_t
- , public msx_cart_interface
+class msx_cart_msx_audio_nms1205_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_msx_audio_nms1205(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_msx_audio_nms1205_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -51,6 +52,9 @@ public:
DECLARE_WRITE_LINE_MEMBER(midi_in);
DECLARE_WRITE_LINE_MEMBER(irq_write);
+protected:
+ virtual void device_start() override;
+
private:
required_device<y8950_device> m_y8950;
required_device<acia6850_device> m_acia6850;
@@ -59,14 +63,12 @@ private:
};
-class msx_cart_msx_audio_fsca1 : public device_t
- , public msx_cart_interface
+class msx_cart_msx_audio_fsca1_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_msx_audio_fsca1(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_msx_audio_fsca1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -76,12 +78,15 @@ public:
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
- DECLARE_WRITE8_MEMBER(write_y8950);
- DECLARE_READ8_MEMBER(read_y8950);
-
DECLARE_WRITE8_MEMBER(y8950_io_w);
DECLARE_READ8_MEMBER(y8950_io_r);
+protected:
+ virtual void device_start() override;
+
+ DECLARE_WRITE8_MEMBER(write_y8950);
+ DECLARE_READ8_MEMBER(read_y8950);
+
private:
required_device<y8950_device> m_y8950;
required_ioport m_io_config;
@@ -90,4 +95,4 @@ private:
uint8_t m_7fff;
};
-#endif
+#endif // MAME_BUS_MSX_CART_MSX_AUDIO_H
diff --git a/src/devices/bus/msx_cart/msx_audio_kb.cpp b/src/devices/bus/msx_cart/msx_audio_kb.cpp
index e606e0ffae9..2bfa98758e9 100644
--- a/src/devices/bus/msx_cart/msx_audio_kb.cpp
+++ b/src/devices/bus/msx_cart/msx_audio_kb.cpp
@@ -4,13 +4,13 @@
#include "msx_audio_kb.h"
-const device_type MSX_AUDIO_KBDC_PORT = device_creator<msx_audio_kbdc_port_device>;
+DEFINE_DEVICE_TYPE(MSX_AUDIO_KBDC_PORT, msx_audio_kbdc_port_device, "msx_audio_kbdc_port", "MSX Audio keyboard connector port")
msx_audio_kbdc_port_device::msx_audio_kbdc_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_AUDIO_KBDC_PORT, "MSX Audio keyboard connector port", tag, owner, clock, "msx_audio_kbdc_port", __FILE__),
- device_slot_interface(mconfig, *this),
- m_keyboard(nullptr)
+ : device_t(mconfig, MSX_AUDIO_KBDC_PORT, tag, owner, clock)
+ , device_slot_interface(mconfig, *this)
+ , m_keyboard(nullptr)
{
}
@@ -40,16 +40,15 @@ READ8_MEMBER(msx_audio_kbdc_port_device::read)
}
-extern const device_type MSX_AUDIO_KB_HXMU901;
-extern const device_type MSX_AUDIO_KB_NMS1160;
+DECLARE_DEVICE_TYPE(MSX_AUDIO_KB_HXMU901, msx_hxmu901_device)
+DECLARE_DEVICE_TYPE(MSX_AUDIO_KB_NMS1160, msx_nms1160_device)
-class msx_hxmu901 : public device_t
- , public msx_audio_kb_port_interface
+class msx_hxmu901_device : public device_t, public msx_audio_kb_port_interface
{
public:
- msx_hxmu901(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_AUDIO_KB_HXMU901, "Toshiba HXMU901", tag, owner, clock, "hxmu901", __FILE__)
+ msx_hxmu901_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_AUDIO_KB_HXMU901, tag, owner, clock)
, msx_audio_kb_port_interface(mconfig, *this)
, m_row(0)
, m_keyboard(*this, "KEY.%u", 0)
@@ -169,22 +168,22 @@ static INPUT_PORTS_START( hxmu901)
INPUT_PORTS_END
-ioport_constructor msx_hxmu901::device_input_ports() const
+ioport_constructor msx_hxmu901_device::device_input_ports() const
{
return INPUT_PORTS_NAME( hxmu901 );
}
-class msx_nms1160 : public device_t
- , public msx_audio_kb_port_interface
+class msx_nms1160_device : public device_t, public msx_audio_kb_port_interface
{
public:
- msx_nms1160(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_AUDIO_KB_NMS1160, "Philips NMS-1160", tag, owner, clock, "nms1160", __FILE__)
+ msx_nms1160_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_AUDIO_KB_NMS1160, tag, owner, clock)
, msx_audio_kb_port_interface(mconfig, *this)
, m_row(0)
, m_keyboard(*this, "KEY.%u", 0)
- { }
+ {
+ }
virtual ioport_constructor device_input_ports() const override;
@@ -298,15 +297,15 @@ static INPUT_PORTS_START( nms1160 )
INPUT_PORTS_END
-ioport_constructor msx_nms1160::device_input_ports() const
+ioport_constructor msx_nms1160_device::device_input_ports() const
{
return INPUT_PORTS_NAME( nms1160 );
}
-const device_type MSX_AUDIO_KB_HXMU901 = device_creator<msx_hxmu901>;
-const device_type MSX_AUDIO_KB_NMS1160 = device_creator<msx_nms1160>;
+DEFINE_DEVICE_TYPE(MSX_AUDIO_KB_HXMU901, msx_hxmu901_device, "hxmu901", "Toshiba HXMU901")
+DEFINE_DEVICE_TYPE(MSX_AUDIO_KB_NMS1160, msx_nms1160_device, "nms1160", "Philips NMS-1160")
SLOT_INTERFACE_START( msx_audio_keyboards )
diff --git a/src/devices/bus/msx_cart/msx_audio_kb.h b/src/devices/bus/msx_cart/msx_audio_kb.h
index 8759b9200e8..139d78f486b 100644
--- a/src/devices/bus/msx_cart/msx_audio_kb.h
+++ b/src/devices/bus/msx_cart/msx_audio_kb.h
@@ -1,10 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_AUDIO_KB_H__
-#define __MSX_AUDIO_KB_H__
+#ifndef MAME_BUS_MSX_CART_MSX_AUDIO_KB_H
+#define MAME_BUS_MSX_CART_MSX_AUDIO_KB_H
+#pragma once
-extern const device_type MSX_AUDIO_KBDC_PORT;
+
+DECLARE_DEVICE_TYPE(MSX_AUDIO_KBDC_PORT, msx_audio_kbdc_port_device)
#define MCFG_MSX_AUDIO_KBDC_PORT_ADD(_tag, _slot_intf, _def_slot) \
@@ -15,18 +17,17 @@ extern const device_type MSX_AUDIO_KBDC_PORT;
class msx_audio_kb_port_interface : public device_slot_card_interface
{
public:
- // construction/destruction
- msx_audio_kb_port_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device)
- { };
- virtual DECLARE_READ8_MEMBER(read) { return 0xff; };
- virtual DECLARE_WRITE8_MEMBER(write) { };
+ virtual DECLARE_READ8_MEMBER(read) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER(write) { }
+
+protected:
+ // construction/destruction
+ using device_slot_card_interface::device_slot_card_interface;
};
-class msx_audio_kbdc_port_device : public device_t,
- public device_slot_interface
+class msx_audio_kbdc_port_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
@@ -39,6 +40,8 @@ public:
DECLARE_WRITE8_MEMBER(write);
DECLARE_READ8_MEMBER(read);
+
+protected:
msx_audio_kb_port_interface *m_keyboard;
};
@@ -46,4 +49,4 @@ public:
SLOT_INTERFACE_EXTERN( msx_audio_keyboards );
-#endif
+#endif // MAME_BUS_MSX_CART_MSX_AUDIO_KB_H
diff --git a/src/devices/bus/msx_cart/msxdos2.cpp b/src/devices/bus/msx_cart/msxdos2.cpp
index 3fac4457d63..f4e391f66e9 100644
--- a/src/devices/bus/msx_cart/msxdos2.cpp
+++ b/src/devices/bus/msx_cart/msxdos2.cpp
@@ -3,11 +3,11 @@
#include "emu.h"
#include "msxdos2.h"
-const device_type MSX_CART_MSXDOS2 = device_creator<msx_cart_msxdos2>;
+DEFINE_DEVICE_TYPE(MSX_CART_MSXDOS2, msx_cart_msxdos2_device, "msx_cart_msxdos2", "MSX Cartridge - MSXDOS2")
-msx_cart_msxdos2::msx_cart_msxdos2(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_MSXDOS2, "MSX Cartridge - MSXDOS2", tag, owner, clock, "msx_cart_msxdos2", __FILE__)
+msx_cart_msxdos2_device::msx_cart_msxdos2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_MSXDOS2, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_selected_bank(0)
, m_bank_base(nullptr)
@@ -15,27 +15,27 @@ msx_cart_msxdos2::msx_cart_msxdos2(const machine_config &mconfig, const char *ta
}
-void msx_cart_msxdos2::device_start()
+void msx_cart_msxdos2_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_msxdos2::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_msxdos2_device::restore_banks), this));
}
-void msx_cart_msxdos2::restore_banks()
+void msx_cart_msxdos2_device::restore_banks()
{
m_bank_base = get_rom_base() + ( m_selected_bank & 0x03 ) * 0x4000;
}
-void msx_cart_msxdos2::device_reset()
+void msx_cart_msxdos2_device::device_reset()
{
m_selected_bank = 0;
}
-void msx_cart_msxdos2::initialize_cartridge()
+void msx_cart_msxdos2_device::initialize_cartridge()
{
if (get_rom_size() != 0x10000)
{
@@ -46,7 +46,7 @@ void msx_cart_msxdos2::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_msxdos2::read_cart)
+READ8_MEMBER(msx_cart_msxdos2_device::read_cart)
{
if (offset >= 0x4000 && offset < 0x8000)
{
@@ -57,7 +57,7 @@ READ8_MEMBER(msx_cart_msxdos2::read_cart)
}
-WRITE8_MEMBER(msx_cart_msxdos2::write_cart)
+WRITE8_MEMBER(msx_cart_msxdos2_device::write_cart)
{
if (offset == 0x6000)
{
diff --git a/src/devices/bus/msx_cart/msxdos2.h b/src/devices/bus/msx_cart/msxdos2.h
index 11f2026925b..b30fbb70bd8 100644
--- a/src/devices/bus/msx_cart/msxdos2.h
+++ b/src/devices/bus/msx_cart/msxdos2.h
@@ -1,29 +1,31 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_MSXDOS2_H
-#define __MSX_CART_MSXDOS2_H
+#ifndef MAME_BUS_MSX_CART_MSXDOS2_H
+#define MAME_BUS_MSX_CART_MSXDOS2_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_MSXDOS2;
+DECLARE_DEVICE_TYPE(MSX_CART_MSXDOS2, msx_cart_msxdos2_device)
-class msx_cart_msxdos2 : public device_t
- , public msx_cart_interface
+class msx_cart_msxdos2_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_msxdos2(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_msxdos2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -32,4 +34,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_MSXDOS2_H
diff --git a/src/devices/bus/msx_cart/nomapper.cpp b/src/devices/bus/msx_cart/nomapper.cpp
index 32c49517fa9..5152464cbc4 100644
--- a/src/devices/bus/msx_cart/nomapper.cpp
+++ b/src/devices/bus/msx_cart/nomapper.cpp
@@ -4,22 +4,22 @@
#include "emu.h"
#include "nomapper.h"
-const device_type MSX_CART_NOMAPPER = device_creator<msx_cart_nomapper>;
+DEFINE_DEVICE_TYPE(MSX_CART_NOMAPPER, msx_cart_nomapper_device, "msx_cart_nomapper", "MSX Cartridge - ROM")
-msx_cart_nomapper::msx_cart_nomapper(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_NOMAPPER, "MSX Cartridge - ROM", tag, owner, clock, "msx_cart_nomapper", __FILE__)
+msx_cart_nomapper_device::msx_cart_nomapper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_NOMAPPER, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_start_address(0)
, m_end_address(0)
{
}
-void msx_cart_nomapper::device_start()
+void msx_cart_nomapper_device::device_start()
{
}
-void msx_cart_nomapper::initialize_cartridge()
+void msx_cart_nomapper_device::initialize_cartridge()
{
uint32_t size = get_rom_size();
uint8_t *rom = get_rom_base();
@@ -84,7 +84,7 @@ void msx_cart_nomapper::initialize_cartridge()
m_end_address = std::min<uint32_t>(m_start_address + size, 0x10000);
}
-READ8_MEMBER(msx_cart_nomapper::read_cart)
+READ8_MEMBER(msx_cart_nomapper_device::read_cart)
{
if ( offset >= m_start_address && offset < m_end_address )
{
diff --git a/src/devices/bus/msx_cart/nomapper.h b/src/devices/bus/msx_cart/nomapper.h
index 9a47a2f6e30..7b29b6a69b3 100644
--- a/src/devices/bus/msx_cart/nomapper.h
+++ b/src/devices/bus/msx_cart/nomapper.h
@@ -1,19 +1,20 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_NOMAPPER_H
-#define __MSX_CART_NOMAPPER_H
+#ifndef MAME_BUS_MSX_CART_NOMAPPER_H
+#define MAME_BUS_MSX_CART_NOMAPPER_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_NOMAPPER;
+DECLARE_DEVICE_TYPE(MSX_CART_NOMAPPER, msx_cart_nomapper_device)
-class msx_cart_nomapper : public device_t
- , public msx_cart_interface
+class msx_cart_nomapper_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_nomapper(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_nomapper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -27,4 +28,4 @@ private:
uint32_t m_end_address;
};
-#endif
+#endif // MAME_BUS_MSX_CART_NOMAPPER_H
diff --git a/src/devices/bus/msx_cart/rtype.cpp b/src/devices/bus/msx_cart/rtype.cpp
index d6c432a7dd4..3853cfeed9a 100644
--- a/src/devices/bus/msx_cart/rtype.cpp
+++ b/src/devices/bus/msx_cart/rtype.cpp
@@ -3,11 +3,11 @@
#include "emu.h"
#include "rtype.h"
-const device_type MSX_CART_RTYPE = device_creator<msx_cart_rtype>;
+DEFINE_DEVICE_TYPE(MSX_CART_RTYPE, msx_cart_rtype_device, "msx_cart_rtype", "MSX Cartridge - R-Type")
-msx_cart_rtype::msx_cart_rtype(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_RTYPE, "MSX Cartridge - R-Type", tag, owner, clock, "msx_cart_rtype", __FILE__)
+msx_cart_rtype_device::msx_cart_rtype_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_RTYPE, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_selected_bank(0)
{
@@ -18,15 +18,15 @@ msx_cart_rtype::msx_cart_rtype(const machine_config &mconfig, const char *tag, d
}
-void msx_cart_rtype::device_start()
+void msx_cart_rtype_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_rtype::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_rtype_device::restore_banks), this));
}
-void msx_cart_rtype::restore_banks()
+void msx_cart_rtype_device::restore_banks()
{
m_bank_base[0] = get_rom_base() + 15 * 0x4000;
if (m_selected_bank & 0x10)
@@ -37,13 +37,13 @@ void msx_cart_rtype::restore_banks()
}
-void msx_cart_rtype::device_reset()
+void msx_cart_rtype_device::device_reset()
{
m_selected_bank = 15;
}
-void msx_cart_rtype::initialize_cartridge()
+void msx_cart_rtype_device::initialize_cartridge()
{
if ( get_rom_size() != 0x80000 && get_rom_size() != 0x60000 )
{
@@ -54,7 +54,7 @@ void msx_cart_rtype::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_rtype::read_cart)
+READ8_MEMBER(msx_cart_rtype_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -64,7 +64,7 @@ READ8_MEMBER(msx_cart_rtype::read_cart)
}
-WRITE8_MEMBER(msx_cart_rtype::write_cart)
+WRITE8_MEMBER(msx_cart_rtype_device::write_cart)
{
if (offset >= 0x7000 && offset < 0x8000)
{
diff --git a/src/devices/bus/msx_cart/rtype.h b/src/devices/bus/msx_cart/rtype.h
index c89570f4cac..435d8666273 100644
--- a/src/devices/bus/msx_cart/rtype.h
+++ b/src/devices/bus/msx_cart/rtype.h
@@ -1,29 +1,31 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_RTYPE_H
-#define __MSX_CART_RTYPE_H
+#ifndef MAME_BUS_MSX_CART_RTYPE_H
+#define MAME_BUS_MSX_CART_RTYPE_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_RTYPE;
+DECLARE_DEVICE_TYPE(MSX_CART_RTYPE, msx_cart_rtype_device)
-class msx_cart_rtype : public device_t
- , public msx_cart_interface
+class msx_cart_rtype_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_rtype(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_rtype_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -32,4 +34,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_RTYPE_H
diff --git a/src/devices/bus/msx_cart/super_swangi.cpp b/src/devices/bus/msx_cart/super_swangi.cpp
index 8983b57e429..75ee75be6a0 100644
--- a/src/devices/bus/msx_cart/super_swangi.cpp
+++ b/src/devices/bus/msx_cart/super_swangi.cpp
@@ -4,11 +4,11 @@
#include "super_swangi.h"
-const device_type MSX_CART_SUPER_SWANGI = device_creator<msx_cart_super_swangi>;
+DEFINE_DEVICE_TYPE(MSX_CART_SUPER_SWANGI, msx_cart_super_swangi_device, "msx_cart_super_swangi", "MSX Cartridge - Super Swangi")
-msx_cart_super_swangi::msx_cart_super_swangi(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_SUPER_SWANGI, "MSX Cartridge - Super Swangi", tag, owner, clock, "msx_cart_super_swangi", __FILE__)
+msx_cart_super_swangi_device::msx_cart_super_swangi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_SUPER_SWANGI, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_selected_bank(0)
{
@@ -16,28 +16,28 @@ msx_cart_super_swangi::msx_cart_super_swangi(const machine_config &mconfig, cons
}
-void msx_cart_super_swangi::device_start()
+void msx_cart_super_swangi_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_super_swangi::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_super_swangi_device::restore_banks), this));
}
-void msx_cart_super_swangi::restore_banks()
+void msx_cart_super_swangi_device::restore_banks()
{
m_bank_base[0] = get_rom_base();
m_bank_base[1] = get_rom_base() + (((m_selected_bank >> 1) * 0x4000) & 0xffff);
}
-void msx_cart_super_swangi::device_reset()
+void msx_cart_super_swangi_device::device_reset()
{
m_selected_bank = 0;
}
-void msx_cart_super_swangi::initialize_cartridge()
+void msx_cart_super_swangi_device::initialize_cartridge()
{
if (get_rom_size() < 0x10000)
{
@@ -48,7 +48,7 @@ void msx_cart_super_swangi::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_super_swangi::read_cart)
+READ8_MEMBER(msx_cart_super_swangi_device::read_cart)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -58,7 +58,7 @@ READ8_MEMBER(msx_cart_super_swangi::read_cart)
}
-WRITE8_MEMBER(msx_cart_super_swangi::write_cart)
+WRITE8_MEMBER(msx_cart_super_swangi_device::write_cart)
{
if (offset == 0x8000)
{
@@ -67,6 +67,6 @@ WRITE8_MEMBER(msx_cart_super_swangi::write_cart)
}
else
{
- logerror("msx_cart_super_swangi: unhandled write %02x to %04x\n", data, offset);
+ logerror("msx_cart_super_swangi_device: unhandled write %02x to %04x\n", data, offset);
}
}
diff --git a/src/devices/bus/msx_cart/super_swangi.h b/src/devices/bus/msx_cart/super_swangi.h
index 09619437379..cf3b9f3b7c9 100644
--- a/src/devices/bus/msx_cart/super_swangi.h
+++ b/src/devices/bus/msx_cart/super_swangi.h
@@ -1,29 +1,31 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_SUPER_SWANGI_H
-#define __MSX_CART_SUPER_SWANGI_H
+#ifndef MAME_BUS_MSX_CART_SUPER_SWANGI_H
+#define MAME_BUS_MSX_CART_SUPER_SWANGI_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_SUPER_SWANGI;
+DECLARE_DEVICE_TYPE(MSX_CART_SUPER_SWANGI, msx_cart_super_swangi_device)
-class msx_cart_super_swangi : public device_t
- , public msx_cart_interface
+class msx_cart_super_swangi_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_super_swangi(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ msx_cart_super_swangi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void restore_banks();
private:
@@ -32,4 +34,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_SUPER_SWANGI_H
diff --git a/src/devices/bus/msx_cart/superloderunner.cpp b/src/devices/bus/msx_cart/superloderunner.cpp
index 64fd457377a..51289c24f10 100644
--- a/src/devices/bus/msx_cart/superloderunner.cpp
+++ b/src/devices/bus/msx_cart/superloderunner.cpp
@@ -3,11 +3,11 @@
#include "emu.h"
#include "superloderunner.h"
-const device_type MSX_CART_SUPERLODERUNNER = device_creator<msx_cart_superloderunner>;
+DEFINE_DEVICE_TYPE(MSX_CART_SUPERLODERUNNER, msx_cart_superloderunner_device, "msx_cart_superloderunner", "MSX Cartridge - Super Lode Runner")
-msx_cart_superloderunner::msx_cart_superloderunner(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_CART_SUPERLODERUNNER, "MSX Cartridge - Super Lode Runner", tag, owner, clock, "msx_cart_superloderunner", __FILE__)
+msx_cart_superloderunner_device::msx_cart_superloderunner_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSX_CART_SUPERLODERUNNER, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_selected_bank(0)
, m_bank_base(nullptr)
@@ -15,25 +15,25 @@ msx_cart_superloderunner::msx_cart_superloderunner(const machine_config &mconfig
}
-void msx_cart_superloderunner::device_start()
+void msx_cart_superloderunner_device::device_start()
{
save_item(NAME(m_selected_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_superloderunner::restore_banks), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_superloderunner_device::restore_banks), this));
// Install evil memory write handler
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_PROGRAM);
- space.install_write_handler(0x0000, 0x0000, write8_delegate(FUNC(msx_cart_superloderunner::banking), this));
+ space.install_write_handler(0x0000, 0x0000, write8_delegate(FUNC(msx_cart_superloderunner_device::banking), this));
}
-void msx_cart_superloderunner::restore_banks()
+void msx_cart_superloderunner_device::restore_banks()
{
m_bank_base = get_rom_base() + (m_selected_bank & 0x0f) * 0x4000;
}
-void msx_cart_superloderunner::initialize_cartridge()
+void msx_cart_superloderunner_device::initialize_cartridge()
{
if (get_rom_size() != 0x20000)
{
@@ -44,7 +44,7 @@ void msx_cart_superloderunner::initialize_cartridge()
}
-READ8_MEMBER(msx_cart_superloderunner::read_cart)
+READ8_MEMBER(msx_cart_superloderunner_device::read_cart)
{
if (offset >= 0x8000 && offset < 0xc000)
{
@@ -55,7 +55,7 @@ READ8_MEMBER(msx_cart_superloderunner::read_cart)
}
-WRITE8_MEMBER(msx_cart_superloderunner::banking)
+WRITE8_MEMBER(msx_cart_superloderunner_device::banking)
{
m_selected_bank = data;
restore_banks();
diff --git a/src/devices/bus/msx_cart/superloderunner.h b/src/devices/bus/msx_cart/superloderunner.h
index 9ca4e49bcd8..b8e73535ebf 100644
--- a/src/devices/bus/msx_cart/superloderunner.h
+++ b/src/devices/bus/msx_cart/superloderunner.h
@@ -1,22 +1,20 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_SUPERLODERUNNER_H
-#define __MSX_CART_SUPERLODERUNNER_H
+#ifndef MAME_BUS_MSX_CART_SUPERLODERUNNER_H
+#define MAME_BUS_MSX_CART_SUPERLODERUNNER_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
-extern const device_type MSX_CART_SUPERLODERUNNER;
+DECLARE_DEVICE_TYPE(MSX_CART_SUPERLODERUNNER, msx_cart_superloderunner_device)
-class msx_cart_superloderunner : public device_t
- , public msx_cart_interface
+class msx_cart_superloderunner_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_superloderunner(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
+ msx_cart_superloderunner_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void initialize_cartridge() override;
@@ -24,6 +22,10 @@ public:
DECLARE_WRITE8_MEMBER(banking);
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
void restore_banks();
private:
@@ -32,4 +34,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_CART_SUPERLODERUNNER_H
diff --git a/src/devices/bus/msx_cart/yamaha.cpp b/src/devices/bus/msx_cart/yamaha.cpp
index dff91b2ce54..e8b816f99f0 100644
--- a/src/devices/bus/msx_cart/yamaha.cpp
+++ b/src/devices/bus/msx_cart/yamaha.cpp
@@ -16,12 +16,12 @@ TODO:
#include "speaker.h"
-const device_type MSX_CART_SFG01 = device_creator<msx_cart_sfg01>;
-const device_type MSX_CART_SFG05 = device_creator<msx_cart_sfg05>;
+DEFINE_DEVICE_TYPE(MSX_CART_SFG01, msx_cart_sfg01_device, "msx_cart_sfg01", "MSX Cartridge - SFG01")
+DEFINE_DEVICE_TYPE(MSX_CART_SFG05, msx_cart_sfg05_device, "msx_cart_sfg05", "MSX Cartridge - SFG05")
-msx_cart_sfg::msx_cart_sfg(const machine_config &mconfig, const device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+msx_cart_sfg_device::msx_cart_sfg_device(const machine_config &mconfig, const device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, msx_cart_interface(mconfig, *this)
, m_region_sfg(*this, "sfg")
, m_ym2151(*this, "ym2151")
@@ -34,14 +34,14 @@ msx_cart_sfg::msx_cart_sfg(const machine_config &mconfig, const device_type type
}
-msx_cart_sfg01::msx_cart_sfg01(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_cart_sfg(mconfig, MSX_CART_SFG01, "MSX Cartridge - SFG01", tag, owner, clock, "msx_cart_sfg01")
+msx_cart_sfg01_device::msx_cart_sfg01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_sfg_device(mconfig, MSX_CART_SFG01, tag, owner, clock)
{
}
-msx_cart_sfg05::msx_cart_sfg05(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_cart_sfg(mconfig, MSX_CART_SFG05, "MSX Cartridge - SFG05", tag, owner, clock, "msx_cart_sfg05")
+msx_cart_sfg05_device::msx_cart_sfg05_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : msx_cart_sfg_device(mconfig, MSX_CART_SFG05, tag, owner, clock)
{
}
@@ -53,7 +53,7 @@ static MACHINE_CONFIG_FRAGMENT( msx_sfg )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz) // The SFG01 uses a YM2151, the SFG05 uses a YM2164, input clock comes from the main cpu frequency
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(msx_cart_sfg, ym2151_irq_w))
+ MCFG_YM2151_IRQ_HANDLER(WRITELINE(msx_cart_sfg_device, ym2151_irq_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
@@ -61,7 +61,7 @@ static MACHINE_CONFIG_FRAGMENT( msx_sfg )
MCFG_YM2148_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
MCFG_YM2148_PORT_WRITE_HANDLER(DEVWRITE8("kbdc", msx_audio_kbdc_port_device, write))
MCFG_YM2148_PORT_READ_HANDLER(DEVREAD8("kbdc", msx_audio_kbdc_port_device, read))
- MCFG_YM2148_IRQ_HANDLER(WRITELINE(msx_cart_sfg,ym2148_irq_w))
+ MCFG_YM2148_IRQ_HANDLER(WRITELINE(msx_cart_sfg_device,ym2148_irq_w))
MCFG_MSX_AUDIO_KBDC_PORT_ADD("kbdc", msx_audio_keyboards, nullptr)
@@ -72,7 +72,7 @@ static MACHINE_CONFIG_FRAGMENT( msx_sfg )
MACHINE_CONFIG_END
-machine_config_constructor msx_cart_sfg::device_mconfig_additions() const
+machine_config_constructor msx_cart_sfg_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( msx_sfg );
}
@@ -84,7 +84,7 @@ ROM_START( msx_sfg01 )
ROM_END
-const tiny_rom_entry *msx_cart_sfg01::device_rom_region() const
+const tiny_rom_entry *msx_cart_sfg01_device::device_rom_region() const
{
return ROM_NAME( msx_sfg01 );
}
@@ -96,44 +96,44 @@ ROM_START( msx_sfg05 )
ROM_END
-const tiny_rom_entry *msx_cart_sfg05::device_rom_region() const
+const tiny_rom_entry *msx_cart_sfg05_device::device_rom_region() const
{
return ROM_NAME( msx_sfg05 );
}
-void msx_cart_sfg::device_start()
+void msx_cart_sfg_device::device_start()
{
// Set rom mask
m_rom_mask = m_region_sfg->bytes() - 1;
// This should probably moved up in the bus/slot hierarchy for the msx driver
cpu_device *maincpu = machine().device<cpu_device>("maincpu");
- device_execute_interface::static_set_irq_acknowledge_callback(*maincpu, device_irq_acknowledge_delegate(FUNC(msx_cart_sfg::irq_callback),this));
+ device_execute_interface::static_set_irq_acknowledge_callback(*maincpu, device_irq_acknowledge_delegate(FUNC(msx_cart_sfg_device::irq_callback),this));
}
-IRQ_CALLBACK_MEMBER(msx_cart_sfg::irq_callback)
+IRQ_CALLBACK_MEMBER(msx_cart_sfg_device::irq_callback)
{
return m_ym2148->get_irq_vector();
}
-WRITE_LINE_MEMBER(msx_cart_sfg::ym2151_irq_w)
+WRITE_LINE_MEMBER(msx_cart_sfg_device::ym2151_irq_w)
{
m_ym2151_irq_state = state ? ASSERT_LINE : CLEAR_LINE;
check_irq();
}
-WRITE_LINE_MEMBER(msx_cart_sfg::ym2148_irq_w)
+WRITE_LINE_MEMBER(msx_cart_sfg_device::ym2148_irq_w)
{
m_ym2148_irq_state = state ? ASSERT_LINE : CLEAR_LINE;
check_irq();
}
-void msx_cart_sfg::check_irq()
+void msx_cart_sfg_device::check_irq()
{
if (m_ym2151_irq_state != CLEAR_LINE || m_ym2148_irq_state != CLEAR_LINE)
{
@@ -146,7 +146,7 @@ void msx_cart_sfg::check_irq()
}
-READ8_MEMBER(msx_cart_sfg::read_cart)
+READ8_MEMBER(msx_cart_sfg_device::read_cart)
{
switch (offset & 0x3fff)
{
@@ -173,7 +173,7 @@ READ8_MEMBER(msx_cart_sfg::read_cart)
}
-WRITE8_MEMBER(msx_cart_sfg::write_cart)
+WRITE8_MEMBER(msx_cart_sfg_device::write_cart)
{
switch (offset & 0x3fff)
{
@@ -201,7 +201,7 @@ WRITE8_MEMBER(msx_cart_sfg::write_cart)
break;
default:
- logerror("msx_cart_sfg::write_cart: write %02x to %04x\n", data, offset);
+ logerror("msx_cart_sfg_device::write_cart: write %02x to %04x\n", data, offset);
break;
}
}
diff --git a/src/devices/bus/msx_cart/yamaha.h b/src/devices/bus/msx_cart/yamaha.h
index 60462dd7015..d437aa5424e 100644
--- a/src/devices/bus/msx_cart/yamaha.h
+++ b/src/devices/bus/msx_cart/yamaha.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_CART_YAMAHA_H
-#define __MSX_CART_YAMAHA_H
+#ifndef MAME_BUS_MSX_CART_YAMAHA_H
+#define MAME_BUS_MSX_CART_YAMAHA_H
+
+#pragma once
#include "bus/msx_cart/cartridge.h"
#include "sound/ym2151.h"
@@ -9,19 +11,15 @@
#include "machine/ym2148.h"
-extern const device_type MSX_CART_SFG01;
-extern const device_type MSX_CART_SFG05;
+DECLARE_DEVICE_TYPE(MSX_CART_SFG01, msx_cart_sfg01_device)
+DECLARE_DEVICE_TYPE(MSX_CART_SFG05, msx_cart_sfg05_device)
-class msx_cart_sfg : public device_t
- , public msx_cart_interface
+class msx_cart_sfg_device : public device_t, public msx_cart_interface
{
public:
- msx_cart_sfg(const machine_config &mconfig, const device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
-
// device-level overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
@@ -29,6 +27,11 @@ public:
DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w);
DECLARE_WRITE_LINE_MEMBER(ym2148_irq_w);
+protected:
+ msx_cart_sfg_device(const machine_config &mconfig, const device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+
IRQ_CALLBACK_MEMBER(irq_callback);
private:
@@ -44,21 +47,21 @@ private:
};
-class msx_cart_sfg01 : public msx_cart_sfg
+class msx_cart_sfg01_device : public msx_cart_sfg_device
{
public:
- msx_cart_sfg01(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_sfg01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual const tiny_rom_entry *device_rom_region() const override;
};
-class msx_cart_sfg05 : public msx_cart_sfg
+class msx_cart_sfg05_device : public msx_cart_sfg_device
{
public:
- msx_cart_sfg05(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ msx_cart_sfg05_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual const tiny_rom_entry *device_rom_region() const override;
};
-#endif
+#endif // MAME_BUS_MSX_CART_YAMAHA_H
diff --git a/src/devices/bus/msx_slot/bunsetsu.cpp b/src/devices/bus/msx_slot/bunsetsu.cpp
index 99da86b1a9a..a2f8a131a54 100644
--- a/src/devices/bus/msx_slot/bunsetsu.cpp
+++ b/src/devices/bus/msx_slot/bunsetsu.cpp
@@ -8,11 +8,11 @@
#include "bunsetsu.h"
-const device_type MSX_SLOT_BUNSETSU = device_creator<msx_slot_bunsetsu_device>;
+DEFINE_DEVICE_TYPE(MSX_SLOT_BUNSETSU, msx_slot_bunsetsu_device, "msx_slot_bunsetsu", "MSX Internal BUNSETSU")
msx_slot_bunsetsu_device::msx_slot_bunsetsu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_slot_rom_device(mconfig, MSX_SLOT_BUNSETSU, "MSX Internal BUNSETSU", tag, owner, clock, "msx_slot_bunsetsu", __FILE__)
+ : msx_slot_rom_device(mconfig, MSX_SLOT_BUNSETSU, tag, owner, clock)
, m_bunsetsu_region(*this, finder_base::DUMMY_TAG, 0x20000)
, m_bunsetsu_address(0)
{
diff --git a/src/devices/bus/msx_slot/bunsetsu.h b/src/devices/bus/msx_slot/bunsetsu.h
index eff00928a83..0e340d98ae1 100644
--- a/src/devices/bus/msx_slot/bunsetsu.h
+++ b/src/devices/bus/msx_slot/bunsetsu.h
@@ -1,19 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_SLOT_BUNSETSU_H
-#define __MSX_SLOT_BUNSETSU_H
+#ifndef MAME_BUS_MSX_SLOT_BUNSETSU_H
+#define MAME_BUS_MSX_SLOT_BUNSETSU_H
+
+#pragma once
#include "bus/msx_slot/slot.h"
#include "bus/msx_slot/rom.h"
-extern const device_type MSX_SLOT_BUNSETSU;
+DECLARE_DEVICE_TYPE(MSX_SLOT_BUNSETSU, msx_slot_bunsetsu_device)
#define MCFG_MSX_SLOT_BUNSETSU_ADD(_tag, _startpage, _numpages, _region, _offset, _bunsetsu_region_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_BUNSETSU, _startpage, _numpages) \
msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \
msx_slot_bunsetsu_device::set_bunsetsu_region_tag(*device, "^" _bunsetsu_region_tag);
+
class msx_slot_bunsetsu_device : public msx_slot_rom_device
{
public:
@@ -22,15 +25,16 @@ public:
// static configuration helpers
static void set_bunsetsu_region_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_bunsetsu_device &>(device).m_bunsetsu_region.set_tag(tag); }
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
+protected:
+ virtual void device_reset() override;
+
private:
required_region_ptr<uint8_t> m_bunsetsu_region;
uint32_t m_bunsetsu_address;
};
-#endif
+#endif // MAME_BUS_MSX_SLOT_BUNSETSU_H
diff --git a/src/devices/bus/msx_slot/cartridge.cpp b/src/devices/bus/msx_slot/cartridge.cpp
index 0feefec646c..34650b5f246 100644
--- a/src/devices/bus/msx_slot/cartridge.cpp
+++ b/src/devices/bus/msx_slot/cartridge.cpp
@@ -29,23 +29,18 @@ enum
};
-const device_type MSX_SLOT_CARTRIDGE = device_creator<msx_slot_cartridge_device>;
-const device_type MSX_SLOT_YAMAHA_EXPANSION = device_creator<msx_slot_yamaha_expansion_device>;
+DEFINE_DEVICE_TYPE(MSX_SLOT_CARTRIDGE, msx_slot_cartridge_device, "msx_slot_cartridge", "MSX Cartridge slot")
+DEFINE_DEVICE_TYPE(MSX_SLOT_YAMAHA_EXPANSION, msx_slot_yamaha_expansion_device, "msx_slot_yamaha_expansion", "MSX Yamaha Expansion slot")
msx_slot_cartridge_device::msx_slot_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_SLOT_CARTRIDGE, "MSX Cartridge slot", tag, owner, clock, "msx_slot_cartridge", __FILE__)
- , device_image_interface(mconfig, *this)
- , device_slot_interface(mconfig, *this)
- , msx_internal_slot_interface()
- , m_irq_handler(*this)
- , m_cartridge(nullptr)
+ : msx_slot_cartridge_device(mconfig, MSX_SLOT_CARTRIDGE, tag, owner, clock)
{
}
-msx_slot_cartridge_device::msx_slot_cartridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+msx_slot_cartridge_device::msx_slot_cartridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_image_interface(mconfig, *this)
, device_slot_interface(mconfig, *this)
, msx_internal_slot_interface()
@@ -358,7 +353,7 @@ WRITE8_MEMBER(msx_slot_cartridge_device::write)
msx_slot_yamaha_expansion_device::msx_slot_yamaha_expansion_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_slot_cartridge_device(mconfig, MSX_SLOT_YAMAHA_EXPANSION, "MSX Yamaha Expansion slot", tag, owner, clock, "msx_slot_yamaha_expansion", __FILE__)
+ : msx_slot_cartridge_device(mconfig, MSX_SLOT_YAMAHA_EXPANSION, tag, owner, clock)
{
}
diff --git a/src/devices/bus/msx_slot/cartridge.h b/src/devices/bus/msx_slot/cartridge.h
index 88294cb0304..78d6721263d 100644
--- a/src/devices/bus/msx_slot/cartridge.h
+++ b/src/devices/bus/msx_slot/cartridge.h
@@ -1,15 +1,17 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_SLOT_CARTRIDGE_H
-#define __MSX_SLOT_CARTRIDGE_H
+#ifndef MAME_BUS_MSX_SLOT_CARTRIDGE_H
+#define MAME_BUS_MSX_SLOT_CARTRIDGE_H
+
+#pragma once
#include "slot.h"
#include "bus/msx_cart/cartridge.h"
#include "softlist_dev.h"
-extern const device_type MSX_SLOT_CARTRIDGE;
-extern const device_type MSX_SLOT_YAMAHA_EXPANSION;
+DECLARE_DEVICE_TYPE(MSX_SLOT_CARTRIDGE, msx_slot_cartridge_device)
+DECLARE_DEVICE_TYPE(MSX_SLOT_YAMAHA_EXPANSION, msx_slot_yamaha_expansion_device)
#define MCFG_MSX_SLOT_CARTRIDGE_ADD(_tag, _devcb) \
@@ -31,14 +33,10 @@ class msx_slot_cartridge_device : public device_t
{
public:
// construction/destruction
- msx_slot_cartridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
msx_slot_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<msx_slot_cartridge_device &>(device).m_irq_handler.set_callback(object); }
-
- // device-level overrides
- virtual void device_start() override;
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<msx_slot_cartridge_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
// image-level overrides
virtual image_init_result call_load() override;
@@ -65,6 +63,11 @@ public:
DECLARE_WRITE_LINE_MEMBER(irq_out);
protected:
+ msx_slot_cartridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
devcb_write_line m_irq_handler;
msx_cart_interface *m_cartridge;
@@ -78,12 +81,13 @@ public:
// construction/destruction
msx_slot_yamaha_expansion_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
-
virtual const char *image_interface() const override { return "msx_yamaha_60pin"; }
virtual const char *custom_instance_name() const override { return "cartridge60pin"; }
virtual const char *custom_brief_instance_name() const override { return "cart60p"; }
+
+protected:
+ virtual void device_start() override;
};
-#endif
+#endif // MAME_BUS_MSX_SLOT_CARTRIDGE_H
diff --git a/src/devices/bus/msx_slot/disk.cpp b/src/devices/bus/msx_slot/disk.cpp
index 7e3e0370ef1..10a319ca489 100644
--- a/src/devices/bus/msx_slot/disk.cpp
+++ b/src/devices/bus/msx_slot/disk.cpp
@@ -35,16 +35,16 @@ set on 7FFDH bit 2 always to 0 (some use it as disk change reset)
#include "disk.h"
-const device_type MSX_SLOT_DISK1 = device_creator<msx_slot_disk1_device>;
-const device_type MSX_SLOT_DISK2 = device_creator<msx_slot_disk2_device>;
-const device_type MSX_SLOT_DISK3 = device_creator<msx_slot_disk3_device>;
-const device_type MSX_SLOT_DISK4 = device_creator<msx_slot_disk4_device>;
-const device_type MSX_SLOT_DISK5 = device_creator<msx_slot_disk5_device>;
-const device_type MSX_SLOT_DISK6 = device_creator<msx_slot_disk6_device>;
+DEFINE_DEVICE_TYPE(MSX_SLOT_DISK1, msx_slot_disk1_device, "msx_slot_disk1", "MSX Internal floppy type 1")
+DEFINE_DEVICE_TYPE(MSX_SLOT_DISK2, msx_slot_disk2_device, "msx_slot_disk2", "MSX Internal floppy type 2")
+DEFINE_DEVICE_TYPE(MSX_SLOT_DISK3, msx_slot_disk3_device, "msx_slot_disk3", "MSX Internal floppy type 3")
+DEFINE_DEVICE_TYPE(MSX_SLOT_DISK4, msx_slot_disk4_device, "msx_slot_disk4", "MSX Internal floppy type 4")
+DEFINE_DEVICE_TYPE(MSX_SLOT_DISK5, msx_slot_disk5_device, "msx_slot_disk5", "MSX Internal floppy type 5")
+DEFINE_DEVICE_TYPE(MSX_SLOT_DISK6, msx_slot_disk6_device, "msx_slot_disk6", "MSX Internal floppy type 6")
-msx_slot_disk_device::msx_slot_disk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : msx_slot_rom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+msx_slot_disk_device::msx_slot_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : msx_slot_rom_device(mconfig, type, tag, owner, clock)
, m_floppy0(nullptr)
, m_floppy1(nullptr)
, m_floppy2(nullptr)
@@ -80,8 +80,8 @@ void msx_slot_disk_device::device_start()
}
-msx_slot_wd_disk_device::msx_slot_wd_disk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : msx_slot_disk_device(mconfig, type, name, tag, owner, clock, shortname, source)
+msx_slot_wd_disk_device::msx_slot_wd_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : msx_slot_disk_device(mconfig, type, tag, owner, clock)
, m_fdc(nullptr)
{
}
@@ -91,7 +91,7 @@ void msx_slot_wd_disk_device::device_start()
{
msx_slot_disk_device::device_start();
- m_fdc = owner()->subdevice<wd_fdc_analog_t>(m_fdc_tag);
+ m_fdc = owner()->subdevice<wd_fdc_analog_device_base>(m_fdc_tag);
if (m_fdc == nullptr)
{
@@ -100,8 +100,8 @@ void msx_slot_wd_disk_device::device_start()
}
-msx_slot_tc8566_disk_device::msx_slot_tc8566_disk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : msx_slot_disk_device(mconfig, type, name, tag, owner, clock, shortname, source)
+msx_slot_tc8566_disk_device::msx_slot_tc8566_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : msx_slot_disk_device(mconfig, type, tag, owner, clock)
, m_fdc(nullptr)
{
}
@@ -122,7 +122,7 @@ void msx_slot_tc8566_disk_device::device_start()
msx_slot_disk1_device::msx_slot_disk1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_slot_wd_disk_device(mconfig, MSX_SLOT_DISK1, "MSX Internal floppy type 1", tag, owner, clock, "msx_slot_disk1", __FILE__)
+ : msx_slot_wd_disk_device(mconfig, MSX_SLOT_DISK1, tag, owner, clock)
, m_side_control(0)
, m_control(0)
{
@@ -285,7 +285,7 @@ WRITE8_MEMBER(msx_slot_disk1_device::write)
msx_slot_disk2_device::msx_slot_disk2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_slot_wd_disk_device(mconfig, MSX_SLOT_DISK2, "MSX Internal floppy type 2", tag, owner, clock, "msx_slot_disk2", __FILE__)
+ : msx_slot_wd_disk_device(mconfig, MSX_SLOT_DISK2, tag, owner, clock)
, m_control(0)
{
}
@@ -424,7 +424,7 @@ WRITE8_MEMBER(msx_slot_disk2_device::write)
msx_slot_disk3_device::msx_slot_disk3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_slot_tc8566_disk_device(mconfig, MSX_SLOT_DISK3, "MSX Internal floppy type 3", tag, owner, clock, "msx_slot_disk3", __FILE__)
+ : msx_slot_tc8566_disk_device(mconfig, MSX_SLOT_DISK3, tag, owner, clock)
{
}
@@ -470,7 +470,7 @@ READ8_MEMBER(msx_slot_disk3_device::read)
msx_slot_disk4_device::msx_slot_disk4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_slot_tc8566_disk_device(mconfig, MSX_SLOT_DISK4, "MSX Internal floppy type 4", tag, owner, clock, "msx_slot_disk4", __FILE__)
+ : msx_slot_tc8566_disk_device(mconfig, MSX_SLOT_DISK4, tag, owner, clock)
{
}
@@ -522,7 +522,7 @@ READ8_MEMBER(msx_slot_disk4_device::read)
msx_slot_disk5_device::msx_slot_disk5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_slot_wd_disk_device(mconfig, MSX_SLOT_DISK5, "MSX Internal floppy type 5", tag, owner, clock, "msx_slot_disk5", __FILE__)
+ : msx_slot_wd_disk_device(mconfig, MSX_SLOT_DISK5, tag, owner, clock)
, m_control(0)
{
}
@@ -645,7 +645,7 @@ WRITE8_MEMBER(msx_slot_disk5_device::io_write)
msx_slot_disk6_device::msx_slot_disk6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_slot_wd_disk_device(mconfig, MSX_SLOT_DISK6, "MSX Internal floppy type 6", tag, owner, clock, "msx_slot_disk6", __FILE__)
+ : msx_slot_wd_disk_device(mconfig, MSX_SLOT_DISK6, tag, owner, clock)
, m_side_motor(0)
, m_drive_select0(0)
, m_drive_select1(0)
diff --git a/src/devices/bus/msx_slot/disk.h b/src/devices/bus/msx_slot/disk.h
index 11dee498884..5bb99811c81 100644
--- a/src/devices/bus/msx_slot/disk.h
+++ b/src/devices/bus/msx_slot/disk.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_SLOT_DISK_H
-#define __MSX_SLOT_DISK_H
+#ifndef MAME_BUS_MSX_SLOT_DISK_H
+#define MAME_BUS_MSX_SLOT_DISK_H
+
+#pragma once
#include "bus/msx_slot/slot.h"
#include "bus/msx_slot/rom.h"
@@ -12,17 +14,17 @@
/* WD FDC accessed through 7ffx */
-extern const device_type MSX_SLOT_DISK1;
+DECLARE_DEVICE_TYPE(MSX_SLOT_DISK1, msx_slot_disk1_device)
/* WD FDC accessed through 7fbx */
-extern const device_type MSX_SLOT_DISK2;
+DECLARE_DEVICE_TYPE(MSX_SLOT_DISK2, msx_slot_disk2_device)
/* TC8566 accessed through 7ff8-7fff */
-extern const device_type MSX_SLOT_DISK3;
+DECLARE_DEVICE_TYPE(MSX_SLOT_DISK3, msx_slot_disk3_device)
/* TC8566 accessed through 7ff0-7ff7 (used in Turob-R, untested) */
-extern const device_type MSX_SLOT_DISK4;
+DECLARE_DEVICE_TYPE(MSX_SLOT_DISK4, msx_slot_disk4_device)
/* WD FDC accessed through i/o ports 0xd0-0xd4 */
-extern const device_type MSX_SLOT_DISK5;
+DECLARE_DEVICE_TYPE(MSX_SLOT_DISK5, msx_slot_disk5_device)
/* WD FDC accessed through 7ff0-7ff? (used in Toshiba HX34) */
-extern const device_type MSX_SLOT_DISK6;
+DECLARE_DEVICE_TYPE(MSX_SLOT_DISK6, msx_slot_disk6_device)
#define MCFG_MSX_SLOT_DISK1_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
@@ -73,10 +75,6 @@ extern const device_type MSX_SLOT_DISK6;
class msx_slot_disk_device : public msx_slot_rom_device
{
public:
- msx_slot_disk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- virtual void device_start() override;
-
// static configuration helpers
static void set_fdc_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_fdc_tag = tag; }
static void set_floppy0_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_floppy0_tag = tag; }
@@ -85,6 +83,10 @@ public:
static void set_floppy3_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_disk_device &>(device).m_floppy3_tag = tag; }
protected:
+ msx_slot_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+
floppy_connector *m_floppy0;
floppy_connector *m_floppy1;
floppy_connector *m_floppy2;
@@ -101,24 +103,22 @@ protected:
class msx_slot_wd_disk_device : public msx_slot_disk_device
{
-public:
- msx_slot_wd_disk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+protected:
+ msx_slot_wd_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
-protected:
- wd_fdc_analog_t *m_fdc;
+ wd_fdc_analog_device_base *m_fdc;
};
class msx_slot_tc8566_disk_device : public msx_slot_disk_device
{
-public:
- msx_slot_tc8566_disk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+protected:
+ msx_slot_tc8566_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
-protected:
tc8566af_device *m_fdc;
};
@@ -128,12 +128,13 @@ class msx_slot_disk1_device : public msx_slot_wd_disk_device
public:
msx_slot_disk1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void post_load();
private:
@@ -150,12 +151,13 @@ class msx_slot_disk2_device : public msx_slot_wd_disk_device
public:
msx_slot_disk2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void post_load();
private:
@@ -190,12 +192,13 @@ class msx_slot_disk5_device : public msx_slot_wd_disk_device
public:
msx_slot_disk5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
- virtual void device_reset() override;
-
DECLARE_READ8_MEMBER(io_read);
DECLARE_WRITE8_MEMBER(io_write);
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void post_load();
private:
@@ -210,12 +213,13 @@ class msx_slot_disk6_device : public msx_slot_wd_disk_device
public:
msx_slot_disk6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void post_load();
private:
@@ -228,4 +232,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_SLOT_DISK_H
diff --git a/src/devices/bus/msx_slot/fs4600.cpp b/src/devices/bus/msx_slot/fs4600.cpp
index 0b15cb77048..3bcdce9f3a5 100644
--- a/src/devices/bus/msx_slot/fs4600.cpp
+++ b/src/devices/bus/msx_slot/fs4600.cpp
@@ -8,24 +8,21 @@
#include "fs4600.h"
-const device_type MSX_SLOT_FS4600 = device_creator<msx_slot_fs4600_device>;
+DEFINE_DEVICE_TYPE(MSX_SLOT_FS4600, msx_slot_fs4600_device, "msx_slot_fs4600", "MSX Internal FS4600 Firmware")
msx_slot_fs4600_device::msx_slot_fs4600_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_SLOT_FS4600, "MSX Internal FS4600 Firmware", tag, owner, clock, "msx_slot_fs4600", __FILE__)
+ : device_t(mconfig, MSX_SLOT_FS4600, tag, owner, clock)
, msx_internal_slot_interface()
, m_nvram(*this, "nvram")
, m_rom_region(*this, finder_base::DUMMY_TAG)
, m_region_offset(0)
, m_rom(nullptr)
+ , m_selected_bank{ 0, 0, 0, 0 }
+ , m_bank_base{ nullptr, nullptr, nullptr, nullptr }
, m_sram_address(0)
, m_control(0)
{
- for (int i = 0; i < 4; i++)
- {
- m_selected_bank[i] = 0;
- m_bank_base[i] = nullptr;
- }
memset(m_sram, 0, sizeof(m_sram));
}
diff --git a/src/devices/bus/msx_slot/fs4600.h b/src/devices/bus/msx_slot/fs4600.h
index 48f5e142c82..563e7d37535 100644
--- a/src/devices/bus/msx_slot/fs4600.h
+++ b/src/devices/bus/msx_slot/fs4600.h
@@ -1,21 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_SLOT_FS4600_H
-#define __MSX_SLOT_FS4600_H
+#ifndef MAME_BUS_MSX_SLOT_FS4600_H
+#define MAME_BUS_MSX_SLOT_FS4600_H
+
+#pragma once
#include "slot.h"
#include "machine/nvram.h"
-extern const device_type MSX_SLOT_FS4600;
+DECLARE_DEVICE_TYPE(MSX_SLOT_FS4600, msx_slot_fs4600_device)
#define MCFG_MSX_SLOT_FS4600_ADD(_tag, _startpage, _numpages, _region, _offset) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_FS4600, _startpage, _numpages) \
msx_slot_fs4600_device::set_rom_start(*device, "^" _region, _offset);
-class msx_slot_fs4600_device : public device_t,
- public msx_internal_slot_interface
+class msx_slot_fs4600_device : public device_t, public msx_internal_slot_interface
{
public:
msx_slot_fs4600_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -23,12 +24,14 @@ public:
// static configuration helpers
static void set_rom_start(device_t &device, const char *region, uint32_t offset);
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
+protected:
+ virtual void device_start() override;
+
void restore_banks();
private:
@@ -44,4 +47,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_SLOT_FS4600_H
diff --git a/src/devices/bus/msx_slot/music.cpp b/src/devices/bus/msx_slot/music.cpp
index ae11b71df2b..1e526dab7eb 100644
--- a/src/devices/bus/msx_slot/music.cpp
+++ b/src/devices/bus/msx_slot/music.cpp
@@ -4,11 +4,11 @@
#include "music.h"
-const device_type MSX_SLOT_MUSIC = device_creator<msx_slot_music_device>;
+DEFINE_DEVICE_TYPE(MSX_SLOT_MUSIC, msx_slot_music_device, "msx_slot_music", "MSX Internal MSX-MUSIC")
msx_slot_music_device::msx_slot_music_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_slot_rom_device(mconfig, MSX_SLOT_MUSIC, "MSX Internal MSX-MUSIC", tag, owner, clock, "msx_slot_music", __FILE__)
+ : msx_slot_rom_device(mconfig, MSX_SLOT_MUSIC, tag, owner, clock)
, m_ym2413(nullptr)
, m_ym2413_tag(nullptr)
{
diff --git a/src/devices/bus/msx_slot/music.h b/src/devices/bus/msx_slot/music.h
index d5587c9068c..c7e2a7bafb9 100644
--- a/src/devices/bus/msx_slot/music.h
+++ b/src/devices/bus/msx_slot/music.h
@@ -1,21 +1,23 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_SLOT_MUSIC_H
-#define __MSX_SLOT_MUSIC_H
+#ifndef MAME_BUS_MSX_SLOT_MUSIC_H
+#define MAME_BUS_MSX_SLOT_MUSIC_H
+#pragma once
#include "bus/msx_slot/slot.h"
#include "bus/msx_slot/rom.h"
#include "sound/ym2413.h"
-extern const device_type MSX_SLOT_MUSIC;
+DECLARE_DEVICE_TYPE(MSX_SLOT_MUSIC, msx_slot_music_device)
#define MCFG_MSX_SLOT_MUSIC_ADD(_tag, _startpage, _numpages, _region, _offset, _ym2413_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_MUSIC, _startpage, _numpages) \
msx_slot_rom_device::set_rom_start(*device, "^" _region, _offset); \
msx_slot_music_device::set_ym2413_tag(*device, _ym2413_tag);
+
class msx_slot_music_device : public msx_slot_rom_device
{
public:
@@ -24,16 +26,17 @@ public:
// static configuration helpers
static void set_ym2413_tag(device_t &device, const char *tag) { dynamic_cast<msx_slot_music_device &>(device).m_ym2413_tag = tag; }
- virtual void device_start() override;
-
virtual DECLARE_READ8_MEMBER(read) override;
DECLARE_WRITE8_MEMBER(write_ym2413);
+protected:
+ virtual void device_start() override;
+
private:
ym2413_device *m_ym2413;
const char *m_ym2413_tag;
};
-#endif
+#endif // MAME_BUS_MSX_SLOT_MUSIC_H
diff --git a/src/devices/bus/msx_slot/panasonic08.cpp b/src/devices/bus/msx_slot/panasonic08.cpp
index b1f30ca70cc..1e4e1ce6e22 100644
--- a/src/devices/bus/msx_slot/panasonic08.cpp
+++ b/src/devices/bus/msx_slot/panasonic08.cpp
@@ -13,11 +13,11 @@ Todo:
#include "panasonic08.h"
-const device_type MSX_SLOT_PANASONIC08 = device_creator<msx_slot_panasonic08_device>;
+DEFINE_DEVICE_TYPE(MSX_SLOT_PANASONIC08, msx_slot_panasonic08_device, "msx_slot_panasonic08", "MSX Internal Panasonic08")
msx_slot_panasonic08_device::msx_slot_panasonic08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_SLOT_PANASONIC08, "MSX Internal Panasonic08", tag, owner, clock, "msx_slot_panasonic08", __FILE__)
+ : device_t(mconfig, MSX_SLOT_PANASONIC08, tag, owner, clock)
, msx_internal_slot_interface()
, m_nvram(*this, "nvram")
, m_rom_region(*this, finder_base::DUMMY_TAG)
diff --git a/src/devices/bus/msx_slot/panasonic08.h b/src/devices/bus/msx_slot/panasonic08.h
index eb7b058a71c..8318bd124f3 100644
--- a/src/devices/bus/msx_slot/panasonic08.h
+++ b/src/devices/bus/msx_slot/panasonic08.h
@@ -1,21 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_SLOT_PANASONIC08_H
-#define __MSX_SLOT_PANASONIC08_H
+#ifndef MAME_BUS_MSX_SLOT_PANASONIC08_H
+#define MAME_BUS_MSX_SLOT_PANASONIC08_H
+
+#pragma once
#include "slot.h"
#include "machine/nvram.h"
-extern const device_type MSX_SLOT_PANASONIC08;
+DECLARE_DEVICE_TYPE(MSX_SLOT_PANASONIC08, msx_slot_panasonic08_device)
#define MCFG_MSX_SLOT_PANASONIC08_ADD(_tag, _startpage, _numpages, _region, _offset) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_PANASONIC08, _startpage, _numpages) \
msx_slot_panasonic08_device::set_rom_start(*device, "^" _region, _offset);
-class msx_slot_panasonic08_device : public device_t,
- public msx_internal_slot_interface
+class msx_slot_panasonic08_device : public device_t, public msx_internal_slot_interface
{
public:
msx_slot_panasonic08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -23,15 +24,18 @@ public:
// static configuration helpers
static void set_rom_start(device_t &device, const char *region, uint32_t offset);
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
- void restore_banks();
+protected:
+ virtual void device_start() override;
private:
+ void restore_banks();
+ void map_bank(int bank);
+
required_device<nvram_device> m_nvram;
required_memory_region m_rom_region;
uint32_t m_region_offset;
@@ -40,9 +44,7 @@ private:
const uint8_t *m_bank_base[8];
uint8_t m_control;
std::vector<uint8_t> m_sram;
-
- void map_bank(int bank);
};
-#endif
+#endif // MAME_BUS_MSX_SLOT_PANASONIC08_H
diff --git a/src/devices/bus/msx_slot/ram.cpp b/src/devices/bus/msx_slot/ram.cpp
index e03a8ed4e7c..a113dab1d39 100644
--- a/src/devices/bus/msx_slot/ram.cpp
+++ b/src/devices/bus/msx_slot/ram.cpp
@@ -4,10 +4,10 @@
#include "emu.h"
#include "ram.h"
-const device_type MSX_SLOT_RAM = device_creator<msx_slot_ram_device>;
+DEFINE_DEVICE_TYPE(MSX_SLOT_RAM, msx_slot_ram_device, "msx_slot_ram", "MSX Internal RAM")
msx_slot_ram_device::msx_slot_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_SLOT_RAM, "MSX Internal RAM", tag, owner, clock, "msx_slot_ram", __FILE__)
+ : device_t(mconfig, MSX_SLOT_RAM, tag, owner, clock)
, msx_internal_slot_interface()
{
}
diff --git a/src/devices/bus/msx_slot/ram.h b/src/devices/bus/msx_slot/ram.h
index 7e05bb9d46c..6b6ea760e8f 100644
--- a/src/devices/bus/msx_slot/ram.h
+++ b/src/devices/bus/msx_slot/ram.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_SLOT_RAM_H
-#define __MSX_SLOT_RAM_H
+#ifndef MAME_BUS_MSX_SLOT_RAM_H
+#define MAME_BUS_MSX_SLOT_RAM_H
#include "slot.h"
@@ -20,17 +20,18 @@ public:
static void force_start_address(device_t &device, uint16_t start) { downcast<msx_slot_ram_device &>(device).m_start_address = start; }
- virtual void device_start() override;
-
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
+protected:
+ virtual void device_start() override;
+
private:
std::vector<uint8_t> m_ram;
};
-extern const device_type MSX_SLOT_RAM;
+DECLARE_DEVICE_TYPE(MSX_SLOT_RAM, msx_slot_ram_device)
-#endif
+#endif // MAME_BUS_MSX_SLOT_RAM_H
diff --git a/src/devices/bus/msx_slot/ram_mm.cpp b/src/devices/bus/msx_slot/ram_mm.cpp
index 75ea33d06c5..1b765c832f2 100644
--- a/src/devices/bus/msx_slot/ram_mm.cpp
+++ b/src/devices/bus/msx_slot/ram_mm.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "ram_mm.h"
-const device_type MSX_SLOT_RAM_MM = device_creator<msx_slot_ram_mm_device>;
+DEFINE_DEVICE_TYPE(MSX_SLOT_RAM_MM, msx_slot_ram_mm_device, "msx_slot_ram_mm", "MSX Internal Memory Mapped RAM")
msx_slot_ram_mm_device::msx_slot_ram_mm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_SLOT_RAM_MM, "MSX Internal Memory Mapped RAM", tag, owner, clock, "msx_slot_ram_mm", __FILE__)
+ : device_t(mconfig, MSX_SLOT_RAM_MM, tag, owner, clock)
, msx_internal_slot_interface()
, m_total_size(0)
, m_bank_mask(0)
diff --git a/src/devices/bus/msx_slot/ram_mm.h b/src/devices/bus/msx_slot/ram_mm.h
index 1350d3c3158..584fc064897 100644
--- a/src/devices/bus/msx_slot/ram_mm.h
+++ b/src/devices/bus/msx_slot/ram_mm.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_SLOT_RAM_MM_H
-#define __MSX_SLOT_RAM_MM_H
+#ifndef MAME_BUS_MSX_SLOT_RAM_MM_H
+#define MAME_BUS_MSX_SLOT_RAM_MM_H
#include "slot.h"
@@ -12,8 +12,7 @@
#define MCFG_MSX_SLOT_RAMM_SET_RAMIO_BITS(_ramio_set_bits) \
msx_slot_ram_mm_device::set_ramio_set_bits(*device, _ramio_set_bits);
-class msx_slot_ram_mm_device : public device_t
- , public msx_internal_slot_interface
+class msx_slot_ram_mm_device : public device_t, public msx_internal_slot_interface
{
public:
msx_slot_ram_mm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -21,14 +20,15 @@ public:
static void set_total_size(device_t &device, uint32_t total_size) { dynamic_cast<msx_slot_ram_mm_device &>(device).m_total_size = total_size; }
static void set_ramio_set_bits(device_t &device, uint8_t ramio_set_bits) { dynamic_cast<msx_slot_ram_mm_device &>(device).m_ramio_set_bits = ramio_set_bits; }
- virtual void device_start() override;
-
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
DECLARE_READ8_MEMBER(read_mapper_bank);
DECLARE_WRITE8_MEMBER(write_mapper_bank);
+protected:
+ virtual void device_start() override;
+
void restore_banks();
private:
@@ -40,6 +40,6 @@ private:
uint8_t m_ramio_set_bits;
};
-extern const device_type MSX_SLOT_RAM_MM;
+DECLARE_DEVICE_TYPE(MSX_SLOT_RAM_MM, msx_slot_ram_mm_device)
-#endif
+#endif // MAME_BUS_MSX_SLOT_RAM_MM_H
diff --git a/src/devices/bus/msx_slot/rom.cpp b/src/devices/bus/msx_slot/rom.cpp
index 46d468b8121..05805412762 100644
--- a/src/devices/bus/msx_slot/rom.cpp
+++ b/src/devices/bus/msx_slot/rom.cpp
@@ -4,17 +4,17 @@
#include "rom.h"
-const device_type MSX_SLOT_ROM = device_creator<msx_slot_rom_device>;
+DEFINE_DEVICE_TYPE(MSX_SLOT_ROM, msx_slot_rom_device, "msx_slot_rom", "MSX Internal ROM")
msx_slot_rom_device::msx_slot_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msx_slot_rom_device(mconfig, MSX_SLOT_ROM, "MSX Internal ROM", tag, owner, clock, "msx_slot_rom", __FILE__)
+ : msx_slot_rom_device(mconfig, MSX_SLOT_ROM, tag, owner, clock)
{
}
-msx_slot_rom_device::msx_slot_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+msx_slot_rom_device::msx_slot_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, msx_internal_slot_interface()
, m_rom_region(*this, finder_base::DUMMY_TAG)
, m_region_offset(0)
diff --git a/src/devices/bus/msx_slot/rom.h b/src/devices/bus/msx_slot/rom.h
index 09389b80eb4..19081d8d76b 100644
--- a/src/devices/bus/msx_slot/rom.h
+++ b/src/devices/bus/msx_slot/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_SLOT_ROM_H
-#define __MSX_SLOT_ROM_H
+#ifndef MAME_BUS_MSX_SLOT_ROM_H
+#define MAME_BUS_MSX_SLOT_ROM_H
+
+#pragma once
#include "slot.h"
@@ -13,16 +15,18 @@ class msx_slot_rom_device : public device_t,
public msx_internal_slot_interface
{
public:
- msx_slot_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
msx_slot_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
static void set_rom_start(device_t &device, const char *region, uint32_t offset);
- virtual void device_start() override;
-
virtual DECLARE_READ8_MEMBER(read) override;
+protected:
+ msx_slot_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+
private:
required_memory_region m_rom_region;
uint32_t m_region_offset;
@@ -31,4 +35,4 @@ private:
extern const device_type MSX_SLOT_ROM;
-#endif
+#endif // MAME_BUS_MSX_SLOT_ROM_H
diff --git a/src/devices/bus/msx_slot/slot.h b/src/devices/bus/msx_slot/slot.h
index b2349fadc30..6a2c7f093d9 100644
--- a/src/devices/bus/msx_slot/slot.h
+++ b/src/devices/bus/msx_slot/slot.h
@@ -10,8 +10,10 @@ pages; and multiple pieces of rom/ram/components can occur in a single slot.
***********************************************************************************************************/
-#ifndef __MSX_SLOT_SLOT_H
-#define __MSX_SLOT_SLOT_H
+#ifndef MAME_BUS_MSX_SLOT_SLOT_H
+#define MAME_BUS_MSX_SLOT_SLOT_H
+
+#pragma once
#define MCFG_MSX_INTERNAL_SLOT_ADD(_tag, _type, _startpage, _numpages) \
MCFG_DEVICE_ADD(_tag, _type, 0) \
@@ -37,4 +39,4 @@ protected:
uint32_t m_end_address;
};
-#endif
+#endif // MAME_BUS_MSX_SLOT_SLOT_H
diff --git a/src/devices/bus/msx_slot/sony08.cpp b/src/devices/bus/msx_slot/sony08.cpp
index 4c575c9f94d..966d187e899 100644
--- a/src/devices/bus/msx_slot/sony08.cpp
+++ b/src/devices/bus/msx_slot/sony08.cpp
@@ -10,11 +10,11 @@
#include "sony08.h"
-const device_type MSX_SLOT_SONY08 = device_creator<msx_slot_sony08_device>;
+DEFINE_DEVICE_TYPE(MSX_SLOT_SONY08, msx_slot_sony08_device, "msx_slot_sony08", "MSX Internal SONY08")
msx_slot_sony08_device::msx_slot_sony08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSX_SLOT_SONY08, "MSX Internal SONY08", tag, owner, clock, "msx_slot_sony08", __FILE__)
+ : device_t(mconfig, MSX_SLOT_SONY08, tag, owner, clock)
, msx_internal_slot_interface()
, m_nvram(*this, "nvram")
, m_rom_region(*this, finder_base::DUMMY_TAG)
diff --git a/src/devices/bus/msx_slot/sony08.h b/src/devices/bus/msx_slot/sony08.h
index e65c398f082..4a3e5a41170 100644
--- a/src/devices/bus/msx_slot/sony08.h
+++ b/src/devices/bus/msx_slot/sony08.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __MSX_SLOT_SONY08_H
-#define __MSX_SLOT_SONY08_H
+#ifndef MAME_BUS_MSX_SLOT_SONY08_H
+#define MAME_BUS_MSX_SLOT_SONY08_H
+
+#pragma once
#include "slot.h"
#include "machine/nvram.h"
@@ -23,12 +25,14 @@ public:
// static configuration helpers
static void set_rom_start(device_t &device, const char *region, uint32_t offset);
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
+protected:
+ virtual void device_start() override;
+
void restore_banks();
private:
@@ -44,4 +48,4 @@ private:
};
-#endif
+#endif // MAME_BUS_MSX_SLOT_SONY08_H
diff --git a/src/devices/bus/nasbus/avc.cpp b/src/devices/bus/nasbus/avc.cpp
index 4c7b95abdc9..01fcf5fcf60 100644
--- a/src/devices/bus/nasbus/avc.cpp
+++ b/src/devices/bus/nasbus/avc.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NASCOM_AVC = device_creator<nascom_avc_device>;
+DEFINE_DEVICE_TYPE(NASCOM_AVC, nascom_avc_device, "nascom_avc", "Nascom Advanced Video Card")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -51,7 +51,7 @@ machine_config_constructor nascom_avc_device::device_mconfig_additions() const
//-------------------------------------------------
nascom_avc_device::nascom_avc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NASCOM_AVC, "Nascom Advanced Video Card", tag, owner, clock, "nascom_avc", __FILE__),
+ device_t(mconfig, NASCOM_AVC, tag, owner, clock),
device_nasbus_card_interface(mconfig, *this),
m_crtc(*this, "mc6845"),
m_palette(*this, "palette"),
@@ -82,9 +82,9 @@ void nascom_avc_device::device_start()
void nascom_avc_device::device_reset()
{
- m_nasbus->m_io->install_write_handler(0xb0, 0xb0, write8_delegate(FUNC(mc6845_device::address_w), m_crtc.target()));
- m_nasbus->m_io->install_readwrite_handler(0xb1, 0xb1, read8_delegate(FUNC(mc6845_device::register_r), m_crtc.target()), write8_delegate(FUNC(mc6845_device::register_w), m_crtc.target()));
- m_nasbus->m_io->install_write_handler(0xb2, 0xb2, write8_delegate(FUNC(nascom_avc_device::control_w), this));
+ io_space().install_write_handler(0xb0, 0xb0, write8_delegate(FUNC(mc6845_device::address_w), m_crtc.target()));
+ io_space().install_readwrite_handler(0xb1, 0xb1, read8_delegate(FUNC(mc6845_device::register_r), m_crtc.target()), write8_delegate(FUNC(mc6845_device::register_w), m_crtc.target()));
+ io_space().install_write_handler(0xb2, 0xb2, write8_delegate(FUNC(nascom_avc_device::control_w), this));
}
@@ -136,11 +136,11 @@ WRITE8_MEMBER( nascom_avc_device::control_w )
if (((m_control & 0x07) == 0) && (data & 0x07))
{
m_nasbus->ram_disable_w(0);
- m_nasbus->m_program->install_readwrite_handler(0x8000, 0xbfff, read8_delegate(FUNC(nascom_avc_device::vram_r), this), write8_delegate(FUNC(nascom_avc_device::vram_w), this));
+ program_space().install_readwrite_handler(0x8000, 0xbfff, read8_delegate(FUNC(nascom_avc_device::vram_r), this), write8_delegate(FUNC(nascom_avc_device::vram_w), this));
}
else if ((data & 0x07) == 0)
{
- m_nasbus->m_program->unmap_readwrite(0x8000, 0xbfff);
+ program_space().unmap_readwrite(0x8000, 0xbfff);
m_nasbus->ram_disable_w(1);
}
diff --git a/src/devices/bus/nasbus/avc.h b/src/devices/bus/nasbus/avc.h
index abe5d1e2da0..b2da174bf87 100644
--- a/src/devices/bus/nasbus/avc.h
+++ b/src/devices/bus/nasbus/avc.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_NASBUS_AVC_H
+#define MAME_BUS_NASBUS_AVC_H
-#ifndef __NASBUS_AVC_H__
-#define __NASBUS_AVC_H__
+#pragma once
#include "nasbus.h"
#include "video/mc6845.h"
@@ -50,6 +50,6 @@ private:
};
// device type definition
-extern const device_type NASCOM_AVC;
+DECLARE_DEVICE_TYPE(NASCOM_AVC, nascom_avc_device)
-#endif // __NASBUS_AVC_H__
+#endif // MAME_BUS_NASBUS_AVC_H
diff --git a/src/devices/bus/nasbus/cards.cpp b/src/devices/bus/nasbus/cards.cpp
index 9fcc3c3e70a..db6606dad50 100644
--- a/src/devices/bus/nasbus/cards.cpp
+++ b/src/devices/bus/nasbus/cards.cpp
@@ -9,6 +9,10 @@
#include "emu.h"
#include "cards.h"
+#include "avc.h"
+#include "floppy.h"
+
+
SLOT_INTERFACE_START( nasbus_slot_cards )
SLOT_INTERFACE("avc", NASCOM_AVC)
SLOT_INTERFACE("floppy", NASCOM_FDC)
diff --git a/src/devices/bus/nasbus/cards.h b/src/devices/bus/nasbus/cards.h
index a9fef5c96ab..89179c4a16f 100644
--- a/src/devices/bus/nasbus/cards.h
+++ b/src/devices/bus/nasbus/cards.h
@@ -6,15 +6,12 @@
***************************************************************************/
-#pragma once
-
-#ifndef __NASBUS_CARDS_H__
-#define __NASBUS_CARDS_H__
+#ifndef MAME_BUS_NASBUS_CARDS_H
+#define MAME_BUS_NASBUS_CARDS_H
+#pragma once
-#include "avc.h"
-#include "floppy.h"
SLOT_INTERFACE_EXTERN( nasbus_slot_cards );
-#endif // __NASBUS_CARDS_H__
+#endif // MAME_BUS_NASBUS_CARDS_H
diff --git a/src/devices/bus/nasbus/floppy.cpp b/src/devices/bus/nasbus/floppy.cpp
index f75b452f178..dd8c1337069 100644
--- a/src/devices/bus/nasbus/floppy.cpp
+++ b/src/devices/bus/nasbus/floppy.cpp
@@ -22,7 +22,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NASCOM_FDC = device_creator<nascom_fdc_device>;
+DEFINE_DEVICE_TYPE(NASCOM_FDC, nascom_fdc_device, "nascom_fdc", "Nascom Floppy Disc Controller")
FLOPPY_FORMATS_MEMBER( nascom_fdc_device::floppy_formats )
FLOPPY_NASCOM_FORMAT
@@ -62,7 +62,7 @@ machine_config_constructor nascom_fdc_device::device_mconfig_additions() const
//-------------------------------------------------
nascom_fdc_device::nascom_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NASCOM_FDC, "Nascom Floppy Disc Controller", tag, owner, clock, "nascom_fdc", __FILE__),
+ device_t(mconfig, NASCOM_FDC, tag, owner, clock),
device_nasbus_card_interface(mconfig, *this),
m_fdc(*this, "fd1793"),
m_floppy0(*this, "fd1793:0"),
@@ -93,9 +93,9 @@ void nascom_fdc_device::device_start()
void nascom_fdc_device::device_reset()
{
- m_nasbus->m_io->install_readwrite_handler(0xe0, 0xe3, read8_delegate(FUNC(fd1793_t::read), m_fdc.target()), write8_delegate(FUNC(fd1793_t::write), m_fdc.target()));
- m_nasbus->m_io->install_readwrite_handler(0xe4, 0xe4, read8_delegate(FUNC(nascom_fdc_device::select_r), this), write8_delegate(FUNC(nascom_fdc_device::select_w), this));
- m_nasbus->m_io->install_read_handler(0xe5, 0xe5, read8_delegate(FUNC(nascom_fdc_device::status_r), this));
+ io_space().install_readwrite_handler(0xe0, 0xe3, read8_delegate(FUNC(fd1793_device::read), m_fdc.target()), write8_delegate(FUNC(fd1793_device::write), m_fdc.target()));
+ io_space().install_readwrite_handler(0xe4, 0xe4, read8_delegate(FUNC(nascom_fdc_device::select_r), this), write8_delegate(FUNC(nascom_fdc_device::select_w), this));
+ io_space().install_read_handler(0xe5, 0xe5, read8_delegate(FUNC(nascom_fdc_device::status_r), this));
}
//-------------------------------------------------
diff --git a/src/devices/bus/nasbus/floppy.h b/src/devices/bus/nasbus/floppy.h
index 81526a53f88..dbe4635723f 100644
--- a/src/devices/bus/nasbus/floppy.h
+++ b/src/devices/bus/nasbus/floppy.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_NASBUS_FLOPPY_H
+#define MAME_BUS_NASBUS_FLOPPY_H
-#ifndef __NASBUS_FLOPPY_H__
-#define __NASBUS_FLOPPY_H__
+#pragma once
#include "nasbus.h"
#include "machine/wd_fdc.h"
@@ -42,7 +42,7 @@ protected:
private:
TIMER_CALLBACK_MEMBER(motor_off);
- required_device<fd1793_t> m_fdc;
+ required_device<fd1793_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device<floppy_connector> m_floppy2;
@@ -55,6 +55,6 @@ private:
};
// device type definition
-extern const device_type NASCOM_FDC;
+DECLARE_DEVICE_TYPE(NASCOM_FDC, nascom_fdc_device)
-#endif // __NASBUS_FLOPPY_H__
+#endif // MAME_BUS_NASBUS_FLOPPY_H
diff --git a/src/devices/bus/nasbus/nasbus.cpp b/src/devices/bus/nasbus/nasbus.cpp
index f49302d5ab4..dafe56f68ac 100644
--- a/src/devices/bus/nasbus/nasbus.cpp
+++ b/src/devices/bus/nasbus/nasbus.cpp
@@ -16,22 +16,19 @@
// NASBUS SLOT DEVICE
//**************************************************************************
-const device_type NASBUS_SLOT = device_creator<nasbus_slot_device>;
+DEFINE_DEVICE_TYPE(NASBUS_SLOT, nasbus_slot_device, "nasbus_slot", "NASBUS Slot")
//-------------------------------------------------
// nasbus_slot_device - constructor
//-------------------------------------------------
nasbus_slot_device::nasbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NASBUS_SLOT, "NASBUS Slot", tag, owner, clock, "nasbus_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_nasbus_tag(nullptr)
+ nasbus_slot_device(mconfig, NASBUS_SLOT, tag, owner, clock)
{
}
-nasbus_slot_device::nasbus_slot_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+nasbus_slot_device::nasbus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_nasbus_tag(nullptr)
{
@@ -64,14 +61,14 @@ void nasbus_slot_device::device_start()
// NASBUS DEVICE
//**************************************************************************
-const device_type NASBUS = device_creator<nasbus_device>;
+DEFINE_DEVICE_TYPE(NASBUS, nasbus_device, "nasbus", "NASBUS Backplane")
//-------------------------------------------------
// nasbus_device - constructor
//-------------------------------------------------
nasbus_device::nasbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NASBUS, "NASBUS Backplane", tag, owner, clock, "nasbus", __FILE__),
+ device_t(mconfig, NASBUS, tag, owner, clock),
m_program(nullptr),
m_io(nullptr),
m_ram_disable_handler(*this)
@@ -147,8 +144,8 @@ WRITE_LINE_MEMBER( nasbus_device::ram_disable_w ) { m_ram_disable_handler(state)
device_nasbus_card_interface::device_nasbus_card_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device),
- m_next(nullptr),
- m_nasbus(nullptr)
+ m_nasbus(nullptr),
+ m_next(nullptr)
{
}
diff --git a/src/devices/bus/nasbus/nasbus.h b/src/devices/bus/nasbus/nasbus.h
index 7d6151d513e..c20445c741c 100644
--- a/src/devices/bus/nasbus/nasbus.h
+++ b/src/devices/bus/nasbus/nasbus.h
@@ -87,10 +87,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_NASBUS_NASBUS_H
+#define MAME_BUS_NASBUS_NASBUS_H
-#ifndef __NASBUS_H__
-#define __NASBUS_H__
+#pragma once
@@ -131,34 +131,34 @@ class nasbus_slot_device : public device_t, public device_slot_interface
public:
// construction/destruction
nasbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nasbus_slot_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // device-level overrides
- virtual void device_start() override;
-
// inline configuration
static void set_nasbus_slot(device_t &device, device_t *owner, const char *nasbus_tag);
protected:
+ nasbus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
// configuration
const char *m_nasbus_tag;
};
// device type definition
-extern const device_type NASBUS_SLOT;
+DECLARE_DEVICE_TYPE(NASBUS_SLOT, nasbus_slot_device)
// ======================> nasbus_device
class nasbus_device : public device_t
{
+ friend class device_nasbus_card_interface;
public:
// construction/destruction
nasbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~nasbus_device();
- template<class _Object> static devcb_base &set_ram_disable_handler(device_t &device, _Object object)
- { return downcast<nasbus_device &>(device).m_ram_disable_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ram_disable_handler(device_t &device, Object &&cb)
+ { return downcast<nasbus_device &>(device).m_ram_disable_handler.set_callback(std::forward<Object>(cb)); }
void add_card(device_nasbus_card_interface *card);
@@ -168,42 +168,49 @@ public:
// from cards
DECLARE_WRITE_LINE_MEMBER( ram_disable_w );
- address_space *m_program;
- address_space *m_io;
-
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
private:
+ address_space *m_program;
+ address_space *m_io;
+
simple_list<device_nasbus_card_interface> m_dev;
devcb_write_line m_ram_disable_handler;
};
// device type definition
-extern const device_type NASBUS;
+DECLARE_DEVICE_TYPE(NASBUS, nasbus_device)
// ======================> device_nasbus_interface
class device_nasbus_card_interface : public device_slot_card_interface
{
+ template <class ElementType> friend class simple_list;
public:
// construction/destruction
- device_nasbus_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_nasbus_card_interface();
void set_nasbus_device(nasbus_device *nasbus);
device_nasbus_card_interface *next() const { return m_next; }
- device_nasbus_card_interface *m_next;
protected:
+ device_nasbus_card_interface(const machine_config &mconfig, device_t &device);
+
+ address_space &program_space() { return *m_nasbus->m_program; }
+ address_space &io_space() { return *m_nasbus->m_io; }
+
nasbus_device *m_nasbus;
+
+private:
+ device_nasbus_card_interface *m_next;
};
// include here so drivers don't need to
#include "cards.h"
-#endif // __NASBUS_H__
+#endif // MAME_BUS_NASBUS_NASBUS_H
diff --git a/src/devices/bus/neogeo/boot_cthd.cpp b/src/devices/bus/neogeo/boot_cthd.cpp
index 79189841fdf..360bc937433 100644
--- a/src/devices/bus/neogeo/boot_cthd.cpp
+++ b/src/devices/bus/neogeo/boot_cthd.cpp
@@ -13,32 +13,33 @@
//-------------------------------------------------
-// neogeo_cthd2k3_cart - constructor
+// neogeo_cthd2k3_cart_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_CTHD2K3_CART = device_creator<neogeo_cthd2k3_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CTHD2K3_CART, neogeo_cthd2k3_cart_device, "neocart_ct2k3", "Neo Geo CTHD 2003 Cart")
-neogeo_cthd2k3_cart::neogeo_cthd2k3_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source) :
- neogeo_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
+neogeo_cthd2k3_cart_device::neogeo_cthd2k3_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_rom_device(mconfig, type, tag, owner, clock),
m_prot(*this, "cthd_prot")
-{}
+{
+}
-neogeo_cthd2k3_cart::neogeo_cthd2k3_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_CTHD2K3_CART, "Neo Geo CTHD 2003 Cart", tag, owner, clock, "neocart_ct2k3", __FILE__),
- m_prot(*this, "cthd_prot")
-{}
+neogeo_cthd2k3_cart_device::neogeo_cthd2k3_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_cthd2k3_cart_device(mconfig, NEOGEO_CTHD2K3_CART, tag, owner, clock)
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_cthd2k3_cart::device_start()
+void neogeo_cthd2k3_cart_device::device_start()
{
}
-void neogeo_cthd2k3_cart::device_reset()
+void neogeo_cthd2k3_cart_device::device_reset()
{
}
@@ -51,7 +52,7 @@ static MACHINE_CONFIG_FRAGMENT( cthd_cart )
MCFG_CTHD_PROT_ADD("cthd_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_cthd2k3_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_cthd2k3_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cthd_cart );
}
@@ -62,7 +63,7 @@ machine_config_constructor neogeo_cthd2k3_cart::device_mconfig_additions() const
**************************************************/
-void neogeo_cthd2k3_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cthd2k3_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->decrypt_cthd2003(spr_region, spr_region_size, audiocpu_region, audio_region_size, fix_region, fix_region_size);
m_prot->patch_cthd2003(cpuregion, cpuregion_size);
@@ -74,13 +75,14 @@ void neogeo_cthd2k3_cart::decrypt_all(DECRYPT_ALL_PARAMS)
**************************************************/
-const device_type NEOGEO_CT2K3SP_CART = device_creator<neogeo_ct2k3sp_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CT2K3SP_CART, neogeo_ct2k3sp_cart_device, "neocart_ct2k3sp", "Neo Geo CTHD 2003 Sp Cart")
-neogeo_ct2k3sp_cart::neogeo_ct2k3sp_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cthd2k3_cart(mconfig, NEOGEO_CT2K3SP_CART, "Neo Geo CTHD 2003 Sp Cart", tag, owner, clock, "neocart_ct2k3sp", __FILE__)
-{}
+neogeo_ct2k3sp_cart_device::neogeo_ct2k3sp_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cthd2k3_cart_device(mconfig, NEOGEO_CT2K3SP_CART, tag, owner, clock)
+{
+}
-void neogeo_ct2k3sp_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_ct2k3sp_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->decrypt_ct2k3sp(spr_region, spr_region_size, audiocpu_region, audio_region_size, fix_region, fix_region_size);
m_prot->patch_cthd2003(cpuregion, cpuregion_size);
@@ -90,13 +92,14 @@ void neogeo_ct2k3sp_cart::decrypt_all(DECRYPT_ALL_PARAMS)
ct2k3sa
**************************************************/
-const device_type NEOGEO_CT2K3SA_CART = device_creator<neogeo_ct2k3sa_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CT2K3SA_CART, neogeo_ct2k3sa_cart_device, "neocart_ct2k3sa", "Neo Geo CTHD 2003 Sp Alt Cart")
-neogeo_ct2k3sa_cart::neogeo_ct2k3sa_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cthd2k3_cart(mconfig, NEOGEO_CT2K3SA_CART, "Neo Geo CTHD 2003 Sp Alt Cart", tag, owner, clock, "neocart_ct2k3sa", __FILE__)
-{}
+neogeo_ct2k3sa_cart_device::neogeo_ct2k3sa_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cthd2k3_cart_device(mconfig, NEOGEO_CT2K3SA_CART, tag, owner, clock)
+{
+}
-void neogeo_ct2k3sa_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_ct2k3sa_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->decrypt_ct2k3sa(spr_region, spr_region_size, audiocpu_region, audio_region_size);
m_prot->patch_ct2k3sa(cpuregion, cpuregion_size);
@@ -107,15 +110,16 @@ void neogeo_ct2k3sa_cart::decrypt_all(DECRYPT_ALL_PARAMS)
matrimbl
**************************************************/
-const device_type NEOGEO_MATRIMBL_CART = device_creator<neogeo_matrimbl_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_MATRIMBL_CART, neogeo_matrimbl_cart_device, "neocart_matrimbl", "Neo Geo Matrimelee Bootleg Cart")
-neogeo_matrimbl_cart::neogeo_matrimbl_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cthd2k3_cart(mconfig, NEOGEO_MATRIMBL_CART, "Neo Geo Matrimelee Bootleg Cart", tag, owner, clock, "neocart_matrimbl", __FILE__),
+neogeo_matrimbl_cart_device::neogeo_matrimbl_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cthd2k3_cart_device(mconfig, NEOGEO_MATRIMBL_CART, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_kof2k2_prot(*this, "kof2k2_prot")
-{}
+{
+}
-void neogeo_matrimbl_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_matrimbl_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_kof2k2_prot->matrim_decrypt_68k(cpuregion, cpuregion_size);
m_cmc_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size); // required for text layer
@@ -129,7 +133,7 @@ static MACHINE_CONFIG_FRAGMENT( matrimbl_cart )
MCFG_CTHD_PROT_ADD("cthd_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_matrimbl_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_matrimbl_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( matrimbl_cart );
}
diff --git a/src/devices/bus/neogeo/boot_cthd.h b/src/devices/bus/neogeo/boot_cthd.h
index 7d3bb213b80..1846d1dd744 100644
--- a/src/devices/bus/neogeo/boot_cthd.h
+++ b/src/devices/bus/neogeo/boot_cthd.h
@@ -1,37 +1,44 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_BOOTCTHD_H
-#define __NEOGEO_BOOTCTHD_H
+#ifndef MAME_BUS_NEOGEO_BOOT_CTHD_H
+#define MAME_BUS_NEOGEO_BOOT_CTHD_H
+
+#pragma once
#include "slot.h"
-#include "rom.h"
+#include "prot_cmc.h"
#include "prot_cthd.h"
+#include "prot_kof2k2.h"
+#include "rom.h"
-// ======================> neogeo_cthd2k3_cart
-class neogeo_cthd2k3_cart : public neogeo_rom_device
+// ======================> neogeo_cthd2k3_cart_device
+
+class neogeo_cthd2k3_cart_device : public neogeo_rom_device
{
public:
// construction/destruction
- neogeo_cthd2k3_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source);
- neogeo_cthd2k3_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
+ neogeo_cthd2k3_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
virtual uint32_t get_bank_base(uint16_t sel) override { return m_prot->get_bank_base(sel); }
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
protected:
+ neogeo_cthd2k3_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
required_device<cthd_prot_device> m_prot;
};
// device type definition
-extern const device_type NEOGEO_CTHD2K3_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_CTHD2K3_CART, neogeo_cthd2k3_cart_device)
@@ -39,45 +46,42 @@ extern const device_type NEOGEO_CTHD2K3_CART;
ct2k3sp
**************************************************/
-class neogeo_ct2k3sp_cart : public neogeo_cthd2k3_cart
+class neogeo_ct2k3sp_cart_device : public neogeo_cthd2k3_cart_device
{
public:
- neogeo_ct2k3sp_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_ct2k3sp_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_CT2K3SP_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_CT2K3SP_CART, neogeo_ct2k3sp_cart_device)
/*************************************************
ct2k3sa
**************************************************/
-class neogeo_ct2k3sa_cart : public neogeo_cthd2k3_cart
+class neogeo_ct2k3sa_cart_device : public neogeo_cthd2k3_cart_device
{
public:
- neogeo_ct2k3sa_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_ct2k3sa_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_CT2K3SA_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_CT2K3SA_CART, neogeo_ct2k3sa_cart_device)
/*************************************************
matrimbl
**************************************************/
-#include "prot_cmc.h"
-#include "prot_kof2k2.h"
-
-class neogeo_matrimbl_cart : public neogeo_cthd2k3_cart
+class neogeo_matrimbl_cart_device : public neogeo_cthd2k3_cart_device
{
public:
- neogeo_matrimbl_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_matrimbl_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 2; }
+ virtual int get_fixed_bank_type() override { return 2; }
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -86,7 +90,7 @@ private:
required_device<kof2002_prot_device> m_kof2k2_prot;
};
-extern const device_type NEOGEO_MATRIMBL_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_MATRIMBL_CART, neogeo_matrimbl_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_BOOT_CTHD_H
diff --git a/src/devices/bus/neogeo/boot_kof10th.cpp b/src/devices/bus/neogeo/boot_kof10th.cpp
index 1ce38f14785..aa42ed9018f 100644
--- a/src/devices/bus/neogeo/boot_kof10th.cpp
+++ b/src/devices/bus/neogeo/boot_kof10th.cpp
@@ -13,22 +13,23 @@
//-------------------------------------------------
-// neogeo_kof10th_cart - constructor
+// neogeo_kof10th_cart_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_KOF10TH_CART = device_creator<neogeo_kof10th_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KOF10TH_CART, neogeo_kof10th_cart_device, "neocart_kof10th", "Neo Geo KoF 10th Ann. Bootleg Cart")
-neogeo_kof10th_cart::neogeo_kof10th_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KOF10TH_CART, "Neo Geo KOF 10th Ann Bootleg Cart", tag, owner, clock, "neocart_kof10th", __FILE__)
-{}
+neogeo_kof10th_cart_device::neogeo_kof10th_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KOF10TH_CART, tag, owner, clock)
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_kof10th_cart::device_start()
+void neogeo_kof10th_cart_device::device_start()
{
save_pointer(NAME(m_fixed), 0x40000);
save_item(NAME(m_special_bank));
@@ -36,7 +37,7 @@ void neogeo_kof10th_cart::device_start()
save_item(NAME(m_cart_ram2));
}
-void neogeo_kof10th_cart::device_reset()
+void neogeo_kof10th_cart_device::device_reset()
{
m_special_bank = 0;
memset(m_cart_ram, 0x00, 0x2000);
@@ -52,13 +53,13 @@ static MACHINE_CONFIG_FRAGMENT( kof10th_cart )
MCFG_NEOBOOT_PROT_ADD("bootleg_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_kof10th_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_kof10th_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( kof10th_cart );
}
-void neogeo_kof10th_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kof10th_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->kof10th_decrypt(cpuregion, cpuregion_size);
memcpy(m_cart_ram2, (uint8_t *)cpuregion + 0xe0000, 0x20000);
@@ -70,7 +71,7 @@ void neogeo_kof10th_cart::decrypt_all(DECRYPT_ALL_PARAMS)
is incomplete, at the moment the S data is copied from the program rom on
start-up instead */
-uint32_t neogeo_kof10th_cart::get_bank_base(uint16_t sel)
+uint32_t neogeo_kof10th_cart_device::get_bank_base(uint16_t sel)
{
uint32_t bank = 0x100000 + ((sel & 7) << 20);
if (bank >= 0x700000)
@@ -78,28 +79,28 @@ uint32_t neogeo_kof10th_cart::get_bank_base(uint16_t sel)
return bank;
}
-uint16_t neogeo_kof10th_cart::get_helper()
+uint16_t neogeo_kof10th_cart_device::get_helper()
{
return m_cart_ram[0xffc];
}
-uint32_t neogeo_kof10th_cart::get_special_bank()
+uint32_t neogeo_kof10th_cart_device::get_special_bank()
{
return m_special_bank;
}
-READ16_MEMBER(neogeo_kof10th_cart::protection_r)
+READ16_MEMBER(neogeo_kof10th_cart_device::protection_r)
{
return m_cart_ram[offset];
}
-READ16_MEMBER(neogeo_kof10th_cart::addon_r)
+READ16_MEMBER(neogeo_kof10th_cart_device::addon_r)
{
// printf("kof10th_RAM2_r\n");
return m_cart_ram2[offset];
}
-WRITE16_MEMBER(neogeo_kof10th_cart::protection_w)
+WRITE16_MEMBER(neogeo_kof10th_cart_device::protection_w)
{
if (offset < 0x40000/2)
{
diff --git a/src/devices/bus/neogeo/boot_kof10th.h b/src/devices/bus/neogeo/boot_kof10th.h
index 0ba5c0ee2a1..1d246d6f4e1 100644
--- a/src/devices/bus/neogeo/boot_kof10th.h
+++ b/src/devices/bus/neogeo/boot_kof10th.h
@@ -1,23 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_KOF10TH_H
-#define __NEOGEO_KOF10TH_H
+#ifndef MAME_BUS_NEOGEO_BOOT_KOF10TH_H
+#define MAME_BUS_NEOGEO_BOOT_KOF10TH_H
+
+#pragma once
#include "slot.h"
#include "boot_misc.h"
#include "prot_misc.h"
-// ======================> neogeo_kof10th_cart
+// ======================> neogeo_kof10th_cart_device
-class neogeo_kof10th_cart : public neogeo_bootleg_cart
+class neogeo_kof10th_cart_device : public neogeo_bootleg_cart_device
{
public:
// construction/destruction
- neogeo_kof10th_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
+ neogeo_kof10th_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
@@ -29,7 +28,12 @@ public:
virtual DECLARE_WRITE16_MEMBER(protection_w) override;
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
uint8_t* m_fixed;
@@ -39,8 +43,6 @@ private:
};
// device type definition
-extern const device_type NEOGEO_KOF10TH_CART;
-
-
+DECLARE_DEVICE_TYPE(NEOGEO_KOF10TH_CART, neogeo_kof10th_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_BOOT_KOF10TH_H
diff --git a/src/devices/bus/neogeo/boot_kof2k2.cpp b/src/devices/bus/neogeo/boot_kof2k2.cpp
index 522f83e65aa..61876fd02f9 100644
--- a/src/devices/bus/neogeo/boot_kof2k2.cpp
+++ b/src/devices/bus/neogeo/boot_kof2k2.cpp
@@ -25,17 +25,17 @@ static MACHINE_CONFIG_FRAGMENT( kof2k2mp_cart )
MCFG_PCM2_PROT_ADD("pcm2_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_kof2002b_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_kof2002b_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( kof2k2bl_cart );
}
-machine_config_constructor neogeo_kf2k2mp_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_kf2k2mp_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( kof2k2mp_cart );
}
-machine_config_constructor neogeo_kf2k2mp2_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_kf2k2mp2_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( kof2k2mp_cart );
}
@@ -44,17 +44,18 @@ machine_config_constructor neogeo_kf2k2mp2_cart::device_mconfig_additions() cons
kof2002b
**************************************************/
-const device_type NEOGEO_KOF2002B_CART = device_creator<neogeo_kof2002b_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KOF2002B_CART, neogeo_kof2002b_cart_device, "neocart_kof2002b", "Neo Geo KoF 2002 Bootleg Cart")
-neogeo_kof2002b_cart::neogeo_kof2002b_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KOF2002B_CART, "Neo Geo KOF 2002 Bootleg Cart", tag, owner, clock, "neocart_kof2002b", __FILE__),
+neogeo_kof2002b_cart_device::neogeo_kof2002b_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KOF2002B_CART, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_pcm2_prot(*this, "pcm2_prot"),
m_kof2k2_prot(*this, "kof2k2_prot")
-{}
+{
+}
-void neogeo_kof2002b_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kof2002b_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_kof2k2_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size);
m_pcm2_prot->swap(ym_region, ym_region_size, 0);
@@ -67,16 +68,17 @@ void neogeo_kof2002b_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kf2k2mp
**************************************************/
-const device_type NEOGEO_KF2K2MP_CART = device_creator<neogeo_kf2k2mp_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KF2K2MP_CART, neogeo_kf2k2mp_cart_device, "neocart_kf2k2mp", "Neo Geo KoF 2002 MP Cart")
-neogeo_kf2k2mp_cart::neogeo_kf2k2mp_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KF2K2MP_CART, "Neo Geo KOF 2002 MP Cart", tag, owner, clock, "neocart_kf2k2mp", __FILE__),
+neogeo_kf2k2mp_cart_device::neogeo_kf2k2mp_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KF2K2MP_CART, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_pcm2_prot(*this, "pcm2_prot")
-{}
+{
+}
-void neogeo_kf2k2mp_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kf2k2mp_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->kf2k2mp_decrypt(cpuregion, cpuregion_size);
m_pcm2_prot->swap(ym_region, ym_region_size, 0);
@@ -89,16 +91,17 @@ void neogeo_kf2k2mp_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kf2k2mp2
**************************************************/
-const device_type NEOGEO_KF2K2MP2_CART = device_creator<neogeo_kf2k2mp2_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KF2K2MP2_CART, neogeo_kf2k2mp2_cart_device, "neocart_kf2k2mp2", "Neo Geo KoF 2002 MP2 Cart")
-neogeo_kf2k2mp2_cart::neogeo_kf2k2mp2_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KF2K2MP2_CART, "Neo Geo KOF 2002 MP2 Cart", tag, owner, clock, "neocart_kf2k2mp2", __FILE__),
+neogeo_kf2k2mp2_cart_device::neogeo_kf2k2mp2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KF2K2MP2_CART, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_pcm2_prot(*this, "pcm2_prot")
-{}
+{
+}
-void neogeo_kf2k2mp2_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kf2k2mp2_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->kf2k2mp2_px_decrypt(cpuregion, cpuregion_size);
m_pcm2_prot->swap(ym_region, ym_region_size, 0);
diff --git a/src/devices/bus/neogeo/boot_kof2k2.h b/src/devices/bus/neogeo/boot_kof2k2.h
index 11539369d78..6faf1bdbfe3 100644
--- a/src/devices/bus/neogeo/boot_kof2k2.h
+++ b/src/devices/bus/neogeo/boot_kof2k2.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_BOOTKOF2K2_H
-#define __NEOGEO_BOOTKOF2K2_H
+#ifndef MAME_BUS_NEOGEO_BOOT_KOF2K2_H
+#define MAME_BUS_NEOGEO_BOOT_KOF2K2_H
+
+#pragma once
#include "slot.h"
#include "boot_misc.h"
@@ -15,13 +17,13 @@
kof2002b
**************************************************/
-class neogeo_kof2002b_cart : public neogeo_bootleg_cart
+class neogeo_kof2002b_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kof2002b_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kof2002b_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
virtual machine_config_constructor device_mconfig_additions() const override;
private:
@@ -30,20 +32,20 @@ private:
required_device<kof2002_prot_device> m_kof2k2_prot;
};
-extern const device_type NEOGEO_KOF2002B_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KOF2002B_CART, neogeo_kof2002b_cart_device)
/*************************************************
kf2k2mp
**************************************************/
-class neogeo_kf2k2mp_cart : public neogeo_bootleg_cart
+class neogeo_kf2k2mp_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kf2k2mp_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kf2k2mp_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
virtual machine_config_constructor device_mconfig_additions() const override;
private:
@@ -51,20 +53,20 @@ private:
required_device<pcm2_prot_device> m_pcm2_prot;
};
-extern const device_type NEOGEO_KF2K2MP_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KF2K2MP_CART, neogeo_kf2k2mp_cart_device)
/*************************************************
kf2k2mp2
**************************************************/
-class neogeo_kf2k2mp2_cart : public neogeo_bootleg_cart
+class neogeo_kf2k2mp2_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kf2k2mp2_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kf2k2mp2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
virtual machine_config_constructor device_mconfig_additions() const override;
private:
@@ -72,8 +74,8 @@ private:
required_device<pcm2_prot_device> m_pcm2_prot;
};
-extern const device_type NEOGEO_KF2K2MP2_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KF2K2MP2_CART, neogeo_kf2k2mp2_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_BOOT_KOF2K2_H
diff --git a/src/devices/bus/neogeo/boot_kof2k3.cpp b/src/devices/bus/neogeo/boot_kof2k3.cpp
index b5394a3a652..3b37d92f99b 100644
--- a/src/devices/bus/neogeo/boot_kof2k3.cpp
+++ b/src/devices/bus/neogeo/boot_kof2k3.cpp
@@ -19,17 +19,17 @@ static MACHINE_CONFIG_FRAGMENT( kof2k3bl_cart )
MCFG_KOF2K3BL_PROT_ADD("kof2k3bl_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_kf2k3bl_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_kf2k3bl_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( kof2k3bl_cart );
}
-machine_config_constructor neogeo_kf2k3pl_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_kf2k3pl_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( kof2k3bl_cart );
}
-machine_config_constructor neogeo_kf2k3upl_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_kf2k3upl_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( kof2k3bl_cart );
}
@@ -38,16 +38,17 @@ machine_config_constructor neogeo_kf2k3upl_cart::device_mconfig_additions() cons
kf2k3bl
**************************************************/
-const device_type NEOGEO_KF2K3BL_CART = device_creator<neogeo_kf2k3bl_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KF2K3BL_CART, neogeo_kf2k3bl_cart_device, "neocart_kf2k3bl", "Neo Geo KoF 2003 Bootleg Cart")
-neogeo_kf2k3bl_cart::neogeo_kf2k3bl_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KF2K3BL_CART, "Neo Geo KOF 2003 Bootleg Cart", tag, owner, clock, "neocart_kf2k3bl", __FILE__),
+neogeo_kf2k3bl_cart_device::neogeo_kf2k3bl_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KF2K3BL_CART, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_pcm2_prot(*this, "pcm2_prot"),
m_kof2k3bl_prot(*this, "kof2k3bl_prot")
-{}
+{
+}
-void neogeo_kf2k3bl_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kf2k3bl_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_cmc_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
m_pcm2_prot->swap(ym_region, ym_region_size, 5);
@@ -59,16 +60,17 @@ void neogeo_kf2k3bl_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kf2k3pl
**************************************************/
-const device_type NEOGEO_KF2K3PL_CART = device_creator<neogeo_kf2k3pl_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KF2K3PL_CART, neogeo_kf2k3pl_cart_device, "neocart_kf2k3pl", "Neo Geo KoF 2003 PL Cart")
-neogeo_kf2k3pl_cart::neogeo_kf2k3pl_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KF2K3PL_CART, "Neo Geo KOF 2003 PL Cart", tag, owner, clock, "neocart_kf2k3pl", __FILE__),
+neogeo_kf2k3pl_cart_device::neogeo_kf2k3pl_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KF2K3PL_CART, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_pcm2_prot(*this, "pcm2_prot"),
m_kof2k3bl_prot(*this, "kof2k3bl_prot")
-{}
+{
+}
-void neogeo_kf2k3pl_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kf2k3pl_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_cmc_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
m_pcm2_prot->swap(ym_region, ym_region_size, 5);
@@ -81,16 +83,17 @@ void neogeo_kf2k3pl_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kf2k3upl
**************************************************/
-const device_type NEOGEO_KF2K3UPL_CART = device_creator<neogeo_kf2k3upl_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KF2K3UPL_CART, neogeo_kf2k3upl_cart_device, "neocart_kf2k3upl", "Neo Geo KoF 2003 UPL Cart")
-neogeo_kf2k3upl_cart::neogeo_kf2k3upl_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KF2K3UPL_CART, "Neo Geo KOF 2003 UPL Cart", tag, owner, clock, "neocart_kf2k3upl", __FILE__),
+neogeo_kf2k3upl_cart_device::neogeo_kf2k3upl_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KF2K3UPL_CART, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_pcm2_prot(*this, "pcm2_prot"),
m_kof2k3bl_prot(*this, "kof2k3bl_prot")
-{}
+{
+}
-void neogeo_kf2k3upl_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kf2k3upl_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_cmc_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
m_pcm2_prot->swap(ym_region, ym_region_size, 5);
diff --git a/src/devices/bus/neogeo/boot_kof2k3.h b/src/devices/bus/neogeo/boot_kof2k3.h
index 4b7a0a9e911..631dc14e888 100644
--- a/src/devices/bus/neogeo/boot_kof2k3.h
+++ b/src/devices/bus/neogeo/boot_kof2k3.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_BOOTKOF2K3_H
-#define __NEOGEO_BOOTKOF2K3_H
+#ifndef MAME_BUS_NEOGEO_BOOT_KOF2K3_H
+#define MAME_BUS_NEOGEO_BOOT_KOF2K3_H
+
+#pragma once
#include "slot.h"
#include "boot_misc.h"
@@ -12,12 +14,12 @@
kf2k3bl
**************************************************/
-class neogeo_kf2k3bl_cart : public neogeo_bootleg_cart
+class neogeo_kf2k3bl_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kf2k3bl_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kf2k3bl_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -32,19 +34,19 @@ private:
required_device<kof2k3bl_prot_device> m_kof2k3bl_prot;
};
-extern const device_type NEOGEO_KF2K3BL_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KF2K3BL_CART, neogeo_kf2k3bl_cart_device)
/*************************************************
kf2k3pl
**************************************************/
-class neogeo_kf2k3pl_cart : public neogeo_bootleg_cart
+class neogeo_kf2k3pl_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kf2k3pl_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kf2k3pl_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -58,19 +60,19 @@ private:
required_device<kof2k3bl_prot_device> m_kof2k3bl_prot;
};
-extern const device_type NEOGEO_KF2K3PL_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KF2K3PL_CART, neogeo_kf2k3pl_cart_device)
/*************************************************
kf2k3upl
**************************************************/
-class neogeo_kf2k3upl_cart : public neogeo_bootleg_cart
+class neogeo_kf2k3upl_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kf2k3upl_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kf2k3upl_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -85,8 +87,8 @@ private:
required_device<kof2k3bl_prot_device> m_kof2k3bl_prot;
};
-extern const device_type NEOGEO_KF2K3UPL_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KF2K3UPL_CART, neogeo_kf2k3upl_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_BOOT_KOF2K3_H
diff --git a/src/devices/bus/neogeo/boot_misc.cpp b/src/devices/bus/neogeo/boot_misc.cpp
index 4740d770729..af41ba0adb3 100644
--- a/src/devices/bus/neogeo/boot_misc.cpp
+++ b/src/devices/bus/neogeo/boot_misc.cpp
@@ -13,32 +13,33 @@
//-------------------------------------------------
-// neogeo_bootleg_cart - constructor
+// neogeo_bootleg_cart_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_BOOTLEG_CART = device_creator<neogeo_bootleg_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_BOOTLEG_CART, neogeo_bootleg_cart_device, "neocart_boot", "Neo Geo Bootleg Protected Cart")
-neogeo_bootleg_cart::neogeo_bootleg_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source) :
- neogeo_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
+neogeo_bootleg_cart_device::neogeo_bootleg_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_rom_device(mconfig, type, tag, owner, clock),
m_prot(*this, "bootleg_prot")
-{}
+{
+}
-neogeo_bootleg_cart::neogeo_bootleg_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_BOOTLEG_CART, "Neo Geo Bootleg Protected Cart", tag, owner, clock, "neocart_boot", __FILE__),
- m_prot(*this, "bootleg_prot")
-{}
+neogeo_bootleg_cart_device::neogeo_bootleg_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_BOOTLEG_CART, tag, owner, clock)
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_bootleg_cart::device_start()
+void neogeo_bootleg_cart_device::device_start()
{
}
-void neogeo_bootleg_cart::device_reset()
+void neogeo_bootleg_cart_device::device_reset()
{
}
@@ -51,7 +52,7 @@ static MACHINE_CONFIG_FRAGMENT( bootleg_cart )
MCFG_NEOBOOT_PROT_ADD("bootleg_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_bootleg_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_bootleg_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( bootleg_cart );
}
@@ -62,14 +63,15 @@ machine_config_constructor neogeo_bootleg_cart::device_mconfig_additions() const
garoubl
**************************************************/
-const device_type NEOGEO_GAROUBL_CART = device_creator<neogeo_garoubl_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_GAROUBL_CART, neogeo_garoubl_cart_device, "neocart_garoubl", "Neo Geo Garou Bootleg Cart")
-neogeo_garoubl_cart::neogeo_garoubl_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_GAROUBL_CART, "Neo Geo Garou Bootleg Cart", tag, owner, clock, "neocart_garoubl", __FILE__)
-{}
+neogeo_garoubl_cart_device::neogeo_garoubl_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_GAROUBL_CART, tag, owner, clock)
+{
+}
-void neogeo_garoubl_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_garoubl_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->sx_decrypt(fix_region, fix_region_size, 2);
m_prot->cx_decrypt(spr_region, spr_region_size);
@@ -80,14 +82,15 @@ void neogeo_garoubl_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kof97oro
**************************************************/
-const device_type NEOGEO_KOF97ORO_CART = device_creator<neogeo_kof97oro_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KOF97ORO_CART, neogeo_kof97oro_cart_device, "neocart_kof97oro", "Neo Geo KoF 97 Orochi Bootleg Cart")
-neogeo_kof97oro_cart::neogeo_kof97oro_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KOF97ORO_CART, "Neo Geo KOF 97 Orochi Bootleg Cart", tag, owner, clock, "neocart_kof97oro", __FILE__)
-{}
+neogeo_kof97oro_cart_device::neogeo_kof97oro_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KOF97ORO_CART, tag, owner, clock)
+{
+}
-void neogeo_kof97oro_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kof97oro_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->kof97oro_px_decode(cpuregion, cpuregion_size);
m_prot->sx_decrypt(fix_region, fix_region_size,1);
@@ -99,14 +102,15 @@ void neogeo_kof97oro_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kf10thep
**************************************************/
-const device_type NEOGEO_KF10THEP_CART = device_creator<neogeo_kf10thep_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KF10THEP_CART, neogeo_kf10thep_cart_device, "neocart_kf10thep", "Neo Geo KoF 10th Ann. EP Bootleg Cart")
-neogeo_kf10thep_cart::neogeo_kf10thep_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KF10THEP_CART, "Neo Geo KOF 10th Ann. EP Bootleg Cart", tag, owner, clock, "neocart_kf10thep", __FILE__)
-{}
+neogeo_kf10thep_cart_device::neogeo_kf10thep_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KF10THEP_CART, tag, owner, clock)
+{
+}
-void neogeo_kf10thep_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kf10thep_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->kf10thep_px_decrypt(cpuregion, cpuregion_size);
m_prot->sx_decrypt(fix_region, fix_region_size, 1);
@@ -117,14 +121,15 @@ void neogeo_kf10thep_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kf2k5uni
**************************************************/
-const device_type NEOGEO_KF2K5UNI_CART = device_creator<neogeo_kf2k5uni_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KF2K5UNI_CART, neogeo_kf2k5uni_cart_device, "neocart_kf2k5uni", "Neo Geo KoF 2005 Unique Bootleg Cart")
-neogeo_kf2k5uni_cart::neogeo_kf2k5uni_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KF2K5UNI_CART, "Neo Geo KOF 2005 Unique Bootleg Cart", tag, owner, clock, "neocart_kf2k5uni", __FILE__)
-{}
+neogeo_kf2k5uni_cart_device::neogeo_kf2k5uni_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KF2K5UNI_CART, tag, owner, clock)
+{
+}
-void neogeo_kf2k5uni_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kf2k5uni_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->kf2k5uni_px_decrypt(cpuregion, cpuregion_size);
m_prot->kf2k5uni_sx_decrypt(fix_region, fix_region_size);
@@ -136,14 +141,15 @@ void neogeo_kf2k5uni_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kf2k4se
**************************************************/
-const device_type NEOGEO_KF2K4SE_CART = device_creator<neogeo_kf2k4se_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KF2K4SE_CART, neogeo_kf2k4se_cart_device, "neocart_kf2k4se", "Neo Geo KoF 2004 SE Bootleg Cart")
-neogeo_kf2k4se_cart::neogeo_kf2k4se_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KF2K4SE_CART, "Neo Geo KOF 2004 SE Bootleg Cart", tag, owner, clock, "neocart_kf2k4se", __FILE__)
-{}
+neogeo_kf2k4se_cart_device::neogeo_kf2k4se_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KF2K4SE_CART, tag, owner, clock)
+{
+}
-void neogeo_kf2k4se_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kf2k4se_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->decrypt_kof2k4se_68k(cpuregion, cpuregion_size);
}
@@ -153,13 +159,14 @@ void neogeo_kf2k4se_cart::decrypt_all(DECRYPT_ALL_PARAMS)
lans2004
**************************************************/
-const device_type NEOGEO_LANS2004_CART = device_creator<neogeo_lans2004_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_LANS2004_CART, neogeo_lans2004_cart_device, "neocart_lans2004", "Neo Geo Lansquenet 2004 Bootleg Cart")
-neogeo_lans2004_cart::neogeo_lans2004_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_LANS2004_CART, "Neo Geo Lansquenet 2004 Bootleg Cart", tag, owner, clock, "neocart_lans2004", __FILE__)
-{}
+neogeo_lans2004_cart_device::neogeo_lans2004_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_LANS2004_CART, tag, owner, clock)
+{
+}
-void neogeo_lans2004_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_lans2004_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->lans2004_decrypt_68k(cpuregion, cpuregion_size);
m_prot->lans2004_vx_decrypt(ym_region, ym_region_size);
@@ -172,13 +179,14 @@ void neogeo_lans2004_cart::decrypt_all(DECRYPT_ALL_PARAMS)
samsho5b
**************************************************/
-const device_type NEOGEO_SAMSHO5B_CART = device_creator<neogeo_samsho5b_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_SAMSHO5B_CART, neogeo_samsho5b_cart_device, "neocart_samsho5b", "Neo Geo Samurai Shodown 5 Bootleg Cart")
-neogeo_samsho5b_cart::neogeo_samsho5b_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_SAMSHO5B_CART, "Neo Geo Samurai Shodown 5 Bootleg Cart", tag, owner, clock, "neocart_samsho5b", __FILE__)
-{}
+neogeo_samsho5b_cart_device::neogeo_samsho5b_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_SAMSHO5B_CART, tag, owner, clock)
+{
+}
-void neogeo_samsho5b_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_samsho5b_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->samsho5b_px_decrypt(cpuregion, cpuregion_size);
m_prot->samsho5b_vx_decrypt(ym_region, ym_region_size);
@@ -191,14 +199,15 @@ void neogeo_samsho5b_cart::decrypt_all(DECRYPT_ALL_PARAMS)
mslug3b6
**************************************************/
-const device_type NEOGEO_MSLUG3B6_CART = device_creator<neogeo_mslug3b6_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_MSLUG3B6_CART, neogeo_mslug3b6_cart_device, "neocart_mslug3b6", "Neo Geo Metal Slug 6 Bootleg Cart")
-neogeo_mslug3b6_cart::neogeo_mslug3b6_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_MSLUG3B6_CART, "Neo Geo Metal Slug 6 Bootleg Cart", tag, owner, clock, "neocart_mslug3b6", __FILE__),
+neogeo_mslug3b6_cart_device::neogeo_mslug3b6_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_MSLUG3B6_CART, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot")
-{}
+{
+}
-void neogeo_mslug3b6_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_mslug3b6_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->sx_decrypt(fix_region, fix_region_size, 2);
m_cmc_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, MSLUG3_GFX_KEY);
@@ -209,7 +218,7 @@ static MACHINE_CONFIG_FRAGMENT( mslug3b6_cart )
MCFG_NEOBOOT_PROT_ADD("bootleg_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_mslug3b6_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_mslug3b6_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( mslug3b6_cart );
}
@@ -219,15 +228,16 @@ machine_config_constructor neogeo_mslug3b6_cart::device_mconfig_additions() cons
ms5plus
**************************************************/
-const device_type NEOGEO_MS5PLUS_CART = device_creator<neogeo_ms5plus_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_MS5PLUS_CART, neogeo_ms5plus_cart_device, "neocart_ms5plus", "Neo Geo Metal Slug 5 Plus Bootleg Cart")
-neogeo_ms5plus_cart::neogeo_ms5plus_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_MS5PLUS_CART, "Neo Geo Metal Slug 5 Plus Bootleg Cart", tag, owner, clock, "neocart_ms5plus", __FILE__),
+neogeo_ms5plus_cart_device::neogeo_ms5plus_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_MS5PLUS_CART, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_pcm2_prot(*this, "pcm2_prot")
-{}
+{
+}
-void neogeo_ms5plus_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_ms5plus_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
m_cmc_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, MSLUG5_GFX_KEY);
@@ -241,7 +251,7 @@ static MACHINE_CONFIG_FRAGMENT( ms5plus_cart )
MCFG_PCM2_PROT_ADD("pcm2_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_ms5plus_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_ms5plus_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( ms5plus_cart );
}
@@ -251,12 +261,13 @@ machine_config_constructor neogeo_ms5plus_cart::device_mconfig_additions() const
kog
**************************************************/
-const device_type NEOGEO_KOG_CART = device_creator<neogeo_kog_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KOG_CART, neogeo_kog_cart_device, "neocart_kog", "Neo Geo King of Gladiators Bootleg Cart")
-neogeo_kog_cart::neogeo_kog_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_KOG_CART, "Neo Geo King of Gladiators Bootleg Cart", tag, owner, clock, "neocart_kog", __FILE__),
+neogeo_kog_cart_device::neogeo_kog_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_KOG_CART, tag, owner, clock),
m_jumper(*this, "JUMPER")
-{}
+{
+}
static INPUT_PORTS_START( kog )
@@ -269,18 +280,18 @@ static INPUT_PORTS_START( kog )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
-ioport_constructor neogeo_kog_cart::device_input_ports() const
+ioport_constructor neogeo_kog_cart_device::device_input_ports() const
{
return INPUT_PORTS_NAME( kog );
}
-READ16_MEMBER(neogeo_kog_cart::protection_r)
+READ16_MEMBER(neogeo_kog_cart_device::protection_r)
{
return m_jumper->read();
}
-void neogeo_kog_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kog_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->kog_px_decrypt(cpuregion, cpuregion_size);
m_prot->sx_decrypt(fix_region, fix_region_size, 1);
diff --git a/src/devices/bus/neogeo/boot_misc.h b/src/devices/bus/neogeo/boot_misc.h
index b42da3b4edb..5f625eda2d3 100644
--- a/src/devices/bus/neogeo/boot_misc.h
+++ b/src/devices/bus/neogeo/boot_misc.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_BOOTCART_H
-#define __NEOGEO_BOOTCART_H
+#ifndef MAME_BUS_NEOGEO_BOOT_MISC_H
+#define MAME_BUS_NEOGEO_BOOT_MISC_H
#include "slot.h"
#include "rom.h"
@@ -9,146 +9,148 @@
#include "prot_cmc.h"
#include "prot_pcm2.h"
-// ======================> neogeo_bootleg_cart
+// ======================> neogeo_bootleg_cart_device
-class neogeo_bootleg_cart : public neogeo_rom_device
+class neogeo_bootleg_cart_device : public neogeo_rom_device
{
public:
// construction/destruction
- neogeo_bootleg_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source);
- neogeo_bootleg_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
+ neogeo_bootleg_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
+ virtual void decrypt_all(DECRYPT_ALL_PARAMS) override { }
+ virtual int get_fixed_bank_type() override { return 0; }
+
+protected:
+ neogeo_bootleg_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock);
- virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {}
- virtual int get_fixed_bank_type(void) override { return 0; }
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
required_device<neoboot_prot_device> m_prot;
};
// device type definition
-extern const device_type NEOGEO_BOOTLEG_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_BOOTLEG_CART, neogeo_bootleg_cart_device)
/*************************************************
garoubl
**************************************************/
-class neogeo_garoubl_cart : public neogeo_bootleg_cart
+class neogeo_garoubl_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_garoubl_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_garoubl_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_GAROUBL_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_GAROUBL_CART, neogeo_garoubl_cart_device)
/*************************************************
kof97oro
**************************************************/
-class neogeo_kof97oro_cart : public neogeo_bootleg_cart
+class neogeo_kof97oro_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kof97oro_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kof97oro_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_KOF97ORO_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KOF97ORO_CART, neogeo_kof97oro_cart_device)
/*************************************************
kf10thep
**************************************************/
-class neogeo_kf10thep_cart : public neogeo_bootleg_cart
+class neogeo_kf10thep_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kf10thep_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kf10thep_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_KF10THEP_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KF10THEP_CART, neogeo_kf10thep_cart_device)
/*************************************************
kf2k5uni
**************************************************/
-class neogeo_kf2k5uni_cart : public neogeo_bootleg_cart
+class neogeo_kf2k5uni_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kf2k5uni_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kf2k5uni_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_KF2K5UNI_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KF2K5UNI_CART, neogeo_kf2k5uni_cart_device)
/*************************************************
kf2k4se
**************************************************/
-class neogeo_kf2k4se_cart : public neogeo_bootleg_cart
+class neogeo_kf2k4se_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kf2k4se_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kf2k4se_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_KF2K4SE_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KF2K4SE_CART, neogeo_kf2k4se_cart_device)
/*************************************************
lans2004
**************************************************/
-class neogeo_lans2004_cart : public neogeo_bootleg_cart
+class neogeo_lans2004_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_lans2004_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_lans2004_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_LANS2004_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_LANS2004_CART, neogeo_lans2004_cart_device)
/*************************************************
samsho5b
**************************************************/
-class neogeo_samsho5b_cart : public neogeo_bootleg_cart
+class neogeo_samsho5b_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_samsho5b_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_samsho5b_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_SAMSHO5B_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SAMSHO5B_CART, neogeo_samsho5b_cart_device)
/*************************************************
mslug3b6
**************************************************/
-class neogeo_mslug3b6_cart : public neogeo_bootleg_cart
+class neogeo_mslug3b6_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_mslug3b6_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_mslug3b6_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -156,18 +158,18 @@ private:
required_device<cmc_prot_device> m_cmc_prot;
};
-extern const device_type NEOGEO_MSLUG3B6_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_MSLUG3B6_CART, neogeo_mslug3b6_cart_device)
/*************************************************
ms5plus
**************************************************/
-class neogeo_ms5plus_cart : public neogeo_bootleg_cart
+class neogeo_ms5plus_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_ms5plus_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_ms5plus_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -179,29 +181,29 @@ private:
required_device<pcm2_prot_device> m_pcm2_prot;
};
-extern const device_type NEOGEO_MS5PLUS_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_MS5PLUS_CART, neogeo_ms5plus_cart_device)
/*************************************************
kog
**************************************************/
-class neogeo_kog_cart : public neogeo_bootleg_cart
+class neogeo_kog_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_kog_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kog_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ioport_constructor device_input_ports() const override;
virtual DECLARE_READ16_MEMBER(protection_r) override;
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
private:
required_ioport m_jumper;
};
-extern const device_type NEOGEO_KOG_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_KOG_CART, neogeo_kog_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_BOOT_MISC_H
diff --git a/src/devices/bus/neogeo/boot_svc.cpp b/src/devices/bus/neogeo/boot_svc.cpp
index 9f9a9fdce35..c39f4b778d1 100644
--- a/src/devices/bus/neogeo/boot_svc.cpp
+++ b/src/devices/bus/neogeo/boot_svc.cpp
@@ -16,14 +16,15 @@
svcboot
**************************************************/
-const device_type NEOGEO_SVCBOOT_CART = device_creator<neogeo_svcboot_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_SVCBOOT_CART, neogeo_svcboot_cart_device, "neocart_svcboot", "Neo Geo SVC Bootleg Cart")
-neogeo_svcboot_cart::neogeo_svcboot_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_SVCBOOT_CART, "Neo Geo SVC Bootleg Cart", tag, owner, clock, "neocart_svcboot", __FILE__),
+neogeo_svcboot_cart_device::neogeo_svcboot_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_SVCBOOT_CART, tag, owner, clock),
m_pvc_prot(*this, "pvc_prot")
-{}
+{
+}
-void neogeo_svcboot_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_svcboot_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->svcboot_px_decrypt(cpuregion, cpuregion_size);
m_prot->svcboot_cx_decrypt(spr_region, spr_region_size);
@@ -34,7 +35,7 @@ static MACHINE_CONFIG_FRAGMENT( svcboot_cart )
MCFG_PVC_PROT_ADD("pvc_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_svcboot_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_svcboot_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( svcboot_cart );
}
@@ -44,13 +45,14 @@ machine_config_constructor neogeo_svcboot_cart::device_mconfig_additions() const
svcplus
**************************************************/
-const device_type NEOGEO_SVCPLUS_CART = device_creator<neogeo_svcplus_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_SVCPLUS_CART, neogeo_svcplus_cart_device, "neocart_svcplus", "Neo Geo SVC Plus Bootleg Cart")
-neogeo_svcplus_cart::neogeo_svcplus_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_SVCPLUS_CART, "Neo Geo SVC Plus Bootleg Cart", tag, owner, clock, "neocart_svcplus", __FILE__)
-{}
+neogeo_svcplus_cart_device::neogeo_svcplus_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_SVCPLUS_CART, tag, owner, clock)
+{
+}
-void neogeo_svcplus_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_svcplus_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->svcplus_px_decrypt(cpuregion, cpuregion_size);
m_prot->svcboot_cx_decrypt(spr_region, spr_region_size);
@@ -63,13 +65,15 @@ void neogeo_svcplus_cart::decrypt_all(DECRYPT_ALL_PARAMS)
svcplusa
**************************************************/
-const device_type NEOGEO_SVCPLUSA_CART = device_creator<neogeo_svcplusa_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_SVCPLUSA_CART, neogeo_svcplusa_cart_device, "neocart_svcplusa", "Neo Geo SVC Plus Alt Bootleg Cart")
+
+neogeo_svcplusa_cart_device::neogeo_svcplusa_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_SVCPLUSA_CART, tag, owner, clock)
+{
+}
-neogeo_svcplusa_cart::neogeo_svcplusa_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_SVCPLUSA_CART, "Neo Geo SVC Plus Alt Bootleg Cart", tag, owner, clock, "neocart_svcplusa", __FILE__)
-{}
-void neogeo_svcplusa_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_svcplusa_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->svcplusa_px_decrypt(cpuregion, cpuregion_size);
m_prot->svcboot_cx_decrypt(spr_region, spr_region_size);
@@ -80,14 +84,15 @@ void neogeo_svcplusa_cart::decrypt_all(DECRYPT_ALL_PARAMS)
svcsplus
**************************************************/
-const device_type NEOGEO_SVCSPLUS_CART = device_creator<neogeo_svcsplus_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_SVCSPLUS_CART, neogeo_svcsplus_cart_device, "neocart_svcsplus", "Neo Geo SVC S.Plus Bootleg Cart")
-neogeo_svcsplus_cart::neogeo_svcsplus_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_bootleg_cart(mconfig, NEOGEO_SVCSPLUS_CART, "Neo Geo SVC S.Plus Bootleg Cart", tag, owner, clock, "neocart_svcsplus", __FILE__),
+neogeo_svcsplus_cart_device::neogeo_svcsplus_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_bootleg_cart_device(mconfig, NEOGEO_SVCSPLUS_CART, tag, owner, clock),
m_pvc_prot(*this, "pvc_prot")
-{}
+{
+}
-void neogeo_svcsplus_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_svcsplus_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->svcsplus_px_decrypt(cpuregion, cpuregion_size);
m_prot->sx_decrypt(fix_region, fix_region_size, 2);
@@ -101,7 +106,7 @@ static MACHINE_CONFIG_FRAGMENT( svcsplus_cart )
MCFG_PVC_PROT_ADD("pvc_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_svcsplus_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_svcsplus_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( svcsplus_cart );
}
diff --git a/src/devices/bus/neogeo/boot_svc.h b/src/devices/bus/neogeo/boot_svc.h
index f0c676c8359..42c99e28d27 100644
--- a/src/devices/bus/neogeo/boot_svc.h
+++ b/src/devices/bus/neogeo/boot_svc.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_BOOTSVC_H
-#define __NEOGEO_BOOTSVC_H
+#ifndef MAME_BUS_NEOGEO_BOOT_SVC_H
+#define MAME_BUS_NEOGEO_BOOT_SVC_H
+
+#pragma once
#include "slot.h"
#include "boot_misc.h"
@@ -12,10 +14,10 @@
svcboot
**************************************************/
-class neogeo_svcboot_cart : public neogeo_bootleg_cart
+class neogeo_svcboot_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_svcboot_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_svcboot_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -23,52 +25,52 @@ public:
virtual DECLARE_READ16_MEMBER(protection_r) override { return m_pvc_prot->protection_r(space, offset, mem_mask); }
virtual DECLARE_WRITE16_MEMBER(protection_w) override { m_pvc_prot->protection_w(space, offset, data, mem_mask); }
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
private:
required_device<pvc_prot_device> m_pvc_prot;
};
-extern const device_type NEOGEO_SVCBOOT_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SVCBOOT_CART, neogeo_svcboot_cart_device)
/*************************************************
svcplus
**************************************************/
-class neogeo_svcplus_cart : public neogeo_bootleg_cart
+class neogeo_svcplus_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_svcplus_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_svcplus_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_SVCPLUS_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SVCPLUS_CART, neogeo_svcplus_cart_device)
/*************************************************
svcplusa
**************************************************/
-class neogeo_svcplusa_cart : public neogeo_bootleg_cart
+class neogeo_svcplusa_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_svcplusa_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_svcplusa_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_SVCPLUSA_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SVCPLUSA_CART, neogeo_svcplusa_cart_device)
/*************************************************
svcsplus
**************************************************/
-class neogeo_svcsplus_cart : public neogeo_bootleg_cart
+class neogeo_svcsplus_cart_device : public neogeo_bootleg_cart_device
{
public:
- neogeo_svcsplus_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_svcsplus_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -76,13 +78,13 @@ public:
virtual DECLARE_READ16_MEMBER(protection_r) override { return m_pvc_prot->protection_r(space, offset, mem_mask); }
virtual DECLARE_WRITE16_MEMBER(protection_w) override { m_pvc_prot->protection_w(space, offset, data, mem_mask); }
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
private:
required_device<pvc_prot_device> m_pvc_prot;
};
-extern const device_type NEOGEO_SVCSPLUS_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SVCSPLUS_CART, neogeo_svcsplus_cart_device)
diff --git a/src/devices/bus/neogeo/carts.h b/src/devices/bus/neogeo/carts.h
index abc0e0cabd5..f66b881a9b7 100644
--- a/src/devices/bus/neogeo/carts.h
+++ b/src/devices/bus/neogeo/carts.h
@@ -4,14 +4,13 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NEOGEO_CARTS_H__
-#define __NEOGEO_CARTS_H__
+#ifndef MAME_BUS_NEOGEO_CARTS_H
+#define MAME_BUS_NEOGEO_CARTS_H
+#pragma once
// supported devices
SLOT_INTERFACE_EXTERN(neogeo_cart);
-#endif // __NEOGEO_CARTS_H__
+#endif // MAME_BUS_NEOGEO_CARTS_H
diff --git a/src/devices/bus/neogeo/cmc.cpp b/src/devices/bus/neogeo/cmc.cpp
index a630d9fe0a3..6107676a23c 100644
--- a/src/devices/bus/neogeo/cmc.cpp
+++ b/src/devices/bus/neogeo/cmc.cpp
@@ -13,32 +13,33 @@
//-------------------------------------------------
-// neogeo_cmc_cart - constructor
+// neogeo_cmc_cart_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_CMC_CART = device_creator<neogeo_cmc_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_CART, neogeo_cmc_cart_device, "neocart_cmc", "Neo Geo CMC Cart")
-neogeo_cmc_cart::neogeo_cmc_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source) :
- neogeo_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_prot(*this, "cmc_prot")
-{}
-
-neogeo_cmc_cart::neogeo_cmc_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_CMC_CART, "Neo Geo CMC Cart", tag, owner, clock, "neocart_cmc", __FILE__),
+neogeo_cmc_cart_device::neogeo_cmc_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_rom_device(mconfig, type, tag, owner, clock),
m_prot(*this, "cmc_prot")
-{}
+{
+}
+
+neogeo_cmc_cart_device::neogeo_cmc_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_CART, tag, owner, clock)
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_cmc_cart::device_start()
+void neogeo_cmc_cart_device::device_start()
{
}
-void neogeo_cmc_cart::device_reset()
+void neogeo_cmc_cart_device::device_reset()
{
}
@@ -47,7 +48,7 @@ static MACHINE_CONFIG_FRAGMENT( cmc_cart )
MCFG_CMC_PROT_ADD("cmc_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_cmc_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_cmc_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cmc_cart );
}
@@ -57,13 +58,14 @@ machine_config_constructor neogeo_cmc_cart::device_mconfig_additions() const
zupapa
**************************************************/
-const device_type NEOGEO_CMC_ZUPAPA_CART = device_creator<neogeo_cmc_zupapa_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_ZUPAPA_CART, neogeo_cmc_zupapa_cart_device, "neocart_zupapa", "Neo Geo Zupapa CMC42 Cart")
-neogeo_cmc_zupapa_cart::neogeo_cmc_zupapa_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_ZUPAPA_CART, "Neo Geo Zupapa CMC42 Cart", tag, owner, clock, "neocart_zupapa", __FILE__)
-{}
+neogeo_cmc_zupapa_cart_device::neogeo_cmc_zupapa_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_ZUPAPA_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_zupapa_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_zupapa_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, ZUPAPA_GFX_KEY);
m_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
@@ -74,13 +76,14 @@ void neogeo_cmc_zupapa_cart::decrypt_all(DECRYPT_ALL_PARAMS)
mslug3h
**************************************************/
-const device_type NEOGEO_CMC_MSLUG3H_CART = device_creator<neogeo_cmc_mslug3h_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_MSLUG3H_CART, neogeo_cmc_mslug3h_cart_device, "neocart_mslug3h", "Neo Geo Metal Slug 3 AES CMC42 Cart")
-neogeo_cmc_mslug3h_cart::neogeo_cmc_mslug3h_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_MSLUG3H_CART, "Neo Geo Metal Slug 3 AES CMC42 Cart", tag, owner, clock, "neocart_mslug3h", __FILE__)
-{}
+neogeo_cmc_mslug3h_cart_device::neogeo_cmc_mslug3h_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_MSLUG3H_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_mslug3h_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_mslug3h_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, MSLUG3_GFX_KEY);
m_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
@@ -91,13 +94,14 @@ void neogeo_cmc_mslug3h_cart::decrypt_all(DECRYPT_ALL_PARAMS)
ganryu
**************************************************/
-const device_type NEOGEO_CMC_GANRYU_CART = device_creator<neogeo_cmc_ganryu_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_GANRYU_CART, neogeo_cmc_ganryu_cart_device, "neocart_ganryu", "Neo Geo Ganryu CMC42 Cart")
-neogeo_cmc_ganryu_cart::neogeo_cmc_ganryu_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_GANRYU_CART, "Neo Geo Ganryu CMC42 Cart", tag, owner, clock, "neocart_ganryu", __FILE__)
-{}
+neogeo_cmc_ganryu_cart_device::neogeo_cmc_ganryu_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_GANRYU_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_ganryu_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_ganryu_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, GANRYU_GFX_KEY);
m_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
@@ -108,13 +112,14 @@ void neogeo_cmc_ganryu_cart::decrypt_all(DECRYPT_ALL_PARAMS)
s1945p
**************************************************/
-const device_type NEOGEO_CMC_S1945P_CART = device_creator<neogeo_cmc_s1945p_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_S1945P_CART, neogeo_cmc_s1945p_cart_device, "neocart_s1945p", "Neo Geo Strikers 1945 Plus CMC42 Cart")
-neogeo_cmc_s1945p_cart::neogeo_cmc_s1945p_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_S1945P_CART, "Neo Geo Strikers 1945 Plus CMC42 Cart", tag, owner, clock, "neocart_s1945p", __FILE__)
-{}
+neogeo_cmc_s1945p_cart_device::neogeo_cmc_s1945p_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_S1945P_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_s1945p_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_s1945p_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, S1945P_GFX_KEY);
m_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
@@ -124,13 +129,14 @@ void neogeo_cmc_s1945p_cart::decrypt_all(DECRYPT_ALL_PARAMS)
preisle2
**************************************************/
-const device_type NEOGEO_CMC_PREISLE2_CART = device_creator<neogeo_cmc_preisle2_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_PREISLE2_CART, neogeo_cmc_preisle2_cart_device, "neocart_preisle2", "Neo Geo Prehistoric Isle 2 CMC42 Cart")
-neogeo_cmc_preisle2_cart::neogeo_cmc_preisle2_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_PREISLE2_CART, "Neo Geo Prehistorik Isle 2 CMC42 Cart", tag, owner, clock, "neocart_preisle2", __FILE__)
-{}
+neogeo_cmc_preisle2_cart_device::neogeo_cmc_preisle2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_PREISLE2_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_preisle2_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_preisle2_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, PREISLE2_GFX_KEY);
m_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
@@ -140,13 +146,14 @@ void neogeo_cmc_preisle2_cart::decrypt_all(DECRYPT_ALL_PARAMS)
bangbead
**************************************************/
-const device_type NEOGEO_CMC_BANGBEAD_CART = device_creator<neogeo_cmc_bangbead_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_BANGBEAD_CART, neogeo_cmc_bangbead_cart_device, "neocart_bangbead", "Neo Geo Bangbead CMC42 Cart")
-neogeo_cmc_bangbead_cart::neogeo_cmc_bangbead_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_BANGBEAD_CART, "Neo Geo Bangbead CMC42 Cart", tag, owner, clock, "neocart_bangbead", __FILE__)
-{}
+neogeo_cmc_bangbead_cart_device::neogeo_cmc_bangbead_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_BANGBEAD_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_bangbead_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_bangbead_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, BANGBEAD_GFX_KEY);
m_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
@@ -156,13 +163,14 @@ void neogeo_cmc_bangbead_cart::decrypt_all(DECRYPT_ALL_PARAMS)
ntd
**************************************************/
-const device_type NEOGEO_CMC_NITD_CART = device_creator<neogeo_cmc_nitd_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_NITD_CART, neogeo_cmc_nitd_cart_device, "neocart_nitd", "Neo Geo NITD CMC42 Cart")
-neogeo_cmc_nitd_cart::neogeo_cmc_nitd_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_NITD_CART, "Neo Geo NITD CMC42 Cart", tag, owner, clock, "neocart_nitd", __FILE__)
-{}
+neogeo_cmc_nitd_cart_device::neogeo_cmc_nitd_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_NITD_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_nitd_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_nitd_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, NITD_GFX_KEY);
m_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
@@ -173,13 +181,14 @@ void neogeo_cmc_nitd_cart::decrypt_all(DECRYPT_ALL_PARAMS)
sengoku3
**************************************************/
-const device_type NEOGEO_CMC_SENGOKU3_CART = device_creator<neogeo_cmc_sengoku3_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_SENGOKU3_CART, neogeo_cmc_sengoku3_cart_device, "neocart_sengoku3", "Neo Geo Sengoku 3 CMC42 Cart")
-neogeo_cmc_sengoku3_cart::neogeo_cmc_sengoku3_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_SENGOKU3_CART, "Neo Geo Sengoku 3 CMC42 Cart", tag, owner, clock, "neocart_sengoku3", __FILE__)
-{}
+neogeo_cmc_sengoku3_cart_device::neogeo_cmc_sengoku3_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_SENGOKU3_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_sengoku3_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_sengoku3_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, SENGOKU3_GFX_KEY);
m_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
@@ -189,13 +198,14 @@ void neogeo_cmc_sengoku3_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kof99k
**************************************************/
-const device_type NEOGEO_CMC_KOF99K_CART = device_creator<neogeo_cmc_kof99k_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_KOF99K_CART, neogeo_cmc_kof99k_cart_device, "neocart_kof99k", "Neo Geo KoF 99 Korea CMC42 Cart")
-neogeo_cmc_kof99k_cart::neogeo_cmc_kof99k_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_KOF99K_CART, "Neo Geo KOF 99 Korea CMC42 Cart", tag, owner, clock, "neocart_kof99k", __FILE__)
-{}
+neogeo_cmc_kof99k_cart_device::neogeo_cmc_kof99k_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_KOF99K_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_kof99k_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_kof99k_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, KOF99_GFX_KEY);
m_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
@@ -206,13 +216,14 @@ void neogeo_cmc_kof99k_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kof2001
**************************************************/
-const device_type NEOGEO_CMC_KOF2001_CART = device_creator<neogeo_cmc_kof2001_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_KOF2001_CART, neogeo_cmc_kof2001_cart_device, "neocart_kof2001", "Neo Geo KoF 2001 CMC50 Cart")
-neogeo_cmc_kof2001_cart::neogeo_cmc_kof2001_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_KOF2001_CART, "Neo Geo KOF 2001 CMC50 Cart", tag, owner, clock, "neocart_kof2001", __FILE__)
-{}
+neogeo_cmc_kof2001_cart_device::neogeo_cmc_kof2001_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_KOF2001_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_kof2001_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_kof2001_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
m_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, KOF2001_GFX_KEY);
@@ -223,13 +234,14 @@ void neogeo_cmc_kof2001_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kof2000n
**************************************************/
-const device_type NEOGEO_CMC_KOF2000N_CART = device_creator<neogeo_cmc_kof2000n_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_KOF2000N_CART, neogeo_cmc_kof2000n_cart_device, "neocart_kof2000n", "Neo Geo KoF 2000 CMC50 Cart")
-neogeo_cmc_kof2000n_cart::neogeo_cmc_kof2000n_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_KOF2000N_CART, "Neo Geo KOF 2000 CMC50 Cart", tag, owner, clock, "neocart_kof2000n", __FILE__)
-{}
+neogeo_cmc_kof2000n_cart_device::neogeo_cmc_kof2000n_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_KOF2000N_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_kof2000n_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_kof2000n_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
m_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, KOF2000_GFX_KEY);
@@ -241,24 +253,25 @@ void neogeo_cmc_kof2000n_cart::decrypt_all(DECRYPT_ALL_PARAMS)
jockeygp
**************************************************/
-const device_type NEOGEO_CMC_JOCKEYGP_CART = device_creator<neogeo_cmc_jockeygp_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_CMC_JOCKEYGP_CART, neogeo_cmc_jockeygp_cart_device, "neocart_jockeygp", "Neo Geo Jockey GP CMC50 Cart")
-neogeo_cmc_jockeygp_cart::neogeo_cmc_jockeygp_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_cmc_cart(mconfig, NEOGEO_CMC_JOCKEYGP_CART, "Neo Geo Jockey GP CMC50 Cart", tag, owner, clock, "neocart_jockeygp", __FILE__)
-{}
+neogeo_cmc_jockeygp_cart_device::neogeo_cmc_jockeygp_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_cmc_cart_device(mconfig, NEOGEO_CMC_JOCKEYGP_CART, tag, owner, clock)
+{
+}
-void neogeo_cmc_jockeygp_cart::device_start()
+void neogeo_cmc_jockeygp_cart_device::device_start()
{
save_item(NAME(m_ram));
}
-void neogeo_cmc_jockeygp_cart::device_reset()
+void neogeo_cmc_jockeygp_cart_device::device_reset()
{
memset(m_ram, 0, 0x2000);
}
-void neogeo_cmc_jockeygp_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_cmc_jockeygp_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
m_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, JOCKEYGP_GFX_KEY);
diff --git a/src/devices/bus/neogeo/cmc.h b/src/devices/bus/neogeo/cmc.h
index 7ee808ad08c..78d0e29326d 100644
--- a/src/devices/bus/neogeo/cmc.h
+++ b/src/devices/bus/neogeo/cmc.h
@@ -1,200 +1,222 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_CMC_H
-#define __NEOGEO_CMC_H
+#ifndef MAME_BUS_NEOGEO_CMC_H
+#define MAME_BUS_NEOGEO_CMC_H
+
+#pragma once
#include "slot.h"
#include "rom.h"
#include "prot_cmc.h"
-// ======================> neogeo_cmc_cart
+// ======================> neogeo_cmc_cart_device
-class neogeo_cmc_cart : public neogeo_rom_device
+class neogeo_cmc_cart_device : public neogeo_rom_device
{
public:
// construction/destruction
- neogeo_cmc_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source);
- neogeo_cmc_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
+ neogeo_cmc_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
- virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {}
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual void decrypt_all(DECRYPT_ALL_PARAMS) override { }
+ virtual int get_fixed_bank_type() override { return 0; }
- required_device<cmc_prot_device> m_prot;
-};
+protected:
+ neogeo_cmc_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock);
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ required_device<cmc_prot_device> m_prot;
+};
// device type definition
-extern const device_type NEOGEO_CMC_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_CART, neogeo_cmc_cart_device)
/*************************************************
zupapa
**************************************************/
-class neogeo_cmc_zupapa_cart : public neogeo_cmc_cart
+class neogeo_cmc_zupapa_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_zupapa_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_zupapa_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_CMC_ZUPAPA_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_ZUPAPA_CART, neogeo_cmc_zupapa_cart_device)
+
/*************************************************
mslug3h
**************************************************/
-class neogeo_cmc_mslug3h_cart : public neogeo_cmc_cart
+class neogeo_cmc_mslug3h_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_mslug3h_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_mslug3h_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_CMC_MSLUG3H_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_MSLUG3H_CART, neogeo_cmc_mslug3h_cart_device)
/*************************************************
ganryu
**************************************************/
-class neogeo_cmc_ganryu_cart : public neogeo_cmc_cart
+class neogeo_cmc_ganryu_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_ganryu_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_ganryu_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_CMC_GANRYU_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_GANRYU_CART, neogeo_cmc_ganryu_cart_device)
+
/*************************************************
s1945p
**************************************************/
-class neogeo_cmc_s1945p_cart : public neogeo_cmc_cart
+class neogeo_cmc_s1945p_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_s1945p_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_s1945p_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_CMC_S1945P_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_S1945P_CART, neogeo_cmc_s1945p_cart_device)
/*************************************************
preisle2
**************************************************/
-class neogeo_cmc_preisle2_cart : public neogeo_cmc_cart
+class neogeo_cmc_preisle2_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_preisle2_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_preisle2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_CMC_PREISLE2_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_PREISLE2_CART, neogeo_cmc_preisle2_cart_device)
+
/*************************************************
bangbead
**************************************************/
-class neogeo_cmc_bangbead_cart : public neogeo_cmc_cart
+class neogeo_cmc_bangbead_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_bangbead_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_bangbead_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_CMC_BANGBEAD_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_BANGBEAD_CART, neogeo_cmc_bangbead_cart_device)
/*************************************************
nitd
**************************************************/
-class neogeo_cmc_nitd_cart : public neogeo_cmc_cart
+class neogeo_cmc_nitd_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_nitd_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_nitd_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_CMC_NITD_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_NITD_CART, neogeo_cmc_nitd_cart_device)
+
/*************************************************
sengoku3
**************************************************/
-class neogeo_cmc_sengoku3_cart : public neogeo_cmc_cart
+class neogeo_cmc_sengoku3_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_sengoku3_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_sengoku3_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_CMC_SENGOKU3_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_SENGOKU3_CART, neogeo_cmc_sengoku3_cart_device)
+
/*************************************************
kof99k
**************************************************/
-class neogeo_cmc_kof99k_cart : public neogeo_cmc_cart
+class neogeo_cmc_kof99k_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_kof99k_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_kof99k_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_CMC_KOF99K_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_KOF99K_CART, neogeo_cmc_kof99k_cart_device)
+
/*************************************************
kof2001
**************************************************/
-class neogeo_cmc_kof2001_cart : public neogeo_cmc_cart
+class neogeo_cmc_kof2001_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_kof2001_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_kof2001_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_CMC_KOF2001_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_KOF2001_CART, neogeo_cmc_kof2001_cart_device)
+
/*************************************************
kof2000n
**************************************************/
-class neogeo_cmc_kof2000n_cart : public neogeo_cmc_cart
+class neogeo_cmc_kof2000n_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_kof2000n_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_kof2000n_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 2; }
+ virtual int get_fixed_bank_type() override { return 2; }
};
-extern const device_type NEOGEO_CMC_KOF2000N_CART;
+
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_KOF2000N_CART, neogeo_cmc_kof2000n_cart_device)
/*************************************************
jockeygp
**************************************************/
-class neogeo_cmc_jockeygp_cart : public neogeo_cmc_cart
+class neogeo_cmc_jockeygp_cart_device : public neogeo_cmc_cart_device
{
public:
- neogeo_cmc_jockeygp_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_cmc_jockeygp_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
virtual DECLARE_READ16_MEMBER(ram_r) override { return m_ram[offset]; }
virtual DECLARE_WRITE16_MEMBER(ram_w) override { COMBINE_DATA(&m_ram[offset]); }
+protected:
virtual void device_start() override;
virtual void device_reset() override;
@@ -202,6 +224,6 @@ private:
uint16_t m_ram[0x1000];
};
-extern const device_type NEOGEO_CMC_JOCKEYGP_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_CMC_JOCKEYGP_CART, neogeo_cmc_jockeygp_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_CMC_H
diff --git a/src/devices/bus/neogeo/fatfury2.cpp b/src/devices/bus/neogeo/fatfury2.cpp
index 995d576b5a3..5694ff08224 100644
--- a/src/devices/bus/neogeo/fatfury2.cpp
+++ b/src/devices/bus/neogeo/fatfury2.cpp
@@ -13,27 +13,28 @@
//-------------------------------------------------
-// neogeo_fatfury2_cart - constructor
+// neogeo_fatfury2_cart_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_FATFURY2_CART = device_creator<neogeo_fatfury2_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_FATFURY2_CART, neogeo_fatfury2_cart_device, "neocart_fatfury2", "Neo Geo Fatal Furty 2 Cart")
-neogeo_fatfury2_cart::neogeo_fatfury2_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_FATFURY2_CART, "Neo Geo Fatal Fury 2 Cart", tag, owner, clock, "neocart_fatfury2", __FILE__),
+neogeo_fatfury2_cart_device::neogeo_fatfury2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_rom_device(mconfig, NEOGEO_FATFURY2_CART, tag, owner, clock),
m_prot(*this, "fatfury2_prot")
-{}
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_fatfury2_cart::device_start()
+void neogeo_fatfury2_cart_device::device_start()
{
}
-void neogeo_fatfury2_cart::device_reset()
+void neogeo_fatfury2_cart_device::device_reset()
{
}
@@ -46,7 +47,7 @@ static MACHINE_CONFIG_FRAGMENT( fatfury2_cart )
MCFG_FATFURY2_PROT_ADD("fatfury2_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_fatfury2_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_fatfury2_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( fatfury2_cart );
}
diff --git a/src/devices/bus/neogeo/fatfury2.h b/src/devices/bus/neogeo/fatfury2.h
index 5579fe2b0bb..e49c6011629 100644
--- a/src/devices/bus/neogeo/fatfury2.h
+++ b/src/devices/bus/neogeo/fatfury2.h
@@ -1,37 +1,40 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_FATFURY2_H
-#define __NEOGEO_FATFURY2_H
+#ifndef MAME_BUS_NEOGEO_FATFURY2_H
+#define MAME_BUS_NEOGEO_FATFURY2_H
+
+#pragma once
#include "slot.h"
#include "rom.h"
#include "prot_fatfury2.h"
-// ======================> neogeo_fatfury2_cart
+// ======================> neogeo_fatfury2_cart_device
-class neogeo_fatfury2_cart : public neogeo_rom_device
+class neogeo_fatfury2_cart_device : public neogeo_rom_device
{
public:
// construction/destruction
- neogeo_fatfury2_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
+ neogeo_fatfury2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
virtual DECLARE_READ16_MEMBER(protection_r) override { return m_prot->protection_r(space, offset, mem_mask); }
virtual DECLARE_WRITE16_MEMBER(protection_w) override { m_prot->protection_w(space, offset, data, mem_mask); }
- required_device<fatfury2_prot_device> m_prot;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ required_device<fatfury2_prot_device> m_prot;
};
// device type definition
-extern const device_type NEOGEO_FATFURY2_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_FATFURY2_CART, neogeo_fatfury2_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_FATFURY2_H
diff --git a/src/devices/bus/neogeo/kof2k2.cpp b/src/devices/bus/neogeo/kof2k2.cpp
index 50d2cfa94f8..76d11e616e6 100644
--- a/src/devices/bus/neogeo/kof2k2.cpp
+++ b/src/devices/bus/neogeo/kof2k2.cpp
@@ -13,36 +13,35 @@
//-------------------------------------------------
-// neogeo_kof2002_cart - constructor
+// neogeo_kof2002_cart_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_K2K2_CART = device_creator<neogeo_kof2k2type_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_K2K2_CART, neogeo_kof2k2type_cart_device, "neocart_k2k2", "Neo Geo KOF2002-Type Cart")
-neogeo_kof2k2type_cart::neogeo_kof2k2type_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source) :
- neogeo_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
+neogeo_kof2k2type_cart_device::neogeo_kof2k2type_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_rom_device(mconfig, type, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_pcm2_prot(*this, "pcm2_prot"),
m_kof2k2_prot(*this, "kof2002_prot")
-{}
+{
+}
-neogeo_kof2k2type_cart::neogeo_kof2k2type_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_K2K2_CART, "Neo Geo KOF2002-Type Cart", tag, owner, clock, "neocart_k2k2", __FILE__),
- m_cmc_prot(*this, "cmc_prot"),
- m_pcm2_prot(*this, "pcm2_prot"),
- m_kof2k2_prot(*this, "kof2002_prot")
-{}
+neogeo_kof2k2type_cart_device::neogeo_kof2k2type_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_kof2k2type_cart_device(mconfig, NEOGEO_K2K2_CART, tag, owner, clock)
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_kof2k2type_cart::device_start()
+void neogeo_kof2k2type_cart_device::device_start()
{
}
-void neogeo_kof2k2type_cart::device_reset()
+void neogeo_kof2k2type_cart_device::device_reset()
{
}
@@ -57,7 +56,7 @@ static MACHINE_CONFIG_FRAGMENT( kof2002_cart )
MCFG_KOF2002_PROT_ADD("kof2002_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_kof2k2type_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_kof2k2type_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( kof2002_cart );
}
@@ -67,14 +66,14 @@ machine_config_constructor neogeo_kof2k2type_cart::device_mconfig_additions() co
kof2002
**************************************************/
-const device_type NEOGEO_K2K2_KOF2002_CART = device_creator<neogeo_kof2002_cart>;
-
-neogeo_kof2002_cart::neogeo_kof2002_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_kof2k2type_cart(mconfig, NEOGEO_K2K2_KOF2002_CART, "Neo Geo KOF2002 Cart", tag, owner, clock, "neocart_kof2002", __FILE__)
-{}
+DEFINE_DEVICE_TYPE(NEOGEO_K2K2_KOF2002_CART, neogeo_kof2002_cart_device, "neocart_kof2002", "Neo Geo KoF 2002 Cart")
+neogeo_kof2002_cart_device::neogeo_kof2002_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_kof2k2type_cart_device(mconfig, NEOGEO_K2K2_KOF2002_CART, tag, owner, clock)
+{
+}
-void neogeo_kof2002_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kof2002_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_kof2k2_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size);
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
@@ -83,17 +82,18 @@ void neogeo_kof2002_cart::decrypt_all(DECRYPT_ALL_PARAMS)
m_pcm2_prot->swap(ym_region, ym_region_size, 0);
}
-const device_type NEOGEO_K2K2_KF2K2PLS_CART = device_creator<neogeo_kf2k2pls_cart>;
-
/*************************************************
kf2k2pls
**************************************************/
-neogeo_kf2k2pls_cart::neogeo_kf2k2pls_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_kof2k2type_cart(mconfig, NEOGEO_K2K2_KF2K2PLS_CART, "Neo Geo KOF2002 Plus Cart", tag, owner, clock, "neocart_kf2k2pls", __FILE__)
-{}
+DEFINE_DEVICE_TYPE(NEOGEO_K2K2_KF2K2PLS_CART, neogeo_kf2k2pls_cart_device, "neocart_kf2k2pls", "Neo Geo KoF 2002 Plus Cart")
-void neogeo_kf2k2pls_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+neogeo_kf2k2pls_cart_device::neogeo_kf2k2pls_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_kof2k2type_cart_device(mconfig, NEOGEO_K2K2_KF2K2PLS_CART, tag, owner, clock)
+{
+}
+
+void neogeo_kf2k2pls_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_kof2k2_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size);
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
@@ -106,13 +106,14 @@ void neogeo_kf2k2pls_cart::decrypt_all(DECRYPT_ALL_PARAMS)
matrim
**************************************************/
-const device_type NEOGEO_K2K2_MATRIM_CART = device_creator<neogeo_matrim_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_K2K2_MATRIM_CART, neogeo_matrim_cart_device, "neocart_matrim", "Neo Geo Matrimelee Cart")
-neogeo_matrim_cart::neogeo_matrim_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_kof2k2type_cart(mconfig, NEOGEO_K2K2_MATRIM_CART, "Neo Geo Matrimelee Cart", tag, owner, clock, "neocart_matrim", __FILE__)
-{}
+neogeo_matrim_cart_device::neogeo_matrim_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_kof2k2type_cart_device(mconfig, NEOGEO_K2K2_MATRIM_CART, tag, owner, clock)
+{
+}
-void neogeo_matrim_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_matrim_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_kof2k2_prot->matrim_decrypt_68k(cpuregion, cpuregion_size);
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
@@ -125,13 +126,14 @@ void neogeo_matrim_cart::decrypt_all(DECRYPT_ALL_PARAMS)
samsho5
**************************************************/
-const device_type NEOGEO_K2K2_SAMSHO5_CART = device_creator<neogeo_samsho5_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_K2K2_SAMSHO5_CART, neogeo_samsho5_cart_device, "neocart_samsho5", "Neo Geo Samurai Shodown 5 Cart")
-neogeo_samsho5_cart::neogeo_samsho5_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_kof2k2type_cart(mconfig, NEOGEO_K2K2_SAMSHO5_CART, "Neo Geo Samurai Shodown 5 Cart", tag, owner, clock, "neocart_samsho5", __FILE__)
-{}
+neogeo_samsho5_cart_device::neogeo_samsho5_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_kof2k2type_cart_device(mconfig, NEOGEO_K2K2_SAMSHO5_CART, tag, owner, clock)
+{
+}
-void neogeo_samsho5_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_samsho5_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_kof2k2_prot->samsho5_decrypt_68k(cpuregion, cpuregion_size);
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
@@ -144,13 +146,14 @@ void neogeo_samsho5_cart::decrypt_all(DECRYPT_ALL_PARAMS)
samsh5sp
**************************************************/
-const device_type NEOGEO_K2K2_SAMSHO5SP_CART = device_creator<neogeo_samsho5sp_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_K2K2_SAMSHO5SP_CART, neogeo_samsho5sp_cart_device, "neocart_samsh5sp", "Neo Geo Samurai Shodown 5 Special Cart")
-neogeo_samsho5sp_cart::neogeo_samsho5sp_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_kof2k2type_cart(mconfig, NEOGEO_K2K2_SAMSHO5SP_CART, "Neo Geo Samurai Shodown 5 Special Cart", tag, owner, clock, "neocart_samsh5sp", __FILE__)
-{}
+neogeo_samsho5sp_cart_device::neogeo_samsho5sp_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_kof2k2type_cart_device(mconfig, NEOGEO_K2K2_SAMSHO5SP_CART, tag, owner, clock)
+{
+}
-void neogeo_samsho5sp_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_samsho5sp_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_kof2k2_prot->samsh5sp_decrypt_68k(cpuregion, cpuregion_size);
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
diff --git a/src/devices/bus/neogeo/kof2k2.h b/src/devices/bus/neogeo/kof2k2.h
index 067ffcd38f9..2d14294c3be 100644
--- a/src/devices/bus/neogeo/kof2k2.h
+++ b/src/devices/bus/neogeo/kof2k2.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_KOF2002_H
-#define __NEOGEO_KOF2002_H
+#ifndef MAME_BUS_NEOGEO_KOF2K2_H
+#define MAME_BUS_NEOGEO_KOF2K2_H
+
+#pragma once
#include "slot.h"
#include "rom.h"
@@ -9,106 +11,106 @@
#include "prot_cmc.h"
#include "prot_kof2k2.h"
-// ======================> neogeo_kof2002_cart
+// ======================> neogeo_kof2002_cart_device
-class neogeo_kof2k2type_cart : public neogeo_rom_device
+class neogeo_kof2k2type_cart_device : public neogeo_rom_device
{
public:
// construction/destruction
- neogeo_kof2k2type_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source);
- neogeo_kof2k2type_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ neogeo_kof2k2type_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
+ virtual void decrypt_all(DECRYPT_ALL_PARAMS) override { }
+ virtual int get_fixed_bank_type() override { return 0; }
- virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {}
- virtual int get_fixed_bank_type(void) override { return 0; }
+protected:
+ neogeo_kof2k2type_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
required_device<cmc_prot_device> m_cmc_prot;
required_device<pcm2_prot_device> m_pcm2_prot;
required_device<kof2002_prot_device> m_kof2k2_prot;
-
};
// device type definition
-extern const device_type NEOGEO_K2K2_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_K2K2_CART, neogeo_kof2k2type_cart_device)
/*************************************************
kof2002
**************************************************/
-class neogeo_kof2002_cart : public neogeo_kof2k2type_cart
+class neogeo_kof2002_cart_device : public neogeo_kof2k2type_cart_device
{
public:
- neogeo_kof2002_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kof2002_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_K2K2_KOF2002_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_K2K2_KOF2002_CART, neogeo_kof2002_cart_device)
-class neogeo_kf2k2pls_cart : public neogeo_kof2k2type_cart
+class neogeo_kf2k2pls_cart_device : public neogeo_kof2k2type_cart_device
{
public:
- neogeo_kf2k2pls_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_kf2k2pls_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_K2K2_KF2K2PLS_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_K2K2_KF2K2PLS_CART, neogeo_kf2k2pls_cart_device)
/*************************************************
matrim
**************************************************/
-class neogeo_matrim_cart : public neogeo_kof2k2type_cart
+class neogeo_matrim_cart_device : public neogeo_kof2k2type_cart_device
{
public:
- neogeo_matrim_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_matrim_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 2; }
+ virtual int get_fixed_bank_type() override { return 2; }
};
-extern const device_type NEOGEO_K2K2_MATRIM_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_K2K2_MATRIM_CART, neogeo_matrim_cart_device)
/*************************************************
samsho5
**************************************************/
-class neogeo_samsho5_cart : public neogeo_kof2k2type_cart
+class neogeo_samsho5_cart_device : public neogeo_kof2k2type_cart_device
{
public:
- neogeo_samsho5_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_samsho5_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_K2K2_SAMSHO5_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_K2K2_SAMSHO5_CART, neogeo_samsho5_cart_device)
/*************************************************
samsho5sp
**************************************************/
-class neogeo_samsho5sp_cart : public neogeo_kof2k2type_cart
+class neogeo_samsho5sp_cart_device : public neogeo_kof2k2type_cart_device
{
public:
- neogeo_samsho5sp_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_samsho5sp_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_K2K2_SAMSHO5SP_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_K2K2_SAMSHO5SP_CART, neogeo_samsho5sp_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_KOF2K2_H
diff --git a/src/devices/bus/neogeo/kof98.cpp b/src/devices/bus/neogeo/kof98.cpp
index 0451ee6ae6b..c62d776bac0 100644
--- a/src/devices/bus/neogeo/kof98.cpp
+++ b/src/devices/bus/neogeo/kof98.cpp
@@ -13,27 +13,28 @@
//-------------------------------------------------
-// neogeo_kof98_cart - constructor
+// neogeo_kof98_cart_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_KOF98_CART = device_creator<neogeo_kof98_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_KOF98_CART, neogeo_kof98_cart_device, "neocart_kof98", "Neo Geo KoF 98 Cart")
-neogeo_kof98_cart::neogeo_kof98_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_KOF98_CART, "Neo Geo KOF 98 Cart", tag, owner, clock, "neocart_kof98", __FILE__),
+neogeo_kof98_cart_device::neogeo_kof98_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_rom_device(mconfig, NEOGEO_KOF98_CART, tag, owner, clock),
m_prot(*this, "kof98_prot")
-{}
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_kof98_cart::device_start()
+void neogeo_kof98_cart_device::device_start()
{
}
-void neogeo_kof98_cart::device_reset()
+void neogeo_kof98_cart_device::device_reset()
{
}
@@ -46,12 +47,12 @@ static MACHINE_CONFIG_FRAGMENT( kof98_cart )
MCFG_KOF98_PROT_ADD("kof98_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_kof98_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_kof98_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( kof98_cart );
}
-void neogeo_kof98_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_kof98_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_prot->decrypt_68k(cpuregion, cpuregion_size);
}
diff --git a/src/devices/bus/neogeo/kof98.h b/src/devices/bus/neogeo/kof98.h
index fba3e40ff38..00ee33326c6 100644
--- a/src/devices/bus/neogeo/kof98.h
+++ b/src/devices/bus/neogeo/kof98.h
@@ -1,23 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_KOF98_H
-#define __NEOGEO_KOF98_H
+#ifndef MAME_BUS_NEOGEO_KOF98_H
+#define MAME_BUS_NEOGEO_KOF98_H
+
+#pragma once
#include "slot.h"
#include "rom.h"
#include "prot_kof98.h"
-// ======================> neogeo_kof98_cart
+// ======================> neogeo_kof98_cart_device
-class neogeo_kof98_cart : public neogeo_rom_device
+class neogeo_kof98_cart_device : public neogeo_rom_device
{
public:
// construction/destruction
- neogeo_kof98_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
+ neogeo_kof98_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
@@ -26,14 +25,15 @@ public:
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- required_device<kof98_prot_device> m_prot;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ required_device<kof98_prot_device> m_prot;
};
-
-
// device type definition
-extern const device_type NEOGEO_KOF98_CART;
-
+DECLARE_DEVICE_TYPE(NEOGEO_KOF98_CART, neogeo_kof98_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_KOF98_H
diff --git a/src/devices/bus/neogeo/mslugx.cpp b/src/devices/bus/neogeo/mslugx.cpp
index 71af2d783d4..97790e77669 100644
--- a/src/devices/bus/neogeo/mslugx.cpp
+++ b/src/devices/bus/neogeo/mslugx.cpp
@@ -13,27 +13,28 @@
//-------------------------------------------------
-// neogeo_mslugx_cart - constructor
+// neogeo_mslugx_cart_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_MSLUGX_CART = device_creator<neogeo_mslugx_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_MSLUGX_CART, neogeo_mslugx_cart_device, "neocart_mslugx", "Neo Geo Metal Slug X Cart")
-neogeo_mslugx_cart::neogeo_mslugx_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_MSLUGX_CART, "Neo Geo Metal Slug X Cart", tag, owner, clock, "neocart_mslugx", __FILE__),
+neogeo_mslugx_cart_device::neogeo_mslugx_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_rom_device(mconfig, NEOGEO_MSLUGX_CART, tag, owner, clock),
m_prot(*this, "mslugx_prot")
-{}
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_mslugx_cart::device_start()
+void neogeo_mslugx_cart_device::device_start()
{
}
-void neogeo_mslugx_cart::device_reset()
+void neogeo_mslugx_cart_device::device_reset()
{
}
@@ -46,7 +47,7 @@ static MACHINE_CONFIG_FRAGMENT( mslugx_cart )
MCFG_MSLUGX_PROT_ADD("mslugx_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_mslugx_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_mslugx_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( mslugx_cart );
}
diff --git a/src/devices/bus/neogeo/mslugx.h b/src/devices/bus/neogeo/mslugx.h
index 20a144917d9..03d1aaaa21d 100644
--- a/src/devices/bus/neogeo/mslugx.h
+++ b/src/devices/bus/neogeo/mslugx.h
@@ -1,37 +1,38 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_MSLUGX_CART_H
-#define __NEOGEO_MSLUGX_CART_H
+#ifndef MAME_BUS_NEOGEO_MSLUGX_H
+#define MAME_BUS_NEOGEO_MSLUGX_H
+
+#pragma once
#include "slot.h"
#include "rom.h"
#include "prot_mslugx.h"
-// ======================> neogeo_mslugx_cart
+// ======================> neogeo_mslugx_cart_device
-class neogeo_mslugx_cart : public neogeo_rom_device
+class neogeo_mslugx_cart_device : public neogeo_rom_device
{
public:
// construction/destruction
- neogeo_mslugx_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
+ neogeo_mslugx_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
virtual DECLARE_READ16_MEMBER(protection_r) override { return m_prot->protection_r(space, offset, mem_mask); }
virtual DECLARE_WRITE16_MEMBER(protection_w) override { m_prot->protection_w(space, offset, data, mem_mask); }
- required_device<mslugx_prot_device> m_prot;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ required_device<mslugx_prot_device> m_prot;
};
-
// device type definition
extern const device_type NEOGEO_MSLUGX_CART;
-
-#endif
+#endif // MAME_BUS_NEOGEO_MSLUGX_H
diff --git a/src/devices/bus/neogeo/pcm2.cpp b/src/devices/bus/neogeo/pcm2.cpp
index 54ff35b8e33..bbfb8c940a1 100644
--- a/src/devices/bus/neogeo/pcm2.cpp
+++ b/src/devices/bus/neogeo/pcm2.cpp
@@ -13,34 +13,34 @@
//-------------------------------------------------
-// neogeo_pcm2_cart - constructor
+// neogeo_pcm2_cart_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_PCM2_CART = device_creator<neogeo_pcm2_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_PCM2_CART, neogeo_pcm2_cart_device, "neocart_pcm2", "Neo Geo PCM2 Cart")
-neogeo_pcm2_cart::neogeo_pcm2_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source) :
- neogeo_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
+neogeo_pcm2_cart_device::neogeo_pcm2_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_rom_device(mconfig, type, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_pcm2_prot(*this, "pcm2_prot")
-{}
+{
+}
-neogeo_pcm2_cart::neogeo_pcm2_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_PCM2_CART, "Neo Geo PCM2 Cart", tag, owner, clock, "neocart_pcm2", __FILE__),
- m_cmc_prot(*this, "cmc_prot"),
- m_pcm2_prot(*this, "pcm2_prot")
-{}
+neogeo_pcm2_cart_device::neogeo_pcm2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_pcm2_cart_device(mconfig, NEOGEO_PCM2_CART, tag, owner, clock)
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_pcm2_cart::device_start()
+void neogeo_pcm2_cart_device::device_start()
{
}
-void neogeo_pcm2_cart::device_reset()
+void neogeo_pcm2_cart_device::device_reset()
{
}
@@ -54,7 +54,7 @@ static MACHINE_CONFIG_FRAGMENT( pcm2_cart )
MCFG_PCM2_PROT_ADD("pcm2_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_pcm2_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_pcm2_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( pcm2_cart );
}
@@ -64,13 +64,14 @@ machine_config_constructor neogeo_pcm2_cart::device_mconfig_additions() const
mslug4
**************************************************/
-const device_type NEOGEO_PCM2_MSLUG4_CART = device_creator<neogeo_pcm2_mslug4_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_PCM2_MSLUG4_CART, neogeo_pcm2_mslug4_cart_device, "neocart_mslug4", "Neo Geo Metal Slug 3 PCM2 Cart")
-neogeo_pcm2_mslug4_cart::neogeo_pcm2_mslug4_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_pcm2_cart(mconfig, NEOGEO_PCM2_MSLUG4_CART, "Neo Geo Metal Slug 4 PCM2 Cart", tag, owner, clock, "neocart_mslug4", __FILE__)
-{}
+neogeo_pcm2_mslug4_cart_device::neogeo_pcm2_mslug4_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_pcm2_cart_device(mconfig, NEOGEO_PCM2_MSLUG4_CART, tag, owner, clock)
+{
+}
-void neogeo_pcm2_mslug4_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_pcm2_mslug4_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
m_cmc_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, MSLUG4_GFX_KEY);
@@ -83,13 +84,14 @@ void neogeo_pcm2_mslug4_cart::decrypt_all(DECRYPT_ALL_PARAMS)
ms4plus
**************************************************/
-const device_type NEOGEO_PCM2_MS4PLUS_CART = device_creator<neogeo_pcm2_ms4plus_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_PCM2_MS4PLUS_CART, neogeo_pcm2_ms4plus_cart_device, "neocart_ms4plus", "Neo Geo Metal Slug 4 Plus PCM2 Cart")
-neogeo_pcm2_ms4plus_cart::neogeo_pcm2_ms4plus_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_pcm2_cart(mconfig, NEOGEO_PCM2_MS4PLUS_CART, "Neo Geo Metal Slug 4 Plus PCM2 Cart", tag, owner, clock, "neocart_ms4plus", __FILE__)
-{}
+neogeo_pcm2_ms4plus_cart_device::neogeo_pcm2_ms4plus_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_pcm2_cart_device(mconfig, NEOGEO_PCM2_MS4PLUS_CART, tag, owner, clock)
+{
+}
-void neogeo_pcm2_ms4plus_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_pcm2_ms4plus_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
m_cmc_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, MSLUG4_GFX_KEY);
@@ -101,13 +103,14 @@ void neogeo_pcm2_ms4plus_cart::decrypt_all(DECRYPT_ALL_PARAMS)
rotd
**************************************************/
-const device_type NEOGEO_PCM2_ROTD_CART = device_creator<neogeo_pcm2_rotd_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_PCM2_ROTD_CART, neogeo_pcm2_rotd_cart_device, "neocart_rotd", "Neo Geo Rage of the Dragon PCM2 Cart")
-neogeo_pcm2_rotd_cart::neogeo_pcm2_rotd_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_pcm2_cart(mconfig, NEOGEO_PCM2_ROTD_CART, "Neo Geo Rage of the Dragon PCM2 Cart", tag, owner, clock, "neocart_rotd", __FILE__)
-{}
+neogeo_pcm2_rotd_cart_device::neogeo_pcm2_rotd_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_pcm2_cart_device(mconfig, NEOGEO_PCM2_ROTD_CART, tag, owner, clock)
+{
+}
-void neogeo_pcm2_rotd_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_pcm2_rotd_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
m_cmc_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, ROTD_GFX_KEY);
@@ -119,13 +122,14 @@ void neogeo_pcm2_rotd_cart::decrypt_all(DECRYPT_ALL_PARAMS)
pnyaa
**************************************************/
-const device_type NEOGEO_PCM2_PNYAA_CART = device_creator<neogeo_pcm2_pnyaa_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_PCM2_PNYAA_CART, neogeo_pcm2_pnyaa_cart_device, "neocart_pnyaa", "Neo Geo Pnyaa PCM2 Cart")
-neogeo_pcm2_pnyaa_cart::neogeo_pcm2_pnyaa_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_pcm2_cart(mconfig, NEOGEO_PCM2_PNYAA_CART, "Neo Geo Pnyaa PCM2 Cart", tag, owner, clock, "neocart_pnyaa", __FILE__)
-{}
+neogeo_pcm2_pnyaa_cart_device::neogeo_pcm2_pnyaa_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_pcm2_cart_device(mconfig, NEOGEO_PCM2_PNYAA_CART, tag, owner, clock)
+{
+}
-void neogeo_pcm2_pnyaa_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_pcm2_pnyaa_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
m_cmc_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, PNYAA_GFX_KEY);
diff --git a/src/devices/bus/neogeo/pcm2.h b/src/devices/bus/neogeo/pcm2.h
index 30d5d627842..dacb2b2de7d 100644
--- a/src/devices/bus/neogeo/pcm2.h
+++ b/src/devices/bus/neogeo/pcm2.h
@@ -1,100 +1,99 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_PCM2_H
-#define __NEOGEO_PCM2_H
+#ifndef MAME_BUS_NEOGEO_PCM2_H
+#define MAME_BUS_NEOGEO_PCM2_H
#include "slot.h"
#include "rom.h"
#include "prot_cmc.h"
#include "prot_pcm2.h"
-// ======================> neogeo_pcm2_cart
+// ======================> neogeo_pcm2_cart_device
-class neogeo_pcm2_cart : public neogeo_rom_device
+class neogeo_pcm2_cart_device : public neogeo_rom_device
{
public:
// construction/destruction
- neogeo_pcm2_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source);
- neogeo_pcm2_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
+ neogeo_pcm2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- // reading and writing
-// virtual DECLARE_READ16_MEMBER(read_rom) override;
+ virtual void decrypt_all(DECRYPT_ALL_PARAMS) override { }
+ virtual int get_fixed_bank_type() override { return 0; }
+
+protected:
+ neogeo_pcm2_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock);
-// virtual void activate_cart(ACTIVATE_CART_PARAMS) override { m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); }
- virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {}
- virtual int get_fixed_bank_type(void) override { return 0; }
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
required_device<cmc_prot_device> m_cmc_prot;
required_device<pcm2_prot_device> m_pcm2_prot;
};
// device type definition
-extern const device_type NEOGEO_PCM2_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_PCM2_CART, neogeo_pcm2_cart_device)
/*************************************************
mslug4
**************************************************/
-class neogeo_pcm2_mslug4_cart : public neogeo_pcm2_cart
+class neogeo_pcm2_mslug4_cart_device : public neogeo_pcm2_cart_device
{
public:
- neogeo_pcm2_mslug4_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_pcm2_mslug4_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_PCM2_MSLUG4_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_PCM2_MSLUG4_CART, neogeo_pcm2_mslug4_cart_device)
/*************************************************
ms4plus
**************************************************/
-class neogeo_pcm2_ms4plus_cart : public neogeo_pcm2_cart
+class neogeo_pcm2_ms4plus_cart_device : public neogeo_pcm2_cart_device
{
public:
- neogeo_pcm2_ms4plus_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_pcm2_ms4plus_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
};
-extern const device_type NEOGEO_PCM2_MS4PLUS_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_PCM2_MS4PLUS_CART, neogeo_pcm2_ms4plus_cart_device)
/*************************************************
rotd
**************************************************/
-class neogeo_pcm2_rotd_cart : public neogeo_pcm2_cart
+class neogeo_pcm2_rotd_cart_device : public neogeo_pcm2_cart_device
{
public:
- neogeo_pcm2_rotd_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_pcm2_rotd_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_PCM2_ROTD_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_PCM2_ROTD_CART, neogeo_pcm2_rotd_cart_device)
/*************************************************
pnyaa
**************************************************/
-class neogeo_pcm2_pnyaa_cart : public neogeo_pcm2_cart
+class neogeo_pcm2_pnyaa_cart_device : public neogeo_pcm2_cart_device
{
public:
- neogeo_pcm2_pnyaa_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_pcm2_pnyaa_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_PCM2_PNYAA_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_PCM2_PNYAA_CART, neogeo_pcm2_pnyaa_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_PCM2_H
diff --git a/src/devices/bus/neogeo/prot_cmc.cpp b/src/devices/bus/neogeo/prot_cmc.cpp
index 98cc9ce990e..336bb543a21 100644
--- a/src/devices/bus/neogeo/prot_cmc.cpp
+++ b/src/devices/bus/neogeo/prot_cmc.cpp
@@ -4,11 +4,11 @@
#include "emu.h"
#include "prot_cmc.h"
-const device_type CMC_PROT = device_creator<cmc_prot_device>;
+DEFINE_DEVICE_TYPE(NG_CMC_PROT, cmc_prot_device, "ng_cmc_prot", "Neo Geo CMC42/CMC40 Protection")
cmc_prot_device::cmc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CMC_PROT, "Neo Geo CMC42 & CMC50 Protection", tag, owner, clock, "cmc_prot", __FILE__),
+ device_t(mconfig, NG_CMC_PROT, tag, owner, clock),
type0_t03(nullptr),
type0_t12(nullptr),
type1_t03(nullptr),
diff --git a/src/devices/bus/neogeo/prot_cmc.h b/src/devices/bus/neogeo/prot_cmc.h
index 31e4262f70d..46a6a6c6766 100644
--- a/src/devices/bus/neogeo/prot_cmc.h
+++ b/src/devices/bus/neogeo/prot_cmc.h
@@ -1,16 +1,16 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
+#ifndef MAME_BUS_NEOGEO_PROT_CMC_H
+#define MAME_BUS_NEOGEO_PROT_CMC_H
#pragma once
-#ifndef __CMC_PROT__
-#define __CMC_PROT__
-extern const device_type CMC_PROT;
+DECLARE_DEVICE_TYPE(NG_CMC_PROT, cmc_prot_device)
#define MCFG_CMC_PROT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, CMC_PROT, 0)
+ MCFG_DEVICE_ADD(_tag, NG_CMC_PROT, 0)
// cmc42
#define KOF99_GFX_KEY (0x00)
@@ -81,4 +81,4 @@ protected:
const uint8_t *address_0_7_xor;
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_CMC_H
diff --git a/src/devices/bus/neogeo/prot_cthd.cpp b/src/devices/bus/neogeo/prot_cthd.cpp
index 226ae50d40b..bb8e9d9ac3f 100644
--- a/src/devices/bus/neogeo/prot_cthd.cpp
+++ b/src/devices/bus/neogeo/prot_cthd.cpp
@@ -4,12 +4,13 @@
#include "emu.h"
#include "prot_cthd.h"
-const device_type CTHD_PROT = device_creator<cthd_prot_device>;
+DEFINE_DEVICE_TYPE(NG_CTHD_PROT, cthd_prot_device, "ng_cthd_prot", "Neo Goe CTHD Protection (bootleg)")
cthd_prot_device::cthd_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CTHD_PROT, "Neo Geo CTHD Protection (Bootleg)", tag, owner, clock, "cthd_prot", __FILE__)
-{}
+ device_t(mconfig, NG_CTHD_PROT, tag, owner, clock)
+{
+}
void cthd_prot_device::device_start()
diff --git a/src/devices/bus/neogeo/prot_cthd.h b/src/devices/bus/neogeo/prot_cthd.h
index 69b4dbfa850..455674a56c8 100644
--- a/src/devices/bus/neogeo/prot_cthd.h
+++ b/src/devices/bus/neogeo/prot_cthd.h
@@ -1,15 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#pragma once
+#ifndef MAME_BUS_NEOGEO_PROT_CTHD_H
+#define MAME_BUS_NEOGEO_PROT_CTHD_H
-#ifndef __CTHD_PROT__
-#define __CTHD_PROT__
+#pragma once
-extern const device_type CTHD_PROT;
+DECLARE_DEVICE_TYPE(NG_CTHD_PROT, cthd_prot_device)
#define MCFG_CTHD_PROT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, CTHD_PROT, 0)
+ MCFG_DEVICE_ADD(_tag, NG_CTHD_PROT, 0)
class cthd_prot_device : public device_t
@@ -40,4 +40,4 @@ protected:
virtual void device_reset() override;
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_CTHD_H
diff --git a/src/devices/bus/neogeo/prot_fatfury2.cpp b/src/devices/bus/neogeo/prot_fatfury2.cpp
index ccf29bb3484..bfb06765c26 100644
--- a/src/devices/bus/neogeo/prot_fatfury2.cpp
+++ b/src/devices/bus/neogeo/prot_fatfury2.cpp
@@ -6,11 +6,11 @@
-const device_type FATFURY2_PROT = device_creator<fatfury2_prot_device>;
+DEFINE_DEVICE_TYPE(NG_FATFURY2_PROT, fatfury2_prot_device, "ng_fatfury_prot", "Neo Geo Fatal Fury 2 Protection")
fatfury2_prot_device::fatfury2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, FATFURY2_PROT, "Neo Geo Fatal Fury 2 Protection", tag, owner, clock, "fatfury2_prot", __FILE__),
+ device_t(mconfig, NG_FATFURY2_PROT, tag, owner, clock),
m_prot_data(0)
{
}
diff --git a/src/devices/bus/neogeo/prot_fatfury2.h b/src/devices/bus/neogeo/prot_fatfury2.h
index daa2d147faf..8c75e7f5d46 100644
--- a/src/devices/bus/neogeo/prot_fatfury2.h
+++ b/src/devices/bus/neogeo/prot_fatfury2.h
@@ -1,15 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#pragma once
+#ifndef MAME_BUS_NEOGEO_PROT_FATFURY2_H
+#define MAME_BUS_NEOGEO_PROT_FATFURY2_H
-#ifndef __FATFURY2_PROT__
-#define __FATFURY2_PROT__
+#pragma once
-extern const device_type FATFURY2_PROT;
+DECLARE_DEVICE_TYPE(NG_FATFURY2_PROT, fatfury2_prot_device)
#define MCFG_FATFURY2_PROT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, FATFURY2_PROT, 0)
+ MCFG_DEVICE_ADD(_tag, NG_FATFURY2_PROT, 0)
class fatfury2_prot_device : public device_t
@@ -21,11 +21,11 @@ public:
DECLARE_READ16_MEMBER( protection_r );
DECLARE_WRITE16_MEMBER( protection_w );
- uint32_t m_prot_data;
-
protected:
virtual void device_start() override;
virtual void device_reset() override;
+
+ uint32_t m_prot_data;
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_FATFURY2_H
diff --git a/src/devices/bus/neogeo/prot_kof2k2.cpp b/src/devices/bus/neogeo/prot_kof2k2.cpp
index a735a34e52e..75b79172d29 100644
--- a/src/devices/bus/neogeo/prot_kof2k2.cpp
+++ b/src/devices/bus/neogeo/prot_kof2k2.cpp
@@ -4,11 +4,11 @@
#include "emu.h"
#include "prot_kof2k2.h"
-const device_type KOF2002_PROT = device_creator<kof2002_prot_device>;
+DEFINE_DEVICE_TYPE(NG_KOF2002_PROT, kof2002_prot_device, "ng_kof2002_prot", "Neo Geo KoF 2002 Protection")
kof2002_prot_device::kof2002_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, KOF2002_PROT, "Neo Geo KOF 2002 Protection", tag, owner, clock, "kof2002_prot", __FILE__)
+ : device_t(mconfig, NG_KOF2002_PROT, tag, owner, clock)
{
}
diff --git a/src/devices/bus/neogeo/prot_kof2k2.h b/src/devices/bus/neogeo/prot_kof2k2.h
index f732a1704c0..4eb764f006d 100644
--- a/src/devices/bus/neogeo/prot_kof2k2.h
+++ b/src/devices/bus/neogeo/prot_kof2k2.h
@@ -2,18 +2,18 @@
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#pragma once
+#ifndef MAME_BUS_NEOGEO_PROT_KOF2K2_H
+#define MAME_BUS_NEOGEO_PROT_KOF2K2_H
-#ifndef __KOF2K2_PROT__
-#define __KOF2K2_PROT__
+#pragma once
-extern const device_type KOF2002_PROT;
+DECLARE_DEVICE_TYPE(NG_KOF2002_PROT, kof2002_prot_device)
#define MCFG_KOF2002_PROT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, KOF2002_PROT, 0)
+ MCFG_DEVICE_ADD(_tag, NG_KOF2002_PROT, 0)
-class kof2002_prot_device : public device_t
+class kof2002_prot_device : public device_t
{
public:
// construction/destruction
@@ -29,4 +29,4 @@ protected:
virtual void device_reset() override;
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_KOF2K2_H
diff --git a/src/devices/bus/neogeo/prot_kof2k3bl.cpp b/src/devices/bus/neogeo/prot_kof2k3bl.cpp
index bdf46df09c2..5afe9a0e548 100644
--- a/src/devices/bus/neogeo/prot_kof2k3bl.cpp
+++ b/src/devices/bus/neogeo/prot_kof2k3bl.cpp
@@ -4,12 +4,13 @@
#include "emu.h"
#include "prot_kof2k3bl.h"
-const device_type KOF2K3BL_PROT = device_creator<kof2k3bl_prot_device>;
+DEFINE_DEVICE_TYPE(NG_KOF2K3BL_PROT, kof2k3bl_prot_device, "ng_kof2k3bl_prot", "Neo Geo KoF 2003 Bootleg Protection")
kof2k3bl_prot_device::kof2k3bl_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, KOF2K3BL_PROT, "Neo Geo KOF 2003 Bootleg Protection", tag, owner, clock, "kof2k3bl_prot", __FILE__)
-{}
+ device_t(mconfig, NG_KOF2K3BL_PROT, tag, owner, clock)
+{
+}
void kof2k3bl_prot_device::device_start()
diff --git a/src/devices/bus/neogeo/prot_kof2k3bl.h b/src/devices/bus/neogeo/prot_kof2k3bl.h
index 23bba22c89a..8520bd90716 100644
--- a/src/devices/bus/neogeo/prot_kof2k3bl.h
+++ b/src/devices/bus/neogeo/prot_kof2k3bl.h
@@ -1,15 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#pragma once
+#ifndef MAME_BUS_NEOGEO_PROT_KOF2K3BL_H
+#define MAME_BUS_NEOGEO_PROT_KOF2K3BL_H
-#ifndef __KOF2K3BL_PROT__
-#define __KOF2K3BL_PROT__
+#pragma once
-extern const device_type KOF2K3BL_PROT;
+DECLARE_DEVICE_TYPE(NG_KOF2K3BL_PROT, kof2k3bl_prot_device)
#define MCFG_KOF2K3BL_PROT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, KOF2K3BL_PROT, 0)
+ MCFG_DEVICE_ADD(_tag, NG_KOF2K3BL_PROT, 0)
class kof2k3bl_prot_device : public device_t
@@ -37,4 +37,4 @@ private:
uint16_t m_cartridge_ram[0x1000]; // bootlegs
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_KOF2K3BL_H
diff --git a/src/devices/bus/neogeo/prot_kof98.cpp b/src/devices/bus/neogeo/prot_kof98.cpp
index bc1d1cb43ba..8003acd9918 100644
--- a/src/devices/bus/neogeo/prot_kof98.cpp
+++ b/src/devices/bus/neogeo/prot_kof98.cpp
@@ -5,13 +5,14 @@
#include "emu.h"
#include "prot_kof98.h"
-const device_type KOF98_PROT = device_creator<kof98_prot_device>;
+DEFINE_DEVICE_TYPE(NG_KOF98_PROT, kof98_prot_device, "ng_kof98_prot", "Neo Geo KoF 98 Protection")
kof98_prot_device::kof98_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, KOF98_PROT, "Neo Geo KOF 98 Protection", tag, owner, clock, "kof98_prot", __FILE__),
+ device_t(mconfig, NG_KOF98_PROT, tag, owner, clock),
m_prot_state(0)
-{}
+{
+}
void kof98_prot_device::device_start()
diff --git a/src/devices/bus/neogeo/prot_kof98.h b/src/devices/bus/neogeo/prot_kof98.h
index 76ed3386db9..ff0783e29ad 100644
--- a/src/devices/bus/neogeo/prot_kof98.h
+++ b/src/devices/bus/neogeo/prot_kof98.h
@@ -2,15 +2,15 @@
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#pragma once
+#ifndef MAME_BUS_NEOGEO_PROT_KOF98_H
+#define MAME_BUS_NEOGEO_PROT_KOF98_H
-#ifndef __KOF98_PROT__
-#define __KOF98_PROT__
+#pragma once
-extern const device_type KOF98_PROT;
+DECLARE_DEVICE_TYPE(NG_KOF98_PROT, kof98_prot_device)
#define MCFG_KOF98_PROT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, KOF98_PROT, 0)
+ MCFG_DEVICE_ADD(_tag, NG_KOF98_PROT, 0)
class kof98_prot_device : public device_t
@@ -30,4 +30,4 @@ protected:
virtual void device_reset() override;
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_KOF98_H
diff --git a/src/devices/bus/neogeo/prot_misc.cpp b/src/devices/bus/neogeo/prot_misc.cpp
index 349d294deb6..54b9c5b8792 100644
--- a/src/devices/bus/neogeo/prot_misc.cpp
+++ b/src/devices/bus/neogeo/prot_misc.cpp
@@ -23,12 +23,13 @@
#include "prot_misc.h"
-const device_type NEOBOOT_PROT = device_creator<neoboot_prot_device>;
+DEFINE_DEVICE_TYPE(NEOBOOT_PROT, neoboot_prot_device, "ngboot_prot", "Neo Geo Bootleg Protection(s)")
neoboot_prot_device::neoboot_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEOBOOT_PROT, "Neo Geo Bootleg Protection(s)", tag, owner, clock, "ngboot_prot", __FILE__)
-{}
+ device_t(mconfig, NEOBOOT_PROT, tag, owner, clock)
+{
+}
void neoboot_prot_device::device_start()
diff --git a/src/devices/bus/neogeo/prot_misc.h b/src/devices/bus/neogeo/prot_misc.h
index 85a22fd638f..f2b0c1f06d6 100644
--- a/src/devices/bus/neogeo/prot_misc.h
+++ b/src/devices/bus/neogeo/prot_misc.h
@@ -1,12 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#pragma once
+#ifndef MAME_BUS_NEOGEO_PROT_MISC_H
+#define MAME_BUS_NEOGEO_PROT_MISC_H
-#ifndef __NEOBOOT_PROT__
-#define __NEOBOOT_PROT__
+#pragma once
-extern const device_type NEOBOOT_PROT;
+DECLARE_DEVICE_TYPE(NEOBOOT_PROT, neoboot_prot_device)
#define MCFG_NEOBOOT_PROT_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, NEOBOOT_PROT, 0)
@@ -62,4 +62,4 @@ protected:
virtual void device_reset() override;
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_MISC_H
diff --git a/src/devices/bus/neogeo/prot_mslugx.cpp b/src/devices/bus/neogeo/prot_mslugx.cpp
index d505fea7df8..cd99a913cef 100644
--- a/src/devices/bus/neogeo/prot_mslugx.cpp
+++ b/src/devices/bus/neogeo/prot_mslugx.cpp
@@ -4,14 +4,15 @@
#include "emu.h"
#include "prot_mslugx.h"
-const device_type MSLUGX_PROT = device_creator<mslugx_prot_device>;
+DEFINE_DEVICE_TYPE(NG_MSLUGX_PROT, mslugx_prot_device, "ng_mslugx_prot", "Neo Geo Metal Slug X Protection")
mslugx_prot_device::mslugx_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MSLUGX_PROT, "Neo Geo Metal Slug X Protection", tag, owner, clock, "mslugx_prot", __FILE__),
+ device_t(mconfig, NG_MSLUGX_PROT, tag, owner, clock),
m_counter(0),
m_command(0)
-{}
+{
+}
void mslugx_prot_device::device_start()
diff --git a/src/devices/bus/neogeo/prot_mslugx.h b/src/devices/bus/neogeo/prot_mslugx.h
index a18a2777f5c..91ab71e463d 100644
--- a/src/devices/bus/neogeo/prot_mslugx.h
+++ b/src/devices/bus/neogeo/prot_mslugx.h
@@ -1,16 +1,16 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
+#ifndef MAME_BUS_NEOGEO_PROT_MSLUGX_H
+#define MAME_BUS_NEOGEO_PROT_MSLUGX_H
#pragma once
-#ifndef __MSLUGX_PROT__
-#define __MSLUGX_PROT__
-extern const device_type MSLUGX_PROT;
+DECLARE_DEVICE_TYPE(NG_MSLUGX_PROT, mslugx_prot_device)
#define MCFG_MSLUGX_PROT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, MSLUGX_PROT, 0)
+ MCFG_DEVICE_ADD(_tag, NG_MSLUGX_PROT, 0)
class mslugx_prot_device : public device_t
@@ -31,4 +31,4 @@ private:
uint16_t m_command;
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_MSLUGX_H
diff --git a/src/devices/bus/neogeo/prot_pcm2.cpp b/src/devices/bus/neogeo/prot_pcm2.cpp
index 01f56a8fb0a..80fa21eafe0 100644
--- a/src/devices/bus/neogeo/prot_pcm2.cpp
+++ b/src/devices/bus/neogeo/prot_pcm2.cpp
@@ -6,11 +6,11 @@
#include "prot_pcm2.h"
-const device_type PCM2_PROT = device_creator<pcm2_prot_device>;
+DEFINE_DEVICE_TYPE(NG_PCM2_PROT, pcm2_prot_device, "ng_pcm2_prot", "Neo Geo NEOPCM2 Protection")
pcm2_prot_device::pcm2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PCM2_PROT, "Neo Geo NEOPCM2 Protection", tag, owner, clock, "pcm2_prot", __FILE__)
+ : device_t(mconfig, NG_PCM2_PROT, tag, owner, clock)
{
}
diff --git a/src/devices/bus/neogeo/prot_pcm2.h b/src/devices/bus/neogeo/prot_pcm2.h
index cd06a3e06d8..666b38b4bee 100644
--- a/src/devices/bus/neogeo/prot_pcm2.h
+++ b/src/devices/bus/neogeo/prot_pcm2.h
@@ -1,19 +1,19 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
+#ifndef MAME_BUS_NEOGEO_PROT_PCM2_H
+#define MAME_BUS_NEOGEO_PROT_PCM2_H
#pragma once
-#ifndef __PCM2_PROT__
-#define __PCM2_PROT__
-extern const device_type PCM2_PROT;
+DECLARE_DEVICE_TYPE(NG_PCM2_PROT, pcm2_prot_device)
#define MCFG_PCM2_PROT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, PCM2_PROT, 0)
+ MCFG_DEVICE_ADD(_tag, NG_PCM2_PROT, 0)
-class pcm2_prot_device : public device_t
+class pcm2_prot_device : public device_t
{
public:
// construction/destruction
@@ -27,4 +27,4 @@ protected:
virtual void device_reset() override;
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_PCM2_H
diff --git a/src/devices/bus/neogeo/prot_pvc.cpp b/src/devices/bus/neogeo/prot_pvc.cpp
index a07af85222d..99c70142222 100644
--- a/src/devices/bus/neogeo/prot_pvc.cpp
+++ b/src/devices/bus/neogeo/prot_pvc.cpp
@@ -7,12 +7,13 @@
-const device_type PVC_PROT = device_creator<pvc_prot_device>;
+DEFINE_DEVICE_TYPE(NG_PVC_PROT, pvc_prot_device, "ng_pvc_prot", "Neo Geo PVC Protection")
pvc_prot_device::pvc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PVC_PROT, "Neo Geo PVC Protection", tag, owner, clock, "pvc_prot", __FILE__)
-{}
+ device_t(mconfig, NG_PVC_PROT, tag, owner, clock)
+{
+}
void pvc_prot_device::device_start()
diff --git a/src/devices/bus/neogeo/prot_pvc.h b/src/devices/bus/neogeo/prot_pvc.h
index d5bfee9bf2f..4f7d73f4020 100644
--- a/src/devices/bus/neogeo/prot_pvc.h
+++ b/src/devices/bus/neogeo/prot_pvc.h
@@ -1,15 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#pragma once
+#ifndef MAME_BUS_NEOGEO_PROT_PVC_H
+#define MAME_BUS_NEOGEO_PROT_PVC_H
-#ifndef __PVC_PROT__
-#define __PVC_PROT__
+#pragma once
-extern const device_type PVC_PROT;
+DECLARE_DEVICE_TYPE(NG_PVC_PROT, pvc_prot_device)
#define MCFG_PVC_PROT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, PVC_PROT, 0)
+ MCFG_DEVICE_ADD(_tag, NG_PVC_PROT, 0)
class pvc_prot_device : public device_t
@@ -38,4 +38,4 @@ protected:
virtual void device_reset() override;
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_PVC_H
diff --git a/src/devices/bus/neogeo/prot_sma.cpp b/src/devices/bus/neogeo/prot_sma.cpp
index 8c4dfa169d5..1b6e2322cd9 100644
--- a/src/devices/bus/neogeo/prot_sma.cpp
+++ b/src/devices/bus/neogeo/prot_sma.cpp
@@ -5,13 +5,14 @@
#include "prot_sma.h"
-const device_type SMA_PROT = device_creator<sma_prot_device>;
+DEFINE_DEVICE_TYPE(NG_SMA_PROT, sma_prot_device, "ng_sma_prot", "Neo Geo SMA Protection")
sma_prot_device::sma_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMA_PROT, "Neo Geo SMA Protection", tag, owner, clock, "sma_prot", __FILE__),
+ device_t(mconfig, NG_SMA_PROT, tag, owner, clock),
m_sma_rng(0)
-{}
+{
+}
void sma_prot_device::device_start()
diff --git a/src/devices/bus/neogeo/prot_sma.h b/src/devices/bus/neogeo/prot_sma.h
index 1cb7d7d9e4c..040d03a08d9 100644
--- a/src/devices/bus/neogeo/prot_sma.h
+++ b/src/devices/bus/neogeo/prot_sma.h
@@ -1,19 +1,19 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
+#ifndef MAME_BUS_NEOGEO_PROT_SMA_H
+#define MAME_BUS_NEOGEO_PROT_SMA_H
#pragma once
-#ifndef __SMA_PROT__
-#define __SMA_PROT__
-extern const device_type SMA_PROT;
+DECLARE_DEVICE_TYPE(NG_SMA_PROT, sma_prot_device)
#define MCFG_SMA_PROT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SMA_PROT, 0)
+ MCFG_DEVICE_ADD(_tag, NG_SMA_PROT, 0)
-class sma_prot_device : public device_t
+class sma_prot_device : public device_t
{
public:
// construction/destruction
@@ -45,4 +45,4 @@ private:
uint16_t m_sma_rng;
};
-#endif
+#endif // MAME_BUS_NEOGEO_PROT_SMA_H
diff --git a/src/devices/bus/neogeo/pvc.cpp b/src/devices/bus/neogeo/pvc.cpp
index 4830603b209..870443dca40 100644
--- a/src/devices/bus/neogeo/pvc.cpp
+++ b/src/devices/bus/neogeo/pvc.cpp
@@ -13,36 +13,35 @@
//-------------------------------------------------
-// neogeo_pvc_cart - constructor
+// neogeo_pvc_cart_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_PVC_CART = device_creator<neogeo_pvc_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_PVC_CART, neogeo_pvc_cart_device, "neocart_pvc", "Neo Geo PVC Cart")
-neogeo_pvc_cart::neogeo_pvc_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source) :
- neogeo_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
+neogeo_pvc_cart_device::neogeo_pvc_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_rom_device(mconfig, type, tag, owner, clock),
m_cmc_prot(*this, "cmc_prot"),
m_pcm2_prot(*this, "pcm2_prot"),
m_pvc_prot(*this, "pvc_prot")
-{}
+{
+}
-neogeo_pvc_cart::neogeo_pvc_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_PVC_CART, "Neo Geo PVC Cart", tag, owner, clock, "neocart_pvc", __FILE__),
- m_cmc_prot(*this, "cmc_prot"),
- m_pcm2_prot(*this, "pcm2_prot"),
- m_pvc_prot(*this, "pvc_prot")
-{}
+neogeo_pvc_cart_device::neogeo_pvc_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_pvc_cart_device(mconfig, NEOGEO_PVC_CART, tag, owner, clock)
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_pvc_cart::device_start()
+void neogeo_pvc_cart_device::device_start()
{
}
-void neogeo_pvc_cart::device_reset()
+void neogeo_pvc_cart_device::device_reset()
{
}
@@ -57,7 +56,7 @@ static MACHINE_CONFIG_FRAGMENT( pvc_cart )
MCFG_PVC_PROT_ADD("pvc_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_pvc_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_pvc_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( pvc_cart );
}
@@ -69,12 +68,14 @@ machine_config_constructor neogeo_pvc_cart::device_mconfig_additions() const
mslug5
**************************************************/
-const device_type NEOGEO_PVC_MSLUG5_CART = device_creator<neogeo_pvc_mslug5_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_PVC_MSLUG5_CART, neogeo_pvc_mslug5_cart_device, "neocart_mslug5", "Neo Geo Metal Slug 5 PVC Cart")
-neogeo_pvc_mslug5_cart::neogeo_pvc_mslug5_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_pvc_cart(mconfig, NEOGEO_PVC_MSLUG5_CART, "Neo Geo Metal Slug 5 PVC Cart", tag, owner, clock, "neocart_mslug5", __FILE__) {}
+neogeo_pvc_mslug5_cart_device::neogeo_pvc_mslug5_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_pvc_cart_device(mconfig, NEOGEO_PVC_MSLUG5_CART, tag, owner, clock)
+{
+}
-void neogeo_pvc_mslug5_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_pvc_mslug5_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_pvc_prot->mslug5_decrypt_68k(cpuregion, cpuregion_size);
m_pcm2_prot->swap(ym_region, ym_region_size, 2);
@@ -87,13 +88,14 @@ void neogeo_pvc_mslug5_cart::decrypt_all(DECRYPT_ALL_PARAMS)
svc
**************************************************/
-const device_type NEOGEO_PVC_SVC_CART = device_creator<neogeo_pvc_svc_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_PVC_SVC_CART, neogeo_pvc_svc_cart_device, "neocart_svc", "Neo Geo SNK vs Capcom PVC Cart")
-neogeo_pvc_svc_cart::neogeo_pvc_svc_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_pvc_cart(mconfig, NEOGEO_PVC_SVC_CART, "Neo Geo SNK vs Capcom PVC Cart", tag, owner, clock, "neocart_svc", __FILE__)
-{}
+neogeo_pvc_svc_cart_device::neogeo_pvc_svc_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_pvc_cart_device(mconfig, NEOGEO_PVC_SVC_CART, tag, owner, clock)
+{
+}
-void neogeo_pvc_svc_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_pvc_svc_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_pvc_prot->svc_px_decrypt(cpuregion, cpuregion_size);
m_pcm2_prot->swap(ym_region, ym_region_size, 3);
@@ -107,13 +109,14 @@ void neogeo_pvc_svc_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kof2003
**************************************************/
-const device_type NEOGEO_PVC_KOF2003_CART = device_creator<neogeo_pvc_kof2003_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_PVC_KOF2003_CART, neogeo_pvc_kof2003_cart_device, "neocart_kof2003", "Neo Geo KoF 2003 PVC Cart")
-neogeo_pvc_kof2003_cart::neogeo_pvc_kof2003_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_pvc_cart(mconfig, NEOGEO_PVC_KOF2003_CART, "Neo Geo KOF 2003 PVC Cart", tag, owner, clock, "neocart_kof2003", __FILE__)
-{}
+neogeo_pvc_kof2003_cart_device::neogeo_pvc_kof2003_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_pvc_cart_device(mconfig, NEOGEO_PVC_KOF2003_CART, tag, owner, clock)
+{
+}
-void neogeo_pvc_kof2003_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_pvc_kof2003_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_pvc_prot->kof2003_decrypt_68k(cpuregion, cpuregion_size);
m_pcm2_prot->swap(ym_region, ym_region_size, 5);
@@ -126,13 +129,14 @@ void neogeo_pvc_kof2003_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kof2003h
**************************************************/
-const device_type NEOGEO_PVC_KOF2003H_CART = device_creator<neogeo_pvc_kof2003h_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_PVC_KOF2003H_CART, neogeo_pvc_kof2003h_cart_device, "neocart_kof2003h", "Neo Geo KoF 2003 AES PVC Cart")
-neogeo_pvc_kof2003h_cart::neogeo_pvc_kof2003h_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_pvc_cart(mconfig, NEOGEO_PVC_KOF2003H_CART, "Neo Geo KOF 2003 AES PVC Cart", tag, owner, clock, "neocart_kof2003h", __FILE__)
-{}
+neogeo_pvc_kof2003h_cart_device::neogeo_pvc_kof2003h_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_pvc_cart_device(mconfig, NEOGEO_PVC_KOF2003H_CART, tag, owner, clock)
+{
+}
-void neogeo_pvc_kof2003h_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_pvc_kof2003h_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_pvc_prot->kof2003h_decrypt_68k(cpuregion, cpuregion_size);
m_pcm2_prot->swap(ym_region, ym_region_size, 5);
diff --git a/src/devices/bus/neogeo/pvc.h b/src/devices/bus/neogeo/pvc.h
index 064efef717a..89e95bfa59d 100644
--- a/src/devices/bus/neogeo/pvc.h
+++ b/src/devices/bus/neogeo/pvc.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_PVC_H
-#define __NEOGEO_PVC_H
+#ifndef MAME_BUS_NEOGEO_PVC_H
+#define MAME_BUS_NEOGEO_PVC_H
+
+#pragma once
#include "slot.h"
#include "rom.h"
@@ -9,18 +11,14 @@
#include "prot_cmc.h"
#include "prot_pvc.h"
-// ======================> neogeo_pvc_cart
+// ======================> neogeo_pvc_cart_device
-class neogeo_pvc_cart : public neogeo_rom_device
+class neogeo_pvc_cart_device : public neogeo_rom_device
{
public:
// construction/destruction
- neogeo_pvc_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source);
- neogeo_pvc_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
+ neogeo_pvc_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
@@ -28,8 +26,15 @@ public:
virtual DECLARE_READ16_MEMBER(protection_r) override { return m_pvc_prot->protection_r(space, offset, mem_mask); }
virtual DECLARE_WRITE16_MEMBER(protection_w) override { m_pvc_prot->protection_w(space, offset, data, mem_mask); }
- virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {}
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual void decrypt_all(DECRYPT_ALL_PARAMS) override { }
+ virtual int get_fixed_bank_type() override { return 0; }
+
+protected:
+ neogeo_pvc_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
required_device<cmc_prot_device> m_cmc_prot;
required_device<pcm2_prot_device> m_pcm2_prot;
@@ -38,67 +43,67 @@ public:
};
// device type definition
-extern const device_type NEOGEO_PVC_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_PVC_CART, neogeo_pvc_cart_device)
/*************************************************
mslug5
**************************************************/
-class neogeo_pvc_mslug5_cart : public neogeo_pvc_cart
+class neogeo_pvc_mslug5_cart_device : public neogeo_pvc_cart_device
{
public:
- neogeo_pvc_mslug5_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_pvc_mslug5_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
};
-extern const device_type NEOGEO_PVC_MSLUG5_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_PVC_MSLUG5_CART, neogeo_pvc_mslug5_cart_device)
/*************************************************
svc
**************************************************/
-class neogeo_pvc_svc_cart : public neogeo_pvc_cart
+class neogeo_pvc_svc_cart_device : public neogeo_pvc_cart_device
{
public:
- neogeo_pvc_svc_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_pvc_svc_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 2; }
+ virtual int get_fixed_bank_type() override { return 2; }
};
-extern const device_type NEOGEO_PVC_SVC_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_PVC_SVC_CART, neogeo_pvc_svc_cart_device)
/*************************************************
kof2003
**************************************************/
-class neogeo_pvc_kof2003_cart : public neogeo_pvc_cart
+class neogeo_pvc_kof2003_cart_device : public neogeo_pvc_cart_device
{
public:
- neogeo_pvc_kof2003_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_pvc_kof2003_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 2; }
+ virtual int get_fixed_bank_type() override { return 2; }
};
-extern const device_type NEOGEO_PVC_KOF2003_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_PVC_KOF2003_CART, neogeo_pvc_kof2003_cart_device)
/*************************************************
kof2003h
**************************************************/
-class neogeo_pvc_kof2003h_cart : public neogeo_pvc_cart
+class neogeo_pvc_kof2003h_cart_device : public neogeo_pvc_cart_device
{
public:
- neogeo_pvc_kof2003h_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_pvc_kof2003h_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 2; }
+ virtual int get_fixed_bank_type() override { return 2; }
};
-extern const device_type NEOGEO_PVC_KOF2003H_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_PVC_KOF2003H_CART, neogeo_pvc_kof2003h_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_PVC_H
diff --git a/src/devices/bus/neogeo/rom.cpp b/src/devices/bus/neogeo/rom.cpp
index e01bfbe6249..10c61858386 100644
--- a/src/devices/bus/neogeo/rom.cpp
+++ b/src/devices/bus/neogeo/rom.cpp
@@ -17,18 +17,19 @@
// neogeo_rom_device - constructor
//-------------------------------------------------
-const device_type NEOGEO_ROM = device_creator<neogeo_rom_device>;
+DEFINE_DEVICE_TYPE(NEOGEO_ROM, neogeo_rom_device, "neocart_rom", "Neo Geo Standard Carts")
-neogeo_rom_device::neogeo_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_neogeo_cart_interface(mconfig, *this)
-{}
+neogeo_rom_device::neogeo_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_neogeo_cart_interface(mconfig, *this)
+{
+}
neogeo_rom_device::neogeo_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- device_t(mconfig, NEOGEO_ROM, "Neo Geo Standard Carts", tag, owner, clock, "neocart_rom", __FILE__),
- device_neogeo_cart_interface(mconfig, *this)
-{}
+ neogeo_rom_device(mconfig, NEOGEO_ROM, tag, owner, clock)
+{
+}
//-------------------------------------------------
@@ -69,19 +70,20 @@ WRITE16_MEMBER(neogeo_rom_device::banksel_w)
V-Liner : this is plain NeoGeo cart + RAM
**************************************************/
-const device_type NEOGEO_VLINER_CART = device_creator<neogeo_vliner_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_VLINER_CART, neogeo_vliner_cart_device, "neocart_vliner", "Neo Geo V-Liner Cart")
-neogeo_vliner_cart::neogeo_vliner_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_VLINER_CART, "Neo Geo V-Liner Cart", tag, owner, clock, "neocart_vliner", __FILE__)
-{}
+neogeo_vliner_cart_device::neogeo_vliner_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_rom_device(mconfig, NEOGEO_VLINER_CART, tag, owner, clock)
+{
+}
-void neogeo_vliner_cart::device_start()
+void neogeo_vliner_cart_device::device_start()
{
save_item(NAME(m_cart_ram));
}
-void neogeo_vliner_cart::device_reset()
+void neogeo_vliner_cart_device::device_reset()
{
memset(m_cart_ram, 0, 0x2000);
}
diff --git a/src/devices/bus/neogeo/rom.h b/src/devices/bus/neogeo/rom.h
index 600db5cc7fe..17efc4da4a7 100644
--- a/src/devices/bus/neogeo/rom.h
+++ b/src/devices/bus/neogeo/rom.h
@@ -1,33 +1,36 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_ROM_H
-#define __NEOGEO_ROM_H
+#ifndef MAME_BUS_NEOGEO_ROM_H
+#define MAME_BUS_NEOGEO_ROM_H
+
+#pragma once
#include "slot.h"
// ======================> neogeo_rom_device
-class neogeo_rom_device : public device_t,
- public device_neogeo_cart_interface
+class neogeo_rom_device : public device_t, public device_neogeo_cart_interface
{
public:
// construction/destruction
- neogeo_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source);
neogeo_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ16_MEMBER(rom_r) override;
virtual DECLARE_WRITE16_MEMBER(banksel_w) override;
+
+protected:
+ neogeo_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
};
// device type definition
-extern const device_type NEOGEO_ROM;
+DECLARE_DEVICE_TYPE(NEOGEO_ROM, neogeo_rom_device)
@@ -35,16 +38,17 @@ extern const device_type NEOGEO_ROM;
vliner
**************************************************/
-class neogeo_vliner_cart : public neogeo_rom_device
+class neogeo_vliner_cart_device : public neogeo_rom_device
{
public:
- neogeo_vliner_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_vliner_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ16_MEMBER(ram_r) override { return m_cart_ram[offset]; }
virtual DECLARE_WRITE16_MEMBER(ram_w) override { COMBINE_DATA(&m_cart_ram[offset]); }
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
+protected:
virtual void device_start() override;
virtual void device_reset() override;
@@ -52,7 +56,7 @@ private:
uint16_t m_cart_ram[0x1000];
};
-extern const device_type NEOGEO_VLINER_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_VLINER_CART, neogeo_vliner_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_ROM_H
diff --git a/src/devices/bus/neogeo/sbp.cpp b/src/devices/bus/neogeo/sbp.cpp
index 82b6ef897c4..f5c25a2210a 100644
--- a/src/devices/bus/neogeo/sbp.cpp
+++ b/src/devices/bus/neogeo/sbp.cpp
@@ -14,24 +14,25 @@
#include "emu.h"
#include "sbp.h"
-const device_type NEOGEO_SBP_CART = device_creator<neogeo_sbp_cart>;
+DEFINE_DEVICE_TYPE(NEOGEO_SBP_CART, neogeo_sbp_cart_device, "neocart_sbp", "Neo Geo Super Bubble Pop Cart")
-neogeo_sbp_cart::neogeo_sbp_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_SBP_CART, "Neo Geo Super Bubble Pop Cart", tag, owner, clock, "neocart_sbp", __FILE__)
-{}
+neogeo_sbp_cart_device::neogeo_sbp_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_rom_device(mconfig, NEOGEO_SBP_CART, tag, owner, clock)
+{
+}
-void neogeo_sbp_cart::device_start()
+void neogeo_sbp_cart_device::device_start()
{
}
-void neogeo_sbp_cart::device_reset()
+void neogeo_sbp_cart_device::device_reset()
{
}
-READ16_MEMBER( neogeo_sbp_cart::protection_r )
+READ16_MEMBER( neogeo_sbp_cart_device::protection_r )
{
uint16_t* rom = (get_rom_size()) ? get_rom_base() : get_region_rom_base();
uint16_t origdata = rom[offset + (0x200/2)];
@@ -48,7 +49,7 @@ READ16_MEMBER( neogeo_sbp_cart::protection_r )
}
-WRITE16_MEMBER( neogeo_sbp_cart::protection_w )
+WRITE16_MEMBER( neogeo_sbp_cart_device::protection_w )
{
int realoffset = 0x200 + (offset * 2);
@@ -71,7 +72,7 @@ WRITE16_MEMBER( neogeo_sbp_cart::protection_w )
}
-void neogeo_sbp_cart::patch(uint8_t* cpurom, uint32_t cpurom_size)
+void neogeo_sbp_cart_device::patch(uint8_t* cpurom, uint32_t cpurom_size)
{
/* the game code clears the text overlay used ingame immediately after writing it.. why? protection? sloppy code that the hw ignores? imperfect emulation? */
uint16_t* rom = (uint16_t*)cpurom;
@@ -81,7 +82,7 @@ void neogeo_sbp_cart::patch(uint8_t* cpurom, uint32_t cpurom_size)
rom[0x2a6fc/2] = 0x4e71;
}
-void neogeo_sbp_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_sbp_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
patch(cpuregion, cpuregion_size);
}
diff --git a/src/devices/bus/neogeo/sbp.h b/src/devices/bus/neogeo/sbp.h
index e6cf0e9aa77..455c7892399 100644
--- a/src/devices/bus/neogeo/sbp.h
+++ b/src/devices/bus/neogeo/sbp.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#pragma once
+#ifndef MAME_BUS_NEOGEO_SBP_H
+#define MAME_BUS_NEOGEO_SBP_H
-#ifndef __NEOGEO_BOOTSBP_H
-#define __NEOGEO_BOOTSBP_H
+#pragma once
#include "slot.h"
#include "rom.h"
@@ -12,24 +12,25 @@
sbp
**************************************************/
-class neogeo_sbp_cart : public neogeo_rom_device
+class neogeo_sbp_cart_device : public neogeo_rom_device
{
public:
- neogeo_sbp_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
+ neogeo_sbp_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_WRITE16_MEMBER(protection_w) override;
virtual DECLARE_READ16_MEMBER(protection_r) override;
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
void patch(uint8_t* cpurom, uint32_t cpurom_size);
};
-extern const device_type NEOGEO_SBP_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SBP_CART, neogeo_sbp_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_SBP_H
diff --git a/src/devices/bus/neogeo/slot.cpp b/src/devices/bus/neogeo/slot.cpp
index 6f014111e9c..df57d410ea7 100644
--- a/src/devices/bus/neogeo/slot.cpp
+++ b/src/devices/bus/neogeo/slot.cpp
@@ -13,7 +13,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NEOGEO_CART_SLOT = device_creator<neogeo_cart_slot_device>;
+DEFINE_DEVICE_TYPE(NEOGEO_CART_SLOT, neogeo_cart_slot_device, "neogeo_cart_slot", "Neo Geo Cartridge Slot")
//-------------------------------------------------
@@ -98,10 +98,10 @@ void device_neogeo_cart_interface::optimize_sprites(uint8_t* region_sprites, uin
// neogeo_cart_slot_device - constructor
//-------------------------------------------------
neogeo_cart_slot_device::neogeo_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- device_t(mconfig, NEOGEO_CART_SLOT, "Neo Geo Cartridge Slot", tag, owner, clock, "neogeo_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_cart(nullptr)
+ device_t(mconfig, NEOGEO_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_cart(nullptr)
{
}
diff --git a/src/devices/bus/neogeo/slot.h b/src/devices/bus/neogeo/slot.h
index 9d1c3cc7424..a90c529eea9 100644
--- a/src/devices/bus/neogeo/slot.h
+++ b/src/devices/bus/neogeo/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_SLOT_H
-#define __NEOGEO_SLOT_H
+#ifndef MAME_BUS_NEOGEO_SLOT_H
+#define MAME_BUS_NEOGEO_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -86,7 +88,6 @@ class device_neogeo_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_neogeo_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_neogeo_cart_interface();
// reading from ROM
@@ -102,7 +103,7 @@ public:
virtual uint16_t get_helper() { return 0; }
virtual void decrypt_all(DECRYPT_ALL_PARAMS) { };
- virtual int get_fixed_bank_type(void) { return 0; }
+ virtual int get_fixed_bank_type() { return 0; }
void rom_alloc(uint32_t size) { m_rom.resize(size/sizeof(uint16_t)); }
uint16_t* get_rom_base() { return m_rom.size() > 0 ? &m_rom[0] : nullptr; }
@@ -154,6 +155,8 @@ public:
void optimize_sprites(uint8_t* region_sprites, uint32_t region_sprites_size);
protected:
+ device_neogeo_cart_interface(const machine_config &mconfig, device_t &device);
+
// these are allocated when loading from softlist
std::vector<uint16_t> m_rom;
std::vector<uint8_t> m_fixed;
@@ -189,9 +192,6 @@ public:
neogeo_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
virtual ~neogeo_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override;
@@ -306,17 +306,13 @@ public:
return 0;
}
- uint8_t* get_sprites_opt_base() {
- if (m_cart) return m_cart->get_sprites_opt_base(); else return nullptr;
- }
- uint32_t get_sprites_opt_size() {
- if (m_cart) return m_cart->get_sprites_opt_size(); else return 0;
- }
+ uint8_t* get_sprites_opt_base() { return m_cart ? m_cart->get_sprites_opt_base() : nullptr; }
+ uint32_t get_sprites_opt_size() { return m_cart ? m_cart->get_sprites_opt_size() : 0; }
- int get_fixed_bank_type(void) { if (m_cart) return m_cart->get_fixed_bank_type(); return 0; }
- uint32_t get_bank_base(uint16_t sel) { if (m_cart) return m_cart->get_bank_base(sel); return 0; }
- uint32_t get_special_bank() { if (m_cart) return m_cart->get_special_bank(); return 0; }
- uint16_t get_helper() { if (m_cart) return m_cart->get_helper(); return 0; }
+ int get_fixed_bank_type() { return m_cart ? m_cart->get_fixed_bank_type() : 0; }
+ uint32_t get_bank_base(uint16_t sel) { return m_cart ? m_cart->get_bank_base(sel) : 0; }
+ uint32_t get_special_bank() { return m_cart ? m_cart->get_special_bank() : 0; }
+ uint16_t get_helper() { return m_cart ? m_cart->get_helper() : 0; }
void late_decrypt_all() { if (m_cart) m_cart->decrypt_all(
(uint8_t*)get_rom_base(), get_rom_size(),
@@ -328,6 +324,10 @@ public:
get_audiocrypt_base(), get_audiocrypt_size()); }
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
int m_type;
device_neogeo_cart_interface* m_cart;
@@ -335,7 +335,7 @@ private:
// device type definition
-extern const device_type NEOGEO_CART_SLOT;
+DECLARE_DEVICE_TYPE(NEOGEO_CART_SLOT, neogeo_cart_slot_device)
/***************************************************************************
@@ -348,4 +348,4 @@ extern const device_type NEOGEO_CART_SLOT;
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+#endif // MAME_BUS_NEOGEO_SLOT_H
diff --git a/src/devices/bus/neogeo/sma.cpp b/src/devices/bus/neogeo/sma.cpp
index 4c2beb8c9b4..8f7e1dc015f 100644
--- a/src/devices/bus/neogeo/sma.cpp
+++ b/src/devices/bus/neogeo/sma.cpp
@@ -12,35 +12,40 @@
#include "sma.h"
-//-------------------------------------------------
-// neogeo_sma_cart - constructor
-//-------------------------------------------------
+DEFINE_DEVICE_TYPE(NEOGEO_SMA_CART, neogeo_sma_cart_device, "neocart_sma", "Neo Geo SMA Cart")
+DEFINE_DEVICE_TYPE(NEOGEO_SMA_KOF99_CART, neogeo_sma_kof99_cart_device, "neocart_kof99", "Neo Geo KoF 99 SMA Cart")
+DEFINE_DEVICE_TYPE(NEOGEO_SMA_GAROU_CART, neogeo_sma_garou_cart_device, "neocart_garou", "Neo Geo Garou SMA Cart")
+DEFINE_DEVICE_TYPE(NEOGEO_SMA_GAROUH_CART, neogeo_sma_garouh_cart_device, "neocart_garouh", "Neo Geo Garou AES SMA Cart")
+DEFINE_DEVICE_TYPE(NEOGEO_SMA_MSLUG3_CART, neogeo_sma_mslug3_cart_device, "neocart_mslug3", "Neo Geo Metal Slug 3 SMA Cart")
+DEFINE_DEVICE_TYPE(NEOGEO_SMA_KOF2000_CART, neogeo_sma_kof2000_cart_device, "neocart_kof2000", "Neo Geo KoF 2000 SMA Cart")
-const device_type NEOGEO_SMA_CART = device_creator<neogeo_sma_cart>;
+//-------------------------------------------------
+// neogeo_sma_cart_device - constructor
+//-------------------------------------------------
-neogeo_sma_cart::neogeo_sma_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source) :
- neogeo_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
+neogeo_sma_cart_device::neogeo_sma_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_rom_device(mconfig, type, tag, owner, clock),
m_sma_prot(*this, "sma_prot"),
m_cmc_prot(*this, "cmc_prot")
-{}
+{
+}
-neogeo_sma_cart::neogeo_sma_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
- neogeo_rom_device(mconfig, NEOGEO_SMA_CART, "Neo Geo SMA Cart", tag, owner, clock, "neocart_sma", __FILE__),
- m_sma_prot(*this, "sma_prot"),
- m_cmc_prot(*this, "cmc_prot")
-{}
+neogeo_sma_cart_device::neogeo_sma_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock) :
+ neogeo_sma_cart_device(mconfig, NEOGEO_SMA_CART, tag, owner, clock)
+{
+}
//-------------------------------------------------
// mapper specific start/reset
//-------------------------------------------------
-void neogeo_sma_cart::device_start()
+void neogeo_sma_cart_device::device_start()
{
}
-void neogeo_sma_cart::device_reset()
+void neogeo_sma_cart_device::device_reset()
{
}
@@ -54,7 +59,7 @@ static MACHINE_CONFIG_FRAGMENT( sma_cart )
MCFG_CMC_PROT_ADD("cmc_prot")
MACHINE_CONFIG_END
-machine_config_constructor neogeo_sma_cart::device_mconfig_additions() const
+machine_config_constructor neogeo_sma_cart_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( sma_cart );
}
@@ -64,13 +69,12 @@ machine_config_constructor neogeo_sma_cart::device_mconfig_additions() const
kof99
**************************************************/
-const device_type NEOGEO_SMA_KOF99_CART = device_creator<neogeo_sma_kof99_cart>;
-
-neogeo_sma_kof99_cart::neogeo_sma_kof99_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_sma_cart(mconfig, NEOGEO_SMA_KOF99_CART, "Neo Geo KOF 99 SMA Cart", tag, owner, clock, "neocart_kof99", __FILE__)
-{}
+neogeo_sma_kof99_cart_device::neogeo_sma_kof99_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_sma_cart_device(mconfig, NEOGEO_SMA_KOF99_CART, tag, owner, clock)
+{
+}
-void neogeo_sma_kof99_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_sma_kof99_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_sma_prot->kof99_decrypt_68k(cpuregion);
m_cmc_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, KOF99_GFX_KEY);
@@ -82,13 +86,12 @@ void neogeo_sma_kof99_cart::decrypt_all(DECRYPT_ALL_PARAMS)
garou
**************************************************/
-const device_type NEOGEO_SMA_GAROU_CART = device_creator<neogeo_sma_garou_cart>;
-
-neogeo_sma_garou_cart::neogeo_sma_garou_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_sma_cart(mconfig, NEOGEO_SMA_GAROU_CART, "Neo Geo Garou SMA Cart", tag, owner, clock, "neocart_garou", __FILE__)
-{}
+neogeo_sma_garou_cart_device::neogeo_sma_garou_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_sma_cart_device(mconfig, NEOGEO_SMA_GAROU_CART, tag, owner, clock)
+{
+}
-void neogeo_sma_garou_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_sma_garou_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_sma_prot->garou_decrypt_68k(cpuregion);
m_cmc_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, GAROU_GFX_KEY);
@@ -100,13 +103,12 @@ void neogeo_sma_garou_cart::decrypt_all(DECRYPT_ALL_PARAMS)
garouh
**************************************************/
-const device_type NEOGEO_SMA_GAROUH_CART = device_creator<neogeo_sma_garouh_cart>;
-
-neogeo_sma_garouh_cart::neogeo_sma_garouh_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_sma_cart(mconfig, NEOGEO_SMA_GAROUH_CART, "Neo Geo Garou AES SMA Cart", tag, owner, clock, "neocart_garouh", __FILE__)
-{}
+neogeo_sma_garouh_cart_device::neogeo_sma_garouh_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_sma_cart_device(mconfig, NEOGEO_SMA_GAROUH_CART, tag, owner, clock)
+{
+}
-void neogeo_sma_garouh_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_sma_garouh_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_sma_prot->garouh_decrypt_68k(cpuregion);
m_cmc_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, GAROU_GFX_KEY);
@@ -118,13 +120,12 @@ void neogeo_sma_garouh_cart::decrypt_all(DECRYPT_ALL_PARAMS)
mslug3
**************************************************/
-const device_type NEOGEO_SMA_MSLUG3_CART = device_creator<neogeo_sma_mslug3_cart>;
-
-neogeo_sma_mslug3_cart::neogeo_sma_mslug3_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_sma_cart(mconfig, NEOGEO_SMA_MSLUG3_CART, "Neo Geo Metal Slug 3 SMA Cart", tag, owner, clock, "neocart_mslug3", __FILE__)
-{}
+neogeo_sma_mslug3_cart_device::neogeo_sma_mslug3_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_sma_cart_device(mconfig, NEOGEO_SMA_MSLUG3_CART, tag, owner, clock)
+{
+}
-void neogeo_sma_mslug3_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_sma_mslug3_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_sma_prot->mslug3_decrypt_68k(cpuregion);
m_cmc_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, MSLUG3_GFX_KEY);
@@ -136,13 +137,12 @@ void neogeo_sma_mslug3_cart::decrypt_all(DECRYPT_ALL_PARAMS)
kof2000
**************************************************/
-const device_type NEOGEO_SMA_KOF2000_CART = device_creator<neogeo_sma_kof2000_cart>;
-
-neogeo_sma_kof2000_cart::neogeo_sma_kof2000_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_sma_cart(mconfig, NEOGEO_SMA_KOF2000_CART, "Neo Geo KOF 2000 SMA Cart", tag, owner, clock, "neocart_kof2000", __FILE__)
-{}
+neogeo_sma_kof2000_cart_device::neogeo_sma_kof2000_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_sma_cart_device(mconfig, NEOGEO_SMA_KOF2000_CART, tag, owner, clock)
+{
+}
-void neogeo_sma_kof2000_cart::decrypt_all(DECRYPT_ALL_PARAMS)
+void neogeo_sma_kof2000_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_sma_prot->kof2000_decrypt_68k(cpuregion);
m_cmc_prot->cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
diff --git a/src/devices/bus/neogeo/sma.h b/src/devices/bus/neogeo/sma.h
index 6c1631b4cea..8e9ee1d47a6 100644
--- a/src/devices/bus/neogeo/sma.h
+++ b/src/devices/bus/neogeo/sma.h
@@ -1,25 +1,21 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
-#ifndef __NEOGEO_SMA_H
-#define __NEOGEO_SMA_H
+#ifndef MAME_BUS_NEOGEO_SMA_H
+#define MAME_BUS_NEOGEO_SMA_H
#include "slot.h"
#include "rom.h"
#include "prot_sma.h"
#include "prot_cmc.h"
-// ======================> neogeo_sma_cart
+// ======================> neogeo_sma_cart_device
-class neogeo_sma_cart : public neogeo_rom_device
+class neogeo_sma_cart_device : public neogeo_rom_device
{
public:
// construction/destruction
- neogeo_sma_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint16_t clock, const char *shortname, const char *source);
- neogeo_sma_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
+ neogeo_sma_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// reading and writing
@@ -28,96 +24,101 @@ public:
virtual uint32_t get_bank_base(uint16_t sel) override { return 0; }
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {}
- virtual int get_fixed_bank_type(void) override { return 0; }
+ virtual int get_fixed_bank_type() override { return 0; }
+
+protected:
+ neogeo_sma_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
required_device<sma_prot_device> m_sma_prot;
required_device<cmc_prot_device> m_cmc_prot;
};
-
-
// device type definition
-extern const device_type NEOGEO_SMA_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SMA_CART, neogeo_sma_cart_device)
/*************************************************
kof99
**************************************************/
-class neogeo_sma_kof99_cart : public neogeo_sma_cart
+class neogeo_sma_kof99_cart_device : public neogeo_sma_cart_device
{
public:
- neogeo_sma_kof99_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_sma_kof99_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
virtual uint32_t get_bank_base(uint16_t sel) override { return m_sma_prot->kof99_bank_base(sel); }
};
-extern const device_type NEOGEO_SMA_KOF99_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SMA_KOF99_CART, neogeo_sma_kof99_cart_device)
/*************************************************
garou
**************************************************/
-class neogeo_sma_garou_cart : public neogeo_sma_cart
+class neogeo_sma_garou_cart_device : public neogeo_sma_cart_device
{
public:
- neogeo_sma_garou_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_sma_garou_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
virtual uint32_t get_bank_base(uint16_t sel) override { return m_sma_prot->garou_bank_base(sel); }
};
-extern const device_type NEOGEO_SMA_GAROU_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SMA_GAROU_CART, neogeo_sma_garou_cart_device)
/*************************************************
garouh
**************************************************/
-class neogeo_sma_garouh_cart : public neogeo_sma_cart
+class neogeo_sma_garouh_cart_device : public neogeo_sma_cart_device
{
public:
- neogeo_sma_garouh_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_sma_garouh_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
virtual uint32_t get_bank_base(uint16_t sel) override { return m_sma_prot->garouh_bank_base(sel); }
};
-extern const device_type NEOGEO_SMA_GAROUH_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SMA_GAROUH_CART, neogeo_sma_garouh_cart_device)
/*************************************************
mslug3
**************************************************/
-class neogeo_sma_mslug3_cart : public neogeo_sma_cart
+class neogeo_sma_mslug3_cart_device : public neogeo_sma_cart_device
{
public:
- neogeo_sma_mslug3_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_sma_mslug3_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 1; }
+ virtual int get_fixed_bank_type() override { return 1; }
virtual uint32_t get_bank_base(uint16_t sel) override { return m_sma_prot->mslug3_bank_base(sel); }
};
-extern const device_type NEOGEO_SMA_MSLUG3_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SMA_MSLUG3_CART, neogeo_sma_mslug3_cart_device)
/*************************************************
kof2000
**************************************************/
-class neogeo_sma_kof2000_cart : public neogeo_sma_cart
+class neogeo_sma_kof2000_cart_device : public neogeo_sma_cart_device
{
public:
- neogeo_sma_kof2000_cart(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ neogeo_sma_kof2000_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
- virtual int get_fixed_bank_type(void) override { return 2; }
+ virtual int get_fixed_bank_type() override { return 2; }
virtual uint32_t get_bank_base(uint16_t sel) override { return m_sma_prot->kof2000_bank_base(sel); }
};
-extern const device_type NEOGEO_SMA_KOF2000_CART;
+DECLARE_DEVICE_TYPE(NEOGEO_SMA_KOF2000_CART, neogeo_sma_kof2000_cart_device)
-#endif
+#endif // MAME_BUS_NEOGEO_SMA_H
diff --git a/src/devices/bus/neogeo_ctrl/ctrl.cpp b/src/devices/bus/neogeo_ctrl/ctrl.cpp
index 870f830c4d1..4fb9914adb8 100644
--- a/src/devices/bus/neogeo_ctrl/ctrl.cpp
+++ b/src/devices/bus/neogeo_ctrl/ctrl.cpp
@@ -18,6 +18,7 @@
#include "emu.h"
#include "ctrl.h"
+
// slot devices
#include "joystick.h"
#include "mahjong.h"
@@ -30,8 +31,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NEOGEO_CONTROL_PORT = device_creator<neogeo_control_port_device>;
-const device_type NEOGEO_CTRL_EDGE_CONNECTOR = device_creator<neogeo_ctrl_edge_port_device>;
+DEFINE_DEVICE_TYPE(NEOGEO_CONTROL_PORT, neogeo_control_port_device, "neogeo_control_port", "SNK Neo Geo controller port")
+DEFINE_DEVICE_TYPE(NEOGEO_CTRL_EDGE_CONNECTOR, neogeo_ctrl_edge_port_device, "neogeo_ctrl_edge", "SNK Neo Geo Edge Connector (Controller)")
//**************************************************************************
@@ -86,8 +87,9 @@ device_neogeo_ctrl_edge_interface::~device_neogeo_ctrl_edge_interface()
//-------------------------------------------------
neogeo_control_port_device::neogeo_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEOGEO_CONTROL_PORT, "SNK Neo Geo control port", tag, owner, clock, "neogeo_control_port", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr)
+ device_t(mconfig, NEOGEO_CONTROL_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_device(nullptr)
{
}
@@ -140,8 +142,9 @@ void neogeo_control_port_device::write_ctrlsel(uint8_t data)
//-------------------------------------------------
neogeo_ctrl_edge_port_device::neogeo_ctrl_edge_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEOGEO_CTRL_EDGE_CONNECTOR, "SNK Neo Geo Edge Connector (Controller)", tag, owner, clock, "neogeo_ctrl_edge", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr)
+ device_t(mconfig, NEOGEO_CTRL_EDGE_CONNECTOR, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_device(nullptr)
{
}
diff --git a/src/devices/bus/neogeo_ctrl/ctrl.h b/src/devices/bus/neogeo_ctrl/ctrl.h
index c4450d4a5ee..53ee9c53713 100644
--- a/src/devices/bus/neogeo_ctrl/ctrl.h
+++ b/src/devices/bus/neogeo_ctrl/ctrl.h
@@ -6,12 +6,11 @@
**********************************************************************/
+#ifndef MAME_BUS_NEOGEO_CTRL_CTRL_H
+#define MAME_BUS_NEOGEO_CTRL_CTRL_H
#pragma once
-#ifndef __NEOGEO_CONTROL_PORT__
-#define __NEOGEO_CONTROL_PORT__
-
//**************************************************************************
// TYPE DEFINITIONS
@@ -26,21 +25,21 @@ class device_neogeo_control_port_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_neogeo_control_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_neogeo_control_port_interface();
- virtual uint8_t read_ctrl() { return 0xff; };
- virtual uint8_t read_start_sel() { return 0xff; };
- virtual void write_ctrlsel(uint8_t data) { };
+ virtual uint8_t read_ctrl() { return 0xff; }
+ virtual uint8_t read_start_sel() { return 0xff; }
+ virtual void write_ctrlsel(uint8_t data) { }
protected:
+ device_neogeo_control_port_interface(const machine_config &mconfig, device_t &device);
+
neogeo_control_port_device *m_port;
};
// ======================> neogeo_control_port_device
-class neogeo_control_port_device : public device_t,
- public device_slot_interface
+class neogeo_control_port_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
@@ -66,7 +65,6 @@ class device_neogeo_ctrl_edge_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_neogeo_ctrl_edge_interface(const machine_config &mconfig, device_t &device);
virtual ~device_neogeo_ctrl_edge_interface();
virtual uint8_t read_start_sel() { return 0xff; }
@@ -75,13 +73,14 @@ public:
virtual void write_ctrlsel(uint8_t data) { }
protected:
+ device_neogeo_ctrl_edge_interface(const machine_config &mconfig, device_t &device);
+
neogeo_ctrl_edge_port_device *m_port;
};
// ======================> neogeo_ctrl_edge_port_device
-class neogeo_ctrl_edge_port_device : public device_t,
- public device_slot_interface
+class neogeo_ctrl_edge_port_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
@@ -102,8 +101,8 @@ protected:
// device type definition
-extern const device_type NEOGEO_CONTROL_PORT;
-extern const device_type NEOGEO_CTRL_EDGE_CONNECTOR;
+DECLARE_DEVICE_TYPE(NEOGEO_CONTROL_PORT, neogeo_control_port_device)
+DECLARE_DEVICE_TYPE(NEOGEO_CTRL_EDGE_CONNECTOR, neogeo_ctrl_edge_port_device)
//**************************************************************************
@@ -126,4 +125,4 @@ SLOT_INTERFACE_EXTERN( neogeo_arc_edge_fixed );
SLOT_INTERFACE_EXTERN( neogeo_arc_pin15 );
-#endif
+#endif // MAME_BUS_NEOGEO_CTRL_CTRL_H
diff --git a/src/devices/bus/neogeo_ctrl/dial.cpp b/src/devices/bus/neogeo_ctrl/dial.cpp
index 6211a5b9ee1..f8aeb88b1f0 100644
--- a/src/devices/bus/neogeo_ctrl/dial.cpp
+++ b/src/devices/bus/neogeo_ctrl/dial.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NEOGEO_DIAL = device_creator<neogeo_dial_device>;
+DEFINE_DEVICE_TYPE(NEOGEO_DIAL, neogeo_dial_device, "neogeo_dial", "SNK Neo Geo Dial Controller")
static INPUT_PORTS_START( neogeo_dial )
@@ -62,12 +62,12 @@ ioport_constructor neogeo_dial_device::device_input_ports() const
//-------------------------------------------------
neogeo_dial_device::neogeo_dial_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEOGEO_DIAL, "SNK Neo Geo Dial Controller", tag, owner, clock, "neogeo_dial", __FILE__),
- device_neogeo_ctrl_edge_interface(mconfig, *this),
- m_joy1(*this, "JOY1"),
- m_joy2(*this, "JOY2"),
- m_dial1(*this, "DIAL1"),
- m_dial2(*this, "DIAL2")
+ device_t(mconfig, NEOGEO_DIAL, tag, owner, clock),
+ device_neogeo_ctrl_edge_interface(mconfig, *this),
+ m_joy1(*this, "JOY1"),
+ m_joy2(*this, "JOY2"),
+ m_dial1(*this, "DIAL1"),
+ m_dial2(*this, "DIAL2")
{
}
diff --git a/src/devices/bus/neogeo_ctrl/dial.h b/src/devices/bus/neogeo_ctrl/dial.h
index 9af531b2d6e..d3466025642 100644
--- a/src/devices/bus/neogeo_ctrl/dial.h
+++ b/src/devices/bus/neogeo_ctrl/dial.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_NEOGEO_CTRL_DIAL_H
+#define MAME_BUS_NEOGEO_CTRL_DIAL_H
-#ifndef __NEOGEO_DIAL__
-#define __NEOGEO_DIAL__
+#pragma once
#include "ctrl.h"
@@ -20,8 +20,7 @@
// ======================> neogeo_dial_device
-class neogeo_dial_device : public device_t,
- public device_neogeo_ctrl_edge_interface
+class neogeo_dial_device : public device_t, public device_neogeo_ctrl_edge_interface
{
public:
// construction/destruction
@@ -48,10 +47,7 @@ private:
uint8_t m_ctrl_sel;
};
-
-
// device type definition
-extern const device_type NEOGEO_DIAL;
-
+DECLARE_DEVICE_TYPE(NEOGEO_DIAL, neogeo_dial_device)
-#endif
+#endif // MAME_BUS_NEOGEO_CTRL_DIAL_H
diff --git a/src/devices/bus/neogeo_ctrl/irrmaze.cpp b/src/devices/bus/neogeo_ctrl/irrmaze.cpp
index 51bc3cb043d..04d70294e5a 100644
--- a/src/devices/bus/neogeo_ctrl/irrmaze.cpp
+++ b/src/devices/bus/neogeo_ctrl/irrmaze.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Fabio Priuli
/**********************************************************************
- SNK Neo Geo Irritation Maze Analog Controller emulation
+ SNK Neo Geo Irritating Maze Trackball Controller emulation
**********************************************************************/
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NEOGEO_IRRMAZE = device_creator<neogeo_irrmaze_device>;
+DEFINE_DEVICE_TYPE(NEOGEO_IRRMAZE, neogeo_irrmaze_device, "neogeo_irrmaze", "SNK Neo Geo Irritating Maze Trackball controller")
static INPUT_PORTS_START( neogeo_irrmaze )
@@ -51,11 +51,11 @@ ioport_constructor neogeo_irrmaze_device::device_input_ports() const
//-------------------------------------------------
neogeo_irrmaze_device::neogeo_irrmaze_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEOGEO_IRRMAZE, "SNK Neo Geo Irritating Maze Analog Controller", tag, owner, clock, "neogeo_irrmaze", __FILE__),
- device_neogeo_ctrl_edge_interface(mconfig, *this),
- m_tx(*this, "TRACK_X"),
- m_ty(*this, "TRACK_Y"),
- m_buttons(*this, "BUTTONS")
+ device_t(mconfig, NEOGEO_IRRMAZE, tag, owner, clock),
+ device_neogeo_ctrl_edge_interface(mconfig, *this),
+ m_tx(*this, "TRACK_X"),
+ m_ty(*this, "TRACK_Y"),
+ m_buttons(*this, "BUTTONS")
{
}
diff --git a/src/devices/bus/neogeo_ctrl/irrmaze.h b/src/devices/bus/neogeo_ctrl/irrmaze.h
index 33beb1fe10d..855c936ff5c 100644
--- a/src/devices/bus/neogeo_ctrl/irrmaze.h
+++ b/src/devices/bus/neogeo_ctrl/irrmaze.h
@@ -2,14 +2,14 @@
// copyright-holders:Fabio Priuli
/**********************************************************************
- SNK Neo Geo Dial controller emulation
+ SNK Neo Geo Irritating Maze Trackball Controller emulation
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_NEOGEO_CTRL_IRRMAZE_H
+#define MAME_BUS_NEOGEO_CTRL_IRRMAZE_H
-#ifndef __NEOGEO_IRRMAZE__
-#define __NEOGEO_IRRMAZE__
+#pragma once
#include "ctrl.h"
@@ -18,10 +18,9 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> neogeo_dial_device
+// ======================> neogeo_irrmaze_device
-class neogeo_irrmaze_device : public device_t,
- public device_neogeo_ctrl_edge_interface
+class neogeo_irrmaze_device : public device_t, public device_neogeo_ctrl_edge_interface
{
public:
// construction/destruction
@@ -48,9 +47,8 @@ private:
};
-
// device type definition
-extern const device_type NEOGEO_IRRMAZE;
+DECLARE_DEVICE_TYPE(NEOGEO_IRRMAZE, neogeo_irrmaze_device)
-#endif
+#endif // MAME_BUS_NEOGEO_CTRL_IRRMAZE_H
diff --git a/src/devices/bus/neogeo_ctrl/joystick.cpp b/src/devices/bus/neogeo_ctrl/joystick.cpp
index dabed0aa13e..e854330a452 100644
--- a/src/devices/bus/neogeo_ctrl/joystick.cpp
+++ b/src/devices/bus/neogeo_ctrl/joystick.cpp
@@ -22,7 +22,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NEOGEO_JOY = device_creator<neogeo_joystick_device>;
+DEFINE_DEVICE_TYPE(NEOGEO_JOY, neogeo_joystick_device, "neogeo_joy", "SNK Neo Geo Joystick")
static INPUT_PORTS_START( neogeo_joy )
@@ -61,10 +61,10 @@ ioport_constructor neogeo_joystick_device::device_input_ports() const
//-------------------------------------------------
neogeo_joystick_device::neogeo_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEOGEO_JOY, "SNK Neo Geo Joystick", tag, owner, clock, "neogeo_joy", __FILE__),
- device_neogeo_control_port_interface(mconfig, *this),
- m_joy(*this, "JOY"),
- m_ss(*this, "START_SELECT")
+ device_t(mconfig, NEOGEO_JOY, tag, owner, clock),
+ device_neogeo_control_port_interface(mconfig, *this),
+ m_joy(*this, "JOY"),
+ m_ss(*this, "START_SELECT")
{
}
@@ -118,7 +118,7 @@ uint8_t neogeo_joystick_device::read_start_sel()
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NEOGEO_JOY_AC = device_creator<neogeo_joy_ac_device>;
+DEFINE_DEVICE_TYPE(NEOGEO_JOY_AC, neogeo_joy_ac_device, "neogeo_joyac", "SNK Neo Geo Arcade Joystick")
static INPUT_PORTS_START( neogeo_joy_ac )
@@ -162,10 +162,10 @@ ioport_constructor neogeo_joy_ac_device::device_input_ports() const
//-------------------------------------------------
neogeo_joy_ac_device::neogeo_joy_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEOGEO_JOY_AC, "SNK Neo Geo Arcade Joystick", tag, owner, clock, "neogeo_joyac", __FILE__),
- device_neogeo_ctrl_edge_interface(mconfig, *this),
- m_joy1(*this, "JOY1"),
- m_joy2(*this, "JOY2")
+ device_t(mconfig, NEOGEO_JOY_AC, tag, owner, clock),
+ device_neogeo_ctrl_edge_interface(mconfig, *this),
+ m_joy1(*this, "JOY1"),
+ m_joy2(*this, "JOY2")
{
}
diff --git a/src/devices/bus/neogeo_ctrl/joystick.h b/src/devices/bus/neogeo_ctrl/joystick.h
index a78734ab695..9be443077d9 100644
--- a/src/devices/bus/neogeo_ctrl/joystick.h
+++ b/src/devices/bus/neogeo_ctrl/joystick.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_NEOGEO_CTRL_JOYSTICK_H
+#define MAME_BUS_NEOGEO_CTRL_JOYSTICK_H
-#ifndef __NEOGEO_JOYSTICK__
-#define __NEOGEO_JOYSTICK__
+#pragma once
#include "ctrl.h"
@@ -20,8 +20,7 @@
// ======================> neogeo_joystick_device
-class neogeo_joystick_device : public device_t,
- public device_neogeo_control_port_interface
+class neogeo_joystick_device : public device_t, public device_neogeo_control_port_interface
{
public:
// construction/destruction
@@ -47,8 +46,7 @@ private:
// ======================> neogeo_joy_ac_device
-class neogeo_joy_ac_device : public device_t,
- public device_neogeo_ctrl_edge_interface
+class neogeo_joy_ac_device : public device_t, public device_neogeo_ctrl_edge_interface
{
public:
// construction/destruction
@@ -73,8 +71,8 @@ private:
// device type definition
-extern const device_type NEOGEO_JOY;
-extern const device_type NEOGEO_JOY_AC;
+DECLARE_DEVICE_TYPE(NEOGEO_JOY, neogeo_joystick_device)
+DECLARE_DEVICE_TYPE(NEOGEO_JOY_AC, neogeo_joy_ac_device)
-#endif
+#endif // MAME_BUS_NEOGEO_CTRL_JOYSTICK_H
diff --git a/src/devices/bus/neogeo_ctrl/kizuna4p.cpp b/src/devices/bus/neogeo_ctrl/kizuna4p.cpp
index 72854f62241..0c0420b6f3a 100644
--- a/src/devices/bus/neogeo_ctrl/kizuna4p.cpp
+++ b/src/devices/bus/neogeo_ctrl/kizuna4p.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NEOGEO_KIZ4P = device_creator<neogeo_kizuna4p_device>;
+DEFINE_DEVICE_TYPE(NEOGEO_KIZ4P, neogeo_kizuna4p_device, "neogeo_kiz4p", "SNK Neo Geo Kizuna 4P Controller")
static INPUT_PORTS_START( neogeo_kiz4p )
@@ -86,14 +86,14 @@ ioport_constructor neogeo_kizuna4p_device::device_input_ports() const
//-------------------------------------------------
neogeo_kizuna4p_device::neogeo_kizuna4p_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEOGEO_KIZ4P, "SNK Neo Geo Kizuna 4P Controller", tag, owner, clock, "neogeo_kiz4p", __FILE__),
- device_neogeo_ctrl_edge_interface(mconfig, *this),
- m_joy1(*this, "JOY1"),
- m_joy2(*this, "JOY2"),
- m_joy3(*this, "JOY3"),
- m_joy4(*this, "JOY4"),
- m_ss1(*this, "START13"),
- m_ss2(*this, "START24")
+ device_t(mconfig, NEOGEO_KIZ4P, tag, owner, clock),
+ device_neogeo_ctrl_edge_interface(mconfig, *this),
+ m_joy1(*this, "JOY1"),
+ m_joy2(*this, "JOY2"),
+ m_joy3(*this, "JOY3"),
+ m_joy4(*this, "JOY4"),
+ m_ss1(*this, "START13"),
+ m_ss2(*this, "START24")
{
}
diff --git a/src/devices/bus/neogeo_ctrl/kizuna4p.h b/src/devices/bus/neogeo_ctrl/kizuna4p.h
index c690ce485c7..6f7fd6fcbb9 100644
--- a/src/devices/bus/neogeo_ctrl/kizuna4p.h
+++ b/src/devices/bus/neogeo_ctrl/kizuna4p.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_NEOGEO_CTRL_KIZUNA4P_H
+#define MAME_BUS_NEOGEO_CTRL_KIZUNA4P_H
-#ifndef __NEOGEO_KIZ4P__
-#define __NEOGEO_KIZ4P__
+#pragma once
#include "ctrl.h"
@@ -52,9 +52,8 @@ private:
};
-
// device type definition
-extern const device_type NEOGEO_KIZ4P;
+DECLARE_DEVICE_TYPE(NEOGEO_KIZ4P, neogeo_kizuna4p_device)
-#endif
+#endif // MAME_BUS_NEOGEO_CTRL_KIZUNA4P_H
diff --git a/src/devices/bus/neogeo_ctrl/mahjong.cpp b/src/devices/bus/neogeo_ctrl/mahjong.cpp
index 149c252f386..9c818abf4b3 100644
--- a/src/devices/bus/neogeo_ctrl/mahjong.cpp
+++ b/src/devices/bus/neogeo_ctrl/mahjong.cpp
@@ -13,8 +13,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NEOGEO_MJCTRL_AC = device_creator<neogeo_mjctrl_ac_device>;
-const device_type NEOGEO_MJCTRL = device_creator<neogeo_mjctrl_device>;
+DEFINE_DEVICE_TYPE(NEOGEO_MJCTRL_AC, neogeo_mjctrl_ac_device, "neogeo_mj_ac", "SNK Neo Geo Arcade Mahjong panel")
+DEFINE_DEVICE_TYPE(NEOGEO_MJCTRL, neogeo_mjctrl_device, "neogeo_mj", "SNK Neo Geo Mahjong controller")
static INPUT_PORTS_START( neogeo_mj_ac )
@@ -94,21 +94,21 @@ ioport_constructor neogeo_mjctrl_device::device_input_ports() const
// neogeo_joystick_device - constructor
//-------------------------------------------------
-neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_neogeo_control_port_interface(mconfig, *this)
, m_mjpanel(*this, "MJ.%u", 0)
{
}
neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : neogeo_mjctrl_ac_device(mconfig, NEOGEO_MJCTRL_AC, "SNK Neo Geo Arcade Mahjong panel", tag, owner, clock, "neogeo_mjac", __FILE__)
+ : neogeo_mjctrl_ac_device(mconfig, NEOGEO_MJCTRL_AC, tag, owner, clock)
{
}
-neogeo_mjctrl_device::neogeo_mjctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- neogeo_mjctrl_ac_device(mconfig, NEOGEO_MJCTRL, "SNK Neo Geo Mahjong controller", tag, owner, clock, "neogeo_mjctrl", __FILE__),
- m_ss(*this, "START_SELECT")
+neogeo_mjctrl_device::neogeo_mjctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : neogeo_mjctrl_ac_device(mconfig, NEOGEO_MJCTRL, tag, owner, clock)
+ , m_ss(*this, "START_SELECT")
{
}
diff --git a/src/devices/bus/neogeo_ctrl/mahjong.h b/src/devices/bus/neogeo_ctrl/mahjong.h
index 48a160f1eec..ff59891dd59 100644
--- a/src/devices/bus/neogeo_ctrl/mahjong.h
+++ b/src/devices/bus/neogeo_ctrl/mahjong.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_NEOGEO_CTRL_MAHJONG_H
+#define MAME_BUS_NEOGEO_CTRL_MAHJONG_H
-#ifndef __NEOGEO_MJCTRL__
-#define __NEOGEO_MJCTRL__
+#pragma once
#include "ctrl.h"
@@ -20,18 +20,18 @@
// ======================> neogeo_mjctrl_ac_device
-class neogeo_mjctrl_ac_device : public device_t,
- public device_neogeo_control_port_interface
+class neogeo_mjctrl_ac_device : public device_t, public device_neogeo_control_port_interface
{
public:
// construction/destruction
- neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
neogeo_mjctrl_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
protected:
+ neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -67,8 +67,8 @@ private:
// device type definition
-extern const device_type NEOGEO_MJCTRL;
-extern const device_type NEOGEO_MJCTRL_AC;
+DECLARE_DEVICE_TYPE(NEOGEO_MJCTRL_AC, neogeo_mjctrl_ac_device)
+DECLARE_DEVICE_TYPE(NEOGEO_MJCTRL, neogeo_mjctrl_device)
-#endif
+#endif // MAME_BUS_NEOGEO_CTRL_MAHJONG_H
diff --git a/src/devices/bus/nes/2a03pur.cpp b/src/devices/bus/nes/2a03pur.cpp
index 8382814efe0..43ff34758e7 100644
--- a/src/devices/bus/nes/2a03pur.cpp
+++ b/src/devices/bus/nes/2a03pur.cpp
@@ -31,11 +31,11 @@
// constructor
//-------------------------------------------------
-const device_type NES_2A03PURITANS = device_creator<nes_2a03pur_device>;
+DEFINE_DEVICE_TYPE(NES_2A03PURITANS, nes_2a03pur_device, "nes_2a03pur", "NES Cart 2A03 Puritans Album PCB")
nes_2a03pur_device::nes_2a03pur_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_2A03PURITANS, "NES Cart 2A03 Puritans Album PCB", tag, owner, clock, "nes_2a03pur", __FILE__)
+ : nes_nrom_device(mconfig, NES_2A03PURITANS, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/2a03pur.h b/src/devices/bus/nes/2a03pur.h
index 755957c0f95..d17443d8963 100644
--- a/src/devices/bus/nes/2a03pur.h
+++ b/src/devices/bus/nes/2a03pur.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_2A03PUR_H
-#define __NES_2A03PUR_H
+#ifndef MAME_BUS_NES_2A03PUR_H
+#define MAME_BUS_NES_2A03PUR_H
+
+#pragma once
#include "nxrom.h"
@@ -14,13 +16,15 @@ public:
// construction/destruction
nes_2a03pur_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[8];
};
@@ -30,4 +34,4 @@ private:
// device type definition
extern const device_type NES_2A03PURITANS;
-#endif
+#endif // MAME_BUS_NES_2A03PUR_H
diff --git a/src/devices/bus/nes/act53.cpp b/src/devices/bus/nes/act53.cpp
index 6dce9e066c3..f163be268fd 100644
--- a/src/devices/bus/nes/act53.cpp
+++ b/src/devices/bus/nes/act53.cpp
@@ -29,13 +29,13 @@
// constructor
//-------------------------------------------------
-const device_type NES_ACTION53 = device_creator<nes_action53_device>;
+DEFINE_DEVICE_TYPE(NES_ACTION53, nes_action53_device, "nes_action53", "NES Cart Action 53 PCB")
nes_action53_device::nes_action53_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_ACTION53, "NES Cart Action 53 PCB", tag, owner, clock, "nes_action53", __FILE__),
- m_sel(0)
- {
+ : nes_nrom_device(mconfig, NES_ACTION53, tag, owner, clock)
+ , m_sel(0)
+{
}
diff --git a/src/devices/bus/nes/act53.h b/src/devices/bus/nes/act53.h
index 3d9c8d53155..1f299a5a5da 100644
--- a/src/devices/bus/nes/act53.h
+++ b/src/devices/bus/nes/act53.h
@@ -1,12 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_ACTION53_H
-#define __NES_ACTION53_H
+#ifndef MAME_BUS_NES_ACT53_H
+#define MAME_BUS_NES_ACT53_H
#include "nxrom.h"
-// ======================> nes_racermate_device
+// ======================> nes_action53_device
class nes_action53_device : public nes_nrom_device
{
@@ -14,13 +14,15 @@ public:
// construction/destruction
nes_action53_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_prg();
void update_mirr();
@@ -28,11 +30,7 @@ private:
uint8_t m_reg[4];
};
-
-
-
-
// device type definition
-extern const device_type NES_ACTION53;
+DECLARE_DEVICE_TYPE(NES_ACTION53, nes_action53_device)
-#endif
+#endif // MAME_BUS_NES_ACT53_H
diff --git a/src/devices/bus/nes/aladdin.cpp b/src/devices/bus/nes/aladdin.cpp
index 1e30880c03f..30adbeca9a0 100644
--- a/src/devices/bus/nes/aladdin.cpp
+++ b/src/devices/bus/nes/aladdin.cpp
@@ -39,12 +39,12 @@
//-------------------------------------------------
aladdin_cart_interface::aladdin_cart_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_rom(nullptr),
- m_rom_size(0),
- m_lobank(0),
- m_hibank(0),
- m_rom_mask(0xff)
+ : device_slot_card_interface(mconfig, device)
+ , m_rom(nullptr)
+ , m_rom_size(0)
+ , m_lobank(0)
+ , m_hibank(0)
+ , m_rom_mask(0xff)
{
}
@@ -64,12 +64,13 @@ READ8_MEMBER(aladdin_cart_interface::read)
// sub-cart slot device
//-------------------------------------------------
-const device_type NES_ALADDIN_SLOT = device_creator<nes_aladdin_slot_device>;
+DEFINE_DEVICE_TYPE(NES_ALADDIN_SLOT, nes_aladdin_slot_device, "nes_ade_slot", "NES Aladdin Deck Enhancer Cartridge Slot")
-nes_aladdin_slot_device::nes_aladdin_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_ALADDIN_SLOT, "NES Aladdin Deck Enhancer Cartridge Slot", tag, owner, clock, "nes_ade_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this), m_cart(nullptr)
+nes_aladdin_slot_device::nes_aladdin_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NES_ALADDIN_SLOT, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
+ , device_slot_interface(mconfig, *this)
+ , m_cart(nullptr)
{
}
@@ -172,24 +173,24 @@ ROM_START( ade_rom )
ROM_REGION(0x40000, "aderom", ROMREGION_ERASEFF)
ROM_END
-const device_type NES_ALGN_ROM = device_creator<nes_algn_rom_device>;
-const device_type NES_ALGQ_ROM = device_creator<nes_algq_rom_device>;
+DEFINE_DEVICE_TYPE(NES_ALGN_ROM, nes_algn_rom_device, "nes_algn_rom", "NES Aladdin Deck Enhancer ALGN ROM")
+DEFINE_DEVICE_TYPE(NES_ALGQ_ROM, nes_algq_rom_device, "nes_algq_rom", "NES Aladdin Deck Enhancer ALGQ ROM")
-nes_algn_rom_device::nes_algn_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- aladdin_cart_interface( mconfig, *this )
+nes_algn_rom_device::nes_algn_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , aladdin_cart_interface(mconfig, *this)
{
}
nes_algn_rom_device::nes_algn_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NES_ALGN_ROM, "NES Aladdin Deck Enhancer ALGN ROM", tag, owner, clock, "nes_algn_rom", __FILE__),
- aladdin_cart_interface( mconfig, *this )
+ : nes_algn_rom_device(mconfig, NES_ALGN_ROM, tag, owner, clock)
{
}
nes_algq_rom_device::nes_algq_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_algn_rom_device(mconfig, NES_ALGQ_ROM, "NES Aladdin Deck Enhancer ALGQ ROM", tag, owner, clock, "nes_algq_rom", __FILE__), m_bank_base(0)
- {
+ : nes_algn_rom_device(mconfig, NES_ALGQ_ROM, tag, owner, clock)
+ , m_bank_base(0)
+{
}
void nes_algn_rom_device::device_start()
@@ -260,11 +261,11 @@ void nes_algq_rom_device::write_prg(uint32_t offset, uint8_t data)
//
//-----------------------------------------------
-const device_type NES_ALADDIN = device_creator<nes_aladdin_device>;
+DEFINE_DEVICE_TYPE(NES_ALADDIN, nes_aladdin_device, "nes_aladdin", "NES Cart Camerica Aladdin PCB")
nes_aladdin_device::nes_aladdin_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_ALADDIN, "NES Cart Camerica Aladdin PCB", tag, owner, clock, "nes_aladdin", __FILE__),
- m_subslot(*this, "ade_slot")
+ : nes_nrom_device(mconfig, NES_ALADDIN, tag, owner, clock)
+ , m_subslot(*this, "ade_slot")
{
}
diff --git a/src/devices/bus/nes/aladdin.h b/src/devices/bus/nes/aladdin.h
index 6384ec0f95a..80262b637d9 100644
--- a/src/devices/bus/nes/aladdin.h
+++ b/src/devices/bus/nes/aladdin.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_ALADDIN_H
-#define __NES_ALADDIN_H
+#ifndef MAME_BUS_NES_ALADDIN_H
+#define MAME_BUS_NES_ALADDIN_H
+
+#pragma once
#include "nxrom.h"
#include "softlist_dev.h"
@@ -19,7 +21,6 @@ class aladdin_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- aladdin_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~aladdin_cart_interface();
// reading and writing
@@ -30,6 +31,8 @@ public:
virtual void write_prg(uint32_t offset, uint8_t data) { }
protected:
+ aladdin_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -38,10 +41,13 @@ protected:
// ======================> nes_aladdin_slot_device
+class nes_aladdin_device;
+
class nes_aladdin_slot_device : public device_t,
public device_image_interface,
public device_slot_interface
{
+ friend class nes_aladdin_device;
public:
// construction/destruction
nes_aladdin_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -69,11 +75,12 @@ public:
virtual DECLARE_READ8_MEMBER(read);
void write_prg(uint32_t offset, uint8_t data) { if (m_cart) m_cart->write_prg(offset, data); }
+protected:
aladdin_cart_interface* m_cart;
};
// device type definition
-extern const device_type NES_ALADDIN_SLOT;
+DECLARE_DEVICE_TYPE(NES_ALADDIN_SLOT, nes_aladdin_slot_device)
#define MCFG_ALADDIN_MINICART_ADD(_tag, _slot_intf) \
@@ -94,7 +101,6 @@ class nes_algn_rom_device : public device_t,
{
public:
// construction/destruction
- nes_algn_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_algn_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -103,6 +109,8 @@ public:
virtual void write_prg(uint32_t offset, uint8_t data) override;
protected:
+ nes_algn_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -129,8 +137,8 @@ protected:
};
// device type definition
-extern const device_type NES_ALGN_ROM;
-extern const device_type NES_ALGQ_ROM;
+DECLARE_DEVICE_TYPE(NES_ALGN_ROM, nes_algn_rom_device)
+DECLARE_DEVICE_TYPE(NES_ALGQ_ROM, nes_algq_rom_device)
//-----------------------------------------------
@@ -147,8 +155,6 @@ public:
// construction/destruction
nes_aladdin_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
@@ -156,11 +162,14 @@ public:
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
required_device<nes_aladdin_slot_device> m_subslot;
};
// device type definition
-extern const device_type NES_ALADDIN;
+DECLARE_DEVICE_TYPE(NES_ALADDIN, nes_aladdin_device)
-#endif
+#endif // MAME_BUS_NES_ALADDIN_H
diff --git a/src/devices/bus/nes/ave.cpp b/src/devices/bus/nes/ave.cpp
index fcc757b7651..823d66e2e57 100644
--- a/src/devices/bus/nes/ave.cpp
+++ b/src/devices/bus/nes/ave.cpp
@@ -33,24 +33,24 @@
// constructor
//-------------------------------------------------
-const device_type NES_NINA001 = device_creator<nes_nina001_device>;
-const device_type NES_NINA006 = device_creator<nes_nina006_device>;
-const device_type NES_MAXI15 = device_creator<nes_maxi15_device>;
+DEFINE_DEVICE_TYPE(NES_NINA001, nes_nina001_device, "nes_nina001", "NES Cart AVE Nina-001 PCB")
+DEFINE_DEVICE_TYPE(NES_NINA006, nes_nina006_device, "nes_nina006", "NES Cart AVE Nina-006 PCB")
+DEFINE_DEVICE_TYPE(NES_MAXI15, nes_maxi15_device, "nes_maxi15", "NES Cart AVE Maxi 15 PCB")
nes_nina001_device::nes_nina001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NINA001, "NES Cart AVE Nina-001 PCB", tag, owner, clock, "nes_nina001", __FILE__)
+ : nes_nrom_device(mconfig, NES_NINA001, tag, owner, clock)
{
}
nes_nina006_device::nes_nina006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NINA006, "NES Cart AVE Nina-006 PCB", tag, owner, clock, "nes_nina006", __FILE__)
+ : nes_nrom_device(mconfig, NES_NINA006, tag, owner, clock)
{
}
nes_maxi15_device::nes_maxi15_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_MAXI15, "NES Cart AVE Maxi 15 PCB", tag, owner, clock, "nes_maxi15", __FILE__), m_reg(0), m_bank(0)
- {
+ : nes_nrom_device(mconfig, NES_MAXI15, tag, owner, clock), m_reg(0), m_bank(0)
+{
}
diff --git a/src/devices/bus/nes/ave.h b/src/devices/bus/nes/ave.h
index 7648cc7ce46..5fdd233b3c3 100644
--- a/src/devices/bus/nes/ave.h
+++ b/src/devices/bus/nes/ave.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_AVE_H
-#define __NES_AVE_H
+#ifndef MAME_BUS_NES_AVE_H
+#define MAME_BUS_NES_AVE_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_nina001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -30,11 +34,13 @@ public:
// construction/destruction
nes_nina006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -46,24 +52,25 @@ public:
// construction/destruction
nes_maxi15_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_banks();
+
uint8_t m_reg, m_bank;
};
-
-
// device type definition
-extern const device_type NES_NINA001;
-extern const device_type NES_NINA006;
-extern const device_type NES_MAXI15;
+DECLARE_DEVICE_TYPE(NES_NINA001, nes_nina001_device)
+DECLARE_DEVICE_TYPE(NES_NINA006, nes_nina006_device)
+DECLARE_DEVICE_TYPE(NES_MAXI15, nes_maxi15_device)
-#endif
+#endif // MAME_BUS_NES_AVE_H
diff --git a/src/devices/bus/nes/bandai.cpp b/src/devices/bus/nes/bandai.cpp
index e75b6401205..83ab401022b 100644
--- a/src/devices/bus/nes/bandai.cpp
+++ b/src/devices/bus/nes/bandai.cpp
@@ -17,7 +17,7 @@
* Bandai Datach Joint ROM System [mapper 157] is emulated in a separate source file
to implement also the subslot, but the PCB is basically a Bandai LZ93D50 + 24C02 EEPROM
- pcb with added barcode reader and subslot
+ PCB with added barcode reader and subslot
* Bandai Karaoke Studio [mapper 188] is emulated in a separate source file
to implement also the subslot and the mic inputs
@@ -50,58 +50,56 @@
// constructor
//-------------------------------------------------
-const device_type NES_OEKAKIDS = device_creator<nes_oekakids_device>;
-const device_type NES_FCG = device_creator<nes_fcg_device>;
-const device_type NES_LZ93D50 = device_creator<nes_lz93d50_device>;
-const device_type NES_LZ93D50_24C01 = device_creator<nes_lz93d50_24c01_device>;
-const device_type NES_LZ93D50_24C02 = device_creator<nes_lz93d50_24c02_device>;
-const device_type NES_FJUMP2 = device_creator<nes_fjump2_device>;
+DEFINE_DEVICE_TYPE(NES_OEKAKIDS, nes_oekakids_device, "nes_oeka", "NES Cart Bandai Oeka Kids PCB")
+DEFINE_DEVICE_TYPE(NES_FCG, nes_fcg_device, "nes_fcg", "NES Cart Bandai FCG PCB")
+DEFINE_DEVICE_TYPE(NES_LZ93D50, nes_lz93d50_device, "nes_lz93d50", "NES Cart Bandai LZ93D50 PCB")
+DEFINE_DEVICE_TYPE(NES_LZ93D50_24C01, nes_lz93d50_24c01_device, "nes_lz93d50_ep1", "NES Cart Bandai LZ93D50 + 24C01 PCB")
+DEFINE_DEVICE_TYPE(NES_LZ93D50_24C02, nes_lz93d50_24c02_device, "nes_lz93d50_ep2", "NES Cart Bandai LZ93D50 + 24C02 PCB")
+DEFINE_DEVICE_TYPE(NES_FJUMP2, nes_fjump2_device, "nes_fjump2", "NES Cart Bandai Famicom Jump II PCB")
nes_oekakids_device::nes_oekakids_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_OEKAKIDS, "NES Cart Bandai Oeka Kids PCB", tag, owner, clock, "nes_oeka", __FILE__), m_reg(0), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_OEKAKIDS, tag, owner, clock), m_reg(0), m_latch(0)
+{
}
-nes_fcg_device::nes_fcg_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+nes_fcg_device::nes_fcg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
nes_fcg_device::nes_fcg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_FCG, "NES Cart Bandai FCG PCB", tag, owner, clock, "nes_fcg", __FILE__), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_fcg_device(mconfig, NES_FCG, tag, owner, clock)
+{
}
-nes_lz93d50_device::nes_lz93d50_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_fcg_device(mconfig, type, name, tag, owner, clock, shortname, source)
+nes_lz93d50_device::nes_lz93d50_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_fcg_device(mconfig, type, tag, owner, clock)
{
}
nes_lz93d50_device::nes_lz93d50_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_fcg_device(mconfig, NES_LZ93D50, "NES Cart Bandai LZ93D50 PCB", tag, owner, clock, "nes_lz93d50", __FILE__)
+ : nes_lz93d50_device(mconfig, NES_LZ93D50, tag, owner, clock)
{
}
-nes_lz93d50_24c01_device::nes_lz93d50_24c01_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_lz93d50_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_i2cmem(*this, "i2cmem"), m_i2c_dir(0)
- {
+nes_lz93d50_24c01_device::nes_lz93d50_24c01_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_lz93d50_device(mconfig, type, tag, owner, clock), m_i2cmem(*this, "i2cmem"), m_i2c_dir(0)
+{
}
nes_lz93d50_24c01_device::nes_lz93d50_24c01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_lz93d50_device(mconfig, NES_LZ93D50_24C01, "NES Cart Bandai LZ93D50 + 24C01 PCB", tag, owner, clock, "nes_lz93d50_ep1", __FILE__),
- m_i2cmem(*this, "i2cmem"), m_i2c_dir(0)
- {
+ : nes_lz93d50_24c01_device(mconfig, NES_LZ93D50_24C01, tag, owner, clock)
+{
}
nes_lz93d50_24c02_device::nes_lz93d50_24c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_lz93d50_24c01_device(mconfig, NES_LZ93D50_24C02, "NES Cart Bandai LZ93D50 + 24C02 PCB", tag, owner, clock, "nes_lz93d50_ep2", __FILE__)
+ : nes_lz93d50_24c01_device(mconfig, NES_LZ93D50_24C02, tag, owner, clock)
{
}
nes_fjump2_device::nes_fjump2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_lz93d50_device(mconfig, NES_FJUMP2, "NES Cart Bandai Famicom Jump II PCB", tag, owner, clock, "nes_fjump2", __FILE__)
+ : nes_lz93d50_device(mconfig, NES_FJUMP2, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/bandai.h b/src/devices/bus/nes/bandai.h
index 108c6fb96cc..17a1fed1b79 100644
--- a/src/devices/bus/nes/bandai.h
+++ b/src/devices/bus/nes/bandai.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_BANDAI_H
-#define __NES_BANDAI_H
+#ifndef MAME_BUS_NES_BANDAI_H
+#define MAME_BUS_NES_BANDAI_H
+
+#pragma once
#include "nxrom.h"
#include "machine/i2cmem.h"
@@ -15,8 +17,6 @@ public:
// construction/destruction
nes_oekakids_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual DECLARE_READ8_MEMBER(nt_r) override;
virtual DECLARE_WRITE8_MEMBER(nt_w) override;
@@ -26,8 +26,13 @@ public:
virtual void ppu_latch(offs_t offset) override;
// TODO: add oeka kids controller emulation
+
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
void update_chr();
+
uint8_t m_reg, m_latch;
};
@@ -38,11 +43,8 @@ class nes_fcg_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_fcg_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_fcg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_WRITE8_MEMBER(fcg_write);
virtual DECLARE_WRITE8_MEMBER(write_m) override;
@@ -50,10 +52,16 @@ public:
virtual void pcb_reset() override;
protected:
- uint16_t m_irq_count;
+ static constexpr device_timer_id TIMER_IRQ = 0;
+
+ nes_fcg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
+ uint16_t m_irq_count;
int m_irq_enable;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
};
@@ -64,11 +72,13 @@ class nes_lz93d50_device : public nes_fcg_device
{
public:
// construction/destruction
- nes_lz93d50_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_lz93d50_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual DECLARE_WRITE8_MEMBER(write_h) override { fcg_write(space, offset, data, mem_mask); }
+
+protected:
+ nes_lz93d50_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
@@ -78,17 +88,20 @@ class nes_lz93d50_24c01_device : public nes_lz93d50_device
{
public:
// construction/destruction
- nes_lz93d50_24c01_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_lz93d50_24c01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ nes_lz93d50_24c01_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
// TODO: fix EEPROM I/O emulation
required_device<i2cmem_device> m_i2cmem;
uint8_t m_i2c_dir;
@@ -116,8 +129,6 @@ public:
// construction/destruction
nes_fjump2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
@@ -125,17 +136,20 @@ public:
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
void set_prg();
uint8_t m_reg[5];
};
// device type definition
-extern const device_type NES_OEKAKIDS;
-extern const device_type NES_FCG;
-extern const device_type NES_LZ93D50;
-extern const device_type NES_LZ93D50_24C01;
-extern const device_type NES_LZ93D50_24C02;
-extern const device_type NES_FJUMP2;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_OEKAKIDS, nes_oekakids_device)
+DECLARE_DEVICE_TYPE(NES_FCG, nes_fcg_device)
+DECLARE_DEVICE_TYPE(NES_LZ93D50, nes_lz93d50_device)
+DECLARE_DEVICE_TYPE(NES_LZ93D50_24C01, nes_lz93d50_24c01_device)
+DECLARE_DEVICE_TYPE(NES_LZ93D50_24C02, nes_lz93d50_24c02_device)
+DECLARE_DEVICE_TYPE(NES_FJUMP2, nes_fjump2_device)
+
+#endif // MAME_BUS_NES_BANDAI_H
diff --git a/src/devices/bus/nes/benshieng.cpp b/src/devices/bus/nes/benshieng.cpp
index 0d41c8b3ae0..921d7c5b56f 100644
--- a/src/devices/bus/nes/benshieng.cpp
+++ b/src/devices/bus/nes/benshieng.cpp
@@ -28,13 +28,13 @@
// constructor
//-------------------------------------------------
-const device_type NES_BENSHIENG = device_creator<nes_benshieng_device>;
+DEFINE_DEVICE_TYPE(NES_BENSHIENG, nes_benshieng_device, "nes_benshieng", "NES Cart Benshieng PCB")
nes_benshieng_device::nes_benshieng_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BENSHIENG, "NES Cart Benshieng PCB", tag, owner, clock, "nes_benshieng", __FILE__),
- m_dipsetting(0)
- {
+ : nes_nrom_device(mconfig, NES_BENSHIENG, tag, owner, clock)
+ , m_dipsetting(0)
+{
}
diff --git a/src/devices/bus/nes/benshieng.h b/src/devices/bus/nes/benshieng.h
index 1989c26ad15..2cf39af6cf7 100644
--- a/src/devices/bus/nes/benshieng.h
+++ b/src/devices/bus/nes/benshieng.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_BENSHIENG_H
-#define __NES_BENSHIENG_H
+#ifndef MAME_BUS_NES_BENSHIENG_H
+#define MAME_BUS_NES_BENSHIENG_H
+
+#pragma once
#include "nxrom.h"
@@ -14,12 +16,14 @@ public:
// construction/destruction
nes_benshieng_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_banks();
uint8_t m_dipsetting;
@@ -31,4 +35,4 @@ private:
// device type definition
extern const device_type NES_BENSHIENG;
-#endif
+#endif // MAME_BUS_NES_BENSHIENG_H
diff --git a/src/devices/bus/nes/bootleg.cpp b/src/devices/bus/nes/bootleg.cpp
index f38e92d8e97..d47699a8e57 100644
--- a/src/devices/bus/nes/bootleg.cpp
+++ b/src/devices/bus/nes/bootleg.cpp
@@ -22,7 +22,7 @@
#include "bootleg.h"
#include "cpu/m6502/m6502.h"
-#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access PPU_BOTTOM_VISIBLE_SCANLINE
+#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE
#include "screen.h"
@@ -39,131 +39,131 @@
// constructor
//-------------------------------------------------
-const device_type NES_AX5705 = device_creator<nes_ax5705_device>;
-const device_type NES_SC127 = device_creator<nes_sc127_device>;
-const device_type NES_MARIOBABY = device_creator<nes_mbaby_device>;
-const device_type NES_ASN = device_creator<nes_asn_device>;
-const device_type NES_SMB3PIRATE = device_creator<nes_smb3p_device>;
-const device_type NES_BTL_DNINJA = device_creator<nes_btl_dn_device>;
-const device_type NES_WHIRLWIND_2706 = device_creator<nes_whirl2706_device>;
-const device_type NES_SMB2J = device_creator<nes_smb2j_device>;
-const device_type NES_SMB2JA = device_creator<nes_smb2ja_device>;
-const device_type NES_SMB2JB = device_creator<nes_smb2jb_device>;
-const device_type NES_09034A = device_creator<nes_09034a_device>;
-const device_type NES_TOBIDASE = device_creator<nes_tobidase_device>;
-const device_type NES_LH32 = device_creator<nes_lh32_device>;
-const device_type NES_LH10 = device_creator<nes_lh10_device>;
-const device_type NES_LH53 = device_creator<nes_lh53_device>;
-const device_type NES_2708 = device_creator<nes_2708_device>;
-const device_type NES_AC08 = device_creator<nes_ac08_device>;
-const device_type NES_UNL_BB = device_creator<nes_unl_bb_device>;
-const device_type NES_MMALEE = device_creator<nes_mmalee_device>;
-const device_type NES_SHUIGUAN = device_creator<nes_shuiguan_device>;
-const device_type NES_RT01 = device_creator<nes_rt01_device>;
+DEFINE_DEVICE_TYPE(NES_AX5705, nes_ax5705_device, "nes_ax5705", "NES Cart AX5705 PCB")
+DEFINE_DEVICE_TYPE(NES_SC127, nes_sc127_device, "nes_sc127", "NES Cart SC-127 PCB")
+DEFINE_DEVICE_TYPE(NES_MARIOBABY, nes_mbaby_device, "nes_mbaby", "NES Cart Mario Baby Bootleg PCB")
+DEFINE_DEVICE_TYPE(NES_ASN, nes_asn_device, "nes_asn", "NES Cart Ai Senshi Nicol Bootleg PCB")
+DEFINE_DEVICE_TYPE(NES_SMB3PIRATE, nes_smb3p_device, "nes_smb3p", "NES Cart Super Mario Bros. 3 Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_BTL_DNINJA, nes_btl_dn_device, "nes_btl_dn", "NES Cart DragonNinja Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_WHIRLWIND_2706, nes_whirl2706_device, "nes_whirl2706", "NES Cart Whilwind 2706 PCB")
+DEFINE_DEVICE_TYPE(NES_SMB2J, nes_smb2j_device, "nes_smb2j", "NES Cart Super Mario Bros. 2 Jpn PCB")
+DEFINE_DEVICE_TYPE(NES_SMB2JA, nes_smb2ja_device, "nes_smb2ja", "NES Cart Super Mario Bros. 2 Jpn (Alt) PCB")
+DEFINE_DEVICE_TYPE(NES_SMB2JB, nes_smb2jb_device, "nes_smb2jb", "NES Cart Super Mario Bros. 2 Jpn (Alt 2) PCB")
+DEFINE_DEVICE_TYPE(NES_09034A, nes_09034a_device, "nes_09034a", "NES Cart 09-034A PCB")
+DEFINE_DEVICE_TYPE(NES_TOBIDASE, nes_tobidase_device, "nes_tobidase", "NES Cart Tobidase Daisakusen Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_LH32, nes_lh32_device, "nes_lh32", "NES Cart LH-32 Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_LH10, nes_lh10_device, "nes_lh10", "NES Cart LH-10 Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_LH53, nes_lh53_device, "nes_lh53", "NES Cart LH-53 Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_2708, nes_2708_device, "nes_2708", "NES Cart BTL-2708 Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_AC08, nes_ac08_device, "nes_ac08", "NES Cart AC08 Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_UNL_BB, nes_unl_bb_device, "nes_unl_bb", "NES Cart FDS+CHR Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_MMALEE, nes_mmalee_device, "nes_mmalee", "NES Cart Super Mario Bros. Malee 2 Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_SHUIGUAN, nes_shuiguan_device, "nes_shuiguan", "NES Cart Shui Guan Pipe Pirate PCB")
+DEFINE_DEVICE_TYPE(NES_RT01, nes_rt01_device, "nes_rt01", "NES Cart RT-01 PCB")
nes_ax5705_device::nes_ax5705_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_AX5705, "NES Cart AX5705 PCB", tag, owner, clock, "nes_ax5705", __FILE__)
+ : nes_nrom_device(mconfig, NES_AX5705, tag, owner, clock)
{
}
nes_sc127_device::nes_sc127_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SC127, "NES Cart SC-127 PCB", tag, owner, clock, "nes_sc127", __FILE__), m_irq_count(0), m_irq_enable(0)
- {
+ : nes_nrom_device(mconfig, NES_SC127, tag, owner, clock), m_irq_count(0), m_irq_enable(0)
+{
}
nes_mbaby_device::nes_mbaby_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_MARIOBABY, "NES Cart Mario Baby Bootleg PCB", tag, owner, clock, "nes_mbaby", __FILE__), m_latch(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_MARIOBABY, tag, owner, clock), m_latch(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
nes_asn_device::nes_asn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_ASN, "NES Cart Ai Senshi Nicol Bootleg PCB", tag, owner, clock, "nes_asn", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_ASN, tag, owner, clock), m_latch(0)
+{
}
nes_smb3p_device::nes_smb3p_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SMB3PIRATE, "NES Cart Super Mario Bros. 3 Pirate PCB", tag, owner, clock, "nes_smb3p", __FILE__), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_SMB3PIRATE, tag, owner, clock), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
nes_btl_dn_device::nes_btl_dn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BTL_DNINJA, "NES Cart DragonNinja Pirate PCB", tag, owner, clock, "nes_btl_dn", __FILE__), m_irq_count(0)
- {
+ : nes_nrom_device(mconfig, NES_BTL_DNINJA, tag, owner, clock), m_irq_count(0)
+{
}
nes_whirl2706_device::nes_whirl2706_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_WHIRLWIND_2706, "NES Cart Whirlwind 2706 PCB", tag, owner, clock, "nes_whirl2706", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_WHIRLWIND_2706, tag, owner, clock), m_latch(0)
+{
}
nes_smb2j_device::nes_smb2j_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SMB2J, "NES Cart Super Mario Bros. 2 Jpn PCB", tag, owner, clock, "nes_smb2j", __FILE__), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_SMB2J, tag, owner, clock), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
nes_smb2ja_device::nes_smb2ja_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SMB2JA, "NES Cart Super Mario Bros. 2 Jpn (Alt) PCB", tag, owner, clock, "nes_smb2ja", __FILE__), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_SMB2JA, tag, owner, clock), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
nes_smb2jb_device::nes_smb2jb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SMB2JB, "NES Cart Super Mario Bros. 2 Jpn (Alt 2) PCB", tag, owner, clock, "nes_smb2jb", __FILE__), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_SMB2JB, tag, owner, clock), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
nes_09034a_device::nes_09034a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_09034A, "NES Cart 09-034A PCB", tag, owner, clock, "nes_09034a", __FILE__), m_reg(0)
- {
+ : nes_nrom_device(mconfig, NES_09034A, tag, owner, clock), m_reg(0)
+{
}
nes_tobidase_device::nes_tobidase_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TOBIDASE, "NES Cart Tobidase Daisakusen Pirate PCB", tag, owner, clock, "nes_tobidase", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_TOBIDASE, tag, owner, clock), m_latch(0)
+{
}
nes_lh32_device::nes_lh32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_LH32, "NES Cart LH-32 Pirate PCB", tag, owner, clock, "nes_lh32", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_LH32, tag, owner, clock), m_latch(0)
+{
}
nes_lh10_device::nes_lh10_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_LH10, "NES Cart LH-10 Pirate PCB", tag, owner, clock, "nes_lh10", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_LH10, tag, owner, clock), m_latch(0)
+{
}
nes_lh53_device::nes_lh53_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_LH53, "NES Cart LH-53 Pirate PCB", tag, owner, clock, "nes_lh53", __FILE__), m_irq_count(0), m_irq_enable(0), m_reg(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_LH53, tag, owner, clock), m_irq_count(0), m_irq_enable(0), m_reg(0), irq_timer(nullptr)
+{
}
nes_2708_device::nes_2708_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_2708, "NES Cart BTL-2708 Pirate PCB", tag, owner, clock, "nes_2708", __FILE__)
+ : nes_nrom_device(mconfig, NES_2708, tag, owner, clock)
{
}
nes_ac08_device::nes_ac08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_AC08, "NES Cart AC08 Pirate PCB", tag, owner, clock, "nes_ac08", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_AC08, tag, owner, clock), m_latch(0)
+{
}
nes_unl_bb_device::nes_unl_bb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_UNL_BB, "NES Cart FDS+CHR Pirate PCB", tag, owner, clock, "nes_unl_bb", __FILE__)
+ : nes_nrom_device(mconfig, NES_UNL_BB, tag, owner, clock)
{
}
nes_mmalee_device::nes_mmalee_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_MMALEE, "NES Cart Super Mario Bros. Malee 2 Pirate PCB", tag, owner, clock, "nes_mmalee", __FILE__)
+ : nes_nrom_device(mconfig, NES_MMALEE, tag, owner, clock)
{
}
nes_shuiguan_device::nes_shuiguan_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SHUIGUAN, "NES Cart Shui Guan Pipe Pirate PCB", tag, owner, clock, "nes_shuiguan", __FILE__), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
+ : nes_nrom_device(mconfig, NES_SHUIGUAN, tag, owner, clock), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
{
}
nes_rt01_device::nes_rt01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_RT01, "NES Cart RT-01 PCB", tag, owner, clock, "nes_rt01", __FILE__)
+ : nes_nrom_device(mconfig, NES_RT01, tag, owner, clock)
{
}
@@ -640,7 +640,7 @@ WRITE8_MEMBER(nes_ax5705_device::write_h)
void nes_sc127_device::hblank_irq(int scanline, int vblank, int blanked)
{
- if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE && m_irq_enable)
+ if (scanline < ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE && m_irq_enable)
{
m_irq_count--;
diff --git a/src/devices/bus/nes/bootleg.h b/src/devices/bus/nes/bootleg.h
index 5e2457d2fef..a048f0955d4 100644
--- a/src/devices/bus/nes/bootleg.h
+++ b/src/devices/bus/nes/bootleg.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_BTL_H
-#define __NES_BTL_H
+#ifndef MAME_BUS_NES_BOOTLEG_H
+#define MAME_BUS_NES_BOOTLEG_H
#include "nxrom.h"
@@ -14,12 +14,14 @@ public:
// construction/destruction
nes_ax5705_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void set_prg();
uint8_t m_mmc_prg_bank[2];
@@ -34,14 +36,15 @@ class nes_sc127_device : public nes_nrom_device
public:
// construction/destruction
nes_sc127_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint16_t m_irq_count;
int m_irq_enable;
@@ -55,20 +58,22 @@ class nes_mbaby_device : public nes_nrom_device
public:
// construction/destruction
nes_mbaby_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
+ static constexpr device_timer_id TIMER_IRQ = 0;
+
uint8_t m_latch;
int m_irq_enable;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
attotime timer_freq;
};
@@ -82,13 +87,15 @@ public:
// construction/destruction
nes_asn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -102,13 +109,15 @@ public:
// construction/destruction
nes_smb3p_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
uint16_t m_irq_count;
int m_irq_enable;
@@ -125,14 +134,15 @@ class nes_btl_dn_device : public nes_nrom_device
public:
// construction/destruction
nes_btl_dn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint16_t m_irq_count;
};
@@ -146,13 +156,15 @@ public:
// construction/destruction
nes_whirl2706_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -166,9 +178,6 @@ public:
// construction/destruction
nes_smb2j_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_ex) override;
@@ -177,6 +186,11 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
uint16_t m_irq_count;
int m_irq_enable;
@@ -193,15 +207,16 @@ class nes_smb2ja_device : public nes_nrom_device
public:
// construction/destruction
nes_smb2ja_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
uint16_t m_irq_count;
int m_irq_enable;
@@ -218,16 +233,17 @@ class nes_smb2jb_device : public nes_nrom_device
public:
// construction/destruction
nes_smb2jb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_ex) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
uint16_t m_irq_count;
int m_irq_enable;
@@ -245,13 +261,15 @@ public:
// construction/destruction
nes_09034a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_ex) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg;
};
@@ -265,13 +283,15 @@ public:
// construction/destruction
nes_tobidase_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -285,8 +305,6 @@ public:
// construction/destruction
nes_lh32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
@@ -294,6 +312,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -307,14 +329,16 @@ public:
// construction/destruction
nes_lh10_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_prg();
uint8_t m_latch;
@@ -330,9 +354,6 @@ public:
// construction/destruction
nes_lh53_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override {}
@@ -340,6 +361,11 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
uint16_t m_irq_count;
int m_irq_enable;
@@ -359,8 +385,6 @@ public:
// construction/destruction
nes_2708_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
@@ -368,6 +392,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[2];
};
@@ -380,14 +408,16 @@ public:
// nes_ac08_device/destruction
nes_ac08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_ex) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -399,14 +429,15 @@ class nes_unl_bb_device : public nes_nrom_device
public:
// construction/destruction
nes_unl_bb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[2];
};
@@ -419,12 +450,14 @@ public:
// construction/destruction
nes_mmalee_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
// ======================> nes_shuiguan_device
@@ -435,14 +468,16 @@ public:
// construction/destruction
nes_shuiguan_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
uint16_t m_irq_count;
int m_irq_enable;
@@ -461,37 +496,39 @@ public:
// construction/destruction
nes_rt01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
// device type definition
-extern const device_type NES_AX5705;
-extern const device_type NES_SC127;
-extern const device_type NES_MARIOBABY;
-extern const device_type NES_ASN;
-extern const device_type NES_SMB3PIRATE;
-extern const device_type NES_BTL_DNINJA;
-extern const device_type NES_WHIRLWIND_2706;
-extern const device_type NES_SMB2J;
-extern const device_type NES_SMB2JA;
-extern const device_type NES_SMB2JB;
-extern const device_type NES_09034A;
-extern const device_type NES_TOBIDASE;
-extern const device_type NES_LH32;
-extern const device_type NES_LH10;
-extern const device_type NES_LH53;
-extern const device_type NES_2708;
-extern const device_type NES_AC08;
-extern const device_type NES_UNL_BB;
-extern const device_type NES_MMALEE;
-extern const device_type NES_SHUIGUAN;
-extern const device_type NES_RT01;
-
-
-#endif
+DECLARE_DEVICE_TYPE(NES_AX5705, nes_ax5705_device)
+DECLARE_DEVICE_TYPE(NES_SC127, nes_sc127_device)
+DECLARE_DEVICE_TYPE(NES_MARIOBABY, nes_mbaby_device)
+DECLARE_DEVICE_TYPE(NES_ASN, nes_asn_device)
+DECLARE_DEVICE_TYPE(NES_SMB3PIRATE, nes_smb3p_device)
+DECLARE_DEVICE_TYPE(NES_BTL_DNINJA, nes_btl_dn_device)
+DECLARE_DEVICE_TYPE(NES_WHIRLWIND_2706, nes_whirl2706_device)
+DECLARE_DEVICE_TYPE(NES_SMB2J, nes_smb2j_device)
+DECLARE_DEVICE_TYPE(NES_SMB2JA, nes_smb2ja_device)
+DECLARE_DEVICE_TYPE(NES_SMB2JB, nes_smb2jb_device)
+DECLARE_DEVICE_TYPE(NES_09034A, nes_09034a_device)
+DECLARE_DEVICE_TYPE(NES_TOBIDASE, nes_tobidase_device)
+DECLARE_DEVICE_TYPE(NES_LH32, nes_lh32_device)
+DECLARE_DEVICE_TYPE(NES_LH10, nes_lh10_device)
+DECLARE_DEVICE_TYPE(NES_LH53, nes_lh53_device)
+DECLARE_DEVICE_TYPE(NES_2708, nes_2708_device)
+DECLARE_DEVICE_TYPE(NES_AC08, nes_ac08_device)
+DECLARE_DEVICE_TYPE(NES_UNL_BB, nes_unl_bb_device)
+DECLARE_DEVICE_TYPE(NES_MMALEE, nes_mmalee_device)
+DECLARE_DEVICE_TYPE(NES_SHUIGUAN, nes_shuiguan_device)
+DECLARE_DEVICE_TYPE(NES_RT01, nes_rt01_device)
+
+
+#endif // MAME_BUS_NES_BOOTLEG_H
diff --git a/src/devices/bus/nes/camerica.cpp b/src/devices/bus/nes/camerica.cpp
index ca4e31bc11f..7b9d413f6c9 100644
--- a/src/devices/bus/nes/camerica.cpp
+++ b/src/devices/bus/nes/camerica.cpp
@@ -41,24 +41,24 @@
// constructor
//-------------------------------------------------
-const device_type NES_BF9093 = device_creator<nes_bf9093_device>;
-const device_type NES_BF9096 = device_creator<nes_bf9096_device>;
-const device_type NES_GOLDEN5 = device_creator<nes_golden5_device>;
+DEFINE_DEVICE_TYPE(NES_BF9093, nes_bf9093_device, "nes_bf9093", "NES Cart Camerica BF9093 PCB")
+DEFINE_DEVICE_TYPE(NES_BF9096, nes_bf9096_device, "nes_bf9096", "NES Cart Camerica BF9096 PCB")
+DEFINE_DEVICE_TYPE(NES_GOLDEN5, nes_golden5_device, "nes_golden5", "NES Cart Camerica Golden 5 PCB")
nes_bf9093_device::nes_bf9093_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BF9093, "NES Cart Camerica BF9093 PCB", tag, owner, clock, "nes_bf9093", __FILE__)
+ : nes_nrom_device(mconfig, NES_BF9093, tag, owner, clock)
{
}
nes_bf9096_device::nes_bf9096_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BF9096, "NES Cart Camerica BF9096 PCB", tag, owner, clock, "nes_bf9096", __FILE__), m_bank_base(0), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_BF9096, tag, owner, clock), m_bank_base(0), m_latch(0)
+{
}
nes_golden5_device::nes_golden5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_GOLDEN5, "NES Cart Camerica Golden 5 PCB", tag, owner, clock, "nes_golden5", __FILE__), m_bank_base(0), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_GOLDEN5, tag, owner, clock), m_bank_base(0), m_latch(0)
+{
}
diff --git a/src/devices/bus/nes/camerica.h b/src/devices/bus/nes/camerica.h
index ba3b103b0d5..b7a4782c342 100644
--- a/src/devices/bus/nes/camerica.h
+++ b/src/devices/bus/nes/camerica.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_CAMERICA_H
-#define __NES_CAMERICA_H
+#ifndef MAME_BUS_NES_CAMERICA_H
+#define MAME_BUS_NES_CAMERICA_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_bf9093_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -30,13 +34,15 @@ public:
// construction/destruction
nes_bf9096_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override { write_h(space, offset, data, mem_mask); }
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_bank_base, m_latch;
};
@@ -50,23 +56,22 @@ public:
// construction/destruction
nes_golden5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_bank_base, m_latch;
};
-
-
-
// device type definition
-extern const device_type NES_BF9093;
-extern const device_type NES_BF9096;
-extern const device_type NES_GOLDEN5;
+DECLARE_DEVICE_TYPE(NES_BF9093, nes_bf9093_device)
+DECLARE_DEVICE_TYPE(NES_BF9096, nes_bf9096_device)
+DECLARE_DEVICE_TYPE(NES_GOLDEN5, nes_golden5_device)
-#endif
+#endif // MAME_BUS_NES_CAMERICA_H
diff --git a/src/devices/bus/nes/cne.cpp b/src/devices/bus/nes/cne.cpp
index 616814bbdc2..1f0ad793937 100644
--- a/src/devices/bus/nes/cne.cpp
+++ b/src/devices/bus/nes/cne.cpp
@@ -32,23 +32,23 @@
// constructor
//-------------------------------------------------
-const device_type NES_CNE_DECATHL = device_creator<nes_cne_decathl_device>;
-const device_type NES_CNE_FSB = device_creator<nes_cne_fsb_device>;
-const device_type NES_CNE_SHLZ = device_creator<nes_cne_shlz_device>;
+DEFINE_DEVICE_TYPE(NES_CNE_DECATHL, nes_cne_decathl_device, "nes_cne_deca", "NES Cart C&E Decathlon PCB")
+DEFINE_DEVICE_TYPE(NES_CNE_FSB, nes_cne_fsb_device, "nes_cne_fsb", "NES Cart C&E Feng Shen Bang PCB")
+DEFINE_DEVICE_TYPE(NES_CNE_SHLZ, nes_cne_shlz_device, "nes_cne_shlz", "NES Cart C&E Sheng Huo Lie Zhuan PCB")
nes_cne_decathl_device::nes_cne_decathl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_CNE_DECATHL, "NES Cart C&E Decathlon PCB", tag, owner, clock, "nes_cne_deca", __FILE__)
+ : nes_nrom_device(mconfig, NES_CNE_DECATHL, tag, owner, clock)
{
}
nes_cne_fsb_device::nes_cne_fsb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_CNE_FSB, "NES Cart C&E Feng Shen Bang PCB", tag, owner, clock, "nes_cne_fsb", __FILE__)
+ : nes_nrom_device(mconfig, NES_CNE_FSB, tag, owner, clock)
{
}
nes_cne_shlz_device::nes_cne_shlz_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_CNE_SHLZ, "NES Cart C&E Sheng Huo Lie Zhuan PCB", tag, owner, clock, "nes_cne_shlz", __FILE__)
+ : nes_nrom_device(mconfig, NES_CNE_SHLZ, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/cne.h b/src/devices/bus/nes/cne.h
index 558067f2862..d5e117c791a 100644
--- a/src/devices/bus/nes/cne.h
+++ b/src/devices/bus/nes/cne.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_CNE_H
-#define __NES_CNE_H
+#ifndef MAME_BUS_NES_CNE_H
+#define MAME_BUS_NES_CNE_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_cne_decathl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -30,12 +34,14 @@ public:
// construction/destruction
nes_cne_fsb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -47,20 +53,19 @@ public:
// construction/destruction
nes_cne_shlz_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
-};
-
-
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+};
// device type definition
-extern const device_type NES_CNE_DECATHL;
-extern const device_type NES_CNE_FSB;
-extern const device_type NES_CNE_SHLZ;
+DECLARE_DEVICE_TYPE(NES_CNE_DECATHL, nes_cne_decathl_device)
+DECLARE_DEVICE_TYPE(NES_CNE_FSB, nes_cne_fsb_device)
+DECLARE_DEVICE_TYPE(NES_CNE_SHLZ, nes_cne_shlz_device)
-#endif
+#endif // MAME_BUS_NES_CNE_H
diff --git a/src/devices/bus/nes/cony.cpp b/src/devices/bus/nes/cony.cpp
index 3dbb66a7fb0..552941a6ac9 100644
--- a/src/devices/bus/nes/cony.cpp
+++ b/src/devices/bus/nes/cony.cpp
@@ -35,29 +35,29 @@
// constructor
//-------------------------------------------------
-const device_type NES_CONY = device_creator<nes_cony_device>;
-const device_type NES_YOKO = device_creator<nes_yoko_device>;
-
-
-nes_cony_device::nes_cony_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_irq_count(0),
- m_irq_enable(0),
- irq_timer(nullptr),
- m_latch1(0),
- m_latch2(0),
- m_extra1(0)
- {
+DEFINE_DEVICE_TYPE(NES_CONY, nes_cony_device, "nes_cony", "NES Cart Cony PCB")
+DEFINE_DEVICE_TYPE(NES_YOKO, nes_yoko_device, "nes_yoko", "NES Cart Yoko PCB")
+
+
+nes_cony_device::nes_cony_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock)
+ , m_irq_count(0)
+ , m_irq_enable(0)
+ , irq_timer(nullptr)
+ , m_latch1(0)
+ , m_latch2(0)
+ , m_extra1(0)
+{
}
nes_cony_device::nes_cony_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_CONY, "NES Cart Cony PCB", tag, owner, clock, "nes_cony", __FILE__), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr), m_latch1(0), m_latch2(0), m_extra1(0)
- {
+ : nes_cony_device(mconfig, NES_CONY, tag, owner, clock)
+{
}
nes_yoko_device::nes_yoko_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_cony_device(mconfig, NES_YOKO, "NES Cart Yoko PCB", tag, owner, clock, "nes_yoko", __FILE__), m_extra2(0)
- {
+ : nes_cony_device(mconfig, NES_YOKO, tag, owner, clock), m_extra2(0)
+{
}
diff --git a/src/devices/bus/nes/cony.h b/src/devices/bus/nes/cony.h
index 406952b69cb..b7b759a7fe1 100644
--- a/src/devices/bus/nes/cony.h
+++ b/src/devices/bus/nes/cony.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_CONY_H
-#define __NES_CONY_H
+#ifndef MAME_BUS_NES_CONY_H
+#define MAME_BUS_NES_CONY_H
+
+#pragma once
#include "nxrom.h"
@@ -12,12 +14,8 @@ class nes_cony_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_cony_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_cony_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
@@ -25,13 +23,20 @@ public:
virtual void pcb_reset() override;
protected:
+ static constexpr device_timer_id TIMER_IRQ = 0;
+
+ nes_cony_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
virtual void set_prg();
virtual void set_chr();
uint16_t m_irq_count;
int m_irq_enable;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
uint8_t m_latch1, m_latch2;
@@ -49,14 +54,16 @@ public:
// construction/destruction
nes_yoko_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
virtual void set_prg() override;
virtual void set_chr() override;
@@ -65,11 +72,8 @@ private:
};
-
-
-
// device type definition
-extern const device_type NES_CONY;
-extern const device_type NES_YOKO;
+DECLARE_DEVICE_TYPE(NES_CONY, nes_cony_device)
+DECLARE_DEVICE_TYPE(NES_YOKO, nes_yoko_device)
-#endif
+#endif // MAME_BUS_NES_CONY_H
diff --git a/src/devices/bus/nes/datach.cpp b/src/devices/bus/nes/datach.cpp
index e0cbe5ffbeb..d1600ec8fb2 100644
--- a/src/devices/bus/nes/datach.cpp
+++ b/src/devices/bus/nes/datach.cpp
@@ -43,10 +43,10 @@
//-------------------------------------------------
datach_cart_interface::datach_cart_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_i2cmem(*this, "i2cmem"),
- m_rom(nullptr), m_bank(0)
- {
+ : device_slot_card_interface(mconfig, device)
+ , m_i2cmem(*this, "i2cmem")
+ , m_rom(nullptr), m_bank(0)
+{
}
datach_cart_interface::~datach_cart_interface()
@@ -65,12 +65,13 @@ READ8_MEMBER(datach_cart_interface::read)
// sub-cart slot device
//-------------------------------------------------
-const device_type NES_DATACH_SLOT = device_creator<nes_datach_slot_device>;
+DEFINE_DEVICE_TYPE(NES_DATACH_SLOT, nes_datach_slot_device, "nes_datach_slot", "NES Datach Cartridge Slot")
-nes_datach_slot_device::nes_datach_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_DATACH_SLOT, "NES Datach Cartridge Slot", tag, owner, clock, "nes_datach_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this), m_cart(nullptr)
+nes_datach_slot_device::nes_datach_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NES_DATACH_SLOT, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
+ , device_slot_interface(mconfig, *this)
+ , m_cart(nullptr)
{
}
@@ -159,23 +160,22 @@ ROM_START( datach_rom )
ROM_REGION(0x40000, "datachrom", ROMREGION_ERASEFF)
ROM_END
-const device_type NES_DATACH_ROM = device_creator<nes_datach_rom_device>;
-const device_type NES_DATACH_24C01 = device_creator<nes_datach_24c01_device>;
+DEFINE_DEVICE_TYPE(NES_DATACH_ROM, nes_datach_rom_device, "nes_datach_rom", "NES Datach ROM")
+DEFINE_DEVICE_TYPE(NES_DATACH_24C01, nes_datach_24c01_device, "nes_datach_ep1", "NES Datach + 24C01 PCB")
-nes_datach_rom_device::nes_datach_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- datach_cart_interface( mconfig, *this )
+nes_datach_rom_device::nes_datach_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , datach_cart_interface(mconfig, *this)
{
}
nes_datach_rom_device::nes_datach_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NES_DATACH_ROM, "NES Datach ROM", tag, owner, clock, "nes_datach_rom", __FILE__),
- datach_cart_interface( mconfig, *this )
+ : nes_datach_rom_device(mconfig, NES_DATACH_ROM, tag, owner, clock)
{
}
nes_datach_24c01_device::nes_datach_24c01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_datach_rom_device(mconfig, NES_DATACH_24C01, "NES Datach + 24C01 PCB", tag, owner, clock, "nes_datach_ep1", __FILE__)
+ : nes_datach_rom_device(mconfig, NES_DATACH_24C01, tag, owner, clock)
{
}
@@ -218,15 +218,18 @@ machine_config_constructor nes_datach_24c01_device::device_mconfig_additions() c
//
//---------------------------------
-const device_type NES_DATACH = device_creator<nes_datach_device>;
+DEFINE_DEVICE_TYPE(NES_DATACH, nes_datach_device, "nes_datach", "NES Cart Bandai Datach PCB")
nes_datach_device::nes_datach_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_lz93d50_device(mconfig, NES_DATACH, "NES Cart Bandai Datach PCB", tag, owner, clock, "nes_datach", __FILE__), m_datach_latch(0),
- m_i2cmem(*this, "i2cmem"),
- m_reader(*this, "datach"),
- m_subslot(*this, "datach_slot"), m_i2c_dir(0), m_i2c_in_use(0), serial_timer(nullptr)
- {
+ : nes_lz93d50_device(mconfig, NES_DATACH, tag, owner, clock)
+ , m_datach_latch(0)
+ , m_i2cmem(*this, "i2cmem")
+ , m_reader(*this, "datach")
+ , m_subslot(*this, "datach_slot")
+ , m_i2c_dir(0), m_i2c_in_use(0)
+ , serial_timer(nullptr)
+{
}
diff --git a/src/devices/bus/nes/datach.h b/src/devices/bus/nes/datach.h
index 404b86732da..17a3ece97e8 100644
--- a/src/devices/bus/nes/datach.h
+++ b/src/devices/bus/nes/datach.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_DATACH_H
-#define __NES_DATACH_H
+#ifndef MAME_BUS_NES_DATACH_H
+#define MAME_BUS_NES_DATACH_H
+
+#pragma once
#include "bandai.h"
#include "softlist_dev.h"
@@ -20,7 +22,6 @@ class datach_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- datach_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~datach_cart_interface();
// reading and writing
@@ -29,9 +30,11 @@ public:
uint8_t *get_cart_base() { return m_rom; }
void write_prg_bank(uint8_t bank) { m_bank = bank; }
+protected:
+ datach_cart_interface(const machine_config &mconfig, device_t &device);
+
optional_device<i2cmem_device> m_i2cmem;
-protected:
// internal state
uint8_t *m_rom;
// ROM is accessed via two 16K banks, but only the first one can be switched
@@ -40,10 +43,13 @@ protected:
// ======================> nes_datach_slot_device
+class nes_datach_device;
+
class nes_datach_slot_device : public device_t,
public device_image_interface,
public device_slot_interface
{
+ friend class nes_datach_device;
public:
// construction/destruction
nes_datach_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -71,11 +77,12 @@ public:
virtual DECLARE_READ8_MEMBER(read);
void write_prg_bank(uint8_t bank) { if (m_cart) m_cart->write_prg_bank(bank); }
+protected:
datach_cart_interface* m_cart;
};
// device type definition
-extern const device_type NES_DATACH_SLOT;
+DECLARE_DEVICE_TYPE(NES_DATACH_SLOT, nes_datach_slot_device)
#define MCFG_DATACH_MINICART_ADD(_tag, _slot_intf) \
@@ -91,12 +98,10 @@ extern const device_type NES_DATACH_SLOT;
// ======================> nes_datach_rom_device
-class nes_datach_rom_device : public device_t,
- public datach_cart_interface
+class nes_datach_rom_device : public device_t, public datach_cart_interface
{
public:
// construction/destruction
- nes_datach_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_datach_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -104,6 +109,8 @@ public:
virtual uint8_t* get_cart_base();
protected:
+ nes_datach_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -122,8 +129,8 @@ public:
};
// device type definition
-extern const device_type NES_DATACH_ROM;
-extern const device_type NES_DATACH_24C01;
+DECLARE_DEVICE_TYPE(NES_DATACH_ROM, nes_datach_rom_device)
+DECLARE_DEVICE_TYPE(NES_DATACH_24C01, nes_datach_24c01_device)
//---------------------------------
@@ -164,6 +171,6 @@ protected:
// device type definition
-extern const device_type NES_DATACH;
+DECLARE_DEVICE_TYPE(NES_DATACH, nes_datach_device)
-#endif
+#endif // MAME_BUS_NES_DATACH_H
diff --git a/src/devices/bus/nes/discrete.cpp b/src/devices/bus/nes/discrete.cpp
index 99751d689a1..2e1f6a4c81b 100644
--- a/src/devices/bus/nes/discrete.cpp
+++ b/src/devices/bus/nes/discrete.cpp
@@ -35,29 +35,29 @@
// constructor
//-------------------------------------------------
-const device_type NES_74X161X161X32 = device_creator<nes_74x161x161x32_device>;
-const device_type NES_74X139X74 = device_creator<nes_74x139x74_device>;
-const device_type NES_74X377 = device_creator<nes_74x377_device>;
-const device_type NES_74X161X138 = device_creator<nes_74x161x138_device>;
+DEFINE_DEVICE_TYPE(NES_74X161X161X32, nes_74x161x161x32_device, "nes_74x161", "NES Cart Discrete Logic (74*161/161/32) PCB")
+DEFINE_DEVICE_TYPE(NES_74X139X74, nes_74x139x74_device, "nes_74x139", "NES Cart Discrete Logic (74*139/74) PCB")
+DEFINE_DEVICE_TYPE(NES_74X377, nes_74x377_device, "nes_74x377", "NES Cart Discrete Logic (74*377) PCB")
+DEFINE_DEVICE_TYPE(NES_74X161X138, nes_74x161x138_device, "nes_bitcorp_dis", "NES Cart Discrete Logic (74*161/138) PCB")
nes_74x161x161x32_device::nes_74x161x161x32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_74X161X161X32, "NES Cart Discrete Logic (74*161/161/32) PCB", tag, owner, clock, "nes_74x161", __FILE__)
+ : nes_nrom_device(mconfig, NES_74X161X161X32, tag, owner, clock)
{
}
nes_74x139x74_device::nes_74x139x74_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_74X139X74, "NES Cart Discrete Logic (74*139/74) PCB", tag, owner, clock, "nes_74x139", __FILE__)
+ : nes_nrom_device(mconfig, NES_74X139X74, tag, owner, clock)
{
}
nes_74x377_device::nes_74x377_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_74X377, "NES Cart Discrete Logic (74*377) PCB", tag, owner, clock, "nes_74x377", __FILE__)
+ : nes_nrom_device(mconfig, NES_74X377, tag, owner, clock)
{
}
nes_74x161x138_device::nes_74x161x138_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_74X161X138, "NES Cart Discrete Logic (74*161/138) PCB", tag, owner, clock, "nes_bitcorp_dis", __FILE__)
+ : nes_nrom_device(mconfig, NES_74X161X138, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/discrete.h b/src/devices/bus/nes/discrete.h
index 7448e62b727..51576a77e41 100644
--- a/src/devices/bus/nes/discrete.h
+++ b/src/devices/bus/nes/discrete.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_DISCRETE_H
-#define __NES_DISCRETE_H
+#ifndef MAME_BUS_NES_DISCRETE_H
+#define MAME_BUS_NES_DISCRETE_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_74x161x161x32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -30,11 +34,13 @@ public:
// construction/destruction
nes_74x139x74_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -46,11 +52,13 @@ public:
// construction/destruction
nes_74x377_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -62,19 +70,20 @@ public:
// construction/destruction
nes_74x161x138_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
-};
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+};
// device type definition
-extern const device_type NES_74X161X161X32;
-extern const device_type NES_74X139X74;
-extern const device_type NES_74X377;
-extern const device_type NES_74X161X138;
+DECLARE_DEVICE_TYPE(NES_74X161X161X32, nes_74x161x161x32_device)
+DECLARE_DEVICE_TYPE(NES_74X139X74, nes_74x139x74_device)
+DECLARE_DEVICE_TYPE(NES_74X377, nes_74x377_device)
+DECLARE_DEVICE_TYPE(NES_74X161X138, nes_74x161x138_device)
-#endif
+#endif // MAME_BUS_NES_DISCRETE_H
diff --git a/src/devices/bus/nes/disksys.cpp b/src/devices/bus/nes/disksys.cpp
index 11ad8c7c7a9..24594848e76 100644
--- a/src/devices/bus/nes/disksys.cpp
+++ b/src/devices/bus/nes/disksys.cpp
@@ -100,15 +100,18 @@ void nes_disksys_device::unload_proc(device_image_interface &image)
//
//------------------------------------------------
-const device_type NES_DISKSYS = device_creator<nes_disksys_device>;
+DEFINE_DEVICE_TYPE(NES_DISKSYS, nes_disksys_device, "fc_disksys", "FC RAM Expansion + Disk System PCB")
nes_disksys_device::nes_disksys_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_DISKSYS, "FC RAM Expansion + Disk System PCB", tag, owner, clock, "fc_disksys", __FILE__), m_2c33_rom(nullptr),
- m_fds_data(nullptr),
- m_disk(*this, FLOPPY_0), irq_timer(nullptr), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_transfer(0), m_fds_motor_on(0), m_fds_door_closed(0), m_fds_current_side(0), m_fds_head_position(0), m_fds_status0(0), m_read_mode(0), m_drive_ready(0),
- m_fds_sides(0), m_fds_last_side(0), m_fds_count(0)
- {
+ : nes_nrom_device(mconfig, NES_DISKSYS, tag, owner, clock)
+ , m_2c33_rom(*this, "drive")
+ , m_fds_data(nullptr)
+ , m_disk(*this, FLOPPY_0)
+ , irq_timer(nullptr)
+ , m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_transfer(0), m_fds_motor_on(0), m_fds_door_closed(0), m_fds_current_side(0), m_fds_head_position(0), m_fds_status0(0), m_read_mode(0), m_drive_ready(0)
+ , m_fds_sides(0), m_fds_last_side(0), m_fds_count(0)
+{
}
@@ -116,8 +119,6 @@ void nes_disksys_device::device_start()
{
common_start();
- m_2c33_rom = (uint8_t*)memregion("drive")->base();
-
m_disk->floppy_install_load_proc(nes_disksys_device::load_proc);
m_disk->floppy_install_unload_proc(nes_disksys_device::unload_proc);
diff --git a/src/devices/bus/nes/disksys.h b/src/devices/bus/nes/disksys.h
index 5f05125061b..863400ebe70 100644
--- a/src/devices/bus/nes/disksys.h
+++ b/src/devices/bus/nes/disksys.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_DISKSYS_H
-#define __NES_DISKSYS_H
+#ifndef MAME_BUS_NES_DISKSYS_H
+#define MAME_BUS_NES_DISKSYS_H
+
+#pragma once
#include "nxrom.h"
#include "imagedev/flopdrv.h"
@@ -15,10 +17,7 @@ public:
// construction/destruction
nes_disksys_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual DECLARE_READ8_MEMBER(read_ex) override;
@@ -33,11 +32,17 @@ public:
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ required_region_ptr<uint8_t> m_2c33_rom;
+
+private:
static void load_proc(device_image_interface &image, bool is_created);
static void unload_proc(device_image_interface &image);
-private:
- uint8_t *m_2c33_rom;
std::unique_ptr<uint8_t[]> m_fds_data; // here, we store a copy of the disk
required_device<legacy_floppy_image_device> m_disk;
@@ -64,8 +69,7 @@ private:
};
-
// device type definition
-extern const device_type NES_DISKSYS;
+DECLARE_DEVICE_TYPE(NES_DISKSYS, nes_disksys_device)
-#endif
+#endif // MAME_BUS_NES_DISKSYS_H
diff --git a/src/devices/bus/nes/event.cpp b/src/devices/bus/nes/event.cpp
index 2440926cd1a..3f6065f449d 100644
--- a/src/devices/bus/nes/event.cpp
+++ b/src/devices/bus/nes/event.cpp
@@ -32,18 +32,18 @@
// constructor
//-------------------------------------------------
-const device_type NES_EVENT = device_creator<nes_event_device>;
+DEFINE_DEVICE_TYPE(NES_EVENT, nes_event_device, "nes_event", "NES Cart Event PCB")
nes_event_device::nes_event_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sxrom_device(mconfig, NES_EVENT, "NES Cart Event PCB", tag, owner, clock, "nes_event", __FILE__),
- m_dsw(*this, "DIPSW"),
- m_nwc_init(0),
- event_timer(nullptr),
- m_timer_count(0),
- m_timer_on(0),
- m_timer_enabled(0)
- {
+ : nes_sxrom_device(mconfig, NES_EVENT, tag, owner, clock)
+ , m_dsw(*this, "DIPSW")
+ , m_nwc_init(0)
+ , event_timer(nullptr)
+ , m_timer_count(0)
+ , m_timer_on(0)
+ , m_timer_enabled(0)
+{
}
diff --git a/src/devices/bus/nes/event.h b/src/devices/bus/nes/event.h
index af154b7fffc..b4b67614b50 100644
--- a/src/devices/bus/nes/event.h
+++ b/src/devices/bus/nes/event.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_EVENT_H
-#define __NES_EVENT_H
+#ifndef MAEM_BUS_NES_EVENT_H
+#define MAEM_BUS_NES_EVENT_H
+
+#pragma once
#include "mmc1.h"
@@ -14,22 +16,25 @@ public:
// construction/destruction
nes_event_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual ioport_constructor device_input_ports() const override;
- virtual void update_regs(int reg) override;
-
- required_ioport m_dsw;
virtual void pcb_reset() override;
protected:
+ static constexpr device_timer_id TIMER_EVENT = 0;
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ virtual void update_regs(int reg) override;
virtual void set_prg() override;
virtual void set_chr() override;
+
+ required_ioport m_dsw;
+
int m_nwc_init;
- static const device_timer_id TIMER_EVENT = 0;
emu_timer *event_timer;
attotime timer_freq;
@@ -39,6 +44,6 @@ protected:
// device type definition
-extern const device_type NES_EVENT;
+DECLARE_DEVICE_TYPE(NES_EVENT, nes_event_device)
-#endif
+#endif // MAEM_BUS_NES_EVENT_H
diff --git a/src/devices/bus/nes/ggenie.cpp b/src/devices/bus/nes/ggenie.cpp
index 2064b6e014b..6b6c2c1ecd8 100644
--- a/src/devices/bus/nes/ggenie.cpp
+++ b/src/devices/bus/nes/ggenie.cpp
@@ -30,14 +30,14 @@
// constructor
//-------------------------------------------------
-const device_type NES_GGENIE = device_creator<nes_ggenie_device>;
+DEFINE_DEVICE_TYPE(NES_GGENIE, nes_ggenie_device, "nes_ggenie", "NES Cart Game Genie PCB")
nes_ggenie_device::nes_ggenie_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_GGENIE, "NES Cart Game Genie PCB", tag, owner, clock, "nes_ggenie", __FILE__),
- m_ggslot(*this, "gg_slot"),
- m_gg_bypass(0)
- {
+ : nes_nrom_device(mconfig, NES_GGENIE, tag, owner, clock)
+ , m_ggslot(*this, "gg_slot")
+ , m_gg_bypass(0)
+{
}
diff --git a/src/devices/bus/nes/ggenie.h b/src/devices/bus/nes/ggenie.h
index 2a1289c4865..761e53f4f51 100644
--- a/src/devices/bus/nes/ggenie.h
+++ b/src/devices/bus/nes/ggenie.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_GGENIE_H
-#define __NES_GGENIE_H
+#ifndef MAME_BUS_NES_GGENIE_H
+#define MAME_BUS_NES_GGENIE_H
+
+#pragma once
#include "nxrom.h"
@@ -14,8 +16,6 @@ public:
// construction/destruction
nes_ggenie_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
@@ -38,6 +38,9 @@ public:
virtual void pcb_start(running_machine &machine, uint8_t *ciram_ptr, bool cart_mounted) override;
private:
+ // device-level overrides
+ virtual void device_start() override;
+
// emulate the Game Genie!
required_device<nes_cart_slot_device> m_ggslot;
@@ -51,8 +54,7 @@ private:
};
-
// device type definition
-extern const device_type NES_GGENIE;
+DECLARE_DEVICE_TYPE(NES_GGENIE, nes_ggenie_device)
-#endif
+#endif // MAME_BUS_NES_GGENIE_H
diff --git a/src/devices/bus/nes/henggedianzi.cpp b/src/devices/bus/nes/henggedianzi.cpp
index eb69e5b3d94..0ef0d2b8ab0 100644
--- a/src/devices/bus/nes/henggedianzi.cpp
+++ b/src/devices/bus/nes/henggedianzi.cpp
@@ -38,24 +38,24 @@
// constructor
//-------------------------------------------------
-const device_type NES_HENGG_SRICH = device_creator<nes_hengg_srich_device>;
-const device_type NES_HENGG_XHZS = device_creator<nes_hengg_xhzs_device>;
-const device_type NES_HENGG_SHJY3 = device_creator<nes_hengg_shjy3_device>;
+DEFINE_DEVICE_TYPE(NES_HENGG_SRICH, nes_hengg_srich_device, "nes_hengg_srich", "NES Cart Henggedianzi Super Rich PCB")
+DEFINE_DEVICE_TYPE(NES_HENGG_XHZS, nes_hengg_xhzs_device, "nes_hengg_xhzs", "NES Cart Henggedianzi Xing He Zhan Shi PCB")
+DEFINE_DEVICE_TYPE(NES_HENGG_SHJY3, nes_hengg_shjy3_device, "nes_hengg_shjy3", "NES Cart Henggedianzi Shen Hua Jian Yun III PCB")
nes_hengg_srich_device::nes_hengg_srich_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_HENGG_SRICH, "NES Cart Henggedianzi Super Rich PCB", tag, owner, clock, "nes_hengg_srich", __FILE__)
+ : nes_nrom_device(mconfig, NES_HENGG_SRICH, tag, owner, clock)
{
}
nes_hengg_xhzs_device::nes_hengg_xhzs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_HENGG_XHZS, "NES Cart Henggedianzi Xing He Zhan Shi PCB", tag, owner, clock, "nes_hengg_xhzs", __FILE__)
+ : nes_nrom_device(mconfig, NES_HENGG_XHZS, tag, owner, clock)
{
}
nes_hengg_shjy3_device::nes_hengg_shjy3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_HENGG_SHJY3, "NES Cart Henggedianzi Shen Hua Jian Yun III PCB", tag, owner, clock, "nes_hengg_shjy3", __FILE__), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_chr_mode(0)
- {
+ : nes_nrom_device(mconfig, NES_HENGG_SHJY3, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_chr_mode(0)
+{
}
diff --git a/src/devices/bus/nes/henggedianzi.h b/src/devices/bus/nes/henggedianzi.h
index 59bdf287e78..d74da743425 100644
--- a/src/devices/bus/nes/henggedianzi.h
+++ b/src/devices/bus/nes/henggedianzi.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_HENGGEDIANZI_H
-#define __NES_HENGGEDIANZI_H
+#ifndef MAME_BUS_NES_HENGGEDIANZI_H
+#define MAME_BUS_NES_HENGGEDIANZI_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_hengg_srich_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -30,12 +34,14 @@ public:
// construction/destruction
nes_hengg_xhzs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -47,13 +53,15 @@ public:
// construction/destruction
nes_hengg_shjy3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_banks();
@@ -66,13 +74,9 @@ private:
uint8_t m_mmc_extra_bank[8];
};
-
-
-
-
// device type definition
-extern const device_type NES_HENGG_SRICH;
-extern const device_type NES_HENGG_XHZS;
-extern const device_type NES_HENGG_SHJY3;
+DECLARE_DEVICE_TYPE(NES_HENGG_SRICH, nes_hengg_srich_device)
+DECLARE_DEVICE_TYPE(NES_HENGG_XHZS, nes_hengg_xhzs_device)
+DECLARE_DEVICE_TYPE(NES_HENGG_SHJY3, nes_hengg_shjy3_device)
-#endif
+#endif // MAME_BUS_NES_HENGGEDIANZI_H
diff --git a/src/devices/bus/nes/hes.cpp b/src/devices/bus/nes/hes.cpp
index 25d34fc4677..8d1d3a7a590 100644
--- a/src/devices/bus/nes/hes.cpp
+++ b/src/devices/bus/nes/hes.cpp
@@ -30,11 +30,11 @@
// constructor
//-------------------------------------------------
-const device_type NES_HES = device_creator<nes_hes_device>;
+DEFINE_DEVICE_TYPE(NES_HES, nes_hes_device, "nes_hes", "NES Cart HES PCB")
nes_hes_device::nes_hes_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_HES, "NES Cart HES PCB", tag, owner, clock, "nes_hes", __FILE__)
+ : nes_nrom_device(mconfig, NES_HES, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/hes.h b/src/devices/bus/nes/hes.h
index 5cd2ad539b8..d45d20a1a3f 100644
--- a/src/devices/bus/nes/hes.h
+++ b/src/devices/bus/nes/hes.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_HES_H
-#define __NES_HES_H
+#ifndef MAME_BUS_NES_HES_H
+#define MAME_BUS_NES_HES_H
+
+#pragma once
#include "nxrom.h"
@@ -14,15 +16,17 @@ public:
// construction/destruction
nes_hes_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
// device type definition
-extern const device_type NES_HES;
+DECLARE_DEVICE_TYPE(NES_HES, nes_hes_device)
-#endif
+#endif // MAME_BUS_NES_HES_H
diff --git a/src/devices/bus/nes/hosenkan.cpp b/src/devices/bus/nes/hosenkan.cpp
index a0eedabcd79..72d47061d43 100644
--- a/src/devices/bus/nes/hosenkan.cpp
+++ b/src/devices/bus/nes/hosenkan.cpp
@@ -13,7 +13,7 @@
#include "hosenkan.h"
#include "cpu/m6502/m6502.h"
-#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access PPU_BOTTOM_VISIBLE_SCANLINE
+#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE
#include "screen.h"
@@ -30,17 +30,17 @@
// constructor
//-------------------------------------------------
-const device_type NES_HOSENKAN = device_creator<nes_hosenkan_device>;
+DEFINE_DEVICE_TYPE(NES_HOSENKAN, nes_hosenkan_device, "nes_hosenkan", "NES Cart HOSENKAN PCB")
nes_hosenkan_device::nes_hosenkan_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_HOSENKAN, "NES Cart HOSENKAN PCB", tag, owner, clock, "nes_hosenkan", __FILE__),
- m_irq_count(0),
- m_irq_count_latch(0),
- m_irq_clear(0),
- m_irq_enable(0),
- m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_HOSENKAN, tag, owner, clock)
+ , m_irq_count(0)
+ , m_irq_count_latch(0)
+ , m_irq_clear(0)
+ , m_irq_enable(0)
+ , m_latch(0)
+{
}
@@ -89,7 +89,7 @@ void nes_hosenkan_device::pcb_reset()
// same as MMC3!
void nes_hosenkan_device::hblank_irq( int scanline, int vblank, int blanked )
{
- if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE)
+ if (scanline < ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE)
{
int prior_count = m_irq_count;
if ((m_irq_count == 0) || m_irq_clear)
diff --git a/src/devices/bus/nes/hosenkan.h b/src/devices/bus/nes/hosenkan.h
index 0d87cc6acff..153638a9cbe 100644
--- a/src/devices/bus/nes/hosenkan.h
+++ b/src/devices/bus/nes/hosenkan.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_HOSENKAN_H
-#define __NES_HOSENKAN_H
+#ifndef MAME_BUS_NES_HOSENKAN_H
+#define MAME_BUS_NES_HOSENKAN_H
+
+#pragma once
#include "nxrom.h"
@@ -14,14 +16,15 @@ public:
// construction/destruction
nes_hosenkan_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
-
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint16_t m_irq_count, m_irq_count_latch;
uint8_t m_irq_clear;
@@ -30,10 +33,7 @@ private:
uint8_t m_latch;
};
-
-
// device type definition
-extern const device_type NES_HOSENKAN;
-
+DECLARE_DEVICE_TYPE(NES_HOSENKAN, nes_hosenkan_device)
-#endif
+#endif // MAME_BUS_NES_HOSENKAN_H
diff --git a/src/devices/bus/nes/irem.cpp b/src/devices/bus/nes/irem.cpp
index c780d67315d..17fd84643b7 100644
--- a/src/devices/bus/nes/irem.cpp
+++ b/src/devices/bus/nes/irem.cpp
@@ -35,36 +35,36 @@
// constructor
//-------------------------------------------------
-const device_type NES_LROG017 = device_creator<nes_lrog017_device>;
-const device_type NES_HOLYDIVR = device_creator<nes_holydivr_device>;
-const device_type NES_TAM_S1 = device_creator<nes_tam_s1_device>;
-const device_type NES_G101 = device_creator<nes_g101_device>;
-const device_type NES_H3001 = device_creator<nes_h3001_device>;
+DEFINE_DEVICE_TYPE(NES_LROG017, nes_lrog017_device, "nes_lrog017", "NES Cart Irem Discrete 74*161/161/21/138 PCB")
+DEFINE_DEVICE_TYPE(NES_HOLYDIVR, nes_holydivr_device, "nes_holydivr", "NES Cart Irem Holy Diver PCB")
+DEFINE_DEVICE_TYPE(NES_TAM_S1, nes_tam_s1_device, "nes_tam_s1", "NES Cart Irem TAM-S1 PCB")
+DEFINE_DEVICE_TYPE(NES_G101, nes_g101_device, "nes_g101", "NES Cart Irem G-101 PCB")
+DEFINE_DEVICE_TYPE(NES_H3001, nes_h3001_device, "ns_h3001", "NES Cart Irem H-3001 PCB")
nes_lrog017_device::nes_lrog017_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_LROG017, "NES Cart Irem Discrete 74*161/161/21/138 PCB", tag, owner, clock, "nes_lrog017", __FILE__)
+ : nes_nrom_device(mconfig, NES_LROG017, tag, owner, clock)
{
}
nes_holydivr_device::nes_holydivr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_HOLYDIVR, "NES Cart Irem Holy Diver PCB", tag, owner, clock, "nes_holydivr", __FILE__)
+ : nes_nrom_device(mconfig, NES_HOLYDIVR, tag, owner, clock)
{
}
nes_tam_s1_device::nes_tam_s1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TAM_S1, "NES Cart Irem TAM-S1 PCB", tag, owner, clock, "nes_tam_s1", __FILE__)
+ : nes_nrom_device(mconfig, NES_TAM_S1, tag, owner, clock)
{
}
nes_g101_device::nes_g101_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_G101, "NES Cart Irem G-101 PCB", tag, owner, clock, "nes_g101", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_G101, tag, owner, clock), m_latch(0)
+{
}
nes_h3001_device::nes_h3001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_H3001, "NES Cart Irem H-3001 PCB", tag, owner, clock, "nes_h3001", __FILE__), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_H3001, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
diff --git a/src/devices/bus/nes/irem.h b/src/devices/bus/nes/irem.h
index 3aef2278957..a50077e70a3 100644
--- a/src/devices/bus/nes/irem.h
+++ b/src/devices/bus/nes/irem.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_IREM_H
-#define __NES_IREM_H
+#ifndef MAME_BUS_NES_IREM_H
+#define MAME_BUS_NES_IREM_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_lrog017_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -30,11 +34,13 @@ public:
// construction/destruction
nes_holydivr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -46,11 +52,13 @@ public:
// construction/destruction
nes_tam_s1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -62,13 +70,14 @@ public:
// construction/destruction
nes_g101_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
uint8_t m_latch;
};
@@ -81,14 +90,15 @@ public:
// construction/destruction
nes_h3001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
uint16_t m_irq_count, m_irq_count_latch;
int m_irq_enable;
@@ -96,13 +106,11 @@ protected:
emu_timer *irq_timer;
};
-
-
// device type definition
-extern const device_type NES_LROG017;
-extern const device_type NES_HOLYDIVR;
-extern const device_type NES_TAM_S1;
-extern const device_type NES_G101;
-extern const device_type NES_H3001;
+DECLARE_DEVICE_TYPE(NES_LROG017, nes_lrog017_device)
+DECLARE_DEVICE_TYPE(NES_HOLYDIVR, nes_holydivr_device)
+DECLARE_DEVICE_TYPE(NES_TAM_S1, nes_tam_s1_device)
+DECLARE_DEVICE_TYPE(NES_G101, nes_g101_device)
+DECLARE_DEVICE_TYPE(NES_H3001, nes_h3001_device)
-#endif
+#endif // MAME_BUS_NES_IREM_H
diff --git a/src/devices/bus/nes/jaleco.cpp b/src/devices/bus/nes/jaleco.cpp
index 9a3ca8922fa..f537d75c696 100644
--- a/src/devices/bus/nes/jaleco.cpp
+++ b/src/devices/bus/nes/jaleco.cpp
@@ -39,104 +39,104 @@
// constructor
//-------------------------------------------------
-const device_type NES_JF11 = device_creator<nes_jf11_device>;
-const device_type NES_JF16 = device_creator<nes_jf16_device>;
-const device_type NES_JF17 = device_creator<nes_jf17_device>;
-const device_type NES_JF19 = device_creator<nes_jf19_device>;
-const device_type NES_SS88006 = device_creator<nes_ss88006_device>;
-const device_type NES_JF13 = device_creator<nes_jf13_device>;
-const device_type NES_JF17_ADPCM = device_creator<nes_jf17_adpcm_device>;
-const device_type NES_JF19_ADPCM = device_creator<nes_jf19_adpcm_device>;
-const device_type NES_JF23 = device_creator<nes_jf23_device>;
-const device_type NES_JF24 = device_creator<nes_jf24_device>;
-const device_type NES_JF29 = device_creator<nes_jf29_device>;
-const device_type NES_JF33 = device_creator<nes_jf33_device>;
+DEFINE_DEVICE_TYPE(NES_JF11, nes_jf11_device, "nes_jf11", "NES Cart Jaleco JF-11 PCB")
+DEFINE_DEVICE_TYPE(NES_JF13, nes_jf13_device, "nes_jf13", "NES Cart Jaleco JF-13 PCB")
+DEFINE_DEVICE_TYPE(NES_JF16, nes_jf16_device, "nes_jf16", "NES Cart Jaleco JF-16 PCB")
+DEFINE_DEVICE_TYPE(NES_JF17, nes_jf17_device, "nes_jf17", "NES Cart Jaleco JF-17 PCB")
+DEFINE_DEVICE_TYPE(NES_JF17_ADPCM, nes_jf17_adpcm_device, "nes_jf17_pcm", "NES Cart Jaleco JF-17 + ADPCM (Moero!! Pro Tennis) PCB")
+DEFINE_DEVICE_TYPE(NES_JF19, nes_jf19_device, "nes_jf19", "NES Cart Jaleco JF-19 (Moero!! Pro Soccer) PCB")
+DEFINE_DEVICE_TYPE(NES_JF19_ADPCM, nes_jf19_adpcm_device, "nes_jf19_pcm", "NES Cart Jaleco JF-19 + ADPCM (Moero!! Pro Yakyuu 88) PCB")
+DEFINE_DEVICE_TYPE(NES_SS88006, nes_ss88006_device, "nes_ss88006", "NES Cart Jaleco SS88006 PCB")
+DEFINE_DEVICE_TYPE(NES_JF23, nes_jf23_device, "nes_jf23", "NES Cart Jaleco JF-23 (Shin Moero Pro Yakyuu) PCB")
+DEFINE_DEVICE_TYPE(NES_JF24, nes_jf24_device, "nes_jf24", "NES Cart Jaleco JF-24 (Terao no Dosukoi Oozumou) PCB")
+DEFINE_DEVICE_TYPE(NES_JF29, nes_jf29_device, "nes_jf29", "NES Cart Jaleco JF-29 (Moe Pro! '90) PCB")
+DEFINE_DEVICE_TYPE(NES_JF33, nes_jf33_device, "nes_jf33", "NES Cart Jaleco JF-33 (Moe Pro! Saikyou-hen) PCB")
nes_jf11_device::nes_jf11_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_JF11, "NES Cart Jaleco JF-11 PCB", tag, owner, clock, "nes_jf11", __FILE__)
+ : nes_nrom_device(mconfig, NES_JF11, tag, owner, clock)
{
}
nes_jf13_device::nes_jf13_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_JF13, "NES Cart Jaleco JF-13 PCB", tag, owner, clock, "nes_jf13", __FILE__),
- m_samples(*this, "samples")
+ : nes_nrom_device(mconfig, NES_JF13, tag, owner, clock)
+ , m_samples(*this, "samples")
{
}
nes_jf16_device::nes_jf16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_JF16, "NES Cart Jaleco JF-16 PCB", tag, owner, clock, "nes_jf16", __FILE__)
+ : nes_nrom_device(mconfig, NES_JF16, tag, owner, clock)
{
}
-nes_jf17_device::nes_jf17_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_latch(0)
- {
+nes_jf17_device::nes_jf17_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_latch(0)
+{
}
nes_jf17_device::nes_jf17_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_JF17, "NES Cart Jaleco JF-17 PCB", tag, owner, clock, "nes_jf17", __FILE__), m_latch(0)
- {
+ : nes_jf17_device(mconfig, NES_JF17, tag, owner, clock)
+{
}
nes_jf17_adpcm_device::nes_jf17_adpcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_jf17_device(mconfig, NES_JF17_ADPCM, "NES Cart Jaleco JF-17 + ADPCM (Moero!! Pro Tennis) PCB", tag, owner, clock, "nes_jf17_pcm", __FILE__),
- m_samples(*this, "samples")
+ : nes_jf17_device(mconfig, NES_JF17_ADPCM, tag, owner, clock)
+ , m_samples(*this, "samples")
{
}
-nes_jf19_device::nes_jf19_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+nes_jf19_device::nes_jf19_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock)
{
}
nes_jf19_device::nes_jf19_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_JF19, "NES Cart Jaleco JF-19 (Moero!! Pro Soccer) PCB", tag, owner, clock, "nes_jf19", __FILE__)
+ : nes_jf19_device(mconfig, NES_JF19, tag, owner, clock)
{
}
nes_jf19_adpcm_device::nes_jf19_adpcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_jf19_device(mconfig, NES_JF19_ADPCM, "NES Cart Jaleco JF-19 + ADPCM (Moero!! Pro Yakyuu 88) PCB", tag, owner, clock, "nes_jf19_pcm", __FILE__),
- m_samples(*this, "samples")
+ : nes_jf19_device(mconfig, NES_JF19_ADPCM, tag, owner, clock)
+ , m_samples(*this, "samples")
{
}
-nes_ss88006_device::nes_ss88006_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_irq_count(0), m_irq_count_latch(0), m_irq_mode(0), m_irq_enable(0), irq_timer(nullptr), m_latch(0)
- {
+nes_ss88006_device::nes_ss88006_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_mode(0), m_irq_enable(0), irq_timer(nullptr), m_latch(0)
+{
}
nes_ss88006_device::nes_ss88006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SS88006, "NES Cart Jaleco SS88006 PCB", tag, owner, clock, "nes_ss88006", __FILE__), m_irq_count(0), m_irq_count_latch(0), m_irq_mode(0), m_irq_enable(0), irq_timer(nullptr), m_latch(0)
- {
+ : nes_ss88006_device(mconfig, NES_SS88006, tag, owner, clock)
+{
}
-nes_ss88006_adpcm_device::nes_ss88006_adpcm_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_ss88006_device(mconfig, type, name, tag, owner, clock, shortname, source)
+nes_ss88006_adpcm_device::nes_ss88006_adpcm_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_ss88006_device(mconfig, type, tag, owner, clock)
{
}
nes_jf23_device::nes_jf23_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_ss88006_adpcm_device(mconfig, NES_JF23, "NES Cart Jaleco Shin Moero Pro Yakyuu PCB", tag, owner, clock, "nes_jf23", __FILE__),
- m_samples(*this, "samples")
+ : nes_ss88006_adpcm_device(mconfig, NES_JF23, tag, owner, clock)
+ , m_samples(*this, "samples")
{
}
nes_jf24_device::nes_jf24_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_ss88006_adpcm_device(mconfig, NES_JF24, "NES Cart Jaleco Terao no Dosukoi Oozumou PCB", tag, owner, clock, "nes_jf24", __FILE__),
- m_samples(*this, "samples")
+ : nes_ss88006_adpcm_device(mconfig, NES_JF24, tag, owner, clock)
+ , m_samples(*this, "samples")
{
}
nes_jf29_device::nes_jf29_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_ss88006_adpcm_device(mconfig, NES_JF29, "NES Cart Jaleco Moe Pro! '90 PCB", tag, owner, clock, "nes_jf29", __FILE__),
- m_samples(*this, "samples")
+ : nes_ss88006_adpcm_device(mconfig, NES_JF29, tag, owner, clock)
+ , m_samples(*this, "samples")
{
}
nes_jf33_device::nes_jf33_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_ss88006_adpcm_device(mconfig, NES_JF33, "NES Cart Jaleco Moe Pro! Saikyou-hen PCB", tag, owner, clock, "nes_jf33", __FILE__),
- m_samples(*this, "samples")
+ : nes_ss88006_adpcm_device(mconfig, NES_JF33, tag, owner, clock)
+ , m_samples(*this, "samples")
{
}
diff --git a/src/devices/bus/nes/jaleco.h b/src/devices/bus/nes/jaleco.h
index 5ad09a78cba..5fe977bba04 100644
--- a/src/devices/bus/nes/jaleco.h
+++ b/src/devices/bus/nes/jaleco.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_JALECO_H
-#define __NES_JALECO_H
+#ifndef MAME_BUS_NES_JALECO_H
+#define MAME_BUS_NES_JALECO_H
+
+#pragma once
#include "nxrom.h"
#include "sound/samples.h"
@@ -15,11 +17,13 @@ public:
// construction/destruction
nes_jf11_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -31,13 +35,15 @@ public:
// construction/destruction
nes_jf13_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
required_device<samples_device> m_samples;
};
@@ -51,11 +57,13 @@ public:
// construction/destruction
nes_jf16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -65,16 +73,18 @@ class nes_jf17_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_jf17_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_jf17_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
protected:
+ nes_jf17_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
uint8_t m_latch;
};
@@ -101,14 +111,17 @@ class nes_jf19_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_jf19_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_jf19_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ nes_jf19_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -134,18 +147,20 @@ class nes_ss88006_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ss88006_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_ss88006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_WRITE8_MEMBER(ss88006_write);
virtual DECLARE_WRITE8_MEMBER(write_h) override { ss88006_write(space, offset, data, mem_mask); }
virtual void pcb_reset() override;
protected:
+ nes_ss88006_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
uint16_t m_irq_count, m_irq_count_latch;
uint8_t m_irq_mode;
int m_irq_enable;
@@ -164,11 +179,10 @@ protected:
class nes_ss88006_adpcm_device : public nes_ss88006_device
{
-public:
+protected:
// construction/destruction
- nes_ss88006_adpcm_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ nes_ss88006_adpcm_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
void ss88006_adpcm_write(address_space &space, offs_t offset, uint8_t data, samples_device *dev);
};
@@ -184,8 +198,9 @@ public:
virtual machine_config_constructor device_mconfig_additions() const override;
private:
- required_device<samples_device> m_samples;
virtual DECLARE_WRITE8_MEMBER(write_h) override { ss88006_adpcm_write(space, offset, data, m_samples); }
+
+ required_device<samples_device> m_samples;
};
@@ -200,8 +215,9 @@ public:
virtual machine_config_constructor device_mconfig_additions() const override;
private:
- required_device<samples_device> m_samples;
virtual DECLARE_WRITE8_MEMBER(write_h) override { ss88006_adpcm_write(space, offset, data, m_samples); }
+
+ required_device<samples_device> m_samples;
};
@@ -216,8 +232,9 @@ public:
virtual machine_config_constructor device_mconfig_additions() const override;
private:
- required_device<samples_device> m_samples;
virtual DECLARE_WRITE8_MEMBER(write_h) override { ss88006_adpcm_write(space, offset, data, m_samples); }
+
+ required_device<samples_device> m_samples;
};
@@ -232,25 +249,24 @@ public:
virtual machine_config_constructor device_mconfig_additions() const override;
private:
- required_device<samples_device> m_samples;
virtual DECLARE_WRITE8_MEMBER(write_h) override { ss88006_adpcm_write(space, offset, data, m_samples); }
-};
-
+ required_device<samples_device> m_samples;
+};
// device type definition
-extern const device_type NES_JF11;
-extern const device_type NES_JF13;
-extern const device_type NES_JF16;
-extern const device_type NES_JF17;
-extern const device_type NES_JF17_ADPCM;
-extern const device_type NES_JF19;
-extern const device_type NES_JF19_ADPCM;
-extern const device_type NES_SS88006;
-extern const device_type NES_JF23;
-extern const device_type NES_JF24;
-extern const device_type NES_JF29;
-extern const device_type NES_JF33;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_JF11, nes_jf11_device)
+DECLARE_DEVICE_TYPE(NES_JF13, nes_jf13_device)
+DECLARE_DEVICE_TYPE(NES_JF16, nes_jf16_device)
+DECLARE_DEVICE_TYPE(NES_JF17, nes_jf17_device)
+DECLARE_DEVICE_TYPE(NES_JF17_ADPCM, nes_jf17_adpcm_device)
+DECLARE_DEVICE_TYPE(NES_JF19, nes_jf19_device)
+DECLARE_DEVICE_TYPE(NES_JF19_ADPCM, nes_jf19_adpcm_device)
+DECLARE_DEVICE_TYPE(NES_SS88006, nes_ss88006_device)
+DECLARE_DEVICE_TYPE(NES_JF23, nes_jf23_device)
+DECLARE_DEVICE_TYPE(NES_JF24, nes_jf24_device)
+DECLARE_DEVICE_TYPE(NES_JF29, nes_jf29_device)
+DECLARE_DEVICE_TYPE(NES_JF33, nes_jf33_device)
+
+#endif // MAME_BUS_NES_JALECO_H
diff --git a/src/devices/bus/nes/jy.cpp b/src/devices/bus/nes/jy.cpp
index d7582128e80..38a30848859 100644
--- a/src/devices/bus/nes/jy.cpp
+++ b/src/devices/bus/nes/jy.cpp
@@ -22,7 +22,7 @@
#include "jy.h"
#include "cpu/m6502/m6502.h"
-#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access PPU_BOTTOM_VISIBLE_SCANLINE
+#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE
#ifdef NES_PCB_DEBUG
#define VERBOSE 1
@@ -37,36 +37,34 @@
// constructor
//-------------------------------------------------
-const device_type NES_JY_TYPEA = device_creator<nes_jy_typea_device>;
-const device_type NES_JY_TYPEB = device_creator<nes_jy_typeb_device>;
-const device_type NES_JY_TYPEC = device_creator<nes_jy_typec_device>;
+DEFINE_DEVICE_TYPE(NES_JY_TYPEA, nes_jy_typea_device, "nes_jya", "NES Cart JY Company Type A PCB")
+DEFINE_DEVICE_TYPE(NES_JY_TYPEB, nes_jy_typeb_device, "nes_jyb", "NES Cart JY Company Type B PCB")
+DEFINE_DEVICE_TYPE(NES_JY_TYPEC, nes_jy_typec_device, "nes_jyc", "NES Cart JY Company Type C PCB")
-nes_jy_typea_device::nes_jy_typea_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_latch(0), m_extra_chr_bank(0), m_extra_chr_mask(0), m_bank_6000(0),
+nes_jy_typea_device::nes_jy_typea_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_latch(0), m_extra_chr_bank(0), m_extra_chr_mask(0), m_bank_6000(0),
m_irq_mode(0), m_irq_count(0), m_irq_prescale(0), m_irq_prescale_mask(0), m_irq_flip(0), m_irq_enable(0), m_irq_up(0), m_irq_down(0), irq_timer(nullptr)
- {
+{
}
nes_jy_typea_device::nes_jy_typea_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_JY_TYPEA, "NES Cart JY Company Type A PCB", tag, owner, clock, "nes_jya", __FILE__), m_latch(0), m_extra_chr_bank(0),
- m_extra_chr_mask(0), m_bank_6000(0), m_irq_mode(0), m_irq_count(0), m_irq_prescale(0), m_irq_prescale_mask(0), m_irq_flip(0), m_irq_enable(0), m_irq_up(0),
- m_irq_down(0), irq_timer(nullptr)
+ : nes_nrom_device(mconfig, NES_JY_TYPEA, tag, owner, clock)
{
}
-nes_jy_typeb_device::nes_jy_typeb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_jy_typea_device(mconfig, type, name, tag, owner, clock, shortname, source)
+nes_jy_typeb_device::nes_jy_typeb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_jy_typea_device(mconfig, type, tag, owner, clock)
{
}
nes_jy_typeb_device::nes_jy_typeb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_jy_typea_device(mconfig, NES_JY_TYPEB, "NES Cart JY Company Type B PCB", tag, owner, clock, "nes_jyb", __FILE__)
+ : nes_jy_typeb_device(mconfig, NES_JY_TYPEB, tag, owner, clock)
{
}
nes_jy_typec_device::nes_jy_typec_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_jy_typeb_device(mconfig, NES_JY_TYPEC, "NES Cart JY Company Type C PCB", tag, owner, clock, "nes_jyc", __FILE__)
+ : nes_jy_typeb_device(mconfig, NES_JY_TYPEC, tag, owner, clock)
{
}
@@ -238,7 +236,7 @@ void nes_jy_typea_device::device_timer(emu_timer &timer, device_timer_id id, int
void nes_jy_typea_device::scanline_irq(int scanline, int vblank, int blanked)
{
- if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE)
+ if (scanline < ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE)
irq_clock(blanked, 1);
}
diff --git a/src/devices/bus/nes/jy.h b/src/devices/bus/nes/jy.h
index 5c835e42a87..80be5d98631 100644
--- a/src/devices/bus/nes/jy.h
+++ b/src/devices/bus/nes/jy.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_JY_H
-#define __NES_JY_H
+#ifndef MAME_BUS_NES_JY_H
+#define MAME_BUS_NES_JY_H
+
+#pragma once
#include "nxrom.h"
@@ -12,12 +14,8 @@ class nes_jy_typea_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_jy_typea_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_jy_typea_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
@@ -30,6 +28,12 @@ public:
virtual void pcb_reset() override;
protected:
+ nes_jy_typea_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
void irq_clock(int blanked, int mode);
void update_banks(int reg);
void update_prg();
@@ -69,10 +73,11 @@ class nes_jy_typeb_device : public nes_jy_typea_device
{
public:
// construction/destruction
- nes_jy_typeb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_jy_typeb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
+ nes_jy_typeb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
void update_mirror_typeb();
virtual void update_mirror() override { update_mirror_typeb(); }
};
@@ -93,12 +98,9 @@ protected:
};
-
-
-
// device type definition
-extern const device_type NES_JY_TYPEA;
-extern const device_type NES_JY_TYPEB;
-extern const device_type NES_JY_TYPEC;
+DECLARE_DEVICE_TYPE(NES_JY_TYPEA, nes_jy_typea_device)
+DECLARE_DEVICE_TYPE(NES_JY_TYPEB, nes_jy_typeb_device)
+DECLARE_DEVICE_TYPE(NES_JY_TYPEC, nes_jy_typec_device)
-#endif
+#endif // MAME_BUS_NES_JY_H
diff --git a/src/devices/bus/nes/kaiser.cpp b/src/devices/bus/nes/kaiser.cpp
index 5f6b7776057..5ec2355dba6 100644
--- a/src/devices/bus/nes/kaiser.cpp
+++ b/src/devices/bus/nes/kaiser.cpp
@@ -48,70 +48,70 @@
// constructor
//-------------------------------------------------
-const device_type NES_KS7058 = device_creator<nes_ks7058_device>;
-const device_type NES_KS7022 = device_creator<nes_ks7022_device>;
-const device_type NES_KS7032 = device_creator<nes_ks7032_device>;
-const device_type NES_KS202 = device_creator<nes_ks202_device>;
-const device_type NES_KS7017 = device_creator<nes_ks7017_device>;
-const device_type NES_KS7012 = device_creator<nes_ks7012_device>;
-const device_type NES_KS7013B = device_creator<nes_ks7013b_device>;
-const device_type NES_KS7031 = device_creator<nes_ks7031_device>;
-const device_type NES_KS7016 = device_creator<nes_ks7016_device>;
-const device_type NES_KS7037 = device_creator<nes_ks7037_device>;
+DEFINE_DEVICE_TYPE(NES_KS7058, nes_ks7058_device, "nes_ks7058", "NES Cart Kaiser KS-7058 PCB")
+DEFINE_DEVICE_TYPE(NES_KS7022, nes_ks7022_device, "nes_ks7022", "NES Cart Kaiser KS-7022 PCB")
+DEFINE_DEVICE_TYPE(NES_KS7032, nes_ks7032_device, "nes_ks7032", "NES Cart Kaiser KS-7032 PCB")
+DEFINE_DEVICE_TYPE(NES_KS202, nes_ks202_device, "nes_ks202", "NES Cart Kaiser KS-202 PCB")
+DEFINE_DEVICE_TYPE(NES_KS7017, nes_ks7017_device, "nes_ks7017", "NES Cart Kaiser KS-7017 PCB")
+DEFINE_DEVICE_TYPE(NES_KS7012, nes_ks7012_device, "nes_ks7012", "NES Cart Kaiser KS-7012 PCB")
+DEFINE_DEVICE_TYPE(NES_KS7013B, nes_ks7013b_device, "nes_ks7013b", "NES Cart Kaiser KS-7013B PCB")
+DEFINE_DEVICE_TYPE(NES_KS7031, nes_ks7031_device, "nes_ks7031", "NES Cart Kaiser KS-7031 PCB")
+DEFINE_DEVICE_TYPE(NES_KS7016, nes_ks7016_device, "nes_ks7016", "NES Cart Kaiser KS-7016 PCB")
+DEFINE_DEVICE_TYPE(NES_KS7037, nes_ks7037_device, "nes_ks7037", "NES Cart Kaiser KS-7037 PCB")
nes_ks7058_device::nes_ks7058_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_KS7058, "NES Cart Kaiser KS-7058 PCB", tag, owner, clock, "nes_ks7058", __FILE__)
+ : nes_nrom_device(mconfig, NES_KS7058, tag, owner, clock)
{
}
nes_ks7022_device::nes_ks7022_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_KS7022, "NES Cart Kaiser KS-7022 PCB", tag, owner, clock, "nes_ks7022", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_KS7022, tag, owner, clock), m_latch(0)
+{
}
-nes_ks7032_device::nes_ks7032_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_latch(0), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+nes_ks7032_device::nes_ks7032_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_latch(0), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
nes_ks7032_device::nes_ks7032_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_KS7032, "NES Cart Kaiser KS-7032 PCB", tag, owner, clock, "nes_ks7032", __FILE__), m_latch(0), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_ks7032_device(mconfig, NES_KS7032, tag, owner, clock)
+{
}
nes_ks202_device::nes_ks202_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_ks7032_device(mconfig, NES_KS202, "NES Cart Kaiser KS-202 PCB", tag, owner, clock, "nes_ks202", __FILE__)
+ : nes_ks7032_device(mconfig, NES_KS202, tag, owner, clock)
{
}
nes_ks7017_device::nes_ks7017_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_KS7017, "NES Cart Kaiser KS-7017 PCB", tag, owner, clock, "nes_ks7017", __FILE__), m_latch(0), m_irq_count(0), m_irq_status(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_KS7017, tag, owner, clock), m_latch(0), m_irq_count(0), m_irq_status(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
nes_ks7012_device::nes_ks7012_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_KS7012, "NES Cart Kaiser KS-7012 PCB", tag, owner, clock, "nes_ks7012", __FILE__)
+ : nes_nrom_device(mconfig, NES_KS7012, tag, owner, clock)
{
}
nes_ks7013b_device::nes_ks7013b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_KS7013B, "NES Cart Kaiser KS-7013B PCB", tag, owner, clock, "nes_ks7013b", __FILE__)
+ : nes_nrom_device(mconfig, NES_KS7013B, tag, owner, clock)
{
}
nes_ks7031_device::nes_ks7031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_KS7031, "NES Cart Kaiser KS-7031 PCB", tag, owner, clock, "nes_ks7031", __FILE__)
+ : nes_nrom_device(mconfig, NES_KS7031, tag, owner, clock)
{
}
nes_ks7016_device::nes_ks7016_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_KS7016, "NES Cart Kaiser KS-7016 PCB", tag, owner, clock, "nes_ks7016", __FILE__)
+ : nes_nrom_device(mconfig, NES_KS7016, tag, owner, clock)
{
}
nes_ks7037_device::nes_ks7037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_KS7037, "NES Cart Kaiser KS-7037 PCB", tag, owner, clock, "nes_ks7037", __FILE__)
+ : nes_nrom_device(mconfig, NES_KS7037, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/kaiser.h b/src/devices/bus/nes/kaiser.h
index c6d094d4390..8c544059aa9 100644
--- a/src/devices/bus/nes/kaiser.h
+++ b/src/devices/bus/nes/kaiser.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_KAISER_H
-#define __NES_KAISER_H
+#ifndef MAME_BUS_NES_KAISER_H
+#define MAME_BUS_NES_KAISER_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_ks7058_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -30,13 +34,15 @@ public:
// construction/destruction
nes_ks7022_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -48,12 +54,8 @@ class nes_ks7032_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ks7032_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_ks7032_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(ks7032_write);
virtual DECLARE_WRITE8_MEMBER(write_h) override { ks7032_write(space, offset, data, mem_mask); }
@@ -61,6 +63,12 @@ public:
virtual void pcb_reset() override;
protected:
+ nes_ks7032_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
void prg_update();
uint8_t m_latch;
@@ -96,15 +104,17 @@ public:
// construction/destruction
nes_ks7017_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_ex) override;
virtual DECLARE_WRITE8_MEMBER(write_ex) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
uint8_t m_latch;
@@ -125,11 +135,13 @@ public:
// construction/destruction
nes_ks7012_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
// ======================> nes_ks7013b_device
@@ -140,12 +152,14 @@ public:
// construction/destruction
nes_ks7013b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -157,14 +171,16 @@ public:
// construction/destruction
nes_ks7031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[4];
};
@@ -178,13 +194,15 @@ public:
// construction/destruction
nes_ks7016_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg;
};
@@ -197,8 +215,6 @@ public:
// construction/destruction
nes_ks7037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
@@ -206,6 +222,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_prg();
uint8_t m_latch;
@@ -213,18 +233,16 @@ private:
};
-
-
// device type definition
-extern const device_type NES_KS7058;
-extern const device_type NES_KS7022;
-extern const device_type NES_KS7032;
-extern const device_type NES_KS202;
-extern const device_type NES_KS7017;
-extern const device_type NES_KS7012;
-extern const device_type NES_KS7013B;
-extern const device_type NES_KS7031;
-extern const device_type NES_KS7016;
-extern const device_type NES_KS7037;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_KS7058, nes_ks7058_device)
+DECLARE_DEVICE_TYPE(NES_KS7022, nes_ks7022_device)
+DECLARE_DEVICE_TYPE(NES_KS7032, nes_ks7032_device)
+DECLARE_DEVICE_TYPE(NES_KS202, nes_ks202_device)
+DECLARE_DEVICE_TYPE(NES_KS7017, nes_ks7017_device)
+DECLARE_DEVICE_TYPE(NES_KS7012, nes_ks7012_device)
+DECLARE_DEVICE_TYPE(NES_KS7013B, nes_ks7013b_device)
+DECLARE_DEVICE_TYPE(NES_KS7031, nes_ks7031_device)
+DECLARE_DEVICE_TYPE(NES_KS7016, nes_ks7016_device)
+DECLARE_DEVICE_TYPE(NES_KS7037, nes_ks7037_device)
+
+#endif // MAME_BUS_NES_KAISER_H
diff --git a/src/devices/bus/nes/karastudio.cpp b/src/devices/bus/nes/karastudio.cpp
index 7ed30571e89..0aae32c0606 100644
--- a/src/devices/bus/nes/karastudio.cpp
+++ b/src/devices/bus/nes/karastudio.cpp
@@ -51,9 +51,9 @@
//-------------------------------------------------
kstudio_cart_interface::kstudio_cart_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_rom(nullptr), m_bank(0)
- {
+ : device_slot_card_interface(mconfig, device)
+ , m_rom(nullptr), m_bank(0)
+{
}
kstudio_cart_interface::~kstudio_cart_interface()
@@ -69,12 +69,13 @@ READ8_MEMBER(kstudio_cart_interface::read)
// sub-cart slot device
//-------------------------------------------------
-const device_type NES_KSEXPANSION_SLOT = device_creator<nes_kstudio_slot_device>;
+DEFINE_DEVICE_TYPE(NES_KSEXPANSION_SLOT, nes_kstudio_slot_device, "nes_ks_slot", "NES Karaoke Studio Expansion Slot")
-nes_kstudio_slot_device::nes_kstudio_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_KSEXPANSION_SLOT, "NES Karaoke Studio Expansion Slot", tag, owner, clock, "nes_ks_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this), m_cart(nullptr)
+nes_kstudio_slot_device::nes_kstudio_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NES_KSEXPANSION_SLOT, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
+ , device_slot_interface(mconfig, *this)
+ , m_cart(nullptr)
{
}
@@ -142,11 +143,11 @@ ROM_START( ks_exp_rom )
ROM_REGION(0x20000, "exrom", ROMREGION_ERASEFF)
ROM_END
-const device_type NES_KSEXPANSION_ROM = device_creator<nes_kstudio_rom_device>;
+DEFINE_DEVICE_TYPE(NES_KSEXPANSION_ROM, nes_kstudio_rom_device, "nes_ks_rom", "NES Karaoke Studio Expansion ROM")
nes_kstudio_rom_device::nes_kstudio_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NES_KSEXPANSION_ROM, "NES Karaoke Studio Expansion ROM", tag, owner, clock, "nes_ks_rom", __FILE__),
- kstudio_cart_interface( mconfig, *this )
+ : device_t(mconfig, NES_KSEXPANSION_ROM, tag, owner, clock)
+ , kstudio_cart_interface( mconfig, *this )
{
}
@@ -178,13 +179,14 @@ uint8_t *nes_kstudio_rom_device::get_cart_base()
//
//------------------------------------------
-const device_type NES_KARAOKESTUDIO = device_creator<nes_karaokestudio_device>;
+DEFINE_DEVICE_TYPE(NES_KARAOKESTUDIO, nes_karaokestudio_device, "nes_karaoke", "NES Cart Bandai Karaoke Studio PCB")
nes_karaokestudio_device::nes_karaokestudio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_KARAOKESTUDIO, "NES Cart Bandai Karaoke Studio PCB", tag, owner, clock, "nes_karaoke", __FILE__), m_exp_active(0),
- m_subslot(*this, "exp_slot"),
- m_mic_ipt(*this, "MIC")
+ : nes_nrom_device(mconfig, NES_KARAOKESTUDIO, tag, owner, clock)
+ , m_exp_active(0)
+ , m_subslot(*this, "exp_slot")
+ , m_mic_ipt(*this, "MIC")
{
}
diff --git a/src/devices/bus/nes/karastudio.h b/src/devices/bus/nes/karastudio.h
index a4f8bcdb20e..148c1fd1be1 100644
--- a/src/devices/bus/nes/karastudio.h
+++ b/src/devices/bus/nes/karastudio.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_KARASTUDIO_H
-#define __NES_KARASTUDIO_H
+#ifndef MAME_BUS_NES_KARASTUDIO_H
+#define MAME_BUS_NES_KARASTUDIO_H
+
+#pragma once
#include "nxrom.h"
#include "softlist_dev.h"
@@ -19,7 +21,6 @@ class kstudio_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- kstudio_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~kstudio_cart_interface();
// reading and writing
@@ -29,6 +30,8 @@ public:
void write_prg_bank(uint8_t bank) { m_bank = bank; }
protected:
+ kstudio_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
// ROM is accessed via two 16K banks, but only the first one can be switched
@@ -37,18 +40,18 @@ protected:
// ======================> nes_kstudio_slot_device
+class nes_karaokestudio_device;
+
class nes_kstudio_slot_device : public device_t,
public device_image_interface,
public device_slot_interface
{
+ friend class nes_karaokestudio_device;
public:
// construction/destruction
nes_kstudio_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~nes_kstudio_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); }
@@ -68,11 +71,15 @@ public:
virtual DECLARE_READ8_MEMBER(read);
void write_prg_bank(uint8_t bank) { if (m_cart) m_cart->write_prg_bank(bank); }
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
kstudio_cart_interface* m_cart;
};
// device type definition
-extern const device_type NES_KSEXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(NES_KSEXPANSION_SLOT, nes_kstudio_slot_device)
#define MCFG_KSTUDIO_MINICART_ADD(_tag, _slot_intf) \
@@ -106,7 +113,7 @@ protected:
};
// device type definition
-extern const device_type NES_KSEXPANSION_ROM;
+DECLARE_DEVICE_TYPE(NES_KSEXPANSION_ROM, nes_kstudio_rom_device)
//-------------------------------------------
@@ -123,10 +130,9 @@ public:
// construction/destruction
nes_karaokestudio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual ioport_constructor device_input_ports() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
+
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
@@ -134,6 +140,9 @@ public:
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
int m_exp_active;
required_device<nes_kstudio_slot_device> m_subslot;
required_ioport m_mic_ipt;
@@ -141,6 +150,6 @@ protected:
// device type definition
-extern const device_type NES_KARAOKESTUDIO;
+DECLARE_DEVICE_TYPE(NES_KARAOKESTUDIO, nes_karaokestudio_device)
-#endif
+#endif // MAME_BUS_NES_KARASTUDIO_H
diff --git a/src/devices/bus/nes/konami.cpp b/src/devices/bus/nes/konami.cpp
index fd6de204003..c7c10097970 100644
--- a/src/devices/bus/nes/konami.cpp
+++ b/src/devices/bus/nes/konami.cpp
@@ -43,48 +43,46 @@
// constructor
//-------------------------------------------------
-const device_type NES_VRC1 = device_creator<nes_konami_vrc1_device>;
-const device_type NES_VRC2 = device_creator<nes_konami_vrc2_device>;
-const device_type NES_VRC3 = device_creator<nes_konami_vrc3_device>;
-const device_type NES_VRC4 = device_creator<nes_konami_vrc4_device>;
-const device_type NES_VRC6 = device_creator<nes_konami_vrc6_device>;
-const device_type NES_VRC7 = device_creator<nes_konami_vrc7_device>;
+DEFINE_DEVICE_TYPE(NES_VRC1, nes_konami_vrc1_device, "nes_vrc1", "NES Cart Konami VRC-1 PCB")
+DEFINE_DEVICE_TYPE(NES_VRC2, nes_konami_vrc2_device, "nes_vrc2", "NES Cart Konami VRC-2 PCB")
+DEFINE_DEVICE_TYPE(NES_VRC3, nes_konami_vrc3_device, "nes_vrc3", "NES Cart Konami VRC-3 PCB")
+DEFINE_DEVICE_TYPE(NES_VRC4, nes_konami_vrc4_device, "nes_vrc4", "NES Cart Konami VRC-4 PCB")
+DEFINE_DEVICE_TYPE(NES_VRC6, nes_konami_vrc6_device, "nes_vrc6", "NES Cart Konami VRC-6 PCB")
+DEFINE_DEVICE_TYPE(NES_VRC7, nes_konami_vrc7_device, "nes_vrc7", "NES Cart Konami VRC-7 PCB")
nes_konami_vrc1_device::nes_konami_vrc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_VRC1, "NES Cart Konami VRC-1 PCB", tag, owner, clock, "nes_vrc1", __FILE__)
+ : nes_nrom_device(mconfig, NES_VRC1, tag, owner, clock)
{
}
nes_konami_vrc2_device::nes_konami_vrc2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_VRC2, "NES Cart Konami VRC-2 PCB", tag, owner, clock, "nes_vrc2", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_VRC2, tag, owner, clock), m_latch(0)
+{
}
nes_konami_vrc3_device::nes_konami_vrc3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_VRC3, "NES Cart Konami VRC-3 PCB", tag, owner, clock, "nes_vrc3", __FILE__), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_enable_latch(0), m_irq_mode(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_VRC3, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_enable_latch(0), m_irq_mode(0), irq_timer(nullptr)
+{
}
-nes_konami_vrc4_device::nes_konami_vrc4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_latch(0), m_mmc_prg_bank(0), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_enable_latch(0), m_irq_mode(0), m_irq_prescale(0), irq_timer(nullptr)
- {
+nes_konami_vrc4_device::nes_konami_vrc4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_latch(0), m_mmc_prg_bank(0), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_enable_latch(0), m_irq_mode(0), m_irq_prescale(0), irq_timer(nullptr)
+{
}
nes_konami_vrc4_device::nes_konami_vrc4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_VRC4, "NES Cart Konami VRC-4 PCB", tag, owner, clock, "nes_vrc4", __FILE__), m_latch(0), m_mmc_prg_bank(0), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_enable_latch(0), m_irq_mode(0), m_irq_prescale(0), irq_timer(nullptr)
- {
+ : nes_konami_vrc4_device(mconfig, NES_VRC4, tag, owner, clock)
+{
}
nes_konami_vrc6_device::nes_konami_vrc6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_konami_vrc4_device(mconfig, NES_VRC6, "NES Cart Konami VRC-6 PCB", tag, owner, clock, "nes_vrc6", __FILE__),
- m_vrc6snd(*this, "vrc6snd")
+ : nes_konami_vrc4_device(mconfig, NES_VRC6, tag, owner, clock), m_vrc6snd(*this, "vrc6snd")
{
}
nes_konami_vrc7_device::nes_konami_vrc7_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_konami_vrc4_device(mconfig, NES_VRC7, "NES Cart Konami VRC-7 PCB", tag, owner, clock, "nes_vrc7", __FILE__),
- m_ym2413(*this, "ym")
+ : nes_konami_vrc4_device(mconfig, NES_VRC7, tag, owner, clock), m_ym2413(*this, "ym")
{
}
diff --git a/src/devices/bus/nes/konami.h b/src/devices/bus/nes/konami.h
index 11a6e943bb3..ce711ef2803 100644
--- a/src/devices/bus/nes/konami.h
+++ b/src/devices/bus/nes/konami.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_KONAMI_H
-#define __NES_KONAMI_H
+#ifndef MAME_BUS_NES_KONAMI_H
+#define MAME_BUS_NES_KONAMI_H
+
+#pragma once
#include "nxrom.h"
#include "sound/vrc6.h"
@@ -16,12 +18,14 @@ public:
// construction/destruction
nes_konami_vrc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_mmc_vrom_bank[2];
};
@@ -35,14 +39,16 @@ public:
// construction/destruction
nes_konami_vrc2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_mmc_vrom_bank[8];
uint8_t m_latch;
@@ -57,19 +63,22 @@ public:
// construction/destruction
nes_konami_vrc3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
+ static constexpr device_timer_id TIMER_IRQ = 0;
+
uint16_t m_irq_count, m_irq_count_latch;
int m_irq_enable, m_irq_enable_latch;
int m_irq_mode;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
};
@@ -80,17 +89,21 @@ class nes_konami_vrc4_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_konami_vrc4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_konami_vrc4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
protected:
+ static constexpr device_timer_id TIMER_IRQ = 0;
+
+ nes_konami_vrc4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
void set_prg();
uint8_t m_mmc_vrom_bank[8];
uint8_t m_latch, m_mmc_prg_bank;
@@ -101,7 +114,6 @@ protected:
int m_irq_mode;
int m_irq_prescale;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
};
@@ -114,11 +126,13 @@ public:
// construction/destruction
nes_konami_vrc6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
required_device<vrc6snd_device> m_vrc6snd;
};
@@ -131,25 +145,26 @@ public:
// construction/destruction
nes_konami_vrc7_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
required_device<ym2413_device> m_ym2413;
};
-
// device type definition
-extern const device_type NES_VRC1;
-extern const device_type NES_VRC2;
-extern const device_type NES_VRC3;
-extern const device_type NES_VRC4;
-extern const device_type NES_VRC6;
-extern const device_type NES_VRC7;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_VRC1, nes_konami_vrc1_device)
+DECLARE_DEVICE_TYPE(NES_VRC2, nes_konami_vrc2_device)
+DECLARE_DEVICE_TYPE(NES_VRC3, nes_konami_vrc3_device)
+DECLARE_DEVICE_TYPE(NES_VRC4, nes_konami_vrc4_device)
+DECLARE_DEVICE_TYPE(NES_VRC6, nes_konami_vrc6_device)
+DECLARE_DEVICE_TYPE(NES_VRC7, nes_konami_vrc7_device)
+
+#endif // MAME_BUS_NES_KONAMI_H
diff --git a/src/devices/bus/nes/legacy.cpp b/src/devices/bus/nes/legacy.cpp
index c5342004351..73528ede404 100644
--- a/src/devices/bus/nes/legacy.cpp
+++ b/src/devices/bus/nes/legacy.cpp
@@ -34,28 +34,28 @@
// constructor
//-------------------------------------------------
-const device_type NES_FFE3 = device_creator<nes_ffe3_device>;
-const device_type NES_FFE4 = device_creator<nes_ffe4_device>;
-const device_type NES_FFE8 = device_creator<nes_ffe8_device>;
+DEFINE_DEVICE_TYPE(NES_FFE3, nes_ffe3_device, "nes_ff3", "NES Cart FFE-3 PCB")
+DEFINE_DEVICE_TYPE(NES_FFE4, nes_ffe4_device, "nes_ff4", "NES Cart FFE-4 PCB")
+DEFINE_DEVICE_TYPE(NES_FFE8, nes_ffe8_device, "nes_ff8", "NES Cart FFE-8 PCB")
nes_ffe3_device::nes_ffe3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_FFE3, "NES Cart FFE-3 PCB", tag, owner, clock, "nes_ff3", __FILE__)
+ : nes_nrom_device(mconfig, NES_FFE3, tag, owner, clock)
{
}
-nes_ffe4_device::nes_ffe4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr), m_latch(0), m_exram_enabled(0), m_exram_bank(0)
- {
+nes_ffe4_device::nes_ffe4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr), m_latch(0), m_exram_enabled(0), m_exram_bank(0)
+{
}
nes_ffe4_device::nes_ffe4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_FFE4, "NES Cart FFE-4 PCB", tag, owner, clock, "nes_ff4", __FILE__), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr), m_latch(0), m_exram_enabled(0), m_exram_bank(0)
- {
+ : nes_ffe4_device(mconfig, NES_FFE4, tag, owner, clock)
+{
}
nes_ffe8_device::nes_ffe8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_ffe4_device(mconfig, NES_FFE8, "NES Cart FFE-8 PCB", tag, owner, clock, "nes_ff8", __FILE__)
+ : nes_ffe4_device(mconfig, NES_FFE8, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/legacy.h b/src/devices/bus/nes/legacy.h
index 396eec92b46..91b44e108c0 100644
--- a/src/devices/bus/nes/legacy.h
+++ b/src/devices/bus/nes/legacy.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_LEGACY_H
-#define __NES_LEGACY_H
+#ifndef MAME_BUS_NES_LEGACY_H
+#define MAME_BUS_NES_LEGACY_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_ffe3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -28,12 +32,8 @@ class nes_ffe4_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ffe4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_ffe4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual DECLARE_READ8_MEMBER(chr_r) override;
@@ -42,10 +42,17 @@ public:
virtual void pcb_reset() override;
protected:
+ static constexpr device_timer_id TIMER_IRQ = 0;
+
+ nes_ffe4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
uint16_t m_irq_count;
int m_irq_enable;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
uint8_t m_latch;
@@ -71,11 +78,9 @@ public:
};
-
// device type definition
-extern const device_type NES_FFE3;
-extern const device_type NES_FFE4;
-extern const device_type NES_FFE8;
-
+DECLARE_DEVICE_TYPE(NES_FFE3, nes_ffe3_device)
+DECLARE_DEVICE_TYPE(NES_FFE4, nes_ffe4_device)
+DECLARE_DEVICE_TYPE(NES_FFE8, nes_ffe8_device)
-#endif
+#endif // MAME_BUS_NES_LEGACY_H
diff --git a/src/devices/bus/nes/mmc1.cpp b/src/devices/bus/nes/mmc1.cpp
index fe1680116af..d324c153782 100644
--- a/src/devices/bus/nes/mmc1.cpp
+++ b/src/devices/bus/nes/mmc1.cpp
@@ -32,35 +32,35 @@
// constructor
//-------------------------------------------------
-const device_type NES_SXROM = device_creator<nes_sxrom_device>;
-const device_type NES_SOROM = device_creator<nes_sorom_device>;
-const device_type NES_SXROM_A = device_creator<nes_sxrom_a_device>;
-const device_type NES_SOROM_A = device_creator<nes_sorom_a_device>;
+DEFINE_DEVICE_TYPE(NES_SXROM, nes_sxrom_device, "nes_sxrom", "NES Cart SxROM (MMC-1) PCB")
+DEFINE_DEVICE_TYPE(NES_SOROM, nes_sorom_device, "nes_sorom", "NES Cart SOROM (MMC-1) PCB")
+DEFINE_DEVICE_TYPE(NES_SXROM_A, nes_sxrom_a_device, "nes_sxrom_a", "NES Cart SxROM (MMC-1A) PCB")
+DEFINE_DEVICE_TYPE(NES_SOROM_A, nes_sorom_a_device, "nes_sorom_a", "NES Cart SOROM (MMC-1A) PCB")
-nes_sxrom_device::nes_sxrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_reg_write_enable(0), m_latch(0), m_count(0)
- {
+nes_sxrom_device::nes_sxrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_reg_write_enable(0), m_latch(0), m_count(0)
+{
}
nes_sxrom_device::nes_sxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SXROM, "NES Cart SxROM (MMC-1) PCB", tag, owner, clock, "nes_sxrom", __FILE__), m_reg_write_enable(0), m_latch(0), m_count(0)
- {
+ : nes_sxrom_device(mconfig, NES_SXROM, tag, owner, clock)
+{
}
nes_sorom_device::nes_sorom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sxrom_device(mconfig, NES_SOROM, "NES Cart SOROM (MMC-1) PCB", tag, owner, clock, "nes_sorom", __FILE__)
+ : nes_sxrom_device(mconfig, NES_SOROM, tag, owner, clock)
{
}
nes_sxrom_a_device::nes_sxrom_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sxrom_device(mconfig, NES_SXROM_A, "NES Cart SxROM (MMC-1A) PCB", tag, owner, clock, "nes_sxrom_a", __FILE__)
+ : nes_sxrom_device(mconfig, NES_SXROM_A, tag, owner, clock)
{
}
nes_sorom_a_device::nes_sorom_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sxrom_device(mconfig, NES_SOROM_A, "NES Cart SOROM (MMC-1A) PCB", tag, owner, clock, "nes_sorom_a", __FILE__)
+ : nes_sxrom_device(mconfig, NES_SOROM_A, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/mmc1.h b/src/devices/bus/nes/mmc1.h
index 8b30b6f0bbf..dd9ecccac75 100644
--- a/src/devices/bus/nes/mmc1.h
+++ b/src/devices/bus/nes/mmc1.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_MMC1_H
-#define __NES_MMC1_H
+#ifndef MAME_BUS_NES_MMC1_H
+#define MAME_BUS_NES_MMC1_H
+
+#pragma once
#include "nxrom.h"
@@ -12,20 +14,23 @@ class nes_sxrom_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_sxrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_sxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
- virtual void update_regs(int reg); // this is needed to simplify NES-EVENT pcb implementation, which handle differently some regs!
virtual void pcb_reset() override;
protected:
+ nes_sxrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
TIMER_CALLBACK_MEMBER(resync_callback);
+
+ virtual void update_regs(int reg); // this is needed to simplify NES-EVENT pcb implementation, which handle differently some regs!
virtual void set_prg();
virtual void set_chr();
@@ -70,13 +75,10 @@ public:
};
-
-
// device type definition
-extern const device_type NES_SXROM;
-extern const device_type NES_SOROM;
-extern const device_type NES_SXROM_A;
-extern const device_type NES_SOROM_A;
-
+DECLARE_DEVICE_TYPE(NES_SXROM, nes_sxrom_device)
+DECLARE_DEVICE_TYPE(NES_SOROM, nes_sorom_device)
+DECLARE_DEVICE_TYPE(NES_SXROM_A, nes_sxrom_a_device)
+DECLARE_DEVICE_TYPE(NES_SOROM_A, nes_sorom_a_device)
-#endif
+#endif // MAME_BUS_NES_MMC1_H
diff --git a/src/devices/bus/nes/mmc2.cpp b/src/devices/bus/nes/mmc2.cpp
index d1871483a68..1055ce98921 100644
--- a/src/devices/bus/nes/mmc2.cpp
+++ b/src/devices/bus/nes/mmc2.cpp
@@ -28,30 +28,27 @@
// constructor
//-------------------------------------------------
-const device_type NES_PXROM = device_creator<nes_pxrom_device>;
-const device_type NES_FXROM = device_creator<nes_fxrom_device>;
+DEFINE_DEVICE_TYPE(NES_PXROM, nes_pxrom_device, "nes_pxrom", "NES Cart PxROM (MMC-2) PCB")
+DEFINE_DEVICE_TYPE(NES_FXROM, nes_fxrom_device, "nes_fxrom", "NES Cart FxROM (MMC-2) PCB")
-nes_pxrom_device::nes_pxrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_latch1(0),
- m_latch2(0)
- {
+nes_pxrom_device::nes_pxrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_latch1(0), m_latch2(0)
+{
}
nes_pxrom_device::nes_pxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_PXROM, "NES Cart PxROM (MMC-2) PCB", tag, owner, clock, "nes_pxrom", __FILE__), m_latch1(0), m_latch2(0)
- {
+ : nes_pxrom_device(mconfig, NES_PXROM, tag, owner, clock)
+{
}
nes_fxrom_device::nes_fxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_pxrom_device(mconfig, NES_FXROM, "NES Cart FxROM (MMC-4) PCB", tag, owner, clock, "nes_fxrom", __FILE__)
+ : nes_pxrom_device(mconfig, NES_FXROM, tag, owner, clock)
{
}
-
void nes_pxrom_device::device_start()
{
common_start();
diff --git a/src/devices/bus/nes/mmc2.h b/src/devices/bus/nes/mmc2.h
index ecdf5e30ed0..cfd81aa87d3 100644
--- a/src/devices/bus/nes/mmc2.h
+++ b/src/devices/bus/nes/mmc2.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_MMC2_H
-#define __NES_MMC2_H
+#ifndef MAME_BUS_NES_MMC2_H
+#define MAME_BUS_NES_MMC2_H
+
+#pragma once
#include "nxrom.h"
@@ -12,11 +14,8 @@ class nes_pxrom_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_pxrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_pxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(pxrom_write);
virtual DECLARE_WRITE8_MEMBER(write_h) override { pxrom_write(space, offset, data, mem_mask); }
@@ -24,6 +23,11 @@ public:
virtual void pcb_reset() override;
protected:
+ nes_pxrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
uint8_t m_reg[4];
int m_latch1, m_latch2;
};
@@ -44,11 +48,8 @@ public:
};
-
-
-
// device type definition
-extern const device_type NES_PXROM;
-extern const device_type NES_FXROM;
+DECLARE_DEVICE_TYPE(NES_PXROM, nes_pxrom_device)
+DECLARE_DEVICE_TYPE(NES_FXROM, nes_fxrom_device)
-#endif
+#endif // MAME_BUS_NES_MMC2_H
diff --git a/src/devices/bus/nes/mmc3.cpp b/src/devices/bus/nes/mmc3.cpp
index 75aa036d39b..ecadb075c8e 100644
--- a/src/devices/bus/nes/mmc3.cpp
+++ b/src/devices/bus/nes/mmc3.cpp
@@ -29,7 +29,7 @@
#include "mmc3.h"
#include "cpu/m6502/m6502.h"
-#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access PPU_BOTTOM_VISIBLE_SCANLINE
+#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE
#include "screen.h"
@@ -46,48 +46,47 @@
// constructor
//-------------------------------------------------
-const device_type NES_TXROM = device_creator<nes_txrom_device>;
-const device_type NES_HKROM = device_creator<nes_hkrom_device>;
-const device_type NES_TXSROM = device_creator<nes_txsrom_device>;
-const device_type NES_TQROM = device_creator<nes_tqrom_device>;
-const device_type NES_QJ_PCB = device_creator<nes_qj_device>;
-const device_type NES_ZZ_PCB = device_creator<nes_zz_device>;
+DEFINE_DEVICE_TYPE(NES_TXROM, nes_txrom_device, "nes_txrom", "NES Cart TxROM (MMC-3) PCB")
+DEFINE_DEVICE_TYPE(NES_HKROM, nes_hkrom_device, "nes_hkrom", "NES Cart HKROM (MMC-6) PCB")
+DEFINE_DEVICE_TYPE(NES_TXSROM, nes_txsrom_device, "nes_txsrom", "NES Cart TxSROM PCB")
+DEFINE_DEVICE_TYPE(NES_TQROM, nes_tqrom_device, "nes_tqrom", "NES Cart TQROM PCB")
+DEFINE_DEVICE_TYPE(NES_QJ_PCB, nes_qj_device, "nes_qj", "NES Cart NES-QJ PCB")
+DEFINE_DEVICE_TYPE(NES_ZZ_PCB, nes_zz_device, "nes_zz", "NES Cart PAL-ZZ PCB")
-nes_txrom_device::nes_txrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_prg_base(0), m_prg_mask(0), m_chr_base(0), m_chr_mask(0),
- m_latch(0), m_wram_protect(0), m_alt_irq(0), m_irq_count(0), m_irq_count_latch(0), m_irq_clear(0), m_irq_enable(0)
- {
+nes_txrom_device::nes_txrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_prg_base(0), m_prg_mask(0), m_chr_base(0), m_chr_mask(0)
+ , m_latch(0), m_wram_protect(0), m_alt_irq(0), m_irq_count(0), m_irq_count_latch(0), m_irq_clear(0), m_irq_enable(0)
+{
}
nes_txrom_device::nes_txrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TXROM, "NES Cart TxROM (MMC-3) PCB", tag, owner, clock, "nes_txrom", __FILE__), m_prg_base(0), m_prg_mask(0), m_chr_base(0), m_chr_mask(0),
- m_latch(0), m_wram_protect(0), m_alt_irq(0), m_irq_count(0), m_irq_count_latch(0), m_irq_clear(0), m_irq_enable(0)
- {
+ : nes_txrom_device(mconfig, NES_TXROM, tag, owner, clock)
+{
}
nes_hkrom_device::nes_hkrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_HKROM, "NES Cart HKROM (MMC-6) PCB", tag, owner, clock, "nes_hkrom", __FILE__), m_wram_enable(0), m_mmc6_reg(0)
- {
+ : nes_txrom_device(mconfig, NES_HKROM, tag, owner, clock), m_wram_enable(0), m_mmc6_reg(0)
+{
}
nes_txsrom_device::nes_txsrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_TXSROM, "NES Cart TxSROM PCB", tag, owner, clock, "nes_txsrom", __FILE__)
+ : nes_txrom_device(mconfig, NES_TXSROM, tag, owner, clock)
{
}
nes_tqrom_device::nes_tqrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_TQROM, "NES Cart TQROM PCB", tag, owner, clock, "nes_tqrom", __FILE__)
+ : nes_txrom_device(mconfig, NES_TQROM, tag, owner, clock)
{
}
nes_qj_device::nes_qj_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_QJ_PCB, "NES Cart NES-QJ PCB", tag, owner, clock, "nes_qj", __FILE__)
+ : nes_txrom_device(mconfig, NES_QJ_PCB, tag, owner, clock)
{
}
nes_zz_device::nes_zz_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_ZZ_PCB, "NES Cart PAL-ZZ PCB", tag, owner, clock, "nes_zz", __FILE__)
+ : nes_txrom_device(mconfig, NES_ZZ_PCB, tag, owner, clock)
{
}
@@ -192,7 +191,7 @@ void nes_zz_device::pcb_reset()
/* Here, IRQ counter decrements every scanline. */
void nes_txrom_device::hblank_irq(int scanline, int vblank, int blanked)
{
- if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE)
+ if (scanline < ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE)
{
int prior_count = m_irq_count;
if ((m_irq_count == 0) || m_irq_clear)
diff --git a/src/devices/bus/nes/mmc3.h b/src/devices/bus/nes/mmc3.h
index 17578b92adf..d16a0000268 100644
--- a/src/devices/bus/nes/mmc3.h
+++ b/src/devices/bus/nes/mmc3.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_MMC3_H
-#define __NES_MMC3_H
+#ifndef MAME_BUS_NES_MMC3_H
+#define MAME_BUS_NES_MMC3_H
+
+#pragma once
#include "nxrom.h"
@@ -12,11 +14,8 @@ class nes_txrom_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_txrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_txrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { mmc3_start(); }
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(txrom_write);
@@ -28,6 +27,11 @@ public:
virtual void pcb_reset() override;
protected:
+ nes_txrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { mmc3_start(); }
+
virtual void set_prg(int prg_base, int prg_mask);
virtual void set_chr(uint8_t chr, int chr_base, int chr_mask);
void mmc3_start();
@@ -58,8 +62,6 @@ public:
// construction/destruction
nes_hkrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
@@ -67,6 +69,9 @@ public:
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
int m_wram_enable;
uint8_t m_mmc6_reg;
@@ -133,14 +138,12 @@ public:
};
-
-
// device type definition
-extern const device_type NES_TXROM;
-extern const device_type NES_HKROM;
-extern const device_type NES_TXSROM;
-extern const device_type NES_TQROM;
-extern const device_type NES_QJ_PCB;
-extern const device_type NES_ZZ_PCB;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_TXROM, nes_txrom_device)
+DECLARE_DEVICE_TYPE(NES_HKROM, nes_hkrom_device)
+DECLARE_DEVICE_TYPE(NES_TXSROM, nes_txsrom_device)
+DECLARE_DEVICE_TYPE(NES_TQROM, nes_tqrom_device)
+DECLARE_DEVICE_TYPE(NES_QJ_PCB, nes_qj_device)
+DECLARE_DEVICE_TYPE(NES_ZZ_PCB, nes_zz_device)
+
+#endif // MAME_BUS_NES_MMC3_H
diff --git a/src/devices/bus/nes/mmc3_clones.cpp b/src/devices/bus/nes/mmc3_clones.cpp
index 1485e6411ce..5d776c5d86c 100644
--- a/src/devices/bus/nes/mmc3_clones.cpp
+++ b/src/devices/bus/nes/mmc3_clones.cpp
@@ -28,221 +28,221 @@
// constructor
//-------------------------------------------------
-const device_type NES_NITRA = device_creator<nes_nitra_device>;
-const device_type NES_KS7057 = device_creator<nes_ks7057_device>;
-const device_type NES_SBROS11 = device_creator<nes_sbros11_device>;
-const device_type NES_MALISB = device_creator<nes_malisb_device>;
-const device_type NES_FAMILY4646 = device_creator<nes_family4646_device>;
-const device_type NES_PIKAY2K = device_creator<nes_pikay2k_device>;
-const device_type NES_8237 = device_creator<nes_8237_device>;
-const device_type NES_SG_LIONK = device_creator<nes_sglionk_device>;
-const device_type NES_SG_BOOG = device_creator<nes_sgboog_device>;
-const device_type NES_KASING = device_creator<nes_kasing_device>;
-const device_type NES_KAY = device_creator<nes_kay_device>;
-const device_type NES_H2288 = device_creator<nes_h2288_device>;
-const device_type NES_6035052 = device_creator<nes_6035052_device>;
-const device_type NES_TXC_TW = device_creator<nes_txc_tw_device>;
-const device_type NES_KOF97 = device_creator<nes_kof97_device>;
-const device_type NES_KOF96 = device_creator<nes_kof96_device>;
-const device_type NES_SF3 = device_creator<nes_sf3_device>;
-const device_type NES_GOUDER = device_creator<nes_gouder_device>;
-const device_type NES_SA9602B = device_creator<nes_sa9602b_device>;
-const device_type NES_SACHEN_SHERO = device_creator<nes_sachen_shero_device>;
-//const device_type NES_A9746 = device_creator<nes_a9746_device>;
-
-const device_type NES_FK23C = device_creator<nes_fk23c_device>;
-const device_type NES_FK23CA = device_creator<nes_fk23ca_device>;
-const device_type NES_S24IN1SC03 = device_creator<nes_s24in1sc03_device>;
-const device_type NES_BMC_15IN1 = device_creator<nes_bmc_15in1_device>;
-const device_type NES_BMC_SBIG7 = device_creator<nes_bmc_sbig7_device>;
-const device_type NES_BMC_HIK8 = device_creator<nes_bmc_hik8_device>;
-const device_type NES_BMC_HIK4 = device_creator<nes_bmc_hik4_device>;
-const device_type NES_BMC_MARIO7IN1 = device_creator<nes_bmc_mario7in1_device>;
-const device_type NES_BMC_GOLD7IN1 = device_creator<nes_bmc_gold7in1_device>;
-const device_type NES_BMC_GC6IN1 = device_creator<nes_bmc_gc6in1_device>;
-const device_type NES_BMC_411120C = device_creator<nes_bmc_411120c_device>;
-const device_type NES_BMC_830118C = device_creator<nes_bmc_830118c_device>;
-const device_type NES_PJOY84 = device_creator<nes_pjoy84_device>;
-const device_type NES_COOLBOY = device_creator<nes_coolboy_device>;
+DEFINE_DEVICE_TYPE(NES_NITRA, nes_nitra_device, "nes_nitra", "NES Cart Nitra PCB")
+DEFINE_DEVICE_TYPE(NES_KS7057, nes_ks7057_device, "nes_ks7057", "NES Cart KS-7057 PCB")
+DEFINE_DEVICE_TYPE(NES_SBROS11, nes_sbros11_device, "nes_smb11", "NES Cart SMB 11 PCB")
+DEFINE_DEVICE_TYPE(NES_MALISB, nes_malisb_device, "nes_malisb", "NES Cart Mali Spash Bomb PCB")
+DEFINE_DEVICE_TYPE(NES_FAMILY4646, nes_family4646_device, "nes_family4646", "NES Cart BMC-FAMILY04646 PCB")
+DEFINE_DEVICE_TYPE(NES_PIKAY2K, nes_pikay2k_device, "nes_pikay2k", "NES Cart PIKACHU Y2K PCB")
+DEFINE_DEVICE_TYPE(NES_8237, nes_8237_device, "nes_8237", "NES Cart UNL-8237 PCB")
+DEFINE_DEVICE_TYPE(NES_SG_LIONK, nes_sglionk_device, "nes_sglionk", "NES Cart SuperGame Lion King PCB")
+DEFINE_DEVICE_TYPE(NES_SG_BOOG, nes_sgboog_device, "nes_sgbooger", "NES Cart SuperGame BoogerMan PCB")
+DEFINE_DEVICE_TYPE(NES_KASING, nes_kasing_device, "nes_kasing", "NES Cart Kasing PCB")
+DEFINE_DEVICE_TYPE(NES_KAY, nes_kay_device, "nes_kay", "NES Cart KAY PCB")
+DEFINE_DEVICE_TYPE(NES_H2288, nes_h2288_device, "nes_h2288", "NES Cart H-2288 PCB")
+DEFINE_DEVICE_TYPE(NES_6035052, nes_6035052_device, "nes_6035052", "NES Cart UNL-603-5052 PCB")
+DEFINE_DEVICE_TYPE(NES_TXC_TW, nes_txc_tw_device, "nes_txc_tw", "NES Cart TXC Thunder Warrior PCB")
+DEFINE_DEVICE_TYPE(NES_KOF97, nes_kof97_device, "nes_kof97", "NES Cart KoF 97 PCB")
+DEFINE_DEVICE_TYPE(NES_KOF96, nes_kof96_device, "nes_kof96", "NES Cart KoF 96 PCB")
+DEFINE_DEVICE_TYPE(NES_SF3, nes_sf3_device, "nes_sf3", "NES Cart Super Fighter III PCB")
+DEFINE_DEVICE_TYPE(NES_GOUDER, nes_gouder_device, "nes_gouder", "NES Cart Gouder PCB")
+DEFINE_DEVICE_TYPE(NES_SA9602B, nes_sa9602b_device, "nes_sa9602b", "NES Cart SA-9602B PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_SHERO, nes_sachen_shero_device, "nes_shero", "NES Cart Street Hero PCB")
+//DEFINE_DEVICE_TYPE(NES_A9746, nes_a9746_device, "nes_bmc_a9746", "NES Cart A-9746 PCB")
+
+DEFINE_DEVICE_TYPE(NES_FK23C, nes_fk23c_device, "nes_kf23c", "NES Cart KF23C PCB")
+DEFINE_DEVICE_TYPE(NES_FK23CA, nes_fk23ca_device, "nes_kf23ca", "NES Cart KF23CA PCB")
+DEFINE_DEVICE_TYPE(NES_S24IN1SC03, nes_s24in1sc03_device, "nes_s24in1c03", "NES Cart Super 24 in 1 SC-03 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_15IN1, nes_bmc_15in1_device, "nes_bmc_15in1", "NES Cart BMC 15 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_SBIG7, nes_bmc_sbig7_device, "nes_bmc_sbig7", "NES Cart BMC Super BIG 7 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_HIK8, nes_bmc_hik8_device, "nes_bmc_hik8", "NES Cart BMC HIK 8 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_HIK4, nes_bmc_hik4_device, "nes_bmc_hik4", "NES Cart BMC HIK 4 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_MARIO7IN1, nes_bmc_mario7in1_device, "nes_bmc_mario7in1", "NES Cart BMC Mario 7 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_GOLD7IN1, nes_bmc_gold7in1_device, "nes_bmc_gold7in1", "NES Cart BMC Golden 7 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_GC6IN1, nes_bmc_gc6in1_device, "nes_bmc_gc6in1", "NES Cart BMC Golden Card 6 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_411120C, nes_bmc_411120c_device, "nes_bmc_411120c", "NES Cart BMC 411120C PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_830118C, nes_bmc_830118c_device, "nes_bmc_830118c", "NES Cart BMC 830118C PCB")
+DEFINE_DEVICE_TYPE(NES_PJOY84, nes_pjoy84_device, "nes_pjoy84", "NES Cart Powerjoy 84 PCB")
+DEFINE_DEVICE_TYPE(NES_COOLBOY, nes_coolboy_device, "nes_coolboy", "NES Cart CoolBoy PCB")
nes_nitra_device::nes_nitra_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_NITRA, "NES Cart Nitra PCB", tag, owner, clock, "nes_nitra", __FILE__)
+ : nes_txrom_device(mconfig, NES_NITRA, tag, owner, clock)
{
}
nes_ks7057_device::nes_ks7057_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_KS7057, "NES Cart KS-7057 PCB", tag, owner, clock, "nes_ks7057", __FILE__)
+ : nes_txrom_device(mconfig, NES_KS7057, tag, owner, clock)
{
}
nes_sbros11_device::nes_sbros11_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_SBROS11, "NES Cart SMB 11 PCB", tag, owner, clock, "nes_smb11", __FILE__)
+ : nes_txrom_device(mconfig, NES_SBROS11, tag, owner, clock)
{
}
nes_malisb_device::nes_malisb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_MALISB, "NES Cart Mali Spash Bomb PCB", tag, owner, clock, "nes_malisb", __FILE__)
+ : nes_txrom_device(mconfig, NES_MALISB, tag, owner, clock)
{
}
nes_family4646_device::nes_family4646_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_FAMILY4646, "NES Cart BMC-FAMILY-4646 PCB", tag, owner, clock, "nes_family4646", __FILE__)
+ : nes_txrom_device(mconfig, NES_FAMILY4646, tag, owner, clock)
{
}
nes_pikay2k_device::nes_pikay2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_PIKAY2K, "NES Cart PIKACHU Y2K PCB", tag, owner, clock, "nes_pikay2k", __FILE__)
+ : nes_txrom_device(mconfig, NES_PIKAY2K, tag, owner, clock)
{
}
nes_8237_device::nes_8237_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_8237, "NES Cart UNL-8237 PCB", tag, owner, clock, "nes_8237", __FILE__), m_cd_enable(0)
- {
+ : nes_txrom_device(mconfig, NES_8237, tag, owner, clock), m_cd_enable(0)
+{
}
nes_sglionk_device::nes_sglionk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_SG_LIONK, "NES Cart SuperGame Lion King PCB", tag, owner, clock, "nes_sglionk", __FILE__), m_reg(0), m_reg_enabled(0)
- {
+ : nes_txrom_device(mconfig, NES_SG_LIONK, tag, owner, clock), m_reg(0), m_reg_enabled(0)
+{
}
nes_sgboog_device::nes_sgboog_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_SG_BOOG, "NES Cart SuperGame BoogerMan PCB", tag, owner, clock, "nes_sgbooger", __FILE__), m_mode(0)
- {
+ : nes_txrom_device(mconfig, NES_SG_BOOG, tag, owner, clock), m_mode(0)
+{
}
nes_kasing_device::nes_kasing_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_KASING, "NES Cart Kasing PCB", tag, owner, clock, "nes_kasing", __FILE__), m_reg(0)
- {
+ : nes_txrom_device(mconfig, NES_KASING, tag, owner, clock), m_reg(0)
+{
}
nes_kay_device::nes_kay_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_KAY, "NES Cart KAY PCB", tag, owner, clock, "nes_kay", __FILE__), m_low_reg(0)
- {
+ : nes_txrom_device(mconfig, NES_KAY, tag, owner, clock), m_low_reg(0)
+{
}
nes_h2288_device::nes_h2288_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_H2288, "NES Cart H-2288 PCB", tag, owner, clock, "nes_h2288", __FILE__)
+ : nes_txrom_device(mconfig, NES_H2288, tag, owner, clock)
{
}
nes_6035052_device::nes_6035052_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_6035052, "NES Cart UNL-603-5052 PCB", tag, owner, clock, "nes_6035052", __FILE__), m_prot(0)
- {
+ : nes_txrom_device(mconfig, NES_6035052, tag, owner, clock), m_prot(0)
+{
}
nes_txc_tw_device::nes_txc_tw_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_TXC_TW, "NES Cart TXC Thunder Warrior PCB", tag, owner, clock, "nes_txc_tw", __FILE__)
+ : nes_txrom_device(mconfig, NES_TXC_TW, tag, owner, clock)
{
}
nes_kof97_device::nes_kof97_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_KOF97, "NES Cart KOF 97 PCB", tag, owner, clock, "nes_kof97", __FILE__)
+ : nes_txrom_device(mconfig, NES_KOF97, tag, owner, clock)
{
}
nes_kof96_device::nes_kof96_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_KOF96, "NES Cart KOF 96 PCB", tag, owner, clock, "nes_kof96", __FILE__)
+ : nes_txrom_device(mconfig, NES_KOF96, tag, owner, clock)
{
}
nes_sf3_device::nes_sf3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_SF3, "NES Cart Super Fighter III PCB", tag, owner, clock, "nes_sf3", __FILE__)
+ : nes_txrom_device(mconfig, NES_SF3, tag, owner, clock)
{
}
nes_gouder_device::nes_gouder_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_GOUDER, "NES Cart Gouder PCB", tag, owner, clock, "nes_gouder", __FILE__)
+ : nes_txrom_device(mconfig, NES_GOUDER, tag, owner, clock)
{
}
nes_sa9602b_device::nes_sa9602b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_SA9602B, "NES Cart SA-9602B PCB", tag, owner, clock, "nes_sa9602b", __FILE__), m_reg(0), m_prg_chip(0)
- {
+ : nes_txrom_device(mconfig, NES_SA9602B, tag, owner, clock), m_reg(0), m_prg_chip(0)
+{
}
nes_sachen_shero_device::nes_sachen_shero_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_SACHEN_SHERO, "NES Cart Street Hero PCB", tag, owner, clock, "nes_shero", __FILE__), m_reg(0)
- {
+ : nes_txrom_device(mconfig, NES_SACHEN_SHERO, tag, owner, clock), m_reg(0)
+{
}
//nes_a9746_device::nes_a9746_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-// : nes_txrom_device(mconfig, NES_A9746, "NES Cart A-9746 PCB", tag, owner, clock, "nes_bmc_a9746", __FILE__)
+// : nes_txrom_device(mconfig, NES_A9746, tag, owner, clock)
//{
//}
-nes_fk23c_device::nes_fk23c_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_txrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_mmc_cmd1(0)
- {
+nes_fk23c_device::nes_fk23c_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_txrom_device(mconfig, type, tag, owner, clock), m_mmc_cmd1(0)
+{
}
nes_fk23c_device::nes_fk23c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_FK23C, "NES Cart FK23C PCB", tag, owner, clock, "nes_fk23c", __FILE__), m_mmc_cmd1(0)
- {
+ : nes_fk23c_device(mconfig, NES_FK23C, tag, owner, clock)
+{
}
nes_fk23ca_device::nes_fk23ca_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_fk23c_device(mconfig, NES_FK23CA, "NES Cart FK23CA PCB", tag, owner, clock, "nes_fk23ca", __FILE__)
+ : nes_fk23c_device(mconfig, NES_FK23CA, tag, owner, clock)
{
}
nes_s24in1sc03_device::nes_s24in1sc03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_S24IN1SC03, "NES Cart Super 24 in 1 SC-03 PCB", tag, owner, clock, "nes_s24in1c03", __FILE__)
+ : nes_txrom_device(mconfig, NES_S24IN1SC03, tag, owner, clock)
{
}
nes_bmc_15in1_device::nes_bmc_15in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_BMC_15IN1, "NES Cart BMC 15 in 1 PCB", tag, owner, clock, "nes_bmc_15in1", __FILE__)
+ : nes_txrom_device(mconfig, NES_BMC_15IN1, tag, owner, clock)
{
}
nes_bmc_sbig7_device::nes_bmc_sbig7_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_BMC_SBIG7, "NES Cart BMC Super BIG 7 in 1 PCB", tag, owner, clock, "nes_bmc_sbit7", __FILE__)
+ : nes_txrom_device(mconfig, NES_BMC_SBIG7, tag, owner, clock)
{
}
nes_bmc_hik8_device::nes_bmc_hik8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_BMC_HIK8, "NES Cart BMC Super HIK 8 in 1 PCB", tag, owner, clock, "nes_bmc_hik8", __FILE__), m_count(0)
- {
+ : nes_txrom_device(mconfig, NES_BMC_HIK8, tag, owner, clock), m_count(0)
+{
}
nes_bmc_hik4_device::nes_bmc_hik4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_BMC_HIK4, "NES Cart BMC Super HIK 4 in 1 PCB", tag, owner, clock, "nes_bmc_hik4", __FILE__)
+ : nes_txrom_device(mconfig, NES_BMC_HIK4, tag, owner, clock)
{
}
nes_bmc_mario7in1_device::nes_bmc_mario7in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_BMC_MARIO7IN1, "NES Cart BMC Mario 7 in 1 PCB", tag, owner, clock, "nes_bmc_mario7in1", __FILE__), m_reg_written(0)
- {
+ : nes_txrom_device(mconfig, NES_BMC_MARIO7IN1, tag, owner, clock), m_reg_written(0)
+{
}
nes_bmc_gold7in1_device::nes_bmc_gold7in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_BMC_GOLD7IN1, "NES Cart BMC Golden 7 in 1 PCB", tag, owner, clock, "nes_bmc_gold7in1", __FILE__), m_reg_written(0)
- {
+ : nes_txrom_device(mconfig, NES_BMC_GOLD7IN1, tag, owner, clock), m_reg_written(0)
+{
}
nes_bmc_gc6in1_device::nes_bmc_gc6in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_BMC_GC6IN1, "NES Cart BMC Golden Card 6 in 1 PCB", tag, owner, clock, "nes_bmc_gc6in1", __FILE__)
+ : nes_txrom_device(mconfig, NES_BMC_GC6IN1, tag, owner, clock)
{
}
nes_bmc_411120c_device::nes_bmc_411120c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_BMC_411120C, "NES Cart BMC 411120C PCB", tag, owner, clock, "nes_bmc_411120c", __FILE__), m_reg(0)
- {
+ : nes_txrom_device(mconfig, NES_BMC_411120C, tag, owner, clock), m_reg(0)
+{
}
nes_bmc_830118c_device::nes_bmc_830118c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_BMC_830118C, "NES Cart BMC 830118C PCB", tag, owner, clock, "nes_bmc_830118c", __FILE__), m_reg(0)
- {
+ : nes_txrom_device(mconfig, NES_BMC_830118C, tag, owner, clock), m_reg(0)
+{
}
nes_pjoy84_device::nes_pjoy84_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_PJOY84, "NES Cart Powerjoy 84 PCB", tag, owner, clock, "nes_pjoy84", __FILE__)
+ : nes_txrom_device(mconfig, NES_PJOY84, tag, owner, clock)
{
}
nes_coolboy_device::nes_coolboy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_COOLBOY, "NES Cart CoolBoy PCB", tag, owner, clock, "nes_coolboy", __FILE__)
+ : nes_txrom_device(mconfig, NES_COOLBOY, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/mmc3_clones.h b/src/devices/bus/nes/mmc3_clones.h
index d8b6327d518..82f3daeb16b 100644
--- a/src/devices/bus/nes/mmc3_clones.h
+++ b/src/devices/bus/nes/mmc3_clones.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_MMC3_CLONES_H
-#define __NES_MMC3_CLONES_H
+#ifndef MAME_BUS_NES_MMC3_CLONES_H
+#define MAME_BUS_NES_MMC3_CLONES_H
+
+#pragma once
#include "mmc3.h"
@@ -83,14 +85,16 @@ public:
// construction/destruction
nes_pikay2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[2];
};
@@ -127,13 +131,15 @@ public:
// construction/destruction
nes_sglionk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg;
int m_reg_enabled;
@@ -148,8 +154,6 @@ public:
// construction/destruction
nes_sgboog_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
@@ -158,6 +162,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
virtual void set_prg(int prg_base, int prg_mask) override;
uint8_t m_reg[3];
@@ -173,13 +181,15 @@ public:
// construction/destruction
nes_kasing_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void prg_cb(int start, int bank) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg;
};
@@ -193,8 +203,6 @@ public:
// construction/destruction
nes_kay_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
@@ -203,6 +211,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_regs();
uint8_t m_reg[8];
@@ -218,8 +230,6 @@ public:
// construction/destruction
nes_h2288_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
@@ -227,6 +237,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[2]; // reg 1 is unused?
};
@@ -240,8 +254,6 @@ public:
// construction/destruction
nes_6035052_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_ex) override;
virtual DECLARE_WRITE8_MEMBER(write_ex) override;
virtual DECLARE_READ8_MEMBER(read_l) override { return read_ex(space, offset, mem_mask); }
@@ -251,6 +263,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_prot;
};
@@ -292,8 +308,6 @@ public:
// construction/destruction
nes_kof96_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override; // offset does not really count for this mapper
@@ -302,6 +316,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[4];
};
@@ -331,14 +349,16 @@ public:
// construction/destruction
nes_gouder_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void prg_cb(int start, int bank) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[5];
};
@@ -352,13 +372,15 @@ public:
// construction/destruction
nes_sa9602b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void prg_cb(int start, int bank) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg;
int m_prg_chip;
@@ -373,14 +395,16 @@ public:
// construction/destruction
nes_sachen_shero_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void chr_cb(int start, int bank, int source) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg;
};
@@ -394,12 +418,14 @@ public:
// construction/destruction
nes_a9746_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset();
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_banks(uint8_t value);
uint8_t m_reg[3];
@@ -413,11 +439,8 @@ class nes_fk23c_device : public nes_txrom_device
{
public:
// construction/destruction
- nes_fk23c_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_fk23c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void prg_cb(int start, int bank) override;
@@ -426,6 +449,11 @@ public:
virtual void pcb_reset() override;
protected:
+ nes_fk23c_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
void fk23c_set_prg();
void fk23c_set_chr();
uint8_t m_reg[8];
@@ -453,14 +481,16 @@ public:
// construction/destruction
nes_s24in1sc03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void prg_cb(int start, int bank) override;
virtual void chr_cb(int start, int bank, int source) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[3];
};
@@ -504,12 +534,14 @@ public:
// construction/destruction
nes_bmc_hik8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[4];
uint8_t m_count;
@@ -539,12 +571,14 @@ public:
// construction/destruction
nes_bmc_mario7in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg_written;
};
@@ -558,12 +592,14 @@ public:
// construction/destruction
nes_bmc_gold7in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg_written;
};
@@ -577,8 +613,6 @@ public:
// construction/destruction
nes_bmc_gc6in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void prg_cb(int start, int bank) override;
@@ -586,6 +620,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[4];
};
@@ -599,14 +637,16 @@ public:
// construction/destruction
nes_bmc_411120c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void prg_cb(int start, int bank) override;
virtual void chr_cb(int start, int bank, int source) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg;
};
@@ -620,14 +660,16 @@ public:
// construction/destruction
nes_bmc_830118c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void prg_cb(int start, int bank) override;
virtual void chr_cb(int start, int bank, int source) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg;
};
@@ -641,14 +683,16 @@ public:
// construction/destruction
nes_pjoy84_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void prg_cb(int start, int bank) override;
virtual void chr_cb(int start, int bank, int source) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
inline void set_base_mask();
uint8_t m_reg[4];
@@ -663,57 +707,51 @@ public:
nes_coolboy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
-// virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void prg_cb(int start, int bank) override;
virtual void chr_cb(int start, int bank, int source) override;
-// virtual void pcb_reset() override;
-
private:
-// inline void set_base_mask();
uint8_t m_reg[4];
};
-
-
// device type definition
-extern const device_type NES_NITRA;
-extern const device_type NES_KS7057;
-extern const device_type NES_SBROS11;
-extern const device_type NES_MALISB;
-extern const device_type NES_FAMILY4646;
-extern const device_type NES_PIKAY2K;
-extern const device_type NES_8237;
-extern const device_type NES_SG_LIONK;
-extern const device_type NES_SG_BOOG;
-extern const device_type NES_KASING;
-extern const device_type NES_KAY;
-extern const device_type NES_H2288;
-extern const device_type NES_6035052;
-extern const device_type NES_TXC_TW;
-extern const device_type NES_KOF97;
-extern const device_type NES_KOF96;
-extern const device_type NES_SF3;
-extern const device_type NES_GOUDER;
-extern const device_type NES_SA9602B;
-extern const device_type NES_SACHEN_SHERO;
-extern const device_type NES_A9746;
-
-extern const device_type NES_FK23C;
-extern const device_type NES_FK23CA;
-extern const device_type NES_S24IN1SC03;
-extern const device_type NES_BMC_15IN1;
-extern const device_type NES_BMC_SBIG7;
-extern const device_type NES_BMC_HIK8;
-extern const device_type NES_BMC_HIK4;
-extern const device_type NES_BMC_MARIO7IN1;
-extern const device_type NES_BMC_GOLD7IN1;
-extern const device_type NES_BMC_GC6IN1;
-extern const device_type NES_BMC_411120C;
-extern const device_type NES_BMC_830118C;
-extern const device_type NES_PJOY84;
-extern const device_type NES_COOLBOY;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_NITRA, nes_nitra_device)
+DECLARE_DEVICE_TYPE(NES_KS7057, nes_ks7057_device)
+DECLARE_DEVICE_TYPE(NES_SBROS11, nes_sbros11_device)
+DECLARE_DEVICE_TYPE(NES_MALISB, nes_malisb_device)
+DECLARE_DEVICE_TYPE(NES_FAMILY4646, nes_family4646_device)
+DECLARE_DEVICE_TYPE(NES_PIKAY2K, nes_pikay2k_device)
+DECLARE_DEVICE_TYPE(NES_8237, nes_8237_device)
+DECLARE_DEVICE_TYPE(NES_SG_LIONK, nes_sglionk_device)
+DECLARE_DEVICE_TYPE(NES_SG_BOOG, nes_sgboog_device)
+DECLARE_DEVICE_TYPE(NES_KASING, nes_kasing_device)
+DECLARE_DEVICE_TYPE(NES_KAY, nes_kay_device)
+DECLARE_DEVICE_TYPE(NES_H2288, nes_h2288_device)
+DECLARE_DEVICE_TYPE(NES_6035052, nes_6035052_device)
+DECLARE_DEVICE_TYPE(NES_TXC_TW, nes_txc_tw_device)
+DECLARE_DEVICE_TYPE(NES_KOF97, nes_kof97_device)
+DECLARE_DEVICE_TYPE(NES_KOF96, nes_kof96_device)
+DECLARE_DEVICE_TYPE(NES_SF3, nes_sf3_device)
+DECLARE_DEVICE_TYPE(NES_GOUDER, nes_gouder_device)
+DECLARE_DEVICE_TYPE(NES_SA9602B, nes_sa9602b_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_SHERO, nes_sachen_shero_device)
+DECLARE_DEVICE_TYPE(NES_A9746, nes_a9746_device)
+
+DECLARE_DEVICE_TYPE(NES_FK23C, nes_fk23c_device)
+DECLARE_DEVICE_TYPE(NES_FK23CA, nes_fk23ca_device)
+DECLARE_DEVICE_TYPE(NES_S24IN1SC03, nes_s24in1sc03_device)
+DECLARE_DEVICE_TYPE(NES_BMC_15IN1, nes_bmc_15in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_SBIG7, nes_bmc_sbig7_device)
+DECLARE_DEVICE_TYPE(NES_BMC_HIK8, nes_bmc_hik8_device)
+DECLARE_DEVICE_TYPE(NES_BMC_HIK4, nes_bmc_hik4_device)
+DECLARE_DEVICE_TYPE(NES_BMC_MARIO7IN1, nes_bmc_mario7in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_GOLD7IN1, nes_bmc_gold7in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_GC6IN1, nes_bmc_gc6in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_411120C, nes_bmc_411120c_device)
+DECLARE_DEVICE_TYPE(NES_BMC_830118C, nes_bmc_830118c_device)
+DECLARE_DEVICE_TYPE(NES_PJOY84, nes_pjoy84_device)
+DECLARE_DEVICE_TYPE(NES_COOLBOY, nes_coolboy_device)
+
+#endif // MAME_BUS_NES_MMC3_CLONES_H
diff --git a/src/devices/bus/nes/mmc5.cpp b/src/devices/bus/nes/mmc5.cpp
index ff0f382626b..327220fdcc5 100644
--- a/src/devices/bus/nes/mmc5.cpp
+++ b/src/devices/bus/nes/mmc5.cpp
@@ -19,7 +19,7 @@
#include "mmc5.h"
#include "cpu/m6502/m6502.h"
-#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access PPU_BOTTOM_VISIBLE_SCANLINE
+#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE
#include "sound/nes_apu.h" // temp hack to pass the additional sound regs to APU...
@@ -41,15 +41,15 @@ static const int m_mmc5_attrib[4] = {0x00, 0x55, 0xaa, 0xff};
// constructor
//-------------------------------------------------
-const device_type NES_EXROM = device_creator<nes_exrom_device>;
+DEFINE_DEVICE_TYPE(NES_EXROM, nes_exrom_device, "nes_exrom", "NES Cart ExROM (MMC-5) PCB")
nes_exrom_device::nes_exrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_EXROM, "NES Cart ExROM (MMC-5) PCB", tag, owner, clock, "nes_exrom", __FILE__), m_irq_count(0),
- m_irq_status(0), m_irq_enable(0), m_mult1(0), m_mult2(0), m_mmc5_scanline(0), m_vrom_page_a(0), m_vrom_page_b(0), m_floodtile(0), m_floodattr(0),
- m_prg_mode(0), m_chr_mode(0), m_wram_protect_1(0), m_wram_protect_2(0), m_exram_control(0), m_wram_base(0), m_last_chr(0), m_ex1_chr(0),
- m_split_chr(0), m_ex1_bank(0), m_high_chr(0), m_split_scr(0), m_split_rev(0), m_split_ctrl(0), m_split_yst(0), m_split_bank(0), m_vcount(0)
- {
+ : nes_nrom_device(mconfig, NES_EXROM, tag, owner, clock), m_irq_count(0)
+ , m_irq_status(0), m_irq_enable(0), m_mult1(0), m_mult2(0), m_mmc5_scanline(0), m_vrom_page_a(0), m_vrom_page_b(0), m_floodtile(0), m_floodattr(0)
+ , m_prg_mode(0), m_chr_mode(0), m_wram_protect_1(0), m_wram_protect_2(0), m_exram_control(0), m_wram_base(0), m_last_chr(0), m_ex1_chr(0)
+ , m_split_chr(0), m_ex1_bank(0), m_high_chr(0), m_split_scr(0), m_split_rev(0), m_split_ctrl(0), m_split_yst(0), m_split_bank(0), m_vcount(0)
+{
}
@@ -245,7 +245,7 @@ void nes_exrom_device::hblank_irq(int scanline, int vblank, int blanked )
// "In Frame" flag
if (scanline == 0)
m_irq_status |= 0x40;
- else if (scanline > PPU_BOTTOM_VISIBLE_SCANLINE)
+ else if (scanline > ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE)
m_irq_status &= ~0x40;
}
diff --git a/src/devices/bus/nes/mmc5.h b/src/devices/bus/nes/mmc5.h
index 1ca0dd1cd88..d677b875771 100644
--- a/src/devices/bus/nes/mmc5.h
+++ b/src/devices/bus/nes/mmc5.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_MMC5_H
-#define __NES_MMC5_H
+#ifndef MAME_BUS_NES_MMC5_H
+#define MAME_BUS_NES_MMC5_H
+
+#pragma once
#include "nxrom.h"
@@ -14,8 +16,6 @@ public:
// construction/destruction
nes_exrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
@@ -31,6 +31,9 @@ public:
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
void set_mirror(int page, int src);
void update_prg();
@@ -86,8 +89,7 @@ protected:
};
-
// device type definition
-extern const device_type NES_EXROM;
+DECLARE_DEVICE_TYPE(NES_EXROM, nes_exrom_device)
-#endif
+#endif // MAME_BUS_NES_MMC5_H
diff --git a/src/devices/bus/nes/multigame.cpp b/src/devices/bus/nes/multigame.cpp
index 0f01641de1a..6971e68ac61 100644
--- a/src/devices/bus/nes/multigame.cpp
+++ b/src/devices/bus/nes/multigame.cpp
@@ -28,288 +28,288 @@
// constructor
//-------------------------------------------------
-const device_type NES_ACTION52 = device_creator<nes_action52_device>;
-const device_type NES_CALTRON6IN1 = device_creator<nes_caltron_device>;
-const device_type NES_RUMBLESTATION = device_creator<nes_rumblestat_device>;
-const device_type NES_SVISION16 = device_creator<nes_svision16_device>;
-const device_type NES_N625092 = device_creator<nes_n625092_device>;
-const device_type NES_A65AS = device_creator<nes_a65as_device>;
-const device_type NES_T262 = device_creator<nes_t262_device>;
-const device_type NES_NOVEL1 = device_creator<nes_novel1_device>;
-const device_type NES_NOVEL2 = device_creator<nes_novel2_device>;
-const device_type NES_STUDYNGAME = device_creator<nes_studyngame_device>;
-const device_type NES_SUPERGUN20IN1 = device_creator<nes_sgun20in1_device>;
-const device_type NES_VT5201 = device_creator<nes_vt5201_device>;
-const device_type NES_810544C = device_creator<nes_810544c_device>;
-const device_type NES_NTD03 = device_creator<nes_ntd03_device>;
-const device_type NES_BMC_GB63 = device_creator<nes_bmc_gb63_device>;
-const device_type NES_BMC_GKA = device_creator<nes_bmc_gka_device>;
-const device_type NES_BMC_GKB = device_creator<nes_bmc_gkb_device>;
-const device_type NES_BMC_WS = device_creator<nes_bmc_ws_device>;
-const device_type NES_BMC_11160 = device_creator<nes_bmc_11160_device>;
-const device_type NES_BMC_G146 = device_creator<nes_bmc_g146_device>;
-const device_type NES_BMC_8157 = device_creator<nes_bmc_8157_device>;
-const device_type NES_BMC_HIK300 = device_creator<nes_bmc_hik300_device>;
-const device_type NES_BMC_S700 = device_creator<nes_bmc_s700_device>;
-const device_type NES_BMC_BALL11 = device_creator<nes_bmc_ball11_device>;
-const device_type NES_BMC_22GAMES = device_creator<nes_bmc_22games_device>;
-const device_type NES_BMC_64Y2K = device_creator<nes_bmc_64y2k_device>;
-const device_type NES_BMC_12IN1 = device_creator<nes_bmc_12in1_device>;
-const device_type NES_BMC_20IN1 = device_creator<nes_bmc_20in1_device>;
-const device_type NES_BMC_21IN1 = device_creator<nes_bmc_21in1_device>;
-const device_type NES_BMC_31IN1 = device_creator<nes_bmc_31in1_device>;
-const device_type NES_BMC_35IN1 = device_creator<nes_bmc_35in1_device>;
-const device_type NES_BMC_36IN1 = device_creator<nes_bmc_36in1_device>;
-const device_type NES_BMC_64IN1 = device_creator<nes_bmc_64in1_device>;
-const device_type NES_BMC_70IN1 = device_creator<nes_bmc_70in1_device>;
-const device_type NES_BMC_72IN1 = device_creator<nes_bmc_72in1_device>;
-const device_type NES_BMC_76IN1 = device_creator<nes_bmc_76in1_device>;
-const device_type NES_BMC_110IN1 = device_creator<nes_bmc_110in1_device>;
-const device_type NES_BMC_150IN1 = device_creator<nes_bmc_150in1_device>;
-const device_type NES_BMC_190IN1 = device_creator<nes_bmc_190in1_device>;
-const device_type NES_BMC_800IN1 = device_creator<nes_bmc_800in1_device>;
-const device_type NES_BMC_1200IN1 = device_creator<nes_bmc_1200in1_device>;
-const device_type NES_BMC_GOLD150 = device_creator<nes_bmc_gold150_device>;
-const device_type NES_BMC_GOLD260 = device_creator<nes_bmc_gold260_device>;
-const device_type NES_BMC_CH001 = device_creator<nes_bmc_ch001_device>;
-const device_type NES_BMC_SUPER22 = device_creator<nes_bmc_super22_device>;
-const device_type NES_BMC_4IN1RESET = device_creator<nes_bmc_4in1reset_device>;
-const device_type NES_BMC_42IN1RESET = device_creator<nes_bmc_42in1reset_device>;
+DEFINE_DEVICE_TYPE(NES_ACTION52, nes_action52_device, "nes_action52", "NES Cart Action 52 PCB")
+DEFINE_DEVICE_TYPE(NES_CALTRON6IN1, nes_caltron_device, "nes_caltron", "NES Cart Caltron 6 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_RUMBLESTATION, nes_rumblestat_device, "nes_rumblestat", "NES Cart Rumblestation PCB")
+DEFINE_DEVICE_TYPE(NES_SVISION16, nes_svision16_device, "nes_svision16", "NES Cart Supervision 16 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_N625092, nes_n625092_device, "nes_n625092", "NES Cart N625092 PCB")
+DEFINE_DEVICE_TYPE(NES_A65AS, nes_a65as_device, "nes_a65as", "NES Cart A65AS PCB")
+DEFINE_DEVICE_TYPE(NES_T262, nes_t262_device, "nes_t262", "NES Cart T-262 PCB")
+DEFINE_DEVICE_TYPE(NES_NOVEL1, nes_novel1_device, "nes_novel1", "NES Cart Novel Diamond Type 1 PCB")
+DEFINE_DEVICE_TYPE(NES_NOVEL2, nes_novel2_device, "nes_novel2", "NES Cart Novel Diamond Type 2 PCB")
+DEFINE_DEVICE_TYPE(NES_STUDYNGAME, nes_studyngame_device, "nes_studyngame", "NES Cart Study n Game PCB")
+DEFINE_DEVICE_TYPE(NES_SUPERGUN20IN1, nes_sgun20in1_device, "nes_sgun20in1", "NES Cart Supergun 20 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_VT5201, nes_vt5201_device, "nes_vt5201", "NES Cart VT5201 PCB")
+DEFINE_DEVICE_TYPE(NES_810544C, nes_810544c_device, "nes_810544c", "NES Cart 810544-C-A1 PCB")
+DEFINE_DEVICE_TYPE(NES_NTD03, nes_ntd03_device, "nes_ntd03", "NES Cart NTD-03 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_GB63, nes_bmc_gb63_device, "nes_bmc_gb63", "NES Cart BMC Ghostbusters 63 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_GKA, nes_bmc_gka_device, "nes_bmc_gka", "NES Cart BMC GK-A PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_GKB, nes_bmc_gkb_device, "nes_bmc_gkb", "NES Cart BMC GK-B PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_WS, nes_bmc_ws_device, "nes_bmc_ws", "NES Cart BMC WS PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_11160, nes_bmc_11160_device, "nes_bmc_1160", "NES Cart BMC-1160 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_G146, nes_bmc_g146_device, "nes_bmc_g146", "NES Cart BMC-G-146 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_8157, nes_bmc_8157_device, "nes_bmc_8157", "NES Cart BMC-8157 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_HIK300, nes_bmc_hik300_device, "nes_bmc_hik300", "NES Cart BMC HIK 300 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_S700, nes_bmc_s700_device, "nes_bmc_s700", "NES Cart BMC Super 700 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_BALL11, nes_bmc_ball11_device, "nes_bmc_ball11", "NES Cart BMC Ball 11 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_22GAMES, nes_bmc_22games_device, "nes_bmc_22games", "NES Cart BMC 22 Games PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_64Y2K, nes_bmc_64y2k_device, "nes_bmc_64y2k", "NES Cart BMC 64 in 1 Y2K PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_12IN1, nes_bmc_12in1_device, "nes_bmc_12in1", "NES Cart BMC 12 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_20IN1, nes_bmc_20in1_device, "nes_bmc_20in1", "NES Cart BMC 20 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_21IN1, nes_bmc_21in1_device, "nes_bmc_21in1", "NES Cart BMC 21 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_31IN1, nes_bmc_31in1_device, "nes_bmc_31in1", "NES Cart BMC 31 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_35IN1, nes_bmc_35in1_device, "nes_bmc_35in1", "NES Cart BMC 35 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_36IN1, nes_bmc_36in1_device, "nes_bmc_36in1", "NES Cart BMC 36 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_64IN1, nes_bmc_64in1_device, "nes_bmc_64in1", "NES Cart BMC 64 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_70IN1, nes_bmc_70in1_device, "nes_bmc_70in1", "NES Cart BMC 70 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_72IN1, nes_bmc_72in1_device, "nes_bmc_72in1", "NES Cart BMC 72 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_76IN1, nes_bmc_76in1_device, "nes_bmc_76in1", "NES Cart BMC 76 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_110IN1, nes_bmc_110in1_device, "nes_bmc_110in1", "NES Cart BMC 110 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_150IN1, nes_bmc_150in1_device, "nes_bmc_150in1", "NES Cart BMC 150 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_190IN1, nes_bmc_190in1_device, "nes_bmc_190in1", "NES Cart BMC 190 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_800IN1, nes_bmc_800in1_device, "nes_bmc_800in1", "NES Cart BMC 800 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_1200IN1, nes_bmc_1200in1_device, "nes_bmc_1200in1", "NES Cart BMC 1200 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_GOLD150, nes_bmc_gold150_device, "nes_bmc_gold150", "NES Cart BMC Golden 150 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_GOLD260, nes_bmc_gold260_device, "nes_bmc_gold260", "NES Cart BMC Golden 260 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_CH001, nes_bmc_ch001_device, "nes_bmc_ch001", "NES Cart BMC CH-001 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_SUPER22, nes_bmc_super22_device, "nes_bmc_super22", "NES Cart BMC Super 22 Games PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_4IN1RESET, nes_bmc_4in1reset_device, "nes_bmc_4in1reset", "NES Cart BMC 4 in 1 (Reset Based) PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_42IN1RESET, nes_bmc_42in1reset_device, "nes_bmc_42in1reset", "NES Cart BMC 42 in 1 (Reset Based) PCB")
nes_action52_device::nes_action52_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_ACTION52, "NES Cart Action 52 PCB", tag, owner, clock, "nes_action52", __FILE__)
+ : nes_nrom_device(mconfig, NES_ACTION52, tag, owner, clock)
{
}
nes_caltron_device::nes_caltron_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_CALTRON6IN1, "NES Cart Caltron 6 in 1 PCB", tag, owner, clock, "nes_caltron", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_CALTRON6IN1, tag, owner, clock), m_latch(0)
+{
}
nes_rumblestat_device::nes_rumblestat_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_RUMBLESTATION, "NES Cart Rumblestation PCB", tag, owner, clock, "nes_rumblestat", __FILE__), m_prg(0), m_chr(0)
- {
+ : nes_nrom_device(mconfig, NES_RUMBLESTATION, tag, owner, clock), m_prg(0), m_chr(0)
+{
}
nes_svision16_device::nes_svision16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SVISION16, "NES Cart Supervision 16 in 1 PCB", tag, owner, clock, "nes_svision16", __FILE__), m_latch1(0), m_latch2(0)
- {
+ : nes_nrom_device(mconfig, NES_SVISION16, tag, owner, clock), m_latch1(0), m_latch2(0)
+{
}
nes_n625092_device::nes_n625092_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_N625092, "NES Cart N625092 PCB", tag, owner, clock, "nes_n625092", __FILE__), m_latch1(0), m_latch2(0)
- {
+ : nes_nrom_device(mconfig, NES_N625092, tag, owner, clock), m_latch1(0), m_latch2(0)
+{
}
nes_a65as_device::nes_a65as_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_A65AS, "NES Cart A65AS PCB", tag, owner, clock, "nes_a65as", __FILE__)
+ : nes_nrom_device(mconfig, NES_A65AS, tag, owner, clock)
{
}
nes_t262_device::nes_t262_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_T262, "NES Cart T-262 PCB", tag, owner, clock, "nes_t262", __FILE__), m_latch1(0), m_latch2(0)
- {
+ : nes_nrom_device(mconfig, NES_T262, tag, owner, clock), m_latch1(0), m_latch2(0)
+{
}
nes_novel1_device::nes_novel1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NOVEL1, "NES Cart Novel Diamond Type 1 PCB", tag, owner, clock, "nes_novel1", __FILE__)
+ : nes_nrom_device(mconfig, NES_NOVEL1, tag, owner, clock)
{
}
nes_novel2_device::nes_novel2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NOVEL2, "NES Cart Novel Diamond Type 2 PCB", tag, owner, clock, "nes_novel2", __FILE__)
+ : nes_nrom_device(mconfig, NES_NOVEL2, tag, owner, clock)
{
}
nes_studyngame_device::nes_studyngame_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_STUDYNGAME, "NES Cart Study n Game PCB", tag, owner, clock, "nes_studyngame", __FILE__)
+ : nes_nrom_device(mconfig, NES_STUDYNGAME, tag, owner, clock)
{
}
nes_sgun20in1_device::nes_sgun20in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SUPERGUN20IN1, "NES Cart Supergun 20 in 1 PCB", tag, owner, clock, "nes_sgun20in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_SUPERGUN20IN1, tag, owner, clock)
{
}
nes_vt5201_device::nes_vt5201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_VT5201, "NES Cart VT5201 PCB", tag, owner, clock, "nes_vt5201", __FILE__), m_latch(0), m_dipsetting(0)
- {
+ : nes_nrom_device(mconfig, NES_VT5201, tag, owner, clock), m_latch(0), m_dipsetting(0)
+{
}
nes_810544c_device::nes_810544c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_810544C, "NES Cart 810544-C-A1 PCB", tag, owner, clock, "nes_810544c", __FILE__)
+ : nes_nrom_device(mconfig, NES_810544C, tag, owner, clock)
{
}
nes_ntd03_device::nes_ntd03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NTD03, "NES Cart NTD-03 PCB", tag, owner, clock, "nes_ntd03", __FILE__)
+ : nes_nrom_device(mconfig, NES_NTD03, tag, owner, clock)
{
}
nes_bmc_gb63_device::nes_bmc_gb63_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_GB63, "NES Cart BMC Ghostbusters 63 in 1 PCB", tag, owner, clock, "nes_bmc_gb63", __FILE__), m_latch(0), m_dipsetting(0), m_vram_disable(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_GB63, tag, owner, clock), m_latch(0), m_dipsetting(0), m_vram_disable(0)
+{
}
nes_bmc_gka_device::nes_bmc_gka_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_GKA, "NES Cart BMC GK-A PCB", tag, owner, clock, "nes_bmc_gka", __FILE__), m_latch1(0), m_latch2(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_GKA, tag, owner, clock), m_latch1(0), m_latch2(0)
+{
}
nes_bmc_gkb_device::nes_bmc_gkb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_GKB, "NES Cart BMC GK-B PCB", tag, owner, clock, "nes_bmc_gkb", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_GKB, tag, owner, clock)
{
}
nes_bmc_ws_device::nes_bmc_ws_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_WS, "NES Cart BMC WS PCB", tag, owner, clock, "nes_bmc_ws", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_WS, tag, owner, clock), m_latch(0)
+{
}
nes_bmc_11160_device::nes_bmc_11160_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_11160, "NES Cart BMC-11160 PCB", tag, owner, clock, "nes_bmc_11160", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_11160, tag, owner, clock)
{
}
nes_bmc_g146_device::nes_bmc_g146_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_G146, "NES Cart BMC-G-146 PCB", tag, owner, clock, "nes_bmc_g146", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_G146, tag, owner, clock)
{
}
nes_bmc_8157_device::nes_bmc_8157_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_8157, "NES Cart BMC-8157 PCB", tag, owner, clock, "nes_bmc_8157", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_8157, tag, owner, clock)
{
}
nes_bmc_hik300_device::nes_bmc_hik300_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_HIK300, "NES Cart BMC HIK 300 in 1 PCB", tag, owner, clock, "nes_bmc_hik300", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_HIK300, tag, owner, clock)
{
}
nes_bmc_s700_device::nes_bmc_s700_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_S700, "NES Cart BMC Super 700 in 1 PCB", tag, owner, clock, "nes_bmc_s700", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_S700, tag, owner, clock)
{
}
nes_bmc_ball11_device::nes_bmc_ball11_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_BALL11, "NES Cart BMC Ball 11 in 1 PCB", tag, owner, clock, "nes_bmc_ball11", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_BALL11, tag, owner, clock)
{
}
nes_bmc_22games_device::nes_bmc_22games_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_22GAMES, "NES Cart BMC 22 Games PCB", tag, owner, clock, "nes_bmc_22games", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_22GAMES, tag, owner, clock)
{
}
nes_bmc_64y2k_device::nes_bmc_64y2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_64Y2K, "NES Cart BMC 64 in 1 Y2K PCB", tag, owner, clock, "nes_bmc_64y2k", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_64Y2K, tag, owner, clock)
{
}
nes_bmc_12in1_device::nes_bmc_12in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_12IN1, "NES Cart BMC 12 in 1 PCB", tag, owner, clock, "nes_bmc_12in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_12IN1, tag, owner, clock)
{
}
nes_bmc_20in1_device::nes_bmc_20in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_20IN1, "NES Cart BMC 20 in 1 PCB", tag, owner, clock, "nes_bmc_20in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_20IN1, tag, owner, clock)
{
}
nes_bmc_21in1_device::nes_bmc_21in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_21IN1, "NES Cart BMC 21 in 1 PCB", tag, owner, clock, "nes_bmc_21in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_21IN1, tag, owner, clock)
{
}
nes_bmc_31in1_device::nes_bmc_31in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_31IN1, "NES Cart BMC 31 in 1 PCB", tag, owner, clock, "nes_bmc_31in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_31IN1, tag, owner, clock)
{
}
nes_bmc_35in1_device::nes_bmc_35in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_35IN1, "NES Cart BMC 35 in 1 PCB", tag, owner, clock, "nes_bmc_35in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_35IN1, tag, owner, clock)
{
}
nes_bmc_36in1_device::nes_bmc_36in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_36IN1, "NES Cart BMC 36 in 1 PCB", tag, owner, clock, "nes_bmc_36in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_36IN1, tag, owner, clock)
{
}
nes_bmc_64in1_device::nes_bmc_64in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_64IN1, "NES Cart BMC 64 in 1 PCB", tag, owner, clock, "nes_bmc_64in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_64IN1, tag, owner, clock)
{
}
nes_bmc_70in1_device::nes_bmc_70in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_70IN1, "NES Cart BMC 70 in 1 PCB", tag, owner, clock, "nes_bmc_70in1", __FILE__), m_mode(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_70IN1, tag, owner, clock), m_mode(0)
+{
}
nes_bmc_72in1_device::nes_bmc_72in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_72IN1, "NES Cart BMC 72 in 1 PCB", tag, owner, clock, "nes_bmc_72in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_72IN1, tag, owner, clock)
{
}
nes_bmc_76in1_device::nes_bmc_76in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_76IN1, "NES Cart BMC 76 in 1 PCB", tag, owner, clock, "nes_bmc_76in1", __FILE__), m_latch1(0), m_latch2(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_76IN1, tag, owner, clock), m_latch1(0), m_latch2(0)
+{
}
nes_bmc_110in1_device::nes_bmc_110in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_110IN1, "NES Cart BMC 110 in 1 PCB", tag, owner, clock, "nes_bmc_110in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_110IN1, tag, owner, clock)
{
}
nes_bmc_150in1_device::nes_bmc_150in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_150IN1, "NES Cart BMC 150 in 1 PCB", tag, owner, clock, "nes_bmc_150in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_150IN1, tag, owner, clock)
{
}
nes_bmc_190in1_device::nes_bmc_190in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_190IN1, "NES Cart BMC 190 in 1 PCB", tag, owner, clock, "nes_bmc_190in1", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_190IN1, tag, owner, clock)
{
}
nes_bmc_800in1_device::nes_bmc_800in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_800IN1, "NES Cart BMC 800 in 1 PCB", tag, owner, clock, "nes_bmc_800in1", __FILE__), m_mode(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_800IN1, tag, owner, clock), m_mode(0)
+{
}
nes_bmc_1200in1_device::nes_bmc_1200in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_1200IN1, "NES Cart BMC 1200 in 1 PCB", tag, owner, clock, "nes_bmc_1200in1", __FILE__), m_vram_protect(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_1200IN1, tag, owner, clock), m_vram_protect(0)
+{
}
nes_bmc_gold150_device::nes_bmc_gold150_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_GOLD150, "NES Cart BMC Golden 150 in 1 PCB", tag, owner, clock, "nes_bmc_gold150", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_GOLD150, tag, owner, clock), m_latch(0)
+{
}
nes_bmc_gold260_device::nes_bmc_gold260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_GOLD260, "NES Cart BMC Golden 260 in 1 PCB", tag, owner, clock, "nes_bmc_gold260", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_GOLD260, tag, owner, clock)
{
}
nes_bmc_ch001_device::nes_bmc_ch001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_CH001, "NES Cart BMC CH-001 PCB", tag, owner, clock, "nes_bmc_ch001", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_CH001, tag, owner, clock), m_latch(0)
+{
}
nes_bmc_super22_device::nes_bmc_super22_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_SUPER22, "NES Cart BMC Super 22 Games PCB", tag, owner, clock, "nes_bmc_super22", __FILE__)
+ : nes_nrom_device(mconfig, NES_BMC_SUPER22, tag, owner, clock)
{
}
nes_bmc_4in1reset_device::nes_bmc_4in1reset_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_4IN1RESET, "NES Cart BMC 4 in 1 (Reset Based) PCB", tag, owner, clock, "nes_bmc_4in1reset", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_4IN1RESET, tag, owner, clock), m_latch(0)
+{
}
nes_bmc_42in1reset_device::nes_bmc_42in1reset_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BMC_42IN1RESET, "NES Cart BMC 42 in 1 (Reset Based) PCB", tag, owner, clock, "nes_bmc_42in1reset", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_BMC_42IN1RESET, tag, owner, clock), m_latch(0)
+{
}
diff --git a/src/devices/bus/nes/multigame.h b/src/devices/bus/nes/multigame.h
index 65c803910e8..e88ec21be58 100644
--- a/src/devices/bus/nes/multigame.h
+++ b/src/devices/bus/nes/multigame.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_MULTIGAME_H
-#define __NES_MULTIGAME_H
+#ifndef MAME_BUS_NES_MULTIGAME_H
+#define MAME_BUS_NES_MULTIGAME_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_action52_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -30,13 +34,15 @@ public:
// construction/destruction
nes_caltron_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -50,13 +56,15 @@ public:
// construction/destruction
nes_rumblestat_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_prg, m_chr;
};
@@ -70,14 +78,16 @@ public:
// construction/destruction
nes_svision16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_prg();
uint8_t m_latch1, m_latch2;
@@ -92,12 +102,14 @@ public:
// construction/destruction
nes_n625092_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void set_prg(uint8_t reg1, uint8_t reg2);
uint8_t m_latch1, m_latch2;
@@ -112,11 +124,13 @@ public:
// construction/destruction
nes_a65as_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -128,12 +142,14 @@ public:
// construction/destruction
nes_t262_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch1, m_latch2;
};
@@ -147,11 +163,13 @@ public:
// construction/destruction
nes_novel1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -163,11 +181,13 @@ public:
// construction/destruction
nes_novel2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -179,11 +199,13 @@ public:
// construction/destruction
nes_studyngame_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -195,11 +217,13 @@ public:
// construction/destruction
nes_sgun20in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -211,13 +235,15 @@ public:
// construction/destruction
nes_vt5201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch, m_dipsetting;
};
@@ -231,11 +257,13 @@ public:
// construction/destruction
nes_810544c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -247,11 +275,13 @@ public:
// construction/destruction
nes_ntd03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -263,14 +293,16 @@ public:
// construction/destruction
nes_bmc_gb63_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual DECLARE_WRITE8_MEMBER(chr_w) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_banks();
uint8_t m_latch, m_dipsetting;
@@ -286,12 +318,14 @@ public:
// construction/destruction
nes_bmc_gka_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch1, m_latch2;
};
@@ -305,11 +339,13 @@ public:
// construction/destruction
nes_bmc_gkb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -321,12 +357,14 @@ public:
// construction/destruction
nes_bmc_ws_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -340,11 +378,13 @@ public:
// construction/destruction
nes_bmc_11160_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -356,11 +396,13 @@ public:
// construction/destruction
nes_bmc_g146_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -372,12 +414,14 @@ public:
// construction/destruction
nes_bmc_8157_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -389,11 +433,13 @@ public:
// construction/destruction
nes_bmc_hik300_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -405,11 +451,13 @@ public:
// construction/destruction
nes_bmc_s700_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -421,13 +469,15 @@ public:
// construction/destruction
nes_bmc_ball11_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void set_banks();
uint8_t m_reg[2];
@@ -442,11 +492,13 @@ public:
// construction/destruction
nes_bmc_22games_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -458,13 +510,15 @@ public:
// construction/destruction
nes_bmc_64y2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void set_prg();
uint8_t m_reg[4];
@@ -479,12 +533,14 @@ public:
// construction/destruction
nes_bmc_12in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_banks();
uint8_t m_reg[3];
@@ -499,11 +555,13 @@ public:
// construction/destruction
nes_bmc_20in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -515,11 +573,13 @@ public:
// construction/destruction
nes_bmc_21in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -531,11 +591,13 @@ public:
// construction/destruction
nes_bmc_31in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -547,11 +609,13 @@ public:
// construction/destruction
nes_bmc_35in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -563,11 +627,13 @@ public:
// construction/destruction
nes_bmc_36in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -579,11 +645,13 @@ public:
// construction/destruction
nes_bmc_64in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -595,13 +663,15 @@ public:
// construction/destruction
nes_bmc_70in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_mode;
uint8_t m_reg[2];
@@ -616,11 +686,13 @@ public:
// construction/destruction
nes_bmc_72in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -632,12 +704,14 @@ public:
// construction/destruction
nes_bmc_76in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch1, m_latch2;
};
@@ -651,11 +725,13 @@ public:
// construction/destruction
nes_bmc_110in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -667,11 +743,13 @@ public:
// construction/destruction
nes_bmc_150in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -683,11 +761,13 @@ public:
// construction/destruction
nes_bmc_190in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -699,13 +779,15 @@ public:
// construction/destruction
nes_bmc_800in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_mode;
uint8_t m_reg[2];
@@ -720,13 +802,15 @@ public:
// construction/destruction
nes_bmc_1200in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual DECLARE_WRITE8_MEMBER(chr_w) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_vram_protect;
};
@@ -740,13 +824,15 @@ public:
// construction/destruction
nes_bmc_gold150_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -760,11 +846,13 @@ public:
// construction/destruction
nes_bmc_gold260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -776,13 +864,15 @@ public:
// construction/destruction
nes_bmc_ch001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -796,11 +886,13 @@ public:
// construction/destruction
nes_bmc_super22_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -812,9 +904,11 @@ public:
// construction/destruction
nes_bmc_4in1reset_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual void pcb_reset() override;
+
+protected:
// device-level overrides
virtual void device_start() override;
- virtual void pcb_reset() override;
private:
int m_latch;
@@ -828,67 +922,67 @@ public:
// construction/destruction
nes_bmc_42in1reset_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
int m_latch;
uint8_t m_reg[2];
};
-
// device type definition
-extern const device_type NES_ACTION52;
-extern const device_type NES_CALTRON6IN1;
-extern const device_type NES_RUMBLESTATION;
-extern const device_type NES_SVISION16;
-extern const device_type NES_N625092;
-extern const device_type NES_A65AS;
-extern const device_type NES_T262;
-extern const device_type NES_NOVEL1;
-extern const device_type NES_NOVEL2;
-extern const device_type NES_STUDYNGAME;
-extern const device_type NES_SUPERGUN20IN1;
-extern const device_type NES_VT5201;
-extern const device_type NES_810544C;
-extern const device_type NES_NTD03;
-extern const device_type NES_BMC_GB63;
-extern const device_type NES_BMC_GKA;
-extern const device_type NES_BMC_GKB;
-extern const device_type NES_BMC_WS;
-extern const device_type NES_BMC_11160;
-extern const device_type NES_BMC_G146;
-extern const device_type NES_BMC_8157;
-extern const device_type NES_BMC_HIK300;
-extern const device_type NES_BMC_S700;
-extern const device_type NES_BMC_BALL11;
-extern const device_type NES_BMC_22GAMES;
-extern const device_type NES_BMC_64Y2K;
-extern const device_type NES_BMC_12IN1;
-extern const device_type NES_BMC_20IN1;
-extern const device_type NES_BMC_21IN1;
-extern const device_type NES_BMC_31IN1;
-extern const device_type NES_BMC_35IN1;
-extern const device_type NES_BMC_36IN1;
-extern const device_type NES_BMC_64IN1;
-extern const device_type NES_BMC_70IN1;
-extern const device_type NES_BMC_72IN1;
-extern const device_type NES_BMC_76IN1;
-extern const device_type NES_BMC_110IN1;
-extern const device_type NES_BMC_150IN1;
-extern const device_type NES_BMC_190IN1;
-extern const device_type NES_BMC_800IN1;
-extern const device_type NES_BMC_1200IN1;
-extern const device_type NES_BMC_GOLD150;
-extern const device_type NES_BMC_GOLD260;
-extern const device_type NES_BMC_CH001;
-extern const device_type NES_BMC_SUPER22;
-extern const device_type NES_BMC_4IN1RESET;
-extern const device_type NES_BMC_42IN1RESET;
-
-
-#endif
+DECLARE_DEVICE_TYPE(NES_ACTION52, nes_action52_device)
+DECLARE_DEVICE_TYPE(NES_CALTRON6IN1, nes_caltron_device)
+DECLARE_DEVICE_TYPE(NES_RUMBLESTATION, nes_rumblestat_device)
+DECLARE_DEVICE_TYPE(NES_SVISION16, nes_svision16_device)
+DECLARE_DEVICE_TYPE(NES_N625092, nes_n625092_device)
+DECLARE_DEVICE_TYPE(NES_A65AS, nes_a65as_device)
+DECLARE_DEVICE_TYPE(NES_T262, nes_t262_device)
+DECLARE_DEVICE_TYPE(NES_NOVEL1, nes_novel1_device)
+DECLARE_DEVICE_TYPE(NES_NOVEL2, nes_novel2_device)
+DECLARE_DEVICE_TYPE(NES_STUDYNGAME, nes_studyngame_device)
+DECLARE_DEVICE_TYPE(NES_SUPERGUN20IN1, nes_sgun20in1_device)
+DECLARE_DEVICE_TYPE(NES_VT5201, nes_vt5201_device)
+DECLARE_DEVICE_TYPE(NES_810544C, nes_810544c_device)
+DECLARE_DEVICE_TYPE(NES_NTD03, nes_ntd03_device)
+DECLARE_DEVICE_TYPE(NES_BMC_GB63, nes_bmc_gb63_device)
+DECLARE_DEVICE_TYPE(NES_BMC_GKA, nes_bmc_gka_device)
+DECLARE_DEVICE_TYPE(NES_BMC_GKB, nes_bmc_gkb_device)
+DECLARE_DEVICE_TYPE(NES_BMC_WS, nes_bmc_ws_device)
+DECLARE_DEVICE_TYPE(NES_BMC_11160, nes_bmc_11160_device)
+DECLARE_DEVICE_TYPE(NES_BMC_G146, nes_bmc_g146_device)
+DECLARE_DEVICE_TYPE(NES_BMC_8157, nes_bmc_8157_device)
+DECLARE_DEVICE_TYPE(NES_BMC_HIK300, nes_bmc_hik300_device)
+DECLARE_DEVICE_TYPE(NES_BMC_S700, nes_bmc_s700_device)
+DECLARE_DEVICE_TYPE(NES_BMC_BALL11, nes_bmc_ball11_device)
+DECLARE_DEVICE_TYPE(NES_BMC_22GAMES, nes_bmc_22games_device)
+DECLARE_DEVICE_TYPE(NES_BMC_64Y2K, nes_bmc_64y2k_device)
+DECLARE_DEVICE_TYPE(NES_BMC_12IN1, nes_bmc_12in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_20IN1, nes_bmc_20in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_21IN1, nes_bmc_21in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_31IN1, nes_bmc_31in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_35IN1, nes_bmc_35in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_36IN1, nes_bmc_36in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_64IN1, nes_bmc_64in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_70IN1, nes_bmc_70in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_72IN1, nes_bmc_72in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_76IN1, nes_bmc_76in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_110IN1, nes_bmc_110in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_150IN1, nes_bmc_150in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_190IN1, nes_bmc_190in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_800IN1, nes_bmc_800in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_1200IN1, nes_bmc_1200in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_GOLD150, nes_bmc_gold150_device)
+DECLARE_DEVICE_TYPE(NES_BMC_GOLD260, nes_bmc_gold260_device)
+DECLARE_DEVICE_TYPE(NES_BMC_CH001, nes_bmc_ch001_device)
+DECLARE_DEVICE_TYPE(NES_BMC_SUPER22, nes_bmc_super22_device)
+DECLARE_DEVICE_TYPE(NES_BMC_4IN1RESET, nes_bmc_4in1reset_device)
+DECLARE_DEVICE_TYPE(NES_BMC_42IN1RESET, nes_bmc_42in1reset_device)
+
+#endif // MAME_BUS_NES_MULTIGAME_H
diff --git a/src/devices/bus/nes/namcot.cpp b/src/devices/bus/nes/namcot.cpp
index edb1eff11e5..59778cbbaea 100644
--- a/src/devices/bus/nes/namcot.cpp
+++ b/src/devices/bus/nes/namcot.cpp
@@ -41,52 +41,52 @@
// constructor
//-------------------------------------------------
-const device_type NES_NAMCOT3433 = device_creator<nes_namcot3433_device>;
-const device_type NES_NAMCOT3446 = device_creator<nes_namcot3446_device>;
-const device_type NES_NAMCOT3425 = device_creator<nes_namcot3425_device>;
-const device_type NES_NAMCOT175 = device_creator<nes_namcot175_device>;
-const device_type NES_NAMCOT340 = device_creator<nes_namcot340_device>;
-const device_type NES_NAMCOT163 = device_creator<nes_namcot163_device>;
+DEFINE_DEVICE_TYPE(NES_NAMCOT3433, nes_namcot3433_device, "nes_namcot3433", "NES Cart Namcot 3433 & 3443 / DxROM PCB")
+DEFINE_DEVICE_TYPE(NES_NAMCOT3446, nes_namcot3446_device, "nes_namcot3446", "NES Cart Namcot 3446 PCB")
+DEFINE_DEVICE_TYPE(NES_NAMCOT3425, nes_namcot3425_device, "nes_namcot3425", "NES Cart Namcot 3425 PCB")
+DEFINE_DEVICE_TYPE(NES_NAMCOT340, nes_namcot340_device, "nes_namcot340", "NES Cart Namcot 340 PCB")
+DEFINE_DEVICE_TYPE(NES_NAMCOT175, nes_namcot175_device, "nes_namcot175", "NES Cart Namcot 175 PCB")
+DEFINE_DEVICE_TYPE(NES_NAMCOT163, nes_namcot163_device, "nes_namcot163", "NES Cart Namcot 163 PCB")
-nes_namcot3433_device::nes_namcot3433_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_latch(0)
- {
+nes_namcot3433_device::nes_namcot3433_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_latch(0)
+{
}
nes_namcot3433_device::nes_namcot3433_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NAMCOT3433, "NES Cart Namcot 3433 & 3443 / DxROM PCB", tag, owner, clock, "nes_namcot3433", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_NAMCOT3433, tag, owner, clock), m_latch(0)
+{
}
nes_namcot3446_device::nes_namcot3446_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NAMCOT3446, "NES Cart Namcot 3446 PCB", tag, owner, clock, "nes_namcot3446", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_NAMCOT3446, tag, owner, clock), m_latch(0)
+{
}
nes_namcot3425_device::nes_namcot3425_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NAMCOT3425, "NES Cart Namcot 3425 PCB", tag, owner, clock, "nes_namcot3425", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_NAMCOT3425, tag, owner, clock), m_latch(0)
+{
}
-nes_namcot340_device::nes_namcot340_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+nes_namcot340_device::nes_namcot340_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
nes_namcot340_device::nes_namcot340_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NAMCOT340, "NES Cart Namcot 340 PCB", tag, owner, clock, "nes_namcot340", __FILE__), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_namcot340_device(mconfig, NES_NAMCOT340, tag, owner, clock)
+{
}
nes_namcot175_device::nes_namcot175_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_namcot340_device(mconfig, NES_NAMCOT175, "NES Cart Namcot 175 PCB", tag, owner, clock, "nes_namcot175", __FILE__), m_wram_protect(0)
- {
+ : nes_namcot340_device(mconfig, NES_NAMCOT175, tag, owner, clock), m_wram_protect(0)
+{
}
nes_namcot163_device::nes_namcot163_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_namcot340_device(mconfig, NES_NAMCOT163, "NES Cart Namcot 163 PCB", tag, owner, clock, "nes_namcot163", __FILE__), m_wram_protect(0), m_latch(0), m_chr_bank(0)
- {
+ : nes_namcot340_device(mconfig, NES_NAMCOT163, tag, owner, clock), m_wram_protect(0), m_latch(0), m_chr_bank(0)
+{
}
diff --git a/src/devices/bus/nes/namcot.h b/src/devices/bus/nes/namcot.h
index bb65a0c8953..a4ab64084e1 100644
--- a/src/devices/bus/nes/namcot.h
+++ b/src/devices/bus/nes/namcot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_NAMCOT_H
-#define __NES_NAMCOT_H
+#ifndef MAME_BUS_NES_NAMCOT_H
+#define MAME_BUS_NES_NAMCOT_H
+
+#pragma once
#include "nxrom.h"
@@ -12,16 +14,19 @@ class nes_namcot3433_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_namcot3433_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_namcot3433_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(dxrom_write);
virtual DECLARE_WRITE8_MEMBER(write_h) override { dxrom_write(space, offset, data, mem_mask); }
virtual void pcb_reset() override;
+protected:
+ nes_namcot3433_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -35,12 +40,14 @@ public:
// construction/destruction
nes_namcot3446_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -54,12 +61,14 @@ public:
// construction/destruction
nes_namcot3425_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
uint8_t m_reg[4];
@@ -72,12 +81,8 @@ class nes_namcot340_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_namcot340_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_namcot340_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(n340_loread);
virtual DECLARE_WRITE8_MEMBER(n340_lowrite);
virtual DECLARE_WRITE8_MEMBER(n340_hiwrite);
@@ -88,10 +93,17 @@ public:
virtual void pcb_reset() override;
protected:
+ static constexpr device_timer_id TIMER_IRQ = 0;
+
+ nes_namcot340_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
uint16_t m_irq_count;
int m_irq_enable;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
// Namcot-163 chip contains 8K of internal ram, possibly battery backed up (not emulated yet)
@@ -129,8 +141,6 @@ public:
// construction/destruction
nes_namcot163_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
@@ -143,6 +153,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void set_mirror(uint8_t page, uint8_t data);
@@ -151,13 +165,12 @@ private:
};
-
// device type definition
-extern const device_type NES_NAMCOT3433;
-extern const device_type NES_NAMCOT3446;
-extern const device_type NES_NAMCOT3425;
-extern const device_type NES_NAMCOT175;
-extern const device_type NES_NAMCOT340;
-extern const device_type NES_NAMCOT163;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_NAMCOT3433, nes_namcot3433_device)
+DECLARE_DEVICE_TYPE(NES_NAMCOT3446, nes_namcot3446_device)
+DECLARE_DEVICE_TYPE(NES_NAMCOT3425, nes_namcot3425_device)
+DECLARE_DEVICE_TYPE(NES_NAMCOT340, nes_namcot340_device)
+DECLARE_DEVICE_TYPE(NES_NAMCOT175, nes_namcot175_device)
+DECLARE_DEVICE_TYPE(NES_NAMCOT163, nes_namcot163_device)
+
+#endif // MAME_BUS_NES_NAMCOT_H
diff --git a/src/devices/bus/nes/nanjing.cpp b/src/devices/bus/nes/nanjing.cpp
index 8acc871f81c..77a699f7a7c 100644
--- a/src/devices/bus/nes/nanjing.cpp
+++ b/src/devices/bus/nes/nanjing.cpp
@@ -30,15 +30,15 @@
// constructor
//-------------------------------------------------
-const device_type NES_NANJING = device_creator<nes_nanjing_device>;
+DEFINE_DEVICE_TYPE(NES_NANJING, nes_nanjing_device, "nes_nanjing", "NES Cart Nanjing PCB")
nes_nanjing_device::nes_nanjing_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NANJING, "NES Cart Nanjing PCB", tag, owner, clock, "nes_nanjing", __FILE__),
- m_count(0),
- m_latch1(0),
- m_latch2(0)
- {
+ : nes_nrom_device(mconfig, NES_NANJING, tag, owner, clock)
+ , m_count(0)
+ , m_latch1(0)
+ , m_latch2(0)
+{
}
diff --git a/src/devices/bus/nes/nanjing.h b/src/devices/bus/nes/nanjing.h
index c7f886ba107..f7a7d508f5f 100644
--- a/src/devices/bus/nes/nanjing.h
+++ b/src/devices/bus/nes/nanjing.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_NANJING_H
-#define __NES_NANJING_H
+#ifndef MAME_BUS_NES_NANJING_H
+#define MAME_BUS_NES_NANJING_H
+
+#pragma once
#include "nxrom.h"
@@ -14,14 +16,16 @@ public:
// construction/destruction
nes_nanjing_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_count;
uint8_t m_reg[2];
@@ -29,10 +33,7 @@ private:
};
-
-
-
// device type definition
-extern const device_type NES_NANJING;
+DECLARE_DEVICE_TYPE(NES_NANJING, nes_nanjing_device)
-#endif
+#endif // MAME_BUS_NES_NANJING_H
diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp
index 95cce71afaf..a2434621b4c 100644
--- a/src/devices/bus/nes/nes_carts.cpp
+++ b/src/devices/bus/nes/nes_carts.cpp
@@ -9,6 +9,61 @@
#include "emu.h"
#include "nes_carts.h"
+// official PCBs
+#include "nxrom.h"
+#include "mmc1.h"
+#include "mmc2.h"
+#include "mmc3.h"
+#include "mmc5.h"
+#include "bandai.h"
+#include "datach.h"
+#include "discrete.h"
+#include "disksys.h"
+#include "event.h"
+#include "irem.h"
+#include "jaleco.h"
+#include "karastudio.h"
+#include "konami.h"
+#include "namcot.h"
+#include "pt554.h"
+#include "sunsoft.h"
+#include "sunsoft_dcs.h"
+#include "taito.h"
+// unlicensed/bootleg/pirate PCBs
+#include "2a03pur.h"
+#include "act53.h"
+#include "aladdin.h"
+#include "ave.h"
+#include "benshieng.h"
+#include "camerica.h"
+#include "cne.h"
+#include "cony.h"
+#include "ggenie.h"
+#include "hes.h"
+#include "henggedianzi.h"
+#include "hosenkan.h"
+#include "jy.h"
+#include "kaiser.h"
+#include "legacy.h"
+#include "nanjing.h"
+#include "ntdec.h"
+#include "racermate.h"
+#include "rcm.h"
+#include "rexsoft.h"
+#include "sachen.h"
+#include "somari.h"
+#include "subor.h"
+#include "tengen.h"
+#include "txc.h"
+#include "waixing.h"
+#include "zemina.h"
+// misc unlicensed/bootleg/pirate PCBs
+#include "bootleg.h"
+#include "multigame.h"
+#include "pirate.h"
+#include "mmc3_clones.h"
+
+
SLOT_INTERFACE_START(nes_cart)
// HROM, NROM, RROM, SROM & STROM
SLOT_INTERFACE_INTERNAL("nrom", NES_NROM)
diff --git a/src/devices/bus/nes/nes_carts.h b/src/devices/bus/nes/nes_carts.h
index 85bc4b429fb..421a5b12386 100644
--- a/src/devices/bus/nes/nes_carts.h
+++ b/src/devices/bus/nes/nes_carts.h
@@ -6,69 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_CARTS_H__
-#define __NES_CARTS_H__
+#ifndef MAME_BUS_NES_NES_CARTS_H
+#define MAME_BUS_NES_NES_CARTS_H
-
-// official PCBs
-#include "nxrom.h"
-#include "mmc1.h"
-#include "mmc2.h"
-#include "mmc3.h"
-#include "mmc5.h"
-#include "bandai.h"
-#include "datach.h"
-#include "discrete.h"
-#include "disksys.h"
-#include "event.h"
-#include "irem.h"
-#include "jaleco.h"
-#include "karastudio.h"
-#include "konami.h"
-#include "namcot.h"
-#include "pt554.h"
-#include "sunsoft.h"
-#include "sunsoft_dcs.h"
-#include "taito.h"
-// unlicensed/bootleg/pirate PCBs
-#include "2a03pur.h"
-#include "act53.h"
-#include "aladdin.h"
-#include "ave.h"
-#include "benshieng.h"
-#include "camerica.h"
-#include "cne.h"
-#include "cony.h"
-#include "ggenie.h"
-#include "hes.h"
-#include "henggedianzi.h"
-#include "hosenkan.h"
-#include "jy.h"
-#include "kaiser.h"
-#include "legacy.h"
-#include "nanjing.h"
-#include "ntdec.h"
-#include "racermate.h"
-#include "rcm.h"
-#include "rexsoft.h"
-#include "sachen.h"
-#include "somari.h"
-#include "subor.h"
-#include "tengen.h"
-#include "txc.h"
-#include "waixing.h"
-#include "zemina.h"
-// misc unlicensed/bootleg/pirate PCBs
-#include "bootleg.h"
-#include "multigame.h"
-#include "pirate.h"
-#include "mmc3_clones.h"
+#pragma once
// supported devices
SLOT_INTERFACE_EXTERN(nes_cart);
SLOT_INTERFACE_EXTERN(disksys_only);
-#endif // __NES_CARTS_H__
+#endif // MAME_BUS_NES_NES_CARTS_H
diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp
index 530287142e7..b8f99355faa 100644
--- a/src/devices/bus/nes/nes_slot.cpp
+++ b/src/devices/bus/nes/nes_slot.cpp
@@ -93,7 +93,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NES_CART_SLOT = device_creator<nes_cart_slot_device>;
+DEFINE_DEVICE_TYPE(NES_CART_SLOT, nes_cart_slot_device, "nes_cart_slot", "NES Cartridge Slot")
//**************************************************************************
@@ -105,31 +105,32 @@ const device_type NES_CART_SLOT = device_creator<nes_cart_slot_device>;
//-------------------------------------------------
device_nes_cart_interface::device_nes_cart_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_prg(nullptr),
- m_vrom(nullptr),
- m_ciram(nullptr),
- m_prg_size(0),
- m_vrom_size(0), m_maincpu(nullptr),
- m_mapper_sram(nullptr),
- m_mapper_sram_size(0),
- m_ce_mask(0),
- m_ce_state(0),
- m_vrc_ls_prg_a(0),
- m_vrc_ls_prg_b(0),
- m_vrc_ls_chr(0),
- m_mirroring(PPU_MIRROR_NONE),
- m_pcb_ctrl_mirror(false),
- m_four_screen_vram(false),
- m_has_trainer(false),
- m_x1_005_alt_mirroring(false),
- m_bus_conflict(true),
- m_open_bus(0),
- m_prg_chunks(0),
- m_prg_mask(0xffff),
- m_chr_source(CHRRAM),
- m_vrom_chunks(0),
- m_vram_chunks(0)
+ : device_slot_card_interface(mconfig, device)
+ , m_prg(nullptr)
+ , m_vrom(nullptr)
+ , m_ciram(nullptr)
+ , m_prg_size(0)
+ , m_vrom_size(0)
+ , m_maincpu(nullptr)
+ , m_mapper_sram(nullptr)
+ , m_mapper_sram_size(0)
+ , m_ce_mask(0)
+ , m_ce_state(0)
+ , m_vrc_ls_prg_a(0)
+ , m_vrc_ls_prg_b(0)
+ , m_vrc_ls_chr(0)
+ , m_mirroring(PPU_MIRROR_NONE)
+ , m_pcb_ctrl_mirror(false)
+ , m_four_screen_vram(false)
+ , m_has_trainer(false)
+ , m_x1_005_alt_mirroring(false)
+ , m_bus_conflict(true)
+ , m_open_bus(0)
+ , m_prg_chunks(0)
+ , m_prg_mask(0xffff)
+ , m_chr_source(CHRRAM)
+ , m_vrom_chunks(0)
+ , m_vram_chunks(0)
{
}
@@ -742,13 +743,14 @@ void device_nes_cart_interface::nes_banks_restore()
//-------------------------------------------------
// nes_cart_slot_device - constructor
//-------------------------------------------------
-nes_cart_slot_device::nes_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_CART_SLOT, "NES Cartridge Slot", tag, owner, clock, "nes_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_crc_hack(0), m_cart(nullptr),
- m_pcb_id(NO_BOARD),
- m_must_be_loaded(1)
+nes_cart_slot_device::nes_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NES_CART_SLOT, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
+ , device_slot_interface(mconfig, *this)
+ , m_crc_hack(0)
+ , m_cart(nullptr)
+ , m_pcb_id(NO_BOARD)
+ , m_must_be_loaded(1)
{
}
diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h
index b8829fd4768..82876ce15a5 100644
--- a/src/devices/bus/nes/nes_slot.h
+++ b/src/devices/bus/nes/nes_slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_SLOT_H__
-#define __NES_SLOT_H__
+#ifndef MAME_BUS_NES_NES_SLOT_H
+#define MAME_BUS_NES_NES_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -161,7 +163,6 @@ class device_nes_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_nes_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_nes_cart_interface();
// reading and writing
@@ -230,6 +231,7 @@ public:
uint8_t account_bus_conflict(uint32_t offset, uint8_t data);
protected:
+ device_nes_cart_interface(const machine_config &mconfig, device_t &device);
// internal state
uint8_t *m_prg;
@@ -396,15 +398,14 @@ public:
void set_must_be_loaded(bool _must_be_loaded) { m_must_be_loaded = _must_be_loaded; }
- //private:
-
+//private:
device_nes_cart_interface* m_cart;
int m_pcb_id;
bool m_must_be_loaded;
};
// device type definition
-extern const device_type NES_CART_SLOT;
+DECLARE_DEVICE_TYPE(NES_CART_SLOT, nes_cart_slot_device)
/***************************************************************************
@@ -429,4 +430,4 @@ extern const device_type NES_CART_SLOT;
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, true) \
MCFG_NES_CARTRIDGE_NOT_MANDATORY
-#endif
+#endif // MAME_BUS_NES_NES_SLOT_H
diff --git a/src/devices/bus/nes/ntdec.cpp b/src/devices/bus/nes/ntdec.cpp
index a2547a97185..5ea3458e8f3 100644
--- a/src/devices/bus/nes/ntdec.cpp
+++ b/src/devices/bus/nes/ntdec.cpp
@@ -34,18 +34,18 @@
// constructor
//-------------------------------------------------
-const device_type NES_NTDEC_ASDER = device_creator<nes_ntdec_asder_device>;
-const device_type NES_NTDEC_FH = device_creator<nes_ntdec_fh_device>;
+DEFINE_DEVICE_TYPE(NES_NTDEC_ASDER, nes_ntdec_asder_device, "nes_ntdec_asder", "NES Cart NTDEC Asder PCB")
+DEFINE_DEVICE_TYPE(NES_NTDEC_FH, nes_ntdec_fh_device, "nes_fh_asder", "NES Cart NTDEC Fighting Hero PCB")
nes_ntdec_asder_device::nes_ntdec_asder_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NTDEC_ASDER, "NES Cart NTDEC Asder PCB", tag, owner, clock, "nes_ntdec_asder", __FILE__),
- m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_NTDEC_ASDER, tag, owner, clock)
+ , m_latch(0)
+{
}
nes_ntdec_fh_device::nes_ntdec_fh_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NTDEC_FH, "NES Cart NTDEC Fighting Hero PCB", tag, owner, clock, "nes_ntdec_fh", __FILE__)
+ : nes_nrom_device(mconfig, NES_NTDEC_FH, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/ntdec.h b/src/devices/bus/nes/ntdec.h
index daa7ba8acdf..1e5e8ef6cbb 100644
--- a/src/devices/bus/nes/ntdec.h
+++ b/src/devices/bus/nes/ntdec.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_NTDEC_H
-#define __NES_NTDEC_H
+#ifndef MAME_BUS_NES_NTDEC_H
+#define MAME_BUS_NES_NTDEC_H
+
+#pragma once
#include "nxrom.h"
@@ -14,12 +16,14 @@ public:
// construction/destruction
nes_ntdec_asder_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -33,19 +37,18 @@ public:
// construction/destruction
nes_ntdec_fh_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
-};
-
-
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+};
// device type definition
-extern const device_type NES_NTDEC_ASDER;
-extern const device_type NES_NTDEC_FH;
+DECLARE_DEVICE_TYPE(NES_NTDEC_ASDER, nes_ntdec_asder_device)
+DECLARE_DEVICE_TYPE(NES_NTDEC_FH, nes_ntdec_fh_device)
-#endif
+#endif // MAME_BUS_NES_NTDEC_H
diff --git a/src/devices/bus/nes/nxrom.cpp b/src/devices/bus/nes/nxrom.cpp
index 6996fe50faa..e78fd6d1527 100644
--- a/src/devices/bus/nes/nxrom.cpp
+++ b/src/devices/bus/nes/nxrom.cpp
@@ -45,89 +45,87 @@
// constructor
//-------------------------------------------------
-const device_type NES_NROM = device_creator<nes_nrom_device>;
-const device_type NES_NROM368 = device_creator<nes_nrom368_device>;
-const device_type NES_FCBASIC = device_creator<nes_fcbasic_device>;
-const device_type NES_AXROM = device_creator<nes_axrom_device>;
-const device_type NES_BXROM = device_creator<nes_bxrom_device>;
-const device_type NES_CNROM = device_creator<nes_cnrom_device>;
-const device_type NES_CPROM = device_creator<nes_cprom_device>;
-const device_type NES_GXROM = device_creator<nes_gxrom_device>;
-const device_type NES_UXROM = device_creator<nes_uxrom_device>;
-const device_type NES_UXROM_CC = device_creator<nes_uxrom_cc_device>;
-const device_type NES_UN1ROM = device_creator<nes_un1rom_device>;
-const device_type NES_NOCHR = device_creator<nes_nochr_device>;
+DEFINE_DEVICE_TYPE(NES_NROM, nes_nrom_device, "nes_nrom", "NES Cart NROM PCB")
+DEFINE_DEVICE_TYPE(NES_NROM368, nes_nrom368_device, "nes_nrom368", "NES Cart NROM-368 PCB")
+DEFINE_DEVICE_TYPE(NES_FCBASIC, nes_fcbasic_device, "nes_fcbasic", "NES Cart Famicom BASIC PCB")
+DEFINE_DEVICE_TYPE(NES_AXROM, nes_axrom_device, "nes_axrom", "NES Cart AxROM PCB")
+DEFINE_DEVICE_TYPE(NES_BXROM, nes_bxrom_device, "nes_bxrom", "NES Cart BxROM PCB")
+DEFINE_DEVICE_TYPE(NES_CNROM, nes_cnrom_device, "nes_cnrom", "NES Cart CNROM PCB")
+DEFINE_DEVICE_TYPE(NES_CPROM, nes_cprom_device, "nes_cprom", "NES Cart CPROM PCB")
+DEFINE_DEVICE_TYPE(NES_GXROM, nes_gxrom_device, "nes_gxrom", "NES Cart GxROM PCB")
+DEFINE_DEVICE_TYPE(NES_UXROM, nes_uxrom_device, "nes_uxrom", "NES Cart UxROM PCB")
+DEFINE_DEVICE_TYPE(NES_UXROM_CC, nes_uxrom_cc_device, "nes_uxrom_cc", "NES Cart UNROM M5 (Crazy Climber) PCB")
+DEFINE_DEVICE_TYPE(NES_UN1ROM, nes_un1rom_device, "nes_un1rom", "NES Cart UN1ROM PCB")
+DEFINE_DEVICE_TYPE(NES_NOCHR, nes_nochr_device, "nes_nochr", "NES Cart NoCash NOCHR PCB")
-nes_nrom_device::nes_nrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_nes_cart_interface( mconfig, *this )
+nes_nrom_device::nes_nrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_nes_cart_interface(mconfig, *this)
{
}
nes_nrom_device::nes_nrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NES_NROM, "NES Cart NROM PCB", tag, owner, clock, "nes_nrom", __FILE__),
- device_nes_cart_interface( mconfig, *this )
+ : nes_nrom_device(mconfig, NES_NROM, tag, owner, clock)
{
}
nes_nrom368_device::nes_nrom368_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NROM368, "NES Cart NROM-368 PCB", tag, owner, clock, "nes_nrom368", __FILE__)
+ : nes_nrom_device(mconfig, NES_NROM368, tag, owner, clock)
{
}
nes_fcbasic_device::nes_fcbasic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_FCBASIC, "NES Cart Famicom BASIC PCB", tag, owner, clock, "nes_fcbasic", __FILE__)
+ : nes_nrom_device(mconfig, NES_FCBASIC, tag, owner, clock)
{
}
nes_axrom_device::nes_axrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_AXROM, "NES Cart AxROM PCB", tag, owner, clock, "nes_axrom", __FILE__)
+ : nes_nrom_device(mconfig, NES_AXROM, tag, owner, clock)
{
}
nes_bxrom_device::nes_bxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_BXROM, "NES Cart BxROM PCB", tag, owner, clock, "nes_bxrom", __FILE__)
+ : nes_nrom_device(mconfig, NES_BXROM, tag, owner, clock)
{
}
-nes_cnrom_device::nes_cnrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_chr_open_bus(0)
- {
+nes_cnrom_device::nes_cnrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_chr_open_bus(0)
+{
}
nes_cnrom_device::nes_cnrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_CNROM, "NES Cart CNROM PCB", tag, owner, clock, "nes_cnrom", __FILE__), m_chr_open_bus(0)
- {
+ : nes_cnrom_device(mconfig, NES_CNROM, tag, owner, clock)
+{
}
nes_cprom_device::nes_cprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_CPROM, "NES Cart CPROM PCB", tag, owner, clock, "nes_cprom", __FILE__)
+ : nes_nrom_device(mconfig, NES_CPROM, tag, owner, clock)
{
}
nes_gxrom_device::nes_gxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_GXROM, "NES Cart GxROM PCB", tag, owner, clock, "nes_gxrom", __FILE__)
+ : nes_nrom_device(mconfig, NES_GXROM, tag, owner, clock)
{
}
nes_uxrom_device::nes_uxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_UXROM, "NES Cart UxROM PCB", tag, owner, clock, "nes_uxrom", __FILE__)
+ : nes_nrom_device(mconfig, NES_UXROM, tag, owner, clock)
{
}
nes_uxrom_cc_device::nes_uxrom_cc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_UXROM_CC, "NES Cart UNROM M5 PCB (Crazy Climber)", tag, owner, clock, "nes_uxrom_cc", __FILE__)
+ : nes_nrom_device(mconfig, NES_UXROM_CC, tag, owner, clock)
{
}
nes_un1rom_device::nes_un1rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_UN1ROM, "NES Cart UN1ROM PCB", tag, owner, clock, "nes_un1rom", __FILE__)
+ : nes_nrom_device(mconfig, NES_UN1ROM, tag, owner, clock)
{
}
nes_nochr_device::nes_nochr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NOCHR, "NES Cart NoCash NOCHR PCB", tag, owner, clock, "nes_nochr", __FILE__)
+ : nes_nrom_device(mconfig, NES_NOCHR, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/nxrom.h b/src/devices/bus/nes/nxrom.h
index c4f112bb68e..721ed5b5e98 100644
--- a/src/devices/bus/nes/nxrom.h
+++ b/src/devices/bus/nes/nxrom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_MMCX_H
-#define __NES_MMCX_H
+#ifndef MAME_BUS_NES_NXROM_H
+#define MAME_BUS_NES_NXROM_H
+
+#pragma once
#include "nes_slot.h"
#include "sound/samples.h"
@@ -9,18 +11,19 @@
// ======================> nes_nrom_device
-class nes_nrom_device : public device_t,
- public device_nes_cart_interface
+class nes_nrom_device : public device_t, public device_nes_cart_interface
{
public:
// construction/destruction
- nes_nrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_nrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override { common_start(); }
-
virtual void pcb_reset() override;
+protected:
+ nes_nrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override { common_start(); }
+
void common_start();
};
@@ -59,11 +62,13 @@ public:
// construction/destruction
nes_axrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -75,11 +80,13 @@ public:
// construction/destruction
nes_bxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -89,16 +96,19 @@ class nes_cnrom_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_cnrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_cnrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(chr_r) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ nes_cnrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_chr_open_bus;
};
@@ -112,11 +122,13 @@ public:
// construction/destruction
nes_cprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -128,11 +140,13 @@ public:
// construction/destruction
nes_gxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -144,11 +158,13 @@ public:
// construction/destruction
nes_uxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -160,11 +176,13 @@ public:
// construction/destruction
nes_uxrom_cc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -176,11 +194,13 @@ public:
// construction/destruction
nes_un1rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -200,17 +220,17 @@ public:
// device type definition
-extern const device_type NES_NROM;
-extern const device_type NES_NROM368;
-extern const device_type NES_FCBASIC;
-extern const device_type NES_AXROM;
-extern const device_type NES_BXROM;
-extern const device_type NES_CNROM;
-extern const device_type NES_CPROM;
-extern const device_type NES_GXROM;
-extern const device_type NES_UXROM;
-extern const device_type NES_UXROM_CC;
-extern const device_type NES_UN1ROM;
-extern const device_type NES_NOCHR;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_NROM, nes_nrom_device)
+DECLARE_DEVICE_TYPE(NES_NROM368, nes_nrom368_device)
+DECLARE_DEVICE_TYPE(NES_FCBASIC, nes_fcbasic_device)
+DECLARE_DEVICE_TYPE(NES_AXROM, nes_axrom_device)
+DECLARE_DEVICE_TYPE(NES_BXROM, nes_bxrom_device)
+DECLARE_DEVICE_TYPE(NES_CNROM, nes_cnrom_device)
+DECLARE_DEVICE_TYPE(NES_CPROM, nes_cprom_device)
+DECLARE_DEVICE_TYPE(NES_GXROM, nes_gxrom_device)
+DECLARE_DEVICE_TYPE(NES_UXROM, nes_uxrom_device)
+DECLARE_DEVICE_TYPE(NES_UXROM_CC, nes_uxrom_cc_device)
+DECLARE_DEVICE_TYPE(NES_UN1ROM, nes_un1rom_device)
+DECLARE_DEVICE_TYPE(NES_NOCHR, nes_nochr_device)
+
+#endif // MAME_BUS_NES_NXROM_H
diff --git a/src/devices/bus/nes/pirate.cpp b/src/devices/bus/nes/pirate.cpp
index cded3deb09d..573b1d38ce7 100644
--- a/src/devices/bus/nes/pirate.cpp
+++ b/src/devices/bus/nes/pirate.cpp
@@ -18,7 +18,7 @@
#include "pirate.h"
#include "cpu/m6502/m6502.h"
-#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access PPU_BOTTOM_VISIBLE_SCANLINE
+#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE
#include "screen.h"
@@ -35,96 +35,96 @@
// constructor
//-------------------------------------------------
-const device_type NES_AGCI_50282 = device_creator<nes_agci_device>;
-const device_type NES_DREAMTECH01 = device_creator<nes_dreamtech_device>;
-const device_type NES_FUKUTAKE = device_creator<nes_fukutake_device>;
-const device_type NES_FUTUREMEDIA = device_creator<nes_futuremedia_device>;
-const device_type NES_MAGSERIES = device_creator<nes_magseries_device>;
-const device_type NES_DAOU306 = device_creator<nes_daou306_device>;
-const device_type NES_CC21 = device_creator<nes_cc21_device>;
-const device_type NES_XIAOZY = device_creator<nes_xiaozy_device>;
-const device_type NES_EDU2K = device_creator<nes_edu2k_device>;
-const device_type NES_T230 = device_creator<nes_t230_device>;
-const device_type NES_MK2 = device_creator<nes_mk2_device>;
-const device_type NES_WHERO = device_creator<nes_whero_device>;
-const device_type NES_43272 = device_creator<nes_43272_device>;
-const device_type NES_TF1201 = device_creator<nes_tf1201_device>;
-const device_type NES_CITYFIGHT = device_creator<nes_cityfight_device>;
+DEFINE_DEVICE_TYPE(NES_AGCI_50282, nes_agci_device, "nes_agci50282", "NES Cart AGCI 50282 PCB")
+DEFINE_DEVICE_TYPE(NES_DREAMTECH01, nes_dreamtech_device, "nes_dreamtech", "NES Cart Dreamtech01 PCB")
+DEFINE_DEVICE_TYPE(NES_FUKUTAKE, nes_fukutake_device, "nes_futuremedia", "NES Cart Fukutake Study Box PCB")
+DEFINE_DEVICE_TYPE(NES_FUTUREMEDIA, nes_futuremedia_device, "nes_fukutake", "NES Cart FutureMedia PCB")
+DEFINE_DEVICE_TYPE(NES_MAGSERIES, nes_magseries_device, "nes_magseries", "NES Cart Magical Series PCB")
+DEFINE_DEVICE_TYPE(NES_DAOU306, nes_daou306_device, "nes_daou306", "NES Cart Daou 306 PCB")
+DEFINE_DEVICE_TYPE(NES_CC21, nes_cc21_device, "nes_cc21", "NES Cart CC-21 PCB")
+DEFINE_DEVICE_TYPE(NES_XIAOZY, nes_xiaozy_device, "nes_xiaozy", "NES Cart Xiao Zhuan Yuan PCB")
+DEFINE_DEVICE_TYPE(NES_EDU2K, nes_edu2k_device, "nes_edu2k", "NES Cart Educational Computer 2000 PCB")
+DEFINE_DEVICE_TYPE(NES_T230, nes_t230_device, "nes_t230", "NES Cart T-230 PCB")
+DEFINE_DEVICE_TYPE(NES_MK2, nes_mk2_device, "nes_mk2", "NES Cart Mortal Kombat 2 PCB")
+DEFINE_DEVICE_TYPE(NES_WHERO, nes_whero_device, "nes_whero", "NES Cart World Heroes PCB")
+DEFINE_DEVICE_TYPE(NES_43272, nes_43272_device, "nes_43272", "NES Cart UNL-43272 PCB")
+DEFINE_DEVICE_TYPE(NES_TF1201, nes_tf1201_device, "nes_tf1201", "NES Cart UNL-TF1201 PCB")
+DEFINE_DEVICE_TYPE(NES_CITYFIGHT, nes_cityfight_device, "nes_cityfight", "NES Cart City Fighter PCB")
nes_agci_device::nes_agci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_AGCI_50282, "NES Cart AGCI 50282 PCB", tag, owner, clock, "nes_agci50282", __FILE__)
+ : nes_nrom_device(mconfig, NES_AGCI_50282, tag, owner, clock)
{
}
nes_dreamtech_device::nes_dreamtech_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_DREAMTECH01, "NES Cart Dreamtech01 PCB", tag, owner, clock, "nes_dreamtech", __FILE__)
+ : nes_nrom_device(mconfig, NES_DREAMTECH01, tag, owner, clock)
{
}
nes_fukutake_device::nes_fukutake_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_FUKUTAKE, "NES Cart Fukutake Study Box PCB", tag, owner, clock, "nes_fukutake", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_FUKUTAKE, tag, owner, clock), m_latch(0)
+{
}
nes_futuremedia_device::nes_futuremedia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_FUTUREMEDIA, "NES Cart FutureMedia PCB", tag, owner, clock, "nes_futuremedia", __FILE__), m_irq_count(0), m_irq_count_latch(0), m_irq_clear(0), m_irq_enable(0)
- {
+ : nes_nrom_device(mconfig, NES_FUTUREMEDIA, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_clear(0), m_irq_enable(0)
+{
}
nes_magseries_device::nes_magseries_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_MAGSERIES, "NES Cart Magical Series PCB", tag, owner, clock, "nes_magseries", __FILE__)
+ : nes_nrom_device(mconfig, NES_MAGSERIES, tag, owner, clock)
{
}
nes_daou306_device::nes_daou306_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_DAOU306, "NES Cart Daou 306 PCB", tag, owner, clock, "nes_daou306", __FILE__)
+ : nes_nrom_device(mconfig, NES_DAOU306, tag, owner, clock)
{
}
nes_cc21_device::nes_cc21_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_CC21, "NES Cart CC-21 PCB", tag, owner, clock, "nes_cc21", __FILE__)
+ : nes_nrom_device(mconfig, NES_CC21, tag, owner, clock)
{
}
nes_xiaozy_device::nes_xiaozy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_XIAOZY, "NES Cart Xiao Zhuan Yuan PCB", tag, owner, clock, "nes_xiaozy", __FILE__)
+ : nes_nrom_device(mconfig, NES_XIAOZY, tag, owner, clock)
{
}
nes_edu2k_device::nes_edu2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_EDU2K, "NES Cart Educational Computer 2000 PCB", tag, owner, clock, "nes_edu2k", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_EDU2K, tag, owner, clock)
+{
}
nes_t230_device::nes_t230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_T230, "NES Cart T-230 PCB", tag, owner, clock, "nes_t230", __FILE__), m_irq_count(0), m_irq_count_latch(0), m_irq_mode(0), m_irq_enable(0), m_irq_enable_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_T230, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_mode(0), m_irq_enable(0), m_irq_enable_latch(0)
+{
}
nes_mk2_device::nes_mk2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_MK2, "NES Cart Mortal Kombat 2 PCB", tag, owner, clock, "nes_mk2", __FILE__), m_irq_count(0), m_irq_count_latch(0), m_irq_clear(0), m_irq_enable(0)
- {
+ : nes_nrom_device(mconfig, NES_MK2, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_clear(0), m_irq_enable(0)
+{
}
nes_whero_device::nes_whero_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_WHERO, "NES Cart World Heroes PCB", tag, owner, clock, "nes_whero", __FILE__), m_reg(0), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_enable_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_WHERO, tag, owner, clock), m_reg(0), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_enable_latch(0)
+{
}
nes_43272_device::nes_43272_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_43272, "NES Cart UNL-43272 PCB", tag, owner, clock, "nes_43272", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_43272, tag, owner, clock), m_latch(0)
+{
}
nes_tf1201_device::nes_tf1201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TF1201, "NES Cart UNL-TF1201 PCB", tag, owner, clock, "nes_tf1201", __FILE__), m_prg(0), m_swap(0), m_irq_count(0), m_irq_enable(0), m_irq_enable_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_TF1201, tag, owner, clock), m_prg(0), m_swap(0), m_irq_count(0), m_irq_enable(0), m_irq_enable_latch(0)
+{
}
nes_cityfight_device::nes_cityfight_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_CITYFIGHT, "NES Cart City Fighter PCB", tag, owner, clock, "nes_cityfight", __FILE__), m_prg_reg(0), m_prg_mode(0), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_CITYFIGHT, tag, owner, clock), m_prg_reg(0), m_prg_mode(0), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr)
+{
}
@@ -530,7 +530,7 @@ READ8_MEMBER(nes_fukutake_device::read_m)
void nes_futuremedia_device::hblank_irq(int scanline, int vblank, int blanked)
{
- // if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE)
+ // if (scanline < ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE)
{
if (m_irq_enable && m_irq_count)
{
@@ -853,7 +853,7 @@ WRITE8_MEMBER(nes_t230_device::write_h)
// Same IRQ as MMC3
void nes_mk2_device::hblank_irq( int scanline, int vblank, int blanked )
{
- if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE)
+ if (scanline < ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE)
{
int prior_count = m_irq_count;
if ((m_irq_count == 0) || m_irq_clear)
diff --git a/src/devices/bus/nes/pirate.h b/src/devices/bus/nes/pirate.h
index b17ce1ada9d..91424d32e25 100644
--- a/src/devices/bus/nes/pirate.h
+++ b/src/devices/bus/nes/pirate.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_PIR_H
-#define __NES_PIR_H
+#ifndef MAME_BUS_NES_PIRATE_H
+#define MAME_BUS_NES_PIRATE_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_agci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -30,11 +34,13 @@ public:
// construction/destruction
nes_dreamtech_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -46,8 +52,6 @@ public:
// construction/destruction
nes_fukutake_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
@@ -55,6 +59,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
uint8_t m_ram[0xb00];
@@ -69,13 +77,15 @@ public:
// construction/destruction
nes_futuremedia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint16_t m_irq_count, m_irq_count_latch;
uint8_t m_irq_clear;
@@ -91,11 +101,13 @@ public:
// construction/destruction
nes_magseries_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -107,12 +119,14 @@ public:
// construction/destruction
nes_daou306_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[16];
};
@@ -126,11 +140,13 @@ public:
// construction/destruction
nes_cc21_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -142,11 +158,13 @@ public:
// construction/destruction
nes_xiaozy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -158,14 +176,16 @@ public:
// construction/destruction
nes_edu2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -179,13 +199,15 @@ public:
// construction/destruction
nes_t230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint16_t m_irq_count, m_irq_count_latch;
uint8_t m_irq_mode;
@@ -203,13 +225,15 @@ public:
// construction/destruction
nes_mk2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint16_t m_irq_count, m_irq_count_latch;
uint8_t m_irq_clear;
@@ -225,13 +249,15 @@ public:
// construction/destruction
nes_whero_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg;
uint8_t m_mmc_vrom_bank[8];
@@ -250,13 +276,15 @@ public:
// construction/destruction
nes_43272_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint16_t m_latch;
};
@@ -270,13 +298,15 @@ public:
// construction/destruction
nes_tf1201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_prg();
uint8_t m_prg, m_swap;
@@ -295,20 +325,24 @@ public:
// construction/destruction
nes_cityfight_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
+ static constexpr device_timer_id TIMER_IRQ = 0;
+
void update_prg();
+
uint8_t m_prg_reg, m_prg_mode;
uint16_t m_irq_count;
int m_irq_enable;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
uint8_t m_mmc_vrom_bank[8];
@@ -325,13 +359,15 @@ public:
// construction/destruction
nes_fujiya_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -339,23 +375,21 @@ private:
// device type definition
-extern const device_type NES_AGCI_50282;
-extern const device_type NES_DREAMTECH01;
-extern const device_type NES_FUKUTAKE;
-extern const device_type NES_FUTUREMEDIA;
-extern const device_type NES_MAGSERIES;
-extern const device_type NES_DAOU306;
-extern const device_type NES_SUBOR0;
-extern const device_type NES_SUBOR1;
-extern const device_type NES_CC21;
-extern const device_type NES_XIAOZY;
-extern const device_type NES_EDU2K;
-extern const device_type NES_T230;
-extern const device_type NES_MK2;
-extern const device_type NES_WHERO;
-extern const device_type NES_43272;
-extern const device_type NES_TF1201;
-extern const device_type NES_CITYFIGHT;
-extern const device_type NES_FUJIYA;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_AGCI_50282, nes_agci_device)
+DECLARE_DEVICE_TYPE(NES_DREAMTECH01, nes_dreamtech_device)
+DECLARE_DEVICE_TYPE(NES_FUKUTAKE, nes_fukutake_device)
+DECLARE_DEVICE_TYPE(NES_FUTUREMEDIA, nes_futuremedia_device)
+DECLARE_DEVICE_TYPE(NES_MAGSERIES, nes_magseries_device)
+DECLARE_DEVICE_TYPE(NES_DAOU306, nes_daou306_device)
+DECLARE_DEVICE_TYPE(NES_CC21, nes_cc21_device)
+DECLARE_DEVICE_TYPE(NES_XIAOZY, nes_xiaozy_device)
+DECLARE_DEVICE_TYPE(NES_EDU2K, nes_edu2k_device)
+DECLARE_DEVICE_TYPE(NES_T230, nes_t230_device)
+DECLARE_DEVICE_TYPE(NES_MK2, nes_mk2_device)
+DECLARE_DEVICE_TYPE(NES_WHERO, nes_whero_device)
+DECLARE_DEVICE_TYPE(NES_43272, nes_43272_device)
+DECLARE_DEVICE_TYPE(NES_TF1201, nes_tf1201_device)
+DECLARE_DEVICE_TYPE(NES_CITYFIGHT, nes_cityfight_device)
+//DECLARE_DEVICE_TYPE(NES_FUJIYA, nes_fujiya_device)
+
+#endif // MAME_BUS_NES_PIRATE_H
diff --git a/src/devices/bus/nes/pt554.cpp b/src/devices/bus/nes/pt554.cpp
index a12d3e63145..86a510866f4 100644
--- a/src/devices/bus/nes/pt554.cpp
+++ b/src/devices/bus/nes/pt554.cpp
@@ -32,12 +32,12 @@
// constructor
//-------------------------------------------------
-const device_type NES_BANDAI_PT554 = device_creator<nes_bandai_pt554_device>;
+DEFINE_DEVICE_TYPE(NES_BANDAI_PT554, nes_bandai_pt554_device, "nes_bandai_pt554", "NES Cart Bandai BT-554 PCB")
nes_bandai_pt554_device::nes_bandai_pt554_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_cnrom_device(mconfig, NES_BANDAI_PT554, "NES Cart Bandai PT-554 PCB", tag, owner, clock, "nes_bandai_pt554", __FILE__),
- m_samples(*this, "samples")
+ : nes_cnrom_device(mconfig, NES_BANDAI_PT554, tag, owner, clock)
+ , m_samples(*this, "samples")
{
}
diff --git a/src/devices/bus/nes/pt554.h b/src/devices/bus/nes/pt554.h
index 2dc1fe6f6f0..95947c26ef7 100644
--- a/src/devices/bus/nes/pt554.h
+++ b/src/devices/bus/nes/pt554.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_PT554_H
-#define __NES_PT554_H
+#ifndef MAME_BUS_NES_PT554_H
+#define MAME_BUS_NES_PT554_H
+
+#pragma once
#include "nxrom.h"
@@ -23,9 +25,7 @@ private:
};
-
-
// device type definition
-extern const device_type NES_BANDAI_PT554;
+DECLARE_DEVICE_TYPE(NES_BANDAI_PT554, nes_bandai_pt554_device)
-#endif
+#endif // MAME_BUS_NES_PT554_H
diff --git a/src/devices/bus/nes/racermate.cpp b/src/devices/bus/nes/racermate.cpp
index 680433e4ed4..5b578da0e09 100644
--- a/src/devices/bus/nes/racermate.cpp
+++ b/src/devices/bus/nes/racermate.cpp
@@ -32,13 +32,13 @@
// constructor
//-------------------------------------------------
-const device_type NES_RACERMATE = device_creator<nes_racermate_device>;
+DEFINE_DEVICE_TYPE(NES_RACERMATE, nes_racermate_device, "nes_racermate", "NES Cart Racermate PCB")
nes_racermate_device::nes_racermate_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_RACERMATE, "NES Cart Racermate PCB", tag, owner, clock, "nes_racermate", __FILE__),
- m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_RACERMATE, tag, owner, clock)
+ , m_latch(0)
+{
}
diff --git a/src/devices/bus/nes/racermate.h b/src/devices/bus/nes/racermate.h
index da7a5f5174b..5366ec1a6ea 100644
--- a/src/devices/bus/nes/racermate.h
+++ b/src/devices/bus/nes/racermate.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_RACERMATE_H
-#define __NES_RACERMATE_H
+#ifndef MAME_BUS_NES_RACERMATE_H
+#define MAME_BUS_NES_RACERMATE_H
#include "nxrom.h"
@@ -26,10 +26,7 @@ private:
};
-
-
-
// device type definition
-extern const device_type NES_RACERMATE;
+DECLARE_DEVICE_TYPE(NES_RACERMATE, nes_racermate_device)
-#endif
+#endif // MAME_BUS_NES_RACERMATE_H
diff --git a/src/devices/bus/nes/rcm.cpp b/src/devices/bus/nes/rcm.cpp
index aedda67cc46..f1800712765 100644
--- a/src/devices/bus/nes/rcm.cpp
+++ b/src/devices/bus/nes/rcm.cpp
@@ -39,36 +39,36 @@
// constructor
//-------------------------------------------------
-const device_type NES_GS2015 = device_creator<nes_gs2015_device>;
-const device_type NES_GS2004 = device_creator<nes_gs2004_device>;
-const device_type NES_GS2013 = device_creator<nes_gs2013_device>;
-const device_type NES_TF9IN1 = device_creator<nes_tf9_device>;
-const device_type NES_3DBLOCK = device_creator<nes_3dblock_device>;
+DEFINE_DEVICE_TYPE(NES_GS2015, nes_gs2015_device, "nes_g2015", "NES Cart RCM GS-2015 PCB")
+DEFINE_DEVICE_TYPE(NES_GS2004, nes_gs2004_device, "nes_g2004", "NES Cart RCM GS-2004 PCB")
+DEFINE_DEVICE_TYPE(NES_GS2013, nes_gs2013_device, "nes_g2013", "NES Cart RCM GS-2013 PCB")
+DEFINE_DEVICE_TYPE(NES_TF9IN1, nes_tf9_device, "nes_tetrisfam", "NES Cart RCM Tetris Family 9 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_3DBLOCK, nes_3dblock_device, "nes_3dblock", "NES Cart RCM 3D Block PCB")
nes_gs2015_device::nes_gs2015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_GS2015, "NES Cart RCM GS-2015 PCB", tag, owner, clock, "nes_gs2015", __FILE__)
+ : nes_nrom_device(mconfig, NES_GS2015, tag, owner, clock)
{
}
nes_gs2004_device::nes_gs2004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_GS2004, "NES Cart RCM GS-2004 PCB", tag, owner, clock, "nes_gs2004", __FILE__)
+ : nes_nrom_device(mconfig, NES_GS2004, tag, owner, clock)
{
}
nes_gs2013_device::nes_gs2013_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_GS2013, "NES Cart RCM GS-2013 PCB", tag, owner, clock, "nes_gs2013", __FILE__)
+ : nes_nrom_device(mconfig, NES_GS2013, tag, owner, clock)
{
}
nes_tf9_device::nes_tf9_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TF9IN1, "NES Cart RCM Tetris Family 9 in 1 PCB", tag, owner, clock, "nes_tetrisfam", __FILE__)
+ : nes_nrom_device(mconfig, NES_TF9IN1, tag, owner, clock)
{
}
nes_3dblock_device::nes_3dblock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_3DBLOCK, "NES Cart RCM 3D Block PCB", tag, owner, clock, "nes_3dblock", __FILE__), m_irq_count(0)
- {
+ : nes_nrom_device(mconfig, NES_3DBLOCK, tag, owner, clock), m_irq_count(0)
+{
}
diff --git a/src/devices/bus/nes/rcm.h b/src/devices/bus/nes/rcm.h
index d7858cbdb53..f37a6074432 100644
--- a/src/devices/bus/nes/rcm.h
+++ b/src/devices/bus/nes/rcm.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_RCM_H
-#define __NES_RCM_H
+#ifndef MAME_BUS_NES_RCM_H
+#define MAME_BUS_NES_RCM_H
+
+#pragma once
#include "nxrom.h"
@@ -14,13 +16,15 @@ public:
// construction/destruction
nes_gs2015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override { return read_m(space, offset, mem_mask); }
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -32,11 +36,13 @@ public:
// construction/destruction
nes_gs2004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -48,11 +54,13 @@ public:
// construction/destruction
nes_gs2013_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -64,11 +72,13 @@ public:
// construction/destruction
nes_tf9_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -80,26 +90,26 @@ public:
// construction/destruction
nes_3dblock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[4];
uint8_t m_irq_count;
};
-
-
// device type definition
-extern const device_type NES_GS2015;
-extern const device_type NES_GS2004;
-extern const device_type NES_GS2013;
-extern const device_type NES_TF9IN1;
-extern const device_type NES_3DBLOCK;
+DECLARE_DEVICE_TYPE(NES_GS2015, nes_gs2015_device)
+DECLARE_DEVICE_TYPE(NES_GS2004, nes_gs2004_device)
+DECLARE_DEVICE_TYPE(NES_GS2013, nes_gs2013_device)
+DECLARE_DEVICE_TYPE(NES_TF9IN1, nes_tf9_device)
+DECLARE_DEVICE_TYPE(NES_3DBLOCK, nes_3dblock_device)
-#endif
+#endif // MAME_BUS_NES_RCM_H
diff --git a/src/devices/bus/nes/rexsoft.cpp b/src/devices/bus/nes/rexsoft.cpp
index 9aaaed7721b..300bd07f96e 100644
--- a/src/devices/bus/nes/rexsoft.cpp
+++ b/src/devices/bus/nes/rexsoft.cpp
@@ -35,19 +35,19 @@
// constructor
//-------------------------------------------------
-const device_type NES_REX_DBZ5 = device_creator<nes_rex_dbz5_device>;
-const device_type NES_REX_SL1632 = device_creator<nes_rex_sl1632_device>;
+DEFINE_DEVICE_TYPE(NES_REX_DBZ5, nes_rex_dbz5_device, "nes_rex_dbz5", "NES Cart Rex Soft DragonBall Z V PCB")
+DEFINE_DEVICE_TYPE(NES_REX_SL1632, nes_rex_sl1632_device, "nes_rex_sl1632", "NES Cart Rex Soft SL-1632 PCB")
nes_rex_dbz5_device::nes_rex_dbz5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_REX_DBZ5, "NES Cart Rex Soft DragonBall Z V PCB", tag, owner, clock, "nes_rex_dbz5", __FILE__),
- m_extra(0)
- {
+ : nes_txrom_device(mconfig, NES_REX_DBZ5, tag, owner, clock)
+ , m_extra(0)
+{
}
nes_rex_sl1632_device::nes_rex_sl1632_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_REX_SL1632, "NES Cart Rex Soft SL-1632 PCB", tag, owner, clock, "nes_rex_sl1632", __FILE__), m_mode(0), m_mirror(0)
- {
+ : nes_txrom_device(mconfig, NES_REX_SL1632, tag, owner, clock), m_mode(0), m_mirror(0)
+{
}
diff --git a/src/devices/bus/nes/rexsoft.h b/src/devices/bus/nes/rexsoft.h
index 996b22baf13..61fe876633a 100644
--- a/src/devices/bus/nes/rexsoft.h
+++ b/src/devices/bus/nes/rexsoft.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_REXSOFT_H
-#define __NES_REXSOFT_H
+#ifndef MAME_BUS_NES_REXSOFT_H
+#define MAME_BUS_NES_REXSOFT_H
+
+#pragma once
#include "mmc3.h"
@@ -14,8 +16,6 @@ public:
// construction/destruction
nes_rex_dbz5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_m) override { return read_l(space, offset, mem_mask); }
virtual DECLARE_WRITE8_MEMBER(write_l) override;
@@ -23,6 +23,10 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_extra;
};
@@ -36,13 +40,14 @@ public:
// construction/destruction
nes_rex_sl1632_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
virtual void set_prg(int prg_base, int prg_mask) override;
virtual void set_chr(uint8_t chr, int chr_base, int chr_mask) override;
@@ -52,10 +57,8 @@ protected:
-
-
// device type definition
-extern const device_type NES_REX_DBZ5;
-extern const device_type NES_REX_SL1632;
+DECLARE_DEVICE_TYPE(NES_REX_DBZ5, nes_rex_dbz5_device)
+DECLARE_DEVICE_TYPE(NES_REX_SL1632, nes_rex_sl1632_device)
-#endif
+#endif // MAME_BUS_NES_REXSOFT_H
diff --git a/src/devices/bus/nes/sachen.cpp b/src/devices/bus/nes/sachen.cpp
index 317f2e7e78c..369c4cde885 100644
--- a/src/devices/bus/nes/sachen.cpp
+++ b/src/devices/bus/nes/sachen.cpp
@@ -44,99 +44,99 @@
// constructor
//-------------------------------------------------
-const device_type NES_SACHEN_SA009 = device_creator<nes_sachen_sa009_device>;
-const device_type NES_SACHEN_SA0036 = device_creator<nes_sachen_sa0036_device>;
-const device_type NES_SACHEN_SA0037 = device_creator<nes_sachen_sa0037_device>;
-const device_type NES_SACHEN_SA72007 = device_creator<nes_sachen_sa72007_device>;
-const device_type NES_SACHEN_SA72008 = device_creator<nes_sachen_sa72008_device>;
-const device_type NES_SACHEN_TCA01 = device_creator<nes_sachen_tca01_device>;
-const device_type NES_SACHEN_TCU01 = device_creator<nes_sachen_tcu01_device>;
-const device_type NES_SACHEN_TCU02 = device_creator<nes_sachen_tcu02_device>;
-const device_type NES_SACHEN_74X374 = device_creator<nes_sachen_74x374_device>;
-const device_type NES_SACHEN_74X374_ALT = device_creator<nes_sachen_74x374_alt_device>;
-const device_type NES_SACHEN_8259A = device_creator<nes_sachen_8259a_device>;
-const device_type NES_SACHEN_8259B = device_creator<nes_sachen_8259b_device>;
-const device_type NES_SACHEN_8259C = device_creator<nes_sachen_8259c_device>;
-const device_type NES_SACHEN_8259D = device_creator<nes_sachen_8259d_device>;
+DEFINE_DEVICE_TYPE(NES_SACHEN_SA009, nes_sachen_sa009_device, "nes_sa009", "NES Cart Sachen SA009 PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_SA0036, nes_sachen_sa0036_device, "nes_sa0036", "NES Cart Sachen SA0036 PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_SA0037, nes_sachen_sa0037_device, "nes_sa0037", "NES Cart Sachen SA0037 PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_SA72007, nes_sachen_sa72007_device, "nes_sa72007", "NES Cart Sachen SA72007 PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_SA72008, nes_sachen_sa72008_device, "nes_sa72008", "NES Cart Sachen SA72008 PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_TCA01, nes_sachen_tca01_device, "nes_tca01", "NES Cart Sachen TCA-01 PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_TCU01, nes_sachen_tcu01_device, "nes_tcu01", "NES Cart Sachen TCU-01 PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_TCU02, nes_sachen_tcu02_device, "nes_tcu02", "NES Cart Sachen TCU-02 PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_74X374, nes_sachen_74x374_device, "nes_s74x374", "NES Cart Sachen 74*374 PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_74X374_ALT, nes_sachen_74x374_alt_device, "nes_s74x374a", "NES Cart Sachen 74*374 Alt PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_8259A, nes_sachen_8259a_device, "nes_s8259a", "NES Cart Sachen 8259A PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_8259B, nes_sachen_8259b_device, "nes_s8259b", "NES Cart Sachen 8259B PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_8259C, nes_sachen_8259c_device, "nes_s8259c", "NES Cart Sachen 8259C PCB")
+DEFINE_DEVICE_TYPE(NES_SACHEN_8259D, nes_sachen_8259d_device, "nes_s8259d", "NES Cart Sachen 8259D PCB")
nes_sachen_sa009_device::nes_sachen_sa009_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SACHEN_SA009, "NES Cart Sachen SA009 PCB", tag, owner, clock, "nes_sa009", __FILE__)
+ : nes_nrom_device(mconfig, NES_SACHEN_SA009, tag, owner, clock)
{
}
nes_sachen_sa0036_device::nes_sachen_sa0036_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SACHEN_SA0036, "NES Cart Sachen sa0036 PCB", tag, owner, clock, "nes_sa0036", __FILE__)
+ : nes_nrom_device(mconfig, NES_SACHEN_SA0036, tag, owner, clock)
{
}
nes_sachen_sa0037_device::nes_sachen_sa0037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SACHEN_SA0037, "NES Cart Sachen sa0037 PCB", tag, owner, clock, "nes_sa0037", __FILE__)
+ : nes_nrom_device(mconfig, NES_SACHEN_SA0037, tag, owner, clock)
{
}
nes_sachen_sa72007_device::nes_sachen_sa72007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SACHEN_SA72007, "NES Cart Sachen SA72007 PCB", tag, owner, clock, "nes_sa72007", __FILE__)
+ : nes_nrom_device(mconfig, NES_SACHEN_SA72007, tag, owner, clock)
{
}
nes_sachen_sa72008_device::nes_sachen_sa72008_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SACHEN_SA72008, "NES Cart Sachen SA72008 PCB", tag, owner, clock, "nes_sa72008", __FILE__)
+ : nes_nrom_device(mconfig, NES_SACHEN_SA72008, tag, owner, clock)
{
}
nes_sachen_tca01_device::nes_sachen_tca01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SACHEN_TCA01, "NES Cart Sachen TCA-01 PCB", tag, owner, clock, "nes_tca01", __FILE__)
+ : nes_nrom_device(mconfig, NES_SACHEN_TCA01, tag, owner, clock)
{
}
nes_sachen_tcu01_device::nes_sachen_tcu01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SACHEN_TCU01, "NES Cart Sachen TCU-01 PCB", tag, owner, clock, "nes_tcu01", __FILE__)
+ : nes_nrom_device(mconfig, NES_SACHEN_TCU01, tag, owner, clock)
{
}
nes_sachen_tcu02_device::nes_sachen_tcu02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SACHEN_TCU02, "NES Cart Sachen TCU-02 PCB", tag, owner, clock, "nes_tcu02", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_SACHEN_TCU02, tag, owner, clock), m_latch(0)
+{
}
-nes_sachen_74x374_device::nes_sachen_74x374_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_latch(0), m_mmc_vrom_bank(0)
- {
+nes_sachen_74x374_device::nes_sachen_74x374_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_latch(0), m_mmc_vrom_bank(0)
+{
}
nes_sachen_74x374_device::nes_sachen_74x374_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SACHEN_74X374, "NES Cart Sachen 74*374 PCB", tag, owner, clock, "nes_s74x34", __FILE__), m_latch(0), m_mmc_vrom_bank(0)
- {
+ : nes_sachen_74x374_device(mconfig, NES_SACHEN_74X374, tag, owner, clock)
+{
}
nes_sachen_74x374_alt_device::nes_sachen_74x374_alt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sachen_74x374_device(mconfig, NES_SACHEN_74X374_ALT, "NES Cart Sachen 74*374 Alt PCB", tag, owner, clock, "nes_s74x34a", __FILE__)
+ : nes_sachen_74x374_device(mconfig, NES_SACHEN_74X374_ALT, tag, owner, clock)
{
}
-nes_sachen_8259a_device::nes_sachen_8259a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_sachen_74x374_device(mconfig, type, name, tag, owner, clock, shortname, source)
+nes_sachen_8259a_device::nes_sachen_8259a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_sachen_74x374_device(mconfig, type, tag, owner, clock)
{
}
nes_sachen_8259a_device::nes_sachen_8259a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sachen_74x374_device(mconfig, NES_SACHEN_8259A, "NES Cart Sachen 8259A PCB", tag, owner, clock, "nes_s8259a", __FILE__)
+ : nes_sachen_8259a_device(mconfig, NES_SACHEN_8259A, tag, owner, clock)
{
}
nes_sachen_8259b_device::nes_sachen_8259b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sachen_8259a_device(mconfig, NES_SACHEN_8259B, "NES Cart Sachen 8259B PCB", tag, owner, clock, "nes_s8259b", __FILE__)
+ : nes_sachen_8259a_device(mconfig, NES_SACHEN_8259B, tag, owner, clock)
{
}
nes_sachen_8259c_device::nes_sachen_8259c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sachen_8259a_device(mconfig, NES_SACHEN_8259C, "NES Cart Sachen 8259C PCB", tag, owner, clock, "nes_s8259c", __FILE__)
+ : nes_sachen_8259a_device(mconfig, NES_SACHEN_8259C, tag, owner, clock)
{
}
nes_sachen_8259d_device::nes_sachen_8259d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sachen_8259a_device(mconfig, NES_SACHEN_8259D, "NES Cart Sachen 8259D PCB", tag, owner, clock, "nes_s8259d", __FILE__)
+ : nes_sachen_8259a_device(mconfig, NES_SACHEN_8259D, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/sachen.h b/src/devices/bus/nes/sachen.h
index 2c309a55a06..cfec9363bdc 100644
--- a/src/devices/bus/nes/sachen.h
+++ b/src/devices/bus/nes/sachen.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_SACHEN_H
-#define __NES_SACHEN_H
+#ifndef MAME_BUS_NES_SACHEN_H
+#define MAME_BUS_NES_SACHEN_H
+
+#pragma once
#include "nxrom.h"
@@ -14,11 +16,13 @@ public:
// construction/destruction
nes_sachen_sa009_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -30,11 +34,13 @@ public:
// construction/destruction
nes_sachen_sa0036_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -46,11 +52,13 @@ public:
// construction/destruction
nes_sachen_sa0037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -62,11 +70,13 @@ public:
// construction/destruction
nes_sachen_sa72007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -78,11 +88,13 @@ public:
// construction/destruction
nes_sachen_sa72008_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -94,11 +106,13 @@ public:
// construction/destruction
nes_sachen_tca01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -110,13 +124,15 @@ public:
// construction/destruction
nes_sachen_tcu01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override { write_l(space, (offset + 0x100) & 0xfff, data, mem_mask); }
virtual DECLARE_WRITE8_MEMBER(write_h) override { write_l(space, (offset + 0x100) & 0xfff, data, mem_mask); }
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -128,13 +144,15 @@ public:
// construction/destruction
nes_sachen_tcu02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
};
@@ -146,17 +164,19 @@ class nes_sachen_74x374_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_sachen_74x374_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_sachen_74x374_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
protected:
+ nes_sachen_74x374_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
void set_mirror(uint8_t nt);
uint8_t m_latch, m_mmc_vrom_bank;
};
@@ -182,17 +202,19 @@ class nes_sachen_8259a_device : public nes_sachen_74x374_device
{
public:
// construction/destruction
- nes_sachen_8259a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_sachen_8259a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override { write_l(space, (offset + 0x100) & 0xfff, data, mem_mask); }
virtual void pcb_reset() override;
protected:
+ nes_sachen_8259a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
virtual void chr_update();
uint8_t m_reg[8];
};
@@ -239,23 +261,20 @@ protected:
};
-
-
-
// device type definition
-extern const device_type NES_SACHEN_SA009;
-extern const device_type NES_SACHEN_SA0036;
-extern const device_type NES_SACHEN_SA0037;
-extern const device_type NES_SACHEN_SA72007;
-extern const device_type NES_SACHEN_SA72008;
-extern const device_type NES_SACHEN_TCA01;
-extern const device_type NES_SACHEN_TCU01;
-extern const device_type NES_SACHEN_TCU02;
-extern const device_type NES_SACHEN_74X374;
-extern const device_type NES_SACHEN_74X374_ALT;
-extern const device_type NES_SACHEN_8259A;
-extern const device_type NES_SACHEN_8259B;
-extern const device_type NES_SACHEN_8259C;
-extern const device_type NES_SACHEN_8259D;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_SACHEN_SA009, nes_sachen_sa009_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_SA0036, nes_sachen_sa0036_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_SA0037, nes_sachen_sa0037_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_SA72007, nes_sachen_sa72007_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_SA72008, nes_sachen_sa72008_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_TCA01, nes_sachen_tca01_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_TCU01, nes_sachen_tcu01_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_TCU02, nes_sachen_tcu02_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_74X374, nes_sachen_74x374_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_74X374_ALT, nes_sachen_74x374_alt_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_8259A, nes_sachen_8259a_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_8259B, nes_sachen_8259b_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_8259C, nes_sachen_8259c_device)
+DECLARE_DEVICE_TYPE(NES_SACHEN_8259D, nes_sachen_8259d_device)
+
+#endif // MAME_BUS_NES_SACHEN_H
diff --git a/src/devices/bus/nes/somari.cpp b/src/devices/bus/nes/somari.cpp
index b1f172567fe..b738ad671e8 100644
--- a/src/devices/bus/nes/somari.cpp
+++ b/src/devices/bus/nes/somari.cpp
@@ -36,17 +36,17 @@
// constructor
//-------------------------------------------------
-const device_type NES_SOMARI = device_creator<nes_somari_device>;
+DEFINE_DEVICE_TYPE(NES_SOMARI, nes_somari_device, "nes_somari", "NES Cart Team Somari PCB")
nes_somari_device::nes_somari_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_SOMARI, "NES Cart Team Somari PCB", tag, owner, clock, "nes_somari", __FILE__),
- m_board_mode(0),
- m_mmc3_mirror_reg(0),
- m_count(0),
- m_mmc1_latch(0),
- m_vrc_mirror_reg(0)
- {
+ : nes_txrom_device(mconfig, NES_SOMARI, tag, owner, clock)
+ , m_board_mode(0)
+ , m_mmc3_mirror_reg(0)
+ , m_count(0)
+ , m_mmc1_latch(0)
+ , m_vrc_mirror_reg(0)
+{
}
diff --git a/src/devices/bus/nes/somari.h b/src/devices/bus/nes/somari.h
index 6ccb8b73867..7b5d2920923 100644
--- a/src/devices/bus/nes/somari.h
+++ b/src/devices/bus/nes/somari.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_SOMARI_H
-#define __NES_SOMARI_H
+#ifndef MAME_BUS_NES_SOMARI_H
+#define MAME_BUS_NES_SOMARI_H
+
+#pragma once
#include "mmc3.h"
@@ -14,8 +16,6 @@ public:
// construction/destruction
nes_somari_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override { write_m(space, offset + 0x100, data, mem_mask); }
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(mmc1_w);
@@ -24,6 +24,11 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_prg();
void update_chr();
@@ -47,8 +52,7 @@ private:
};
-
// device type definition
-extern const device_type NES_SOMARI;
+DECLARE_DEVICE_TYPE(NES_SOMARI, nes_somari_device)
-#endif
+#endif // MAME_BUS_NES_SOMARI_H
diff --git a/src/devices/bus/nes/subor.cpp b/src/devices/bus/nes/subor.cpp
index 7d32104456a..c15e8761112 100644
--- a/src/devices/bus/nes/subor.cpp
+++ b/src/devices/bus/nes/subor.cpp
@@ -28,9 +28,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_SUBOR0 = device_creator<nes_subor0_device>;
-const device_type NES_SUBOR1 = device_creator<nes_subor1_device>;
-const device_type NES_SUBOR2 = device_creator<nes_subor2_device>;
+DEFINE_DEVICE_TYPE(NES_SUBOR0, nes_subor0_device, "nes_subor0", "NES Cart Subor Type 0 PCB")
+DEFINE_DEVICE_TYPE(NES_SUBOR1, nes_subor1_device, "nes_subor1", "NES Cart Subor Type 1 PCB")
+DEFINE_DEVICE_TYPE(NES_SUBOR2, nes_subor2_device, "nes_subor2", "NES Cart Subor Type 2 PCB")
//**************************************************************************
// LIVE DEVICE
@@ -41,7 +41,7 @@ const device_type NES_SUBOR2 = device_creator<nes_subor2_device>;
//-------------------------------------------------
nes_subor0_device::nes_subor0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SUBOR0, "NES Cart Subor Type 0 PCB", tag, owner, clock, "nes_subor0", __FILE__)
+ : nes_nrom_device(mconfig, NES_SUBOR0, tag, owner, clock)
{
}
@@ -50,7 +50,7 @@ nes_subor0_device::nes_subor0_device(const machine_config &mconfig, const char *
//-------------------------------------------------
nes_subor1_device::nes_subor1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SUBOR1, "NES Cart Subor Type 1 PCB", tag, owner, clock, "nes_subor1", __FILE__)
+ : nes_nrom_device(mconfig, NES_SUBOR1, tag, owner, clock)
{
}
@@ -59,11 +59,11 @@ nes_subor1_device::nes_subor1_device(const machine_config &mconfig, const char *
//-------------------------------------------------
nes_subor2_device::nes_subor2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SUBOR2, "NES Cart Subor Type 2 PCB", tag, owner, clock, "nes_subor2", __FILE__),
- m_switch_reg(0),
- m_bank_reg(0),
- m_chr_banking(0),
- m_page(0)
+ : nes_nrom_device(mconfig, NES_SUBOR2, tag, owner, clock)
+ , m_switch_reg(0)
+ , m_bank_reg(0)
+ , m_chr_banking(0)
+ , m_page(0)
{
}
diff --git a/src/devices/bus/nes/subor.h b/src/devices/bus/nes/subor.h
index 77839add137..93e542cf481 100644
--- a/src/devices/bus/nes/subor.h
+++ b/src/devices/bus/nes/subor.h
@@ -3,6 +3,8 @@
#ifndef MAME_BUS_NES_SUBOR_H
#define MAME_BUS_NES_SUBOR_H
+#pragma once
+
#include "nxrom.h"
//**************************************************************************
@@ -18,12 +20,14 @@ public:
// construction/destruction
nes_subor0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[4];
};
@@ -37,12 +41,14 @@ public:
// construction/destruction
nes_subor1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_reg[4];
};
@@ -56,8 +62,6 @@ public:
// construction/destruction
nes_subor2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(nt_r) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_READ8_MEMBER(read_l) override;
@@ -65,14 +69,18 @@ public:
virtual void ppu_latch(offs_t offset) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void update_banks();
uint8_t m_switch_reg, m_bank_reg, m_chr_banking, m_page;
};
// device type definition
-extern const device_type NES_SUBOR0;
-extern const device_type NES_SUBOR1;
-extern const device_type NES_SUBOR2;
+DECLARE_DEVICE_TYPE(NES_SUBOR0, nes_subor0_device)
+DECLARE_DEVICE_TYPE(NES_SUBOR1, nes_subor1_device)
+DECLARE_DEVICE_TYPE(NES_SUBOR2, nes_subor2_device)
-#endif /* MAME_BUS_NES_SUBOR_H */
+#endif // MAME_BUS_NES_SUBOR_H
diff --git a/src/devices/bus/nes/sunsoft.cpp b/src/devices/bus/nes/sunsoft.cpp
index 2394d67dad8..e35604256bd 100644
--- a/src/devices/bus/nes/sunsoft.cpp
+++ b/src/devices/bus/nes/sunsoft.cpp
@@ -42,52 +42,52 @@
// constructor
//-------------------------------------------------
-const device_type NES_SUNSOFT_1 = device_creator<nes_sunsoft_1_device>;
-const device_type NES_SUNSOFT_2 = device_creator<nes_sunsoft_2_device>;
-const device_type NES_SUNSOFT_3 = device_creator<nes_sunsoft_3_device>;
-const device_type NES_SUNSOFT_4 = device_creator<nes_sunsoft_4_device>;
-const device_type NES_SUNSOFT_FME7 = device_creator<nes_sunsoft_fme7_device>;
-const device_type NES_SUNSOFT_5 = device_creator<nes_sunsoft_5_device>;
+DEFINE_DEVICE_TYPE(NES_SUNSOFT_1, nes_sunsoft_1_device, "nes_sun1", "NES Cart Sunsoft 1 PCB")
+DEFINE_DEVICE_TYPE(NES_SUNSOFT_2, nes_sunsoft_2_device, "nes_sun2", "NES Cart Sunsoft 2 PCB")
+DEFINE_DEVICE_TYPE(NES_SUNSOFT_3, nes_sunsoft_3_device, "nes_sun3", "NES Cart Sunsoft 3 PCB")
+DEFINE_DEVICE_TYPE(NES_SUNSOFT_4, nes_sunsoft_4_device, "nes_sun4", "NES Cart Sunsoft 4 PCB")
+DEFINE_DEVICE_TYPE(NES_SUNSOFT_FME7, nes_sunsoft_fme7_device, "nes_fme7", "NES Cart Sunsoft FME7 PCB")
+DEFINE_DEVICE_TYPE(NES_SUNSOFT_5, nes_sunsoft_5_device, "nes_sun5", "NES Cart Sunsoft 5A/5B PCB")
nes_sunsoft_1_device::nes_sunsoft_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SUNSOFT_1, "NES Cart Sunsoft 1 PCB", tag, owner, clock, "nes_sun1", __FILE__)
+ : nes_nrom_device(mconfig, NES_SUNSOFT_1, tag, owner, clock)
{
}
nes_sunsoft_2_device::nes_sunsoft_2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SUNSOFT_2, "NES Cart Sunsoft 2 PCB", tag, owner, clock, "nes_sun2", __FILE__)
+ : nes_nrom_device(mconfig, NES_SUNSOFT_2, tag, owner, clock)
{
}
nes_sunsoft_3_device::nes_sunsoft_3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SUNSOFT_3, "NES Cart Sunsoft 3 PCB", tag, owner, clock, "nes_sun3", __FILE__), m_irq_count(0), m_irq_enable(0), m_irq_toggle(0), irq_timer(nullptr)
- {
+ : nes_nrom_device(mconfig, NES_SUNSOFT_3, tag, owner, clock), m_irq_count(0), m_irq_enable(0), m_irq_toggle(0), irq_timer(nullptr)
+{
}
-nes_sunsoft_4_device::nes_sunsoft_4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_reg(0), m_latch1(0), m_latch2(0), m_wram_enable(0)
- {
+nes_sunsoft_4_device::nes_sunsoft_4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_reg(0), m_latch1(0), m_latch2(0), m_wram_enable(0)
+{
}
nes_sunsoft_4_device::nes_sunsoft_4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SUNSOFT_4, "NES Cart Sunsoft 4 PCB", tag, owner, clock, "nes_sun4", __FILE__), m_reg(0), m_latch1(0), m_latch2(0), m_wram_enable(0)
- {
+ : nes_sunsoft_4_device(mconfig, NES_SUNSOFT_4, tag, owner, clock)
+{
}
-nes_sunsoft_fme7_device::nes_sunsoft_fme7_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr), m_latch(0), m_wram_bank(0)
- {
+nes_sunsoft_fme7_device::nes_sunsoft_fme7_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr), m_latch(0), m_wram_bank(0)
+{
}
nes_sunsoft_fme7_device::nes_sunsoft_fme7_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_SUNSOFT_FME7, "NES Cart Sunsoft FME7 PCB", tag, owner, clock, "nes_fme7", __FILE__), m_irq_count(0), m_irq_enable(0), irq_timer(nullptr), m_latch(0), m_wram_bank(0)
- {
+ : nes_sunsoft_fme7_device(mconfig, NES_SUNSOFT_FME7, tag, owner, clock)
+{
}
nes_sunsoft_5_device::nes_sunsoft_5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sunsoft_fme7_device(mconfig, NES_SUNSOFT_5, "NES Cart Sunsoft 5A/5B PCB", tag, owner, clock, "nes_sun5", __FILE__),
- m_ym2149(*this, "ay")
+ : nes_sunsoft_fme7_device(mconfig, NES_SUNSOFT_5, tag, owner, clock)
+ , m_ym2149(*this, "ay")
{
}
diff --git a/src/devices/bus/nes/sunsoft.h b/src/devices/bus/nes/sunsoft.h
index 9a0d7561b9c..0c4728627e4 100644
--- a/src/devices/bus/nes/sunsoft.h
+++ b/src/devices/bus/nes/sunsoft.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_SUNSOFT_H
-#define __NES_SUNSOFT_H
+#ifndef MAME_BUS_NES_SUNSOFT_H
+#define MAME_BUS_NES_SUNSOFT_H
+
+#pragma once
#include "nxrom.h"
#include "sound/ay8910.h"
@@ -15,11 +17,13 @@ public:
// construction/destruction
nes_sunsoft_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -31,11 +35,13 @@ public:
// construction/destruction
nes_sunsoft_2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -47,13 +53,14 @@ public:
// construction/destruction
nes_sunsoft_3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
uint16_t m_irq_count;
int m_irq_enable, m_irq_toggle;
@@ -69,11 +76,8 @@ class nes_sunsoft_4_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_sunsoft_4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_sunsoft_4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(sun4_write);
@@ -82,7 +86,13 @@ public:
virtual void pcb_reset() override;
protected:
+ nes_sunsoft_4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
void sun4_mirror(int mirror, int mirr0, int mirr1);
+
int m_reg, m_latch1, m_latch2, m_wram_enable;
};
@@ -92,12 +102,8 @@ class nes_sunsoft_fme7_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_sunsoft_fme7_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_sunsoft_fme7_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual DECLARE_WRITE8_MEMBER(fme7_write);
@@ -105,6 +111,13 @@ public:
virtual void pcb_reset() override;
+protected:
+ nes_sunsoft_fme7_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
uint16_t m_irq_count;
int m_irq_enable;
@@ -133,15 +146,12 @@ private:
required_device<ay8910_device> m_ym2149;
};
-
-
-
// device type definition
-extern const device_type NES_SUNSOFT_1;
-extern const device_type NES_SUNSOFT_2;
-extern const device_type NES_SUNSOFT_3;
-extern const device_type NES_SUNSOFT_4;
-extern const device_type NES_SUNSOFT_FME7;
-extern const device_type NES_SUNSOFT_5;
-
-#endif
+DECLARE_DEVICE_TYPE(NES_SUNSOFT_1, nes_sunsoft_1_device)
+DECLARE_DEVICE_TYPE(NES_SUNSOFT_2, nes_sunsoft_2_device)
+DECLARE_DEVICE_TYPE(NES_SUNSOFT_3, nes_sunsoft_3_device)
+DECLARE_DEVICE_TYPE(NES_SUNSOFT_4, nes_sunsoft_4_device)
+DECLARE_DEVICE_TYPE(NES_SUNSOFT_FME7, nes_sunsoft_fme7_device)
+DECLARE_DEVICE_TYPE(NES_SUNSOFT_5, nes_sunsoft_4_device)
+
+#endif // MAME_BUS_NES_SUNSOFT_H
diff --git a/src/devices/bus/nes/sunsoft_dcs.cpp b/src/devices/bus/nes/sunsoft_dcs.cpp
index 829a2e10982..c88bdce67d8 100644
--- a/src/devices/bus/nes/sunsoft_dcs.cpp
+++ b/src/devices/bus/nes/sunsoft_dcs.cpp
@@ -35,8 +35,8 @@
//-------------------------------------------------
ntb_cart_interface::ntb_cart_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_rom(nullptr)
+ : device_slot_card_interface(mconfig, device)
+ , m_rom(nullptr)
{
}
@@ -48,12 +48,13 @@ ntb_cart_interface::~ntb_cart_interface()
// sub-cart slot device
//-------------------------------------------------
-const device_type NES_NTB_SLOT = device_creator<nes_ntb_slot_device>;
+DEFINE_DEVICE_TYPE(NES_NTB_SLOT, nes_ntb_slot_device, "nes_ntb_slot", "NES NTB Cartridge Slot")
-nes_ntb_slot_device::nes_ntb_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_NTB_SLOT, "NES NTB Cartridge Slot", tag, owner, clock, "nes_ntb_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this), m_cart(nullptr)
+nes_ntb_slot_device::nes_ntb_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NES_NTB_SLOT, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
+ , device_slot_interface(mconfig, *this)
+ , m_cart(nullptr)
{
}
@@ -120,11 +121,11 @@ ROM_START( ntb_rom )
ROM_REGION(0x4000, "ntbrom", ROMREGION_ERASEFF)
ROM_END
-const device_type NES_NTB_ROM = device_creator<nes_ntb_rom_device>;
+DEFINE_DEVICE_TYPE(NES_NTB_ROM, nes_ntb_rom_device, "nes_ntbrom", "NES NTB ROM")
nes_ntb_rom_device::nes_ntb_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NES_NTB_ROM, "NES NTB ROM", tag, owner, clock, "nes_ntbrom", __FILE__),
- ntb_cart_interface( mconfig, *this )
+ : device_t(mconfig, NES_NTB_ROM, tag, owner, clock)
+ , ntb_cart_interface(mconfig, *this)
{
}
@@ -153,13 +154,13 @@ uint8_t *nes_ntb_rom_device::get_cart_base()
//
//------------------------------------------------
-const device_type NES_SUNSOFT_DCS = device_creator<nes_sunsoft_dcs_device>;
+DEFINE_DEVICE_TYPE(NES_SUNSOFT_DCS, nes_sunsoft_dcs_device, "nes_dcs", "NES Cart Sunsoft DCS PCB")
nes_sunsoft_dcs_device::nes_sunsoft_dcs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sunsoft_4_device(mconfig, NES_SUNSOFT_DCS, "NES Cart Sunsoft DCS PCB", tag, owner, clock, "nes_dcs", __FILE__), m_timer_on(0), m_exrom_enable(0),
- m_subslot(*this, "ntb_slot"), ntb_enable_timer(nullptr)
- {
+ : nes_sunsoft_4_device(mconfig, NES_SUNSOFT_DCS, tag, owner, clock), m_timer_on(0), m_exrom_enable(0)
+ , m_subslot(*this, "ntb_slot"), ntb_enable_timer(nullptr)
+{
}
diff --git a/src/devices/bus/nes/sunsoft_dcs.h b/src/devices/bus/nes/sunsoft_dcs.h
index 479f27aa39e..4b564a20f07 100644
--- a/src/devices/bus/nes/sunsoft_dcs.h
+++ b/src/devices/bus/nes/sunsoft_dcs.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_SUNSOFT_DCS_H
-#define __NES_SUNSOFT_DCS_H
+#ifndef MAME_BUS_NES_SUNSOFT_DCS_H
+#define MAME_BUS_NES_SUNSOFT_DCS_H
+
+#pragma once
#include "sunsoft.h"
#include "softlist_dev.h"
@@ -19,7 +21,6 @@ class ntb_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- ntb_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~ntb_cart_interface();
// reading and writing
@@ -28,16 +29,21 @@ public:
uint8_t *get_cart_base() { return m_rom; }
protected:
+ ntb_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
};
// ======================> nes_ntb_slot_device
+class nes_sunsoft_dcs_device;
+
class nes_ntb_slot_device : public device_t,
public device_image_interface,
public device_slot_interface
{
+ friend class nes_sunsoft_dcs_device;
public:
// construction/destruction
nes_ntb_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -64,11 +70,12 @@ public:
virtual DECLARE_READ8_MEMBER(read);
+protected:
ntb_cart_interface* m_cart;
};
// device type definition
-extern const device_type NES_NTB_SLOT;
+DECLARE_DEVICE_TYPE(NES_NTB_SLOT, nes_ntb_slot_device)
#define MCFG_NTB_MINICART_ADD(_tag, _slot_intf) \
@@ -101,7 +108,7 @@ protected:
};
// device type definition
-extern const device_type NES_NTB_ROM;
+DECLARE_DEVICE_TYPE(NES_NTB_ROM, nes_ntb_rom_device)
@@ -121,10 +128,7 @@ public:
// construction/destruction
nes_sunsoft_dcs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
@@ -132,18 +136,23 @@ public:
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
+ static constexpr device_timer_id TIMER_PROTECT = 0;
+
int m_timer_on, m_exrom_enable;
required_device<nes_ntb_slot_device> m_subslot;
- static const device_timer_id TIMER_PROTECT = 0;
emu_timer *ntb_enable_timer;
attotime timer_freq;
};
-
// device type definition
-extern const device_type NES_SUNSOFT_DCS;
+DECLARE_DEVICE_TYPE(NES_SUNSOFT_DCS, nes_sunsoft_dcs_device)
-#endif
+#endif // MAME_BUS_NES_SUNSOFT_DCS_H
diff --git a/src/devices/bus/nes/taito.cpp b/src/devices/bus/nes/taito.cpp
index b417f6dcc3a..e0b6f836a1c 100644
--- a/src/devices/bus/nes/taito.cpp
+++ b/src/devices/bus/nes/taito.cpp
@@ -25,7 +25,7 @@
#include "taito.h"
#include "cpu/m6502/m6502.h"
-#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access PPU_BOTTOM_VISIBLE_SCANLINE
+#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE
#ifdef NES_PCB_DEBUG
@@ -41,35 +41,35 @@
// constructor
//-------------------------------------------------
-const device_type NES_TC0190FMC = device_creator<nes_tc0190fmc_device>;
-const device_type NES_TC0190FMC_PAL16R4 = device_creator<nes_tc0190fmc_pal16r4_device>;
-const device_type NES_X1_005 = device_creator<nes_x1_005_device>;
-const device_type NES_X1_017 = device_creator<nes_x1_017_device>;
+DEFINE_DEVICE_TYPE(NES_TC0190FMC, nes_tc0190fmc_device, "nes_tc0190fmc", "NES Cart Taito TC0190FMC PCB")
+DEFINE_DEVICE_TYPE(NES_TC0190FMC_PAL16R4, nes_tc0190fmc_pal16r4_device, "nes_tc0190pal", "NES Cart Taito TC0190FMC + PAL16R4 PCB")
+DEFINE_DEVICE_TYPE(NES_X1_005, nes_x1_005_device, "nes_x1_005", "NES Cart Taito X1-005 PCB")
+DEFINE_DEVICE_TYPE(NES_X1_017, nes_x1_017_device, "nes_x1_017", "NES Cart Taito X1-017 PCB")
-nes_tc0190fmc_device::nes_tc0190fmc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+nes_tc0190fmc_device::nes_tc0190fmc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock)
{
}
nes_tc0190fmc_device::nes_tc0190fmc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TC0190FMC, "NES Cart Taito TC0190FMC PCB", tag, owner, clock, "nes_tc0190fmc", __FILE__)
+ : nes_tc0190fmc_device(mconfig, NES_TC0190FMC, tag, owner, clock)
{
}
nes_tc0190fmc_pal16r4_device::nes_tc0190fmc_pal16r4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_tc0190fmc_device(mconfig, NES_TC0190FMC_PAL16R4, "NES Cart Taito TC0190FMC + PAL16R4 PCB", tag, owner, clock, "nes_tc0190pal", __FILE__), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0)
- {
+ : nes_tc0190fmc_device(mconfig, NES_TC0190FMC_PAL16R4, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0)
+{
}
nes_x1_005_device::nes_x1_005_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_X1_005, "NES Cart Taito X1-005 PCB", tag, owner, clock, "nes_x1_005", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_X1_005, tag, owner, clock), m_latch(0)
+{
}
nes_x1_017_device::nes_x1_017_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_X1_017, "NES Cart Taito X1-017 PCB", tag, owner, clock, "nes_x1_017", __FILE__), m_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_X1_017, tag, owner, clock), m_latch(0)
+{
}
@@ -228,7 +228,7 @@ WRITE8_MEMBER(nes_tc0190fmc_device::tc0190fmc_write)
void nes_tc0190fmc_pal16r4_device::hblank_irq( int scanline, int vblank, int blanked )
{
- if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE)
+ if (scanline < ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE)
{
int prior_count = m_irq_count;
if (m_irq_count == 0)
diff --git a/src/devices/bus/nes/taito.h b/src/devices/bus/nes/taito.h
index 8d33ecd4c5e..8f3ccb2a8ee 100644
--- a/src/devices/bus/nes/taito.h
+++ b/src/devices/bus/nes/taito.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_TAITO_H
-#define __NES_TAITO_H
+#ifndef MAME_BUS_NES_TAITO_H
+#define MAME_BUS_NES_TAITO_H
+
+#pragma once
#include "nxrom.h"
@@ -12,15 +14,18 @@ class nes_tc0190fmc_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_tc0190fmc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_tc0190fmc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(tc0190fmc_write);
virtual DECLARE_WRITE8_MEMBER(write_h) override { tc0190fmc_write(space, offset, data, mem_mask); }
virtual void pcb_reset() override;
+
+protected:
+ nes_tc0190fmc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -32,13 +37,15 @@ public:
// construction/destruction
nes_tc0190fmc_pal16r4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint16_t m_irq_count, m_irq_count_latch;
int m_irq_enable;
@@ -53,13 +60,15 @@ public:
// construction/destruction
nes_x1_005_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
uint8_t m_latch;
// Taito X1-005 chip contains 80 bytes of internal ram, possibly battery backed up
@@ -75,13 +84,15 @@ public:
// construction/destruction
nes_x1_017_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_m) override;
virtual DECLARE_WRITE8_MEMBER(write_m) override;
virtual void pcb_reset() override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
void set_chr();
uint8_t m_latch;
@@ -92,13 +103,11 @@ private:
};
-
-
// device type definition
-extern const device_type NES_TC0190FMC;
-extern const device_type NES_TC0190FMC_PAL16R4;
-extern const device_type NES_X1_005;
-extern const device_type NES_X1_017;
+DECLARE_DEVICE_TYPE(NES_TC0190FMC, nes_tc0190fmc_device)
+DECLARE_DEVICE_TYPE(NES_TC0190FMC_PAL16R4, nes_tc0190fmc_pal16r4_device)
+DECLARE_DEVICE_TYPE(NES_X1_005, nes_x1_005_device)
+DECLARE_DEVICE_TYPE(NES_X1_017, nes_x1_017_device)
-#endif
+#endif // MAME_BUS_NES_TAITO_H
diff --git a/src/devices/bus/nes/tengen.cpp b/src/devices/bus/nes/tengen.cpp
index 24c8843637f..7b171e77311 100644
--- a/src/devices/bus/nes/tengen.cpp
+++ b/src/devices/bus/nes/tengen.cpp
@@ -22,7 +22,7 @@
#include "tengen.h"
#include "cpu/m6502/m6502.h"
-#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access PPU_BOTTOM_VISIBLE_SCANLINE
+#include "video/ppu2c0x.h" // this has to be included so that IRQ functions can access ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE
#ifdef NES_PCB_DEBUG
@@ -38,28 +38,28 @@
// constructor
//-------------------------------------------------
-const device_type NES_TENGEN_800008 = device_creator<nes_tengen008_device>;
-const device_type NES_TENGEN_800032 = device_creator<nes_tengen032_device>;
-const device_type NES_TENGEN_800037 = device_creator<nes_tengen037_device>;
+DEFINE_DEVICE_TYPE(NES_TENGEN_800008, nes_tengen008_device, "nes_tengen008", "NES Cart Tengen 800008 PCB")
+DEFINE_DEVICE_TYPE(NES_TENGEN_800032, nes_tengen032_device, "nes_tengen032", "NES Cart Tengen 800032 PCB")
+DEFINE_DEVICE_TYPE(NES_TENGEN_800037, nes_tengen037_device, "nes_tengen037", "NES Cart Tengen 800037 PCB")
nes_tengen008_device::nes_tengen008_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TENGEN_800008, "NES Cart Tengen 800008 PCB", tag, owner, clock, "nes_tengen008", __FILE__)
+ : nes_nrom_device(mconfig, NES_TENGEN_800008, tag, owner, clock)
{
}
-nes_tengen032_device::nes_tengen032_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source), m_irq_count(0), m_irq_count_latch(0), m_irq_mode(0), m_irq_reset(0), m_irq_enable(0), m_latch(0), irq_timer(nullptr)
- {
+nes_tengen032_device::nes_tengen032_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_mode(0), m_irq_reset(0), m_irq_enable(0), m_latch(0), irq_timer(nullptr)
+{
}
nes_tengen032_device::nes_tengen032_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TENGEN_800032, "NES Cart Tengen 800032 PCB", tag, owner, clock, "nes_tengen032", __FILE__), m_irq_count(0), m_irq_count_latch(0), m_irq_mode(0), m_irq_reset(0), m_irq_enable(0), m_latch(0), irq_timer(nullptr)
+ : nes_tengen032_device(mconfig, NES_TENGEN_800032, tag, owner, clock)
{
}
nes_tengen037_device::nes_tengen037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_tengen032_device(mconfig, NES_TENGEN_800037, "NES Cart Tengen 800037 PCB", tag, owner, clock, "nes_tengen037", __FILE__)
+ : nes_tengen032_device(mconfig, NES_TENGEN_800037, tag, owner, clock)
{
}
@@ -195,7 +195,7 @@ void nes_tengen032_device::hblank_irq(int scanline, int vblank, int blanked)
{
if (!m_irq_mode) // we are in scanline mode!
{
- if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE)
+ if (scanline < ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE)
{
irq_clock(blanked);
}
diff --git a/src/devices/bus/nes/tengen.h b/src/devices/bus/nes/tengen.h
index 3fb9cba0c88..dce41f4fbb4 100644
--- a/src/devices/bus/nes/tengen.h
+++ b/src/devices/bus/nes/tengen.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_TENGEN_H
-#define __NES_TENGEN_H
+#ifndef MAME_BUS_NES_TENGEN_H
+#define MAME_BUS_NES_TENGEN_H
#include "nxrom.h"
@@ -14,11 +14,13 @@ public:
// construction/destruction
nes_tengen008_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -28,20 +30,23 @@ class nes_tengen032_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_tengen032_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_tengen032_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_WRITE8_MEMBER(tengen032_write);
virtual DECLARE_WRITE8_MEMBER(write_h) override { tengen032_write(space, offset, data, mem_mask); }
- virtual void chr_cb(int start, int bank, int source);
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
protected:
+ nes_tengen032_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ virtual void chr_cb(int start, int bank, int source);
+
void set_prg();
void set_chr();
void irq_clock(int blanked);
@@ -77,12 +82,9 @@ protected:
};
-
-
-
// device type definition
-extern const device_type NES_TENGEN_800008;
-extern const device_type NES_TENGEN_800032;
-extern const device_type NES_TENGEN_800037;
+DECLARE_DEVICE_TYPE(NES_TENGEN_800008, nes_tengen008_device)
+DECLARE_DEVICE_TYPE(NES_TENGEN_800032, nes_tengen032_device)
+DECLARE_DEVICE_TYPE(NES_TENGEN_800037, nes_tengen037_device)
-#endif
+#endif // MAME_BUS_NES_TENGEN_H
diff --git a/src/devices/bus/nes/txc.cpp b/src/devices/bus/nes/txc.cpp
index c6c4b6b9ad1..f3ab8efc5f9 100644
--- a/src/devices/bus/nes/txc.cpp
+++ b/src/devices/bus/nes/txc.cpp
@@ -37,40 +37,40 @@
// constructor
//-------------------------------------------------
-const device_type NES_TXC_22211 = device_creator<nes_txc_22211_device>;
-const device_type NES_TXC_DUMARACING = device_creator<nes_txc_dumarc_device>;
-const device_type NES_TXC_MJBLOCK = device_creator<nes_txc_mjblock_device>;
-const device_type NES_TXC_STRIKEW = device_creator<nes_txc_strikew_device>;
-const device_type NES_TXC_COMMANDOS = device_creator<nes_txc_commandos_device>;
+DEFINE_DEVICE_TYPE(NES_TXC_22211, nes_txc_22211_device, "nes_txc_22211", "NES Cart TXC 22211 PCB")
+DEFINE_DEVICE_TYPE(NES_TXC_DUMARACING, nes_txc_dumarc_device, "nes_txc_dumarc", "NES Cart TXC Du Ma Racing PCB")
+DEFINE_DEVICE_TYPE(NES_TXC_MJBLOCK, nes_txc_mjblock_device, "nes_txc_mjblock", "NES Cart TXC Mahjong Block PCB")
+DEFINE_DEVICE_TYPE(NES_TXC_STRIKEW, nes_txc_strikew_device, "nes_txc_strikew", "NES Cart TXC Strike Wolf PCB")
+DEFINE_DEVICE_TYPE(NES_TXC_COMMANDOS, nes_txc_commandos_device, "nes_txc_comm", "NES Cart TXC Cart Commandos PCB") // and others
-nes_txc_22211_device::nes_txc_22211_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_nrom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+nes_txc_22211_device::nes_txc_22211_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_nrom_device(mconfig, type, tag, owner, clock)
{
}
nes_txc_22211_device::nes_txc_22211_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TXC_22211, "NES Cart TXC 22211 PCB", tag, owner, clock, "nes_txc_22211", __FILE__)
+ : nes_nrom_device(mconfig, NES_TXC_22211, tag, owner, clock)
{
}
nes_txc_dumarc_device::nes_txc_dumarc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txc_22211_device(mconfig, NES_TXC_DUMARACING, "NES Cart TXC Du Ma Racing PCB", tag, owner, clock, "nes_dumarc", __FILE__)
+ : nes_txc_22211_device(mconfig, NES_TXC_DUMARACING, tag, owner, clock)
{
}
nes_txc_mjblock_device::nes_txc_mjblock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txc_22211_device(mconfig, NES_TXC_MJBLOCK, "NES Cart TXC Mahjong Block PCB", tag, owner, clock, "nes_mjblock", __FILE__)
+ : nes_txc_22211_device(mconfig, NES_TXC_MJBLOCK, tag, owner, clock)
{
}
nes_txc_strikew_device::nes_txc_strikew_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TXC_STRIKEW, "NES Cart Strike Wolf PCB", tag, owner, clock, "nes_txc_strikew", __FILE__)
+ : nes_nrom_device(mconfig, NES_TXC_STRIKEW, tag, owner, clock)
{
}
nes_txc_commandos_device::nes_txc_commandos_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_TXC_COMMANDOS, "NES Cart Commandos (and others) PCB", tag, owner, clock, "nes_txc_comm", __FILE__)
+ : nes_nrom_device(mconfig, NES_TXC_COMMANDOS, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/txc.h b/src/devices/bus/nes/txc.h
index b8c11dddd20..efc32b58368 100644
--- a/src/devices/bus/nes/txc.h
+++ b/src/devices/bus/nes/txc.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_TXC_H
-#define __NES_TXC_H
+#ifndef MAME_BUS_NES_TXC_H
+#define MAME_BUS_NES_TXC_H
+
+#pragma once
#include "nxrom.h"
@@ -12,11 +14,8 @@ class nes_txc_22211_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_txc_22211_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_txc_22211_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
@@ -24,6 +23,11 @@ public:
virtual void pcb_reset() override;
protected:
+ nes_txc_22211_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
uint8_t m_reg[4];
};
@@ -62,11 +66,13 @@ public:
// construction/destruction
nes_txc_strikew_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -78,22 +84,22 @@ public:
// construction/destruction
nes_txc_commandos_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
-};
-
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+};
// device type definition
-extern const device_type NES_TXC_22211;
-extern const device_type NES_TXC_DUMARACING;
-extern const device_type NES_TXC_MJBLOCK;
-extern const device_type NES_TXC_STRIKEW;
-extern const device_type NES_TXC_COMMANDOS;
+DECLARE_DEVICE_TYPE(NES_TXC_22211, nes_txc_22211_device)
+DECLARE_DEVICE_TYPE(NES_TXC_DUMARACING, nes_txc_dumarac_device)
+DECLARE_DEVICE_TYPE(NES_TXC_MJBLOCK, nes_txc_mjblock_device)
+DECLARE_DEVICE_TYPE(NES_TXC_STRIKEW, nes_txc_strikew_device)
+DECLARE_DEVICE_TYPE(NES_TXC_COMMANDOS, nes_txc_commandos_device)
-#endif
+#endif // MAME_BUS_NES_TXC_H
diff --git a/src/devices/bus/nes/waixing.cpp b/src/devices/bus/nes/waixing.cpp
index fd343d910e3..f4d9c338f48 100644
--- a/src/devices/bus/nes/waixing.cpp
+++ b/src/devices/bus/nes/waixing.cpp
@@ -33,141 +33,141 @@
// constructor
//-------------------------------------------------
-const device_type NES_WAIXING_A = device_creator<nes_waixing_a_device>;
-const device_type NES_WAIXING_A1 = device_creator<nes_waixing_a1_device>;
-const device_type NES_WAIXING_B = device_creator<nes_waixing_b_device>;
-const device_type NES_WAIXING_C = device_creator<nes_waixing_c_device>;
-const device_type NES_WAIXING_D = device_creator<nes_waixing_d_device>;
-const device_type NES_WAIXING_E = device_creator<nes_waixing_e_device>;
-const device_type NES_WAIXING_F = device_creator<nes_waixing_f_device>;
-const device_type NES_WAIXING_G = device_creator<nes_waixing_g_device>;
-const device_type NES_WAIXING_H = device_creator<nes_waixing_h_device>;
-const device_type NES_WAIXING_H1 = device_creator<nes_waixing_h1_device>;
-const device_type NES_WAIXING_I = device_creator<nes_waixing_i_device>;
-const device_type NES_WAIXING_J = device_creator<nes_waixing_j_device>;
-const device_type NES_WAIXING_SH2 = device_creator<nes_waixing_sh2_device>;
-const device_type NES_WAIXING_SEC = device_creator<nes_waixing_sec_device>;
-const device_type NES_WAIXING_SGZ = device_creator<nes_waixing_sgz_device>;
-const device_type NES_WAIXING_SGZLZ = device_creator<nes_waixing_sgzlz_device>;
-const device_type NES_WAIXING_FFV = device_creator<nes_waixing_ffv_device>;
-const device_type NES_WAIXING_WXZS = device_creator<nes_waixing_wxzs_device>;
-const device_type NES_WAIXING_DQ8 = device_creator<nes_waixing_dq8_device>;
-const device_type NES_WAIXING_WXZS2 = device_creator<nes_waixing_wxzs2_device>;
-const device_type NES_WAIXING_FS304 = device_creator<nes_waixing_fs304_device>;
-
-
-nes_waixing_a_device::nes_waixing_a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_txrom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+DEFINE_DEVICE_TYPE(NES_WAIXING_A, nes_waixing_a_device, "nes_waixing_a", "NES Cart Waixing Type A PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_A1, nes_waixing_a1_device, "nes_waixing_a1", "NES Cart Waixing Type A (Alt) PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_B, nes_waixing_b_device, "nes_waixing_b", "NES Cart Waixing Type B PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_C, nes_waixing_c_device, "nes_waixing_c", "NES Cart Waixing Type C PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_D, nes_waixing_d_device, "nes_waixing_d", "NES Cart Waixing Type D PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_E, nes_waixing_e_device, "nes_waixing_e", "NES Cart Waixing Type E PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_F, nes_waixing_f_device, "nes_waixing_f", "NES Cart Waixing Type F PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_G, nes_waixing_g_device, "nes_waixing_g", "NES Cart Waixing Type G PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_H, nes_waixing_h_device, "nes_waixing_h", "NES Cart Waixing Type H PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_H1, nes_waixing_h1_device, "nes_waixing_h1", "NES Cart Waixing Type H (Alt) PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_I, nes_waixing_i_device, "nes_waixing_i", "NES Cart Waixing Type I PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_J, nes_waixing_j_device, "nes_waixing_j", "NES Cart Waixing Type J PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_SH2, nes_waixing_sh2_device, "nes_waixing_sh2", "NES Cart Waixing SH2 PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_SEC, nes_waixing_sec_device, "nes_waixing_sec", "NES Cart Waixing Security Chip PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_SGZ, nes_waixing_sgz_device, "nes_waixing_sgz", "NES Cart Waixing San Guo Zhi PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_SGZLZ, nes_waixing_sgzlz_device, "nes_waixing_sgzlz", "NES Cart Waixing San Guo Zhong Lie Zhuan PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_FFV, nes_waixing_ffv_device, "nes_waixing_ffv", "NES Cart Waixing Final Fantasy V PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_WXZS, nes_waixing_wxzs_device, "nes_waixing_wxzs", "NES Cart Waixing Wai Xing Zhan Shi PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_DQ8, nes_waixing_dq8_device, "nes_waixing_dq8", "NES Cart Waixing Dragon Quest VIII PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_WXZS2, nes_waixing_wxzs2_device, "nes_waixing_wxzs2", "NES Cart Waixing Wai Xing Zhan Shi 2 PCB")
+DEFINE_DEVICE_TYPE(NES_WAIXING_FS304, nes_waixing_fs304_device, "nes_waixing_fs304", "NES Cart Waixing FS-304 PCB")
+
+
+nes_waixing_a_device::nes_waixing_a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_txrom_device(mconfig, type, tag, owner, clock)
{
}
nes_waixing_a_device::nes_waixing_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_WAIXING_A, "NES Cart Waixing Type A PCB", tag, owner, clock, "nes_waixing_a", __FILE__)
+ : nes_waixing_a_device(mconfig, NES_WAIXING_A, tag, owner, clock)
{
}
nes_waixing_a1_device::nes_waixing_a1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_waixing_a_device(mconfig, NES_WAIXING_A1, "NES Cart Waixing Type A (Alt) PCB", tag, owner, clock, "nes_waixing_a1", __FILE__)
+ : nes_waixing_a_device(mconfig, NES_WAIXING_A1, tag, owner, clock)
{
}
nes_waixing_b_device::nes_waixing_b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_waixing_a_device(mconfig, NES_WAIXING_B, "NES Cart Waixing Type B PCB", tag, owner, clock, "nes_waixing_b", __FILE__)
+ : nes_waixing_a_device(mconfig, NES_WAIXING_B, tag, owner, clock)
{
}
nes_waixing_c_device::nes_waixing_c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_waixing_a_device(mconfig, NES_WAIXING_C, "NES Cart Waixing Type C PCB", tag, owner, clock, "nes_waixing_c", __FILE__)
+ : nes_waixing_a_device(mconfig, NES_WAIXING_C, tag, owner, clock)
{
}
nes_waixing_d_device::nes_waixing_d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_waixing_a_device(mconfig, NES_WAIXING_D, "NES Cart Waixing Type D PCB", tag, owner, clock, "nes_waixing_d", __FILE__)
+ : nes_waixing_a_device(mconfig, NES_WAIXING_D, tag, owner, clock)
{
}
nes_waixing_e_device::nes_waixing_e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_waixing_a_device(mconfig, NES_WAIXING_E, "NES Cart Waixing Type E PCB", tag, owner, clock, "nes_waixing_e", __FILE__)
+ : nes_waixing_a_device(mconfig, NES_WAIXING_E, tag, owner, clock)
{
}
nes_waixing_f_device::nes_waixing_f_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_waixing_a_device(mconfig, NES_WAIXING_F, "NES Cart Waixing Type F PCB", tag, owner, clock, "nes_waixing_f", __FILE__)
+ : nes_waixing_a_device(mconfig, NES_WAIXING_F, tag, owner, clock)
{
}
nes_waixing_g_device::nes_waixing_g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_waixing_a_device(mconfig, NES_WAIXING_G, "NES Cart Waixing Type G PCB", tag, owner, clock, "nes_waixing_g", __FILE__)
+ : nes_waixing_a_device(mconfig, NES_WAIXING_G, tag, owner, clock)
{
}
-nes_waixing_h_device::nes_waixing_h_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : nes_txrom_device(mconfig, type, name, tag, owner, clock, shortname, source)
+nes_waixing_h_device::nes_waixing_h_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : nes_txrom_device(mconfig, type, tag, owner, clock)
{
}
nes_waixing_h_device::nes_waixing_h_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_WAIXING_H, "NES Cart Waixing Type H PCB", tag, owner, clock, "nes_waixing_h", __FILE__)
+ : nes_waixing_h_device(mconfig, NES_WAIXING_H, tag, owner, clock)
{
}
nes_waixing_h1_device::nes_waixing_h1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_waixing_h_device(mconfig, NES_WAIXING_H1, "NES Cart Waixing Type H (Alt) PCB", tag, owner, clock, "nes_waixing_h1", __FILE__)
+ : nes_waixing_h_device(mconfig, NES_WAIXING_H1, tag, owner, clock)
{
}
nes_waixing_i_device::nes_waixing_i_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_waixing_a_device(mconfig, NES_WAIXING_I, "NES Cart Waixing Type I PCB", tag, owner, clock, "nes_waixing_i", __FILE__)
+ : nes_waixing_a_device(mconfig, NES_WAIXING_I, tag, owner, clock)
{
}
nes_waixing_j_device::nes_waixing_j_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_waixing_a_device(mconfig, NES_WAIXING_J, "NES Cart Waixing Type J PCB", tag, owner, clock, "nes_waixing_j", __FILE__)
+ : nes_waixing_a_device(mconfig, NES_WAIXING_J, tag, owner, clock)
{
}
nes_waixing_sh2_device::nes_waixing_sh2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_WAIXING_SH2, "NES Cart Waixing SH2 PCB", tag, owner, clock, "nes_waixing_sh2", __FILE__)
+ : nes_txrom_device(mconfig, NES_WAIXING_SH2, tag, owner, clock)
{
}
nes_waixing_sec_device::nes_waixing_sec_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_txrom_device(mconfig, NES_WAIXING_SEC, "NES Cart Waixing Security Chip PCB", tag, owner, clock, "nes_waixing_sec", __FILE__), m_reg(0)
- {
+ : nes_txrom_device(mconfig, NES_WAIXING_SEC, tag, owner, clock), m_reg(0)
+{
}
nes_waixing_sgz_device::nes_waixing_sgz_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_WAIXING_SGZ, "NES Cart Waixing San Guo Zhi PCB", tag, owner, clock, "nes_waixing_sgz", __FILE__), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_enable_latch(0)
- {
+ : nes_nrom_device(mconfig, NES_WAIXING_SGZ, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_enable_latch(0)
+{
}
nes_waixing_sgzlz_device::nes_waixing_sgzlz_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_WAIXING_SGZLZ, "NES Cart Waixing San Guo Zhong Lie Zhuan PCB", tag, owner, clock, "nes_waixing_sgzlz", __FILE__), m_reg{}
- {
+ : nes_nrom_device(mconfig, NES_WAIXING_SGZLZ, tag, owner, clock), m_reg{ 0, 0, 0, 0 }
+{
}
nes_waixing_ffv_device::nes_waixing_ffv_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_WAIXING_FFV, "NES Cart Waixing Final Fantasy V PCB", tag, owner, clock, "nes_waixing_ffv", __FILE__)
+ : nes_nrom_device(mconfig, NES_WAIXING_FFV, tag, owner, clock)
{
}
nes_waixing_wxzs_device::nes_waixing_wxzs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_WAIXING_WXZS, "NES Cart Waixing Wai Xing Zhan Shi PCB", tag, owner, clock, "nes_waixing_wxzs", __FILE__)
+ : nes_nrom_device(mconfig, NES_WAIXING_WXZS, tag, owner, clock)
{
}
nes_waixing_dq8_device::nes_waixing_dq8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_WAIXING_DQ8, "NES Cart Waixing Dragon Quest VIII PCB", tag, owner, clock, "nes_waixing_dq8", __FILE__)
+ : nes_nrom_device(mconfig, NES_WAIXING_DQ8, tag, owner, clock)
{
}
nes_waixing_wxzs2_device::nes_waixing_wxzs2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_WAIXING_WXZS2, "NES Cart Waixing Wai Xing Zhan Shi 2 PCB", tag, owner, clock, "nes_waixing_wxzs2", __FILE__)
+ : nes_nrom_device(mconfig, NES_WAIXING_WXZS2, tag, owner, clock)
{
}
nes_waixing_fs304_device::nes_waixing_fs304_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_WAIXING_FS304, "NES Cart Waixing FS-304 PCB", tag, owner, clock, "nes_waixing_fs304", __FILE__)
+ : nes_nrom_device(mconfig, NES_WAIXING_FS304, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/waixing.h b/src/devices/bus/nes/waixing.h
index dd53d109e73..5488973a14c 100644
--- a/src/devices/bus/nes/waixing.h
+++ b/src/devices/bus/nes/waixing.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __NES_WAIXING_H
-#define __NES_WAIXING_H
+#ifndef MAME_BUS_NES_WAIXING_H
+#define MAME_BUS_NES_WAIXING_H
+
+#pragma once
#include "mmc3.h"
@@ -12,11 +14,8 @@ class nes_waixing_a_device : public nes_txrom_device
{
public:
// construction/destruction
- nes_waixing_a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_waixing_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(waixing_write);
@@ -26,7 +25,13 @@ public:
virtual void pcb_reset() override;
protected:
+ nes_waixing_a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
void set_mirror(uint8_t nt);
+
uint8_t mapper_ram[0x400];
};
@@ -109,6 +114,7 @@ public:
virtual void chr_cb(int start, int bank, int source) override;
virtual void pcb_reset() override;
+
private:
virtual void set_prg(int prg_base, int prg_mask) override;
};
@@ -139,14 +145,17 @@ class nes_waixing_h_device : public nes_txrom_device
{
public:
// construction/destruction
- nes_waixing_h_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_waixing_h_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void chr_cb(int start, int bank, int source) override;
// This PCB does not have 1K of internal RAM, so it's not derived from nes_waixing_a_device!!
+
+protected:
+ nes_waixing_h_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual DECLARE_WRITE8_MEMBER(write_h) override;
};
@@ -185,13 +194,14 @@ public:
// construction/destruction
nes_waixing_j_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
virtual void set_prg(int prg_base, int prg_mask) override;
uint8_t m_reg[4];
};
@@ -225,8 +235,6 @@ public:
// construction/destruction
nes_waixing_sec_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void prg_cb(int start, int bank) override;
virtual void chr_cb(int start, int bank, int source) override;
@@ -234,6 +242,9 @@ public:
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
uint8_t m_reg;
};
@@ -246,14 +257,15 @@ public:
// construction/destruction
nes_waixing_sgz_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
uint16_t m_irq_count, m_irq_count_latch;
int m_irq_enable, m_irq_enable_latch;
@@ -269,13 +281,14 @@ public:
// construction/destruction
nes_waixing_sgzlz_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
uint8_t m_reg[4];
};
@@ -288,13 +301,14 @@ public:
// construction/destruction
nes_waixing_ffv_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
uint8_t m_reg[2];
};
@@ -307,11 +321,13 @@ public:
// construction/destruction
nes_waixing_wxzs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -323,11 +339,13 @@ public:
// construction/destruction
nes_waixing_dq8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -339,11 +357,13 @@ public:
// construction/destruction
nes_waixing_wxzs2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
@@ -355,42 +375,39 @@ public:
// construction/destruction
nes_waixing_fs304_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual void pcb_reset() override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
uint8_t m_reg[4];
};
-
-
-
// device type definition
-extern const device_type NES_WAIXING_A;
-extern const device_type NES_WAIXING_A1;
-extern const device_type NES_WAIXING_B;
-extern const device_type NES_WAIXING_C;
-extern const device_type NES_WAIXING_D;
-extern const device_type NES_WAIXING_E;
-extern const device_type NES_WAIXING_F;
-extern const device_type NES_WAIXING_G;
-extern const device_type NES_WAIXING_H;
-extern const device_type NES_WAIXING_H1;
-extern const device_type NES_WAIXING_I;
-extern const device_type NES_WAIXING_J;
-extern const device_type NES_WAIXING_SH2;
-extern const device_type NES_WAIXING_SEC;
-extern const device_type NES_WAIXING_SGZ;
-extern const device_type NES_WAIXING_SGZLZ;
-extern const device_type NES_WAIXING_FFV;
-extern const device_type NES_WAIXING_WXZS;
-extern const device_type NES_WAIXING_DQ8;
-extern const device_type NES_WAIXING_WXZS2;
-extern const device_type NES_WAIXING_FS304;
-
-
-#endif
+DECLARE_DEVICE_TYPE(NES_WAIXING_A, nes_waixing_a_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_A1, nes_waixing_a1_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_B, nes_waixing_b_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_C, nes_waixing_c_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_D, nes_waixing_d_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_E, nes_waixing_e_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_F, nes_waixing_f_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_G, nes_waixing_g_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_H, nes_waixing_h_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_H1, nes_waixing_h1_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_I, nes_waixing_i_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_J, nes_waixing_j_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_SH2, nes_waixing_sh2_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_SEC, nes_waixing_sec_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_SGZ, nes_waixing_sgz_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_SGZLZ, nes_waixing_sgzlz_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_FFV, nes_waixing_ffv_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_WXZS, nes_waixing_wxzs_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_DQ8, nes_waixing_dq8_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_WXZS2, nes_waixing_wxzs2_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_FS304, nes_waixing_fs304_device)
+
+#endif // MAME_BUS_NES_WAIXING_H
diff --git a/src/devices/bus/nes/zemina.cpp b/src/devices/bus/nes/zemina.cpp
index 2328b7485a8..bb4b3b61bc0 100644
--- a/src/devices/bus/nes/zemina.cpp
+++ b/src/devices/bus/nes/zemina.cpp
@@ -21,7 +21,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_ZEMINA = device_creator<nes_zemina_device>;
+DEFINE_DEVICE_TYPE(NES_ZEMINA, nes_zemina_device, "nes_zemina", "NES Cart Zemina PCB")
//**************************************************************************
// LIVE DEVICE
@@ -32,7 +32,7 @@ const device_type NES_ZEMINA = device_creator<nes_zemina_device>;
//-------------------------------------------------
nes_zemina_device::nes_zemina_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_ZEMINA, "NES Cart Zemina PCB", tag, owner, clock, "nes_zemina", __FILE__)
+ : nes_nrom_device(mconfig, NES_ZEMINA, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes/zemina.h b/src/devices/bus/nes/zemina.h
index d52f2db803c..87d170d053d 100644
--- a/src/devices/bus/nes/zemina.h
+++ b/src/devices/bus/nes/zemina.h
@@ -26,6 +26,6 @@ public:
};
// device type definition
-extern const device_type NES_ZEMINA;
+DECLARE_DEVICE_TYPE(NES_ZEMINA, nes_zemina_device)
-#endif /* MAME_BUS_NES_ZEMINA_H */
+#endif // MAME_BUS_NES_ZEMINA_H
diff --git a/src/devices/bus/nes_ctrl/4score.cpp b/src/devices/bus/nes_ctrl/4score.cpp
index ee2dc33db49..d786124d1a5 100644
--- a/src/devices/bus/nes_ctrl/4score.cpp
+++ b/src/devices/bus/nes_ctrl/4score.cpp
@@ -37,8 +37,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_4SCORE_P1P3 = device_creator<nes_4score_p1p3_device>;
-const device_type NES_4SCORE_P2P4 = device_creator<nes_4score_p2p4_device>;
+DEFINE_DEVICE_TYPE(NES_4SCORE_P1P3, nes_4score_p1p3_device, "nes_4score_p1p3", "Nintendo Four Score Adapter P1/P3")
+DEFINE_DEVICE_TYPE(NES_4SCORE_P2P4, nes_4score_p2p4_device, "nes_4score_p2p4", "Nintendo Four Score Adapter P2/P4")
static INPUT_PORTS_START( nes_4score_p1p3 )
@@ -111,23 +111,24 @@ ioport_constructor nes_4score_p2p4_device::device_input_ports() const
// nes_4score_device - constructor
//-------------------------------------------------
-nes_4score_device::nes_4score_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_nes_control_port_interface(mconfig, *this), m_latch(0)
- {
+nes_4score_device::nes_4score_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_nes_control_port_interface(mconfig, *this)
+ , m_latch(0)
+{
}
-nes_4score_p1p3_device::nes_4score_p1p3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nes_4score_device(mconfig, NES_4SCORE_P1P3, "Nintendo Four Score Adapter P1/P3", tag, owner, clock, "nes_4score_p1p3", __FILE__),
- m_joypad1(*this, "PAD1"),
- m_joypad3(*this, "PAD3")
+nes_4score_p1p3_device::nes_4score_p1p3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : nes_4score_device(mconfig, NES_4SCORE_P1P3, tag, owner, clock)
+ , m_joypad1(*this, "PAD1")
+ , m_joypad3(*this, "PAD3")
{
}
-nes_4score_p2p4_device::nes_4score_p2p4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nes_4score_device(mconfig, NES_4SCORE_P2P4, "Nintendo Four Score Adapter P2/P4", tag, owner, clock, "nes_4score_p2p4", __FILE__),
- m_joypad2(*this, "PAD2"),
- m_joypad4(*this, "PAD4")
+nes_4score_p2p4_device::nes_4score_p2p4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : nes_4score_device(mconfig, NES_4SCORE_P2P4, tag, owner, clock)
+ , m_joypad2(*this, "PAD2")
+ , m_joypad4(*this, "PAD4")
{
}
diff --git a/src/devices/bus/nes_ctrl/4score.h b/src/devices/bus/nes_ctrl/4score.h
index 2e8fee5cc60..c69249b5511 100644
--- a/src/devices/bus/nes_ctrl/4score.h
+++ b/src/devices/bus/nes_ctrl/4score.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_FOURSCORE__
-#define __NES_FOURSCORE__
+#ifndef MAME_BUS_NES_CTRL_4SCORE_H
+#define MAME_BUS_NES_CTRL_4SCORE_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -23,18 +23,16 @@
class nes_4score_device : public device_t,
public device_nes_control_port_interface
{
-public:
+protected:
// construction/destruction
- nes_4score_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ nes_4score_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual uint8_t read_bit0() override;
-protected:
uint32_t m_latch;
};
@@ -76,8 +74,8 @@ private:
// device type definition
-extern const device_type NES_4SCORE_P1P3;
-extern const device_type NES_4SCORE_P2P4;
+DECLARE_DEVICE_TYPE(NES_4SCORE_P1P3, nes_4score_p1p3_device)
+DECLARE_DEVICE_TYPE(NES_4SCORE_P2P4, nes_4score_p2p4_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_4SCORE_H
diff --git a/src/devices/bus/nes_ctrl/arkpaddle.cpp b/src/devices/bus/nes_ctrl/arkpaddle.cpp
index e4b24692fb1..8cd2cfea3c4 100644
--- a/src/devices/bus/nes_ctrl/arkpaddle.cpp
+++ b/src/devices/bus/nes_ctrl/arkpaddle.cpp
@@ -14,8 +14,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_ARKPADDLE = device_creator<nes_vaus_device>;
-const device_type NES_ARKPADDLE_FC = device_creator<nes_vausfc_device>;
+DEFINE_DEVICE_TYPE(NES_ARKPADDLE, nes_vaus_device, "nes_vaus", "NES Arkanoid Vaus Controller")
+DEFINE_DEVICE_TYPE(NES_ARKPADDLE_FC, nes_vausfc_device, "nes_vausfc", "FC Arkanoid Vaus Controller")
static INPUT_PORTS_START( arkanoid_paddle )
@@ -45,24 +45,22 @@ ioport_constructor nes_vaus_device::device_input_ports() const
// nes_vaus_device - constructor
//-------------------------------------------------
-nes_vaus_device::nes_vaus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_nes_control_port_interface(mconfig, *this),
- m_paddle(*this, "PADDLE"),
- m_button(*this, "BUTTON"), m_start_conv(0), m_latch(0)
- {
+nes_vaus_device::nes_vaus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_nes_control_port_interface(mconfig, *this)
+ , m_paddle(*this, "PADDLE")
+ , m_button(*this, "BUTTON")
+ , m_start_conv(0), m_latch(0)
+{
}
-nes_vaus_device::nes_vaus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_ARKPADDLE, "NES Arkanoid Vaus Controller", tag, owner, clock, "nes_vaus", __FILE__),
- device_nes_control_port_interface(mconfig, *this),
- m_paddle(*this, "PADDLE"),
- m_button(*this, "BUTTON"), m_start_conv(0), m_latch(0)
+nes_vaus_device::nes_vaus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : nes_vaus_device(mconfig, NES_ARKPADDLE, tag, owner, clock)
{
}
-nes_vausfc_device::nes_vausfc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nes_vaus_device(mconfig, NES_ARKPADDLE_FC, "FC Arkanoid Vaus Controller", tag, owner, clock, "nes_vausfc", __FILE__)
+nes_vausfc_device::nes_vausfc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : nes_vaus_device(mconfig, NES_ARKPADDLE_FC, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nes_ctrl/arkpaddle.h b/src/devices/bus/nes_ctrl/arkpaddle.h
index 5a7eba03f02..cdd6255792b 100644
--- a/src/devices/bus/nes_ctrl/arkpaddle.h
+++ b/src/devices/bus/nes_ctrl/arkpaddle.h
@@ -7,32 +7,32 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_ARKPADDLE__
-#define __NES_ARKPADDLE__
+#ifndef MAME_BUS_NES_CTRL_ARKPADDLE_H
+#define MAME_BUS_NES_CTRL_ARKPADDLE_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> nes_vaus_device
-class nes_vaus_device : public device_t,
- public device_nes_control_port_interface
+class nes_vaus_device : public device_t, public device_nes_control_port_interface
{
public:
// construction/destruction
- nes_vaus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_vaus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
protected:
+ nes_vaus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -62,8 +62,7 @@ protected:
// device type definition
-extern const device_type NES_ARKPADDLE;
-extern const device_type NES_ARKPADDLE_FC;
-
+DECLARE_DEVICE_TYPE(NES_ARKPADDLE, nes_vaus_device)
+DECLARE_DEVICE_TYPE(NES_ARKPADDLE_FC, nes_vausfc_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_ARKPADDLE_H
diff --git a/src/devices/bus/nes_ctrl/bcbattle.cpp b/src/devices/bus/nes_ctrl/bcbattle.cpp
index 54cf48ce61f..478b6b88699 100644
--- a/src/devices/bus/nes_ctrl/bcbattle.cpp
+++ b/src/devices/bus/nes_ctrl/bcbattle.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_BARCODE_BATTLER = device_creator<nes_bcbattle_device>;
+DEFINE_DEVICE_TYPE(NES_BARCODE_BATTLER, nes_bcbattle_device, "nes_bcbattle", "Epoch Barcode Battler (FC)")
MACHINE_CONFIG_FRAGMENT( nes_battler )
@@ -82,10 +82,11 @@ void nes_bcbattle_device::device_timer(emu_timer &timer, device_timer_id id, int
// nes_bcbattle_device - constructor
//-------------------------------------------------
-nes_bcbattle_device::nes_bcbattle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_BARCODE_BATTLER, "Epoch Barcode Battler (FC)", tag, owner, clock, "nes_bcbattle", __FILE__),
- device_nes_control_port_interface(mconfig, *this),
- m_reader(*this, "battler"), m_pending_code(0), m_new_code(0), m_transmitting(0), m_cur_bit(0), m_cur_byte(0), battler_timer(nullptr)
+nes_bcbattle_device::nes_bcbattle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NES_BARCODE_BATTLER, tag, owner, clock)
+ , device_nes_control_port_interface(mconfig, *this)
+ , m_reader(*this, "battler")
+ , m_pending_code(0), m_new_code(0), m_transmitting(0), m_cur_bit(0), m_cur_byte(0), battler_timer(nullptr)
{
}
diff --git a/src/devices/bus/nes_ctrl/bcbattle.h b/src/devices/bus/nes_ctrl/bcbattle.h
index db0299bd9ec..f485d9c6b35 100644
--- a/src/devices/bus/nes_ctrl/bcbattle.h
+++ b/src/devices/bus/nes_ctrl/bcbattle.h
@@ -6,15 +6,15 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_BCBATTLE__
-#define __NES_BCBATTLE__
+#ifndef MAME_BUS_NES_CTRL_BCBATTLE_H
+#define MAME_BUS_NES_CTRL_BCBATTLE_H
+#pragma once
#include "ctrl.h"
#include "machine/bcreader.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -28,18 +28,19 @@ public:
// construction/destruction
nes_bcbattle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
+ static constexpr device_timer_id TIMER_BATTLER = 1;
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual uint8_t read_exp(offs_t offset) override;
int read_current_bit();
- static const device_timer_id TIMER_BATTLER = 1;
required_device<barcode_reader_device> m_reader;
uint8_t m_current_barcode[20];
int m_pending_code, m_new_code, m_transmitting, m_cur_bit, m_cur_byte;
@@ -47,6 +48,6 @@ protected:
};
// device type definition
-extern const device_type NES_BARCODE_BATTLER;
+DECLARE_DEVICE_TYPE(NES_BARCODE_BATTLER, nes_bcbattle_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_BCBATTLE_H
diff --git a/src/devices/bus/nes_ctrl/ctrl.cpp b/src/devices/bus/nes_ctrl/ctrl.cpp
index ec439f91dbd..ef491efc889 100644
--- a/src/devices/bus/nes_ctrl/ctrl.cpp
+++ b/src/devices/bus/nes_ctrl/ctrl.cpp
@@ -64,7 +64,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NES_CONTROL_PORT = device_creator<nes_control_port_device>;
+DEFINE_DEVICE_TYPE(NES_CONTROL_PORT, nes_control_port_device, "nes_control_port", "Nintendo NES/FC control port")
@@ -77,7 +77,7 @@ const device_type NES_CONTROL_PORT = device_creator<nes_control_port_device>;
//-------------------------------------------------
device_nes_control_port_interface::device_nes_control_port_interface(const machine_config &mconfig, device_t &device) :
- device_slot_card_interface(mconfig, device)
+ device_slot_card_interface(mconfig, device)
{
m_port = dynamic_cast<nes_control_port_device *>(device.owner());
}
@@ -102,8 +102,9 @@ device_nes_control_port_interface::~device_nes_control_port_interface()
//-------------------------------------------------
nes_control_port_device::nes_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_CONTROL_PORT, "Nintendo NES/FC control port", tag, owner, clock, "nes_control_port", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr)
+ device_t(mconfig, NES_CONTROL_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_device(nullptr)
{
}
diff --git a/src/devices/bus/nes_ctrl/ctrl.h b/src/devices/bus/nes_ctrl/ctrl.h
index 54faa60aa90..6442f6d2709 100644
--- a/src/devices/bus/nes_ctrl/ctrl.h
+++ b/src/devices/bus/nes_ctrl/ctrl.h
@@ -10,10 +10,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_NES_CTRL_CTRL_H
+#define MAME_BUS_NES_CTRL_CTRL_H
-#ifndef __NES_CONTROL_PORT__
-#define __NES_CONTROL_PORT__
+#pragma once
//**************************************************************************
@@ -28,15 +28,16 @@ class device_nes_control_port_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_nes_control_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_nes_control_port_interface();
- virtual uint8_t read_bit0() { return 0; };
- virtual uint8_t read_bit34() { return 0; };
- virtual uint8_t read_exp(offs_t offset) { return 0; };
- virtual void write(uint8_t data) { };
+ virtual uint8_t read_bit0() { return 0; }
+ virtual uint8_t read_bit34() { return 0; }
+ virtual uint8_t read_exp(offs_t offset) { return 0; }
+ virtual void write(uint8_t data) { }
protected:
+ device_nes_control_port_interface(const machine_config &mconfig, device_t &device);
+
nes_control_port_device *m_port;
};
@@ -72,7 +73,7 @@ protected:
// device type definition
-extern const device_type NES_CONTROL_PORT;
+DECLARE_DEVICE_TYPE(NES_CONTROL_PORT, nes_control_port_device)
//**************************************************************************
@@ -99,4 +100,4 @@ SLOT_INTERFACE_EXTERN( fc_control_port2_devices );
SLOT_INTERFACE_EXTERN( fc_expansion_devices );
-#endif
+#endif // MAME_BUS_NES_CTRL_CTRL_H
diff --git a/src/devices/bus/nes_ctrl/fckeybrd.cpp b/src/devices/bus/nes_ctrl/fckeybrd.cpp
index 27582ac1f76..bc8bfbe98de 100644
--- a/src/devices/bus/nes_ctrl/fckeybrd.cpp
+++ b/src/devices/bus/nes_ctrl/fckeybrd.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_FCKEYBOARD = device_creator<nes_fckeybrd_device>;
+DEFINE_DEVICE_TYPE(NES_FCKEYBOARD, nes_fckeybrd_device, "nes_fckeybrd", "Nintendo Family Computer Keyboard Component")
static INPUT_PORTS_START( fc_keyboard )
@@ -146,7 +146,7 @@ machine_config_constructor nes_fckeybrd_device::device_mconfig_additions() const
//-------------------------------------------------
nes_fckeybrd_device::nes_fckeybrd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NES_FCKEYBOARD, "Nintendo Family Computer Keyboard Component", tag, owner, clock, "nes_fckeybrd", __FILE__)
+ : device_t(mconfig, NES_FCKEYBOARD, tag, owner, clock)
, device_nes_control_port_interface(mconfig, *this)
, m_cassette(*this, "tape")
, m_kbd(*this, "FCKEY.%u", 0)
diff --git a/src/devices/bus/nes_ctrl/fckeybrd.h b/src/devices/bus/nes_ctrl/fckeybrd.h
index 73fc33cb980..5859a792ae6 100644
--- a/src/devices/bus/nes_ctrl/fckeybrd.h
+++ b/src/devices/bus/nes_ctrl/fckeybrd.h
@@ -6,15 +6,15 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_FCKEYBRD__
-#define __NES_FCKEYBRD__
+#ifndef MAME_BUS_NES_CTRL_FCKEYBOARD_H
+#define MAME_BUS_NES_CTRL_FCKEYBOARD_H
+#pragma once
#include "ctrl.h"
#include "imagedev/cassette.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -47,7 +47,7 @@ private:
// device type definition
-extern const device_type NES_FCKEYBOARD;
+DECLARE_DEVICE_TYPE(NES_FCKEYBOARD, nes_fckeybrd_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_FCKEYBOARD_H
diff --git a/src/devices/bus/nes_ctrl/ftrainer.cpp b/src/devices/bus/nes_ctrl/ftrainer.cpp
index bb9b5ad0f9f..06f4aaf4f3c 100644
--- a/src/devices/bus/nes_ctrl/ftrainer.cpp
+++ b/src/devices/bus/nes_ctrl/ftrainer.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_FTRAINER = device_creator<nes_ftrainer_device>;
+DEFINE_DEVICE_TYPE(NES_FTRAINER, nes_ftrainer_device, "nes_famtrain", "Bandai Family Trainer")
static INPUT_PORTS_START( nes_joypad )
@@ -85,7 +85,7 @@ ioport_constructor nes_ftrainer_device::device_input_ports() const
//-------------------------------------------------
nes_ftrainer_device::nes_ftrainer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NES_FTRAINER, "Bandai Family Trainer", tag, owner, clock, "nes_famtrain", __FILE__)
+ : device_t(mconfig, NES_FTRAINER, tag, owner, clock)
, device_nes_control_port_interface(mconfig, *this)
, m_trainer(*this, "FT_COL.%u", 0)
, m_row_scan(0)
diff --git a/src/devices/bus/nes_ctrl/ftrainer.h b/src/devices/bus/nes_ctrl/ftrainer.h
index 76999eea959..d72077c93a2 100644
--- a/src/devices/bus/nes_ctrl/ftrainer.h
+++ b/src/devices/bus/nes_ctrl/ftrainer.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_FTRAINER__
-#define __NES_FTRAINER__
+#ifndef MAME_BUS_NES_CTRL_FTRAINER_H
+#define MAME_BUS_NES_CTRL_FTRAINER_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type NES_FTRAINER;
+DECLARE_DEVICE_TYPE(NES_FTRAINER, nes_ftrainer_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_FTRAINER_H
diff --git a/src/devices/bus/nes_ctrl/hori.cpp b/src/devices/bus/nes_ctrl/hori.cpp
index 32c088e8954..8869e7df481 100644
--- a/src/devices/bus/nes_ctrl/hori.cpp
+++ b/src/devices/bus/nes_ctrl/hori.cpp
@@ -27,8 +27,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_HORITWIN = device_creator<nes_horitwin_device>;
-const device_type NES_HORI4P = device_creator<nes_hori4p_device>;
+DEFINE_DEVICE_TYPE(NES_HORITWIN, nes_horitwin_device, "nes_horitwin", "FC Hori Twin Adapter")
+DEFINE_DEVICE_TYPE(NES_HORI4P, nes_hori4p_device, "nes_hori4p", "FC Hori 4P Adapter")
static INPUT_PORTS_START( nes_hori4p )
@@ -91,21 +91,21 @@ machine_config_constructor nes_hori4p_device::device_mconfig_additions() const
//-------------------------------------------------
nes_horitwin_device::nes_horitwin_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_HORITWIN, "Hori Twin Adapter", tag, owner, clock, "nes_horitwin", __FILE__),
- device_nes_control_port_interface(mconfig, *this),
- m_port1(*this, "port1"),
- m_port2(*this, "port2")
+ device_t(mconfig, NES_HORITWIN, tag, owner, clock),
+ device_nes_control_port_interface(mconfig, *this),
+ m_port1(*this, "port1"),
+ m_port2(*this, "port2")
{
}
nes_hori4p_device::nes_hori4p_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_HORI4P, "Hori 4P Adapter", tag, owner, clock, "nes_hori4p", __FILE__),
- device_nes_control_port_interface(mconfig, *this),
- m_port1(*this, "port1"),
- m_port2(*this, "port2"),
- m_port3(*this, "port3"),
- m_port4(*this, "port4"),
- m_cfg(*this, "CONFIG")
+ device_t(mconfig, NES_HORI4P, tag, owner, clock),
+ device_nes_control_port_interface(mconfig, *this),
+ m_port1(*this, "port1"),
+ m_port2(*this, "port2"),
+ m_port3(*this, "port3"),
+ m_port4(*this, "port4"),
+ m_cfg(*this, "CONFIG")
{
}
diff --git a/src/devices/bus/nes_ctrl/hori.h b/src/devices/bus/nes_ctrl/hori.h
index e490f232365..6fb7d9c1eee 100644
--- a/src/devices/bus/nes_ctrl/hori.h
+++ b/src/devices/bus/nes_ctrl/hori.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_HORI__
-#define __NES_HORI__
+#ifndef MAME_BUS_NES_CTRL_HORI_H
+#define MAME_BUS_NES_CTRL_HORI_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -31,7 +31,7 @@ public:
protected:
// device-level overrides
- virtual void device_start() override {}
+ virtual void device_start() override { }
virtual uint8_t read_exp(offs_t offset) override;
virtual void write(uint8_t data) override;
@@ -55,7 +55,7 @@ public:
protected:
// device-level overrides
- virtual void device_start() override {}
+ virtual void device_start() override { }
virtual uint8_t read_exp(offs_t offset) override;
virtual void write(uint8_t data) override;
@@ -70,8 +70,8 @@ private:
// device type definition
-extern const device_type NES_HORITWIN;
-extern const device_type NES_HORI4P;
+DECLARE_DEVICE_TYPE(NES_HORITWIN, nes_horitwin_device)
+DECLARE_DEVICE_TYPE(NES_HORI4P, nes_hori4p_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_HORI_H
diff --git a/src/devices/bus/nes_ctrl/joypad.cpp b/src/devices/bus/nes_ctrl/joypad.cpp
index a67bd9bb98a..ec3d54ebb7e 100644
--- a/src/devices/bus/nes_ctrl/joypad.cpp
+++ b/src/devices/bus/nes_ctrl/joypad.cpp
@@ -34,11 +34,11 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_JOYPAD = device_creator<nes_joypad_device>;
-const device_type NES_FCPAD_P2 = device_creator<nes_fcpad2_device>;
-const device_type NES_CCPAD_LEFT = device_creator<nes_ccpadl_device>;
-const device_type NES_CCPAD_RIGHT = device_creator<nes_ccpadr_device>;
-const device_type NES_ARCSTICK = device_creator<nes_arcstick_device>;
+DEFINE_DEVICE_TYPE(NES_JOYPAD, nes_joypad_device, "nes_joypad", "Nintendo NES / FC Control Pad")
+DEFINE_DEVICE_TYPE(NES_FCPAD_P2, nes_fcpad2_device, "nes_fcpad2", "Nintendo Family Computer P2 Pad")
+DEFINE_DEVICE_TYPE(NES_CCPAD_LEFT, nes_ccpadl_device, "nes_ccpadl", "FC Crazy Climber Left Pad")
+DEFINE_DEVICE_TYPE(NES_CCPAD_RIGHT, nes_ccpadr_device, "nes_ccpadr", "FC Crazy Climber Right Pad")
+DEFINE_DEVICE_TYPE(NES_ARCSTICK, nes_arcstick_device, "nes_arcstick", "Nintendo Family Computer Arcade Stick")
static INPUT_PORTS_START( nes_joypad )
@@ -174,39 +174,37 @@ machine_config_constructor nes_arcstick_device::device_mconfig_additions() const
// nes_joypad_device - constructor
//-------------------------------------------------
-nes_joypad_device::nes_joypad_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_nes_control_port_interface(mconfig, *this),
- m_joypad(*this, "JOYPAD"), m_latch(0)
+nes_joypad_device::nes_joypad_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_nes_control_port_interface(mconfig, *this),
+ m_joypad(*this, "JOYPAD"), m_latch(0)
{
}
nes_joypad_device::nes_joypad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_JOYPAD, "Nintendo NES / FC Control Pad", tag, owner, clock, "nes_joypad", __FILE__),
- device_nes_control_port_interface(mconfig, *this),
- m_joypad(*this, "JOYPAD"), m_latch(0)
+ nes_joypad_device(mconfig, NES_JOYPAD, tag, owner, clock)
{
}
nes_fcpad2_device::nes_fcpad2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nes_joypad_device(mconfig, NES_FCPAD_P2, "Nintendo Family Computer P2 Pad", tag, owner, clock, "nes_fcpad2", __FILE__)
+ nes_joypad_device(mconfig, NES_FCPAD_P2, tag, owner, clock)
{
}
nes_ccpadl_device::nes_ccpadl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nes_joypad_device(mconfig, NES_CCPAD_LEFT, "FC Crazy Climber Left Pad", tag, owner, clock, "nes_ccpadl", __FILE__)
+ nes_joypad_device(mconfig, NES_CCPAD_LEFT, tag, owner, clock)
{
}
nes_ccpadr_device::nes_ccpadr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nes_joypad_device(mconfig, NES_CCPAD_RIGHT, "FC Crazy Climber Right Pad", tag, owner, clock, "nes_ccpadr", __FILE__)
+ nes_joypad_device(mconfig, NES_CCPAD_RIGHT, tag, owner, clock)
{
}
nes_arcstick_device::nes_arcstick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nes_joypad_device(mconfig, NES_ARCSTICK, "Nintendo Family Computer Arcade Stick", tag, owner, clock, "nes_arcstick", __FILE__),
- m_daisychain(*this, "subexp"),
- m_cfg(*this, "CONFIG")
+ nes_joypad_device(mconfig, NES_ARCSTICK, tag, owner, clock),
+ m_daisychain(*this, "subexp"),
+ m_cfg(*this, "CONFIG")
{
}
diff --git a/src/devices/bus/nes_ctrl/joypad.h b/src/devices/bus/nes_ctrl/joypad.h
index c7accb6db8a..bfee068f81d 100644
--- a/src/devices/bus/nes_ctrl/joypad.h
+++ b/src/devices/bus/nes_ctrl/joypad.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_JOYPAD__
-#define __NES_JOYPAD__
+#ifndef MAME_BUS_NES_CTRL_JOYPAD_H
+#define MAME_BUS_NES_CTRL_JOYPAD_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -25,12 +25,13 @@ class nes_joypad_device : public device_t,
{
public:
// construction/destruction
- nes_joypad_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
nes_joypad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ioport_constructor device_input_ports() const override;
protected:
+ nes_joypad_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -101,10 +102,10 @@ protected:
// device type definition
-extern const device_type NES_JOYPAD;
-extern const device_type NES_FCPAD_P2;
-extern const device_type NES_CCPAD_LEFT;
-extern const device_type NES_CCPAD_RIGHT;
-extern const device_type NES_ARCSTICK;
+DECLARE_DEVICE_TYPE(NES_JOYPAD, nes_joypad_device)
+DECLARE_DEVICE_TYPE(NES_FCPAD_P2, nes_fcpad2_device)
+DECLARE_DEVICE_TYPE(NES_CCPAD_LEFT, nes_ccpadl_device)
+DECLARE_DEVICE_TYPE(NES_CCPAD_RIGHT, nes_ccpadr_device)
+DECLARE_DEVICE_TYPE(NES_ARCSTICK, nes_arcstick_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_JOYPAD_H
diff --git a/src/devices/bus/nes_ctrl/konamihs.cpp b/src/devices/bus/nes_ctrl/konamihs.cpp
index 00b39b25b53..9522f5e3c2b 100644
--- a/src/devices/bus/nes_ctrl/konamihs.cpp
+++ b/src/devices/bus/nes_ctrl/konamihs.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_KONAMIHS = device_creator<nes_konamihs_device>;
+DEFINE_DEVICE_TYPE(NES_KONAMIHS, nes_konamihs_device, "nes_konamihs", "Konami Hyper Shot Controller")
static INPUT_PORTS_START( nes_konamihs )
@@ -44,10 +44,12 @@ ioport_constructor nes_konamihs_device::device_input_ports() const
//-------------------------------------------------
nes_konamihs_device::nes_konamihs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_KONAMIHS, "Konami Hyper Shot Controller", tag, owner, clock, "nes_konamihs", __FILE__),
- device_nes_control_port_interface(mconfig, *this),
- m_ipt_p1(*this, "P1"),
- m_ipt_p2(*this, "P2"), m_latch_p1(0), m_latch_p2(0)
+ device_t(mconfig, NES_KONAMIHS, tag, owner, clock),
+ device_nes_control_port_interface(mconfig, *this),
+ m_ipt_p1(*this, "P1"),
+ m_ipt_p2(*this, "P2"),
+ m_latch_p1(0),
+ m_latch_p2(0)
{
}
diff --git a/src/devices/bus/nes_ctrl/konamihs.h b/src/devices/bus/nes_ctrl/konamihs.h
index cc6156baa8b..4d8b480968b 100644
--- a/src/devices/bus/nes_ctrl/konamihs.h
+++ b/src/devices/bus/nes_ctrl/konamihs.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_KONAMIHS__
-#define __NES_KONAMIHS__
+#ifndef MAME_BUS_NES_CTRL_KONAMIHS_H
+#define MAME_BUS_NES_CTRL_KONAMIHS_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -43,6 +43,6 @@ protected:
};
// device type definition
-extern const device_type NES_KONAMIHS;
+DECLARE_DEVICE_TYPE(NES_KONAMIHS, nes_konamihs_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_KONAMIHS_H
diff --git a/src/devices/bus/nes_ctrl/miracle.cpp b/src/devices/bus/nes_ctrl/miracle.cpp
index c4dd099ede4..c24b39386ab 100644
--- a/src/devices/bus/nes_ctrl/miracle.cpp
+++ b/src/devices/bus/nes_ctrl/miracle.cpp
@@ -19,7 +19,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_MIRACLE = device_creator<nes_miracle_device>;
+DEFINE_DEVICE_TYPE(NES_MIRACLE, nes_miracle_device, "nes_miracle", "NES Miracle Piano Controller")
MACHINE_CONFIG_FRAGMENT( nes_miracle )
@@ -60,12 +60,12 @@ void nes_miracle_device::device_timer(emu_timer &timer, device_timer_id id, int
//-------------------------------------------------
nes_miracle_device::nes_miracle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_MIRACLE, "Miracle Piano Controller", tag, owner, clock, "nes_miracle", __FILE__),
- device_serial_interface(mconfig, *this),
- device_nes_control_port_interface(mconfig, *this),
- m_midiin(*this, "mdin"),
- m_midiout(*this, "mdout"), strobe_timer(nullptr), m_strobe_on(0), m_midi_mode(0), m_sent_bits(0), m_strobe_clock(0),
- m_data_sent(0), m_xmit_read(0), m_xmit_write(0), m_recv_read(0), m_recv_write(0), m_tx_busy(false), m_read_status(false), m_status_bit(false)
+ device_t(mconfig, NES_MIRACLE, tag, owner, clock),
+ device_serial_interface(mconfig, *this),
+ device_nes_control_port_interface(mconfig, *this),
+ m_midiin(*this, "mdin"),
+ m_midiout(*this, "mdout"), strobe_timer(nullptr), m_strobe_on(0), m_midi_mode(0), m_sent_bits(0), m_strobe_clock(0),
+ m_data_sent(0), m_xmit_read(0), m_xmit_write(0), m_recv_read(0), m_recv_write(0), m_tx_busy(false), m_read_status(false), m_status_bit(false)
{
}
diff --git a/src/devices/bus/nes_ctrl/miracle.h b/src/devices/bus/nes_ctrl/miracle.h
index 167f35b6118..5e8944ae828 100644
--- a/src/devices/bus/nes_ctrl/miracle.h
+++ b/src/devices/bus/nes_ctrl/miracle.h
@@ -6,15 +6,15 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_MIRACLE__
-#define __NES_MIRACLE__
+#ifndef MAME_BUS_NES_CTRL_MIRACLE_H
+#define MAME_BUS_NES_CTRL_MIRACLE_H
+#pragma once
#include "ctrl.h"
#include "bus/midi/midi.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -26,33 +26,33 @@ class nes_miracle_device : public device_t,
public device_nes_control_port_interface
{
public:
- static const int XMIT_RING_SIZE = 64;
- static const int RECV_RING_SIZE = 64;
-
// construction/destruction
nes_miracle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual machine_config_constructor device_mconfig_additions() const override;
- // serial overrides
- virtual void rcv_complete() override; // Rx completed receiving byte
- virtual void tra_complete() override; // Tx completed sending byte
- virtual void tra_callback() override; // Tx send bit
-
- void xmit_char(uint8_t data);
-
required_device<midi_port_device> m_midiin, m_midiout;
protected:
+ static constexpr int XMIT_RING_SIZE = 64;
+ static constexpr int RECV_RING_SIZE = 64;
+ static constexpr device_timer_id TIMER_STROBE_ON = 0;
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ // serial overrides
+ virtual void rcv_complete() override; // Rx completed receiving byte
+ virtual void tra_complete() override; // Tx completed sending byte
+ virtual void tra_callback() override; // Tx send bit
+
+ void xmit_char(uint8_t data);
+
virtual uint8_t read_bit0() override;
virtual void write(uint8_t data) override;
- static const device_timer_id TIMER_STROBE_ON = 0;
emu_timer *strobe_timer;
int m_strobe_on, m_midi_mode, m_sent_bits;
@@ -65,6 +65,6 @@ protected:
};
// device type definition
-extern const device_type NES_MIRACLE;
+DECLARE_DEVICE_TYPE(NES_MIRACLE, nes_miracle_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_MIRACLE_H
diff --git a/src/devices/bus/nes_ctrl/mjpanel.cpp b/src/devices/bus/nes_ctrl/mjpanel.cpp
index fded1549ca5..e667487dac5 100644
--- a/src/devices/bus/nes_ctrl/mjpanel.cpp
+++ b/src/devices/bus/nes_ctrl/mjpanel.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_MJPANEL = device_creator<nes_mjpanel_device>;
+DEFINE_DEVICE_TYPE(NES_MJPANEL, nes_mjpanel_device, "nes_mjpanel", "Famicom Mahjong Panel")
static INPUT_PORTS_START( nes_mjpanel )
@@ -71,7 +71,7 @@ ioport_constructor nes_mjpanel_device::device_input_ports() const
//-------------------------------------------------
nes_mjpanel_device::nes_mjpanel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NES_MJPANEL, "Famicom Mahjong Panel", tag, owner, clock, "nes_mjpanel", __FILE__)
+ : device_t(mconfig, NES_MJPANEL, tag, owner, clock)
, device_nes_control_port_interface(mconfig, *this)
, m_panel(*this, "MJPANEL.%u", 0)
, m_latch(0)
diff --git a/src/devices/bus/nes_ctrl/mjpanel.h b/src/devices/bus/nes_ctrl/mjpanel.h
index 7580ef400b2..1a18bf0b19c 100644
--- a/src/devices/bus/nes_ctrl/mjpanel.h
+++ b/src/devices/bus/nes_ctrl/mjpanel.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_MJPANEL__
-#define __NES_MJPANEL__
+#ifndef MAME_BUS_NES_CTRL_MJPANEL_H
+#define MAME_BUS_NES_CTRL_MJPANEL_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type NES_MJPANEL;
+DECLARE_DEVICE_TYPE(NES_MJPANEL, nes_mjpanel_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_MJPANEL_H
diff --git a/src/devices/bus/nes_ctrl/pachinko.cpp b/src/devices/bus/nes_ctrl/pachinko.cpp
index 9a82d894b6f..d8aa81e3091 100644
--- a/src/devices/bus/nes_ctrl/pachinko.cpp
+++ b/src/devices/bus/nes_ctrl/pachinko.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_PACHINKO = device_creator<nes_pachinko_device>;
+DEFINE_DEVICE_TYPE(NES_PACHINKO, nes_pachinko_device, "nes_pachinko", "Famicom Pachinko Controller")
static INPUT_PORTS_START( nes_pachinko )
@@ -49,10 +49,11 @@ ioport_constructor nes_pachinko_device::device_input_ports() const
//-------------------------------------------------
nes_pachinko_device::nes_pachinko_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_PACHINKO, "Famicom Pachinko Controller", tag, owner, clock, "nes_pachinko", __FILE__),
- device_nes_control_port_interface(mconfig, *this),
- m_joypad(*this, "JOYPAD"),
- m_trigger(*this, "TRIGGER"), m_latch(0)
+ device_t(mconfig, NES_PACHINKO, tag, owner, clock),
+ device_nes_control_port_interface(mconfig, *this),
+ m_joypad(*this, "JOYPAD"),
+ m_trigger(*this, "TRIGGER"),
+ m_latch(0)
{
}
diff --git a/src/devices/bus/nes_ctrl/pachinko.h b/src/devices/bus/nes_ctrl/pachinko.h
index 2f982108bb2..f4f7feae596 100644
--- a/src/devices/bus/nes_ctrl/pachinko.h
+++ b/src/devices/bus/nes_ctrl/pachinko.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_PACHINKO__
-#define __NES_PACHINKO__
+#ifndef MAME_BUS_NES_CTRL_PACHINKO_H
+#define MAME_BUS_NES_CTRL_PACHINKO_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -43,6 +43,6 @@ protected:
};
// device type definition
-extern const device_type NES_PACHINKO;
+DECLARE_DEVICE_TYPE(NES_PACHINKO, nes_pachinko_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_PACHINKO_H
diff --git a/src/devices/bus/nes_ctrl/partytap.cpp b/src/devices/bus/nes_ctrl/partytap.cpp
index 6a0b3c9880c..b9029ab2f3a 100644
--- a/src/devices/bus/nes_ctrl/partytap.cpp
+++ b/src/devices/bus/nes_ctrl/partytap.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_PARTYTAP = device_creator<nes_partytap_device>;
+DEFINE_DEVICE_TYPE(NES_PARTYTAP, nes_partytap_device, "nes_partytap", "Yonezawa Party Tap Controller")
static INPUT_PORTS_START( nes_partytap )
@@ -45,9 +45,11 @@ ioport_constructor nes_partytap_device::device_input_ports() const
//-------------------------------------------------
nes_partytap_device::nes_partytap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_PARTYTAP, "Yonezawa Party Tap Controller", tag, owner, clock, "nes_partytap", __FILE__),
- device_nes_control_port_interface(mconfig, *this),
- m_inputs(*this, "INPUTS"), m_mode(0), m_latch(0)
+ device_t(mconfig, NES_PARTYTAP, tag, owner, clock),
+ device_nes_control_port_interface(mconfig, *this),
+ m_inputs(*this, "INPUTS"),
+ m_mode(0),
+ m_latch(0)
{
}
diff --git a/src/devices/bus/nes_ctrl/partytap.h b/src/devices/bus/nes_ctrl/partytap.h
index f2f3257cf2a..c3da2278aed 100644
--- a/src/devices/bus/nes_ctrl/partytap.h
+++ b/src/devices/bus/nes_ctrl/partytap.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_PARTYTAP__
-#define __NES_PARTYTAP__
+#ifndef MAME_BUS_NES_CTRL_PARTYTAP_H
+#define MAME_BUS_NES_CTRL_PARTYTAP_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -43,6 +43,6 @@ protected:
};
// device type definition
-extern const device_type NES_PARTYTAP;
+DECLARE_DEVICE_TYPE(NES_PARTYTAP, nes_partytap_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_PARTYTAP_H
diff --git a/src/devices/bus/nes_ctrl/powerpad.cpp b/src/devices/bus/nes_ctrl/powerpad.cpp
index 4db046c029c..40a31ba89bc 100644
--- a/src/devices/bus/nes_ctrl/powerpad.cpp
+++ b/src/devices/bus/nes_ctrl/powerpad.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_POWERPAD = device_creator<nes_powerpad_device>;
+DEFINE_DEVICE_TYPE(NES_POWERPAD, nes_powerpad_device, "nes_powerpad", "Bandai Power Pad")
static INPUT_PORTS_START( nes_powerpad )
@@ -79,10 +79,10 @@ ioport_constructor nes_powerpad_device::device_input_ports() const
//-------------------------------------------------
nes_powerpad_device::nes_powerpad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_POWERPAD, "Bandai Power Pad", tag, owner, clock, "nes_powerpad", __FILE__),
- device_nes_control_port_interface(mconfig, *this),
- m_ipt1(*this, "POWERPAD1"),
- m_ipt2(*this, "POWERPAD2")
+ device_t(mconfig, NES_POWERPAD, tag, owner, clock),
+ device_nes_control_port_interface(mconfig, *this),
+ m_ipt1(*this, "POWERPAD1"),
+ m_ipt2(*this, "POWERPAD2")
{
}
diff --git a/src/devices/bus/nes_ctrl/powerpad.h b/src/devices/bus/nes_ctrl/powerpad.h
index 3204f8450fe..fb4de2517e9 100644
--- a/src/devices/bus/nes_ctrl/powerpad.h
+++ b/src/devices/bus/nes_ctrl/powerpad.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_POWERPAD__
-#define __NES_POWERPAD__
+#ifndef MAME_BUS_NES_CTRL_POWERPAD_H
+#define MAME_BUS_NES_CTRL_POWERPAD_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -48,4 +48,4 @@ private:
extern const device_type NES_POWERPAD;
-#endif
+#endif // MAME_BUS_NES_CTRL_POWERPAD_H
diff --git a/src/devices/bus/nes_ctrl/suborkey.cpp b/src/devices/bus/nes_ctrl/suborkey.cpp
index a19b215bb85..ce752762913 100644
--- a/src/devices/bus/nes_ctrl/suborkey.cpp
+++ b/src/devices/bus/nes_ctrl/suborkey.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_SUBORKEYBOARD = device_creator<nes_suborkey_device>;
+DEFINE_DEVICE_TYPE(NES_SUBORKEYBOARD, nes_suborkey_device, "nes_suborkey", "Subor FC Keyboard")
static INPUT_PORTS_START( fc_suborkey )
@@ -162,7 +162,7 @@ ioport_constructor nes_suborkey_device::device_input_ports() const
//-------------------------------------------------
nes_suborkey_device::nes_suborkey_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NES_SUBORKEYBOARD, "Subor FC Keyboard", tag, owner, clock, "nes_suborkey", __FILE__)
+ : device_t(mconfig, NES_SUBORKEYBOARD, tag, owner, clock)
, device_nes_control_port_interface(mconfig, *this)
, m_kbd(*this, "SUBOR.%u", 0)
, m_fck_scan(0)
diff --git a/src/devices/bus/nes_ctrl/suborkey.h b/src/devices/bus/nes_ctrl/suborkey.h
index c8150ddb512..a25324142d6 100644
--- a/src/devices/bus/nes_ctrl/suborkey.h
+++ b/src/devices/bus/nes_ctrl/suborkey.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NES_SUBORKEY__
-#define __NES_SUBORKEY__
+#ifndef MAME_BUS_NES_CTRL_SUBORKEY_H
+#define MAME_BUS_NES_CTRL_SUBORKEY_H
+#pragma once
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -44,7 +44,6 @@ private:
// device type definition
-extern const device_type NES_SUBORKEYBOARD;
-
+DECLARE_DEVICE_TYPE(NES_SUBORKEYBOARD, nes_suborkey_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_SUBORKEY_H
diff --git a/src/devices/bus/nes_ctrl/zapper.cpp b/src/devices/bus/nes_ctrl/zapper.cpp
index a1c8efe32dc..0996c893f0f 100644
--- a/src/devices/bus/nes_ctrl/zapper.cpp
+++ b/src/devices/bus/nes_ctrl/zapper.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NES_ZAPPER = device_creator<nes_zapper_device>;
+DEFINE_DEVICE_TYPE(NES_ZAPPER, nes_zapper_device, "nes_zapper", "Nintendo Zapper Lightgun")
static INPUT_PORTS_START( nes_zapper )
@@ -46,11 +46,11 @@ ioport_constructor nes_zapper_device::device_input_ports() const
//-------------------------------------------------
nes_zapper_device::nes_zapper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_ZAPPER, "Nintendo Zapper Lightgun", tag, owner, clock, "nes_zapper", __FILE__),
- device_nes_control_port_interface(mconfig, *this),
- m_lightx(*this, "ZAPPER_X"),
- m_lighty(*this, "ZAPPER_Y"),
- m_trigger(*this, "ZAPPER_T")
+ device_t(mconfig, NES_ZAPPER, tag, owner, clock),
+ device_nes_control_port_interface(mconfig, *this),
+ m_lightx(*this, "ZAPPER_X"),
+ m_lighty(*this, "ZAPPER_Y"),
+ m_trigger(*this, "ZAPPER_T")
{
}
diff --git a/src/devices/bus/nes_ctrl/zapper.h b/src/devices/bus/nes_ctrl/zapper.h
index 79826d69637..5ae68fd0a6e 100644
--- a/src/devices/bus/nes_ctrl/zapper.h
+++ b/src/devices/bus/nes_ctrl/zapper.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_NES_CTRL_ZAPPER
+#define MAME_BUS_NES_CTRL_ZAPPER
-#ifndef __NES_ZAPPER__
-#define __NES_ZAPPER__
+#pragma once
#include "ctrl.h"
@@ -45,7 +45,6 @@ private:
// device type definition
-extern const device_type NES_ZAPPER;
-
+DECLARE_DEVICE_TYPE(NES_ZAPPER, nes_zapper_device)
-#endif
+#endif // MAME_BUS_NES_CTRL_ZAPPER
diff --git a/src/devices/bus/newbrain/eim.cpp b/src/devices/bus/newbrain/eim.cpp
index 906b8d4d144..e1a70e6f682 100644
--- a/src/devices/bus/newbrain/eim.cpp
+++ b/src/devices/bus/newbrain/eim.cpp
@@ -37,7 +37,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NEWBRAIN_EIM = device_creator<newbrain_eim_t>;
+DEFINE_DEVICE_TYPE(NEWBRAIN_EIM, newbrain_eim_device, "newbrain_eim", "NewBrain EIM")
//-------------------------------------------------
@@ -57,7 +57,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *newbrain_eim_t::device_rom_region() const
+const tiny_rom_entry *newbrain_eim_device::device_rom_region() const
{
return ROM_NAME( newbrain_eim );
}
@@ -72,24 +72,24 @@ static MACHINE_CONFIG_FRAGMENT( newbrain_eim )
MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, XTAL_16MHz/8)
MCFG_Z80CTC_ZC0_CB(DEVWRITELINE(MC6850_TAG, acia6850_device, write_rxc))
MCFG_Z80CTC_ZC1_CB(DEVWRITELINE(MC6850_TAG, acia6850_device, write_txc))
- MCFG_Z80CTC_ZC2_CB(WRITELINE(newbrain_eim_t, ctc_z2_w))
+ MCFG_Z80CTC_ZC2_CB(WRITELINE(newbrain_eim_device, ctc_z2_w))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("z80ctc_c2", newbrain_eim_t, ctc_c2_tick, attotime::from_hz(XTAL_16MHz/4/13))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("z80ctc_c2", newbrain_eim_device, ctc_c2_tick, attotime::from_hz(XTAL_16MHz/4/13))
MCFG_DEVICE_ADD(ADC0809_TAG, ADC0808, 500000)
- MCFG_ADC0808_OUT_EOC_CB(WRITELINE(newbrain_eim_t, adc_eoc_w))
- MCFG_ADC0808_IN_VREF_POS_CB(newbrain_eim_t, adc_vref_pos_r)
- MCFG_ADC0808_IN_VREF_NEG_CB(newbrain_eim_t, adc_vref_neg_r)
- MCFG_ADC0808_IN_IN_0_CB(newbrain_eim_t, adc_input_r)
- MCFG_ADC0808_IN_IN_1_CB(newbrain_eim_t, adc_input_r)
- MCFG_ADC0808_IN_IN_2_CB(newbrain_eim_t, adc_input_r)
- MCFG_ADC0808_IN_IN_3_CB(newbrain_eim_t, adc_input_r)
- MCFG_ADC0808_IN_IN_4_CB(newbrain_eim_t, adc_input_r)
- MCFG_ADC0808_IN_IN_5_CB(newbrain_eim_t, adc_input_r)
- MCFG_ADC0808_IN_IN_6_CB(newbrain_eim_t, adc_input_r)
- MCFG_ADC0808_IN_IN_7_CB(newbrain_eim_t, adc_input_r)
+ MCFG_ADC0808_OUT_EOC_CB(WRITELINE(newbrain_eim_device, adc_eoc_w))
+ MCFG_ADC0808_IN_VREF_POS_CB(newbrain_eim_device, adc_vref_pos_r)
+ MCFG_ADC0808_IN_VREF_NEG_CB(newbrain_eim_device, adc_vref_neg_r)
+ MCFG_ADC0808_IN_IN_0_CB(newbrain_eim_device, adc_input_r)
+ MCFG_ADC0808_IN_IN_1_CB(newbrain_eim_device, adc_input_r)
+ MCFG_ADC0808_IN_IN_2_CB(newbrain_eim_device, adc_input_r)
+ MCFG_ADC0808_IN_IN_3_CB(newbrain_eim_device, adc_input_r)
+ MCFG_ADC0808_IN_IN_4_CB(newbrain_eim_device, adc_input_r)
+ MCFG_ADC0808_IN_IN_5_CB(newbrain_eim_device, adc_input_r)
+ MCFG_ADC0808_IN_IN_6_CB(newbrain_eim_device, adc_input_r)
+ MCFG_ADC0808_IN_IN_7_CB(newbrain_eim_device, adc_input_r)
MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0)
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(newbrain_eim_t, acia_interrupt))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(newbrain_eim_device, acia_interrupt))
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, nullptr)
MCFG_NEWBRAIN_EXPANSION_SLOT_ADD(NEWBRAIN_EXPANSION_SLOT_TAG, XTAL_16MHz/8, newbrain_expansion_cards, "fdc")
@@ -105,7 +105,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor newbrain_eim_t::device_mconfig_additions() const
+machine_config_constructor newbrain_eim_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( newbrain_eim );
}
@@ -117,11 +117,11 @@ machine_config_constructor newbrain_eim_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// newbrain_eim_t - constructor
+// newbrain_eim_device - constructor
//-------------------------------------------------
-newbrain_eim_t::newbrain_eim_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEWBRAIN_EIM, "Newbrain EIM", tag, owner, clock, "newbrain_eim", __FILE__),
+newbrain_eim_device::newbrain_eim_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, NEWBRAIN_EIM, tag, owner, clock),
device_newbrain_expansion_slot_interface(mconfig, *this),
m_ctc(*this, Z80CTC_TAG),
m_acia(*this, MC6850_TAG),
@@ -136,7 +136,7 @@ newbrain_eim_t::newbrain_eim_t(const machine_config &mconfig, const char *tag, d
// device_start - device-specific startup
//-------------------------------------------------
-void newbrain_eim_t::device_start()
+void newbrain_eim_device::device_start()
{
// state saving
save_item(NAME(m_aciaint));
@@ -148,7 +148,7 @@ void newbrain_eim_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void newbrain_eim_t::device_reset()
+void newbrain_eim_device::device_reset()
{
}
@@ -157,7 +157,7 @@ void newbrain_eim_t::device_reset()
// mreq_r - memory request read
//-------------------------------------------------
-uint8_t newbrain_eim_t::mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
+uint8_t newbrain_eim_device::mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
{
return m_exp->mreq_r(space, offset, data, romov, exrm, raminh);
}
@@ -167,7 +167,7 @@ uint8_t newbrain_eim_t::mreq_r(address_space &space, offs_t offset, uint8_t data
// mreq_w - memory request write
//-------------------------------------------------
-void newbrain_eim_t::mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
+void newbrain_eim_device::mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
{
m_exp->mreq_w(space, offset, data, romov, exrm, raminh);
}
@@ -177,7 +177,7 @@ void newbrain_eim_t::mreq_w(address_space &space, offs_t offset, uint8_t data, b
// iorq_r - I/O request read
//-------------------------------------------------
-uint8_t newbrain_eim_t::iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov)
+uint8_t newbrain_eim_device::iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov)
{
return m_exp->iorq_r(space, offset, data, prtov);
}
@@ -187,7 +187,7 @@ uint8_t newbrain_eim_t::iorq_r(address_space &space, offs_t offset, uint8_t data
// iorq_w - I/O request write
//-------------------------------------------------
-void newbrain_eim_t::iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov)
+void newbrain_eim_device::iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov)
{
m_exp->iorq_w(space, offset, data, prtov);
}
@@ -197,7 +197,7 @@ void newbrain_eim_t::iorq_w(address_space &space, offs_t offset, uint8_t data, b
// anout_r -
//-------------------------------------------------
-READ8_MEMBER( newbrain_eim_t::anout_r )
+READ8_MEMBER( newbrain_eim_device::anout_r )
{
return 0xff;
}
@@ -207,7 +207,7 @@ READ8_MEMBER( newbrain_eim_t::anout_r )
// anout_w -
//-------------------------------------------------
-WRITE8_MEMBER( newbrain_eim_t::anout_w )
+WRITE8_MEMBER( newbrain_eim_device::anout_w )
{
}
@@ -216,7 +216,7 @@ WRITE8_MEMBER( newbrain_eim_t::anout_w )
// anin_r -
//-------------------------------------------------
-READ8_MEMBER( newbrain_eim_t::anin_r )
+READ8_MEMBER( newbrain_eim_device::anin_r )
{
return 0;
}
@@ -226,7 +226,7 @@ READ8_MEMBER( newbrain_eim_t::anin_r )
// anio_w -
//-------------------------------------------------
-WRITE8_MEMBER( newbrain_eim_t::anio_w )
+WRITE8_MEMBER( newbrain_eim_device::anio_w )
{
}
@@ -235,7 +235,7 @@ WRITE8_MEMBER( newbrain_eim_t::anio_w )
// adc_eoc_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( newbrain_eim_t::adc_eoc_w )
+WRITE_LINE_MEMBER( newbrain_eim_device::adc_eoc_w )
{
m_anint = state;
}
@@ -245,7 +245,7 @@ WRITE_LINE_MEMBER( newbrain_eim_t::adc_eoc_w )
// adc_vref_pos_r -
//-------------------------------------------------
-ADC0808_ANALOG_READ_CB( newbrain_eim_t::adc_vref_pos_r )
+ADC0808_ANALOG_READ_CB( newbrain_eim_device::adc_vref_pos_r )
{
return 5.0;
}
@@ -255,7 +255,7 @@ ADC0808_ANALOG_READ_CB( newbrain_eim_t::adc_vref_pos_r )
// adc_vref_neg_r -
//-------------------------------------------------
-ADC0808_ANALOG_READ_CB( newbrain_eim_t::adc_vref_neg_r )
+ADC0808_ANALOG_READ_CB( newbrain_eim_device::adc_vref_neg_r )
{
return 0.0;
}
@@ -265,7 +265,7 @@ ADC0808_ANALOG_READ_CB( newbrain_eim_t::adc_vref_neg_r )
// adc_input_r -
//-------------------------------------------------
-ADC0808_ANALOG_READ_CB( newbrain_eim_t::adc_input_r )
+ADC0808_ANALOG_READ_CB( newbrain_eim_device::adc_input_r )
{
return 0.0;
}
@@ -275,7 +275,7 @@ ADC0808_ANALOG_READ_CB( newbrain_eim_t::adc_input_r )
// acia_interrupt -
//-------------------------------------------------
-WRITE_LINE_MEMBER( newbrain_eim_t::acia_interrupt )
+WRITE_LINE_MEMBER( newbrain_eim_device::acia_interrupt )
{
m_aciaint = state;
}
@@ -285,7 +285,7 @@ WRITE_LINE_MEMBER( newbrain_eim_t::acia_interrupt )
// ctc_z2_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( newbrain_eim_t::ctc_z2_w )
+WRITE_LINE_MEMBER( newbrain_eim_device::ctc_z2_w )
{
// connected to CTC channel 0/1 clock inputs
m_ctc->trg0(state);
@@ -297,7 +297,7 @@ WRITE_LINE_MEMBER( newbrain_eim_t::ctc_z2_w )
// adc_input_r -
//-------------------------------------------------
-TIMER_DEVICE_CALLBACK_MEMBER(newbrain_eim_t::ctc_c2_tick)
+TIMER_DEVICE_CALLBACK_MEMBER(newbrain_eim_device::ctc_c2_tick)
{
m_ctc->trg2(1);
m_ctc->trg2(0);
diff --git a/src/devices/bus/newbrain/eim.h b/src/devices/bus/newbrain/eim.h
index 58024f60cf4..a2406303d9c 100644
--- a/src/devices/bus/newbrain/eim.h
+++ b/src/devices/bus/newbrain/eim.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_NEWBRAIN_EIM_H
+#define MAME_BUS_NEWBRAIN_EIM_H
-#ifndef __NEWBRAIN_EIM__
-#define __NEWBRAIN_EIM__
+#pragma once
#include "exp.h"
#include "bus/rs232/rs232.h"
@@ -24,14 +24,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> newbrain_eim_t
+// ======================> newbrain_eim_device
-class newbrain_eim_t : public device_t,
- public device_newbrain_expansion_slot_interface
+class newbrain_eim_device : public device_t, public device_newbrain_expansion_slot_interface
{
public:
// construction/destruction
- newbrain_eim_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ newbrain_eim_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -65,7 +64,7 @@ protected:
private:
required_device<z80ctc_device> m_ctc;
required_device<acia6850_device> m_acia;
- required_device<newbrain_expansion_slot_t> m_exp;
+ required_device<newbrain_expansion_slot_device> m_exp;
required_memory_region m_rom;
optional_shared_ptr<uint8_t> m_ram;
@@ -76,7 +75,6 @@ private:
// device type definition
extern const device_type NEWBRAIN_EIM;
+DECLARE_DEVICE_TYPE(NEWBRAIN_EIM, newbrain_eim_device)
-
-
-#endif
+#endif // MAME_BUS_NEWBRAIN_EIM_H
diff --git a/src/devices/bus/newbrain/exp.cpp b/src/devices/bus/newbrain/exp.cpp
index 9e8c989e982..7a27758764a 100644
--- a/src/devices/bus/newbrain/exp.cpp
+++ b/src/devices/bus/newbrain/exp.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NEWBRAIN_EXPANSION_SLOT = device_creator<newbrain_expansion_slot_t>;
+DEFINE_DEVICE_TYPE(NEWBRAIN_EXPANSION_SLOT, newbrain_expansion_slot_device, "newbrain_expansion_slot", "NewBrain expansion port")
@@ -30,7 +30,7 @@ const device_type NEWBRAIN_EXPANSION_SLOT = device_creator<newbrain_expansion_sl
device_newbrain_expansion_slot_interface::device_newbrain_expansion_slot_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig,device)
{
- m_slot = dynamic_cast<newbrain_expansion_slot_t *>(device.owner());
+ m_slot = dynamic_cast<newbrain_expansion_slot_device *>(device.owner());
}
@@ -40,11 +40,11 @@ device_newbrain_expansion_slot_interface::device_newbrain_expansion_slot_interfa
//**************************************************************************
//-------------------------------------------------
-// newbrain_expansion_slot_t - constructor
+// newbrain_expansion_slot_device - constructor
//-------------------------------------------------
-newbrain_expansion_slot_t::newbrain_expansion_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEWBRAIN_EXPANSION_SLOT, "NewBrain expansion port", tag, owner, clock, "newbrain_expansion_slot", __FILE__),
+newbrain_expansion_slot_device::newbrain_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, NEWBRAIN_EXPANSION_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this), m_card(nullptr)
{
}
@@ -54,7 +54,7 @@ newbrain_expansion_slot_t::newbrain_expansion_slot_t(const machine_config &mconf
// device_start - device-specific startup
//-------------------------------------------------
-void newbrain_expansion_slot_t::device_start()
+void newbrain_expansion_slot_device::device_start()
{
m_card = dynamic_cast<device_newbrain_expansion_slot_interface *>(get_card_device());
}
@@ -64,7 +64,7 @@ void newbrain_expansion_slot_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void newbrain_expansion_slot_t::device_reset()
+void newbrain_expansion_slot_device::device_reset()
{
if (m_card != nullptr)
{
@@ -77,7 +77,7 @@ void newbrain_expansion_slot_t::device_reset()
// mreq_r - memory request read
//-------------------------------------------------
-uint8_t newbrain_expansion_slot_t::mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
+uint8_t newbrain_expansion_slot_device::mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
{
if (m_card != nullptr)
{
@@ -92,7 +92,7 @@ uint8_t newbrain_expansion_slot_t::mreq_r(address_space &space, offs_t offset, u
// mreq_w - memory request write
//-------------------------------------------------
-void newbrain_expansion_slot_t::mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
+void newbrain_expansion_slot_device::mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
{
if (m_card != nullptr)
{
@@ -105,7 +105,7 @@ void newbrain_expansion_slot_t::mreq_w(address_space &space, offs_t offset, uint
// iorq_r - I/O request read
//-------------------------------------------------
-uint8_t newbrain_expansion_slot_t::iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov)
+uint8_t newbrain_expansion_slot_device::iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov)
{
if (m_card != nullptr)
{
@@ -120,7 +120,7 @@ uint8_t newbrain_expansion_slot_t::iorq_r(address_space &space, offs_t offset, u
// iorq_w - I/O request write
//-------------------------------------------------
-void newbrain_expansion_slot_t::iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov)
+void newbrain_expansion_slot_device::iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov)
{
if (m_card != nullptr)
{
diff --git a/src/devices/bus/newbrain/exp.h b/src/devices/bus/newbrain/exp.h
index 0c07190bdf0..219c819d575 100644
--- a/src/devices/bus/newbrain/exp.h
+++ b/src/devices/bus/newbrain/exp.h
@@ -34,10 +34,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_NEWBRAIN_EXP_H
+#define MAME_BUS_NEWBRAIN_EXP_H
-#ifndef __NEWBRAIN_EXPANSION_SLOT__
-#define __NEWBRAIN_EXPANSION_SLOT__
+#pragma once
@@ -64,17 +64,16 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> newbrain_expansion_slot_t
+// ======================> newbrain_expansion_slot_device
class device_newbrain_expansion_slot_interface;
-class newbrain_expansion_slot_t : public device_t,
+class newbrain_expansion_slot_device : public device_t,
public device_slot_interface
{
public:
// construction/destruction
- newbrain_expansion_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~newbrain_expansion_slot_t() { }
+ newbrain_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// computer interface
uint8_t mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh);
@@ -98,29 +97,28 @@ protected:
class device_newbrain_expansion_slot_interface : public device_slot_card_interface
{
public:
- // construction/destruction
- device_newbrain_expansion_slot_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_newbrain_expansion_slot_interface() { }
-
// memory access
- virtual uint8_t mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { return data; };
- virtual void mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { };
+ virtual uint8_t mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { return data; }
+ virtual void mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { }
// I/O access
- virtual uint8_t iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov) { return data; };
- virtual void iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov) { };
+ virtual uint8_t iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov) { return data; }
+ virtual void iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov) { }
protected:
- newbrain_expansion_slot_t *m_slot;
+ // construction/destruction
+ device_newbrain_expansion_slot_interface(const machine_config &mconfig, device_t &device);
+
+ newbrain_expansion_slot_device *m_slot;
};
// device type definition
-extern const device_type NEWBRAIN_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(NEWBRAIN_EXPANSION_SLOT, newbrain_expansion_slot_device)
SLOT_INTERFACE_EXTERN( newbrain_expansion_cards );
-#endif
+#endif // MAME_BUS_NEWBRAIN_EXP_H
diff --git a/src/devices/bus/newbrain/fdc.cpp b/src/devices/bus/newbrain/fdc.cpp
index b63d7ddffa8..4618588353a 100644
--- a/src/devices/bus/newbrain/fdc.cpp
+++ b/src/devices/bus/newbrain/fdc.cpp
@@ -35,7 +35,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type NEWBRAIN_FDC = device_creator<newbrain_fdc_t>;
+DEFINE_DEVICE_TYPE(NEWBRAIN_FDC, newbrain_fdc_device, "newbrain_fdc", "NewBrain FDC")
//-------------------------------------------------
@@ -59,7 +59,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *newbrain_fdc_t::device_rom_region() const
+const tiny_rom_entry *newbrain_fdc_device::device_rom_region() const
{
return ROM_NAME( newbrain_fdc );
}
@@ -69,7 +69,7 @@ const tiny_rom_entry *newbrain_fdc_t::device_rom_region() const
// ADDRESS_MAP( newbrain_fdc_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( newbrain_fdc_mem, AS_PROGRAM, 8, newbrain_fdc_t )
+static ADDRESS_MAP_START( newbrain_fdc_mem, AS_PROGRAM, 8, newbrain_fdc_device )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x1fff) AM_ROM
ADDRESS_MAP_END
@@ -79,7 +79,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( newbrain_fdc_io )
//-------------------------------------------------
-static ADDRESS_MAP_START( newbrain_fdc_io, AS_IO, 8, newbrain_fdc_t )
+static ADDRESS_MAP_START( newbrain_fdc_io, AS_IO, 8, newbrain_fdc_device )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x71)
AM_RANGE(0x00, 0x01) AM_MIRROR(0x10) AM_DEVICE(UPD765_TAG, upd765a_device, map)
@@ -107,7 +107,7 @@ static MACHINE_CONFIG_FRAGMENT( newbrain_fdc )
MCFG_CPU_IO_MAP(newbrain_fdc_io)
MCFG_UPD765A_ADD(UPD765_TAG, false, true)
- MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(newbrain_fdc_t, fdc_int_w))
+ MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(newbrain_fdc_device, fdc_int_w))
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", newbrain_floppies, "525dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", newbrain_floppies, "525dd", floppy_image_device::default_floppy_formats)
@@ -123,7 +123,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor newbrain_fdc_t::device_mconfig_additions() const
+machine_config_constructor newbrain_fdc_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( newbrain_fdc );
}
@@ -134,11 +134,11 @@ machine_config_constructor newbrain_fdc_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// newbrain_fdc_t - constructor
+// newbrain_fdc_device - constructor
//-------------------------------------------------
-newbrain_fdc_t::newbrain_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NEWBRAIN_FDC, "NewBrain FDC", tag, owner, clock, "newbrain_fdc", __FILE__),
+newbrain_fdc_device::newbrain_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, NEWBRAIN_FDC, tag, owner, clock),
device_newbrain_expansion_slot_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG),
m_fdc(*this, UPD765_TAG),
@@ -155,7 +155,7 @@ newbrain_fdc_t::newbrain_fdc_t(const machine_config &mconfig, const char *tag, d
// device_start - device-specific startup
//-------------------------------------------------
-void newbrain_fdc_t::device_start()
+void newbrain_fdc_device::device_start()
{
save_item(NAME(m_paging));
save_item(NAME(m_ma16));
@@ -170,7 +170,7 @@ void newbrain_fdc_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void newbrain_fdc_t::device_reset()
+void newbrain_fdc_device::device_reset()
{
m_maincpu->reset();
@@ -184,7 +184,7 @@ void newbrain_fdc_t::device_reset()
// mreq_r - memory request read
//-------------------------------------------------
-uint8_t newbrain_fdc_t::mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
+uint8_t newbrain_fdc_device::mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
{
return m_exp->mreq_r(space, offset, data, romov, exrm, raminh);
}
@@ -194,7 +194,7 @@ uint8_t newbrain_fdc_t::mreq_r(address_space &space, offs_t offset, uint8_t data
// mreq_w - memory request write
//-------------------------------------------------
-void newbrain_fdc_t::mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
+void newbrain_fdc_device::mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh)
{
m_exp->mreq_w(space, offset, data, romov, exrm, raminh);
}
@@ -204,7 +204,7 @@ void newbrain_fdc_t::mreq_w(address_space &space, offs_t offset, uint8_t data, b
// iorq_r - I/O request read
//-------------------------------------------------
-uint8_t newbrain_fdc_t::iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov)
+uint8_t newbrain_fdc_device::iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov)
{
return m_exp->iorq_r(space, offset, data, prtov);
}
@@ -214,7 +214,7 @@ uint8_t newbrain_fdc_t::iorq_r(address_space &space, offs_t offset, uint8_t data
// iorq_w - I/O request write
//-------------------------------------------------
-void newbrain_fdc_t::iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov)
+void newbrain_fdc_device::iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov)
{
m_exp->iorq_w(space, offset, data, prtov);
@@ -229,7 +229,7 @@ void newbrain_fdc_t::iorq_w(address_space &space, offs_t offset, uint8_t data, b
// moton - floppy motor on
//-------------------------------------------------
-void newbrain_fdc_t::moton(int state)
+void newbrain_fdc_device::moton(int state)
{
if (m_floppy0->get_device()) m_floppy0->get_device()->mon_w(!state);
if (m_floppy1->get_device()) m_floppy1->get_device()->mon_w(!state);
@@ -242,7 +242,7 @@ void newbrain_fdc_t::moton(int state)
// fdc_int_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( newbrain_fdc_t::fdc_int_w )
+WRITE_LINE_MEMBER( newbrain_fdc_device::fdc_int_w )
{
m_fdc_int = state;
}
@@ -252,7 +252,7 @@ WRITE_LINE_MEMBER( newbrain_fdc_t::fdc_int_w )
// fdc_auxiliary_w -
//-------------------------------------------------
-WRITE8_MEMBER( newbrain_fdc_t::fdc_auxiliary_w )
+WRITE8_MEMBER( newbrain_fdc_device::fdc_auxiliary_w )
{
/*
@@ -286,7 +286,7 @@ WRITE8_MEMBER( newbrain_fdc_t::fdc_auxiliary_w )
// fdc_control_r -
//-------------------------------------------------
-READ8_MEMBER( newbrain_fdc_t::fdc_control_r )
+READ8_MEMBER( newbrain_fdc_device::fdc_control_r )
{
/*
@@ -311,7 +311,7 @@ READ8_MEMBER( newbrain_fdc_t::fdc_control_r )
// io_dec_w - 0x20f
//-------------------------------------------------
-WRITE8_MEMBER( newbrain_fdc_t::io_dec_w )
+WRITE8_MEMBER( newbrain_fdc_device::io_dec_w )
{
/*
diff --git a/src/devices/bus/newbrain/fdc.h b/src/devices/bus/newbrain/fdc.h
index b34e88441ee..c429d8ea447 100644
--- a/src/devices/bus/newbrain/fdc.h
+++ b/src/devices/bus/newbrain/fdc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_NEWBRAIN_FDC_H
+#define MAME_BUS_NEWBRAIN_FDC_H
-#ifndef __NEWBRAIN_FDC__
-#define __NEWBRAIN_FDC__
+#pragma once
#include "exp.h"
#include "cpu/z80/z80.h"
@@ -21,14 +21,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> newbrain_fdc_t
+// ======================> newbrain_fdc_device
-class newbrain_fdc_t : public device_t,
- public device_newbrain_expansion_slot_interface
+class newbrain_fdc_device : public device_t, public device_newbrain_expansion_slot_interface
{
public:
// construction/destruction
- newbrain_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ newbrain_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -57,7 +56,7 @@ private:
required_device<floppy_connector> m_floppy1;
required_device<floppy_connector> m_floppy2;
required_device<floppy_connector> m_floppy3;
- required_device<newbrain_expansion_slot_t> m_exp;
+ required_device<newbrain_expansion_slot_device> m_exp;
void moton(int state);
@@ -71,8 +70,6 @@ private:
// device type definition
-extern const device_type NEWBRAIN_FDC;
-
-
+DECLARE_DEVICE_TYPE(NEWBRAIN_FDC, newbrain_fdc_device)
-#endif
+#endif // MAME_BUS_NEWBRAIN_FDC_H
diff --git a/src/devices/bus/nubus/nubus.cpp b/src/devices/bus/nubus/nubus.cpp
index 2f21a63cf00..d94154244ae 100644
--- a/src/devices/bus/nubus/nubus.cpp
+++ b/src/devices/bus/nubus/nubus.cpp
@@ -16,7 +16,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_SLOT = device_creator<nubus_slot_device>;
+DEFINE_DEVICE_TYPE(NUBUS_SLOT, nubus_slot_device, "nubus_slot", "NuBus slot")
//**************************************************************************
// LIVE DEVICE
@@ -26,16 +26,15 @@ const device_type NUBUS_SLOT = device_creator<nubus_slot_device>;
// nubus_slot_device - constructor
//-------------------------------------------------
nubus_slot_device::nubus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS_SLOT, "NUBUS_SLOT", tag, owner, clock, "nubus_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_nubus_tag(nullptr),
- m_nubus_slottag(nullptr)
+ nubus_slot_device(mconfig, NUBUS_SLOT, tag, owner, clock)
{
}
-nubus_slot_device::nubus_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_interface(mconfig, *this), m_nubus_tag(nullptr), m_nubus_slottag(nullptr)
+nubus_slot_device::nubus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_nubus_tag(nullptr),
+ m_nubus_slottag(nullptr)
{
}
@@ -61,7 +60,7 @@ void nubus_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS = device_creator<nubus_device>;
+DEFINE_DEVICE_TYPE(NUBUS, nubus_device, "nubus", "NuBus")
void nubus_device::static_set_cputag(device_t &device, const char *tag)
{
@@ -78,24 +77,20 @@ void nubus_device::static_set_cputag(device_t &device, const char *tag)
//-------------------------------------------------
nubus_device::nubus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS, "NUBUS", tag, owner, clock, "nubus", __FILE__), m_maincpu(nullptr),
- m_out_irq9_cb(*this),
- m_out_irqa_cb(*this),
- m_out_irqb_cb(*this),
- m_out_irqc_cb(*this),
- m_out_irqd_cb(*this),
- m_out_irqe_cb(*this), m_cputag(nullptr)
+ nubus_device(mconfig, NUBUS, tag, owner, clock)
{
}
-nubus_device::nubus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source), m_maincpu(nullptr),
- m_out_irq9_cb(*this),
- m_out_irqa_cb(*this),
- m_out_irqb_cb(*this),
- m_out_irqc_cb(*this),
- m_out_irqd_cb(*this),
- m_out_irqe_cb(*this), m_cputag(nullptr)
+nubus_device::nubus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ m_maincpu(nullptr),
+ m_out_irq9_cb(*this),
+ m_out_irqa_cb(*this),
+ m_out_irqb_cb(*this),
+ m_out_irqc_cb(*this),
+ m_out_irqd_cb(*this),
+ m_out_irqe_cb(*this),
+ m_cputag(nullptr)
{
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/nubus.h b/src/devices/bus/nubus/nubus.h
index 4697432e16e..8cc1a3bbbf2 100644
--- a/src/devices/bus/nubus/nubus.h
+++ b/src/devices/bus/nubus/nubus.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_NUBUS_NUBUS_H
+#define MAME_BUS_NUBUS_NUBUS_H
-#ifndef __NUBUS_H__
-#define __NUBUS_H__
+#pragma once
@@ -58,26 +58,26 @@
class nubus_device;
-class nubus_slot_device : public device_t,
- public device_slot_interface
+class nubus_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
nubus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // device-level overrides
- virtual void device_start() override;
// inline configuration
static void static_set_nubus_slot(device_t &device, const char *tag, const char *slottag);
protected:
+ nubus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
// configuration
const char *m_nubus_tag, *m_nubus_slottag;
};
// device type definition
-extern const device_type NUBUS_SLOT;
+DECLARE_DEVICE_TYPE(NUBUS_SLOT, nubus_slot_device)
class device_nubus_card_interface;
@@ -87,17 +87,16 @@ class nubus_device : public device_t
public:
// construction/destruction
nubus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
~nubus_device() { m_device_list.detach_all(); }
// inline configuration
static void static_set_cputag(device_t &device, const char *tag);
- template<class _Object> static devcb_base &set_out_irq9_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irq9_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irqa_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irqa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irqb_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irqb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irqc_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irqc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irqd_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irqd_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irqe_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irqe_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq9_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irq9_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irqa_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irqb_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irqc_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irqd_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqd_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irqe_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqe_cb.set_callback(std::forward<Object>(cb)); }
void add_nubus_card(device_nubus_card_interface *card);
void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler, uint32_t mask=0xffffffff);
@@ -116,6 +115,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( irqe_w );
protected:
+ nubus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -136,7 +137,7 @@ protected:
// device type definition
-extern const device_type NUBUS;
+DECLARE_DEVICE_TYPE(NUBUS, nubus_device)
// ======================> device_nubus_card_interface
@@ -144,9 +145,9 @@ extern const device_type NUBUS;
class device_nubus_card_interface : public device_slot_card_interface
{
friend class nubus_device;
+ template <class ElementType> friend class simple_list;
public:
// construction/destruction
- device_nubus_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_nubus_card_interface();
device_nubus_card_interface *next() const { return m_next; }
@@ -165,12 +166,17 @@ public:
// inline configuration
static void static_set_nubus_tag(device_t &device, const char *tag, const char *slottag);
-public:
+
+protected:
+ device_nubus_card_interface(const machine_config &mconfig, device_t &device);
+
nubus_device *m_nubus;
const char *m_nubus_tag, *m_nubus_slottag;
int m_slot;
- device_nubus_card_interface *m_next;
std::vector<uint8_t> m_declaration_rom;
+
+private:
+ device_nubus_card_interface *m_next;
};
-#endif /* __NUBUS_H__ */
+#endif // MAME_BUS_NUBUS_NUBUS_H
diff --git a/src/devices/bus/nubus/nubus_48gc.cpp b/src/devices/bus/nubus/nubus_48gc.cpp
index 2be716827f1..7d7be92216d 100644
--- a/src/devices/bus/nubus/nubus_48gc.cpp
+++ b/src/devices/bus/nubus/nubus_48gc.cpp
@@ -41,8 +41,8 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_48GC = device_creator<nubus_48gc_device>;
-const device_type NUBUS_824GC = device_creator<nubus_824gc_device>;
+DEFINE_DEVICE_TYPE(NUBUS_48GC, nubus_48gc_device, "nb_48gc", "Apple 4*8 video card")
+DEFINE_DEVICE_TYPE(NUBUS_824GC, nubus_824gc_device, "nb_824gc", "Apple 8*24 video card")
//-------------------------------------------------
@@ -77,25 +77,25 @@ const tiny_rom_entry *nubus_824gc_device::device_rom_region() const
// jmfb_device - constructor
//-------------------------------------------------
-jmfb_device::jmfb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_screen(nullptr), m_timer(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_stride(0), m_base(0), m_count(0), m_clutoffs(0), m_xres(0), m_yres(0), m_is824(false)
+jmfb_device::jmfb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is824) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_screen(nullptr), m_timer(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_stride(0), m_base(0), m_count(0), m_clutoffs(0), m_xres(0), m_yres(0),
+ m_is824(is824),
+ m_assembled_tag(util::string_format("%s:%s", tag, GC48_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(GC48_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
nubus_48gc_device::nubus_48gc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- jmfb_device(mconfig, NUBUS_48GC, "Apple 4*8 video card", tag, owner, clock, "nb_48gc", __FILE__)
+ jmfb_device(mconfig, NUBUS_48GC, tag, owner, clock, false)
{
- m_is824 = false;
}
nubus_824gc_device::nubus_824gc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- jmfb_device(mconfig, NUBUS_824GC, "Apple 8*24 video card", tag, owner, clock, "nb_824gc", __FILE__)
+ jmfb_device(mconfig, NUBUS_824GC, tag, owner, clock, true)
{
- m_is824 = true;
}
//-------------------------------------------------
diff --git a/src/devices/bus/nubus/nubus_48gc.h b/src/devices/bus/nubus/nubus_48gc.h
index e2c86050731..604b4d351d8 100644
--- a/src/devices/bus/nubus/nubus_48gc.h
+++ b/src/devices/bus/nubus/nubus_48gc.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_NUBUS_48GC_H
+#define MAME_BUS_NUBUS_NUBUS_48GC_H
-#ifndef __NUBUS_48GC_H__
-#define __NUBUS_48GC_H__
+#pragma once
#include "nubus.h"
@@ -19,34 +19,34 @@ class jmfb_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- jmfb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- screen_device *m_screen;
- emu_timer *m_timer;
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // construction/destruction
+ jmfb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is824);
- DECLARE_READ32_MEMBER(mac_48gc_r);
- DECLARE_WRITE32_MEMBER(mac_48gc_w);
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-public:
- std::vector<uint8_t> m_vram;
- uint32_t m_mode, m_vbl_disable, m_toggle, m_stride, m_base;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- uint32_t m_registers[0x100];
- int m_xres, m_yres;
- bool m_is824;
- std::string m_assembled_tag;
+ DECLARE_READ32_MEMBER(mac_48gc_r);
+ DECLARE_WRITE32_MEMBER(mac_48gc_w);
+
+ screen_device *m_screen;
+ emu_timer *m_timer;
+
+ std::vector<uint8_t> m_vram;
+ uint32_t m_mode, m_vbl_disable, m_toggle, m_stride, m_base;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ uint32_t m_registers[0x100];
+ int m_xres, m_yres;
+ const bool m_is824;
+ const std::string m_assembled_tag;
};
class nubus_48gc_device : public jmfb_device
@@ -63,7 +63,7 @@ public:
};
// device type definition
-extern const device_type NUBUS_48GC;
-extern const device_type NUBUS_824GC;
+DECLARE_DEVICE_TYPE(NUBUS_48GC, nubus_48gc_device)
+DECLARE_DEVICE_TYPE(NUBUS_824GC, nubus_824gc_device)
-#endif /* __NUBUS_48GC_H__ */
+#endif /// MAME_BUS_NUBUS_NUBUS_48GC_H
diff --git a/src/devices/bus/nubus/nubus_asntmc3b.cpp b/src/devices/bus/nubus/nubus_asntmc3b.cpp
index d7e45e10f18..91427858b32 100644
--- a/src/devices/bus/nubus/nubus_asntmc3b.cpp
+++ b/src/devices/bus/nubus/nubus_asntmc3b.cpp
@@ -40,8 +40,8 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_ASNTMC3NB = device_creator<nubus_asntmc3nb_device>;
-const device_type NUBUS_APPLEENET = device_creator<nubus_appleenet_device>;
+DEFINE_DEVICE_TYPE(NUBUS_ASNTMC3NB, nubus_asntmc3nb_device, "nb_amc3b", "Asante MC3NB Ethernet card")
+DEFINE_DEVICE_TYPE(NUBUS_APPLEENET, nubus_appleenet_device, "nb_aenet", "Apple NuBus Ethernet card")
//-------------------------------------------------
@@ -76,20 +76,20 @@ const tiny_rom_entry *nubus_appleenet_device::device_rom_region() const
// nubus_mac8390_device - constructor
//-------------------------------------------------
-nubus_mac8390_device::nubus_mac8390_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_nubus_card_interface(mconfig, *this),
- m_dp83902(*this, MAC8390_839X)
+nubus_mac8390_device::nubus_mac8390_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_nubus_card_interface(mconfig, *this),
+ m_dp83902(*this, MAC8390_839X)
{
}
nubus_asntmc3nb_device::nubus_asntmc3nb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nubus_mac8390_device(mconfig, NUBUS_ASNTMC3NB, "Asante MC3NB Ethernet card", tag, owner, clock, "nb_amc3b", __FILE__)
+ nubus_mac8390_device(mconfig, NUBUS_ASNTMC3NB, tag, owner, clock)
{
}
nubus_appleenet_device::nubus_appleenet_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nubus_mac8390_device(mconfig, NUBUS_APPLEENET, "Apple NuBus Ethernet card", tag, owner, clock, "nb_aenet", __FILE__)
+ nubus_mac8390_device(mconfig, NUBUS_APPLEENET, tag, owner, clock)
{
}
diff --git a/src/devices/bus/nubus/nubus_asntmc3b.h b/src/devices/bus/nubus/nubus_asntmc3b.h
index 3c66d884bb1..55fe2a5e1a0 100644
--- a/src/devices/bus/nubus/nubus_asntmc3b.h
+++ b/src/devices/bus/nubus/nubus_asntmc3b.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_NUBUS_ASNTMC3B_H
+#define MAME_BUS_NUBUS_NUBUS_ASNTMC3B_H
-#ifndef __NUBUS_ASNTMC3B_H__
-#define __NUBUS_ASNTMC3B_H__
+#pragma once
#include "nubus.h"
#include "machine/dp8390.h"
@@ -19,32 +19,32 @@ class nubus_mac8390_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_mac8390_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- void dp_irq_w(int state);
- DECLARE_READ8_MEMBER(dp_mem_read);
- DECLARE_WRITE8_MEMBER(dp_mem_write);
+ void dp_irq_w(int state);
+ DECLARE_READ8_MEMBER(dp_mem_read);
+ DECLARE_WRITE8_MEMBER(dp_mem_write);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // construction/destruction
+ nubus_mac8390_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
- DECLARE_READ8_MEMBER(asntm3b_ram_r);
- DECLARE_WRITE8_MEMBER(asntm3b_ram_w);
- DECLARE_READ32_MEMBER(en_r);
- DECLARE_WRITE32_MEMBER(en_w);
+ DECLARE_READ8_MEMBER(asntm3b_ram_r);
+ DECLARE_WRITE8_MEMBER(asntm3b_ram_w);
+ DECLARE_READ32_MEMBER(en_r);
+ DECLARE_WRITE32_MEMBER(en_w);
- required_device<dp8390_device> m_dp83902;
+ required_device<dp8390_device> m_dp83902;
private:
- uint8_t m_ram[0x20000];
- uint8_t m_prom[16];
+ uint8_t m_ram[0x20000];
+ uint8_t m_prom[16];
};
class nubus_asntmc3nb_device : public nubus_mac8390_device
@@ -61,7 +61,7 @@ public:
};
// device type definition
-extern const device_type NUBUS_ASNTMC3NB;
-extern const device_type NUBUS_APPLEENET;
+DECLARE_DEVICE_TYPE(NUBUS_ASNTMC3NB, nubus_asntmc3nb_device)
+DECLARE_DEVICE_TYPE(NUBUS_APPLEENET, nubus_appleenet_device)
-#endif /* __NUBUS_ASNTMC3B_H__ */
+#endif // MAME_BUS_NUBUS_NUBUS_ASNTMC3B_H
diff --git a/src/devices/bus/nubus/nubus_cb264.cpp b/src/devices/bus/nubus/nubus_cb264.cpp
index 65f0a49d80c..d3be5575a92 100644
--- a/src/devices/bus/nubus/nubus_cb264.cpp
+++ b/src/devices/bus/nubus/nubus_cb264.cpp
@@ -40,7 +40,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_CB264 = device_creator<nubus_cb264_device>;
+DEFINE_DEVICE_TYPE(NUBUS_CB264, nubus_cb264_device, "nb_c264", "RasterOps ColorBoard 264 video card")
//-------------------------------------------------
@@ -71,14 +71,14 @@ const tiny_rom_entry *nubus_cb264_device::device_rom_region() const
//-------------------------------------------------
nubus_cb264_device::nubus_cb264_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS_CB264, "RasterOps ColorBoard 264 video card", tag, owner, clock, "nb_cb264", __FILE__),
- device_nubus_card_interface(mconfig, *this), m_cb264_mode(0), m_cb264_vbl_disable(0), m_cb264_toggle(0), m_count(0), m_clutoffs(0)
+ nubus_cb264_device(mconfig, NUBUS_CB264, tag, owner, clock)
{
}
-nubus_cb264_device::nubus_cb264_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_nubus_card_interface(mconfig, *this), m_cb264_mode(0), m_cb264_vbl_disable(0), m_cb264_toggle(0), m_count(0), m_clutoffs(0)
+nubus_cb264_device::nubus_cb264_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_nubus_card_interface(mconfig, *this),
+ m_cb264_mode(0), m_cb264_vbl_disable(0), m_cb264_toggle(0), m_count(0), m_clutoffs(0)
{
}
diff --git a/src/devices/bus/nubus/nubus_cb264.h b/src/devices/bus/nubus/nubus_cb264.h
index c5b2c2b02b8..82c0181a27f 100644
--- a/src/devices/bus/nubus/nubus_cb264.h
+++ b/src/devices/bus/nubus/nubus_cb264.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_NUBUS_CB264_H
+#define MAME_BUS_NUBUS_NUBUS_CB264_H
-#ifndef __NUBUS_CB264_H__
-#define __NUBUS_CB264_H__
+#pragma once
#include "nubus.h"
@@ -18,33 +18,35 @@ class nubus_cb264_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_cb264_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_cb264_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ // construction/destruction
+ nubus_cb264_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ nubus_cb264_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
- DECLARE_READ32_MEMBER(cb264_r);
- DECLARE_WRITE32_MEMBER(cb264_w);
- DECLARE_READ32_MEMBER(cb264_ramdac_r);
- DECLARE_WRITE32_MEMBER(cb264_ramdac_w);
+ DECLARE_READ32_MEMBER(cb264_r);
+ DECLARE_WRITE32_MEMBER(cb264_w);
+ DECLARE_READ32_MEMBER(cb264_ramdac_r);
+ DECLARE_WRITE32_MEMBER(cb264_ramdac_w);
public:
- std::vector<uint8_t> m_vram;
- uint32_t m_cb264_mode, m_cb264_vbl_disable, m_cb264_toggle;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ std::vector<uint8_t> m_vram;
+ uint32_t m_cb264_mode, m_cb264_vbl_disable, m_cb264_toggle;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
};
// device type definition
-extern const device_type NUBUS_CB264;
+DECLARE_DEVICE_TYPE(NUBUS_CB264, nubus_cb264_device)
-#endif /* __NUBUS_CB264_H__ */
+#endif // MAME_BUS_NUBUS_NUBUS_CB264_H
diff --git a/src/devices/bus/nubus/nubus_image.cpp b/src/devices/bus/nubus/nubus_image.cpp
index eeb3a9f895f..0a0c7a44735 100644
--- a/src/devices/bus/nubus/nubus_image.cpp
+++ b/src/devices/bus/nubus/nubus_image.cpp
@@ -17,19 +17,10 @@
#define MESSIMG_DISK_SECTOR_SIZE (512)
-// on big-endian, these are NOPs. (TODO: hey, where did WORDS_BIGENDIAN go since the GENie transition?!)
-#if defined(__ppc__) || defined (__PPC__) || defined(__ppc64__) || defined(__PPC64__)
-static uint32_t ni_htonl(uint32_t x) { return x; }
-static uint32_t ni_ntohl(uint32_t x) { return x; }
-#else
-static uint32_t ni_htonl(uint32_t x) { return flipendian_int32(x); }
-static uint32_t ni_ntohl(uint32_t x) { return flipendian_int32(x); }
-#endif
+// nubus_image_device::messimg_disk_image_device
-// messimg_disk_image_device
-
-class messimg_disk_image_device : public device_t,
+class nubus_image_device::messimg_disk_image_device : public device_t,
public device_image_interface
{
public:
@@ -63,11 +54,12 @@ public:
// device type definition
-const device_type MESSIMG_DISK = device_creator<messimg_disk_image_device>;
+DEFINE_DEVICE_TYPE_NS(MESSIMG_DISK, nubus_image_device, messimg_disk_image_device, "messimg_disk_image", "Mac image")
-messimg_disk_image_device::messimg_disk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MESSIMG_DISK, "Mac image", tag, owner, clock, "messimg_disk_image", __FILE__),
- device_image_interface(mconfig, *this), m_size(0), m_data(nullptr), m_ejected(false)
+nubus_image_device::messimg_disk_image_device::messimg_disk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, MESSIMG_DISK, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ m_size(0), m_data(nullptr), m_ejected(false)
{
}
@@ -76,7 +68,7 @@ messimg_disk_image_device::messimg_disk_image_device(const machine_config &mconf
device start callback
-------------------------------------------------*/
-void messimg_disk_image_device::device_start()
+void nubus_image_device::messimg_disk_image_device::device_start()
{
m_data = nullptr;
@@ -86,7 +78,7 @@ void messimg_disk_image_device::device_start()
}
}
-image_init_result messimg_disk_image_device::call_load()
+image_init_result nubus_image_device::messimg_disk_image_device::call_load()
{
fseek(0, SEEK_END);
m_size = (uint32_t)ftell();
@@ -105,7 +97,7 @@ image_init_result messimg_disk_image_device::call_load()
return image_init_result::PASS;
}
-void messimg_disk_image_device::call_unload()
+void nubus_image_device::messimg_disk_image_device::call_unload()
{
// TODO: track dirty sectors and only write those
fseek(0, SEEK_SET);
@@ -118,7 +110,7 @@ void messimg_disk_image_device::call_unload()
device reset callback
-------------------------------------------------*/
-void messimg_disk_image_device::device_reset()
+void nubus_image_device::messimg_disk_image_device::device_reset()
{
}
@@ -135,7 +127,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_IMAGE = device_creator<nubus_image_device>;
+DEFINE_DEVICE_TYPE(NUBUS_IMAGE, nubus_image_device, "nb_image", "NuBus Disk Image Pseudo-Card")
//-------------------------------------------------
@@ -166,14 +158,14 @@ const tiny_rom_entry *nubus_image_device::device_rom_region() const
//-------------------------------------------------
nubus_image_device::nubus_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS_IMAGE, "Disk Image Pseudo-Card", tag, owner, clock, "nb_image", __FILE__),
- device_nubus_card_interface(mconfig, *this), m_image(nullptr)
+ nubus_image_device(mconfig, NUBUS_IMAGE, tag, owner, clock)
{
}
-nubus_image_device::nubus_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_nubus_card_interface(mconfig, *this), m_image(nullptr)
+nubus_image_device::nubus_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_nubus_card_interface(mconfig, *this),
+ m_image(nullptr)
{
}
@@ -327,7 +319,7 @@ WRITE32_MEMBER( nubus_image_device::file_data_w )
data = ((data & 0xff) << 24) | ((data & 0xff00) << 8) | ((data & 0xff0000) >> 8) | ((data & 0xff000000) >> 24);
if(filectx.fd) {
- //data = ni_ntohl(data);
+ //data = big_endianize_int32(data);
if((filectx.bytecount + count) > filectx.filelen) count = filectx.filelen - filectx.bytecount;
filectx.fd->write(&data, filectx.bytecount, count, actualcount);
filectx.bytecount += actualcount;
@@ -348,7 +340,7 @@ READ32_MEMBER( nubus_image_device::file_data_r )
if(actual < sizeof(ret)) {
filectx.fd.reset();
}
- return ni_htonl(ret);
+ return big_endianize_int32(ret);
}
return 0;
}
@@ -356,7 +348,7 @@ READ32_MEMBER( nubus_image_device::file_data_r )
WRITE32_MEMBER( nubus_image_device::file_len_w )
{
data = ((data & 0xff) << 24) | ((data & 0xff00) << 8) | ((data & 0xff0000) >> 8) | ((data & 0xff000000) >> 24);
- filectx.filelen = ni_ntohl(data);
+ filectx.filelen = big_endianize_int32(data);
}
READ32_MEMBER( nubus_image_device::file_len_r )
@@ -366,12 +358,12 @@ READ32_MEMBER( nubus_image_device::file_len_r )
WRITE32_MEMBER( nubus_image_device::file_name_w )
{
- ((uint32_t*)(filectx.filename))[offset] = ni_ntohl(data);
+ ((uint32_t*)(filectx.filename))[offset] = big_endianize_int32(data);
}
READ32_MEMBER( nubus_image_device::file_name_r )
{
uint32_t ret;
- ret = ni_htonl(((uint32_t*)(filectx.filename))[offset]);
+ ret = big_endianize_int32(((uint32_t*)(filectx.filename))[offset]);
return ret;
}
diff --git a/src/devices/bus/nubus/nubus_image.h b/src/devices/bus/nubus/nubus_image.h
index 543ae8d3781..b12da43dc36 100644
--- a/src/devices/bus/nubus/nubus_image.h
+++ b/src/devices/bus/nubus/nubus_image.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_NUBUS_IMAGE_H
+#define MAME_BUS_NUBUS_NUBUS_IMAGE_H
-#ifndef __NUBUS_IMAGE_H__
-#define __NUBUS_IMAGE_H__
+#pragma once
#include "nubus.h"
#include "osdcore.h"
@@ -11,17 +11,6 @@
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class messimg_disk_image_device;
-
-struct nbfilectx {
- uint32_t curcmd;
- uint8_t filename[128];
- uint8_t curdir[1024];
- osd::directory::ptr dirp;
- osd_file::ptr fd;
- uint64_t filelen;
- uint32_t bytecount;
-};
// ======================> nubus_image_device
@@ -30,15 +19,39 @@ class nubus_image_device :
public device_nubus_card_interface
{
public:
+ class messimg_disk_image_device;
+
// construction/destruction
nubus_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
+ enum
+ {
+ kFileCmdGetDir = 1,
+ kFileCmdSetDir,
+ kFileCmdGetFirstListing,
+ kFileCmdGetNextListing,
+ kFileCmdGetFile,
+ kFileCmdPutFile
+ };
+
+ struct nbfilectx
+ {
+ uint32_t curcmd;
+ uint8_t filename[128];
+ uint8_t curdir[1024];
+ osd::directory::ptr dirp;
+ osd_file::ptr fd;
+ uint64_t filelen;
+ uint32_t bytecount;
+ };
+
+ nubus_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -58,22 +71,12 @@ protected:
DECLARE_READ32_MEMBER(file_name_r);
DECLARE_WRITE32_MEMBER(file_name_w);
-public:
messimg_disk_image_device *m_image;
- struct nbfilectx filectx;
+ nbfilectx filectx;
};
// device type definition
-extern const device_type NUBUS_IMAGE;
-
-enum {
- kFileCmdGetDir = 1,
- kFileCmdSetDir,
- kFileCmdGetFirstListing,
- kFileCmdGetNextListing,
- kFileCmdGetFile,
- kFileCmdPutFile
-};
+DECLARE_DEVICE_TYPE(NUBUS_IMAGE, nubus_image_device)
-#endif /* __NUBUS_IMAGE_H__ */
+#endif // MAME_BUS_NUBUS_NUBUS_IMAGE_H
diff --git a/src/devices/bus/nubus/nubus_m2hires.cpp b/src/devices/bus/nubus/nubus_m2hires.cpp
index 823a1d063e2..99315db8e03 100644
--- a/src/devices/bus/nubus/nubus_m2hires.cpp
+++ b/src/devices/bus/nubus/nubus_m2hires.cpp
@@ -36,7 +36,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_M2HIRES = device_creator<nubus_m2hires_device>;
+DEFINE_DEVICE_TYPE(NUBUS_M2HIRES, nubus_m2hires_device, "nb_m2hr", "Macintosh II Hi-Resolution video card")
//-------------------------------------------------
@@ -67,20 +67,17 @@ const tiny_rom_entry *nubus_m2hires_device::device_rom_region() const
//-------------------------------------------------
nubus_m2hires_device::nubus_m2hires_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS_M2HIRES, "Macintosh II Hi-Resolution video card", tag, owner, clock, "nb_m2hr", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+ nubus_m2hires_device(mconfig, NUBUS_M2HIRES, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(M2HIRES_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_m2hires_device::nubus_m2hires_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+nubus_m2hires_device::nubus_m2hires_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, M2HIRES_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(M2HIRES_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/nubus_m2hires.h b/src/devices/bus/nubus/nubus_m2hires.h
index cc766ae9d18..1e8f7c92290 100644
--- a/src/devices/bus/nubus/nubus_m2hires.h
+++ b/src/devices/bus/nubus/nubus_m2hires.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_NUBUS_M2HIRES_H
+#define MAME_BUS_NUBUS_NUBUS_M2HIRES_H
-#ifndef __NUBUS_M2HIRES_H__
-#define __NUBUS_M2HIRES_H__
+#pragma once
#include "nubus.h"
@@ -19,37 +19,37 @@ class nubus_m2hires_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_m2hires_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_m2hires_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ // construction/destruction
+ nubus_m2hires_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ32_MEMBER(m2hires_r);
- DECLARE_WRITE32_MEMBER(m2hires_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_mode, m_vbl_disable, m_toggle;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+protected:
+ nubus_m2hires_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ DECLARE_READ32_MEMBER(m2hires_r);
+ DECLARE_WRITE32_MEMBER(m2hires_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_mode, m_vbl_disable, m_toggle;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
};
-
// device type definition
-extern const device_type NUBUS_M2HIRES;
+DECLARE_DEVICE_TYPE(NUBUS_M2HIRES, nubus_m2hires_device)
-#endif /* __NUBUS_M2HIRES_H__ */
+#endif // MAME_BUS_NUBUS_NUBUS_M2HIRES_H
diff --git a/src/devices/bus/nubus/nubus_m2video.cpp b/src/devices/bus/nubus/nubus_m2video.cpp
index bfaafc7f932..8eb6808f8d6 100644
--- a/src/devices/bus/nubus/nubus_m2video.cpp
+++ b/src/devices/bus/nubus/nubus_m2video.cpp
@@ -38,7 +38,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_M2VIDEO = device_creator<nubus_m2video_device>;
+DEFINE_DEVICE_TYPE(NUBUS_M2VIDEO, nubus_m2video_device, "nb_m2vc", "Macintosh II Video Card")
//-------------------------------------------------
@@ -69,20 +69,17 @@ const tiny_rom_entry *nubus_m2video_device::device_rom_region() const
//-------------------------------------------------
nubus_m2video_device::nubus_m2video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS_M2VIDEO, "Macintosh II Video Card", tag, owner, clock, "nb_m2vc", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+ nubus_m2video_device(mconfig, NUBUS_M2VIDEO, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(M2VIDEO_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_m2video_device::nubus_m2video_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+nubus_m2video_device::nubus_m2video_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, M2VIDEO_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(M2VIDEO_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/nubus_m2video.h b/src/devices/bus/nubus/nubus_m2video.h
index abf6056f5e2..10d2e9067c9 100644
--- a/src/devices/bus/nubus/nubus_m2video.h
+++ b/src/devices/bus/nubus/nubus_m2video.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_NUBUS_M2VIDEO_H
+#define MAME_BUS_NUBUS_NUBUS_M2VIDEO_H
-#ifndef __NUBUS_M2VIDEO_H__
-#define __NUBUS_M2VIDEO_H__
+#pragma once
#include "nubus.h"
@@ -19,37 +19,38 @@ class nubus_m2video_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_m2video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_m2video_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // construction/destruction
+ nubus_m2video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ32_MEMBER(m2video_r);
- DECLARE_WRITE32_MEMBER(m2video_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_mode, m_vbl_disable, m_toggle;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+protected:
+ nubus_m2video_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ DECLARE_READ32_MEMBER(m2video_r);
+ DECLARE_WRITE32_MEMBER(m2video_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_mode, m_vbl_disable, m_toggle;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
};
// device type definition
-extern const device_type NUBUS_M2VIDEO;
+DECLARE_DEVICE_TYPE(NUBUS_M2VIDEO, nubus_m2video_device)
-#endif /* __NUBUS_M2VIDEO_H__ */
+#endif // MAME_BUS_NUBUS_NUBUS_M2VIDEO_H
diff --git a/src/devices/bus/nubus/nubus_radiustpd.cpp b/src/devices/bus/nubus/nubus_radiustpd.cpp
index f3028bdc598..d1087527019 100644
--- a/src/devices/bus/nubus/nubus_radiustpd.cpp
+++ b/src/devices/bus/nubus/nubus_radiustpd.cpp
@@ -37,7 +37,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_RADIUSTPD = device_creator<nubus_radiustpd_device>;
+DEFINE_DEVICE_TYPE(NUBUS_RADIUSTPD, nubus_radiustpd_device, "nb_rtpd", "Radius Two Page Display video card")
//-------------------------------------------------
@@ -68,20 +68,17 @@ const tiny_rom_entry *nubus_radiustpd_device::device_rom_region() const
//-------------------------------------------------
nubus_radiustpd_device::nubus_radiustpd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS_RADIUSTPD, "Radius Two Page Display video card", tag, owner, clock, "nb_rtpd", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+ nubus_radiustpd_device(mconfig, NUBUS_RADIUSTPD, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(RADIUSTPD_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_radiustpd_device::nubus_radiustpd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+nubus_radiustpd_device::nubus_radiustpd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, RADIUSTPD_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(RADIUSTPD_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/nubus_radiustpd.h b/src/devices/bus/nubus/nubus_radiustpd.h
index 02f257c290e..7566c281ea9 100644
--- a/src/devices/bus/nubus/nubus_radiustpd.h
+++ b/src/devices/bus/nubus/nubus_radiustpd.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_NUBUS_RADIUSTPD_H
+#define MAME_BUS_NUBUS_NUBUS_RADIUSTPD_H
-#ifndef __NUBUS_RADIUSTPD_H__
-#define __NUBUS_RADIUSTPD_H__
+#pragma once
#include "nubus.h"
@@ -19,37 +19,38 @@ class nubus_radiustpd_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_radiustpd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_radiustpd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // construction/destruction
+ nubus_radiustpd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ32_MEMBER(radiustpd_r);
- DECLARE_WRITE32_MEMBER(radiustpd_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_mode, m_vbl_disable, m_toggle;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+protected:
+ nubus_radiustpd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ DECLARE_READ32_MEMBER(radiustpd_r);
+ DECLARE_WRITE32_MEMBER(radiustpd_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_mode, m_vbl_disable, m_toggle;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
};
// device type definition
-extern const device_type NUBUS_RADIUSTPD;
+DECLARE_DEVICE_TYPE(NUBUS_RADIUSTPD, nubus_radiustpd_device)
-#endif /* __NUBUS_RADIUSTPD_H__ */
+#endif // MAME_BUS_NUBUS_NUBUS_RADIUSTPD_H
diff --git a/src/devices/bus/nubus/nubus_spec8.cpp b/src/devices/bus/nubus/nubus_spec8.cpp
index d294a1df8f7..18d5294569e 100644
--- a/src/devices/bus/nubus/nubus_spec8.cpp
+++ b/src/devices/bus/nubus/nubus_spec8.cpp
@@ -40,7 +40,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_SPEC8S3 = device_creator<nubus_spec8s3_device>;
+DEFINE_DEVICE_TYPE(NUBUS_SPEC8S3, nubus_spec8s3_device, "nb_sp8s3", "SuperMac Spectrum/8 Series III video card")
//-------------------------------------------------
@@ -71,20 +71,18 @@ const tiny_rom_entry *nubus_spec8s3_device::device_rom_region() const
//-------------------------------------------------
nubus_spec8s3_device::nubus_spec8s3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS_SPEC8S3, "SuperMac Spectrum/8 Series III video card", tag, owner, clock, "nb_sp8s3", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_vbl_pending(false), m_parameter(0)
+ nubus_spec8s3_device(mconfig, NUBUS_SPEC8S3, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(SPEC8S3_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_spec8s3_device::nubus_spec8s3_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_vbl_pending(false), m_parameter(0)
+nubus_spec8s3_device::nubus_spec8s3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, SPEC8S3_SCREEN_NAME)),
+ m_vbl_pending(false), m_parameter(0)
{
- m_assembled_tag = std::string(tag).append(":").append(SPEC8S3_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/nubus_spec8.h b/src/devices/bus/nubus/nubus_spec8.h
index 6716115db05..95f707d7df3 100644
--- a/src/devices/bus/nubus/nubus_spec8.h
+++ b/src/devices/bus/nubus/nubus_spec8.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_NUBUS_SPEC8_H
+#define MAME_BUS_NUBUS_NUBUS_SPEC8_H
-#ifndef __NUBUS_SPEC8S3_H__
-#define __NUBUS_SPEC8S3_H__
+#pragma once
#include "nubus.h"
@@ -19,45 +19,46 @@ class nubus_spec8s3_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_spec8s3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_spec8s3_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ // construction/destruction
+ nubus_spec8s3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ nubus_spec8s3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_READ32_MEMBER(spec8s3_r);
- DECLARE_WRITE32_MEMBER(spec8s3_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_mode, m_vbl_disable;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+ DECLARE_READ32_MEMBER(spec8s3_r);
+ DECLARE_WRITE32_MEMBER(spec8s3_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_mode, m_vbl_disable;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
private:
- //uint32_t m_7xxxxx_regs[0x100000/4];
- //int m_width, m_height, m_patofsx, m_patofsy;
- //uint32_t m_vram_addr, m_vram_src;
- //uint8_t m_fillbytes[256];
- bool m_vbl_pending;
- int m_parameter;
+ //uint32_t m_7xxxxx_regs[0x100000/4];
+ //int m_width, m_height, m_patofsx, m_patofsy;
+ //uint32_t m_vram_addr, m_vram_src;
+ //uint8_t m_fillbytes[256];
+ bool m_vbl_pending;
+ int m_parameter;
};
// device type definition
-extern const device_type NUBUS_SPEC8S3;
+DECLARE_DEVICE_TYPE(NUBUS_SPEC8S3, nubus_spec8s3_device)
-#endif /* __NUBUS_SPEC8S3_H__ */
+#endif // MAME_BUS_NUBUS_NUBUS_SPEC8_H
diff --git a/src/devices/bus/nubus/nubus_specpdq.cpp b/src/devices/bus/nubus/nubus_specpdq.cpp
index de267c7400b..98ef658d187 100644
--- a/src/devices/bus/nubus/nubus_specpdq.cpp
+++ b/src/devices/bus/nubus/nubus_specpdq.cpp
@@ -54,7 +54,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_SPECPDQ = device_creator<nubus_specpdq_device>;
+DEFINE_DEVICE_TYPE(NUBUS_SPECPDQ, nubus_specpdq_device, "nb_spdq", "SuperMac Spectrum PDQ video card")
//-------------------------------------------------
@@ -85,22 +85,19 @@ const tiny_rom_entry *nubus_specpdq_device::device_rom_region() const
//-------------------------------------------------
nubus_specpdq_device::nubus_specpdq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS_SPECPDQ, "SuperMac Spectrum PDQ video card", tag, owner, clock, "nb_spdq", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_width(0), m_height(0), m_patofsx(0), m_patofsy(0), m_vram_addr(0), m_vram_src(0),
- m_palette(*this, "palette")
+ nubus_specpdq_device(mconfig, NUBUS_SPECPDQ, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(SPECPDQ_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_specpdq_device::nubus_specpdq_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr), m_width(0), m_height(0), m_patofsx(0), m_patofsy(0), m_vram_addr(0), m_vram_src(0),
- m_palette(*this, "palette")
+nubus_specpdq_device::nubus_specpdq_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, SPECPDQ_SCREEN_NAME)),
+ m_width(0), m_height(0), m_patofsx(0), m_patofsy(0), m_vram_addr(0), m_vram_src(0),
+ m_palette(*this, "palette")
{
- m_assembled_tag = std::string(tag).append(":").append(SPECPDQ_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/nubus_specpdq.h b/src/devices/bus/nubus/nubus_specpdq.h
index a327ed51d3b..153badb8f55 100644
--- a/src/devices/bus/nubus/nubus_specpdq.h
+++ b/src/devices/bus/nubus/nubus_specpdq.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_NUBUS_SPECPDQ_H
+#define MAME_BUS_NUBUS_NUBUS_SPECPDQ_H
-#ifndef __NUBUS_SPECPDQ_H__
-#define __NUBUS_SPECPDQ_H__
+#pragma once
#include "nubus.h"
@@ -19,44 +19,45 @@ class nubus_specpdq_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_specpdq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_specpdq_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ // construction/destruction
+ nubus_specpdq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ nubus_specpdq_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_READ32_MEMBER(specpdq_r);
- DECLARE_WRITE32_MEMBER(specpdq_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_mode, m_vbl_disable;
- uint32_t m_palette_val[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+ DECLARE_READ32_MEMBER(specpdq_r);
+ DECLARE_WRITE32_MEMBER(specpdq_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_mode, m_vbl_disable;
+ uint32_t m_palette_val[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
private:
- uint32_t m_7xxxxx_regs[0x100000/4];
- int m_width, m_height, m_patofsx, m_patofsy;
- uint32_t m_vram_addr, m_vram_src;
- uint8_t m_fillbytes[256];
- required_device<palette_device> m_palette;
+ uint32_t m_7xxxxx_regs[0x100000/4];
+ int m_width, m_height, m_patofsx, m_patofsy;
+ uint32_t m_vram_addr, m_vram_src;
+ uint8_t m_fillbytes[256];
+ required_device<palette_device> m_palette;
};
// device type definition
-extern const device_type NUBUS_SPECPDQ;
+DECLARE_DEVICE_TYPE(NUBUS_SPECPDQ, nubus_specpdq_device)
-#endif /* __NUBUS_SPECPDQ_H__ */
+#endif // MAME_BUS_NUBUS_NUBUS_SPECPDQ_H
diff --git a/src/devices/bus/nubus/nubus_vikbw.cpp b/src/devices/bus/nubus/nubus_vikbw.cpp
index ed901d672c8..a17da037ad1 100644
--- a/src/devices/bus/nubus/nubus_vikbw.cpp
+++ b/src/devices/bus/nubus/nubus_vikbw.cpp
@@ -36,7 +36,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_VIKBW = device_creator<nubus_vikbw_device>;
+DEFINE_DEVICE_TYPE(NUBUS_VIKBW, nubus_vikbw_device, "nb_vikbw", "Moniterm Viking video card")
//-------------------------------------------------
@@ -67,14 +67,14 @@ const tiny_rom_entry *nubus_vikbw_device::device_rom_region() const
//-------------------------------------------------
nubus_vikbw_device::nubus_vikbw_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS_VIKBW, "Moniterm Viking video card", tag, owner, clock, "nb_vikbw", __FILE__),
- device_nubus_card_interface(mconfig, *this), m_vbl_disable(0)
+ nubus_vikbw_device(mconfig, NUBUS_VIKBW, tag, owner, clock)
{
}
-nubus_vikbw_device::nubus_vikbw_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_nubus_card_interface(mconfig, *this), m_vbl_disable(0)
+nubus_vikbw_device::nubus_vikbw_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_nubus_card_interface(mconfig, *this),
+ m_vbl_disable(0)
{
}
diff --git a/src/devices/bus/nubus/nubus_vikbw.h b/src/devices/bus/nubus/nubus_vikbw.h
index 071c122025e..fdafbeda6b5 100644
--- a/src/devices/bus/nubus/nubus_vikbw.h
+++ b/src/devices/bus/nubus/nubus_vikbw.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_VIKBW_H
+#define MAME_BUS_NUBUS_VIKBW_H
-#ifndef __NUBUS_VIKBW_H__
-#define __NUBUS_VIKBW_H__
+#pragma once
#include "nubus.h"
@@ -18,32 +18,32 @@ class nubus_vikbw_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_vikbw_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_vikbw_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ // construction/destruction
+ nubus_vikbw_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ nubus_vikbw_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_READ32_MEMBER(viking_ack_r);
- DECLARE_WRITE32_MEMBER(viking_ack_w);
- DECLARE_READ32_MEMBER(viking_enable_r);
- DECLARE_WRITE32_MEMBER(viking_disable_w);
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
-public:
- std::vector<uint8_t> m_vram;
- uint32_t m_vbl_disable, m_palette[2];
-};
+ DECLARE_READ32_MEMBER(viking_ack_r);
+ DECLARE_WRITE32_MEMBER(viking_ack_w);
+ DECLARE_READ32_MEMBER(viking_enable_r);
+ DECLARE_WRITE32_MEMBER(viking_disable_w);
+ std::vector<uint8_t> m_vram;
+ uint32_t m_vbl_disable, m_palette[2];
+};
// device type definition
-extern const device_type NUBUS_VIKBW;
+DECLARE_DEVICE_TYPE(NUBUS_VIKBW, nubus_vikbw_device)
-#endif /* __NUBUS_VIKBW_H__ */
+#endif // MAME_BUS_NUBUS_VIKBW_H
diff --git a/src/devices/bus/nubus/nubus_wsportrait.cpp b/src/devices/bus/nubus/nubus_wsportrait.cpp
index e231f7c44e0..c37cdf79d0f 100644
--- a/src/devices/bus/nubus/nubus_wsportrait.cpp
+++ b/src/devices/bus/nubus/nubus_wsportrait.cpp
@@ -39,7 +39,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type NUBUS_WSPORTRAIT = device_creator<nubus_wsportrait_device>;
+DEFINE_DEVICE_TYPE(NUBUS_WSPORTRAIT, nubus_wsportrait_device, "nb_wspt", "Macintosh II Portrait Video Card")
//-------------------------------------------------
@@ -70,20 +70,17 @@ const tiny_rom_entry *nubus_wsportrait_device::device_rom_region() const
//-------------------------------------------------
nubus_wsportrait_device::nubus_wsportrait_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NUBUS_WSPORTRAIT, "Macintosh II Portrait Video Card", tag, owner, clock, "nb_wspt", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+ nubus_wsportrait_device(mconfig, NUBUS_WSPORTRAIT, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(WSPORTRAIT_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_wsportrait_device::nubus_wsportrait_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+nubus_wsportrait_device::nubus_wsportrait_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, WSPORTRAIT_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(WSPORTRAIT_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/nubus_wsportrait.h b/src/devices/bus/nubus/nubus_wsportrait.h
index 09ae98f1db2..86d79ab5d1d 100644
--- a/src/devices/bus/nubus/nubus_wsportrait.h
+++ b/src/devices/bus/nubus/nubus_wsportrait.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_WSPORTRAIT_H
+#define MAME_BUS_NUBUS_WSPORTRAIT_H
-#ifndef __NUBUS_WSPORTRAIT_H__
-#define __NUBUS_WSPORTRAIT_H__
+#pragma once
#include "nubus.h"
@@ -19,37 +19,38 @@ class nubus_wsportrait_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_wsportrait_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_wsportrait_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // construction/destruction
+ nubus_wsportrait_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ32_MEMBER(wsportrait_r);
- DECLARE_WRITE32_MEMBER(wsportrait_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_mode, m_vbl_disable, m_toggle;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+protected:
+ nubus_wsportrait_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ DECLARE_READ32_MEMBER(wsportrait_r);
+ DECLARE_WRITE32_MEMBER(wsportrait_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_mode, m_vbl_disable, m_toggle;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
};
// device type definition
-extern const device_type NUBUS_WSPORTRAIT;
+DECLARE_DEVICE_TYPE(NUBUS_WSPORTRAIT, nubus_wsportrait_device)
-#endif /* __NUBUS_M2HIRES_H__ */
+#endif // MAME_BUS_NUBUS_WSPORTRAIT_H
diff --git a/src/devices/bus/nubus/pds30_30hr.cpp b/src/devices/bus/nubus/pds30_30hr.cpp
index 228055037aa..08ac27391c2 100644
--- a/src/devices/bus/nubus/pds30_30hr.cpp
+++ b/src/devices/bus/nubus/pds30_30hr.cpp
@@ -39,7 +39,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PDS030_XCEED30HR = device_creator<nubus_xceed30hr_device>;
+DEFINE_DEVICE_TYPE(PDS030_XCEED30HR, nubus_xceed30hr_device, "pd3_30hr", "Micron/XCEED Technology Color 30HR")
//-------------------------------------------------
@@ -70,20 +70,17 @@ const tiny_rom_entry *nubus_xceed30hr_device::device_rom_region() const
//-------------------------------------------------
nubus_xceed30hr_device::nubus_xceed30hr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PDS030_XCEED30HR, "Micron/XCEED Technology Color 30HR", tag, owner, clock, "pd3_30hr", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+ nubus_xceed30hr_device(mconfig, PDS030_XCEED30HR, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(XCEED30HR_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_xceed30hr_device::nubus_xceed30hr_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+nubus_xceed30hr_device::nubus_xceed30hr_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, XCEED30HR_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(XCEED30HR_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/pds30_30hr.h b/src/devices/bus/nubus/pds30_30hr.h
index eb038d791bf..17800579cfc 100644
--- a/src/devices/bus/nubus/pds30_30hr.h
+++ b/src/devices/bus/nubus/pds30_30hr.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_PDS30_30HR_H
+#define MAME_BUS_NUBUS_PDS30_30HR_H
-#ifndef __NUBUS_XCEED30HR_H__
-#define __NUBUS_XCEED30HR_H__
+#pragma once
#include "nubus.h"
@@ -19,37 +19,38 @@ class nubus_xceed30hr_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_xceed30hr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_xceed30hr_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // construction/destruction
+ nubus_xceed30hr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ32_MEMBER(xceed30hr_r);
- DECLARE_WRITE32_MEMBER(xceed30hr_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_mode, m_vbl_disable, m_toggle;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+protected:
+ nubus_xceed30hr_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ DECLARE_READ32_MEMBER(xceed30hr_r);
+ DECLARE_WRITE32_MEMBER(xceed30hr_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_mode, m_vbl_disable, m_toggle;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
};
// device type definition
-extern const device_type PDS030_XCEED30HR;
+DECLARE_DEVICE_TYPE(PDS030_XCEED30HR, nubus_xceed30hr_device)
-#endif /* __NUBUS_XCEED30HR_H__ */
+#endif // MAME_BUS_NUBUS_PDS30_30HR_H
diff --git a/src/devices/bus/nubus/pds30_cb264.cpp b/src/devices/bus/nubus/pds30_cb264.cpp
index 7c192b7dff6..47b2f15728a 100644
--- a/src/devices/bus/nubus/pds30_cb264.cpp
+++ b/src/devices/bus/nubus/pds30_cb264.cpp
@@ -32,7 +32,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PDS030_CB264SE30 = device_creator<nubus_cb264se30_device>;
+DEFINE_DEVICE_TYPE(PDS030_CB264SE30, nubus_cb264se30_device, "pd3_c264", "RasterOps Colorboard 264/SE30")
//-------------------------------------------------
@@ -63,20 +63,17 @@ const tiny_rom_entry *nubus_cb264se30_device::device_rom_region() const
//-------------------------------------------------
nubus_cb264se30_device::nubus_cb264se30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PDS030_CB264SE30, "RasterOps Colorboard 264/SE30", tag, owner, clock, "pd3_c264", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+ nubus_cb264se30_device(mconfig, PDS030_CB264SE30, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(CB264SE30_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_cb264se30_device::nubus_cb264se30_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+nubus_cb264se30_device::nubus_cb264se30_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, CB264SE30_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(CB264SE30_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/pds30_cb264.h b/src/devices/bus/nubus/pds30_cb264.h
index 5038660d31e..cf760ccb7fb 100644
--- a/src/devices/bus/nubus/pds30_cb264.h
+++ b/src/devices/bus/nubus/pds30_cb264.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_PDS30_CB264_H
+#define MAME_BUS_NUBUS_PDS30_CB264_H
-#ifndef __NUBUS_CB264SE30_H__
-#define __NUBUS_CB264SE30_H__
+#pragma once
#include "nubus.h"
@@ -19,37 +19,38 @@ class nubus_cb264se30_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_cb264se30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_cb264se30_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // construction/destruction
+ nubus_cb264se30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ32_MEMBER(cb264se30_r);
- DECLARE_WRITE32_MEMBER(cb264se30_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_mode, m_vbl_disable, m_toggle;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+protected:
+ nubus_cb264se30_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ DECLARE_READ32_MEMBER(cb264se30_r);
+ DECLARE_WRITE32_MEMBER(cb264se30_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_mode, m_vbl_disable, m_toggle;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
};
// device type definition
-extern const device_type PDS030_CB264SE30;
+DECLARE_DEVICE_TYPE(PDS030_CB264SE30, nubus_cb264se30_device)
-#endif /* __NUBUS_CB264SE30_H__ */
+#endif // MAME_BUS_NUBUS_PDS30_CB264_H
diff --git a/src/devices/bus/nubus/pds30_mc30.cpp b/src/devices/bus/nubus/pds30_mc30.cpp
index aaf61c68d3f..237a1df571f 100644
--- a/src/devices/bus/nubus/pds30_mc30.cpp
+++ b/src/devices/bus/nubus/pds30_mc30.cpp
@@ -35,7 +35,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PDS030_XCEEDMC30 = device_creator<nubus_xceedmc30_device>;
+DEFINE_DEVICE_TYPE(PDS030_XCEEDMC30, nubus_xceedmc30_device, "pd3_mclr", "Micron/XCEED Technology MacroColor 30")
//-------------------------------------------------
@@ -66,20 +66,17 @@ const tiny_rom_entry *nubus_xceedmc30_device::device_rom_region() const
//-------------------------------------------------
nubus_xceedmc30_device::nubus_xceedmc30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PDS030_XCEEDMC30, "Micron/XCEED Technology MacroColor 30", tag, owner, clock, "pd3_mclr", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+ nubus_xceedmc30_device(mconfig, PDS030_XCEEDMC30, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(XCEEDMC30_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_xceedmc30_device::nubus_xceedmc30_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+nubus_xceedmc30_device::nubus_xceedmc30_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, XCEEDMC30_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(XCEEDMC30_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/pds30_mc30.h b/src/devices/bus/nubus/pds30_mc30.h
index 834231ff7cb..ddf27ce50bc 100644
--- a/src/devices/bus/nubus/pds30_mc30.h
+++ b/src/devices/bus/nubus/pds30_mc30.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_PDS30_MC30_H
+#define MAME_BUS_NUBUS_PDS30_MC30_H
-#ifndef __NUBUS_XCEEDMC30_H__
-#define __NUBUS_XCEEDMC30_H__
+#pragma once
#include "nubus.h"
@@ -19,37 +19,38 @@ class nubus_xceedmc30_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_xceedmc30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_xceedmc30_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // construction/destruction
+ nubus_xceedmc30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ32_MEMBER(xceedmc30_r);
- DECLARE_WRITE32_MEMBER(xceedmc30_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_mode, m_vbl_disable, m_toggle;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+protected:
+ nubus_xceedmc30_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ DECLARE_READ32_MEMBER(xceedmc30_r);
+ DECLARE_WRITE32_MEMBER(xceedmc30_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_mode, m_vbl_disable, m_toggle;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
};
// device type definition
-extern const device_type PDS030_XCEEDMC30;
+DECLARE_DEVICE_TYPE(PDS030_XCEEDMC30, nubus_xceedmc30_device)
-#endif /* __NUBUS_XCEEDMC30_H__ */
+#endif // MAME_BUS_NUBUS_PDS30_MC30_H
diff --git a/src/devices/bus/nubus/pds30_procolor816.cpp b/src/devices/bus/nubus/pds30_procolor816.cpp
index fc7ef895227..11358165761 100644
--- a/src/devices/bus/nubus/pds30_procolor816.cpp
+++ b/src/devices/bus/nubus/pds30_procolor816.cpp
@@ -38,7 +38,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PDS030_PROCOLOR816 = device_creator<nubus_procolor816_device>;
+DEFINE_DEVICE_TYPE(PDS030_PROCOLOR816, nubus_procolor816_device, "pd3_pc16", "Lapis ProColor Server 8*16")
//-------------------------------------------------
@@ -69,20 +69,17 @@ const tiny_rom_entry *nubus_procolor816_device::device_rom_region() const
//-------------------------------------------------
nubus_procolor816_device::nubus_procolor816_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PDS030_PROCOLOR816, "Lapis ProColor Server 8*16", tag, owner, clock, "pd3_pc16", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+ nubus_procolor816_device(mconfig, PDS030_PROCOLOR816, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(PROCOLOR816_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_procolor816_device::nubus_procolor816_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr)
+nubus_procolor816_device::nubus_procolor816_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_mode(0), m_vbl_disable(0), m_toggle(0), m_count(0), m_clutoffs(0), m_timer(nullptr),
+ m_assembled_tag(util::string_format("%s:%s", tag, PROCOLOR816_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(PROCOLOR816_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/pds30_procolor816.h b/src/devices/bus/nubus/pds30_procolor816.h
index 84f34dc1ca4..e7145127ef8 100644
--- a/src/devices/bus/nubus/pds30_procolor816.h
+++ b/src/devices/bus/nubus/pds30_procolor816.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_PDS30_PROCOLOR816_H
+#define MAME_BUS_NUBUS_PDS30_PROCOLOR816_H
-#ifndef __NUBUS_PROCOLOR816_H__
-#define __NUBUS_PROCOLOR816_H__
+#pragma once
#include "nubus.h"
@@ -19,37 +19,38 @@ class nubus_procolor816_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_procolor816_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_procolor816_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // construction/destruction
+ nubus_procolor816_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ32_MEMBER(procolor816_r);
- DECLARE_WRITE32_MEMBER(procolor816_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_mode, m_vbl_disable, m_toggle;
- uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
- emu_timer *m_timer;
- std::string m_assembled_tag;
+protected:
+ nubus_procolor816_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ DECLARE_READ32_MEMBER(procolor816_r);
+ DECLARE_WRITE32_MEMBER(procolor816_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_mode, m_vbl_disable, m_toggle;
+ uint32_t m_palette[256], m_colors[3], m_count, m_clutoffs;
+ emu_timer *m_timer;
+ const std::string m_assembled_tag;
};
// device type definition
-extern const device_type PDS030_PROCOLOR816;
+DECLARE_DEVICE_TYPE(PDS030_PROCOLOR816, nubus_procolor816_device)
-#endif /* __NUBUS_PROCOLOR816_H__ */
+#endif // MAME_BUS_NUBUS_PDS30_PROCOLOR816_H
diff --git a/src/devices/bus/nubus/pds30_sigmalview.cpp b/src/devices/bus/nubus/pds30_sigmalview.cpp
index 58e04bd8c8a..6c4269f5f0a 100644
--- a/src/devices/bus/nubus/pds30_sigmalview.cpp
+++ b/src/devices/bus/nubus/pds30_sigmalview.cpp
@@ -32,7 +32,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PDS030_LVIEW = device_creator<nubus_lview_device>;
+DEFINE_DEVICE_TYPE(PDS030_LVIEW, nubus_lview_device, "pd3_lviw", "Sigma Designs L-View")
//-------------------------------------------------
@@ -63,20 +63,17 @@ const tiny_rom_entry *nubus_lview_device::device_rom_region() const
//-------------------------------------------------
nubus_lview_device::nubus_lview_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PDS030_LVIEW, "Sigma Designs L-View", tag, owner, clock, "pd3_lviw", __FILE__),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_vbl_disable(0), m_toggle(0), m_timer(nullptr), m_protstate(0)
+ nubus_lview_device(mconfig, PDS030_LVIEW, tag, owner, clock)
{
- m_assembled_tag = std::string(tag).append(":").append(LVIEW_SCREEN_NAME);
- m_screen_tag = m_assembled_tag.c_str();
}
-nubus_lview_device::nubus_lview_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this),
- device_nubus_card_interface(mconfig, *this), m_vram32(nullptr), m_vbl_disable(0), m_toggle(0), m_timer(nullptr), m_protstate(0)
+nubus_lview_device::nubus_lview_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this),
+ device_nubus_card_interface(mconfig, *this),
+ m_vram32(nullptr), m_vbl_disable(0), m_toggle(0), m_timer(nullptr), m_protstate(0),
+ m_assembled_tag(util::string_format("%s:%s", tag, LVIEW_SCREEN_NAME))
{
- m_assembled_tag = std::string(tag).append(":").append(LVIEW_SCREEN_NAME);
m_screen_tag = m_assembled_tag.c_str();
}
diff --git a/src/devices/bus/nubus/pds30_sigmalview.h b/src/devices/bus/nubus/pds30_sigmalview.h
index 918af8f4c68..9dd6bf522da 100644
--- a/src/devices/bus/nubus/pds30_sigmalview.h
+++ b/src/devices/bus/nubus/pds30_sigmalview.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_BUS_NUBUS_PDS30_SIGMALVIEW_H
+#define MAME_BUS_NUBUS_PDS30_SIGMALVIEW_H
-#ifndef __NUBUS_LVIEW_H__
-#define __NUBUS_LVIEW_H__
+#pragma once
#include "nubus.h"
@@ -19,38 +19,39 @@ class nubus_lview_device :
public device_nubus_card_interface
{
public:
- // construction/destruction
- nubus_lview_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nubus_lview_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // construction/destruction
+ nubus_lview_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
- DECLARE_READ32_MEMBER(lview_r);
- DECLARE_WRITE32_MEMBER(lview_w);
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-public:
- std::vector<uint8_t> m_vram;
- uint32_t *m_vram32;
- uint32_t m_vbl_disable, m_toggle;
- uint32_t m_palette[256];
- emu_timer *m_timer;
- int m_protstate;
- std::string m_assembled_tag;
+protected:
+ nubus_lview_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ DECLARE_READ32_MEMBER(lview_r);
+ DECLARE_WRITE32_MEMBER(lview_w);
+ DECLARE_READ32_MEMBER(vram_r);
+ DECLARE_WRITE32_MEMBER(vram_w);
+
+ std::vector<uint8_t> m_vram;
+ uint32_t *m_vram32;
+ uint32_t m_vbl_disable, m_toggle;
+ uint32_t m_palette[256];
+ emu_timer *m_timer;
+ int m_protstate;
+ const std::string m_assembled_tag;
};
// device type definition
-extern const device_type PDS030_LVIEW;
+DECLARE_DEVICE_TYPE(PDS030_LVIEW, nubus_lview_device)
-#endif /* __NUBUS_LVIEW_H__ */
+#endif // MAME_BUS_NUBUS_PDS30_SIGMALVIEW_H
diff --git a/src/devices/bus/odyssey2/chess.cpp b/src/devices/bus/odyssey2/chess.cpp
index c67856fbcaa..d339a8453ba 100644
--- a/src/devices/bus/odyssey2/chess.cpp
+++ b/src/devices/bus/odyssey2/chess.cpp
@@ -19,12 +19,12 @@
// o2_chess_device - constructor
//-------------------------------------------------
-const device_type O2_ROM_CHESS = device_creator<o2_chess_device>;
+DEFINE_DEVICE_TYPE(O2_ROM_CHESS, o2_chess_device, "o2_chess", "Odyssey 2 Videopac Chess Module")
o2_chess_device::o2_chess_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : o2_rom_device(mconfig, O2_ROM_CHESS, "Odyssey 2 BASIC Carts", tag, owner, clock, "o2_chess", __FILE__),
- m_cpu(*this, "subcpu")
+ : o2_rom_device(mconfig, O2_ROM_CHESS, tag, owner, clock)
+ , m_cpu(*this, "subcpu")
{
}
diff --git a/src/devices/bus/odyssey2/chess.h b/src/devices/bus/odyssey2/chess.h
index 86c5822decf..9e5275b4214 100644
--- a/src/devices/bus/odyssey2/chess.h
+++ b/src/devices/bus/odyssey2/chess.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __O2_CHESS_H
-#define __O2_CHESS_H
+#ifndef MAME_BUS_ODYSSEY2_CHESS_H
+#define MAME_BUS_ODYSSEY2_CHESS_H
+
+#pragma once
#include "slot.h"
#include "rom.h"
@@ -12,21 +14,18 @@
class o2_chess_device : public o2_rom_device
{
- virtual machine_config_constructor device_mconfig_additions() const override;
-// virtual const rom_entry *device_rom_region() const;
-
public:
// construction/destruction
o2_chess_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual machine_config_constructor device_mconfig_additions() const override;
+// virtual const rom_entry *device_rom_region() const;
+
private:
required_device<nsc800_device> m_cpu;
};
-
-
// device type definition
-extern const device_type O2_ROM_CHESS;
-
+DECLARE_DEVICE_TYPE(O2_ROM_CHESS, o2_chess_device)
-#endif
+#endif // MAME_BUS_ODYSSEY2_CHESS_H
diff --git a/src/devices/bus/odyssey2/rom.cpp b/src/devices/bus/odyssey2/rom.cpp
index 7a073e7fb19..a7b705308fd 100644
--- a/src/devices/bus/odyssey2/rom.cpp
+++ b/src/devices/bus/odyssey2/rom.cpp
@@ -17,32 +17,30 @@
// o2_rom_device - constructor
//-------------------------------------------------
-const device_type O2_ROM_STD = device_creator<o2_rom_device>;
-const device_type O2_ROM_12K = device_creator<o2_rom12_device>;
-const device_type O2_ROM_16K = device_creator<o2_rom16_device>;
+DEFINE_DEVICE_TYPE(O2_ROM_STD, o2_rom_device, "o2_rom", "Odyssey 2 Standard Carts")
+DEFINE_DEVICE_TYPE(O2_ROM_12K, o2_rom12_device, "o2_rom12", "Odyssey 2 12K Carts")
+DEFINE_DEVICE_TYPE(O2_ROM_16K, o2_rom16_device, "o2_rom16", "Odyssey 2 16K Carts")
-o2_rom_device::o2_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_o2_cart_interface(mconfig, *this),
- m_bank_base(0)
+o2_rom_device::o2_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_o2_cart_interface(mconfig, *this)
+ , m_bank_base(0)
{
}
o2_rom_device::o2_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, O2_ROM_STD, "Odyssey 2 Standard Carts", tag, owner, clock, "o2_rom", __FILE__),
- device_o2_cart_interface( mconfig, *this ),
- m_bank_base(0)
- {
+ : o2_rom_device(mconfig, O2_ROM_STD, tag, owner, clock)
+{
}
o2_rom12_device::o2_rom12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : o2_rom_device(mconfig, O2_ROM_12K, "Odyssey 2 12K Carts", tag, owner, clock, "o2_rom12", __FILE__)
+ : o2_rom_device(mconfig, O2_ROM_12K, tag, owner, clock)
{
}
o2_rom16_device::o2_rom16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : o2_rom_device(mconfig, O2_ROM_16K, "Odyssey 2 16K Carts", tag, owner, clock, "o2_rom16", __FILE__)
+ : o2_rom_device(mconfig, O2_ROM_16K, tag, owner, clock)
{
}
diff --git a/src/devices/bus/odyssey2/rom.h b/src/devices/bus/odyssey2/rom.h
index d3931e96b88..823b47462c7 100644
--- a/src/devices/bus/odyssey2/rom.h
+++ b/src/devices/bus/odyssey2/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __O2_ROM_H
-#define __O2_ROM_H
+#ifndef MAME_BUS_ODYSSEY2_ROM_H
+#define MAME_BUS_ODYSSEY2_ROM_H
+
+#pragma once
#include "slot.h"
@@ -13,13 +15,8 @@ class o2_rom_device : public device_t,
{
public:
// construction/destruction
- o2_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
o2_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom04) override;
virtual DECLARE_READ8_MEMBER(read_rom0c) override;
@@ -27,6 +24,12 @@ public:
virtual void write_bank(int bank) override;
protected:
+ o2_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_bank_base;
};
@@ -57,11 +60,9 @@ public:
};
-
// device type definition
-extern const device_type O2_ROM_STD;
-extern const device_type O2_ROM_12K;
-extern const device_type O2_ROM_16K;
-
+DECLARE_DEVICE_TYPE(O2_ROM_STD, o2_rom_device)
+DECLARE_DEVICE_TYPE(O2_ROM_12K, o2_rom12_device)
+DECLARE_DEVICE_TYPE(O2_ROM_16K, o2_rom16_device)
-#endif
+#endif // MAME_BUS_ODYSSEY2_ROM_H
diff --git a/src/devices/bus/odyssey2/slot.cpp b/src/devices/bus/odyssey2/slot.cpp
index b9c8b90f445..b75ccdb92e2 100644
--- a/src/devices/bus/odyssey2/slot.cpp
+++ b/src/devices/bus/odyssey2/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type O2_CART_SLOT = device_creator<o2_cart_slot_device>;
+DEFINE_DEVICE_TYPE(O2_CART_SLOT, o2_cart_slot_device, "o2_cart_slot", "Odyssey 2 Cartridge Slot")
//**************************************************************************
// Odyssey 2 Cartridges Interface
@@ -26,9 +26,9 @@ const device_type O2_CART_SLOT = device_creator<o2_cart_slot_device>;
//-------------------------------------------------
device_o2_cart_interface::device_o2_cart_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_rom(nullptr),
- m_rom_size(0)
+ : device_slot_card_interface(mconfig, device)
+ , m_rom(nullptr)
+ , m_rom_size(0)
{
}
@@ -72,11 +72,11 @@ void device_o2_cart_interface::ram_alloc(uint32_t size)
//-------------------------------------------------
// o2_cart_slot_device - constructor
//-------------------------------------------------
-o2_cart_slot_device::o2_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, O2_CART_SLOT, "Odyssey 2 Cartridge Slot", tag, owner, clock, "o2_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(O2_STD), m_cart(nullptr)
+o2_cart_slot_device::o2_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, O2_CART_SLOT, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
+ , device_slot_interface(mconfig, *this)
+ , m_type(O2_STD), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/odyssey2/slot.h b/src/devices/bus/odyssey2/slot.h
index 284300072ad..992d55abad5 100644
--- a/src/devices/bus/odyssey2/slot.h
+++ b/src/devices/bus/odyssey2/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __O2_SLOT_H
-#define __O2_SLOT_H
+#ifndef MAME_BUS_ODYSSEY2_SLOT_H
+#define MAME_BUS_ODYSSEY2_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -28,15 +30,14 @@ class device_o2_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_o2_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_o2_cart_interface();
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom04) { return 0xff; }
virtual DECLARE_READ8_MEMBER(read_rom0c) { return 0xff; }
- virtual void write_bank(int bank) {}
+ virtual void write_bank(int bank) { }
- virtual DECLARE_WRITE8_MEMBER(io_write) {}
+ virtual DECLARE_WRITE8_MEMBER(io_write) { }
virtual DECLARE_READ_LINE_MEMBER(t0_read) { return 0; }
void rom_alloc(uint32_t size, const char *tag);
@@ -47,6 +48,8 @@ public:
uint32_t get_ram_size() { return m_ram.size(); }
protected:
+ device_o2_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -70,7 +73,7 @@ public:
// image-level overrides
virtual image_init_result call_load() override;
- virtual void call_unload() override {}
+ virtual void call_unload() override { }
virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); }
int get_type() { return m_type; }
@@ -98,13 +101,11 @@ public:
protected:
int m_type;
- device_o2_cart_interface* m_cart;
+ device_o2_cart_interface* m_cart;
};
-
-
// device type definition
-extern const device_type O2_CART_SLOT;
+DECLARE_DEVICE_TYPE(O2_CART_SLOT, o2_cart_slot_device)
/***************************************************************************
@@ -119,4 +120,4 @@ extern const device_type O2_CART_SLOT;
SLOT_INTERFACE_EXTERN(o2_cart);
-#endif
+#endif // MAME_BUS_ODYSSEY2_SLOT_H
diff --git a/src/devices/bus/odyssey2/voice.cpp b/src/devices/bus/odyssey2/voice.cpp
index 7303e0a1939..6dd099968a2 100644
--- a/src/devices/bus/odyssey2/voice.cpp
+++ b/src/devices/bus/odyssey2/voice.cpp
@@ -21,14 +21,14 @@
// o2_voice_device - constructor
//-------------------------------------------------
-const device_type O2_ROM_VOICE = device_creator<o2_voice_device>;
+DEFINE_DEVICE_TYPE(O2_ROM_VOICE, o2_voice_device, "o2_voice", "Odyssey 2 The Voice Passthrough Cart")
o2_voice_device::o2_voice_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : o2_rom_device(mconfig, O2_ROM_VOICE, "Odyssey 2 The Voice Passthrough Cart", tag, owner, clock, "o2_voice", __FILE__),
- m_speech(*this, "sp0256_speech"),
- m_subslot(*this, "subslot"),
- m_lrq_state(0)
+ : o2_rom_device(mconfig, O2_ROM_VOICE, tag, owner, clock)
+ , m_speech(*this, "sp0256_speech")
+ , m_subslot(*this, "subslot")
+ , m_lrq_state(0)
{
}
diff --git a/src/devices/bus/odyssey2/voice.h b/src/devices/bus/odyssey2/voice.h
index 5262350823a..42550739843 100644
--- a/src/devices/bus/odyssey2/voice.h
+++ b/src/devices/bus/odyssey2/voice.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __O2_VOICE_H
-#define __O2_VOICE_H
+#ifndef MAME_BUS_ODYSSEY2_VOICE_H
+#define MAME_BUS_ODYSSEY2_VOICE_H
+
+#pragma once
#include "slot.h"
#include "rom.h"
@@ -16,10 +18,6 @@ public:
// construction/destruction
o2_voice_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override {}
-
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -33,6 +31,11 @@ public:
virtual DECLARE_WRITE8_MEMBER(io_write) override;
virtual DECLARE_READ_LINE_MEMBER(t0_read) override { return m_speech->lrq_r() ? 0 : 1; }
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override { }
+
private:
required_device<sp0256_device> m_speech;
required_device<o2_cart_slot_device> m_subslot;
@@ -41,10 +44,7 @@ private:
};
-
-
// device type definition
extern const device_type O2_ROM_VOICE;
-
-#endif
+#endif // MAME_BUS_ODYSSEY2_VOICE_H
diff --git a/src/devices/bus/oricext/jasmin.cpp b/src/devices/bus/oricext/jasmin.cpp
index 686ead3cc5d..6f5543e82a3 100644
--- a/src/devices/bus/oricext/jasmin.cpp
+++ b/src/devices/bus/oricext/jasmin.cpp
@@ -4,7 +4,7 @@
#include "jasmin.h"
#include "formats/oric_dsk.h"
-const device_type JASMIN = device_creator<jasmin_device>;
+DEFINE_DEVICE_TYPE(JASMIN, jasmin_device, "jasmin", "Jasmin floppy drive interface")
ROM_START( jasmin )
ROM_REGION( 0x800, "jasmin", 0 )
@@ -35,7 +35,7 @@ INPUT_PORTS_START( jasmin )
INPUT_PORTS_END
DEVICE_ADDRESS_MAP_START(map, 8, jasmin_device)
- AM_RANGE(0x3f4, 0x3f7) AM_DEVREADWRITE("fdc", wd1770_t, read, write)
+ AM_RANGE(0x3f4, 0x3f7) AM_DEVREADWRITE("fdc", wd1770_device, read, write)
AM_RANGE(0x3f8, 0x3f8) AM_WRITE(side_sel_w)
AM_RANGE(0x3f9, 0x3f9) AM_WRITE(fdc_reset_w)
AM_RANGE(0x3fa, 0x3fa) AM_WRITE(ram_access_w)
@@ -44,7 +44,7 @@ DEVICE_ADDRESS_MAP_START(map, 8, jasmin_device)
ADDRESS_MAP_END
jasmin_device::jasmin_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- oricext_device(mconfig, JASMIN, "Jasmin floppy drive interface", tag, owner, clock, "jasmin", __FILE__),
+ oricext_device(mconfig, JASMIN, tag, owner, clock),
fdc(*this, "fdc"), side_sel(false), fdc_reset(false), ram_access(false), rom_access(false), jasmin_rom(nullptr), cur_floppy(nullptr)
{
}
diff --git a/src/devices/bus/oricext/jasmin.h b/src/devices/bus/oricext/jasmin.h
index 8b4047be695..dc1dd9456ed 100644
--- a/src/devices/bus/oricext/jasmin.h
+++ b/src/devices/bus/oricext/jasmin.h
@@ -1,13 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef __JASMIN_H__
-#define __JASMIN_H__
+#ifndef MAME_BUS_ORICEXT_JASMIN_H
+#define MAME_BUS_ORICEXT_JASMIN_H
+
+#pragma once
#include "oricext.h"
#include "imagedev/floppy.h"
#include "machine/wd_fdc.h"
-extern const device_type JASMIN;
+DECLARE_DEVICE_TYPE(JASMIN, jasmin_device)
class jasmin_device : public oricext_device
{
@@ -25,12 +27,6 @@ public:
DECLARE_WRITE8_MEMBER(select_w);
protected:
- required_device<wd1770_t> fdc;
-
- bool side_sel, fdc_reset, ram_access, rom_access, select[4];
- uint8_t *jasmin_rom;
- floppy_image_device *cur_floppy, *floppies[4];
-
virtual void device_start() override;
virtual void device_reset() override;
const tiny_rom_entry *device_rom_region() const override;
@@ -38,6 +34,12 @@ protected:
virtual ioport_constructor device_input_ports() const override;
void remap();
+
+ required_device<wd1770_device> fdc;
+
+ bool side_sel, fdc_reset, ram_access, rom_access, select[4];
+ uint8_t *jasmin_rom;
+ floppy_image_device *cur_floppy, *floppies[4];
};
-#endif
+#endif // MAME_BUS_ORICEXT_JASMIN_H
diff --git a/src/devices/bus/oricext/microdisc.cpp b/src/devices/bus/oricext/microdisc.cpp
index c6607ba18fc..780c876e977 100644
--- a/src/devices/bus/oricext/microdisc.cpp
+++ b/src/devices/bus/oricext/microdisc.cpp
@@ -4,7 +4,7 @@
#include "microdisc.h"
#include "formats/oric_dsk.h"
-const device_type MICRODISC = device_creator<microdisc_device>;
+DEFINE_DEVICE_TYPE(MICRODISC, microdisc_device, "microdisc", "Microdisc floppy drive interface")
ROM_START( microdisc )
ROM_REGION( 0x2000, "microdisc", 0 )
@@ -33,13 +33,13 @@ static MACHINE_CONFIG_FRAGMENT( microdisc )
MACHINE_CONFIG_END
DEVICE_ADDRESS_MAP_START(map, 8, microdisc_device)
- AM_RANGE(0x310, 0x313) AM_DEVREADWRITE("fdc", fd1793_t, read, write)
+ AM_RANGE(0x310, 0x313) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
AM_RANGE(0x314, 0x314) AM_READWRITE(port_314_r, port_314_w)
AM_RANGE(0x318, 0x318) AM_READ(port_318_r)
ADDRESS_MAP_END
microdisc_device::microdisc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- oricext_device(mconfig, MICRODISC, "Microdisc floppy drive interface", tag, owner, clock, "microdisc", __FILE__),
+ oricext_device(mconfig, MICRODISC, tag, owner, clock),
fdc(*this, "fdc"), microdisc_rom(nullptr), port_314(0), intrq_state(false), drq_state(false), hld_state(false)
{
}
diff --git a/src/devices/bus/oricext/microdisc.h b/src/devices/bus/oricext/microdisc.h
index c4cc450db4f..18980a7f167 100644
--- a/src/devices/bus/oricext/microdisc.h
+++ b/src/devices/bus/oricext/microdisc.h
@@ -1,13 +1,13 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef __MICRODISC_H__
-#define __MICRODISC_H__
+#ifndef MAME_BUS_ORICEXT_MICRODISC_H
+#define MAME_BUS_ORICEXT_MICRODISC_H
#include "oricext.h"
#include "imagedev/floppy.h"
#include "machine/wd_fdc.h"
-extern const device_type MICRODISC;
+DECLARE_DEVICE_TYPE(MICRODISC, microdisc_device)
class microdisc_device : public oricext_device
{
@@ -36,7 +36,7 @@ protected:
P_EPROM = 0x80
};
- required_device<fd1793_t> fdc;
+ required_device<fd1793_device> fdc;
uint8_t *microdisc_rom;
floppy_image_device *floppies[4];
@@ -51,4 +51,4 @@ protected:
void remap();
};
-#endif
+#endif // MAME_BUS_ORICEXT_MICRODISC_H
diff --git a/src/devices/bus/oricext/oricext.cpp b/src/devices/bus/oricext/oricext.cpp
index 981507572ef..feb7f821c69 100644
--- a/src/devices/bus/oricext/oricext.cpp
+++ b/src/devices/bus/oricext/oricext.cpp
@@ -5,10 +5,10 @@
#include "jasmin.h"
#include "microdisc.h"
-const device_type ORICEXT_CONNECTOR = device_creator<oricext_connector>;
+DEFINE_DEVICE_TYPE(ORICEXT_CONNECTOR, oricext_connector, "oricext_connector", "ORIC extension connector")
oricext_connector::oricext_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ORICEXT_CONNECTOR, "ORIC extension connector", tag, owner, clock, "oricext_connector", __FILE__),
+ device_t(mconfig, ORICEXT_CONNECTOR, tag, owner, clock),
device_slot_interface(mconfig, *this),
irq_handler(*this),
cputag(nullptr)
@@ -41,8 +41,8 @@ void oricext_connector::device_config_complete()
dev->set_cputag(cputag);
}
-oricext_device::oricext_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+oricext_device::oricext_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_slot_card_interface(mconfig, *this),
cputag(nullptr),
cpu(nullptr),
diff --git a/src/devices/bus/oricext/oricext.h b/src/devices/bus/oricext/oricext.h
index 608e631a33c..6dc84ed2599 100644
--- a/src/devices/bus/oricext/oricext.h
+++ b/src/devices/bus/oricext/oricext.h
@@ -6,8 +6,10 @@
***************************************************************************/
-#ifndef __ORICEXT_H__
-#define __ORICEXT_H__
+#ifndef MAME_BUS_ORICEXT_ORICEXT_H
+#define MAME_BUS_ORICEXT_ORICEXT_H
+
+#pragma once
#include "cpu/m6502/m6502.h"
@@ -20,45 +22,46 @@
class oricext_device;
-class oricext_connector: public device_t,
- public device_slot_interface
+class oricext_connector: public device_t, public device_slot_interface
{
public:
oricext_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~oricext_connector();
void set_cputag(const char *tag);
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<oricext_connector &>(device).irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<oricext_connector &>(device).irq_handler.set_callback(std::forward<Object>(cb)); }
void irq_w(int state);
protected:
- devcb_write_line irq_handler;
- const char *cputag;
virtual void device_start() override;
virtual void device_config_complete() override;
+
+ devcb_write_line irq_handler;
+ const char *cputag;
};
class oricext_device : public device_t,
public device_slot_card_interface
{
public:
- oricext_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
void set_cputag(const char *tag);
DECLARE_WRITE_LINE_MEMBER(irq_w);
protected:
+ oricext_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+
const char *cputag;
m6502_device *cpu;
oricext_connector *connector;
memory_bank *bank_c000_r, *bank_e000_r, *bank_f800_r, *bank_c000_w, *bank_e000_w, *bank_f800_w;
uint8_t *rom, *ram;
uint8_t junk_read[8192], junk_write[8192];
-
- virtual void device_start() override;
};
-extern const device_type ORICEXT_CONNECTOR;
+DECLARE_DEVICE_TYPE(ORICEXT_CONNECTOR, oricext_connector)
+
SLOT_INTERFACE_EXTERN( oricext_intf );
-#endif /* __ORICEXT_H__ */
+#endif // MAME_BUS_ORICEXT_ORICEXT_H
diff --git a/src/devices/bus/pc1512/mouse.cpp b/src/devices/bus/pc1512/mouse.cpp
index 3029110de6e..04d688765a8 100644
--- a/src/devices/bus/pc1512/mouse.cpp
+++ b/src/devices/bus/pc1512/mouse.cpp
@@ -15,8 +15,8 @@
// DEVICE DEFINITION
//**************************************************************************
-const device_type PC1512_MOUSE_PORT = device_creator<pc1512_mouse_port_t>;
-const device_type PC1512_MOUSE = device_creator<pc1512_mouse_t>;
+DEFINE_DEVICE_TYPE(PC1512_MOUSE_PORT, pc1512_mouse_port_device, "pc1512_mouse_port", "Amstrad PC1512 mouse port")
+DEFINE_DEVICE_TYPE(PC1512_MOUSE, pc1512_mouse_device, "pc1512_mouse", "Amstrad PC1512 mouse")
@@ -31,7 +31,7 @@ const device_type PC1512_MOUSE = device_creator<pc1512_mouse_t>;
device_pc1512_mouse_port_interface::device_pc1512_mouse_port_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device)
{
- m_port = dynamic_cast<pc1512_mouse_port_t *>(device.owner());
+ m_port = dynamic_cast<pc1512_mouse_port_device *>(device.owner());
}
@@ -41,11 +41,11 @@ device_pc1512_mouse_port_interface::device_pc1512_mouse_port_interface(const mac
//**************************************************************************
//-------------------------------------------------
-// pc1512_mouse_port_t - constructor
+// pc1512_mouse_port_device - constructor
//-------------------------------------------------
-pc1512_mouse_port_t::pc1512_mouse_port_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PC1512_MOUSE_PORT, "Amstrad PC1512 mouse port", tag, owner, clock, "pc1512_mouse_port", __FILE__),
+pc1512_mouse_port_device::pc1512_mouse_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PC1512_MOUSE_PORT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_write_x(*this),
m_write_y(*this),
@@ -55,8 +55,8 @@ pc1512_mouse_port_t::pc1512_mouse_port_t(const machine_config &mconfig, const ch
{
}
-pc1512_mouse_t::pc1512_mouse_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PC1512_MOUSE, "Amstrad PC1512 mouse", tag, owner, clock, "pc1512_mouse", __FILE__),
+pc1512_mouse_device::pc1512_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PC1512_MOUSE, tag, owner, clock),
device_pc1512_mouse_port_interface(mconfig, *this)
{
}
@@ -66,7 +66,7 @@ pc1512_mouse_t::pc1512_mouse_t(const machine_config &mconfig, const char *tag, d
// device_start - device-specific startup
//-------------------------------------------------
-void pc1512_mouse_port_t::device_start()
+void pc1512_mouse_port_device::device_start()
{
m_device = dynamic_cast<device_pc1512_mouse_port_interface *>(get_card_device());
@@ -77,7 +77,7 @@ void pc1512_mouse_port_t::device_start()
m_write_m2.resolve_safe();
}
-void pc1512_mouse_t::device_start()
+void pc1512_mouse_device::device_start()
{
}
@@ -88,14 +88,14 @@ void pc1512_mouse_t::device_start()
static INPUT_PORTS_START( mouse )
PORT_START("MOUSEB")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_NAME("Left Mouse Button") PORT_CODE(MOUSECODE_BUTTON1) PORT_CHANGED_MEMBER(DEVICE_SELF, pc1512_mouse_t, mouse_button_1_changed, 0)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_NAME("Right Mouse Button") PORT_CODE(MOUSECODE_BUTTON2) PORT_CHANGED_MEMBER(DEVICE_SELF, pc1512_mouse_t, mouse_button_2_changed, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_NAME("Left Mouse Button") PORT_CODE(MOUSECODE_BUTTON1) PORT_CHANGED_MEMBER(DEVICE_SELF, pc1512_mouse_device, mouse_button_1_changed, 0)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_NAME("Right Mouse Button") PORT_CODE(MOUSECODE_BUTTON2) PORT_CHANGED_MEMBER(DEVICE_SELF, pc1512_mouse_device, mouse_button_2_changed, 0)
PORT_START("MOUSEX")
- PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1) PORT_CHANGED_MEMBER(DEVICE_SELF, pc1512_mouse_t, mouse_x_changed, 0)
+ PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1) PORT_CHANGED_MEMBER(DEVICE_SELF, pc1512_mouse_device, mouse_x_changed, 0)
PORT_START("MOUSEY")
- PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1) PORT_CHANGED_MEMBER(DEVICE_SELF, pc1512_mouse_t, mouse_y_changed, 0)
+ PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1) PORT_CHANGED_MEMBER(DEVICE_SELF, pc1512_mouse_device, mouse_y_changed, 0)
INPUT_PORTS_END
@@ -103,7 +103,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor pc1512_mouse_t::device_input_ports() const
+ioport_constructor pc1512_mouse_device::device_input_ports() const
{
return INPUT_PORTS_NAME( mouse );
}
diff --git a/src/devices/bus/pc1512/mouse.h b/src/devices/bus/pc1512/mouse.h
index dd89ae97277..f94984ab979 100644
--- a/src/devices/bus/pc1512/mouse.h
+++ b/src/devices/bus/pc1512/mouse.h
@@ -18,10 +18,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PC1512_MOUSE_H
+#define MAME_BUS_PC1512_MOUSE_H
-#ifndef __PC1512_MOUSE_PORT__
-#define __PC1512_MOUSE_PORT__
+#pragma once
@@ -37,16 +37,16 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_PC1512_MOUSE_PORT_X_CB(_write) \
- devcb = &pc1512_mouse_port_t::set_x_wr_callback(*device, DEVCB_##_write);
+ devcb = &pc1512_mouse_port_device::set_x_wr_callback(*device, DEVCB_##_write);
#define MCFG_PC1512_MOUSE_PORT_Y_CB(_write) \
- devcb = &pc1512_mouse_port_t::set_y_wr_callback(*device, DEVCB_##_write);
+ devcb = &pc1512_mouse_port_device::set_y_wr_callback(*device, DEVCB_##_write);
#define MCFG_PC1512_MOUSE_PORT_M1_CB(_write) \
- devcb = &pc1512_mouse_port_t::set_m1_wr_callback(*device, DEVCB_##_write);
+ devcb = &pc1512_mouse_port_device::set_m1_wr_callback(*device, DEVCB_##_write);
#define MCFG_PC1512_MOUSE_PORT_M2_CB(_write) \
- devcb = &pc1512_mouse_port_t::set_m2_wr_callback(*device, DEVCB_##_write);
+ devcb = &pc1512_mouse_port_device::set_m2_wr_callback(*device, DEVCB_##_write);
@@ -54,7 +54,7 @@
// TYPE DEFINITIONS
//**************************************************************************
-class pc1512_mouse_port_t;
+class pc1512_mouse_port_device;
// ======================> device_pc1512_mouse_port_interface
@@ -63,28 +63,28 @@ class device_pc1512_mouse_port_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_pc1512_mouse_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_pc1512_mouse_port_interface() { }
protected:
- pc1512_mouse_port_t *m_port;
+ device_pc1512_mouse_port_interface(const machine_config &mconfig, device_t &device);
+
+ pc1512_mouse_port_device *m_port;
};
-// ======================> pc1512_mouse_port_t
+// ======================> pc1512_mouse_port_device
-class pc1512_mouse_port_t : public device_t,
- public device_slot_interface
+class pc1512_mouse_port_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
- pc1512_mouse_port_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pc1512_mouse_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_x_wr_callback(device_t &device, _Object object) { return downcast<pc1512_mouse_port_t &>(device).m_write_x.set_callback(object); }
- template<class _Object> static devcb_base &set_y_wr_callback(device_t &device, _Object object) { return downcast<pc1512_mouse_port_t &>(device).m_write_y.set_callback(object); }
- template<class _Object> static devcb_base &set_m1_wr_callback(device_t &device, _Object object) { return downcast<pc1512_mouse_port_t &>(device).m_write_m1.set_callback(object); }
- template<class _Object> static devcb_base &set_m2_wr_callback(device_t &device, _Object object) { return downcast<pc1512_mouse_port_t &>(device).m_write_m2.set_callback(object); }
+ template <class Object> static devcb_base &set_x_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_x.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_y_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_y.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_m1_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_m1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_m2_wr_callback(device_t &device, Object &&cb) { return downcast<pc1512_mouse_port_device &>(device).m_write_m2.set_callback(std::forward<Object>(cb)); }
// peripheral interface
void x_w(uint8_t data) { m_write_x(data); }
@@ -105,14 +105,13 @@ protected:
};
-// ======================> pc1512_mouse_t
+// ======================> pc1512_mouse_device
-class pc1512_mouse_t : public device_t,
- public device_pc1512_mouse_port_interface
+class pc1512_mouse_device : public device_t, public device_pc1512_mouse_port_interface
{
public:
// construction/destruction
- pc1512_mouse_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pc1512_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
@@ -129,11 +128,11 @@ protected:
// device type definition
-extern const device_type PC1512_MOUSE_PORT;
-extern const device_type PC1512_MOUSE;
+DECLARE_DEVICE_TYPE(PC1512_MOUSE_PORT, pc1512_mouse_port_device)
+DECLARE_DEVICE_TYPE(PC1512_MOUSE, pc1512_mouse_device)
// slot devices
SLOT_INTERFACE_EXTERN( pc1512_mouse_port_devices );
-#endif
+#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 925968d9a9e..e71395e84fe 100644
--- a/src/devices/bus/pc_joy/pc_joy.cpp
+++ b/src/devices/bus/pc_joy/pc_joy.cpp
@@ -12,10 +12,10 @@
#include "pc_joy.h"
#include "pc_joy_sw.h"
-const device_type PC_JOY = device_creator<pc_joy_device>;
+DEFINE_DEVICE_TYPE(PC_JOY, pc_joy_device, "pc_joy", "PC joystick port")
pc_joy_device::pc_joy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PC_JOY, "PC joystick port", tag, owner, clock, "pc_joy", __FILE__),
+ device_t(mconfig, PC_JOY, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_dev(nullptr)
{
@@ -78,10 +78,10 @@ ioport_constructor pc_basic_joy_device::device_input_ports() const
return INPUT_PORTS_NAME( pc_joystick );
}
-const device_type PC_BASIC_JOY = device_creator<pc_basic_joy_device>;
+DEFINE_DEVICE_TYPE(PC_BASIC_JOY, pc_basic_joy_device, "pc_basic_joy", "PC basic joystick")
pc_basic_joy_device::pc_basic_joy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PC_BASIC_JOY, "PC basic joystick", tag, owner, clock, "basic_joy", __FILE__),
+ device_t(mconfig, PC_BASIC_JOY, tag, owner, clock),
device_pc_joy_interface(mconfig, *this),
m_btn(*this, "btn"),
m_x1(*this, "x1"),
diff --git a/src/devices/bus/pc_joy/pc_joy.h b/src/devices/bus/pc_joy/pc_joy.h
index 4b819ddcc09..39a32816a82 100644
--- a/src/devices/bus/pc_joy/pc_joy.h
+++ b/src/devices/bus/pc_joy/pc_joy.h
@@ -8,8 +8,10 @@
*
*************************************************************************/
-#ifndef PC_JOY_H
-#define PC_JOY_H
+#ifndef MAME_BUS_PC_JOY_PC_JOY_H
+#define MAME_BUS_PC_JOY_PC_JOY_H
+
+#pragma once
#define MCFG_PC_JOY_ADD(_tag) \
@@ -18,10 +20,9 @@
SLOT_INTERFACE_EXTERN(pc_joysticks);
-class device_pc_joy_interface: public device_slot_card_interface
+class device_pc_joy_interface : public device_slot_card_interface
{
public:
- device_pc_joy_interface(const machine_config &mconfig, device_t &device);
virtual ~device_pc_joy_interface();
virtual uint8_t x1(int delta) { return 0; }
@@ -30,25 +31,29 @@ public:
virtual uint8_t y2(int delta) { return 0; }
virtual uint8_t btn() { return 0xf; }
virtual void port_write() { }
+
+protected:
+ device_pc_joy_interface(const machine_config &mconfig, device_t &device);
};
-class pc_joy_device : public device_t,
- public device_slot_interface
+class pc_joy_device : public device_t, public device_slot_interface
{
public:
pc_joy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER(joy_port_r);
DECLARE_WRITE8_MEMBER(joy_port_w);
+
protected:
virtual void device_start() override { m_stime = machine().time(); }
virtual void device_config_complete() override;
+
private:
attotime m_stime;
device_pc_joy_interface *m_dev;
};
-extern const device_type PC_JOY;
+DECLARE_DEVICE_TYPE(PC_JOY, pc_joy_device)
class pc_basic_joy_device : public device_t,
public device_pc_joy_interface
@@ -64,7 +69,7 @@ public:
virtual uint8_t btn() override { return m_btn->read(); }
protected:
- virtual void device_start() override {}
+ virtual void device_start() override { }
private:
required_ioport m_btn;
@@ -74,4 +79,4 @@ private:
required_ioport m_y2;
};
-#endif /* PC_JOY_H */
+#endif // MAME_BUS_PC_JOY_PC_JOY_H
diff --git a/src/devices/bus/pc_joy/pc_joy_sw.cpp b/src/devices/bus/pc_joy/pc_joy_sw.cpp
index 817798ff383..0fbe1e67e45 100644
--- a/src/devices/bus/pc_joy/pc_joy_sw.cpp
+++ b/src/devices/bus/pc_joy/pc_joy_sw.cpp
@@ -5,10 +5,10 @@
#include "emu.h"
#include "pc_joy_sw.h"
-const device_type PC_MSSW_PAD = device_creator<pc_mssw_pad_device>;
+DEFINE_DEVICE_TYPE(PC_MSSW_PAD, pc_mssw_pad_device, "mssw_pad", "Microsoft Sidewinder Pad")
pc_mssw_pad_device::pc_mssw_pad_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) :
- device_t(mconfig, PC_MSSW_PAD, "Microsoft Sidewinder Pad", tag, owner, clock, "mssw_pad", __FILE__),
+ device_t(mconfig, PC_MSSW_PAD, tag, owner, clock),
device_pc_joy_interface(mconfig, *this),
m_btn1(*this, "btn1"),
m_btn2(*this, "btn2"),
diff --git a/src/devices/bus/pc_joy/pc_joy_sw.h b/src/devices/bus/pc_joy/pc_joy_sw.h
index c36c564d8e5..cb76b268a36 100644
--- a/src/devices/bus/pc_joy/pc_joy_sw.h
+++ b/src/devices/bus/pc_joy/pc_joy_sw.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef PC_JOY_SW_H_
-#define PC_JOY_SW_H_
+#ifndef MAME_BUS_PC_JOY_PC_JOY_SW_H
+#define MAME_BUS_PC_JOY_PC_JOY_SW_H
#include "pc_joy.h"
@@ -18,8 +18,8 @@ public:
protected:
virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id tid, int param, void *ptr) override;
virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id tid, int param, void *ptr) override;
private:
required_ioport m_btn1;
@@ -33,6 +33,6 @@ private:
bool m_active;
};
-extern const device_type PC_MSSW_PAD;
+DECLARE_DEVICE_TYPE(PC_MSSW_PAD, pc_mssw_pad_device)
-#endif /* PC_JOY_SW_H_ */
+#endif // MAME_BUS_PC_JOY_PC_JOY_SW_H
diff --git a/src/devices/bus/pc_kbd/ec1841.cpp b/src/devices/bus/pc_kbd/ec1841.cpp
index 55ce89d3f6f..19ca2f5338a 100644
--- a/src/devices/bus/pc_kbd/ec1841.cpp
+++ b/src/devices/bus/pc_kbd/ec1841.cpp
@@ -39,7 +39,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PC_KBD_EC_1841 = device_creator<ec_1841_keyboard_device>;
+DEFINE_DEVICE_TYPE(PC_KBD_EC_1841, ec_1841_keyboard_device, "kb_ec1841", "EC-1841 Keyboard")
//-------------------------------------------------
@@ -274,7 +274,7 @@ ioport_constructor ec_1841_keyboard_device::device_input_ports() const
//-------------------------------------------------
ec_1841_keyboard_device::ec_1841_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PC_KBD_EC_1841, "EC-1841 Keyboard", tag, owner, clock, "kb_ec1841", __FILE__),
+ : device_t(mconfig, PC_KBD_EC_1841, tag, owner, clock),
device_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_kbd(*this, "MD%02u", 0),
diff --git a/src/devices/bus/pc_kbd/ec1841.h b/src/devices/bus/pc_kbd/ec1841.h
index 6b381439202..401452ac019 100644
--- a/src/devices/bus/pc_kbd/ec1841.h
+++ b/src/devices/bus/pc_kbd/ec1841.h
@@ -6,13 +6,13 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PC_KBD_EC1841_H
+#define MAME_BUS_PC_KBD_EC1841_H
-#ifndef __PC_KBD_EC_1841__
-#define __PC_KBD_EC_1841__
+#pragma once
-#include "cpu/mcs48/mcs48.h"
#include "pc_kbdc.h"
+#include "cpu/mcs48/mcs48.h"
@@ -22,8 +22,7 @@
// ======================> ec_1841_keyboard_device
-class ec_1841_keyboard_device : public device_t,
- public device_pc_kbd_interface
+class ec_1841_keyboard_device : public device_t, public device_pc_kbd_interface
{
public:
// construction/destruction
@@ -61,6 +60,6 @@ private:
// device type definition
-extern const device_type PC_KBD_EC_1841;
+DECLARE_DEVICE_TYPE(PC_KBD_EC_1841, ec_1841_keyboard_device)
-#endif
+#endif // MAME_BUS_PC_KBD_EC1841_H
diff --git a/src/devices/bus/pc_kbd/iskr1030.cpp b/src/devices/bus/pc_kbd/iskr1030.cpp
index 1720b08f2b8..64f0c078bbb 100644
--- a/src/devices/bus/pc_kbd/iskr1030.cpp
+++ b/src/devices/bus/pc_kbd/iskr1030.cpp
@@ -34,7 +34,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PC_KBD_ISKR_1030 = device_creator<iskr_1030_keyboard_device>;
+DEFINE_DEVICE_TYPE(PC_KBD_ISKR_1030, iskr_1030_keyboard_device, "kb_iskr1030", "Iskra-1030 Keyboard")
//-------------------------------------------------
@@ -262,7 +262,7 @@ ioport_constructor iskr_1030_keyboard_device::device_input_ports() const
//-------------------------------------------------
iskr_1030_keyboard_device::iskr_1030_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PC_KBD_ISKR_1030, "Iskra-1030 Keyboard", tag, owner, clock, "kb_iskr1030", __FILE__),
+ : device_t(mconfig, PC_KBD_ISKR_1030, tag, owner, clock),
device_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_md00(*this, "MD00"),
diff --git a/src/devices/bus/pc_kbd/iskr1030.h b/src/devices/bus/pc_kbd/iskr1030.h
index eb47dcbe6dc..3dd0f670479 100644
--- a/src/devices/bus/pc_kbd/iskr1030.h
+++ b/src/devices/bus/pc_kbd/iskr1030.h
@@ -6,13 +6,13 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PC_KBD_ISKR1030_H
+#define MAME_BUS_PC_KBD_ISKR1030_H
-#ifndef __PC_KBD_ISKR_1030__
-#define __PC_KBD_ISKR_1030__
+#pragma once
-#include "cpu/mcs48/mcs48.h"
#include "pc_kbdc.h"
+#include "cpu/mcs48/mcs48.h"
#include "machine/rescap.h"
@@ -23,8 +23,7 @@
// ======================> iskr_1030_keyboard_device
-class iskr_1030_keyboard_device : public device_t,
- public device_pc_kbd_interface
+class iskr_1030_keyboard_device : public device_t, public device_pc_kbd_interface
{
public:
// construction/destruction
@@ -87,6 +86,6 @@ private:
// device type definition
-extern const device_type PC_KBD_ISKR_1030;
+DECLARE_DEVICE_TYPE(PC_KBD_ISKR_1030, iskr_1030_keyboard_device)
-#endif
+#endif // MAME_BUS_PC_KBD_ISKR1030_H
diff --git a/src/devices/bus/pc_kbd/keyboards.h b/src/devices/bus/pc_kbd/keyboards.h
index cd88f8b1096..a2a375f96ed 100644
--- a/src/devices/bus/pc_kbd/keyboards.h
+++ b/src/devices/bus/pc_kbd/keyboards.h
@@ -6,8 +6,10 @@
***************************************************************************/
-#ifndef __PC_KEYBOARDS_H__
-#define __PC_KEYBOARDS_H__
+#ifndef MAME_BUS_PC_KBD_KEYBOARDS_H
+#define MAME_BUS_PC_KBD_KEYBOARDS_H
+
+#pragma once
// PC XT protocol keyboards
@@ -28,4 +30,4 @@ SLOT_INTERFACE_EXTERN(pc_xt_keyboards);
SLOT_INTERFACE_EXTERN(pc_at_keyboards);
-#endif /* __KB_KEYBOARDS_H__ */
+#endif // MAME_BUS_PC_KBD_KEYBOARDS_H
diff --git a/src/devices/bus/pc_kbd/keytro.cpp b/src/devices/bus/pc_kbd/keytro.cpp
index 7c7d30ed53a..f7311bfec9f 100644
--- a/src/devices/bus/pc_kbd/keytro.cpp
+++ b/src/devices/bus/pc_kbd/keytro.cpp
@@ -336,8 +336,8 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PC_KBD_KEYTRONIC_PC3270 = device_creator<pc_kbd_keytronic_pc3270_device>;
-const device_type PC_KBD_KEYTRONIC_PC3270_AT = device_creator<pc_kbd_keytronic_pc3270_at_device>;
+DEFINE_DEVICE_TYPE(PC_KBD_KEYTRONIC_PC3270, pc_kbd_keytronic_pc3270_device, "keytronic_pc3270", "Keytronic PC3270")
+DEFINE_DEVICE_TYPE(PC_KBD_KEYTRONIC_PC3270_AT, pc_kbd_keytronic_pc3270_at_device, "keytronic_pc3270_at", "Keytronic PC3270 AT")
/*****************************************************************************
@@ -378,7 +378,7 @@ ROM_END
pc_kbd_keytronic_pc3270_device::pc_kbd_keytronic_pc3270_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- pc_kbd_keytronic_pc3270_device(mconfig, PC_KBD_KEYTRONIC_PC3270, "Keytronic PC3270", tag, owner, clock, "keytronic_pc3270", __FILE__)
+ pc_kbd_keytronic_pc3270_device(mconfig, PC_KBD_KEYTRONIC_PC3270, tag, owner, clock)
{
}
@@ -386,13 +386,10 @@ pc_kbd_keytronic_pc3270_device::pc_kbd_keytronic_pc3270_device(const machine_con
pc_kbd_keytronic_pc3270_device::pc_kbd_keytronic_pc3270_device(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_pc_kbd_interface(mconfig, *this),
m_cpu(*this, "kb_keytr"), m_p1(0), m_p1_data(0), m_p2(0), m_p3(0), m_last_write_addr(0)
{
@@ -400,7 +397,7 @@ pc_kbd_keytronic_pc3270_device::pc_kbd_keytronic_pc3270_device(
pc_kbd_keytronic_pc3270_at_device::pc_kbd_keytronic_pc3270_at_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- pc_kbd_keytronic_pc3270_device(mconfig, PC_KBD_KEYTRONIC_PC3270_AT, "Keytronic PC3270 AT", tag, owner, clock, "keytronic_pc3270_at", __FILE__)
+ pc_kbd_keytronic_pc3270_device(mconfig, PC_KBD_KEYTRONIC_PC3270_AT, tag, owner, clock)
{
}
diff --git a/src/devices/bus/pc_kbd/keytro.h b/src/devices/bus/pc_kbd/keytro.h
index 11970b71884..6043b21b110 100644
--- a/src/devices/bus/pc_kbd/keytro.h
+++ b/src/devices/bus/pc_kbd/keytro.h
@@ -9,6 +9,8 @@
#ifndef MAME_BUS_PC_KBD_KEYTRO_H
#define MAME_BUS_PC_KBD_KEYTRO_H
+#pragma once
+
#include "pc_kbdc.h"
//**************************************************************************
@@ -47,12 +49,9 @@ protected:
pc_kbd_keytronic_pc3270_device(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source);
+ uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -77,7 +76,7 @@ public:
// device type definition
-extern const device_type PC_KBD_KEYTRONIC_PC3270;
-extern const device_type PC_KBD_KEYTRONIC_PC3270_AT;
+DECLARE_DEVICE_TYPE(PC_KBD_KEYTRONIC_PC3270, pc_kbd_keytronic_pc3270_device)
+DECLARE_DEVICE_TYPE(PC_KBD_KEYTRONIC_PC3270_AT, pc_kbd_keytronic_pc3270_at_device)
#endif // MAME_BUS_PC_KBD_KEYTRO_H
diff --git a/src/devices/bus/pc_kbd/msnat.cpp b/src/devices/bus/pc_kbd/msnat.cpp
index 734ae193b9e..b191904bd06 100644
--- a/src/devices/bus/pc_kbd/msnat.cpp
+++ b/src/devices/bus/pc_kbd/msnat.cpp
@@ -194,7 +194,7 @@ INPUT_PORTS_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PC_KBD_MICROSOFT_NATURAL = device_creator<pc_kbd_microsoft_natural_device>;
+DEFINE_DEVICE_TYPE(PC_KBD_MICROSOFT_NATURAL, pc_kbd_microsoft_natural_device, "kb_ms_natural", "Microsoft Natural Keyboard")
/*****************************************************************************
ADDRESS MAPS
@@ -229,25 +229,12 @@ ROM_END
pc_kbd_microsoft_natural_device::pc_kbd_microsoft_natural_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PC_KBD_MICROSOFT_NATURAL, "Microsoft Natural Keyboard", tag, owner, clock, "ms_natural", __FILE__)
+ : device_t(mconfig, PC_KBD_MICROSOFT_NATURAL, tag, owner, clock)
, device_pc_kbd_interface(mconfig, *this)
, m_cpu(*this, "ms_natrl_cpu")
- , m_p2_0(*this, "P2.0")
- , m_p2_1(*this, "P2.1")
- , m_p2_2(*this, "P2.2")
- , m_p2_3(*this, "P2.3")
- , m_p2_4(*this, "P2.4")
- , m_p2_5(*this, "P2.5")
- , m_p2_6(*this, "P2.6")
- , m_p2_7(*this, "P2.7")
- , m_p1_0(*this, "P1.0")
- , m_p1_1(*this, "P1.1")
- , m_p1_2(*this, "P1.2")
- , m_p1_3(*this, "P1.3")
- , m_p1_4(*this, "P1.4")
- , m_p1_5(*this, "P1.5")
- , m_p1_6(*this, "P1.6")
- , m_p1_7(*this, "P1.7"), m_p0(0), m_p1(0), m_p2(0), m_p3(0)
+ , m_p2_r(*this, "P2.%u", 0)
+ , m_p1_r(*this, "P1.%u", 0)
+ , m_p0(0), m_p1(0), m_p2(0), m_p3(0)
{
}
@@ -321,84 +308,52 @@ READ8_MEMBER( pc_kbd_microsoft_natural_device::p0_read )
logerror("%s: P0 read. P1 = %02x, P2 = %02x\n", tag(), m_p1, m_p2 );
if ( ! ( m_p2 & 0x01 ) )
- {
- data &= m_p2_0->read();
- }
+ data &= m_p2_r[0]->read();
if ( ! ( m_p2 & 0x02 ) )
- {
- data &= m_p2_1->read();
- }
+ data &= m_p2_r[1]->read();
if ( ! ( m_p2 & 0x04 ) )
- {
- data &= m_p2_2->read();
- }
+ data &= m_p2_r[2]->read();
if ( ! ( m_p2 & 0x08 ) )
- {
- data &= m_p2_3->read();
- }
+ data &= m_p2_r[3]->read();
if ( ! ( m_p2 & 0x10 ) )
- {
- data &= m_p2_4->read();
- }
+ data &= m_p2_r[4]->read();
if ( ! ( m_p2 & 0x20 ) )
- {
- data &= m_p2_5->read();
- }
+ data &= m_p2_r[5]->read();
if ( ! ( m_p2 & 0x40 ) )
- {
- data &= m_p2_6->read();
- }
+ data &= m_p2_r[6]->read();
if ( ! ( m_p2 & 0x80 ) )
- {
- data &= m_p2_7->read();
- }
+ data &= m_p2_r[7]->read();
if ( ! ( m_p1 & 0x01 ) )
- {
- data &= m_p1_0->read();
- }
+ data &= m_p1_r[0]->read();
if ( ! ( m_p1 & 0x02 ) )
- {
- data &= m_p1_1->read();
- }
+ data &= m_p1_r[1]->read();
if ( ! ( m_p1 & 0x04 ) )
- {
- data &= m_p1_2->read();
- }
+ data &= m_p1_r[2]->read();
if ( ! ( m_p1 & 0x08 ) )
- {
- data &= m_p1_3->read();
- }
+ data &= m_p1_r[3]->read();
if ( ! ( m_p1 & 0x10 ) )
- {
- data &= m_p1_4->read();
- }
+ data &= m_p1_r[4]->read();
if ( ! ( m_p1 & 0x20 ) )
- {
- data &= m_p1_5->read();
- }
+ data &= m_p1_r[5]->read();
if ( ! ( m_p1 & 0x40 ) )
- {
- data &= m_p1_6->read();
- }
+ data &= m_p1_r[6]->read();
if ( ! ( m_p1 & 0x80 ) )
- {
- data &= m_p1_7->read();
- }
+ data &= m_p1_r[7]->read();
return data;
}
diff --git a/src/devices/bus/pc_kbd/msnat.h b/src/devices/bus/pc_kbd/msnat.h
index c3c8eaa5c99..0b0f240b646 100644
--- a/src/devices/bus/pc_kbd/msnat.h
+++ b/src/devices/bus/pc_kbd/msnat.h
@@ -6,8 +6,10 @@
***************************************************************************/
-#ifndef __KB_MSNAT_H__
-#define __KB_MSNAT_H__
+#ifndef MAME_BUS_PC_KB_MSNAT_H
+#define MAME_BUS_PC_KB_MSNAT_H
+
+#pragma once
#include "pc_kbdc.h"
@@ -22,8 +24,6 @@ public:
// construction/destruction
pc_kbd_microsoft_natural_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- required_device<cpu_device> m_cpu;
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
@@ -40,27 +40,15 @@ public:
DECLARE_WRITE8_MEMBER(p3_write);
protected:
- required_ioport m_p2_0;
- required_ioport m_p2_1;
- required_ioport m_p2_2;
- required_ioport m_p2_3;
- required_ioport m_p2_4;
- required_ioport m_p2_5;
- required_ioport m_p2_6;
- required_ioport m_p2_7;
- required_ioport m_p1_0;
- required_ioport m_p1_1;
- required_ioport m_p1_2;
- required_ioport m_p1_3;
- required_ioport m_p1_4;
- required_ioport m_p1_5;
- required_ioport m_p1_6;
- required_ioport m_p1_7;
-
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ required_device<cpu_device> m_cpu;
+
+ required_ioport_array<8> m_p2_r;
+ required_ioport_array<8> m_p1_r;
+
uint8_t m_p0;
uint8_t m_p1;
uint8_t m_p2;
@@ -71,4 +59,4 @@ protected:
// device type definition
extern const device_type PC_KBD_MICROSOFT_NATURAL;
-#endif /* __KB_MSNAT_H__ */
+#endif // MAME_BUS_PC_KB_MSNAT_H
diff --git a/src/devices/bus/pc_kbd/pc83.cpp b/src/devices/bus/pc_kbd/pc83.cpp
index 33f59c9eb16..89dccb844a0 100644
--- a/src/devices/bus/pc_kbd/pc83.cpp
+++ b/src/devices/bus/pc_kbd/pc83.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PC_KBD_IBM_PC_83 = device_creator<ibm_pc_83_keyboard_device>;
+DEFINE_DEVICE_TYPE(PC_KBD_IBM_PC_83, ibm_pc_83_keyboard_device, "kb_pc83", "IBM PC Keyboard")
//-------------------------------------------------
@@ -241,7 +241,7 @@ ioport_constructor ibm_pc_83_keyboard_device::device_input_ports() const
//-------------------------------------------------
ibm_pc_83_keyboard_device::ibm_pc_83_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PC_KBD_IBM_PC_83, "IBM PC Keyboard", tag, owner, clock, "kb_pc83", __FILE__),
+ device_t(mconfig, PC_KBD_IBM_PC_83, tag, owner, clock),
device_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_dr(*this, "DR%02u", 0),
diff --git a/src/devices/bus/pc_kbd/pc83.h b/src/devices/bus/pc_kbd/pc83.h
index 9d1fc24c47f..a9718fc40de 100644
--- a/src/devices/bus/pc_kbd/pc83.h
+++ b/src/devices/bus/pc_kbd/pc83.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PC_KBD_PC83_H
+#define MAME_BUS_PC_KBD_PC83_H
-#ifndef __PC_KBD_IBM_PC_83__
-#define __PC_KBD_IBM_PC_83__
+#pragma once
#include "cpu/mcs48/mcs48.h"
#include "pc_kbdc.h"
@@ -58,8 +58,7 @@ private:
// device type definition
-extern const device_type PC_KBD_IBM_PC_83;
-
+DECLARE_DEVICE_TYPE(PC_KBD_IBM_PC_83, ibm_pc_83_keyboard_device)
-#endif
+#endif // MAME_BUS_PC_KBD_PC83_H
diff --git a/src/devices/bus/pc_kbd/pc_kbdc.cpp b/src/devices/bus/pc_kbd/pc_kbdc.cpp
index fd87cca47fc..7fc1ed0419a 100644
--- a/src/devices/bus/pc_kbd/pc_kbdc.cpp
+++ b/src/devices/bus/pc_kbd/pc_kbdc.cpp
@@ -21,7 +21,7 @@ The following basic program can be useful for identifying scancodes:
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PC_KBDC_SLOT = device_creator<pc_kbdc_slot_device>;
+DEFINE_DEVICE_TYPE(PC_KBDC_SLOT, pc_kbdc_slot_device, "pc_kbdc_slot", "PC keyboard port")
//**************************************************************************
// LIVE DEVICE
@@ -31,8 +31,8 @@ const device_type PC_KBDC_SLOT = device_creator<pc_kbdc_slot_device>;
// pc_kbdc_slot_device - constructor
//-------------------------------------------------
pc_kbdc_slot_device::pc_kbdc_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PC_KBDC_SLOT, "PC_KBDC_SLOT", tag, owner, clock, "pc_kbdc_slot", __FILE__),
- device_slot_interface(mconfig, *this),
+ device_t(mconfig, PC_KBDC_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
m_kbdc_device(nullptr)
{
}
@@ -63,21 +63,21 @@ void pc_kbdc_slot_device::device_start()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PC_KBDC = device_creator<pc_kbdc_device>;
+DEFINE_DEVICE_TYPE(PC_KBDC, pc_kbdc_device, "pc_kbdc", "PC KBDC")
//-------------------------------------------------
// pc_kbdc_device - constructor
//-------------------------------------------------
pc_kbdc_device::pc_kbdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PC_KBDC, "PC_KBDC", tag, owner, clock, "pc_kbdc", __FILE__),
- m_out_clock_cb(*this),
- m_out_data_cb(*this),
- m_clock_state(-1),
- m_data_state(-1), m_mb_clock_state(0), m_mb_data_state(0),
- m_kb_clock_state(1),
- m_kb_data_state(1),
- m_keyboard( nullptr )
+ device_t(mconfig, PC_KBDC, tag, owner, clock),
+ m_out_clock_cb(*this),
+ m_out_data_cb(*this),
+ m_clock_state(-1),
+ m_data_state(-1), m_mb_clock_state(0), m_mb_data_state(0),
+ m_kb_clock_state(1),
+ m_kb_data_state(1),
+ m_keyboard( nullptr )
{
}
@@ -193,9 +193,9 @@ WRITE_LINE_MEMBER( pc_kbdc_device::data_write_from_kb )
//-------------------------------------------------
device_pc_kbd_interface::device_pc_kbd_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_pc_kbdc(nullptr),
- m_pc_kbdc_tag(nullptr), m_next(nullptr)
+ : device_slot_card_interface(mconfig, device)
+ , m_pc_kbdc(nullptr)
+ , m_pc_kbdc_tag(nullptr)
{
}
diff --git a/src/devices/bus/pc_kbd/pc_kbdc.h b/src/devices/bus/pc_kbd/pc_kbdc.h
index de8cadad147..5b72ef6cd64 100644
--- a/src/devices/bus/pc_kbd/pc_kbdc.h
+++ b/src/devices/bus/pc_kbd/pc_kbdc.h
@@ -10,10 +10,10 @@ set the data line and then set the clock line.
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_PC_KBD_PC_KBDC_H
+#define MAME_BUS_PC_KBD_PC_KBDC_H
-#ifndef __PC_KBDC_H__
-#define __PC_KBDC_H__
+#pragma once
//**************************************************************************
@@ -48,6 +48,7 @@ public:
// inline configuration
static void static_set_pc_kbdc_slot(device_t &device, device_t *kbdc_device);
+
protected:
// configuration
device_t *m_kbdc_device;
@@ -55,19 +56,19 @@ protected:
// device type definition
-extern const device_type PC_KBDC_SLOT;
+DECLARE_DEVICE_TYPE(PC_KBDC_SLOT, pc_kbdc_slot_device)
class device_pc_kbd_interface;
-class pc_kbdc_device : public device_t
+class pc_kbdc_device : public device_t
{
public:
// construction/destruction
pc_kbdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_clock_callback(device_t &device, _Object object) { return downcast<pc_kbdc_device &>(device).m_out_clock_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_data_callback(device_t &device, _Object object) { return downcast<pc_kbdc_device &>(device).m_out_data_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_clock_callback(device_t &device, Object &&cb) { return downcast<pc_kbdc_device &>(device).m_out_clock_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_data_callback(device_t &device, Object &&cb) { return downcast<pc_kbdc_device &>(device).m_out_data_cb.set_callback(std::forward<Object>(cb)); }
void set_keyboard(device_pc_kbd_interface *keyboard);
@@ -103,7 +104,7 @@ protected:
// device type definition
-extern const device_type PC_KBDC;
+DECLARE_DEVICE_TYPE(PC_KBDC, pc_kbdc_device)
// ======================> device_pc_pbd_interface
@@ -116,8 +117,6 @@ public:
device_pc_kbd_interface(const machine_config &mconfig, device_t &device);
virtual ~device_pc_kbd_interface();
- device_pc_kbd_interface *next() const { return m_next; }
-
void set_pc_kbdc_device();
int clock_signal() { return m_pc_kbdc ? m_pc_kbdc->clock_signal() : 1; }
@@ -132,11 +131,11 @@ public:
// inline configuration
static void static_set_pc_kbdc(device_t &device, device_t *kbdc_device);
+protected:
pc_kbdc_device *m_pc_kbdc;
const char *m_pc_kbdc_tag;
- device_pc_kbd_interface *m_next;
};
-#endif /* __PC_KBDC_H__ */
+#endif // MAME_BUS_PC_KBD_PC_KBDC_H
diff --git a/src/devices/bus/pc_kbd/pcat84.cpp b/src/devices/bus/pc_kbd/pcat84.cpp
index 0456d7c31fb..4f00bc984b5 100644
--- a/src/devices/bus/pc_kbd/pcat84.cpp
+++ b/src/devices/bus/pc_kbd/pcat84.cpp
@@ -41,8 +41,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PC_KBD_IBM_PC_AT_84 = device_creator<ibm_pc_at_84_keyboard_device>;
-const device_type PC_KBD_IBM_3270PC_122 = device_creator<ibm_3270pc_122_keyboard_device>;
+DEFINE_DEVICE_TYPE(PC_KBD_IBM_PC_AT_84, ibm_pc_at_84_keyboard_device, "kb_pcat84", "IBM PC/AT Keyboard")
+DEFINE_DEVICE_TYPE(PC_KBD_IBM_3270PC_122, ibm_3270pc_122_keyboard_device, "kb_3270pc", "IBM 3270PC Keyboard")
//-------------------------------------------------
@@ -347,8 +347,8 @@ ioport_constructor ibm_3270pc_122_keyboard_device::device_input_ports() const
// ibm_pc_at_84_keyboard_device - constructor
//-------------------------------------------------
-ibm_pc_at_84_keyboard_device::ibm_pc_at_84_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ibm_pc_at_84_keyboard_device::ibm_pc_at_84_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_dr(*this, "DR%02u", 0),
@@ -362,10 +362,14 @@ ibm_pc_at_84_keyboard_device::ibm_pc_at_84_keyboard_device(const machine_config
}
ibm_pc_at_84_keyboard_device::ibm_pc_at_84_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- ibm_pc_at_84_keyboard_device(mconfig, PC_KBD_IBM_PC_AT_84, "IBM PC/AT Keyboard", tag, owner, clock, "kb_pcat84", __FILE__) { }
+ ibm_pc_at_84_keyboard_device(mconfig, PC_KBD_IBM_PC_AT_84, tag, owner, clock)
+{
+}
ibm_3270pc_122_keyboard_device::ibm_3270pc_122_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- ibm_pc_at_84_keyboard_device(mconfig, PC_KBD_IBM_3270PC_122, "IBM 3270PC Keyboard", tag, owner, clock, "kb_3270pc", __FILE__) { }
+ ibm_pc_at_84_keyboard_device(mconfig, PC_KBD_IBM_3270PC_122, tag, owner, clock)
+{
+}
//-------------------------------------------------
diff --git a/src/devices/bus/pc_kbd/pcat84.h b/src/devices/bus/pc_kbd/pcat84.h
index 98b3bb628f1..e15d5624af1 100644
--- a/src/devices/bus/pc_kbd/pcat84.h
+++ b/src/devices/bus/pc_kbd/pcat84.h
@@ -6,10 +6,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PC_KBD_PCAT84_H
+#define MAME_BUS_PC_KBD_PCAT84_H
-#ifndef __PC_KBD_IBM_PC_AT_84__
-#define __PC_KBD_IBM_PC_AT_84__
+#pragma once
#include "cpu/mcs48/mcs48.h"
#include "pc_kbdc.h"
@@ -28,7 +28,6 @@ class ibm_pc_at_84_keyboard_device : public device_t,
{
public:
// construction/destruction
- ibm_pc_at_84_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
ibm_pc_at_84_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -45,6 +44,8 @@ public:
DECLARE_READ_LINE_MEMBER( t1_r );
protected:
+ ibm_pc_at_84_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -90,9 +91,7 @@ public:
// device type definition
-extern const device_type PC_KBD_IBM_PC_AT_84;
-extern const device_type PC_KBD_IBM_3270PC_122;
-
-
+DECLARE_DEVICE_TYPE(PC_KBD_IBM_PC_AT_84, ibm_pc_at_84_keyboard_device)
+DECLARE_DEVICE_TYPE(PC_KBD_IBM_3270PC_122, ibm_3270pc_122_keyboard_device)
-#endif
+#endif // MAME_BUS_PC_KBD_PCAT84_H
diff --git a/src/devices/bus/pc_kbd/pcxt83.cpp b/src/devices/bus/pc_kbd/pcxt83.cpp
index 6d8cb97a9fb..e76b5054904 100644
--- a/src/devices/bus/pc_kbd/pcxt83.cpp
+++ b/src/devices/bus/pc_kbd/pcxt83.cpp
@@ -33,7 +33,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PC_KBD_IBM_PC_XT_83 = device_creator<ibm_pc_xt_83_keyboard_device>;
+DEFINE_DEVICE_TYPE(PC_KBD_IBM_PC_XT_83, ibm_pc_xt_83_keyboard_device, "kb_pcxt83", "IBM PC/XT Keyboard")
//-------------------------------------------------
@@ -241,7 +241,7 @@ ioport_constructor ibm_pc_xt_83_keyboard_device::device_input_ports() const
//-------------------------------------------------
ibm_pc_xt_83_keyboard_device::ibm_pc_xt_83_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PC_KBD_IBM_PC_XT_83, "IBM PC/XT Keyboard", tag, owner, clock, "kb_pcxt83", __FILE__),
+ : device_t(mconfig, PC_KBD_IBM_PC_XT_83, tag, owner, clock),
device_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_md(*this, "MD%02u", 0),
diff --git a/src/devices/bus/pc_kbd/pcxt83.h b/src/devices/bus/pc_kbd/pcxt83.h
index 034b0499e26..932d766106e 100644
--- a/src/devices/bus/pc_kbd/pcxt83.h
+++ b/src/devices/bus/pc_kbd/pcxt83.h
@@ -6,13 +6,13 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PC_KBD_PCXT83_H
+#define MAME_BUS_PC_KBD_PCXT83_H
-#ifndef __PC_KBD_IBM_PC_XT_83__
-#define __PC_KBD_IBM_PC_XT_83__
+#pragma once
-#include "cpu/mcs48/mcs48.h"
#include "pc_kbdc.h"
+#include "cpu/mcs48/mcs48.h"
#include "machine/rescap.h"
@@ -23,8 +23,7 @@
// ======================> ibm_pc_xt_83_keyboard_device
-class ibm_pc_xt_83_keyboard_device : public device_t,
- public device_pc_kbd_interface
+class ibm_pc_xt_83_keyboard_device : public device_t, public device_pc_kbd_interface
{
public:
// construction/destruction
@@ -64,8 +63,7 @@ private:
// device type definition
-extern const device_type PC_KBD_IBM_PC_XT_83;
-
+DECLARE_DEVICE_TYPE(PC_KBD_IBM_PC_XT_83, ibm_pc_xt_83_keyboard_device)
-#endif
+#endif // MAME_BUS_PC_KBD_PCXT83_H
diff --git a/src/devices/bus/pce/pce_rom.cpp b/src/devices/bus/pce/pce_rom.cpp
index 1608b1cbb0e..ac837917a34 100644
--- a/src/devices/bus/pce/pce_rom.cpp
+++ b/src/devices/bus/pce/pce_rom.cpp
@@ -17,37 +17,36 @@
// pce_rom_device - constructor
//-------------------------------------------------
-const device_type PCE_ROM_STD = device_creator<pce_rom_device>;
-const device_type PCE_ROM_CDSYS3 = device_creator<pce_cdsys3_device>;
-const device_type PCE_ROM_POPULOUS = device_creator<pce_populous_device>;
-const device_type PCE_ROM_SF2 = device_creator<pce_sf2_device>;
+DEFINE_DEVICE_TYPE(PCE_ROM_STD, pce_rom_device, "pce_rom", "PCE/TG16 Carts")
+DEFINE_DEVICE_TYPE(PCE_ROM_CDSYS3, pce_cdsys3_device, "pce_cdsys3", "PCE/TG16 CD-System Cart v3.00")
+DEFINE_DEVICE_TYPE(PCE_ROM_POPULOUS, pce_populous_device, "pce_populous", "PCE Populous Cart")
+DEFINE_DEVICE_TYPE(PCE_ROM_SF2, pce_sf2_device, "pce_sf2", "PCE Street Fighters 2 Cart")
-pce_rom_device::pce_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_pce_cart_interface( mconfig, *this )
+pce_rom_device::pce_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_pce_cart_interface( mconfig, *this )
{
}
pce_rom_device::pce_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PCE_ROM_STD, "PCE & TG16 Carts", tag, owner, clock, "pce_rom", __FILE__),
- device_pce_cart_interface( mconfig, *this )
+ : pce_rom_device(mconfig, PCE_ROM_STD, tag, owner, clock)
{
}
pce_cdsys3_device::pce_cdsys3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pce_rom_device(mconfig, PCE_ROM_CDSYS3, "PCE & TG16 CD-System Cart v3.00", tag, owner, clock, "pce_cdsys3", __FILE__)
+ : pce_rom_device(mconfig, PCE_ROM_CDSYS3, tag, owner, clock)
{
}
pce_populous_device::pce_populous_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pce_rom_device(mconfig, PCE_ROM_POPULOUS, "PCE Populous Cart", tag, owner, clock, "pce_populous", __FILE__)
+ : pce_rom_device(mconfig, PCE_ROM_POPULOUS, tag, owner, clock)
{
}
pce_sf2_device::pce_sf2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pce_rom_device(mconfig, PCE_ROM_SF2, "PCE Street Fighters 2 Cart", tag, owner, clock, "pce_sf2", __FILE__), m_bank_base(0)
- {
+ : pce_rom_device(mconfig, PCE_ROM_SF2, tag, owner, clock), m_bank_base(0)
+{
}
diff --git a/src/devices/bus/pce/pce_rom.h b/src/devices/bus/pce/pce_rom.h
index 9dd69e7fd6b..addbfc1fa3e 100644
--- a/src/devices/bus/pce/pce_rom.h
+++ b/src/devices/bus/pce/pce_rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __PCE_ROM_H
-#define __PCE_ROM_H
+#ifndef MAME_BUS_PCE_PCE_ROM_H
+#define MAME_BUS_PCE_PCE_ROM_H
+
+#pragma once
#include "pce_slot.h"
@@ -13,15 +15,17 @@ class pce_rom_device : public device_t,
{
public:
// construction/destruction
- pce_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
pce_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {}
- virtual void device_reset() override {}
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
+
+protected:
+ pce_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
};
// ======================> pce_cdsys3_device
@@ -60,26 +64,24 @@ public:
// construction/destruction
pce_sf2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_bank_base;
};
-
// device type definition
-extern const device_type PCE_ROM_STD;
-extern const device_type PCE_ROM_CDSYS3;
-extern const device_type PCE_ROM_POPULOUS;
-extern const device_type PCE_ROM_SF2;
-
-
+DECLARE_DEVICE_TYPE(PCE_ROM_STD, pce_rom_device)
+DECLARE_DEVICE_TYPE(PCE_ROM_CDSYS3, pce_cdsys3_device)
+DECLARE_DEVICE_TYPE(PCE_ROM_POPULOUS, pce_populous_device)
+DECLARE_DEVICE_TYPE(PCE_ROM_SF2, pce_sf2_device)
-#endif
+#endif // MAME_BUS_PCE_PCE_ROM_H
diff --git a/src/devices/bus/pce/pce_slot.cpp b/src/devices/bus/pce/pce_slot.cpp
index fb9676a22fc..973d2c58759 100644
--- a/src/devices/bus/pce/pce_slot.cpp
+++ b/src/devices/bus/pce/pce_slot.cpp
@@ -19,7 +19,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PCE_CART_SLOT = device_creator<pce_cart_slot_device>;
+DEFINE_DEVICE_TYPE(PCE_CART_SLOT, pce_cart_slot_device, "pce_cart_slot", "PCE/TG16 Cartridge Slot")
//**************************************************************************
// PCE cartridges Interface
@@ -136,11 +136,11 @@ void device_pce_cart_interface::rom_map_setup(uint32_t size)
// pce_cart_slot_device - constructor
//-------------------------------------------------
pce_cart_slot_device::pce_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PCE_CART_SLOT, "PCE & TG16 Cartridge Slot", tag, owner, clock, "pce_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_interface("pce_cart"),
- m_type(PCE_STD), m_cart(nullptr)
+ device_t(mconfig, PCE_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_interface("pce_cart"),
+ m_type(PCE_STD), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/pce/pce_slot.h b/src/devices/bus/pce/pce_slot.h
index 3aa6b3593dd..77d5a82d0b3 100644
--- a/src/devices/bus/pce/pce_slot.h
+++ b/src/devices/bus/pce/pce_slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __PCE_SLOT_H
-#define __PCE_SLOT_H
+#ifndef MAME_BUS_PCE_PCE_SLOT_H
+#define MAME_BUS_PCE_PCE_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -28,7 +30,6 @@ class device_pce_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_pce_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_pce_cart_interface();
// reading and writing
@@ -42,13 +43,16 @@ public:
uint32_t get_rom_size() { return m_rom_size; }
uint32_t get_ram_size() { return m_ram.size(); }
+ void rom_map_setup(uint32_t size);
+
+protected:
+ device_pce_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
std::vector<uint8_t> m_ram;
- void rom_map_setup(uint32_t size);
-
uint8_t rom_bank_map[8]; // 128K chunks of rom
};
@@ -95,18 +99,16 @@ public:
virtual DECLARE_READ8_MEMBER(read_cart);
virtual DECLARE_WRITE8_MEMBER(write_cart);
-
protected:
-
const char *m_interface;
int m_type;
- device_pce_cart_interface* m_cart;
+ device_pce_cart_interface *m_cart;
};
// device type definition
-extern const device_type PCE_CART_SLOT;
+DECLARE_DEVICE_TYPE(PCE_CART_SLOT, pce_cart_slot_device)
/***************************************************************************
@@ -126,4 +128,4 @@ extern const device_type PCE_CART_SLOT;
static_cast<pce_cart_slot_device *>(device)->set_intf("tg16_cart");
-#endif
+#endif // MAME_BUS_PCE_PCE_SLOT_H
diff --git a/src/devices/bus/pet/2joysnd.cpp b/src/devices/bus/pet/2joysnd.cpp
index 8c1bc4bfbda..49dae0378b6 100644
--- a/src/devices/bus/pet/2joysnd.cpp
+++ b/src/devices/bus/pet/2joysnd.cpp
@@ -57,7 +57,7 @@ Connections
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE = device_creator<pet_userport_joystick_and_sound_device>;
+DEFINE_DEVICE_TYPE(PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE, pet_userport_joystick_and_sound_device, "2joysnd", "PET Dual Joysticks and Sound")
MACHINE_CONFIG_FRAGMENT( 2joysnd )
MCFG_SPEAKER_STANDARD_MONO("speaker")
@@ -114,7 +114,7 @@ machine_config_constructor pet_userport_joystick_and_sound_device::device_mconfi
//-------------------------------------------------
pet_userport_joystick_and_sound_device::pet_userport_joystick_and_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE, "Dual Joysticks and Sound", tag, owner, clock, "2joysnd", __FILE__),
+ device_t(mconfig, PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE, tag, owner, clock),
device_pet_user_port_interface(mconfig, *this),
m_dac(*this, "dac"),
m_up1(1),
diff --git a/src/devices/bus/pet/2joysnd.h b/src/devices/bus/pet/2joysnd.h
index 715d426a1b2..0f4d5a6e2f1 100644
--- a/src/devices/bus/pet/2joysnd.h
+++ b/src/devices/bus/pet/2joysnd.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_2JOYSND_H
+#define MAME_BUS_PET_2JOYSND_H
-#ifndef __2JOYSND__
-#define __2JOYSND__
+#pragma once
#include "user.h"
@@ -22,8 +22,7 @@
// ======================> pet_userport_joystick_and_sound_device
-class pet_userport_joystick_and_sound_device : public device_t,
- public device_pet_user_port_interface
+class pet_userport_joystick_and_sound_device : public device_t, public device_pet_user_port_interface
{
public:
// construction/destruction
@@ -36,8 +35,6 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER( input_m ) override;
- required_device<dac_bit_interface> m_dac;
-
// device_pet_user_port_interface overrides
WRITE_LINE_MEMBER( write_up1 ) { m_up1 = state; update_port1(); }
WRITE_LINE_MEMBER( write_down1 ) { m_down1 = state; update_port1(); }
@@ -46,26 +43,27 @@ public:
WRITE_LINE_MEMBER( write_down2 ) { m_down2 = state; update_port2(); }
WRITE_LINE_MEMBER( write_fire2 ) { m_fire2 = state; update_port2(); }
-
-
protected:
// device-level overrides
virtual void device_start() override;
void update_port1();
void update_port2();
+
+ required_device<dac_bit_interface> m_dac;
+
int m_up1;
int m_down1;
int m_fire1;
int m_up2;
int m_down2;
int m_fire2;
-
};
// device type definition
extern const device_type PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE;
+DECLARE_DEVICE_TYPE(PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE, pet_userport_joystick_and_sound_device)
-#endif
+#endif // MAME_BUS_PET_2JOYSND_H
diff --git a/src/devices/bus/pet/64k.cpp b/src/devices/bus/pet/64k.cpp
index 1c1a79b1bf2..34249220f3e 100644
--- a/src/devices/bus/pet/64k.cpp
+++ b/src/devices/bus/pet/64k.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PET_64K = device_creator<pet_64k_expansion_device>;
+DEFINE_DEVICE_TYPE(PET_64K, pet_64k_expansion_device, "pet_64k", "PET 64KB RAM")
@@ -77,7 +77,7 @@ inline void pet_64k_expansion_device::write_ram(offs_t offset, uint8_t data)
//-------------------------------------------------
pet_64k_expansion_device::pet_64k_expansion_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PET_64K, "PET 64KB RAM", tag, owner, clock, "pet_64k", __FILE__),
+ device_t(mconfig, PET_64K, tag, owner, clock),
device_pet_expansion_card_interface(mconfig, *this),
m_ram(*this, "ram"),
m_ctrl(0)
diff --git a/src/devices/bus/pet/64k.h b/src/devices/bus/pet/64k.h
index ddb42f02d5c..82f50cab77a 100644
--- a/src/devices/bus/pet/64k.h
+++ b/src/devices/bus/pet/64k.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_64K_H
+#define MAME_BUS_PET_64K_H
-#ifndef __PET_64K__
-#define __PET_64K__
+#pragma once
#include "exp.h"
@@ -21,8 +21,7 @@
// ======================> pet_64k_expansion_device
-class pet_64k_expansion_device : public device_t,
- public device_pet_expansion_card_interface
+class pet_64k_expansion_device : public device_t, public device_pet_expansion_card_interface
{
public:
// construction/destruction
@@ -49,7 +48,6 @@ private:
// device type definition
-extern const device_type PET_64K;
-
+DECLARE_DEVICE_TYPE(PET_64K, pet_64k_expansion_device)
-#endif
+#endif // MAME_BUS_PET_64K_H
diff --git a/src/devices/bus/pet/c2n.cpp b/src/devices/bus/pet/c2n.cpp
index 6276aab8fd4..5c03217c7ac 100644
--- a/src/devices/bus/pet/c2n.cpp
+++ b/src/devices/bus/pet/c2n.cpp
@@ -15,9 +15,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C2N = device_creator<c2n_device>;
-const device_type C1530 = device_creator<c1530_device>;
-const device_type C1531 = device_creator<c1531_device>;
+DEFINE_DEVICE_TYPE(C2N, c2n_device, "c2n", "Commodore C2N Datassette")
+DEFINE_DEVICE_TYPE(C1530, c1530_device, "c1530", "Commodore 1530 Datassette")
+DEFINE_DEVICE_TYPE(C1531, c1531_device, "c1531", "Commodore 1531 Datassette")
//-------------------------------------------------
@@ -52,20 +52,17 @@ machine_config_constructor c2n_device::device_mconfig_additions() const
// c2n_device - constructor
//-------------------------------------------------
-c2n_device::c2n_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_pet_datassette_port_interface(mconfig, *this),
- m_cassette(*this, "cassette"),
- m_motor(false),
- m_read_timer(nullptr)
+c2n_device::c2n_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_pet_datassette_port_interface(mconfig, *this)
+ , m_cassette(*this, "cassette")
+ , m_motor(false)
+ , m_read_timer(nullptr)
{
}
c2n_device::c2n_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, C2N, "C2N Datassette", tag, owner, clock, "c2n", __FILE__),
- device_pet_datassette_port_interface(mconfig, *this),
- m_cassette(*this, "cassette"),
- m_motor(false), m_read_timer(nullptr)
+ : c2n_device(mconfig, C2N, tag, owner, clock)
{
}
@@ -75,7 +72,9 @@ c2n_device::c2n_device(const machine_config &mconfig, const char *tag, device_t
//-------------------------------------------------
c1530_device::c1530_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c2n_device(mconfig, C1530, "C1530 Datassette", tag, owner, clock, "c1530", __FILE__) { }
+ : c2n_device(mconfig, C1530, tag, owner, clock)
+{
+}
//-------------------------------------------------
@@ -83,7 +82,9 @@ c1530_device::c1530_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
c1531_device::c1531_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c2n_device(mconfig, C1531, "C1531 Datassette", tag, owner, clock, "c1531", __FILE__) { }
+ : c2n_device(mconfig, C1531, tag, owner, clock)
+{
+}
//-------------------------------------------------
diff --git a/src/devices/bus/pet/c2n.h b/src/devices/bus/pet/c2n.h
index 4260ed8d64c..9ba47475815 100644
--- a/src/devices/bus/pet/c2n.h
+++ b/src/devices/bus/pet/c2n.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_C2N_H
+#define MAME_BUS_PET_C2N_H
-#ifndef __C2N__
-#define __C2N__
+#pragma once
#include "cass.h"
#include "formats/cbm_tap.h"
@@ -28,13 +28,14 @@ class c2n_device : public device_t,
{
public:
// construction/destruction
- c2n_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
c2n_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
+ c2n_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -76,10 +77,8 @@ public:
// device type definition
-extern const device_type C2N;
-extern const device_type C1530;
-extern const device_type C1531;
-
-
+DECLARE_DEVICE_TYPE(C2N, c2n_device)
+DECLARE_DEVICE_TYPE(C1530, c1530_device)
+DECLARE_DEVICE_TYPE(C1531, c1531_device)
-#endif
+#endif // MAME_BUS_PET_C2N_H
diff --git a/src/devices/bus/pet/cass.cpp b/src/devices/bus/pet/cass.cpp
index fc9f5ded21c..67e600d71a7 100644
--- a/src/devices/bus/pet/cass.cpp
+++ b/src/devices/bus/pet/cass.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PET_DATASSETTE_PORT = device_creator<pet_datassette_port_device>;
+DEFINE_DEVICE_TYPE(PET_DATASSETTE_PORT, pet_datassette_port_device, "pet_datassette_port", "Commodore Datasette Port")
@@ -53,7 +53,7 @@ device_pet_datassette_port_interface::~device_pet_datassette_port_interface()
//-------------------------------------------------
pet_datassette_port_device::pet_datassette_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PET_DATASSETTE_PORT, "Datassette Port", tag, owner, clock, "pet_datassette_port", __FILE__),
+ device_t(mconfig, PET_DATASSETTE_PORT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_read_handler(*this), m_cart(nullptr)
{
@@ -90,6 +90,10 @@ WRITE_LINE_MEMBER( pet_datassette_port_device::motor_w ) { if (m_cart != nullptr
WRITE_LINE_MEMBER( pet_datassette_port_device::read_w ) { m_read_handler(state); }
+// slot devices
+#include "c2n.h"
+#include "diag264_lb_tape.h"
+
//-------------------------------------------------
// SLOT_INTERFACE( cbm_datassette_devices )
//-------------------------------------------------
diff --git a/src/devices/bus/pet/cass.h b/src/devices/bus/pet/cass.h
index 78eb8fd7332..d5c40c37181 100644
--- a/src/devices/bus/pet/cass.h
+++ b/src/devices/bus/pet/cass.h
@@ -15,10 +15,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_CASS_H
+#define MAME_BUS_PET_CASS_H
-#ifndef __PET_DATASSETTE_PORT__
-#define __PET_DATASSETTE_PORT__
+#pragma once
@@ -51,8 +51,7 @@
class device_pet_datassette_port_interface;
-class pet_datassette_port_device : public device_t,
- public device_slot_interface
+class pet_datassette_port_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
@@ -60,7 +59,7 @@ public:
virtual ~pet_datassette_port_device();
// static configuration helpers
- template<class _Object> static devcb_base &set_read_handler(device_t &device, _Object object) { return downcast<pet_datassette_port_device &>(device).m_read_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_read_handler(device_t &device, Object &&cb) { return downcast<pet_datassette_port_device &>(device).m_read_handler.set_callback(std::forward<Object>(cb)); }
// computer interface
DECLARE_READ_LINE_MEMBER( read );
@@ -88,29 +87,24 @@ class device_pet_datassette_port_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_pet_datassette_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_pet_datassette_port_interface();
- virtual int datassette_read() { return 1; };
- virtual void datassette_write(int state) { };
- virtual int datassette_sense() { return 1; };
- virtual void datassette_motor(int state) { };
+ virtual int datassette_read() { return 1; }
+ virtual void datassette_write(int state) { }
+ virtual int datassette_sense() { return 1; }
+ virtual void datassette_motor(int state) { }
protected:
+ device_pet_datassette_port_interface(const machine_config &mconfig, device_t &device);
+
pet_datassette_port_device *m_slot;
};
// device type definition
-extern const device_type PET_DATASSETTE_PORT;
-
+DECLARE_DEVICE_TYPE(PET_DATASSETTE_PORT, pet_datassette_port_device)
-// slot devices
-#include "c2n.h"
-#include "diag264_lb_tape.h"
SLOT_INTERFACE_EXTERN( cbm_datassette_devices );
-
-
-#endif
+#endif // MAME_BUS_PET_CASS_H
diff --git a/src/devices/bus/pet/cb2snd.cpp b/src/devices/bus/pet/cb2snd.cpp
index 5dc3bd1823f..8822af3d086 100644
--- a/src/devices/bus/pet/cb2snd.cpp
+++ b/src/devices/bus/pet/cb2snd.cpp
@@ -19,7 +19,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PET_USERPORT_CB2_SOUND_DEVICE = device_creator<pet_userport_cb2_sound_device>;
+DEFINE_DEVICE_TYPE(PET_USERPORT_CB2_SOUND_DEVICE, pet_userport_cb2_sound_device, "petucb2", "PET Userport 'CB2 Sound' Device")
MACHINE_CONFIG_FRAGMENT( cb2snd )
MCFG_SPEAKER_STANDARD_MONO("speaker")
@@ -47,7 +47,7 @@ machine_config_constructor pet_userport_cb2_sound_device::device_mconfig_additio
//-------------------------------------------------
pet_userport_cb2_sound_device::pet_userport_cb2_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PET_USERPORT_CB2_SOUND_DEVICE, "PET Userport 'CB2 Sound' Device", tag, owner, clock, "petucb2", __FILE__),
+ device_t(mconfig, PET_USERPORT_CB2_SOUND_DEVICE, tag, owner, clock),
device_pet_user_port_interface(mconfig, *this),
m_dac(*this, "dac")
{
diff --git a/src/devices/bus/pet/cb2snd.h b/src/devices/bus/pet/cb2snd.h
index 9788431052c..86c48422421 100644
--- a/src/devices/bus/pet/cb2snd.h
+++ b/src/devices/bus/pet/cb2snd.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_CB2SND_H
+#define MAME_BUS_PET_CB2SND_H
-#ifndef __PETUSER_CB2__
-#define __PETUSER_CB2__
+#pragma once
#include "user.h"
#include "sound/dac.h"
@@ -29,15 +29,15 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER( input_m ) override;
- required_device<dac_bit_interface> m_dac;
-
protected:
// device-level overrides
virtual void device_start() override;
+
+ required_device<dac_bit_interface> m_dac;
};
// device type definition
-extern const device_type PET_USERPORT_CB2_SOUND_DEVICE;
+DECLARE_DEVICE_TYPE(PET_USERPORT_CB2_SOUND_DEVICE, pet_userport_cb2_sound_device)
-#endif
+#endif // MAME_BUS_PET_CB2SND_H
diff --git a/src/devices/bus/pet/diag.cpp b/src/devices/bus/pet/diag.cpp
index 27a318f2e3e..42e915e6d19 100644
--- a/src/devices/bus/pet/diag.cpp
+++ b/src/devices/bus/pet/diag.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PET_USERPORT_DIAGNOSTIC_CONNECTOR = device_creator<pet_userport_diagnostic_connector_t>;
+DEFINE_DEVICE_TYPE(PET_USERPORT_DIAGNOSTIC_CONNECTOR, pet_userport_diagnostic_connector_device, "pet_user_diag", "PET Userport Diagnostic Connector")
@@ -27,8 +27,8 @@ const device_type PET_USERPORT_DIAGNOSTIC_CONNECTOR = device_creator<pet_userpor
// pet_userport_diagnostic_connector_t - constructor
//-------------------------------------------------
-pet_userport_diagnostic_connector_t::pet_userport_diagnostic_connector_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PET_USERPORT_DIAGNOSTIC_CONNECTOR, "PET Userport Diagnostic Connector", tag, owner, clock, "pet_user_diag", __FILE__),
+pet_userport_diagnostic_connector_device::pet_userport_diagnostic_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PET_USERPORT_DIAGNOSTIC_CONNECTOR, tag, owner, clock),
device_pet_user_port_interface(mconfig, *this)
{
}
@@ -38,7 +38,7 @@ pet_userport_diagnostic_connector_t::pet_userport_diagnostic_connector_t(const m
// device_start - device-specific startup
//-------------------------------------------------
-void pet_userport_diagnostic_connector_t::device_start()
+void pet_userport_diagnostic_connector_device::device_start()
{
output_5(0);
output_e(0);
diff --git a/src/devices/bus/pet/diag.h b/src/devices/bus/pet/diag.h
index cf2bea4d551..8bcf1bfd415 100644
--- a/src/devices/bus/pet/diag.h
+++ b/src/devices/bus/pet/diag.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_DIAG_H
+#define MAME_BUS_PET_DIAG_H
-#ifndef __PET_USER_DIAG__
-#define __PET_USER_DIAG__
+#pragma once
#include "user.h"
@@ -19,14 +19,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> pet_userport_diagnostic_connector_t
+// ======================> pet_userport_diagnostic_connector_device
-class pet_userport_diagnostic_connector_t : public device_t,
- public device_pet_user_port_interface
+class pet_userport_diagnostic_connector_device : public device_t, public device_pet_user_port_interface
{
public:
// construction/destruction
- pet_userport_diagnostic_connector_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pet_userport_diagnostic_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device_pet_user_port_interface overrides
virtual DECLARE_WRITE_LINE_MEMBER( input_2 ) override { output_b(state); }
@@ -50,7 +49,6 @@ protected:
// device type definition
-extern const device_type PET_USERPORT_DIAGNOSTIC_CONNECTOR;
-
+DECLARE_DEVICE_TYPE(PET_USERPORT_DIAGNOSTIC_CONNECTOR, pet_userport_diagnostic_connector_device)
-#endif
+#endif // MAME_BUS_PET_DIAG_H
diff --git a/src/devices/bus/pet/diag264_lb_tape.cpp b/src/devices/bus/pet/diag264_lb_tape.cpp
index 214fee34be3..afe5efab4dd 100644
--- a/src/devices/bus/pet/diag264_lb_tape.cpp
+++ b/src/devices/bus/pet/diag264_lb_tape.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type DIAG264_CASSETTE_LOOPBACK = device_creator<diag264_cassette_loopback_device>;
+DEFINE_DEVICE_TYPE(DIAG264_CASSETTE_LOOPBACK, diag264_cassette_loopback_device, "diag264_loopback_cassette", "Diag264 Cassette Loopback")
@@ -28,11 +28,12 @@ const device_type DIAG264_CASSETTE_LOOPBACK = device_creator<diag264_cassette_lo
//-------------------------------------------------
diag264_cassette_loopback_device::diag264_cassette_loopback_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DIAG264_CASSETTE_LOOPBACK, "Diag264 Cassette Loopback", tag, owner, clock, "diag264_loopback_cassette", __FILE__),
- device_pet_datassette_port_interface(mconfig, *this),
- m_read(1),
- m_sense(0)
-{ }
+ : device_t(mconfig, DIAG264_CASSETTE_LOOPBACK, tag, owner, clock)
+ , device_pet_datassette_port_interface(mconfig, *this)
+ , m_read(1)
+ , m_sense(0)
+{
+}
//-------------------------------------------------
diff --git a/src/devices/bus/pet/diag264_lb_tape.h b/src/devices/bus/pet/diag264_lb_tape.h
index 218148a0a9e..8e41c6ec6d0 100644
--- a/src/devices/bus/pet/diag264_lb_tape.h
+++ b/src/devices/bus/pet/diag264_lb_tape.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_DIAG264_LB_TAPE_H
+#define MAME_BUS_PET_DIAG264_LB_TAPE_H
-#ifndef __DIAG264_CASSETTE_LOOPBACK__
-#define __DIAG264_CASSETTE_LOOPBACK__
+#pragma once
#include "cass.h"
@@ -46,7 +46,6 @@ private:
// device type definition
extern const device_type DIAG264_CASSETTE_LOOPBACK;
+DECLARE_DEVICE_TYPE(DIAG264_CASSETTE_LOOPBACK, diag264_cassette_loopback_device)
-
-
-#endif
+#endif // MAME_BUS_PET_DIAG264_LB_TAPE_H
diff --git a/src/devices/bus/pet/exp.cpp b/src/devices/bus/pet/exp.cpp
index 0097953e57a..c0820a8bd1e 100644
--- a/src/devices/bus/pet/exp.cpp
+++ b/src/devices/bus/pet/exp.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PET_EXPANSION_SLOT = device_creator<pet_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(PET_EXPANSION_SLOT, pet_expansion_slot_device, "pet_expansion_slot", "PET memory expansion port")
@@ -36,7 +36,7 @@ const device_type PET_EXPANSION_SLOT = device_creator<pet_expansion_slot_device>
//-------------------------------------------------
pet_expansion_slot_device::pet_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PET_EXPANSION_SLOT, "PET memory expansion port", tag, owner, clock, "pet_expansion_slot", __FILE__),
+ device_t(mconfig, PET_EXPANSION_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this), m_card(nullptr),
m_read_dma(*this),
m_write_dma(*this)
diff --git a/src/devices/bus/pet/exp.h b/src/devices/bus/pet/exp.h
index c94062b519f..8cc12b6a7ed 100644
--- a/src/devices/bus/pet/exp.h
+++ b/src/devices/bus/pet/exp.h
@@ -8,10 +8,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_EXP_H
+#define MAME_BUS_PET_EXP_H
-#ifndef __PET_EXPANSION_SLOT__
-#define __PET_EXPANSION_SLOT__
+#pragma once
@@ -112,10 +112,11 @@ class device_pet_expansion_card_interface : public device_slot_card_interface
public:
// construction/destruction
- device_pet_expansion_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_pet_expansion_card_interface();
protected:
+ device_pet_expansion_card_interface(const machine_config &mconfig, device_t &device);
+
// runtime
virtual int pet_norom_r(address_space &space, offs_t offset, int sel) { return 1; }
virtual uint8_t pet_bd_r(address_space &space, offs_t offset, uint8_t data, int &sel) { return data; };
@@ -128,11 +129,9 @@ protected:
// device type definition
-extern const device_type PET_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(PET_EXPANSION_SLOT, pet_expansion_slot_device)
SLOT_INTERFACE_EXTERN( pet_expansion_cards );
-
-
-#endif
+#endif // MAME_BUS_PET_EXP_H
diff --git a/src/devices/bus/pet/hsg.cpp b/src/devices/bus/pet/hsg.cpp
index cc1e8606b11..15fd9e50a84 100644
--- a/src/devices/bus/pet/hsg.cpp
+++ b/src/devices/bus/pet/hsg.cpp
@@ -38,8 +38,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CBM8000_HSG_A = device_creator<cbm8000_hsg_a_t>;
-const device_type CBM8000_HSG_B = device_creator<cbm8000_hsg_b_t>;
+DEFINE_DEVICE_TYPE(CBM8000_HSG_A, cbm8000_hsg_a_device, "cbm8000_hsg_a", "CBM 8000 High Speed Graphics (A)")
+DEFINE_DEVICE_TYPE(CBM8000_HSG_B, cbm8000_hsg_b_device, "cbm8000_hsg_b", "CBM 8000 High Speed Graphics (B)")
//-------------------------------------------------
@@ -59,7 +59,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *cbm8000_hsg_t::device_rom_region() const
+const tiny_rom_entry *cbm8000_hsg_device::device_rom_region() const
{
return ROM_NAME( cbm8000_hsg );
}
@@ -69,7 +69,7 @@ const tiny_rom_entry *cbm8000_hsg_t::device_rom_region() const
// ADDRESS_MAP( hsg_a_map )
//-------------------------------------------------
-static ADDRESS_MAP_START( hsg_a_map, AS_0, 8, cbm8000_hsg_a_t )
+static ADDRESS_MAP_START( hsg_a_map, AS_0, 8, cbm8000_hsg_a_device )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x7fff) AM_RAM
ADDRESS_MAP_END
@@ -79,7 +79,7 @@ ADDRESS_MAP_END
// ADDRESS_MAP( hsg_b_map )
//-------------------------------------------------
-static ADDRESS_MAP_START( hsg_b_map, AS_0, 8, cbm8000_hsg_b_t )
+static ADDRESS_MAP_START( hsg_b_map, AS_0, 8, cbm8000_hsg_b_device )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x3fff) AM_RAM
ADDRESS_MAP_END
@@ -102,7 +102,7 @@ static MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_a )
MCFG_DEVICE_ADDRESS_MAP(AS_0, hsg_a_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
- MCFG_EF936X_DISPLAYMODE(EF936X_512x512_DISPLAY_MODE);
+ MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x512);
MACHINE_CONFIG_END
@@ -123,7 +123,7 @@ static MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_b )
MCFG_DEVICE_ADDRESS_MAP(AS_0, hsg_b_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
- MCFG_EF936X_DISPLAYMODE(EF936X_512x256_DISPLAY_MODE);
+ MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x256);
MACHINE_CONFIG_END
@@ -132,12 +132,12 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor cbm8000_hsg_a_t::device_mconfig_additions() const
+machine_config_constructor cbm8000_hsg_a_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cbm8000_hsg_a );
}
-machine_config_constructor cbm8000_hsg_b_t::device_mconfig_additions() const
+machine_config_constructor cbm8000_hsg_b_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cbm8000_hsg_b );
}
@@ -149,11 +149,11 @@ machine_config_constructor cbm8000_hsg_b_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// cbm8000_hsg_t - constructor
+// cbm8000_hsg_device - constructor
//-------------------------------------------------
-cbm8000_hsg_t::cbm8000_hsg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+cbm8000_hsg_device::cbm8000_hsg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_pet_expansion_card_interface(mconfig, *this),
m_gdc(*this, EF9365_TAG),
m_9000(*this, "9000"),
@@ -161,13 +161,13 @@ cbm8000_hsg_t::cbm8000_hsg_t(const machine_config &mconfig, device_type type, co
{
}
-cbm8000_hsg_a_t::cbm8000_hsg_a_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- cbm8000_hsg_t(mconfig, CBM8000_HSG_A, "CBM 8000 High Speed Graphics (A)", tag, owner, clock, "cbm8000_hsg_a", __FILE__)
+cbm8000_hsg_a_device::cbm8000_hsg_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ cbm8000_hsg_device(mconfig, CBM8000_HSG_A, tag, owner, clock)
{
}
-cbm8000_hsg_b_t::cbm8000_hsg_b_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- cbm8000_hsg_t(mconfig, CBM8000_HSG_B, "CBM 8000 High Speed Graphics (B)", tag, owner, clock, "cbm8000_hsg_b", __FILE__)
+cbm8000_hsg_b_device::cbm8000_hsg_b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ cbm8000_hsg_device(mconfig, CBM8000_HSG_B, tag, owner, clock)
{
}
@@ -176,7 +176,7 @@ cbm8000_hsg_b_t::cbm8000_hsg_b_t(const machine_config &mconfig, const char *tag,
// device_start - device-specific startup
//-------------------------------------------------
-void cbm8000_hsg_t::device_start()
+void cbm8000_hsg_device::device_start()
{
}
@@ -185,7 +185,7 @@ void cbm8000_hsg_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void cbm8000_hsg_t::device_reset()
+void cbm8000_hsg_device::device_reset()
{
m_gdc->reset();
}
@@ -195,7 +195,7 @@ void cbm8000_hsg_t::device_reset()
// pet_norom_r - NO ROM read
//-------------------------------------------------
-int cbm8000_hsg_t::pet_norom_r(address_space &space, offs_t offset, int sel)
+int cbm8000_hsg_device::pet_norom_r(address_space &space, offs_t offset, int sel)
{
return !(offset >= 0x9000 && offset < 0xaf00);
}
@@ -205,7 +205,7 @@ int cbm8000_hsg_t::pet_norom_r(address_space &space, offs_t offset, int sel)
// pet_bd_r - buffered data read
//-------------------------------------------------
-uint8_t cbm8000_hsg_t::pet_bd_r(address_space &space, offs_t offset, uint8_t data, int &sel)
+uint8_t cbm8000_hsg_device::pet_bd_r(address_space &space, offs_t offset, uint8_t data, int &sel)
{
switch (sel)
{
@@ -254,7 +254,7 @@ uint8_t cbm8000_hsg_t::pet_bd_r(address_space &space, offs_t offset, uint8_t dat
// pet_bd_w - buffered data write
//-------------------------------------------------
-void cbm8000_hsg_t::pet_bd_w(address_space &space, offs_t offset, uint8_t data, int &sel)
+void cbm8000_hsg_device::pet_bd_w(address_space &space, offs_t offset, uint8_t data, int &sel)
{
if (offset == 0xaf00)
{
diff --git a/src/devices/bus/pet/hsg.h b/src/devices/bus/pet/hsg.h
index e0809290a77..0582f48d53f 100644
--- a/src/devices/bus/pet/hsg.h
+++ b/src/devices/bus/pet/hsg.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_HSG_H
+#define MAME_BUS_PET_HSG_H
-#ifndef __CBM8000_HSG__
-#define __CBM8000_HSG__
+#pragma once
#include "exp.h"
#include "video/ef9365.h"
@@ -20,15 +20,11 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> cbm8000_hsg_t
+// ======================> cbm8000_hsg_device
-class cbm8000_hsg_t : public device_t,
- public device_pet_expansion_card_interface
+class cbm8000_hsg_device : public device_t, public device_pet_expansion_card_interface
{
public:
- // construction/destruction
- cbm8000_hsg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -38,6 +34,9 @@ public:
virtual void pet_bd_w(address_space &space, offs_t offset, uint8_t data, int &sel) override;
protected:
+ // construction/destruction
+ cbm8000_hsg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -49,26 +48,26 @@ private:
};
-// ======================> cbm8000_hsg_a_t
+// ======================> cbm8000_hsg_a_device
-class cbm8000_hsg_a_t : public cbm8000_hsg_t
+class cbm8000_hsg_a_device : public cbm8000_hsg_device
{
public:
// construction/destruction
- cbm8000_hsg_a_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ cbm8000_hsg_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
};
-// ======================> cbm8000_hsg_b_t
+// ======================> cbm8000_hsg_b_device
-class cbm8000_hsg_b_t : public cbm8000_hsg_t
+class cbm8000_hsg_b_device : public cbm8000_hsg_device
{
public:
// construction/destruction
- cbm8000_hsg_b_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ cbm8000_hsg_b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -76,9 +75,7 @@ public:
// device type definition
-extern const device_type CBM8000_HSG_A;
-extern const device_type CBM8000_HSG_B;
-
-
+DECLARE_DEVICE_TYPE(CBM8000_HSG_A, cbm8000_hsg_a_device)
+DECLARE_DEVICE_TYPE(CBM8000_HSG_B, cbm8000_hsg_b_device)
-#endif
+#endif // MAME_BUS_PET_HSG_H
diff --git a/src/devices/bus/pet/petuja.cpp b/src/devices/bus/pet/petuja.cpp
index a4e11d2aa3d..aee8c2a1f0f 100644
--- a/src/devices/bus/pet/petuja.cpp
+++ b/src/devices/bus/pet/petuja.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PET_USERPORT_JOYSTICK_ADAPTER = device_creator<pet_userport_joystick_adapter_device>;
+DEFINE_DEVICE_TYPE(PET_USERPORT_JOYSTICK_ADAPTER, pet_userport_joystick_adapter_device, "petuja", "PET Userport Joystick Adapter")
//-------------------------------------------------
@@ -61,7 +61,7 @@ ioport_constructor pet_userport_joystick_adapter_device::device_input_ports() co
//-------------------------------------------------
pet_userport_joystick_adapter_device::pet_userport_joystick_adapter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PET_USERPORT_JOYSTICK_ADAPTER, "PET Userport Joystick Adapter", tag, owner, clock, "petuja", __FILE__),
+ device_t(mconfig, PET_USERPORT_JOYSTICK_ADAPTER, tag, owner, clock),
device_pet_user_port_interface(mconfig, *this),
m_up1(1),
m_down1(1),
diff --git a/src/devices/bus/pet/petuja.h b/src/devices/bus/pet/petuja.h
index fc1670dc202..b268c0d1519 100644
--- a/src/devices/bus/pet/petuja.h
+++ b/src/devices/bus/pet/petuja.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_PETUJA_H
+#define MAME_BUS_PET_PETUJA_H
-#ifndef __PETUJA__
-#define __PETUJA__
+#pragma once
#include "user.h"
@@ -56,7 +56,7 @@ protected:
// device type definition
-extern const device_type PET_USERPORT_JOYSTICK_ADAPTER;
+DECLARE_DEVICE_TYPE(PET_USERPORT_JOYSTICK_ADAPTER, pet_userport_joystick_adapter_device)
-#endif
+#endif // MAME_BUS_PET_PETUJA_H
diff --git a/src/devices/bus/pet/superpet.cpp b/src/devices/bus/pet/superpet.cpp
index 77a9f65cad0..87783f39d41 100644
--- a/src/devices/bus/pet/superpet.cpp
+++ b/src/devices/bus/pet/superpet.cpp
@@ -28,7 +28,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SUPERPET = device_creator<superpet_device>;
+DEFINE_DEVICE_TYPE(SUPERPET, superpet_device, "pet_superpet", "Commodore SuperPET")
//-------------------------------------------------
@@ -176,7 +176,7 @@ inline bool superpet_device::is_ram_writable()
//-------------------------------------------------
superpet_device::superpet_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SUPERPET, "SuperPET", tag, owner, clock, "pet_superpet", __FILE__),
+ device_t(mconfig, SUPERPET, tag, owner, clock),
device_pet_expansion_card_interface(mconfig, *this),
m_maincpu(*this, M6809_TAG),
m_acia(*this, MOS6551_TAG),
diff --git a/src/devices/bus/pet/superpet.h b/src/devices/bus/pet/superpet.h
index 74caac39d73..bf0d4d79a59 100644
--- a/src/devices/bus/pet/superpet.h
+++ b/src/devices/bus/pet/superpet.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_SUPERPET_H
+#define MAME_BUS_PET_SUPERPET_H
-#ifndef __SUPERPET__
-#define __SUPERPET__
+#pragma once
#include "exp.h"
#include "machine/mos6551.h"
@@ -74,7 +74,7 @@ private:
// device type definition
-extern const device_type SUPERPET;
+DECLARE_DEVICE_TYPE(SUPERPET, superpet_device)
-#endif
+#endif // MAME_BUS_PET_SUPERPET_H
diff --git a/src/devices/bus/pet/user.cpp b/src/devices/bus/pet/user.cpp
index 0fdda61ca9a..95b98bad5bf 100644
--- a/src/devices/bus/pet/user.cpp
+++ b/src/devices/bus/pet/user.cpp
@@ -11,10 +11,10 @@
// class pet_user_port_device
-const device_type PET_USER_PORT = device_creator<pet_user_port_device>;
+DEFINE_DEVICE_TYPE(PET_USER_PORT, pet_user_port_device, "pet_user_port", "PET user port")
pet_user_port_device::pet_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PET_USER_PORT, "PET user port", tag, owner, clock, "pet_user_port", __FILE__),
+ device_t(mconfig, PET_USER_PORT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_2_handler(*this),
m_3_handler(*this),
diff --git a/src/devices/bus/pet/user.h b/src/devices/bus/pet/user.h
index f2889ec346d..52568776882 100644
--- a/src/devices/bus/pet/user.h
+++ b/src/devices/bus/pet/user.h
@@ -21,10 +21,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PET_USER_H
+#define MAME_BUS_PET_USER_H
-#ifndef __PET_USER_PORT__
-#define __PET_USER_PORT__
+#pragma once
@@ -90,7 +90,7 @@
devcb = &pet_user_port_device::set_m_handler(*device, DEVCB_##_devcb);
-extern const device_type PET_USER_PORT;
+DECLARE_DEVICE_TYPE(PET_USER_PORT, pet_user_port_device)
class device_pet_user_port_interface;
@@ -102,25 +102,25 @@ class pet_user_port_device : public device_t,
public:
pet_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_2_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_2_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_3_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_3_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_4_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_4_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_5_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_5_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_6_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_6_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_7_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_7_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_8_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_8_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_9_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_9_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_10_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_10_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_b_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_b_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_c_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_c_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_d_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_d_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_e_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_e_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_f_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_f_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_h_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_h_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_j_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_j_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_k_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_k_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_l_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_l_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_m_handler(device_t &device, _Object object) { return downcast<pet_user_port_device &>(device).m_m_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_2_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_3_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_3_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_4_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_5_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_5_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_6_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_6_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_7_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_7_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_8_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_8_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_9_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_9_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_10_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_10_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_b_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_b_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_c_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_c_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_d_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_e_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_e_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_f_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_f_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_h_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_h_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_j_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_j_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_k_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_k_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_l_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_l_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_m_handler(device_t &device, Object &&cb) { return downcast<pet_user_port_device &>(device).m_m_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_2 );
DECLARE_WRITE_LINE_MEMBER( write_3 );
@@ -177,7 +177,6 @@ class device_pet_user_port_interface : public device_slot_card_interface
friend class pet_user_port_device;
public:
- device_pet_user_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_pet_user_port_interface();
DECLARE_WRITE_LINE_MEMBER( output_2 ) { m_slot->m_2_handler(state); }
@@ -201,6 +200,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( output_m ) { m_slot->m_m_handler(state); }
protected:
+ device_pet_user_port_interface(const machine_config &mconfig, device_t &device);
+
virtual DECLARE_WRITE_LINE_MEMBER( input_2 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_3 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_4 ) {}
@@ -227,4 +228,4 @@ protected:
SLOT_INTERFACE_EXTERN( pet_user_port_cards );
-#endif
+#endif // MAME_BUS_PET_USER_H
diff --git a/src/devices/bus/plus4/c1551.cpp b/src/devices/bus/plus4/c1551.cpp
index 208337fec4a..052c47c2a85 100644
--- a/src/devices/bus/plus4/c1551.cpp
+++ b/src/devices/bus/plus4/c1551.cpp
@@ -27,7 +27,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C1551 = device_creator<c1551_t>;
+DEFINE_DEVICE_TYPE(C1551, c1551_device, "c1551", "Commodore 1551")
//-------------------------------------------------
@@ -47,7 +47,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1551_t::device_rom_region() const
+const tiny_rom_entry *c1551_device::device_rom_region() const
{
return ROM_NAME( c1551 );
}
@@ -57,7 +57,7 @@ const tiny_rom_entry *c1551_t::device_rom_region() const
// M6510_INTERFACE( cpu_intf )
//-------------------------------------------------
-READ8_MEMBER( c1551_t::port_r )
+READ8_MEMBER( c1551_device::port_r )
{
/*
@@ -85,7 +85,7 @@ READ8_MEMBER( c1551_t::port_r )
return data;
}
-WRITE8_MEMBER( c1551_t::port_w )
+WRITE8_MEMBER( c1551_device::port_w )
{
/*
@@ -120,7 +120,7 @@ WRITE8_MEMBER( c1551_t::port_w )
// tpi6525_interface tpi0_intf
//-------------------------------------------------
-READ8_MEMBER( c1551_t::tcbm_data_r )
+READ8_MEMBER( c1551_device::tcbm_data_r )
{
/*
@@ -140,7 +140,7 @@ READ8_MEMBER( c1551_t::tcbm_data_r )
return m_tcbm_data;
}
-WRITE8_MEMBER( c1551_t::tcbm_data_w )
+WRITE8_MEMBER( c1551_device::tcbm_data_w )
{
/*
@@ -160,7 +160,7 @@ WRITE8_MEMBER( c1551_t::tcbm_data_w )
m_tcbm_data = data;
}
-READ8_MEMBER( c1551_t::tpi0_r )
+READ8_MEMBER( c1551_device::tpi0_r )
{
uint8_t data = m_tpi0->read(space, offset);
@@ -170,7 +170,7 @@ READ8_MEMBER( c1551_t::tpi0_r )
return data;
}
-WRITE8_MEMBER( c1551_t::tpi0_w )
+WRITE8_MEMBER( c1551_device::tpi0_w )
{
m_tpi0->write(space, offset, data);
@@ -178,7 +178,7 @@ WRITE8_MEMBER( c1551_t::tpi0_w )
m_ga->ted_w(1);
}
-READ8_MEMBER( c1551_t::tpi0_pc_r )
+READ8_MEMBER( c1551_device::tpi0_pc_r )
{
/*
@@ -209,7 +209,7 @@ READ8_MEMBER( c1551_t::tpi0_pc_r )
return data;
}
-WRITE8_MEMBER( c1551_t::tpi0_pc_w )
+WRITE8_MEMBER( c1551_device::tpi0_pc_w )
{
/*
@@ -243,7 +243,7 @@ WRITE8_MEMBER( c1551_t::tpi0_pc_w )
// tpi6525_interface tpi1_intf
//-------------------------------------------------
-READ8_MEMBER( c1551_t::tpi1_pb_r )
+READ8_MEMBER( c1551_device::tpi1_pb_r )
{
/*
@@ -263,7 +263,7 @@ READ8_MEMBER( c1551_t::tpi1_pb_r )
return m_status & 0x03;
}
-READ8_MEMBER( c1551_t::tpi1_pc_r )
+READ8_MEMBER( c1551_device::tpi1_pc_r )
{
/*
@@ -288,7 +288,7 @@ READ8_MEMBER( c1551_t::tpi1_pc_r )
return data;
}
-WRITE8_MEMBER( c1551_t::tpi1_pc_w )
+WRITE8_MEMBER( c1551_device::tpi1_pc_w )
{
/*
@@ -313,7 +313,7 @@ WRITE8_MEMBER( c1551_t::tpi1_pc_w )
// ADDRESS_MAP( c1551_mem )
//-------------------------------------------------
-static ADDRESS_MAP_START( c1551_mem, AS_PROGRAM, 8, c1551_t )
+static ADDRESS_MAP_START( c1551_mem, AS_PROGRAM, 8, c1551_device )
AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM
AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x3ff8) AM_READWRITE(tpi0_r, tpi0_w)
AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(M6510T_TAG, 0)
@@ -333,7 +333,7 @@ SLOT_INTERFACE_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c1551_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c1551_device::floppy_formats )
FLOPPY_D64_FORMAT,
FLOPPY_G64_FORMAT
FLOPPY_FORMATS_END
@@ -346,27 +346,27 @@ FLOPPY_FORMATS_END
static MACHINE_CONFIG_FRAGMENT( c1551 )
MCFG_CPU_ADD(M6510T_TAG, M6510T, XTAL_16MHz/8)
MCFG_CPU_PROGRAM_MAP(c1551_mem)
- MCFG_M6510T_PORT_CALLBACKS(READ8(c1551_t, port_r), WRITE8(c1551_t, port_w))
+ MCFG_M6510T_PORT_CALLBACKS(READ8(c1551_device, port_r), WRITE8(c1551_device, port_w))
MCFG_QUANTUM_PERFECT_CPU(M6510T_TAG)
MCFG_PLS100_ADD(PLA_TAG)
MCFG_DEVICE_ADD(M6523_0_TAG, TPI6525, 0)
- MCFG_TPI6525_IN_PA_CB(READ8(c1551_t, tcbm_data_r))
- MCFG_TPI6525_OUT_PA_CB(WRITE8(c1551_t, tcbm_data_w))
+ MCFG_TPI6525_IN_PA_CB(READ8(c1551_device, tcbm_data_r))
+ MCFG_TPI6525_OUT_PA_CB(WRITE8(c1551_device, tcbm_data_w))
MCFG_TPI6525_IN_PB_CB(DEVREAD8(C64H156_TAG, c64h156_device, yb_r))
MCFG_TPI6525_OUT_PB_CB(DEVWRITE8(C64H156_TAG, c64h156_device, yb_w))
- MCFG_TPI6525_IN_PC_CB(READ8(c1551_t, tpi0_pc_r))
- MCFG_TPI6525_OUT_PC_CB(WRITE8(c1551_t, tpi0_pc_w))
+ MCFG_TPI6525_IN_PC_CB(READ8(c1551_device, tpi0_pc_r))
+ MCFG_TPI6525_OUT_PC_CB(WRITE8(c1551_device, tpi0_pc_w))
MCFG_DEVICE_ADD(M6523_1_TAG, TPI6525, 0)
- MCFG_TPI6525_IN_PA_CB(READ8(c1551_t, tcbm_data_r))
- MCFG_TPI6525_OUT_PA_CB(WRITE8(c1551_t, tcbm_data_w))
- MCFG_TPI6525_IN_PB_CB(READ8(c1551_t, tpi1_pb_r))
- MCFG_TPI6525_IN_PC_CB(READ8(c1551_t, tpi1_pc_r))
- MCFG_TPI6525_OUT_PC_CB(WRITE8(c1551_t, tpi1_pc_w))
+ MCFG_TPI6525_IN_PA_CB(READ8(c1551_device, tcbm_data_r))
+ MCFG_TPI6525_OUT_PA_CB(WRITE8(c1551_device, tcbm_data_w))
+ MCFG_TPI6525_IN_PB_CB(READ8(c1551_device, tpi1_pb_r))
+ MCFG_TPI6525_IN_PC_CB(READ8(c1551_device, tpi1_pc_r))
+ MCFG_TPI6525_OUT_PC_CB(WRITE8(c1551_device, tpi1_pc_w))
MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz)
MCFG_64H156_BYTE_CALLBACK(DEVWRITELINE(C64H156_TAG, c64h156_device, atni_w))
- MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1551_floppies, "525ssqd", c1551_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1551_floppies, "525ssqd", c1551_device::floppy_formats)
MCFG_PLUS4_PASSTHRU_EXPANSION_SLOT_ADD()
MACHINE_CONFIG_END
@@ -377,7 +377,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor c1551_t::device_mconfig_additions() const
+machine_config_constructor c1551_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( c1551 );
}
@@ -399,7 +399,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c1551_t::device_input_ports() const
+ioport_constructor c1551_device::device_input_ports() const
{
return INPUT_PORTS_NAME( c1551 );
}
@@ -411,25 +411,26 @@ ioport_constructor c1551_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// c1551_t - constructor
-//-------------------------------------------------
-
-c1551_t::c1551_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, C1551, "C1551", tag, owner, clock, "c1551", __FILE__),
- device_plus4_expansion_card_interface(mconfig, *this),
- m_maincpu(*this, M6510T_TAG),
- m_tpi0(*this, M6523_0_TAG),
- m_tpi1(*this, M6523_1_TAG),
- m_ga(*this, C64H156_TAG),
- m_pla(*this, PLA_TAG),
- m_floppy(*this, C64H156_TAG":0:525ssqd"),
- m_exp(*this, PLUS4_EXPANSION_SLOT_TAG),
- m_jp1(*this, "JP1"),
- m_tcbm_data(0xff),
- m_status(1),
- m_dav(1),
- m_ack(1),
- m_dev(0), m_irq_timer(nullptr)
+// c1551_device - constructor
+//-------------------------------------------------
+
+c1551_device::c1551_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, C1551, tag, owner, clock)
+ , device_plus4_expansion_card_interface(mconfig, *this)
+ , m_maincpu(*this, M6510T_TAG)
+ , m_tpi0(*this, M6523_0_TAG)
+ , m_tpi1(*this, M6523_1_TAG)
+ , m_ga(*this, C64H156_TAG)
+ , m_pla(*this, PLA_TAG)
+ , m_floppy(*this, C64H156_TAG":0:525ssqd")
+ , m_exp(*this, PLUS4_EXPANSION_SLOT_TAG)
+ , m_jp1(*this, "JP1")
+ , m_tcbm_data(0xff)
+ , m_status(1)
+ , m_dav(1)
+ , m_ack(1)
+ , m_dev(0)
+ , m_irq_timer(nullptr)
{
}
@@ -438,7 +439,7 @@ c1551_t::c1551_t(const machine_config &mconfig, const char *tag, device_t *owner
// device_start - device-specific startup
//-------------------------------------------------
-void c1551_t::device_start()
+void c1551_device::device_start()
{
// allocate timers
m_irq_timer = timer_alloc();
@@ -460,7 +461,7 @@ void c1551_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c1551_t::device_reset()
+void c1551_device::device_reset()
{
m_maincpu->reset();
@@ -480,7 +481,7 @@ void c1551_t::device_reset()
// device_timer - handler timer events
//-------------------------------------------------
-void c1551_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void c1551_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
m_maincpu->set_input_line(M6502_IRQ_LINE, param);
@@ -501,7 +502,7 @@ void c1551_t::device_timer(emu_timer &timer, device_timer_id id, int param, void
// tpi1_selected -
//-------------------------------------------------
-bool c1551_t::tpi1_selected(offs_t offset)
+bool c1551_device::tpi1_selected(offs_t offset)
{
#ifdef PLA_DUMPED
int mux = 0, ras = 0, phi0 = 0, f7 = 0;
@@ -525,7 +526,7 @@ bool c1551_t::tpi1_selected(offs_t offset)
// plus4_cd_r - cartridge data read
//-------------------------------------------------
-uint8_t c1551_t::plus4_cd_r(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h)
+uint8_t c1551_device::plus4_cd_r(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h)
{
data = m_exp->cd_r(space, offset, data, ba, cs0, c1l, c2l, cs1, c1h, c2h);
@@ -542,7 +543,7 @@ uint8_t c1551_t::plus4_cd_r(address_space &space, offs_t offset, uint8_t data, i
// plus4_cd_w - cartridge data write
//-------------------------------------------------
-void c1551_t::plus4_cd_w(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h)
+void c1551_device::plus4_cd_w(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h)
{
if (tpi1_selected(offset))
{
diff --git a/src/devices/bus/plus4/c1551.h b/src/devices/bus/plus4/c1551.h
index 07f2e5596ee..ae749c0e056 100644
--- a/src/devices/bus/plus4/c1551.h
+++ b/src/devices/bus/plus4/c1551.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PLUS4_C1551_H
+#define MAME_BUS_PLUS4_C1551_H
-#ifndef __C1551__
-#define __C1551__
+#pragma once
#include "exp.h"
#include "cpu/m6502/m6510t.h"
@@ -23,14 +23,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> c1551_t
+// ======================> c1551_device
-class c1551_t : public device_t,
- public device_plus4_expansion_card_interface
+class c1551_device : public device_t, public device_plus4_expansion_card_interface
{
public:
// construction/destruction
- c1551_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ c1551_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -96,7 +95,6 @@ private:
// device type definition
extern const device_type C1551;
+DECLARE_DEVICE_TYPE(C1551, c1551_device)
-
-
-#endif
+#endif // MAME_BUS_PLUS4_C1551_H
diff --git a/src/devices/bus/plus4/diag264_lb_user.cpp b/src/devices/bus/plus4/diag264_lb_user.cpp
index d3978801a88..a8e4dc32b8c 100644
--- a/src/devices/bus/plus4/diag264_lb_user.cpp
+++ b/src/devices/bus/plus4/diag264_lb_user.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type DIAG264_USER_PORT_LOOPBACK = device_creator<diag264_user_port_loopback_device>;
+DEFINE_DEVICE_TYPE(DIAG264_USER_PORT_LOOPBACK, diag264_user_port_loopback_device, "diag264_user_port_loopback", "Diag264 User Port Loopback")
@@ -28,8 +28,8 @@ const device_type DIAG264_USER_PORT_LOOPBACK = device_creator<diag264_user_port_
//-------------------------------------------------
diag264_user_port_loopback_device::diag264_user_port_loopback_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DIAG264_USER_PORT_LOOPBACK, "Diag264 User Port Loopback", tag, owner, clock, "diag264_user_port_loopback", __FILE__),
- device_pet_user_port_interface(mconfig, *this)
+ : device_t(mconfig, DIAG264_USER_PORT_LOOPBACK, tag, owner, clock)
+ , device_pet_user_port_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/plus4/diag264_lb_user.h b/src/devices/bus/plus4/diag264_lb_user.h
index acff6f4bd49..dd45e469106 100644
--- a/src/devices/bus/plus4/diag264_lb_user.h
+++ b/src/devices/bus/plus4/diag264_lb_user.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PLUS4_DIAG264_LB_USER_H
+#define MAME_BUS_PLUS4_DIAG264_LB_USER_H
-#ifndef __DIAG264_USER_PORT_LOOPBACK__
-#define __DIAG264_USER_PORT_LOOPBACK__
+#pragma once
#include "user.h"
@@ -21,8 +21,7 @@
// ======================> diag264_user_port_loopback_device
-class diag264_user_port_loopback_device : public device_t,
- public device_pet_user_port_interface
+class diag264_user_port_loopback_device : public device_t, public device_pet_user_port_interface
{
public:
// construction/destruction
@@ -53,6 +52,6 @@ protected:
};
// device type definition
-extern const device_type DIAG264_USER_PORT_LOOPBACK;
+DECLARE_DEVICE_TYPE(DIAG264_USER_PORT_LOOPBACK, diag264_user_port_loopback_device)
-#endif
+#endif // MAME_BUS_PLUS4_DIAG264_LB_USER_H
diff --git a/src/devices/bus/plus4/exp.cpp b/src/devices/bus/plus4/exp.cpp
index 261dc556e60..0a868747088 100644
--- a/src/devices/bus/plus4/exp.cpp
+++ b/src/devices/bus/plus4/exp.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PLUS4_EXPANSION_SLOT = device_creator<plus4_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(PLUS4_EXPANSION_SLOT, plus4_expansion_slot_device, "plus4_expansion_slot", "Plus/4 Expansion Port")
@@ -35,16 +35,16 @@ const device_type PLUS4_EXPANSION_SLOT = device_creator<plus4_expansion_slot_dev
// device_plus4_expansion_card_interface - constructor
//-------------------------------------------------
-device_plus4_expansion_card_interface::device_plus4_expansion_card_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_c1l(*this, "c1l"),
- m_c1h(*this, "c1h"),
- m_c2l(*this, "c2l"),
- m_c2h(*this, "c2h"),
- m_c1l_mask(0),
- m_c1h_mask(0),
- m_c2l_mask(0),
- m_c2h_mask(0)
+device_plus4_expansion_card_interface::device_plus4_expansion_card_interface(const machine_config &mconfig, device_t &device) :
+ device_slot_card_interface(mconfig, device),
+ m_c1l(*this, "c1l"),
+ m_c1h(*this, "c1h"),
+ m_c2l(*this, "c2l"),
+ m_c2h(*this, "c2h"),
+ m_c1l_mask(0),
+ m_c1h_mask(0),
+ m_c2l_mask(0),
+ m_c2h_mask(0)
{
m_slot = dynamic_cast<plus4_expansion_slot_device *>(device.owner());
}
@@ -69,13 +69,13 @@ device_plus4_expansion_card_interface::~device_plus4_expansion_card_interface()
//-------------------------------------------------
plus4_expansion_slot_device::plus4_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PLUS4_EXPANSION_SLOT, "Expansion Port", tag, owner, clock, "plus4_expansion_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- device_image_interface(mconfig, *this),
- m_write_irq(*this),
- m_read_dma_cd(*this),
- m_write_dma_cd(*this),
- m_write_aec(*this), m_card(nullptr)
+ device_t(mconfig, PLUS4_EXPANSION_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ device_image_interface(mconfig, *this),
+ m_write_irq(*this),
+ m_read_dma_cd(*this),
+ m_write_dma_cd(*this),
+ m_write_aec(*this), m_card(nullptr)
{
}
diff --git a/src/devices/bus/plus4/exp.h b/src/devices/bus/plus4/exp.h
index 319f07ba6fa..294c108d8f4 100644
--- a/src/devices/bus/plus4/exp.h
+++ b/src/devices/bus/plus4/exp.h
@@ -34,10 +34,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PLUS4_EXP_H
+#define MAME_BUS_PLUS4_EXP_H
-#ifndef __PLUS4_EXPANSION_SLOT__
-#define __PLUS4_EXPANSION_SLOT__
+#pragma once
#include "softlist_dev.h"
@@ -96,10 +96,10 @@ public:
// construction/destruction
plus4_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<plus4_expansion_slot_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_cd_rd_callback(device_t &device, _Object object) { return downcast<plus4_expansion_slot_device &>(device).m_read_dma_cd.set_callback(object); }
- template<class _Object> static devcb_base &set_cd_wr_callback(device_t &device, _Object object) { return downcast<plus4_expansion_slot_device &>(device).m_write_dma_cd.set_callback(object); }
- template<class _Object> static devcb_base &set_aec_wr_callback(device_t &device, _Object object) { return downcast<plus4_expansion_slot_device &>(device).m_write_aec.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cd_rd_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_read_dma_cd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cd_wr_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_write_dma_cd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_aec_wr_callback(device_t &device, Object &&cb) { return downcast<plus4_expansion_slot_device &>(device).m_write_aec.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h);
@@ -151,14 +151,15 @@ class device_plus4_expansion_card_interface : public device_slot_card_interface
public:
// construction/destruction
- device_plus4_expansion_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_plus4_expansion_card_interface();
// runtime
- virtual uint8_t plus4_cd_r(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h) { return data; };
- virtual void plus4_cd_w(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h) { };
+ virtual uint8_t plus4_cd_r(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h) { return data; }
+ virtual void plus4_cd_w(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h) { }
protected:
+ device_plus4_expansion_card_interface(const machine_config &mconfig, device_t &device);
+
optional_shared_ptr<uint8_t> m_c1l;
optional_shared_ptr<uint8_t> m_c1h;
optional_shared_ptr<uint8_t> m_c2l;
@@ -174,11 +175,9 @@ protected:
// device type definition
-extern const device_type PLUS4_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(PLUS4_EXPANSION_SLOT, plus4_expansion_slot_device)
SLOT_INTERFACE_EXTERN( plus4_expansion_cards );
-
-
-#endif
+#endif // MAME_BUS_PLUS4_EXP_H
diff --git a/src/devices/bus/plus4/sid.cpp b/src/devices/bus/plus4/sid.cpp
index 00a2ec25cbe..269446d86a7 100644
--- a/src/devices/bus/plus4/sid.cpp
+++ b/src/devices/bus/plus4/sid.cpp
@@ -37,7 +37,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PLUS4_SID = device_creator<plus4_sid_cartridge_device>;
+DEFINE_DEVICE_TYPE(PLUS4_SID, plus4_sid_cartridge_device, "plus4_sid", "Plus/4 SID cartridge")
//-------------------------------------------------
@@ -94,7 +94,7 @@ machine_config_constructor plus4_sid_cartridge_device::device_mconfig_additions(
//-------------------------------------------------
plus4_sid_cartridge_device::plus4_sid_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PLUS4_SID, "Plus/4 SID cartridge", tag, owner, clock, "plus4_sid", __FILE__),
+ device_t(mconfig, PLUS4_SID, tag, owner, clock),
device_plus4_expansion_card_interface(mconfig, *this),
m_sid(*this, MOS8580_TAG),
m_joy(*this, CONTROL1_TAG)
diff --git a/src/devices/bus/plus4/sid.h b/src/devices/bus/plus4/sid.h
index 31fa52eaf83..9136e0abc5b 100644
--- a/src/devices/bus/plus4/sid.h
+++ b/src/devices/bus/plus4/sid.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PLUS4_SID_H
+#define MAME_BUS_PLUS4_SID_H
-#ifndef __PLUS4_SID_CARTRIDGE__
-#define __PLUS4_SID_CARTRIDGE__
+#pragma once
#include "exp.h"
#include "bus/vcs_ctrl/ctrl.h"
@@ -51,7 +51,7 @@ private:
// device type definition
-extern const device_type PLUS4_SID;
+DECLARE_DEVICE_TYPE(PLUS4_SID, plus4_sid_cartridge_device)
-#endif
+#endif // MAME_BUS_PLUS4_SID_H
diff --git a/src/devices/bus/plus4/std.cpp b/src/devices/bus/plus4/std.cpp
index 781bb9f0d92..835ecac7d4a 100644
--- a/src/devices/bus/plus4/std.cpp
+++ b/src/devices/bus/plus4/std.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PLUS4_STD = device_creator<plus4_standard_cartridge_device>;
+DEFINE_DEVICE_TYPE(PLUS4_STD, plus4_standard_cartridge_device, "plus4_standard", "Plus/4 standard cartridge")
@@ -28,7 +28,7 @@ const device_type PLUS4_STD = device_creator<plus4_standard_cartridge_device>;
//-------------------------------------------------
plus4_standard_cartridge_device::plus4_standard_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PLUS4_STD, "Plus/4 standard cartridge", tag, owner, clock, "plus4_standard", __FILE__),
+ device_t(mconfig, PLUS4_STD, tag, owner, clock),
device_plus4_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/plus4/std.h b/src/devices/bus/plus4/std.h
index fb60a81b5eb..d154f0bcadc 100644
--- a/src/devices/bus/plus4/std.h
+++ b/src/devices/bus/plus4/std.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PLUS4_STD_H
+#define MAME_BUS_PLUS4_STD_H
-#ifndef __PLUS4_STANDARD_CARTRIDGE__
-#define __PLUS4_STANDARD_CARTRIDGE__
+#pragma once
#include "exp.h"
@@ -34,13 +34,10 @@ protected:
// device_plus4_expansion_card_interface overrides
virtual uint8_t plus4_cd_r(address_space &space, offs_t offset, uint8_t data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h) override;
-
-
};
// device type definition
-extern const device_type PLUS4_STD;
-
+DECLARE_DEVICE_TYPE(PLUS4_STD, plus4_standard_cartridge_device)
-#endif
+#endif // MAME_BUS_PLUS4_STD_H
diff --git a/src/devices/bus/plus4/user.h b/src/devices/bus/plus4/user.h
index abf4a909ccb..8aac44235de 100644
--- a/src/devices/bus/plus4/user.h
+++ b/src/devices/bus/plus4/user.h
@@ -21,13 +21,13 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_PLUS4_USER_H
+#define MAME_BUS_PLUS4_USER_H
-#ifndef __PLUS4_USER_PORT__
-#define __PLUS4_USER_PORT__
+#pragma once
#include "bus/vic20/user.h"
SLOT_INTERFACE_EXTERN( plus4_user_port_cards );
-#endif
+#endif // MAME_BUS_PLUS4_USER_H
diff --git a/src/devices/bus/pofo/ccm.cpp b/src/devices/bus/pofo/ccm.cpp
index e31a1eefc97..9619be68712 100644
--- a/src/devices/bus/pofo/ccm.cpp
+++ b/src/devices/bus/pofo/ccm.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PORTFOLIO_MEMORY_CARD_SLOT = device_creator<portfolio_memory_card_slot_t>;
+DEFINE_DEVICE_TYPE(PORTFOLIO_MEMORY_CARD_SLOT, portfolio_memory_card_slot_device, "portfolio_ccm_slot", "Atari Portfolio memory card port")
@@ -32,7 +32,7 @@ device_portfolio_memory_card_slot_interface::device_portfolio_memory_card_slot_i
m_rom(*this, "rom"),
m_nvram(*this, "nvram")
{
- m_slot = dynamic_cast<portfolio_memory_card_slot_t *>(device.owner());
+ m_slot = dynamic_cast<portfolio_memory_card_slot_device *>(device.owner());
}
@@ -42,11 +42,11 @@ device_portfolio_memory_card_slot_interface::device_portfolio_memory_card_slot_i
//**************************************************************************
//-------------------------------------------------
-// portfolio_memory_card_slot_t - constructor
+// portfolio_memory_card_slot_device - constructor
//-------------------------------------------------
-portfolio_memory_card_slot_t::portfolio_memory_card_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PORTFOLIO_MEMORY_CARD_SLOT, "Atari Portfolio memory card port", tag, owner, clock, "portfolio_ccm_slot", __FILE__),
+portfolio_memory_card_slot_device::portfolio_memory_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PORTFOLIO_MEMORY_CARD_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
device_image_interface(mconfig, *this),
m_card(nullptr)
@@ -58,7 +58,7 @@ portfolio_memory_card_slot_t::portfolio_memory_card_slot_t(const machine_config
// device_start - device-specific startup
//-------------------------------------------------
-void portfolio_memory_card_slot_t::device_start()
+void portfolio_memory_card_slot_device::device_start()
{
m_card = dynamic_cast<device_portfolio_memory_card_slot_interface *>(get_card_device());
}
@@ -68,7 +68,7 @@ void portfolio_memory_card_slot_t::device_start()
// call_load -
//-------------------------------------------------
-image_init_result portfolio_memory_card_slot_t::call_load()
+image_init_result portfolio_memory_card_slot_device::call_load()
{
if (m_card)
{
@@ -90,7 +90,7 @@ image_init_result portfolio_memory_card_slot_t::call_load()
// get_default_card_software -
//-------------------------------------------------
-std::string portfolio_memory_card_slot_t::get_default_card_software(get_default_card_software_hook &hook) const
+std::string portfolio_memory_card_slot_device::get_default_card_software(get_default_card_software_hook &hook) const
{
return software_get_default_slot("rom");
}
diff --git a/src/devices/bus/pofo/ccm.h b/src/devices/bus/pofo/ccm.h
index c960b8eed98..ac57eb143c7 100644
--- a/src/devices/bus/pofo/ccm.h
+++ b/src/devices/bus/pofo/ccm.h
@@ -43,10 +43,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_POFO_CCM_H
+#define MAME_BUS_POFO_CCM_H
-#ifndef __PORTFOLIO_MEMORY_CARD_SLOT__
-#define __PORTFOLIO_MEMORY_CARD_SLOT__
+#pragma once
#include "softlist_dev.h"
@@ -77,40 +77,38 @@
// ======================> device_portfolio_memory_card_slot_interface
-class portfolio_memory_card_slot_t;
+class portfolio_memory_card_slot_device;
class device_portfolio_memory_card_slot_interface : public device_slot_card_interface
{
- friend class portfolio_memory_card_slot_t;
+ friend class portfolio_memory_card_slot_device;
public:
- // construction/destruction
- device_portfolio_memory_card_slot_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_portfolio_memory_card_slot_interface() { }
-
virtual bool cdet() { return 1; }
- virtual uint8_t nrdi_r(address_space &space, offs_t offset) { return 0xff; };
- virtual void nwri_w(address_space &space, offs_t offset, uint8_t data) { };
+ virtual uint8_t nrdi_r(address_space &space, offs_t offset) { return 0xff; }
+ virtual void nwri_w(address_space &space, offs_t offset, uint8_t data) { }
protected:
+ // construction/destruction
+ device_portfolio_memory_card_slot_interface(const machine_config &mconfig, device_t &device);
+
optional_shared_ptr<uint8_t> m_rom;
optional_shared_ptr<uint8_t> m_nvram;
- portfolio_memory_card_slot_t *m_slot;
+ portfolio_memory_card_slot_device *m_slot;
};
-// ======================> portfolio_memory_card_slot_t
+// ======================> portfolio_memory_card_slot_device
-class portfolio_memory_card_slot_t : public device_t,
+class portfolio_memory_card_slot_device : public device_t,
public device_slot_interface,
public device_image_interface
{
public:
// construction/destruction
- portfolio_memory_card_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~portfolio_memory_card_slot_t() { }
+ portfolio_memory_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// computer interface
bool cdet_r() { return (m_card != nullptr) ? m_card->cdet() : 1; }
@@ -145,10 +143,11 @@ protected:
// device type definition
extern const device_type PORTFOLIO_MEMORY_CARD_SLOT;
+DECLARE_DEVICE_TYPE(PORTFOLIO_MEMORY_CARD_SLOT, portfolio_memory_card_slot_device)
SLOT_INTERFACE_EXTERN( portfolio_memory_cards );
-#endif
+#endif // MAME_BUS_POFO_CCM_H
diff --git a/src/devices/bus/pofo/exp.cpp b/src/devices/bus/pofo/exp.cpp
index c8f5733fe2c..37991dd8989 100644
--- a/src/devices/bus/pofo/exp.cpp
+++ b/src/devices/bus/pofo/exp.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PORTFOLIO_EXPANSION_SLOT = device_creator<portfolio_expansion_slot_t>;
+DEFINE_DEVICE_TYPE(PORTFOLIO_EXPANSION_SLOT, portfolio_expansion_slot_device, "portfolio_expansion_slot", "Atari Portfolio expansion port")
@@ -30,7 +30,7 @@ const device_type PORTFOLIO_EXPANSION_SLOT = device_creator<portfolio_expansion_
device_portfolio_expansion_slot_interface::device_portfolio_expansion_slot_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig,device)
{
- m_slot = dynamic_cast<portfolio_expansion_slot_t *>(device.owner());
+ m_slot = dynamic_cast<portfolio_expansion_slot_device *>(device.owner());
}
WRITE_LINE_MEMBER( device_portfolio_expansion_slot_interface::eint_w ) { m_slot->eint_w(state); }
@@ -44,11 +44,11 @@ WRITE_LINE_MEMBER( device_portfolio_expansion_slot_interface::wake_w ) { m_slot-
//**************************************************************************
//-------------------------------------------------
-// portfolio_expansion_slot_t - constructor
+// portfolio_expansion_slot_device - constructor
//-------------------------------------------------
-portfolio_expansion_slot_t::portfolio_expansion_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PORTFOLIO_EXPANSION_SLOT, "Atari Portfolio expansion port", tag, owner, clock, "portfolio_expansion_slot", __FILE__),
+portfolio_expansion_slot_device::portfolio_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PORTFOLIO_EXPANSION_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_write_eint(*this),
m_write_nmio(*this),
@@ -62,7 +62,7 @@ portfolio_expansion_slot_t::portfolio_expansion_slot_t(const machine_config &mco
// device_start - device-specific startup
//-------------------------------------------------
-void portfolio_expansion_slot_t::device_start()
+void portfolio_expansion_slot_device::device_start()
{
m_card = dynamic_cast<device_portfolio_expansion_slot_interface *>(get_card_device());
@@ -77,7 +77,7 @@ void portfolio_expansion_slot_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void portfolio_expansion_slot_t::device_reset()
+void portfolio_expansion_slot_device::device_reset()
{
if (m_card != nullptr)
{
@@ -97,8 +97,8 @@ void portfolio_expansion_slot_t::device_reset()
#include "hpc104.h"
SLOT_INTERFACE_START( portfolio_expansion_cards )
- SLOT_INTERFACE("lpt", HPC101)
- SLOT_INTERFACE("uart", HPC102)
- SLOT_INTERFACE("ram", HPC104)
- SLOT_INTERFACE("ram2", HPC104_2)
+ SLOT_INTERFACE("lpt", POFO_HPC101)
+ SLOT_INTERFACE("uart", POFO_HPC102)
+ SLOT_INTERFACE("ram", POFO_HPC104)
+ SLOT_INTERFACE("ram2", POFO_HPC104_2)
SLOT_INTERFACE_END
diff --git a/src/devices/bus/pofo/exp.h b/src/devices/bus/pofo/exp.h
index 51bb16c71f4..27f882d2603 100644
--- a/src/devices/bus/pofo/exp.h
+++ b/src/devices/bus/pofo/exp.h
@@ -39,10 +39,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_POFO_EXP_H
+#define MAME_BUS_POFO_EXP_H
-#ifndef __PORTFOLIO_EXPANSION_SLOT__
-#define __PORTFOLIO_EXPANSION_SLOT__
+#pragma once
@@ -64,13 +64,13 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(_write) \
- devcb = &portfolio_expansion_slot_t::set_eint_wr_callback(*device, DEVCB_##_write);
+ devcb = &portfolio_expansion_slot_device::set_eint_wr_callback(*device, DEVCB_##_write);
#define MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(_write) \
- devcb = &portfolio_expansion_slot_t::set_nmio_wr_callback(*device, DEVCB_##_write);
+ devcb = &portfolio_expansion_slot_device::set_nmio_wr_callback(*device, DEVCB_##_write);
#define MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(_write) \
- devcb = &portfolio_expansion_slot_t::set_wake_wr_callback(*device, DEVCB_##_write);
+ devcb = &portfolio_expansion_slot_device::set_wake_wr_callback(*device, DEVCB_##_write);
@@ -80,15 +80,11 @@
// ======================> device_portfolio_expansion_slot_interface
-class portfolio_expansion_slot_t;
+class portfolio_expansion_slot_device;
class device_portfolio_expansion_slot_interface : public device_slot_card_interface
{
public:
- // construction/destruction
- device_portfolio_expansion_slot_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_portfolio_expansion_slot_interface() { }
-
virtual bool nmd1() { return 1; }
virtual bool pdet() { return 0; }
virtual bool cdet() { return 1; }
@@ -96,33 +92,34 @@ public:
virtual uint8_t iack_r() { return 0xff; }
virtual uint8_t eack_r() { return 0xff; }
- virtual uint8_t nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1) { return data; };
- virtual void nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1) { };
+ virtual uint8_t nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1) { return data; }
+ virtual void nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1) { }
- virtual WRITE_LINE_MEMBER( iint_w ) { };
+ virtual WRITE_LINE_MEMBER( iint_w ) { }
DECLARE_WRITE_LINE_MEMBER( eint_w );
DECLARE_WRITE_LINE_MEMBER( nmio_w );
DECLARE_WRITE_LINE_MEMBER( wake_w );
protected:
- portfolio_expansion_slot_t *m_slot;
+ // construction/destruction
+ device_portfolio_expansion_slot_interface(const machine_config &mconfig, device_t &device);
+
+ portfolio_expansion_slot_device *m_slot;
};
-// ======================> portfolio_expansion_slot_t
+// ======================> portfolio_expansion_slot_device
-class portfolio_expansion_slot_t : public device_t,
- public device_slot_interface
+class portfolio_expansion_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
- portfolio_expansion_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~portfolio_expansion_slot_t() { }
+ portfolio_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_eint_wr_callback(device_t &device, _Object object) { return downcast<portfolio_expansion_slot_t &>(device).m_write_eint.set_callback(object); }
- template<class _Object> static devcb_base &set_nmio_wr_callback(device_t &device, _Object object) { return downcast<portfolio_expansion_slot_t &>(device).m_write_nmio.set_callback(object); }
- template<class _Object> static devcb_base &set_wake_wr_callback(device_t &device, _Object object) { return downcast<portfolio_expansion_slot_t &>(device).m_write_wake.set_callback(object); }
+ template <class Object> static devcb_base &set_eint_wr_callback(device_t &device, Object &&cb) { return downcast<portfolio_expansion_slot_device &>(device).m_write_eint.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nmio_wr_callback(device_t &device, Object &&cb) { return downcast<portfolio_expansion_slot_device &>(device).m_write_nmio.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_wake_wr_callback(device_t &device, Object &&cb) { return downcast<portfolio_expansion_slot_device &>(device).m_write_wake.set_callback(std::forward<Object>(cb)); }
// computer interface
bool nmd1_r() { return (m_card != nullptr) ? m_card->nmd1() : 1; }
@@ -157,10 +154,9 @@ protected:
// device type definition
extern const device_type PORTFOLIO_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(PORTFOLIO_EXPANSION_SLOT, portfolio_expansion_slot_device)
SLOT_INTERFACE_EXTERN( portfolio_expansion_cards );
-
-
-#endif
+#endif // MAME_BUS_POFO_EXP_H
diff --git a/src/devices/bus/pofo/hpc101.cpp b/src/devices/bus/pofo/hpc101.cpp
index 8d106f00a37..f5511c3963b 100644
--- a/src/devices/bus/pofo/hpc101.cpp
+++ b/src/devices/bus/pofo/hpc101.cpp
@@ -26,7 +26,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type HPC101 = device_creator<hpc101_t>;
+DEFINE_DEVICE_TYPE(POFO_HPC101, pofo_hpc101_device, "pofo_hpc101", "Atari Portfolio HPC-101")
//-------------------------------------------------
@@ -62,7 +62,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor hpc101_t::device_mconfig_additions() const
+machine_config_constructor pofo_hpc101_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( hpc101 );
}
@@ -73,11 +73,11 @@ machine_config_constructor hpc101_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// hpc101_t - constructor
+// pofo_hpc101_device - constructor
//-------------------------------------------------
-hpc101_t::hpc101_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, HPC101, "Atari Portfolio HPC-101", tag, owner, clock, "hpc101", __FILE__),
+pofo_hpc101_device::pofo_hpc101_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, POFO_HPC101, tag, owner, clock),
device_portfolio_expansion_slot_interface(mconfig, *this),
m_ppi(*this, M82C55A_TAG)
{
@@ -88,7 +88,7 @@ hpc101_t::hpc101_t(const machine_config &mconfig, const char *tag, device_t *own
// device_start - device-specific startup
//-------------------------------------------------
-void hpc101_t::device_start()
+void pofo_hpc101_device::device_start()
{
}
@@ -97,7 +97,7 @@ void hpc101_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void hpc101_t::device_reset()
+void pofo_hpc101_device::device_reset()
{
m_ppi->reset();
}
@@ -107,7 +107,7 @@ void hpc101_t::device_reset()
// nrdi_r - read
//-------------------------------------------------
-uint8_t hpc101_t::nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
+uint8_t pofo_hpc101_device::nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
{
if (!bcom)
{
@@ -130,7 +130,7 @@ uint8_t hpc101_t::nrdi_r(address_space &space, offs_t offset, uint8_t data, bool
// nwri_w - write
//-------------------------------------------------
-void hpc101_t::nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
+void pofo_hpc101_device::nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
{
if (!bcom)
{
diff --git a/src/devices/bus/pofo/hpc101.h b/src/devices/bus/pofo/hpc101.h
index 9a700be92b9..f5cc803b5bb 100644
--- a/src/devices/bus/pofo/hpc101.h
+++ b/src/devices/bus/pofo/hpc101.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_POFO_HPC101_H
+#define MAME_BUS_POFO_HPC101_H
-#ifndef __HPC101__
-#define __HPC101__
+#pragma once
#include "exp.h"
#include "bus/centronics/ctronics.h"
@@ -21,14 +21,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> hpc101_t
+// ======================> pofo_hpc101_device
-class hpc101_t : public device_t,
- public device_portfolio_expansion_slot_interface
+class pofo_hpc101_device : public device_t, public device_portfolio_expansion_slot_interface
{
public:
// construction/destruction
- hpc101_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pofo_hpc101_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -50,8 +49,6 @@ private:
// device type definition
-extern const device_type HPC101;
-
-
+DECLARE_DEVICE_TYPE(POFO_HPC101, pofo_hpc101_device)
-#endif
+#endif // MAME_BUS_POFO_HPC101_H
diff --git a/src/devices/bus/pofo/hpc102.cpp b/src/devices/bus/pofo/hpc102.cpp
index 72c886b32d3..45dfb9e3c13 100644
--- a/src/devices/bus/pofo/hpc102.cpp
+++ b/src/devices/bus/pofo/hpc102.cpp
@@ -26,7 +26,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type HPC102 = device_creator<hpc102_t>;
+DEFINE_DEVICE_TYPE(POFO_HPC102, pofo_hpc102_device, "pofo_hpc102", "Atari Portfolio HPC-102")
//-------------------------------------------------
@@ -54,7 +54,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor hpc102_t::device_mconfig_additions() const
+machine_config_constructor pofo_hpc102_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( hpc102 );
}
@@ -65,11 +65,11 @@ machine_config_constructor hpc102_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// hpc102_t - constructor
+// pofo_hpc102_device - constructor
//-------------------------------------------------
-hpc102_t::hpc102_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, HPC102, "Atari Portfolio HPC-102", tag, owner, clock, "hpc102", __FILE__),
+pofo_hpc102_device::pofo_hpc102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, POFO_HPC102, tag, owner, clock),
device_portfolio_expansion_slot_interface(mconfig, *this),
m_uart(*this, M82C50A_TAG)
{
@@ -80,7 +80,7 @@ hpc102_t::hpc102_t(const machine_config &mconfig, const char *tag, device_t *own
// device_start - device-specific startup
//-------------------------------------------------
-void hpc102_t::device_start()
+void pofo_hpc102_device::device_start()
{
}
@@ -89,7 +89,7 @@ void hpc102_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void hpc102_t::device_reset()
+void pofo_hpc102_device::device_reset()
{
m_uart->reset();
}
@@ -99,7 +99,7 @@ void hpc102_t::device_reset()
// eack_r - external interrupt acknowledge
//-------------------------------------------------
-uint8_t hpc102_t::eack_r()
+uint8_t pofo_hpc102_device::eack_r()
{
return m_vector;
}
@@ -109,7 +109,7 @@ uint8_t hpc102_t::eack_r()
// nrdi_r - read
//-------------------------------------------------
-uint8_t hpc102_t::nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
+uint8_t pofo_hpc102_device::nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
{
if (!bcom)
{
@@ -132,7 +132,7 @@ uint8_t hpc102_t::nrdi_r(address_space &space, offs_t offset, uint8_t data, bool
// nwri_w - write
//-------------------------------------------------
-void hpc102_t::nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
+void pofo_hpc102_device::nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
{
if (!bcom)
{
diff --git a/src/devices/bus/pofo/hpc102.h b/src/devices/bus/pofo/hpc102.h
index e492e6cdc38..e0ba50074e4 100644
--- a/src/devices/bus/pofo/hpc102.h
+++ b/src/devices/bus/pofo/hpc102.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_POFO_HPC102_H
+#define MAME_BUS_POFO_HPC102_H
-#ifndef __HPC102__
-#define __HPC102__
+#pragma once
#include "exp.h"
#include "bus/rs232/rs232.h"
@@ -21,14 +21,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> hpc102_t
+// ======================> pofo_hpc102_device
-class hpc102_t : public device_t,
- public device_portfolio_expansion_slot_interface
+class pofo_hpc102_device : public device_t, public device_portfolio_expansion_slot_interface
{
public:
// construction/destruction
- hpc102_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pofo_hpc102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -54,12 +53,6 @@ private:
// device type definition
-extern const device_type HPC102;
-
-
-
-#endif
-/*
-
+DECLARE_DEVICE_TYPE(POFO_HPC102, pofo_hpc102_device)
-*/
+#endif // MAME_BUS_POFO_HPC102_H
diff --git a/src/devices/bus/pofo/hpc104.cpp b/src/devices/bus/pofo/hpc104.cpp
index 050fdc2bb6c..7c22c9b6625 100644
--- a/src/devices/bus/pofo/hpc104.cpp
+++ b/src/devices/bus/pofo/hpc104.cpp
@@ -23,8 +23,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type HPC104 = device_creator<hpc104_t>;
-const device_type HPC104_2 = device_creator<hpc104_2_t>;
+DEFINE_DEVICE_TYPE(POFO_HPC104, pofo_hpc104_device, "pofo_hpc104", "Atari Portfolio HPC-104")
+DEFINE_DEVICE_TYPE(POFO_HPC104_2, pofo_hpc104_2_device, "pofo_hpc104_2", "Atari Portfolio HPC-104 (Unit 2)")
//-------------------------------------------------
@@ -35,9 +35,9 @@ static MACHINE_CONFIG_FRAGMENT( hpc104 )
MCFG_PORTFOLIO_MEMORY_CARD_SLOT_ADD(PORTFOLIO_MEMORY_CARD_SLOT_B_TAG, portfolio_memory_cards, nullptr)
MCFG_PORTFOLIO_EXPANSION_SLOT_ADD(PORTFOLIO_EXPANSION_SLOT_TAG, XTAL_4_9152MHz, portfolio_expansion_cards, nullptr)
- MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, eint_w))
- MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, nmio_w))
- MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, wake_w))
+ MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_device, eint_w))
+ MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_device, nmio_w))
+ MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_device, wake_w))
MACHINE_CONFIG_END
@@ -46,7 +46,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor hpc104_t::device_mconfig_additions() const
+machine_config_constructor pofo_hpc104_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( hpc104 );
}
@@ -68,7 +68,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor hpc104_t::device_input_ports() const
+ioport_constructor pofo_hpc104_device::device_input_ports() const
{
return INPUT_PORTS_NAME( hpc104 );
}
@@ -90,7 +90,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor hpc104_2_t::device_input_ports() const
+ioport_constructor pofo_hpc104_2_device::device_input_ports() const
{
return INPUT_PORTS_NAME( hpc104_2 );
}
@@ -102,11 +102,11 @@ ioport_constructor hpc104_2_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// hpc104_t - constructor
+// pofo_hpc104_device - constructor
//-------------------------------------------------
-hpc104_t::hpc104_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+pofo_hpc104_device::pofo_hpc104_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_portfolio_expansion_slot_interface(mconfig, *this),
device_nvram_interface(mconfig, *this),
m_ccm(*this, PORTFOLIO_MEMORY_CARD_SLOT_B_TAG),
@@ -116,31 +116,27 @@ hpc104_t::hpc104_t(const machine_config &mconfig, device_type type, const char *
{
}
-hpc104_t::hpc104_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, HPC104, "Atari Portfolio HPC-104", tag, owner, clock, "hpc104", __FILE__),
- device_portfolio_expansion_slot_interface(mconfig, *this),
- device_nvram_interface(mconfig, *this),
- m_ccm(*this, PORTFOLIO_MEMORY_CARD_SLOT_B_TAG),
- m_exp(*this, PORTFOLIO_EXPANSION_SLOT_TAG),
- m_nvram(*this, "nvram"),
- m_io_sw1(*this, "SW1")
+pofo_hpc104_device::pofo_hpc104_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ pofo_hpc104_device(mconfig, POFO_HPC104, tag, owner, clock)
{
}
//-------------------------------------------------
-// hpc104_2_t - constructor
+// pofo_hpc104_2_device - constructor
//-------------------------------------------------
-hpc104_2_t::hpc104_2_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- hpc104_t(mconfig, HPC104_2, "Atari Portfolio HPC-104 (Unit 2)", tag, owner, clock, "hpc104_2", __FILE__) { }
+pofo_hpc104_2_device::pofo_hpc104_2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ pofo_hpc104_device(mconfig, POFO_HPC104_2, tag, owner, clock)
+{
+}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void hpc104_t::device_start()
+void pofo_hpc104_device::device_start()
{
// allocate memory
m_nvram.allocate(0x40000);
@@ -151,7 +147,7 @@ void hpc104_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void hpc104_t::device_reset()
+void pofo_hpc104_device::device_reset()
{
m_sw1 = BIT(m_io_sw1->read(), 0);
}
@@ -161,7 +157,7 @@ void hpc104_t::device_reset()
// nrdi_r - read
//-------------------------------------------------
-uint8_t hpc104_t::nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
+uint8_t pofo_hpc104_device::nrdi_r(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
{
data = m_exp->nrdi_r(space, offset, data, iom, bcom, m_ncc1_out || ncc1);
@@ -198,7 +194,7 @@ uint8_t hpc104_t::nrdi_r(address_space &space, offs_t offset, uint8_t data, bool
// nwri_w - write
//-------------------------------------------------
-void hpc104_t::nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
+void pofo_hpc104_device::nwri_w(address_space &space, offs_t offset, uint8_t data, bool iom, bool bcom, bool ncc1)
{
m_exp->nwri_w(space, offset, data, iom, bcom, m_ncc1_out || ncc1);
diff --git a/src/devices/bus/pofo/hpc104.h b/src/devices/bus/pofo/hpc104.h
index 38337f5ed35..50350490785 100644
--- a/src/devices/bus/pofo/hpc104.h
+++ b/src/devices/bus/pofo/hpc104.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_POFO_HPC104_H
+#define MAME_BUS_POFO_HPC104_H
-#ifndef __HPC104__
-#define __HPC104__
+#pragma once
#include "exp.h"
#include "bus/pofo/ccm.h"
@@ -21,22 +21,23 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> hpc104_t
+// ======================> pofo_hpc104_device
-class hpc104_t : public device_t,
+class pofo_hpc104_device : public device_t,
public device_portfolio_expansion_slot_interface,
public device_nvram_interface
{
public:
// construction/destruction
- hpc104_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- hpc104_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pofo_hpc104_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
protected:
+ pofo_hpc104_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -55,8 +56,8 @@ protected:
virtual WRITE_LINE_MEMBER( iint_w ) override { m_exp->iint_w(state); }
private:
- required_device<portfolio_memory_card_slot_t> m_ccm;
- required_device<portfolio_expansion_slot_t> m_exp;
+ required_device<portfolio_memory_card_slot_device> m_ccm;
+ required_device<portfolio_expansion_slot_device> m_exp;
optional_shared_ptr<uint8_t> m_nvram;
required_ioport m_io_sw1;
@@ -65,13 +66,13 @@ private:
};
-// ======================> hpc104_2_t
+// ======================> pofo_hpc104_2_device
-class hpc104_2_t : public hpc104_t
+class pofo_hpc104_2_device : public pofo_hpc104_device
{
public:
// construction/destruction
- hpc104_2_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pofo_hpc104_2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
@@ -79,9 +80,7 @@ public:
// device type definition
-extern const device_type HPC104;
-extern const device_type HPC104_2;
-
-
+DECLARE_DEVICE_TYPE(POFO_HPC104, pofo_hpc104_device)
+DECLARE_DEVICE_TYPE(POFO_HPC104_2, pofo_hpc104_2_device)
-#endif
+#endif // MAME_BUS_POFO_HPC104_H
diff --git a/src/devices/bus/pofo/ram.cpp b/src/devices/bus/pofo/ram.cpp
index 79d2a87ad0e..6ef861a0b5d 100644
--- a/src/devices/bus/pofo/ram.cpp
+++ b/src/devices/bus/pofo/ram.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PORTFOLIO_RAM_CARD = device_creator<portfolio_ram_card_t>;
+DEFINE_DEVICE_TYPE(PORTFOLIO_RAM_CARD, portfolio_ram_card_device, "portfolio_ram_card", "Atari Portfolio RAM card")
//**************************************************************************
@@ -23,11 +23,11 @@ const device_type PORTFOLIO_RAM_CARD = device_creator<portfolio_ram_card_t>;
//**************************************************************************
//-------------------------------------------------
-// portfolio_ram_card_t - constructor
+// portfolio_ram_card_device - constructor
//-------------------------------------------------
-portfolio_ram_card_t::portfolio_ram_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PORTFOLIO_RAM_CARD, "Atari Portfolio RAM card", tag, owner, clock, "portfolio_ram_card", __FILE__),
+portfolio_ram_card_device::portfolio_ram_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PORTFOLIO_RAM_CARD, tag, owner, clock),
device_portfolio_memory_card_slot_interface(mconfig, *this),
device_nvram_interface(mconfig, *this)
{
@@ -38,7 +38,7 @@ portfolio_ram_card_t::portfolio_ram_card_t(const machine_config &mconfig, const
// device_start - device-specific startup
//-------------------------------------------------
-void portfolio_ram_card_t::device_start()
+void portfolio_ram_card_device::device_start()
{
m_nvram.allocate(0x20000);
}
@@ -48,7 +48,7 @@ void portfolio_ram_card_t::device_start()
// nrdi_r - read
//-------------------------------------------------
-uint8_t portfolio_ram_card_t::nrdi_r(address_space &space, offs_t offset)
+uint8_t portfolio_ram_card_device::nrdi_r(address_space &space, offs_t offset)
{
return m_nvram[offset];
}
@@ -58,7 +58,7 @@ uint8_t portfolio_ram_card_t::nrdi_r(address_space &space, offs_t offset)
// nwri_w - write
//-------------------------------------------------
-void portfolio_ram_card_t::nwri_w(address_space &space, offs_t offset, uint8_t data)
+void portfolio_ram_card_device::nwri_w(address_space &space, offs_t offset, uint8_t data)
{
m_nvram[offset] = data;
}
diff --git a/src/devices/bus/pofo/ram.h b/src/devices/bus/pofo/ram.h
index 25ee7f837f9..9d126b51a2c 100644
--- a/src/devices/bus/pofo/ram.h
+++ b/src/devices/bus/pofo/ram.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_POFO_RAM_H
+#define MAME_BUS_POFO_RAM_H
-#ifndef __PORTFOLIO_RAM_CARD__
-#define __PORTFOLIO_RAM_CARD__
+#pragma once
#include "ccm.h"
#include "machine/nvram.h"
@@ -20,15 +20,15 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> portfolio_ram_card_t
+// ======================> portfolio_ram_card_device
-class portfolio_ram_card_t : public device_t,
+class portfolio_ram_card_device : public device_t,
public device_portfolio_memory_card_slot_interface,
public device_nvram_interface
{
public:
// construction/destruction
- portfolio_ram_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ portfolio_ram_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
// device-level overrides
@@ -48,8 +48,6 @@ protected:
// device type definition
-extern const device_type PORTFOLIO_RAM_CARD;
-
-
+DECLARE_DEVICE_TYPE(PORTFOLIO_RAM_CARD, portfolio_ram_card_device)
-#endif
+#endif // MAME_BUS_POFO_RAM_H
diff --git a/src/devices/bus/pofo/rom.cpp b/src/devices/bus/pofo/rom.cpp
index b3862b15753..8155444783a 100644
--- a/src/devices/bus/pofo/rom.cpp
+++ b/src/devices/bus/pofo/rom.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PORTFOLIO_ROM_CARD = device_creator<portfolio_rom_card_t>;
+DEFINE_DEVICE_TYPE(PORTFOLIO_ROM_CARD, portfolio_rom_card_device, "portfolio_rom_card", "Atari Portfolio ROM card")
//**************************************************************************
@@ -23,11 +23,11 @@ const device_type PORTFOLIO_ROM_CARD = device_creator<portfolio_rom_card_t>;
//**************************************************************************
//-------------------------------------------------
-// portfolio_rom_card_t - constructor
+// portfolio_rom_card_device - constructor
//-------------------------------------------------
-portfolio_rom_card_t::portfolio_rom_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PORTFOLIO_ROM_CARD, "Atari Portfolio ROM card", tag, owner, clock, "portfolio_rom_card", __FILE__),
+portfolio_rom_card_device::portfolio_rom_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PORTFOLIO_ROM_CARD, tag, owner, clock),
device_portfolio_memory_card_slot_interface(mconfig, *this)
{
}
@@ -37,7 +37,7 @@ portfolio_rom_card_t::portfolio_rom_card_t(const machine_config &mconfig, const
// device_start - device-specific startup
//-------------------------------------------------
-void portfolio_rom_card_t::device_start()
+void portfolio_rom_card_device::device_start()
{
}
@@ -46,7 +46,7 @@ void portfolio_rom_card_t::device_start()
// nrdi_r - read
//-------------------------------------------------
-uint8_t portfolio_rom_card_t::nrdi_r(address_space &space, offs_t offset)
+uint8_t portfolio_rom_card_device::nrdi_r(address_space &space, offs_t offset)
{
return m_rom[offset];
}
diff --git a/src/devices/bus/pofo/rom.h b/src/devices/bus/pofo/rom.h
index f8b7841f0cd..eab0ff1fde4 100644
--- a/src/devices/bus/pofo/rom.h
+++ b/src/devices/bus/pofo/rom.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_POFO_ROM_H
+#define MAME_BUS_POFO_ROM_H
-#ifndef __PORTFOLIO_ROM_CARD__
-#define __PORTFOLIO_ROM_CARD__
+#pragma once
#include "ccm.h"
@@ -19,14 +19,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> portfolio_rom_card_t
+// ======================> portfolio_rom_card_device
-class portfolio_rom_card_t : public device_t,
+class portfolio_rom_card_device : public device_t,
public device_portfolio_memory_card_slot_interface
{
public:
// construction/destruction
- portfolio_rom_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ portfolio_rom_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
// device-level overrides
@@ -40,8 +40,6 @@ protected:
// device type definition
-extern const device_type PORTFOLIO_ROM_CARD;
-
-
+DECLARE_DEVICE_TYPE(PORTFOLIO_ROM_CARD, portfolio_rom_card_device)
-#endif
+#endif // MAME_BUS_POFO_ROM_H
diff --git a/src/devices/bus/psx/analogue.cpp b/src/devices/bus/psx/analogue.cpp
index cea69c2f930..aa181ddf9dc 100644
--- a/src/devices/bus/psx/analogue.cpp
+++ b/src/devices/bus/psx/analogue.cpp
@@ -3,37 +3,35 @@
#include "emu.h"
#include "analogue.h"
-const device_type PSX_ANALOG_JOYSTICK = device_creator<psx_analog_joystick_device>;
-const device_type PSX_DUALSHOCK = device_creator<psx_dualshock_device>;
+DEFINE_DEVICE_TYPE(PSX_DUALSHOCK, psx_dualshock_device, "psx_dualshock_pad", "Playstation Dualshock Pad")
+DEFINE_DEVICE_TYPE(PSX_ANALOG_JOYSTICK, psx_analog_joystick_device, "psx_analog_joystick", "Playstation Analog Joystick")
-psx_analog_controller_device::psx_analog_controller_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_psx_controller_interface(mconfig, *this),
- m_type(),
- m_confmode(false),
- m_analogmode(false),
- m_analoglock(false),
- m_temp(0),
- m_cmd(0),
- m_pad0(*this, "PSXPAD0"),
- m_pad1(*this, "PSXPAD1"),
- m_rstickx(*this, "PSXRSTICKX"),
- m_rsticky(*this, "PSXRSTICKY"),
- m_lstickx(*this, "PSXLSTICKX"),
- m_lsticky(*this, "PSXLSTICKY")
+psx_analog_controller_device::psx_analog_controller_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, model mod) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_psx_controller_interface(mconfig, *this),
+ m_model(mod),
+ m_confmode(false),
+ m_analogmode(false),
+ m_analoglock(false),
+ m_temp(0),
+ m_cmd(0),
+ m_pad0(*this, "PSXPAD0"),
+ m_pad1(*this, "PSXPAD1"),
+ m_rstickx(*this, "PSXRSTICKX"),
+ m_rsticky(*this, "PSXRSTICKY"),
+ m_lstickx(*this, "PSXLSTICKX"),
+ m_lsticky(*this, "PSXLSTICKY")
{
}
psx_dualshock_device::psx_dualshock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- psx_analog_controller_device(mconfig, PSX_DUALSHOCK, "Playstation Dualshock Pad", tag, owner, clock, "psx_dualshock_pad", __FILE__)
+ psx_analog_controller_device(mconfig, PSX_DUALSHOCK, tag, owner, clock, model::DUALSHOCK)
{
- m_type = DUALSHOCK;
}
psx_analog_joystick_device::psx_analog_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- psx_analog_controller_device(mconfig, PSX_ANALOG_JOYSTICK, "Playstation Analog Joystick", tag, owner, clock, "psx_analog_joystick", __FILE__)
+ psx_analog_controller_device(mconfig, PSX_ANALOG_JOYSTICK, tag, owner, clock, model::JOYSTICK)
{
- m_type = JOYSTICK;
}
void psx_analog_controller_device::device_reset()
@@ -52,7 +50,7 @@ uint8_t psx_analog_controller_device::pad_data(int count, bool analog)
{
case 2:
data = m_pad0->read();
- if(!analog || (m_type == JOYSTICK))
+ if (!analog || (m_model == model::JOYSTICK))
data |= 6; // l3/r3
break;
case 3:
@@ -169,7 +167,7 @@ bool psx_analog_controller_device::get_pad(int count, uint8_t *odata, uint8_t id
switch(count)
{
case 0:
- if(m_type == JOYSTICK)
+ if(m_model == model::JOYSTICK)
*odata = 0x53;
else
*odata = 0x73;
diff --git a/src/devices/bus/psx/analogue.h b/src/devices/bus/psx/analogue.h
index 4a52a0cb80e..7809f12ecd0 100644
--- a/src/devices/bus/psx/analogue.h
+++ b/src/devices/bus/psx/analogue.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef PSXANALOG_H_
-#define PSXANALOG_H_
+#ifndef MAME_BUS_PSX_ANALOGUE_H
+#define MAME_BUS_PSX_ANALOGUE_H
+
+#pragma once
#include "ctlrport.h"
@@ -12,21 +14,22 @@ class psx_analog_controller_device : public device_t,
public device_psx_controller_interface
{
public:
- psx_analog_controller_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
virtual ioport_constructor device_input_ports() const override;
DECLARE_INPUT_CHANGED_MEMBER(change_mode);
protected:
+ enum class model { JOYSTICK, DUALSHOCK };
+
+ psx_analog_controller_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, model mod);
+
+ virtual void device_start() override { }
virtual void device_reset() override;
- virtual void device_start() override {}
- enum {
- JOYSTICK,
- DUALSHOCK
- } m_type;
+
private:
virtual bool get_pad(int count, uint8_t *odata, uint8_t idata) override;
uint8_t pad_data(int count, bool analog);
+ const model m_model;
+
bool m_confmode;
bool m_analogmode;
bool m_analoglock;
@@ -54,4 +57,4 @@ public:
psx_analog_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-#endif /* PSXANALOG_H_ */
+#endif // MAME_BUS_PSX_ANALOGUE_H
diff --git a/src/devices/bus/psx/ctlrport.cpp b/src/devices/bus/psx/ctlrport.cpp
index 5ca35dc27ec..b125617cc41 100644
--- a/src/devices/bus/psx/ctlrport.cpp
+++ b/src/devices/bus/psx/ctlrport.cpp
@@ -7,14 +7,16 @@
#include "analogue.h"
#include "multitap.h"
-const device_type PSX_CONTROLLER_PORT = device_creator<psx_controller_port_device>;
+DEFINE_DEVICE_TYPE(PSX_CONTROLLER_PORT, psx_controller_port_device, "psx_controller_port", "Playstation Controller Port")
+DEFINE_DEVICE_TYPE(PSXCONTROLLERPORTS, psxcontrollerports_device, "psxcontrollerports", "Playstation Controller Bus")
+DEFINE_DEVICE_TYPE(PSX_STANDARD_CONTROLLER, psx_standard_controller_device, "psx_standard_controller", "Playstation Standard Controller")
psx_controller_port_device::psx_controller_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PSX_CONTROLLER_PORT, "Playstation Controller Port", tag, owner, clock, "psx_controller_port", __FILE__),
- device_slot_interface(mconfig, *this),
- m_tx(false),
- m_dev(nullptr),
- m_card(*this, "card")
+ device_t(mconfig, PSX_CONTROLLER_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_tx(false),
+ m_dev(nullptr),
+ m_card(*this, "card")
{
}
@@ -40,10 +42,9 @@ void psx_controller_port_device::disable_card(bool state)
m_card->disable(state);
}
-const device_type PSXCONTROLLERPORTS = device_creator<psxcontrollerports_device>;
-
-psxcontrollerports_device::psxcontrollerports_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PSXCONTROLLERPORTS, "PSXCONTROLLERPORTS", tag, owner, clock, "psxcontrollerports", __FILE__), m_port0(nullptr), m_port1(nullptr),
+psxcontrollerports_device::psxcontrollerports_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PSXCONTROLLERPORTS, tag, owner, clock),
+ m_port0(nullptr), m_port1(nullptr),
m_dsr_handler(*this),
m_rxd_handler(*this)
{
@@ -100,8 +101,8 @@ void psxcontrollerports_device::ack()
}
device_psx_controller_interface::device_psx_controller_interface(const machine_config &mconfig, device_t &device) :
- device_slot_card_interface(mconfig, device), m_odata(0), m_idata(0), m_bit(0), m_count(0), m_memcard(false), m_clock(false), m_sel(false),
- m_ack(true), m_rx(false), m_ack_timer(nullptr), m_owner(nullptr)
+ device_slot_card_interface(mconfig, device), m_odata(0), m_idata(0), m_bit(0), m_count(0), m_memcard(false), m_clock(false), m_sel(false),
+ m_ack(true), m_rx(false), m_ack_timer(nullptr), m_owner(nullptr)
{
}
@@ -172,13 +173,11 @@ void device_psx_controller_interface::sel_w(bool state) {
m_sel = state;
}
-const device_type PSX_STANDARD_CONTROLLER = device_creator<psx_standard_controller_device>;
-
psx_standard_controller_device::psx_standard_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PSX_STANDARD_CONTROLLER, "Playstation Standard Controller", tag, owner, clock, "psx_standard_controller", __FILE__),
- device_psx_controller_interface(mconfig, *this),
- m_pad0(*this,"PSXPAD0"),
- m_pad1(*this,"PSXPAD1")
+ device_t(mconfig, PSX_STANDARD_CONTROLLER, tag, owner, clock),
+ device_psx_controller_interface(mconfig, *this),
+ m_pad0(*this, "PSXPAD0"),
+ m_pad1(*this, "PSXPAD1")
{
}
diff --git a/src/devices/bus/psx/ctlrport.h b/src/devices/bus/psx/ctlrport.h
index 24a72de1439..04afc2e2e85 100644
--- a/src/devices/bus/psx/ctlrport.h
+++ b/src/devices/bus/psx/ctlrport.h
@@ -1,9 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Carl
+#ifndef MAME_BUS_PSX_CTLRPORT_H
+#define MAME_BUS_PSX_CTLRPORT_H
+
#pragma once
-#ifndef __PSXCPORT_H__
-#define __PSXCPORT_H__
#include "memcard.h"
@@ -13,9 +14,9 @@
SLOT_INTERFACE_EXTERN(psx_controllers);
-extern const device_type PSXCONTROLLERPORTS;
-extern const device_type PSX_CONTROLLER_PORT;
-extern const device_type PSX_STANDARD_CONTROLLER;
+DECLARE_DEVICE_TYPE(PSXCONTROLLERPORTS, psxcontrollerports_device)
+DECLARE_DEVICE_TYPE(PSX_CONTROLLER_PORT, psx_controller_port_device)
+DECLARE_DEVICE_TYPE(PSX_STANDARD_CONTROLLER, psx_standard_controller_device)
class psx_controller_port_device;
@@ -23,7 +24,6 @@ class device_psx_controller_interface : public device_slot_card_interface
{
friend class psx_multitap_device;
public:
- device_psx_controller_interface(const machine_config &mconfig, device_t &device);
virtual ~device_psx_controller_interface();
void clock_w(bool state) { if(!m_clock && !m_sel && state && !m_memcard) do_pad(); m_clock = state; }
@@ -33,6 +33,8 @@ public:
bool ack_r() { return m_ack; }
protected:
+ device_psx_controller_interface(const machine_config &mconfig, device_t &device);
+
virtual void interface_pre_reset() override;
virtual void interface_pre_start() override;
@@ -89,10 +91,11 @@ class psxcontrollerports_device : public device_t
{
public:
psxcontrollerports_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
void ack();
- template<class _Object> static devcb_base &set_dsr_handler(device_t &device, _Object object) { return downcast<psxcontrollerports_device &>(device).m_dsr_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rxd_handler(device_t &device, _Object object) { return downcast<psxcontrollerports_device &>(device).m_rxd_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_dsr_handler(device_t &device, Object &&cb) { return downcast<psxcontrollerports_device &>(device).m_dsr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<psxcontrollerports_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(write_sck);
DECLARE_WRITE_LINE_MEMBER(write_dtr);
@@ -142,4 +145,5 @@ private:
device_psx_controller_interface *m_dev;
required_device<psxcard_device> m_card;
};
-#endif
+
+#endif // MAME_BUS_PSX_CTLRPORT_H
diff --git a/src/devices/bus/psx/memcard.cpp b/src/devices/bus/psx/memcard.cpp
index d7ba400e98a..7f53c69dcfa 100644
--- a/src/devices/bus/psx/memcard.cpp
+++ b/src/devices/bus/psx/memcard.cpp
@@ -21,10 +21,10 @@
//
//
-static const int block_size = 128;
-static const int card_size = block_size * 1024;
+static constexpr int block_size = 128;
+static constexpr int card_size = block_size * 1024;
-const device_type PSXCARD = device_creator<psxcard_device>;
+DEFINE_DEVICE_TYPE(PSXCARD, psxcard_device, "psxcard", "Sony PSX Memory Card")
enum transfer_states
{
@@ -42,7 +42,7 @@ enum transfer_states
};
psxcard_device::psxcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PSXCARD, "Sony PSX Memory Card", tag, owner, clock, "psxcard", __FILE__),
+ : device_t(mconfig, PSXCARD, tag, owner, clock),
device_image_interface(mconfig, *this),
pkt_ptr(0),
pkt_sz(0),
diff --git a/src/devices/bus/psx/memcard.h b/src/devices/bus/psx/memcard.h
index e8abc232f5b..51ac4f044ba 100644
--- a/src/devices/bus/psx/memcard.h
+++ b/src/devices/bus/psx/memcard.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl,psxAuthor,R. Belmont
-#pragma once
+#ifndef MAME_BUS_PSX_MEMCARD_H
+#define MAME_BUS_PSX_MEMCARD_H
-#ifndef _PSXCARD_
-#define _PSXCARD_
+#pragma once
class psx_controller_port_device;
@@ -31,7 +31,23 @@ public:
void disable(bool state) { m_disabled = state; if(state) unload(); }
+ void clock_w(bool state) { if(!m_clock && !m_sel && state && !m_pad) do_card(); m_clock = state; }
+ void sel_w(bool state);
+ bool rx_r() { return m_rx; }
+ bool ack_r() { return m_ack; }
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
+ void read_card(const unsigned short addr, unsigned char *buf);
+ void write_card(const unsigned short addr, unsigned char *buf);
+ unsigned char checksum_data(const unsigned char *buf, const unsigned int sz);
+ void do_card();
+ bool transfer(uint8_t to, uint8_t *from);
+ void ack_timer(void *ptr, int param);
+
unsigned char pkt[0x8b], pkt_ptr, pkt_sz, cmd;
unsigned short addr;
int state;
@@ -50,25 +66,9 @@ private:
emu_timer *m_ack_timer;
psx_controller_port_device *m_owner;
-
- void read_card(const unsigned short addr, unsigned char *buf);
- void write_card(const unsigned short addr, unsigned char *buf);
- unsigned char checksum_data(const unsigned char *buf, const unsigned int sz);
- void do_card();
- bool transfer(uint8_t to, uint8_t *from);
- void ack_timer(void *ptr, int param);
-
-public:
- virtual void device_start() override;
- virtual void device_reset() override;
-
- void clock_w(bool state) { if(!m_clock && !m_sel && state && !m_pad) do_card(); m_clock = state; }
- void sel_w(bool state);
- bool rx_r() { return m_rx; }
- bool ack_r() { return m_ack; }
};
// device type definition
-extern const device_type PSXCARD;
+DECLARE_DEVICE_TYPE(PSXCARD, psxcard_device)
-#endif
+#endif // MAME_BUS_PSX_MEMCARD_H
diff --git a/src/devices/bus/psx/multitap.cpp b/src/devices/bus/psx/multitap.cpp
index 2c70a6dc9e0..fbe47e8cf4f 100644
--- a/src/devices/bus/psx/multitap.cpp
+++ b/src/devices/bus/psx/multitap.cpp
@@ -5,10 +5,10 @@
#include "emu.h"
#include "multitap.h"
-const device_type PSX_MULTITAP = device_creator<psx_multitap_device>;
+DEFINE_DEVICE_TYPE(PSX_MULTITAP, psx_multitap_device, "psx_multitap", "Playstation Multitap")
psx_multitap_device::psx_multitap_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) :
- device_t(mconfig, PSX_MULTITAP, "Playstation Multitap", tag, owner, clock, "psx_multitap", __FILE__),
+ device_t(mconfig, PSX_MULTITAP, tag, owner, clock),
device_psx_controller_interface(mconfig, *this),
m_activeport(0),
m_singlemode(false),
diff --git a/src/devices/bus/psx/multitap.h b/src/devices/bus/psx/multitap.h
index c826edef8c3..9c03d803181 100644
--- a/src/devices/bus/psx/multitap.h
+++ b/src/devices/bus/psx/multitap.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef PSXMULTITAP_H_
-#define PSXMULTITAP_H_
+#ifndef MAME_BUS_PSX_MULTITAP_H
+#define MAME_BUS_PSX_MULTITAP_H
#include "ctlrport.h"
@@ -18,7 +18,6 @@ protected:
virtual void device_start() override;
virtual void device_stop() override { device_psx_controller_interface::m_owner->disable_card(false); }
virtual void device_reset() override { device_psx_controller_interface::m_owner->disable_card(true); }
- virtual void device_config_complete() override { m_shortname = "psx_multitap"; }
virtual void interface_pre_reset() override;
private:
@@ -40,4 +39,4 @@ private:
extern const device_type PSX_MULTITAP;
-#endif /* PSXMULTITAP_H_ */
+#endif // MAME_BUS_PSX_MULTITAP_H
diff --git a/src/devices/bus/ql/cst_q_plus4.cpp b/src/devices/bus/ql/cst_q_plus4.cpp
index 30f3b15c8ac..b3b892e6c05 100644
--- a/src/devices/bus/ql/cst_q_plus4.cpp
+++ b/src/devices/bus/ql/cst_q_plus4.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CST_Q_PLUS4 = device_creator<cst_q_plus4_t>;
+DEFINE_DEVICE_TYPE(CST_Q_PLUS4, cst_q_plus4_device, "ql_qplus4", "CST Q+4")
//-------------------------------------------------
@@ -40,7 +40,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *cst_q_plus4_t::device_rom_region() const
+const tiny_rom_entry *cst_q_plus4_device::device_rom_region() const
{
return ROM_NAME( cst_q_plus4 );
}
@@ -54,16 +54,16 @@ static MACHINE_CONFIG_FRAGMENT( cst_q_plus4 )
MCFG_DEVICE_ADD(MC6821_TAG, PIA6821, 0)
MCFG_QL_EXPANSION_SLOT_ADD("exp1", ql_expansion_cards, nullptr)
- MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(WRITELINE(cst_q_plus4_t, exp1_extintl_w))
+ MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(WRITELINE(cst_q_plus4_device, exp1_extintl_w))
MCFG_QL_EXPANSION_SLOT_ADD("exp2", ql_expansion_cards, nullptr)
- MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(WRITELINE(cst_q_plus4_t, exp2_extintl_w))
+ MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(WRITELINE(cst_q_plus4_device, exp2_extintl_w))
MCFG_QL_EXPANSION_SLOT_ADD("exp3", ql_expansion_cards, nullptr)
- MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(WRITELINE(cst_q_plus4_t, exp3_extintl_w))
+ MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(WRITELINE(cst_q_plus4_device, exp3_extintl_w))
MCFG_QL_EXPANSION_SLOT_ADD("exp4", ql_expansion_cards, nullptr)
- MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(WRITELINE(cst_q_plus4_t, exp4_extintl_w))
+ MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(WRITELINE(cst_q_plus4_device, exp4_extintl_w))
MACHINE_CONFIG_END
@@ -72,7 +72,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor cst_q_plus4_t::device_mconfig_additions() const
+machine_config_constructor cst_q_plus4_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cst_q_plus4 );
}
@@ -84,11 +84,11 @@ machine_config_constructor cst_q_plus4_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// cst_q_plus4_t - constructor
+// cst_q_plus4_device - constructor
//-------------------------------------------------
-cst_q_plus4_t::cst_q_plus4_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CST_Q_PLUS4, "CST Q+4", tag, owner, clock, "ql_qplus4", __FILE__),
+cst_q_plus4_device::cst_q_plus4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, CST_Q_PLUS4, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this),
m_exp1(*this, "exp1"),
m_exp2(*this, "exp2"),
@@ -107,7 +107,7 @@ cst_q_plus4_t::cst_q_plus4_t(const machine_config &mconfig, const char *tag, dev
// device_start - device-specific startup
//-------------------------------------------------
-void cst_q_plus4_t::device_start()
+void cst_q_plus4_device::device_start()
{
}
@@ -116,7 +116,7 @@ void cst_q_plus4_t::device_start()
// read -
//-------------------------------------------------
-uint8_t cst_q_plus4_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t cst_q_plus4_device::read(address_space &space, offs_t offset, uint8_t data)
{
if (offset >= 0xc000 && offset < 0xc200)
{
@@ -136,7 +136,7 @@ uint8_t cst_q_plus4_t::read(address_space &space, offs_t offset, uint8_t data)
// write -
//-------------------------------------------------
-void cst_q_plus4_t::write(address_space &space, offs_t offset, uint8_t data)
+void cst_q_plus4_device::write(address_space &space, offs_t offset, uint8_t data)
{
m_exp1->write(space, offset, data);
m_exp2->write(space, offset, data);
diff --git a/src/devices/bus/ql/cst_q_plus4.h b/src/devices/bus/ql/cst_q_plus4.h
index 8ac923d3856..a9e5261bce7 100644
--- a/src/devices/bus/ql/cst_q_plus4.h
+++ b/src/devices/bus/ql/cst_q_plus4.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_CST_Q_PLUS4_H
+#define MAME_BUS_QL_CST_Q_PLUS4_H
-#ifndef __CST_Q_PLUS4__
-#define __CST_Q_PLUS4__
+#pragma once
#include "exp.h"
#include "machine/6821pia.h"
@@ -20,14 +20,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> cst_q_plus4_t
+// ======================> cst_q_plus4_device
-class cst_q_plus4_t : public device_t,
- public device_ql_expansion_card_interface
+class cst_q_plus4_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- cst_q_plus4_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ cst_q_plus4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -49,10 +48,10 @@ protected:
private:
void update_extintl() { m_slot->extintl_w(m_exp1_extinl || m_exp2_extinl || m_exp3_extinl || m_exp4_extinl); }
- required_device<ql_expansion_slot_t> m_exp1;
- required_device<ql_expansion_slot_t> m_exp2;
- required_device<ql_expansion_slot_t> m_exp3;
- required_device<ql_expansion_slot_t> m_exp4;
+ required_device<ql_expansion_slot_device> m_exp1;
+ required_device<ql_expansion_slot_device> m_exp2;
+ required_device<ql_expansion_slot_device> m_exp3;
+ required_device<ql_expansion_slot_device> m_exp4;
required_memory_region m_rom;
int m_exp1_extinl;
@@ -62,10 +61,7 @@ private:
};
-
// device type definition
-extern const device_type CST_Q_PLUS4;
-
-
+DECLARE_DEVICE_TYPE(CST_Q_PLUS4, cst_q_plus4_device)
-#endif
+#endif // MAME_BUS_QL_CST_Q_PLUS4_H
diff --git a/src/devices/bus/ql/cst_qdisc.cpp b/src/devices/bus/ql/cst_qdisc.cpp
index db18cd6241b..8cca3bdb838 100644
--- a/src/devices/bus/ql/cst_qdisc.cpp
+++ b/src/devices/bus/ql/cst_qdisc.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CST_QL_DISC_INTERFACE = device_creator<cst_ql_disc_interface_t>;
+DEFINE_DEVICE_TYPE(CST_QL_DISC_INTERFACE, cst_ql_disc_interface_device, "ql_qldisc", "CST QL Disc Interface")
//-------------------------------------------------
@@ -36,7 +36,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *cst_ql_disc_interface_t::device_rom_region() const
+const tiny_rom_entry *cst_ql_disc_interface_device::device_rom_region() const
{
return ROM_NAME( cst_ql_disc_interface );
}
@@ -48,11 +48,11 @@ const tiny_rom_entry *cst_ql_disc_interface_t::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// cst_ql_disc_interface_t - constructor
+// cst_ql_disc_interface_device - constructor
//-------------------------------------------------
-cst_ql_disc_interface_t::cst_ql_disc_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CST_QL_DISC_INTERFACE, "CST QL Disc Interface", tag, owner, clock, "ql_qdisc", __FILE__),
+cst_ql_disc_interface_device::cst_ql_disc_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, CST_QL_DISC_INTERFACE, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this)
{
}
@@ -62,7 +62,7 @@ cst_ql_disc_interface_t::cst_ql_disc_interface_t(const machine_config &mconfig,
// device_start - device-specific startup
//-------------------------------------------------
-void cst_ql_disc_interface_t::device_start()
+void cst_ql_disc_interface_device::device_start()
{
}
@@ -71,7 +71,7 @@ void cst_ql_disc_interface_t::device_start()
// read -
//-------------------------------------------------
-uint8_t cst_ql_disc_interface_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t cst_ql_disc_interface_device::read(address_space &space, offs_t offset, uint8_t data)
{
return data;
}
@@ -81,6 +81,6 @@ uint8_t cst_ql_disc_interface_t::read(address_space &space, offs_t offset, uint8
// write -
//-------------------------------------------------
-void cst_ql_disc_interface_t::write(address_space &space, offs_t offset, uint8_t data)
+void cst_ql_disc_interface_device::write(address_space &space, offs_t offset, uint8_t data)
{
}
diff --git a/src/devices/bus/ql/cst_qdisc.h b/src/devices/bus/ql/cst_qdisc.h
index fc156e4a6b9..e4c4dc6343d 100644
--- a/src/devices/bus/ql/cst_qdisc.h
+++ b/src/devices/bus/ql/cst_qdisc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_CST_QDISC_H
+#define MAME_BUS_QL_CST_QDISC_H
-#ifndef __CST_QL_DISC_INTERFACE__
-#define __CST_QL_DISC_INTERFACE__
+#pragma once
#include "exp.h"
@@ -19,14 +19,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> cst_ql_disc_interface_t
+// ======================> cst_ql_disc_interface_device
-class cst_ql_disc_interface_t : public device_t,
+class cst_ql_disc_interface_device : public device_t,
public device_ql_expansion_card_interface
{
public:
// construction/destruction
- cst_ql_disc_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ cst_ql_disc_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -44,7 +44,6 @@ protected:
// device type definition
extern const device_type CST_QL_DISC_INTERFACE;
+DECLARE_DEVICE_TYPE(CST_QL_DISC_INTERFACE, cst_ql_disc_interface_device)
-
-
-#endif
+#endif // MAME_BUS_QL_CST_QDISC_H
diff --git a/src/devices/bus/ql/cumana_fdi.cpp b/src/devices/bus/ql/cumana_fdi.cpp
index f43844223da..21f07fa75ee 100644
--- a/src/devices/bus/ql/cumana_fdi.cpp
+++ b/src/devices/bus/ql/cumana_fdi.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CUMANA_FLOPPY_DISK_INTERFACE = device_creator<cumana_floppy_disk_interface_t>;
+DEFINE_DEVICE_TYPE(CUMANA_FLOPPY_DISK_INTERFACE, cumana_floppy_disk_interface_device, "ql_cumanafdi", "Cumana Floppy Disk Interface")
//-------------------------------------------------
@@ -36,7 +36,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *cumana_floppy_disk_interface_t::device_rom_region() const
+const tiny_rom_entry *cumana_floppy_disk_interface_device::device_rom_region() const
{
return ROM_NAME( cumana_floppy_disk_interface );
}
@@ -48,11 +48,11 @@ const tiny_rom_entry *cumana_floppy_disk_interface_t::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// cumana_floppy_disk_interface_t - constructor
+// cumana_floppy_disk_interface_device - constructor
//-------------------------------------------------
-cumana_floppy_disk_interface_t::cumana_floppy_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CUMANA_FLOPPY_DISK_INTERFACE, "Cumana Floppy Disk Interface", tag, owner, clock, "ql_cumanafdi", __FILE__),
+cumana_floppy_disk_interface_device::cumana_floppy_disk_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, CUMANA_FLOPPY_DISK_INTERFACE, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this)
{
}
@@ -62,7 +62,7 @@ cumana_floppy_disk_interface_t::cumana_floppy_disk_interface_t(const machine_con
// device_start - device-specific startup
//-------------------------------------------------
-void cumana_floppy_disk_interface_t::device_start()
+void cumana_floppy_disk_interface_device::device_start()
{
}
@@ -71,7 +71,7 @@ void cumana_floppy_disk_interface_t::device_start()
// read -
//-------------------------------------------------
-uint8_t cumana_floppy_disk_interface_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t cumana_floppy_disk_interface_device::read(address_space &space, offs_t offset, uint8_t data)
{
return data;
}
@@ -81,6 +81,6 @@ uint8_t cumana_floppy_disk_interface_t::read(address_space &space, offs_t offset
// write -
//-------------------------------------------------
-void cumana_floppy_disk_interface_t::write(address_space &space, offs_t offset, uint8_t data)
+void cumana_floppy_disk_interface_device::write(address_space &space, offs_t offset, uint8_t data)
{
}
diff --git a/src/devices/bus/ql/cumana_fdi.h b/src/devices/bus/ql/cumana_fdi.h
index 2531735cb2c..a0da6952cab 100644
--- a/src/devices/bus/ql/cumana_fdi.h
+++ b/src/devices/bus/ql/cumana_fdi.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_CUMANA_FDI_H
+#define MAME_BUS_QL_CUMANA_FDI_H
-#ifndef __CUMANA_FLOPPY_DISK_INTERFACE__
-#define __CUMANA_FLOPPY_DISK_INTERFACE__
+#pragma once
#include "exp.h"
@@ -21,12 +21,11 @@
// ======================> cumana_floppy_disk_interface_t
-class cumana_floppy_disk_interface_t : public device_t,
- public device_ql_expansion_card_interface
+class cumana_floppy_disk_interface_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- cumana_floppy_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ cumana_floppy_disk_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -41,10 +40,7 @@ protected:
};
-
// device type definition
-extern const device_type CUMANA_FLOPPY_DISK_INTERFACE;
-
-
+DECLARE_DEVICE_TYPE(CUMANA_FLOPPY_DISK_INTERFACE, cumana_floppy_disk_interface_device)
-#endif
+#endif // MAME_BUS_QL_CUMANA_FDI_H
diff --git a/src/devices/bus/ql/exp.cpp b/src/devices/bus/ql/exp.cpp
index 2794b252b44..89c73d4a08a 100644
--- a/src/devices/bus/ql/exp.cpp
+++ b/src/devices/bus/ql/exp.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type QL_EXPANSION_SLOT = device_creator<ql_expansion_slot_t>;
+DEFINE_DEVICE_TYPE(QL_EXPANSION_SLOT, ql_expansion_slot_device, "ql_expansion_slot", "QL expansion port")
@@ -31,7 +31,7 @@ device_ql_expansion_card_interface::device_ql_expansion_card_interface(const mac
device_slot_card_interface(mconfig, device),
m_romoeh(0)
{
- m_slot = dynamic_cast<ql_expansion_slot_t *>(device.owner());
+ m_slot = dynamic_cast<ql_expansion_slot_device *>(device.owner());
}
@@ -41,11 +41,11 @@ device_ql_expansion_card_interface::device_ql_expansion_card_interface(const mac
//**************************************************************************
//-------------------------------------------------
-// ql_expansion_slot_t - constructor
+// ql_expansion_slot_device - constructor
//-------------------------------------------------
-ql_expansion_slot_t::ql_expansion_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, QL_EXPANSION_SLOT, "QL expansion port", tag, owner, clock, "ql_expansion_slot", __FILE__),
+ql_expansion_slot_device::ql_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, QL_EXPANSION_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_write_ipl0l(*this),
m_write_ipl1l(*this),
@@ -59,7 +59,7 @@ ql_expansion_slot_t::ql_expansion_slot_t(const machine_config &mconfig, const ch
// device_start - device-specific startup
//-------------------------------------------------
-void ql_expansion_slot_t::device_start()
+void ql_expansion_slot_device::device_start()
{
m_card = dynamic_cast<device_ql_expansion_card_interface *>(get_card_device());
diff --git a/src/devices/bus/ql/exp.h b/src/devices/bus/ql/exp.h
index 76b628df406..43c6c6e7edc 100644
--- a/src/devices/bus/ql/exp.h
+++ b/src/devices/bus/ql/exp.h
@@ -42,11 +42,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __QL_EXPANSION_SLOT__
-#define __QL_EXPANSION_SLOT__
+#ifndef MAME_BUS_QL_EXP_H
+#define MAME_BUS_QL_EXP_H
+#pragma once
@@ -60,16 +59,16 @@
#define MCFG_QL_EXPANSION_SLOT_IPL0L_CALLBACK(_write) \
- devcb = &ql_expansion_slot_t::set_ipl0l_wr_callback(*device, DEVCB_##_write);
+ devcb = &ql_expansion_slot_device::set_ipl0l_wr_callback(*device, DEVCB_##_write);
#define MCFG_QL_EXPANSION_SLOT_IPL1L_CALLBACK(_write) \
- devcb = &ql_expansion_slot_t::set_ipl1l_wr_callback(*device, DEVCB_##_write);
+ devcb = &ql_expansion_slot_device::set_ipl1l_wr_callback(*device, DEVCB_##_write);
#define MCFG_QL_EXPANSION_SLOT_BERRL_CALLBACK(_write) \
- devcb = &ql_expansion_slot_t::set_berrl_wr_callback(*device, DEVCB_##_write);
+ devcb = &ql_expansion_slot_device::set_berrl_wr_callback(*device, DEVCB_##_write);
#define MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(_write) \
- devcb = &ql_expansion_slot_t::set_extintl_wr_callback(*device, DEVCB_##_write);
+ devcb = &ql_expansion_slot_device::set_extintl_wr_callback(*device, DEVCB_##_write);
@@ -79,11 +78,11 @@
// ======================> device_ql_expansion_card_interface
-class ql_expansion_slot_t;
+class ql_expansion_slot_device;
class device_ql_expansion_card_interface : public device_slot_card_interface
{
- friend class ql_expansion_slot_t;
+ friend class ql_expansion_slot_device;
public:
// construction/destruction
@@ -94,25 +93,24 @@ public:
virtual void write(address_space &space, offs_t offset, uint8_t data) { }
protected:
- ql_expansion_slot_t *m_slot;
+ ql_expansion_slot_device *m_slot;
int m_romoeh;
};
-// ======================> ql_expansion_slot_t
+// ======================> ql_expansion_slot_device
-class ql_expansion_slot_t : public device_t,
- public device_slot_interface
+class ql_expansion_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
- ql_expansion_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ql_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_ipl0l_wr_callback(device_t &device, _Object object) { return downcast<ql_expansion_slot_t &>(device).m_write_ipl0l.set_callback(object); }
- template<class _Object> static devcb_base &set_ipl1l_wr_callback(device_t &device, _Object object) { return downcast<ql_expansion_slot_t &>(device).m_write_ipl1l.set_callback(object); }
- template<class _Object> static devcb_base &set_berrl_wr_callback(device_t &device, _Object object) { return downcast<ql_expansion_slot_t &>(device).m_write_berrl.set_callback(object); }
- template<class _Object> static devcb_base &set_extintl_wr_callback(device_t &device, _Object object) { return downcast<ql_expansion_slot_t &>(device).m_write_extintl.set_callback(object); }
+ template <class Object> static devcb_base &set_ipl0l_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_ipl0l.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ipl1l_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_ipl1l.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_berrl_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_berrl.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_extintl_wr_callback(device_t &device, Object &&cb) { return downcast<ql_expansion_slot_device &>(device).m_write_extintl.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t read(address_space &space, offs_t offset, uint8_t data) { if (m_card) data = m_card->read(space, offset, data); return data; }
@@ -140,11 +138,10 @@ protected:
// device type definition
-extern const device_type QL_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(QL_EXPANSION_SLOT, ql_expansion_slot_device)
SLOT_INTERFACE_EXTERN( ql_expansion_cards );
-
-#endif
+#endif // MAME_BUS_QL_EXP_H
diff --git a/src/devices/bus/ql/kempston_di.cpp b/src/devices/bus/ql/kempston_di.cpp
index 4430c07b3a2..171c5788f06 100644
--- a/src/devices/bus/ql/kempston_di.cpp
+++ b/src/devices/bus/ql/kempston_di.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type KEMPSTON_DISK_INTERFACE = device_creator<kempston_disk_interface_t>;
+DEFINE_DEVICE_TYPE(KEMPSTON_DISK_INTERFACE, kempston_disk_interface_device, "ql_kdi", "Kempston Disk Interface")
//-------------------------------------------------
@@ -34,7 +34,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *kempston_disk_interface_t::device_rom_region() const
+const tiny_rom_entry *kempston_disk_interface_device::device_rom_region() const
{
return ROM_NAME( kempston_disk_system );
}
@@ -46,11 +46,11 @@ const tiny_rom_entry *kempston_disk_interface_t::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// kempston_disk_interface_t - constructor
+// kempston_disk_interface_device - constructor
//-------------------------------------------------
-kempston_disk_interface_t::kempston_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, KEMPSTON_DISK_INTERFACE, "Kempston Disk Interface", tag, owner, clock, "ql_kdi", __FILE__),
+kempston_disk_interface_device::kempston_disk_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, KEMPSTON_DISK_INTERFACE, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this)
{
}
@@ -60,7 +60,7 @@ kempston_disk_interface_t::kempston_disk_interface_t(const machine_config &mconf
// device_start - device-specific startup
//-------------------------------------------------
-void kempston_disk_interface_t::device_start()
+void kempston_disk_interface_device::device_start()
{
}
@@ -69,7 +69,7 @@ void kempston_disk_interface_t::device_start()
// read -
//-------------------------------------------------
-uint8_t kempston_disk_interface_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t kempston_disk_interface_device::read(address_space &space, offs_t offset, uint8_t data)
{
return data;
}
@@ -79,6 +79,6 @@ uint8_t kempston_disk_interface_t::read(address_space &space, offs_t offset, uin
// write -
//-------------------------------------------------
-void kempston_disk_interface_t::write(address_space &space, offs_t offset, uint8_t data)
+void kempston_disk_interface_device::write(address_space &space, offs_t offset, uint8_t data)
{
}
diff --git a/src/devices/bus/ql/kempston_di.h b/src/devices/bus/ql/kempston_di.h
index 8a16bfdee0a..e37c3d7f6b7 100644
--- a/src/devices/bus/ql/kempston_di.h
+++ b/src/devices/bus/ql/kempston_di.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QQL_KEMPSTON_DI_H
+#define MAME_BUS_QQL_KEMPSTON_DI_H
-#ifndef __KEMPSTON_DISK_INTERFACE__
-#define __KEMPSTON_DISK_INTERFACE__
+#pragma once
#include "exp.h"
@@ -19,14 +19,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> kempston_disk_interface_t
+// ======================> kempston_disk_interface_device
-class kempston_disk_interface_t : public device_t,
- public device_ql_expansion_card_interface
+class kempston_disk_interface_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- kempston_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ kempston_disk_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -41,10 +40,8 @@ protected:
};
-
// device type definition
-extern const device_type KEMPSTON_DISK_INTERFACE;
-
+DECLARE_DEVICE_TYPE(KEMPSTON_DISK_INTERFACE, kempston_disk_interface_device)
-#endif
+#endif // MAME_BUS_QQL_KEMPSTON_DI_H
diff --git a/src/devices/bus/ql/miracle_gold_card.cpp b/src/devices/bus/ql/miracle_gold_card.cpp
index 167955ac4cf..626824a1eb0 100644
--- a/src/devices/bus/ql/miracle_gold_card.cpp
+++ b/src/devices/bus/ql/miracle_gold_card.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MIRACLE_GOLD_CARD = device_creator<miracle_gold_card_t>;
+DEFINE_DEVICE_TYPE(MIRACLE_GOLD_CARD, miracle_gold_card_device, "ql_gold", "Miracle Gold Card")
//-------------------------------------------------
@@ -36,7 +36,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *miracle_gold_card_t::device_rom_region() const
+const tiny_rom_entry *miracle_gold_card_device::device_rom_region() const
{
return ROM_NAME( miracle_gold_card );
}
@@ -48,11 +48,11 @@ const tiny_rom_entry *miracle_gold_card_t::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// miracle_gold_card_t - constructor
+// miracle_gold_card_device - constructor
//-------------------------------------------------
-miracle_gold_card_t::miracle_gold_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MIRACLE_GOLD_CARD, "Miracle Gold Card", tag, owner, clock, "ql_gold", __FILE__),
+miracle_gold_card_device::miracle_gold_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, MIRACLE_GOLD_CARD, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this)
{
}
@@ -62,7 +62,7 @@ miracle_gold_card_t::miracle_gold_card_t(const machine_config &mconfig, const ch
// device_start - device-specific startup
//-------------------------------------------------
-void miracle_gold_card_t::device_start()
+void miracle_gold_card_device::device_start()
{
}
@@ -71,7 +71,7 @@ void miracle_gold_card_t::device_start()
// read -
//-------------------------------------------------
-uint8_t miracle_gold_card_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t miracle_gold_card_device::read(address_space &space, offs_t offset, uint8_t data)
{
return data;
}
@@ -81,6 +81,6 @@ uint8_t miracle_gold_card_t::read(address_space &space, offs_t offset, uint8_t d
// write -
//-------------------------------------------------
-void miracle_gold_card_t::write(address_space &space, offs_t offset, uint8_t data)
+void miracle_gold_card_device::write(address_space &space, offs_t offset, uint8_t data)
{
}
diff --git a/src/devices/bus/ql/miracle_gold_card.h b/src/devices/bus/ql/miracle_gold_card.h
index 0d8404ca07b..feea55de78c 100644
--- a/src/devices/bus/ql/miracle_gold_card.h
+++ b/src/devices/bus/ql/miracle_gold_card.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_MIRACLE_GOLD_CARD_H
+#define MAME_BUS_QL_MIRACLE_GOLD_CARD_H
-#ifndef __MIRACLE_GOLD_CARD__
-#define __MIRACLE_GOLD_CARD__
+#pragma once
#include "exp.h"
@@ -19,14 +19,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> miracle_gold_card_t
+// ======================> miracle_gold_card_device
-class miracle_gold_card_t : public device_t,
- public device_ql_expansion_card_interface
+class miracle_gold_card_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- miracle_gold_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ miracle_gold_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -43,8 +42,6 @@ protected:
// device type definition
-extern const device_type MIRACLE_GOLD_CARD;
-
-
+DECLARE_DEVICE_TYPE(MIRACLE_GOLD_CARD, miracle_gold_card_device)
-#endif
+#endif // MAME_BUS_QL_MIRACLE_GOLD_CARD_H
diff --git a/src/devices/bus/ql/miracle_hd.cpp b/src/devices/bus/ql/miracle_hd.cpp
index 040c3c691cc..ab6381adc78 100644
--- a/src/devices/bus/ql/miracle_hd.cpp
+++ b/src/devices/bus/ql/miracle_hd.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MIRACLE_HARD_DISK = device_creator<miracle_hard_disk_t>;
+DEFINE_DEVICE_TYPE(MIRACLE_HARD_DISK, miracle_hard_disk_device, "ql_mhd", "Miracle Hard Disk")
//-------------------------------------------------
@@ -34,7 +34,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *miracle_hard_disk_t::device_rom_region() const
+const tiny_rom_entry *miracle_hard_disk_device::device_rom_region() const
{
return ROM_NAME( miracle_hard_disk );
}
@@ -46,11 +46,11 @@ const tiny_rom_entry *miracle_hard_disk_t::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// miracle_hard_disk_t - constructor
+// miracle_hard_disk_device - constructor
//-------------------------------------------------
-miracle_hard_disk_t::miracle_hard_disk_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MIRACLE_HARD_DISK, "Miracle Hard Disk", tag, owner, clock, "ql_mhd", __FILE__),
+miracle_hard_disk_device::miracle_hard_disk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, MIRACLE_HARD_DISK, tag, owner, clock),
device_ql_rom_cartridge_card_interface(mconfig, *this)
{
}
@@ -60,7 +60,7 @@ miracle_hard_disk_t::miracle_hard_disk_t(const machine_config &mconfig, const ch
// device_start - device-specific startup
//-------------------------------------------------
-void miracle_hard_disk_t::device_start()
+void miracle_hard_disk_device::device_start()
{
}
@@ -69,7 +69,7 @@ void miracle_hard_disk_t::device_start()
// read -
//-------------------------------------------------
-uint8_t miracle_hard_disk_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t miracle_hard_disk_device::read(address_space &space, offs_t offset, uint8_t data)
{
return data;
}
@@ -79,6 +79,6 @@ uint8_t miracle_hard_disk_t::read(address_space &space, offs_t offset, uint8_t d
// write -
//-------------------------------------------------
-void miracle_hard_disk_t::write(address_space &space, offs_t offset, uint8_t data)
+void miracle_hard_disk_device::write(address_space &space, offs_t offset, uint8_t data)
{
}
diff --git a/src/devices/bus/ql/miracle_hd.h b/src/devices/bus/ql/miracle_hd.h
index 10bbe9051a4..0bcd260bb87 100644
--- a/src/devices/bus/ql/miracle_hd.h
+++ b/src/devices/bus/ql/miracle_hd.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_MIRACLE_HD
+#define MAME_BUS_QL_MIRACLE_HD
-#ifndef __MIRACLE_HARD_DISK__
-#define __MIRACLE_HARD_DISK__
+#pragma once
#include "rom.h"
@@ -19,14 +19,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> miracle_hard_disk_t
+// ======================> miracle_hard_disk_device
-class miracle_hard_disk_t : public device_t,
+class miracle_hard_disk_device : public device_t,
public device_ql_rom_cartridge_card_interface
{
public:
// construction/destruction
- miracle_hard_disk_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ miracle_hard_disk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -41,10 +41,7 @@ protected:
};
-
// device type definition
-extern const device_type MIRACLE_HARD_DISK;
-
-
+DECLARE_DEVICE_TYPE(MIRACLE_HARD_DISK, miracle_hard_disk_device)
-#endif
+#endif // MAME_BUS_QL_MIRACLE_HD
diff --git a/src/devices/bus/ql/mp_fdi.cpp b/src/devices/bus/ql/mp_fdi.cpp
index 2aac9dd094c..dc35760c5f3 100644
--- a/src/devices/bus/ql/mp_fdi.cpp
+++ b/src/devices/bus/ql/mp_fdi.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MICRO_PERIPHERALS_FLOPPY_DISK_INTERFACE = device_creator<micro_peripherals_floppy_disk_interface_t>;
+DEFINE_DEVICE_TYPE(MICRO_PERIPHERALS_FLOPPY_DISK_INTERFACE, micro_peripherals_floppy_disk_interface_device, "ql_mpfdi", "Micro Peripherals Floppy Disk Interface")
//-------------------------------------------------
@@ -34,7 +34,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *micro_peripherals_floppy_disk_interface_t::device_rom_region() const
+const tiny_rom_entry *micro_peripherals_floppy_disk_interface_device::device_rom_region() const
{
return ROM_NAME( micro_peripherals_floppy_disk_interface );
}
@@ -46,11 +46,11 @@ const tiny_rom_entry *micro_peripherals_floppy_disk_interface_t::device_rom_regi
//**************************************************************************
//-------------------------------------------------
-// micro_peripherals_floppy_disk_interface_t - constructor
+// micro_peripherals_floppy_disk_interface_device - constructor
//-------------------------------------------------
-micro_peripherals_floppy_disk_interface_t::micro_peripherals_floppy_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MICRO_PERIPHERALS_FLOPPY_DISK_INTERFACE, "Micro Peripherals Floppy Disk Interface", tag, owner, clock, "ql_mpfdi", __FILE__),
+micro_peripherals_floppy_disk_interface_device::micro_peripherals_floppy_disk_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, MICRO_PERIPHERALS_FLOPPY_DISK_INTERFACE, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this)
{
}
@@ -60,7 +60,7 @@ micro_peripherals_floppy_disk_interface_t::micro_peripherals_floppy_disk_interfa
// device_start - device-specific startup
//-------------------------------------------------
-void micro_peripherals_floppy_disk_interface_t::device_start()
+void micro_peripherals_floppy_disk_interface_device::device_start()
{
}
@@ -69,7 +69,7 @@ void micro_peripherals_floppy_disk_interface_t::device_start()
// read -
//-------------------------------------------------
-uint8_t micro_peripherals_floppy_disk_interface_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t micro_peripherals_floppy_disk_interface_device::read(address_space &space, offs_t offset, uint8_t data)
{
return data;
}
@@ -79,6 +79,6 @@ uint8_t micro_peripherals_floppy_disk_interface_t::read(address_space &space, of
// write -
//-------------------------------------------------
-void micro_peripherals_floppy_disk_interface_t::write(address_space &space, offs_t offset, uint8_t data)
+void micro_peripherals_floppy_disk_interface_device::write(address_space &space, offs_t offset, uint8_t data)
{
}
diff --git a/src/devices/bus/ql/mp_fdi.h b/src/devices/bus/ql/mp_fdi.h
index 8ea642ea26d..9939e540ba7 100644
--- a/src/devices/bus/ql/mp_fdi.h
+++ b/src/devices/bus/ql/mp_fdi.h
@@ -6,27 +6,25 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_MP_FDI_H
+#define MAME_BUS_QL_MP_FDI_H
-#ifndef __MICRO_PERIPHERALS_FLOPPY_DISK_INTERFACE__
-#define __MICRO_PERIPHERALS_FLOPPY_DISK_INTERFACE__
+#pragma once
#include "exp.h"
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> micro_peripherals_floppy_disk_interface_t
+// ======================> micro_peripherals_floppy_disk_interface_device
-class micro_peripherals_floppy_disk_interface_t : public device_t,
- public device_ql_expansion_card_interface
+class micro_peripherals_floppy_disk_interface_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- micro_peripherals_floppy_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ micro_peripherals_floppy_disk_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -41,10 +39,7 @@ protected:
};
-
// device type definition
-extern const device_type MICRO_PERIPHERALS_FLOPPY_DISK_INTERFACE;
-
-
+DECLARE_DEVICE_TYPE(MICRO_PERIPHERALS_FLOPPY_DISK_INTERFACE, micro_peripherals_floppy_disk_interface_device)
-#endif
+#endif // MAME_BUS_QL_MP_FDI_H
diff --git a/src/devices/bus/ql/opd_basic_master.cpp b/src/devices/bus/ql/opd_basic_master.cpp
index 8cefd393ade..015fca91a37 100644
--- a/src/devices/bus/ql/opd_basic_master.cpp
+++ b/src/devices/bus/ql/opd_basic_master.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type OPD_BASIC_MASTER = device_creator<opd_basic_master_t>;
+DEFINE_DEVICE_TYPE(OPD_BASIC_MASTER, opd_basic_master_device, "ql_opdbm", "OPD Basic Master")
//-------------------------------------------------
@@ -32,7 +32,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *opd_basic_master_t::device_rom_region() const
+const tiny_rom_entry *opd_basic_master_device::device_rom_region() const
{
return ROM_NAME( opd_basic_master );
}
@@ -44,11 +44,11 @@ const tiny_rom_entry *opd_basic_master_t::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// opd_basic_master_t - constructor
+// opd_basic_master_device - constructor
//-------------------------------------------------
-opd_basic_master_t::opd_basic_master_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, OPD_BASIC_MASTER, "OPD Basic Master", tag, owner, clock, "ql_opdbm", __FILE__),
+opd_basic_master_device::opd_basic_master_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, OPD_BASIC_MASTER, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this)
{
}
@@ -58,7 +58,7 @@ opd_basic_master_t::opd_basic_master_t(const machine_config &mconfig, const char
// device_start - device-specific startup
//-------------------------------------------------
-void opd_basic_master_t::device_start()
+void opd_basic_master_device::device_start()
{
}
@@ -67,7 +67,7 @@ void opd_basic_master_t::device_start()
// read -
//-------------------------------------------------
-uint8_t opd_basic_master_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t opd_basic_master_device::read(address_space &space, offs_t offset, uint8_t data)
{
return data;
}
@@ -77,6 +77,6 @@ uint8_t opd_basic_master_t::read(address_space &space, offs_t offset, uint8_t da
// write -
//-------------------------------------------------
-void opd_basic_master_t::write(address_space &space, offs_t offset, uint8_t data)
+void opd_basic_master_device::write(address_space &space, offs_t offset, uint8_t data)
{
}
diff --git a/src/devices/bus/ql/opd_basic_master.h b/src/devices/bus/ql/opd_basic_master.h
index 3611cfa11f1..d22b50eff8c 100644
--- a/src/devices/bus/ql/opd_basic_master.h
+++ b/src/devices/bus/ql/opd_basic_master.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_OPD_BASIC_MASTER_H
+#define MAME_BUS_QL_OPD_BASIC_MASTER_H
-#ifndef __OPD_BASIC_MASTER__
-#define __OPD_BASIC_MASTER__
+#pragma once
#include "exp.h"
@@ -19,14 +19,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> opd_basic_master_t
+// ======================> opd_basic_master_device
-class opd_basic_master_t : public device_t,
- public device_ql_expansion_card_interface
+class opd_basic_master_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- opd_basic_master_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ opd_basic_master_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -41,10 +40,7 @@ protected:
};
-
// device type definition
-extern const device_type OPD_BASIC_MASTER;
-
-
+DECLARE_DEVICE_TYPE(OPD_BASIC_MASTER, opd_basic_master_device)
-#endif
+#endif // MAME_BUS_QL_OPD_BASIC_MASTER_H
diff --git a/src/devices/bus/ql/pcml_qdisk.cpp b/src/devices/bus/ql/pcml_qdisk.cpp
index 1307f024047..2159dafab9f 100644
--- a/src/devices/bus/ql/pcml_qdisk.cpp
+++ b/src/devices/bus/ql/pcml_qdisk.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PCML_Q_DISK_INTERFACE = device_creator<pcml_q_disk_interface_t>;
+DEFINE_DEVICE_TYPE(PCML_Q_DISK_INTERFACE, pcml_q_disk_interface_device, "ql_pcmlqdi", "PCML Q+ Disk Interface")
//-------------------------------------------------
@@ -34,7 +34,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *pcml_q_disk_interface_t::device_rom_region() const
+const tiny_rom_entry *pcml_q_disk_interface_device::device_rom_region() const
{
return ROM_NAME( pcml_q_disk_interface );
}
@@ -46,11 +46,11 @@ const tiny_rom_entry *pcml_q_disk_interface_t::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// pcml_q_disk_interface_t - constructor
+// pcml_q_disk_interface_device - constructor
//-------------------------------------------------
-pcml_q_disk_interface_t::pcml_q_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PCML_Q_DISK_INTERFACE, "PCML Q+ Disk Interface", tag, owner, clock, "ql_pcmlqdi", __FILE__),
+pcml_q_disk_interface_device::pcml_q_disk_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PCML_Q_DISK_INTERFACE, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this)
{
}
@@ -60,7 +60,7 @@ pcml_q_disk_interface_t::pcml_q_disk_interface_t(const machine_config &mconfig,
// device_start - device-specific startup
//-------------------------------------------------
-void pcml_q_disk_interface_t::device_start()
+void pcml_q_disk_interface_device::device_start()
{
}
@@ -69,7 +69,7 @@ void pcml_q_disk_interface_t::device_start()
// read -
//-------------------------------------------------
-uint8_t pcml_q_disk_interface_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t pcml_q_disk_interface_device::read(address_space &space, offs_t offset, uint8_t data)
{
return data;
}
@@ -79,6 +79,6 @@ uint8_t pcml_q_disk_interface_t::read(address_space &space, offs_t offset, uint8
// write -
//-------------------------------------------------
-void pcml_q_disk_interface_t::write(address_space &space, offs_t offset, uint8_t data)
+void pcml_q_disk_interface_device::write(address_space &space, offs_t offset, uint8_t data)
{
}
diff --git a/src/devices/bus/ql/pcml_qdisk.h b/src/devices/bus/ql/pcml_qdisk.h
index 120787eebd2..e9904df6eb0 100644
--- a/src/devices/bus/ql/pcml_qdisk.h
+++ b/src/devices/bus/ql/pcml_qdisk.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_PCML_QDISK_H
+#define MAME_BUS_QL_PCML_QDISK_H
-#ifndef __PCML_Q_DISK_INTERFACE__
-#define __PCML_Q_DISK_INTERFACE__
+#pragma once
#include "exp.h"
@@ -19,14 +19,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> pcml_q_disk_interface_t
+// ======================> pcml_q_disk_interface_device
-class pcml_q_disk_interface_t : public device_t,
- public device_ql_expansion_card_interface
+class pcml_q_disk_interface_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- pcml_q_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pcml_q_disk_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -41,10 +40,7 @@ protected:
};
-
// device type definition
-extern const device_type PCML_Q_DISK_INTERFACE;
-
-
+DECLARE_DEVICE_TYPE(PCML_Q_DISK_INTERFACE, pcml_q_disk_interface_device)
-#endif
+#endif // MAME_BUS_QL_PCML_QDISK_H
diff --git a/src/devices/bus/ql/qubide.cpp b/src/devices/bus/ql/qubide.cpp
index 30591d96aab..d529fe96ac5 100644
--- a/src/devices/bus/ql/qubide.cpp
+++ b/src/devices/bus/ql/qubide.cpp
@@ -55,7 +55,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type QUBIDE = device_creator<qubide_t>;
+DEFINE_DEVICE_TYPE(QUBIDE, qubide_device, "ql_qubide", "QubIDE")
//-------------------------------------------------
@@ -82,7 +82,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *qubide_t::device_rom_region() const
+const tiny_rom_entry *qubide_device::device_rom_region() const
{
return ROM_NAME( qubide );
}
@@ -102,7 +102,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor qubide_t::device_mconfig_additions() const
+machine_config_constructor qubide_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( qubide );
}
@@ -154,7 +154,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor qubide_t::device_input_ports() const
+ioport_constructor qubide_device::device_input_ports() const
{
return INPUT_PORTS_NAME( qubide );
}
@@ -166,11 +166,11 @@ ioport_constructor qubide_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// qubide_t - constructor
+// qubide_device - constructor
//-------------------------------------------------
-qubide_t::qubide_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, QUBIDE, "QubIDE", tag, owner, clock, "ql_qubide", __FILE__),
+qubide_device::qubide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, QUBIDE, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this),
m_ata(*this, "ata"),
m_rom(*this, "rom"),
@@ -185,7 +185,7 @@ qubide_t::qubide_t(const machine_config &mconfig, const char *tag, device_t *own
// device_start - device-specific startup
//-------------------------------------------------
-void qubide_t::device_start()
+void qubide_device::device_start()
{
}
@@ -194,7 +194,7 @@ void qubide_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void qubide_t::device_reset()
+void qubide_device::device_reset()
{
int j1_j5 = m_j1_j5->read();
@@ -211,7 +211,7 @@ void qubide_t::device_reset()
// read -
//-------------------------------------------------
-uint8_t qubide_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t qubide_device::read(address_space &space, offs_t offset, uint8_t data)
{
if ((offset & 0xfc000) == m_base)
{
@@ -256,7 +256,7 @@ uint8_t qubide_t::read(address_space &space, offs_t offset, uint8_t data)
// write -
//-------------------------------------------------
-void qubide_t::write(address_space &space, offs_t offset, uint8_t data)
+void qubide_device::write(address_space &space, offs_t offset, uint8_t data)
{
if ((offset & 0xfc000) == m_base)
{
diff --git a/src/devices/bus/ql/qubide.h b/src/devices/bus/ql/qubide.h
index 9ebbdaa95e5..2dd652d58a9 100644
--- a/src/devices/bus/ql/qubide.h
+++ b/src/devices/bus/ql/qubide.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_QUBIDE_H
+#define MAME_BUS_QL_QUBIDE_H
-#ifndef __QUBIDE__
-#define __QUBIDE__
+#pragma once
#include "exp.h"
#include "machine/ataintf.h"
@@ -20,14 +20,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> qubide_t
+// ======================> qubide_device
-class qubide_t : public device_t,
- public device_ql_expansion_card_interface
+class qubide_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- qubide_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ qubide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -55,8 +54,6 @@ private:
// device type definition
-extern const device_type QUBIDE;
-
-
+DECLARE_DEVICE_TYPE(QUBIDE, qubide_device)
-#endif
+#endif // MAME_BUS_QL_QUBIDE_H
diff --git a/src/devices/bus/ql/rom.cpp b/src/devices/bus/ql/rom.cpp
index 08258e5b679..27d46b5c47b 100644
--- a/src/devices/bus/ql/rom.cpp
+++ b/src/devices/bus/ql/rom.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type QL_ROM_CARTRIDGE_SLOT = device_creator<ql_rom_cartridge_slot_t>;
+DEFINE_DEVICE_TYPE(QL_ROM_CARTRIDGE_SLOT, ql_rom_cartridge_slot_device, "ql_rom_cartridge_slot", "QL ROM cartridge slot")
@@ -32,7 +32,7 @@ device_ql_rom_cartridge_card_interface::device_ql_rom_cartridge_card_interface(c
m_rom(*this, "rom"),
m_romoeh(0)
{
- m_slot = dynamic_cast<ql_rom_cartridge_slot_t *>(device.owner());
+ m_slot = dynamic_cast<ql_rom_cartridge_slot_device *>(device.owner());
}
@@ -51,11 +51,11 @@ device_ql_rom_cartridge_card_interface::~device_ql_rom_cartridge_card_interface(
//**************************************************************************
//-------------------------------------------------
-// ql_rom_cartridge_slot_t - constructor
+// ql_rom_cartridge_slot_device - constructor
//-------------------------------------------------
-ql_rom_cartridge_slot_t::ql_rom_cartridge_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, QL_ROM_CARTRIDGE_SLOT, "QL ROM cartridge slot", tag, owner, clock, "ql_rom_cartridge_slot", __FILE__),
+ql_rom_cartridge_slot_device::ql_rom_cartridge_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, QL_ROM_CARTRIDGE_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
device_image_interface(mconfig, *this), m_card(nullptr)
{
@@ -66,7 +66,7 @@ ql_rom_cartridge_slot_t::ql_rom_cartridge_slot_t(const machine_config &mconfig,
// device_start - device-specific startup
//-------------------------------------------------
-void ql_rom_cartridge_slot_t::device_start()
+void ql_rom_cartridge_slot_device::device_start()
{
m_card = dynamic_cast<device_ql_rom_cartridge_card_interface *>(get_card_device());
}
@@ -76,7 +76,7 @@ void ql_rom_cartridge_slot_t::device_start()
// call_load -
//-------------------------------------------------
-image_init_result ql_rom_cartridge_slot_t::call_load()
+image_init_result ql_rom_cartridge_slot_device::call_load()
{
if (m_card)
{
@@ -103,7 +103,7 @@ image_init_result ql_rom_cartridge_slot_t::call_load()
// get_default_card_software -
//-------------------------------------------------
-std::string ql_rom_cartridge_slot_t::get_default_card_software(get_default_card_software_hook &hook) const
+std::string ql_rom_cartridge_slot_device::get_default_card_software(get_default_card_software_hook &hook) const
{
return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/ql/rom.h b/src/devices/bus/ql/rom.h
index 826235b2be6..72b4d75dc2f 100644
--- a/src/devices/bus/ql/rom.h
+++ b/src/devices/bus/ql/rom.h
@@ -25,10 +25,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_ROM_H
+#define MAME_BUS_QL_ROM_H
-#ifndef __QL_ROM_CARTRIDGE_SLOT__
-#define __QL_ROM_CARTRIDGE_SLOT__
+#pragma once
#include "softlist_dev.h"
@@ -49,15 +49,14 @@
// ======================> device_ql_rom_cartridge_card_interface
-class ql_rom_cartridge_slot_t;
+class ql_rom_cartridge_slot_device;
class device_ql_rom_cartridge_card_interface : public device_slot_card_interface
{
- friend class ql_rom_cartridge_slot_t;
+ friend class ql_rom_cartridge_slot_device;
public:
// construction/destruction
- device_ql_rom_cartridge_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_ql_rom_cartridge_card_interface();
virtual void romoeh_w(int state) { m_romoeh = state; }
@@ -65,7 +64,9 @@ public:
virtual void write(address_space &space, offs_t offset, uint8_t data) { }
protected:
- ql_rom_cartridge_slot_t *m_slot;
+ device_ql_rom_cartridge_card_interface(const machine_config &mconfig, device_t &device);
+
+ ql_rom_cartridge_slot_device *m_slot;
optional_shared_ptr<uint8_t> m_rom;
@@ -73,15 +74,15 @@ protected:
};
-// ======================> ql_rom_cartridge_slot_t
+// ======================> ql_rom_cartridge_slot_device
-class ql_rom_cartridge_slot_t : public device_t,
+class ql_rom_cartridge_slot_device : public device_t,
public device_slot_interface,
public device_image_interface
{
public:
// construction/destruction
- ql_rom_cartridge_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ql_rom_cartridge_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// computer interface
uint8_t read(address_space &space, offs_t offset, uint8_t data) { if (m_card) data = m_card->read(space, offset, data); return data; }
@@ -114,10 +115,8 @@ protected:
// device type definition
-extern const device_type QL_ROM_CARTRIDGE_SLOT;
+DECLARE_DEVICE_TYPE(QL_ROM_CARTRIDGE_SLOT, ql_rom_cartridge_slot_device)
SLOT_INTERFACE_EXTERN( ql_rom_cartridge_cards );
-
-
-#endif
+#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 f04c1edaa8d..6448d93fc47 100644
--- a/src/devices/bus/ql/sandy_superdisk.cpp
+++ b/src/devices/bus/ql/sandy_superdisk.cpp
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SANDY_SUPER_DISK = device_creator<sandy_super_disk_t>;
+DEFINE_DEVICE_TYPE(SANDY_SUPER_DISK, sandy_super_disk_device, "ql_sdisk", "Sandy Super Disk")
//-------------------------------------------------
@@ -42,7 +42,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *sandy_super_disk_t::device_rom_region() const
+const tiny_rom_entry *sandy_super_disk_device::device_rom_region() const
{
return ROM_NAME( sandy_super_disk );
}
@@ -61,7 +61,7 @@ SLOT_INTERFACE_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( sandy_super_disk_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( sandy_super_disk_device::floppy_formats )
FLOPPY_QL_FORMAT
FLOPPY_FORMATS_END
@@ -70,7 +70,7 @@ FLOPPY_FORMATS_END
// centronics
//-------------------------------------------------
-WRITE_LINE_MEMBER( sandy_super_disk_t::busy_w )
+WRITE_LINE_MEMBER( sandy_super_disk_device::busy_w )
{
m_busy = state;
check_interrupt();
@@ -83,11 +83,11 @@ WRITE_LINE_MEMBER( sandy_super_disk_t::busy_w )
static MACHINE_CONFIG_FRAGMENT( sandy_super_disk )
MCFG_DEVICE_ADD(WD1772_TAG, WD1772, 8000000)
- MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_super_disk_floppies, "35dd", sandy_super_disk_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_super_disk_floppies, nullptr, sandy_super_disk_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_super_disk_floppies, "35dd", sandy_super_disk_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_super_disk_floppies, nullptr, sandy_super_disk_device::floppy_formats)
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
- MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sandy_super_disk_t, busy_w))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sandy_super_disk_device, busy_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD(TTL74273_TAG, CENTRONICS_TAG)
MACHINE_CONFIG_END
@@ -97,7 +97,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor sandy_super_disk_t::device_mconfig_additions() const
+machine_config_constructor sandy_super_disk_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( sandy_super_disk );
}
@@ -109,11 +109,11 @@ machine_config_constructor sandy_super_disk_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// sandy_super_disk_t - constructor
+// sandy_super_disk_device - constructor
//-------------------------------------------------
-sandy_super_disk_t::sandy_super_disk_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SANDY_SUPER_DISK, "Sandy Super Disk", tag, owner, clock, "ql_sdisk", __FILE__),
+sandy_super_disk_device::sandy_super_disk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, SANDY_SUPER_DISK, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this),
m_fdc(*this, WD1772_TAG),
m_floppy0(*this, WD1772_TAG":0"),
@@ -130,7 +130,7 @@ sandy_super_disk_t::sandy_super_disk_t(const machine_config &mconfig, const char
// device_start - device-specific startup
//-------------------------------------------------
-void sandy_super_disk_t::device_start()
+void sandy_super_disk_device::device_start()
{
// state saving
save_item(NAME(m_busy));
@@ -142,7 +142,7 @@ void sandy_super_disk_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void sandy_super_disk_t::device_reset()
+void sandy_super_disk_device::device_reset()
{
m_fdc->reset();
m_fdc->set_floppy(nullptr);
@@ -157,7 +157,7 @@ void sandy_super_disk_t::device_reset()
// read -
//-------------------------------------------------
-uint8_t sandy_super_disk_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t sandy_super_disk_device::read(address_space &space, offs_t offset, uint8_t data)
{
if ((offset & 0xf0000) == 0xc0000)
{
@@ -203,7 +203,7 @@ uint8_t sandy_super_disk_t::read(address_space &space, offs_t offset, uint8_t da
// write -
//-------------------------------------------------
-void sandy_super_disk_t::write(address_space &space, offs_t offset, uint8_t data)
+void sandy_super_disk_device::write(address_space &space, offs_t offset, uint8_t data)
{
if ((offset & 0xf0000) == 0xc0000)
{
@@ -268,7 +268,7 @@ void sandy_super_disk_t::write(address_space &space, offs_t offset, uint8_t data
}
}
-void sandy_super_disk_t::check_interrupt()
+void sandy_super_disk_device::check_interrupt()
{
int extint = m_fd6 && m_busy;
diff --git a/src/devices/bus/ql/sandy_superdisk.h b/src/devices/bus/ql/sandy_superdisk.h
index fe44b921bf6..1de35cba958 100644
--- a/src/devices/bus/ql/sandy_superdisk.h
+++ b/src/devices/bus/ql/sandy_superdisk.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_SANDY_SUPERDISK_H
+#define MAME_BUS_QL_SANDY_SUPERDISK_H
-#ifndef __SANDY_SUPER_DISK__
-#define __SANDY_SUPER_DISK__
+#pragma once
#include "exp.h"
#include "bus/centronics/ctronics.h"
@@ -24,12 +24,11 @@
// ======================> sandy_super_disk_device
-class sandy_super_disk_t : public device_t,
- public device_ql_expansion_card_interface
+class sandy_super_disk_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- sandy_super_disk_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sandy_super_disk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -51,7 +50,7 @@ protected:
private:
void check_interrupt();
- required_device<wd1772_t> m_fdc;
+ required_device<wd1772_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device<centronics_device> m_centronics;
@@ -64,7 +63,7 @@ private:
// device type definition
-extern const device_type SANDY_SUPER_DISK;
+DECLARE_DEVICE_TYPE(SANDY_SUPER_DISK, sandy_super_disk_device)
-#endif
+#endif // MAME_BUS_QL_SANDY_SUPERDISK_H
diff --git a/src/devices/bus/ql/sandy_superqboard.cpp b/src/devices/bus/ql/sandy_superqboard.cpp
index c3eeb342e18..7f73692accb 100644
--- a/src/devices/bus/ql/sandy_superqboard.cpp
+++ b/src/devices/bus/ql/sandy_superqboard.cpp
@@ -25,10 +25,10 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SANDY_SUPERQBOARD = device_creator<sandy_superqboard_t>;
-const device_type SANDY_SUPERQBOARD_512K = device_creator<sandy_superqboard_512k_t>;
-const device_type SANDY_SUPERQMOUSE = device_creator<sandy_superqmouse_t>;
-const device_type SANDY_SUPERQMOUSE_512K = device_creator<sandy_superqmouse_512k_t>;
+DEFINE_DEVICE_TYPE(SANDY_SUPERQBOARD, sandy_superqboard_device, "ql_sqboard256", "Sandy SuperQBoard 256K")
+DEFINE_DEVICE_TYPE(SANDY_SUPERQBOARD_512K, sandy_superqboard_512k_device, "ql_sqboard512", "Sandy SuperQBoard 512K")
+DEFINE_DEVICE_TYPE(SANDY_SUPERQMOUSE, sandy_superqmouse_device, "ql_sqmouse", "Sandy SuperQMouse")
+DEFINE_DEVICE_TYPE(SANDY_SUPERQMOUSE_512K, sandy_superqmouse_512k_device, "ql_sqmouse512", "Sandy SuperQMouse 512K")
//-------------------------------------------------
@@ -54,7 +54,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *sandy_superqboard_t::device_rom_region() const
+const tiny_rom_entry *sandy_superqboard_device::device_rom_region() const
{
return ROM_NAME( sandy_superqboard );
}
@@ -74,7 +74,7 @@ SLOT_INTERFACE_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( sandy_superqboard_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( sandy_superqboard_device::floppy_formats )
FLOPPY_QL_FORMAT
FLOPPY_FORMATS_END
@@ -83,7 +83,7 @@ FLOPPY_FORMATS_END
// centronics
//-------------------------------------------------
-WRITE_LINE_MEMBER( sandy_superqboard_t::busy_w )
+WRITE_LINE_MEMBER( sandy_superqboard_device::busy_w )
{
if (state)
{
@@ -104,11 +104,11 @@ WRITE_LINE_MEMBER( sandy_superqboard_t::busy_w )
static MACHINE_CONFIG_FRAGMENT( sandy_superqboard )
MCFG_DEVICE_ADD(WD1772_TAG, WD1772, XTAL_16MHz/2)
- MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_superqboard_floppies, "35hd", sandy_superqboard_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_superqboard_floppies, nullptr, sandy_superqboard_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_superqboard_floppies, "35hd", sandy_superqboard_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_superqboard_floppies, nullptr, sandy_superqboard_device::floppy_formats)
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
- MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sandy_superqboard_t, busy_w))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sandy_superqboard_device, busy_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD(TTL74273_TAG, CENTRONICS_TAG)
MACHINE_CONFIG_END
@@ -118,7 +118,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor sandy_superqboard_t::device_mconfig_additions() const
+machine_config_constructor sandy_superqboard_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( sandy_superqboard );
}
@@ -128,7 +128,7 @@ machine_config_constructor sandy_superqboard_t::device_mconfig_additions() const
// INPUT_CHANGED_MEMBER( mouse_x_changed )
//-------------------------------------------------
-INPUT_CHANGED_MEMBER( sandy_superqboard_t::mouse_x_changed )
+INPUT_CHANGED_MEMBER( sandy_superqboard_device::mouse_x_changed )
{
if (newval < oldval)
{
@@ -149,7 +149,7 @@ INPUT_CHANGED_MEMBER( sandy_superqboard_t::mouse_x_changed )
// INPUT_CHANGED_MEMBER( mouse_y_changed )
//-------------------------------------------------
-INPUT_CHANGED_MEMBER( sandy_superqboard_t::mouse_y_changed )
+INPUT_CHANGED_MEMBER( sandy_superqboard_device::mouse_y_changed )
{
if (newval < oldval)
{
@@ -172,10 +172,10 @@ INPUT_CHANGED_MEMBER( sandy_superqboard_t::mouse_y_changed )
INPUT_PORTS_START( sandy_superqmouse )
PORT_START("mouse_x")
- PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_CHANGED_MEMBER(DEVICE_SELF, sandy_superqboard_t, mouse_x_changed, nullptr)
+ PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_CHANGED_MEMBER(DEVICE_SELF, sandy_superqboard_device, mouse_x_changed, nullptr)
PORT_START("mouse_y")
- PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_CHANGED_MEMBER(DEVICE_SELF, sandy_superqboard_t, mouse_y_changed, nullptr)
+ PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_CHANGED_MEMBER(DEVICE_SELF, sandy_superqboard_device, mouse_y_changed, nullptr)
PORT_START("mouse_buttons")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Middle Mouse Button") PORT_CODE(MOUSECODE_BUTTON3)
@@ -188,7 +188,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor sandy_superqmouse_t::device_input_ports() const
+ioport_constructor sandy_superqmouse_device::device_input_ports() const
{
return INPUT_PORTS_NAME( sandy_superqmouse );
}
@@ -198,7 +198,7 @@ ioport_constructor sandy_superqmouse_t::device_input_ports() const
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor sandy_superqmouse_512k_t::device_input_ports() const
+ioport_constructor sandy_superqmouse_512k_device::device_input_ports() const
{
return INPUT_PORTS_NAME( sandy_superqmouse );
}
@@ -210,29 +210,16 @@ ioport_constructor sandy_superqmouse_512k_t::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// sandy_superqboard_t - constructor
+// sandy_superqboard_device - constructor
//-------------------------------------------------
-sandy_superqboard_t::sandy_superqboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SANDY_SUPERQBOARD, "Sandy SuperQBoard 256K", tag, owner, clock, "ql_sqboard256", __FILE__),
- device_ql_expansion_card_interface(mconfig, *this),
- m_fdc(*this, WD1772_TAG),
- m_floppy0(*this, WD1772_TAG":0"),
- m_floppy1(*this, WD1772_TAG":1"),
- m_centronics(*this, CENTRONICS_TAG),
- m_latch(*this, TTL74273_TAG),
- m_rom(*this, "rom"),
- m_ram(*this, "ram"),
- m_buttons(*this, "mouse_buttons"),
- m_ram_size(256*1024),
- m_fd6(0),
- m_fd7(0),
- m_status(0)
+sandy_superqboard_device::sandy_superqboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ sandy_superqboard_device(mconfig, SANDY_SUPERQBOARD, tag, owner, clock, 256*1024)
{
}
-sandy_superqboard_t::sandy_superqboard_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int ram_size) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+sandy_superqboard_device::sandy_superqboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int ram_size) :
+ device_t(mconfig, type, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this),
m_fdc(*this, WD1772_TAG),
m_floppy0(*this, WD1772_TAG":0"),
@@ -249,21 +236,27 @@ sandy_superqboard_t::sandy_superqboard_t(const machine_config &mconfig, device_t
{
}
-sandy_superqboard_512k_t::sandy_superqboard_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sandy_superqboard_t(mconfig, SANDY_SUPERQBOARD_512K, "Sandy SuperQBoard 512K", tag, owner, clock, "ql_sqboard512", __FILE__, 512*1024) { }
+sandy_superqboard_512k_device::sandy_superqboard_512k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : sandy_superqboard_device(mconfig, SANDY_SUPERQBOARD_512K, tag, owner, clock, 512*1024)
+{
+}
-sandy_superqmouse_t::sandy_superqmouse_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sandy_superqboard_t(mconfig, SANDY_SUPERQMOUSE, "Sandy SuperQMouse", tag, owner, clock, "ql_sqmouse", __FILE__, 256*1024) { }
+sandy_superqmouse_device::sandy_superqmouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : sandy_superqboard_device(mconfig, SANDY_SUPERQMOUSE, tag, owner, clock, 256*1024)
+{
+}
-sandy_superqmouse_512k_t::sandy_superqmouse_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sandy_superqboard_t(mconfig, SANDY_SUPERQMOUSE_512K, "Sandy SuperQMouse 512K", tag, owner, clock, "ql_sqmouse512", __FILE__, 512*1024) { }
+sandy_superqmouse_512k_device::sandy_superqmouse_512k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : sandy_superqboard_device(mconfig, SANDY_SUPERQMOUSE_512K, tag, owner, clock, 512*1024)
+{
+}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void sandy_superqboard_t::device_start()
+void sandy_superqboard_device::device_start()
{
// allocate memory
m_ram.allocate(m_ram_size);
@@ -279,7 +272,7 @@ void sandy_superqboard_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void sandy_superqboard_t::device_reset()
+void sandy_superqboard_device::device_reset()
{
m_fdc->reset();
m_fdc->set_floppy(nullptr);
@@ -300,7 +293,7 @@ void sandy_superqboard_t::device_reset()
// read -
//-------------------------------------------------
-uint8_t sandy_superqboard_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t sandy_superqboard_device::read(address_space &space, offs_t offset, uint8_t data)
{
if ((offset & 0xf0000) == 0xc0000)
{
@@ -360,7 +353,7 @@ uint8_t sandy_superqboard_t::read(address_space &space, offs_t offset, uint8_t d
// write -
//-------------------------------------------------
-void sandy_superqboard_t::write(address_space &space, offs_t offset, uint8_t data)
+void sandy_superqboard_device::write(address_space &space, offs_t offset, uint8_t data)
{
if ((offset & 0xf0000) == 0xc0000)
{
@@ -444,7 +437,7 @@ void sandy_superqboard_t::write(address_space &space, offs_t offset, uint8_t dat
}
}
-void sandy_superqboard_t::check_interrupt()
+void sandy_superqboard_device::check_interrupt()
{
bool busy_int = m_fd6 && (m_status & ST_BUSY);
bool mouse_int = m_fd7 && (m_status & (ST_Y_INT | ST_X_INT));
diff --git a/src/devices/bus/ql/sandy_superqboard.h b/src/devices/bus/ql/sandy_superqboard.h
index a1982c38ede..7c18f96421d 100644
--- a/src/devices/bus/ql/sandy_superqboard.h
+++ b/src/devices/bus/ql/sandy_superqboard.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_SANDY_SUPERQBOARD_H
+#define MAME_BUS_QL_SANDY_SUPERQBOARD_H
-#ifndef __SANDY_SUPERQBOARD__
-#define __SANDY_SUPERQBOARD__
+#pragma once
#include "exp.h"
#include "bus/centronics/ctronics.h"
@@ -22,15 +22,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> sandy_superqboard_t
+// ======================> sandy_superqboard_device
-class sandy_superqboard_t : public device_t,
- public device_ql_expansion_card_interface
+class sandy_superqboard_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- sandy_superqboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- sandy_superqboard_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int ram_size);
+ sandy_superqboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -44,6 +42,8 @@ public:
DECLARE_INPUT_CHANGED_MEMBER( mouse_y_changed );
protected:
+ sandy_superqboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int ram_size);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -67,7 +67,7 @@ private:
void check_interrupt();
- required_device<wd1772_t> m_fdc;
+ required_device<wd1772_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device<centronics_device> m_centronics;
@@ -84,36 +84,36 @@ private:
};
-// ======================> sandy_superqboard_512k_t
+// ======================> sandy_superqboard_512k_device
-class sandy_superqboard_512k_t : public sandy_superqboard_t
+class sandy_superqboard_512k_device : public sandy_superqboard_device
{
public:
// construction/destruction
- sandy_superqboard_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sandy_superqboard_512k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-// ======================> sandy_superqmouse_t
+// ======================> sandy_superqmouse_device
-class sandy_superqmouse_t : public sandy_superqboard_t
+class sandy_superqmouse_device : public sandy_superqboard_device
{
public:
// construction/destruction
- sandy_superqmouse_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sandy_superqmouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
};
-// ======================> sandy_superqmouse_512k_t
+// ======================> sandy_superqmouse_512k_device
-class sandy_superqmouse_512k_t : public sandy_superqboard_t
+class sandy_superqmouse_512k_device : public sandy_superqboard_device
{
public:
// construction/destruction
- sandy_superqmouse_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sandy_superqmouse_512k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
@@ -121,11 +121,9 @@ public:
// device type definition
-extern const device_type SANDY_SUPERQBOARD;
-extern const device_type SANDY_SUPERQBOARD_512K;
-extern const device_type SANDY_SUPERQMOUSE;
-extern const device_type SANDY_SUPERQMOUSE_512K;
-
-
+DECLARE_DEVICE_TYPE(SANDY_SUPERQBOARD, sandy_superqboard_device)
+DECLARE_DEVICE_TYPE(SANDY_SUPERQBOARD_512K, sandy_superqboard_512k_device)
+DECLARE_DEVICE_TYPE(SANDY_SUPERQMOUSE, sandy_superqmouse_device)
+DECLARE_DEVICE_TYPE(SANDY_SUPERQMOUSE_512K, sandy_superqmouse_512k_device)
-#endif
+#endif // MAME_BUS_QL_SANDY_SUPERQBOARD_H
diff --git a/src/devices/bus/ql/std.cpp b/src/devices/bus/ql/std.cpp
index 8fc5424cf63..5e13a0ff32f 100644
--- a/src/devices/bus/ql/std.cpp
+++ b/src/devices/bus/ql/std.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type QL_STANDARD_ROM_CARTRIDGE = device_creator<ql_standard_rom_cartridge_t>;
+DEFINE_DEVICE_TYPE(QL_STANDARD_ROM_CARTRIDGE, ql_standard_rom_cartridge_device, "ql_standard", "QL standard ROM cartridge")
@@ -24,11 +24,11 @@ const device_type QL_STANDARD_ROM_CARTRIDGE = device_creator<ql_standard_rom_car
//**************************************************************************
//-------------------------------------------------
-// ql_standard_rom_cartridge_t - constructor
+// ql_standard_rom_cartridge_device - constructor
//-------------------------------------------------
-ql_standard_rom_cartridge_t::ql_standard_rom_cartridge_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, QL_STANDARD_ROM_CARTRIDGE, "QL standard ROM cartridge", tag, owner, clock, "ql_standard", __FILE__),
+ql_standard_rom_cartridge_device::ql_standard_rom_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, QL_STANDARD_ROM_CARTRIDGE, tag, owner, clock),
device_ql_rom_cartridge_card_interface(mconfig, *this)
{
}
@@ -38,7 +38,7 @@ ql_standard_rom_cartridge_t::ql_standard_rom_cartridge_t(const machine_config &m
// device_start - device-specific startup
//-------------------------------------------------
-void ql_standard_rom_cartridge_t::device_start()
+void ql_standard_rom_cartridge_device::device_start()
{
}
@@ -47,7 +47,7 @@ void ql_standard_rom_cartridge_t::device_start()
// read - cartridge data read
//-------------------------------------------------
-uint8_t ql_standard_rom_cartridge_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t ql_standard_rom_cartridge_device::read(address_space &space, offs_t offset, uint8_t data)
{
if (m_romoeh && m_rom.bytes())
{
diff --git a/src/devices/bus/ql/std.h b/src/devices/bus/ql/std.h
index 40190ea4a35..b1b4e404c4c 100644
--- a/src/devices/bus/ql/std.h
+++ b/src/devices/bus/ql/std.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_STD_H
+#define MAME_BUS_QL_STD_H
-#ifndef __QL_STANDARD_ROM_CARTRIDGE__
-#define __QL_STANDARD_ROM_CARTRIDGE__
+#pragma once
#include "rom.h"
@@ -19,14 +19,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> ql_standard_rom_cartridge_t
+// ======================> ql_standard_rom_cartridge_device
-class ql_standard_rom_cartridge_t : public device_t,
- public device_ql_rom_cartridge_card_interface
+class ql_standard_rom_cartridge_device : public device_t, public device_ql_rom_cartridge_card_interface
{
public:
// construction/destruction
- ql_standard_rom_cartridge_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ql_standard_rom_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
// device-level overrides
@@ -38,7 +37,6 @@ protected:
// device type definition
-extern const device_type QL_STANDARD_ROM_CARTRIDGE;
-
+DECLARE_DEVICE_TYPE(QL_STANDARD_ROM_CARTRIDGE, ql_standard_rom_cartridge_device)
-#endif
+#endif // MAME_BUS_QL_STD_H
diff --git a/src/devices/bus/ql/trumpcard.cpp b/src/devices/bus/ql/trumpcard.cpp
index be3ae9baa76..c4f764fa74c 100644
--- a/src/devices/bus/ql/trumpcard.cpp
+++ b/src/devices/bus/ql/trumpcard.cpp
@@ -23,10 +23,10 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type QL_TRUMP_CARD = device_creator<ql_trump_card_t>;
-const device_type QL_TRUMP_CARD_256K = device_creator<ql_trump_card_256k_t>;
-const device_type QL_TRUMP_CARD_512K = device_creator<ql_trump_card_512k_t>;
-const device_type QL_TRUMP_CARD_768K = device_creator<ql_trump_card_768k_t>;
+DEFINE_DEVICE_TYPE(QL_TRUMP_CARD, ql_trump_card_device, "ql_trump", "QL Trump Card")
+DEFINE_DEVICE_TYPE(QL_TRUMP_CARD_256K, ql_trump_card_256k_device, "ql_trump256", "QL Trump Card 256K")
+DEFINE_DEVICE_TYPE(QL_TRUMP_CARD_512K, ql_trump_card_512k_device, "ql_trump512", "QL Trump Card 512K")
+DEFINE_DEVICE_TYPE(QL_TRUMP_CARD_768K, ql_trump_card_768k_device, "ql_trump768", "QL Trump Card 768K")
//-------------------------------------------------
@@ -57,7 +57,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *ql_trump_card_t::device_rom_region() const
+const tiny_rom_entry *ql_trump_card_device::device_rom_region() const
{
return ROM_NAME( ql_trump_card );
}
@@ -76,7 +76,7 @@ SLOT_INTERFACE_END
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( ql_trump_card_t::floppy_formats )
+FLOPPY_FORMATS_MEMBER( ql_trump_card_device::floppy_formats )
FLOPPY_QL_FORMAT
FLOPPY_FORMATS_END
@@ -87,8 +87,8 @@ FLOPPY_FORMATS_END
static MACHINE_CONFIG_FRAGMENT( ql_trump_card )
MCFG_DEVICE_ADD(WD1772_TAG, WD1772, 8000000)
- MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", ql_trump_card_floppies, "35dd", ql_trump_card_t::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", ql_trump_card_floppies, nullptr, ql_trump_card_t::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", ql_trump_card_floppies, "35dd", ql_trump_card_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", ql_trump_card_floppies, nullptr, ql_trump_card_device::floppy_formats)
MACHINE_CONFIG_END
@@ -97,7 +97,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor ql_trump_card_t::device_mconfig_additions() const
+machine_config_constructor ql_trump_card_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( ql_trump_card );
}
@@ -109,48 +109,48 @@ machine_config_constructor ql_trump_card_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// ql_trump_card_t - constructor
+// ql_trump_card_device - constructor
//-------------------------------------------------
-ql_trump_card_t::ql_trump_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, QL_TRUMP_CARD, "QL Trump Card", tag, owner, clock, "ql_trump", __FILE__),
- device_ql_expansion_card_interface(mconfig, *this),
- m_fdc(*this, WD1772_TAG),
- m_floppy0(*this, WD1772_TAG":0"),
- m_floppy1(*this, WD1772_TAG":1"),
- m_rom(*this, "rom"),
- m_ram(*this, "ram"),
- m_ram_size(0), m_rom_en(false)
+ql_trump_card_device::ql_trump_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ ql_trump_card_device(mconfig, QL_TRUMP_CARD, tag, owner, clock, 0)
{
}
-ql_trump_card_t::ql_trump_card_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int ram_size) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+ql_trump_card_device::ql_trump_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int ram_size) :
+ device_t(mconfig, type, tag, owner, clock),
device_ql_expansion_card_interface(mconfig, *this),
m_fdc(*this, WD1772_TAG),
m_floppy0(*this, WD1772_TAG":0"),
m_floppy1(*this, WD1772_TAG":1"),
m_rom(*this, "rom"),
m_ram(*this, "ram"),
- m_ram_size(ram_size), m_rom_en(false)
+ m_ram_size(ram_size),
+ m_rom_en(false)
{
}
-ql_trump_card_256k_t::ql_trump_card_256k_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ql_trump_card_t(mconfig, QL_TRUMP_CARD_256K, "QL Trump Card 256K", tag, owner, clock, "ql_trump256", __FILE__, 256*1024) { }
+ql_trump_card_256k_device::ql_trump_card_256k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : ql_trump_card_device(mconfig, QL_TRUMP_CARD_256K, tag, owner, clock, 256*1024)
+{
+}
-ql_trump_card_512k_t::ql_trump_card_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ql_trump_card_t(mconfig, QL_TRUMP_CARD_512K, "QL Trump Card 512K", tag, owner, clock, "ql_trump512", __FILE__, 512*1024) { }
+ql_trump_card_512k_device::ql_trump_card_512k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : ql_trump_card_device(mconfig, QL_TRUMP_CARD_512K, tag, owner, clock, 512*1024)
+{
+}
-ql_trump_card_768k_t::ql_trump_card_768k_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ql_trump_card_t(mconfig, QL_TRUMP_CARD_768K, "QL Trump Card 768K", tag, owner, clock, "ql_trump768", __FILE__, 768*1024) { }
+ql_trump_card_768k_device::ql_trump_card_768k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : ql_trump_card_device(mconfig, QL_TRUMP_CARD_768K, tag, owner, clock, 768*1024)
+{
+}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void ql_trump_card_t::device_start()
+void ql_trump_card_device::device_start()
{
// allocate memory
m_ram.allocate(m_ram_size);
@@ -164,7 +164,7 @@ void ql_trump_card_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void ql_trump_card_t::device_reset()
+void ql_trump_card_device::device_reset()
{
m_fdc->set_floppy(nullptr);
m_fdc->dden_w(0);
@@ -177,7 +177,7 @@ void ql_trump_card_t::device_reset()
// read -
//-------------------------------------------------
-uint8_t ql_trump_card_t::read(address_space &space, offs_t offset, uint8_t data)
+uint8_t ql_trump_card_device::read(address_space &space, offs_t offset, uint8_t data)
{
if (offset >= 0xc000 && offset < 0x10000)
{
@@ -230,7 +230,7 @@ uint8_t ql_trump_card_t::read(address_space &space, offs_t offset, uint8_t data)
// write -
//-------------------------------------------------
-void ql_trump_card_t::write(address_space &space, offs_t offset, uint8_t data)
+void ql_trump_card_device::write(address_space &space, offs_t offset, uint8_t data)
{
if (offset >= 0x1c000 && offset <= 0x1c003)
{
diff --git a/src/devices/bus/ql/trumpcard.h b/src/devices/bus/ql/trumpcard.h
index 631b584c9f1..ff19af0bf07 100644
--- a/src/devices/bus/ql/trumpcard.h
+++ b/src/devices/bus/ql/trumpcard.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_QL_TRUMPCARD_H
+#define MAME_BUS_QL_TRUMPCARD_H
-#ifndef __QL_TRUMP_CARD__
-#define __QL_TRUMP_CARD__
+#pragma once
#include "exp.h"
#include "machine/wd_fdc.h"
@@ -21,15 +21,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> ql_trump_card_t
+// ======================> ql_trump_card_device
-class ql_trump_card_t : public device_t,
- public device_ql_expansion_card_interface
+class ql_trump_card_device : public device_t, public device_ql_expansion_card_interface
{
public:
// construction/destruction
- ql_trump_card_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ql_trump_card_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int ram_size);
+ ql_trump_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -38,6 +36,8 @@ public:
DECLARE_FLOPPY_FORMATS( floppy_formats );
protected:
+ ql_trump_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int ram_size);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -47,7 +47,7 @@ protected:
virtual void write(address_space &space, offs_t offset, uint8_t data) override;
private:
- required_device<wd1772_t> m_fdc;
+ required_device<wd1772_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_memory_region m_rom;
@@ -58,43 +58,40 @@ private:
};
-// ======================> ql_trump_card_256k_t
+// ======================> ql_trump_card_256k_device
-class ql_trump_card_256k_t : public ql_trump_card_t
+class ql_trump_card_256k_device : public ql_trump_card_device
{
public:
// construction/destruction
- ql_trump_card_256k_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ql_trump_card_256k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-// ======================> ql_trump_card_512k_t
+// ======================> ql_trump_card_512k_device
-class ql_trump_card_512k_t : public ql_trump_card_t
+class ql_trump_card_512k_device : public ql_trump_card_device
{
public:
// construction/destruction
- ql_trump_card_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ql_trump_card_512k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-// ======================> ql_trump_card_768k_t
+// ======================> ql_trump_card_768k_device
-class ql_trump_card_768k_t : public ql_trump_card_t
+class ql_trump_card_768k_device : public ql_trump_card_device
{
public:
// construction/destruction
- ql_trump_card_768k_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ql_trump_card_768k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-
// device type definition
-extern const device_type QL_TRUMP_CARD;
-extern const device_type QL_TRUMP_CARD_256K;
-extern const device_type QL_TRUMP_CARD_512K;
-extern const device_type QL_TRUMP_CARD_768K;
-
-
+DECLARE_DEVICE_TYPE(QL_TRUMP_CARD, ql_trump_card_device)
+DECLARE_DEVICE_TYPE(QL_TRUMP_CARD_256K, ql_trump_card_256k_device)
+DECLARE_DEVICE_TYPE(QL_TRUMP_CARD_512K, ql_trump_card_512k_device)
+DECLARE_DEVICE_TYPE(QL_TRUMP_CARD_768K, ql_trump_card_768k_device)
-#endif
+#endif // MAME_BUS_QL_TRUMPCARD_H
diff --git a/src/devices/bus/rs232/ie15.cpp b/src/devices/bus/rs232/ie15.cpp
index c37c39f4569..74387086782 100644
--- a/src/devices/bus/rs232/ie15.cpp
+++ b/src/devices/bus/rs232/ie15.cpp
@@ -5,7 +5,7 @@
#include "ie15.h"
ie15_terminal_device::ie15_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ie15_device(mconfig, SERIAL_TERMINAL_IE15, "IE15 Terminal", tag, owner, clock, "ie15_terminal", __FILE__)
+ : ie15_device(mconfig, SERIAL_TERMINAL_IE15, tag, owner, clock)
, device_rs232_port_interface(mconfig, *this)
, m_rs232_txbaud(*this, "RS232_TXBAUD")
, m_rs232_rxbaud(*this, "RS232_RXBAUD")
@@ -87,5 +87,4 @@ void ie15_terminal_device::device_timer(emu_timer &timer, device_timer_id id, in
ie15_device::device_timer(timer, id, param, ptr);
}
-const device_type SERIAL_TERMINAL_IE15 = device_creator<ie15_terminal_device>;
-
+DEFINE_DEVICE_TYPE(SERIAL_TERMINAL_IE15, ie15_terminal_device, "ie15_terminal", "IE15 Terminal")
diff --git a/src/devices/bus/rs232/ie15.h b/src/devices/bus/rs232/ie15.h
index 281a842b634..c5c7ba3f6de 100644
--- a/src/devices/bus/rs232/ie15.h
+++ b/src/devices/bus/rs232/ie15.h
@@ -4,6 +4,8 @@
#ifndef MAME_BUS_RS232_IE15_H
#define MAME_BUS_RS232_IE15_H
+#pragma once
+
#include "rs232.h"
#include "machine/ie15.h"
@@ -37,6 +39,6 @@ private:
required_ioport m_rs232_stopbits;
};
-extern const device_type SERIAL_TERMINAL_IE15;
+DECLARE_DEVICE_TYPE(SERIAL_TERMINAL_IE15, ie15_terminal_device)
#endif // MAME_BUS_RS232_IE15_H
diff --git a/src/devices/bus/rs232/keyboard.cpp b/src/devices/bus/rs232/keyboard.cpp
index 4d234ef1576..17c6d4fa066 100644
--- a/src/devices/bus/rs232/keyboard.cpp
+++ b/src/devices/bus/rs232/keyboard.cpp
@@ -16,12 +16,12 @@ INPUT_PORTS_END
} // anonymous namespace
serial_keyboard_device::serial_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : serial_keyboard_device(mconfig, SERIAL_KEYBOARD, "Serial Keyboard", tag, owner, clock, "serial_keyboard", __FILE__)
+ : serial_keyboard_device(mconfig, SERIAL_KEYBOARD, tag, owner, clock)
{
}
-serial_keyboard_device::serial_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : generic_keyboard_device(mconfig, type, name, tag, owner, clock, shortname, source)
+serial_keyboard_device::serial_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : generic_keyboard_device(mconfig, type, tag, owner, clock)
, device_buffered_serial_interface(mconfig, *this)
, device_rs232_port_interface(mconfig, *this)
, m_rs232_txbaud(*this, "RS232_TXBAUD")
@@ -100,4 +100,4 @@ void serial_keyboard_device::received_byte(uint8_t byte)
{
}
-const device_type SERIAL_KEYBOARD = device_creator<serial_keyboard_device>;
+DEFINE_DEVICE_TYPE(SERIAL_KEYBOARD, serial_keyboard_device, "serial_keyboard", "Serial Keyboard")
diff --git a/src/devices/bus/rs232/keyboard.h b/src/devices/bus/rs232/keyboard.h
index 7592dcd2ed5..33b848dc126 100644
--- a/src/devices/bus/rs232/keyboard.h
+++ b/src/devices/bus/rs232/keyboard.h
@@ -5,6 +5,8 @@
#pragma once
+#pragma once
+
#include "rs232.h"
#include "machine/keyboard.h"
@@ -15,7 +17,6 @@ class serial_keyboard_device
{
public:
serial_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- serial_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual ioport_constructor device_input_ports() const override;
@@ -24,6 +25,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(update_serial);
protected:
+ serial_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -40,6 +43,6 @@ private:
required_ioport m_rs232_stopbits;
};
-extern const device_type SERIAL_KEYBOARD;
+DECLARE_DEVICE_TYPE(SERIAL_KEYBOARD, serial_keyboard_device)
#endif // MAME_BUS_RS232_KEYBOARD_H
diff --git a/src/devices/bus/rs232/loopback.cpp b/src/devices/bus/rs232/loopback.cpp
index cba8acf944c..ff462a8a982 100644
--- a/src/devices/bus/rs232/loopback.cpp
+++ b/src/devices/bus/rs232/loopback.cpp
@@ -4,11 +4,11 @@
#include "emu.h"
#include "loopback.h"
-const device_type RS232_LOOPBACK = device_creator<rs232_loopback_device>;
+DEFINE_DEVICE_TYPE(RS232_LOOPBACK, rs232_loopback_device, "rs232_loopback", "RS232 Loopback")
rs232_loopback_device::rs232_loopback_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RS232_LOOPBACK, "RS232 Loopback", tag, owner, clock, "rs232_loopback", __FILE__),
- device_rs232_port_interface(mconfig, *this)
+ : device_t(mconfig, RS232_LOOPBACK, tag, owner, clock)
+ , device_rs232_port_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/rs232/loopback.h b/src/devices/bus/rs232/loopback.h
index 25de18df2a9..7c78a6317ad 100644
--- a/src/devices/bus/rs232/loopback.h
+++ b/src/devices/bus/rs232/loopback.h
@@ -1,8 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef RS232_LOOPBACK_H_
-#define RS232_LOOPBACK_H_
+#ifndef MAME_BUS_RS232_LOOPBACK_H
+#define MAME_BUS_RS232_LOOPBACK_H
+
+#pragma once
#include "rs232.h"
@@ -22,4 +24,4 @@ protected:
extern const device_type RS232_LOOPBACK;
-#endif
+#endif // MAME_BUS_RS232_LOOPBACK_H
diff --git a/src/devices/bus/rs232/null_modem.cpp b/src/devices/bus/rs232/null_modem.cpp
index 9baa1ef7435..bec7b68016f 100644
--- a/src/devices/bus/rs232/null_modem.cpp
+++ b/src/devices/bus/rs232/null_modem.cpp
@@ -4,7 +4,7 @@
#include "null_modem.h"
null_modem_device::null_modem_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NULL_MODEM, "Null Modem", tag, owner, clock, "null_modem", __FILE__),
+ : device_t(mconfig, NULL_MODEM, tag, owner, clock),
device_serial_interface(mconfig, *this),
device_rs232_port_interface(mconfig, *this),
m_stream(*this, "stream"),
@@ -138,4 +138,4 @@ void null_modem_device::rcv_complete()
m_stream->output(get_received_char());
}
-const device_type NULL_MODEM = device_creator<null_modem_device>;
+DEFINE_DEVICE_TYPE(NULL_MODEM, null_modem_device, "null_modem", "RS232 Null Modem")
diff --git a/src/devices/bus/rs232/null_modem.h b/src/devices/bus/rs232/null_modem.h
index 3568b313cbc..39ecd9a129c 100644
--- a/src/devices/bus/rs232/null_modem.h
+++ b/src/devices/bus/rs232/null_modem.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:smf,Carl
-#ifndef NULL_MODEM_H_
-#define NULL_MODEM_H_
+#ifndef MAME_BUS_RS232_NULL_MODEM_H
+#define MAME_BUS_RS232_NULL_MODEM_H
#include "rs232.h"
#include "imagedev/bitbngr.h"
@@ -30,9 +30,9 @@ protected:
virtual void rcv_complete() override;
private:
- void queue();
+ static constexpr int TIMER_POLL = 1;
- static const int TIMER_POLL = 1;
+ void queue();
required_device<bitbanger_device> m_stream;
@@ -51,6 +51,6 @@ private:
int m_rts;
};
-extern const device_type NULL_MODEM;
+DECLARE_DEVICE_TYPE(NULL_MODEM, null_modem_device)
-#endif
+#endif // MAME_BUS_RS232_NULL_MODEM_H
diff --git a/src/devices/bus/rs232/printer.cpp b/src/devices/bus/rs232/printer.cpp
index ef4f8ef9c38..d3a1d45c3a6 100644
--- a/src/devices/bus/rs232/printer.cpp
+++ b/src/devices/bus/rs232/printer.cpp
@@ -4,7 +4,7 @@
#include "printer.h"
serial_printer_device::serial_printer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SERIAL_PRINTER, "Serial Printer", tag, owner, clock, "serial_printer", __FILE__),
+ : device_t(mconfig, SERIAL_PRINTER, tag, owner, clock),
device_serial_interface(mconfig, *this),
device_rs232_port_interface(mconfig, *this),
m_printer(*this, "printer"),
@@ -83,4 +83,4 @@ void serial_printer_device::rcv_complete()
m_printer->output(get_received_char());
}
-const device_type SERIAL_PRINTER = device_creator<serial_printer_device>;
+DEFINE_DEVICE_TYPE(SERIAL_PRINTER, serial_printer_device, "serial_printer", "Serial Printer")
diff --git a/src/devices/bus/rs232/printer.h b/src/devices/bus/rs232/printer.h
index 9380bf58fed..800003a7760 100644
--- a/src/devices/bus/rs232/printer.h
+++ b/src/devices/bus/rs232/printer.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef __RS232_PRINTER_H__
-#define __RS232_PRINTER_H__
+#ifndef MAME_BUS_RS232_PRINTER_H
+#define MAME_BUS_RS232_PRINTER_H
#pragma once
@@ -39,6 +39,6 @@ private:
required_ioport m_rs232_stopbits;
};
-extern const device_type SERIAL_PRINTER;
+DECLARE_DEVICE_TYPE(SERIAL_PRINTER, serial_printer_device)
-#endif
+#endif // MAME_BUS_RS232_PRINTER_H
diff --git a/src/devices/bus/rs232/pty.cpp b/src/devices/bus/rs232/pty.cpp
index 38d7c5f88e7..a324e532fb6 100644
--- a/src/devices/bus/rs232/pty.cpp
+++ b/src/devices/bus/rs232/pty.cpp
@@ -2,139 +2,141 @@
// copyright-holders:F. Ulivi
//
#include "emu.h"
-#include <stdio.h>
#include "pty.h"
-static const int TIMER_POLL = 1;
+#include <stdio.h>
+
+
+static constexpr int TIMER_POLL = 1;
pseudo_terminal_device::pseudo_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PSEUDO_TERMINAL, "Pseudo terminal", tag, owner, clock, "pseudo_terminal", __FILE__),
- device_serial_interface(mconfig, *this),
- device_rs232_port_interface(mconfig, *this),
- device_pty_interface(mconfig, *this),
- m_rs232_txbaud(*this, "RS232_TXBAUD"),
- m_rs232_rxbaud(*this, "RS232_RXBAUD"),
- m_rs232_startbits(*this, "RS232_STARTBITS"),
- m_rs232_databits(*this, "RS232_DATABITS"),
- m_rs232_parity(*this, "RS232_PARITY"),
- m_rs232_stopbits(*this, "RS232_STOPBITS"),
- m_input_count(0),
- m_input_index(0),
- m_timer_poll(nullptr)
+ device_t(mconfig, PSEUDO_TERMINAL, tag, owner, clock),
+ device_serial_interface(mconfig, *this),
+ device_rs232_port_interface(mconfig, *this),
+ device_pty_interface(mconfig, *this),
+ m_rs232_txbaud(*this, "RS232_TXBAUD"),
+ m_rs232_rxbaud(*this, "RS232_RXBAUD"),
+ m_rs232_startbits(*this, "RS232_STARTBITS"),
+ m_rs232_databits(*this, "RS232_DATABITS"),
+ m_rs232_parity(*this, "RS232_PARITY"),
+ m_rs232_stopbits(*this, "RS232_STOPBITS"),
+ m_input_count(0),
+ m_input_index(0),
+ m_timer_poll(nullptr)
{
}
WRITE_LINE_MEMBER(pseudo_terminal_device::update_serial)
{
- int startbits = convert_startbits(m_rs232_startbits->read());
- int databits = convert_databits(m_rs232_databits->read());
- parity_t parity = convert_parity(m_rs232_parity->read());
- stop_bits_t stopbits = convert_stopbits(m_rs232_stopbits->read());
+ int startbits = convert_startbits(m_rs232_startbits->read());
+ int databits = convert_databits(m_rs232_databits->read());
+ parity_t parity = convert_parity(m_rs232_parity->read());
+ stop_bits_t stopbits = convert_stopbits(m_rs232_stopbits->read());
- set_data_frame(startbits, databits, parity, stopbits);
+ set_data_frame(startbits, databits, parity, stopbits);
- int txbaud = convert_baud(m_rs232_txbaud->read());
- set_tra_rate(txbaud);
+ int txbaud = convert_baud(m_rs232_txbaud->read());
+ set_tra_rate(txbaud);
- int rxbaud = convert_baud(m_rs232_rxbaud->read());
- set_rcv_rate(rxbaud);
+ int rxbaud = convert_baud(m_rs232_rxbaud->read());
+ set_rcv_rate(rxbaud);
- output_rxd(1);
+ output_rxd(1);
- // TODO: make this configurable
- output_dcd(0);
- output_dsr(0);
- output_cts(0);
+ // TODO: make this configurable
+ output_dcd(0);
+ output_dsr(0);
+ output_cts(0);
}
static INPUT_PORTS_START(pseudo_terminal)
- MCFG_RS232_BAUD("RS232_TXBAUD", RS232_BAUD_9600, "TX Baud", pseudo_terminal_device, update_serial)
- MCFG_RS232_BAUD("RS232_RXBAUD", RS232_BAUD_9600, "RX Baud", pseudo_terminal_device, update_serial)
- MCFG_RS232_STARTBITS("RS232_STARTBITS", RS232_STARTBITS_1, "Start Bits", pseudo_terminal_device, update_serial)
- MCFG_RS232_DATABITS("RS232_DATABITS", RS232_DATABITS_8, "Data Bits", pseudo_terminal_device, update_serial)
- MCFG_RS232_PARITY("RS232_PARITY", RS232_PARITY_NONE, "Parity", pseudo_terminal_device, update_serial)
- MCFG_RS232_STOPBITS("RS232_STOPBITS", RS232_STOPBITS_1, "Stop Bits", pseudo_terminal_device, update_serial)
+ MCFG_RS232_BAUD("RS232_TXBAUD", RS232_BAUD_9600, "TX Baud", pseudo_terminal_device, update_serial)
+ MCFG_RS232_BAUD("RS232_RXBAUD", RS232_BAUD_9600, "RX Baud", pseudo_terminal_device, update_serial)
+ MCFG_RS232_STARTBITS("RS232_STARTBITS", RS232_STARTBITS_1, "Start Bits", pseudo_terminal_device, update_serial)
+ MCFG_RS232_DATABITS("RS232_DATABITS", RS232_DATABITS_8, "Data Bits", pseudo_terminal_device, update_serial)
+ MCFG_RS232_PARITY("RS232_PARITY", RS232_PARITY_NONE, "Parity", pseudo_terminal_device, update_serial)
+ MCFG_RS232_STOPBITS("RS232_STOPBITS", RS232_STOPBITS_1, "Stop Bits", pseudo_terminal_device, update_serial)
INPUT_PORTS_END
ioport_constructor pseudo_terminal_device::device_input_ports() const
{
- return INPUT_PORTS_NAME(pseudo_terminal);
+ return INPUT_PORTS_NAME(pseudo_terminal);
}
void pseudo_terminal_device::device_start()
{
- m_timer_poll = timer_alloc(TIMER_POLL);
+ m_timer_poll = timer_alloc(TIMER_POLL);
- open();
+ open();
}
void pseudo_terminal_device::device_stop()
{
- close();
+ close();
}
void pseudo_terminal_device::device_reset()
{
- update_serial(0);
- queue();
+ update_serial(0);
+ queue();
}
void pseudo_terminal_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- switch (id)
- {
- case TIMER_POLL:
- queue();
- break;
+ switch (id)
+ {
+ case TIMER_POLL:
+ queue();
+ break;
- default:
- device_serial_interface::device_timer(timer, id, param, ptr);
- }
+ default:
+ device_serial_interface::device_timer(timer, id, param, ptr);
+ }
}
void pseudo_terminal_device::tra_callback()
{
- output_rxd(transmit_register_get_data_bit());
+ output_rxd(transmit_register_get_data_bit());
}
void pseudo_terminal_device::tra_complete()
{
- queue();
+ queue();
}
void pseudo_terminal_device::rcv_complete()
{
- receive_register_extract();
- write(get_received_char());
+ receive_register_extract();
+ write(get_received_char());
}
void pseudo_terminal_device::queue(void)
{
- if (is_transmit_register_empty())
+ if (is_transmit_register_empty())
+ {
+ if (m_input_index == m_input_count)
+ {
+ m_input_index = 0;
+ int tmp = read(m_input_buffer , sizeof(m_input_buffer));
+ if (tmp > 0) {
+ m_input_count = tmp;
+ } else {
+ m_input_count = 0;
+ }
+ }
+
+ if (m_input_count != 0)
+ {
+ transmit_register_setup(m_input_buffer[ m_input_index++ ]);
+
+ m_timer_poll->adjust(attotime::never);
+ }
+ else
{
- if (m_input_index == m_input_count)
- {
- m_input_index = 0;
- int tmp = read(m_input_buffer , sizeof(m_input_buffer));
- if (tmp > 0) {
- m_input_count = tmp;
- } else {
- m_input_count = 0;
- }
- }
-
- if (m_input_count != 0)
- {
- transmit_register_setup(m_input_buffer[ m_input_index++ ]);
-
- m_timer_poll->adjust(attotime::never);
- }
- else
- {
- int txbaud = convert_baud(m_rs232_txbaud->read());
- m_timer_poll->adjust(attotime::from_hz(txbaud));
- }
+ int txbaud = convert_baud(m_rs232_txbaud->read());
+ m_timer_poll->adjust(attotime::from_hz(txbaud));
}
+ }
}
-const device_type PSEUDO_TERMINAL = device_creator<pseudo_terminal_device>;
+DEFINE_DEVICE_TYPE(PSEUDO_TERMINAL, pseudo_terminal_device, "pseudo_terminal", "Pseudo terminal")
diff --git a/src/devices/bus/rs232/pty.h b/src/devices/bus/rs232/pty.h
index ada2bdd0698..8c4c9c69a91 100644
--- a/src/devices/bus/rs232/pty.h
+++ b/src/devices/bus/rs232/pty.h
@@ -1,8 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:F. Ulivi
-//
-#ifndef _RS232_PTY_H_
-#define _RS232_PTY_H_
+#ifndef MAME_BUS_RS232_PTY_H
+#define MAME_BUS_RS232_PTY_H
+
+#pragma once
#include "rs232.h"
@@ -12,41 +13,39 @@ class pseudo_terminal_device : public device_t,
public device_pty_interface
{
public:
- pseudo_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pseudo_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) override {
- device_serial_interface::rx_w(state);
- }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) override { device_serial_interface::rx_w(state); }
- DECLARE_WRITE_LINE_MEMBER(update_serial);
+ DECLARE_WRITE_LINE_MEMBER(update_serial);
protected:
- virtual ioport_constructor device_input_ports() const override;
- virtual void device_start() override;
- virtual void device_stop() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual ioport_constructor device_input_ports() const override;
+ virtual void device_start() override;
+ virtual void device_stop() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual void tra_callback() override;
- virtual void tra_complete() override;
- virtual void rcv_complete() override;
+ virtual void tra_callback() override;
+ virtual void tra_complete() override;
+ virtual void rcv_complete() override;
private:
- required_ioport m_rs232_txbaud;
- required_ioport m_rs232_rxbaud;
- required_ioport m_rs232_startbits;
- required_ioport m_rs232_databits;
- required_ioport m_rs232_parity;
- required_ioport m_rs232_stopbits;
-
- uint8_t m_input_buffer[ 1024 ];
- uint32_t m_input_count;
- uint32_t m_input_index;
- emu_timer *m_timer_poll;
-
- void queue(void);
+ void queue(void);
+
+ required_ioport m_rs232_txbaud;
+ required_ioport m_rs232_rxbaud;
+ required_ioport m_rs232_startbits;
+ required_ioport m_rs232_databits;
+ required_ioport m_rs232_parity;
+ required_ioport m_rs232_stopbits;
+
+ uint8_t m_input_buffer[ 1024 ];
+ uint32_t m_input_count;
+ uint32_t m_input_index;
+ emu_timer *m_timer_poll;
};
-extern const device_type PSEUDO_TERMINAL;
+DECLARE_DEVICE_TYPE(PSEUDO_TERMINAL, pseudo_terminal_device)
-#endif /* _RS232_PTY_H_ */
+#endif // MAME_BUS_RS232_PTY_H
diff --git a/src/devices/bus/rs232/rs232.cpp b/src/devices/bus/rs232/rs232.cpp
index 5672d1b1dc1..ddac39b5764 100644
--- a/src/devices/bus/rs232/rs232.cpp
+++ b/src/devices/bus/rs232/rs232.cpp
@@ -3,27 +3,15 @@
#include "emu.h"
#include "rs232.h"
-const device_type RS232_PORT = device_creator<rs232_port_device>;
+DEFINE_DEVICE_TYPE(RS232_PORT, rs232_port_device, "rs232", "RS232 Port")
rs232_port_device::rs232_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, RS232_PORT, "RS232 Port", tag, owner, clock, "rs232", __FILE__),
- device_slot_interface(mconfig, *this),
- m_rxd(0),
- m_dcd(0),
- m_dsr(0),
- m_ri(0),
- m_cts(0),
- m_rxd_handler(*this),
- m_dcd_handler(*this),
- m_dsr_handler(*this),
- m_ri_handler(*this),
- m_cts_handler(*this),
- m_dev(nullptr)
+ rs232_port_device(mconfig, RS232_PORT, tag, owner, clock)
{
}
-rs232_port_device::rs232_port_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+rs232_port_device::rs232_port_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_rxd(0),
m_dcd(0),
diff --git a/src/devices/bus/rs232/rs232.h b/src/devices/bus/rs232/rs232.h
index caaa0606b20..395bf2b72cc 100644
--- a/src/devices/bus/rs232/rs232.h
+++ b/src/devices/bus/rs232/rs232.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:smf,Vas Crabb
-#ifndef MAME_BUS_RS232_H
-#define MAME_BUS_RS232_H
+#ifndef MAME_BUS_RS232_RS232_H
+#define MAME_BUS_RS232_RS232_H
#pragma once
@@ -117,15 +117,14 @@ class rs232_port_device : public device_t,
public:
rs232_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- rs232_port_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual ~rs232_port_device();
// static configuration helpers
- template<class _Object> static devcb_base &set_rxd_handler(device_t &device, _Object object) { return downcast<rs232_port_device &>(device).m_rxd_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_dcd_handler(device_t &device, _Object object) { return downcast<rs232_port_device &>(device).m_dcd_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_dsr_handler(device_t &device, _Object object) { return downcast<rs232_port_device &>(device).m_dsr_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ri_handler(device_t &device, _Object object) { return downcast<rs232_port_device &>(device).m_ri_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_cts_handler(device_t &device, _Object object) { return downcast<rs232_port_device &>(device).m_cts_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dcd_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_dcd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dsr_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_dsr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ri_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_ri_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cts_handler(device_t &device, Object &&cb) { return downcast<rs232_port_device &>(device).m_cts_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_txd );
DECLARE_WRITE_LINE_MEMBER( write_dtr );
@@ -139,6 +138,8 @@ public:
DECLARE_READ_LINE_MEMBER( cts_r ) { return m_cts; }
protected:
+ rs232_port_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_config_complete() override;
@@ -163,13 +164,12 @@ class device_rs232_port_interface : public device_slot_card_interface
friend class rs232_port_device;
public:
- device_rs232_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_rs232_port_interface();
- virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_dtr ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_rts ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_etc ) {}
+ virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_dtr ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_rts ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_etc ) { }
DECLARE_WRITE_LINE_MEMBER( output_rxd ) { m_port->m_rxd = state; m_port->m_rxd_handler(state); }
DECLARE_WRITE_LINE_MEMBER( output_dcd ) { m_port->m_dcd = state; m_port->m_dcd_handler(state); }
@@ -178,6 +178,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( output_cts ) { m_port->m_cts = state; m_port->m_cts_handler(state); }
protected:
+ device_rs232_port_interface(const machine_config &mconfig, device_t &device);
+
rs232_port_device *m_port;
static int convert_baud(uint8_t baud)
@@ -265,8 +267,8 @@ public:
}
protected:
- buffered_rs232_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ buffered_rs232_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_buffered_serial_interface<FIFO_LENGTH>(mconfig, *this)
, device_rs232_port_interface(mconfig, *this)
{
@@ -285,8 +287,8 @@ protected:
using device_buffered_serial_interface<FIFO_LENGTH>::device_timer;
};
-extern const device_type RS232_PORT;
+DECLARE_DEVICE_TYPE(RS232_PORT, rs232_port_device)
SLOT_INTERFACE_EXTERN( default_rs232_devices );
-#endif // MAME_BUS_RS232_H
+#endif // MAME_BUS_RS232_RS232_H
diff --git a/src/devices/bus/rs232/ser_mouse.cpp b/src/devices/bus/rs232/ser_mouse.cpp
index 508e4072741..d84f9a4d5f3 100644
--- a/src/devices/bus/rs232/ser_mouse.cpp
+++ b/src/devices/bus/rs232/ser_mouse.cpp
@@ -12,8 +12,8 @@
#include "ser_mouse.h"
-serial_mouse_device::serial_mouse_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+serial_mouse_device::serial_mouse_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_rs232_port_interface(mconfig, *this),
device_serial_interface(mconfig, *this),
m_dtr(1),
@@ -29,17 +29,17 @@ serial_mouse_device::serial_mouse_device(const machine_config &mconfig, device_t
{
}
-const device_type MSFT_SERIAL_MOUSE = device_creator<microsoft_mouse_device>;
+DEFINE_DEVICE_TYPE(MSFT_SERIAL_MOUSE, microsoft_mouse_device, "microsoft_mouse", "Microsoft Serial Mouse")
microsoft_mouse_device::microsoft_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : serial_mouse_device(mconfig, MSFT_SERIAL_MOUSE, "Microsoft Serial Mouse", tag, owner, clock, "microsoft_mouse", __FILE__)
+ : serial_mouse_device(mconfig, MSFT_SERIAL_MOUSE, tag, owner, clock)
{
}
-const device_type MSYSTEM_SERIAL_MOUSE = device_creator<mouse_systems_mouse_device>;
+DEFINE_DEVICE_TYPE(MSYSTEM_SERIAL_MOUSE, mouse_systems_mouse_device, "mouse_systems_mouse", "Mouse Systems Serial Mouse")
mouse_systems_mouse_device::mouse_systems_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : serial_mouse_device(mconfig, MSYSTEM_SERIAL_MOUSE, "Mouse Systems Serial Mouse", tag, owner, clock, "mouse_systems_mouse", __FILE__)
+ : serial_mouse_device(mconfig, MSYSTEM_SERIAL_MOUSE, tag, owner, clock)
{
}
diff --git a/src/devices/bus/rs232/ser_mouse.h b/src/devices/bus/rs232/ser_mouse.h
index 0e001916d83..28d6e73d0d3 100644
--- a/src/devices/bus/rs232/ser_mouse.h
+++ b/src/devices/bus/rs232/ser_mouse.h
@@ -6,8 +6,8 @@
*
****************************************************************************/
-#ifndef SER_MOUSE_H_
-#define SER_MOUSE_H_
+#ifndef MAME_BUS_RS232_SER_MOUSE_H
+#define MAME_BUS_RS232_SER_MOUSE_H
#include "rs232.h"
@@ -17,13 +17,14 @@ class serial_mouse_device :
public device_serial_interface
{
public:
- serial_mouse_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
virtual ioport_constructor device_input_ports() const override;
protected:
+ serial_mouse_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
virtual void mouse_trans(int dx, int dy, int nb, int mbc) = 0;
virtual void set_frame() = 0;
void set_mouse_enable(bool state);
@@ -35,10 +36,13 @@ protected:
virtual WRITE_LINE_MEMBER(input_dtr) override;
virtual WRITE_LINE_MEMBER(input_rts) override;
+
int m_dtr;
int m_rts;
private:
+ void check_state() { set_mouse_enable(!m_dtr && !m_rts); }
+
uint8_t m_queue[256];
uint8_t m_head, m_tail, m_mb;
@@ -48,8 +52,6 @@ private:
required_ioport m_x;
required_ioport m_y;
required_ioport m_btn;
-
- void check_state() { set_mouse_enable(!m_dtr && !m_rts); }
};
class microsoft_mouse_device : public serial_mouse_device
@@ -64,7 +66,7 @@ protected:
virtual void mouse_trans(int dx, int dy, int nb, int mbc) override;
};
-extern const device_type MSFT_SERIAL_MOUSE;
+DECLARE_DEVICE_TYPE(MSFT_SERIAL_MOUSE, microsoft_mouse_device)
class mouse_systems_mouse_device : public serial_mouse_device
{
@@ -76,6 +78,6 @@ protected:
virtual void mouse_trans(int dx, int dy, int nb, int mbc) override;
};
-extern const device_type MSYSTEM_SERIAL_MOUSE;
+DECLARE_DEVICE_TYPE(MSYSTEM_SERIAL_MOUSE, mouse_systems_mouse_device)
-#endif /* SER_MOUSE_H_ */
+#endif // MAME_BUS_RS232_SER_MOUSE_H
diff --git a/src/devices/bus/rs232/sun_kbd.cpp b/src/devices/bus/rs232/sun_kbd.cpp
index a5e851c8d15..7e427efa78a 100644
--- a/src/devices/bus/rs232/sun_kbd.cpp
+++ b/src/devices/bus/rs232/sun_kbd.cpp
@@ -2,7 +2,7 @@
#include "sun_kbd.h"
-device_type const SUN_KBD_ADAPTOR = device_creator<sun_keyboard_adaptor_device>;
+DEFINE_DEVICE_TYPE(SUN_KBD_ADAPTOR, sun_keyboard_adaptor_device, "sunkbd_adaptor", "Sun Keyboard Adaptor")
namespace {
@@ -18,7 +18,7 @@ sun_keyboard_adaptor_device::sun_keyboard_adaptor_device(
char const *tag,
device_t *owner,
uint32_t clock)
- : device_t(mconfig, SUN_KBD_ADAPTOR, "Sun Keyboard Adaptor", tag, owner, clock, "sunkbd_adaptor", __FILE__)
+ : device_t(mconfig, SUN_KBD_ADAPTOR, tag, owner, clock)
, device_rs232_port_interface(mconfig, *this)
, m_keyboard_port(*this, "keyboard")
{
diff --git a/src/devices/bus/rs232/sun_kbd.h b/src/devices/bus/rs232/sun_kbd.h
index 8154eaca57d..681bd5a9781 100644
--- a/src/devices/bus/rs232/sun_kbd.h
+++ b/src/devices/bus/rs232/sun_kbd.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
-#ifndef MAME_DEVICES_RS232_SUN_KBD_H
-#define MAME_DEVICES_RS232_SUN_KBD_H
+#ifndef MAME_BUS_RS232_SUN_KBD_H
+#define MAME_BUS_RS232_SUN_KBD_H
#pragma once
@@ -9,7 +9,7 @@
#include "bus/sunkbd/sunkbd.h"
-extern device_type const SUN_KBD_ADAPTOR;
+DECLARE_DEVICE_TYPE(SUN_KBD_ADAPTOR, sun_keyboard_adaptor_device)
class sun_keyboard_adaptor_device : public device_t, public device_rs232_port_interface
@@ -30,4 +30,4 @@ private:
required_device<sun_keyboard_port_device> m_keyboard_port;
};
-#endif // MAME_DEVICES_RS232_SUN_KBD_H
+#endif // MAME_BUS_RS232_SUN_KBD_H
diff --git a/src/devices/bus/rs232/terminal.cpp b/src/devices/bus/rs232/terminal.cpp
index 5835500b5fb..6d28eee7a0b 100644
--- a/src/devices/bus/rs232/terminal.cpp
+++ b/src/devices/bus/rs232/terminal.cpp
@@ -4,7 +4,7 @@
#include "terminal.h"
serial_terminal_device::serial_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_terminal_device(mconfig, SERIAL_TERMINAL, "Serial Terminal", tag, owner, clock, "serial_terminal", __FILE__)
+ : generic_terminal_device(mconfig, SERIAL_TERMINAL, tag, owner, clock, TERMINAL_WIDTH, TERMINAL_HEIGHT)
, device_buffered_serial_interface(mconfig, *this)
, device_rs232_port_interface(mconfig, *this)
, m_rs232_txbaud(*this, "RS232_TXBAUD")
@@ -93,4 +93,4 @@ void serial_terminal_device::received_byte(uint8_t byte)
term_write(byte);
}
-const device_type SERIAL_TERMINAL = device_creator<serial_terminal_device>;
+DEFINE_DEVICE_TYPE(SERIAL_TERMINAL, serial_terminal_device, "serial_terminal", "Serial Terminal")
diff --git a/src/devices/bus/rs232/terminal.h b/src/devices/bus/rs232/terminal.h
index d9c788a1284..e58b882a96d 100644
--- a/src/devices/bus/rs232/terminal.h
+++ b/src/devices/bus/rs232/terminal.h
@@ -38,6 +38,6 @@ private:
required_ioport m_rs232_stopbits;
};
-extern const device_type SERIAL_TERMINAL;
+DECLARE_DEVICE_TYPE(SERIAL_TERMINAL, serial_terminal_device)
#endif // MAME_BUS_RS232_TERMINAL_H
diff --git a/src/devices/bus/rs232/xvd701.cpp b/src/devices/bus/rs232/xvd701.cpp
index 6b94b0e2cb6..f6f88186044 100644
--- a/src/devices/bus/rs232/xvd701.cpp
+++ b/src/devices/bus/rs232/xvd701.cpp
@@ -4,7 +4,7 @@
#include "xvd701.h"
jvc_xvd701_device::jvc_xvd701_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, JVC_XVD701, "JVC XV-D701", tag, owner, clock, "xvd701", __FILE__),
+ : device_t(mconfig, JVC_XVD701, tag, owner, clock),
device_serial_interface(mconfig, *this),
device_rs232_port_interface(mconfig, *this),
m_response_index(0),
@@ -150,4 +150,4 @@ void jvc_xvd701_device::rcv_complete()
}
}
-const device_type JVC_XVD701 = device_creator<jvc_xvd701_device>;
+DEFINE_DEVICE_TYPE(JVC_XVD701, jvc_xvd701_device, "xvd701", "JVC XV-D701")
diff --git a/src/devices/bus/rs232/xvd701.h b/src/devices/bus/rs232/xvd701.h
index 9c3c361b050..b1a73455d3f 100644
--- a/src/devices/bus/rs232/xvd701.h
+++ b/src/devices/bus/rs232/xvd701.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef JVC_XV701_H_
-#define JVC_XV701_H_
+#ifndef MAME_BUS_RS232_XVD701_H
+#define MAME_BUS_RS232_XVD701_H
#include "rs232.h"
@@ -25,7 +25,7 @@ protected:
virtual void rcv_complete() override;
private:
- static const int TIMER_RESPONSE = 1;
+ static constexpr int TIMER_RESPONSE = 1;
void send_response();
unsigned char sum(unsigned char *buffer, int length);
@@ -36,6 +36,6 @@ private:
emu_timer *m_timer_response;
};
-extern const device_type JVC_XVD701;
+DECLARE_DEVICE_TYPE(JVC_XVD701, jvc_xvd701_device)
-#endif
+#endif // MAME_BUS_RS232_XVD701_H
diff --git a/src/devices/bus/s100/dj2db.cpp b/src/devices/bus/s100/dj2db.cpp
index f83d7e3a420..f68a879d033 100644
--- a/src/devices/bus/s100/dj2db.cpp
+++ b/src/devices/bus/s100/dj2db.cpp
@@ -33,7 +33,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type S100_DJ2DB = device_creator<s100_dj2db_device>;
+DEFINE_DEVICE_TYPE(S100_DJ2DB, s100_dj2db_device, "s100_sj2db", "Morrow Disk Jockey 2D/B")
//-------------------------------------------------
@@ -252,7 +252,7 @@ ioport_constructor s100_dj2db_device::device_input_ports() const
//-------------------------------------------------
s100_dj2db_device::s100_dj2db_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, S100_DJ2DB, "DJ2DB", tag, owner, clock, "dj2db", __FILE__),
+ device_t(mconfig, S100_DJ2DB, tag, owner, clock),
device_s100_card_interface(mconfig, *this),
m_fdc(*this, MB8866_TAG),
m_dbrg(*this, BR1941_TAG),
diff --git a/src/devices/bus/s100/dj2db.h b/src/devices/bus/s100/dj2db.h
index 19f611a5f07..8614a12f34d 100644
--- a/src/devices/bus/s100/dj2db.h
+++ b/src/devices/bus/s100/dj2db.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_S100_DJ2DB_H
+#define MAME_BUS_S100_DJ2DB_H
-#ifndef __S100_DJ2DB__
-#define __S100_DJ2DB__
+#pragma once
#include "s100.h"
#include "machine/com8116.h"
@@ -54,7 +54,7 @@ protected:
private:
// internal state
- required_device<mb8866_t> m_fdc;
+ required_device<mb8866_device> m_fdc;
required_device<com8116_device> m_dbrg;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
@@ -81,7 +81,6 @@ private:
// device type definition
-extern const device_type S100_DJ2DB;
-
+DECLARE_DEVICE_TYPE(S100_DJ2DB, s100_dj2db_device)
-#endif
+#endif // MAME_BUS_S100_DJ2DB_H
diff --git a/src/devices/bus/s100/djdma.cpp b/src/devices/bus/s100/djdma.cpp
index ef6b93353a3..c1d04275779 100644
--- a/src/devices/bus/s100/djdma.cpp
+++ b/src/devices/bus/s100/djdma.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type S100_DJDMA = device_creator<s100_djdma_device>;
+DEFINE_DEVICE_TYPE(S100_DJDMA, s100_djdma_device, "s100_djdma", "Morrow Disk Jockey/DMA")
//-------------------------------------------------
@@ -104,7 +104,7 @@ machine_config_constructor s100_djdma_device::device_mconfig_additions() const
//-------------------------------------------------
s100_djdma_device::s100_djdma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, S100_DJDMA, "DJDMA", tag, owner, clock, "djdma", __FILE__),
+ device_t(mconfig, S100_DJDMA, tag, owner, clock),
device_s100_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/s100/djdma.h b/src/devices/bus/s100/djdma.h
index 083b1a5b05b..3e25ee93f77 100644
--- a/src/devices/bus/s100/djdma.h
+++ b/src/devices/bus/s100/djdma.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_S100_DJDMA_H
+#define MAME_BUS_S100_DJDMA_H
-#ifndef __S100_DJDMA__
-#define __S100_DJDMA__
+#pragma once
#include "s100.h"
#include "cpu/z80/z80.h"
@@ -41,7 +41,6 @@ protected:
// device type definition
-extern const device_type S100_DJDMA;
-
+DECLARE_DEVICE_TYPE(S100_DJDMA, s100_djdma_device)
-#endif
+#endif // MAME_BUS_S100_DJDMA_H
diff --git a/src/devices/bus/s100/mm65k16s.cpp b/src/devices/bus/s100/mm65k16s.cpp
index 4026d17385e..2cc3edabb58 100644
--- a/src/devices/bus/s100/mm65k16s.cpp
+++ b/src/devices/bus/s100/mm65k16s.cpp
@@ -22,7 +22,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type S100_MM65K16S = device_creator<s100_mm65k16s_device>;
+DEFINE_DEVICE_TYPE(S100_MM65K16S, s100_mm65k16s_device, "s100_mm65k16s", "Morrow MM65K16S")
//-------------------------------------------------
@@ -203,7 +203,7 @@ ioport_constructor s100_mm65k16s_device::device_input_ports() const
//-------------------------------------------------
s100_mm65k16s_device::s100_mm65k16s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, S100_MM65K16S, "MM65K16S", tag, owner, clock, "mm65k16s", __FILE__),
+ device_t(mconfig, S100_MM65K16S, tag, owner, clock),
device_s100_card_interface(mconfig, *this),
m_ram(*this, "ram")
{
diff --git a/src/devices/bus/s100/mm65k16s.h b/src/devices/bus/s100/mm65k16s.h
index 82028856c05..e46d13f955e 100644
--- a/src/devices/bus/s100/mm65k16s.h
+++ b/src/devices/bus/s100/mm65k16s.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_S100_MM65K16S_H
+#define MAME_BUS_S100_MM65K16S_H
-#ifndef __S100_MM65K16S__
-#define __S100_MM65K16S__
+#pragma once
#include "s100.h"
@@ -48,7 +48,6 @@ private:
// device type definition
-extern const device_type S100_MM65K16S;
-
+DECLARE_DEVICE_TYPE(S100_MM65K16S, s100_mm65k16s_device)
-#endif
+#endif // MAME_BUS_S100_MM65K16S_H
diff --git a/src/devices/bus/s100/nsmdsa.cpp b/src/devices/bus/s100/nsmdsa.cpp
index 956dc3b081e..495026c0f37 100644
--- a/src/devices/bus/s100/nsmdsa.cpp
+++ b/src/devices/bus/s100/nsmdsa.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type S100_MDS_A = device_creator<s100_mds_a_device>;
+DEFINE_DEVICE_TYPE(S100_MDS_A, s100_mds_a_device, "s100_nsmdsa", "North Star MDS-A")
//-------------------------------------------------
@@ -83,7 +83,7 @@ machine_config_constructor s100_mds_a_device::device_mconfig_additions() const
//-------------------------------------------------
s100_mds_a_device::s100_mds_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, S100_MDS_A, "MDS-A", tag, owner, clock, "nsmdsa", __FILE__),
+ device_t(mconfig, S100_MDS_A, tag, owner, clock),
device_s100_card_interface(mconfig, *this),
m_floppy0(*this, "floppy0"),
m_floppy1(*this, "floppy1"),
diff --git a/src/devices/bus/s100/nsmdsa.h b/src/devices/bus/s100/nsmdsa.h
index 875b62b4ca0..3bf167732b6 100644
--- a/src/devices/bus/s100/nsmdsa.h
+++ b/src/devices/bus/s100/nsmdsa.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_S100_NSMDSA_H
+#define MAME_BUS_S100_NSMDSA_H
-#ifndef __S100_MDS_A__
-#define __S100_MDS_A__
+#pragma once
#include "s100.h"
#include "imagedev/floppy.h"
@@ -50,8 +50,6 @@ private:
// device type definition
-extern const device_type S100_MDS_A;
-
-
+DECLARE_DEVICE_TYPE(S100_MDS_A, s100_mds_a_device)
-#endif
+#endif // MAME_BUS_S100_NSMDSA_H
diff --git a/src/devices/bus/s100/nsmdsad.cpp b/src/devices/bus/s100/nsmdsad.cpp
index 4cb2da40d0f..69b98dbef0a 100644
--- a/src/devices/bus/s100/nsmdsad.cpp
+++ b/src/devices/bus/s100/nsmdsad.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type S100_MDS_AD = device_creator<s100_mds_ad_device>;
+DEFINE_DEVICE_TYPE(S100_MDS_AD, s100_mds_ad_device, "s100_nsmdsad", "North Star MDS-A-D")
//-------------------------------------------------
@@ -84,7 +84,7 @@ machine_config_constructor s100_mds_ad_device::device_mconfig_additions() const
//-------------------------------------------------
s100_mds_ad_device::s100_mds_ad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, S100_MDS_AD, "MDS-A-D", tag, owner, clock, "nsmdsad", __FILE__),
+ device_t(mconfig, S100_MDS_AD, tag, owner, clock),
device_s100_card_interface(mconfig, *this),
m_floppy0(*this, "floppy0"),
m_floppy1(*this, "floppy1"),
diff --git a/src/devices/bus/s100/nsmdsad.h b/src/devices/bus/s100/nsmdsad.h
index 54794e906c6..0affdd595c8 100644
--- a/src/devices/bus/s100/nsmdsad.h
+++ b/src/devices/bus/s100/nsmdsad.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_S100_NSMDSAD_H
+#define MAME_BUS_S100_NSMDSAD_H
-#ifndef __S100_MDS_AD__
-#define __S100_MDS_AD__
+#pragma once
#include "s100.h"
#include "imagedev/floppy.h"
@@ -51,8 +51,6 @@ private:
// device type definition
-extern const device_type S100_MDS_AD;
-
-
+DECLARE_DEVICE_TYPE(S100_MDS_AD, s100_mds_ad_device)
-#endif
+#endif // MAME_BUS_S100_NSMDSAD_H
diff --git a/src/devices/bus/s100/s100.cpp b/src/devices/bus/s100/s100.cpp
index 628daf29222..079d41a7a18 100644
--- a/src/devices/bus/s100/s100.cpp
+++ b/src/devices/bus/s100/s100.cpp
@@ -14,8 +14,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type S100_BUS = device_creator<s100_bus_t>;
-const device_type S100_SLOT = device_creator<s100_slot_t>;
+DEFINE_DEVICE_TYPE(S100_BUS, s100_bus_device, "s100_bus", "S100 bus")
+DEFINE_DEVICE_TYPE(S100_SLOT, s100_slot_device, "s100_slot", "S100 slot")
@@ -27,8 +27,8 @@ const device_type S100_SLOT = device_creator<s100_slot_t>;
// device_s100_card_interface - constructor
//-------------------------------------------------
-device_s100_card_interface::device_s100_card_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
+device_s100_card_interface::device_s100_card_interface(const machine_config &mconfig, device_t &device) :
+ device_slot_card_interface(mconfig, device),
m_bus(nullptr),
m_next(nullptr)
{
@@ -36,11 +36,12 @@ device_s100_card_interface::device_s100_card_interface(const machine_config &mco
//-------------------------------------------------
-// s100_slot_t - constructor
+// s100_slot_device - constructor
//-------------------------------------------------
-s100_slot_t::s100_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, S100_SLOT, "S100 slot", tag, owner, clock, "s100_slot", __FILE__),
- device_slot_interface(mconfig, *this), m_bus(nullptr)
+s100_slot_device::s100_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, S100_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_bus(nullptr)
{
}
@@ -49,20 +50,20 @@ s100_slot_t::s100_slot_t(const machine_config &mconfig, const char *tag, device_
// device_start - device-specific startup
//-------------------------------------------------
-void s100_slot_t::device_start()
+void s100_slot_device::device_start()
{
- m_bus = machine().device<s100_bus_t>(S100_TAG);
+ m_bus = machine().device<s100_bus_device>(S100_TAG);
device_s100_card_interface *dev = dynamic_cast<device_s100_card_interface *>(get_card_device());
if (dev) m_bus->add_card(dev);
}
//-------------------------------------------------
-// s100_bus_t - constructor
+// s100_bus_device - constructor
//-------------------------------------------------
-s100_bus_t::s100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, S100_BUS, "S100", tag, owner, clock, "s100", __FILE__),
+s100_bus_device::s100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, S100_BUS, tag, owner, clock),
m_write_irq(*this),
m_write_nmi(*this),
m_write_vi0(*this),
@@ -88,7 +89,7 @@ s100_bus_t::s100_bus_t(const machine_config &mconfig, const char *tag, device_t
// device_start - device-specific startup
//-------------------------------------------------
-void s100_bus_t::device_start()
+void s100_bus_device::device_start()
{
// resolve callbacks
m_write_irq.resolve_safe();
@@ -115,7 +116,7 @@ void s100_bus_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void s100_bus_t::device_reset()
+void s100_bus_device::device_reset()
{
}
@@ -124,7 +125,7 @@ void s100_bus_t::device_reset()
// add_card - add card
//-------------------------------------------------
-void s100_bus_t::add_card(device_s100_card_interface *card)
+void s100_bus_device::add_card(device_s100_card_interface *card)
{
card->m_bus = this;
m_device_list.append(*card);
@@ -135,7 +136,7 @@ void s100_bus_t::add_card(device_s100_card_interface *card)
// smemr_r - memory read
//-------------------------------------------------
-READ8_MEMBER( s100_bus_t::smemr_r )
+READ8_MEMBER( s100_bus_device::smemr_r )
{
uint8_t data = 0;
@@ -155,7 +156,7 @@ READ8_MEMBER( s100_bus_t::smemr_r )
// mwrt_w - memory write
//-------------------------------------------------
-WRITE8_MEMBER( s100_bus_t::mwrt_w )
+WRITE8_MEMBER( s100_bus_device::mwrt_w )
{
device_s100_card_interface *entry = m_device_list.first();
@@ -171,7 +172,7 @@ WRITE8_MEMBER( s100_bus_t::mwrt_w )
// sinp_r - I/O read
//-------------------------------------------------
-READ8_MEMBER( s100_bus_t::sinp_r )
+READ8_MEMBER( s100_bus_device::sinp_r )
{
uint8_t data = 0;
@@ -191,7 +192,7 @@ READ8_MEMBER( s100_bus_t::sinp_r )
// sout_w - I/O write
//-------------------------------------------------
-WRITE8_MEMBER( s100_bus_t::sout_w )
+WRITE8_MEMBER( s100_bus_device::sout_w )
{
device_s100_card_interface *entry = m_device_list.first();
diff --git a/src/devices/bus/s100/s100.h b/src/devices/bus/s100/s100.h
index 44f2d642770..a4eef9f5f83 100644
--- a/src/devices/bus/s100/s100.h
+++ b/src/devices/bus/s100/s100.h
@@ -59,10 +59,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_S100_S100_H
+#define MAME_BUS_S100_S100_H
-#ifndef __S100__
-#define __S100__
+#pragma once
@@ -88,55 +88,55 @@
#define MCFG_S100_IRQ_CALLBACK(_write) \
- devcb = &s100_bus_t::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_irq_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_NMI_CALLBACK(_write) \
- devcb = &s100_bus_t::set_nmi_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_nmi_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_VI0_CALLBACK(_write) \
- devcb = &s100_bus_t::set_vi0_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_vi0_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_VI1_CALLBACK(_write) \
- devcb = &s100_bus_t::set_vi1_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_vi1_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_VI2_CALLBACK(_write) \
- devcb = &s100_bus_t::set_vi2_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_vi2_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_VI3_CALLBACK(_write) \
- devcb = &s100_bus_t::set_vi3_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_vi3_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_VI4_CALLBACK(_write) \
- devcb = &s100_bus_t::set_vi4_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_vi4_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_VI5_CALLBACK(_write) \
- devcb = &s100_bus_t::set_vi5_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_vi5_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_VI6_CALLBACK(_write) \
- devcb = &s100_bus_t::set_vi6_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_vi6_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_VI7_CALLBACK(_write) \
- devcb = &s100_bus_t::set_vi7_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_vi7_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_DMA0_CALLBACK(_write) \
- devcb = &s100_bus_t::set_dma0_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_dma0_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_DMA1_CALLBACK(_write) \
- devcb = &s100_bus_t::set_dma1_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_dma1_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_DMA2_CALLBACK(_write) \
- devcb = &s100_bus_t::set_dma2_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_dma2_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_DMA3_CALLBACK(_write) \
- devcb = &s100_bus_t::set_dma3_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_dma3_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_RDY_CALLBACK(_write) \
- devcb = &s100_bus_t::set_rdy_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_rdy_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_HOLD_CALLBACK(_write) \
- devcb = &s100_bus_t::set_hold_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_hold_wr_callback(*device, DEVCB_##_write);
#define MCFG_S100_ERROR_CALLBACK(_write) \
- devcb = &s100_bus_t::set_error_wr_callback(*device, DEVCB_##_write);
+ devcb = &s100_bus_device::set_error_wr_callback(*device, DEVCB_##_write);
@@ -144,43 +144,40 @@
// TYPE DEFINITIONS
//**************************************************************************
-class s100_bus_t;
+class s100_bus_device;
// ======================> device_s100_card_interface
class device_s100_card_interface : public device_slot_card_interface
{
- friend class s100_bus_t;
+ friend class s100_bus_device;
+ template <class ElementType> friend class simple_list;
public:
- // construction/destruction
- device_s100_card_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_s100_card_interface() { }
-
device_s100_card_interface *next() const { return m_next; }
// interrupts
- virtual void s100_int_w(int state) { };
- virtual void s100_nmi_w(int state) { };
- virtual uint8_t s100_sinta_r(offs_t offset) { return 0; };
+ virtual void s100_int_w(int state) { }
+ virtual void s100_nmi_w(int state) { }
+ virtual uint8_t s100_sinta_r(offs_t offset) { return 0; }
// vectored interrupts
- virtual void s100_vi0_w(int state) { };
- virtual void s100_vi1_w(int state) { };
- virtual void s100_vi2_w(int state) { };
- virtual void s100_vi3_w(int state) { };
- virtual void s100_vi4_w(int state) { };
- virtual void s100_vi5_w(int state) { };
- virtual void s100_vi6_w(int state) { };
- virtual void s100_vi7_w(int state) { };
+ virtual void s100_vi0_w(int state) { }
+ virtual void s100_vi1_w(int state) { }
+ virtual void s100_vi2_w(int state) { }
+ virtual void s100_vi3_w(int state) { }
+ virtual void s100_vi4_w(int state) { }
+ virtual void s100_vi5_w(int state) { }
+ virtual void s100_vi6_w(int state) { }
+ virtual void s100_vi7_w(int state) { }
// memory access
- virtual uint8_t s100_smemr_r(address_space &space, offs_t offset) { return 0; };
- virtual void s100_mwrt_w(address_space &space, offs_t offset, uint8_t data) { };
+ virtual uint8_t s100_smemr_r(address_space &space, offs_t offset) { return 0; }
+ virtual void s100_mwrt_w(address_space &space, offs_t offset, uint8_t data) { }
// I/O access
- virtual uint8_t s100_sinp_r(address_space &space, offs_t offset) { return 0; };
- virtual void s100_sout_w(address_space &space, offs_t offset, uint8_t data) { };
+ virtual uint8_t s100_sinp_r(address_space &space, offs_t offset) { return 0; }
+ virtual void s100_sout_w(address_space &space, offs_t offset, uint8_t data) { }
// configuration access
virtual void s100_phlda_w(int state) { }
@@ -194,39 +191,44 @@ public:
virtual void s100_reset_w(int state) { }
virtual void s100_slave_clr_w(int state) { }
-public:
- s100_bus_t *m_bus;
+protected:
+ // construction/destruction
+ device_s100_card_interface(const machine_config &mconfig, device_t &device);
+
+ s100_bus_device *m_bus;
+
+private:
device_s100_card_interface *m_next;
};
-// ======================> s100_bus_t
+// ======================> s100_bus_device
-class s100_bus_t : public device_t
+class s100_bus_device : public device_t
{
public:
// construction/destruction
- s100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~s100_bus_t() { m_device_list.detach_all(); }
-
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_nmi.set_callback(object); }
- template<class _Object> static devcb_base &set_vi0_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi0.set_callback(object); }
- template<class _Object> static devcb_base &set_vi1_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi1.set_callback(object); }
- template<class _Object> static devcb_base &set_vi2_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi2.set_callback(object); }
- template<class _Object> static devcb_base &set_vi3_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi3.set_callback(object); }
- template<class _Object> static devcb_base &set_vi4_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi4.set_callback(object); }
- template<class _Object> static devcb_base &set_vi5_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi5.set_callback(object); }
- template<class _Object> static devcb_base &set_vi6_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi6.set_callback(object); }
- template<class _Object> static devcb_base &set_vi7_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi7.set_callback(object); }
- template<class _Object> static devcb_base &set_dma0_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma0.set_callback(object); }
- template<class _Object> static devcb_base &set_dma1_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma1.set_callback(object); }
- template<class _Object> static devcb_base &set_dma2_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma2.set_callback(object); }
- template<class _Object> static devcb_base &set_dma3_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma3.set_callback(object); }
- template<class _Object> static devcb_base &set_rdy_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_rdy.set_callback(object); }
- template<class _Object> static devcb_base &set_hold_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_hold.set_callback(object); }
- template<class _Object> static devcb_base &set_error_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_error.set_callback(object); }
+ s100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ~s100_bus_device() { m_device_list.detach_all(); }
+
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vi0_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vi1_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vi2_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vi3_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vi4_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vi5_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi5.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vi6_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi6.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vi7_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi7.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma0_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma1_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma2_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma3_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rdy_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_rdy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hold_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_hold.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); }
void add_card(device_s100_card_interface *card);
@@ -282,29 +284,25 @@ private:
};
-// ======================> s100_slot_t
+// ======================> s100_slot_device
-class s100_slot_t : public device_t,
- public device_slot_interface
+class s100_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
- s100_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ s100_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
private:
- s100_bus_t *m_bus;
+ s100_bus_device *m_bus;
};
// device type definition
-extern const device_type S100_BUS;
-extern const device_type S100_SLOT;
-
-
-
+DECLARE_DEVICE_TYPE(S100_BUS, s100_bus_device)
+DECLARE_DEVICE_TYPE(S100_SLOT, s100_slot_device)
-#endif
+#endif // MAME_BUS_S100_S100_H
diff --git a/src/devices/bus/s100/wunderbus.cpp b/src/devices/bus/s100/wunderbus.cpp
index 09ee10d71e1..dd89f1c5d52 100644
--- a/src/devices/bus/s100/wunderbus.cpp
+++ b/src/devices/bus/s100/wunderbus.cpp
@@ -31,7 +31,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type S100_WUNDERBUS = device_creator<s100_wunderbus_device>;
+DEFINE_DEVICE_TYPE(S100_WUNDERBUS, s100_wunderbus_device, "s100_wunderbus", "Morrow Winderbus I/O")
//-------------------------------------------------
@@ -238,7 +238,7 @@ ioport_constructor s100_wunderbus_device::device_input_ports() const
//-------------------------------------------------
s100_wunderbus_device::s100_wunderbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, S100_WUNDERBUS, "Wunderbus I/O", tag, owner, clock, "s100_wunderbus", __FILE__),
+ device_t(mconfig, S100_WUNDERBUS, tag, owner, clock),
device_s100_card_interface(mconfig, *this),
m_pic(*this, I8259A_TAG),
m_ace1(*this, INS8250_1_TAG),
diff --git a/src/devices/bus/s100/wunderbus.h b/src/devices/bus/s100/wunderbus.h
index 5d2e37ed48b..4b1d5554e06 100644
--- a/src/devices/bus/s100/wunderbus.h
+++ b/src/devices/bus/s100/wunderbus.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_S100_WUNDERBUS_H
+#define MAME_BUS_S100_WUNDERBUS_H
-#ifndef __S100_WUNDERBUS__
-#define __S100_WUNDERBUS__
+#pragma once
#include "s100.h"
#include "machine/ins8250.h"
@@ -66,7 +66,6 @@ private:
// device type definition
-extern const device_type S100_WUNDERBUS;
-
+DECLARE_DEVICE_TYPE(S100_WUNDERBUS, s100_wunderbus_device)
-#endif
+#endif // MAME_BUS_S100_WUNDERBUS_H
diff --git a/src/devices/bus/sat_ctrl/analog.cpp b/src/devices/bus/sat_ctrl/analog.cpp
index 1ac30a9bd3a..6e513b18d47 100644
--- a/src/devices/bus/sat_ctrl/analog.cpp
+++ b/src/devices/bus/sat_ctrl/analog.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SATURN_ANALOG = device_creator<saturn_analog_device>;
+DEFINE_DEVICE_TYPE(SATURN_ANALOG, saturn_analog_device, "saturn_analog", "Sega Saturn Analog Controller")
static INPUT_PORTS_START( saturn_analog )
@@ -64,12 +64,12 @@ ioport_constructor saturn_analog_device::device_input_ports() const
//-------------------------------------------------
saturn_analog_device::saturn_analog_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_ANALOG, "Sega Saturn Analog Controller", tag, owner, clock, "saturn_analog", __FILE__),
- device_saturn_control_port_interface(mconfig, *this),
- m_joy(*this, "JOY"),
- m_anx(*this, "ANALOG_X"),
- m_any(*this, "ANALOG_Y"),
- m_anz(*this, "ANALOG_Z")
+ device_t(mconfig, SATURN_ANALOG, tag, owner, clock),
+ device_saturn_control_port_interface(mconfig, *this),
+ m_joy(*this, "JOY"),
+ m_anx(*this, "ANALOG_X"),
+ m_any(*this, "ANALOG_Y"),
+ m_anz(*this, "ANALOG_Z")
{
m_ctrl_id = 0x15;
}
diff --git a/src/devices/bus/sat_ctrl/analog.h b/src/devices/bus/sat_ctrl/analog.h
index ec3d211a059..d86313e59a1 100644
--- a/src/devices/bus/sat_ctrl/analog.h
+++ b/src/devices/bus/sat_ctrl/analog.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SAT_CTRL_ANALOG_H
+#define MAME_BUS_SAT_CTRL_ANALOG_H
-#ifndef __SATURN_ANALOG__
-#define __SATURN_ANALOG__
+#pragma once
#include "ctrl.h"
@@ -49,7 +49,6 @@ private:
// device type definition
-extern const device_type SATURN_ANALOG;
-
+DECLARE_DEVICE_TYPE(SATURN_ANALOG, saturn_analog_device)
-#endif
+#endif // MAME_BUS_SAT_CTRL_ANALOG_H
diff --git a/src/devices/bus/sat_ctrl/ctrl.cpp b/src/devices/bus/sat_ctrl/ctrl.cpp
index 24239d0c67f..93a09176aa4 100644
--- a/src/devices/bus/sat_ctrl/ctrl.cpp
+++ b/src/devices/bus/sat_ctrl/ctrl.cpp
@@ -8,6 +8,7 @@
#include "emu.h"
#include "ctrl.h"
+
// slot devices
#include "analog.h"
#include "joy.h"
@@ -24,7 +25,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SATURN_CONTROL_PORT = device_creator<saturn_control_port_device>;
+DEFINE_DEVICE_TYPE(SATURN_CONTROL_PORT, saturn_control_port_device, "saturn_control_port", "Sega Saturn controller port")
//**************************************************************************
@@ -60,8 +61,8 @@ device_saturn_control_port_interface::~device_saturn_control_port_interface()
//-------------------------------------------------
saturn_control_port_device::saturn_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_CONTROL_PORT, "Sega Saturn control port", tag, owner, clock, "saturn_control_port", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr)
+ device_t(mconfig, SATURN_CONTROL_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this), m_device(nullptr)
{
}
diff --git a/src/devices/bus/sat_ctrl/ctrl.h b/src/devices/bus/sat_ctrl/ctrl.h
index 3a03cd2234e..13e30459c01 100644
--- a/src/devices/bus/sat_ctrl/ctrl.h
+++ b/src/devices/bus/sat_ctrl/ctrl.h
@@ -7,10 +7,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SAT_CTRL_CTRL_H
+#define MAME_BUS_SAT_CTRL_CTRL_H
-#ifndef __SATURN_CONTROL_PORT__
-#define __SATURN_CONTROL_PORT__
+#pragma once
//**************************************************************************
@@ -25,15 +25,16 @@ class device_saturn_control_port_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_saturn_control_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_saturn_control_port_interface();
- virtual uint16_t read_direct() { return 0; };
- virtual uint8_t read_ctrl(uint8_t offset) { return 0; };
- virtual uint8_t read_status() { return 0xf0; };
- virtual uint8_t read_id(int idx) { return 0xff; };
+ virtual uint16_t read_direct() { return 0; }
+ virtual uint8_t read_ctrl(uint8_t offset) { return 0; }
+ virtual uint8_t read_status() { return 0xf0; }
+ virtual uint8_t read_id(int idx) { return 0xff; }
protected:
+ device_saturn_control_port_interface(const machine_config &mconfig, device_t &device);
+
uint8_t m_ctrl_id;
saturn_control_port_device *m_port;
};
@@ -62,7 +63,7 @@ protected:
// device type definition
-extern const device_type SATURN_CONTROL_PORT;
+DECLARE_DEVICE_TYPE(SATURN_CONTROL_PORT, saturn_control_port_device)
//**************************************************************************
@@ -78,4 +79,4 @@ SLOT_INTERFACE_EXTERN( saturn_controls );
SLOT_INTERFACE_EXTERN( saturn_joys );
-#endif
+#endif // MAME_BUS_SAT_CTRL_CTRL_H
diff --git a/src/devices/bus/sat_ctrl/joy.cpp b/src/devices/bus/sat_ctrl/joy.cpp
index cabc0438304..f44b0f6b4ee 100644
--- a/src/devices/bus/sat_ctrl/joy.cpp
+++ b/src/devices/bus/sat_ctrl/joy.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SATURN_JOY = device_creator<saturn_joy_device>;
+DEFINE_DEVICE_TYPE(SATURN_JOY, saturn_joy_device, "saturn_joy", "Sega Saturn Joypad")
static INPUT_PORTS_START( saturn_joy )
@@ -55,9 +55,9 @@ ioport_constructor saturn_joy_device::device_input_ports() const
//-------------------------------------------------
saturn_joy_device::saturn_joy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_JOY, "Sega Saturn Joypad", tag, owner, clock, "saturn_joy", __FILE__),
- device_saturn_control_port_interface(mconfig, *this),
- m_joy(*this, "JOY")
+ device_t(mconfig, SATURN_JOY, tag, owner, clock),
+ device_saturn_control_port_interface(mconfig, *this),
+ m_joy(*this, "JOY")
{
m_ctrl_id = 0x02;
}
diff --git a/src/devices/bus/sat_ctrl/joy.h b/src/devices/bus/sat_ctrl/joy.h
index 6a9b4ca24f7..b4e124fc034 100644
--- a/src/devices/bus/sat_ctrl/joy.h
+++ b/src/devices/bus/sat_ctrl/joy.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SAT_CTRL_JOY_H
+#define MAME_BUS_SAT_CTRL_JOY_H
-#ifndef __SATURN_JOY__
-#define __SATURN_JOY__
+#pragma once
#include "ctrl.h"
@@ -47,7 +47,6 @@ private:
// device type definition
-extern const device_type SATURN_JOY;
-
+DECLARE_DEVICE_TYPE(SATURN_JOY, saturn_joy_device)
-#endif
+#endif // MAME_BUS_SAT_CTRL_JOY_H
diff --git a/src/devices/bus/sat_ctrl/joy_md.cpp b/src/devices/bus/sat_ctrl/joy_md.cpp
index bb6f076b127..987dffcf528 100644
--- a/src/devices/bus/sat_ctrl/joy_md.cpp
+++ b/src/devices/bus/sat_ctrl/joy_md.cpp
@@ -13,8 +13,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SATURN_JOYMD3B = device_creator<saturn_joymd3b_device>;
-const device_type SATURN_JOYMD6B = device_creator<saturn_joymd6b_device>;
+DEFINE_DEVICE_TYPE(SATURN_JOYMD3B, saturn_joymd3b_device, "saturn_md3b", "Sega Saturn Joypad MD 3buttons")
+DEFINE_DEVICE_TYPE(SATURN_JOYMD6B, saturn_joymd6b_device, "saturn_md6b", "Sega Saturn Joypad MD 6buttons")
static INPUT_PORTS_START( saturn_md3b )
PORT_START("JOY")
@@ -71,18 +71,18 @@ ioport_constructor saturn_joymd6b_device::device_input_ports() const
//-------------------------------------------------
saturn_joymd3b_device::saturn_joymd3b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_JOYMD3B, "Sega Saturn Joypad MD 3buttons", tag, owner, clock, "saturn_md3b", __FILE__),
- device_saturn_control_port_interface(mconfig, *this),
- m_joy(*this, "JOY")
+ device_t(mconfig, SATURN_JOYMD3B, tag, owner, clock),
+ device_saturn_control_port_interface(mconfig, *this),
+ m_joy(*this, "JOY")
{
m_ctrl_id = 0xe1;
}
saturn_joymd6b_device::saturn_joymd6b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_JOYMD6B, "Sega Saturn Joypad MD 6buttons", tag, owner, clock, "saturn_md6b", __FILE__),
- device_saturn_control_port_interface(mconfig, *this),
- m_joy(*this, "JOY")
+ device_t(mconfig, SATURN_JOYMD6B, tag, owner, clock),
+ device_saturn_control_port_interface(mconfig, *this),
+ m_joy(*this, "JOY")
{
m_ctrl_id = 0xe2;
}
diff --git a/src/devices/bus/sat_ctrl/joy_md.h b/src/devices/bus/sat_ctrl/joy_md.h
index 5649e5579fc..845c6bce9da 100644
--- a/src/devices/bus/sat_ctrl/joy_md.h
+++ b/src/devices/bus/sat_ctrl/joy_md.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SAT_CTRL_JOY_MD_H
+#define MAME_BUS_SAT_CTRL_JOY_MD_H
-#ifndef __SATURN_MDJOY__
-#define __SATURN_MDJOY__
+#pragma once
#include "ctrl.h"
@@ -32,8 +32,8 @@ public:
protected:
// device-level overrides
- virtual void device_start() override {};
- virtual void device_reset() override {};
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
// device_saturn_control_port_interface overrides
virtual uint8_t read_ctrl(uint8_t offset) override;
@@ -59,8 +59,8 @@ public:
protected:
// device-level overrides
- virtual void device_start() override {};
- virtual void device_reset() override {};
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
// device_saturn_control_port_interface overrides
virtual uint8_t read_ctrl(uint8_t offset) override;
@@ -73,8 +73,8 @@ private:
// device type definition
-extern const device_type SATURN_JOYMD3B;
-extern const device_type SATURN_JOYMD6B;
+DECLARE_DEVICE_TYPE(SATURN_JOYMD3B, saturn_joymd3b_device)
+DECLARE_DEVICE_TYPE(SATURN_JOYMD6B, saturn_joymd6b_device)
-#endif
+#endif // MAME_BUS_SAT_CTRL_JOY_MD_H
diff --git a/src/devices/bus/sat_ctrl/keybd.cpp b/src/devices/bus/sat_ctrl/keybd.cpp
index 6d11b798c9f..be8803e479f 100644
--- a/src/devices/bus/sat_ctrl/keybd.cpp
+++ b/src/devices/bus/sat_ctrl/keybd.cpp
@@ -13,10 +13,10 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SATURN_KEYBD = device_creator<saturn_keybd_device>;
+DEFINE_DEVICE_TYPE(SATURN_KEYBD, saturn_keybd_device, "saturn_keybd", "Sega Saturn Keyboard")
-static INPUT_PORTS_START( saturn_joy )
+static INPUT_PORTS_START( saturn_keybd )
// TODO: there's no info about the keycode used on Saturn keyboard, the following is trial & error with Game Basic software
PORT_START("KEY.0") // 0x00 - 0x07
PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_UNUSED)
@@ -194,7 +194,7 @@ INPUT_PORTS_END
ioport_constructor saturn_keybd_device::device_input_ports() const
{
- return INPUT_PORTS_NAME( saturn_joy );
+ return INPUT_PORTS_NAME( saturn_keybd );
}
@@ -207,10 +207,10 @@ ioport_constructor saturn_keybd_device::device_input_ports() const
//-------------------------------------------------
saturn_keybd_device::saturn_keybd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_KEYBD, "Sega Saturn Keyboard", tag, owner, clock, "saturn_keybd", __FILE__),
- device_saturn_control_port_interface(mconfig, *this),
- m_key(*this, "KEY.%u", 0),
- m_key_s1(*this, "KEYS_1")
+ device_t(mconfig, SATURN_KEYBD, tag, owner, clock),
+ device_saturn_control_port_interface(mconfig, *this),
+ m_key(*this, "KEY.%u", 0),
+ m_key_s1(*this, "KEYS_1")
{
m_ctrl_id = 0x34;
}
diff --git a/src/devices/bus/sat_ctrl/keybd.h b/src/devices/bus/sat_ctrl/keybd.h
index f3d6b5c6b48..dafb932974c 100644
--- a/src/devices/bus/sat_ctrl/keybd.h
+++ b/src/devices/bus/sat_ctrl/keybd.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SAT_CTRL_KEYBD_H
+#define MAME_BUS_SAT_CTRL_KEYBD_H
-#ifndef __SATURN_KEYBD__
-#define __SATURN_KEYBD__
+#pragma once
#include "ctrl.h"
@@ -55,7 +55,6 @@ private:
};
// device type definition
-extern const device_type SATURN_KEYBD;
-
+DECLARE_DEVICE_TYPE(SATURN_KEYBD, saturn_keybd_device)
-#endif
+#endif // MAME_BUS_SAT_CTRL_KEYBD_H
diff --git a/src/devices/bus/sat_ctrl/mouse.cpp b/src/devices/bus/sat_ctrl/mouse.cpp
index 957a3ce2d81..acef9feb8fd 100644
--- a/src/devices/bus/sat_ctrl/mouse.cpp
+++ b/src/devices/bus/sat_ctrl/mouse.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SATURN_MOUSE = device_creator<saturn_mouse_device>;
+DEFINE_DEVICE_TYPE(SATURN_MOUSE, saturn_mouse_device, "saturn_mouse", "Sega Saturn Mouse")
static INPUT_PORTS_START( saturn_mouse )
@@ -52,11 +52,11 @@ ioport_constructor saturn_mouse_device::device_input_ports() const
//-------------------------------------------------
saturn_mouse_device::saturn_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_MOUSE, "Sega Saturn Mouse", tag, owner, clock, "saturn_mouse", __FILE__),
- device_saturn_control_port_interface(mconfig, *this),
- m_pointx(*this, "MOUSE_X"),
- m_pointy(*this, "MOUSE_Y"),
- m_buttons(*this, "BUTTONS")
+ device_t(mconfig, SATURN_MOUSE, tag, owner, clock),
+ device_saturn_control_port_interface(mconfig, *this),
+ m_pointx(*this, "MOUSE_X"),
+ m_pointy(*this, "MOUSE_Y"),
+ m_buttons(*this, "BUTTONS")
{
m_ctrl_id = 0xe3;
}
diff --git a/src/devices/bus/sat_ctrl/mouse.h b/src/devices/bus/sat_ctrl/mouse.h
index c30b011a6db..2b896ca6b49 100644
--- a/src/devices/bus/sat_ctrl/mouse.h
+++ b/src/devices/bus/sat_ctrl/mouse.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SAT_CTRL_MOUSE_H
+#define MAME_BUS_SAT_CTRL_MOUSE_H
-#ifndef __SATURN_MOUSE__
-#define __SATURN_MOUSE__
+#pragma once
#include "ctrl.h"
@@ -48,7 +48,6 @@ private:
// device type definition
-extern const device_type SATURN_MOUSE;
-
+DECLARE_DEVICE_TYPE(SATURN_MOUSE, saturn_mouse_device)
-#endif
+#endif // MAME_BUS_SAT_CTRL_MOUSE_H
diff --git a/src/devices/bus/sat_ctrl/multitap.cpp b/src/devices/bus/sat_ctrl/multitap.cpp
index 8ab7f675e61..bb42e179d5c 100644
--- a/src/devices/bus/sat_ctrl/multitap.cpp
+++ b/src/devices/bus/sat_ctrl/multitap.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SATURN_MULTITAP = device_creator<saturn_multitap_device>;
+DEFINE_DEVICE_TYPE(SATURN_MULTITAP, saturn_multitap_device, "saturn_multitap", "Sega Saturn Multitap")
//**************************************************************************
@@ -27,7 +27,7 @@ const device_type SATURN_MULTITAP = device_creator<saturn_multitap_device>;
//-------------------------------------------------
saturn_multitap_device::saturn_multitap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_MULTITAP, "Sega Saturn Multitap", tag, owner, clock, "saturn_multitap", __FILE__),
+ device_t(mconfig, SATURN_MULTITAP, tag, owner, clock),
device_saturn_control_port_interface(mconfig, *this),
m_subctrl1_port(*this, "ctrl1"),
m_subctrl2_port(*this, "ctrl2"),
diff --git a/src/devices/bus/sat_ctrl/multitap.h b/src/devices/bus/sat_ctrl/multitap.h
index 646a03478af..ac77e73989a 100644
--- a/src/devices/bus/sat_ctrl/multitap.h
+++ b/src/devices/bus/sat_ctrl/multitap.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SAT_CTRL_MULTITAP_H
+#define MAME_BUS_SAT_CTRL_MULTITAP_H
-#ifndef __SATURN_MULTITAP__
-#define __SATURN_MULTITAP__
+#pragma once
#include "ctrl.h"
@@ -53,7 +53,6 @@ private:
// device type definition
-extern const device_type SATURN_MULTITAP;
-
+DECLARE_DEVICE_TYPE(SATURN_MULTITAP, saturn_multitap_device)
-#endif
+#endif // MAME_BUS_SAT_CTRL_MULTITAP_H
diff --git a/src/devices/bus/sat_ctrl/pointer.cpp b/src/devices/bus/sat_ctrl/pointer.cpp
index 11c73615b45..10eceae1a2d 100644
--- a/src/devices/bus/sat_ctrl/pointer.cpp
+++ b/src/devices/bus/sat_ctrl/pointer.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SATURN_TRACK = device_creator<saturn_track_device>;
+DEFINE_DEVICE_TYPE(SATURN_TRACK, saturn_track_device, "saturn_track", "Sega Saturn Pointing Controller / Trackball")
static INPUT_PORTS_START( saturn_track )
@@ -52,11 +52,11 @@ ioport_constructor saturn_track_device::device_input_ports() const
//-------------------------------------------------
saturn_track_device::saturn_track_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_TRACK, "Sega Saturn Pointing Controller / Trackball", tag, owner, clock, "saturn_track", __FILE__),
- device_saturn_control_port_interface(mconfig, *this),
- m_pointx(*this, "POINT_X"),
- m_pointy(*this, "POINT_Y"),
- m_buttons(*this, "BUTTONS")
+ device_t(mconfig, SATURN_TRACK, tag, owner, clock),
+ device_saturn_control_port_interface(mconfig, *this),
+ m_pointx(*this, "POINT_X"),
+ m_pointy(*this, "POINT_Y"),
+ m_buttons(*this, "BUTTONS")
{
m_ctrl_id = 0x23;
}
diff --git a/src/devices/bus/sat_ctrl/pointer.h b/src/devices/bus/sat_ctrl/pointer.h
index f2ed9e47779..869455706ef 100644
--- a/src/devices/bus/sat_ctrl/pointer.h
+++ b/src/devices/bus/sat_ctrl/pointer.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SAT_CTRL_POINTER_H
+#define MAME_BUS_SAT_CTRL_POINTER_H
-#ifndef __SATURN_TRACK__
-#define __SATURN_TRACK__
+#pragma once
#include "ctrl.h"
@@ -48,7 +48,6 @@ private:
// device type definition
-extern const device_type SATURN_TRACK;
-
+DECLARE_DEVICE_TYPE(SATURN_TRACK, saturn_track_device)
-#endif
+#endif // MAME_BUS_SAT_CTRL_POINTER_H
diff --git a/src/devices/bus/sat_ctrl/racing.cpp b/src/devices/bus/sat_ctrl/racing.cpp
index fac3d6506f2..91444de2b6a 100644
--- a/src/devices/bus/sat_ctrl/racing.cpp
+++ b/src/devices/bus/sat_ctrl/racing.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SATURN_WHEEL = device_creator<saturn_wheel_device>;
+DEFINE_DEVICE_TYPE(SATURN_WHEEL, saturn_wheel_device, "saturn_racing", "Sega Saturn Racing Wheel")
static INPUT_PORTS_START( saturn_racing )
@@ -58,10 +58,10 @@ ioport_constructor saturn_wheel_device::device_input_ports() const
//-------------------------------------------------
saturn_wheel_device::saturn_wheel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_WHEEL, "Sega Saturn Racing Wheel", tag, owner, clock, "saturn_racing", __FILE__),
- device_saturn_control_port_interface(mconfig, *this),
- m_joy(*this, "JOY"),
- m_anx(*this, "ANALOG_X")
+ device_t(mconfig, SATURN_WHEEL, tag, owner, clock),
+ device_saturn_control_port_interface(mconfig, *this),
+ m_joy(*this, "JOY"),
+ m_anx(*this, "ANALOG_X")
{
m_ctrl_id = 0x13;
}
diff --git a/src/devices/bus/sat_ctrl/racing.h b/src/devices/bus/sat_ctrl/racing.h
index 93186b797cf..9f426c9ef51 100644
--- a/src/devices/bus/sat_ctrl/racing.h
+++ b/src/devices/bus/sat_ctrl/racing.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SAT_CTRL_RACING_H
+#define MAME_BUS_SAT_CTRL_RACING_H
-#ifndef __SATURN_RACING__
-#define __SATURN_RACING__
+#pragma once
#include "ctrl.h"
@@ -47,7 +47,6 @@ private:
// device type definition
-extern const device_type SATURN_WHEEL;
-
+DECLARE_DEVICE_TYPE(SATURN_WHEEL, saturn_wheel_device)
-#endif
+#endif // MAME_BUS_SAT_CTRL_RACING_H
diff --git a/src/devices/bus/sat_ctrl/segatap.cpp b/src/devices/bus/sat_ctrl/segatap.cpp
index 480b9b91da5..f3121cfedf2 100644
--- a/src/devices/bus/sat_ctrl/segatap.cpp
+++ b/src/devices/bus/sat_ctrl/segatap.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SATURN_SEGATAP = device_creator<saturn_segatap_device>;
+DEFINE_DEVICE_TYPE(SATURN_SEGATAP, saturn_segatap_device, "saturn_segatap", "saturn_segatap_device")
//**************************************************************************
@@ -27,7 +27,7 @@ const device_type SATURN_SEGATAP = device_creator<saturn_segatap_device>;
//-------------------------------------------------
saturn_segatap_device::saturn_segatap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_SEGATAP, "Sega Saturn SegaTap", tag, owner, clock, "saturn_segatap", __FILE__),
+ device_t(mconfig, SATURN_SEGATAP, tag, owner, clock),
device_saturn_control_port_interface(mconfig, *this),
m_subctrl1_port(*this, "ctrl1"),
m_subctrl2_port(*this, "ctrl2"),
diff --git a/src/devices/bus/sat_ctrl/segatap.h b/src/devices/bus/sat_ctrl/segatap.h
index 6508eb5d245..151eebd24a1 100644
--- a/src/devices/bus/sat_ctrl/segatap.h
+++ b/src/devices/bus/sat_ctrl/segatap.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SAT_CTRL_SEGATAP_H
+#define MAME_BUS_SAT_CTRL_SEGATAP_H
-#ifndef __SATURN_SEGATAP__
-#define __SATURN_SEGATAP__
+#pragma once
#include "ctrl.h"
@@ -51,7 +51,6 @@ private:
// device type definition
-extern const device_type SATURN_SEGATAP;
-
+DECLARE_DEVICE_TYPE(SATURN_SEGATAP, saturn_segatap_device)
-#endif
+#endif // MAME_BUS_SAT_CTRL_SEGATAP_H
diff --git a/src/devices/bus/saturn/bram.cpp b/src/devices/bus/saturn/bram.cpp
index 9178f1210ee..cdcc7ad4376 100644
--- a/src/devices/bus/saturn/bram.cpp
+++ b/src/devices/bus/saturn/bram.cpp
@@ -15,41 +15,37 @@
// constructor
//-------------------------------------------------
-const device_type SATURN_BRAM_4MB = device_creator<saturn_bram4mb_device>;
-const device_type SATURN_BRAM_8MB = device_creator<saturn_bram8mb_device>;
-const device_type SATURN_BRAM_16MB = device_creator<saturn_bram16mb_device>;
-const device_type SATURN_BRAM_32MB = device_creator<saturn_bram32mb_device>;
+DEFINE_DEVICE_TYPE(SATURN_BRAM_4MB, saturn_bram4mb_device, "sat_bram_4mb", "Saturn Battery RAM 4Mbit Cart")
+DEFINE_DEVICE_TYPE(SATURN_BRAM_8MB, saturn_bram8mb_device, "sat_bram_8mb", "Saturn Battery RAM 8Mbit Cart")
+DEFINE_DEVICE_TYPE(SATURN_BRAM_16MB, saturn_bram16mb_device, "sat_bram_16mb", "Saturn Battery RAM 16Mbit Cart")
+DEFINE_DEVICE_TYPE(SATURN_BRAM_32MB, saturn_bram32mb_device, "sat_bram_32mb", "Saturn Battery RAM 32Mbit Cart")
-saturn_bram_device::saturn_bram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sat_cart_interface( mconfig, *this ),
- device_nvram_interface(mconfig, *this)
+saturn_bram_device::saturn_bram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cart_type)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sat_cart_interface(mconfig, *this, cart_type)
+ , device_nvram_interface(mconfig, *this)
{
}
saturn_bram4mb_device::saturn_bram4mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saturn_bram_device(mconfig, SATURN_BRAM_4MB, "Saturn Battery RAM 4Mbit Cart", tag, owner, clock, "sat_bram_4mb", __FILE__)
+ : saturn_bram_device(mconfig, SATURN_BRAM_4MB, tag, owner, clock, 0x21)
{
- m_cart_type = 0x21;
}
saturn_bram8mb_device::saturn_bram8mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saturn_bram_device(mconfig, SATURN_BRAM_8MB, "Saturn Battery RAM 8Mbit Cart", tag, owner, clock, "sat_bram_8mb", __FILE__)
+ : saturn_bram_device(mconfig, SATURN_BRAM_8MB, tag, owner, clock, 0x22)
{
- m_cart_type = 0x22;
}
saturn_bram16mb_device::saturn_bram16mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saturn_bram_device(mconfig, SATURN_BRAM_16MB, "Saturn Battery RAM 16Mbit Cart", tag, owner, clock, "sat_bram_16mb", __FILE__)
+ : saturn_bram_device(mconfig, SATURN_BRAM_16MB, tag, owner, clock, 0x23)
{
- m_cart_type = 0x23;
}
saturn_bram32mb_device::saturn_bram32mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saturn_bram_device(mconfig, SATURN_BRAM_32MB, "Saturn Battery RAM 32Mbit Cart", tag, owner, clock, "sat_bram_32mb", __FILE__)
+ : saturn_bram_device(mconfig, SATURN_BRAM_32MB, tag, owner, clock, 0x24)
{
- m_cart_type = 0x24;
}
diff --git a/src/devices/bus/saturn/bram.h b/src/devices/bus/saturn/bram.h
index 7a96d11706f..a295bc78333 100644
--- a/src/devices/bus/saturn/bram.h
+++ b/src/devices/bus/saturn/bram.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SAT_BRAM_H
-#define __SAT_BRAM_H
+#ifndef MAME_BUS_SATURN_BRAM_H
+#define MAME_BUS_SATURN_BRAM_H
#include "sat_slot.h"
@@ -13,8 +13,13 @@ class saturn_bram_device : public device_t,
public device_nvram_interface
{
public:
+ // reading and writing
+ virtual DECLARE_READ32_MEMBER(read_ext_bram) override;
+ virtual DECLARE_WRITE32_MEMBER(write_ext_bram) override;
+
+protected:
// construction/destruction
- saturn_bram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ saturn_bram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cart_type);
// device-level overrides
virtual void device_start() override;
@@ -24,10 +29,6 @@ public:
virtual void nvram_default() override;
virtual void nvram_read(emu_file &file) override { if (!m_ext_bram.empty()) file.read(&m_ext_bram[0], m_ext_bram.size()); }
virtual void nvram_write(emu_file &file) override { if (!m_ext_bram.empty()) file.write(&m_ext_bram[0], m_ext_bram.size()); }
-
- // reading and writing
- virtual DECLARE_READ32_MEMBER(read_ext_bram) override;
- virtual DECLARE_WRITE32_MEMBER(write_ext_bram) override;
};
class saturn_bram4mb_device : public saturn_bram_device
@@ -61,9 +62,9 @@ public:
// device type definition
-extern const device_type SATURN_BRAM_4MB;
-extern const device_type SATURN_BRAM_8MB;
-extern const device_type SATURN_BRAM_16MB;
-extern const device_type SATURN_BRAM_32MB;
+DECLARE_DEVICE_TYPE(SATURN_BRAM_4MB, saturn_bram4mb_device)
+DECLARE_DEVICE_TYPE(SATURN_BRAM_8MB, saturn_bram8mb_device)
+DECLARE_DEVICE_TYPE(SATURN_BRAM_16MB, saturn_bram16mb_device)
+DECLARE_DEVICE_TYPE(SATURN_BRAM_32MB, saturn_bram32mb_device)
-#endif
+#endif // MAME_BUS_SATURN_BRAM_H
diff --git a/src/devices/bus/saturn/dram.cpp b/src/devices/bus/saturn/dram.cpp
index 6255f97b6d6..6d574dc28e3 100644
--- a/src/devices/bus/saturn/dram.cpp
+++ b/src/devices/bus/saturn/dram.cpp
@@ -15,26 +15,24 @@
// constructor
//-------------------------------------------------
-const device_type SATURN_DRAM_8MB = device_creator<saturn_dram8mb_device>;
-const device_type SATURN_DRAM_32MB = device_creator<saturn_dram32mb_device>;
+DEFINE_DEVICE_TYPE(SATURN_DRAM_8MB, saturn_dram8mb_device, "sat_dram_8mb", "Saturn Data RAM 8Mbit Cart")
+DEFINE_DEVICE_TYPE(SATURN_DRAM_32MB, saturn_dram32mb_device, "sat_dram_32mb", "Saturn Data RAM 32Mbit Cart")
-saturn_dram_device::saturn_dram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sat_cart_interface( mconfig, *this )
+saturn_dram_device::saturn_dram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cart_type)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sat_cart_interface(mconfig, *this, cart_type)
{
}
saturn_dram8mb_device::saturn_dram8mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saturn_dram_device(mconfig, SATURN_DRAM_8MB, "Saturn Data RAM 8Mbit Cart", tag, owner, clock, "sat_dram_8mb", __FILE__)
+ : saturn_dram_device(mconfig, SATURN_DRAM_8MB, tag, owner, clock, 0x5a)
{
- m_cart_type = 0x5a;
}
saturn_dram32mb_device::saturn_dram32mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saturn_dram_device(mconfig, SATURN_DRAM_32MB, "Saturn Data RAM 32Mbit Cart", tag, owner, clock, "sat_dram_32mb", __FILE__)
+ : saturn_dram_device(mconfig, SATURN_DRAM_32MB, tag, owner, clock, 0x5c)
{
- m_cart_type = 0x5c;
}
diff --git a/src/devices/bus/saturn/dram.h b/src/devices/bus/saturn/dram.h
index 3cf89b50093..1bef596993a 100644
--- a/src/devices/bus/saturn/dram.h
+++ b/src/devices/bus/saturn/dram.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SAT_DRAM_H
-#define __SAT_DRAM_H
+#ifndef MAME_BUS_SATURN_DRAM_H
+#define MAME_BUS_SATURN_DRAM_H
#include "sat_slot.h"
@@ -12,18 +12,19 @@ class saturn_dram_device : public device_t,
public device_sat_cart_interface
{
public:
- // construction/destruction
- saturn_dram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ32_MEMBER(read_ext_dram0) override;
virtual DECLARE_READ32_MEMBER(read_ext_dram1) override;
virtual DECLARE_WRITE32_MEMBER(write_ext_dram0) override;
virtual DECLARE_WRITE32_MEMBER(write_ext_dram1) override;
+
+protected:
+ // construction/destruction
+ saturn_dram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cart_type);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
};
class saturn_dram8mb_device : public saturn_dram_device
@@ -43,7 +44,7 @@ public:
// device type definition
-extern const device_type SATURN_DRAM_8MB;
-extern const device_type SATURN_DRAM_32MB;
+DECLARE_DEVICE_TYPE(SATURN_DRAM_8MB, saturn_dram8mb_device)
+DECLARE_DEVICE_TYPE(SATURN_DRAM_32MB, saturn_dram32mb_device)
-#endif
+#endif // MAME_BUS_SATURN_DRAM_H
diff --git a/src/devices/bus/saturn/rom.cpp b/src/devices/bus/saturn/rom.cpp
index 152eeb18f87..1421018c298 100644
--- a/src/devices/bus/saturn/rom.cpp
+++ b/src/devices/bus/saturn/rom.cpp
@@ -15,20 +15,18 @@
// saturn_rom_device - constructor
//-------------------------------------------------
-const device_type SATURN_ROM = device_creator<saturn_rom_device>;
+DEFINE_DEVICE_TYPE(SATURN_ROM, saturn_rom_device, "sat_rom", "Saturn ROM Carts")
-saturn_rom_device::saturn_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sat_cart_interface( mconfig, *this )
+saturn_rom_device::saturn_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cart_type)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sat_cart_interface(mconfig, *this, cart_type)
{
}
saturn_rom_device::saturn_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SATURN_ROM, "Saturn ROM Carts", tag, owner, clock, "sat_rom", __FILE__),
- device_sat_cart_interface( mconfig, *this )
+ : saturn_rom_device(mconfig, SATURN_ROM, tag, owner, clock, 0xff) // actually not clear if ROM carts have a type ID like DRAM/BRAM carts
{
- m_cart_type = 0xff; // actually not clear if ROM carts have a type ID like DRAM/BRAM carts
}
diff --git a/src/devices/bus/saturn/rom.h b/src/devices/bus/saturn/rom.h
index 8f377bf2164..0fc8f2ecbea 100644
--- a/src/devices/bus/saturn/rom.h
+++ b/src/devices/bus/saturn/rom.h
@@ -1,33 +1,32 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SAT_ROM_H
-#define __SAT_ROM_H
+#ifndef MAME_BUS_SATURN_ROM_H
+#define MAME_BUS_SATURN_ROM_H
#include "sat_slot.h"
// ======================> saturn_rom_device
-class saturn_rom_device : public device_t,
- public device_sat_cart_interface
+class saturn_rom_device : public device_t, public device_sat_cart_interface
{
public:
// construction/destruction
- saturn_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
saturn_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // reading and writing
+ virtual DECLARE_READ32_MEMBER(read_rom) override;
+
+protected:
+ saturn_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cart_type);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-
- // reading and writing
- virtual DECLARE_READ32_MEMBER(read_rom) override;
};
-
// device type definition
-extern const device_type SATURN_ROM;
-
+DECLARE_DEVICE_TYPE(SATURN_ROM, saturn_rom_device)
-#endif
+#endif // MAME_BUS_SATURN_ROM_H
diff --git a/src/devices/bus/saturn/sat_slot.cpp b/src/devices/bus/saturn/sat_slot.cpp
index c46aa995d5f..13f69c8ba92 100644
--- a/src/devices/bus/saturn/sat_slot.cpp
+++ b/src/devices/bus/saturn/sat_slot.cpp
@@ -29,17 +29,18 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SATURN_CART_SLOT = device_creator<sat_cart_slot_device>;
+DEFINE_DEVICE_TYPE(SATURN_CART_SLOT, sat_cart_slot_device, "sat_cart_slot", "Saturn Cartridge Slot")
//-------------------------------------------------
// device_sat_cart_interface - constructor
//-------------------------------------------------
-device_sat_cart_interface::device_sat_cart_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device), m_cart_type(0),
- m_rom(nullptr),
- m_rom_size(0)
+device_sat_cart_interface::device_sat_cart_interface(const machine_config &mconfig, device_t &device, int cart_type) :
+ device_slot_card_interface(mconfig, device),
+ m_cart_type(cart_type),
+ m_rom(nullptr),
+ m_rom_size(0)
{
}
@@ -102,9 +103,9 @@ void device_sat_cart_interface::dram1_alloc(uint32_t size)
// sat_cart_slot_device - constructor
//-------------------------------------------------
sat_cart_slot_device::sat_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SATURN_CART_SLOT, "Saturn Cartridge Slot", tag, owner, clock, "sat_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this), m_cart(nullptr)
+ device_t(mconfig, SATURN_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/saturn/sat_slot.h b/src/devices/bus/saturn/sat_slot.h
index 9148397e512..4d94ea472d6 100644
--- a/src/devices/bus/saturn/sat_slot.h
+++ b/src/devices/bus/saturn/sat_slot.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SAT_SLOT_H
-#define __SAT_SLOT_H
+#ifndef MAME_BUS_SATURN_SAT_SLOT_H
+#define MAME_BUS_SATURN_SAT_SLOT_H
#include "softlist_dev.h"
@@ -16,23 +16,20 @@
class device_sat_cart_interface : public device_slot_card_interface
{
public:
- // construction/destruction
- device_sat_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_sat_cart_interface();
// reading from ROM
virtual DECLARE_READ32_MEMBER(read_rom) { return 0xffffffff; }
// reading and writing to Extended DRAM chips
virtual DECLARE_READ32_MEMBER(read_ext_dram0) { return 0xffffffff; }
- virtual DECLARE_WRITE32_MEMBER(write_ext_dram0) {}
+ virtual DECLARE_WRITE32_MEMBER(write_ext_dram0) { }
virtual DECLARE_READ32_MEMBER(read_ext_dram1) { return 0xffffffff; }
- virtual DECLARE_WRITE32_MEMBER(write_ext_dram1) {}
+ virtual DECLARE_WRITE32_MEMBER(write_ext_dram1) { }
// reading and writing to Extended BRAM chip
virtual DECLARE_READ32_MEMBER(read_ext_bram) { return 0xffffffff; }
- virtual DECLARE_WRITE32_MEMBER(write_ext_bram) {}
-
- virtual int get_cart_type() { return m_cart_type; };
+ virtual DECLARE_WRITE32_MEMBER(write_ext_bram) { }
+ int get_cart_type() const { return m_cart_type; }
void rom_alloc(uint32_t size, const char *tag);
void bram_alloc(uint32_t size);
@@ -48,7 +45,10 @@ public:
uint32_t get_ext_bram_size() { return m_ext_bram.size(); }
protected:
- int m_cart_type;
+ // construction/destruction
+ device_sat_cart_interface(const machine_config &mconfig, device_t &device, int cart_type);
+
+ const int m_cart_type;
// internal state
uint32_t *m_rom;
@@ -70,9 +70,6 @@ public:
sat_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~sat_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override;
@@ -101,13 +98,17 @@ public:
virtual DECLARE_READ32_MEMBER(read_ext_bram);
virtual DECLARE_WRITE32_MEMBER(write_ext_bram);
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
device_sat_cart_interface* m_cart;
};
// device type definition
-extern const device_type SATURN_CART_SLOT;
+DECLARE_DEVICE_TYPE(SATURN_CART_SLOT, sat_cart_slot_device)
/***************************************************************************
@@ -121,4 +122,4 @@ extern const device_type SATURN_CART_SLOT;
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+#endif // MAME_BUS_SATURN_SAT_SLOT_H
diff --git a/src/devices/bus/scsi/acb4070.cpp b/src/devices/bus/scsi/acb4070.cpp
index ddaccb9422f..0b9e67b438f 100644
--- a/src/devices/bus/scsi/acb4070.cpp
+++ b/src/devices/bus/scsi/acb4070.cpp
@@ -9,10 +9,10 @@
#include "acb4070.h"
// device type definition
-const device_type ACB4070 = device_creator<acb4070_device>;
+DEFINE_DEVICE_TYPE(ACB4070, acb4070_device, "acb4070", "ACB4070")
acb4070_device::acb4070_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scsihd_device(mconfig, ACB4070, "ACB4070", tag, owner, clock, "acb4070", __FILE__)
+ : scsihd_device(mconfig, ACB4070, tag, owner, clock)
{
}
diff --git a/src/devices/bus/scsi/acb4070.h b/src/devices/bus/scsi/acb4070.h
index b983aad0477..848798152a5 100644
--- a/src/devices/bus/scsi/acb4070.h
+++ b/src/devices/bus/scsi/acb4070.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#pragma once
+#ifndef MAME_BUS_SCSI_ACB4070_H
+#define MAME_BUS_SCSI_ACB4070_H
-#ifndef __ACB4070__
-#define __ACB4070__
+#pragma once
#include "scsihd.h"
@@ -42,6 +42,6 @@ private:
};
// device type definition
-extern const device_type ACB4070;
+DECLARE_DEVICE_TYPE(ACB4070, acb4070_device)
-#endif
+#endif // MAME_BUS_SCSI_ACB4070_H
diff --git a/src/devices/bus/scsi/cdu76s.cpp b/src/devices/bus/scsi/cdu76s.cpp
index f0de47e0da3..231445f1077 100644
--- a/src/devices/bus/scsi/cdu76s.cpp
+++ b/src/devices/bus/scsi/cdu76s.cpp
@@ -40,9 +40,9 @@ void sony_cdu76s_device::ReadData( uint8_t *data, int dataLength )
}
// device type definition
-const device_type CDU76S = device_creator<sony_cdu76s_device>;
+DEFINE_DEVICE_TYPE(CDU76S, sony_cdu76s_device, "cdu76s", "Sony CDU-76S")
sony_cdu76s_device::sony_cdu76s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- scsicd_device(mconfig, CDU76S, "Sony CDU-76S", tag, owner, clock, "cdu76s", __FILE__)
+ scsicd_device(mconfig, CDU76S, tag, owner, clock)
{
}
diff --git a/src/devices/bus/scsi/cdu76s.h b/src/devices/bus/scsi/cdu76s.h
index 0449254b958..2e91525bfdc 100644
--- a/src/devices/bus/scsi/cdu76s.h
+++ b/src/devices/bus/scsi/cdu76s.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SCSI_CDU76S_H
+#define MAME_BUS_SCSI_CDU76S_H
-#ifndef __CDU76S_H__
-#define __CDU76S_H__
+#pragma once
#include "scsicd.h"
#include "machine/t10mmc.h"
@@ -26,6 +26,6 @@ public:
};
// device type definition
-extern const device_type CDU76S;
+DECLARE_DEVICE_TYPE(CDU76S, sony_cdu76s_device)
-#endif
+#endif // MAME_BUS_SCSI_CDU76S_H
diff --git a/src/devices/bus/scsi/d9060hd.cpp b/src/devices/bus/scsi/d9060hd.cpp
index 3f3b4a70ce1..1d7ee7e503d 100644
--- a/src/devices/bus/scsi/d9060hd.cpp
+++ b/src/devices/bus/scsi/d9060hd.cpp
@@ -9,10 +9,10 @@
#include "d9060hd.h"
// device type definition
-const device_type D9060HD = device_creator<d9060hd_device>;
+DEFINE_DEVICE_TYPE(D9060HD, d9060hd_device, "d9060hd", "D9060HD")
d9060hd_device::d9060hd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scsihd_device(mconfig, D9060HD, "D9060HD", tag, owner, clock, "d9060hd", __FILE__)
+ : scsihd_device(mconfig, D9060HD, tag, owner, clock)
{
}
diff --git a/src/devices/bus/scsi/d9060hd.h b/src/devices/bus/scsi/d9060hd.h
index 979538a0b14..3e7140e74cd 100644
--- a/src/devices/bus/scsi/d9060hd.h
+++ b/src/devices/bus/scsi/d9060hd.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#pragma once
+#ifndef MAME_BUS_SCSI_D9060HD_H
+#define MAME_BUS_SCSI_D9060HD_H
-#ifndef __D9060HD__
-#define __D9060HD__
+#pragma once
#include "scsihd.h"
@@ -17,6 +17,6 @@ public:
};
// device type definition
-extern const device_type D9060HD;
+DECLARE_DEVICE_TYPE(D9060HD, d9060hd_device)
-#endif
+#endif // MAME_BUS_SCSI_D9060HD_H
diff --git a/src/devices/bus/scsi/omti5100.cpp b/src/devices/bus/scsi/omti5100.cpp
index 3dfcc783341..07f0bb7e881 100644
--- a/src/devices/bus/scsi/omti5100.cpp
+++ b/src/devices/bus/scsi/omti5100.cpp
@@ -10,7 +10,7 @@
#define OMTI_READ_DATA_BUFFER 0xec
#define OMTI_ASSIGN_DISK_PARAM 0xc2
-const device_type OMTI5100 = device_creator<omti5100_device>;
+DEFINE_DEVICE_TYPE(OMTI5100, omti5100_device, "omti5100", "OMTI 5100")
#if 0
ROM_START( omti5100 )
@@ -25,9 +25,9 @@ const tiny_rom_entry *omti5100_device::device_rom_region() const
#endif
omti5100_device::omti5100_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scsihd_device(mconfig, OMTI5100, "OMTI 5100", tag, owner, clock, "omti5100", __FILE__),
- m_image0(*this, "image0"),
- m_image1(*this, "image1")
+ : scsihd_device(mconfig, OMTI5100, tag, owner, clock)
+ , m_image0(*this, "image0")
+ , m_image1(*this, "image1")
{
}
diff --git a/src/devices/bus/scsi/omti5100.h b/src/devices/bus/scsi/omti5100.h
index 24c1b74ddc3..c17d5bc4558 100644
--- a/src/devices/bus/scsi/omti5100.h
+++ b/src/devices/bus/scsi/omti5100.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef OMTI5100_H_
-#define OMTI5100_H_
+#ifndef MAME_BUS_SCSI_OMTI5100_H
+#define MAME_BUS_SCSI_OMTI5100_H
#include "scsi.h"
#include "scsihd.h"
@@ -18,6 +18,8 @@ public:
virtual void ExecCommand() override;
virtual void ReadData( uint8_t *data, int dataLength ) override;
virtual void WriteData( uint8_t *data, int dataLength ) override;
+
+protected:
void device_start() override;
private:
@@ -26,6 +28,6 @@ private:
hard_disk_info m_param[2];
};
-extern const device_type OMTI5100;
+DECLARE_DEVICE_TYPE(OMTI5100, omti5100_device)
-#endif /* OMTI5100_H_ */
+#endif // MAME_BUS_SCSI_OMTI5100_H
diff --git a/src/devices/bus/scsi/pc9801_sasi.cpp b/src/devices/bus/scsi/pc9801_sasi.cpp
index 29d30b48589..b7c93f98094 100644
--- a/src/devices/bus/scsi/pc9801_sasi.cpp
+++ b/src/devices/bus/scsi/pc9801_sasi.cpp
@@ -5,10 +5,10 @@
#define SASI_CMD_SPECIFY 0xc2 // according to x68k_hdc.c
-const device_type PC9801_SASI = device_creator<pc9801_sasi_device>;
+DEFINE_DEVICE_TYPE(PC9801_SASI, pc9801_sasi_device, "pc9801_sasi", "PC9801 SASI Controller")
pc9801_sasi_device::pc9801_sasi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scsihd_device(mconfig, PC9801_SASI, "PC-9801 SASI Controller", tag, owner, clock, "pc9801_sasi", __FILE__)
+ : scsihd_device(mconfig, PC9801_SASI, tag, owner, clock)
{
}
diff --git a/src/devices/bus/scsi/pc9801_sasi.h b/src/devices/bus/scsi/pc9801_sasi.h
index 1cbd9eb72af..773de463c61 100644
--- a/src/devices/bus/scsi/pc9801_sasi.h
+++ b/src/devices/bus/scsi/pc9801_sasi.h
@@ -1,11 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef PC9801_SASI_H_
-#define PC9801_SASI_H_
+#ifndef MAME_BUS_SCSI_PC9801_SASI_H
+#define MAME_BUS_SCSI_PC9801_SASI_H
#include "scsihd.h"
-class pc9801_sasi_device : public scsihd_device
+class pc9801_sasi_device : public scsihd_device
{
public:
// construction/destruction
@@ -15,6 +15,6 @@ public:
};
// device type definition
-extern const device_type PC9801_SASI;
+DECLARE_DEVICE_TYPE(PC9801_SASI, pc9801_sasi_device)
-#endif /* PC9801_SASI_H_ */
+#endif // MAME_BUS_SCSI_PC9801_SASI_H
diff --git a/src/devices/bus/scsi/s1410.cpp b/src/devices/bus/scsi/s1410.cpp
index df49859b844..a4a8a65c047 100644
--- a/src/devices/bus/scsi/s1410.cpp
+++ b/src/devices/bus/scsi/s1410.cpp
@@ -102,7 +102,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type S1410 = device_creator<s1410_device>;
+DEFINE_DEVICE_TYPE(S1410, s1410_device, "s1410", "Xebec S1410")
//-------------------------------------------------
// ROM( s1410 )
@@ -194,7 +194,7 @@ machine_config_constructor s1410_device::device_mconfig_additions() const
//-------------------------------------------------
s1410_device::s1410_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scsihd_device(mconfig, S1410, "Xebec S1410", tag, owner, clock, "s1410", __FILE__)
+ : scsihd_device(mconfig, S1410, tag, owner, clock)
{
}
diff --git a/src/devices/bus/scsi/s1410.h b/src/devices/bus/scsi/s1410.h
index d76686529bf..456f55a6ea2 100644
--- a/src/devices/bus/scsi/s1410.h
+++ b/src/devices/bus/scsi/s1410.h
@@ -6,14 +6,14 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SCSI_S1410_H
+#define MAME_BUS_SCSI_S1410_H
-#ifndef __S1410__
-#define __S1410__
+#pragma once
#include "scsihd.h"
-class s1410_device : public scsihd_device
+class s1410_device : public scsihd_device
{
public:
// construction/destruction
@@ -30,6 +30,6 @@ public:
// device type definition
-extern const device_type S1410;
+DECLARE_DEVICE_TYPE(S1410, s1410_device)
-#endif
+#endif // MAME_BUS_SCSI_S1410_H
diff --git a/src/devices/bus/scsi/sa1403d.cpp b/src/devices/bus/scsi/sa1403d.cpp
index 76587f9f0ab..f8f0d7041b7 100644
--- a/src/devices/bus/scsi/sa1403d.cpp
+++ b/src/devices/bus/scsi/sa1403d.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SA1403D = device_creator<sa1403d_device>;
+DEFINE_DEVICE_TYPE(SA1403D, sa1403d_device, "sa1403d", "Shugart SA1403D")
//-------------------------------------------------
@@ -124,7 +124,7 @@ ioport_constructor sa1403d_device::device_input_ports() const
//-------------------------------------------------
sa1403d_device::sa1403d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scsihd_device(mconfig, SA1403D, "Shugart SA1403D", tag, owner, clock, "sa1403d", __FILE__)
+ : scsihd_device(mconfig, SA1403D, tag, owner, clock)
{
}
diff --git a/src/devices/bus/scsi/sa1403d.h b/src/devices/bus/scsi/sa1403d.h
index 3299527a8f8..ea3d37d3d02 100644
--- a/src/devices/bus/scsi/sa1403d.h
+++ b/src/devices/bus/scsi/sa1403d.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SCSI_SA1403D_H
+#define MAME_BUS_SCSI_SA1403D_H
-#ifndef __SA1403D__
-#define __SA1403D__
+#pragma once
#include "scsihd.h"
#include "imagedev/harddriv.h"
@@ -31,6 +31,6 @@ public:
// device type definition
-extern const device_type SA1403D;
+DECLARE_DEVICE_TYPE(SA1403D, sa1403d_device)
-#endif
+#endif // MAME_BUS_SCSI_SA1403D_H
diff --git a/src/devices/bus/scsi/scsi.cpp b/src/devices/bus/scsi/scsi.cpp
index 73118ee35ed..5cbd6eaf060 100644
--- a/src/devices/bus/scsi/scsi.cpp
+++ b/src/devices/bus/scsi/scsi.cpp
@@ -4,8 +4,8 @@
#include "emu.h"
#include "scsi.h"
-SCSI_PORT_DEVICE::SCSI_PORT_DEVICE(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SCSI_PORT, "SCSI Port", tag, owner, clock, "scsi", __FILE__),
+scsi_port_device::scsi_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, SCSI_PORT, tag, owner, clock),
m_bsy_handler(*this),
m_sel_handler(*this),
m_cd_handler(*this),
@@ -71,12 +71,12 @@ static MACHINE_CONFIG_FRAGMENT( scsi_port )
MCFG_DEVICE_ADD( SCSI_PORT_DEVICE7, SCSI_PORT_SLOT, 0 )
MACHINE_CONFIG_END
-machine_config_constructor SCSI_PORT_DEVICE::device_mconfig_additions() const
+machine_config_constructor scsi_port_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( scsi_port );
}
-void SCSI_PORT_DEVICE::device_start()
+void scsi_port_device::device_start()
{
const char *deviceName[] =
{
@@ -93,7 +93,7 @@ void SCSI_PORT_DEVICE::device_start()
for (int i = 0; i < 7; i++)
{
- SCSI_PORT_SLOT_device *slot = subdevice<SCSI_PORT_SLOT_device>(deviceName[i]);
+ scsi_port_slot_device *slot = subdevice<scsi_port_slot_device>(deviceName[i]);
m_slot[i] = slot;
if (slot != nullptr)
@@ -138,7 +138,7 @@ void SCSI_PORT_DEVICE::device_start()
m_rst_handler(0);
}
-void SCSI_PORT_DEVICE::update_bsy()
+void scsi_port_device::update_bsy()
{
int bsy = m_bsy_in;
for (int i = 0; i < m_device_count; i++)
@@ -160,7 +160,7 @@ void SCSI_PORT_DEVICE::update_bsy()
}
}
-void SCSI_PORT_DEVICE::update_sel()
+void scsi_port_device::update_sel()
{
int sel = m_sel_in;
for (int i = 0; i < m_device_count; i++)
@@ -182,7 +182,7 @@ void SCSI_PORT_DEVICE::update_sel()
}
}
-void SCSI_PORT_DEVICE::update_cd()
+void scsi_port_device::update_cd()
{
int cd = m_cd_in;
for (int i = 0; i < m_device_count; i++)
@@ -204,7 +204,7 @@ void SCSI_PORT_DEVICE::update_cd()
}
}
-void SCSI_PORT_DEVICE::update_io()
+void scsi_port_device::update_io()
{
int io = m_io_in;
for (int i = 0; i < m_device_count; i++)
@@ -226,7 +226,7 @@ void SCSI_PORT_DEVICE::update_io()
}
}
-void SCSI_PORT_DEVICE::update_msg()
+void scsi_port_device::update_msg()
{
int msg = m_msg_in;
for (int i = 0; i < m_device_count; i++)
@@ -248,7 +248,7 @@ void SCSI_PORT_DEVICE::update_msg()
}
}
-void SCSI_PORT_DEVICE::update_req()
+void scsi_port_device::update_req()
{
int req = m_req_in;
for (int i = 0; i < m_device_count; i++)
@@ -270,7 +270,7 @@ void SCSI_PORT_DEVICE::update_req()
}
}
-void SCSI_PORT_DEVICE::update_ack()
+void scsi_port_device::update_ack()
{
int ack = m_ack_in;
for (int i = 0; i < m_device_count; i++)
@@ -292,7 +292,7 @@ void SCSI_PORT_DEVICE::update_ack()
}
}
-void SCSI_PORT_DEVICE::update_atn()
+void scsi_port_device::update_atn()
{
int atn = m_atn_in;
for (int i = 0; i < m_device_count; i++)
@@ -314,7 +314,7 @@ void SCSI_PORT_DEVICE::update_atn()
}
}
-void SCSI_PORT_DEVICE::update_rst()
+void scsi_port_device::update_rst()
{
int rst = m_rst_in;
for (int i = 0; i < m_device_count; i++)
@@ -336,7 +336,7 @@ void SCSI_PORT_DEVICE::update_rst()
}
}
-void SCSI_PORT_DEVICE::update_data0()
+void scsi_port_device::update_data0()
{
int data0 = m_data0_in;
for (int i = 0; i < m_device_count; i++)
@@ -358,7 +358,7 @@ void SCSI_PORT_DEVICE::update_data0()
}
}
-void SCSI_PORT_DEVICE::update_data1()
+void scsi_port_device::update_data1()
{
int data1 = m_data1_in;
for (int i = 0; i < m_device_count; i++)
@@ -380,7 +380,7 @@ void SCSI_PORT_DEVICE::update_data1()
}
}
-void SCSI_PORT_DEVICE::update_data2()
+void scsi_port_device::update_data2()
{
int data2 = m_data2_in;
for (int i = 0; i < m_device_count; i++)
@@ -402,7 +402,7 @@ void SCSI_PORT_DEVICE::update_data2()
}
}
-void SCSI_PORT_DEVICE::update_data3()
+void scsi_port_device::update_data3()
{
int data3 = m_data3_in;
for (int i = 0; i < m_device_count; i++)
@@ -424,7 +424,7 @@ void SCSI_PORT_DEVICE::update_data3()
}
}
-void SCSI_PORT_DEVICE::update_data4()
+void scsi_port_device::update_data4()
{
int data4 = m_data4_in;
for (int i = 0; i < m_device_count; i++)
@@ -446,7 +446,7 @@ void SCSI_PORT_DEVICE::update_data4()
}
}
-void SCSI_PORT_DEVICE::update_data5()
+void scsi_port_device::update_data5()
{
int data5 = m_data5_in;
for (int i = 0; i < m_device_count; i++)
@@ -468,7 +468,7 @@ void SCSI_PORT_DEVICE::update_data5()
}
}
-void SCSI_PORT_DEVICE::update_data6()
+void scsi_port_device::update_data6()
{
int data6 = m_data6_in;
for (int i = 0; i < m_device_count; i++)
@@ -490,7 +490,7 @@ void SCSI_PORT_DEVICE::update_data6()
}
}
-void SCSI_PORT_DEVICE::update_data7()
+void scsi_port_device::update_data7()
{
int data7 = m_data7_in;
for (int i = 0; i < m_device_count; i++)
@@ -512,7 +512,7 @@ void SCSI_PORT_DEVICE::update_data7()
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_bsy )
+WRITE_LINE_MEMBER( scsi_port_device::write_bsy )
{
if (m_bsy_in != state)
{
@@ -521,7 +521,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_bsy )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_sel )
+WRITE_LINE_MEMBER( scsi_port_device::write_sel )
{
if (m_sel_in != state)
{
@@ -530,7 +530,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_sel )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_cd )
+WRITE_LINE_MEMBER( scsi_port_device::write_cd )
{
if (m_cd_in != state)
{
@@ -539,7 +539,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_cd )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_io )
+WRITE_LINE_MEMBER( scsi_port_device::write_io )
{
if (m_io_in != state)
{
@@ -548,7 +548,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_io )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_msg )
+WRITE_LINE_MEMBER( scsi_port_device::write_msg )
{
if (m_msg_in != state)
{
@@ -557,7 +557,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_msg )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_req )
+WRITE_LINE_MEMBER( scsi_port_device::write_req )
{
if (m_req_in != state)
{
@@ -566,7 +566,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_req )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_ack )
+WRITE_LINE_MEMBER( scsi_port_device::write_ack )
{
if (m_ack_in != state)
{
@@ -575,7 +575,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_ack )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_atn )
+WRITE_LINE_MEMBER( scsi_port_device::write_atn )
{
if (m_atn_in != state)
{
@@ -584,7 +584,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_atn )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_rst )
+WRITE_LINE_MEMBER( scsi_port_device::write_rst )
{
if (m_rst_in != state)
{
@@ -593,7 +593,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_rst )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data0 )
+WRITE_LINE_MEMBER( scsi_port_device::write_data0 )
{
if (m_data0_in != state)
{
@@ -602,7 +602,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data0 )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data1 )
+WRITE_LINE_MEMBER( scsi_port_device::write_data1 )
{
if (m_data1_in != state)
{
@@ -611,7 +611,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data1 )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data2 )
+WRITE_LINE_MEMBER( scsi_port_device::write_data2 )
{
if (m_data2_in != state)
{
@@ -620,7 +620,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data2 )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data3 )
+WRITE_LINE_MEMBER( scsi_port_device::write_data3 )
{
if (m_data3_in != state)
{
@@ -629,7 +629,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data3 )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data4 )
+WRITE_LINE_MEMBER( scsi_port_device::write_data4 )
{
if (m_data4_in != state)
{
@@ -638,7 +638,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data4 )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data5 )
+WRITE_LINE_MEMBER( scsi_port_device::write_data5 )
{
if (m_data5_in != state)
{
@@ -647,7 +647,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data5 )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data6 )
+WRITE_LINE_MEMBER( scsi_port_device::write_data6 )
{
if (m_data6_in != state)
{
@@ -656,7 +656,7 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data6 )
}
}
-WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data7 )
+WRITE_LINE_MEMBER( scsi_port_device::write_data7 )
{
if (m_data7_in != state)
{
@@ -665,10 +665,10 @@ WRITE_LINE_MEMBER( SCSI_PORT_DEVICE::write_data7 )
}
}
-const device_type SCSI_PORT = device_creator<SCSI_PORT_DEVICE>;
+DEFINE_DEVICE_TYPE(SCSI_PORT, scsi_port_device, "scsi", "SCSI Port")
-SCSI_PORT_SLOT_device::SCSI_PORT_SLOT_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SCSI_PORT_SLOT, "SCSI Connector", tag, owner, clock, "scsi_slot", __FILE__),
+scsi_port_slot_device::scsi_port_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, SCSI_PORT_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_dev(nullptr),
m_bsy(0),
@@ -688,24 +688,24 @@ SCSI_PORT_SLOT_device::SCSI_PORT_SLOT_device(const machine_config &mconfig, cons
m_data6(0),
m_data7(0)
{
- m_port = dynamic_cast<SCSI_PORT_DEVICE *>(device().owner());
+ m_port = dynamic_cast<scsi_port_device *>(device().owner());
}
-void SCSI_PORT_SLOT_device::device_config_complete()
+void scsi_port_slot_device::device_config_complete()
{
m_dev = dynamic_cast<scsi_port_interface *>(get_card_device());
}
-void SCSI_PORT_SLOT_device::device_start()
+void scsi_port_slot_device::device_start()
{
}
-const device_type SCSI_PORT_SLOT = device_creator<SCSI_PORT_SLOT_device>;
+DEFINE_DEVICE_TYPE(SCSI_PORT_SLOT, scsi_port_slot_device, "scsi_slot", "SCSI Connector")
scsi_port_interface::scsi_port_interface(const machine_config &mconfig, device_t &device)
: device_slot_card_interface(mconfig, device)
{
- m_slot = dynamic_cast<SCSI_PORT_SLOT_device *>(device.owner());
+ m_slot = dynamic_cast<scsi_port_slot_device *>(device.owner());
}
scsi_port_interface::~scsi_port_interface()
diff --git a/src/devices/bus/scsi/scsi.h b/src/devices/bus/scsi/scsi.h
index af362522c2d..7868b7f3777 100644
--- a/src/devices/bus/scsi/scsi.h
+++ b/src/devices/bus/scsi/scsi.h
@@ -1,10 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#pragma once
+#ifndef MAME_BUS_SCSI_SCSI_H
+#define MAME_BUS_SCSI_SCSI_H
-#ifndef _SCSI_H_
-#define _SCSI_H_
+#pragma once
#include "machine/buffer.h"
#include "machine/latch.h"
@@ -18,66 +18,66 @@
#define SCSI_PORT_DEVICE7 "7"
#define MCFG_SCSI_BSY_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_bsy_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_bsy_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_SEL_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_sel_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_sel_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_CD_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_cd_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_cd_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_IO_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_io_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_io_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_MSG_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_msg_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_msg_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_REQ_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_req_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_req_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_ACK_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_ack_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_ack_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_ATN_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_atn_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_atn_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_RST_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_rst_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_rst_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_DATA0_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_data0_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_data0_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_DATA1_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_data1_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_data1_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_DATA2_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_data2_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_data2_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_DATA3_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_data3_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_data3_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_DATA4_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_data4_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_data4_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_DATA5_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_data5_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_data5_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_DATA6_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_data6_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_data6_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_DATA7_HANDLER(_devcb) \
- devcb = &SCSI_PORT_DEVICE::set_data7_handler(*device, DEVCB_##_devcb);
+ devcb = &scsi_port_device::set_data7_handler(*device, DEVCB_##_devcb);
#define MCFG_SCSI_OUTPUT_LATCH_ADD(_tag, scsi_port_tag) \
MCFG_DEVICE_ADD(_tag, OUTPUT_LATCH, 0) \
- MCFG_OUTPUT_LATCH_BIT0_HANDLER(DEVWRITELINE(scsi_port_tag, SCSI_PORT_DEVICE, write_data0)) \
- MCFG_OUTPUT_LATCH_BIT1_HANDLER(DEVWRITELINE(scsi_port_tag, SCSI_PORT_DEVICE, write_data1)) \
- MCFG_OUTPUT_LATCH_BIT2_HANDLER(DEVWRITELINE(scsi_port_tag, SCSI_PORT_DEVICE, write_data2)) \
- MCFG_OUTPUT_LATCH_BIT3_HANDLER(DEVWRITELINE(scsi_port_tag, SCSI_PORT_DEVICE, write_data3)) \
- MCFG_OUTPUT_LATCH_BIT4_HANDLER(DEVWRITELINE(scsi_port_tag, SCSI_PORT_DEVICE, write_data4)) \
- MCFG_OUTPUT_LATCH_BIT5_HANDLER(DEVWRITELINE(scsi_port_tag, SCSI_PORT_DEVICE, write_data5)) \
- MCFG_OUTPUT_LATCH_BIT6_HANDLER(DEVWRITELINE(scsi_port_tag, SCSI_PORT_DEVICE, write_data6)) \
- MCFG_OUTPUT_LATCH_BIT7_HANDLER(DEVWRITELINE(scsi_port_tag, SCSI_PORT_DEVICE, write_data7))
+ MCFG_OUTPUT_LATCH_BIT0_HANDLER(DEVWRITELINE(scsi_port_tag, scsi_port_device, write_data0)) \
+ MCFG_OUTPUT_LATCH_BIT1_HANDLER(DEVWRITELINE(scsi_port_tag, scsi_port_device, write_data1)) \
+ MCFG_OUTPUT_LATCH_BIT2_HANDLER(DEVWRITELINE(scsi_port_tag, scsi_port_device, write_data2)) \
+ MCFG_OUTPUT_LATCH_BIT3_HANDLER(DEVWRITELINE(scsi_port_tag, scsi_port_device, write_data3)) \
+ MCFG_OUTPUT_LATCH_BIT4_HANDLER(DEVWRITELINE(scsi_port_tag, scsi_port_device, write_data4)) \
+ MCFG_OUTPUT_LATCH_BIT5_HANDLER(DEVWRITELINE(scsi_port_tag, scsi_port_device, write_data5)) \
+ MCFG_OUTPUT_LATCH_BIT6_HANDLER(DEVWRITELINE(scsi_port_tag, scsi_port_device, write_data6)) \
+ MCFG_OUTPUT_LATCH_BIT7_HANDLER(DEVWRITELINE(scsi_port_tag, scsi_port_device, write_data7))
#define MCFG_SCSI_DATA_INPUT_BUFFER(_tag) \
MCFG_SCSI_DATA0_HANDLER(DEVWRITELINE(_tag, input_buffer_device, write_bit0)) \
@@ -89,34 +89,34 @@
MCFG_SCSI_DATA6_HANDLER(DEVWRITELINE(_tag, input_buffer_device, write_bit6)) \
MCFG_SCSI_DATA7_HANDLER(DEVWRITELINE(_tag, input_buffer_device, write_bit7))
-class SCSI_PORT_SLOT_device;
+class scsi_port_slot_device;
class scsi_port_interface;
-class SCSI_PORT_DEVICE : public device_t
+class scsi_port_device : public device_t
{
friend class scsi_port_interface;
public:
// construction/destruction
- SCSI_PORT_DEVICE(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- template<class _Object> static devcb_base &set_bsy_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_bsy_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_sel_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_sel_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_cd_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_cd_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_io_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_io_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_msg_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_msg_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_req_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_req_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ack_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_ack_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_atn_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_atn_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rst_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_rst_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data0_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_data0_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data1_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_data1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data2_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_data2_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data3_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_data3_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data4_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_data4_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data5_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_data5_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data6_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_data6_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_data7_handler(device_t &device, _Object object) { return downcast<SCSI_PORT_DEVICE &>(device).m_data7_handler.set_callback(object); }
+ scsi_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ template <class Object> static devcb_base &set_bsy_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_bsy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sel_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_sel_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cd_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_cd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_io_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_io_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_msg_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_msg_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_req_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_req_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ack_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_ack_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_atn_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_atn_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rst_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_rst_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data0_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data1_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data2_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data3_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data3_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data4_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data5_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data5_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data6_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data6_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data7_handler(device_t &device, Object &&cb) { return downcast<scsi_port_device &>(device).m_data7_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_bsy );
DECLARE_WRITE_LINE_MEMBER( write_sel );
@@ -178,7 +178,7 @@ private:
devcb_write_line m_data6_handler;
devcb_write_line m_data7_handler;
- SCSI_PORT_SLOT_device *m_slot[7];
+ scsi_port_slot_device *m_slot[7];
int m_device_count;
int m_bsy_in;
@@ -221,17 +221,17 @@ extern const device_type SCSI_PORT;
class scsi_port_interface;
-class SCSI_PORT_SLOT_device : public device_t,
+class scsi_port_slot_device : public device_t,
public device_slot_interface
{
- friend class SCSI_PORT_DEVICE;
+ friend class scsi_port_device;
friend class scsi_port_interface;
public:
- SCSI_PORT_SLOT_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ scsi_port_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
scsi_port_interface *dev() { return m_dev; }
- SCSI_PORT_DEVICE *port() { return m_port; }
+ scsi_port_device *port() { return m_port; }
protected:
// device-level overrides
@@ -240,7 +240,7 @@ protected:
protected:
scsi_port_interface *m_dev;
- SCSI_PORT_DEVICE *m_port;
+ scsi_port_device *m_port;
int m_bsy;
int m_sel;
@@ -261,31 +261,30 @@ protected:
int m_data7;
};
-extern const device_type SCSI_PORT_SLOT;
+DECLARE_DEVICE_TYPE(SCSI_PORT_SLOT, scsi_port_slot_device)
class scsi_port_interface : public device_slot_card_interface
{
public:
- scsi_port_interface(const machine_config &mconfig, device_t &device);
virtual ~scsi_port_interface();
- virtual DECLARE_WRITE_LINE_MEMBER( input_bsy ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_sel ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_cd ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_io ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_msg ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_req ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_ack ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_atn ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_rst ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data0 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data1 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data2 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data3 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data4 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data5 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data6 ) {}
- virtual DECLARE_WRITE_LINE_MEMBER( input_data7 ) {}
+ virtual DECLARE_WRITE_LINE_MEMBER( input_bsy ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_sel ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_cd ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_io ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_msg ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_req ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_ack ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_atn ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_rst ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data0 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data1 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data2 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data3 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data4 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data5 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data6 ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( input_data7 ) { }
DECLARE_WRITE_LINE_MEMBER( output_bsy ) { if (m_slot->m_bsy != state) { m_slot->m_bsy = state; m_slot->port()->update_bsy(); } }
DECLARE_WRITE_LINE_MEMBER( output_sel ) { if (m_slot->m_sel != state) { m_slot->m_sel = state; m_slot->port()->update_sel(); } }
@@ -305,8 +304,11 @@ public:
DECLARE_WRITE_LINE_MEMBER( output_data6 ) { if (m_slot->m_data6 != state) { m_slot->m_data6 = state; m_slot->port()->update_data6(); } }
DECLARE_WRITE_LINE_MEMBER( output_data7 ) { if (m_slot->m_data7 != state) { m_slot->m_data7 = state; m_slot->port()->update_data7(); } }
+protected:
+ scsi_port_interface(const machine_config &mconfig, device_t &device);
+
private:
- SCSI_PORT_SLOT_device *m_slot;
+ scsi_port_slot_device *m_slot;
};
-#endif
+#endif // MAME_BUS_SCSI_SCSI_H
diff --git a/src/devices/bus/scsi/scsicd.cpp b/src/devices/bus/scsi/scsicd.cpp
index 2c995bc54a3..93bd9750e8e 100644
--- a/src/devices/bus/scsi/scsicd.cpp
+++ b/src/devices/bus/scsi/scsicd.cpp
@@ -10,15 +10,15 @@
#include "scsicd.h"
// device type definition
-const device_type SCSICD = device_creator<scsicd_device>;
+DEFINE_DEVICE_TYPE(SCSICD, scsicd_device, "scsicd", "SCSI CD")
scsicd_device::scsicd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- scsihle_device(mconfig, SCSICD, "SCSI CD", tag, owner, clock, "scsicd", __FILE__)
+ scsicd_device(mconfig, SCSICD, tag, owner, clock)
{
}
-scsicd_device::scsicd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- scsihle_device(mconfig, type, name, tag, owner, clock, shortname, source)
+scsicd_device::scsicd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ scsihle_device(mconfig, type, tag, owner, clock)
{
}
diff --git a/src/devices/bus/scsi/scsicd.h b/src/devices/bus/scsi/scsicd.h
index c7c2f377e50..b9dba1db6d9 100644
--- a/src/devices/bus/scsi/scsicd.h
+++ b/src/devices/bus/scsi/scsicd.h
@@ -6,26 +6,25 @@
***************************************************************************/
-#ifndef _SCSICD_H_
-#define _SCSICD_H_
+#ifndef MAME_BUS_SCSI_SCSICD_H
+#define MAME_BUS_SCSI_SCSICD_H
#include "scsihle.h"
#include "machine/t10mmc.h"
-class scsicd_device : public scsihle_device,
- public t10mmc
+class scsicd_device : public scsihle_device, public t10mmc
{
public:
// construction/destruction
scsicd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- scsicd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
+ scsicd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
};
// device type definition
-extern const device_type SCSICD;
+DECLARE_DEVICE_TYPE(SCSICD, scsicd_device)
-#endif
+#endif // MAME_BUS_SCSI_SCSICD_H
diff --git a/src/devices/bus/scsi/scsihd.cpp b/src/devices/bus/scsi/scsihd.cpp
index b8aae0aa48e..a0868659772 100644
--- a/src/devices/bus/scsi/scsihd.cpp
+++ b/src/devices/bus/scsi/scsihd.cpp
@@ -10,15 +10,15 @@
#include "scsihd.h"
// device type definition
-const device_type SCSIHD = device_creator<scsihd_device>;
+DEFINE_DEVICE_TYPE(SCSIHD, scsihd_device, "scsihd", "SCSI HD")
scsihd_device::scsihd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scsihle_device(mconfig, SCSIHD, "SCSI HD", tag, owner, clock, "scsihd", __FILE__)
+ : scsihd_device(mconfig, SCSIHD, tag, owner, clock)
{
}
-scsihd_device::scsihd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- scsihle_device(mconfig, type, name, tag, owner, clock, shortname, source)
+scsihd_device::scsihd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ scsihle_device(mconfig, type, tag, owner, clock)
{
}
diff --git a/src/devices/bus/scsi/scsihd.h b/src/devices/bus/scsi/scsihd.h
index 1a312a79216..21517c8bbf7 100644
--- a/src/devices/bus/scsi/scsihd.h
+++ b/src/devices/bus/scsi/scsihd.h
@@ -6,26 +6,27 @@
***************************************************************************/
-#ifndef _SCSIHD_H_
-#define _SCSIHD_H_
+#ifndef MAME_BUS_SCSI_SCSIHD_H
+#define MAME_BUS_SCSI_SCSIHD_H
+
+#pragma once
#include "scsihle.h"
#include "machine/t10sbc.h"
-class scsihd_device : public scsihle_device,
- public t10sbc
+class scsihd_device : public scsihle_device, public t10sbc
{
public:
// construction/destruction
scsihd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- scsihd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
+ scsihd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
};
// device type definition
-extern const device_type SCSIHD;
+DECLARE_DEVICE_TYPE(SCSIHD, scsihd_device)
-#endif
+#endif // MAME_BUS_SCSI_SCSIHD_H
diff --git a/src/devices/bus/scsi/scsihle.cpp b/src/devices/bus/scsi/scsihle.cpp
index 27c1a567b62..ed63dae450e 100644
--- a/src/devices/bus/scsi/scsihle.cpp
+++ b/src/devices/bus/scsi/scsihle.cpp
@@ -11,8 +11,8 @@ Base class for HLE'd SCSI devices.
#include "emu.h"
#include "scsihle.h"
-scsihle_device::scsihle_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+scsihle_device::scsihle_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
scsi_port_interface(mconfig, *this),
m_scsi_id(*this, "SCSI_ID"),
req_timer(nullptr),
diff --git a/src/devices/bus/scsi/scsihle.h b/src/devices/bus/scsi/scsihle.h
index 72537d3b3b0..bce047ae474 100644
--- a/src/devices/bus/scsi/scsihle.h
+++ b/src/devices/bus/scsi/scsihle.h
@@ -8,8 +8,8 @@ Base class for HLE'd SCSI devices.
*/
-#ifndef _SCSIHLE_H_
-#define _SCSIHLE_H_
+#ifndef MAME_BUS_SCSI_SCSIHLE_H
+#define MAME_BUS_SCSI_SCSIHLE_H
#include "scsi.h"
#include "machine/t10spc.h"
@@ -21,9 +21,6 @@ class scsihle_device : public device_t,
public virtual t10spc
{
public:
- // construction/destruction
- scsihle_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
virtual int GetDeviceID(); // hack for legacy_scsi_host_adapter::get_device
virtual DECLARE_WRITE_LINE_MEMBER( input_sel ) override;
@@ -39,6 +36,9 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER( input_data7 ) override { if (state) m_input_data |= 0x80; else m_input_data &= ~0x80; }
protected:
+ // construction/destruction
+ scsihle_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual ioport_constructor device_input_ports() const override;
virtual void device_start() override;
@@ -89,4 +89,5 @@ extern const input_device_default DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_7)[];
MCFG_SLOT_OPTION_ADD( _option, _type ) \
MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS( _option, _id ) \
MCFG_SLOT_DEFAULT_OPTION( _option )
-#endif
+
+#endif // MAME_BUS_SCSI_SCSIHLE_H
diff --git a/src/devices/bus/scv/rom.cpp b/src/devices/bus/scv/rom.cpp
index 2507219be4a..be0dc7aea2c 100644
--- a/src/devices/bus/scv/rom.cpp
+++ b/src/devices/bus/scv/rom.cpp
@@ -17,55 +17,53 @@
// scv_rom_device - constructor
//-------------------------------------------------
-const device_type SCV_ROM8K = device_creator<scv_rom8_device>;
-const device_type SCV_ROM16K = device_creator<scv_rom16_device>;
-const device_type SCV_ROM32K = device_creator<scv_rom32_device>;
-const device_type SCV_ROM32K_RAM8K = device_creator<scv_rom32ram8_device>;
-const device_type SCV_ROM64K = device_creator<scv_rom64_device>;
-const device_type SCV_ROM128K = device_creator<scv_rom128_device>;
-const device_type SCV_ROM128K_RAM4K = device_creator<scv_rom128ram4_device>;
+DEFINE_DEVICE_TYPE(SCV_ROM8K, scv_rom8_device, "scv_rom8", "SCV 8K Carts")
+DEFINE_DEVICE_TYPE(SCV_ROM16K, scv_rom16_device, "scv_rom16", "SCV 16K Carts")
+DEFINE_DEVICE_TYPE(SCV_ROM32K, scv_rom32_device, "scv_rom32", "SCV 32K Carts")
+DEFINE_DEVICE_TYPE(SCV_ROM32K_RAM8K, scv_rom32ram8_device, "scv_rom32_ram8", "SCV 32K + RAM 8K Carts")
+DEFINE_DEVICE_TYPE(SCV_ROM64K, scv_rom64_device, "scv_rom64", "SCV 64K Carts")
+DEFINE_DEVICE_TYPE(SCV_ROM128K, scv_rom128_device, "scv_rom128", "SCV 128K Carts")
+DEFINE_DEVICE_TYPE(SCV_ROM128K_RAM4K, scv_rom128ram4_device, "scv_rom128_ram4", "SCV 128K + RAM 4K Carts")
-scv_rom8_device::scv_rom8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_scv_cart_interface( mconfig, *this )
+scv_rom8_device::scv_rom8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_scv_cart_interface(mconfig, *this)
{
}
scv_rom8_device::scv_rom8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SCV_ROM8K, "SCV 8K Carts", tag, owner, clock, "scv_rom8", __FILE__),
- device_scv_cart_interface( mconfig, *this )
+ : scv_rom8_device(mconfig, SCV_ROM8K, tag, owner, clock)
{
}
scv_rom16_device::scv_rom16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scv_rom8_device(mconfig, SCV_ROM16K, "SCV 16K Carts", tag, owner, clock, "scv_rom16", __FILE__)
+ : scv_rom8_device(mconfig, SCV_ROM16K, tag, owner, clock)
{
}
scv_rom32_device::scv_rom32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scv_rom8_device(mconfig, SCV_ROM32K, "SCV 32K Carts", tag, owner, clock, "scv_rom32", __FILE__)
+ : scv_rom8_device(mconfig, SCV_ROM32K, tag, owner, clock)
{
}
scv_rom32ram8_device::scv_rom32ram8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scv_rom8_device(mconfig, SCV_ROM32K_RAM8K, "SCV 32K + RAM 8K Carts", tag, owner, clock, "scv_rom32_ram8", __FILE__), m_ram_enabled(0)
- {
+ : scv_rom8_device(mconfig, SCV_ROM32K_RAM8K, tag, owner, clock), m_ram_enabled(0)
+{
}
scv_rom64_device::scv_rom64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scv_rom8_device(mconfig, SCV_ROM64K, "SCV 64K Carts", tag, owner, clock, "scv_rom64", __FILE__), m_bank_base(0)
- {
+ : scv_rom8_device(mconfig, SCV_ROM64K, tag, owner, clock), m_bank_base(0)
+{
}
scv_rom128_device::scv_rom128_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scv_rom8_device(mconfig, SCV_ROM128K, "SCV 128K Carts", tag, owner, clock, "scv_rom128", __FILE__), m_bank_base(0)
- {
+ : scv_rom8_device(mconfig, SCV_ROM128K, tag, owner, clock), m_bank_base(0)
+{
}
scv_rom128ram4_device::scv_rom128ram4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scv_rom8_device(mconfig, SCV_ROM128K_RAM4K, "SCV 128K + RAM 4K Carts", tag, owner, clock, "scv_rom128_ram4", __FILE__), m_bank_base(0), m_ram_enabled(0)
- {
+ : scv_rom8_device(mconfig, SCV_ROM128K_RAM4K, tag, owner, clock), m_bank_base(0), m_ram_enabled(0)
+{
}
diff --git a/src/devices/bus/scv/rom.h b/src/devices/bus/scv/rom.h
index 40a56ec5ce0..4a6b90b39a1 100644
--- a/src/devices/bus/scv/rom.h
+++ b/src/devices/bus/scv/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SCV_ROM_H
-#define __SCV_ROM_H
+#ifndef MAME_BUS_SCV_ROM_H
+#define MAME_BUS_SCV_ROM_H
+
+#pragma once
#include "slot.h"
@@ -13,15 +15,17 @@ class scv_rom8_device : public device_t,
{
public:
// construction/destruction
- scv_rom8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
scv_rom8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {}
- virtual void device_reset() override {}
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
+
+protected:
+ scv_rom8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
};
// ======================> scv_rom16_device
@@ -58,15 +62,16 @@ public:
// construction/destruction
scv_rom32ram8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_ram_enabled;
};
@@ -101,14 +106,15 @@ public:
// construction/destruction
scv_rom128_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_bank_base;
};
@@ -122,30 +128,28 @@ public:
// construction/destruction
scv_rom128ram4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_bank_base, m_ram_enabled;
};
-
// device type definition
-extern const device_type SCV_ROM8K;
-extern const device_type SCV_ROM16K;
-extern const device_type SCV_ROM32K;
-extern const device_type SCV_ROM32K_RAM8K;
-extern const device_type SCV_ROM64K;
-extern const device_type SCV_ROM128K;
-extern const device_type SCV_ROM128K_RAM4K;
-
-
-
-#endif
+DECLARE_DEVICE_TYPE(SCV_ROM8K, scv_rom8_device)
+DECLARE_DEVICE_TYPE(SCV_ROM16K, scv_rom16_device)
+DECLARE_DEVICE_TYPE(SCV_ROM32K, scv_rom32_device)
+DECLARE_DEVICE_TYPE(SCV_ROM32K_RAM8K, scv_rom32ram8_device)
+DECLARE_DEVICE_TYPE(SCV_ROM64K, scv_rom64_device)
+DECLARE_DEVICE_TYPE(SCV_ROM128K, scv_rom128_device)
+DECLARE_DEVICE_TYPE(SCV_ROM128K_RAM4K, scv_rom128ram4_device)
+
+#endif // MAME_BUS_SCV_ROM_H
diff --git a/src/devices/bus/scv/slot.cpp b/src/devices/bus/scv/slot.cpp
index 953cfd95af8..c95f872089a 100644
--- a/src/devices/bus/scv/slot.cpp
+++ b/src/devices/bus/scv/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SCV_CART_SLOT = device_creator<scv_cart_slot_device>;
+DEFINE_DEVICE_TYPE(SCV_CART_SLOT, scv_cart_slot_device, "scv_cart_slot", "SCV Cartridge Slot")
//**************************************************************************
// SCV cartridges Interface
@@ -73,10 +73,10 @@ void device_scv_cart_interface::ram_alloc(uint32_t size)
// scv_cart_slot_device - constructor
//-------------------------------------------------
scv_cart_slot_device::scv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SCV_CART_SLOT, "SCV Cartridge Slot", tag, owner, clock, "scv_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(SCV_8K), m_cart(nullptr)
+ device_t(mconfig, SCV_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(SCV_8K), m_cart(nullptr)
{
}
diff --git a/src/devices/bus/scv/slot.h b/src/devices/bus/scv/slot.h
index 6f926b96559..5dc3ec6e5b7 100644
--- a/src/devices/bus/scv/slot.h
+++ b/src/devices/bus/scv/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SCV_SLOT_H
-#define __SCV_SLOT_H
+#ifndef MAME_BUS_SCV_SLOT_H
+#define MAME_BUS_SCV_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -30,13 +32,12 @@ class device_scv_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_scv_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_scv_cart_interface();
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write_cart) {}
- virtual DECLARE_WRITE8_MEMBER(write_bank) {}
+ virtual DECLARE_WRITE8_MEMBER(write_cart) { }
+ virtual DECLARE_WRITE8_MEMBER(write_bank) { }
void rom_alloc(uint32_t size, const char *tag);
void ram_alloc(uint32_t size);
@@ -48,6 +49,8 @@ public:
void save_ram() { device().save_item(NAME(m_ram)); }
protected:
+ device_scv_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -66,9 +69,6 @@ public:
scv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~scv_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override {}
@@ -97,6 +97,8 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_bank);
protected:
+ // device-level overrides
+ virtual void device_start() override;
int m_type;
device_scv_cart_interface* m_cart;
@@ -105,7 +107,7 @@ protected:
// device type definition
-extern const device_type SCV_CART_SLOT;
+DECLARE_DEVICE_TYPE(SCV_CART_SLOT, scv_cart_slot_device)
/***************************************************************************
@@ -117,4 +119,5 @@ extern const device_type SCV_CART_SLOT;
#define MCFG_SCV_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, SCV_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+
+#endif // MAME_BUS_SCV_SLOT_H
diff --git a/src/devices/bus/sega8/ccatch.cpp b/src/devices/bus/sega8/ccatch.cpp
index b8a8ffd3263..4f30ea15767 100644
--- a/src/devices/bus/sega8/ccatch.cpp
+++ b/src/devices/bus/sega8/ccatch.cpp
@@ -19,13 +19,12 @@
// constructors
//-------------------------------------------------
-const device_type SEGA8_ROM_CARDCATCH = device_creator<sega8_cardcatch_device>;
+DEFINE_DEVICE_TYPE(SEGA8_ROM_CARDCATCH, sega8_cardcatch_device, "sega8_ccatch", "SG-1000 Card Catcher Cart")
sega8_cardcatch_device::sega8_cardcatch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_CARDCATCH, "SG-1000 Card Catcher Cart", tag, owner, clock, "sega8_ccatch", __FILE__),
- m_card(*this, "cardslot")
+ : sega8_rom_device(mconfig, SEGA8_ROM_CARDCATCH, tag, owner, clock), m_card(*this, "cardslot")
{
}
diff --git a/src/devices/bus/sega8/ccatch.h b/src/devices/bus/sega8/ccatch.h
index 138f39dba9b..ecbc4cfd367 100644
--- a/src/devices/bus/sega8/ccatch.h
+++ b/src/devices/bus/sega8/ccatch.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SEGA8_CCATCH_H
-#define __SEGA8_CCATCH_H
+#ifndef MAME_BUS_SEGA8_CCATCH_H
+#define MAME_BUS_SEGA8_CCATCH_H
+
+#pragma once
#include "sega8_slot.h"
#include "rom.h"
@@ -26,10 +28,7 @@ protected:
};
-
-
-
// device type definition
-extern const device_type SEGA8_ROM_CARDCATCH;
+DECLARE_DEVICE_TYPE(SEGA8_ROM_CARDCATCH, sega8_cardcatch_device)
-#endif
+#endif // MAME_BUS_SEGA8_CCATCH_H
diff --git a/src/devices/bus/sega8/mgear.cpp b/src/devices/bus/sega8/mgear.cpp
index 4cf05b340ec..97c7ee1d51c 100644
--- a/src/devices/bus/sega8/mgear.cpp
+++ b/src/devices/bus/sega8/mgear.cpp
@@ -21,11 +21,10 @@
// constructors
//-------------------------------------------------
-const device_type SEGA8_ROM_MGEAR = device_creator<sega8_mgear_device>;
+DEFINE_DEVICE_TYPE(SEGA8_ROM_MGEAR, sega8_mgear_device, "sega8_mgear", "Master Gear Converter")
sega8_mgear_device::sega8_mgear_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_MGEAR, "Master Gear Converter", tag, owner, clock, "sega8_mgear", __FILE__),
- m_subslot(*this, "subslot")
+ : sega8_rom_device(mconfig, SEGA8_ROM_MGEAR, tag, owner, clock), m_subslot(*this, "subslot")
{
}
diff --git a/src/devices/bus/sega8/mgear.h b/src/devices/bus/sega8/mgear.h
index 0544fd74741..e109df58e73 100644
--- a/src/devices/bus/sega8/mgear.h
+++ b/src/devices/bus/sega8/mgear.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SEGA8_MGEAR_H
-#define __SEGA8_MGEAR_H
+#ifndef MAME_BUS_SEGA8_MGEAR_H
+#define MAME_BUS_SEGA8_MGEAR_H
+
+#pragma once
#include "sega8_slot.h"
#include "rom.h"
@@ -23,7 +25,7 @@ public:
virtual DECLARE_READ8_MEMBER(read_cart) override { return m_subslot->read_cart(space, offset); }
virtual DECLARE_WRITE8_MEMBER(write_cart) override { m_subslot->write_cart(space, offset, data); }
virtual DECLARE_WRITE8_MEMBER(write_mapper) override { m_subslot->write_mapper(space, offset, data); }
- virtual int get_lphaser_xoffs() override { return m_subslot->m_cart ? m_subslot->m_cart->get_lphaser_xoffs() : -1; }
+ virtual int get_lphaser_xoffs() override { return m_subslot->get_lphaser_xoffs(); }
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -33,7 +35,6 @@ protected:
// device type definition
-extern const device_type SEGA8_ROM_MGEAR;
-
+DECLARE_DEVICE_TYPE(SEGA8_ROM_MGEAR, sega8_mgear_device)
-#endif
+#endif // MAME_BUS_SEGA8_MGEAR_H
diff --git a/src/devices/bus/sega8/rom.cpp b/src/devices/bus/sega8/rom.cpp
index 7ef04ca9c79..f5a154308f7 100644
--- a/src/devices/bus/sega8/rom.cpp
+++ b/src/devices/bus/sega8/rom.cpp
@@ -19,87 +19,89 @@
// Base cart type shared across SG-1000, SG-1000 Mark II, SG-1000 Mark III, SMS, GG
// even if in sg1000 rom banks are never changed and ram is never enabled
-const device_type SEGA8_ROM_STD = device_creator<sega8_rom_device>;
+DEFINE_DEVICE_TYPE(SEGA8_ROM_STD, sega8_rom_device, "sega8_rom", "SG-1000, SMS & GG Carts")
// Specific SG-1000 MkI - MkII cart types
-const device_type SEGA8_ROM_OTHELLO = device_creator<sega8_othello_device>;
-const device_type SEGA8_ROM_CASTLE = device_creator<sega8_castle_device>;
-const device_type SEGA8_ROM_BASIC_L3 = device_creator<sega8_basic_l3_device>;
-const device_type SEGA8_ROM_MUSIC_EDITOR = device_creator<sega8_music_editor_device>;
-const device_type SEGA8_ROM_TEREBI = device_creator<sega8_terebi_device>;
-const device_type SEGA8_ROM_DAHJEE_TYPEA = device_creator<sega8_dahjee_typea_device>;
-const device_type SEGA8_ROM_DAHJEE_TYPEB = device_creator<sega8_dahjee_typeb_device>;
+DEFINE_DEVICE_TYPE(SEGA8_ROM_OTHELLO, sega8_othello_device, "sega8_othello", "SG-1000 Othello Cart")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_CASTLE, sega8_castle_device, "sega8_castle", "SG-1000 The Castle Cart")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_BASIC_L3, sega8_basic_l3_device, "sega8_basicl3", "SC-3000 BASIC Level III Cart")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_MUSIC_EDITOR, sega8_music_editor_device, "sega8_music", "SC-3000 Music Editor Cart")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_TEREBI, sega8_terebi_device, "sega8_terebi", "SG-1000 Terebi Oekaki Cart")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_DAHJEE_TYPEA, sega8_dahjee_typea_device, "sega8_dahjeea", "SG-1000 Dahjee RAM expansion + Cart (Type A)")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_DAHJEE_TYPEB, sega8_dahjee_typeb_device, "sega8_dahjeeb", "SG-1000 Dahjee RAM expansion + Cart (Type B)")
// Specific SG-1000 MkIII - SMS - GG cart types
-const device_type SEGA8_ROM_EEPROM = device_creator<sega8_eeprom_device>;
-const device_type SEGA8_ROM_CODEMASTERS = device_creator<sega8_codemasters_device>;
-const device_type SEGA8_ROM_4PAK = device_creator<sega8_4pak_device>;
-const device_type SEGA8_ROM_ZEMINA = device_creator<sega8_zemina_device>;
-const device_type SEGA8_ROM_NEMESIS = device_creator<sega8_nemesis_device>;
-const device_type SEGA8_ROM_JANGGUN = device_creator<sega8_janggun_device>;
-const device_type SEGA8_ROM_HICOM = device_creator<sega8_hicom_device>;
-const device_type SEGA8_ROM_KOREAN = device_creator<sega8_korean_device>;
-const device_type SEGA8_ROM_KOREAN_NB = device_creator<sega8_korean_nb_device>;
-const device_type SEGA8_ROM_SEOJIN = device_creator<sega8_seojin_device>;
+DEFINE_DEVICE_TYPE(SEGA8_ROM_EEPROM, sega8_eeprom_device, "sega8_eeprom", "GG Carts + EEPROM")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_CODEMASTERS, sega8_codemasters_device, "sega8_codemasters", "Mark III, SMS & GG Codemasters Carts")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_4PAK, sega8_4pak_device, "sega8_4pak", "SMS 4-Pak Cart")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_ZEMINA, sega8_zemina_device, "sega8_zemina", "SMS Zemina Carts")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_NEMESIS, sega8_nemesis_device, "sega8_nemesis", "SMS Nemesis Cart")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_JANGGUN, sega8_janggun_device, "sega8_janggun", "SMS Janggun Cart")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_HICOM, sega8_hicom_device, "sega8_hicom", "SMS Hi-Com Carts")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_KOREAN, sega8_korean_device, "sega8_korean", "SMS Korean Carts")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_KOREAN_NB, sega8_korean_nb_device, "sega8_korean_nb", "SMS Korean No-Bank Mapper Carts")
+DEFINE_DEVICE_TYPE(SEGA8_ROM_SEOJIN, sega8_seojin_device, "sega8_seojin", "SMS Seo Jin Multi-cart")
-sega8_rom_device::sega8_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sega8_cart_interface( mconfig, *this ), m_ram_base(0), m_ram_enabled(0)
- {
+sega8_rom_device::sega8_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sega8_cart_interface(mconfig, *this)
+ , m_ram_base(0)
+ , m_ram_enabled(0)
+{
}
sega8_rom_device::sega8_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SEGA8_ROM_STD, "Mark III, SMS & GG Carts", tag, owner, clock, "sega8_rom", __FILE__),
- device_sega8_cart_interface( mconfig, *this ), m_ram_base(0), m_ram_enabled(0)
- {
+ : sega8_rom_device(mconfig, SEGA8_ROM_STD, tag, owner, clock)
+{
}
sega8_othello_device::sega8_othello_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_OTHELLO, "SG-1000 Othello Cart", tag, owner, clock, "sega8_othello", __FILE__)
+ : sega8_rom_device(mconfig, SEGA8_ROM_OTHELLO, tag, owner, clock)
{
}
sega8_castle_device::sega8_castle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_CASTLE, "SG-1000 The Castle Cart", tag, owner, clock, "sega8_castle", __FILE__)
+ : sega8_rom_device(mconfig, SEGA8_ROM_CASTLE, tag, owner, clock)
{
}
sega8_basic_l3_device::sega8_basic_l3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_BASIC_L3, "SC-3000 BASIC Level III Cart", tag, owner, clock, "sega8_basicl3", __FILE__)
+ : sega8_rom_device(mconfig, SEGA8_ROM_BASIC_L3, tag, owner, clock)
{
}
sega8_music_editor_device::sega8_music_editor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_MUSIC_EDITOR, "SC-3000 Music Editor Cart", tag, owner, clock, "sega8_music", __FILE__)
+ : sega8_rom_device(mconfig, SEGA8_ROM_MUSIC_EDITOR, tag, owner, clock)
{
}
sega8_terebi_device::sega8_terebi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_TEREBI, "SG-1000 Terebi Oekaki Cart", tag, owner, clock, "sega8_terebi", __FILE__),
- m_tvdraw_x(*this, "TVDRAW_X"),
- m_tvdraw_y(*this, "TVDRAW_Y"),
- m_tvdraw_pen(*this, "TVDRAW_PEN"), m_tvdraw_data(0)
- {
+ : sega8_rom_device(mconfig, SEGA8_ROM_TEREBI, tag, owner, clock)
+ , m_tvdraw_x(*this, "TVDRAW_X")
+ , m_tvdraw_y(*this, "TVDRAW_Y")
+ , m_tvdraw_pen(*this, "TVDRAW_PEN")
+ , m_tvdraw_data(0)
+{
}
sega8_dahjee_typea_device::sega8_dahjee_typea_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_DAHJEE_TYPEA, "SG-1000 Dahjee RAM expansion + Cart (Type A)", tag, owner, clock, "sega8_dahjeea", __FILE__)
+ : sega8_rom_device(mconfig, SEGA8_ROM_DAHJEE_TYPEA, tag, owner, clock)
{
}
sega8_dahjee_typeb_device::sega8_dahjee_typeb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_DAHJEE_TYPEB, "SG-1000 Dahjee RAM expansion + Cart (Type B)", tag, owner, clock, "sega8_dahjeeb", __FILE__)
+ : sega8_rom_device(mconfig, SEGA8_ROM_DAHJEE_TYPEB, tag, owner, clock)
{
}
@@ -107,72 +109,78 @@ sega8_dahjee_typeb_device::sega8_dahjee_typeb_device(const machine_config &mconf
sega8_eeprom_device::sega8_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SEGA8_ROM_EEPROM, "GG Carts + EEPROM", tag, owner, clock, "sega8_eeprom", __FILE__),
- device_sega8_cart_interface( mconfig, *this ),
- m_eeprom(*this, "eeprom"), m_93c46_enabled(0), m_93c46_lines(0)
- {
+ : device_t(mconfig, SEGA8_ROM_EEPROM, tag, owner, clock)
+ , device_sega8_cart_interface(mconfig, *this)
+ , m_eeprom(*this, "eeprom")
+ , m_93c46_enabled(0)
+ , m_93c46_lines(0)
+{
}
sega8_codemasters_device::sega8_codemasters_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SEGA8_ROM_CODEMASTERS, "Mark III, SMS & GG Codemasters Carts", tag, owner, clock, "sega8_codemasters", __FILE__),
- device_sega8_cart_interface( mconfig, *this ), m_ram_base(0), m_ram_enabled(0)
- {
+ : device_t(mconfig, SEGA8_ROM_CODEMASTERS, tag, owner, clock)
+ , device_sega8_cart_interface(mconfig, *this)
+ , m_ram_base(0)
+ , m_ram_enabled(0)
+{
}
sega8_4pak_device::sega8_4pak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_4PAK, "SMS 4-Pak Cart", tag, owner, clock, "sega8_4pak", __FILE__)
+ : sega8_rom_device(mconfig, SEGA8_ROM_4PAK, tag, owner, clock)
{
}
-sega8_zemina_device::sega8_zemina_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sega8_cart_interface( mconfig, *this ), m_ram_base(0), m_ram_enabled(0)
- {
+sega8_zemina_device::sega8_zemina_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sega8_cart_interface(mconfig, *this)
+ , m_ram_base(0)
+ , m_ram_enabled(0)
+{
}
sega8_zemina_device::sega8_zemina_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SEGA8_ROM_ZEMINA, "SMS Zemina Carts", tag, owner, clock, "sega8_zemina", __FILE__),
- device_sega8_cart_interface( mconfig, *this ), m_ram_base(0), m_ram_enabled(0)
- {
+ : sega8_zemina_device(mconfig, SEGA8_ROM_ZEMINA, tag, owner, clock)
+{
}
sega8_nemesis_device::sega8_nemesis_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_zemina_device(mconfig, SEGA8_ROM_NEMESIS, "SMS Nemesis Cart", tag, owner, clock, "sega8_nemesis", __FILE__)
+ : sega8_zemina_device(mconfig, SEGA8_ROM_NEMESIS, tag, owner, clock)
{
}
sega8_janggun_device::sega8_janggun_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SEGA8_ROM_JANGGUN, "SMS Janggun Cart", tag, owner, clock, "sega8_janggun", __FILE__),
- device_sega8_cart_interface( mconfig, *this )
+ : device_t(mconfig, SEGA8_ROM_JANGGUN, tag, owner, clock)
+ , device_sega8_cart_interface(mconfig, *this)
{
}
sega8_hicom_device::sega8_hicom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_HICOM, "SMS Hi-Com Carts", tag, owner, clock, "sega8_hicom", __FILE__), m_rom_bank_base(0)
- {
+ : sega8_rom_device(mconfig, SEGA8_ROM_HICOM, tag, owner, clock)
+ , m_rom_bank_base(0)
+{
}
sega8_korean_device::sega8_korean_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_KOREAN, "SMS Korean Carts", tag, owner, clock, "sega8_korean", __FILE__)
+ : sega8_rom_device(mconfig, SEGA8_ROM_KOREAN, tag, owner, clock)
{
}
sega8_korean_nb_device::sega8_korean_nb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_KOREAN_NB, "SMS Korean No-Bank Mapper Carts", tag, owner, clock, "sega8_korean_nb", __FILE__)
+ : sega8_rom_device(mconfig, SEGA8_ROM_KOREAN_NB, tag, owner, clock)
{
}
sega8_seojin_device::sega8_seojin_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega8_rom_device(mconfig, SEGA8_ROM_SEOJIN, "SMS Seo Jin Multi-cart", tag, owner, clock, "sega8_seojin", __FILE__)
+ : sega8_rom_device(mconfig, SEGA8_ROM_SEOJIN, tag, owner, clock)
{
}
diff --git a/src/devices/bus/sega8/rom.h b/src/devices/bus/sega8/rom.h
index a4b7df2599b..9e97e40f45f 100644
--- a/src/devices/bus/sega8/rom.h
+++ b/src/devices/bus/sega8/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SEGA8_ROM_H
-#define __SEGA8_ROM_H
+#ifndef MAME_BUS_SEGA8_ROM_H
+#define MAME_BUS_SEGA8_ROM_H
+
+#pragma once
#include "sega8_slot.h"
#include "machine/eepromser.h"
@@ -13,13 +15,8 @@ class sega8_rom_device : public device_t,
{
public:
// construction/destruction
- sega8_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
sega8_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual void late_bank_setup() override;
// reading and writing
@@ -28,6 +25,12 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_mapper) override;
protected:
+ sega8_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_rom_bank_base[3];
uint8_t m_ram_base;
int m_ram_enabled;
@@ -47,7 +50,7 @@ public:
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
- virtual DECLARE_WRITE8_MEMBER(write_mapper) override {}
+ virtual DECLARE_WRITE8_MEMBER(write_mapper) override { }
};
@@ -62,7 +65,7 @@ public:
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
- virtual DECLARE_WRITE8_MEMBER(write_mapper) override {}
+ virtual DECLARE_WRITE8_MEMBER(write_mapper) override { }
};
@@ -77,7 +80,7 @@ public:
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
- virtual DECLARE_WRITE8_MEMBER(write_mapper) override {}
+ virtual DECLARE_WRITE8_MEMBER(write_mapper) override { }
// has internal RAM which overwrites the system one!
virtual DECLARE_READ8_MEMBER(read_ram) override;
@@ -96,7 +99,7 @@ public:
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
- virtual DECLARE_WRITE8_MEMBER(write_mapper) override {}
+ virtual DECLARE_WRITE8_MEMBER(write_mapper) override { }
// has internal RAM which overwrites the system one!
virtual DECLARE_READ8_MEMBER(read_ram) override;
@@ -113,9 +116,7 @@ public:
sega8_terebi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual ioport_constructor device_input_ports() const override;
- virtual void device_reset() override;
required_ioport m_tvdraw_x;
required_ioport m_tvdraw_y;
@@ -124,9 +125,12 @@ public:
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
- virtual DECLARE_WRITE8_MEMBER(write_mapper) override {}
+ virtual DECLARE_WRITE8_MEMBER(write_mapper) override { }
protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_tvdraw_data;
};
@@ -142,7 +146,7 @@ public:
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
- virtual DECLARE_WRITE8_MEMBER(write_mapper) override {}
+ virtual DECLARE_WRITE8_MEMBER(write_mapper) override { }
// has internal RAM which overwrites the system one!
virtual DECLARE_READ8_MEMBER(read_ram) override;
@@ -160,8 +164,8 @@ public:
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
- virtual DECLARE_WRITE8_MEMBER(write_cart) override {}
- virtual DECLARE_WRITE8_MEMBER(write_mapper) override {}
+ virtual DECLARE_WRITE8_MEMBER(write_cart) override { }
+ virtual DECLARE_WRITE8_MEMBER(write_mapper) override { }
// has internal RAM which overwrites the system one!
virtual DECLARE_READ8_MEMBER(read_ram) override;
@@ -181,9 +185,7 @@ public:
sega8_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_reset() override;
virtual void late_bank_setup() override;
@@ -193,6 +195,9 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_mapper) override;
protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_rom_bank_base[3];
required_device<eeprom_serial_93cxx_device> m_eeprom;
@@ -210,10 +215,6 @@ public:
// construction/destruction
sega8_codemasters_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual void late_bank_setup() override;
// reading and writing
@@ -222,6 +223,10 @@ public:
// no mapper write for this!
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_rom_bank_base[3];
uint8_t m_ram_base;
int m_ram_enabled;
@@ -236,14 +241,15 @@ public:
// construction/destruction
sega8_4pak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_reg[3];
};
@@ -256,13 +262,8 @@ class sega8_zemina_device : public device_t,
{
public:
// construction/destruction
- sega8_zemina_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
sega8_zemina_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
virtual void late_bank_setup() override;
// reading and writing
@@ -271,6 +272,12 @@ public:
// no mapper write for this!
protected:
+ sega8_zemina_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_rom_bank_base[6];
uint8_t m_ram_base;
int m_ram_enabled;
@@ -298,9 +305,6 @@ public:
// construction/destruction
sega8_janggun_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { save_item(NAME(m_rom_bank_base)); }
-
virtual void late_bank_setup() override;
// reading and writing
@@ -309,6 +313,9 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_mapper) override;
protected:
+ // device-level overrides
+ virtual void device_start() override { save_item(NAME(m_rom_bank_base)); }
+
uint8_t m_rom_bank_base[6];
};
@@ -321,9 +328,6 @@ public:
// construction/destruction
sega8_hicom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override { save_item(NAME(m_rom_bank_base)); }
-
virtual void late_bank_setup() override;
// reading and writing
@@ -332,6 +336,9 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_mapper) override;
protected:
+ // device-level overrides
+ virtual void device_start() override { save_item(NAME(m_rom_bank_base)); }
+
uint8_t m_rom_bank_base;
};
@@ -373,10 +380,6 @@ public:
// construction/destruction
sega8_seojin_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
@@ -385,29 +388,33 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_gamesel;
uint8_t m_readxor;
};
// device type definition
-extern const device_type SEGA8_ROM_STD;
-extern const device_type SEGA8_ROM_OTHELLO;
-extern const device_type SEGA8_ROM_CASTLE;
-extern const device_type SEGA8_ROM_BASIC_L3;
-extern const device_type SEGA8_ROM_MUSIC_EDITOR;
-extern const device_type SEGA8_ROM_DAHJEE_TYPEA;
-extern const device_type SEGA8_ROM_DAHJEE_TYPEB;
-extern const device_type SEGA8_ROM_EEPROM;
-extern const device_type SEGA8_ROM_TEREBI;
-extern const device_type SEGA8_ROM_CODEMASTERS;
-extern const device_type SEGA8_ROM_4PAK;
-extern const device_type SEGA8_ROM_ZEMINA;
-extern const device_type SEGA8_ROM_NEMESIS;
-extern const device_type SEGA8_ROM_JANGGUN;
-extern const device_type SEGA8_ROM_HICOM;
-extern const device_type SEGA8_ROM_KOREAN;
-extern const device_type SEGA8_ROM_KOREAN_NB;
-extern const device_type SEGA8_ROM_SEOJIN;
-
-#endif
+DECLARE_DEVICE_TYPE(SEGA8_ROM_STD, sega8_rom_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_OTHELLO, sega8_othello_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_CASTLE, sega8_castle_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_BASIC_L3, sega8_basic_l3_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_MUSIC_EDITOR, sega8_music_editor_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_DAHJEE_TYPEA, sega8_dahjee_typea_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_DAHJEE_TYPEB, sega8_dahjee_typeb_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_EEPROM, sega8_eeprom_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_TEREBI, sega8_terebi_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_CODEMASTERS, sega8_codemasters_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_4PAK, sega8_4pak_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_ZEMINA, sega8_zemina_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_NEMESIS, sega8_nemesis_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_JANGGUN, sega8_janggun_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_HICOM, sega8_hicom_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_KOREAN, sega8_korean_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_KOREAN_NB, sega8_korean_nb_device)
+DECLARE_DEVICE_TYPE(SEGA8_ROM_SEOJIN, sega8_seojin_device)
+
+#endif // MAME_BUS_SEGA8_ROM_H
diff --git a/src/devices/bus/sega8/sega8_slot.cpp b/src/devices/bus/sega8/sega8_slot.cpp
index 7c870c9ccb2..484eb8b8b5a 100644
--- a/src/devices/bus/sega8/sega8_slot.cpp
+++ b/src/devices/bus/sega8/sega8_slot.cpp
@@ -30,15 +30,15 @@
#include "sega8_slot.h"
#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+#include "logmacro.h"
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SEGA8_CART_SLOT = device_creator<sega8_cart_slot_device>;
-const device_type SEGA8_CARD_SLOT = device_creator<sega8_card_slot_device>;
+DEFINE_DEVICE_TYPE(SEGA8_CART_SLOT, sega8_cart_slot_device, "sega8_cart_slot", "Sega Master System / Game Gear / SG-1000 Cartridge Slot")
+DEFINE_DEVICE_TYPE(SEGA8_CARD_SLOT, sega8_card_slot_device, "sega8_card_slot", "Sega Master System / Game Gear / SG-1000 Card Slot")
//**************************************************************************
@@ -50,14 +50,14 @@ const device_type SEGA8_CARD_SLOT = device_creator<sega8_card_slot_device>;
//-------------------------------------------------
device_sega8_cart_interface::device_sega8_cart_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_rom(nullptr),
- m_rom_size(0),
- m_rom_page_count(0),
- has_battery(false),
- m_late_battery_enable(false),
- m_lphaser_xoffs(-1),
- m_sms_mode(0)
+ : device_slot_card_interface(mconfig, device)
+ , m_rom(nullptr)
+ , m_rom_size(0)
+ , m_rom_page_count(0)
+ , has_battery(false)
+ , m_late_battery_enable(false)
+ , m_lphaser_xoffs(-1)
+ , m_sms_mode(0)
{
}
@@ -107,32 +107,26 @@ void device_sega8_cart_interface::ram_alloc(uint32_t size)
// sega8_cart_slot_device - constructor
//-------------------------------------------------
-sega8_cart_slot_device::sega8_cart_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, bool is_card, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(SEGA8_BASE_ROM),
- m_must_be_loaded(false),
- m_interface("sms_cart"),
- m_extensions("bin"), m_cart(nullptr)
+sega8_cart_slot_device::sega8_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_card)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
+ , device_slot_interface(mconfig, *this)
+ , m_type(SEGA8_BASE_ROM)
+ , m_must_be_loaded(false)
+ , m_is_card(is_card)
+ , m_interface("sms_cart")
+ , m_extensions("bin")
+ , m_cart(nullptr)
{
- m_is_card = is_card;
}
-sega8_cart_slot_device::sega8_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SEGA8_CART_SLOT, "Sega Master System / Game Gear / SG1000 Cartridge Slot", tag, owner, clock, "sega8_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(SEGA8_BASE_ROM),
- m_must_be_loaded(false),
- m_is_card(false),
- m_interface("sms_cart"),
- m_extensions("bin"), m_cart(nullptr)
+sega8_cart_slot_device::sega8_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : sega8_cart_slot_device(mconfig, SEGA8_CART_SLOT, tag, owner, clock, false)
{
}
-sega8_card_slot_device::sega8_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- sega8_cart_slot_device(mconfig, SEGA8_CARD_SLOT, "Sega Master System / Game Gear / SG1000 Card Slot", tag, owner, clock, true, "sega8_card_slot", __FILE__)
+sega8_card_slot_device::sega8_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : sega8_cart_slot_device(mconfig, SEGA8_CARD_SLOT, tag, owner, clock, true)
{
}
@@ -503,7 +497,7 @@ int sega8_cart_slot_device::get_cart_type(const uint8_t *ROM, uint32_t len) cons
}
}
- LOG(("Mapper test: _0002 = %d, _8000 = %d, _a000 = %d, _ffff = %d\n", _0002, _8000, _a000, _ffff));
+ LOG("Mapper test: _0002 = %d, _8000 = %d, _a000 = %d, _ffff = %d\n", _0002, _8000, _a000, _ffff);
// 2 is a security measure, although tests on existing ROM showed it was not needed
if (len > 0x10000 && (_0002 > _ffff + 2 || (_0002 > 0 && _ffff == 0)))
diff --git a/src/devices/bus/sega8/sega8_slot.h b/src/devices/bus/sega8/sega8_slot.h
index ca9ad1f1dba..fa26d4bed72 100644
--- a/src/devices/bus/sega8/sega8_slot.h
+++ b/src/devices/bus/sega8/sega8_slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SEGA8_SLOT_H
-#define __SEGA8_SLOT_H
+#ifndef MAME_BUS_SEGA8_SLOT_H
+#define MAME_BUS_SEGA8_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -34,8 +36,8 @@ enum
};
-extern const device_type SEGA8_CART_SLOT;
-extern const device_type SEGA8_CARD_SLOT;
+DECLARE_DEVICE_TYPE(SEGA8_CART_SLOT, sega8_cart_slot_device)
+DECLARE_DEVICE_TYPE(SEGA8_CARD_SLOT, sega8_card_slot_device)
// ======================> device_sega8_cart_interface
@@ -44,22 +46,21 @@ class device_sega8_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_sega8_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_sega8_cart_interface();
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write_cart) {}
- virtual DECLARE_WRITE8_MEMBER(write_mapper) {}
+ virtual DECLARE_WRITE8_MEMBER(write_cart) { }
+ virtual DECLARE_WRITE8_MEMBER(write_mapper) { }
virtual int get_lphaser_xoffs() { return m_lphaser_xoffs; }
// a few carts (for SG1000) acts as a RAM expansion, taking control of the system RAM in 0xc000-0xffff
virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write_ram) {}
+ virtual DECLARE_WRITE8_MEMBER(write_ram) { }
void rom_alloc(uint32_t size, const char *tag);
void ram_alloc(uint32_t size);
- virtual void late_bank_setup() {}
+ virtual void late_bank_setup() { }
void set_has_battery(bool val) { has_battery = val; }
bool get_has_battery() { return has_battery; }
@@ -77,7 +78,9 @@ public:
void save_ram() { device().save_item(NAME(m_ram)); }
-//private:
+protected:
+ device_sega8_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -103,13 +106,9 @@ class sega8_cart_slot_device : public device_t,
{
public:
// construction/destruction
- sega8_cart_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, bool is_card, const char *shortname, const char *source);
sega8_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~sega8_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override;
@@ -150,8 +149,15 @@ public:
virtual DECLARE_READ8_MEMBER(read_ram);
virtual DECLARE_WRITE8_MEMBER(write_ram);
+ int get_lphaser_xoffs() { return m_cart ? m_cart->get_lphaser_xoffs() : -1; }
+ int get_sms_mode() { return m_cart->get_sms_mode(); }
+
+protected:
+ sega8_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_card);
+
+ // device-level overrides
+ virtual void device_start() override;
-//protected:
int m_type;
bool m_must_be_loaded, m_is_card;
const char *m_interface;
@@ -242,4 +248,4 @@ SLOT_INTERFACE_EXTERN( sg1000mk3_cart );
SLOT_INTERFACE_EXTERN( sms_cart );
SLOT_INTERFACE_EXTERN( gg_cart );
-#endif
+#endif // MAME_BUS_SEGA8_SLOT_H
diff --git a/src/devices/bus/sg1000_exp/fm_unit.cpp b/src/devices/bus/sg1000_exp/fm_unit.cpp
index d4798944d58..d305fd281ca 100644
--- a/src/devices/bus/sg1000_exp/fm_unit.cpp
+++ b/src/devices/bus/sg1000_exp/fm_unit.cpp
@@ -47,7 +47,7 @@ SMS version is not playing PSG sound on his Mark III with the FM unit.
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SEGA_FM_UNIT = device_creator<sega_fm_unit_device>;
+DEFINE_DEVICE_TYPE(SEGA_FM_UNIT, sega_fm_unit_device, "sega_fm_unit", "SG-1000 FM Sound Unit")
static MACHINE_CONFIG_FRAGMENT( fm_config )
@@ -74,7 +74,7 @@ machine_config_constructor sega_fm_unit_device::device_mconfig_additions() const
//-------------------------------------------------
sega_fm_unit_device::sega_fm_unit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SEGA_FM_UNIT, "Sega FM Sound Unit", tag, owner, clock, "sega_fm_unit", __FILE__),
+ device_t(mconfig, SEGA_FM_UNIT, tag, owner, clock),
device_sg1000_expansion_slot_interface(mconfig, *this),
m_ym(*this, "ym2413"),
m_psg(*this, ":segapsg"),
diff --git a/src/devices/bus/sg1000_exp/fm_unit.h b/src/devices/bus/sg1000_exp/fm_unit.h
index 17dadf0d142..4206462da87 100644
--- a/src/devices/bus/sg1000_exp/fm_unit.h
+++ b/src/devices/bus/sg1000_exp/fm_unit.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SG1000_EXP_FM_UNIT_H
+#define MAME_BUS_SG1000_EXP_FM_UNIT_H
-#ifndef __SEGA_FM_UNIT__
-#define __SEGA_FM_UNIT__
+#pragma once
#include "sound/ym2413.h"
@@ -52,7 +52,6 @@ private:
// device type definition
-extern const device_type SEGA_FM_UNIT;
-
+DECLARE_DEVICE_TYPE(SEGA_FM_UNIT, sega_fm_unit_device)
-#endif
+#endif // MAME_BUS_SG1000_EXP_FM_UNIT_H
diff --git a/src/devices/bus/sg1000_exp/sg1000exp.cpp b/src/devices/bus/sg1000_exp/sg1000exp.cpp
index d926a4b7a3a..8c8bc53f6a4 100644
--- a/src/devices/bus/sg1000_exp/sg1000exp.cpp
+++ b/src/devices/bus/sg1000_exp/sg1000exp.cpp
@@ -8,6 +8,7 @@
#include "emu.h"
#include "sg1000exp.h"
+
// slot devices
#include "sk1100.h"
#include "fm_unit.h"
@@ -18,7 +19,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SG1000_EXPANSION_SLOT = device_creator<sg1000_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(SG1000_EXPANSION_SLOT, sg1000_expansion_slot_device, "sg1000_expansion_slot", "Sega SG-1000 expansion slot")
@@ -55,8 +56,9 @@ device_sg1000_expansion_slot_interface::~device_sg1000_expansion_slot_interface(
//-------------------------------------------------
sg1000_expansion_slot_device::sg1000_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SG1000_EXPANSION_SLOT, "Sega SG-1000 expansion slot", tag, owner, clock, "sg1000_expansion_slot", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr)
+ device_t(mconfig, SG1000_EXPANSION_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_device(nullptr)
{
}
diff --git a/src/devices/bus/sg1000_exp/sg1000exp.h b/src/devices/bus/sg1000_exp/sg1000exp.h
index 328f12e269c..ce8ae982980 100644
--- a/src/devices/bus/sg1000_exp/sg1000exp.h
+++ b/src/devices/bus/sg1000_exp/sg1000exp.h
@@ -9,10 +9,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SG1000_EXP_SG1000EXP_H
+#define MAME_BUS_SG1000_EXP_SG1000EXP_H
-#ifndef __SG1000_EXPANSION_SLOT__
-#define __SG1000_EXPANSION_SLOT__
+#pragma once
@@ -37,8 +37,7 @@
class device_sg1000_expansion_slot_interface;
-class sg1000_expansion_slot_device : public device_t,
- public device_slot_interface
+class sg1000_expansion_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
@@ -66,25 +65,26 @@ class device_sg1000_expansion_slot_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_sg1000_expansion_slot_interface(const machine_config &mconfig, device_t &device);
virtual ~device_sg1000_expansion_slot_interface();
- virtual DECLARE_READ8_MEMBER(peripheral_r) { return 0xff; };
- virtual DECLARE_WRITE8_MEMBER(peripheral_w) { };
+ virtual DECLARE_READ8_MEMBER(peripheral_r) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER(peripheral_w) { }
- virtual bool is_readable(uint8_t offset) { return true; };
- virtual bool is_writeable(uint8_t offset) { return true; };
+ virtual bool is_readable(uint8_t offset) { return true; }
+ virtual bool is_writeable(uint8_t offset) { return true; }
protected:
+ device_sg1000_expansion_slot_interface(const machine_config &mconfig, device_t &device);
+
sg1000_expansion_slot_device *m_port;
};
// device type definition
-extern const device_type SG1000_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(SG1000_EXPANSION_SLOT, sg1000_expansion_slot_device)
SLOT_INTERFACE_EXTERN( sg1000_expansion_devices );
-#endif
+#endif // MAME_BUS_SG1000_EXP_SG1000EXP_H
diff --git a/src/devices/bus/sg1000_exp/sk1100.cpp b/src/devices/bus/sg1000_exp/sk1100.cpp
index 10df8f00ee1..3ae5a6ac7c1 100644
--- a/src/devices/bus/sg1000_exp/sk1100.cpp
+++ b/src/devices/bus/sg1000_exp/sk1100.cpp
@@ -27,7 +27,7 @@ TODO:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SEGA_SK1100 = device_creator<sega_sk1100_device>;
+DEFINE_DEVICE_TYPE(SEGA_SK1100, sega_sk1100_device, "sega_sk1100", "Sega SK-1100 Keyboard")
/*-------------------------------------------------
@@ -188,7 +188,7 @@ machine_config_constructor sega_sk1100_device::device_mconfig_additions() const
//-------------------------------------------------
sega_sk1100_device::sega_sk1100_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SEGA_SK1100, "Sega SK-1100 Keyboard", tag, owner, clock, "sega_sk1100", __FILE__),
+ device_t(mconfig, SEGA_SK1100, tag, owner, clock),
device_sg1000_expansion_slot_interface(mconfig, *this),
m_cassette(*this, "cassette"),
m_ppi(*this, UPD9255_0_TAG),
diff --git a/src/devices/bus/sg1000_exp/sk1100.h b/src/devices/bus/sg1000_exp/sk1100.h
index 29aa91c3074..1679e5aea27 100644
--- a/src/devices/bus/sg1000_exp/sk1100.h
+++ b/src/devices/bus/sg1000_exp/sk1100.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SG1000_EXP_SK1100_H
+#define MAME_BUS_SG1000_EXP_SK1100_H
-#ifndef __SEGA_SK1100__
-#define __SEGA_SK1100__
+#pragma once
#include "sg1000exp.h"
@@ -64,7 +64,7 @@ private:
// device type definition
-extern const device_type SEGA_SK1100;
+DECLARE_DEVICE_TYPE(SEGA_SK1100, sega_sk1100_device)
-#endif
+#endif // MAME_BUS_SG1000_EXP_SK1100_H
diff --git a/src/devices/bus/sms_ctrl/graphic.cpp b/src/devices/bus/sms_ctrl/graphic.cpp
index 6aba4cdcbfb..1ada76748e7 100644
--- a/src/devices/bus/sms_ctrl/graphic.cpp
+++ b/src/devices/bus/sms_ctrl/graphic.cpp
@@ -28,7 +28,7 @@ Then 2 nibbles are read to form a byte (first high nibble, then low nibble) indi
whether the pen is on the graphic board, a value of FD, FE, or FF used for this. For
any other value the following 2 bytes are not read.
Then 2 nibbles are read to form a byte containing the absolute X coordinate.
-THen 2 nibbles are read to form a byte containing the absolute Y coordiante.
+Then 2 nibbles are read to form a byte containing the absolute Y coordiante.
**********************************************************************/
@@ -41,7 +41,7 @@ THen 2 nibbles are read to form a byte containing the absolute Y coordiante.
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SMS_GRAPHIC = device_creator<sms_graphic_device>;
+DEFINE_DEVICE_TYPE(SMS_GRAPHIC, sms_graphic_device, "sms_graphic", "Sega SMS Graphic Board")
static INPUT_PORTS_START( sms_graphic )
@@ -77,7 +77,7 @@ ioport_constructor sms_graphic_device::device_input_ports() const
//-------------------------------------------------
sms_graphic_device::sms_graphic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SMS_GRAPHIC, "Sega SMS Graphic Board", tag, owner, clock, "sms_graphic", __FILE__)
+ : device_t(mconfig, SMS_GRAPHIC, tag, owner, clock)
, device_sms_control_port_interface(mconfig, *this)
, m_buttons(*this, "BUTTONS")
, m_x(*this, "X")
diff --git a/src/devices/bus/sms_ctrl/graphic.h b/src/devices/bus/sms_ctrl/graphic.h
index 921e96b75d6..036f4660033 100644
--- a/src/devices/bus/sms_ctrl/graphic.h
+++ b/src/devices/bus/sms_ctrl/graphic.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SMS_CTRL_GRAPHIC_H
+#define MAME_BUS_SMS_CTRL_GRAPHIC_H
-#ifndef __SMS_GRAPHIC__
-#define __SMS_GRAPHIC__
+#pragma once
#include "smsctrl.h"
@@ -52,7 +52,7 @@ private:
// device type definition
-extern const device_type SMS_GRAPHIC;
+DECLARE_DEVICE_TYPE(SMS_GRAPHIC, sms_graphic_device)
-#endif
+#endif // MAME_BUS_SMS_CTRL_GRAPHIC_H
diff --git a/src/devices/bus/sms_ctrl/joypad.cpp b/src/devices/bus/sms_ctrl/joypad.cpp
index 2de1d1b13df..4cd664a952e 100644
--- a/src/devices/bus/sms_ctrl/joypad.cpp
+++ b/src/devices/bus/sms_ctrl/joypad.cpp
@@ -30,7 +30,7 @@ Release data from the Sega Retro project:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SMS_JOYPAD = device_creator<sms_joypad_device>;
+DEFINE_DEVICE_TYPE(SMS_JOYPAD, sms_joypad_device, "sms_joypad", "Sega SMS Control Pad")
static INPUT_PORTS_START( sms_joypad )
@@ -66,7 +66,7 @@ ioport_constructor sms_joypad_device::device_input_ports() const
//-------------------------------------------------
sms_joypad_device::sms_joypad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_JOYPAD, "Sega SMS Control Pad", tag, owner, clock, "sms_joypad", __FILE__),
+ device_t(mconfig, SMS_JOYPAD, tag, owner, clock),
device_sms_control_port_interface(mconfig, *this),
m_joypad(*this, "JOYPAD")
{
diff --git a/src/devices/bus/sms_ctrl/joypad.h b/src/devices/bus/sms_ctrl/joypad.h
index 10bff08c5b0..60b4fe9f4c0 100644
--- a/src/devices/bus/sms_ctrl/joypad.h
+++ b/src/devices/bus/sms_ctrl/joypad.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SMS_CTRL_JOYPAD_H
+#define MAME_BUS_SMS_CTRL_JOYPAD_H
-#ifndef __SMS_JOYPAD__
-#define __SMS_JOYPAD__
+#pragma once
#include "smsctrl.h"
@@ -45,7 +45,7 @@ private:
// device type definition
-extern const device_type SMS_JOYPAD;
+DECLARE_DEVICE_TYPE(SMS_JOYPAD, sms_joypad_device)
-#endif
+#endif // MAME_BUS_SMS_CTRL_JOYPAD_H
diff --git a/src/devices/bus/sms_ctrl/lphaser.cpp b/src/devices/bus/sms_ctrl/lphaser.cpp
index a6fec3a798f..264f74151a1 100644
--- a/src/devices/bus/sms_ctrl/lphaser.cpp
+++ b/src/devices/bus/sms_ctrl/lphaser.cpp
@@ -29,7 +29,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SMS_LIGHT_PHASER = device_creator<sms_light_phaser_device>;
+DEFINE_DEVICE_TYPE(SMS_LIGHT_PHASER, sms_light_phaser_device, "sms_light_phaser", "Sega SMS Light Phaser")
#define LGUN_RADIUS 6
@@ -84,7 +84,7 @@ ioport_constructor sms_light_phaser_device::device_input_ports() const
//-------------------------------------------------
sms_light_phaser_device::sms_light_phaser_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_LIGHT_PHASER, "Sega SMS Light Phaser", tag, owner, clock, "sms_light_phaser", __FILE__),
+ device_t(mconfig, SMS_LIGHT_PHASER, tag, owner, clock),
device_video_interface(mconfig, *this),
device_sms_control_port_interface(mconfig, *this),
m_lphaser_pins(*this, "CTRL_PORT"),
diff --git a/src/devices/bus/sms_ctrl/lphaser.h b/src/devices/bus/sms_ctrl/lphaser.h
index 8d25f9fe34f..c9d145f861b 100644
--- a/src/devices/bus/sms_ctrl/lphaser.h
+++ b/src/devices/bus/sms_ctrl/lphaser.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SMS_CTRL_LPHASER_H
+#define MAME_BUS_SMS_CTRL_LPHASER_H
-#ifndef __SMS_LIGHT_PHASER__
-#define __SMS_LIGHT_PHASER__
+#pragma once
#include "smsctrl.h"
@@ -62,7 +62,7 @@ private:
// device type definition
-extern const device_type SMS_LIGHT_PHASER;
+DECLARE_DEVICE_TYPE(SMS_LIGHT_PHASER, sms_light_phaser_device)
-#endif
+#endif // MAME_BUS_SMS_CTRL_LPHASER_H
diff --git a/src/devices/bus/sms_ctrl/multitap.cpp b/src/devices/bus/sms_ctrl/multitap.cpp
index 355b05ffb46..b85207c0695 100644
--- a/src/devices/bus/sms_ctrl/multitap.cpp
+++ b/src/devices/bus/sms_ctrl/multitap.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SMS_MULTITAP = device_creator<sms_multitap_device>;
+DEFINE_DEVICE_TYPE(SMS_MULTITAP, sms_multitap_device, "sms_multitap", "Sega SMS Multitap")
//**************************************************************************
@@ -29,7 +29,7 @@ const device_type SMS_MULTITAP = device_creator<sms_multitap_device>;
//-------------------------------------------------
sms_multitap_device::sms_multitap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_MULTITAP, "Sega SMS Multitap", tag, owner, clock, "sms_multitap", __FILE__),
+ device_t(mconfig, SMS_MULTITAP, tag, owner, clock),
device_sms_control_port_interface(mconfig, *this),
m_subctrl1_port(*this, "ctrl1"),
m_subctrl2_port(*this, "ctrl2"),
@@ -49,11 +49,6 @@ void sms_multitap_device::device_start()
{
save_item(NAME(m_read_state));
save_item(NAME(m_last_data));
-
- m_subctrl1_port->device_start();
- m_subctrl2_port->device_start();
- m_subctrl3_port->device_start();
- m_subctrl4_port->device_start();
}
diff --git a/src/devices/bus/sms_ctrl/multitap.h b/src/devices/bus/sms_ctrl/multitap.h
index 534d2f7ccf9..ad57e269237 100644
--- a/src/devices/bus/sms_ctrl/multitap.h
+++ b/src/devices/bus/sms_ctrl/multitap.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SMS_CTRL_MULTITAP_H
+#define MAME_BUS_SMS_CTRL_MULTITAP_H
-#ifndef __SMS_MULTITAP__
-#define __SMS_MULTITAP__
+#pragma once
#include "smsctrl.h"
@@ -52,7 +52,7 @@ private:
// device type definition
-extern const device_type SMS_MULTITAP;
+DECLARE_DEVICE_TYPE(SMS_MULTITAP, sms_multitap_device)
-#endif
+#endif // MAME_BUS_SMS_CTRL_MULTITAP_H
diff --git a/src/devices/bus/sms_ctrl/paddle.cpp b/src/devices/bus/sms_ctrl/paddle.cpp
index dbda3fe9740..f19da195186 100644
--- a/src/devices/bus/sms_ctrl/paddle.cpp
+++ b/src/devices/bus/sms_ctrl/paddle.cpp
@@ -32,7 +32,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SMS_PADDLE = device_creator<sms_paddle_device>;
+DEFINE_DEVICE_TYPE(SMS_PADDLE, sms_paddle_device, "sms_paddle", "Sega SMS Paddle")
// time interval not verified
// Player 2 of Galactic Protector is the most sensible to this timming.
@@ -91,7 +91,7 @@ ioport_constructor sms_paddle_device::device_input_ports() const
//-------------------------------------------------
sms_paddle_device::sms_paddle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_PADDLE, "Sega SMS Paddle", tag, owner, clock, "sms_paddle", __FILE__),
+ device_t(mconfig, SMS_PADDLE, tag, owner, clock),
device_sms_control_port_interface(mconfig, *this),
m_paddle_pins(*this, "CTRL_PORT"),
m_paddle_x(*this, "PADDLE_X"),
diff --git a/src/devices/bus/sms_ctrl/paddle.h b/src/devices/bus/sms_ctrl/paddle.h
index 12134943208..5c302e6b71e 100644
--- a/src/devices/bus/sms_ctrl/paddle.h
+++ b/src/devices/bus/sms_ctrl/paddle.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SMS_CTRL_PADDLE_H
+#define MAME_BUS_SMS_CTRL_PADDLE_H
-#ifndef __SMS_PADDLE__
-#define __SMS_PADDLE__
+#pragma once
#include "smsctrl.h"
@@ -56,4 +56,4 @@ private:
extern const device_type SMS_PADDLE;
-#endif
+#endif // MAME_BUS_SMS_CTRL_PADDLE_H
diff --git a/src/devices/bus/sms_ctrl/rfu.cpp b/src/devices/bus/sms_ctrl/rfu.cpp
index 434995a6fa7..125c0f5caf6 100644
--- a/src/devices/bus/sms_ctrl/rfu.cpp
+++ b/src/devices/bus/sms_ctrl/rfu.cpp
@@ -28,7 +28,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SMS_RAPID_FIRE = device_creator<sms_rapid_fire_device>;
+DEFINE_DEVICE_TYPE(SMS_RAPID_FIRE, sms_rapid_fire_device, "sms_rapid_fire", "Sega SMS Rapid Fire Unit")
// time interval not verified
#define RAPID_FIRE_INTERVAL attotime::from_hz(10)
@@ -64,7 +64,7 @@ ioport_constructor sms_rapid_fire_device::device_input_ports() const
//-------------------------------------------------
sms_rapid_fire_device::sms_rapid_fire_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_RAPID_FIRE, "Sega SMS Rapid Fire", tag, owner, clock, "sms_rapid_fire", __FILE__),
+ device_t(mconfig, SMS_RAPID_FIRE, tag, owner, clock),
device_sms_control_port_interface(mconfig, *this),
m_rfire_sw(*this, "rfu_sw"),
m_subctrl_port(*this, "ctrl"),
@@ -84,8 +84,6 @@ void sms_rapid_fire_device::device_start()
save_item(NAME(m_start_time));
save_item(NAME(m_read_state));
-
- m_subctrl_port->device_start();
}
diff --git a/src/devices/bus/sms_ctrl/rfu.h b/src/devices/bus/sms_ctrl/rfu.h
index 32ae2d9b554..d40259aea09 100644
--- a/src/devices/bus/sms_ctrl/rfu.h
+++ b/src/devices/bus/sms_ctrl/rfu.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SMS_CTRL_RFU_H
+#define MAME_BUS_SMS_CTRL_RFU_H
-#ifndef __SMS_RAPID_FIRE__
-#define __SMS_RAPID_FIRE__
+#pragma once
#include "smsctrl.h"
@@ -55,7 +55,7 @@ private:
// device type definition
-extern const device_type SMS_RAPID_FIRE;
+DECLARE_DEVICE_TYPE(SMS_RAPID_FIRE, sms_rapid_fire_device)
-#endif
+#endif // MAME_BUS_SMS_CTRL_RFU_H
diff --git a/src/devices/bus/sms_ctrl/smsctrl.cpp b/src/devices/bus/sms_ctrl/smsctrl.cpp
index 0967ae723c3..6d760f9bf93 100644
--- a/src/devices/bus/sms_ctrl/smsctrl.cpp
+++ b/src/devices/bus/sms_ctrl/smsctrl.cpp
@@ -8,6 +8,7 @@
#include "emu.h"
#include "smsctrl.h"
+
// slot devices
#include "joypad.h"
#include "lphaser.h"
@@ -24,7 +25,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SMS_CONTROL_PORT = device_creator<sms_control_port_device>;
+DEFINE_DEVICE_TYPE(SMS_CONTROL_PORT, sms_control_port_device, "sms_control_port", "Sega SMS controller port")
@@ -62,10 +63,11 @@ device_sms_control_port_interface::~device_sms_control_port_interface()
//-------------------------------------------------
sms_control_port_device::sms_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_CONTROL_PORT, "Sega SMS control port", tag, owner, clock, "sms_control_port", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr),
- m_th_pin_handler(*this),
- m_pixel_handler(*this)
+ device_t(mconfig, SMS_CONTROL_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_device(nullptr),
+ m_th_pin_handler(*this),
+ m_pixel_handler(*this)
{
}
diff --git a/src/devices/bus/sms_ctrl/smsctrl.h b/src/devices/bus/sms_ctrl/smsctrl.h
index 457f758391b..f1dd5404408 100644
--- a/src/devices/bus/sms_ctrl/smsctrl.h
+++ b/src/devices/bus/sms_ctrl/smsctrl.h
@@ -9,12 +9,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __SMS_CONTROL_PORT__
-#define __SMS_CONTROL_PORT__
-
+#ifndef MAME_BUS_SMS_CTRL_SMSCTRL_H
+#define MAME_BUS_SMS_CTRL_SMSCTRL_H
+#pragma once
//**************************************************************************
@@ -54,9 +52,9 @@ public:
virtual ~sms_control_port_device();
// static configuration helpers
- template<class _Object> static devcb_base &set_th_input_handler(device_t &device, _Object object) { return downcast<sms_control_port_device &>(device).m_th_pin_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_th_input_handler(device_t &device, Object &&cb) { return downcast<sms_control_port_device &>(device).m_th_pin_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_pixel_handler(device_t &device, _Object object) { return downcast<sms_control_port_device &>(device).m_pixel_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_pixel_handler(device_t &device, Object &&cb) { return downcast<sms_control_port_device &>(device).m_pixel_handler.set_callback(std::forward<Object>(cb)); }
// Physical DE-9 connector interface
@@ -77,7 +75,7 @@ public:
void th_pin_w(int state);
uint32_t pixel_r();
-//protected:
+protected:
// device-level overrides
virtual void device_start() override;
@@ -96,22 +94,23 @@ class device_sms_control_port_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_sms_control_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_sms_control_port_interface();
- virtual uint8_t peripheral_r() { return 0xff; };
- virtual void peripheral_w(uint8_t data) { };
+ virtual uint8_t peripheral_r() { return 0xff; }
+ virtual void peripheral_w(uint8_t data) { }
protected:
+ device_sms_control_port_interface(const machine_config &mconfig, device_t &device);
+
sms_control_port_device *m_port;
};
// device type definition
-extern const device_type SMS_CONTROL_PORT;
+DECLARE_DEVICE_TYPE(SMS_CONTROL_PORT, sms_control_port_device)
SLOT_INTERFACE_EXTERN( sms_control_port_devices );
-#endif
+#endif // MAME_BUS_SMS_CTRL_SMSCTRL_H
diff --git a/src/devices/bus/sms_ctrl/sports.cpp b/src/devices/bus/sms_ctrl/sports.cpp
index 02e2f614bdc..cd814ff14cc 100644
--- a/src/devices/bus/sms_ctrl/sports.cpp
+++ b/src/devices/bus/sms_ctrl/sports.cpp
@@ -47,7 +47,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SMS_SPORTS_PAD = device_creator<sms_sports_pad_device>;
+DEFINE_DEVICE_TYPE(SMS_SPORTS_PAD, sms_sports_pad_device, "sms_sports_pad", "Sega SMS Sports Pad (US)")
// time interval not verified
#define SPORTS_PAD_INTERVAL attotime::from_hz(XTAL_10_738635MHz/3/512)
@@ -161,7 +161,7 @@ ioport_constructor sms_sports_pad_device::device_input_ports() const
//-------------------------------------------------
sms_sports_pad_device::sms_sports_pad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_SPORTS_PAD, "Sega SMS Sports Pad US", tag, owner, clock, "sms_sports_pad", __FILE__),
+ device_t(mconfig, SMS_SPORTS_PAD, tag, owner, clock),
device_sms_control_port_interface(mconfig, *this),
m_sports_in(*this, "SPORTS_IN"),
m_sports_out(*this, "SPORTS_OUT"),
@@ -171,7 +171,8 @@ sms_sports_pad_device::sms_sports_pad_device(const machine_config &mconfig, cons
m_th_pin_state(0),
m_x_axis_reset_value(0x80), // value 0x80 helps when start playing paddle games.
m_y_axis_reset_value(0x80),
- m_interval(SPORTS_PAD_INTERVAL), m_sportspad_timer(nullptr)
+ m_interval(SPORTS_PAD_INTERVAL),
+ m_sportspad_timer(nullptr)
{
}
diff --git a/src/devices/bus/sms_ctrl/sports.h b/src/devices/bus/sms_ctrl/sports.h
index bad15dc1ec0..6644541f36a 100644
--- a/src/devices/bus/sms_ctrl/sports.h
+++ b/src/devices/bus/sms_ctrl/sports.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SMS_CTRL_SPORTS_H
+#define MAME_BUS_SMS_CTRL_SPORTS_H
-#ifndef __SMS_SPORTS_PAD__
-#define __SMS_SPORTS_PAD__
+#pragma once
#include "smsctrl.h"
@@ -63,7 +63,7 @@ private:
// device type definition
-extern const device_type SMS_SPORTS_PAD;
+DECLARE_DEVICE_TYPE(SMS_SPORTS_PAD, sms_sports_pad_device)
-#endif
+#endif // MAME_BUS_SMS_CTRL_SPORTS_H
diff --git a/src/devices/bus/sms_ctrl/sportsjp.cpp b/src/devices/bus/sms_ctrl/sportsjp.cpp
index 9cf326009fa..62903aac179 100644
--- a/src/devices/bus/sms_ctrl/sportsjp.cpp
+++ b/src/devices/bus/sms_ctrl/sportsjp.cpp
@@ -50,7 +50,7 @@ Notes:
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SMS_SPORTS_PAD_JP = device_creator<sms_sports_pad_jp_device>;
+DEFINE_DEVICE_TYPE(SMS_SPORTS_PAD_JP, sms_sports_pad_jp_device, "sms_sports_pad_jp", "Sega SMS Sports Pad (JP)")
// time interval not verified
#define SPORTS_PAD_JP_INTERVAL attotime::from_hz(20000)
@@ -104,7 +104,7 @@ ioport_constructor sms_sports_pad_jp_device::device_input_ports() const
//-------------------------------------------------
sms_sports_pad_jp_device::sms_sports_pad_jp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_SPORTS_PAD_JP, "Sega SMS Sports Pad JP", tag, owner, clock, "sms_sports_pad_jp", __FILE__),
+ device_t(mconfig, SMS_SPORTS_PAD_JP, tag, owner, clock),
device_sms_control_port_interface(mconfig, *this),
m_sports_jp_in(*this, "SPORTS_JP_IN"),
m_sports_jp_bt(*this, "SPORTS_JP_BT"),
diff --git a/src/devices/bus/sms_ctrl/sportsjp.h b/src/devices/bus/sms_ctrl/sportsjp.h
index 76b5697fbfc..92ee2ccd70c 100644
--- a/src/devices/bus/sms_ctrl/sportsjp.h
+++ b/src/devices/bus/sms_ctrl/sportsjp.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SMS_CTROL_SPORTSJP_H
+#define MAME_BUS_SMS_CTROL_SPORTSJP_H
-#ifndef __SMS_SPORTS_PAD_JP__
-#define __SMS_SPORTS_PAD_JP__
+#pragma once
#include "smsctrl.h"
@@ -58,7 +58,7 @@ private:
// device type definition
-extern const device_type SMS_SPORTS_PAD_JP;
+DECLARE_DEVICE_TYPE(SMS_SPORTS_PAD_JP, sms_sports_pad_jp_device)
-#endif
+#endif // MAME_BUS_SMS_CTROL_SPORTSJP_H
diff --git a/src/devices/bus/sms_exp/gender.cpp b/src/devices/bus/sms_exp/gender.cpp
index 0b1356db592..77dd7970de9 100644
--- a/src/devices/bus/sms_exp/gender.cpp
+++ b/src/devices/bus/sms_exp/gender.cpp
@@ -22,7 +22,7 @@ real hardware, when run plugged-in to the SMS expansion slot.
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SMS_GENDER_ADAPTER = device_creator<sms_gender_adapter_device>;
+DEFINE_DEVICE_TYPE(SMS_GENDER_ADAPTER, sms_gender_adapter_device, "sms_gender_adapter", "SMSPower Gender Adapter")
@@ -35,7 +35,7 @@ const device_type SMS_GENDER_ADAPTER = device_creator<sms_gender_adapter_device>
//-------------------------------------------------
sms_gender_adapter_device::sms_gender_adapter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_GENDER_ADAPTER, "Gender Adapter", tag, owner, clock, "sms_gender_adapter", __FILE__),
+ device_t(mconfig, SMS_GENDER_ADAPTER, tag, owner, clock),
device_sms_expansion_slot_interface(mconfig, *this),
m_subslot(*this, "subslot")
{
@@ -48,8 +48,7 @@ sms_gender_adapter_device::sms_gender_adapter_device(const machine_config &mconf
void sms_gender_adapter_device::device_start()
{
- if (m_subslot->m_cart)
- m_subslot->m_cart->save_ram();
+ m_subslot->save_ram();
}
@@ -69,10 +68,7 @@ READ8_MEMBER(sms_gender_adapter_device::read_ram)
int sms_gender_adapter_device::get_lphaser_xoffs()
{
- if (m_subslot->m_cart)
- return m_subslot->m_cart->get_lphaser_xoffs();
- else
- return 0;
+ return m_subslot->get_lphaser_xoffs();
}
diff --git a/src/devices/bus/sms_exp/gender.h b/src/devices/bus/sms_exp/gender.h
index 431b356a7d2..8fb3175d18a 100644
--- a/src/devices/bus/sms_exp/gender.h
+++ b/src/devices/bus/sms_exp/gender.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SMS_EXP_GENDER_H
+#define MAME_BUS_SMS_EXP_GENDER_H
-#ifndef __SMS_GENDER_ADAPTER__
-#define __SMS_GENDER_ADAPTER__
+#pragma once
#include "smsexp.h"
@@ -50,7 +50,6 @@ private:
// device type definition
-extern const device_type SMS_GENDER_ADAPTER;
-
+DECLARE_DEVICE_TYPE(SMS_GENDER_ADAPTER, sms_gender_adapter_device)
-#endif
+#endif // MAME_BUS_SMS_EXP_GENDER_H
diff --git a/src/devices/bus/sms_exp/smsexp.cpp b/src/devices/bus/sms_exp/smsexp.cpp
index 12e4ebcc48d..89cdf8083a8 100644
--- a/src/devices/bus/sms_exp/smsexp.cpp
+++ b/src/devices/bus/sms_exp/smsexp.cpp
@@ -9,13 +9,17 @@
#include "emu.h"
#include "smsexp.h"
+// slot devices
+#include "gender.h"
+
+
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SMS_EXPANSION_SLOT = device_creator<sms_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(SMS_EXPANSION_SLOT, sms_expansion_slot_device, "sms_expansion_slot", "Sega SMS expansion slot")
@@ -52,8 +56,9 @@ device_sms_expansion_slot_interface::~device_sms_expansion_slot_interface()
//-------------------------------------------------
sms_expansion_slot_device::sms_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMS_EXPANSION_SLOT, "Sega SMS expansion slot", tag, owner, clock, "sms_expansion_slot", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr)
+ device_t(mconfig, SMS_EXPANSION_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_device(nullptr)
{
}
@@ -78,58 +83,6 @@ void sms_expansion_slot_device::device_start()
//-------------------------------------------------
-// read
-//-------------------------------------------------
-
-READ8_MEMBER(sms_expansion_slot_device::read)
-{
- if (m_device)
- return m_device->read(space, offset);
- else
- return 0xff;
-}
-
-READ8_MEMBER(sms_expansion_slot_device::read_ram)
-{
- if (m_device)
- return m_device->read_ram(space, offset);
- else
- return 0xff;
-}
-
-int sms_expansion_slot_device::get_lphaser_xoffs()
-{
- if (m_device)
- return m_device->get_lphaser_xoffs();
- else
- return 0;
-}
-
-
-//-------------------------------------------------
-// write
-//-------------------------------------------------
-
-WRITE8_MEMBER(sms_expansion_slot_device::write_mapper)
-{
- if (m_device)
- m_device->write_mapper(space, offset, data);
-}
-
-WRITE8_MEMBER(sms_expansion_slot_device::write)
-{
- if (m_device)
- m_device->write(space, offset, data);
-}
-
-WRITE8_MEMBER(sms_expansion_slot_device::write_ram)
-{
- if (m_device)
- m_device->write_ram(space, offset, data);
-}
-
-
-//-------------------------------------------------
// SLOT_INTERFACE( sms_expansion_devices )
//-------------------------------------------------
diff --git a/src/devices/bus/sms_exp/smsexp.h b/src/devices/bus/sms_exp/smsexp.h
index 6203380fc2f..5ea8a344384 100644
--- a/src/devices/bus/sms_exp/smsexp.h
+++ b/src/devices/bus/sms_exp/smsexp.h
@@ -9,10 +9,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SMS_EXP_SMSEXP_H
+#define MAME_BUS_SMS_EXP_SMSEXP_H
-#ifndef __SMS_EXPANSION_SLOT__
-#define __SMS_EXPANSION_SLOT__
+#pragma once
@@ -31,64 +31,63 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> sms_expansion_slot_device
-
-class device_sms_expansion_slot_interface;
+// ======================> device_sms_expansion_slot_interface
-class sms_expansion_slot_device : public device_t,
- public device_slot_interface
+// class representing interface-specific live sms_expansion card
+class device_sms_expansion_slot_interface : public device_slot_card_interface
{
public:
// construction/destruction
- sms_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~sms_expansion_slot_device();
+ virtual ~device_sms_expansion_slot_interface();
// reading and writing
- DECLARE_READ8_MEMBER(read);
- DECLARE_WRITE8_MEMBER(write);
- DECLARE_WRITE8_MEMBER(write_mapper);
- DECLARE_READ8_MEMBER(read_ram);
- DECLARE_WRITE8_MEMBER(write_ram);
+ virtual DECLARE_READ8_MEMBER(read) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER(write) { }
+ virtual DECLARE_WRITE8_MEMBER(write_mapper) { }
+ virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER(write_ram) { }
- int get_lphaser_xoffs();
-
- device_sms_expansion_slot_interface *m_device;
+ virtual int get_lphaser_xoffs() { return 0; }
protected:
- // device-level overrides
- virtual void device_start() override;
+ device_sms_expansion_slot_interface(const machine_config &mconfig, device_t &device);
};
-// ======================> device_sms_expansion_slot_interface
+// ======================> sms_expansion_slot_device
-// class representing interface-specific live sms_expansion card
-class device_sms_expansion_slot_interface : public device_slot_card_interface
+class sms_expansion_slot_device : public device_t,
+ public device_slot_interface
{
public:
// construction/destruction
- device_sms_expansion_slot_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_sms_expansion_slot_interface();
+ sms_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~sms_expansion_slot_device();
// reading and writing
- virtual DECLARE_READ8_MEMBER(read) { return 0xff; };
- virtual DECLARE_WRITE8_MEMBER(write) { };
- virtual DECLARE_WRITE8_MEMBER(write_mapper) {};
- virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; };
- virtual DECLARE_WRITE8_MEMBER(write_ram) { };
+ DECLARE_READ8_MEMBER(read) { return m_device ? m_device->read(space, offset, mem_mask) : 0xff; }
+ DECLARE_WRITE8_MEMBER(write) { if (m_device) m_device->write(space, offset, data, mem_mask); }
+ DECLARE_WRITE8_MEMBER(write_mapper) { if (m_device) m_device->write_mapper(space, offset, data, mem_mask); }
+ DECLARE_READ8_MEMBER(read_ram) { return m_device ? m_device->read_ram(space, offset, mem_mask) : 0xff; }
+ DECLARE_WRITE8_MEMBER(write_ram) { if (m_device) m_device->write_ram(space, offset, data, mem_mask); }
- virtual int get_lphaser_xoffs() { return 0; };
+ int get_lphaser_xoffs() { return m_device ? m_device->get_lphaser_xoffs() : 0; }
+
+ bool device_present() const { return bool(m_device); }
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+ device_sms_expansion_slot_interface *m_device;
};
// device type definition
-extern const device_type SMS_EXPANSION_SLOT;
-
+DECLARE_DEVICE_TYPE(SMS_EXPANSION_SLOT, sms_expansion_slot_device)
-// slot devices
-#include "gender.h"
SLOT_INTERFACE_EXTERN( sms_expansion_devices );
-#endif
+#endif // MAME_BUS_SMS_EXP_SMSEXP_H
diff --git a/src/devices/bus/snes/bsx.cpp b/src/devices/bus/snes/bsx.cpp
index a81aeac02b6..984d0a04f45 100644
--- a/src/devices/bus/snes/bsx.cpp
+++ b/src/devices/bus/snes/bsx.cpp
@@ -18,59 +18,52 @@
// sns_rom_bsx_device - constructor
//-------------------------------------------------
-const device_type SNS_ROM_BSX = device_creator<sns_rom_bsx_device>;
-const device_type SNS_LOROM_BSX = device_creator<sns_rom_bsxlo_device>;
-const device_type SNS_HIROM_BSX = device_creator<sns_rom_bsxhi_device>;
-const device_type SNS_BSMEMPAK = device_creator<sns_rom_bsmempak_device>;
-
-
-sns_rom_bsx_device::sns_rom_bsx_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : sns_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_base_unit(nullptr),
- access_00_1f(0),
- access_80_9f(0),
- access_40_4f(0),
- access_50_5f(0),
- access_60_6f(0),
- rom_access(0),
- m_slot(*this, "bs_slot")
+DEFINE_DEVICE_TYPE(SNS_ROM_BSX, sns_rom_bsx_device, "sns_rom_bsx", "SNES BS-X Cart")
+DEFINE_DEVICE_TYPE(SNS_LOROM_BSX, sns_rom_bsxlo_device, "sns_rom_bsxlo", "SNES Cart (LoROM) + BS-X slot")
+DEFINE_DEVICE_TYPE(SNS_HIROM_BSX, sns_rom_bsxhi_device, "sns_rom_bsxhi", "SNES Cart (HiROM) + BS-X slot")
+DEFINE_DEVICE_TYPE(SNS_BSMEMPAK, sns_rom_bsmempak_device, "sns_bsmempak", "SNES BS-X Memory packs")
+
+
+sns_rom_bsx_device::sns_rom_bsx_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : sns_rom_device(mconfig, type, tag, owner, clock)
+ , m_base_unit(nullptr)
+ , access_00_1f(0)
+ , access_80_9f(0)
+ , access_40_4f(0)
+ , access_50_5f(0)
+ , access_60_6f(0)
+ , rom_access(0)
+ , m_slot(*this, "bs_slot")
{
}
sns_rom_bsx_device::sns_rom_bsx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_ROM_BSX, "SNES BS-X Cart", tag, owner, clock, "sns_rom_bsx", __FILE__),
- m_base_unit(nullptr),
- access_00_1f(0),
- access_80_9f(0),
- access_40_4f(0),
- access_50_5f(0),
- access_60_6f(0),
- rom_access(0),
- m_slot(*this, "bs_slot")
+ : sns_rom_bsx_device(mconfig, SNS_ROM_BSX, tag, owner, clock)
{
}
sns_rom_bsxlo_device::sns_rom_bsxlo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_BSX, "SNES Cart (LoROM) + BS-X slot", tag, owner, clock, "sns_rom_bsxlo", __FILE__),
- m_slot(*this, "bs_slot")
+ : sns_rom_device(mconfig, SNS_LOROM_BSX, tag, owner, clock)
+ , m_slot(*this, "bs_slot")
{
}
sns_rom_bsxhi_device::sns_rom_bsxhi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom21_device(mconfig, SNS_HIROM_BSX, "SNES Cart (HiROM) + BS-X slot", tag, owner, clock, "sns_rom_bsxhi", __FILE__),
- m_slot(*this, "bs_slot")
+ : sns_rom21_device(mconfig, SNS_HIROM_BSX, tag, owner, clock)
+ , m_slot(*this, "bs_slot")
{
}
sns_rom_bsmempak_device::sns_rom_bsmempak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_BSMEMPAK, "SNES BS-X Memory packs", tag, owner, clock, "sns_bsmempak", __FILE__), m_command(0), m_write_old(0), m_write_new(0), m_flash_enable(0), m_read_enable(0), m_write_enable(0)
- {
+ : sns_rom_device(mconfig, SNS_BSMEMPAK, tag, owner, clock)
+ , m_command(0), m_write_old(0), m_write_new(0), m_flash_enable(0), m_read_enable(0), m_write_enable(0)
+{
}
void sns_rom_bsx_device::device_start()
{
- m_base_unit = std::make_unique<BSX_base>(machine());
+ m_base_unit = std::make_unique<bsx_base>(machine());
m_base_unit->init();
memset(m_cart_regs, 0x00, sizeof(m_cart_regs));
@@ -126,8 +119,8 @@ void sns_rom_bsmempak_device::device_reset()
// BS-X Base Unit emulation, to be device-fied ?
-BSX_base::BSX_base(running_machine &machine)
- : r2192_minute(0), m_machine(machine)
+sns_rom_bsx_device::bsx_base::bsx_base(running_machine &machine)
+ : r2192_minute(0), m_machine(machine)
{
m_machine.save().save_item(regs, "SNES_BSX/regs");
m_machine.save().save_item(r2192_counter, "SNES_BSX/r2192_counter");
@@ -135,9 +128,9 @@ BSX_base::BSX_base(running_machine &machine)
m_machine.save().save_item(r2192_second, "SNES_BSX/r2192_second");
}
-void BSX_base::init()
+void sns_rom_bsx_device::bsx_base::init()
{
- memset(regs, 0x00, sizeof(regs));
+ std::fill(std::begin(regs), std::end(regs), 0);
r2192_counter = 0;
r2192_hour = 0;
r2192_minute = 0;
@@ -145,7 +138,7 @@ void BSX_base::init()
}
-uint8_t BSX_base::read(uint32_t offset)
+uint8_t sns_rom_bsx_device::bsx_base::read(uint32_t offset)
{
offset &= 0xffff;
if (offset < 0x2188 || offset >= 0x21a0)
@@ -207,7 +200,7 @@ uint8_t BSX_base::read(uint32_t offset)
}
-void BSX_base::write(uint32_t offset, uint8_t data)
+void sns_rom_bsx_device::bsx_base::write(uint32_t offset, uint8_t data)
{
offset &= 0xffff;
if (offset < 0x2188 || offset >= 0x21a0)
diff --git a/src/devices/bus/snes/bsx.h b/src/devices/bus/snes/bsx.h
index 677b81808dc..926959a7b32 100644
--- a/src/devices/bus/snes/bsx.h
+++ b/src/devices/bus/snes/bsx.h
@@ -1,45 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_BSX_H
-#define __SNS_BSX_H
+#ifndef MAME_BUS_SNES_BSX_H
+#define MAME_BUS_SNES_BSX_H
+
+#pragma once
#include "snes_slot.h"
#include "rom.h"
#include "rom21.h"
-class BSX_base
-{
-public:
- BSX_base(running_machine &machine);
- running_machine &machine() const { return m_machine; }
-
- void init();
- uint8_t read(uint32_t offset);
- void write(uint32_t offset, uint8_t data);
-
-private:
- // regs
- uint8_t regs[0x18]; // 0x2188-0x219f
-
- // counter + clock
- uint8_t r2192_counter;
- uint8_t r2192_hour, r2192_minute, r2192_second;
-
- running_machine& m_machine;
-};
-
// ======================> sns_rom_bsx_device
class sns_rom_bsx_device : public sns_rom_device
{
public:
// construction/destruction
- sns_rom_bsx_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
sns_rom_bsx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// additional reading and writing
@@ -50,8 +27,38 @@ public:
virtual DECLARE_READ8_MEMBER(chip_read) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override;
+protected:
+ class bsx_base
+ {
+ public:
+ bsx_base(running_machine &machine);
+ running_machine &machine() const { return m_machine; }
+
+ void init();
+ uint8_t read(uint32_t offset);
+ void write(uint32_t offset, uint8_t data);
+
+ private:
+ // regs
+ uint8_t regs[0x18]; // 0x2188-0x219f
+
+ // counter + clock
+ uint8_t r2192_counter;
+ uint8_t r2192_hour, r2192_minute, r2192_second;
+
+ running_machine& m_machine;
+ };
+
+ sns_rom_bsx_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ void access_update();
+
// base regs
- std::unique_ptr<BSX_base> m_base_unit;
+ std::unique_ptr<bsx_base> m_base_unit;
// cart regs
uint8_t m_cart_regs[16];
@@ -61,8 +68,6 @@ public:
uint8_t access_50_5f; // 1 = NOTHING, 0 = PRAM
uint8_t access_60_6f; // 1 = PRAM, 0 = NOTHING
uint8_t rom_access; // 2 = HiROM, 1 = LoROM, 0 = PRAM
- void access_update();
-
uint8_t m_pram[0x80000];
@@ -78,14 +83,16 @@ public:
// construction/destruction
sns_rom_bsxlo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// additional reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
required_device<sns_bsx_cart_slot_device> m_slot;
};
@@ -98,14 +105,16 @@ public:
// construction/destruction
sns_rom_bsxhi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// additional reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
required_device<sns_bsx_cart_slot_device> m_slot;
};
@@ -119,10 +128,6 @@ public:
// construction/destruction
sns_rom_bsmempak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// additional reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
@@ -131,6 +136,11 @@ public:
// virtual DECLARE_READ8_MEMBER(chip_read);
// virtual DECLARE_WRITE8_MEMBER(chip_write);
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
// flash regs
uint32_t m_command;
uint8_t m_write_old;
@@ -143,9 +153,9 @@ public:
// device type definition
-extern const device_type SNS_ROM_BSX;
-extern const device_type SNS_LOROM_BSX;
-extern const device_type SNS_HIROM_BSX;
-extern const device_type SNS_BSMEMPAK;
+DECLARE_DEVICE_TYPE(SNS_ROM_BSX, sns_rom_bsx_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_BSX, sns_rom_bsxlo_device)
+DECLARE_DEVICE_TYPE(SNS_HIROM_BSX, sns_rom_bsxhi_device)
+DECLARE_DEVICE_TYPE(SNS_BSMEMPAK, sns_rom_bsmempak_device)
-#endif
+#endif // MAME_BUS_SNES_BSX_H
diff --git a/src/devices/bus/snes/event.cpp b/src/devices/bus/snes/event.cpp
index 6b65443ab11..9d87ac8c72e 100644
--- a/src/devices/bus/snes/event.cpp
+++ b/src/devices/bus/snes/event.cpp
@@ -17,19 +17,19 @@
// sns_rom_device - constructor
//-------------------------------------------------
-const device_type SNS_PFEST94 = device_creator<sns_pfest94_device>;
+DEFINE_DEVICE_TYPE(SNS_PFEST94, sns_pfest94_device, "sns_pfest94", "SNES Powerfest '94")
sns_pfest94_device::sns_pfest94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SNS_PFEST94, "SNES Powerfest '94", tag, owner, clock, "sns_pfest94", __FILE__),
- device_sns_cart_interface(mconfig, *this),
- m_upd7725(*this, "dsp"),
- m_dsw(*this, "DIPSW"),
- m_base_bank(0),
- m_mask(0),
- m_status(0),
- m_count(0),
- pfest94_timer(nullptr)
+ : device_t(mconfig, SNS_PFEST94, tag, owner, clock)
+ , device_sns_cart_interface(mconfig, *this)
+ , m_upd7725(*this, "dsp")
+ , m_dsw(*this, "DIPSW")
+ , m_base_bank(0)
+ , m_mask(0)
+ , m_status(0)
+ , m_count(0)
+ , pfest94_timer(nullptr)
{
}
diff --git a/src/devices/bus/snes/event.h b/src/devices/bus/snes/event.h
index 4703ed9b2cf..dc20096ef67 100644
--- a/src/devices/bus/snes/event.h
+++ b/src/devices/bus/snes/event.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_EVENT_H
-#define __SNS_EVENT_H
+#ifndef MAME_BUS_SNES_EVENT_H
+#define MAME_BUS_SNES_EVENT_H
+
+#pragma once
#include "snes_slot.h"
#include "cpu/upd7725/upd7725.h"
@@ -16,16 +18,10 @@ public:
// construction/destruction
sns_pfest94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
- required_device<upd7725_device> m_upd7725;
- required_ioport m_dsw;
-
virtual void speedup_addon_bios_access() override;
// reading and writing
@@ -37,6 +33,16 @@ public:
virtual DECLARE_READ32_MEMBER(necdsp_prg_r);
virtual DECLARE_READ16_MEMBER(necdsp_data_r);
+protected:
+ static constexpr device_timer_id TIMER_EVENT = 0;
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ required_device<upd7725_device> m_upd7725;
+ required_ioport m_dsw;
+
private:
uint8_t m_base_bank;
uint8_t m_mask;
@@ -46,12 +52,11 @@ private:
std::vector<uint32_t> m_dsp_prg;
std::vector<uint16_t> m_dsp_data;
- static const device_timer_id TIMER_EVENT = 0;
emu_timer *pfest94_timer;
};
// device type definition
-extern const device_type SNS_PFEST94;
+DECLARE_DEVICE_TYPE(SNS_PFEST94, sns_pfest94_device)
-#endif
+#endif // MAME_BUS_SNES_EVENT_H
diff --git a/src/devices/bus/snes/rom.cpp b/src/devices/bus/snes/rom.cpp
index 9cd44aa7d41..628ab1a212d 100644
--- a/src/devices/bus/snes/rom.cpp
+++ b/src/devices/bus/snes/rom.cpp
@@ -15,79 +15,77 @@
// sns_rom_device - constructor
//-------------------------------------------------
-const device_type SNS_LOROM = device_creator<sns_rom_device>;
-const device_type SNS_LOROM_OBC1 = device_creator<sns_rom_obc1_device>;
+DEFINE_DEVICE_TYPE(SNS_LOROM, sns_rom_device, "sns_rom", "SNES Cart (LoROM)")
+DEFINE_DEVICE_TYPE(SNS_LOROM_OBC1, sns_rom_obc1_device, "sns_rom_obc1", "SNES Cart (LoROM) + OBC-1")
// LoROM pirate carts with protection
-const device_type SNS_LOROM_POKEMON = device_creator<sns_rom_pokemon_device>;
-const device_type SNS_LOROM_TEKKEN2 = device_creator<sns_rom_tekken2_device>;
-const device_type SNS_LOROM_SOULBLAD = device_creator<sns_rom_soulblad_device>;
-const device_type SNS_LOROM_BANANA = device_creator<sns_rom_banana_device>;
-const device_type SNS_LOROM_BUGSLIFE = device_creator<sns_rom_bugs_device>;
+DEFINE_DEVICE_TYPE(SNS_LOROM_POKEMON, sns_rom_pokemon_device, "sns_rom_pokemon", "SNES Pirate Carts with Protection")
+DEFINE_DEVICE_TYPE(SNS_LOROM_TEKKEN2, sns_rom_tekken2_device, "sns_rom_tekken2", "SNES Tekken 2")
+DEFINE_DEVICE_TYPE(SNS_LOROM_SOULBLAD, sns_rom_soulblad_device, "sns_rom_soulblad", "SNES Sound Blade")
+DEFINE_DEVICE_TYPE(SNS_LOROM_BANANA, sns_rom_banana_device, "sns_rom_banana", "SNES Banana de Pijamas")
+DEFINE_DEVICE_TYPE(SNS_LOROM_BUGSLIFE, sns_rom_bugs_device, "sns_rom_bugslife", "SNES A Bug's Life")
// LoROM pirate multicarts
-const device_type SNS_LOROM_MCPIR1 = device_creator<sns_rom_mcpirate1_device>;
-const device_type SNS_LOROM_MCPIR2 = device_creator<sns_rom_mcpirate2_device>;
-const device_type SNS_LOROM_20COL = device_creator<sns_rom_20col_device>;
+DEFINE_DEVICE_TYPE(SNS_LOROM_MCPIR1, sns_rom_mcpirate1_device, "sns_rom_mcpirate1", "SNES Pirate Multigame Carts Type 1")
+DEFINE_DEVICE_TYPE(SNS_LOROM_MCPIR2, sns_rom_mcpirate2_device, "sns_rom_mcpirate2", "SNES Pirate Multigame Carts Type 2")
+DEFINE_DEVICE_TYPE(SNS_LOROM_20COL, sns_rom_20col_device, "sns_rom_20col", "SNES Super 20 Collection")
-sns_rom_device::sns_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sns_cart_interface( mconfig, *this )
+sns_rom_device::sns_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_sns_cart_interface(mconfig, *this)
{
}
sns_rom_device::sns_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SNS_LOROM, "SNES Cart (LoROM)", tag, owner, clock, "sns_rom", __FILE__),
- device_sns_cart_interface( mconfig, *this )
+ : sns_rom_device(mconfig, SNS_LOROM, tag, owner, clock)
{
}
sns_rom_obc1_device::sns_rom_obc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_OBC1, "SNES Cart (LoROM) + OBC-1", tag, owner, clock, "sns_rom_obc1", __FILE__), m_address(0), m_offset(0), m_shift(0)
- {
+ : sns_rom_device(mconfig, SNS_LOROM_OBC1, tag, owner, clock), m_address(0), m_offset(0), m_shift(0)
+{
}
// Pirate LoROM 'mappers'
sns_rom_pokemon_device::sns_rom_pokemon_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_POKEMON, "SNES Pirate Carts with Protection", tag, owner, clock, "sns_rom_pokemon", __FILE__), m_latch(0)
- {
+ : sns_rom_device(mconfig, SNS_LOROM_POKEMON, tag, owner, clock), m_latch(0)
+{
}
sns_rom_tekken2_device::sns_rom_tekken2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_TEKKEN2, "SNES Tekken 2", tag, owner, clock, "sns_rom_tekken2", __FILE__), m_prot(0)
- {
+ : sns_rom_device(mconfig, SNS_LOROM_TEKKEN2, tag, owner, clock), m_prot(0)
+{
}
sns_rom_soulblad_device::sns_rom_soulblad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_SOULBLAD, "SNES Soul Blade", tag, owner, clock, "sns_rom_soulblad", __FILE__)
+ : sns_rom_device(mconfig, SNS_LOROM_SOULBLAD, tag, owner, clock)
{
}
sns_rom_banana_device::sns_rom_banana_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_BANANA, "SNES Banana de Pijamas", tag, owner, clock, "sns_rom_banana", __FILE__)
+ : sns_rom_device(mconfig, SNS_LOROM_BANANA, tag, owner, clock)
{
}
sns_rom_bugs_device::sns_rom_bugs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_BUGSLIFE, "SNES A Bug's Life", tag, owner, clock, "sns_rom_bugslife", __FILE__)
+ : sns_rom_device(mconfig, SNS_LOROM_BUGSLIFE, tag, owner, clock)
{
}
// Multigame LoROM 'mappers'
sns_rom_mcpirate1_device::sns_rom_mcpirate1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_MCPIR1, "SNES Pirate Multigame Carts Type 1", tag, owner, clock, "sns_rom_mcpirate1", __FILE__), m_base_bank(0)
- {
+ : sns_rom_device(mconfig, SNS_LOROM_MCPIR1, tag, owner, clock), m_base_bank(0)
+{
}
sns_rom_mcpirate2_device::sns_rom_mcpirate2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_MCPIR2, "SNES Pirate Multigame Carts Type 2", tag, owner, clock, "sns_rom_mcpirate2", __FILE__), m_base_bank(0)
- {
+ : sns_rom_device(mconfig, SNS_LOROM_MCPIR2, tag, owner, clock), m_base_bank(0)
+{
}
sns_rom_20col_device::sns_rom_20col_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_20COL, "SNES Super 20 Collection", tag, owner, clock, "sns_rom_20col", __FILE__), m_base_bank(0)
- {
+ : sns_rom_device(mconfig, SNS_LOROM_20COL, tag, owner, clock), m_base_bank(0)
+{
}
diff --git a/src/devices/bus/snes/rom.h b/src/devices/bus/snes/rom.h
index ddd73ab33da..9e95e4b8e00 100644
--- a/src/devices/bus/snes/rom.h
+++ b/src/devices/bus/snes/rom.h
@@ -1,27 +1,30 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_ROM_H
-#define __SNS_ROM_H
+#ifndef MAME_BUS_SNES_ROM_H
+#define MAME_BUS_SNES_ROM_H
+
+#pragma once
#include "snes_slot.h"
// ======================> sns_rom_device
-class sns_rom_device : public device_t,
- public device_sns_cart_interface
+class sns_rom_device : public device_t, public device_sns_cart_interface
{
public:
// construction/destruction
- sns_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
sns_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
+
+protected:
+ sns_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
};
// ======================> sns_rom_obc1_device
@@ -32,14 +35,15 @@ public:
// construction/destruction
sns_rom_obc1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// additional reading and writing
virtual DECLARE_READ8_MEMBER(chip_read) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_address;
int m_offset;
int m_shift;
@@ -56,13 +60,15 @@ public:
// construction/destruction
sns_rom_pokemon_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(chip_read) override; // protection device
+ virtual DECLARE_WRITE8_MEMBER(chip_write) override; // protection device
+
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- // reading and writing
- virtual DECLARE_READ8_MEMBER(chip_read) override; // protection device
- virtual DECLARE_WRITE8_MEMBER(chip_write) override; // protection device
uint8_t m_latch;
};
@@ -74,14 +80,15 @@ public:
// construction/destruction
sns_rom_tekken2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(chip_read) override; // protection device
virtual DECLARE_WRITE8_MEMBER(chip_write) override; // protection device
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void update_prot(uint32_t offset);
// bit0-3 prot value, bit4 direction, bit5 function
@@ -109,14 +116,16 @@ public:
// construction/destruction
sns_rom_mcpirate1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override; // bankswitch device
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_base_bank;
};
@@ -128,14 +137,16 @@ public:
// construction/destruction
sns_rom_mcpirate2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override; // bankswitch device
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
uint8_t m_base_bank;
};
@@ -147,13 +158,15 @@ public:
// construction/destruction
sns_rom_20col_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override; // bankswitch device
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
uint8_t m_base_bank;
};
@@ -165,13 +178,15 @@ public:
// construction/destruction
sns_rom_banana_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(chip_read) override; // protection device
+ virtual DECLARE_WRITE8_MEMBER(chip_write) override; // protection device
+
+protected:
// device-level overrides
// virtual void device_start();
// virtual void device_reset();
- // reading and writing
- virtual DECLARE_READ8_MEMBER(chip_read) override; // protection device
- virtual DECLARE_WRITE8_MEMBER(chip_write) override; // protection device
uint8_t m_latch[16];
};
@@ -183,27 +198,29 @@ public:
// construction/destruction
sns_rom_bugs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(chip_read) override; // protection device
+ virtual DECLARE_WRITE8_MEMBER(chip_write) override; // protection device
+
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- // reading and writing
- virtual DECLARE_READ8_MEMBER(chip_read) override; // protection device
- virtual DECLARE_WRITE8_MEMBER(chip_write) override; // protection device
uint8_t m_latch[0x800];
};
// device type definition
-extern const device_type SNS_LOROM;
-extern const device_type SNS_LOROM_OBC1;
-extern const device_type SNS_LOROM_POKEMON;
-extern const device_type SNS_LOROM_TEKKEN2;
-extern const device_type SNS_LOROM_SOULBLAD;
-extern const device_type SNS_LOROM_MCPIR1;
-extern const device_type SNS_LOROM_MCPIR2;
-extern const device_type SNS_LOROM_20COL;
-extern const device_type SNS_LOROM_BANANA;
-extern const device_type SNS_LOROM_BUGSLIFE;
-
-#endif
+DECLARE_DEVICE_TYPE(SNS_LOROM, sns_rom_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_OBC1, sns_rom_obc1_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_POKEMON, sns_rom_pokemon_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_TEKKEN2, sns_rom_tekken2_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_SOULBLAD, sns_rom_soulblad_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_MCPIR1, sns_rom_mcpirate1_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_MCPIR2, sns_rom_mcpirate2_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_20COL, sns_rom_20col_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_BANANA, sns_rom_banana_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_BUGSLIFE, sns_rom_bugs_device)
+
+#endif // MAME_BUS_SNES_ROM_H
diff --git a/src/devices/bus/snes/rom21.cpp b/src/devices/bus/snes/rom21.cpp
index d4a555da852..91c61394688 100644
--- a/src/devices/bus/snes/rom21.cpp
+++ b/src/devices/bus/snes/rom21.cpp
@@ -15,25 +15,23 @@
// sns_rom_device - constructor
//-------------------------------------------------
-const device_type SNS_HIROM = device_creator<sns_rom21_device>;
-const device_type SNS_HIROM_SRTC = device_creator<sns_rom21_srtc_device>;
+DEFINE_DEVICE_TYPE(SNS_HIROM, sns_rom21_device, "sns_rom21", "SNES Cart (HiROM)")
+DEFINE_DEVICE_TYPE(SNS_HIROM_SRTC, sns_rom21_srtc_device, "sns_rom21_rtc", "SNES Cart (HiROM) + S-RTC")
-sns_rom21_device::sns_rom21_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sns_cart_interface( mconfig, *this )
+sns_rom21_device::sns_rom21_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_sns_cart_interface( mconfig, *this )
{
}
sns_rom21_device::sns_rom21_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SNS_HIROM, "SNES Cart (HiROM)", tag, owner, clock, "sns_rom21", __FILE__),
- device_sns_cart_interface( mconfig, *this )
+ : sns_rom21_device(mconfig, SNS_HIROM, tag, owner, clock)
{
}
sns_rom21_srtc_device::sns_rom21_srtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom21_device(mconfig, SNS_HIROM_SRTC, "SNES Cart (HiROM) + S-RTC", tag, owner, clock, "sns_rom21_srtc", __FILE__), m_mode(0), m_index(0)
- {
+ : sns_rom21_device(mconfig, SNS_HIROM_SRTC, tag, owner, clock), m_mode(0), m_index(0)
+{
}
diff --git a/src/devices/bus/snes/rom21.h b/src/devices/bus/snes/rom21.h
index befd130f02f..545e2457ef3 100644
--- a/src/devices/bus/snes/rom21.h
+++ b/src/devices/bus/snes/rom21.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_ROM21_H
-#define __SNS_ROM21_H
+#ifndef MAME_BUS_SNES_ROM21_H
+#define MAME_BUS_SNES_ROM21_H
+
+#pragma once
#include "snes_slot.h"
@@ -13,16 +15,18 @@ class sns_rom21_device : public device_t,
{
public:
// construction/destruction
- sns_rom21_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
sns_rom21_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
+
+protected:
+ sns_rom21_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
};
// ======================> sns_rom21_srtc_device
@@ -33,14 +37,11 @@ public:
// construction/destruction
sns_rom21_srtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(chip_read) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override;
+protected:
// S-RTC specific variables
enum
{
@@ -50,6 +51,10 @@ public:
RTCM_Write
};
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void update_time();
uint8_t srtc_weekday(uint32_t year, uint32_t month, uint32_t day);
@@ -61,7 +66,7 @@ public:
// device type definition
-extern const device_type SNS_HIROM;
-extern const device_type SNS_HIROM_SRTC;
+DECLARE_DEVICE_TYPE(SNS_HIROM, sns_rom21_device)
+DECLARE_DEVICE_TYPE(SNS_HIROM_SRTC, sns_rom21_srtc_device)
-#endif
+#endif // MAME_BUS_SNES_ROM21_H
diff --git a/src/devices/bus/snes/sa1.cpp b/src/devices/bus/snes/sa1.cpp
index f74ebe4409a..5020aec1613 100644
--- a/src/devices/bus/snes/sa1.cpp
+++ b/src/devices/bus/snes/sa1.cpp
@@ -82,14 +82,23 @@
// constructor
//-------------------------------------------------
-const device_type SNS_LOROM_SA1 = device_creator<sns_sa1_device>;
+DEFINE_DEVICE_TYPE(SNS_LOROM_SA1, sns_sa1_device, "sns_rom_sa1", "SNES Cart + SA-1")
sns_sa1_device::sns_sa1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SNS_LOROM_SA1, "SNES Cart + SA-1", tag, owner, clock, "sns_rom_sa1", __FILE__),
- device_sns_cart_interface( mconfig, *this ),
- m_sa1(*this, "sa1cpu"), m_sa1_ctrl(0), m_scpu_sie(0), m_sa1_reset(0), m_sa1_nmi(0), m_sa1_irq(0), m_scpu_ctrl(0), m_sa1_sie(0), m_irq_vector(0), m_nmi_vector(0), m_hcount(0), m_vcount(0), m_bank_c_hi(0), m_bank_c_rom(0), m_bank_d_hi(0), m_bank_d_rom(0), m_bank_e_hi(0), m_bank_e_rom(0), m_bank_f_hi(0), m_bank_f_rom(0), m_bwram_snes(0), m_bwram_sa1(0), m_bwram_sa1_source(0), m_bwram_sa1_format(0), m_bwram_write_snes(0), m_bwram_write_sa1(0), m_bwpa_sa1(0), m_iram_write_snes(0), m_iram_write_sa1(0), m_dma_ctrl(0), m_dma_ccparam(0), m_src_addr(0), m_dst_addr(0), m_dma_cnt(0), m_math_ctlr(0), m_math_overflow(0), m_math_a(0), m_math_b(0), m_math_res(0), m_vda(0), m_vbit(0), m_vlen(0), m_drm(0), m_scpu_flags(0), m_sa1_flags(0), m_hcr(0), m_vcr(0)
- {
+ : device_t(mconfig, SNS_LOROM_SA1, tag, owner, clock)
+ , device_sns_cart_interface(mconfig, *this)
+ , m_sa1(*this, "sa1cpu")
+ , m_sa1_ctrl(0), m_scpu_sie(0), m_sa1_reset(0), m_sa1_nmi(0), m_sa1_irq(0), m_scpu_ctrl(0), m_sa1_sie(0)
+ , m_irq_vector(0), m_nmi_vector(0)
+ , m_hcount(0), m_vcount(0)
+ , m_bank_c_hi(0), m_bank_c_rom(0), m_bank_d_hi(0), m_bank_d_rom(0), m_bank_e_hi(0), m_bank_e_rom(0), m_bank_f_hi(0), m_bank_f_rom(0)
+ , m_bwram_snes(0), m_bwram_sa1(0), m_bwram_sa1_source(0), m_bwram_sa1_format(0), m_bwram_write_snes(0), m_bwram_write_sa1(0), m_bwpa_sa1(0)
+ , m_iram_write_snes(0), m_iram_write_sa1(0)
+ , m_dma_ctrl(0), m_dma_ccparam(0), m_src_addr(0), m_dst_addr(0), m_dma_cnt(0)
+ , m_math_ctlr(0), m_math_overflow(0), m_math_a(0), m_math_b(0), m_math_res(0)
+ , m_vda(0), m_vbit(0), m_vlen(0), m_drm(0), m_scpu_flags(0), m_sa1_flags(0), m_hcr(0), m_vcr(0)
+{
}
diff --git a/src/devices/bus/snes/sa1.h b/src/devices/bus/snes/sa1.h
index bcd5b6503cc..978505438ee 100644
--- a/src/devices/bus/snes/sa1.h
+++ b/src/devices/bus/snes/sa1.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli, R. Belmont
-#ifndef __SNS_SA1_H
-#define __SNS_SA1_H
+#ifndef MAME_BUS_SNES_SA1_H
+#define MAME_BUS_SNES_SA1_H
+
+#pragma once
#include "snes_slot.h"
#include "cpu/g65816/g65816.h"
@@ -16,10 +18,7 @@ public:
// construction/destruction
sns_sa1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_reset() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
@@ -36,8 +35,12 @@ public:
DECLARE_WRITE8_MEMBER(sa1_lo_w);
DECLARE_WRITE8_MEMBER(sa1_hi_w);
-private:
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+private:
uint8_t var_length_read(address_space &space, uint32_t offset);
void dma_transfer(address_space &space);
void dma_cctype1_transfer(address_space &space);
@@ -108,6 +111,6 @@ private:
// device type definition
-extern const device_type SNS_LOROM_SA1;
+DECLARE_DEVICE_TYPE(SNS_LOROM_SA1, sns_sa1_device)
-#endif
+#endif // MAME_BUS_SNES_SA1_H
diff --git a/src/devices/bus/snes/sdd1.cpp b/src/devices/bus/snes/sdd1.cpp
index cddff2082f4..e6f0ee179d2 100644
--- a/src/devices/bus/snes/sdd1.cpp
+++ b/src/devices/bus/snes/sdd1.cpp
@@ -20,13 +20,13 @@
// Input Manager
-void SDD1_IM::IM_prepareDecomp(uint32_t in_buf)
+void sns_rom_sdd1_device::SDD1_IM::IM_prepareDecomp(uint32_t in_buf)
{
m_byte_ptr = in_buf;
m_bit_count = 4;
}
-uint8_t SDD1_IM::IM_getCodeword(uint8_t *ROM, uint32_t *mmc, const uint8_t code_len)
+uint8_t sns_rom_sdd1_device::SDD1_IM::IM_getCodeword(uint8_t *ROM, uint32_t *mmc, const uint8_t code_len)
{
uint8_t codeword = ROM[SSD1_ADD(m_byte_ptr)] << m_bit_count;
@@ -49,9 +49,9 @@ uint8_t SDD1_IM::IM_getCodeword(uint8_t *ROM, uint32_t *mmc, const uint8_t code_
// GCD
-void SDD1_GCD::GCD_getRunCount(uint8_t *ROM, uint32_t *mmc, uint8_t code_num, uint8_t* MPScount, uint8_t* LPSind)
+void sns_rom_sdd1_device::SDD1_GCD::GCD_getRunCount(uint8_t *ROM, uint32_t *mmc, uint8_t code_num, uint8_t* MPScount, uint8_t* LPSind)
{
- const uint8_t run_count[] =
+ static constexpr uint8_t run_count[] =
{
0x00, 0x00, 0x01, 0x00, 0x03, 0x01, 0x02, 0x00,
0x07, 0x03, 0x05, 0x01, 0x06, 0x02, 0x04, 0x00,
@@ -102,13 +102,13 @@ void SDD1_GCD::GCD_getRunCount(uint8_t *ROM, uint32_t *mmc, uint8_t code_num, ui
// BG
-void SDD1_BG::BG_prepareDecomp()
+void sns_rom_sdd1_device::SDD1_BG::BG_prepareDecomp()
{
m_MPScount = 0;
m_LPSind = 0;
}
-uint8_t SDD1_BG::BG_getBit(uint8_t *ROM, uint32_t *mmc, uint8_t* endOfRun)
+uint8_t sns_rom_sdd1_device::SDD1_BG::BG_getBit(uint8_t *ROM, uint32_t *mmc, uint8_t* endOfRun)
{
uint8_t bit;
@@ -149,7 +149,7 @@ struct SDD1_PEM_state
uint8_t nextIfLPS;
};
-static const SDD1_PEM_state PEM_evolution_table[33] =
+static constexpr SDD1_PEM_state PEM_evolution_table[33] =
{
{ 0,25,25},
{ 0, 2, 1},
@@ -186,7 +186,7 @@ static const SDD1_PEM_state PEM_evolution_table[33] =
{ 7,24,22}
};
-void SDD1_PEM::PEM_prepareDecomp()
+void sns_rom_sdd1_device::SDD1_PEM::PEM_prepareDecomp()
{
for (auto & elem : m_contextInfo)
{
@@ -195,7 +195,7 @@ void SDD1_PEM::PEM_prepareDecomp()
}
}
-uint8_t SDD1_PEM::PEM_getBit(uint8_t *ROM, uint32_t *mmc, uint8_t context)
+uint8_t sns_rom_sdd1_device::SDD1_PEM::PEM_getBit(uint8_t *ROM, uint32_t *mmc, uint8_t context)
{
uint8_t endOfRun;
uint8_t bit;
@@ -228,7 +228,7 @@ uint8_t SDD1_PEM::PEM_getBit(uint8_t *ROM, uint32_t *mmc, uint8_t context)
// CM
-void SDD1_CM::CM_prepareDecomp(uint8_t *ROM, uint32_t *mmc, uint32_t first_byte)
+void sns_rom_sdd1_device::SDD1_CM::CM_prepareDecomp(uint8_t *ROM, uint32_t *mmc, uint32_t first_byte)
{
int32_t i = 0;
m_bitplanesInfo = ROM[SSD1_ADD(first_byte)] & 0xc0;
@@ -252,7 +252,7 @@ void SDD1_CM::CM_prepareDecomp(uint8_t *ROM, uint32_t *mmc, uint32_t first_byte)
}
}
-uint8_t SDD1_CM::CM_getBit(uint8_t *ROM, uint32_t *mmc)
+uint8_t sns_rom_sdd1_device::SDD1_CM::CM_getBit(uint8_t *ROM, uint32_t *mmc)
{
uint8_t currContext;
uint16_t *context_bits;
@@ -309,14 +309,14 @@ uint8_t SDD1_CM::CM_getBit(uint8_t *ROM, uint32_t *mmc)
// OL
-void SDD1_OL::OL_prepareDecomp(uint8_t *ROM, uint32_t *mmc, uint32_t first_byte, uint16_t out_len, uint8_t *out_buf)
+void sns_rom_sdd1_device::SDD1_OL::OL_prepareDecomp(uint8_t *ROM, uint32_t *mmc, uint32_t first_byte, uint16_t out_len, uint8_t *out_buf)
{
m_bitplanesInfo = ROM[SSD1_ADD(first_byte)] & 0xc0;
m_length = out_len;
m_buffer = out_buf;
}
-void SDD1_OL::OL_launch(uint8_t *ROM, uint32_t *mmc)
+void sns_rom_sdd1_device::SDD1_OL::OL_launch(uint8_t *ROM, uint32_t *mmc)
{
uint8_t i;
uint8_t register1, register2 = 0;
@@ -366,7 +366,7 @@ void SDD1_OL::OL_launch(uint8_t *ROM, uint32_t *mmc)
// S-DD1
-SDD1_emu::SDD1_emu(running_machine &machine)
+sns_rom_sdd1_device::SDD1_emu::SDD1_emu(running_machine &machine)
: m_machine(machine)
{
m_IM = std::make_unique<SDD1_IM>();
@@ -385,7 +385,7 @@ SDD1_emu::SDD1_emu(running_machine &machine)
m_OL = std::make_unique<SDD1_OL>(m_CM.get());
}
-void SDD1_emu::SDD1emu_decompress(uint8_t *ROM, uint32_t *mmc, uint32_t in_buf, uint16_t out_len, uint8_t *out_buf)
+void sns_rom_sdd1_device::SDD1_emu::SDD1emu_decompress(uint8_t *ROM, uint32_t *mmc, uint32_t in_buf, uint16_t out_len, uint8_t *out_buf)
{
m_IM->IM_prepareDecomp(in_buf);
m_BG0->BG_prepareDecomp();
@@ -408,19 +408,19 @@ void SDD1_emu::SDD1emu_decompress(uint8_t *ROM, uint32_t *mmc, uint32_t in_buf,
// sns_rom_sdd1_device - constructor
//-------------------------------------------------
-const device_type SNS_LOROM_SDD1 = device_creator<sns_rom_sdd1_device>;
+DEFINE_DEVICE_TYPE(SNS_LOROM_SDD1, sns_rom_sdd1_device, "sns_rom_sdd1", "SNES Cart + S-DD1")
-sns_rom_sdd1_device::sns_rom_sdd1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sns_cart_interface( mconfig, *this ), m_sdd1_enable(0), m_xfer_enable(0), m_sdd1emu(nullptr)
- {
+sns_rom_sdd1_device::sns_rom_sdd1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sns_cart_interface(mconfig, *this)
+ , m_sdd1_enable(0), m_xfer_enable(0), m_sdd1emu(nullptr)
+{
}
sns_rom_sdd1_device::sns_rom_sdd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SNS_LOROM_SDD1, "SNES Cart + S-DD1", tag, owner, clock, "sns_rom_sdd1", __FILE__),
- device_sns_cart_interface( mconfig, *this ), m_sdd1_enable(0), m_xfer_enable(0), m_sdd1emu(nullptr)
- {
+ : sns_rom_sdd1_device(mconfig, SNS_LOROM_SDD1, tag, owner, clock)
+{
}
diff --git a/src/devices/bus/snes/sdd1.h b/src/devices/bus/snes/sdd1.h
index 244c552f101..6265e630bdc 100644
--- a/src/devices/bus/snes/sdd1.h
+++ b/src/devices/bus/snes/sdd1.h
@@ -1,174 +1,163 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_SDD1_H
-#define __SNS_SDD1_H
+#ifndef MAME_BUS_SNES_SDD1_H
+#define MAME_BUS_SNES_SDD1_H
-#include "snes_slot.h"
+#pragma once
-// misc classes for the S-DD1
+#include "snes_slot.h"
-class SDD1_IM //Input Manager
-{
-public:
- SDD1_IM():
- m_byte_ptr(0),
- m_bit_count(0)
- { }
- uint32_t m_byte_ptr;
- uint8_t m_bit_count;
- void IM_prepareDecomp(uint32_t in_buf);
- uint8_t IM_getCodeword(uint8_t *ROM, uint32_t *mmc, const uint8_t code_len);
-};
+// ======================> sns_rom_sdd1_device
-class SDD1_GCD //Golomb-Code Decoder
+class sns_rom_sdd1_device : public device_t,
+ public device_sns_cart_interface
{
public:
- SDD1_GCD(SDD1_IM* associatedIM)
- : m_IM(associatedIM) { }
-
- SDD1_IM* m_IM;
-
- void GCD_getRunCount(uint8_t *ROM, uint32_t *mmc, uint8_t code_num, uint8_t* MPScount, uint8_t* LPSind);
-};
+ // construction/destruction
+ sns_rom_sdd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-class SDD1_BG // Bits Generator
-{
-public:
- SDD1_BG(SDD1_GCD* associatedGCD, uint8_t code)
- : m_code_num(code),
- m_MPScount(0),
- m_LPSind(0),
- m_GCD(associatedGCD)
- {
- }
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_l) override;
+ virtual DECLARE_READ8_MEMBER(read_h) override;
+ virtual DECLARE_READ8_MEMBER(read_ram) override;
+ virtual DECLARE_WRITE8_MEMBER(write_ram) override;
+ virtual DECLARE_READ8_MEMBER(chip_read) override;
+ virtual DECLARE_WRITE8_MEMBER(chip_write) override;
- uint8_t m_code_num;
- uint8_t m_MPScount;
- uint8_t m_LPSind;
- SDD1_GCD* m_GCD;
+protected:
+ sns_rom_sdd1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- void BG_prepareDecomp();
- uint8_t BG_getBit(uint8_t *ROM, uint32_t *mmc, uint8_t* endOfRun);
-} ;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
-struct SDD1_PEM_ContextInfo
-{
- uint8_t status;
- uint8_t MPS;
-};
+ // misc classes for the S-DD1
-class SDD1_PEM //Probability Estimation Module
-{
-public:
- SDD1_PEM(
- SDD1_BG* associatedBG0, SDD1_BG* associatedBG1,
- SDD1_BG* associatedBG2, SDD1_BG* associatedBG3,
- SDD1_BG* associatedBG4, SDD1_BG* associatedBG5,
- SDD1_BG* associatedBG6, SDD1_BG* associatedBG7)
+ class SDD1_IM //Input Manager
{
- m_BG[0] = associatedBG0;
- m_BG[1] = associatedBG1;
- m_BG[2] = associatedBG2;
- m_BG[3] = associatedBG3;
- m_BG[4] = associatedBG4;
- m_BG[5] = associatedBG5;
- m_BG[6] = associatedBG6;
- m_BG[7] = associatedBG7;
- }
+ public:
+ SDD1_IM() { }
- SDD1_PEM_ContextInfo m_contextInfo[32];
- SDD1_BG* m_BG[8];
+ void IM_prepareDecomp(uint32_t in_buf);
+ uint8_t IM_getCodeword(uint8_t *ROM, uint32_t *mmc, const uint8_t code_len);
- void PEM_prepareDecomp();
- uint8_t PEM_getBit(uint8_t *ROM, uint32_t *mmc, uint8_t context);
-} ;
+ uint32_t m_byte_ptr = 0;
+ uint8_t m_bit_count = 0;
+ };
+ class SDD1_GCD //Golomb-Code Decoder
+ {
+ public:
+ SDD1_GCD(SDD1_IM* associatedIM) : m_IM(associatedIM) { }
-class SDD1_CM
-{
-public:
- SDD1_CM(SDD1_PEM* associatedPEM)
- : m_bitplanesInfo(0), m_contextBitsInfo(0), m_bit_number(0), m_currBitplane(0), m_PEM(associatedPEM) { }
+ void GCD_getRunCount(uint8_t *ROM, uint32_t *mmc, uint8_t code_num, uint8_t* MPScount, uint8_t* LPSind);
- uint8_t m_bitplanesInfo;
- uint8_t m_contextBitsInfo;
- uint8_t m_bit_number;
- uint8_t m_currBitplane;
- uint16_t m_prevBitplaneBits[8];
- SDD1_PEM* m_PEM;
+ SDD1_IM* m_IM;
+ };
- void CM_prepareDecomp(uint8_t *ROM, uint32_t *mmc, uint32_t first_byte);
- uint8_t CM_getBit(uint8_t *ROM, uint32_t *mmc);
-} ;
+ class SDD1_BG // Bits Generator
+ {
+ public:
+ SDD1_BG(SDD1_GCD* associatedGCD, uint8_t code) : m_code_num(code), m_GCD(associatedGCD) { }
+ void BG_prepareDecomp();
+ uint8_t BG_getBit(uint8_t *ROM, uint32_t *mmc, uint8_t* endOfRun);
-class SDD1_OL
-{
-public:
- SDD1_OL(SDD1_CM* associatedCM)
- : m_bitplanesInfo(0), m_length(0), m_buffer(nullptr), m_CM(associatedCM) { }
+ uint8_t m_code_num;
+ uint8_t m_MPScount = 0;
+ uint8_t m_LPSind = 0;
+ SDD1_GCD* m_GCD;
+ };
- uint8_t m_bitplanesInfo;
- uint16_t m_length;
- uint8_t* m_buffer;
- SDD1_CM* m_CM;
+ struct SDD1_PEM_ContextInfo
+ {
+ uint8_t status;
+ uint8_t MPS;
+ };
- void OL_prepareDecomp(uint8_t *ROM, uint32_t *mmc, uint32_t first_byte, uint16_t out_len, uint8_t *out_buf);
- void OL_launch(uint8_t *ROM, uint32_t *mmc);
-} ;
+ class SDD1_PEM //Probability Estimation Module
+ {
+ public:
+ SDD1_PEM(
+ SDD1_BG* associatedBG0,
+ SDD1_BG* associatedBG1,
+ SDD1_BG* associatedBG2,
+ SDD1_BG* associatedBG3,
+ SDD1_BG* associatedBG4,
+ SDD1_BG* associatedBG5,
+ SDD1_BG* associatedBG6,
+ SDD1_BG* associatedBG7)
+ : m_BG{ associatedBG0, associatedBG1, associatedBG2, associatedBG3, associatedBG4, associatedBG5, associatedBG6, associatedBG7 }
+ {
+ }
+
+ void PEM_prepareDecomp();
+ uint8_t PEM_getBit(uint8_t *ROM, uint32_t *mmc, uint8_t context);
+
+ SDD1_PEM_ContextInfo m_contextInfo[32];
+ SDD1_BG* m_BG[8];
+ };
+
+
+ class SDD1_CM
+ {
+ public:
+ SDD1_CM(SDD1_PEM* associatedPEM) : m_PEM(associatedPEM) { }
-class SDD1_emu
-{
-public:
- SDD1_emu(running_machine &machine);
-
- running_machine &machine() const { return m_machine; }
-
- std::unique_ptr<SDD1_IM> m_IM;
- std::unique_ptr<SDD1_GCD> m_GCD;
- std::unique_ptr<SDD1_BG> m_BG0;
- std::unique_ptr<SDD1_BG> m_BG1;
- std::unique_ptr<SDD1_BG> m_BG2;
- std::unique_ptr<SDD1_BG> m_BG3;
- std::unique_ptr<SDD1_BG> m_BG4;
- std::unique_ptr<SDD1_BG> m_BG5;
- std::unique_ptr<SDD1_BG> m_BG6;
- std::unique_ptr<SDD1_BG> m_BG7;
- std::unique_ptr<SDD1_PEM> m_PEM;
- std::unique_ptr<SDD1_CM> m_CM;
- std::unique_ptr<SDD1_OL> m_OL;
-
- void SDD1emu_decompress(uint8_t *ROM, uint32_t *mmc, uint32_t in_buf, uint16_t out_len, uint8_t *out_buf);
-
-private:
- running_machine& m_machine;
-};
+ void CM_prepareDecomp(uint8_t *ROM, uint32_t *mmc, uint32_t first_byte);
+ uint8_t CM_getBit(uint8_t *ROM, uint32_t *mmc);
+ uint8_t m_bitplanesInfo = 0;
+ uint8_t m_contextBitsInfo = 0;
+ uint8_t m_bit_number = 0;
+ uint8_t m_currBitplane = 0;
+ uint16_t m_prevBitplaneBits[8];
+ SDD1_PEM* m_PEM;
+ };
-// ======================> sns_rom_sdd1_device
+ class SDD1_OL
+ {
+ public:
+ SDD1_OL(SDD1_CM* associatedCM) : m_CM(associatedCM) { }
-class sns_rom_sdd1_device : public device_t,
- public device_sns_cart_interface
-{
-public:
- // construction/destruction
- sns_rom_sdd1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- sns_rom_sdd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ void OL_prepareDecomp(uint8_t *ROM, uint32_t *mmc, uint32_t first_byte, uint16_t out_len, uint8_t *out_buf);
+ void OL_launch(uint8_t *ROM, uint32_t *mmc);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ uint8_t m_bitplanesInfo = 0;
+ uint16_t m_length = 0;
+ uint8_t* m_buffer = nullptr;
+ SDD1_CM* m_CM;
+ };
- // reading and writing
- virtual DECLARE_READ8_MEMBER(read_l) override;
- virtual DECLARE_READ8_MEMBER(read_h) override;
- virtual DECLARE_READ8_MEMBER(read_ram) override;
- virtual DECLARE_WRITE8_MEMBER(write_ram) override;
- virtual DECLARE_READ8_MEMBER(chip_read) override;
- virtual DECLARE_WRITE8_MEMBER(chip_write) override;
+ class SDD1_emu
+ {
+ public:
+ SDD1_emu(running_machine &machine);
+
+ running_machine &machine() const { return m_machine; }
+
+ void SDD1emu_decompress(uint8_t *ROM, uint32_t *mmc, uint32_t in_buf, uint16_t out_len, uint8_t *out_buf);
+
+ std::unique_ptr<SDD1_IM> m_IM;
+ std::unique_ptr<SDD1_GCD> m_GCD;
+ std::unique_ptr<SDD1_BG> m_BG0;
+ std::unique_ptr<SDD1_BG> m_BG1;
+ std::unique_ptr<SDD1_BG> m_BG2;
+ std::unique_ptr<SDD1_BG> m_BG3;
+ std::unique_ptr<SDD1_BG> m_BG4;
+ std::unique_ptr<SDD1_BG> m_BG5;
+ std::unique_ptr<SDD1_BG> m_BG6;
+ std::unique_ptr<SDD1_BG> m_BG7;
+ std::unique_ptr<SDD1_PEM> m_PEM;
+ std::unique_ptr<SDD1_CM> m_CM;
+ std::unique_ptr<SDD1_OL> m_OL;
+
+ private:
+ running_machine& m_machine;
+ };
uint8_t read_helper(uint32_t offset);
@@ -195,6 +184,6 @@ public:
// device type definition
-extern const device_type SNS_LOROM_SDD1;
+DECLARE_DEVICE_TYPE(SNS_LOROM_SDD1, sns_rom_sdd1_device)
-#endif
+#endif // MAME_BUS_SNES_SDD1_H
diff --git a/src/devices/bus/snes/sfx.cpp b/src/devices/bus/snes/sfx.cpp
index 090408c77f4..baae513cc10 100644
--- a/src/devices/bus/snes/sfx.cpp
+++ b/src/devices/bus/snes/sfx.cpp
@@ -15,12 +15,12 @@
// sns_rom_superfx_device - constructor
//-------------------------------------------------
-const device_type SNS_LOROM_SUPERFX = device_creator<sns_rom_superfx_device>;
+DEFINE_DEVICE_TYPE(SNS_LOROM_SUPERFX, sns_rom_superfx_device, "sns_rom_superfx", "SNES Cart (LoROM) + SuperFX")
sns_rom_superfx_device::sns_rom_superfx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_SUPERFX, "SNES Cart (LoROM) + SuperFX", tag, owner, clock, "sns_rom_superfx", __FILE__),
- m_superfx(*this, "superfx")
+ : sns_rom_device(mconfig, SNS_LOROM_SUPERFX, tag, owner, clock)
+ , m_superfx(*this, "superfx")
{
}
diff --git a/src/devices/bus/snes/sfx.h b/src/devices/bus/snes/sfx.h
index 678b09b5e1c..2eead080a0b 100644
--- a/src/devices/bus/snes/sfx.h
+++ b/src/devices/bus/snes/sfx.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_SFX_H
-#define __SNS_SFX_H
+#ifndef MAME_BUS_SNES_SFX_H
+#define MAME_BUS_SNES_SFX_H
#include "snes_slot.h"
#include "rom.h"
@@ -16,13 +16,8 @@ public:
// construction/destruction
sns_rom_superfx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- required_device<superfx_device> m_superfx;
-
// additional reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
@@ -39,12 +34,18 @@ public:
virtual DECLARE_WRITE8_MEMBER(superfx_w_bank3);
virtual DECLARE_WRITE_LINE_MEMBER(snes_extern_irq_w);
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ required_device<superfx_device> m_superfx;
uint8_t sfx_ram[0x200000];
};
// device type definition
-extern const device_type SNS_LOROM_SUPERFX;
+DECLARE_DEVICE_TYPE(SNS_LOROM_SUPERFX, sns_rom_superfx_device)
-#endif
+#endif // MAME_BUS_SNES_SFX_H
diff --git a/src/devices/bus/snes/sgb.cpp b/src/devices/bus/snes/sgb.cpp
index bbf3e804a2a..fd40d7e03b5 100644
--- a/src/devices/bus/snes/sgb.cpp
+++ b/src/devices/bus/snes/sgb.cpp
@@ -19,12 +19,12 @@
// sns_rom_sgb_device - constructor
//-------------------------------------------------
-const device_type SNS_LOROM_SUPERGB = device_creator<sns_rom_sgb1_device>;
-const device_type SNS_LOROM_SUPERGB2 = device_creator<sns_rom_sgb2_device>;
+DEFINE_DEVICE_TYPE(SNS_LOROM_SUPERGB, sns_rom_sgb1_device, "sns_rom_sgb", "SNES Super Game Boy Cart")
+DEFINE_DEVICE_TYPE(SNS_LOROM_SUPERGB2, sns_rom_sgb2_device, "sns_rom_sgb2", "SNES Super Game Boy 2 Cart")
-sns_rom_sgb_device::sns_rom_sgb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : sns_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
+sns_rom_sgb_device::sns_rom_sgb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : sns_rom_device(mconfig, type, tag, owner, clock),
m_sgb_cpu(*this, "sgb_cpu"),
m_sgb_apu(*this, "sgb_apu"),
m_sgb_ppu(*this, "sgb_ppu"),
@@ -48,13 +48,13 @@ sns_rom_sgb_device::sns_rom_sgb_device(const machine_config &mconfig, device_typ
sns_rom_sgb1_device::sns_rom_sgb1_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) :
- sns_rom_sgb_device(mconfig, SNS_LOROM_SUPERGB, "SNES Super Game Boy Cart", tag, owner, clock, "sns_rom_sgb", __FILE__)
+ sns_rom_sgb_device(mconfig, SNS_LOROM_SUPERGB, tag, owner, clock)
{
}
sns_rom_sgb2_device::sns_rom_sgb2_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) :
- sns_rom_sgb_device(mconfig, SNS_LOROM_SUPERGB2, "SNES Super Game Boy 2 Cart", tag, owner, clock, "sns_rom_sgb2", __FILE__)
+ sns_rom_sgb_device(mconfig, SNS_LOROM_SUPERGB2, tag, owner, clock)
{
}
diff --git a/src/devices/bus/snes/sgb.h b/src/devices/bus/snes/sgb.h
index 69c3d1ed59d..4c0a038bbb1 100644
--- a/src/devices/bus/snes/sgb.h
+++ b/src/devices/bus/snes/sgb.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_SGB_H
-#define __SNS_SGB_H
+#ifndef MAME_BUS_SNES_SGB_H
+#define MAME_BUS_SNES_SGB_H
+
+#pragma once
#include "snes_slot.h"
#include "rom.h"
@@ -19,13 +21,6 @@
class sns_rom_sgb_device : public sns_rom_device
{
public:
- // construction/destruction
- sns_rom_sgb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
@@ -45,6 +40,13 @@ public:
virtual DECLARE_WRITE8_MEMBER(gb_timer_callback);
protected:
+ // construction/destruction
+ sns_rom_sgb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
required_device<lr35902_cpu_device> m_sgb_cpu;
required_device<gameboy_sound_device> m_sgb_apu;
required_device<sgb_ppu_device> m_sgb_ppu;
@@ -99,7 +101,7 @@ public:
};
// device type definition
-extern const device_type SNS_LOROM_SUPERGB;
-extern const device_type SNS_LOROM_SUPERGB2;
+DECLARE_DEVICE_TYPE(SNS_LOROM_SUPERGB, sns_rom_sgb1_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_SUPERGB2, sns_rom_sgb2_device)
-#endif
+#endif // MAME_BUS_SNES_SGB_H
diff --git a/src/devices/bus/snes/snes_carts.cpp b/src/devices/bus/snes/snes_carts.cpp
index 32c7ad5f875..a450b7fe4c0 100644
--- a/src/devices/bus/snes/snes_carts.cpp
+++ b/src/devices/bus/snes/snes_carts.cpp
@@ -9,6 +9,19 @@
#include "emu.h"
#include "snes_carts.h"
+#include "rom.h"
+#include "rom21.h"
+#include "bsx.h"
+#include "sa1.h"
+#include "sdd1.h"
+#include "sfx.h"
+#include "sgb.h"
+#include "spc7110.h"
+#include "sufami.h"
+#include "upd.h"
+#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
diff --git a/src/devices/bus/snes/snes_carts.h b/src/devices/bus/snes/snes_carts.h
index eb5460b3e22..9778bba903f 100644
--- a/src/devices/bus/snes/snes_carts.h
+++ b/src/devices/bus/snes/snes_carts.h
@@ -6,25 +6,13 @@
**********************************************************************/
-#pragma once
-
-#ifndef __SNES_CARTS_H__
-#define __SNES_CARTS_H__
+#ifndef MAME_BUS_SNES_SNES_CARTS_H
+#define MAME_BUS_SNES_SNES_CARTS_H
+#pragma once
-#include "rom.h"
-#include "rom21.h"
-#include "bsx.h"
-#include "sa1.h"
-#include "sdd1.h"
-#include "sfx.h"
-#include "sgb.h"
-#include "spc7110.h"
-#include "sufami.h"
-#include "upd.h"
-#include "event.h"
// supported devices
SLOT_INTERFACE_EXTERN(snes_cart);
-#endif // __SNES_CARTS_H__
+#endif // MAME_BUS_SNES_SNES_CARTS_H
diff --git a/src/devices/bus/snes/snes_slot.cpp b/src/devices/bus/snes/snes_slot.cpp
index 1c62a1f8909..ac4a9d5c9bb 100644
--- a/src/devices/bus/snes/snes_slot.cpp
+++ b/src/devices/bus/snes/snes_slot.cpp
@@ -56,9 +56,9 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SNS_CART_SLOT = device_creator<sns_cart_slot_device>;
-const device_type SNS_SUFAMI_CART_SLOT = device_creator<sns_sufami_cart_slot_device>;
-const device_type SNS_BSX_CART_SLOT = device_creator<sns_bsx_cart_slot_device>;
+DEFINE_DEVICE_TYPE(SNS_CART_SLOT, sns_cart_slot_device, "sns_cart_slot", "SNES Cartridge Slot")
+DEFINE_DEVICE_TYPE(SNS_SUFAMI_CART_SLOT, sns_sufami_cart_slot_device, "sns_sufami_cart_slot", "SNES Sufami Turbo Cartridge Slot")
+DEFINE_DEVICE_TYPE(SNS_BSX_CART_SLOT, sns_bsx_cart_slot_device, "sns_bsx_cart_slot", "SNES BS-X Cartridge Slot")
//**************************************************************************
// SNES Cartridge Interface
@@ -68,10 +68,10 @@ const device_type SNS_BSX_CART_SLOT = device_creator<sns_bsx_cart_slot_device>;
// device_sns_cart_interface - constructor
//-------------------------------------------------
-device_sns_cart_interface::device_sns_cart_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_rom(nullptr),
- m_rom_size(0)
+device_sns_cart_interface::device_sns_cart_interface(const machine_config &mconfig, device_t &device) :
+ device_slot_card_interface(mconfig, device),
+ m_rom(nullptr),
+ m_rom_size(0)
{
}
@@ -172,27 +172,28 @@ void device_sns_cart_interface::rom_map_setup(uint32_t size)
//-------------------------------------------------
// base_sns_cart_slot_device - constructor
//-------------------------------------------------
-base_sns_cart_slot_device::base_sns_cart_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_addon(ADDON_NONE),
- m_type(SNES_MODE20), m_cart(nullptr)
+base_sns_cart_slot_device::base_sns_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_addon(ADDON_NONE),
+ m_type(SNES_MODE20),
+ m_cart(nullptr)
{
}
sns_cart_slot_device::sns_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- base_sns_cart_slot_device(mconfig, SNS_CART_SLOT, "SNES Cartridge Slot", tag, owner, clock, "sns_cart_slot", __FILE__)
+ base_sns_cart_slot_device(mconfig, SNS_CART_SLOT, tag, owner, clock)
{
}
sns_sufami_cart_slot_device::sns_sufami_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- base_sns_cart_slot_device(mconfig, SNS_SUFAMI_CART_SLOT, "SNES Sufami Turbo Cartridge Slot", tag, owner, clock, "sns_sufami_cart_slot", __FILE__)
+ base_sns_cart_slot_device(mconfig, SNS_SUFAMI_CART_SLOT, tag, owner, clock)
{
}
sns_bsx_cart_slot_device::sns_bsx_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- base_sns_cart_slot_device(mconfig, SNS_BSX_CART_SLOT, "SNES BS-X Cartridge Slot", tag, owner, clock, "sns_bsx_cart_slot", __FILE__)
+ base_sns_cart_slot_device(mconfig, SNS_BSX_CART_SLOT, tag, owner, clock)
{
}
diff --git a/src/devices/bus/snes/snes_slot.h b/src/devices/bus/snes/snes_slot.h
index 16ac7e49016..20f35fdad24 100644
--- a/src/devices/bus/snes/snes_slot.h
+++ b/src/devices/bus/snes/snes_slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_SLOT_H
-#define __SNS_SLOT_H
+#ifndef MAME_BUS_SNES_SNES_SLOT_H
+#define MAME_BUS_SNES_SNES_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -102,37 +104,39 @@ class device_sns_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_sns_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_sns_cart_interface();
// reading and writing
virtual DECLARE_READ8_MEMBER(read_l) { return 0xff; } // ROM access in range [00-7f]
virtual DECLARE_READ8_MEMBER(read_h) { return 0xff; } // ROM access in range [80-ff]
virtual DECLARE_READ8_MEMBER(read_ram) { if (!m_nvram.empty()) return m_nvram[offset & (m_nvram.size()-1)]; else return 0xff; } // NVRAM access
- virtual DECLARE_WRITE8_MEMBER(write_l) {} // used by carts with subslots
- virtual DECLARE_WRITE8_MEMBER(write_h) {} // used by carts with subslots
+ virtual DECLARE_WRITE8_MEMBER(write_l) { } // used by carts with subslots
+ virtual DECLARE_WRITE8_MEMBER(write_h) { } // used by carts with subslots
virtual DECLARE_WRITE8_MEMBER(write_ram) { if (!m_nvram.empty()) m_nvram[offset & (m_nvram.size()-1)] = data; } // NVRAM access
virtual DECLARE_READ8_MEMBER(chip_read) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(chip_write) {}
- virtual void speedup_addon_bios_access() {};
+ virtual DECLARE_WRITE8_MEMBER(chip_write) { }
+ virtual void speedup_addon_bios_access() {}
void rom_alloc(uint32_t size, const char *tag);
void nvram_alloc(uint32_t size);
void rtc_ram_alloc(uint32_t size);
void addon_bios_alloc(uint32_t size);
- uint8_t* get_rom_base() { return m_rom; };
- uint8_t* get_nvram_base() { return &m_nvram[0]; };
- uint8_t* get_addon_bios_base() { return &m_bios[0]; };
- uint8_t* get_rtc_ram_base() { return &m_rtc_ram[0]; };
- uint32_t get_rom_size() { return m_rom_size; };
- uint32_t get_nvram_size() { return m_nvram.size(); };
- uint32_t get_addon_bios_size() { return m_bios.size(); };
- uint32_t get_rtc_ram_size() { return m_rtc_ram.size(); };
+ uint8_t* get_rom_base() { return m_rom; }
+ uint8_t* get_nvram_base() { return &m_nvram[0]; }
+ uint8_t* get_addon_bios_base() { return &m_bios[0]; }
+ uint8_t* get_rtc_ram_base() { return &m_rtc_ram[0]; }
+ uint32_t get_rom_size() { return m_rom_size; }
+ uint32_t get_nvram_size() { return m_nvram.size(); }
+ uint32_t get_addon_bios_size() { return m_bios.size(); }
+ uint32_t get_rtc_ram_size() { return m_rtc_ram.size(); }
void rom_map_setup(uint32_t size);
void save_nvram() { device().save_item(NAME(m_nvram)); }
void save_rtc_ram() { device().save_item(NAME(m_rtc_ram)); }
+protected:
+ device_sns_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -152,7 +156,6 @@ class base_sns_cart_slot_device : public device_t,
{
public:
// construction/destruction
- base_sns_cart_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual ~base_sns_cart_slot_device();
// device-level overrides
@@ -208,11 +211,14 @@ public:
int m_type;
device_sns_cart_interface* m_cart;
+
+protected:
+ base_sns_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
// ======================> sns_cart_slot_device
-class sns_cart_slot_device : public base_sns_cart_slot_device
+class sns_cart_slot_device : public base_sns_cart_slot_device
{
public:
// construction/destruction
@@ -223,7 +229,7 @@ public:
// ======================> sns_sufami_cart_slot_device
-class sns_sufami_cart_slot_device : public base_sns_cart_slot_device
+class sns_sufami_cart_slot_device : public base_sns_cart_slot_device
{
public:
// construction/destruction
@@ -247,9 +253,9 @@ public:
// device type definition
-extern const device_type SNS_CART_SLOT;
-extern const device_type SNS_SUFAMI_CART_SLOT;
-extern const device_type SNS_BSX_CART_SLOT;
+DECLARE_DEVICE_TYPE(SNS_CART_SLOT, sns_cart_slot_device)
+DECLARE_DEVICE_TYPE(SNS_SUFAMI_CART_SLOT, sns_sufami_cart_slot_device)
+DECLARE_DEVICE_TYPE(SNS_BSX_CART_SLOT, sns_bsx_cart_slot_device)
/***************************************************************************
@@ -272,4 +278,4 @@ extern const device_type SNS_BSX_CART_SLOT;
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+#endif // MAME_BUS_SNES_SNES_SLOT_H
diff --git a/src/devices/bus/snes/spc7110.cpp b/src/devices/bus/snes/spc7110.cpp
index 61cc7ed99c7..a88c06e9250 100644
--- a/src/devices/bus/snes/spc7110.cpp
+++ b/src/devices/bus/snes/spc7110.cpp
@@ -16,34 +16,52 @@
#include "spc7110.h"
+namespace {
+
+enum RTC_State
+{
+ RTCS_Inactive,
+ RTCS_ModeSelect,
+ RTCS_IndexSelect,
+ RTCS_Write
+};
+
+enum RTC_Mode
+{
+ RTCM_Linear = 0x03,
+ RTCM_Indexed = 0x0c
+};
+
+} // anonymous namespace
+
//-------------------------------------------------
// constructor
//-------------------------------------------------
-const device_type SNS_HIROM_SPC7110 = device_creator<sns_rom_spc7110_device>;
-const device_type SNS_HIROM_SPC7110_RTC = device_creator<sns_rom_spc7110rtc_device>;
+DEFINE_DEVICE_TYPE(SNS_HIROM_SPC7110, sns_rom_spc7110_device, "sns_rom_spc7110", "SNES Cart + SPC7110")
+DEFINE_DEVICE_TYPE(SNS_HIROM_SPC7110_RTC, sns_rom_spc7110rtc_device, "sns_rom_spc7110rtc", "SNES Cart + SPC7110 + RTC")
-sns_rom_spc7110_device::sns_rom_spc7110_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : sns_rom21_device(mconfig, type, name, tag, owner, clock, shortname, source), m_r4801(0), m_r4802(0), m_r4803(0), m_r4804(0), m_r4805(0), m_r4806(0), m_r4807(0),
- m_r4808(0), m_r4809(0), m_r480a(0), m_r480b(0), m_r480c(0), m_decomp(nullptr), m_r4811(0), m_r4812(0), m_r4813(0), m_r4814(0), m_r4815(0), m_r4816(0), m_r4817(0), m_r4818(0),
- m_r481x(0), m_r4814_latch(0), m_r4815_latch(0), m_r4820(0), m_r4821(0), m_r4822(0), m_r4823(0), m_r4824(0), m_r4825(0), m_r4826(0), m_r4827(0), m_r4828(0), m_r4829(0), m_r482a(0),
- m_r482b(0), m_r482c(0), m_r482d(0), m_r482e(0), m_r482f(0), m_r4830(0), m_r4831(0), m_r4832(0), m_r4833(0), m_r4834(0), m_dx_offset(0), m_ex_offset(0), m_fx_offset(0), m_r4840(0),
- m_r4841(0), m_r4842(0), m_rtc_state(0), m_rtc_mode(0), m_rtc_index(0), m_rtc_offset(0)
- {
+sns_rom_spc7110_device::sns_rom_spc7110_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : sns_rom21_device(mconfig, type, tag, owner, clock)
+ , m_r4801(0), m_r4802(0), m_r4803(0), m_r4804(0), m_r4805(0), m_r4806(0), m_r4807(0), m_r4808(0), m_r4809(0), m_r480a(0), m_r480b(0), m_r480c(0)
+ , m_decomp(nullptr)
+ , m_r4811(0), m_r4812(0), m_r4813(0), m_r4814(0), m_r4815(0), m_r4816(0), m_r4817(0), m_r4818(0), m_r481x(0), m_r4814_latch(0), m_r4815_latch(0)
+ , m_r4820(0), m_r4821(0), m_r4822(0), m_r4823(0), m_r4824(0), m_r4825(0), m_r4826(0), m_r4827(0), m_r4828(0), m_r4829(0), m_r482a(0), m_r482b(0), m_r482c(0), m_r482d(0), m_r482e(0), m_r482f(0)
+ , m_r4830(0), m_r4831(0), m_r4832(0), m_r4833(0), m_r4834(0)
+ , m_dx_offset(0), m_ex_offset(0), m_fx_offset(0)
+ , m_r4840(0), m_r4841(0), m_r4842(0)
+ , m_rtc_state(0), m_rtc_mode(0), m_rtc_index(0), m_rtc_offset(0)
+{
}
sns_rom_spc7110_device::sns_rom_spc7110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom21_device(mconfig, SNS_HIROM_SPC7110, "SNES Cart + SPC-7110", tag, owner, clock, "sns_rom_spc7110", __FILE__), m_r4801(0), m_r4802(0), m_r4803(0), m_r4804(0), m_r4805(0), m_r4806(0), m_r4807(0),
- m_r4808(0), m_r4809(0), m_r480a(0), m_r480b(0), m_r480c(0), m_decomp(nullptr), m_r4811(0), m_r4812(0), m_r4813(0), m_r4814(0), m_r4815(0), m_r4816(0), m_r4817(0), m_r4818(0),
- m_r481x(0), m_r4814_latch(0), m_r4815_latch(0), m_r4820(0), m_r4821(0), m_r4822(0), m_r4823(0), m_r4824(0), m_r4825(0), m_r4826(0), m_r4827(0), m_r4828(0), m_r4829(0), m_r482a(0),
- m_r482b(0), m_r482c(0), m_r482d(0), m_r482e(0), m_r482f(0), m_r4830(0), m_r4831(0), m_r4832(0), m_r4833(0), m_r4834(0), m_dx_offset(0), m_ex_offset(0), m_fx_offset(0), m_r4840(0),
- m_r4841(0), m_r4842(0), m_rtc_state(0), m_rtc_mode(0), m_rtc_index(0), m_rtc_offset(0)
+ : sns_rom_spc7110_device(mconfig, SNS_HIROM_SPC7110, tag, owner, clock)
{
}
sns_rom_spc7110rtc_device::sns_rom_spc7110rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_spc7110_device(mconfig, SNS_HIROM_SPC7110_RTC, "SNES Cart + SPC-7110 + RTC", tag, owner, clock, "sns_rom_spc7110rtc", __FILE__)
+ : sns_rom_spc7110_device(mconfig, SNS_HIROM_SPC7110_RTC, tag, owner, clock)
{
}
@@ -297,30 +315,21 @@ static const uint8_t spc7110_mode2_context_table[32][2] =
{ 31, 31 },
};
-SPC7110_Decomp::SPC7110_Decomp(running_machine &machine)
- : m_machine(machine)
+sns_rom_spc7110_device::SPC7110_Decomp::SPC7110_Decomp(running_machine &machine) : m_machine(machine)
{
m_decomp_buffer = std::make_unique<uint8_t[]>(SPC7110_DECOMP_BUFFER_SIZE);
reset();
- for (int i = 0; i < 256; i++)
+ for (uint32_t i = 0; i < 256; i++)
{
-#define map(x, y) (((i >> x) & 1) << y)
//2x8-bit
- m_morton16[1][i] = map(7, 15) + map(6, 7) + map(5, 14) + map(4, 6)
- + map(3, 13) + map(2, 5) + map(1, 12) + map(0, 4);
- m_morton16[0][i] = map(7, 11) + map(6, 3) + map(5, 10) + map(4, 2)
- + map(3, 9) + map(2, 1) + map(1, 8) + map(0, 0);
+ m_morton16[0][i] = (bitswap<4>(i, 7, 5, 3, 1) << 8) | (bitswap<4>(i, 6, 4, 2, 0) << 0);
+ m_morton16[1][i] = m_morton16[0][i] << 4;
//4x8-bit
- m_morton32[3][i] = map(7, 31) + map(6, 23) + map(5, 15) + map(4, 7)
- + map(3, 30) + map(2, 22) + map(1, 14) + map(0, 6);
- m_morton32[2][i] = map(7, 29) + map(6, 21) + map(5, 13) + map(4, 5)
- + map(3, 28) + map(2, 20) + map(1, 12) + map(0, 4);
- m_morton32[1][i] = map(7, 27) + map(6, 19) + map(5, 11) + map(4, 3)
- + map(3, 26) + map(2, 18) + map(1, 10) + map(0, 2);
- m_morton32[0][i] = map(7, 25) + map(6, 17) + map(5, 9) + map(4, 1)
- + map(3, 24) + map(2, 16) + map(1, 8) + map(0, 0);
-#undef map
+ m_morton32[0][i] = (bitswap<2>(i, 7, 3) << 24) | (bitswap<2>(i, 6, 2) << 16) | (bitswap<2>(i, 5, 1) << 8) | (bitswap<2>(i, 4, 0) << 0);
+ m_morton32[1][i] = m_morton32[0][i] << 2;
+ m_morton32[2][i] = m_morton32[0][i] << 4;
+ m_morton32[3][i] = m_morton32[0][i] << 6;
}
m_machine.save().save_item(m_decomp_mode, "SNES_SPC7110/m_decomp_mode");
@@ -368,7 +377,7 @@ SPC7110_Decomp::SPC7110_Decomp(running_machine &machine)
m_machine.save().save_item(m_m2_in_count, "SNES_SPC7110/m_m2_in_count");
}
-void SPC7110_Decomp::reset()
+void sns_rom_spc7110_device::SPC7110_Decomp::reset()
{
//mode 3 is invalid; this is treated as a special case to always return 0x00
//set to mode 3 so that reading decomp port before starting first decomp will return 0x00
@@ -379,7 +388,7 @@ void SPC7110_Decomp::reset()
m_decomp_buffer_length = 0;
}
-void SPC7110_Decomp::init(running_machine &machine, uint8_t *ROM, uint32_t len, uint32_t mode, uint32_t offset, uint32_t index)
+void sns_rom_spc7110_device::SPC7110_Decomp::init(running_machine &machine, uint8_t *ROM, uint32_t len, uint32_t mode, uint32_t offset, uint32_t index)
{
m_decomp_mode = mode;
m_decomp_offset = offset;
@@ -409,7 +418,7 @@ void SPC7110_Decomp::init(running_machine &machine, uint8_t *ROM, uint32_t len,
}
}
-uint8_t SPC7110_Decomp::read(uint8_t *ROM, uint32_t len)
+uint8_t sns_rom_spc7110_device::SPC7110_Decomp::read(uint8_t *ROM, uint32_t len)
{
uint8_t data;
@@ -441,14 +450,14 @@ uint8_t SPC7110_Decomp::read(uint8_t *ROM, uint32_t len)
return data;
}
-void SPC7110_Decomp::write(uint8_t data)
+void sns_rom_spc7110_device::SPC7110_Decomp::write(uint8_t data)
{
m_decomp_buffer[m_decomp_buffer_wroffset++] = data;
m_decomp_buffer_wroffset &= SPC7110_DECOMP_BUFFER_SIZE - 1;
m_decomp_buffer_length++;
}
-uint8_t SPC7110_Decomp::dataread(uint8_t *ROM, uint32_t len)
+uint8_t sns_rom_spc7110_device::SPC7110_Decomp::dataread(uint8_t *ROM, uint32_t len)
{
uint32_t size = len - 0x100000;
while (m_decomp_offset >= size)
@@ -458,7 +467,7 @@ uint8_t SPC7110_Decomp::dataread(uint8_t *ROM, uint32_t len)
return ROM[0x100000 + m_decomp_offset++];
}
-void SPC7110_Decomp::mode0(uint8_t init, uint8_t *ROM, uint32_t len)
+void sns_rom_spc7110_device::SPC7110_Decomp::mode0(uint8_t init, uint8_t *ROM, uint32_t len)
{
if (init == 1)
{
@@ -543,7 +552,7 @@ void SPC7110_Decomp::mode0(uint8_t init, uint8_t *ROM, uint32_t len)
}
}
-void SPC7110_Decomp::mode1(uint8_t init, uint8_t *ROM, uint32_t len)
+void sns_rom_spc7110_device::SPC7110_Decomp::mode1(uint8_t init, uint8_t *ROM, uint32_t len)
{
if (init == 1)
{
@@ -704,7 +713,7 @@ void SPC7110_Decomp::mode1(uint8_t init, uint8_t *ROM, uint32_t len)
}
}
-void SPC7110_Decomp::mode2(uint8_t init, uint8_t *ROM, uint32_t len)
+void sns_rom_spc7110_device::SPC7110_Decomp::mode2(uint8_t init, uint8_t *ROM, uint32_t len)
{
if (init == 1)
{
@@ -882,27 +891,27 @@ void SPC7110_Decomp::mode2(uint8_t init, uint8_t *ROM, uint32_t len)
}
}
-uint8_t SPC7110_Decomp::probability(uint32_t n)
+uint8_t sns_rom_spc7110_device::SPC7110_Decomp::probability(uint32_t n)
{
return spc7110_evolution_table[m_context[n].index][0];
}
-uint8_t SPC7110_Decomp::next_lps(uint32_t n)
+uint8_t sns_rom_spc7110_device::SPC7110_Decomp::next_lps(uint32_t n)
{
return spc7110_evolution_table[m_context[n].index][1];
}
-uint8_t SPC7110_Decomp::next_mps(uint32_t n)
+uint8_t sns_rom_spc7110_device::SPC7110_Decomp::next_mps(uint32_t n)
{
return spc7110_evolution_table[m_context[n].index][2];
}
-uint8_t SPC7110_Decomp::toggle_invert(uint32_t n)
+uint8_t sns_rom_spc7110_device::SPC7110_Decomp::toggle_invert(uint32_t n)
{
return spc7110_evolution_table[m_context[n].index][3];
}
-uint32_t SPC7110_Decomp::morton_2x8(uint32_t data)
+uint32_t sns_rom_spc7110_device::SPC7110_Decomp::morton_2x8(uint32_t data)
{
//reverse morton lookup: de-interleave two 8-bit values
//15, 13, 11, 9, 7, 5, 3, 1 -> 15- 8
@@ -910,7 +919,7 @@ uint32_t SPC7110_Decomp::morton_2x8(uint32_t data)
return m_morton16[0][(data >> 0) & 255] + m_morton16[1][(data >> 8) & 255];
}
-uint32_t SPC7110_Decomp::morton_4x8(uint32_t data)
+uint32_t sns_rom_spc7110_device::SPC7110_Decomp::morton_4x8(uint32_t data)
{
//reverse morton lookup: de-interleave four 8-bit values
//31, 27, 23, 19, 15, 11, 7, 3 -> 31-24
diff --git a/src/devices/bus/snes/spc7110.h b/src/devices/bus/snes/spc7110.h
index 90274f551a9..249944c8ae7 100644
--- a/src/devices/bus/snes/spc7110.h
+++ b/src/devices/bus/snes/spc7110.h
@@ -1,100 +1,22 @@
// license:GPL-2.0+
// copyright-holders:Fabio Priuli, byuu
-#ifndef __SNS_SPC7110_H
-#define __SNS_SPC7110_H
+#ifndef MAME_BUS_SNES_SPC7110_H
+#define MAME_BUS_SNES_SPC7110_H
+
+#pragma once
#include "snes_slot.h"
#include "rom21.h"
-enum RTC_State
-{
- RTCS_Inactive,
- RTCS_ModeSelect,
- RTCS_IndexSelect,
- RTCS_Write
-};
-
-enum RTC_Mode
-{
- RTCM_Linear = 0x03,
- RTCM_Indexed = 0x0c
-};
-
-class SPC7110_Decomp
-{
-public:
- SPC7110_Decomp(running_machine &machine);
-
- running_machine &machine() const { return m_machine; }
-
- void init(running_machine &machine, uint8_t *ROM, uint32_t len, uint32_t mode, uint32_t offset, uint32_t index);
- void reset();
-
- uint8_t read(uint8_t *ROM, uint32_t len);
- void write(uint8_t data);
- void mode0(uint8_t init, uint8_t *ROM, uint32_t len);
- void mode1(uint8_t init, uint8_t *ROM, uint32_t len);
- void mode2(uint8_t init, uint8_t *ROM, uint32_t len);
-
-private:
-
- uint8_t dataread(uint8_t *ROM, uint32_t len);
- uint8_t probability(uint32_t n);
- uint8_t next_lps(uint32_t n);
- uint8_t next_mps(uint32_t n);
- uint8_t toggle_invert(uint32_t n);
- uint32_t morton_2x8(uint32_t data);
- uint32_t morton_4x8(uint32_t data);
-
- uint32_t m_decomp_mode;
- uint32_t m_decomp_offset;
-
- std::unique_ptr<uint8_t[]> m_decomp_buffer;
- uint32_t m_decomp_buffer_rdoffset;
- uint32_t m_decomp_buffer_wroffset;
- uint32_t m_decomp_buffer_length;
-
- struct ContextState
- {
- uint8_t index;
- uint8_t invert;
- } m_context[32];
-
- uint32_t m_morton16[2][256];
- uint32_t m_morton32[4][256];
-
- // mode 0 vars
- uint8_t m_m0_val, m_m0_in, m_m0_span;
- int32_t m_m0_out, m_m0_inverts, m_m0_lps, m_m0_in_count;
-
- // mode 1 vars
- int32_t m_m1_pixelorder[4], m_m1_realorder[4];
- uint8_t m_m1_in, m_m1_val, m_m1_span;
- int32_t m_m1_out, m_m1_inverts, m_m1_lps, m_m1_in_count;
-
- // mode 2 vars
- int32_t m_m2_pixelorder[16], m_m2_realorder[16];
- uint8_t m_m2_bitplanebuffer[16], m_m2_buffer_index;
- uint8_t m_m2_in, m_m2_val, m_m2_span;
- int32_t m_m2_out0, m_m2_out1, m_m2_inverts, m_m2_lps, m_m2_in_count;
-
- running_machine& m_machine;
- //uint32_t m_rom_size;
-};
-
// ======================> sns_rom_spc7110_device
class sns_rom_spc7110_device : public sns_rom21_device
{
public:
// construction/destruction
- sns_rom_spc7110_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
sns_rom_spc7110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
virtual DECLARE_READ8_MEMBER(read_h) override;
@@ -104,6 +26,74 @@ public:
virtual DECLARE_READ8_MEMBER(chip_read) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override;
+protected:
+ sns_rom_spc7110_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
+ class SPC7110_Decomp
+ {
+ public:
+ SPC7110_Decomp(running_machine &machine);
+
+ running_machine &machine() const { return m_machine; }
+
+ void init(running_machine &machine, uint8_t *ROM, uint32_t len, uint32_t mode, uint32_t offset, uint32_t index);
+ void reset();
+
+ uint8_t read(uint8_t *ROM, uint32_t len);
+ void write(uint8_t data);
+ void mode0(uint8_t init, uint8_t *ROM, uint32_t len);
+ void mode1(uint8_t init, uint8_t *ROM, uint32_t len);
+ void mode2(uint8_t init, uint8_t *ROM, uint32_t len);
+
+ private:
+
+ uint8_t dataread(uint8_t *ROM, uint32_t len);
+ uint8_t probability(uint32_t n);
+ uint8_t next_lps(uint32_t n);
+ uint8_t next_mps(uint32_t n);
+ uint8_t toggle_invert(uint32_t n);
+ uint32_t morton_2x8(uint32_t data);
+ uint32_t morton_4x8(uint32_t data);
+
+ uint32_t m_decomp_mode;
+ uint32_t m_decomp_offset;
+
+ std::unique_ptr<uint8_t[]> m_decomp_buffer;
+ uint32_t m_decomp_buffer_rdoffset;
+ uint32_t m_decomp_buffer_wroffset;
+ uint32_t m_decomp_buffer_length;
+
+ struct ContextState
+ {
+ uint8_t index;
+ uint8_t invert;
+ } m_context[32];
+
+ uint32_t m_morton16[2][256];
+ uint32_t m_morton32[4][256];
+
+ // mode 0 vars
+ uint8_t m_m0_val, m_m0_in, m_m0_span;
+ int32_t m_m0_out, m_m0_inverts, m_m0_lps, m_m0_in_count;
+
+ // mode 1 vars
+ int32_t m_m1_pixelorder[4], m_m1_realorder[4];
+ uint8_t m_m1_in, m_m1_val, m_m1_span;
+ int32_t m_m1_out, m_m1_inverts, m_m1_lps, m_m1_in_count;
+
+ // mode 2 vars
+ int32_t m_m2_pixelorder[16], m_m2_realorder[16];
+ uint8_t m_m2_bitplanebuffer[16], m_m2_buffer_index;
+ uint8_t m_m2_in, m_m2_val, m_m2_span;
+ int32_t m_m2_out0, m_m2_out1, m_m2_inverts, m_m2_lps, m_m2_in_count;
+
+ running_machine& m_machine;
+ //uint32_t m_rom_size;
+ };
+
void spc7110_start();
uint32_t spc7110_datarom_addr(uint32_t addr, uint32_t len);
uint32_t spc7110_data_pointer();
@@ -206,9 +196,6 @@ public:
// construction/destruction
sns_rom_spc7110rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
-
// reading and writing
// we just use the spc7110 ones for the moment, pending the split of regs 0x4840-0x4842 (RTC) from the base add-on
@@ -217,10 +204,14 @@ public:
// virtual DECLARE_READ8_MEMBER(chip_read);
// virtual DECLARE_WRITE8_MEMBER(chip_write);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
// device type definition
-extern const device_type SNS_HIROM_SPC7110;
-extern const device_type SNS_HIROM_SPC7110_RTC;
+DECLARE_DEVICE_TYPE(SNS_HIROM_SPC7110, sns_rom_spc7110_device)
+DECLARE_DEVICE_TYPE(SNS_HIROM_SPC7110_RTC, sns_rom_spc7110rtc_device)
-#endif
+#endif // MAME_BUS_SNES_SPC7110_H
diff --git a/src/devices/bus/snes/sufami.cpp b/src/devices/bus/snes/sufami.cpp
index 782e8669f13..4e4180cc758 100644
--- a/src/devices/bus/snes/sufami.cpp
+++ b/src/devices/bus/snes/sufami.cpp
@@ -20,19 +20,19 @@
// sns_rom_sufami_device - constructor
//-------------------------------------------------
-const device_type SNS_LOROM_SUFAMI = device_creator<sns_rom_sufami_device>;
-const device_type SNS_STROM = device_creator<sns_rom_strom_device>;
+DEFINE_DEVICE_TYPE(SNS_LOROM_SUFAMI, sns_rom_sufami_device, "sns_rom_sufami", "SNES Sufami Turbo Cart")
+DEFINE_DEVICE_TYPE(SNS_STROM, sns_rom_strom_device, "sns_strom", "SNES Sufami Turbo Minicart")
sns_rom_sufami_device::sns_rom_sufami_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_SUFAMI, "SNES Sufami Turbo Cart", tag, owner, clock, "sns_rom_sufami", __FILE__),
- m_slot1(*this, "st_slot1"),
- m_slot2(*this, "st_slot2")
+ : sns_rom_device(mconfig, SNS_LOROM_SUFAMI, tag, owner, clock)
+ , m_slot1(*this, "st_slot1")
+ , m_slot2(*this, "st_slot2")
{
}
sns_rom_strom_device::sns_rom_strom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_STROM, "SNES Sufami Turbo Minicart", tag, owner, clock, "sns_strom", __FILE__)
+ : sns_rom_device(mconfig, SNS_STROM, tag, owner, clock)
{
}
diff --git a/src/devices/bus/snes/sufami.h b/src/devices/bus/snes/sufami.h
index b00c8c8ed07..b9712e6cf43 100644
--- a/src/devices/bus/snes/sufami.h
+++ b/src/devices/bus/snes/sufami.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_SUFAMI_H
-#define __SNS_SUFAMI_H
+#ifndef MAME_BUS_SNES_SUFAMI_H
+#define MAME_BUS_SNES_SUFAMI_H
+
+#pragma once
#include "snes_slot.h"
#include "rom.h"
@@ -15,8 +17,6 @@ public:
// construction/destruction
sns_rom_sufami_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
// additional reading and writing
@@ -25,6 +25,10 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_l) override;
virtual DECLARE_WRITE8_MEMBER(write_h) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
required_device<sns_sufami_cart_slot_device> m_slot1;
required_device<sns_sufami_cart_slot_device> m_slot2;
@@ -38,16 +42,17 @@ public:
// construction/destruction
sns_rom_strom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
-
// additional reading and writing
virtual DECLARE_READ8_MEMBER(read_l) override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
};
// device type definition
-extern const device_type SNS_LOROM_SUFAMI;
-extern const device_type SNS_STROM;
+DECLARE_DEVICE_TYPE(SNS_LOROM_SUFAMI, sns_rom_sufami_device)
+DECLARE_DEVICE_TYPE(SNS_STROM, sns_rom_strom_device)
-#endif
+#endif // MAME_BUS_SNES_SUFAMI_H
diff --git a/src/devices/bus/snes/upd.cpp b/src/devices/bus/snes/upd.cpp
index 86dd2ef49f4..ba7290da5a7 100644
--- a/src/devices/bus/snes/upd.cpp
+++ b/src/devices/bus/snes/upd.cpp
@@ -26,49 +26,44 @@ inline uint16_t get_data(uint8_t *CPU, uint32_t addr)
// constructor
//-------------------------------------------------
-const device_type SNS_LOROM_NECDSP = device_creator<sns_rom20_necdsp_device>;
-const device_type SNS_HIROM_NECDSP = device_creator<sns_rom21_necdsp_device>;
-const device_type SNS_LOROM_SETA10 = device_creator<sns_rom_seta10dsp_device>;
-const device_type SNS_LOROM_SETA11 = device_creator<sns_rom_seta11dsp_device>;
+DEFINE_DEVICE_TYPE(SNS_LOROM_NECDSP, sns_rom20_necdsp_device, "sns_rom_necdsp", "SNES Cart (LoROM) + NEC DSP")
+DEFINE_DEVICE_TYPE(SNS_HIROM_NECDSP, sns_rom21_necdsp_device, "sns_rom21_necdsp", "SNES Cart (HiROM) + NEC DSP")
+DEFINE_DEVICE_TYPE(SNS_LOROM_SETA10, sns_rom_seta10dsp_device, "sns_rom_seta10", "SNES Cart (LoROM) + Seta ST010 DSP")
+DEFINE_DEVICE_TYPE(SNS_LOROM_SETA11, sns_rom_seta11dsp_device, "sns_rom_seta11", "SNES Cart (LoROM) + Seta ST011 DSP")
-sns_rom20_necdsp_device::sns_rom20_necdsp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : sns_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_upd7725(*this, "dsp")
+sns_rom20_necdsp_device::sns_rom20_necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : sns_rom_device(mconfig, type, tag, owner, clock), m_upd7725(*this, "dsp")
{
}
sns_rom20_necdsp_device::sns_rom20_necdsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_device(mconfig, SNS_LOROM_NECDSP, "SNES Cart (LoROM) + NEC DSP", tag, owner, clock, "sns_rom_necdsp", __FILE__),
- m_upd7725(*this, "dsp")
+ : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP, tag, owner, clock)
{
}
-sns_rom21_necdsp_device::sns_rom21_necdsp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : sns_rom21_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_upd7725(*this, "dsp")
+sns_rom21_necdsp_device::sns_rom21_necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : sns_rom21_device(mconfig, type, tag, owner, clock), m_upd7725(*this, "dsp")
{
}
sns_rom21_necdsp_device::sns_rom21_necdsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom21_device(mconfig, SNS_HIROM_NECDSP, "SNES Cart (HiROM) + NEC DSP", tag, owner, clock, "sns_rom21_necdsp", __FILE__),
- m_upd7725(*this, "dsp")
+ : sns_rom21_necdsp_device(mconfig, SNS_HIROM_NECDSP, tag, owner, clock)
{
}
-sns_rom_setadsp_device::sns_rom_setadsp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : sns_rom_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_upd96050(*this, "dsp")
+sns_rom_setadsp_device::sns_rom_setadsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : sns_rom_device(mconfig, type, tag, owner, clock), m_upd96050(*this, "dsp")
{
}
sns_rom_seta10dsp_device::sns_rom_seta10dsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_setadsp_device(mconfig, SNS_LOROM_SETA10, "SNES Cart (LoROM) + Seta ST010 DSP", tag, owner, clock, "sns_rom_seta10", __FILE__)
+ : sns_rom_setadsp_device(mconfig, SNS_LOROM_SETA10, tag, owner, clock)
{
}
sns_rom_seta11dsp_device::sns_rom_seta11dsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_setadsp_device(mconfig, SNS_LOROM_SETA11, "SNES Cart (LoROM) + Seta ST011 DSP", tag, owner, clock, "sns_rom_seta11", __FILE__)
+ : sns_rom_setadsp_device(mconfig, SNS_LOROM_SETA11, tag, owner, clock)
{
}
@@ -398,53 +393,53 @@ void sns_rom_setadsp_device::speedup_addon_bios_access()
// Legacy versions including DSP dump roms, in order to support faulty dumps missing DSP data...
-const device_type SNS_LOROM_NECDSP1_LEG = device_creator<sns_rom20_necdsp1_legacy_device>;
-const device_type SNS_LOROM_NECDSP1B_LEG = device_creator<sns_rom20_necdsp1b_legacy_device>;
-const device_type SNS_LOROM_NECDSP2_LEG = device_creator<sns_rom20_necdsp2_legacy_device>;
-const device_type SNS_LOROM_NECDSP3_LEG = device_creator<sns_rom20_necdsp3_legacy_device>;
-const device_type SNS_LOROM_NECDSP4_LEG = device_creator<sns_rom20_necdsp4_legacy_device>;
-const device_type SNS_HIROM_NECDSP1_LEG = device_creator<sns_rom21_necdsp1_legacy_device>;
-const device_type SNS_LOROM_SETA10_LEG = device_creator<sns_rom_seta10dsp_legacy_device>;
-const device_type SNS_LOROM_SETA11_LEG = device_creator<sns_rom_seta11dsp_legacy_device>;
+DEFINE_DEVICE_TYPE(SNS_LOROM_NECDSP1_LEG, sns_rom20_necdsp1_legacy_device, "sns_dsp1leg", "SNES Cart (LoROM) + NEC DSP1 Legacy")
+DEFINE_DEVICE_TYPE(SNS_LOROM_NECDSP1B_LEG, sns_rom20_necdsp1b_legacy_device, "sns_dsp1bleg", "SNES Cart (LoROM) + NEC DSP1B Legacy")
+DEFINE_DEVICE_TYPE(SNS_LOROM_NECDSP2_LEG, sns_rom20_necdsp2_legacy_device, "sns_dsp2leg", "SNES Cart (LoROM) + NEC DSP2 Legacy")
+DEFINE_DEVICE_TYPE(SNS_LOROM_NECDSP3_LEG, sns_rom20_necdsp3_legacy_device, "sns_dsp3leg", "SNES Cart (LoROM) + NEC DSP3 Legacy")
+DEFINE_DEVICE_TYPE(SNS_LOROM_NECDSP4_LEG, sns_rom20_necdsp4_legacy_device, "sns_dsp4leg", "SNES Cart (LoROM) + NEC DSP4 Legacy")
+DEFINE_DEVICE_TYPE(SNS_HIROM_NECDSP1_LEG, sns_rom21_necdsp1_legacy_device, "sns_dsp1leg_hi", "SNES Cart (HiROM) + NEC DSP1 Legacy")
+DEFINE_DEVICE_TYPE(SNS_LOROM_SETA10_LEG, sns_rom_seta10dsp_legacy_device, "sns_seta10leg", "SNES Cart (LoROM) + SETA ST010 DSP Legacy")
+DEFINE_DEVICE_TYPE(SNS_LOROM_SETA11_LEG, sns_rom_seta11dsp_legacy_device, "sns_seta11leg", "SNES Cart (LoROM) + SETA ST011 DSP Legacy")
sns_rom20_necdsp1_legacy_device::sns_rom20_necdsp1_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP1_LEG, "SNES Cart (LoROM) + NEC DSP1 Legacy", tag, owner, clock, "dsp1leg", __FILE__)
+ : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP1_LEG, tag, owner, clock)
{
}
sns_rom20_necdsp1b_legacy_device::sns_rom20_necdsp1b_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP1B_LEG, "SNES Cart (LoROM) + NEC DSP1B Legacy", tag, owner, clock, "dsp1bleg", __FILE__)
+ : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP1B_LEG, tag, owner, clock)
{
}
sns_rom20_necdsp2_legacy_device::sns_rom20_necdsp2_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP2_LEG, "SNES Cart (LoROM) + NEC DSP2 Legacy", tag, owner, clock, "dsp2leg", __FILE__)
+ : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP2_LEG, tag, owner, clock)
{
}
sns_rom20_necdsp3_legacy_device::sns_rom20_necdsp3_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP3_LEG, "SNES Cart (LoROM) + NEC DSP3 Legacy", tag, owner, clock, "dsp3leg", __FILE__)
+ : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP3_LEG, tag, owner, clock)
{
}
sns_rom20_necdsp4_legacy_device::sns_rom20_necdsp4_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP4_LEG, "SNES Cart (LoROM) + NEC DSP4 Legacy", tag, owner, clock, "dsp4leg", __FILE__)
+ : sns_rom20_necdsp_device(mconfig, SNS_LOROM_NECDSP4_LEG, tag, owner, clock)
{
}
sns_rom21_necdsp1_legacy_device::sns_rom21_necdsp1_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom21_necdsp_device(mconfig, SNS_HIROM_NECDSP1_LEG, "SNES Cart (HiROM) + NEC DSP1 Legacy", tag, owner, clock, "dsp1leg_hi", __FILE__)
+ : sns_rom21_necdsp_device(mconfig, SNS_HIROM_NECDSP1_LEG, tag, owner, clock)
{
}
sns_rom_seta10dsp_legacy_device::sns_rom_seta10dsp_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_setadsp_device(mconfig, SNS_LOROM_SETA10_LEG, "SNES Cart (LoROM) + Seta ST010 DSP Legacy", tag, owner, clock, "seta10leg", __FILE__)
+ : sns_rom_setadsp_device(mconfig, SNS_LOROM_SETA10_LEG, tag, owner, clock)
{
}
sns_rom_seta11dsp_legacy_device::sns_rom_seta11dsp_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sns_rom_setadsp_device(mconfig, SNS_LOROM_SETA11_LEG, "SNES Cart (LoROM) + Seta ST011 DSP Legacy", tag, owner, clock, "seta11leg", __FILE__)
+ : sns_rom_setadsp_device(mconfig, SNS_LOROM_SETA11_LEG, tag, owner, clock)
{
}
diff --git a/src/devices/bus/snes/upd.h b/src/devices/bus/snes/upd.h
index fa0d4dcb2ff..161441d8bdd 100644
--- a/src/devices/bus/snes/upd.h
+++ b/src/devices/bus/snes/upd.h
@@ -1,29 +1,27 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SNS_UPD_H
-#define __SNS_UPD_H
+#ifndef MAME_BUS_SNES_UPD_H
+#define MAME_BUS_SNES_UPD_H
+
+#pragma once
#include "snes_slot.h"
#include "rom.h"
#include "rom21.h"
#include "cpu/upd7725/upd7725.h"
-// ======================> sns_rom_necdsp_device
+// ======================> sns_rom20_necdsp_device
class sns_rom20_necdsp_device : public sns_rom_device
{
public:
// construction/destruction
- sns_rom20_necdsp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
sns_rom20_necdsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void speedup_addon_bios_access() override;
- required_device<upd7725_device> m_upd7725;
-
// additional reading and writing
virtual DECLARE_READ8_MEMBER(chip_read) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override;
@@ -31,6 +29,12 @@ public:
virtual DECLARE_READ32_MEMBER(necdsp_prg_r);
virtual DECLARE_READ16_MEMBER(necdsp_data_r);
+protected:
+ sns_rom20_necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ required_device<upd7725_device> m_upd7725;
+
std::vector<uint32_t> m_dsp_prg;
std::vector<uint16_t> m_dsp_data;
};
@@ -41,16 +45,11 @@ class sns_rom21_necdsp_device : public sns_rom21_device
{
public:
// construction/destruction
- sns_rom21_necdsp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
sns_rom21_necdsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void speedup_addon_bios_access() override;
- required_device<upd7725_device> m_upd7725;
-
// additional reading and writing
virtual DECLARE_READ8_MEMBER(chip_read) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override;
@@ -58,6 +57,14 @@ public:
virtual DECLARE_READ32_MEMBER(necdsp_prg_r);
virtual DECLARE_READ16_MEMBER(necdsp_data_r);
+protected:
+ sns_rom21_necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
+ required_device<upd7725_device> m_upd7725;
+
std::vector<uint32_t> m_dsp_prg;
std::vector<uint16_t> m_dsp_data;
};
@@ -67,15 +74,8 @@ public:
class sns_rom_setadsp_device : public sns_rom_device
{
public:
- // construction/destruction
- sns_rom_setadsp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- // device-level overrides
- virtual void device_start() override;
virtual void speedup_addon_bios_access() override;
- required_device<upd96050_device> m_upd96050;
-
// additional reading and writing
virtual DECLARE_READ8_MEMBER(chip_read) override;
virtual DECLARE_WRITE8_MEMBER(chip_write) override;
@@ -83,6 +83,15 @@ public:
virtual DECLARE_READ32_MEMBER(setadsp_prg_r);
virtual DECLARE_READ16_MEMBER(setadsp_data_r);
+protected:
+ // construction/destruction
+ sns_rom_setadsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
+ required_device<upd96050_device> m_upd96050;
+
std::vector<uint32_t> m_dsp_prg;
std::vector<uint16_t> m_dsp_data;
};
@@ -113,11 +122,10 @@ public:
// device type definition
-extern const device_type SNS_LOROM_NECDSP;
-extern const device_type SNS_HIROM_NECDSP;
-extern const device_type SNS_LOROM_SETA10;
-extern const device_type SNS_LOROM_SETA11;
-
+DECLARE_DEVICE_TYPE(SNS_LOROM_NECDSP, sns_rom20_necdsp_device)
+DECLARE_DEVICE_TYPE(SNS_HIROM_NECDSP, sns_rom21_necdsp_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_SETA10, sns_rom_seta10dsp_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_SETA11, sns_rom_seta11dsp_device)
@@ -211,13 +219,13 @@ public:
virtual const tiny_rom_entry *device_rom_region() const override;
};
-extern const device_type SNS_LOROM_NECDSP1_LEG;
-extern const device_type SNS_LOROM_NECDSP1B_LEG;
-extern const device_type SNS_LOROM_NECDSP2_LEG;
-extern const device_type SNS_LOROM_NECDSP3_LEG;
-extern const device_type SNS_LOROM_NECDSP4_LEG;
-extern const device_type SNS_HIROM_NECDSP1_LEG;
-extern const device_type SNS_LOROM_SETA10_LEG;
-extern const device_type SNS_LOROM_SETA11_LEG;
+DECLARE_DEVICE_TYPE(SNS_LOROM_NECDSP1_LEG, sns_rom20_necdsp1_legacy_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_NECDSP1B_LEG, sns_rom20_necdsp1b_legacy_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_NECDSP2_LEG, sns_rom20_necdsp2_legacy_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_NECDSP3_LEG, sns_rom20_necdsp3_legacy_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_NECDSP4_LEG, sns_rom20_necdsp4_legacy_device)
+DECLARE_DEVICE_TYPE(SNS_HIROM_NECDSP1_LEG, sns_rom21_necdsp1_legacy_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_SETA10_LEG, sns_rom_seta10dsp_legacy_device)
+DECLARE_DEVICE_TYPE(SNS_LOROM_SETA11_LEG, sns_rom_seta11dsp_legacy_device)
-#endif
+#endif // MAME_BUS_SNES_UPD_H
diff --git a/src/devices/bus/snes_ctrl/bcbattle.cpp b/src/devices/bus/snes_ctrl/bcbattle.cpp
index 0195bf0fe6b..435a3a6d3c3 100644
--- a/src/devices/bus/snes_ctrl/bcbattle.cpp
+++ b/src/devices/bus/snes_ctrl/bcbattle.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SNES_BARCODE_BATTLER = device_creator<snes_bcbattle_device>;
+DEFINE_DEVICE_TYPE(SNES_BARCODE_BATTLER, snes_bcbattle_device, "snes_bcbattle", "Epoch Barcode Battler (SFC)")
MACHINE_CONFIG_FRAGMENT( snes_battler )
@@ -83,9 +83,12 @@ void snes_bcbattle_device::device_timer(emu_timer &timer, device_timer_id id, in
//-------------------------------------------------
snes_bcbattle_device::snes_bcbattle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SNES_BARCODE_BATTLER, "Epoch Barcode Battler (SFC)", tag, owner, clock, "snes_bcbattle", __FILE__),
- device_snes_control_port_interface(mconfig, *this),
- m_reader(*this, "battler"), m_pending_code(0), m_new_code(0), m_transmitting(0), m_cur_bit(0), m_cur_byte(0), battler_timer(nullptr), m_strobe(0), m_idx(0)
+ device_t(mconfig, SNES_BARCODE_BATTLER, tag, owner, clock),
+ device_snes_control_port_interface(mconfig, *this),
+ m_reader(*this, "battler"),
+ m_pending_code(0), m_new_code(0), m_transmitting(0), m_cur_bit(0), m_cur_byte(0),
+ battler_timer(nullptr),
+ m_strobe(0), m_idx(0)
{
}
diff --git a/src/devices/bus/snes_ctrl/bcbattle.h b/src/devices/bus/snes_ctrl/bcbattle.h
index 7fde5b0e54b..91d7eb8d76b 100644
--- a/src/devices/bus/snes_ctrl/bcbattle.h
+++ b/src/devices/bus/snes_ctrl/bcbattle.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SNES_CTRL_BCBATTLE_H
+#define MAME_BUS_SNES_CTRL_BCBATTLE_H
-#ifndef __SNES_BCBATTLE__
-#define __SNES_BCBATTLE__
+#pragma once
#include "ctrl.h"
@@ -28,13 +28,13 @@ public:
// construction/destruction
snes_bcbattle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual uint8_t read_pin4() override;
virtual void write_strobe(uint8_t data) override;
@@ -43,8 +43,8 @@ protected:
int read_current_bit();
private:
+ static constexpr device_timer_id TIMER_BATTLER = 1;
- static const device_timer_id TIMER_BATTLER = 1;
required_device<barcode_reader_device> m_reader;
uint8_t m_current_barcode[20];
int m_pending_code, m_new_code, m_transmitting, m_cur_bit, m_cur_byte;
@@ -54,6 +54,6 @@ private:
};
// device type definition
-extern const device_type SNES_BARCODE_BATTLER;
+DECLARE_DEVICE_TYPE(SNES_BARCODE_BATTLER, snes_bcbattle_device)
-#endif
+#endif // MAME_BUS_SNES_CTRL_BCBATTLE_H
diff --git a/src/devices/bus/snes_ctrl/ctrl.cpp b/src/devices/bus/snes_ctrl/ctrl.cpp
index 53383c13ce7..b0cf145072f 100644
--- a/src/devices/bus/snes_ctrl/ctrl.cpp
+++ b/src/devices/bus/snes_ctrl/ctrl.cpp
@@ -8,6 +8,7 @@
#include "emu.h"
#include "ctrl.h"
+
// slot devices
#include "bcbattle.h"
#include "joypad.h"
@@ -23,7 +24,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SNES_CONTROL_PORT = device_creator<snes_control_port_device>;
+DEFINE_DEVICE_TYPE(SNES_CONTROL_PORT, snes_control_port_device, "snes_control_port", "Nintendo SNES / SFC controller port")
//**************************************************************************
@@ -59,8 +60,8 @@ device_snes_control_port_interface::~device_snes_control_port_interface()
//-------------------------------------------------
snes_control_port_device::snes_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SNES_CONTROL_PORT, "Nintendo SNES / SFC control port", tag, owner, clock, "snes_control_port", __FILE__),
- device_slot_interface(mconfig, *this), m_device(nullptr)
+ device_t(mconfig, SNES_CONTROL_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this), m_device(nullptr)
{
}
diff --git a/src/devices/bus/snes_ctrl/ctrl.h b/src/devices/bus/snes_ctrl/ctrl.h
index 86fb8229945..0d4839980c1 100644
--- a/src/devices/bus/snes_ctrl/ctrl.h
+++ b/src/devices/bus/snes_ctrl/ctrl.h
@@ -6,12 +6,11 @@
**********************************************************************/
+#ifndef MAME_BUS_SNES_CTRL_CTRL_H
+#define MAME_BUS_SNES_CTRL_CTRL_H
#pragma once
-#ifndef __SNES_CONTROL_PORT__
-#define __SNES_CONTROL_PORT__
-
//**************************************************************************
// TYPE DEFINITIONS
@@ -28,11 +27,11 @@ public:
device_snes_control_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_snes_control_port_interface();
- virtual uint8_t read_pin4() { return 0; };
- virtual uint8_t read_pin5() { return 0; };
- virtual void write_pin6(uint8_t data) { };
- virtual void write_strobe(uint8_t data) { };
- virtual void port_poll() { };
+ virtual uint8_t read_pin4() { return 0; }
+ virtual uint8_t read_pin5() { return 0; }
+ virtual void write_pin6(uint8_t data) { }
+ virtual void write_strobe(uint8_t data) { }
+ virtual void port_poll() { }
protected:
snes_control_port_device *m_port;
@@ -46,8 +45,7 @@ typedef device_delegate<void (int16_t x, int16_t y)> snesctrl_gunlatch_delegate;
// ======================> snes_control_port_device
-class snes_control_port_device : public device_t,
- public device_slot_interface
+class snes_control_port_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
@@ -63,19 +61,22 @@ public:
void write_strobe(uint8_t data);
void port_poll();
- snesctrl_onscreen_delegate m_onscreen_cb;
- snesctrl_gunlatch_delegate m_gunlatch_cb;
+ bool onscreen_cb(int16_t x, int16_t y) { return m_onscreen_cb.isnull() ? true : m_onscreen_cb(x, y); }
+ void gunlatch_cb(int16_t x, int16_t y) { if (!m_gunlatch_cb.isnull()) m_gunlatch_cb(x, y); }
protected:
// device-level overrides
virtual void device_start() override;
+ snesctrl_onscreen_delegate m_onscreen_cb;
+ snesctrl_gunlatch_delegate m_gunlatch_cb;
+
device_snes_control_port_interface *m_device;
};
// device type definition
-extern const device_type SNES_CONTROL_PORT;
+DECLARE_DEVICE_TYPE(SNES_CONTROL_PORT, snes_control_port_device)
//**************************************************************************
@@ -96,4 +97,4 @@ extern const device_type SNES_CONTROL_PORT;
SLOT_INTERFACE_EXTERN( snes_control_port_devices );
-#endif
+#endif // MAME_BUS_SNES_CTRL_CTRL_H
diff --git a/src/devices/bus/snes_ctrl/joypad.cpp b/src/devices/bus/snes_ctrl/joypad.cpp
index b31e8e1d36d..359cb4cec53 100644
--- a/src/devices/bus/snes_ctrl/joypad.cpp
+++ b/src/devices/bus/snes_ctrl/joypad.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SNES_JOYPAD = device_creator<snes_joypad_device>;
+DEFINE_DEVICE_TYPE(SNES_JOYPAD, snes_joypad_device, "snes_joypad", "Nintendo SNES / SFC Control Pad")
static INPUT_PORTS_START( snes_joypad )
@@ -54,9 +54,10 @@ ioport_constructor snes_joypad_device::device_input_ports() const
//-------------------------------------------------
snes_joypad_device::snes_joypad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SNES_JOYPAD, "Nintendo SNES / SFC Control Pad", tag, owner, clock, "snes_joypad", __FILE__),
- device_snes_control_port_interface(mconfig, *this),
- m_joypad(*this, "JOYPAD"), m_strobe(0), m_latch(0)
+ device_t(mconfig, SNES_JOYPAD, tag, owner, clock),
+ device_snes_control_port_interface(mconfig, *this),
+ m_joypad(*this, "JOYPAD"),
+ m_strobe(0), m_latch(0)
{
}
diff --git a/src/devices/bus/snes_ctrl/joypad.h b/src/devices/bus/snes_ctrl/joypad.h
index e2ec9759c45..b28fd5054a2 100644
--- a/src/devices/bus/snes_ctrl/joypad.h
+++ b/src/devices/bus/snes_ctrl/joypad.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SNES_CTRL_JOYPAD_H
+#define MAME_BUS_SNES_CTRL_JOYPAD_H
-#ifndef __SNES_JOYPAD__
-#define __SNES_JOYPAD__
+#pragma once
#include "ctrl.h"
@@ -50,5 +50,4 @@ private:
// device type definition
extern const device_type SNES_JOYPAD;
-
-#endif
+#endif // MAME_BUS_SNES_CTRL_JOYPAD_H
diff --git a/src/devices/bus/snes_ctrl/miracle.cpp b/src/devices/bus/snes_ctrl/miracle.cpp
index 94e4e567e91..23b5e6eb1ba 100644
--- a/src/devices/bus/snes_ctrl/miracle.cpp
+++ b/src/devices/bus/snes_ctrl/miracle.cpp
@@ -20,7 +20,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SNES_MIRACLE = device_creator<snes_miracle_device>;
+DEFINE_DEVICE_TYPE(SNES_MIRACLE, snes_miracle_device, "snes_miracle", "Miracle Piano SNES Cable")
MACHINE_CONFIG_FRAGMENT( snes_miracle )
@@ -61,11 +61,13 @@ void snes_miracle_device::device_timer(emu_timer &timer, device_timer_id id, int
//-------------------------------------------------
snes_miracle_device::snes_miracle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SNES_MIRACLE, "Miracle Piano SNES Cable", tag, owner, clock, "snes_miracle", __FILE__),
- device_serial_interface(mconfig, *this),
- device_snes_control_port_interface(mconfig, *this),
- m_midiin(*this, "mdin"),
- m_midiout(*this, "mdout"), strobe_timer(nullptr), m_strobe_on(0), m_midi_mode(0), m_sent_bits(0), m_strobe_clock(0),
+ device_t(mconfig, SNES_MIRACLE, tag, owner, clock),
+ device_serial_interface(mconfig, *this),
+ device_snes_control_port_interface(mconfig, *this),
+ m_midiin(*this, "mdin"),
+ m_midiout(*this, "mdout"),
+ strobe_timer(nullptr),
+ m_strobe_on(0), m_midi_mode(0), m_sent_bits(0), m_strobe_clock(0),
m_data_sent(0), m_xmit_read(0), m_xmit_write(0), m_recv_read(0), m_recv_write(0), m_tx_busy(false), m_read_status(false), m_status_bit(false)
{
}
diff --git a/src/devices/bus/snes_ctrl/miracle.h b/src/devices/bus/snes_ctrl/miracle.h
index 2e9a4f1373e..d7907840262 100644
--- a/src/devices/bus/snes_ctrl/miracle.h
+++ b/src/devices/bus/snes_ctrl/miracle.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SNES_CTRL_MIRACLE_H
+#define MAME_BUS_SNES_CTRL_MIRACLE_H
-#ifndef __SNES_MIRACLE__
-#define __SNES_MIRACLE__
+#pragma once
#include "ctrl.h"
@@ -26,34 +26,35 @@ class snes_miracle_device : public device_t,
public device_snes_control_port_interface
{
public:
- static const int XMIT_RING_SIZE = 64;
- static const int RECV_RING_SIZE = 64;
-
// construction/destruction
snes_miracle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual machine_config_constructor device_mconfig_additions() const override;
- // serial overrides
- virtual void rcv_complete() override; // Rx completed receiving byte
- virtual void tra_complete() override; // Tx completed sending byte
- virtual void tra_callback() override; // Tx send bit
-
- void xmit_char(uint8_t data);
+protected:
+ static constexpr device_timer_id TIMER_STROBE_ON = 0;
- required_device<midi_port_device> m_midiin, m_midiout;
+ static constexpr int XMIT_RING_SIZE = 64;
+ static constexpr int RECV_RING_SIZE = 64;
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ // serial overrides
+ virtual void rcv_complete() override; // Rx completed receiving byte
+ virtual void tra_complete() override; // Tx completed sending byte
+ virtual void tra_callback() override; // Tx send bit
uint8_t read_pin4() override;
void write_pin6(uint8_t data) override;
void write_strobe(uint8_t data) override;
- static const device_timer_id TIMER_STROBE_ON = 0;
+ void xmit_char(uint8_t data);
+
+ required_device<midi_port_device> m_midiin, m_midiout;
+
emu_timer *strobe_timer;
int m_strobe_on, m_midi_mode, m_sent_bits;
@@ -66,6 +67,6 @@ protected:
};
// device type definition
-extern const device_type SNES_MIRACLE;
+DECLARE_DEVICE_TYPE(SNES_MIRACLE, snes_miracle_device)
-#endif
+#endif // MAME_BUS_SNES_CTRL_MIRACLE_H
diff --git a/src/devices/bus/snes_ctrl/mouse.cpp b/src/devices/bus/snes_ctrl/mouse.cpp
index acd8892518f..add94382437 100644
--- a/src/devices/bus/snes_ctrl/mouse.cpp
+++ b/src/devices/bus/snes_ctrl/mouse.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SNES_MOUSE = device_creator<snes_mouse_device>;
+DEFINE_DEVICE_TYPE(SNES_MOUSE, snes_mouse_device, "snes_mouse", "Nintendo SNES / SFC Mouse Controller")
static INPUT_PORTS_START( snes_mouse )
@@ -60,12 +60,14 @@ ioport_constructor snes_mouse_device::device_input_ports() const
//-------------------------------------------------
snes_mouse_device::snes_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SNES_MOUSE, "Nintendo SNES / SFC Mouse Controller", tag, owner, clock, "snes_mouse", __FILE__),
- device_snes_control_port_interface(mconfig, *this),
- m_buttons(*this, "BUTTONS"),
- m_xaxis(*this, "MOUSE_X"),
- m_yaxis(*this, "MOUSE_Y"), m_strobe(0), m_idx(0), m_latch(0), m_x(0), m_y(0), m_oldx(0), m_oldy(0), m_deltax(0),
- m_deltay(0), m_speed(0), m_dirx(0), m_diry(0)
+ device_t(mconfig, SNES_MOUSE, tag, owner, clock),
+ device_snes_control_port_interface(mconfig, *this),
+ m_buttons(*this, "BUTTONS"),
+ m_xaxis(*this, "MOUSE_X"),
+ m_yaxis(*this, "MOUSE_Y"),
+ m_strobe(0), m_idx(0), m_latch(0),
+ m_x(0), m_y(0), m_oldx(0), m_oldy(0),
+ m_deltax(0), m_deltay(0), m_speed(0), m_dirx(0), m_diry(0)
{
}
diff --git a/src/devices/bus/snes_ctrl/mouse.h b/src/devices/bus/snes_ctrl/mouse.h
index 13d2b3e33d6..cd6f3839950 100644
--- a/src/devices/bus/snes_ctrl/mouse.h
+++ b/src/devices/bus/snes_ctrl/mouse.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SNES_CTRL_MOUSE_H
+#define MAME_BUS_SNES_CTRL_MOUSE_H
-#ifndef __SNES_MOUSE__
-#define __SNES_MOUSE__
+#pragma once
#include "ctrl.h"
@@ -56,7 +56,6 @@ private:
// device type definition
-extern const device_type SNES_MOUSE;
-
+DECLARE_DEVICE_TYPE(SNES_MOUSE, snes_mouse_device)
-#endif
+#endif // MAME_BUS_SNES_CTRL_MOUSE_H
diff --git a/src/devices/bus/snes_ctrl/multitap.cpp b/src/devices/bus/snes_ctrl/multitap.cpp
index 0639e24c8db..d4a120d242f 100644
--- a/src/devices/bus/snes_ctrl/multitap.cpp
+++ b/src/devices/bus/snes_ctrl/multitap.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SNES_MULTITAP = device_creator<snes_multitap_device>;
+DEFINE_DEVICE_TYPE(SNES_MULTITAP, snes_multitap_device, "snes_multitap", "Nintendo SNES / SFC Multitap Adapter")
static INPUT_PORTS_START( snes_multitap )
@@ -69,7 +69,7 @@ machine_config_constructor snes_multitap_device::device_mconfig_additions() cons
//-------------------------------------------------
snes_multitap_device::snes_multitap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SNES_MULTITAP, "Nintendo SNES / SFC Multitap Adapter", tag, owner, clock, "snes_multitap", __FILE__),
+ device_t(mconfig, SNES_MULTITAP, tag, owner, clock),
device_snes_control_port_interface(mconfig, *this),
m_port1(*this, "port1"),
m_port2(*this, "port2"),
diff --git a/src/devices/bus/snes_ctrl/multitap.h b/src/devices/bus/snes_ctrl/multitap.h
index f217f882aa5..b2f222c54ec 100644
--- a/src/devices/bus/snes_ctrl/multitap.h
+++ b/src/devices/bus/snes_ctrl/multitap.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SNES_CTRL_MULTITAP_H
+#define MAME_BUS_SNES_CTRL_MULTITAP_H
-#ifndef __SNES_MULTITAP__
-#define __SNES_MULTITAP__
+#pragma once
#include "ctrl.h"
@@ -54,7 +54,6 @@ private:
// device type definition
-extern const device_type SNES_MULTITAP;
-
+DECLARE_DEVICE_TYPE(SNES_MULTITAP, snes_multitap_device)
-#endif
+#endif // MAME_BUS_SNES_CTRL_MULTITAP_H
diff --git a/src/devices/bus/snes_ctrl/pachinko.cpp b/src/devices/bus/snes_ctrl/pachinko.cpp
index d80b862fb33..44d81066d83 100644
--- a/src/devices/bus/snes_ctrl/pachinko.cpp
+++ b/src/devices/bus/snes_ctrl/pachinko.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SNES_PACHINKO = device_creator<snes_pachinko_device>;
+DEFINE_DEVICE_TYPE(SNES_PACHINKO, snes_pachinko_device, "snes_pachinko", "Sunsoft Pachinko Controller")
static INPUT_PORTS_START( snes_pachinko )
@@ -46,10 +46,11 @@ ioport_constructor snes_pachinko_device::device_input_ports() const
//-------------------------------------------------
snes_pachinko_device::snes_pachinko_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SNES_PACHINKO, "Sunsoft Pachinko Controller", tag, owner, clock, "snes_pachinko", __FILE__),
- device_snes_control_port_interface(mconfig, *this),
- m_dial(*this, "DIAL"),
- m_button(*this, "BUTTON"), m_strobe(0), m_latch(0)
+ device_t(mconfig, SNES_PACHINKO, tag, owner, clock),
+ device_snes_control_port_interface(mconfig, *this),
+ m_dial(*this, "DIAL"),
+ m_button(*this, "BUTTON"),
+ m_strobe(0), m_latch(0)
{
}
diff --git a/src/devices/bus/snes_ctrl/pachinko.h b/src/devices/bus/snes_ctrl/pachinko.h
index 1bd1e1fb185..0fffa05767a 100644
--- a/src/devices/bus/snes_ctrl/pachinko.h
+++ b/src/devices/bus/snes_ctrl/pachinko.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SNES_CTRL_PACHINKO_H
+#define MAME_BUS_SNES_CTRL_PACHINKO_H
-#ifndef __SNES_PACHINKO__
-#define __SNES_PACHINKO__
+#pragma once
#include "ctrl.h"
@@ -49,7 +49,6 @@ private:
// device type definition
-extern const device_type SNES_PACHINKO;
-
+DECLARE_DEVICE_TYPE(SNES_PACHINKO, snes_pachinko_device)
-#endif
+#endif // MAME_BUS_SNES_CTRL_PACHINKO_H
diff --git a/src/devices/bus/snes_ctrl/sscope.cpp b/src/devices/bus/snes_ctrl/sscope.cpp
index 9b7ee0c053f..71a049adb82 100644
--- a/src/devices/bus/snes_ctrl/sscope.cpp
+++ b/src/devices/bus/snes_ctrl/sscope.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SNES_SUPERSCOPE = device_creator<snes_sscope_device>;
+DEFINE_DEVICE_TYPE(SNES_SUPERSCOPE, snes_sscope_device, "snes_sscope", "Nintendo SNES / SFC SuperScope")
static INPUT_PORTS_START( snes_sscope )
@@ -55,11 +55,12 @@ ioport_constructor snes_sscope_device::device_input_ports() const
//-------------------------------------------------
snes_sscope_device::snes_sscope_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SNES_SUPERSCOPE, "Nintendo SNES / SFC SuperScope", tag, owner, clock, "snes_sscope", __FILE__),
- device_snes_control_port_interface(mconfig, *this),
- m_buttons(*this, "BUTTONS"),
- m_xaxis(*this, "SSX"),
- m_yaxis(*this, "SSY"), m_strobe(0), m_idx(0), m_latch(0), m_x(0), m_y(0), m_turbo_lock(0), m_pause_lock(0), m_fire_lock(0)
+ device_t(mconfig, SNES_SUPERSCOPE, tag, owner, clock),
+ device_snes_control_port_interface(mconfig, *this),
+ m_buttons(*this, "BUTTONS"),
+ m_xaxis(*this, "SSX"),
+ m_yaxis(*this, "SSY"),
+ m_strobe(0), m_idx(0), m_latch(0), m_x(0), m_y(0), m_turbo_lock(0), m_pause_lock(0), m_fire_lock(0)
{
}
@@ -114,8 +115,7 @@ void snes_sscope_device::port_poll()
m_latch &= 0x04;
// 2. set onscreen/offscreen
- if (!m_port->m_onscreen_cb.isnull())
- m_latch |= (m_port->m_onscreen_cb(m_x, m_y) ? 0x00 : 0x40);
+ m_latch |= m_port->onscreen_cb(m_x, m_y) ? 0x00 : 0x40;
// 3. pause is a button that is always edge sensitive
if (BIT(input, 3) && !m_pause_lock)
@@ -152,8 +152,8 @@ void snes_sscope_device::port_poll()
// Notice that this only works in Port2 because its IOBit pin is connected to bit7 of the IO Port, while Port1
// has IOBit pin connected to bit6 of the IO Port, and the latter is not detected by the H/V Counters. In other
// words, you can connect SuperScope to Port1, but there is no way SNES could detect its on-screen position
- if ((m_latch & 0x03) && !(m_latch & 0x40) && !m_port->m_gunlatch_cb.isnull())
- m_port->m_gunlatch_cb(m_x, m_y);
+ if ((m_latch & 0x03) && !(m_latch & 0x40))
+ m_port->gunlatch_cb(m_x, m_y);
}
//-------------------------------------------------
diff --git a/src/devices/bus/snes_ctrl/sscope.h b/src/devices/bus/snes_ctrl/sscope.h
index e073800b23f..b81afda179d 100644
--- a/src/devices/bus/snes_ctrl/sscope.h
+++ b/src/devices/bus/snes_ctrl/sscope.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SNES_CTRL_SUPERSCOPE_H
+#define MAME_BUS_SNES_CTRL_SUPERSCOPE_H
-#ifndef __SNES_SUPERSCOPE__
-#define __SNES_SUPERSCOPE__
+#pragma once
#include "ctrl.h"
@@ -53,7 +53,6 @@ private:
// device type definition
-extern const device_type SNES_SUPERSCOPE;
-
+DECLARE_DEVICE_TYPE(SNES_SUPERSCOPE, snes_sscope_device)
-#endif
+#endif // MAME_BUS_SNES_CTRL_SUPERSCOPE_H
diff --git a/src/devices/bus/snes_ctrl/twintap.cpp b/src/devices/bus/snes_ctrl/twintap.cpp
index ef4bdc8e260..25327786b10 100644
--- a/src/devices/bus/snes_ctrl/twintap.cpp
+++ b/src/devices/bus/snes_ctrl/twintap.cpp
@@ -20,7 +20,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SNES_TWINTAP = device_creator<snes_twintap_device>;
+DEFINE_DEVICE_TYPE(SNES_TWINTAP, snes_twintap_device, "snes_twintap", "Yonezawa Twin Tap Controller")
static INPUT_PORTS_START( snes_twintap )
@@ -51,9 +51,10 @@ ioport_constructor snes_twintap_device::device_input_ports() const
//-------------------------------------------------
snes_twintap_device::snes_twintap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SNES_TWINTAP, "Yonezawa Twin Tap Controller", tag, owner, clock, "snes_twintap", __FILE__),
- device_snes_control_port_interface(mconfig, *this),
- m_inputs(*this, "INPUTS"), m_strobe(0), m_latch(0)
+ device_t(mconfig, SNES_TWINTAP, tag, owner, clock),
+ device_snes_control_port_interface(mconfig, *this),
+ m_inputs(*this, "INPUTS"),
+ m_strobe(0), m_latch(0)
{
}
diff --git a/src/devices/bus/snes_ctrl/twintap.h b/src/devices/bus/snes_ctrl/twintap.h
index f45c46f2cbf..9da70e50b11 100644
--- a/src/devices/bus/snes_ctrl/twintap.h
+++ b/src/devices/bus/snes_ctrl/twintap.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_SNES_CTRL_TWINTAP_H
+#define MAME_BUS_SNES_CTRL_TWINTAP_H
-#ifndef __SNES_TWINTAP__
-#define __SNES_TWINTAP__
+#pragma once
#include "ctrl.h"
@@ -50,5 +50,4 @@ private:
// device type definition
extern const device_type SNES_TWINTAP;
-
-#endif
+#endif // MAME_BUS_SNES_CTRL_TWINTAP_H
diff --git a/src/devices/bus/spc1000/exp.cpp b/src/devices/bus/spc1000/exp.cpp
index c0f8d6555fb..5a987845a43 100644
--- a/src/devices/bus/spc1000/exp.cpp
+++ b/src/devices/bus/spc1000/exp.cpp
@@ -14,7 +14,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SPC1000_EXP_SLOT = device_creator<spc1000_exp_device>;
+DEFINE_DEVICE_TYPE(SPC1000_EXP_SLOT, spc1000_exp_device, "spc1000_exp", "Samsung SPC-1000 expansion")
device_spc1000_card_interface::device_spc1000_card_interface(const machine_config &mconfig, device_t &device)
@@ -36,8 +36,9 @@ device_spc1000_card_interface::~device_spc1000_card_interface()
// spc1000_exp_device - constructor
//-------------------------------------------------
spc1000_exp_device::spc1000_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SPC1000_EXP_SLOT, "Samsung SPC-1000 expansion", tag, owner, clock, "spc1000_exp", __FILE__),
- device_slot_interface(mconfig, *this), m_card(nullptr)
+ device_t(mconfig, SPC1000_EXP_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_card(nullptr)
{
}
diff --git a/src/devices/bus/spc1000/exp.h b/src/devices/bus/spc1000/exp.h
index 1e63ff4a57d..b281e7a560c 100644
--- a/src/devices/bus/spc1000/exp.h
+++ b/src/devices/bus/spc1000/exp.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SCP1000_SLOT_H
-#define __SCP1000_SLOT_H
+#ifndef MAME_BUS_SPC1000_EXP_H
+#define MAME_BUS_SPC1000_EXP_H
+
+#pragma once
// ======================> device_spc1000_card_interface
@@ -9,40 +11,39 @@ class device_spc1000_card_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_spc1000_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_spc1000_card_interface();
// reading and writing
virtual DECLARE_READ8_MEMBER(read) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write) {}
+ virtual DECLARE_WRITE8_MEMBER(write) { }
+
+protected:
+ device_spc1000_card_interface(const machine_config &mconfig, device_t &device);
};
// ======================> spc1000_exp_device
-class spc1000_exp_device : public device_t,
- public device_slot_interface
+class spc1000_exp_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
spc1000_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~spc1000_exp_device();
- // device-level overrides
- virtual void device_start() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read);
virtual DECLARE_WRITE8_MEMBER(write);
protected:
+ // device-level overrides
+ virtual void device_start() override;
- device_spc1000_card_interface* m_card;
+ device_spc1000_card_interface* m_card;
};
-
// device type definition
-extern const device_type SPC1000_EXP_SLOT;
+DECLARE_DEVICE_TYPE(SPC1000_EXP_SLOT, spc1000_exp_device)
-#endif
+#endif // MAME_BUS_SPC1000_EXP_H
diff --git a/src/devices/bus/spc1000/fdd.cpp b/src/devices/bus/spc1000/fdd.cpp
index b724538c9da..2f266449041 100644
--- a/src/devices/bus/spc1000/fdd.cpp
+++ b/src/devices/bus/spc1000/fdd.cpp
@@ -124,7 +124,7 @@ const tiny_rom_entry *spc1000_fdd_exp_device::device_rom_region() const
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SPC1000_FDD_EXP = device_creator<spc1000_fdd_exp_device>;
+DEFINE_DEVICE_TYPE(SPC1000_FDD_EXP, spc1000_fdd_exp_device, "spc1000_fdd_exp", "SPC1000 FDD expansion")
//**************************************************************************
// LIVE DEVICE
@@ -134,13 +134,14 @@ const device_type SPC1000_FDD_EXP = device_creator<spc1000_fdd_exp_device>;
// spc1000_fdd_exp_device - constructor
//-------------------------------------------------
-spc1000_fdd_exp_device::spc1000_fdd_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SPC1000_FDD_EXP, "SPC1000 FDD expansion", tag, owner, clock, "spc1000_fdd_exp", __FILE__),
- device_spc1000_card_interface(mconfig, *this),
- m_cpu(*this, "fdccpu"),
- m_fdc(*this, "upd765"),
- m_pio(*this, "d8255_master"), m_fd0(nullptr), m_fd1(nullptr), m_timer_tc(nullptr), m_i8255_0_pc(0), m_i8255_1_pc(0), m_i8255_portb(0)
- {
+spc1000_fdd_exp_device::spc1000_fdd_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, SPC1000_FDD_EXP, tag, owner, clock),
+ device_spc1000_card_interface(mconfig, *this),
+ m_cpu(*this, "fdccpu"),
+ m_fdc(*this, "upd765"),
+ m_pio(*this, "d8255_master"),
+ m_fd0(nullptr), m_fd1(nullptr), m_timer_tc(nullptr), m_i8255_0_pc(0), m_i8255_1_pc(0), m_i8255_portb(0)
+{
}
diff --git a/src/devices/bus/spc1000/fdd.h b/src/devices/bus/spc1000/fdd.h
index b52d6091cba..007ca775467 100644
--- a/src/devices/bus/spc1000/fdd.h
+++ b/src/devices/bus/spc1000/fdd.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SPC1000_FDD_H__
-#define __SPC1000_FDD_H__
+#ifndef MAME_BUS_SPC1000_FDD_H
+#define MAME_BUS_SPC1000_FDD_H
+
+#pragma once
#include "exp.h"
#include "cpu/z80/z80.h"
@@ -14,8 +16,7 @@
// ======================> spc1000_fdd_exp_device
-class spc1000_fdd_exp_device : public device_t,
- public device_spc1000_card_interface
+class spc1000_fdd_exp_device : public device_t, public device_spc1000_card_interface
{
public:
// construction/destruction
@@ -29,6 +30,7 @@ public:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
@@ -40,6 +42,8 @@ public:
DECLARE_WRITE8_MEMBER(i8255_c_w);
private:
+ static constexpr device_timer_id TIMER_TC = 0;
+
// internal state
required_device<z80_device> m_cpu;
required_device<upd765a_device> m_fdc;
@@ -53,13 +57,10 @@ private:
uint8_t m_i8255_0_pc;
uint8_t m_i8255_1_pc;
uint8_t m_i8255_portb;
-
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- static const device_timer_id TIMER_TC = 0;
};
// device type definition
-extern const device_type SPC1000_FDD_EXP;
+DECLARE_DEVICE_TYPE(SPC1000_FDD_EXP, spc1000_fdd_exp_device)
-#endif /* __SPC1000_FDD_H__ */
+#endif // MAME_BUS_SPC1000_FDD_H
diff --git a/src/devices/bus/spc1000/vdp.cpp b/src/devices/bus/spc1000/vdp.cpp
index 70a2c497e3d..06189f6f171 100644
--- a/src/devices/bus/spc1000/vdp.cpp
+++ b/src/devices/bus/spc1000/vdp.cpp
@@ -42,7 +42,7 @@ machine_config_constructor spc1000_vdp_exp_device::device_mconfig_additions() co
// GLOBAL VARIABLES
//**************************************************************************
-const device_type SPC1000_VDP_EXP = device_creator<spc1000_vdp_exp_device>;
+DEFINE_DEVICE_TYPE(SPC1000_VDP_EXP, spc1000_vdp_exp_device, "spc1000_vdp_exp", "SPC1000 VDP expansion")
//**************************************************************************
// LIVE DEVICE
@@ -53,9 +53,9 @@ const device_type SPC1000_VDP_EXP = device_creator<spc1000_vdp_exp_device>;
//-------------------------------------------------
spc1000_vdp_exp_device::spc1000_vdp_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SPC1000_VDP_EXP, "SPC1000 VDP expansion", tag, owner, clock, "spc1000_vdp_exp", __FILE__),
- device_spc1000_card_interface(mconfig, *this),
- m_vdp(*this, "tms")
+ : device_t(mconfig, SPC1000_VDP_EXP, tag, owner, clock)
+ , device_spc1000_card_interface(mconfig, *this)
+ , m_vdp(*this, "tms")
{
}
diff --git a/src/devices/bus/spc1000/vdp.h b/src/devices/bus/spc1000/vdp.h
index 0c22dcbcfc0..4619f719ece 100644
--- a/src/devices/bus/spc1000/vdp.h
+++ b/src/devices/bus/spc1000/vdp.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __SPC1000_VDP_H__
-#define __SPC1000_VDP_H__
+#ifndef MAME_BUS_SPC1000_VDP_H
+#define MAME_BUS_SPC1000_VDP_H
+
+#pragma once
#include "exp.h"
#include "video/tms9928a.h"
@@ -13,8 +15,7 @@
// ======================> spc1000_vdp_exp_device
-class spc1000_vdp_exp_device : public device_t,
- public device_spc1000_card_interface
+class spc1000_vdp_exp_device : public device_t, public device_spc1000_card_interface
{
public:
// construction/destruction
@@ -40,6 +41,6 @@ private:
// device type definition
-extern const device_type SPC1000_VDP_EXP;
+DECLARE_DEVICE_TYPE(SPC1000_VDP_EXP, spc1000_vdp_exp_device)
-#endif /* __SPC1000_VDP_H__ */
+#endif // MAME_BUS_SPC1000_VDP_H
diff --git a/src/devices/bus/sunkbd/hlekbd.cpp b/src/devices/bus/sunkbd/hlekbd.cpp
index 101546ba6fa..5e08710b120 100644
--- a/src/devices/bus/sunkbd/hlekbd.cpp
+++ b/src/devices/bus/sunkbd/hlekbd.cpp
@@ -87,7 +87,7 @@
Type 5 US UNIX layout:
- 76 xx 05 06 08 0a 0c 0e 10 11 12 07 09 0b 16 17 15 2d 02 04 30
+ 76 0f 05 06 08 0a 0c 0e 10 11 12 07 09 0b 16 17 15 2d 02 04 30
01 03 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 58 2a 2c 34 60 62 2e 2f 47
19 1a 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 2b 42 4a 7b 44 45 46
@@ -95,7 +95,7 @@
48 49 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 14 70 71 72
5f 61 77 13 78 79 7a 43 0d 18 1b 1c 5e 32 5a
- xx is a blank key
+ 0f is a blank key
backspace immediately above return
backslash and backtick/tilde at top right of main area
control on home row, caps lock at bottom left corner of main area
@@ -136,16 +136,17 @@
DEVICE TYPE GLOBALS
***************************************************************************/
-device_type const SUN_TYPE3_HLE_KEYBOARD = device_creator<bus::sunkbd::hle_type3_device>;
-device_type const SUN_TYPE4_HLE_KEYBOARD = device_creator<bus::sunkbd::hle_type4_device>;
-device_type const SUN_TYPE5_HLE_KEYBOARD = device_creator<bus::sunkbd::hle_type5_device>;
-device_type const SUN_TYPE5_GB_HLE_KEYBOARD = device_creator<bus::sunkbd::hle_type5_gb_device>;
-device_type const SUN_TYPE5_SE_HLE_KEYBOARD = device_creator<bus::sunkbd::hle_type5_se_device>;
-device_type const SUN_TYPE5_JP_HLE_KEYBOARD = device_creator<bus::sunkbd::hle_type5_jp_device>;
+DEFINE_DEVICE_TYPE_NS(SUN_TYPE3_HLE_KEYBOARD, bus::sunkbd, hle_type3_device, "kbd_type3_hle", "Sun Type 3 Keyboard (HLE)")
+DEFINE_DEVICE_TYPE_NS(SUN_TYPE4_HLE_KEYBOARD, bus::sunkbd, hle_type4_device, "kbd_type4_hle", "Sun Type 4 Keyboard (HLE)")
+DEFINE_DEVICE_TYPE_NS(SUN_TYPE5_HLE_KEYBOARD, bus::sunkbd, hle_type5_device, "kbd_type5_hle_us", "Sun Type 5 Keyboard (U.S.A. - HLE)")
+DEFINE_DEVICE_TYPE_NS(SUN_TYPE5_GB_HLE_KEYBOARD, bus::sunkbd, hle_type5_gb_device, "kbd_type5_hle_gb", "Sun Type 5 Keyboard (Great Britain - HLE)")
+DEFINE_DEVICE_TYPE_NS(SUN_TYPE5_SE_HLE_KEYBOARD, bus::sunkbd, hle_type5_se_device, "kbd_type5_hle_se", "Sun Type 5 Keyboard (Sweden - HLE)")
+DEFINE_DEVICE_TYPE_NS(SUN_TYPE5_JP_HLE_KEYBOARD, bus::sunkbd, hle_type5_jp_device, "kbd_type5_hle_jp", "Sun Type 5 Keyboard (Japan - HLE)")
namespace bus { namespace sunkbd {
+
namespace {
/***************************************************************************
INPUT PORT DEFINITIONS
@@ -421,9 +422,9 @@ INPUT_PORTS_START( basic_jp )
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('\\') PORT_CHAR('_')
PORT_MODIFY("ROW7")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Kakutei")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Henkan")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Nihongo On-Off") PORT_CODE(KEYCODE_MENU)
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Kakutei") // 確定
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Henkan") // 変æ›
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Nihongo On-Off") PORT_CODE(KEYCODE_MENU) // 日本語 On-Off
INPUT_PORTS_END
@@ -723,7 +724,7 @@ INPUT_PORTS_START( hle_type5_jp_device )
TYPE5_DIPS(0x11)
PORT_MODIFY("ROW0")
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Kana") PORT_CODE(KEYCODE_RALT)
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Kana") PORT_CODE(KEYCODE_RALT) // ã‹ãª
INPUT_PORTS_END
@@ -754,13 +755,10 @@ MACHINE_CONFIG_END
hle_device_base::hle_device_base(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_buffered_serial_interface(mconfig, *this)
, device_sun_keyboard_port_interface(mconfig, *this)
, device_matrix_keyboard_interface(mconfig, *this, "ROW0", "ROW1", "ROW2", "ROW3", "ROW4", "ROW5", "ROW6", "ROW7")
@@ -1083,12 +1081,9 @@ hle_type3_device::hle_type3_device(
: hle_device_base(
mconfig,
SUN_TYPE3_HLE_KEYBOARD,
- "Sun Type 3 Keyboard (HLE)",
tag,
owner,
- clock,
- "type3_hle_kbd",
- __FILE__)
+ clock)
{
}
@@ -1134,12 +1129,9 @@ hle_type4_device::hle_type4_device(
: hle_type4_device_base(
mconfig,
SUN_TYPE4_HLE_KEYBOARD,
- "Sun Type 4 Keyboard (HLE)",
tag,
owner,
- clock,
- "type4_hle_kbd",
- __FILE__)
+ clock)
{
}
@@ -1173,12 +1165,9 @@ hle_type5_device::hle_type5_device(
: hle_type4_device_base(
mconfig,
SUN_TYPE5_HLE_KEYBOARD,
- "Sun Type 5 Keyboard (U.S.A. - HLE)",
tag,
owner,
- clock,
- "type5_hle_kbd",
- __FILE__)
+ clock)
{
}
@@ -1212,12 +1201,9 @@ hle_type5_gb_device::hle_type5_gb_device(
: hle_type4_device_base(
mconfig,
SUN_TYPE5_GB_HLE_KEYBOARD,
- "Sun Type 5 Keyboard (Great Britain - HLE)",
tag,
owner,
- clock,
- "type5_gb_hle_kbd",
- __FILE__)
+ clock)
{
}
@@ -1251,12 +1237,9 @@ hle_type5_se_device::hle_type5_se_device(
: hle_type4_device_base(
mconfig,
SUN_TYPE5_SE_HLE_KEYBOARD,
- "Sun Type 5 Keyboard (Sweden - HLE)",
tag,
owner,
- clock,
- "type5_se_hle_kbd",
- __FILE__)
+ clock)
{
}
@@ -1290,12 +1273,9 @@ hle_type5_jp_device::hle_type5_jp_device(
: hle_type4_device_base(
mconfig,
SUN_TYPE5_JP_HLE_KEYBOARD,
- "Sun Type 5 Keyboard (Japan - HLE)",
tag,
owner,
- clock,
- "type5_jp_hle_kbd",
- __FILE__)
+ clock)
{
}
diff --git a/src/devices/bus/sunkbd/hlekbd.h b/src/devices/bus/sunkbd/hlekbd.h
index 059c18caf06..0a3fea3938c 100644
--- a/src/devices/bus/sunkbd/hlekbd.h
+++ b/src/devices/bus/sunkbd/hlekbd.h
@@ -10,15 +10,8 @@
#include "sound/beep.h"
-extern device_type const SUN_TYPE3_HLE_KEYBOARD;
-extern device_type const SUN_TYPE4_HLE_KEYBOARD;
-extern device_type const SUN_TYPE5_HLE_KEYBOARD;
-extern device_type const SUN_TYPE5_GB_HLE_KEYBOARD;
-extern device_type const SUN_TYPE5_SE_HLE_KEYBOARD;
-extern device_type const SUN_TYPE5_JP_HLE_KEYBOARD;
-
-
namespace bus { namespace sunkbd {
+
class hle_device_base
: public device_t
, public device_buffered_serial_interface<16U>
@@ -26,6 +19,8 @@ class hle_device_base
, protected device_matrix_keyboard_interface<8U>
{
public:
+ virtual ~hle_device_base() override;
+
virtual machine_config_constructor device_mconfig_additions() const override;
virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) override;
@@ -34,13 +29,10 @@ protected:
// constructor/destructor
hle_device_base(
machine_config const &mconfig,
- device_type type, char const *name,
+ device_type type,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source);
- virtual ~hle_device_base() override;
+ uint32_t clock);
// device overrides
virtual void device_start() override;
@@ -204,4 +196,12 @@ public:
} } // namespace bus::sunkbd
+
+DECLARE_DEVICE_TYPE_NS(SUN_TYPE3_HLE_KEYBOARD, bus::sunkbd, hle_type3_device)
+DECLARE_DEVICE_TYPE_NS(SUN_TYPE4_HLE_KEYBOARD, bus::sunkbd, hle_type4_device)
+DECLARE_DEVICE_TYPE_NS(SUN_TYPE5_HLE_KEYBOARD, bus::sunkbd, hle_type5_device)
+DECLARE_DEVICE_TYPE_NS(SUN_TYPE5_GB_HLE_KEYBOARD, bus::sunkbd, hle_type5_gb_device)
+DECLARE_DEVICE_TYPE_NS(SUN_TYPE5_SE_HLE_KEYBOARD, bus::sunkbd, hle_type5_se_device)
+DECLARE_DEVICE_TYPE_NS(SUN_TYPE5_JP_HLE_KEYBOARD, bus::sunkbd, hle_type5_jp_device)
+
#endif // MAME_DEVICES_SUNKBD_HLEKBD_H
diff --git a/src/devices/bus/sunkbd/sunkbd.cpp b/src/devices/bus/sunkbd/sunkbd.cpp
index c6d43e0751d..55ccea6f5e9 100644
--- a/src/devices/bus/sunkbd/sunkbd.cpp
+++ b/src/devices/bus/sunkbd/sunkbd.cpp
@@ -5,7 +5,7 @@
#include "sunkbd.h"
-device_type const SUNKBD_PORT = device_creator<sun_keyboard_port_device>;
+DEFINE_DEVICE_TYPE(SUNKBD_PORT, sun_keyboard_port_device, "sunkbd", "Sun Keyboard Port")
int const device_sun_keyboard_port_interface::START_BIT_COUNT;
@@ -21,7 +21,7 @@ sun_keyboard_port_device::sun_keyboard_port_device(
char const *tag,
device_t *owner,
uint32_t clock)
- : sun_keyboard_port_device(mconfig, SUNKBD_PORT, "Sun Keyboard Port", tag, owner, clock, "sunkbd", __FILE__)
+ : sun_keyboard_port_device(mconfig, SUNKBD_PORT, tag, owner, clock)
{
}
@@ -29,13 +29,10 @@ sun_keyboard_port_device::sun_keyboard_port_device(
sun_keyboard_port_device::sun_keyboard_port_device(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_slot_interface(mconfig, *this)
, m_rxd(0)
, m_rxd_handler(*this)
diff --git a/src/devices/bus/sunkbd/sunkbd.h b/src/devices/bus/sunkbd/sunkbd.h
index 2e270812f18..67634efb57e 100644
--- a/src/devices/bus/sunkbd/sunkbd.h
+++ b/src/devices/bus/sunkbd/sunkbd.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
-#ifndef MAME_DEVICES_SUNKBD_SUNKBD_H
-#define MAME_DEVICES_SUNKBD_SUNKBD_H
+#ifndef MAME_BUS_SUNKBD_SUNKBD_H
+#define MAME_BUS_SUNKBD_SUNKBD_H
#pragma once
@@ -27,14 +27,14 @@ public:
virtual ~sun_keyboard_port_device();
// static configuration helpers
- template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object object) { return downcast<sun_keyboard_port_device &>(device).m_rxd_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast<sun_keyboard_port_device &>(device).m_rxd_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( write_txd );
DECLARE_READ_LINE_MEMBER( rxd_r ) { return m_rxd; }
protected:
- sun_keyboard_port_device(machine_config const &mconfig, device_type type, char const *name, char const *tag, device_t *owner, uint32_t clock, char const *shortname, char const *source);
+ sun_keyboard_port_device(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_config_complete() override;
@@ -72,7 +72,7 @@ protected:
};
-extern device_type const SUNKBD_PORT;
+DECLARE_DEVICE_TYPE(SUNKBD_PORT, sun_keyboard_port_device)
SLOT_INTERFACE_EXTERN( default_sun_keyboard_devices );
diff --git a/src/devices/bus/svi3x8/expander/expander.cpp b/src/devices/bus/svi3x8/expander/expander.cpp
index 6b54b620f6f..481789516ff 100644
--- a/src/devices/bus/svi3x8/expander/expander.cpp
+++ b/src/devices/bus/svi3x8/expander/expander.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SVI_EXPANDER = device_creator<svi_expander_device>;
+DEFINE_DEVICE_TYPE(SVI_EXPANDER, svi_expander_device, "svi_expander", "SVI 318/328 Expander Bus")
//**************************************************************************
@@ -28,7 +28,7 @@ const device_type SVI_EXPANDER = device_creator<svi_expander_device>;
//-------------------------------------------------
svi_expander_device::svi_expander_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SVI_EXPANDER, "SVI 318/328 Expander Bus", tag, owner, clock, "svi_expander", __FILE__),
+ device_t(mconfig, SVI_EXPANDER, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_module(nullptr),
m_int_handler(*this),
diff --git a/src/devices/bus/svi3x8/expander/expander.h b/src/devices/bus/svi3x8/expander/expander.h
index 853b2c1f50f..262d2a8ea77 100644
--- a/src/devices/bus/svi3x8/expander/expander.h
+++ b/src/devices/bus/svi3x8/expander/expander.h
@@ -34,10 +34,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_EXPANDER_EXPANDER_H
+#define MAME_BUS_SVI3X8_EXPANDER_EXPANDER_H
-#ifndef __SVI3X8_EXPANDER_H__
-#define __SVI3X8_EXPANDER_H__
+#pragma once
@@ -86,26 +86,26 @@ public:
virtual ~svi_expander_device();
// callbacks
- template<class _Object> static devcb_base &set_int_handler(device_t &device, _Object object)
- { return downcast<svi_expander_device &>(device).m_int_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
+ { return downcast<svi_expander_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_romdis_handler(device_t &device, _Object object)
- { return downcast<svi_expander_device &>(device).m_romdis_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_romdis_handler(device_t &device, Object &&cb)
+ { return downcast<svi_expander_device &>(device).m_romdis_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_ramdis_handler(device_t &device, _Object object)
- { return downcast<svi_expander_device &>(device).m_ramdis_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ramdis_handler(device_t &device, Object &&cb)
+ { return downcast<svi_expander_device &>(device).m_ramdis_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_ctrl1_handler(device_t &device, _Object object)
- { return downcast<svi_expander_device &>(device).m_ctrl1_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ctrl1_handler(device_t &device, Object &&cb)
+ { return downcast<svi_expander_device &>(device).m_ctrl1_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_ctrl2_handler(device_t &device, _Object object)
- { return downcast<svi_expander_device &>(device).m_ctrl2_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ctrl2_handler(device_t &device, Object &&cb)
+ { return downcast<svi_expander_device &>(device).m_ctrl2_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_excsr_handler(device_t &device, _Object object)
- { return downcast<svi_expander_device &>(device).m_excsr_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_excsr_handler(device_t &device, Object &&cb)
+ { return downcast<svi_expander_device &>(device).m_excsr_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_excsw_handler(device_t &device, _Object object)
- { return downcast<svi_expander_device &>(device).m_excsw_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_excsw_handler(device_t &device, Object &&cb)
+ { return downcast<svi_expander_device &>(device).m_excsw_handler.set_callback(std::forward<Object>(cb)); }
// called from cart device
DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); }
@@ -152,20 +152,21 @@ class device_svi_expander_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_svi_expander_interface(const machine_config &mconfig, device_t &device);
virtual ~device_svi_expander_interface();
- virtual DECLARE_READ8_MEMBER( mreq_r ) { return 0xff; };
- virtual DECLARE_WRITE8_MEMBER( mreq_w ){};
- virtual DECLARE_READ8_MEMBER( iorq_r ) { return 0xff; };
- virtual DECLARE_WRITE8_MEMBER( iorq_w ){};
+ virtual DECLARE_READ8_MEMBER( mreq_r ) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER( mreq_w ) { }
+ virtual DECLARE_READ8_MEMBER( iorq_r ) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER( iorq_w ) { }
- virtual void bk21_w(int state) {};
- virtual void bk22_w(int state) {};
- virtual void bk31_w(int state) {};
- virtual void bk32_w(int state) {};
+ virtual void bk21_w(int state) { }
+ virtual void bk22_w(int state) { }
+ virtual void bk31_w(int state) { }
+ virtual void bk32_w(int state) { }
protected:
+ device_svi_expander_interface(const machine_config &mconfig, device_t &device);
+
svi_expander_device *m_expander;
};
@@ -175,4 +176,4 @@ extern const device_type SVI_EXPANDER;
// include here so drivers don't need to
#include "modules.h"
-#endif // __SVI3X8_EXPANDER_H__
+#endif // MAME_BUS_SVI3X8_EXPANDER_EXPANDER_H
diff --git a/src/devices/bus/svi3x8/expander/modules.cpp b/src/devices/bus/svi3x8/expander/modules.cpp
index 04ba3635d4f..1fde553ae63 100644
--- a/src/devices/bus/svi3x8/expander/modules.cpp
+++ b/src/devices/bus/svi3x8/expander/modules.cpp
@@ -9,6 +9,10 @@
#include "emu.h"
#include "modules.h"
+#include "sv601.h"
+#include "sv602.h"
+#include "sv603.h"
+
SLOT_INTERFACE_START( svi_expander_modules )
SLOT_INTERFACE("sv601", SV601)
SLOT_INTERFACE("sv602", SV602)
diff --git a/src/devices/bus/svi3x8/expander/modules.h b/src/devices/bus/svi3x8/expander/modules.h
index 7391d55dc66..2534b7713f1 100644
--- a/src/devices/bus/svi3x8/expander/modules.h
+++ b/src/devices/bus/svi3x8/expander/modules.h
@@ -6,15 +6,11 @@
***************************************************************************/
-#pragma once
-
-#ifndef __SVI_EXPANDER_MODULES_H__
-#define __SVI_EXPANDER_MODULES_H__
+#ifndef MAME_BUS_SVI3X8_EXPANDER_MODULES_H
+#define MAME_BUS_SVI3X8_EXPANDER_MODULES_H
-#include "sv601.h"
-#include "sv602.h"
-#include "sv603.h"
+#pragma once
SLOT_INTERFACE_EXTERN( svi_expander_modules );
-#endif // __SVI_EXPANDER_MODULES_H__
+#endif // MAME_BUS_SVI3X8_EXPANDER_MODULES_H
diff --git a/src/devices/bus/svi3x8/expander/sv601.cpp b/src/devices/bus/svi3x8/expander/sv601.cpp
index e7fe68b608b..ee7c2b78a23 100644
--- a/src/devices/bus/svi3x8/expander/sv601.cpp
+++ b/src/devices/bus/svi3x8/expander/sv601.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SV601 = device_creator<sv601_device>;
+DEFINE_DEVICE_TYPE(SV601, sv601_device, "sv601", "SV-601 Super Expander")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -50,7 +50,7 @@ machine_config_constructor sv601_device::device_mconfig_additions() const
//-------------------------------------------------
sv601_device::sv601_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SV601, "SV-601 Super Expander", tag, owner, clock, "sv601", __FILE__),
+ device_t(mconfig, SV601, tag, owner, clock),
device_svi_expander_interface(mconfig, *this),
m_slotbus(*this, "slotbus")
{
diff --git a/src/devices/bus/svi3x8/expander/sv601.h b/src/devices/bus/svi3x8/expander/sv601.h
index 796b9da51b2..6689694c960 100644
--- a/src/devices/bus/svi3x8/expander/sv601.h
+++ b/src/devices/bus/svi3x8/expander/sv601.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_EXPANDER_SV601_H
+#define MAME_BUS_SVI3X8_EXPANDER_SV601_H
-#ifndef __SVI3X8_EXPANDER_SV601_H__
-#define __SVI3X8_EXPANDER_SV601_H__
+#pragma once
#include "expander.h"
#include "bus/svi3x8/slot/slot.h"
@@ -52,6 +52,6 @@ private:
};
// device type definition
-extern const device_type SV601;
+DECLARE_DEVICE_TYPE(SV601, sv601_device)
-#endif // __SVI3X8_EXPANDER_SV601_H__
+#endif // MAME_BUS_SVI3X8_EXPANDER_SV601_H
diff --git a/src/devices/bus/svi3x8/expander/sv602.cpp b/src/devices/bus/svi3x8/expander/sv602.cpp
index 119ec066544..c8d96b17ddc 100644
--- a/src/devices/bus/svi3x8/expander/sv602.cpp
+++ b/src/devices/bus/svi3x8/expander/sv602.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SV602 = device_creator<sv602_device>;
+DEFINE_DEVICE_TYPE(SV602, sv602_device, "sv602", "SV-602 Single Slot Expander")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -44,7 +44,7 @@ machine_config_constructor sv602_device::device_mconfig_additions() const
//-------------------------------------------------
sv602_device::sv602_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SV602, "SV-602 Single Slot Expander", tag, owner, clock, "sv602", __FILE__),
+ device_t(mconfig, SV602, tag, owner, clock),
device_svi_expander_interface(mconfig, *this),
m_slotbus(*this, "slotbus")
{
diff --git a/src/devices/bus/svi3x8/expander/sv602.h b/src/devices/bus/svi3x8/expander/sv602.h
index 2855f11e991..041202e2a0c 100644
--- a/src/devices/bus/svi3x8/expander/sv602.h
+++ b/src/devices/bus/svi3x8/expander/sv602.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_EXPANDER_SV602_H
+#define MAME_BUS_SVI3X8_EXPANDER_SV602_H
-#ifndef __SVI3X8_EXPANDER_SV602_H__
-#define __SVI3X8_EXPANDER_SV602_H__
+#pragma once
#include "expander.h"
#include "bus/svi3x8/slot/slot.h"
@@ -52,6 +52,6 @@ private:
};
// device type definition
-extern const device_type SV602;
+DECLARE_DEVICE_TYPE(SV602, sv602_device)
-#endif // __SVI3X8_EXPANDER_SV602_H__
+#endif // MAME_BUS_SVI3X8_EXPANDER_SV602_H
diff --git a/src/devices/bus/svi3x8/expander/sv603.cpp b/src/devices/bus/svi3x8/expander/sv603.cpp
index c0e4e16fdd2..31d1f3e630b 100644
--- a/src/devices/bus/svi3x8/expander/sv603.cpp
+++ b/src/devices/bus/svi3x8/expander/sv603.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SV603 = device_creator<sv603_device>;
+DEFINE_DEVICE_TYPE(SV603, sv603_device, "sv603", "SV-603 Coleco Game Adapter")
//-------------------------------------------------
// rom_region - device-specific ROM region
@@ -80,7 +80,7 @@ DEVICE_IMAGE_LOAD_MEMBER( sv603_device, cartridge )
//-------------------------------------------------
sv603_device::sv603_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SV603, "SV-603 Coleco Game Adapter", tag, owner, clock, "sv603", __FILE__),
+ device_t(mconfig, SV603, tag, owner, clock),
device_svi_expander_interface(mconfig, *this),
m_bios(*this, "bios"),
m_snd(*this, "snd"),
diff --git a/src/devices/bus/svi3x8/expander/sv603.h b/src/devices/bus/svi3x8/expander/sv603.h
index 584560ea5e3..68e72ddd46a 100644
--- a/src/devices/bus/svi3x8/expander/sv603.h
+++ b/src/devices/bus/svi3x8/expander/sv603.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_EXPANDER_SV603_H
+#define MAME_BUS_SVI3X8_EXPANDER_SV603_H
-#ifndef __SVI3X8_EXPANDER_SV603_H__
-#define __SVI3X8_EXPANDER_SV603_H__
+#pragma once
#include "expander.h"
#include "sound/sn76496.h"
@@ -50,6 +50,6 @@ private:
};
// device type definition
-extern const device_type SV603;
+DECLARE_DEVICE_TYPE(SV603, sv603_device)
-#endif // __SVI3X8_EXPANDER_SV603_H__
+#endif // MAME_BUS_SVI3X8_EXPANDER_SV603_H
diff --git a/src/devices/bus/svi3x8/slot/cards.cpp b/src/devices/bus/svi3x8/slot/cards.cpp
index 6a51e28a8d1..5d0192f91ea 100644
--- a/src/devices/bus/svi3x8/slot/cards.cpp
+++ b/src/devices/bus/svi3x8/slot/cards.cpp
@@ -9,6 +9,14 @@
#include "emu.h"
#include "cards.h"
+#include "sv801.h"
+#include "sv802.h"
+#include "sv803.h"
+#include "sv805.h"
+#include "sv806.h"
+#include "sv807.h"
+
+
SLOT_INTERFACE_START( svi_slot_cards )
SLOT_INTERFACE("sv801", SV801)
SLOT_INTERFACE("sv802", SV802)
diff --git a/src/devices/bus/svi3x8/slot/cards.h b/src/devices/bus/svi3x8/slot/cards.h
index 9ceeccbd840..6bca329078b 100644
--- a/src/devices/bus/svi3x8/slot/cards.h
+++ b/src/devices/bus/svi3x8/slot/cards.h
@@ -6,19 +6,12 @@
***************************************************************************/
-#pragma once
-
-#ifndef __SVI3X8_SLOT_CARDS_H__
-#define __SVI3X8_SLOT_CARDS_H__
+#ifndef MAME_BUS_SVI3X8_SLOT_CARDS_H
+#define MAME_BUS_SVI3X8_SLOT_CARDS_H
-#include "sv801.h"
-#include "sv802.h"
-#include "sv803.h"
-#include "sv805.h"
-#include "sv806.h"
-#include "sv807.h"
+#pragma once
SLOT_INTERFACE_EXTERN( svi_slot_cards );
SLOT_INTERFACE_EXTERN( sv602_slot_cards );
-#endif // __SVI3X8_SLOT_CARDS_H__
+#endif // MAME_BUS_SVI3X8_SLOT_CARDS_H
diff --git a/src/devices/bus/svi3x8/slot/slot.cpp b/src/devices/bus/svi3x8/slot/slot.cpp
index 8294369bb55..c8e35ec9c92 100644
--- a/src/devices/bus/svi3x8/slot/slot.cpp
+++ b/src/devices/bus/svi3x8/slot/slot.cpp
@@ -14,14 +14,14 @@
// SLOT BUS DEVICE
//**************************************************************************
-const device_type SVI_SLOT_BUS = device_creator<svi_slot_bus_device>;
+DEFINE_DEVICE_TYPE(SVI_SLOT_BUS, svi_slot_bus_device, "svislotbus", "SVI Slot Bus")
//-------------------------------------------------
// svi_slot_bus_device - constructor
//-------------------------------------------------
svi_slot_bus_device::svi_slot_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SVI_SLOT_BUS, "SVI Slot Bus", tag, owner, clock, "svislotbus", __FILE__),
+ device_t(mconfig, SVI_SLOT_BUS, tag, owner, clock),
m_int_handler(*this),
m_romdis_handler(*this),
m_ramdis_handler(*this)
@@ -198,14 +198,14 @@ WRITE_LINE_MEMBER( svi_slot_bus_device::bk32_w )
// SVI SLOT DEVICE
//**************************************************************************
-const device_type SVI_SLOT = device_creator<svi_slot_device>;
+DEFINE_DEVICE_TYPE(SVI_SLOT, svi_slot_device, "svislot", "SVI Slot")
//-------------------------------------------------
// svi_slot_device - constructor
//-------------------------------------------------
svi_slot_device::svi_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SVI_SLOT, "SVI Slot", tag, owner, clock, "svislot", __FILE__),
+ device_t(mconfig, SVI_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_bus_tag(nullptr)
{
@@ -256,8 +256,8 @@ void svi_slot_device::device_reset()
device_svi_slot_interface::device_svi_slot_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device),
- m_next(nullptr),
- m_bus(nullptr)
+ m_bus(nullptr),
+ m_next(nullptr)
{
}
diff --git a/src/devices/bus/svi3x8/slot/slot.h b/src/devices/bus/svi3x8/slot/slot.h
index a76a514c2f1..f8c6e52314d 100644
--- a/src/devices/bus/svi3x8/slot/slot.h
+++ b/src/devices/bus/svi3x8/slot/slot.h
@@ -34,10 +34,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_SLOT_SLOT_H
+#define MAME_BUS_SVI3X8_SLOT_SLOT_H
-#ifndef __SVI3X8_SLOT_H__
-#define __SVI3X8_SLOT_H__
+#pragma once
@@ -79,18 +79,14 @@ public:
virtual ~svi_slot_bus_device();
// callbacks
- template<class _Object> static devcb_base &set_int_handler(device_t &device, _Object object)
- { return downcast<svi_slot_bus_device &>(device).m_int_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
+ { return downcast<svi_slot_bus_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_romdis_handler(device_t &device, _Object object)
- { return downcast<svi_slot_bus_device &>(device).m_romdis_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_romdis_handler(device_t &device, Object &&cb)
+ { return downcast<svi_slot_bus_device &>(device).m_romdis_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_ramdis_handler(device_t &device, _Object object)
- { return downcast<svi_slot_bus_device &>(device).m_ramdis_handler.set_callback(object); }
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ template <class Object> static devcb_base &set_ramdis_handler(device_t &device, Object &&cb)
+ { return downcast<svi_slot_bus_device &>(device).m_ramdis_handler.set_callback(std::forward<Object>(cb)); }
void add_card(device_svi_slot_interface *card);
@@ -111,6 +107,10 @@ public:
DECLARE_WRITE_LINE_MEMBER( bk32_w );
private:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
simple_list<device_svi_slot_interface> m_dev;
devcb_write_line m_int_handler;
@@ -119,7 +119,7 @@ private:
};
// device type definition
-extern const device_type SVI_SLOT_BUS;
+DECLARE_DEVICE_TYPE(SVI_SLOT_BUS, svi_slot_bus_device)
// ======================> svi_slot_device
@@ -142,37 +142,41 @@ protected:
};
// device type definition
-extern const device_type SVI_SLOT;
+DECLARE_DEVICE_TYPE(SVI_SLOT, svi_slot_device)
// ======================> svi_slot_device
class device_svi_slot_interface : public device_slot_card_interface
{
+ template <class ElementType> friend class simple_list;
public:
// construction/destruction
- device_svi_slot_interface(const machine_config &mconfig, device_t &device);
virtual ~device_svi_slot_interface();
void set_bus_device(svi_slot_bus_device *bus);
device_svi_slot_interface *next() const { return m_next; }
- device_svi_slot_interface *m_next;
- virtual DECLARE_READ8_MEMBER( mreq_r ) { return 0xff; };
- virtual DECLARE_WRITE8_MEMBER( mreq_w ) {};
- virtual DECLARE_READ8_MEMBER( iorq_r ) { return 0xff; };
- virtual DECLARE_WRITE8_MEMBER( iorq_w ) {};
+ virtual DECLARE_READ8_MEMBER( mreq_r ) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER( mreq_w ) { }
+ virtual DECLARE_READ8_MEMBER( iorq_r ) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER( iorq_w ) { }
- virtual DECLARE_WRITE_LINE_MEMBER( bk21_w ) {};
- virtual DECLARE_WRITE_LINE_MEMBER( bk22_w ) {};
- virtual DECLARE_WRITE_LINE_MEMBER( bk31_w ) {};
- virtual DECLARE_WRITE_LINE_MEMBER( bk32_w ) {};
+ virtual DECLARE_WRITE_LINE_MEMBER( bk21_w ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( bk22_w ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( bk31_w ) { }
+ virtual DECLARE_WRITE_LINE_MEMBER( bk32_w ) { }
protected:
+ device_svi_slot_interface(const machine_config &mconfig, device_t &device);
+
svi_slot_bus_device *m_bus;
+
+private:
+ device_svi_slot_interface *m_next;
};
// include here so drivers don't need to
#include "cards.h"
-#endif // __SVI3X8_SLOT_H__
+#endif // MAME_BUS_SVI3X8_SLOT_SLOT_H
diff --git a/src/devices/bus/svi3x8/slot/sv801.cpp b/src/devices/bus/svi3x8/slot/sv801.cpp
index 32234dc2a61..d6a29c3b14b 100644
--- a/src/devices/bus/svi3x8/slot/sv801.cpp
+++ b/src/devices/bus/svi3x8/slot/sv801.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SV801 = device_creator<sv801_device>;
+DEFINE_DEVICE_TYPE(SV801, sv801_device, "sv801", "SV-801 Disk Controller")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -57,7 +57,7 @@ machine_config_constructor sv801_device::device_mconfig_additions() const
//-------------------------------------------------
sv801_device::sv801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SV801, "SV-801 Disk Controller", tag, owner, clock, "sv801", __FILE__),
+ device_t(mconfig, SV801, tag, owner, clock),
device_svi_slot_interface(mconfig, *this),
m_fdc(*this, "fdc"),
m_floppy0(*this, "fdc:0"),
diff --git a/src/devices/bus/svi3x8/slot/sv801.h b/src/devices/bus/svi3x8/slot/sv801.h
index 229fb6995ab..3bed726e725 100644
--- a/src/devices/bus/svi3x8/slot/sv801.h
+++ b/src/devices/bus/svi3x8/slot/sv801.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_SLOT_SV801_H
+#define MAME_BUS_SVI3X8_SLOT_SV801_H
-#ifndef __SVI3X8_SLOT_SV801_H__
-#define __SVI3X8_SLOT_SV801_H__
+#pragma once
#include "slot.h"
#include "machine/wd_fdc.h"
@@ -44,7 +44,7 @@ protected:
private:
DECLARE_WRITE8_MEMBER( motor_w );
- required_device<fd1793_t> m_fdc;
+ required_device<fd1793_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
@@ -55,6 +55,6 @@ private:
};
// device type definition
-extern const device_type SV801;
+DECLARE_DEVICE_TYPE(SV801, sv801_device)
-#endif // __SVI3X8_SLOT_SV801_H__
+#endif // MAME_BUS_SVI3X8_SLOT_SV801_H
diff --git a/src/devices/bus/svi3x8/slot/sv802.cpp b/src/devices/bus/svi3x8/slot/sv802.cpp
index 49b4847ae37..b79544b6325 100644
--- a/src/devices/bus/svi3x8/slot/sv802.cpp
+++ b/src/devices/bus/svi3x8/slot/sv802.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SV802 = device_creator<sv802_device>;
+DEFINE_DEVICE_TYPE(SV802, sv802_device, "sv802", "SV-802 Centronics Printer Interface")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -43,7 +43,7 @@ machine_config_constructor sv802_device::device_mconfig_additions() const
//-------------------------------------------------
sv802_device::sv802_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SV802, "SV-802 Centronics Printer Interface", tag, owner, clock, "sv802", __FILE__),
+ device_t(mconfig, SV802, tag, owner, clock),
device_svi_slot_interface(mconfig, *this),
m_centronics(*this, "centronics"),
m_cent_data_out(*this, "cent_data_out"),
diff --git a/src/devices/bus/svi3x8/slot/sv802.h b/src/devices/bus/svi3x8/slot/sv802.h
index 8d7bf241d24..a38b9f34a18 100644
--- a/src/devices/bus/svi3x8/slot/sv802.h
+++ b/src/devices/bus/svi3x8/slot/sv802.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_SLOT_SV802_H
+#define MAME_BUS_SVI3X8_SLOT_SV802_H
-#ifndef __SVI3X8_SLOT_SV802_H__
-#define __SVI3X8_SLOT_SV802_H__
+#pragma once
#include "slot.h"
#include "machine/buffer.h"
@@ -45,6 +45,6 @@ private:
};
// device type definition
-extern const device_type SV802;
+DECLARE_DEVICE_TYPE(SV802, sv802_device)
-#endif // __SVI3X8_SLOT_SV802_H__
+#endif // MAME_BUS_SVI3X8_SLOT_SV802_H
diff --git a/src/devices/bus/svi3x8/slot/sv803.cpp b/src/devices/bus/svi3x8/slot/sv803.cpp
index b67764ddd24..c5e53572d30 100644
--- a/src/devices/bus/svi3x8/slot/sv803.cpp
+++ b/src/devices/bus/svi3x8/slot/sv803.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SV803 = device_creator<sv803_device>;
+DEFINE_DEVICE_TYPE(SV803, sv803_device, "sv803", "SV-803 16k RAM Cartridge")
//**************************************************************************
@@ -26,7 +26,7 @@ const device_type SV803 = device_creator<sv803_device>;
//-------------------------------------------------
sv803_device::sv803_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SV803, "SV-803 16k RAM Cartridge", tag, owner, clock, "sv803", __FILE__),
+ device_t(mconfig, SV803, tag, owner, clock),
device_svi_slot_interface(mconfig, *this)
{
m_ram = std::make_unique<uint8_t[]>(0x4000);
diff --git a/src/devices/bus/svi3x8/slot/sv803.h b/src/devices/bus/svi3x8/slot/sv803.h
index d07da2ce404..6fd1d2b635a 100644
--- a/src/devices/bus/svi3x8/slot/sv803.h
+++ b/src/devices/bus/svi3x8/slot/sv803.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_SLOT_SV803_H
+#define MAME_BUS_SVI3X8_SLOT_SV803_H
-#ifndef __SVI3X8_SLOT_SV803_H__
-#define __SVI3X8_SLOT_SV803_H__
+#pragma once
#include "slot.h"
@@ -38,6 +38,6 @@ private:
};
// device type definition
-extern const device_type SV803;
+DECLARE_DEVICE_TYPE(SV803, sv803_device)
-#endif // __SVI3X8_SLOT_SV803_H__
+#endif // MAME_BUS_SVI3X8_SLOT_SV803_H
diff --git a/src/devices/bus/svi3x8/slot/sv805.cpp b/src/devices/bus/svi3x8/slot/sv805.cpp
index b681d8d1cc6..4edf33e3423 100644
--- a/src/devices/bus/svi3x8/slot/sv805.cpp
+++ b/src/devices/bus/svi3x8/slot/sv805.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SV805 = device_creator<sv805_device>;
+DEFINE_DEVICE_TYPE(SV805, sv805_device, "sv805", "SV-805 RS-232 Interface")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -50,7 +50,7 @@ machine_config_constructor sv805_device::device_mconfig_additions() const
//-------------------------------------------------
sv805_device::sv805_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SV805, "SV-805 RS-232 Interface", tag, owner, clock, "sv805", __FILE__),
+ device_t(mconfig, SV805, tag, owner, clock),
device_svi_slot_interface(mconfig, *this),
m_uart(*this, "uart"),
m_rs232(*this, "rs232")
diff --git a/src/devices/bus/svi3x8/slot/sv805.h b/src/devices/bus/svi3x8/slot/sv805.h
index 8cc9008772d..1a0d6eb4253 100644
--- a/src/devices/bus/svi3x8/slot/sv805.h
+++ b/src/devices/bus/svi3x8/slot/sv805.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_SLOT_SV805_H
+#define MAME_BUS_SVI3X8_SLOT_SV805_H
-#ifndef __SVI3X8_SLOT_SV805_H__
-#define __SVI3X8_SLOT_SV805_H__
+#pragma once
#include "slot.h"
#include "machine/ins8250.h"
@@ -43,6 +43,6 @@ private:
};
// device type definition
-extern const device_type SV805;
+DECLARE_DEVICE_TYPE(SV805, sv805_device)
-#endif // __SVI3X8_SLOT_SV805_H__
+#endif // MAME_BUS_SVI3X8_SLOT_SV805_H
diff --git a/src/devices/bus/svi3x8/slot/sv806.cpp b/src/devices/bus/svi3x8/slot/sv806.cpp
index c4ff1cc6c62..63eb700b624 100644
--- a/src/devices/bus/svi3x8/slot/sv806.cpp
+++ b/src/devices/bus/svi3x8/slot/sv806.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SV806 = device_creator<sv806_device>;
+DEFINE_DEVICE_TYPE(SV806, sv806_device, "sv806", "SV-806 80 Column Cartridge")
//-------------------------------------------------
// rom_region - device-specific ROM region
@@ -68,7 +68,7 @@ machine_config_constructor sv806_device::device_mconfig_additions() const
//-------------------------------------------------
sv806_device::sv806_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SV806, "SV-806 80 Column Cartridge", tag, owner, clock, "sv806", __FILE__),
+ device_t(mconfig, SV806, tag, owner, clock),
device_svi_slot_interface(mconfig, *this),
m_crtc(*this, "crtc"),
m_palette(*this, "palette"),
diff --git a/src/devices/bus/svi3x8/slot/sv806.h b/src/devices/bus/svi3x8/slot/sv806.h
index f37ce5d75f8..4dd7006c3b1 100644
--- a/src/devices/bus/svi3x8/slot/sv806.h
+++ b/src/devices/bus/svi3x8/slot/sv806.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_SLOT_SV806_H
+#define MAME_BUS_SVI3X8_SLOT_SV806_H
-#ifndef __SVI3X8_SLOT_SV806_H__
-#define __SVI3X8_SLOT_SV806_H__
+#pragma once
#include "slot.h"
#include "video/mc6845.h"
@@ -49,6 +49,6 @@ private:
};
// device type definition
-extern const device_type SV806;
+DECLARE_DEVICE_TYPE(SV806, sv806_device)
-#endif // __SVI3X8_SLOT_SV806_H__
+#endif // MAME_BUS_SVI3X8_SLOT_SV806_H
diff --git a/src/devices/bus/svi3x8/slot/sv807.cpp b/src/devices/bus/svi3x8/slot/sv807.cpp
index 0511b2373ab..565154a6e7d 100644
--- a/src/devices/bus/svi3x8/slot/sv807.cpp
+++ b/src/devices/bus/svi3x8/slot/sv807.cpp
@@ -28,7 +28,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SV807 = device_creator<sv807_device>;
+DEFINE_DEVICE_TYPE(SV807, sv807_device, "sv807", "SV-807 64k RAM Cartridge")
//-------------------------------------------------
// input_ports - device-specific input ports
@@ -77,7 +77,7 @@ ioport_constructor sv807_device::device_input_ports() const
//-------------------------------------------------
sv807_device::sv807_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SV807, "SV-807 64k RAM Cartridge", tag, owner, clock, "sv807", __FILE__),
+ device_t(mconfig, SV807, tag, owner, clock),
device_svi_slot_interface(mconfig, *this),
m_switch(*this, "S"),
m_bk21(1), m_bk22(1), m_bk31(1), m_bk32(1)
diff --git a/src/devices/bus/svi3x8/slot/sv807.h b/src/devices/bus/svi3x8/slot/sv807.h
index 8dee492b837..e3f12201d37 100644
--- a/src/devices/bus/svi3x8/slot/sv807.h
+++ b/src/devices/bus/svi3x8/slot/sv807.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_SVI3X8_SLOT_SV807_H
+#define MAME_BUS_SVI3X8_SLOT_SV807_H
-#ifndef __SVI3X8_SLOT_SV807_H__
-#define __SVI3X8_SLOT_SV807_H__
+#pragma once
#include "slot.h"
@@ -54,6 +54,6 @@ private:
};
// device type definition
-extern const device_type SV807;
+DECLARE_DEVICE_TYPE(SV807, sv807_device)
-#endif // __SVI3X8_SLOT_SV807_H__
+#endif // MAME_BUS_SVI3X8_SLOT_SV807_H
diff --git a/src/devices/bus/ti8x/bitsocket.cpp b/src/devices/bus/ti8x/bitsocket.cpp
index f712665d190..06c931eff6f 100644
--- a/src/devices/bus/ti8x/bitsocket.cpp
+++ b/src/devices/bus/ti8x/bitsocket.cpp
@@ -5,7 +5,7 @@
#include "bitsocket.h"
-device_type const TI8X_BIT_SOCKET = device_creator<bus::ti8x::bit_socket_device>;
+DEFINE_DEVICE_TYPE_NS(TI8X_BIT_SOCKET, bus::ti8x, bit_socket_device, "ti8x_bitsock", "TI-8x Bit Socket")
namespace bus { namespace ti8x {
@@ -24,7 +24,7 @@ bit_socket_device::bit_socket_device(
char const *tag,
device_t *owner,
uint32_t clock)
- : device_t(mconfig, TI8X_BIT_SOCKET, "TI-8x Bit Socket", tag, owner, clock, "ti8xbitsock", __FILE__)
+ : device_t(mconfig, TI8X_BIT_SOCKET, tag, owner, clock)
, device_ti8x_link_port_interface(mconfig, *this)
, m_stream(*this, "stream")
, m_poll_timer(nullptr)
diff --git a/src/devices/bus/ti8x/bitsocket.h b/src/devices/bus/ti8x/bitsocket.h
index de4ff6ca060..1d1f37c0add 100644
--- a/src/devices/bus/ti8x/bitsocket.h
+++ b/src/devices/bus/ti8x/bitsocket.h
@@ -9,8 +9,8 @@
bit 1 = set tip
bit 2 = set ring
*/
-#ifndef MAME_DEVICES_BUS_TI8X_BITSOCKET_H
-#define MAME_DEVICES_BUS_TI8X_BITSOCKET_H
+#ifndef MAME_BUS_TI8X_BITSOCKET_H
+#define MAME_BUS_TI8X_BITSOCKET_H
#pragma once
@@ -19,9 +19,6 @@
#include "imagedev/bitbngr.h"
-extern device_type const TI8X_BIT_SOCKET;
-
-
namespace bus { namespace ti8x {
class bit_socket_device
@@ -52,4 +49,7 @@ private:
} } // namespace bus::ti8x
-#endif // MAME_DEVICES_BUS_TI8X_BITSOCKET_H
+
+DECLARE_DEVICE_TYPE_NS(TI8X_BIT_SOCKET, bus::ti8x, bit_socket_device)
+
+#endif // MAME_BUS_TI8X_BITSOCKET_H
diff --git a/src/devices/bus/ti8x/graphlinkhle.cpp b/src/devices/bus/ti8x/graphlinkhle.cpp
index 7a5adb60725..a47f7ef5341 100644
--- a/src/devices/bus/ti8x/graphlinkhle.cpp
+++ b/src/devices/bus/ti8x/graphlinkhle.cpp
@@ -5,7 +5,7 @@
#include "graphlinkhle.h"
-device_type const TI8X_GRAPH_LINK_HLE = device_creator<bus::ti8x::graph_link_hle_device>;
+DEFINE_DEVICE_TYPE_NS(TI8X_GRAPH_LINK_HLE, bus::ti8x, graph_link_hle_device, "tii8x_glinkhle", "TI-Graph Link (grey, HLE)")
namespace bus { namespace ti8x {
@@ -25,7 +25,7 @@ graph_link_hle_device::graph_link_hle_device(
char const *tag,
device_t *owner,
uint32_t clock)
- : device_t(mconfig, TI8X_GRAPH_LINK_HLE, "TI-Graph Link (grey, HLE)", tag, owner, clock, "glinkhle", __FILE__)
+ : device_t(mconfig, TI8X_GRAPH_LINK_HLE, tag, owner, clock)
, device_ti8x_link_port_byte_interface(mconfig, *this)
, device_serial_interface(mconfig, *this)
, m_serial_port(*this, "rs232")
diff --git a/src/devices/bus/ti8x/graphlinkhle.h b/src/devices/bus/ti8x/graphlinkhle.h
index c0fef8cfbb9..6959d5b336e 100644
--- a/src/devices/bus/ti8x/graphlinkhle.h
+++ b/src/devices/bus/ti8x/graphlinkhle.h
@@ -9,10 +9,10 @@
The buffer is there so that if you connect two emulated calculators
together with these it has some chance of working. The receiving
calculator can't slow the sending calculator down like it would be able
- to in real life, so you get inevitable overruns without the buffer.
+ to in real life, so you inevitably get overruns without the buffer.
*/
-#ifndef MAME_DEVICES_BUS_TI8X_GRAPHLINKHLE_H
-#define MAME_DEVICES_BUS_TI8X_GRAPHLINKHLE_H
+#ifndef MAME_BUS_TI8X_GRAPHLINKHLE_H
+#define MAME_BUS_TI8X_GRAPHLINKHLE_H
#pragma once
@@ -23,9 +23,6 @@
#include <memory>
-extern device_type const TI8X_GRAPH_LINK_HLE;
-
-
namespace bus { namespace ti8x {
class graph_link_hle_device
@@ -63,4 +60,7 @@ private:
} } // namespace bus::ti8x
-#endif // MAME_DEVICES_BUS_TI8X_GRAPHLINKHLE_H
+
+DECLARE_DEVICE_TYPE_NS(TI8X_GRAPH_LINK_HLE, bus::ti8x, graph_link_hle_device)
+
+#endif // MAME_BUS_TI8X_GRAPHLINKHLE_H
diff --git a/src/devices/bus/ti8x/teeconn.cpp b/src/devices/bus/ti8x/teeconn.cpp
index d2d1ffbc3db..afe368ff203 100644
--- a/src/devices/bus/ti8x/teeconn.cpp
+++ b/src/devices/bus/ti8x/teeconn.cpp
@@ -5,7 +5,7 @@
#include "teeconn.h"
-device_type const TI8X_TEE_CONNECTOR = device_creator<bus::ti8x::tee_connector_device>;
+DEFINE_DEVICE_TYPE_NS(TI8X_TEE_CONNECTOR, bus::ti8x, tee_connector_device, "it8x_tconn", "TI-8x T-connector")
namespace bus { namespace ti8x {
@@ -30,7 +30,7 @@ tee_connector_device::tee_connector_device(
char const *tag,
device_t *owner,
uint32_t clock)
- : device_t(mconfig, TI8X_TEE_CONNECTOR, "T-connector", tag, owner, clock, "ti8xtconn", __FILE__)
+ : device_t(mconfig, TI8X_TEE_CONNECTOR, tag, owner, clock)
, device_ti8x_link_port_interface(mconfig, *this)
, m_port_a(*this, "a")
, m_port_b(*this, "b")
diff --git a/src/devices/bus/ti8x/teeconn.h b/src/devices/bus/ti8x/teeconn.h
index 3c6beb31b46..50d9c87c37e 100644
--- a/src/devices/bus/ti8x/teeconn.h
+++ b/src/devices/bus/ti8x/teeconn.h
@@ -11,9 +11,6 @@
#include "ti8x.h"
-extern device_type const TI8X_TEE_CONNECTOR;
-
-
namespace bus { namespace ti8x {
class tee_connector_device : public device_t, public device_ti8x_link_port_interface
@@ -42,4 +39,7 @@ protected:
} } // namespace bus::ti8x
+
+DECLARE_DEVICE_TYPE_NS(TI8X_TEE_CONNECTOR, bus::ti8x, tee_connector_device)
+
#endif // MAME_DEVICES_BUS_TI8X_TEECONN_H
diff --git a/src/devices/bus/ti8x/ti8x.cpp b/src/devices/bus/ti8x/ti8x.cpp
index 0fa99837288..528b1dc6c39 100644
--- a/src/devices/bus/ti8x/ti8x.cpp
+++ b/src/devices/bus/ti8x/ti8x.cpp
@@ -17,7 +17,7 @@
-device_type const TI8X_LINK_PORT = device_creator<ti8x_link_port_device>;
+DEFINE_DEVICE_TYPE(TI8X_LINK_PORT, ti8x_link_port_device, "ti8x_link_port", "TI-8x Link Port")
ti8x_link_port_device::ti8x_link_port_device(
@@ -25,7 +25,7 @@ ti8x_link_port_device::ti8x_link_port_device(
char const *tag,
device_t *owner,
uint32_t clock)
- : ti8x_link_port_device(mconfig, TI8X_LINK_PORT, "TI-8x Link Port", tag, owner, clock, "ti8xlink", __FILE__)
+ : ti8x_link_port_device(mconfig, TI8X_LINK_PORT, tag, owner, clock)
{
}
@@ -33,13 +33,10 @@ ti8x_link_port_device::ti8x_link_port_device(
ti8x_link_port_device::ti8x_link_port_device(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_slot_interface(mconfig, *this)
, m_tip_handler(*this)
, m_ring_handler(*this)
diff --git a/src/devices/bus/ti8x/ti8x.h b/src/devices/bus/ti8x/ti8x.h
index fdb998cb66c..5a21a4abc17 100644
--- a/src/devices/bus/ti8x/ti8x.h
+++ b/src/devices/bus/ti8x/ti8x.h
@@ -39,7 +39,7 @@
-extern device_type const TI8X_LINK_PORT;
+DECLARE_DEVICE_TYPE(TI8X_LINK_PORT, ti8x_link_port_device)
#define MCFG_TI8X_LINK_PORT_ADD(tag, slot_intf, def_slot) \
@@ -77,12 +77,9 @@ protected:
ti8x_link_port_device(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- u32 clock,
- char const *shortname,
- char const *source);
+ u32 clock);
virtual void device_start() override;
virtual void device_config_complete() override;
diff --git a/src/devices/bus/ti8x/tispeaker.cpp b/src/devices/bus/ti8x/tispeaker.cpp
index 0b916e1c4d9..952bbc5cca7 100644
--- a/src/devices/bus/ti8x/tispeaker.cpp
+++ b/src/devices/bus/ti8x/tispeaker.cpp
@@ -7,8 +7,8 @@
#include "speaker.h"
-device_type const TI8X_SPEAKER_STEREO = device_creator<bus::ti8x::stereo_speaker_device>;
-device_type const TI8X_SPEAKER_MONO = device_creator<bus::ti8x::mono_speaker_device>;
+DEFINE_DEVICE_TYPE_NS(TI8X_SPEAKER_STEREO, bus::ti8x, stereo_speaker_device, "ti8x_stspkr", "TI-8x Speaker (Stereo)")
+DEFINE_DEVICE_TYPE_NS(TI8X_SPEAKER_MONO, bus::ti8x, mono_speaker_device, "ti8x_mspkr", "TI-8x Speaker (Mono)")
namespace bus { namespace ti8x {
@@ -41,7 +41,7 @@ stereo_speaker_device::stereo_speaker_device(
char const *tag,
device_t *owner,
uint32_t clock)
- : device_t(mconfig, TI8X_SPEAKER_STEREO, "TI-8x Speaker (Stereo)", tag, owner, clock, "ti8xstspkr", __FILE__)
+ : device_t(mconfig, TI8X_SPEAKER_STEREO, tag, owner, clock)
, device_ti8x_link_port_interface(mconfig, *this)
, m_left_speaker(*this, "lspkr")
, m_right_speaker(*this, "rspkr")
@@ -78,7 +78,7 @@ mono_speaker_device::mono_speaker_device(
char const *tag,
device_t *owner,
uint32_t clock)
- : device_t(mconfig, TI8X_SPEAKER_MONO, "TI-8x Speaker (Mono)", tag, owner, clock, "ti8xmspkr", __FILE__)
+ : device_t(mconfig, TI8X_SPEAKER_MONO, tag, owner, clock)
, device_ti8x_link_port_interface(mconfig, *this)
, m_speaker(*this, "spkr")
, m_tip_state(true)
diff --git a/src/devices/bus/ti8x/tispeaker.h b/src/devices/bus/ti8x/tispeaker.h
index 308b316b3bf..1ee519f87e7 100644
--- a/src/devices/bus/ti8x/tispeaker.h
+++ b/src/devices/bus/ti8x/tispeaker.h
@@ -9,10 +9,6 @@
#include "sound/spkrdev.h"
-extern device_type const TI8X_SPEAKER_STEREO;
-extern device_type const TI8X_SPEAKER_MONO;
-
-
namespace bus { namespace ti8x {
class stereo_speaker_device : public device_t, public device_ti8x_link_port_interface
@@ -52,4 +48,8 @@ private:
} } // namespace bus::ti8x
+
+DECLARE_DEVICE_TYPE_NS(TI8X_SPEAKER_STEREO, bus::ti8x, stereo_speaker_device)
+DECLARE_DEVICE_TYPE_NS(TI8X_SPEAKER_MONO, bus::ti8x, mono_speaker_device)
+
#endif // MAME_DEVICES_BUS_TI8X_TISPEAKER_H
diff --git a/src/devices/bus/ti99x/busmouse.cpp b/src/devices/bus/ti99/colorbus/busmouse.cpp
index 87c92018889..305e1eba702 100644
--- a/src/devices/bus/ti99x/busmouse.cpp
+++ b/src/devices/bus/ti99/colorbus/busmouse.cpp
@@ -14,18 +14,17 @@
#include "emu.h"
#include "busmouse.h"
-busmouse_device::busmouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : colorbus_attached_device(mconfig, BUSMOUSE, "Bus Mouse", tag, owner, clock, "busmouse", __FILE__)
+geneve_busmouse_device::geneve_busmouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, TI99_BUSMOUSE, tag, owner, clock), device_ti99_colorbus_interface(mconfig, *this)
+ , m_buttons(*this, "MOUSEBUT"), m_xaxis(*this, "MOUSEX"), m_yaxis(*this, "MOUSEY")
{
}
-void busmouse_device::poll(int& delta_x, int& delta_y, int& buttons)
+void geneve_busmouse_device::poll(int& delta_x, int& delta_y, int& buttons)
{
- int new_mx, new_my;
-
- buttons = ioport("MOUSEBUT")->read();
- new_mx = ioport("MOUSEX")->read();
- new_my = ioport("MOUSEY")->read();
+ buttons = m_buttons->read();
+ int const new_mx = m_xaxis->read();
+ int const new_my = m_yaxis->read();
/* compute x delta */
delta_x = new_mx - m_last_mx;
@@ -36,13 +35,13 @@ void busmouse_device::poll(int& delta_x, int& delta_y, int& buttons)
m_last_my = new_my;
}
-void busmouse_device::device_start(void)
+void geneve_busmouse_device::device_start()
{
save_item(NAME(m_last_mx));
save_item(NAME(m_last_my));
}
-void busmouse_device::device_reset(void)
+void geneve_busmouse_device::device_reset()
{
m_last_mx = 0;
m_last_my = 0;
@@ -61,9 +60,9 @@ INPUT_PORTS_START( busmouse )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Middle mouse button")
INPUT_PORTS_END
-ioport_constructor busmouse_device::device_input_ports() const
+ioport_constructor geneve_busmouse_device::device_input_ports() const
{
return INPUT_PORTS_NAME( busmouse );
}
-const device_type BUSMOUSE = device_creator<busmouse_device>;
+DEFINE_DEVICE_TYPE(TI99_BUSMOUSE, geneve_busmouse_device, "ti99_busmouse", "Geneve Bus Mouse")
diff --git a/src/devices/bus/ti99x/busmouse.h b/src/devices/bus/ti99/colorbus/busmouse.h
index 6da82101dd4..15570ff2a4a 100644
--- a/src/devices/bus/ti99x/busmouse.h
+++ b/src/devices/bus/ti99/colorbus/busmouse.h
@@ -10,26 +10,30 @@
*****************************************************************************/
-#ifndef __BUSMOUSE__
-#define __BUSMOUSE__
+#ifndef MAME_BUS_TI99_COLORBUS_BUSMOUSE_H
+#define MAME_BUS_TI99_COLORBUS_BUSMOUSE_H
+
+#pragma once
#include "colorbus.h"
-extern const device_type BUSMOUSE;
+DECLARE_DEVICE_TYPE(TI99_BUSMOUSE, geneve_busmouse_device)
-class busmouse_device : public colorbus_attached_device
+class geneve_busmouse_device : public device_t, public device_ti99_colorbus_interface
{
public:
- busmouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ geneve_busmouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void poll(int& delta_x, int& delta_y, int& buttons) override;
protected:
- virtual void device_start(void) override;
- virtual void device_reset(void) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
virtual ioport_constructor device_input_ports() const override;
private:
+ required_ioport m_buttons, m_xaxis, m_yaxis;
int m_last_mx;
int m_last_my;
};
-#endif
+
+#endif // MAME_BUS_TI99_COLORBUS_BUSMOUSE_H
diff --git a/src/devices/bus/ti99x/colorbus.cpp b/src/devices/bus/ti99/colorbus/colorbus.cpp
index ee75d5befa5..f157d564861 100644
--- a/src/devices/bus/ti99x/colorbus.cpp
+++ b/src/devices/bus/ti99/colorbus/colorbus.cpp
@@ -20,10 +20,10 @@
#include "emu.h"
#include "colorbus.h"
#include "busmouse.h"
-#include "ti99defs.h"
+#include "bus/ti99x/ti99defs.h"
-colorbus_device::colorbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, COLORBUS, "Color bus", tag, owner, clock, "colorbus", __FILE__),
+ti99_colorbus_device::ti99_colorbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, TI99_COLORBUS, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_connected(nullptr),
m_v9938(*owner, VDP_TAG),
@@ -31,7 +31,7 @@ colorbus_device::colorbus_device(const machine_config &mconfig, const char *tag,
{
}
-void colorbus_device::poll()
+void ti99_colorbus_device::poll()
{
int delta_x, delta_y, buttons;
@@ -41,25 +41,25 @@ void colorbus_device::poll()
m_left_button_pressed = (buttons & 0x04)!=0;
}
-line_state colorbus_device::left_button()
+line_state ti99_colorbus_device::left_button()
{
return m_left_button_pressed? ASSERT_LINE : CLEAR_LINE;
}
-void colorbus_device::device_config_complete()
+void ti99_colorbus_device::device_config_complete()
{
- m_connected = static_cast<colorbus_attached_device*>(subdevices().first());
+ m_connected = dynamic_cast<device_ti99_colorbus_interface*>(subdevices().first());
}
/*****************************************************************************/
-void colorbus_attached_device::device_config_complete()
+void device_ti99_colorbus_interface::interface_config_complete()
{
- m_colorbus = static_cast<colorbus_device*>(owner());
+ m_colorbus = downcast<ti99_colorbus_device*>(device().owner());
}
-SLOT_INTERFACE_START( colorbus_port )
- SLOT_INTERFACE("busmouse", BUSMOUSE)
+SLOT_INTERFACE_START( ti99_colorbus_port )
+ SLOT_INTERFACE("busmouse", TI99_BUSMOUSE)
SLOT_INTERFACE_END
-const device_type COLORBUS = device_creator<colorbus_device>;
+DEFINE_DEVICE_TYPE(TI99_COLORBUS, ti99_colorbus_device, "ti99_colorbus", "v9938 Color bus")
diff --git a/src/devices/bus/ti99x/colorbus.h b/src/devices/bus/ti99/colorbus/colorbus.h
index f56defb36a2..74d939e77d7 100644
--- a/src/devices/bus/ti99x/colorbus.h
+++ b/src/devices/bus/ti99/colorbus/colorbus.h
@@ -11,54 +11,54 @@
*****************************************************************************/
-#ifndef __COLORBUS__
-#define __COLORBUS__
+#ifndef MAME_BUS_TI99_COLORBUS_COLORBUS_H
+#define MAME_BUS_TI99_COLORBUS_COLORBUS_H
+
+#pragma once
#include "video/v9938.h"
-extern const device_type COLORBUS;
-class colorbus_device;
+DECLARE_DEVICE_TYPE(TI99_COLORBUS, ti99_colorbus_device)
/********************************************************************
Common parent class of all devices attached to the color bus
********************************************************************/
-class colorbus_attached_device : public device_t
+class device_ti99_colorbus_interface : public device_slot_card_interface
{
public:
- colorbus_attached_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source), m_colorbus(nullptr) { };
-
- virtual void poll(int& delta_x, int& delta_y, int& buttons) =0;
+ virtual void poll(int& delta_x, int& delta_y, int& buttons) = 0;
protected:
- virtual void device_config_complete() override;
- colorbus_device* m_colorbus;
+ using device_slot_card_interface::device_slot_card_interface;
+
+ virtual void interface_config_complete() override;
+ ti99_colorbus_device* m_colorbus = nullptr;
};
/********************************************************************
Color bus port
********************************************************************/
-class colorbus_device : public device_t, public device_slot_interface
+class ti99_colorbus_device : public device_t, public device_slot_interface
{
public:
- colorbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ti99_colorbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
line_state left_button(); // left button is not connected to the V9938 but to a TMS9901 pin
void poll();
protected:
- void device_start() override { };
+ void device_start() override { }
void device_config_complete() override;
private:
- colorbus_attached_device* m_connected;
+ device_ti99_colorbus_interface* m_connected;
required_device<v9938_device> m_v9938;
bool m_left_button_pressed;
};
-SLOT_INTERFACE_EXTERN(colorbus_port);
+SLOT_INTERFACE_EXTERN(ti99_colorbus_port);
#define MCFG_COLORBUS_MOUSE_ADD( _tag ) \
- MCFG_DEVICE_ADD(_tag, COLORBUS, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(colorbus_port, "busmouse", false)
+ MCFG_DEVICE_ADD(_tag, TI99_COLORBUS, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(ti99_colorbus_port, "busmouse", false)
-#endif
+#endif // MAME_BUS_TI99_COLORBUS_COLORBUS_H
diff --git a/src/devices/bus/ti99x/handset.cpp b/src/devices/bus/ti99/joyport/handset.cpp
index e1f584f415d..8e2833e2c84 100644
--- a/src/devices/bus/ti99x/handset.cpp
+++ b/src/devices/bus/ti99/joyport/handset.cpp
@@ -52,7 +52,7 @@ static const char *const joynames[2][4] =
static const char *const keynames[] = { "KP0", "KP1", "KP2", "KP3", "KP4" };
ti99_handset_device::ti99_handset_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : joyport_attached_device(mconfig, HANDSET, "TI-99/4 IR handset", tag, owner, clock, "handset", __FILE__), m_ack(0), m_clock_high(false), m_buf(0), m_buflen(0), m_delay_timer(nullptr)
+ : device_t(mconfig, TI99_HANDSET, tag, owner, clock), device_ti99_joyport_interface(mconfig, *this), m_ack(0), m_clock_high(false), m_buf(0), m_buflen(0), m_delay_timer(nullptr)
{
}
@@ -317,7 +317,7 @@ void ti99_handset_device::pulse_clock()
do_task();
}
-void ti99_handset_device::device_start(void)
+void ti99_handset_device::device_start()
{
m_delay_timer = timer_alloc(DELAY_TIMER);
save_item(NAME(m_ack));
@@ -328,7 +328,7 @@ void ti99_handset_device::device_start(void)
save_pointer(NAME(previous_key), MAX_HANDSETS);
}
-void ti99_handset_device::device_reset(void)
+void ti99_handset_device::device_reset()
{
if (VERBOSE>5) LOG("ti99_handset_device: Reset\n");
m_delay_timer->enable(true);
@@ -469,7 +469,7 @@ ioport_constructor ti99_handset_device::device_input_ports() const
return INPUT_PORTS_NAME( handset );
}
-const device_type HANDSET = device_creator<ti99_handset_device>;
+DEFINE_DEVICE_TYPE(TI99_HANDSET, ti99_handset_device, "ti99_handset", "TI-99/4 IR handset")
/******************************************************************************
Twin Joystick
@@ -496,12 +496,12 @@ INPUT_PORTS_START( joysticks )
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1/*, "(2FIRE)", CODE_NONE, OSD_JOY2_FIRE, 0*/) PORT_PLAYER(2)
INPUT_PORTS_END
-ti99_twin_joystick::ti99_twin_joystick(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: joyport_attached_device(mconfig, TI99_JOYSTICK, "TI-99/4(A) Twin Joystick", tag, owner, clock, "twinjoy", __FILE__), m_joystick(0)
+ti99_twin_joystick_device::ti99_twin_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, TI99_JOYSTICK, tag, owner, clock), device_ti99_joyport_interface(mconfig, *this), m_joystick(0)
{
}
-void ti99_twin_joystick::device_start(void)
+void ti99_twin_joystick_device::device_start()
{
save_item(NAME(m_joystick));
}
@@ -511,7 +511,7 @@ void ti99_twin_joystick::device_start(void)
answer = |0|0|0|U|D|R|L|B|
*/
-uint8_t ti99_twin_joystick::read_dev()
+uint8_t ti99_twin_joystick_device::read_dev()
{
uint8_t value;
if (m_joystick==1) value = ioport("JOY1")->read();
@@ -520,19 +520,19 @@ uint8_t ti99_twin_joystick::read_dev()
if (m_joystick==2) value = ioport("JOY2")->read();
else value = 0xff;
}
- if (VERBOSE>6) LOG("ti99_twin_joystick: joy%d = %02x\n", m_joystick, value);
+ if (VERBOSE>6) LOG("ti99_twin_joystick_device: joy%d = %02x\n", m_joystick, value);
return value;
}
-void ti99_twin_joystick::write_dev(uint8_t data)
+void ti99_twin_joystick_device::write_dev(uint8_t data)
{
- if (VERBOSE>7) LOG("ti99_twin_joystick: Select joystick %d\n", data);
+ if (VERBOSE>7) LOG("ti99_twin_joystick_device: Select joystick %d\n", data);
m_joystick = data & 0x03;
}
-ioport_constructor ti99_twin_joystick::device_input_ports() const
+ioport_constructor ti99_twin_joystick_device::device_input_ports() const
{
return INPUT_PORTS_NAME( joysticks );
}
-const device_type TI99_JOYSTICK = device_creator<ti99_twin_joystick>;
+DEFINE_DEVICE_TYPE(TI99_JOYSTICK, ti99_twin_joystick_device, "ti99_twinjoy", "TI-99/4(A) Twin Joysticks")
diff --git a/src/devices/bus/ti99x/handset.h b/src/devices/bus/ti99/joyport/handset.h
index 7156ddea6d4..043c426e50c 100644
--- a/src/devices/bus/ti99x/handset.h
+++ b/src/devices/bus/ti99/joyport/handset.h
@@ -14,16 +14,16 @@
*****************************************************************************/
-#ifndef __HANDSET__
-#define __HANDSET__
+#ifndef MAME_BUS_TI99_JOYPORT_HANDSET_H
+#define MAME_BUS_TI99_JOYPORT_HANDSET_H
-#include "joyport.h"
+#pragma once
-#define MAX_HANDSETS 4
+#include "joyport.h"
-extern const device_type HANDSET;
+DECLARE_DEVICE_TYPE(TI99_HANDSET, ti99_handset_device)
-class ti99_handset_device : public joyport_attached_device
+class ti99_handset_device : public device_t, public device_ti99_joyport_interface
{
public:
ti99_handset_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -34,13 +34,15 @@ public:
void pulse_clock() override;
protected:
- virtual void device_start(void) override;
- virtual void device_reset(void) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
virtual ioport_constructor device_input_ports() const override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ static constexpr unsigned MAX_HANDSETS = 4;
+
void do_task();
void post_message(int message);
bool poll_keyboard(int num);
@@ -59,13 +61,13 @@ private:
/****************************************************************************/
-extern const device_type TI99_JOYSTICK;
+DECLARE_DEVICE_TYPE(TI99_JOYSTICK, ti99_twin_joystick_device)
-class ti99_twin_joystick : public joyport_attached_device
+class ti99_twin_joystick_device : public device_t, public device_ti99_joyport_interface
{
public:
- ti99_twin_joystick(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start(void) override;
+ ti99_twin_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual void device_start() override;
uint8_t read_dev() override;
void write_dev(uint8_t data) override;
@@ -81,4 +83,4 @@ private:
};
-#endif
+#endif // MAME_BUS_TI99_JOYPORT_HANDSET_H
diff --git a/src/devices/bus/ti99x/joyport.cpp b/src/devices/bus/ti99/joyport/joyport.cpp
index ea7d3e18100..d41a005258c 100644
--- a/src/devices/bus/ti99x/joyport.cpp
+++ b/src/devices/bus/ti99/joyport/joyport.cpp
@@ -40,8 +40,8 @@
#include "handset.h"
#include "mecmouse.h"
-joyport_device::joyport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, JOYPORT, "Joystick port", tag, owner, clock, "ti99_joyport", __FILE__),
+ti99_joyport_device::ti99_joyport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, TI99_JOYPORT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_interrupt(*this), m_connected(nullptr)
{
@@ -50,7 +50,7 @@ joyport_device::joyport_device(const machine_config &mconfig, const char *tag, d
/*
Reads a value from the port.
*/
-uint8_t joyport_device::read_port()
+uint8_t ti99_joyport_device::read_port()
{
return m_connected->read_dev();
}
@@ -59,7 +59,7 @@ uint8_t joyport_device::read_port()
This is used to select the device at the port. The device should keep this
value until read() is called.
*/
-void joyport_device::write_port(int data)
+void ti99_joyport_device::write_port(int data)
{
m_connected->write_dev(data);
}
@@ -67,7 +67,7 @@ void joyport_device::write_port(int data)
/*
This is only used for the handset device of the TI-99/4. It is driven by the VDP interrupt.
*/
-void joyport_device::pulse_clock()
+void ti99_joyport_device::pulse_clock()
{
m_connected->pulse_clock();
}
@@ -76,41 +76,41 @@ void joyport_device::pulse_clock()
Propagate the interrupt to the defined target. Only used for the handset
at the prototype 99/4.
*/
-WRITE_LINE_MEMBER( joyport_device::set_interrupt )
+WRITE_LINE_MEMBER( ti99_joyport_device::set_interrupt )
{
m_interrupt(state);
}
-void joyport_device::device_start()
+void ti99_joyport_device::device_start()
{
m_interrupt.resolve();
}
-void joyport_device::device_config_complete()
+void ti99_joyport_device::device_config_complete()
{
- m_connected = static_cast<joyport_attached_device*>(subdevices().first());
+ m_connected = dynamic_cast<device_ti99_joyport_interface*>(subdevices().first());
}
/*****************************************************************************/
-void joyport_attached_device::device_config_complete()
+void device_ti99_joyport_interface::interface_config_complete()
{
- m_joyport = static_cast<joyport_device*>(owner());
+ m_joyport = downcast<ti99_joyport_device*>(device().owner());
}
-SLOT_INTERFACE_START( joystick_port )
+SLOT_INTERFACE_START( ti99_joystick_port )
SLOT_INTERFACE("twinjoy", TI99_JOYSTICK)
- SLOT_INTERFACE("mecmouse", MECMOUSE)
+ SLOT_INTERFACE("mecmouse", TI99_MECMOUSE)
SLOT_INTERFACE_END
-SLOT_INTERFACE_START( joystick_port_gen )
+SLOT_INTERFACE_START( ti99_joystick_port_gen )
SLOT_INTERFACE("twinjoy", TI99_JOYSTICK)
SLOT_INTERFACE_END
-SLOT_INTERFACE_START( joystick_port_994 )
+SLOT_INTERFACE_START( ti99_joystick_port_994 )
SLOT_INTERFACE("twinjoy", TI99_JOYSTICK)
- SLOT_INTERFACE("mecmouse", MECMOUSE)
- SLOT_INTERFACE("handset", HANDSET)
+ SLOT_INTERFACE("mecmouse", TI99_MECMOUSE)
+ SLOT_INTERFACE("handset", TI99_HANDSET)
SLOT_INTERFACE_END
-const device_type JOYPORT = device_creator<joyport_device>;
+DEFINE_DEVICE_TYPE(TI99_JOYPORT, ti99_joyport_device, "ti99_joyport", "TI-99 Joystick port")
diff --git a/src/devices/bus/ti99/joyport/joyport.h b/src/devices/bus/ti99/joyport/joyport.h
new file mode 100644
index 00000000000..789732ec1dd
--- /dev/null
+++ b/src/devices/bus/ti99/joyport/joyport.h
@@ -0,0 +1,87 @@
+// license:LGPL-2.1+
+// copyright-holders:Michael Zapf
+/****************************************************************************
+
+ Joystick port
+
+ Now explicitly implemented as a slot device
+ A joystick port allows for plugging in a single or twin joystick, or
+ a Mechatronics mouse.
+
+ The TI-99/4 also offers an infrared handset, connected to this port. For
+ this reason we also need an interrupt line.
+
+ Michael Zapf
+
+ June 2012
+
+*****************************************************************************/
+
+#ifndef MAME_BUS_TI99_JOYPORT_JOYPORT_H
+#define MAME_BUS_TI99_JOYPORT_JOYPORT_H
+
+#pragma once
+
+
+DECLARE_DEVICE_TYPE(TI99_JOYPORT, ti99_joyport_device)
+
+/********************************************************************
+ Common parent class of all devices attached to the joystick port
+********************************************************************/
+class device_ti99_joyport_interface : public device_slot_card_interface
+{
+public:
+ virtual uint8_t read_dev() = 0;
+ virtual void write_dev(uint8_t data) = 0;
+ virtual void pulse_clock() { }
+
+protected:
+ using device_slot_card_interface::device_slot_card_interface;
+
+ virtual void interface_config_complete() override;
+ ti99_joyport_device* m_joyport = nullptr;
+};
+
+/********************************************************************
+ Joystick port
+********************************************************************/
+class ti99_joyport_device : public device_t, public device_slot_interface
+{
+public:
+ ti99_joyport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ uint8_t read_port();
+ void write_port(int data);
+ void set_interrupt(int state);
+ void pulse_clock();
+
+ template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) { return downcast<ti99_joyport_device &>(device).m_interrupt.set_callback(std::forward<Object>(cb)); }
+
+protected:
+ void device_start() override;
+ void device_config_complete() override;
+
+private:
+ devcb_write_line m_interrupt;
+ device_ti99_joyport_interface* m_connected;
+};
+
+SLOT_INTERFACE_EXTERN(ti99_joystick_port);
+SLOT_INTERFACE_EXTERN(ti99_joystick_port_994);
+SLOT_INTERFACE_EXTERN(ti99_joystick_port_gen);
+
+#define MCFG_JOYPORT_INT_HANDLER( _intcallb ) \
+ devcb = &ti99_joyport_device::static_set_int_callback( *device, DEVCB_##_intcallb );
+
+#define MCFG_GENEVE_JOYPORT_ADD( _tag ) \
+ MCFG_DEVICE_ADD(_tag, TI99_JOYPORT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(ti99_joystick_port_gen, "twinjoy", false)
+
+#define MCFG_TI_JOYPORT4A_ADD( _tag ) \
+ MCFG_DEVICE_ADD(_tag, TI99_JOYPORT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(ti99_joystick_port, "twinjoy", false)
+
+#define MCFG_TI_JOYPORT4_ADD( _tag ) \
+ MCFG_DEVICE_ADD(_tag, TI99_JOYPORT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(ti99_joystick_port_994, "twinjoy", false)
+
+#endif // MAME_BUS_TI99_JOYPORT_JOYPORT_H
diff --git a/src/devices/bus/ti99x/mecmouse.cpp b/src/devices/bus/ti99/joyport/mecmouse.cpp
index 52b49721e19..75466df7844 100644
--- a/src/devices/bus/ti99x/mecmouse.cpp
+++ b/src/devices/bus/ti99/joyport/mecmouse.cpp
@@ -53,13 +53,13 @@
#define POLL_TIMER 1
-mecmouse_device::mecmouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : joyport_attached_device(mconfig, MECMOUSE, "Mechatronics Mouse", tag, owner, clock, "mecmouse", __FILE__), m_last_select(0), m_read_y_axis(false), m_x(0), m_y(0), m_x_buf(0), m_y_buf(0), m_last_mx(0), m_last_my(0), m_poll_timer(nullptr)
+ti99_mecmouse_device::ti99_mecmouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, TI99_MECMOUSE, tag, owner, clock), device_ti99_joyport_interface(mconfig, *this), m_last_select(0), m_read_y_axis(false), m_x(0), m_y(0), m_x_buf(0), m_y_buf(0), m_last_mx(0), m_last_my(0), m_poll_timer(nullptr)
{
}
-uint8_t mecmouse_device::read_dev()
+uint8_t ti99_mecmouse_device::read_dev()
{
int answer;
int buttons = ioport("MOUSE0")->read() & 3;
@@ -81,7 +81,7 @@ uint8_t mecmouse_device::read_dev()
/*
Used to select lines. data = 0x01 (Joy1), 0x02 (Joy2)
*/
-void mecmouse_device::write_dev(uint8_t data)
+void ti99_mecmouse_device::write_dev(uint8_t data)
{
if (data == 0x02) {
if (m_last_select == 0x01) {
@@ -128,7 +128,7 @@ void mecmouse_device::write_dev(uint8_t data)
}
}
-void mecmouse_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void ti99_mecmouse_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
// Poll the movement
int new_mx, new_my;
@@ -157,7 +157,7 @@ void mecmouse_device::device_timer(emu_timer &timer, device_timer_id id, int par
m_y += delta_y;
}
-void mecmouse_device::device_start(void)
+void ti99_mecmouse_device::device_start()
{
m_poll_timer = timer_alloc(POLL_TIMER);
// The poll time cannot depend on the console settings, since the TI-99/4A
@@ -175,7 +175,7 @@ void mecmouse_device::device_start(void)
save_item(NAME(m_last_my));
}
-void mecmouse_device::device_reset(void)
+void ti99_mecmouse_device::device_reset()
{
m_poll_timer->enable(true);
m_last_select = 0;
@@ -199,9 +199,9 @@ INPUT_PORTS_START( mecmouse )
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Mouse Button 2") PORT_PLAYER(1)
INPUT_PORTS_END
-ioport_constructor mecmouse_device::device_input_ports() const
+ioport_constructor ti99_mecmouse_device::device_input_ports() const
{
return INPUT_PORTS_NAME( mecmouse );
}
-const device_type MECMOUSE = device_creator<mecmouse_device>;
+DEFINE_DEVICE_TYPE(TI99_MECMOUSE, ti99_mecmouse_device, "ti99_mecmouse", "TI-99 Mechatronics Mouse")
diff --git a/src/devices/bus/ti99x/mecmouse.h b/src/devices/bus/ti99/joyport/mecmouse.h
index db33baae305..f73a86c5f53 100644
--- a/src/devices/bus/ti99x/mecmouse.h
+++ b/src/devices/bus/ti99/joyport/mecmouse.h
@@ -11,24 +11,24 @@
*****************************************************************************/
-#ifndef __MECMOUSE__
-#define __MECMOUSE__
+#ifndef MAME_BUS_TI99_JOYPORT_MECMOUSE_H
+#define MAME_BUS_TI99_JOYPORT_MECMOUSE_H
#include "joyport.h"
-extern const device_type MECMOUSE;
+DECLARE_DEVICE_TYPE(TI99_MECMOUSE, ti99_mecmouse_device)
-class mecmouse_device : public joyport_attached_device
+class ti99_mecmouse_device : public device_t, public device_ti99_joyport_interface
{
public:
- mecmouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ti99_mecmouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
uint8_t read_dev() override;
void write_dev(uint8_t data) override;
protected:
- virtual void device_start(void) override;
- virtual void device_reset(void) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
virtual ioport_constructor device_input_ports() const override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -44,4 +44,5 @@ private:
emu_timer *m_poll_timer;
};
-#endif
+
+#endif // MAME_BUS_TI99_JOYPORT_MECMOUSE_H
diff --git a/src/devices/bus/ti99_peb/bwg.cpp b/src/devices/bus/ti99/peb/bwg.cpp
index 0da1717e169..a7993501d2b 100644
--- a/src/devices/bus/ti99_peb/bwg.cpp
+++ b/src/devices/bus/ti99/peb/bwg.cpp
@@ -43,10 +43,8 @@
*******************************************************************************/
#include "emu.h"
-#include "peribox.h"
#include "bwg.h"
#include "formats/ti99_dsk.h"
-#include "imagedev/flopdrv.h"
// ----------------------------------
// Flags for debugging
@@ -85,7 +83,7 @@
*/
snug_bwg_device::snug_bwg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ti_expansion_card_device(mconfig, TI99_BWG, "SNUG BwG Floppy Controller", tag, owner, clock, "ti99_bwg", __FILE__),
+ : ti_expansion_card_device(mconfig, TI99_BWG, tag, owner, clock),
m_DRQ(), m_IRQ(), m_dip1(0), m_dip2(0), m_dip34(0), m_ram_page(0),
m_rom_page(0), m_WAITena(false), m_inDsrArea(false), m_WDsel(false),
m_WDsel0(false), m_RTCsel(false), m_lastK(false), m_dataregLB(false),
@@ -559,7 +557,7 @@ void snug_bwg_device::set_floppy_motors_running(bool run)
operate_ready_line();
}
-void snug_bwg_device::device_start(void)
+void snug_bwg_device::device_start()
{
logerror("bwg: BWG start\n");
m_dsrrom = memregion(DSRROM)->base();
@@ -728,4 +726,4 @@ const tiny_rom_entry *snug_bwg_device::device_rom_region() const
return ROM_NAME( bwg_fdc );
}
-const device_type TI99_BWG = device_creator<snug_bwg_device>;
+DEFINE_DEVICE_TYPE(TI99_BWG, snug_bwg_device, "ti99_bwg", "SNUG BwG Floppy Controller")
diff --git a/src/devices/bus/ti99_peb/bwg.h b/src/devices/bus/ti99/peb/bwg.h
index cdebe19bad0..de202241519 100644
--- a/src/devices/bus/ti99_peb/bwg.h
+++ b/src/devices/bus/ti99/peb/bwg.h
@@ -11,20 +11,24 @@
*****************************************************************************/
-#ifndef __BWG__
-#define __BWG__
+#ifndef MAME_BUS_TI99_PED_BWG_H
+#define MAME_BUS_TI99_PED_BWG_H
+#pragma once
+
+#include "peribox.h"
#include "imagedev/flopdrv.h"
#include "machine/mm58274c.h"
#include "machine/wd_fdc.h"
#include "machine/ram.h"
-extern const device_type TI99_BWG;
+DECLARE_DEVICE_TYPE(TI99_BWG, snug_bwg_device)
class snug_bwg_device : public ti_expansion_card_device
{
public:
snug_bwg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
DECLARE_SETADDRESS_DBIN_MEMBER(setaddress_dbin) override;
@@ -59,6 +63,9 @@ private:
// Set the current floppy
void set_drive();
+ // Operate the floppy motors
+ void set_floppy_motors_running(bool run);
+
// Holds the status of the DRQ and IRQ lines.
int m_DRQ, m_IRQ;
@@ -69,9 +76,6 @@ private:
int m_ram_page; // 0-1
int m_rom_page; // 0-3
- // Operate the floppy motors
- void set_floppy_motors_running(bool run);
-
// When true, the READY line will be cleared (create wait states) when
// waiting for data from the controller.
bool m_WAITena;
@@ -129,9 +133,10 @@ private:
floppy_image_device* m_current_floppy;
// Link to the WD1773 controller on the board.
- required_device<wd1773_t> m_wd1773;
+ required_device<wd1773_device> m_wd1773;
// Link to the real-time clock on the board.
required_device<mm58274c_device> m_clock;
};
-#endif
+
+#endif // MAME_BUS_TI99_PED_BWG_H
diff --git a/src/devices/bus/ti99_peb/evpc.cpp b/src/devices/bus/ti99/peb/evpc.cpp
index c1657072cc8..b8cc021765e 100644
--- a/src/devices/bus/ti99_peb/evpc.cpp
+++ b/src/devices/bus/ti99/peb/evpc.cpp
@@ -48,7 +48,7 @@
#define NOVRAM_SIZE 256
snug_enhanced_video_device::snug_enhanced_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: ti_expansion_card_device(mconfig, TI99_EVPC, "SNUG Enhanced Video Processor Card", tag, owner, clock, "ti99_evpc", __FILE__),
+ : ti_expansion_card_device(mconfig, TI99_EVPC, tag, owner, clock),
device_nvram_interface(mconfig, *this),
m_dsr_page(0),
m_inDsrArea(false),
@@ -495,4 +495,4 @@ machine_config_constructor snug_enhanced_video_device::device_mconfig_additions(
return MACHINE_CONFIG_NAME( ti99_evpc );
}
-const device_type TI99_EVPC = device_creator<snug_enhanced_video_device>;
+DEFINE_DEVICE_TYPE(TI99_EVPC, snug_enhanced_video_device, "ti99_evpc", "SNUG Enhanced Video Processor Card")
diff --git a/src/devices/bus/ti99_peb/evpc.h b/src/devices/bus/ti99/peb/evpc.h
index 989a048d05b..bb53e285a28 100644
--- a/src/devices/bus/ti99_peb/evpc.h
+++ b/src/devices/bus/ti99/peb/evpc.h
@@ -12,25 +12,18 @@
*****************************************************************************/
-#ifndef __EVPC__
-#define __EVPC__
+#ifndef MAME_BUS_TI99_PEB_EVPC_H
+#define MAME_BUS_TI99_PEB_EVPC_H
+
+#pragma once
#include "peribox.h"
#include "video/v9938.h"
#include "sound/sn76496.h"
#include "bus/ti99x/ti99defs.h"
-#include "bus/ti99x/colorbus.h"
-
-extern const device_type TI99_EVPC;
+#include "bus/ti99/colorbus/colorbus.h"
-struct evpc_palette
-{
- uint8_t read_index, write_index, mask;
- int read;
- int state;
- struct { uint8_t red, green, blue; } color[0x100];
- //int dirty;
-};
+DECLARE_DEVICE_TYPE(TI99_EVPC, snug_enhanced_video_device)
class snug_enhanced_video_device : public ti_expansion_card_device, public device_nvram_interface
{
@@ -49,9 +42,18 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER( hblank_interrupt );
protected:
- void device_start(void) override;
- void device_reset(void) override;
- void device_stop(void) override;
+ struct evpc_palette
+ {
+ uint8_t read_index, write_index, mask;
+ int read;
+ int state;
+ struct { uint8_t red, green, blue; } color[0x100];
+ //int dirty;
+ };
+
+ void device_start() override;
+ void device_reset() override;
+ void device_stop() override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual ioport_constructor device_input_ports() const override;
@@ -80,8 +82,8 @@ private:
evpc_palette m_palette;
required_device<v9938_device> m_video;
required_device<sn76496_base_device> m_sound;
- required_device<colorbus_device> m_colorbus;
+ required_device<ti99_colorbus_device> m_colorbus;
evpc_clock_connector* m_console_conn;
};
-#endif
+#endif // MAME_BUS_TI99_PEB_EVPC_H
diff --git a/src/devices/bus/ti99_peb/hfdc.cpp b/src/devices/bus/ti99/peb/hfdc.cpp
index f719d633a5e..a4067c6bd12 100644
--- a/src/devices/bus/ti99_peb/hfdc.cpp
+++ b/src/devices/bus/ti99/peb/hfdc.cpp
@@ -55,7 +55,6 @@
*****************************************************************************/
#include "emu.h"
-#include "peribox.h"
#include "hfdc.h"
#include "formats/mfm_hd.h"
#include "formats/ti99_dsk.h" // Format
@@ -88,7 +87,7 @@
Constructor for the HFDC card.
*/
myarc_hfdc_device::myarc_hfdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ti_expansion_card_device(mconfig, TI99_HFDC, "Myarc Hard and Floppy Disk Controller", tag, owner, clock, "ti99_hfdc", __FILE__), m_motor_on_timer(nullptr),
+ : ti_expansion_card_device(mconfig, TI99_HFDC, tag, owner, clock), m_motor_on_timer(nullptr),
m_hdc9234(*this, FDC_TAG),
m_clock(*this, CLOCK_TAG), m_current_floppy(nullptr),
m_current_harddisk(nullptr), m_see_switches(false),
@@ -511,8 +510,8 @@ void myarc_hfdc_device::device_timer(emu_timer &timer, device_timer_id id, int p
void myarc_hfdc_device::floppy_index_callback(floppy_image_device *floppy, int state)
{
if (TRACE_LINES) if (state==1) logerror("Floppy index pulse\n");
- // m_status_latch = (state==ASSERT_LINE)? (m_status_latch | HDC_DS_INDEX) : (m_status_latch & ~HDC_DS_INDEX);
- set_bits(m_status_latch, HDC_DS_INDEX, (state==ASSERT_LINE));
+ // m_status_latch = (state==ASSERT_LINE)? (m_status_latch | hdc92x4_device::DS_INDEX) : (m_status_latch & ~hdc92x4_device::DS_INDEX);
+ set_bits(m_status_latch, hdc92x4_device::DS_INDEX, (state==ASSERT_LINE));
signal_drive_status();
}
@@ -522,7 +521,7 @@ void myarc_hfdc_device::floppy_index_callback(floppy_image_device *floppy, int s
void myarc_hfdc_device::harddisk_index_callback(mfm_harddisk_device *harddisk, int state)
{
if (TRACE_LINES) if (state==1) logerror("HD index pulse\n");
- set_bits(m_status_latch, HDC_DS_INDEX, (state==ASSERT_LINE));
+ set_bits(m_status_latch, hdc92x4_device::DS_INDEX, (state==ASSERT_LINE));
signal_drive_status();
}
@@ -532,7 +531,7 @@ void myarc_hfdc_device::harddisk_index_callback(mfm_harddisk_device *harddisk, i
void myarc_hfdc_device::harddisk_ready_callback(mfm_harddisk_device *harddisk, int state)
{
if (TRACE_LINES) logerror("HD READY = %d\n", state);
- set_bits(m_status_latch, HDC_DS_READY, (state==ASSERT_LINE));
+ set_bits(m_status_latch, hdc92x4_device::DS_READY, (state==ASSERT_LINE));
signal_drive_status();
}
@@ -542,7 +541,7 @@ void myarc_hfdc_device::harddisk_ready_callback(mfm_harddisk_device *harddisk, i
void myarc_hfdc_device::harddisk_skcom_callback(mfm_harddisk_device *harddisk, int state)
{
if (TRACE_LINES) logerror("HD seek complete = %d\n", state);
- set_bits(m_status_latch, HDC_DS_SKCOM, (state==ASSERT_LINE));
+ set_bits(m_status_latch, hdc92x4_device::DS_SKCOM, (state==ASSERT_LINE));
signal_drive_status();
}
@@ -593,7 +592,7 @@ void myarc_hfdc_device::signal_drive_status()
// Check for TRK00*
if ((m_current_floppy != nullptr) && (!m_current_floppy->trk00_r()))
- reply |= HDC_DS_TRK00;
+ reply |= hdc92x4_device::DS_TRK00;
}
else
{
@@ -603,13 +602,13 @@ void myarc_hfdc_device::signal_drive_status()
{
if (m_current_harddisk->ready_r()==ASSERT_LINE)
{
- m_status_latch |= HDC_DS_READY;
- set_bits(m_status_latch, HDC_DS_SKCOM, m_current_harddisk->seek_complete_r()==ASSERT_LINE);
- set_bits(m_status_latch, HDC_DS_TRK00, m_current_harddisk->trk00_r()==ASSERT_LINE);
+ m_status_latch |= hdc92x4_device::DS_READY;
+ set_bits(m_status_latch, hdc92x4_device::DS_SKCOM, m_current_harddisk->seek_complete_r()==ASSERT_LINE);
+ set_bits(m_status_latch, hdc92x4_device::DS_TRK00, m_current_harddisk->trk00_r()==ASSERT_LINE);
}
}
// If WDS is selected but not connected, WDS.ready* and WDS.seekComplete* are 1, so Ready=SeekComplete=0
- else set_bits(m_status_latch, HDC_DS_READY | HDC_DS_SKCOM, false);
+ else set_bits(m_status_latch, hdc92x4_device::DS_READY | hdc92x4_device::DS_SKCOM, false);
}
}
@@ -631,18 +630,18 @@ WRITE8_MEMBER( myarc_hfdc_device::auxbus_out )
int index;
switch (offset)
{
- case HDC_INPUT_STATUS:
+ case hdc92x4_device::INPUT_STATUS:
logerror("Invalid operation: S0=S1=0, but tried to write (expected: read drive status)\n");
break;
- case HDC_OUTPUT_DMA_ADDR:
+ case hdc92x4_device::OUTPUT_DMA_ADDR:
// Value is dma address byte. Shift previous contents to the left.
// The value is latched inside the Gate Array.
m_dma_address = ((m_dma_address << 8) + (data&0xff))&0xffffff;
if (TRACE_DMA) logerror("Setting DMA address; current value = %06x\n", m_dma_address);
break;
- case HDC_OUTPUT_1:
+ case hdc92x4_device::OUTPUT_1:
// value is output1
// The HFDC interprets the value as follows:
// WDS = Winchester Drive System, old name for hard disk
@@ -665,12 +664,12 @@ WRITE8_MEMBER( myarc_hfdc_device::auxbus_out )
disconnect_hard_drives();
// Turn off READY and SEEK COMPLETE
- set_bits(m_status_latch, HDC_DS_READY | HDC_DS_SKCOM, false);
+ set_bits(m_status_latch, hdc92x4_device::DS_READY | hdc92x4_device::DS_SKCOM, false);
}
}
break;
- case HDC_OUTPUT_2:
+ case hdc92x4_device::OUTPUT_2:
// value is output2
// DS3* = /WDS3
// WCur = Reduced Write Current
@@ -1113,4 +1112,4 @@ ioport_constructor myarc_hfdc_device::device_input_ports() const
return INPUT_PORTS_NAME( ti99_hfdc );
}
-const device_type TI99_HFDC = device_creator<myarc_hfdc_device>;
+DEFINE_DEVICE_TYPE(TI99_HFDC, myarc_hfdc_device, "ti99_hfdc", "Myarc Hard and Floppy Disk Controller")
diff --git a/src/devices/bus/ti99_peb/hfdc.h b/src/devices/bus/ti99/peb/hfdc.h
index 5824bd5471a..c1bec7e014b 100644
--- a/src/devices/bus/ti99_peb/hfdc.h
+++ b/src/devices/bus/ti99/peb/hfdc.h
@@ -13,8 +13,12 @@
****************************************************************************/
-#ifndef __HFDC__
-#define __HFDC__
+#ifndef MAME_BUS_TI99_PEB_HFDC_H
+#define MAME_BUS_TI99_PEB_HFDC_H
+
+#pragma once
+
+#include "peribox.h"
#include "imagedev/floppy.h"
#include "imagedev/mfmhd.h"
@@ -182,4 +186,5 @@ private:
// Joined ready line towards the controller
int m_readyflags;
};
-#endif
+
+#endif // MAME_BUS_TI99_PEB_HFDC_H
diff --git a/src/devices/bus/ti99_peb/horizon.cpp b/src/devices/bus/ti99/peb/horizon.cpp
index 434fcdf2c6a..aaf2f37b65d 100644
--- a/src/devices/bus/ti99_peb/horizon.cpp
+++ b/src/devices/bus/ti99/peb/horizon.cpp
@@ -66,7 +66,7 @@
#define TRACE_CRU 0
horizon_ramdisk_device::horizon_ramdisk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: ti_expansion_card_device(mconfig, TI99_HORIZON, "Horizon 4000 Ramdisk", tag, owner, clock,"ti99_horizon",__FILE__),
+: ti_expansion_card_device(mconfig, TI99_HORIZON, tag, owner, clock),
device_nvram_interface(mconfig, *this),
m_ram(*this, RAMREGION),
m_nvram(*this, NVRAMREGION),
@@ -491,4 +491,4 @@ ioport_constructor horizon_ramdisk_device::device_input_ports() const
return INPUT_PORTS_NAME(horizon);
}
-const device_type TI99_HORIZON = device_creator<horizon_ramdisk_device>;
+DEFINE_DEVICE_TYPE(TI99_HORIZON, horizon_ramdisk_device, "ti99_horizon", "Horizon 4000 Ramdisk")
diff --git a/src/devices/bus/ti99_peb/horizon.h b/src/devices/bus/ti99/peb/horizon.h
index 4cbc4d4a2fd..d3a5f23817c 100644
--- a/src/devices/bus/ti99_peb/horizon.h
+++ b/src/devices/bus/ti99/peb/horizon.h
@@ -11,13 +11,15 @@
*****************************************************************************/
-#ifndef __HORIZON__
-#define __HORIZON__
+#ifndef MAME_BUS_TI99_PEB_HORIZON_H
+#define MAME_BUS_TI99_PEB_HORIZON_H
+
+#pragma once
#include "peribox.h"
#include "machine/ram.h"
-extern const device_type TI99_HORIZON;
+DECLARE_DEVICE_TYPE(TI99_HORIZON, horizon_ramdisk_device)
class horizon_ramdisk_device : public ti_expansion_card_device, public device_nvram_interface
{
@@ -64,4 +66,4 @@ private:
bool m_use_rambo;
};
-#endif
+#endif // MAME_BUS_TI99_PEB_HORIZON_H
diff --git a/src/devices/bus/ti99_peb/hsgpl.cpp b/src/devices/bus/ti99/peb/hsgpl.cpp
index 1e72f640869..4858e5e1059 100644
--- a/src/devices/bus/ti99_peb/hsgpl.cpp
+++ b/src/devices/bus/ti99/peb/hsgpl.cpp
@@ -142,7 +142,7 @@
#define ROM6_EEPROM "u6_rom6"
snug_high_speed_gpl_device::snug_high_speed_gpl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ti_expansion_card_device(mconfig, TI99_HSGPL, "SNUG High-speed GPL card", tag, owner, clock, "ti99_hsgpl", __FILE__),
+ : ti_expansion_card_device(mconfig, TI99_HSGPL, tag, owner, clock),
m_dsr_eeprom(*this, DSR_EEPROM),
m_rom6_eeprom(*this, ROM6_EEPROM),
m_grom_a_eeprom(*this, GROM_A_EEPROM),
@@ -714,4 +714,4 @@ ioport_constructor snug_high_speed_gpl_device::device_input_ports() const
return INPUT_PORTS_NAME(ti99_hsgpl);
}
-const device_type TI99_HSGPL = device_creator<snug_high_speed_gpl_device>;
+DEFINE_DEVICE_TYPE(TI99_HSGPL, snug_high_speed_gpl_device, "ti99_hsgpl", "SNUG High-speed GPL card")
diff --git a/src/devices/bus/ti99_peb/hsgpl.h b/src/devices/bus/ti99/peb/hsgpl.h
index 99bd56747cd..33a6456b2d1 100644
--- a/src/devices/bus/ti99_peb/hsgpl.h
+++ b/src/devices/bus/ti99/peb/hsgpl.h
@@ -13,14 +13,16 @@
*****************************************************************************/
-#ifndef __HSGPL__
-#define __HSGPL__
+#ifndef MAME_BUS_TI99_PEB_HSGPL_H
+#define MAME_BUS_TI99_PEB_HSGPL_H
+
+#pragma once
#include "peribox.h"
#include "machine/at29x.h"
#include "machine/ram.h"
-extern const device_type TI99_HSGPL;
+DECLARE_DEVICE_TYPE(TI99_HSGPL, snug_high_speed_gpl_device)
class snug_high_speed_gpl_device : public ti_expansion_card_device
{
@@ -33,9 +35,9 @@ public:
DECLARE_WRITE8_MEMBER(cruwrite) override;
protected:
- virtual void device_start(void) override;
- virtual void device_reset(void) override;
- virtual void device_stop(void) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_stop() override;
virtual ioport_constructor device_input_ports() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -79,4 +81,4 @@ private:
int m_grom_address;
};
-#endif
+#endif // MAME_BUS_TI99_PEB_HSGPL_H
diff --git a/src/devices/bus/ti99_peb/memex.cpp b/src/devices/bus/ti99/peb/memex.cpp
index f0a3dffbee7..2951c0cefdf 100644
--- a/src/devices/bus/ti99_peb/memex.cpp
+++ b/src/devices/bus/ti99/peb/memex.cpp
@@ -31,7 +31,7 @@ enum
};
geneve_memex_device::geneve_memex_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: ti_expansion_card_device(mconfig, TI99_MEMEX, "Geneve memory expansion card", tag, owner, clock, "ti99_memex", __FILE__),
+ : ti_expansion_card_device(mconfig, TI99_MEMEX, tag, owner, clock),
m_ram(*this, RAMREGION)
{
}
@@ -158,4 +158,4 @@ ioport_constructor geneve_memex_device::device_input_ports() const
return INPUT_PORTS_NAME( memex );
}
-const device_type TI99_MEMEX = device_creator<geneve_memex_device>;
+DEFINE_DEVICE_TYPE(TI99_MEMEX, geneve_memex_device, "ti99_memex", "Geneve memory expansion card")
diff --git a/src/devices/bus/ti99_peb/memex.h b/src/devices/bus/ti99/peb/memex.h
index 63d21ab9c13..12a9d47b9cb 100644
--- a/src/devices/bus/ti99_peb/memex.h
+++ b/src/devices/bus/ti99/peb/memex.h
@@ -10,13 +10,15 @@
*****************************************************************************/
-#ifndef __MEMEXMEM__
-#define __MEMEXMEM__
+#ifndef MAME_BUS_TI99_PEB_MEMEX_H
+#define MAME_BUS_TI99_PEB_MEMEX_H
+
+#pragma once
#include "peribox.h"
#include "machine/ram.h"
-extern const device_type TI99_MEMEX;
+DECLARE_DEVICE_TYPE(TI99_MEMEX, geneve_memex_device)
class geneve_memex_device : public ti_expansion_card_device
{
@@ -25,8 +27,8 @@ public:
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
- DECLARE_READ8Z_MEMBER(crureadz) override { };
- DECLARE_WRITE8_MEMBER(cruwrite) override { };
+ DECLARE_READ8Z_MEMBER(crureadz) override { }
+ DECLARE_WRITE8_MEMBER(cruwrite) override { }
protected:
void device_start() override;
@@ -40,4 +42,4 @@ private:
uint8_t m_switches;
};
-#endif
+#endif // MAME_BUS_TI99_PEB_MEMEX_H
diff --git a/src/devices/bus/ti99_peb/myarcmem.cpp b/src/devices/bus/ti99/peb/myarcmem.cpp
index 5c1496279f8..f6e1e4b1c16 100644
--- a/src/devices/bus/ti99_peb/myarcmem.cpp
+++ b/src/devices/bus/ti99/peb/myarcmem.cpp
@@ -41,7 +41,7 @@ enum
};
myarc_memory_expansion_device::myarc_memory_expansion_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: ti_expansion_card_device(mconfig, TI99_MYARCMEM, "Myarc Memory expansion card MEXP-1", tag, owner, clock, "ti99_myarcmem", __FILE__),
+ : ti_expansion_card_device(mconfig, TI99_MYARCMEM, tag, owner, clock),
m_ram(*this, RAM_TAG),
m_dsrrom(nullptr), m_bank(0), m_size(0)
{
@@ -211,4 +211,4 @@ ioport_constructor myarc_memory_expansion_device::device_input_ports() const
return INPUT_PORTS_NAME(myarc_exp);
}
-const device_type TI99_MYARCMEM = device_creator<myarc_memory_expansion_device>;
+DEFINE_DEVICE_TYPE(TI99_MYARCMEM, myarc_memory_expansion_device, "ti99_myarcmem", "Myarc Memory expansion card MEXP-1")
diff --git a/src/devices/bus/ti99_peb/myarcmem.h b/src/devices/bus/ti99/peb/myarcmem.h
index 227409aedfb..e2cf05d8660 100644
--- a/src/devices/bus/ti99_peb/myarcmem.h
+++ b/src/devices/bus/ti99/peb/myarcmem.h
@@ -10,13 +10,15 @@
*****************************************************************************/
-#ifndef __MYARCMEM__
-#define __MYARCMEM__
+#ifndef MAME_BUS_TI99_PEB_MYARCMEM_H
+#define MAME_BUS_TI99_PEB_MYARCMEM_H
+
+#pragma once
#include "peribox.h"
#include "machine/ram.h"
-extern const device_type TI99_MYARCMEM;
+DECLARE_DEVICE_TYPE(TI99_MYARCMEM, myarc_memory_expansion_device)
class myarc_memory_expansion_device : public ti_expansion_card_device
{
@@ -29,9 +31,9 @@ public:
DECLARE_WRITE8_MEMBER(cruwrite) override;
protected:
- void device_start(void) override;
- void device_reset(void) override;
- const tiny_rom_entry *device_rom_region(void) const override;
+ void device_start() override;
+ void device_reset() override;
+ const tiny_rom_entry *device_rom_region() const override;
ioport_constructor device_input_ports() const override;
machine_config_constructor device_mconfig_additions() const override;
@@ -43,4 +45,4 @@ private:
int m_size;
};
-#endif
+#endif // MAME_BUS_TI99_PEB_MYARCMEM_H
diff --git a/src/devices/bus/ti99_peb/pcode.cpp b/src/devices/bus/ti99/peb/pcode.cpp
index 7fabe3295ec..b8896ffff1c 100644
--- a/src/devices/bus/ti99_peb/pcode.cpp
+++ b/src/devices/bus/ti99/peb/pcode.cpp
@@ -96,7 +96,7 @@
#define TRACE_SWITCH 0
ti_pcode_card_device::ti_pcode_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: ti_expansion_card_device(mconfig, TI99_P_CODE, "TI-99 P-Code Card", tag, owner, clock, "ti99_pcode", __FILE__),
+ : ti_expansion_card_device(mconfig, TI99_P_CODE, tag, owner, clock),
m_rom(nullptr),
m_bank_select(0),
m_active(false),
@@ -373,4 +373,4 @@ ioport_constructor ti_pcode_card_device::device_input_ports() const
return INPUT_PORTS_NAME( ti99_pcode );
}
-const device_type TI99_P_CODE = device_creator<ti_pcode_card_device>;
+DEFINE_DEVICE_TYPE(TI99_P_CODE, ti_pcode_card_device, "ti99_pcode", "TI-99 P-Code Card")
diff --git a/src/devices/bus/ti99_peb/pcode.h b/src/devices/bus/ti99/peb/pcode.h
index 744faa4acca..088ca1ae4b3 100644
--- a/src/devices/bus/ti99_peb/pcode.h
+++ b/src/devices/bus/ti99/peb/pcode.h
@@ -12,13 +12,15 @@
*****************************************************************************/
-#ifndef __PCODE__
-#define __PCODE__
+#ifndef MAME_BUS_TI99_PEB_PCODE_H
+#define MAME_BUS_TI99_PEB_PCODE_H
+
+#pragma once
#include "peribox.h"
#include "machine/tmc0430.h"
-extern const device_type TI99_P_CODE;
+DECLARE_DEVICE_TYPE(TI99_P_CODE, ti_pcode_card_device)
class ti_pcode_card_device : public ti_expansion_card_device
{
@@ -62,4 +64,4 @@ private:
int m_address;
};
-#endif
+#endif // MAME_BUS_TI99_PEB_PCODE_H
diff --git a/src/devices/bus/ti99_peb/peribox.cpp b/src/devices/bus/ti99/peb/peribox.cpp
index de124051046..add22015f2d 100644
--- a/src/devices/bus/ti99_peb/peribox.cpp
+++ b/src/devices/bus/ti99/peb/peribox.cpp
@@ -217,14 +217,8 @@ CRUCLK* 51||52 DBIN
#define PEBSLOT8 "slot8"
peribox_device::peribox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: bus8z_device(mconfig, PERIBOX, "Peripheral expansion box", tag, owner, clock, "peribox", __FILE__),
- m_console_inta(*this),
- m_console_intb(*this),
- m_sgcpu_lcp(*this),
- m_datamux_ready(*this),
- m_inta_flag(0), m_intb_flag(0), m_lcp_flag(0), m_ready_flag(0)
+ : peribox_device(mconfig, PERIBOX, tag, owner, clock)
{
- for (int i=2; i <= 8; i++) m_slot[i] = nullptr;
// The address prefix is actually created by the "Flex cable interface"
// which sits in slot 1.
m_address_prefix = 0x70000;
@@ -233,12 +227,13 @@ peribox_device::peribox_device(const machine_config &mconfig, const char *tag, d
/*
Constructor called from subclasses.
*/
-peribox_device::peribox_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
-: bus8z_device(mconfig, type, name, tag, owner, clock, shortname, source),
+peribox_device::peribox_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : bus8z_device(mconfig, type, tag, owner, clock),
m_console_inta(*this),
m_console_intb(*this),
m_sgcpu_lcp(*this),
- m_datamux_ready(*this), m_inta_flag(0), m_intb_flag(0), m_ready_flag(0), m_address_prefix(0), m_msast(false), m_memen(false)
+ m_datamux_ready(*this),
+ m_inta_flag(0), m_intb_flag(0), m_ready_flag(0), m_address_prefix(0), m_msast(false), m_memen(false)
{
for (int i=2; i <= 8; i++) m_slot[i] = nullptr;
}
@@ -412,7 +407,7 @@ void peribox_device::set_slot_loaded(int slot, peribox_slot_device* slotdev)
m_slot[slot] = slotdev;
}
-void peribox_device::device_start(void)
+void peribox_device::device_start()
{
if (TRACE_EMU) logerror("%s: started\n", tag());
@@ -448,7 +443,7 @@ void peribox_device::device_config_complete()
}
SLOT_INTERFACE_START( peribox_slot )
- SLOT_INTERFACE("32kmem", TI_32KMEM)
+ SLOT_INTERFACE("32kmem", TI99_32KMEM)
SLOT_INTERFACE("myarcmem", TI99_MYARCMEM)
SLOT_INTERFACE("samsmem", TI99_SAMSMEM)
SLOT_INTERFACE("pcode", TI99_P_CODE)
@@ -483,7 +478,7 @@ machine_config_constructor peribox_device::device_mconfig_additions() const
*****************************************************************************/
peribox_gen_device::peribox_gen_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: peribox_device(mconfig, PERIBOX_GEN, "Peripheral expansion box Geneve", tag, owner, clock, "peribox_gen", __FILE__)
+ : peribox_device(mconfig, PERIBOX_GEN, tag, owner, clock)
{
// The Geneve sits in slot 1; there is no prefix here - it can control
// a maximum address space of 512 KiB in the box. With the Genmod
@@ -525,7 +520,7 @@ machine_config_constructor peribox_gen_device::device_mconfig_additions() const
*****************************************************************************/
peribox_998_device::peribox_998_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: peribox_device(mconfig, PERIBOX_998, "Peripheral expansion box 99/8", tag, owner, clock, "peribox_998", __FILE__)
+ : peribox_device(mconfig, PERIBOX_998, tag, owner, clock)
{
m_address_prefix = 0x70000;
}
@@ -563,7 +558,7 @@ machine_config_constructor peribox_998_device::device_mconfig_additions() const
*****************************************************************************/
peribox_sg_device::peribox_sg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: peribox_device(mconfig, PERIBOX_SG, "Peripheral expansion box SGCPU", tag, owner, clock, "peribox_sg", __FILE__)
+: peribox_device(mconfig, PERIBOX_SG, tag, owner, clock)
{
m_address_prefix = 0x70000;
}
@@ -611,7 +606,7 @@ machine_config_constructor peribox_sg_device::device_mconfig_additions() const
*****************************************************************************/
peribox_ev_device::peribox_ev_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: peribox_device(mconfig, PERIBOX_EV, "Peripheral expansion box EVPC", tag, owner, clock, "peribox_ev", __FILE__)
+ : peribox_device(mconfig, PERIBOX_EV, tag, owner, clock)
{
m_address_prefix = 0x70000;
}
@@ -647,7 +642,7 @@ int peribox_slot_device::get_index_from_tagname()
}
peribox_slot_device::peribox_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: bus8z_device(mconfig, PERIBOX_SLOT, "TI P-Box slot", tag, owner, clock, "peribox_slot", __FILE__), device_slot_interface(mconfig, *this), m_card(nullptr), m_slotnumber(0)
+ : bus8z_device(mconfig, PERIBOX_SLOT, tag, owner, clock), device_slot_interface(mconfig, *this), m_card(nullptr), m_slotnumber(0)
{
}
@@ -699,7 +694,7 @@ void peribox_slot_device::set_genmod(bool set)
m_card->m_genmod = set;
}
-void peribox_slot_device::device_start(void)
+void peribox_slot_device::device_start()
{
}
@@ -757,10 +752,10 @@ WRITE_LINE_MEMBER( peribox_slot_device::set_ready )
}
/***************************************************************************/
-const device_type PERIBOX = device_creator<peribox_device>;
-const device_type PERIBOX_SLOT = device_creator<peribox_slot_device>;
+DEFINE_DEVICE_TYPE(PERIBOX, peribox_device, "peribox", "Peripheral expansion box")
+DEFINE_DEVICE_TYPE(PERIBOX_SLOT, peribox_slot_device, "peribox_slot", "TI P-Box slot")
-const device_type PERIBOX_EV = device_creator<peribox_ev_device>;
-const device_type PERIBOX_SG = device_creator<peribox_sg_device>;
-const device_type PERIBOX_GEN = device_creator<peribox_gen_device>;
-const device_type PERIBOX_998 = device_creator<peribox_998_device>;
+DEFINE_DEVICE_TYPE(PERIBOX_EV, peribox_ev_device, "peribox_ev", "Peripheral expansion box EVPC")
+DEFINE_DEVICE_TYPE(PERIBOX_SG, peribox_sg_device, "peribox_sg", "Peripheral expansion box SGCPU")
+DEFINE_DEVICE_TYPE(PERIBOX_GEN, peribox_gen_device, "peribox_gen", "Peripheral expansion box Geneve")
+DEFINE_DEVICE_TYPE(PERIBOX_998, peribox_998_device, "peribox_998", "Peripheral expansion box 99/8")
diff --git a/src/devices/bus/ti99_peb/peribox.h b/src/devices/bus/ti99/peb/peribox.h
index 7d9b11910e9..8bea48c7612 100644
--- a/src/devices/bus/ti99_peb/peribox.h
+++ b/src/devices/bus/ti99/peb/peribox.h
@@ -11,21 +11,22 @@
*****************************************************************************/
-#ifndef __PBOX__
-#define __PBOX__
+#ifndef MAME_BUS_TI99_PEB_PERIBOX_H
+#define MAME_BUS_TI99_PEB_PERIBOX_H
+
+#pragma once
#include "bus/ti99x/ti99defs.h"
-extern const device_type PERIBOX;
-extern const device_type PERIBOX_SLOT;
+DECLARE_DEVICE_TYPE(PERIBOX, peribox_device)
+DECLARE_DEVICE_TYPE(PERIBOX_SLOT, peribox_slot_device)
-extern const device_type PERIBOX_EV;
-extern const device_type PERIBOX_SG;
-extern const device_type PERIBOX_GEN;
-extern const device_type PERIBOX_998;
+DECLARE_DEVICE_TYPE(PERIBOX_EV, peribox_ev_device)
+DECLARE_DEVICE_TYPE(PERIBOX_SG, peribox_sg_device)
+DECLARE_DEVICE_TYPE(PERIBOX_GEN, peribox_gen_device)
+DECLARE_DEVICE_TYPE(PERIBOX_998, peribox_998_device)
class ti_expansion_card_device;
-class peribox_slot_device;
/*****************************************************************************
The overall Peripheral Expansion Box.
@@ -37,12 +38,11 @@ class peribox_device : public bus8z_device
friend class peribox_slot_device;
public:
peribox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- peribox_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- template<class _Object> static devcb_base &static_set_inta_callback(device_t &device, _Object object) { return downcast<peribox_device &>(device).m_console_inta.set_callback(object); }
- template<class _Object> static devcb_base &static_set_intb_callback(device_t &device, _Object object) { return downcast<peribox_device &>(device).m_console_intb.set_callback(object); }
- template<class _Object> static devcb_base &static_set_ready_callback(device_t &device, _Object object) { return downcast<peribox_device &>(device).m_datamux_ready.set_callback(object); }
- template<class _Object> static devcb_base &static_set_lcp_callback(device_t &device, _Object object) { return downcast<peribox_device &>(device).m_sgcpu_lcp.set_callback(object); }
+ template <class Object> static devcb_base &static_set_inta_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_console_inta.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_intb_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_console_intb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_datamux_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_lcp_callback(device_t &device, Object &&cb) { return downcast<peribox_device &>(device).m_sgcpu_lcp.set_callback(std::forward<Object>(cb)); }
// Next eight methods are called from the console
DECLARE_READ8Z_MEMBER(readz) override;
@@ -67,8 +67,10 @@ public:
void set_genmod(bool set);
protected:
- virtual void device_start(void) override;
- virtual void device_config_complete(void) override;
+ peribox_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_config_complete() override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -189,8 +191,8 @@ public:
device_t* get_drive(const char* name);
protected:
- void device_start(void) override;
- void device_config_complete(void) override;
+ void device_start() override;
+ void device_config_complete() override;
private:
int get_index_from_tagname();
@@ -208,25 +210,26 @@ class ti_expansion_card_device : public bus8z_device, public device_slot_card_in
friend class peribox_slot_device;
public:
- ti_expansion_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : bus8z_device(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_card_interface(mconfig, *this), m_selected(false), m_cru_base(0), m_select_mask(0), m_select_value(0)
-{
- m_slot = static_cast<peribox_slot_device*>(owner);
- m_senila = CLEAR_LINE;
- m_senilb = CLEAR_LINE;
- m_genmod = false;
- }
-
- virtual DECLARE_READ8Z_MEMBER(crureadz) =0;
- virtual DECLARE_WRITE8_MEMBER(cruwrite) =0;
+ virtual DECLARE_READ8Z_MEMBER(crureadz) = 0;
+ virtual DECLARE_WRITE8_MEMBER(cruwrite) = 0;
void set_senila(int state) { m_senila = state; }
void set_senilb(int state) { m_senilb = state; }
- virtual DECLARE_WRITE_LINE_MEMBER(clock_in) { };
+ virtual DECLARE_WRITE_LINE_MEMBER(clock_in) { }
protected:
+ ti_expansion_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : bus8z_device(mconfig, type, tag, owner, clock)
+ , device_slot_card_interface(mconfig, *this)
+ , m_selected(false), m_cru_base(0), m_select_mask(0), m_select_value(0)
+ {
+ m_slot = static_cast<peribox_slot_device*>(owner);
+ m_senila = CLEAR_LINE;
+ m_senilb = CLEAR_LINE;
+ m_genmod = false;
+ }
+
peribox_slot_device *m_slot; // using a link to the slot for callbacks
int m_senila;
int m_senilb;
@@ -265,4 +268,4 @@ protected:
#define MCFG_PERIBOX_LCP_HANDLER( _lcp ) \
devcb = &peribox_device::static_set_lcp_callback( *device, DEVCB_##_lcp );
-#endif /* __PBOX__ */
+#endif // MAME_BUS_TI99_PEB_PERIBOX_H
diff --git a/src/devices/bus/ti99_peb/samsmem.cpp b/src/devices/bus/ti99/peb/samsmem.cpp
index b0b51f90280..dc4e1694822 100644
--- a/src/devices/bus/ti99_peb/samsmem.cpp
+++ b/src/devices/bus/ti99/peb/samsmem.cpp
@@ -29,7 +29,7 @@
#define SAMS_CRU_BASE 0x1e00
sams_memory_expansion_device::sams_memory_expansion_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: ti_expansion_card_device(mconfig, TI99_SAMSMEM, "SuperAMS memory expansion card", tag, owner, clock, "ti99_sams", __FILE__),
+ : ti_expansion_card_device(mconfig, TI99_SAMSMEM, tag, owner, clock),
m_ram(*this, RAM_TAG),
m_map_mode(false), m_access_mapper(false)
{
@@ -133,4 +133,4 @@ void sams_memory_expansion_device::device_reset()
for (auto & elem : m_mapper) elem = 0;
}
-const device_type TI99_SAMSMEM = device_creator<sams_memory_expansion_device>;
+DEFINE_DEVICE_TYPE(TI99_SAMSMEM, sams_memory_expansion_device, "ti99_sams", "SuperAMS memory expansion card")
diff --git a/src/devices/bus/ti99_peb/samsmem.h b/src/devices/bus/ti99/peb/samsmem.h
index 5dc0df51ab7..0166ad66acb 100644
--- a/src/devices/bus/ti99_peb/samsmem.h
+++ b/src/devices/bus/ti99/peb/samsmem.h
@@ -12,13 +12,15 @@
*****************************************************************************/
-#ifndef __SAMSMEM__
-#define __SAMSMEM__
+#ifndef MAME_BUS_TI99_PEB_SAMSMEM_H
+#define MAME_BUS_TI99_PEB_SAMSMEM_H
+
+#pragma once
#include "peribox.h"
#include "machine/ram.h"
-extern const device_type TI99_SAMSMEM;
+DECLARE_DEVICE_TYPE(TI99_SAMSMEM, sams_memory_expansion_device)
class sams_memory_expansion_device : public ti_expansion_card_device
{
@@ -33,8 +35,8 @@ public:
machine_config_constructor device_mconfig_additions() const override;
protected:
- void device_start(void) override;
- void device_reset(void) override;
+ void device_start() override;
+ void device_reset() override;
private:
// Console RAM
@@ -43,4 +45,5 @@ private:
bool m_map_mode;
bool m_access_mapper;
};
-#endif
+
+#endif // MAME_BUS_TI99_PEB_SAMSMEM_H
diff --git a/src/devices/bus/ti99_peb/spchsyn.cpp b/src/devices/bus/ti99/peb/spchsyn.cpp
index d1995bd0033..916f9d98be8 100644
--- a/src/devices/bus/ti99_peb/spchsyn.cpp
+++ b/src/devices/bus/ti99/peb/spchsyn.cpp
@@ -36,7 +36,7 @@
/****************************************************************************/
ti_speech_synthesizer_device::ti_speech_synthesizer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: ti_expansion_card_device(mconfig, TI99_SPEECH, "TI-99 Speech synthesizer (on adapter card)", tag, owner, clock, "ti99_speech", __FILE__),
+ : ti_expansion_card_device(mconfig, TI99_SPEECH, tag, owner, clock),
m_vsp(nullptr), m_reading(false), m_sbe(false)
{
}
@@ -97,7 +97,7 @@ SETADDRESS_DBIN_MEMBER( ti_speech_synthesizer_device::setaddress_dbin )
// both RS* and WS* are active, which is illegal.
// Alternatively, we'll use the combined settings method
- m_vsp->combined_rsq_wsq_w(space, 0, m_reading? ~RS : ~WS);
+ m_vsp->combined_rsq_wsq_w(space, 0, m_reading ? ~tms5220_device::RS : ~tms5220_device::WS);
}
else
// If other address, turn off RS* and WS* (negative logic!)
@@ -174,4 +174,5 @@ const tiny_rom_entry *ti_speech_synthesizer_device::device_rom_region() const
{
return ROM_NAME( ti99_speech );
}
-const device_type TI99_SPEECH = device_creator<ti_speech_synthesizer_device>;
+
+DEFINE_DEVICE_TYPE(TI99_SPEECH, ti_speech_synthesizer_device, "ti99_speech", "TI-99 Speech synthesizer (on adapter card)")
diff --git a/src/devices/bus/ti99_peb/spchsyn.h b/src/devices/bus/ti99/peb/spchsyn.h
index 77c89f7a0c4..5edf4bffc45 100644
--- a/src/devices/bus/ti99_peb/spchsyn.h
+++ b/src/devices/bus/ti99/peb/spchsyn.h
@@ -10,13 +10,15 @@
*****************************************************************************/
-#ifndef __TISPEECH__
-#define __TISPEECH__
+#ifndef MAME_BUS_TI99_PEB_SPCHSYN_H
+#define MAME_BUS_TI99_PEB_SPCHSYN_H
+
+#pragma once
#include "peribox.h"
#include "sound/tms5220.h"
-extern const device_type TI99_SPEECH;
+DECLARE_DEVICE_TYPE(TI99_SPEECH, ti_speech_synthesizer_device)
class ti_speech_synthesizer_device : public ti_expansion_card_device
{
@@ -26,14 +28,14 @@ public:
DECLARE_WRITE8_MEMBER(write) override;
DECLARE_SETADDRESS_DBIN_MEMBER(setaddress_dbin) override;
- DECLARE_READ8Z_MEMBER(crureadz) override { };
- DECLARE_WRITE8_MEMBER(cruwrite) override { };
+ DECLARE_READ8Z_MEMBER(crureadz) override { }
+ DECLARE_WRITE8_MEMBER(cruwrite) override { }
DECLARE_WRITE_LINE_MEMBER( speech_ready );
protected:
virtual void device_start() override;
- virtual void device_reset(void) override;
+ virtual void device_reset() override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -44,4 +46,4 @@ private:
bool m_sbe; // Signal "Speech block enable"
};
-#endif
+#endif // MAME_BUS_TI99_PEB_SPCHSYN_H
diff --git a/src/devices/bus/ti99_peb/ti_32kmem.cpp b/src/devices/bus/ti99/peb/ti_32kmem.cpp
index b86b35e2ca6..26a3986d3ce 100644
--- a/src/devices/bus/ti99_peb/ti_32kmem.cpp
+++ b/src/devices/bus/ti99/peb/ti_32kmem.cpp
@@ -29,13 +29,12 @@
*****************************************************************************/
#include "emu.h"
-#include "peribox.h"
#include "ti_32kmem.h"
#define RAMREGION "ram32k"
ti_32k_expcard_device::ti_32k_expcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: ti_expansion_card_device(mconfig, TI_32KMEM, "TI-99 32KiB memory expansion card", tag, owner, clock, "ti99_32k", __FILE__),
+ : ti_expansion_card_device(mconfig, TI99_32KMEM, tag, owner, clock),
m_ram(*this, RAMREGION)
{
}
@@ -92,7 +91,7 @@ WRITE8_MEMBER(ti_32k_expcard_device::write)
}
-void ti_32k_expcard_device::device_start(void)
+void ti_32k_expcard_device::device_start()
{
}
@@ -107,4 +106,4 @@ machine_config_constructor ti_32k_expcard_device::device_mconfig_additions() con
return MACHINE_CONFIG_NAME( mem32k );
}
-const device_type TI_32KMEM = device_creator<ti_32k_expcard_device>;
+DEFINE_DEVICE_TYPE(TI99_32KMEM, ti_32k_expcard_device, "ti99_32kmem", "TI-99 32KiB memory expansion card")
diff --git a/src/devices/bus/ti99_peb/ti_32kmem.h b/src/devices/bus/ti99/peb/ti_32kmem.h
index ff777c73d69..a8548bb9090 100644
--- a/src/devices/bus/ti99_peb/ti_32kmem.h
+++ b/src/devices/bus/ti99/peb/ti_32kmem.h
@@ -11,13 +11,15 @@
*****************************************************************************/
-#ifndef __TI32K__
-#define __TI32K__
+#ifndef MAME_BUS_TI99_PEB_TI_32KMEM_H
+#define MAME_BUS_TI99_PEB_TI_32KMEM_H
+
+#pragma once
#include "peribox.h"
#include "machine/ram.h"
-extern const device_type TI_32KMEM;
+DECLARE_DEVICE_TYPE(TI99_32KMEM, ti_32k_expcard_device)
class ti_32k_expcard_device : public ti_expansion_card_device
{
@@ -26,8 +28,8 @@ public:
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
- DECLARE_READ8Z_MEMBER(crureadz) override { };
- DECLARE_WRITE8_MEMBER(cruwrite) override { };
+ DECLARE_READ8Z_MEMBER(crureadz) override { }
+ DECLARE_WRITE8_MEMBER(cruwrite) override { }
protected:
void device_start() override;
@@ -37,4 +39,4 @@ private:
required_device<ram_device> m_ram;
};
-#endif
+#endif // MAME_BUS_TI99_PEB_TI_32KMEM_H
diff --git a/src/devices/bus/ti99_peb/ti_fdc.cpp b/src/devices/bus/ti99/peb/ti_fdc.cpp
index 8bcfb4ac179..5ed580f1473 100644
--- a/src/devices/bus/ti99_peb/ti_fdc.cpp
+++ b/src/devices/bus/ti99/peb/ti_fdc.cpp
@@ -13,7 +13,6 @@
****************************************************************************/
#include "emu.h"
-#include "peribox.h"
#include "ti_fdc.h"
#include "formats/ti99_dsk.h"
@@ -49,23 +48,24 @@
#define TI_FDC_TAG "ti_dssd_controller"
ti_fdc_device::ti_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ti_expansion_card_device(mconfig, TI99_FDC, "TI-99 Standard DSSD Floppy Controller", tag, owner, clock, "ti99_fdc", __FILE__),
- m_address(0),
- m_DRQ(0),
- m_IRQ(0),
- m_lastval(0),
- m_DVENA(0),
- m_inDsrArea(false),
- m_WAITena(false),
- m_WDsel(false),
- m_DSEL(0),
- m_SIDSEL(0),
- m_motor_on_timer(nullptr),
- m_fd1771(*this, FDC_TAG),
- m_dsrrom(nullptr),
- m_current(NONE),
- m_debug_dataout(false)
- { }
+ : ti_expansion_card_device(mconfig, TI99_FDC, tag, owner, clock),
+ m_address(0),
+ m_DRQ(0),
+ m_IRQ(0),
+ m_lastval(0),
+ m_DVENA(0),
+ m_inDsrArea(false),
+ m_WAITena(false),
+ m_WDsel(false),
+ m_DSEL(0),
+ m_SIDSEL(0),
+ m_motor_on_timer(nullptr),
+ m_fd1771(*this, FDC_TAG),
+ m_dsrrom(nullptr),
+ m_current(NONE),
+ m_debug_dataout(false)
+{
+}
/*
Operate the wait state logic.
@@ -380,7 +380,7 @@ void ti_fdc_device::device_start()
m_motor_on_timer = timer_alloc(MOTOR_TIMER);
m_cru_base = 0x1100;
// In case we implement a callback after all:
- // m_fd1771->setup_ready_cb(wd_fdc_t::rline_cb(&ti_fdc_device::dvena_r, this));
+ // m_fd1771->setup_ready_cb(wd_fdc_device::rline_cb(&ti_fdc_device::dvena_r, this));
save_item(NAME(m_address));
save_item(NAME(m_DRQ));
@@ -478,4 +478,4 @@ const tiny_rom_entry *ti_fdc_device::device_rom_region() const
return ROM_NAME( ti_fdc );
}
-const device_type TI99_FDC = device_creator<ti_fdc_device>;
+DEFINE_DEVICE_TYPE(TI99_FDC, ti_fdc_device, "ti99_fdc", "TI-99 Standard DSSD Floppy Controller")
diff --git a/src/devices/bus/ti99_peb/ti_fdc.h b/src/devices/bus/ti99/peb/ti_fdc.h
index 2eb76edba53..4df43c7832e 100644
--- a/src/devices/bus/ti99_peb/ti_fdc.h
+++ b/src/devices/bus/ti99/peb/ti_fdc.h
@@ -11,13 +11,16 @@
January 2012: rewritten as class (MZ)
****************************************************************************/
-#ifndef __TIFDC__
-#define __TIFDC__
+#ifndef MAME_BUS_TI99_PEB_TI_FDC_H
+#define MAME_BUS_TI99_PEB_TI_FDC_H
+#pragma once
+
+#include "peribox.h"
#include "machine/wd_fdc.h"
#include "imagedev/floppy.h"
-extern const device_type TI99_FDC;
+DECLARE_DEVICE_TYPE(TI99_FDC, ti_fdc_device)
class ti_fdc_device : public ti_expansion_card_device
{
@@ -94,7 +97,7 @@ private:
emu_timer* m_motor_on_timer;
// Link to the FDC1771 controller on the board.
- required_device<fd1771_t> m_fd1771;
+ required_device<fd1771_device> m_fd1771;
// DSR ROM
uint8_t* m_dsrrom;
@@ -108,4 +111,5 @@ private:
// Debugging
bool m_debug_dataout;
};
-#endif
+
+#endif // MAME_BUS_TI99_PEB_TI_FDC_H
diff --git a/src/devices/bus/ti99_peb/ti_rs232.cpp b/src/devices/bus/ti99/peb/ti_rs232.cpp
index dbc7d7d8d8d..c3a25ecd009 100644
--- a/src/devices/bus/ti99_peb/ti_rs232.cpp
+++ b/src/devices/bus/ti99/peb/ti_rs232.cpp
@@ -123,7 +123,7 @@
#define ESC 0x1b
ti_rs232_pio_device::ti_rs232_pio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: ti_expansion_card_device(mconfig, TI99_RS232, "TI-99 RS232/PIO interface", tag, owner, clock, "ti99_rs232", __FILE__), m_piodev(nullptr), m_dsrrom(nullptr), m_pio_direction_in(false), m_pio_handshakeout(false), m_pio_handshakein(false), m_pio_spareout(false), m_pio_sparein(false), m_flag0(false), m_led(false), m_pio_out_buffer(0), m_pio_in_buffer(0), m_pio_readable(false), m_pio_writable(false), m_pio_write(false), m_ila(0)
+ : ti_expansion_card_device(mconfig, TI99_RS232, tag, owner, clock), m_piodev(nullptr), m_dsrrom(nullptr), m_pio_direction_in(false), m_pio_handshakeout(false), m_pio_handshakein(false), m_pio_spareout(false), m_pio_sparein(false), m_flag0(false), m_led(false), m_pio_out_buffer(0), m_pio_in_buffer(0), m_pio_readable(false), m_pio_writable(false), m_pio_write(false), m_ila(0)
{
}
@@ -132,13 +132,13 @@ ti_rs232_pio_device::ti_rs232_pio_device(const machine_config &mconfig, const ch
/* Ports */
ti_rs232_attached_device::ti_rs232_attached_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: device_t(mconfig, TI99_RS232_DEV, "Serial attached device", tag, owner, clock, "ti_rs232_attached", __FILE__),
+ : device_t(mconfig, TI99_RS232_DEV, tag, owner, clock),
device_image_interface(mconfig, *this)
{
}
ti_pio_attached_device::ti_pio_attached_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: device_t(mconfig, TI99_PIO_DEV, "Parallel attached device", tag, owner, clock, "ti_pio_attached", __FILE__),
+ : device_t(mconfig, TI99_PIO_DEV, tag, owner, clock),
device_image_interface(mconfig, *this)
{
}
@@ -268,8 +268,8 @@ READ8Z_MEMBER(ti_rs232_pio_device::crureadz)
if (m_flag0) reply |= 0x10;
// The CTS line is realized as CRU bits
// Mind that this line is handled as an output going to the remote CTS
- if ((m_signals[0] & CTS)!=0) reply |= 0x20;
- if ((m_signals[1] & CTS)!=0) reply |= 0x40;
+ if ((m_signals[0] & tms9902_device::CTS)!=0) reply |= 0x20;
+ if ((m_signals[1] & tms9902_device::CTS)!=0) reply |= 0x40;
if (m_led) reply |= 0x80;
*value = reply;
return;
@@ -370,13 +370,13 @@ WRITE8_MEMBER(ti_rs232_pio_device::cruwrite)
case 5:
// Set the CTS line for RS232/1
if (TRACE_LINES) logerror("(1/3) Setting CTS* via CRU to %d\n", data);
- output_line_state(0, CTS, (data==0)? CTS : 0);
+ output_line_state(0, tms9902_device::CTS, (data==0)? tms9902_device::CTS : 0);
break;
case 6:
// Set the CTS line for RS232/2
if (TRACE_LINES) logerror("(2/4) Setting CTS* via CRU to %d\n", data);
- output_line_state(1, CTS, (data==0)? CTS : 0);
+ output_line_state(1, tms9902_device::CTS, (data==0)? tms9902_device::CTS : 0);
break;
case 7:
@@ -523,27 +523,27 @@ uint8_t ti_rs232_pio_device::map_lines_out(int uartind, uint8_t value)
if (TRACE_LINES) logerror("(RS232/%d) out connector pins = 0x%02x; translate for DTE\n", uartind+1, value);
- if (value & BRK)
+ if (value & tms9902_device::BRK)
{
if (TRACE_MAP) logerror("(RS232/%d) Sending BRK\n", uartind+1);
- ret |= EXCEPT | BRK;
+ ret |= tms9902_device::EXCEPT | tms9902_device::BRK;
}
if (mapping==0)
{
// V1
- if (value & CTS)
+ if (value & tms9902_device::CTS)
{
if (TRACE_MAP) logerror("(RS232/%d) Cannot map CTS line, ignoring\n", uartind+1);
}
- if (value & DSR)
+ if (value & tms9902_device::DSR)
{
- ret |= DTR;
+ ret |= tms9902_device::DTR;
if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1);
}
- if (value & DCD)
+ if (value & tms9902_device::DCD)
{
- ret |= RTS;
+ ret |= tms9902_device::RTS;
if (TRACE_MAP) logerror("(RS232/%d) Setting RTS line\n", uartind+1);
}
}
@@ -552,32 +552,32 @@ uint8_t ti_rs232_pio_device::map_lines_out(int uartind, uint8_t value)
if (mapping==1)
{
// V2
- if (value & CTS)
+ if (value & tms9902_device::CTS)
{
- ret |= RTS;
+ ret |= tms9902_device::RTS;
if (TRACE_MAP) logerror("(RS232/%d) Setting RTS line\n", uartind+1);
}
- if (value & DCD)
+ if (value & tms9902_device::DCD)
{
- ret |= DTR;
+ ret |= tms9902_device::DTR;
if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1);
}
}
else
{
// v3
- if (value & CTS)
+ if (value & tms9902_device::CTS)
{
- ret |= DTR;
+ ret |= tms9902_device::DTR;
if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1);
}
- if (value & DSR)
+ if (value & tms9902_device::DSR)
{
if (TRACE_MAP) logerror("(RS232/%d) Cannot map DSR line, ignoring\n", uartind+1);
}
- if (value & DCD)
+ if (value & tms9902_device::DCD)
{
- ret |= RTS;
+ ret |= tms9902_device::RTS;
if (TRACE_MAP) logerror("(RS232/%d) Setting RTS line\n", uartind+1);
}
}
@@ -595,25 +595,25 @@ uint8_t ti_rs232_pio_device::map_lines_in(int uartind, uint8_t value)
if (TRACE_LINES) logerror("(RS232/%d) in connector pins = 0x%02x; translate from DTE\n", uartind+1, value);
- if (value & BRK)
+ if (value & tms9902_device::BRK)
{
if (TRACE_MAP) logerror("(RS232/%d) Getting BRK\n", uartind+1);
- ret |= EXCEPT | BRK;
+ ret |= tms9902_device::EXCEPT | tms9902_device::BRK;
}
if (mapping==0)
{
// V1
- if (value & CTS)
+ if (value & tms9902_device::CTS)
{
if (TRACE_MAP) logerror("(RS232/%d) Cannot map CTS line, ignoring\n", uartind+1);
}
- if (value & DSR)
+ if (value & tms9902_device::DSR)
{
- ret |= DTR;
+ ret |= tms9902_device::DTR;
if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1);
}
- if (value & DCD)
+ if (value & tms9902_device::DCD)
{
if (TRACE_MAP) logerror("(RS232/%d) Cannot map DCD line, ignoring\n", uartind+1);
}
@@ -622,32 +622,32 @@ uint8_t ti_rs232_pio_device::map_lines_in(int uartind, uint8_t value)
{
if (mapping==1)
{
- if (value & DCD)
+ if (value & tms9902_device::DCD)
{
- ret |= DTR;
+ ret |= tms9902_device::DTR;
if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1);
}
- if (value & DSR)
+ if (value & tms9902_device::DSR)
{
if (TRACE_MAP) logerror("(RS232/%d) Cannot map DSR line, ignoring\n", uartind+1);
}
- if (value & CTS)
+ if (value & tms9902_device::CTS)
{
if (TRACE_MAP) logerror("(RS232/%d) Cannot map CTS line, ignoring\n", uartind+1);
}
}
else
{
- if (value & CTS)
+ if (value & tms9902_device::CTS)
{
- ret |= DTR;
+ ret |= tms9902_device::DTR;
if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1);
}
- if (value & DSR)
+ if (value & tms9902_device::DSR)
{
if (TRACE_MAP) logerror("(RS232/%d) Cannot map DSR line, ignoring\n", uartind+1);
}
- if (value & DCD)
+ if (value & tms9902_device::DCD)
{
if (TRACE_MAP) logerror("(RS232/%d) Cannot map DCD line, ignoring\n", uartind+1);
}
@@ -759,14 +759,14 @@ void ti_rs232_pio_device::receive_data_or_line_state(int uartind)
case RECV_MODE_ESC_LINES:
// Map the real serial interface lines to our emulated connector
// The mapping is the same for both directions, so we use the same function
- if (buffer & EXCEPT)
+ if (buffer & tms9902_device::EXCEPT)
{
// Exception states: BRK, FRMERR, PARERR
if (TRACE_LINES) logerror("(RS232/%d) Received BRK or ERROR <%02x>\n", uartind+1, buffer);
- m_uart[uartind]->rcv_break(((buffer & BRK)!=0));
+ m_uart[uartind]->rcv_break(((buffer & tms9902_device::BRK)!=0));
- if (buffer & FRMERR) m_uart[uartind]->rcv_framing_error();
- if (buffer & PARERR) m_uart[uartind]->rcv_parity_error();
+ if (buffer & tms9902_device::FRMERR) m_uart[uartind]->rcv_framing_error();
+ if (buffer & tms9902_device::PARERR) m_uart[uartind]->rcv_parity_error();
}
else
{
@@ -776,7 +776,7 @@ void ti_rs232_pio_device::receive_data_or_line_state(int uartind)
// The DTR line on the RS232 connector of the board is wired to both the
// CTS and the DSR pin of the TMS9902
// Apart from the data line, DTR is the only input line
- incoming_dtr(uartind, (buffer & DTR)? ASSERT_LINE : CLEAR_LINE);
+ incoming_dtr(uartind, (buffer & tms9902_device::DTR)? ASSERT_LINE : CLEAR_LINE);
}
m_recv_mode[uartind] = RECV_MODE_NORMAL;
@@ -806,40 +806,40 @@ void ti_rs232_pio_device::configure_interface(int uartind, int type, int value)
serial->fwrite(&esc, 1);
bufctrl[0] = 0x02;
- bufctrl[1] = CONFIG | TYPE_TMS9902;
+ bufctrl[1] = tms9902_device::CONFIG | tms9902_device::TYPE_TMS9902;
switch (type) {
- case RATERECV:
+ case tms9902_device::RATERECV:
if (TRACE_SETTING) logerror("(RS232/%d) Send receive rate %04x\n", uartind+1, value);
// value has 12 bits
// 1ccc xaaa = config adapter type a
// 1111 xaaa rrrr rrrr rrrr 0000 = config receive rate on a
// 1110 xaaa rrrr rrrr rrrr 0000 = config transmit rate on a
bufctrl[0] = 0x03; // length
- bufctrl[1] |= RATERECV;
+ bufctrl[1] |= tms9902_device::RATERECV;
bufctrl[2] = (value & 0x0ff0)>>4;
bufctrl[3] = (value & 0x0f)<<4;
break;
- case RATEXMIT:
+ case tms9902_device::RATEXMIT:
if (TRACE_SETTING) logerror("(RS232/%d) Send transmit rate %04x\n", uartind+1, value);
bufctrl[0] = 0x03; // length
- bufctrl[1] |= RATEXMIT;
+ bufctrl[1] |= tms9902_device::RATEXMIT;
bufctrl[2] = (value & 0x0ff0)>>4;
bufctrl[3] = (value & 0x0f)<<4;
break;
- case STOPBITS:
+ case tms9902_device::STOPBITS:
if (TRACE_SETTING) logerror("(RS232/%d) Send stop bit config %02x\n", uartind+1, value&0x03);
- bufctrl[1] |= STOPBITS;
+ bufctrl[1] |= tms9902_device::STOPBITS;
bufctrl[2] = (value & 0x03);
break;
- case DATABITS:
+ case tms9902_device::DATABITS:
if (TRACE_SETTING) logerror("(RS232/%d) Send data bit config %02x\n", uartind+1, value&0x03);
- bufctrl[1] |= DATABITS;
+ bufctrl[1] |= tms9902_device::DATABITS;
bufctrl[2] = (value & 0x03);
break;
- case PARITY:
+ case tms9902_device::PARITY:
if (TRACE_SETTING) logerror("(RS232/%d) Send parity config %02x\n", uartind+1, value&0x03);
- bufctrl[1] |= PARITY;
+ bufctrl[1] |= tms9902_device::PARITY;
bufctrl[2] = (value & 0x03);
break;
default:
@@ -855,9 +855,9 @@ void ti_rs232_pio_device::set_bit(int uartind, int line, int value)
{
switch (line)
{
- case CTS: logerror("(RS232/%d) Set CTS(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break;
- case DCD: logerror("(RS232/%d) Set DCD(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break;
- case BRK: logerror("(RS232/%d) Set BRK(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break;
+ case tms9902_device::CTS: logerror("(RS232/%d) Set CTS(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break;
+ case tms9902_device::DCD: logerror("(RS232/%d) Set DCD(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break;
+ case tms9902_device::BRK: logerror("(RS232/%d) Set BRK(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break;
}
}
@@ -887,7 +887,7 @@ void ti_rs232_pio_device::output_exception(int uartind, int param, uint8_t value
bufctrl[0] = 1;
// 0100 0xxv = exception xx: 02=BRK, 04=FRMERR, 06=PARERR; v=0,1 (only for BRK)
// BRK is the only output exception
- bufctrl[1] = EXCEPT | param | (value&1);
+ bufctrl[1] = tms9902_device::EXCEPT | param | (value&1);
serial->fwrite(bufctrl, 2);
}
@@ -917,13 +917,13 @@ void ti_rs232_pio_device::output_line_state(int uartind, int mask, uint8_t value
// 01ab cdef = setting line RTS=a, CTS=b, DSR=c, DCD=d, DTR=e, RI=f
// The CTS line (coming from a CRU bit) is connected to the CTS pin
- if (mask & CTS) set_bit(uartind, CTS, value & CTS);
+ if (mask & tms9902_device::CTS) set_bit(uartind, tms9902_device::CTS, value & tms9902_device::CTS);
// The RTS line (from 9902) is connected to the DCD pin
- if (mask & RTS) set_bit(uartind, DCD, value & RTS);
+ if (mask & tms9902_device::RTS) set_bit(uartind, tms9902_device::DCD, value & tms9902_device::RTS);
// The DSR pin is hardwired to +5V
- set_bit(uartind, DSR, 1);
+ set_bit(uartind, tms9902_device::DSR, 1);
// As of here, the lines are set according to the schematics of the
// serial interface.
@@ -989,7 +989,7 @@ WRITE8_MEMBER( ti_rs232_pio_device::xmit1_callback )
void ti_rs232_pio_device::ctrl_callback(int uartind, int offset, uint8_t data)
{
- if ((offset & CONFIG)!=0)
+ if ((offset & tms9902_device::CONFIG)!=0)
{
// We cannot pass the configuration data as they need more than 8 bits.
// Could be done by a write16 function as well.
@@ -997,9 +997,9 @@ void ti_rs232_pio_device::ctrl_callback(int uartind, int offset, uint8_t data)
}
else
{
- if ((offset & EXCEPT)!=0)
+ if ((offset & tms9902_device::EXCEPT)!=0)
{
- output_exception(uartind, offset & ~EXCEPT, data);
+ output_exception(uartind, offset & ~tms9902_device::EXCEPT, data);
}
else
{
@@ -1065,8 +1065,8 @@ void ti_rs232_pio_device::device_reset()
m_pio_spareout = false;
m_flag0 = false;
- set_bit(0, CTS, 0);
- set_bit(1, CTS, 0);
+ set_bit(0, tms9902_device::CTS, 0);
+ set_bit(1, tms9902_device::CTS, 0);
m_led = false;
m_recv_mode[0] = RECV_MODE_NORMAL;
@@ -1145,6 +1145,6 @@ ioport_constructor ti_rs232_pio_device::device_input_ports() const
return INPUT_PORTS_NAME(ti_rs232);
}
-const device_type TI99_RS232 = device_creator<ti_rs232_pio_device>;
-const device_type TI99_RS232_DEV = device_creator<ti_rs232_attached_device>;
-const device_type TI99_PIO_DEV = device_creator<ti_pio_attached_device>;
+DEFINE_DEVICE_TYPE(TI99_RS232, ti_rs232_pio_device, "ti99_rs232", "TI-99 RS232/PIO interface")
+DEFINE_DEVICE_TYPE(TI99_RS232_DEV, ti_rs232_attached_device, "ti99_rs232_atttached", "TI-99 Serial attached device")
+DEFINE_DEVICE_TYPE(TI99_PIO_DEV, ti_pio_attached_device, "ti99_pio_attached", "TI-99 Parallel attached device")
diff --git a/src/devices/bus/ti99_peb/ti_rs232.h b/src/devices/bus/ti99/peb/ti_rs232.h
index c4d6d24f37f..6f246363323 100644
--- a/src/devices/bus/ti99_peb/ti_rs232.h
+++ b/src/devices/bus/ti99/peb/ti_rs232.h
@@ -10,18 +10,18 @@
*****************************************************************************/
-#ifndef __TIRS232__
-#define __TIRS232__
+#ifndef MAME_BUS_TI99_PEB_TI_RS232_H
+#define MAME_BUS_TI99_PEB_TI_RS232_H
+
+#pragma once
#include "peribox.h"
#include "machine/tms9902.h"
-extern const device_type TI99_RS232;
-extern const device_type TI99_RS232_DEV;
-extern const device_type TI99_PIO_DEV;
+DECLARE_DEVICE_TYPE(TI99_RS232, ti_rs232_pio_device)
+DECLARE_DEVICE_TYPE(TI99_RS232_DEV, ti_rs232_attached_device)
+DECLARE_DEVICE_TYPE(TI99_PIO_DEV, ti_pio_attached_device)
-class ti_rs232_attached_device;
-class ti_pio_attached_device;
class ti_rs232_pio_device : public ti_expansion_card_device
{
@@ -46,10 +46,10 @@ public:
DECLARE_WRITE8_MEMBER( ctrl1_callback );
protected:
- virtual void device_start(void) override;
- virtual void device_reset(void) override;
- virtual void device_stop(void) override;
- virtual const tiny_rom_entry *device_rom_region(void) const override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_stop() override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
@@ -128,7 +128,7 @@ public:
const char *file_extensions() const override { return ""; }
protected:
- virtual void device_start(void) override;
+ virtual void device_start() override;
image_init_result call_load() override;
void call_unload() override;
@@ -154,9 +154,9 @@ public:
const char *file_extensions() const override { return ""; }
protected:
- virtual void device_start(void) override;
+ virtual void device_start() override;
image_init_result call_load() override;
void call_unload() override;
};
-#endif
+#endif // MAME_BUS_TI99_PEB_TI_RS232_H
diff --git a/src/devices/bus/ti99_peb/tn_ide.cpp b/src/devices/bus/ti99/peb/tn_ide.cpp
index 5a4f9ca523b..e4bd1864b5c 100644
--- a/src/devices/bus/ti99_peb/tn_ide.cpp
+++ b/src/devices/bus/ti99/peb/tn_ide.cpp
@@ -28,8 +28,6 @@
*****************************************************************************/
#include "emu.h"
-#include "peribox.h"
-#include "machine/ataintf.h"
#include "tn_ide.h"
#define CRU_BASE 0x1000
@@ -50,7 +48,7 @@ enum
};
nouspikel_ide_interface_device::nouspikel_ide_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ti_expansion_card_device(mconfig, TI99_IDE, "Nouspikel IDE interface card", tag, owner, clock, "ti99_ide", __FILE__), m_ata_irq(false),
+ : ti_expansion_card_device(mconfig, TI99_IDE, tag, owner, clock), m_ata_irq(false),
m_cru_register(0), m_rtc(nullptr),
m_ata(*this, "ata"), m_clk_irq(false), m_sram_enable(false),
m_sram_enable_dip(false), m_cur_page(0), m_tms9995_mode(false),
@@ -384,4 +382,4 @@ ioport_constructor nouspikel_ide_interface_device::device_input_ports() const
return INPUT_PORTS_NAME(tn_ide);
}
-const device_type TI99_IDE = device_creator<nouspikel_ide_interface_device>;
+DEFINE_DEVICE_TYPE(TI99_IDE, nouspikel_ide_interface_device, "ti99_ide", "Nouspikel IDE interface card")
diff --git a/src/devices/bus/ti99_peb/tn_ide.h b/src/devices/bus/ti99/peb/tn_ide.h
index 923b4cde39b..edef805b2f1 100644
--- a/src/devices/bus/ti99_peb/tn_ide.h
+++ b/src/devices/bus/ti99/peb/tn_ide.h
@@ -11,14 +11,17 @@
*****************************************************************************/
-#ifndef __TNIDE__
-#define __TNIDE__
+#ifndef MAME_BUS_TI99_PEB_TN_IDE_H
+#define MAME_BUS_TI99_PEB_TN_IDE_H
+#pragma once
+
+#include "peribox.h"
#include "machine/ataintf.h"
-#include "machine/rtc65271.h"
#include "machine/ram.h"
+#include "machine/rtc65271.h"
-extern const device_type TI99_IDE;
+DECLARE_DEVICE_TYPE(TI99_IDE, nouspikel_ide_interface_device)
class nouspikel_ide_interface_device : public ti_expansion_card_device
{
@@ -38,8 +41,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(ide_interrupt_callback);
protected:
- virtual void device_start(void) override;
- virtual void device_reset(void) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
@@ -60,4 +63,4 @@ private:
required_device<ram_device> m_ram;
};
-#endif
+#endif // MAME_BUS_TI99_PEB_TN_IDE_H
diff --git a/src/devices/bus/ti99_peb/tn_usbsm.cpp b/src/devices/bus/ti99/peb/tn_usbsm.cpp
index 91d4973da80..8dda313e122 100644
--- a/src/devices/bus/ti99_peb/tn_usbsm.cpp
+++ b/src/devices/bus/ti99/peb/tn_usbsm.cpp
@@ -56,7 +56,7 @@ enum
};
nouspikel_usb_smartmedia_device::nouspikel_usb_smartmedia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ti_expansion_card_device(mconfig, TI99_USBSM, "Nouspikel USB/Smartmedia card", tag, owner, clock, "ti99_usbsm", __FILE__),
+ : ti_expansion_card_device(mconfig, TI99_USBSM, tag, owner, clock),
m_feeprom_page(0),
m_sram_page(0),
m_cru_register(0),
@@ -376,4 +376,4 @@ ioport_constructor nouspikel_usb_smartmedia_device::device_input_ports() const
return INPUT_PORTS_NAME(tn_usbsm);
}
-const device_type TI99_USBSM = device_creator<nouspikel_usb_smartmedia_device>;
+DEFINE_DEVICE_TYPE(TI99_USBSM, nouspikel_usb_smartmedia_device, "ti99_usbsm", "Nouspikel USB/Smartmedia card")
diff --git a/src/devices/bus/ti99_peb/tn_usbsm.h b/src/devices/bus/ti99/peb/tn_usbsm.h
index f363cf34b5c..285533a572e 100644
--- a/src/devices/bus/ti99_peb/tn_usbsm.h
+++ b/src/devices/bus/ti99/peb/tn_usbsm.h
@@ -11,15 +11,17 @@
*****************************************************************************/
-#ifndef __USBSMART__
-#define __USBSMART__
+#ifndef MAME_BUS_TI99_PEB_TN_USBSM_H
+#define MAME_BUS_TI99_PEB_TN_USBSM_H
+
+#pragma once
#include "peribox.h"
#include "machine/smartmed.h"
#include "machine/strata.h"
#include "machine/ram.h"
-extern const device_type TI99_USBSM;
+DECLARE_DEVICE_TYPE(TI99_USBSM, nouspikel_usb_smartmedia_device)
class nouspikel_usb_smartmedia_device : public ti_expansion_card_device
{
@@ -32,8 +34,8 @@ public:
DECLARE_WRITE8_MEMBER(cruwrite) override;
protected:
- virtual void device_start(void) override;
- virtual void device_reset(void) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
@@ -58,4 +60,4 @@ private:
required_device<strataflash_device> m_flash;
};
-#endif
+#endif // MAME_BUS_TI99_PEB_TN_USBSM_H
diff --git a/src/devices/bus/ti99x/990_dk.cpp b/src/devices/bus/ti99x/990_dk.cpp
index a6a16ba46fb..ca859f7598c 100644
--- a/src/devices/bus/ti99x/990_dk.cpp
+++ b/src/devices/bus/ti99x/990_dk.cpp
@@ -40,10 +40,10 @@ enum
status_unit_shift = 13
};
-const device_type FD800 = device_creator<fd800_legacy_device>;
+DEFINE_DEVICE_TYPE(TI99X_FD800, fd800_legacy_device, "ti99x_fd800", "TI FD800 Diablo floppy disk controller")
fd800_legacy_device::fd800_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, FD800, "TI FD800 Diablo floppy disk controller", tag, owner, clock, "fd800", __FILE__),
+ : device_t(mconfig, TI99X_FD800, tag, owner, clock),
m_recv_buf(0), m_stat_reg(0), m_xmit_buf(0), m_cmd_reg(0), m_interrupt_f_f(0),
m_int_line(*this), m_buf_pos(0), m_buf_mode(), m_unit(0), m_sector(0)
{
@@ -58,7 +58,8 @@ void fd800_legacy_device::set_interrupt_line()
}
-/* void fd800_legacy_device::unload_proc(device_image_interface &image)
+#if 0
+void fd800_legacy_device::unload_proc(device_image_interface &image)
{
int unit = floppy_get_drive(&image.device());
@@ -90,7 +91,7 @@ void fd800_machine_init(void (*interrupt_callback)(running_machine &machine, int
set_interrupt_line();
}
-*/
+#endif
/*
Read the first id field that can be found on the floppy disk.
@@ -265,7 +266,7 @@ int fd800_legacy_device::do_restore(int unit)
/*
Perform a read operation for one sector
*/
-void fd800_legacy_device::do_read(void)
+void fd800_legacy_device::do_read()
{
/* int data_id;
@@ -294,7 +295,7 @@ void fd800_legacy_device::do_read(void)
/*
Perform a write operation for one sector
*/
-void fd800_legacy_device::do_write(void)
+void fd800_legacy_device::do_write()
{
/* int data_id;
@@ -319,7 +320,7 @@ void fd800_legacy_device::do_write(void)
/*
Execute a fdc command
*/
-void fd800_legacy_device::do_cmd(void)
+void fd800_legacy_device::do_cmd()
{
/*
int unit;
@@ -869,7 +870,7 @@ LEGACY_FLOPPY_OPTIONS_START(fd800)
LEGACY_FLOPPY_OPTIONS_END
#endif
-void fd800_legacy_device::device_start(void)
+void fd800_legacy_device::device_start()
{
logerror("fd800: start\n");
m_int_line.resolve();
@@ -883,7 +884,7 @@ void fd800_legacy_device::device_start(void)
}
}
-void fd800_legacy_device::device_reset(void)
+void fd800_legacy_device::device_reset()
{
logerror("fd800: reset\n");
m_stat_reg = 0;
diff --git a/src/devices/bus/ti99x/990_dk.h b/src/devices/bus/ti99x/990_dk.h
index e7cbed7b985..97c00ef21d5 100644
--- a/src/devices/bus/ti99x/990_dk.h
+++ b/src/devices/bus/ti99x/990_dk.h
@@ -4,12 +4,12 @@
990_dk.h: include file for 990_dk.c
*/
-#ifndef __990_DK__
-#define __990_DK__
+#ifndef MAME_BUS_TI99X_990_DK_H
+#define MAME_BUS_TI99X_990_DK_H
-extern const device_type FD800;
+#pragma once
-#define MAX_FLOPPIES 4
+DECLARE_DEVICE_TYPE(TI99X_FD800, fd800_legacy_device)
class fd800_legacy_device : public device_t
{
@@ -18,23 +18,30 @@ public:
DECLARE_READ8_MEMBER( cru_r );
DECLARE_WRITE8_MEMBER( cru_w );
- template<class _Object> static devcb_base &static_set_int_callback(device_t &device, _Object object)
+ template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb)
{
- return downcast<fd800_legacy_device &>(device).m_int_line.set_callback(object);
+ return downcast<fd800_legacy_device &>(device).m_int_line.set_callback(std::forward<Object>(cb));
}
private:
- void device_start(void) override;
- void device_reset(void) override;
+ enum buf_mode_t
+ {
+ bm_off, bm_read, bm_write
+ };
+
+ static constexpr unsigned MAX_FLOPPIES = 4;
+
+ void device_start() override;
+ void device_reset() override;
void set_interrupt_line();
int read_id(int unit, int head, int *cylinder_id, int *sector_id);
int find_sector(int unit, int head, int sector, int *data_id);
int do_seek(int unit, int cylinder, int head);
int do_restore(int unit);
- void do_read(void);
- void do_write(void);
- void do_cmd(void);
+ void do_read();
+ void do_write();
+ void do_cmd();
uint16_t m_recv_buf;
uint16_t m_stat_reg;
@@ -44,10 +51,6 @@ private:
int m_interrupt_f_f;
devcb_write_line m_int_line;
- enum buf_mode_t {
- bm_off, bm_read, bm_write
- };
-
uint8_t m_buf[128];
int m_buf_pos;
buf_mode_t m_buf_mode;
@@ -71,4 +74,4 @@ private:
#define MCFG_FD800_INT_HANDLER( _intcallb ) \
devcb = &fd800_legacy_device::static_set_int_callback( *device, DEVCB_##_intcallb );
-#endif
+#endif // MAME_BUS_TI99X_990_DK_H
diff --git a/src/devices/bus/ti99x/990_hd.cpp b/src/devices/bus/ti99x/990_hd.cpp
index 46695114294..0aa23f3589e 100644
--- a/src/devices/bus/ti99x/990_hd.cpp
+++ b/src/devices/bus/ti99x/990_hd.cpp
@@ -280,7 +280,7 @@ int ti990_hdc_device::is_unit_loaded(int unit)
Parse the disk select lines, and return the corresponding tape unit.
(-1 if none)
*/
-int ti990_hdc_device::cur_disk_unit(void)
+int ti990_hdc_device::cur_disk_unit()
{
int reply;
@@ -974,11 +974,10 @@ static MACHINE_CONFIG_FRAGMENT( ti990_hdc )
MCFG_HARDDISK_UNLOAD(ti990_hdc_device, ti990_hd)
MACHINE_CONFIG_END
-const device_type TI990_HDC = device_creator<ti990_hdc_device>;
+DEFINE_DEVICE_TYPE(TI990_HDC, ti990_hdc_device, "ti990_hdc", "Generic TI-990 Hard Disk Controller")
ti990_hdc_device::ti990_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TI990_HDC, "Generic TI-990 Hard Disk Controller", tag, owner, clock, "hdc_990", __FILE__),
- m_interrupt_callback(*this)
+ : device_t(mconfig, TI990_HDC, tag, owner, clock), m_interrupt_callback(*this)
{
}
diff --git a/src/devices/bus/ti99x/990_hd.h b/src/devices/bus/ti99x/990_hd.h
index dacf4a855f7..0f04703d701 100644
--- a/src/devices/bus/ti99x/990_hd.h
+++ b/src/devices/bus/ti99x/990_hd.h
@@ -3,21 +3,19 @@
/*
990_hd.h: include file for 990_hd.c
*/
-#ifndef __990_HD_H_
-#define __990_HD_H_
+#ifndef MAME_BUS_TI99X_990_HD_H
+#define MAME_BUS_TI99X_990_HD_H
-#include "imagedev/harddriv.h"
+#pragma once
-/* max disk units per controller: 4 is the protocol limit, but it may be
-overridden if more than one controller is used */
-#define MAX_DISK_UNIT 4
+#include "imagedev/harddriv.h"
class ti990_hdc_device : public device_t
{
public:
ti990_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &static_set_int_callback(device_t &device, _Object object) { return downcast<ti990_hdc_device &>(device).m_interrupt_callback.set_callback(object); }
+ template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) { return downcast<ti990_hdc_device &>(device).m_interrupt_callback.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER(read);
DECLARE_WRITE16_MEMBER(write);
@@ -32,7 +30,7 @@ protected:
int get_id_from_device( device_t *device );
inline int is_unit_loaded(int unit);
- int cur_disk_unit(void);
+ int cur_disk_unit();
void update_interrupt();
int check_sector_address(int unit, unsigned int cylinder, unsigned int head, unsigned int sector);
int sector_to_lba(int unit, unsigned int cylinder, unsigned int head, unsigned int sector, unsigned int *lba);
@@ -45,7 +43,11 @@ protected:
void unformatted_read();
void restore();
void execute_command();
+
private:
+ // max disk units per controller: 4 is the protocol limit, but it may be overridden if more than one controller is used
+ static constexpr unsigned MAX_DISK_UNIT = 4;
+
enum format_t
{
format_mame,
@@ -75,6 +77,6 @@ private:
#define MCFG_TI990_HDC_INT_CALLBACK( _write ) \
devcb = &ti990_hdc_device::static_set_int_callback( *device, DEVCB_##_write );
-extern const device_type TI990_HDC;
+DECLARE_DEVICE_TYPE(TI990_HDC, ti990_hdc_device)
-#endif
+#endif // MAME_BUS_TI99X_990_HD_H
diff --git a/src/devices/bus/ti99x/990_tap.cpp b/src/devices/bus/ti99x/990_tap.cpp
index 590d40545ac..2a6f0ba75d0 100644
--- a/src/devices/bus/ti99x/990_tap.cpp
+++ b/src/devices/bus/ti99x/990_tap.cpp
@@ -913,11 +913,10 @@ private:
int tape_get_id();
};
-const device_type TI990_TAPE = device_creator<ti990_tape_image_device>;
+DEFINE_DEVICE_TYPE(TI990_TAPE, ti990_tape_image_device, "ti990_tape_image", "TI-990 Magnetic Tape")
ti990_tape_image_device::ti990_tape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TI990_TAPE, "TI-990 Magnetic Tape", tag, owner, clock, "ti990_tape_image", __FILE__),
- device_image_interface(mconfig, *this)
+ : device_t(mconfig, TI990_TAPE, tag, owner, clock), device_image_interface(mconfig, *this)
{
}
@@ -968,11 +967,10 @@ static MACHINE_CONFIG_FRAGMENT( tap_990 )
MCFG_TI990_TAPE_ADD("tape3")
MACHINE_CONFIG_END
-const device_type TI990_TAPE_CTRL = device_creator<tap_990_device>;
+DEFINE_DEVICE_TYPE(TI990_TAPE_CTRL, tap_990_device, "ti990_tap", "Generic TI-900 Tape Controller")
tap_990_device::tap_990_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TI990_TAPE_CTRL, "Generic TI-990 Tape Controller", tag, owner, clock, "tap_990", __FILE__),
- m_int_line(*this)
+ : device_t(mconfig, TI990_TAPE_CTRL, tag, owner, clock), m_int_line(*this)
{
}
@@ -999,5 +997,5 @@ void tap_990_device::device_start()
machine_config_constructor tap_990_device::device_mconfig_additions() const
{
- return MACHINE_CONFIG_NAME( tap_990 );
+ return MACHINE_CONFIG_NAME( tap_990 );
}
diff --git a/src/devices/bus/ti99x/990_tap.h b/src/devices/bus/ti99x/990_tap.h
index 887cfd4bab6..9b256156ca2 100644
--- a/src/devices/bus/ti99x/990_tap.h
+++ b/src/devices/bus/ti99x/990_tap.h
@@ -3,25 +3,20 @@
/*
990_tap.h: include file for 990_tap.c
*/
+#ifndef MAME_BUS_TI99X_990_TAP_H
+#define MAME_BUS_TI99X_990_TAP_H
-extern const device_type TI990_TAPE_CTRL;
-#define MAX_TAPE_UNIT 4
+#pragma once
-struct tape_unit_t
-{
- device_image_interface *img; // image descriptor
- bool bot; // true if we are at the beginning of tape
- bool eot; // true if we are at the end of tape
- bool wp; // true if tape is write-protected
-};
+DECLARE_DEVICE_TYPE(TI990_TAPE_CTRL, tap_990_device)
class tap_990_device : public device_t
{
public:
tap_990_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &static_set_int_callback(device_t &device, _Object object)
+ template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb)
{
- return downcast<tap_990_device &>(device).m_int_line.set_callback(object);
+ return downcast<tap_990_device &>(device).m_int_line.set_callback(std::forward<Object>(cb));
}
DECLARE_READ16_MEMBER( read );
@@ -41,6 +36,16 @@ protected:
virtual machine_config_constructor device_mconfig_additions() const override;
private:
+ static constexpr unsigned MAX_TAPE_UNIT = 4;
+
+ struct tape_unit_t
+ {
+ device_image_interface *img; // image descriptor
+ bool bot; // true if we are at the beginning of tape
+ bool eot; // true if we are at the end of tape
+ bool wp; // true if tape is write-protected
+ };
+
int cur_tape_unit();
void update_interrupt();
void cmd_read_binary_forward();
@@ -60,3 +65,5 @@ private:
#define MCFG_TI990_TAPE_INT_HANDLER( _intcallb ) \
devcb = &tap_990_device::static_set_int_callback( *device, DEVCB_##_intcallb );
+
+#endif // MAME_BUS_TI99X_990_TAP_H
diff --git a/src/devices/bus/ti99x/998board.cpp b/src/devices/bus/ti99x/998board.cpp
index 34f9d564ddd..cc03e115112 100644
--- a/src/devices/bus/ti99x/998board.cpp
+++ b/src/devices/bus/ti99x/998board.cpp
@@ -122,8 +122,17 @@
#define TRACE_GROM 0
#define TRACE_PUNMAP 0
+enum
+{
+ SGMSEL = 1,
+ TSGSEL = 2,
+ P8GSEL = 4,
+ P3GSEL = 8,
+ VIDSEL = 16
+};
+
mainboard8_device::mainboard8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MAINBOARD8, "TI-99/8 Mainboard", tag, owner, clock, "ti998_mainboard", __FILE__),
+ : device_t(mconfig, TI99_MAINBOARD8, tag, owner, clock),
m_A14_set(false),
m_pending_write(false),
m_speech_ready(true),
@@ -994,17 +1003,18 @@ void mainboard8_device::device_reset()
}
MACHINE_CONFIG_FRAGMENT( ti998_mainboard )
- MCFG_DEVICE_ADD(VAQUERRO_TAG, VAQUERRO, 0)
- MCFG_DEVICE_ADD(MOFETTA_TAG, MOFETTA, 0)
- MCFG_DEVICE_ADD(AMIGO_TAG, AMIGO, 0)
- MCFG_DEVICE_ADD(OSO_TAG, OSO, 0)
+ MCFG_DEVICE_ADD(VAQUERRO_TAG, TI99_VAQUERRO, 0)
+ MCFG_DEVICE_ADD(MOFETTA_TAG, TI99_MOFETTA, 0)
+ MCFG_DEVICE_ADD(AMIGO_TAG, TI99_AMIGO, 0)
+ MCFG_DEVICE_ADD(OSO_TAG, TI99_OSO, 0)
MACHINE_CONFIG_END
machine_config_constructor mainboard8_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( ti998_mainboard );
}
-const device_type MAINBOARD8 = device_creator<mainboard8_device>;
+
+DEFINE_DEVICE_TYPE(TI99_MAINBOARD8, mainboard8_device, "ti998_mainboard", "TI-99/8 Mainboard")
/***************************************************************************
@@ -1084,7 +1094,7 @@ const device_type MAINBOARD8 = device_creator<mainboard8_device>;
***************************************************************************/
vaquerro_device::vaquerro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: device_t(mconfig, VAQUERRO, "Logical Address Space Decoder", tag, owner, clock, "ti998_vaquerro", __FILE__),
+ : device_t(mconfig, TI99_VAQUERRO, tag, owner, clock),
m_crus(ASSERT_LINE),
m_crugl(ASSERT_LINE),
m_ggrdy(ASSERT_LINE)
@@ -1408,12 +1418,12 @@ void vaquerro_device::device_reset()
asserted, while the READY line remains Low.
7. Continue at 3.
*/
-void waitstate_generator::select_in(bool addressed)
+void vaquerro_device::waitstate_generator::select_in(bool addressed)
{
m_addressed = addressed;
}
-int waitstate_generator::select_out()
+int vaquerro_device::waitstate_generator::select_out()
{
return (!m_counting && m_addressed)? m_selvalue : 0;
}
@@ -1421,22 +1431,22 @@ int waitstate_generator::select_out()
/*
Should be low by default.
*/
-line_state waitstate_generator::ready_out()
+line_state vaquerro_device::waitstate_generator::ready_out()
{
return (m_ready && !m_counting && m_generate)? ASSERT_LINE : CLEAR_LINE;
}
-bool waitstate_generator::is_counting()
+bool vaquerro_device::waitstate_generator::is_counting()
{
return m_counting;
}
-bool waitstate_generator::is_generating()
+bool vaquerro_device::waitstate_generator::is_generating()
{
return m_generate;
}
-bool waitstate_generator::is_ready()
+bool vaquerro_device::waitstate_generator::is_ready()
{
return m_ready;
}
@@ -1444,12 +1454,12 @@ bool waitstate_generator::is_ready()
/*
READY in. This may only show an effect with the next trailing edge of CLKOUT.
*/
-void grom_waitstate_generator::ready_in(line_state ready)
+void vaquerro_device::grom_waitstate_generator::ready_in(line_state ready)
{
m_ready = (ready==ASSERT_LINE);
}
-void grom_waitstate_generator::clock_in(line_state clkout)
+void vaquerro_device::grom_waitstate_generator::clock_in(line_state clkout)
{
if (clkout == ASSERT_LINE)
{
@@ -1470,7 +1480,7 @@ void grom_waitstate_generator::clock_in(line_state clkout)
}
}
-void waitstate_generator::treset_in(line_state reset)
+void vaquerro_device::waitstate_generator::treset_in(line_state reset)
{
if (reset==ASSERT_LINE)
{
@@ -1479,7 +1489,7 @@ void waitstate_generator::treset_in(line_state reset)
}
}
-void video_waitstate_generator::clock_in(line_state clkout)
+void vaquerro_device::video_waitstate_generator::clock_in(line_state clkout)
{
if (clkout == ASSERT_LINE)
{
@@ -1500,7 +1510,7 @@ void video_waitstate_generator::clock_in(line_state clkout)
}
}
-const device_type VAQUERRO = device_creator<vaquerro_device>;
+DEFINE_DEVICE_TYPE(TI99_VAQUERRO, vaquerro_device, "ti998_vaquerro", "TI-99/8 Logical Address Space Decoder")
/***************************************************************************
===== MOFETTA: Physical Address Space decoder =====
@@ -1538,7 +1548,7 @@ enum
};
mofetta_device::mofetta_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MOFETTA, "Physical Address Space Decoder", tag, owner, clock, "ti998_mofetta", __FILE__),
+ : device_t(mconfig, TI99_MOFETTA, tag, owner, clock),
m_gotfirstword(false)
{
}
@@ -1761,7 +1771,7 @@ void mofetta_device::device_reset()
}
-const device_type MOFETTA = device_creator<mofetta_device>;
+DEFINE_DEVICE_TYPE(TI99_MOFETTA, mofetta_device, "ti998_mofetta", "TI-99/8 Physical Address Space Decoder")
/***************************************************************************
@@ -1837,7 +1847,7 @@ const device_type MOFETTA = device_creator<mofetta_device>;
***************************************************************************/
amigo_device::amigo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: device_t(mconfig, AMIGO, "Address space mapper", tag, owner, clock, "ti998_amigo", __FILE__),
+ : device_t(mconfig, TI99_AMIGO, tag, owner, clock),
m_logical_space(true),
m_crus(ASSERT_LINE)
{
@@ -2156,7 +2166,7 @@ void amigo_device::device_reset()
m_logical_space = true;
}
-const device_type AMIGO = device_creator<amigo_device>;
+DEFINE_DEVICE_TYPE(TI99_AMIGO, amigo_device, "ti998_amigo", "TI-99/8 Address space mapper")
/***************************************************************************
@@ -2226,7 +2236,7 @@ enum
};
oso_device::oso_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: device_t(mconfig, OSO, "Hexbus interface", tag, owner, clock, "oso", __FILE__), m_data(0), m_status(0), m_control(0), m_xmit(0)
+ : device_t(mconfig, TI99_OSO, tag, owner, clock), m_data(0), m_status(0), m_control(0), m_xmit(0)
{
}
@@ -2295,4 +2305,4 @@ void oso_device::device_start()
save_item(NAME(m_xmit));
}
-const device_type OSO = device_creator<oso_device>;
+DEFINE_DEVICE_TYPE(TI99_OSO, oso_device, "ti998_oso", "TI-99/8 Hexbus interface")
diff --git a/src/devices/bus/ti99x/998board.h b/src/devices/bus/ti99x/998board.h
index 32bff2f42db..250e8c061f4 100644
--- a/src/devices/bus/ti99x/998board.h
+++ b/src/devices/bus/ti99x/998board.h
@@ -13,97 +13,33 @@
*****************************************************************************/
-#ifndef __MAPPER8__
-#define __MAPPER8__
+#ifndef MAME_BUS_TI99X_998BOARD_H
+#define MAME_BUS_TI99X_998BOARD_H
+
+#pragma once
#include "ti99defs.h"
+#include "gromport.h"
+
+#include "bus/ti99/peb/peribox.h"
+#include "machine/ram.h"
#include "machine/tmc0430.h"
-#include "video/tms9928a.h"
#include "sound/sn76496.h"
#include "sound/tms5220.h"
-#include "gromport.h"
-#include "bus/ti99_peb/peribox.h"
-#include "machine/ram.h"
+#include "video/tms9928a.h"
-extern const device_type MAINBOARD8;
+DECLARE_DEVICE_TYPE(TI99_MAINBOARD8, mainboard8_device)
#define VAQUERRO_TAG "vaquerro"
#define MOFETTA_TAG "mofetta"
#define AMIGO_TAG "amigo"
#define OSO_TAG "oso"
-class mainboard8_device;
-extern const device_type VAQUERRO;
-extern const device_type MOFETTA;
-extern const device_type AMIGO;
-extern const device_type OSO;
-
-
-enum
-{
- SGMSEL = 1,
- TSGSEL = 2,
- P8GSEL = 4,
- P3GSEL = 8,
- VIDSEL = 16
-};
-
-/*
- Wait state generator (part of Vaquerro)
-*/
-class waitstate_generator
-{
-public:
- waitstate_generator() :
- m_counting(false),
- m_generate(false),
- m_counter(0),
- m_addressed(true),
- m_ready(true) { };
-
- virtual ~waitstate_generator() { }
- void select_in(bool addressed);
- virtual void ready_in(line_state ready) =0;
- virtual void clock_in(line_state clkout) =0;
- void treset_in(line_state reset);
-
- int select_out();
- void init(int select_value) { m_selvalue = select_value; }
+DECLARE_DEVICE_TYPE(TI99_VAQUERRO, vaquerro_device)
+DECLARE_DEVICE_TYPE(TI99_MOFETTA, mofetta_device)
+DECLARE_DEVICE_TYPE(TI99_AMIGO, amigo_device)
+DECLARE_DEVICE_TYPE(TI99_OSO, oso_device)
- line_state ready_out();
-
- bool is_counting();
- bool is_generating();
- bool is_ready();
-
-protected:
- // Two flipflops
- bool m_counting;
- bool m_generate;
- // Counter
- int m_counter;
-
- // Select value (indicates selected line)
- int m_selvalue;
-
- // Line state flags
- bool m_addressed;
- bool m_ready;
-};
-
-class grom_waitstate_generator : public waitstate_generator
-{
-public:
- void ready_in(line_state ready) override;
- void clock_in(line_state clkout) override;
-};
-
-class video_waitstate_generator : public waitstate_generator
-{
-public:
- void ready_in(line_state ready) override { };
- void clock_in(line_state clkout) override;
-};
/*
Custom chip: Vaquerro
@@ -146,6 +82,65 @@ public:
DECLARE_WRITE_LINE_MEMBER( p3gry );
private:
+ /*
+ Wait state generator (part of Vaquerro)
+ */
+ class waitstate_generator
+ {
+ public:
+ waitstate_generator() :
+ m_counting(false),
+ m_generate(false),
+ m_counter(0),
+ m_addressed(true),
+ m_ready(true)
+ {
+ }
+
+ virtual ~waitstate_generator() { }
+ void select_in(bool addressed);
+ virtual void ready_in(line_state ready) = 0;
+ virtual void clock_in(line_state clkout) = 0;
+ void treset_in(line_state reset);
+
+ int select_out();
+ void init(int select_value) { m_selvalue = select_value; }
+
+ line_state ready_out();
+
+ bool is_counting();
+ bool is_generating();
+ bool is_ready();
+
+ protected:
+ // Two flipflops
+ bool m_counting;
+ bool m_generate;
+ // Counter
+ int m_counter;
+
+ // Select value (indicates selected line)
+ int m_selvalue;
+
+ // Line state flags
+ bool m_addressed;
+ bool m_ready;
+ };
+
+ class grom_waitstate_generator : public waitstate_generator
+ {
+ public:
+ void ready_in(line_state ready) override;
+ void clock_in(line_state clkout) override;
+ };
+
+ class video_waitstate_generator : public waitstate_generator
+ {
+ public:
+ void ready_in(line_state ready) override { }
+ void clock_in(line_state clkout) override;
+ };
+
// Memory cycle state
bool m_memen;
@@ -455,8 +450,8 @@ public:
// void set_gromport(gromport_device* dev) { m_gromport = dev; }
protected:
- void device_start(void) override;
- void device_reset(void) override;
+ void device_start() override;
+ void device_reset() override;
machine_config_constructor device_mconfig_additions() const override;
private:
@@ -518,7 +513,7 @@ private:
required_device<tms9928a_device> m_video;
required_device<sn76496_base_device> m_sound;
required_device<cd2501ecd_device> m_speech;
- required_device<gromport_device> m_gromport;
+ required_device<ti99_gromport_device> m_gromport;
required_device<peribox_device> m_peb;
required_device<ram_device> m_sram;
required_device<ram_device> m_dram;
diff --git a/src/devices/bus/ti99x/datamux.cpp b/src/devices/bus/ti99x/datamux.cpp
index ba1d96e4417..2ccf7055410 100644
--- a/src/devices/bus/ti99x/datamux.cpp
+++ b/src/devices/bus/ti99x/datamux.cpp
@@ -75,7 +75,7 @@
Constructor
*/
ti99_datamux_device::ti99_datamux_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DATAMUX, "Databus multiplexer", tag, owner, clock, "ti99_datamux", __FILE__),
+ : device_t(mconfig, TI99_DATAMUX, tag, owner, clock),
m_video(*owner, VDP_TAG),
m_sound(*owner, TISOUNDCHIP_TAG),
m_peb(*owner, PERIBOX_TAG),
@@ -94,7 +94,8 @@ ti99_datamux_device::ti99_datamux_device(const machine_config &mconfig, const ch
m_base32k(0),
m_console_groms_present(false),
m_grom_idle(true)
- { }
+{
+}
#define TRACE_READY 0
#define TRACE_ACCESS 0
@@ -636,4 +637,4 @@ ioport_constructor ti99_datamux_device::device_input_ports() const
return INPUT_PORTS_NAME(datamux);
}
-const device_type DATAMUX = device_creator<ti99_datamux_device>;
+DEFINE_DEVICE_TYPE(TI99_DATAMUX, ti99_datamux_device, "ti99_datamux", "TI-99 Databus multiplexer")
diff --git a/src/devices/bus/ti99x/datamux.h b/src/devices/bus/ti99x/datamux.h
index 828abebe667..ee0042d7ca9 100644
--- a/src/devices/bus/ti99x/datamux.h
+++ b/src/devices/bus/ti99x/datamux.h
@@ -11,18 +11,20 @@
*****************************************************************************/
-#ifndef __DMUX__
-#define __DMUX__
+#ifndef MAME_BUS_TI99X_DATAMUX_H
+#define MAME_BUS_TI99X_DATAMUX_H
+
+#pragma once
#include "ti99defs.h"
#include "machine/tmc0430.h"
#include "gromport.h"
-#include "bus/ti99_peb/peribox.h"
+#include "bus/ti99/peb/peribox.h"
#include "sound/sn76496.h"
#include "video/tms9928a.h"
#include "machine/ram.h"
-extern const device_type DATAMUX;
+DECLARE_DEVICE_TYPE(TI99_DATAMUX, ti99_datamux_device)
/*
Main class
@@ -41,9 +43,9 @@ public:
DECLARE_WRITE_LINE_MEMBER( gromclk_in );
- template<class _Object> static devcb_base &static_set_ready_callback(device_t &device, _Object object)
+ template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb)
{
- return downcast<ti99_datamux_device &>(device).m_ready.set_callback(object);
+ return downcast<ti99_datamux_device &>(device).m_ready.set_callback(std::forward<Object>(cb));
}
protected:
@@ -65,7 +67,7 @@ private:
required_device<peribox_device> m_peb;
// Link to the cartridge port (aka GROM port)
- required_device<gromport_device> m_gromport;
+ required_device<ti99_gromport_device> m_gromport;
// Memory expansion (internal, 16 bit)
required_device<ram_device> m_ram16b;
@@ -137,4 +139,4 @@ private:
#define MCFG_DMUX_READY_HANDLER( _intcallb ) \
devcb = &ti99_datamux_device::static_set_ready_callback( *device, DEVCB_##_intcallb );
-#endif
+#endif // MAME_BUS_TI99X_DATAMUX_H
diff --git a/src/devices/bus/ti99x/genboard.cpp b/src/devices/bus/ti99x/genboard.cpp
index 22c0ea685db..1eb494005c8 100644
--- a/src/devices/bus/ti99x/genboard.cpp
+++ b/src/devices/bus/ti99x/genboard.cpp
@@ -210,7 +210,7 @@
#define DRAM_PAR_TAG ":dram"
geneve_mapper_device::geneve_mapper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: device_t(mconfig, GENEVE_MAPPER, "Geneve Gate Array", tag, owner, clock, "geneve_mapper", __FILE__), m_gromwaddr_LSB(false),
+ : device_t(mconfig, GENEVE_MAPPER, tag, owner, clock), m_gromwaddr_LSB(false),
m_gromraddr_LSB(false),
m_grom_address(0),
m_video_waitstates(false),
@@ -1507,14 +1507,12 @@ void geneve_mapper_device::device_reset()
}
}
-const device_type GENEVE_MAPPER = device_creator<geneve_mapper_device>;
+DEFINE_DEVICE_TYPE(GENEVE_MAPPER, geneve_mapper_device, "geneve_mapper", "Geneve Gate Array")
/****************************************************************************
Keyboard support
****************************************************************************/
-static const char *const KEYNAMES[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "KEY5", "KEY6", "KEY7" };
-
static const uint8_t MF1_CODE[0xe] =
{
/* extended keys that are equivalent to non-extended keys */
@@ -1544,8 +1542,10 @@ static const uint8_t MF1_CODE[0xe] =
};
geneve_keyboard_device::geneve_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: device_t(mconfig, GENEVE_KEYBOARD, "Geneve XT-style keyboard", tag, owner, clock, "geneve_keyboard", __FILE__),
- m_interrupt(*this), m_key_reset(false), m_key_queue_length(0), m_key_queue_head(0), m_key_in_buffer(false), m_key_numlock_state(false), m_key_ctrl_state(0), m_key_alt_state(0),
+ : device_t(mconfig, GENEVE_KEYBOARD, tag, owner, clock),
+ m_interrupt(*this),
+ m_keys(*this, "KEY%u", 0),
+ m_key_reset(false), m_key_queue_length(0), m_key_queue_head(0), m_key_in_buffer(false), m_key_numlock_state(false), m_key_ctrl_state(0), m_key_alt_state(0),
m_key_real_shift_state(0), m_key_fake_shift_state(false), m_key_fake_unshift_state(false), m_key_autorepeat_key(0), m_key_autorepeat_timer(0), m_keep_keybuf(false),
m_keyboard_clock(false), m_timer(nullptr)
{
@@ -1577,7 +1577,7 @@ void geneve_keyboard_device::poll()
/* Poll keyboard */
for (i = 0; (i < 4) && (m_key_queue_length <= (KEYQUEUESIZE-MAXKEYMSGLENGTH)); i++)
{
- keystate = ioport(KEYNAMES[2*i])->read() | (ioport(KEYNAMES[2*i + 1])->read() << 16);
+ keystate = m_keys[2*i]->read() | (m_keys[2*i + 1]->read() << 16);
key_transitions = keystate ^ m_key_state_save[i];
if (key_transitions)
{
@@ -2008,4 +2008,4 @@ ioport_constructor geneve_keyboard_device::device_input_ports() const
return INPUT_PORTS_NAME( genkeys );
}
-const device_type GENEVE_KEYBOARD = device_creator<geneve_keyboard_device>;
+DEFINE_DEVICE_TYPE(GENEVE_KEYBOARD, geneve_keyboard_device, "geneve_keyboard", "Geneve XT-style keyboard")
diff --git a/src/devices/bus/ti99x/genboard.h b/src/devices/bus/ti99x/genboard.h
index 55369c634a1..d175a3d2c93 100644
--- a/src/devices/bus/ti99x/genboard.h
+++ b/src/devices/bus/ti99x/genboard.h
@@ -10,28 +10,25 @@
February 2012: Rewritten as class
*****************************************************************************/
-#ifndef __GENBOARD__
-#define __GENBOARD__
+#ifndef MAME_BUS_TI99X_GENBOARD_H
+#define MAME_BUS_TI99X_GENBOARD_H
+
+#pragma once
#include "ti99defs.h"
#include "machine/mm58274c.h"
#include "video/v9938.h"
#include "cpu/tms9900/tms9995.h"
#include "machine/at29x.h"
-#include "bus/ti99_peb/peribox.h"
+#include "bus/ti99/peb/peribox.h"
#include "sound/sn76496.h"
#include "machine/ram.h"
-extern const device_type GENEVE_KEYBOARD;
-extern const device_type GENEVE_MAPPER;
+DECLARE_DEVICE_TYPE(GENEVE_KEYBOARD, geneve_keyboard_device)
+DECLARE_DEVICE_TYPE(GENEVE_MAPPER, geneve_mapper_device)
/*****************************************************************************/
-#define KEYQUEUESIZE 256
-#define MAXKEYMSGLENGTH 10
-#define KEYAUTOREPEATDELAY 30
-#define KEYAUTOREPEATRATE 6
-
class geneve_keyboard_device : public device_t
{
public:
@@ -41,16 +38,23 @@ public:
DECLARE_WRITE_LINE_MEMBER( clock_control );
uint8_t get_recent_key();
- template<class _Object> static devcb_base &static_set_int_callback(device_t &device, _Object object) { return downcast<geneve_keyboard_device &>(device).m_interrupt.set_callback(object); }
+ template <class Object> static devcb_base &static_set_int_callback(device_t &device, Object &&cb) { return downcast<geneve_keyboard_device &>(device).m_interrupt.set_callback(std::forward<Object>(cb)); }
protected:
void device_start() override;
void device_reset() override;
ioport_constructor device_input_ports() const override;
- devcb_write_line m_interrupt; // Keyboard interrupt to console
void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ devcb_write_line m_interrupt; // Keyboard interrupt to console
+ required_ioport_array<8> m_keys;
+
private:
+ static constexpr unsigned KEYQUEUESIZE = 256;
+ static constexpr unsigned MAXKEYMSGLENGTH = 10;
+ static constexpr unsigned KEYAUTOREPEATDELAY = 30;
+ static constexpr unsigned KEYAUTOREPEATRATE = 6;
+
void post_in_key_queue(int keycode);
void signal_when_key_available();
void poll();
@@ -109,7 +113,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( pfm_select_msb );
DECLARE_WRITE_LINE_MEMBER( pfm_output_enable );
- template<class _Object> static devcb_base &static_set_ready_callback(device_t &device, _Object object) { return downcast<geneve_mapper_device &>(device).m_ready.set_callback(object); }
+ template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb) { return downcast<geneve_mapper_device &>(device).m_ready.set_callback(std::forward<Object>(cb)); }
protected:
void device_start() override;
@@ -195,4 +199,4 @@ private:
#define MCFG_GENEVE_READY_HANDLER( _intcallb ) \
devcb = &geneve_mapper_device::static_set_ready_callback( *device, DEVCB_##_intcallb );
-#endif
+#endif // MAME_BUS_TI99X_GENBOARD_H
diff --git a/src/devices/bus/ti99x/gromport.cpp b/src/devices/bus/ti99x/gromport.cpp
index 849a0fc498d..e9d3e7a4523 100644
--- a/src/devices/bus/ti99x/gromport.cpp
+++ b/src/devices/bus/ti99x/gromport.cpp
@@ -132,8 +132,140 @@
#define GKRACKER_ROM_TAG "gkracker_rom"
#define GKRACKER_NVRAM_TAG "gkracker_nvram"
-gromport_device::gromport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : bus8z_device(mconfig, GROMPORT, "Cartridge port", tag, owner, clock, "gromport", __FILE__),
+namespace {
+
+enum rpk_open_error
+{
+ RPK_OK,
+ RPK_NOT_ZIP_FORMAT,
+ RPK_CORRUPT,
+ RPK_OUT_OF_MEMORY,
+ RPK_XML_ERROR,
+ RPK_INVALID_FILE_REF,
+ RPK_ZIP_ERROR,
+ RPK_ZIP_UNSUPPORTED,
+ RPK_MISSING_RAM_LENGTH,
+ RPK_INVALID_RAM_SPEC,
+ RPK_UNKNOWN_RESOURCE_TYPE,
+ RPK_INVALID_RESOURCE_REF,
+ RPK_INVALID_LAYOUT,
+ RPK_MISSING_LAYOUT,
+ RPK_NO_PCB_OR_RESOURCES,
+ RPK_UNKNOWN_PCB_TYPE
+};
+
+
+const char *const error_text[16] =
+{
+ "No error",
+ "Not a RPK (zip) file",
+ "Module definition corrupt",
+ "Out of memory",
+ "XML format error",
+ "Invalid file reference",
+ "Zip file error",
+ "Unsupported zip version",
+ "Missing RAM length",
+ "Invalid RAM specification",
+ "Unknown resource type",
+ "Invalid resource reference",
+ "layout.xml not valid",
+ "Missing layout",
+ "No pcb or resource found",
+ "Unknown pcb type"
+};
+
+
+class rpk_exception
+{
+public:
+ rpk_exception(rpk_open_error value): m_err(value), m_detail(nullptr) { }
+ rpk_exception(rpk_open_error value, const char* detail) : m_err(value), m_detail(detail) { }
+
+ const char* to_string()
+ {
+ // FIXME: this leaks memory - in some cases it returns a new buffer, in other cases it returns a pointer to a static string, so the caller can't know whether it needs to be cleaned up
+ if (m_detail==nullptr) return error_text[(int)m_err];
+ std::string errormsg = std::string(error_text[(int)m_err]).append(": ").append(m_detail);
+ return core_strdup(errormsg.c_str());
+ }
+
+private:
+ rpk_open_error m_err;
+ const char* m_detail;
+};
+
+struct pcb_type
+{
+ int id;
+ const char* name;
+};
+
+} // anonymous namespace
+
+
+/*************************************************************************
+ RPK support
+*************************************************************************/
+
+class ti99_cartridge_device::rpk_socket
+{
+public:
+ rpk_socket(const char *id, int length, uint8_t *contents);
+ rpk_socket(const char *id, int length, uint8_t *contents, const char *pathname);
+ ~rpk_socket() {}
+
+ const char* id() { return m_id; }
+ int get_content_length() { return m_length; }
+ uint8_t* get_contents() { return m_contents; }
+ bool persistent_ram() { return m_pathname != nullptr; }
+ const char* get_pathname() { return m_pathname; }
+ void cleanup() { if (m_contents != nullptr) global_free_array(m_contents); }
+
+private:
+ const char* m_id;
+ uint32_t m_length;
+ uint8_t* m_contents;
+ const char* m_pathname;
+};
+
+class ti99_cartridge_device::rpk_reader
+{
+public:
+ rpk_reader(const pcb_type *types) : m_types(types) { }
+
+ rpk *open(emu_options &options, const char *filename, const char *system_name);
+
+private:
+ int find_file(util::archive_file &zip, const char *filename, uint32_t crc);
+ std::unique_ptr<rpk_socket> load_rom_resource(util::archive_file &zip, util::xml::data_node const* rom_resource_node, const char* socketname);
+ std::unique_ptr<rpk_socket> load_ram_resource(emu_options &options, util::xml::data_node const* ram_resource_node, const char* socketname, const char* system_name);
+ const pcb_type* m_types;
+};
+
+class ti99_cartridge_device::rpk
+{
+ friend class rpk_reader;
+public:
+ rpk(emu_options& options, const char* sysname);
+ ~rpk();
+
+ int get_type(void) { return m_type; }
+ uint8_t* get_contents_of_socket(const char *socket_name);
+ int get_resource_length(const char *socket_name);
+ void close();
+
+private:
+ emu_options& m_options; // need this to find the path to the nvram files
+ int m_type;
+ //const char* m_system_name; // need this to find the path to the nvram files
+ std::unordered_map<std::string,std::unique_ptr<rpk_socket>> m_sockets;
+
+ void add_socket(const char* id, std::unique_ptr<rpk_socket> newsock);
+};
+
+ti99_gromport_device::ti99_gromport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : bus8z_device(mconfig, TI99_GROMPORT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_connector(nullptr),
m_reset_on_insert(true),
@@ -145,7 +277,7 @@ gromport_device::gromport_device(const machine_config &mconfig, const char *tag,
Reading via the GROM port. Only 13 address lines are passed through
on the TI-99/4A, and 14 lines on the TI-99/8.
*/
-READ8Z_MEMBER(gromport_device::readz)
+READ8Z_MEMBER(ti99_gromport_device::readz)
{
if (m_connector != nullptr)
{
@@ -158,7 +290,7 @@ READ8Z_MEMBER(gromport_device::readz)
Writing via the GROM port. Only 13 address lines are passed through
on the TI-99/4A, and 14 lines on the TI-99/8.
*/
-WRITE8_MEMBER(gromport_device::write)
+WRITE8_MEMBER(ti99_gromport_device::write)
{
if (m_connector != nullptr)
{
@@ -167,19 +299,19 @@ WRITE8_MEMBER(gromport_device::write)
}
}
-READ8Z_MEMBER(gromport_device::crureadz)
+READ8Z_MEMBER(ti99_gromport_device::crureadz)
{
if (m_connector != nullptr)
m_connector->crureadz(space, offset, value);
}
-WRITE8_MEMBER(gromport_device::cruwrite)
+WRITE8_MEMBER(ti99_gromport_device::cruwrite)
{
if (m_connector != nullptr)
m_connector->cruwrite(space, offset, data);
}
-WRITE_LINE_MEMBER(gromport_device::ready_line)
+WRITE_LINE_MEMBER(ti99_gromport_device::ready_line)
{
m_console_ready(state);
}
@@ -187,14 +319,14 @@ WRITE_LINE_MEMBER(gromport_device::ready_line)
/*
Asserted when the console addresses cartridge rom.
*/
-WRITE_LINE_MEMBER(gromport_device::romgq_line)
+WRITE_LINE_MEMBER(ti99_gromport_device::romgq_line)
{
m_romgq = state;
if (m_connector != nullptr)
m_connector->romgq_line(state);
}
-WRITE_LINE_MEMBER(gromport_device::gclock_in)
+WRITE_LINE_MEMBER(ti99_gromport_device::gclock_in)
{
if (m_connector != nullptr)
m_connector->gclock_in(state);
@@ -203,13 +335,13 @@ WRITE_LINE_MEMBER(gromport_device::gclock_in)
/*
Combined GROM control lines.
*/
-WRITE8_MEMBER( gromport_device::set_gromlines )
+WRITE8_MEMBER( ti99_gromport_device::set_gromlines )
{
if (m_connector != nullptr)
m_connector->set_gromlines(space, offset, data);
}
-void gromport_device::device_start()
+void ti99_gromport_device::device_start()
{
m_console_ready.resolve();
m_console_reset.resolve();
@@ -217,7 +349,7 @@ void gromport_device::device_start()
save_item(NAME(m_romgq));
}
-void gromport_device::device_reset()
+void ti99_gromport_device::device_reset()
{
m_reset_on_insert = (ioport("CARTRESET")->read()==0x01);
}
@@ -229,7 +361,7 @@ void gromport_device::device_reset()
reset, which is useful when we want to swap the cartridges while a program
is runnning.
*/
-void gromport_device::cartridge_inserted()
+void ti99_gromport_device::cartridge_inserted()
{
if (m_reset_on_insert)
{
@@ -242,7 +374,7 @@ void gromport_device::cartridge_inserted()
Find out whether the GROMs in the cartridge are idle. In that case,
cut the clock line.
*/
-bool gromport_device::is_grom_idle()
+bool ti99_gromport_device::is_grom_idle()
{
if (m_connector != nullptr)
return m_connector->is_grom_idle();
@@ -250,20 +382,20 @@ bool gromport_device::is_grom_idle()
return false;
}
-void gromport_device::device_config_complete()
+void ti99_gromport_device::device_config_complete()
{
- m_connector = static_cast<ti99_cartridge_connector_device*>(subdevices().first());
+ m_connector = downcast<ti99_cartridge_connector_device*>(subdevices().first());
}
SLOT_INTERFACE_START( gromport4 )
- SLOT_INTERFACE("single", GROMPORT_SINGLE)
- SLOT_INTERFACE("multi", GROMPORT_MULTI)
- SLOT_INTERFACE("gkracker", GROMPORT_GK)
+ 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", GROMPORT_SINGLE)
- SLOT_INTERFACE("multi", GROMPORT_MULTI)
+ SLOT_INTERFACE("single", TI99_GROMPORT_SINGLE)
+ SLOT_INTERFACE("multi", TI99_GROMPORT_MULTI)
SLOT_INTERFACE_END
INPUT_PORTS_START(gromport)
@@ -273,12 +405,12 @@ INPUT_PORTS_START(gromport)
PORT_CONFSETTING( 0x01, DEF_STR( On ) )
INPUT_PORTS_END
-ioport_constructor gromport_device::device_input_ports() const
+ioport_constructor ti99_gromport_device::device_input_ports() const
{
return INPUT_PORTS_NAME(gromport);
}
-const device_type GROMPORT = device_creator<gromport_device>;
+DEFINE_DEVICE_TYPE(TI99_GROMPORT, ti99_gromport_device, "ti99_gromport", "TI-99 Cartridge port")
/***************************************************************************
Different versions of cartridge connections
@@ -291,12 +423,12 @@ const device_type GROMPORT = device_creator<gromport_device>;
***************************************************************************/
-const device_type GROMPORT_SINGLE = device_creator<single_conn_device>;
-const device_type GROMPORT_MULTI = device_creator<multi_conn_device>;
-const device_type GROMPORT_GK = device_creator<gkracker_device>;
+DEFINE_DEVICE_TYPE(TI99_GROMPORT_SINGLE, ti99_single_cart_conn_device, "ti99_scartconn", "TI-99 Standard cartridge connector")
+DEFINE_DEVICE_TYPE(TI99_GROMPORT_MULTI, ti99_multi_cart_conn_device, "ti99_mcartconn", "TI-99 Multi-cartridge extender")
+DEFINE_DEVICE_TYPE(TI99_GROMPORT_GK, ti99_gkracker_device, "ti99_gkracker", "Miller's Graphics GRAM Kracker")
-ti99_cartridge_connector_device::ti99_cartridge_connector_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : bus8z_device(mconfig, type, name, tag, owner, clock, shortname, source),
+ti99_cartridge_connector_device::ti99_cartridge_connector_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : bus8z_device(mconfig, type, tag, owner, clock),
m_gromport(nullptr)
{
}
@@ -308,40 +440,40 @@ WRITE_LINE_MEMBER( ti99_cartridge_connector_device::ready_line )
void ti99_cartridge_connector_device::device_config_complete()
{
- m_gromport = static_cast<gromport_device*>(owner());
+ m_gromport = static_cast<ti99_gromport_device*>(owner());
}
-single_conn_device::single_conn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ti99_cartridge_connector_device(mconfig, GROMPORT_SINGLE, "Standard cartridge connector", tag, owner, clock, "single", __FILE__),
+ti99_single_cart_conn_device::ti99_single_cart_conn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : ti99_cartridge_connector_device(mconfig, TI99_GROMPORT_SINGLE, tag, owner, clock),
m_cartridge(nullptr)
{
}
-READ8Z_MEMBER(single_conn_device::readz)
+READ8Z_MEMBER(ti99_single_cart_conn_device::readz)
{
// Pass through
m_cartridge->readz(space, offset, value);
}
-WRITE8_MEMBER(single_conn_device::write)
+WRITE8_MEMBER(ti99_single_cart_conn_device::write)
{
// Pass through
m_cartridge->write(space, offset, data);
}
-READ8Z_MEMBER(single_conn_device::crureadz)
+READ8Z_MEMBER(ti99_single_cart_conn_device::crureadz)
{
// Pass through
m_cartridge->crureadz(space, offset, value);
}
-WRITE8_MEMBER(single_conn_device::cruwrite)
+WRITE8_MEMBER(ti99_single_cart_conn_device::cruwrite)
{
// Pass through
m_cartridge->cruwrite(space, offset, data);
}
-WRITE_LINE_MEMBER(single_conn_device::romgq_line)
+WRITE_LINE_MEMBER(ti99_single_cart_conn_device::romgq_line)
{
// Pass through
m_cartridge->romgq_line(state);
@@ -350,14 +482,14 @@ WRITE_LINE_MEMBER(single_conn_device::romgq_line)
/*
Combined select lines
*/
-WRITE8_MEMBER(single_conn_device::set_gromlines)
+WRITE8_MEMBER(ti99_single_cart_conn_device::set_gromlines)
{
// Pass through
m_cartridge->set_gromlines(space, offset, data);
}
-WRITE_LINE_MEMBER(single_conn_device::gclock_in)
+WRITE_LINE_MEMBER(ti99_single_cart_conn_device::gclock_in)
{
// Pass through
m_cartridge->gclock_in(state);
@@ -366,17 +498,17 @@ WRITE_LINE_MEMBER(single_conn_device::gclock_in)
/*
Check whether the GROMs are idle.
*/
-bool single_conn_device::is_grom_idle()
+bool ti99_single_cart_conn_device::is_grom_idle()
{
return m_cartridge->is_grom_idle();
}
-void single_conn_device::device_start()
+void ti99_single_cart_conn_device::device_start()
{
m_cartridge = static_cast<ti99_cartridge_device*>(subdevices().first());
}
-void single_conn_device::device_reset()
+void ti99_single_cart_conn_device::device_reset()
{
m_cartridge->set_slot(0);
}
@@ -385,7 +517,7 @@ static MACHINE_CONFIG_FRAGMENT( single_slot )
MCFG_DEVICE_ADD("cartridge", TI99CART, 0)
MACHINE_CONFIG_END
-machine_config_constructor single_conn_device::device_mconfig_additions() const
+machine_config_constructor ti99_single_cart_conn_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( single_slot );
}
@@ -434,8 +566,8 @@ machine_config_constructor single_conn_device::device_mconfig_additions() const
#define AUTO -1
-multi_conn_device::multi_conn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ti99_cartridge_connector_device(mconfig, GROMPORT_MULTI, "Multi-cartridge extender", tag, owner, clock, "multi", __FILE__),
+ti99_multi_cart_conn_device::ti99_multi_cart_conn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : ti99_cartridge_connector_device(mconfig, TI99_GROMPORT_MULTI, tag, owner, clock),
m_active_slot(0),
m_fixed_slot(0),
m_next_free_slot(0)
@@ -480,7 +612,7 @@ multi_conn_device::multi_conn_device(const machine_config &mconfig, const char *
Interestingly, cartridge subroutines are found nevertheless, even when
the cartridge is plugged into a higher slot.
*/
-void multi_conn_device::set_slot(int slotnumber)
+void ti99_multi_cart_conn_device::set_slot(int slotnumber)
{
if (TRACE_CHANGE)
if (m_active_slot != slotnumber) logerror("Setting cartslot to %d\n", slotnumber);
@@ -491,7 +623,7 @@ void multi_conn_device::set_slot(int slotnumber)
m_active_slot = m_fixed_slot;
}
-int multi_conn_device::get_active_slot(bool changebase, offs_t offset)
+int ti99_multi_cart_conn_device::get_active_slot(bool changebase, offs_t offset)
{
int slot;
if (changebase)
@@ -503,20 +635,20 @@ int multi_conn_device::get_active_slot(bool changebase, offs_t offset)
return slot;
}
-void multi_conn_device::insert(int index, ti99_cartridge_device* cart)
+void ti99_multi_cart_conn_device::insert(int index, ti99_cartridge_device* cart)
{
if (TRACE_CHANGE) logerror("Insert slot %d\n", index);
m_cartridge[index] = cart;
m_gromport->cartridge_inserted();
}
-void multi_conn_device::remove(int index)
+void ti99_multi_cart_conn_device::remove(int index)
{
if (TRACE_CHANGE) logerror("Remove slot %d\n", index);
m_cartridge[index] = nullptr;
}
-WRITE_LINE_MEMBER(multi_conn_device::romgq_line)
+WRITE_LINE_MEMBER(ti99_multi_cart_conn_device::romgq_line)
{
m_readrom = state;
@@ -533,7 +665,7 @@ WRITE_LINE_MEMBER(multi_conn_device::romgq_line)
/*
Combined select lines
*/
-WRITE8_MEMBER(multi_conn_device::set_gromlines)
+WRITE8_MEMBER(ti99_multi_cart_conn_device::set_gromlines)
{
// GROM selected?
m_grom_selected = (data != 0);
@@ -548,7 +680,7 @@ WRITE8_MEMBER(multi_conn_device::set_gromlines)
}
}
-WRITE_LINE_MEMBER(multi_conn_device::gclock_in)
+WRITE_LINE_MEMBER(ti99_multi_cart_conn_device::gclock_in)
{
// Propagate to all slots
for (int i=0; i < NUMBER_OF_CARTRIDGE_SLOTS; i++)
@@ -560,7 +692,7 @@ WRITE_LINE_MEMBER(multi_conn_device::gclock_in)
}
}
-READ8Z_MEMBER(multi_conn_device::readz)
+READ8Z_MEMBER(ti99_multi_cart_conn_device::readz)
{
int slot = get_active_slot(true, offset);
@@ -591,7 +723,7 @@ READ8Z_MEMBER(multi_conn_device::readz)
}
}
-WRITE8_MEMBER(multi_conn_device::write)
+WRITE8_MEMBER(ti99_multi_cart_conn_device::write)
{
// Same issue as above (read)
// We don't have GRAM cartridges, anyway, so it's just used for setting the address.
@@ -616,7 +748,7 @@ WRITE8_MEMBER(multi_conn_device::write)
}
}
-READ8Z_MEMBER(multi_conn_device::crureadz)
+READ8Z_MEMBER(ti99_multi_cart_conn_device::crureadz)
{
int slot = get_active_slot(false, offset);
/* Sanity check. Higher slots are always empty. */
@@ -629,7 +761,7 @@ READ8Z_MEMBER(multi_conn_device::crureadz)
}
}
-WRITE8_MEMBER(multi_conn_device::cruwrite)
+WRITE8_MEMBER(ti99_multi_cart_conn_device::cruwrite)
{
int slot = get_active_slot(true, offset);
@@ -647,7 +779,7 @@ WRITE8_MEMBER(multi_conn_device::cruwrite)
Check whether the GROMs are idle. Just ask the currently
active cartridge.
*/
-bool multi_conn_device::is_grom_idle()
+bool ti99_multi_cart_conn_device::is_grom_idle()
{
/* Sanity check. Higher slots are always empty. */
if (m_active_slot >= NUMBER_OF_CARTRIDGE_SLOTS)
@@ -659,7 +791,7 @@ bool multi_conn_device::is_grom_idle()
return false;
}
-void multi_conn_device::device_start()
+void ti99_multi_cart_conn_device::device_start()
{
m_next_free_slot = 0;
m_active_slot = 0;
@@ -673,7 +805,7 @@ void multi_conn_device::device_start()
save_item(NAME(m_next_free_slot));
}
-void multi_conn_device::device_reset(void)
+void ti99_multi_cart_conn_device::device_reset(void)
{
m_active_slot = 0;
m_fixed_slot = ioport("CARTSLOT")->read() - 1;
@@ -687,12 +819,12 @@ static MACHINE_CONFIG_FRAGMENT( multi_slot )
MCFG_DEVICE_ADD("cartridge4", TI99CART, 0)
MACHINE_CONFIG_END
-machine_config_constructor multi_conn_device::device_mconfig_additions() const
+machine_config_constructor ti99_multi_cart_conn_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( multi_slot );
}
-INPUT_CHANGED_MEMBER( multi_conn_device::switch_changed )
+INPUT_CHANGED_MEMBER( ti99_multi_cart_conn_device::switch_changed )
{
if (TRACE_CHANGE) logerror("Slot changed %d - %d\n", (int)((uint64_t)param & 0x07), newval);
m_active_slot = m_fixed_slot = newval - 1;
@@ -700,7 +832,7 @@ INPUT_CHANGED_MEMBER( multi_conn_device::switch_changed )
INPUT_PORTS_START(multi_slot)
PORT_START( "CARTSLOT" )
- PORT_DIPNAME( 0x0f, 0x00, "Multi-cartridge slot" ) PORT_CHANGED_MEMBER(DEVICE_SELF, multi_conn_device, switch_changed, 0)
+ PORT_DIPNAME( 0x0f, 0x00, "Multi-cartridge slot" ) PORT_CHANGED_MEMBER(DEVICE_SELF, ti99_multi_cart_conn_device, switch_changed, 0)
PORT_DIPSETTING( 0x00, "Auto" )
PORT_DIPSETTING( 0x01, "Slot 1" )
PORT_DIPSETTING( 0x02, "Slot 2" )
@@ -708,7 +840,7 @@ INPUT_PORTS_START(multi_slot)
PORT_DIPSETTING( 0x04, "Slot 4" )
INPUT_PORTS_END
-ioport_constructor multi_conn_device::device_input_ports() const
+ioport_constructor ti99_multi_cart_conn_device::device_input_ports() const
{
return INPUT_PORTS_NAME(multi_slot);
}
@@ -828,8 +960,8 @@ enum
#define GKSWITCH4_TAG "GKSWITCH4"
#define GKSWITCH5_TAG "GKSWITCH5"
-gkracker_device::gkracker_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ti99_cartridge_connector_device(mconfig, GROMPORT_GK, "GRAMKracker", tag, owner, clock, "ti99_gkracker", __FILE__),
+ti99_gkracker_device::ti99_gkracker_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : ti99_cartridge_connector_device(mconfig, TI99_GROMPORT_GK, tag, owner, clock),
device_nvram_interface(mconfig, *this),
m_romspace_selected(false),
m_ram_page(0),
@@ -841,7 +973,7 @@ gkracker_device::gkracker_device(const machine_config &mconfig, const char *tag,
{
}
-WRITE_LINE_MEMBER(gkracker_device::romgq_line)
+WRITE_LINE_MEMBER(ti99_gkracker_device::romgq_line)
{
m_romspace_selected = (state==ASSERT_LINE);
// Propagate to the guest
@@ -851,13 +983,13 @@ WRITE_LINE_MEMBER(gkracker_device::romgq_line)
/*
Combined select lines
*/
-WRITE8_MEMBER(gkracker_device::set_gromlines)
+WRITE8_MEMBER(ti99_gkracker_device::set_gromlines)
{
m_grom_selected = (data != 0);
if (m_cartridge != nullptr) m_cartridge->set_gromlines(space, offset, data);
}
-WRITE_LINE_MEMBER(gkracker_device::gclock_in)
+WRITE_LINE_MEMBER(ti99_gkracker_device::gclock_in)
{
if (m_cartridge != nullptr) m_cartridge->gclock_in(state);
}
@@ -865,12 +997,12 @@ WRITE_LINE_MEMBER(gkracker_device::gclock_in)
/*
Check whether the GROMs are idle.
*/
-bool gkracker_device::is_grom_idle()
+bool ti99_gkracker_device::is_grom_idle()
{
return (m_cartridge != nullptr)? m_cartridge->is_grom_idle() : false;
}
-READ8Z_MEMBER(gkracker_device::readz)
+READ8Z_MEMBER(ti99_gkracker_device::readz)
{
if (m_grom_selected)
{
@@ -929,7 +1061,7 @@ READ8Z_MEMBER(gkracker_device::readz)
}
}
-WRITE8_MEMBER(gkracker_device::write)
+WRITE8_MEMBER(ti99_gkracker_device::write)
{
// write to the guest cartridge if present
if (m_cartridge != nullptr)
@@ -1001,23 +1133,23 @@ WRITE8_MEMBER(gkracker_device::write)
}
}
-READ8Z_MEMBER( gkracker_device::crureadz )
+READ8Z_MEMBER( ti99_gkracker_device::crureadz )
{
if (m_cartridge != nullptr) m_cartridge->crureadz(space, offset, value);
}
-WRITE8_MEMBER( gkracker_device::cruwrite )
+WRITE8_MEMBER( ti99_gkracker_device::cruwrite )
{
if (m_cartridge != nullptr) m_cartridge->cruwrite(space, offset, data);
}
-INPUT_CHANGED_MEMBER( gkracker_device::gk_changed )
+INPUT_CHANGED_MEMBER( ti99_gkracker_device::gk_changed )
{
if (TRACE_GKRACKER) logerror("Input changed %d - %d\n", (int)((uint64_t)param & 0x07), newval);
m_gk_switch[(uint64_t)param & 0x07] = newval;
}
-void gkracker_device::insert(int index, ti99_cartridge_device* cart)
+void ti99_gkracker_device::insert(int index, ti99_cartridge_device* cart)
{
if (TRACE_CHANGE) logerror("Insert cartridge\n");
m_cartridge = cart;
@@ -1026,13 +1158,13 @@ void gkracker_device::insert(int index, ti99_cartridge_device* cart)
m_gromport->cartridge_inserted();
}
-void gkracker_device::remove(int index)
+void ti99_gkracker_device::remove(int index)
{
if (TRACE_CHANGE) logerror("Remove cartridge\n");
m_cartridge = nullptr;
}
-void gkracker_device::gk_install_menu(const char* menutext, int len, int ptr, int next, int start)
+void ti99_gkracker_device::gk_install_menu(const char* menutext, int len, int ptr, int next, int start)
{
const int base = 0x0000;
m_ram_ptr[base + ptr] = (uint8_t)((next >> 8) & 0xff);
@@ -1049,7 +1181,7 @@ void gkracker_device::gk_install_menu(const char* menutext, int len, int ptr, in
some sample entries which shall indicate that the memory has been tested
by the manufacturer.
*/
-void gkracker_device::nvram_default()
+void ti99_gkracker_device::nvram_default()
{
if (TRACE_GKRACKER) logerror("Creating default NVRAM\n");
memset(m_ram_ptr, 0, 81920);
@@ -1072,7 +1204,7 @@ void gkracker_device::nvram_default()
m_ram_ptr[0x6100] = 0x0b; // GPL EXIT
}
-void gkracker_device::nvram_read(emu_file &file)
+void ti99_gkracker_device::nvram_read(emu_file &file)
{
int readsize = file.read(m_ram_ptr, 81920);
if (TRACE_GKRACKER) logerror("Reading NVRAM\n");
@@ -1083,13 +1215,13 @@ void gkracker_device::nvram_read(emu_file &file)
}
}
-void gkracker_device::nvram_write(emu_file &file)
+void ti99_gkracker_device::nvram_write(emu_file &file)
{
if (TRACE_GKRACKER) logerror("Writing NVRAM\n");
file.write(m_ram_ptr, 81920);
}
-void gkracker_device::device_start()
+void ti99_gkracker_device::device_start()
{
m_ram_ptr = memregion(GKRACKER_NVRAM_TAG)->base();
m_grom_ptr = memregion(GKRACKER_ROM_TAG)->base();
@@ -1102,7 +1234,7 @@ void gkracker_device::device_start()
save_item(NAME(m_waddr_LSB));
}
-void gkracker_device::device_reset()
+void ti99_gkracker_device::device_reset()
{
m_gk_switch[1] = ioport(GKSWITCH1_TAG)->read();
m_gk_switch[2] = ioport(GKSWITCH2_TAG)->read();
@@ -1128,45 +1260,45 @@ ROM_START( gkracker_rom )
ROM_LOAD("gkracker.bin", 0x0000, 0x2000, CRC(86eaaf9f) SHA1(a3bd5257c63e190800921b52dbe3ffa91ad91113))
ROM_END
-const tiny_rom_entry *gkracker_device::device_rom_region() const
+const tiny_rom_entry *ti99_gkracker_device::device_rom_region() const
{
return ROM_NAME( gkracker_rom );
}
-machine_config_constructor gkracker_device::device_mconfig_additions() const
+machine_config_constructor ti99_gkracker_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( gkracker_slot );
}
INPUT_PORTS_START(gkracker)
PORT_START( GKSWITCH1_TAG )
- PORT_DIPNAME( 0x01, 0x01, "GK switch 1" ) PORT_CHANGED_MEMBER(DEVICE_SELF, gkracker_device, gk_changed, 1)
+ PORT_DIPNAME( 0x01, 0x01, "GK switch 1" ) PORT_CHANGED_MEMBER(DEVICE_SELF, ti99_gkracker_device, gk_changed, 1)
PORT_DIPSETTING( 0x00, "GK Off" )
PORT_DIPSETTING( 0x01, DEF_STR( Normal ) )
PORT_START( GKSWITCH2_TAG )
- PORT_DIPNAME( 0x01, 0x01, "GK switch 2" ) PORT_CHANGED_MEMBER(DEVICE_SELF, gkracker_device, gk_changed, 2)
+ PORT_DIPNAME( 0x01, 0x01, "GK switch 2" ) PORT_CHANGED_MEMBER(DEVICE_SELF, ti99_gkracker_device, gk_changed, 2)
PORT_DIPSETTING( 0x00, "GRAM 0" )
PORT_DIPSETTING( 0x01, "Op Sys" )
PORT_START( GKSWITCH3_TAG )
- PORT_DIPNAME( 0x01, 0x01, "GK switch 3" ) PORT_CHANGED_MEMBER(DEVICE_SELF, gkracker_device, gk_changed, 3)
+ PORT_DIPNAME( 0x01, 0x01, "GK switch 3" ) PORT_CHANGED_MEMBER(DEVICE_SELF, ti99_gkracker_device, gk_changed, 3)
PORT_DIPSETTING( 0x00, "GRAM 1-2" )
PORT_DIPSETTING( 0x01, "TI BASIC" )
PORT_START( GKSWITCH4_TAG )
- PORT_DIPNAME( 0x03, 0x01, "GK switch 4" ) PORT_CHANGED_MEMBER(DEVICE_SELF, gkracker_device, gk_changed, 4)
+ PORT_DIPNAME( 0x03, 0x01, "GK switch 4" ) PORT_CHANGED_MEMBER(DEVICE_SELF, ti99_gkracker_device, gk_changed, 4)
PORT_DIPSETTING( 0x00, "Bank 1" )
PORT_DIPSETTING( 0x01, "W/P" )
PORT_DIPSETTING( 0x02, "Bank 2" )
PORT_START( GKSWITCH5_TAG )
- PORT_DIPNAME( 0x01, 0x00, "GK switch 5" ) PORT_CHANGED_MEMBER(DEVICE_SELF, gkracker_device, gk_changed, 5)
+ PORT_DIPNAME( 0x01, 0x00, "GK switch 5" ) PORT_CHANGED_MEMBER(DEVICE_SELF, ti99_gkracker_device, gk_changed, 5)
PORT_DIPSETTING( 0x00, "Loader On" )
PORT_DIPSETTING( 0x01, "Loader Off" )
INPUT_PORTS_END
-ioport_constructor gkracker_device::device_input_ports() const
+ioport_constructor ti99_gkracker_device::device_input_ports() const
{
return INPUT_PORTS_NAME(gkracker);
}
@@ -1228,7 +1360,7 @@ static const pcb_type sw_pcbdefs[] =
};
ti99_cartridge_device::ti99_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: bus8z_device(mconfig, TI99CART, "TI-99 cartridge", tag, owner, clock, "cartridge", __FILE__),
+: bus8z_device(mconfig, TI99CART, tag, owner, clock),
device_image_interface(mconfig, *this),
m_pcbtype(0),
m_slot(0),
@@ -1564,7 +1696,7 @@ const tiny_rom_entry *ti99_cartridge_device::device_rom_region() const
return ROM_NAME( cartridge_memory );
}
-const device_type TI99CART = device_creator<ti99_cartridge_device>;
+DEFINE_DEVICE_TYPE(TI99CART, ti99_cartridge_device, "ti99cart", "TI-99 cartridge")
/***************************************************************************
Cartridge types
@@ -2518,14 +2650,14 @@ DTD:
/*
Constructor.
*/
-rpk::rpk(emu_options& options, const char* sysname)
+ti99_cartridge_device::rpk::rpk(emu_options& options, const char* sysname)
:m_options(options), m_type(0)
//,m_system_name(sysname)
{
m_sockets.clear();
}
-rpk::~rpk()
+ti99_cartridge_device::rpk::~rpk()
{
if (TRACE_RPK) printf("gromport/RPK: Destroy RPK\n");
}
@@ -2533,7 +2665,7 @@ rpk::~rpk()
/*
Deliver the contents of the socket by name of the socket.
*/
-uint8_t* rpk::get_contents_of_socket(const char *socket_name)
+uint8_t* ti99_cartridge_device::rpk::get_contents_of_socket(const char *socket_name)
{
auto socket = m_sockets.find(socket_name);
if (socket == m_sockets.end()) return nullptr;
@@ -2543,14 +2675,14 @@ uint8_t* rpk::get_contents_of_socket(const char *socket_name)
/*
Deliver the length of the contents of the socket by name of the socket.
*/
-int rpk::get_resource_length(const char *socket_name)
+int ti99_cartridge_device::rpk::get_resource_length(const char *socket_name)
{
auto socket = m_sockets.find(socket_name);
if (socket == m_sockets.end()) return 0;
return socket->second->get_content_length();
}
-void rpk::add_socket(const char* id, std::unique_ptr<rpk_socket> newsock)
+void ti99_cartridge_device::rpk::add_socket(const char* id, std::unique_ptr<rpk_socket> newsock)
{
m_sockets.emplace(id, std::move(newsock));
}
@@ -2560,7 +2692,7 @@ void rpk::add_socket(const char* id, std::unique_ptr<rpk_socket> newsock)
Saves the contents of the NVRAMs and frees all memory.
-------------------------------------------------*/
-void rpk::close()
+void ti99_cartridge_device::rpk::close()
{
// Save the NVRAM contents
for(auto &socket : m_sockets)
@@ -2585,20 +2717,20 @@ void rpk::close()
not a network socket)
***************************************************************/
-rpk_socket::rpk_socket(const char* id, int length, uint8_t* contents, const char *pathname)
-: m_id(id), m_length(length), m_contents(contents), m_pathname(pathname)
+ti99_cartridge_device::rpk_socket::rpk_socket(const char* id, int length, uint8_t* contents, const char *pathname)
+ : m_id(id), m_length(length), m_contents(contents), m_pathname(pathname)
{
}
-rpk_socket::rpk_socket(const char* id, int length, uint8_t* contents)
-: m_id(id), m_length(length), m_contents(contents), m_pathname(nullptr)
+ti99_cartridge_device::rpk_socket::rpk_socket(const char* id, int length, uint8_t* contents)
+ : rpk_socket(id, length, contents, nullptr)
{
}
/*
Locate a file in the ZIP container
*/
-int rpk_reader::find_file(util::archive_file &zip, const char *filename, uint32_t crc)
+int ti99_cartridge_device::rpk_reader::find_file(util::archive_file &zip, const char *filename, uint32_t crc)
{
for (int header = zip.first_file(); header >= 0; header = zip.next_file())
{
@@ -2628,7 +2760,7 @@ int rpk_reader::find_file(util::archive_file &zip, const char *filename, uint32_
/*
Load a rom resource and put it in a pcb socket instance.
*/
-std::unique_ptr<rpk_socket> rpk_reader::load_rom_resource(util::archive_file &zip, util::xml::data_node const* rom_resource_node, const char* socketname)
+std::unique_ptr<ti99_cartridge_device::rpk_socket> ti99_cartridge_device::rpk_reader::load_rom_resource(util::archive_file &zip, util::xml::data_node const* rom_resource_node, const char* socketname)
{
const char* file;
const char* crcstr;
@@ -2693,7 +2825,7 @@ std::unique_ptr<rpk_socket> rpk_reader::load_rom_resource(util::archive_file &zi
/*
Load a ram resource and put it in a pcb socket instance.
*/
-std::unique_ptr<rpk_socket> rpk_reader::load_ram_resource(emu_options &options, util::xml::data_node const* ram_resource_node, const char* socketname, const char* system_name)
+std::unique_ptr<ti99_cartridge_device::rpk_socket> ti99_cartridge_device::rpk_reader::load_ram_resource(emu_options &options, util::xml::data_node const* ram_resource_node, const char* socketname, const char* system_name)
{
const char* length_string;
const char* ram_type;
@@ -2780,7 +2912,7 @@ std::unique_ptr<rpk_socket> rpk_reader::load_ram_resource(emu_options &options,
system_name - name of the driver (also just for NVRAM handling)
-------------------------------------------------*/
-rpk* rpk_reader::open(emu_options &options, const char *filename, const char *system_name)
+ti99_cartridge_device::rpk* ti99_cartridge_device::rpk_reader::open(emu_options &options, const char *filename, const char *system_name)
{
util::archive_file::error ziperr;
diff --git a/src/devices/bus/ti99x/gromport.h b/src/devices/bus/ti99x/gromport.h
index 9cf460271db..59aff16bb83 100644
--- a/src/devices/bus/ti99x/gromport.h
+++ b/src/devices/bus/ti99x/gromport.h
@@ -6,22 +6,24 @@
For details see gromport.c
***************************************************************************/
-#ifndef __GROMPORT__
-#define __GROMPORT__
+#ifndef MAME_BUS_TI99X_GROMPORT_H
+#define MAME_BUS_TI99X_GROMPORT_H
+
+#pragma once
#include "ti99defs.h"
#include "machine/tmc0430.h"
#include "softlist_dev.h"
-extern const device_type GROMPORT;
+DECLARE_DEVICE_TYPE(TI99_GROMPORT, ti99_gromport_device)
class ti99_cartridge_connector_device;
-class gromport_device : public bus8z_device, public device_slot_interface
+class ti99_gromport_device : public bus8z_device, public device_slot_interface
{
public:
- gromport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ti99_gromport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
DECLARE_READ8Z_MEMBER(crureadz);
@@ -35,10 +37,10 @@ public:
DECLARE_WRITE_LINE_MEMBER(gclock_in);
- static void set_mask(device_t &device, int mask) { downcast<gromport_device &>(device).m_mask = mask; }
+ static void set_mask(device_t &device, int mask) { downcast<ti99_gromport_device &>(device).m_mask = mask; }
- template<class _Object> static devcb_base &static_set_ready_callback(device_t &device, _Object object) { return downcast<gromport_device &>(device).m_console_ready.set_callback(object); }
- template<class _Object> static devcb_base &static_set_reset_callback(device_t &device, _Object object) { return downcast<gromport_device &>(device).m_console_reset.set_callback(object); }
+ template <class Object> static devcb_base &static_set_ready_callback(device_t &device, Object &&cb) { return downcast<ti99_gromport_device &>(device).m_console_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_reset_callback(device_t &device, Object &&cb) { return downcast<ti99_gromport_device &>(device).m_console_reset.set_callback(std::forward<Object>(cb)); }
void cartridge_inserted();
bool is_grom_idle();
@@ -62,24 +64,23 @@ SLOT_INTERFACE_EXTERN(gromport4);
SLOT_INTERFACE_EXTERN(gromport8);
#define MCFG_GROMPORT4_ADD( _tag ) \
- MCFG_DEVICE_ADD(_tag, GROMPORT, 0) \
- gromport_device::set_mask(*device, 0x1fff); \
+ MCFG_DEVICE_ADD(_tag, TI99_GROMPORT, 0) \
+ ti99_gromport_device::set_mask(*device, 0x1fff); \
MCFG_DEVICE_SLOT_INTERFACE(gromport4, "single", false)
#define MCFG_GROMPORT8_ADD( _tag ) \
- MCFG_DEVICE_ADD(_tag, GROMPORT, 0) \
- gromport_device::set_mask(*device, 0x3fff); \
+ MCFG_DEVICE_ADD(_tag, TI99_GROMPORT, 0) \
+ ti99_gromport_device::set_mask(*device, 0x3fff); \
MCFG_DEVICE_SLOT_INTERFACE(gromport8, "single", false)
#define MCFG_GROMPORT_READY_HANDLER( _ready ) \
- devcb = &gromport_device::static_set_ready_callback( *device, DEVCB_##_ready );
+ devcb = &ti99_gromport_device::static_set_ready_callback( *device, DEVCB_##_ready );
#define MCFG_GROMPORT_RESET_HANDLER( _reset ) \
- devcb = &gromport_device::static_set_reset_callback( *device, DEVCB_##_reset );
+ devcb = &ti99_gromport_device::static_set_reset_callback( *device, DEVCB_##_reset );
/****************************************************************************/
-class rpk;
class ti99_cartridge_pcb;
class ti99_cartridge_device : public bus8z_device, public device_image_interface
@@ -103,7 +104,7 @@ public:
bool is_grom_idle();
protected:
- virtual void device_start() override { };
+ virtual void device_start() override { }
virtual void device_config_complete() override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry* device_rom_region() const override;
@@ -126,6 +127,10 @@ protected:
const char *file_extensions() const override { return "rpk"; }
private:
+ class rpk_socket;
+ class rpk_reader;
+ class rpk;
+
bool m_readrom;
int m_pcbtype;
int m_slot;
@@ -139,44 +144,42 @@ private:
rpk *m_rpk;
};
-extern const device_type TI99CART;
+DECLARE_DEVICE_TYPE(TI99CART, ti99_cartridge_device)
/****************************************************************************/
class ti99_cartridge_connector_device : public bus8z_device
{
public:
- virtual DECLARE_READ8Z_MEMBER(readz) override =0;
- virtual DECLARE_WRITE8_MEMBER(write) override =0;
virtual DECLARE_READ8Z_MEMBER(crureadz) = 0;
virtual DECLARE_WRITE8_MEMBER(cruwrite) = 0;
- virtual DECLARE_WRITE_LINE_MEMBER(romgq_line) =0;
- virtual DECLARE_WRITE8_MEMBER(set_gromlines) =0;
+ virtual DECLARE_WRITE_LINE_MEMBER(romgq_line) = 0;
+ virtual DECLARE_WRITE8_MEMBER(set_gromlines) = 0;
- virtual DECLARE_WRITE_LINE_MEMBER(gclock_in) =0;
+ virtual DECLARE_WRITE_LINE_MEMBER(gclock_in) = 0;
DECLARE_WRITE_LINE_MEMBER(ready_line);
- virtual void insert(int index, ti99_cartridge_device* cart) { m_gromport->cartridge_inserted(); };
- virtual void remove(int index) { };
- virtual bool is_grom_idle() =0;
+ virtual void insert(int index, ti99_cartridge_device* cart) { m_gromport->cartridge_inserted(); }
+ virtual void remove(int index) { }
+ virtual bool is_grom_idle() = 0;
protected:
- ti99_cartridge_connector_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ ti99_cartridge_connector_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_config_complete() override;
- gromport_device* m_gromport;
+ ti99_gromport_device* m_gromport;
bool m_grom_selected;
};
/*
Single cartridge connector.
*/
-class single_conn_device : public ti99_cartridge_connector_device
+class ti99_single_cart_conn_device : public ti99_cartridge_connector_device
{
public:
- single_conn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ti99_single_cart_conn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
@@ -204,12 +207,11 @@ private:
/* We set the number of slots to 4, although we may have up to 16. From a
logical point of view we could have 256, but the operating system only checks
the first 16 banks. */
-#define NUMBER_OF_CARTRIDGE_SLOTS 4
-class multi_conn_device : public ti99_cartridge_connector_device
+class ti99_multi_cart_conn_device : public ti99_cartridge_connector_device
{
public:
- multi_conn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ti99_multi_cart_conn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
@@ -226,6 +228,8 @@ public:
bool is_grom_idle() override;
protected:
+ static constexpr unsigned NUMBER_OF_CARTRIDGE_SLOTS = 4;
+
virtual void device_start() override;
virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -245,10 +249,10 @@ private:
/*
GRAM Kracker.
*/
-class gkracker_device : public ti99_cartridge_connector_device, public device_nvram_interface
+class ti99_gkracker_device : public ti99_cartridge_connector_device, public device_nvram_interface
{
public:
- gkracker_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ti99_gkracker_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
@@ -295,9 +299,9 @@ private:
void gk_install_menu(const char* menutext, int len, int ptr, int next, int start);
};
-extern const device_type GROMPORT_SINGLE;
-extern const device_type GROMPORT_MULTI;
-extern const device_type GROMPORT_GK;
+DECLARE_DEVICE_TYPE(TI99_GROMPORT_SINGLE, ti99_single_cart_conn_device)
+DECLARE_DEVICE_TYPE(TI99_GROMPORT_MULTI, ti99_multi_cart_conn_device)
+DECLARE_DEVICE_TYPE(TI99_GROMPORT_GK, ti99_gkracker_device)
/****************************************************************************/
@@ -306,7 +310,7 @@ class ti99_cartridge_pcb
friend class ti99_cartridge_device;
public:
ti99_cartridge_pcb();
- virtual ~ti99_cartridge_pcb() { };
+ virtual ~ti99_cartridge_pcb() { }
protected:
virtual DECLARE_READ8Z_MEMBER(readz);
@@ -350,7 +354,6 @@ protected:
class ti99_standard_cartridge : public ti99_cartridge_pcb
{
public:
- ~ti99_standard_cartridge() { };
};
/*********** Paged cartridge (like Extended Basic) ********************/
@@ -358,7 +361,6 @@ public:
class ti99_paged12k_cartridge : public ti99_cartridge_pcb
{
public:
- ~ti99_paged12k_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
};
@@ -368,7 +370,6 @@ public:
class ti99_paged16k_cartridge : public ti99_cartridge_pcb
{
public:
- ~ti99_paged16k_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
};
@@ -378,7 +379,6 @@ public:
class ti99_minimem_cartridge : public ti99_cartridge_pcb
{
public:
- ~ti99_minimem_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
};
@@ -388,7 +388,6 @@ public:
class ti99_super_cartridge : public ti99_cartridge_pcb
{
public:
- ~ti99_super_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
DECLARE_READ8Z_MEMBER(crureadz) override;
@@ -400,7 +399,6 @@ public:
class ti99_mbx_cartridge : public ti99_cartridge_pcb
{
public:
- ~ti99_mbx_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
};
@@ -410,7 +408,6 @@ public:
class ti99_paged379i_cartridge : public ti99_cartridge_pcb
{
public:
- ~ti99_paged379i_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
private:
@@ -422,7 +419,6 @@ private:
class ti99_paged378_cartridge : public ti99_cartridge_pcb
{
public:
- ~ti99_paged378_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
};
@@ -432,7 +428,6 @@ public:
class ti99_paged377_cartridge : public ti99_cartridge_pcb
{
public:
- ~ti99_paged377_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
};
@@ -442,7 +437,6 @@ public:
class ti99_pagedcru_cartridge : public ti99_cartridge_pcb
{
public:
- ~ti99_pagedcru_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
DECLARE_READ8Z_MEMBER(crureadz) override;
@@ -456,7 +450,6 @@ class ti99_gromemu_cartridge : public ti99_cartridge_pcb
public:
ti99_gromemu_cartridge(): m_waddr_LSB(false), m_grom_selected(false), m_grom_read_mode(false), m_grom_address_mode(false)
{ m_grom_address = 0; }
- ~ti99_gromemu_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
DECLARE_READ8Z_MEMBER(gromemureadz);
@@ -470,133 +463,4 @@ private:
bool m_grom_address_mode;
};
-
-struct pcb_type
-{
- int id;
- const char* name;
-};
-
-/*************************************************************************
- RPK support
-*************************************************************************/
-class rpk;
-
-class rpk_socket
-{
- friend class rpk;
-
-public:
- rpk_socket(const char *id, int length, uint8_t *contents);
- rpk_socket(const char *id, int length, uint8_t *contents, const char *pathname);
- ~rpk_socket() {}
-
- const char* id() { return m_id; }
- int get_content_length() { return m_length; }
- uint8_t* get_contents() { return m_contents; }
- bool persistent_ram() { return m_pathname != nullptr; }
- const char* get_pathname() { return m_pathname; }
- void cleanup() { if (m_contents != nullptr) global_free_array(m_contents); }
-
-private:
- const char* m_id;
- uint32_t m_length;
- uint8_t* m_contents;
- const char* m_pathname;
-};
-
-class rpk_reader
-{
-public:
- rpk_reader(const pcb_type *types)
- : m_types(types) { };
-
- rpk *open(emu_options &options, const char *filename, const char *system_name);
-
-private:
- int find_file(util::archive_file &zip, const char *filename, uint32_t crc);
- std::unique_ptr<rpk_socket> load_rom_resource(util::archive_file &zip, util::xml::data_node const* rom_resource_node, const char* socketname);
- std::unique_ptr<rpk_socket> load_ram_resource(emu_options &options, util::xml::data_node const* ram_resource_node, const char* socketname, const char* system_name);
- const pcb_type* m_types;
-};
-
-class rpk
-{
- friend class rpk_reader;
-public:
- rpk(emu_options& options, const char* sysname);
- ~rpk();
-
- int get_type(void) { return m_type; }
- uint8_t* get_contents_of_socket(const char *socket_name);
- int get_resource_length(const char *socket_name);
- void close();
-
-private:
- emu_options& m_options; // need this to find the path to the nvram files
- int m_type;
- //const char* m_system_name; // need this to find the path to the nvram files
- std::unordered_map<std::string,std::unique_ptr<rpk_socket>> m_sockets;
-
- void add_socket(const char* id, std::unique_ptr<rpk_socket> newsock);
-};
-
-enum rpk_open_error
-{
- RPK_OK,
- RPK_NOT_ZIP_FORMAT,
- RPK_CORRUPT,
- RPK_OUT_OF_MEMORY,
- RPK_XML_ERROR,
- RPK_INVALID_FILE_REF,
- RPK_ZIP_ERROR,
- RPK_ZIP_UNSUPPORTED,
- RPK_MISSING_RAM_LENGTH,
- RPK_INVALID_RAM_SPEC,
- RPK_UNKNOWN_RESOURCE_TYPE,
- RPK_INVALID_RESOURCE_REF,
- RPK_INVALID_LAYOUT,
- RPK_MISSING_LAYOUT,
- RPK_NO_PCB_OR_RESOURCES,
- RPK_UNKNOWN_PCB_TYPE
-};
-
-static const char error_text[16][30] =
-{
- "No error",
- "Not a RPK (zip) file",
- "Module definition corrupt",
- "Out of memory",
- "XML format error",
- "Invalid file reference",
- "Zip file error",
- "Unsupported zip version",
- "Missing RAM length",
- "Invalid RAM specification",
- "Unknown resource type",
- "Invalid resource reference",
- "layout.xml not valid",
- "Missing layout",
- "No pcb or resource found",
- "Unknown pcb type"
-};
-
-class rpk_exception
-{
-public:
- rpk_exception(rpk_open_error value): m_err(value), m_detail(nullptr) { };
- rpk_exception(rpk_open_error value, const char* detail): m_err(value), m_detail(detail) { };
-
- const char* to_string()
- {
- if (m_detail==nullptr) return error_text[(int)m_err];
- std::string errormsg = std::string(error_text[(int)m_err]).append(": ").append(m_detail);
- return core_strdup(errormsg.c_str());
- }
-
-private:
- rpk_open_error m_err;
- const char* m_detail;
-};
-
-#endif
+#endif // MAME_BUS_TI99X_GROMPORT_H
diff --git a/src/devices/bus/ti99x/joyport.h b/src/devices/bus/ti99x/joyport.h
deleted file mode 100644
index aebaeafb62f..00000000000
--- a/src/devices/bus/ti99x/joyport.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// license:LGPL-2.1+
-// copyright-holders:Michael Zapf
-/****************************************************************************
-
- Joystick port
-
- Now explicitly implemented as a slot device
- A joystick port allows for plugging in a single or twin joystick, or
- a Mechatronics mouse.
-
- The TI-99/4 also offers an infrared handset, connected to this port. For
- this reason we also need an interrupt line.
-
- Michael Zapf
-
- June 2012
-
-*****************************************************************************/
-
-#ifndef __JOYPORT__
-#define __JOYPORT__
-
-
-extern const device_type JOYPORT;
-
-class joyport_device;
-
-/********************************************************************
- Common parent class of all devices attached to the joystick port
-********************************************************************/
-class joyport_attached_device : public device_t
-{
-public:
- joyport_attached_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source), m_joyport(nullptr)
-{ }
-
- virtual uint8_t read_dev() =0;
- virtual void write_dev(uint8_t data) =0;
- virtual void pulse_clock() { };
-
-protected:
- virtual void device_config_complete() override;
- joyport_device* m_joyport;
-};
-
-/********************************************************************
- Joystick port
-********************************************************************/
-class joyport_device : public device_t, public device_slot_interface
-{
-public:
- joyport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint8_t read_port();
- void write_port(int data);
- void set_interrupt(int state);
- void pulse_clock();
-
- template<class _Object> static devcb_base &static_set_int_callback(device_t &device, _Object object) { return downcast<joyport_device &>(device).m_interrupt.set_callback(object); }
-
-protected:
- void device_start() override;
- void device_config_complete() override;
-
-private:
- devcb_write_line m_interrupt;
- joyport_attached_device* m_connected;
-};
-
-SLOT_INTERFACE_EXTERN(joystick_port);
-SLOT_INTERFACE_EXTERN(joystick_port_994);
-SLOT_INTERFACE_EXTERN(joystick_port_gen);
-
-#define MCFG_JOYPORT_INT_HANDLER( _intcallb ) \
- devcb = &joyport_device::static_set_int_callback( *device, DEVCB_##_intcallb );
-
-#define MCFG_GENEVE_JOYPORT_ADD( _tag ) \
- MCFG_DEVICE_ADD(_tag, JOYPORT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(joystick_port_gen, "twinjoy", false)
-
-#define MCFG_TI_JOYPORT4A_ADD( _tag ) \
- MCFG_DEVICE_ADD(_tag, JOYPORT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(joystick_port, "twinjoy", false)
-
-#define MCFG_TI_JOYPORT4_ADD( _tag ) \
- MCFG_DEVICE_ADD(_tag, JOYPORT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(joystick_port_994, "twinjoy", false)
-
-#endif /* __JOYPORT__ */
diff --git a/src/devices/bus/ti99x/ti99defs.cpp b/src/devices/bus/ti99x/ti99defs.cpp
index f65a95b8304..b1928908ae8 100644
--- a/src/devices/bus/ti99x/ti99defs.cpp
+++ b/src/devices/bus/ti99x/ti99defs.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "ti99defs.h"
-const device_type EVPC_CONN = device_creator<evpc_clock_connector>;
+DEFINE_DEVICE_TYPE(EVPC_CONN, evpc_clock_connector, "ti99_evpc_clock", "EVPC clock connector")
evpc_clock_connector::evpc_clock_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, EVPC_CONN, "EVPC clock connector", tag, owner, clock, "ti99_evpc_clock", __FILE__)
+ : device_t(mconfig, EVPC_CONN, tag, owner, clock)
, m_vdpint(*this)
{
}
diff --git a/src/devices/bus/ti99x/ti99defs.h b/src/devices/bus/ti99x/ti99defs.h
index f8f182a728c..4f25b6ca606 100644
--- a/src/devices/bus/ti99x/ti99defs.h
+++ b/src/devices/bus/ti99x/ti99defs.h
@@ -9,8 +9,10 @@
*****************************************************************************/
-#ifndef __TI99DEFS__
-#define __TI99DEFS__
+#ifndef MAME_BUS_TI99X_TI99DEFS_H
+#define MAME_BUS_TI99X_TI99DEFS_H
+
+#pragma once
// TI-99/4(A)
#define TISOUNDCHIP_TAG "soundchip"
@@ -117,22 +119,24 @@
*/
class bus8z_device : public device_t
{
+protected:
+ bus8z_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock) { }
public:
- bus8z_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source) { }
- virtual DECLARE_READ8Z_MEMBER(readz) =0;
- virtual DECLARE_WRITE8_MEMBER(write) =0;
- virtual DECLARE_SETADDRESS_DBIN_MEMBER( setaddress_dbin ) { };
+ virtual DECLARE_READ8Z_MEMBER(readz) = 0;
+ virtual DECLARE_WRITE8_MEMBER(write) = 0;
+ virtual DECLARE_SETADDRESS_DBIN_MEMBER( setaddress_dbin ) { }
};
class bus16z_device : device_t
{
+protected:
+ bus16z_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock) { }
public:
- bus16z_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source) { }
- virtual DECLARE_READ16Z_MEMBER(read16z) =0;
- virtual DECLARE_WRITE16_MEMBER(write16) =0;
- virtual DECLARE_SETADDRESS_DBIN_MEMBER( setaddress_dbin ) { };
+ virtual DECLARE_READ16Z_MEMBER(read16z) = 0;
+ virtual DECLARE_WRITE16_MEMBER(write16) = 0;
+ virtual DECLARE_SETADDRESS_DBIN_MEMBER( setaddress_dbin ) { }
};
/****************************************************************************
@@ -152,21 +156,22 @@ public:
exposing the console class to the external class.
****************************************************************************/
-class ti99_4x_state;
-extern const device_type EVPC_CONN;
+DECLARE_DEVICE_TYPE(EVPC_CONN, evpc_clock_connector)
class evpc_clock_connector : public device_t
{
public:
evpc_clock_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &static_set_vdpint_callback(device_t &device, _Object object)
+ template <class Object> static devcb_base &static_set_vdpint_callback(device_t &device, Object &&cb)
{
- return downcast<evpc_clock_connector &>(device).m_vdpint.set_callback(object);
+ return downcast<evpc_clock_connector &>(device).m_vdpint.set_callback(std::forward<Object>(cb));
}
WRITE_LINE_MEMBER( vclock_line ) { m_vdpint(state); }
+
+protected:
void device_start() override;
private:
@@ -197,4 +202,4 @@ enum
GENEVE_PFM512A
};
-#endif
+#endif // MAME_BUS_TI99X_TI99DEFS_H
diff --git a/src/devices/bus/tiki100/8088.cpp b/src/devices/bus/tiki100/8088.cpp
index 45a0c116433..1dde63a9ed0 100644
--- a/src/devices/bus/tiki100/8088.cpp
+++ b/src/devices/bus/tiki100/8088.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type TIKI100_8088 = device_creator<tiki100_8088_t>;
+DEFINE_DEVICE_TYPE(TIKI100_8088, tiki100_8088_device, "tiki100_8088", "TIKI-100 8/16")
//-------------------------------------------------
@@ -43,20 +43,20 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *tiki100_8088_t::device_rom_region() const
+const tiny_rom_entry *tiki100_8088_device::device_rom_region() const
{
return ROM_NAME( tiki100_8088 );
}
-static ADDRESS_MAP_START( i8088_mem, AS_PROGRAM, 8, tiki100_8088_t )
+static ADDRESS_MAP_START( i8088_mem, AS_PROGRAM, 8, tiki100_8088_device )
AM_RANGE(0x00000, 0xbffff) AM_RAM
- AM_RANGE(0xc0000, 0xcffff) AM_DEVREADWRITE(":" TIKI100_BUS_TAG, tiki100_bus_t, exin_mrq_r, exin_mrq_w)
+ AM_RANGE(0xc0000, 0xcffff) AM_DEVREADWRITE(":" TIKI100_BUS_TAG, tiki100_bus_device, exin_mrq_r, exin_mrq_w)
AM_RANGE(0xff000, 0xfffff) AM_ROM AM_REGION(I8088_TAG, 0)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( i8088_io, AS_IO, 8, tiki100_8088_t )
+static ADDRESS_MAP_START( i8088_io, AS_IO, 8, tiki100_8088_device )
AM_RANGE(0x7f, 0x7f) AM_READWRITE(read, write)
ADDRESS_MAP_END
@@ -77,7 +77,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor tiki100_8088_t::device_mconfig_additions() const
+machine_config_constructor tiki100_8088_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( tiki100_8088 );
}
@@ -89,11 +89,11 @@ machine_config_constructor tiki100_8088_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// tiki100_8088_t - constructor
+// tiki100_8088_device - constructor
//-------------------------------------------------
-tiki100_8088_t::tiki100_8088_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, TIKI100_8088, "TIKI-100 8/16", tag, owner, clock, "tiki100_8088", __FILE__),
+tiki100_8088_device::tiki100_8088_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, TIKI100_8088, tag, owner, clock),
device_tiki100bus_card_interface(mconfig, *this),
m_maincpu(*this, I8088_TAG),
m_data(0)
@@ -105,7 +105,7 @@ tiki100_8088_t::tiki100_8088_t(const machine_config &mconfig, const char *tag, d
// device_start - device-specific startup
//-------------------------------------------------
-void tiki100_8088_t::device_start()
+void tiki100_8088_device::device_start()
{
}
@@ -114,7 +114,7 @@ void tiki100_8088_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void tiki100_8088_t::device_reset()
+void tiki100_8088_device::device_reset()
{
m_maincpu->reset();
@@ -126,7 +126,7 @@ void tiki100_8088_t::device_reset()
// tiki100bus_iorq_r - I/O read
//-------------------------------------------------
-uint8_t tiki100_8088_t::iorq_r(address_space &space, offs_t offset, uint8_t data)
+uint8_t tiki100_8088_device::iorq_r(address_space &space, offs_t offset, uint8_t data)
{
if ((offset & 0xff) == 0x7f)
{
@@ -141,7 +141,7 @@ uint8_t tiki100_8088_t::iorq_r(address_space &space, offs_t offset, uint8_t data
// tiki100bus_iorq_w - I/O write
//-------------------------------------------------
-void tiki100_8088_t::iorq_w(address_space &space, offs_t offset, uint8_t data)
+void tiki100_8088_device::iorq_w(address_space &space, offs_t offset, uint8_t data)
{
if ((offset & 0xff) == 0x7f)
{
@@ -159,7 +159,7 @@ void tiki100_8088_t::iorq_w(address_space &space, offs_t offset, uint8_t data)
// read -
//-------------------------------------------------
-READ8_MEMBER( tiki100_8088_t::read )
+READ8_MEMBER( tiki100_8088_device::read )
{
return m_busak << 4 | m_data;
}
@@ -169,7 +169,7 @@ READ8_MEMBER( tiki100_8088_t::read )
// write -
//-------------------------------------------------
-WRITE8_MEMBER( tiki100_8088_t::write )
+WRITE8_MEMBER( tiki100_8088_device::write )
{
m_data = data & 0x0f;
diff --git a/src/devices/bus/tiki100/8088.h b/src/devices/bus/tiki100/8088.h
index e64945ce6e7..b2a131eb113 100644
--- a/src/devices/bus/tiki100/8088.h
+++ b/src/devices/bus/tiki100/8088.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_TIKI100_8088_H
+#define MAME_BUS_TIKI100_8088_H
-#ifndef __TIKI100_8088__
-#define __TIKI100_8088__
+#pragma once
#include "bus/tiki100/exp.h"
#include "cpu/i86/i86.h"
@@ -20,14 +20,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> tiki100_8088_t
+// ======================> tiki100_8088_device
-class tiki100_8088_t : public device_t,
+class tiki100_8088_device : public device_t,
public device_tiki100bus_card_interface
{
public:
// construction/destruction
- tiki100_8088_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ tiki100_8088_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -53,7 +53,6 @@ private:
// device type definition
-extern const device_type TIKI100_8088;
-
+DECLARE_DEVICE_TYPE(TIKI100_8088, tiki100_8088_device)
-#endif
+#endif // MAME_BUS_TIKI100_8088_H
diff --git a/src/devices/bus/tiki100/exp.cpp b/src/devices/bus/tiki100/exp.cpp
index 95063b2d4cf..d0bc91bc8bc 100644
--- a/src/devices/bus/tiki100/exp.cpp
+++ b/src/devices/bus/tiki100/exp.cpp
@@ -14,8 +14,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type TIKI100_BUS = device_creator<tiki100_bus_t>;
-const device_type TIKI100_BUS_SLOT = device_creator<tiki100_bus_slot_t>;
+DEFINE_DEVICE_TYPE(TIKI100_BUS, tiki100_bus_device, "tiki100bus", "TIKI-100 expansion bus")
+DEFINE_DEVICE_TYPE(TIKI100_BUS_SLOT, tiki100_bus_slot_device, "tiki100bus_slot", "TIKI-100 expansion bus slot")
@@ -24,11 +24,11 @@ const device_type TIKI100_BUS_SLOT = device_creator<tiki100_bus_slot_t>;
//**************************************************************************
//-------------------------------------------------
-// tiki100_bus_slot_t - constructor
+// tiki100_bus_slot_device - constructor
//-------------------------------------------------
-tiki100_bus_slot_t::tiki100_bus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, TIKI100_BUS_SLOT, "TIKI-100 expansion bus slot", tag, owner, clock, "tiki100bus_slot", __FILE__),
+tiki100_bus_slot_device::tiki100_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, TIKI100_BUS_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
device_z80daisy_interface(mconfig, *this),
m_bus(nullptr),
@@ -41,9 +41,9 @@ tiki100_bus_slot_t::tiki100_bus_slot_t(const machine_config &mconfig, const char
// device_start - device-specific startup
//-------------------------------------------------
-void tiki100_bus_slot_t::device_start()
+void tiki100_bus_slot_device::device_start()
{
- m_bus = machine().device<tiki100_bus_t>(TIKI100_BUS_TAG);
+ m_bus = machine().device<tiki100_bus_device>(TIKI100_BUS_TAG);
device_tiki100bus_card_interface *dev = dynamic_cast<device_tiki100bus_card_interface *>(get_card_device());
if (dev)
{
@@ -54,11 +54,11 @@ void tiki100_bus_slot_t::device_start()
//-------------------------------------------------
-// tiki100_bus_t - constructor
+// tiki100_bus_device - constructor
//-------------------------------------------------
-tiki100_bus_t::tiki100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, TIKI100_BUS, "TIKI-100 expansion bus", tag, owner, clock, "tiki100bus", __FILE__),
+tiki100_bus_device::tiki100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, TIKI100_BUS, tag, owner, clock),
m_irq_cb(*this),
m_nmi_cb(*this),
m_busrq_cb(*this),
@@ -72,7 +72,7 @@ tiki100_bus_t::tiki100_bus_t(const machine_config &mconfig, const char *tag, dev
// device_start - device-specific startup
//-------------------------------------------------
-void tiki100_bus_t::device_start()
+void tiki100_bus_device::device_start()
{
// resolve callbacks
m_irq_cb.resolve_safe();
@@ -87,7 +87,7 @@ void tiki100_bus_t::device_start()
// add_card - add card
//-------------------------------------------------
-void tiki100_bus_t::add_card(device_tiki100bus_card_interface *card)
+void tiki100_bus_device::add_card(device_tiki100bus_card_interface *card)
{
m_device_list.append(*card);
@@ -99,7 +99,7 @@ void tiki100_bus_t::add_card(device_tiki100bus_card_interface *card)
// mrq_r - memory read
//-------------------------------------------------
-uint8_t tiki100_bus_t::mrq_r(address_space &space, offs_t offset, uint8_t data, bool &mdis)
+uint8_t tiki100_bus_device::mrq_r(address_space &space, offs_t offset, uint8_t data, bool &mdis)
{
device_tiki100bus_card_interface *entry = m_device_list.first();
@@ -117,7 +117,7 @@ uint8_t tiki100_bus_t::mrq_r(address_space &space, offs_t offset, uint8_t data,
// mrq_w - memory write
//-------------------------------------------------
-WRITE8_MEMBER( tiki100_bus_t::mrq_w )
+WRITE8_MEMBER( tiki100_bus_device::mrq_w )
{
device_tiki100bus_card_interface *entry = m_device_list.first();
@@ -133,7 +133,7 @@ WRITE8_MEMBER( tiki100_bus_t::mrq_w )
// iorq_r - I/O read
//-------------------------------------------------
-uint8_t tiki100_bus_t::iorq_r(address_space &space, offs_t offset, uint8_t data)
+uint8_t tiki100_bus_device::iorq_r(address_space &space, offs_t offset, uint8_t data)
{
device_tiki100bus_card_interface *entry = m_device_list.first();
@@ -151,7 +151,7 @@ uint8_t tiki100_bus_t::iorq_r(address_space &space, offs_t offset, uint8_t data)
// iorq_w - I/O write
//-------------------------------------------------
-WRITE8_MEMBER( tiki100_bus_t::iorq_w )
+WRITE8_MEMBER( tiki100_bus_device::iorq_w )
{
device_tiki100bus_card_interface *entry = m_device_list.first();
@@ -167,7 +167,7 @@ WRITE8_MEMBER( tiki100_bus_t::iorq_w )
// busak_w - bus acknowledge write
//-------------------------------------------------
-WRITE_LINE_MEMBER( tiki100_bus_t::busak_w )
+WRITE_LINE_MEMBER( tiki100_bus_device::busak_w )
{
device_tiki100bus_card_interface *entry = m_device_list.first();
@@ -192,7 +192,7 @@ device_tiki100bus_card_interface::device_tiki100bus_card_interface(const machine
device_slot_card_interface(mconfig, device), m_bus(nullptr),
m_busak(CLEAR_LINE), m_next(nullptr)
{
- m_slot = dynamic_cast<tiki100_bus_slot_t *>(device.owner());
+ m_slot = dynamic_cast<tiki100_bus_slot_device *>(device.owner());
}
diff --git a/src/devices/bus/tiki100/exp.h b/src/devices/bus/tiki100/exp.h
index f97d46faee4..9ae56520527 100644
--- a/src/devices/bus/tiki100/exp.h
+++ b/src/devices/bus/tiki100/exp.h
@@ -9,10 +9,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_TIKI100_EXP_H
+#define MAME_BUS_TIKI100_EXP_H
-#ifndef __TIKI100_BUS__
-#define __TIKI100_BUS__
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -39,19 +39,19 @@
#define MCFG_TIKI100_BUS_IRQ_CALLBACK(_write) \
- devcb = &tiki100_bus_t::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &tiki100_bus_device::set_irq_wr_callback(*device, DEVCB_##_write);
#define MCFG_TIKI100_BUS_NMI_CALLBACK(_write) \
- devcb = &tiki100_bus_t::set_nmi_wr_callback(*device, DEVCB_##_write);
+ devcb = &tiki100_bus_device::set_nmi_wr_callback(*device, DEVCB_##_write);
#define MCFG_TIKI100_BUS_BUSRQ_CALLBACK(_write) \
- devcb = &tiki100_bus_t::set_busrq_wr_callback(*device, DEVCB_##_write);
+ devcb = &tiki100_bus_device::set_busrq_wr_callback(*device, DEVCB_##_write);
#define MCFG_TIKI100_BUS_IN_MREQ_CALLBACK(_read) \
- devcb = &tiki100_bus_t::set_mrq_rd_callback(*device, DEVCB_##_read);
+ devcb = &tiki100_bus_device::set_mrq_rd_callback(*device, DEVCB_##_read);
#define MCFG_TIKI100_BUS_OUT_MREQ_CALLBACK(_write) \
- devcb = &tiki100_bus_t::set_mrq_wr_callback(*device, DEVCB_##_write);
+ devcb = &tiki100_bus_device::set_mrq_wr_callback(*device, DEVCB_##_write);
@@ -59,57 +59,59 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> tiki100_bus_slot_t
+// ======================> tiki100_bus_slot_device
-class tiki100_bus_t;
-class tiki100_bus_slot_t;
+class tiki100_bus_device;
+class tiki100_bus_slot_device;
// ======================> device_tiki100bus_card_interface
class device_tiki100bus_card_interface : public device_slot_card_interface
{
- friend class tiki100_bus_t;
+ friend class tiki100_bus_device;
+ template <class ElementType> friend class simple_list;
public:
- // construction/destruction
- device_tiki100bus_card_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_tiki100bus_card_interface() { }
-
device_tiki100bus_card_interface *next() const { return m_next; }
// memory access
- virtual uint8_t mrq_r(address_space &space, offs_t offset, uint8_t data, bool &mdis) { mdis = 1; return data; };
- virtual void mrq_w(address_space &space, offs_t offset, uint8_t data) { };
+ virtual uint8_t mrq_r(address_space &space, offs_t offset, uint8_t data, bool &mdis) { mdis = 1; return data; }
+ virtual void mrq_w(address_space &space, offs_t offset, uint8_t data) { }
// I/O access
- virtual uint8_t iorq_r(address_space &space, offs_t offset, uint8_t data) { return data; };
- virtual void iorq_w(address_space &space, offs_t offset, uint8_t data) { };
+ virtual uint8_t iorq_r(address_space &space, offs_t offset, uint8_t data) { return data; }
+ virtual void iorq_w(address_space &space, offs_t offset, uint8_t data) { }
- virtual void busak_w(int state) { m_busak = state; };
+ virtual void busak_w(int state) { m_busak = state; }
// Z80 daisy chain
virtual int z80daisy_irq_state() { return 0; }
virtual int z80daisy_irq_ack() { return 0; }
virtual void z80daisy_irq_reti() { }
- tiki100_bus_t *m_bus;
- tiki100_bus_slot_t *m_slot;
+protected:
+ // construction/destruction
+ device_tiki100bus_card_interface(const machine_config &mconfig, device_t &device);
+
+ tiki100_bus_device *m_bus;
+ tiki100_bus_slot_device *m_slot;
int m_busak;
+private:
device_tiki100bus_card_interface *m_next;
};
-// ======================> tiki100_bus_slot_t
+// ======================> tiki100_bus_slot_device
-class tiki100_bus_slot_t : public device_t,
+class tiki100_bus_slot_device : public device_t,
public device_slot_interface,
public device_z80daisy_interface
{
public:
// construction/destruction
- tiki100_bus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ tiki100_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -122,29 +124,29 @@ protected:
private:
// configuration
- tiki100_bus_t *m_bus;
+ tiki100_bus_device *m_bus;
device_tiki100bus_card_interface *m_card;
};
// device type definition
-extern const device_type TIKI100_BUS_SLOT;
+DECLARE_DEVICE_TYPE(TIKI100_BUS_SLOT, tiki100_bus_slot_device)
-// ======================> tiki100_bus_t
+// ======================> tiki100_bus_device
-class tiki100_bus_t : public device_t
+class tiki100_bus_device : public device_t
{
public:
// construction/destruction
- tiki100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~tiki100_bus_t() { m_device_list.detach_all(); }
+ tiki100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ~tiki100_bus_device() { m_device_list.detach_all(); }
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_nmi_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_busrq_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_busrq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_mrq_rd_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_in_mrq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_mrq_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_out_mrq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_busrq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_busrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_mrq_rd_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_in_mrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_mrq_wr_callback(device_t &device, Object &&cb) { return downcast<tiki100_bus_device &>(device).m_out_mrq_cb.set_callback(std::forward<Object>(cb)); }
void add_card(device_tiki100bus_card_interface *card);
@@ -180,13 +182,10 @@ private:
// device type definition
-extern const device_type TIKI100_BUS;
-
+DECLARE_DEVICE_TYPE(TIKI100_BUS, tiki100_bus_device)
SLOT_INTERFACE_EXTERN( tiki100_cards );
-
-
-#endif
+#endif // MAME_BUS_TIKI100_EXP_H
diff --git a/src/devices/bus/tiki100/hdc.cpp b/src/devices/bus/tiki100/hdc.cpp
index a94856da571..3881f280235 100644
--- a/src/devices/bus/tiki100/hdc.cpp
+++ b/src/devices/bus/tiki100/hdc.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type TIKI100_HDC = device_creator<tiki100_hdc_t>;
+DEFINE_DEVICE_TYPE(TIKI100_HDC, tiki100_hdc_device, "tiki100_hdc", "TIKI-100 Winchester controller")
//-------------------------------------------------
@@ -49,7 +49,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor tiki100_hdc_t::device_mconfig_additions() const
+machine_config_constructor tiki100_hdc_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( tiki100_hdc );
}
@@ -61,11 +61,11 @@ machine_config_constructor tiki100_hdc_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// tiki100_hdc_t - constructor
+// tiki100_hdc_device - constructor
//-------------------------------------------------
-tiki100_hdc_t::tiki100_hdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, TIKI100_HDC, "TIKI-100 Winchester controller", tag, owner, clock, "tiki100_hdc", __FILE__),
+tiki100_hdc_device::tiki100_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, TIKI100_HDC, tag, owner, clock),
device_tiki100bus_card_interface(mconfig, *this),
m_hdc(*this, WD1010_TAG)
{
@@ -76,7 +76,7 @@ tiki100_hdc_t::tiki100_hdc_t(const machine_config &mconfig, const char *tag, dev
// device_start - device-specific startup
//-------------------------------------------------
-void tiki100_hdc_t::device_start()
+void tiki100_hdc_device::device_start()
{
}
@@ -85,7 +85,7 @@ void tiki100_hdc_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void tiki100_hdc_t::device_reset()
+void tiki100_hdc_device::device_reset()
{
m_hdc->reset();
}
@@ -95,7 +95,7 @@ void tiki100_hdc_t::device_reset()
// tiki100bus_iorq_r - I/O read
//-------------------------------------------------
-uint8_t tiki100_hdc_t::iorq_r(address_space &space, offs_t offset, uint8_t data)
+uint8_t tiki100_hdc_device::iorq_r(address_space &space, offs_t offset, uint8_t data)
{
if ((offset & 0xf8) == 0x20)
{
@@ -110,7 +110,7 @@ uint8_t tiki100_hdc_t::iorq_r(address_space &space, offs_t offset, uint8_t data)
// tiki100bus_iorq_w - I/O write
//-------------------------------------------------
-void tiki100_hdc_t::iorq_w(address_space &space, offs_t offset, uint8_t data)
+void tiki100_hdc_device::iorq_w(address_space &space, offs_t offset, uint8_t data)
{
if ((offset & 0xf8) == 0x20)
{
diff --git a/src/devices/bus/tiki100/hdc.h b/src/devices/bus/tiki100/hdc.h
index c7f1ff7bfec..7e0109f0ecd 100644
--- a/src/devices/bus/tiki100/hdc.h
+++ b/src/devices/bus/tiki100/hdc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_TIKI100_HDC_H
+#define MAME_BUS_TIKI100_HDC_H
-#ifndef __TIKI100_HDC__
-#define __TIKI100_HDC__
+#pragma once
#include "bus/tiki100/exp.h"
#include "imagedev/harddriv.h"
@@ -21,14 +21,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> tiki100_hdc_t
+// ======================> tiki100_hdc_device
-class tiki100_hdc_t : public device_t,
- public device_tiki100bus_card_interface
+class tiki100_hdc_device : public device_t, public device_tiki100bus_card_interface
{
public:
// construction/destruction
- tiki100_hdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ tiki100_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -48,7 +47,6 @@ private:
// device type definition
-extern const device_type TIKI100_HDC;
-
+DECLARE_DEVICE_TYPE(TIKI100_HDC, tiki100_hdc_device)
-#endif
+#endif // MAME_BUS_TIKI100_HDC_H
diff --git a/src/devices/bus/tvc/hbf.cpp b/src/devices/bus/tvc/hbf.cpp
index 1c19dd066ad..48ea67dafcd 100644
--- a/src/devices/bus/tvc/hbf.cpp
+++ b/src/devices/bus/tvc/hbf.cpp
@@ -48,7 +48,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type TVC_HBF = device_creator<tvc_hbf_device>;
+DEFINE_DEVICE_TYPE(TVC_HBF, tvc_hbf_device, "tvc_hbf", "HBF floppy interface")
//**************************************************************************
// LIVE DEVICE
@@ -59,10 +59,10 @@ const device_type TVC_HBF = device_creator<tvc_hbf_device>;
//-------------------------------------------------
tvc_hbf_device::tvc_hbf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TVC_HBF, "HBF floppy interface", tag, owner, clock, "tvc_hbf", __FILE__),
- device_tvcexp_interface( mconfig, *this ),
- m_fdc(*this, "fdc"), m_rom(nullptr), m_ram(nullptr), m_rom_bank(0)
- {
+ : device_t(mconfig, TVC_HBF, tag, owner, clock),
+ device_tvcexp_interface( mconfig, *this ),
+ m_fdc(*this, "fdc"), m_rom(nullptr), m_ram(nullptr), m_rom_bank(0)
+{
}
diff --git a/src/devices/bus/tvc/hbf.h b/src/devices/bus/tvc/hbf.h
index 4c1858195b0..6aa3bca563f 100644
--- a/src/devices/bus/tvc/hbf.h
+++ b/src/devices/bus/tvc/hbf.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_TVC_HBF_H
+#define MAME_BUS_TVC_HBF_H
-#ifndef __TVC_HBF_H__
-#define __TVC_HBF_H__
+#pragma once
#include "tvc.h"
#include "machine/wd_fdc.h"
@@ -44,7 +44,7 @@ protected:
private:
// internal state
- required_device<fd1793_t> m_fdc;
+ required_device<fd1793_device> m_fdc;
uint8_t * m_rom;
uint8_t * m_ram;
@@ -53,6 +53,6 @@ private:
// device type definition
-extern const device_type TVC_HBF;
+DECLARE_DEVICE_TYPE(TVC_HBF, tvc_hbf_device)
-#endif /* __TVC_HBF_H__ */
+#endif // MAME_BUS_TVC_HBF_H
diff --git a/src/devices/bus/tvc/tvc.cpp b/src/devices/bus/tvc/tvc.cpp
index e726cffd99e..0f165e0395f 100644
--- a/src/devices/bus/tvc/tvc.cpp
+++ b/src/devices/bus/tvc/tvc.cpp
@@ -18,7 +18,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type TVCEXP_SLOT = device_creator<tvcexp_slot_device>;
+DEFINE_DEVICE_TYPE(TVCEXP_SLOT, tvcexp_slot_device, "tvcexp_slot", "TVC64 Expansion Slot")
//**************************************************************************
@@ -52,10 +52,11 @@ device_tvcexp_interface::~device_tvcexp_interface()
// tvcexp_slot_device - constructor
//-------------------------------------------------
tvcexp_slot_device::tvcexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, TVCEXP_SLOT, "TVC64 Expansion Slot", tag, owner, clock, "tvcexp_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_out_irq_cb(*this),
- m_out_nmi_cb(*this), m_cart(nullptr)
+ device_t(mconfig, TVCEXP_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_out_irq_cb(*this),
+ m_out_nmi_cb(*this),
+ m_cart(nullptr)
{
}
diff --git a/src/devices/bus/tvc/tvc.h b/src/devices/bus/tvc/tvc.h
index 40ceb334886..c3e3ea44cf8 100644
--- a/src/devices/bus/tvc/tvc.h
+++ b/src/devices/bus/tvc/tvc.h
@@ -53,8 +53,10 @@
+----------+
*********************************************************************/
-#ifndef __TVCEXP_H__
-#define __TVCEXP_H__
+#ifndef MAME_BUS_TVC_TVC_H
+#define MAME_BUS_TVC_TVC_H
+
+#pragma once
/***************************************************************************
@@ -67,7 +69,6 @@ class device_tvcexp_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_tvcexp_interface(const machine_config &mconfig, device_t &device);
virtual ~device_tvcexp_interface();
// reading and writing
@@ -75,9 +76,12 @@ public:
virtual void int_ack() { }
virtual uint8_t int_r() { return 1; }
virtual DECLARE_READ8_MEMBER(read) { return 0x00; }
- virtual DECLARE_WRITE8_MEMBER(write) {}
+ virtual DECLARE_WRITE8_MEMBER(write) { }
virtual DECLARE_READ8_MEMBER(io_read) { return 0x00; }
- virtual DECLARE_WRITE8_MEMBER(io_write) {}
+ virtual DECLARE_WRITE8_MEMBER(io_write) { }
+
+protected:
+ device_tvcexp_interface(const machine_config &mconfig, device_t &device);
};
// ======================> tvcexp_slot_device
@@ -90,11 +94,8 @@ public:
tvcexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~tvcexp_slot_device();
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<tvcexp_slot_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_nmi_callback(device_t &device, _Object object) { return downcast<tvcexp_slot_device &>(device).m_out_nmi_cb.set_callback(object); }
-
- // device-level overrides
- virtual void device_start() override;
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<tvcexp_slot_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<tvcexp_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
// reading and writing
virtual uint8_t id_r();
@@ -105,14 +106,18 @@ public:
virtual DECLARE_READ8_MEMBER(io_read);
virtual DECLARE_WRITE8_MEMBER(io_write);
- devcb_write_line m_out_irq_cb;
- devcb_write_line m_out_nmi_cb;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+ devcb_write_line m_out_irq_cb;
+ devcb_write_line m_out_nmi_cb;
device_tvcexp_interface* m_cart;
};
// device type definition
-extern const device_type TVCEXP_SLOT;
+DECLARE_DEVICE_TYPE(TVCEXP_SLOT, tvcexp_slot_device)
/***************************************************************************
@@ -125,4 +130,4 @@ extern const device_type TVCEXP_SLOT;
#define MCFG_TVCEXP_SLOT_OUT_NMI_CB(_devcb) \
devcb = &tvcexp_slot_device::set_out_nmi_callback(*device, DEVCB_##_devcb);
-#endif /* __TVCEXP_H__ */
+#endif // MAME_BUS_TVC_TVC_H
diff --git a/src/devices/bus/vboy/rom.cpp b/src/devices/bus/vboy/rom.cpp
index 91d7e785ae7..6c6117c8a9b 100644
--- a/src/devices/bus/vboy/rom.cpp
+++ b/src/devices/bus/vboy/rom.cpp
@@ -17,24 +17,22 @@
// vboy_rom_device - constructor
//-------------------------------------------------
-const device_type VBOY_ROM_STD = device_creator<vboy_rom_device>;
-const device_type VBOY_ROM_EEPROM = device_creator<vboy_eeprom_device>;
+DEFINE_DEVICE_TYPE(VBOY_ROM_STD, vboy_rom_device, "vboy_rom", "Nintendo Virtual Boy Carts")
+DEFINE_DEVICE_TYPE(VBOY_ROM_EEPROM, vboy_eeprom_device, "vboy_eeprom", "Nintendo Virtual Boy Carts + EEPROM")
-vboy_rom_device::vboy_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_vboy_cart_interface( mconfig, *this )
+vboy_rom_device::vboy_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_vboy_cart_interface(mconfig, *this)
{
}
vboy_rom_device::vboy_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VBOY_ROM_STD, "Nintendo Virtual Boy Carts", tag, owner, clock, "vboy_rom", __FILE__),
- device_vboy_cart_interface( mconfig, *this )
+ : vboy_rom_device(mconfig, VBOY_ROM_STD, tag, owner, clock)
{
}
vboy_eeprom_device::vboy_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vboy_rom_device(mconfig, VBOY_ROM_EEPROM, "Nintendo Virtual Boy Carts + EEPROM", tag, owner, clock, "vboy_eeprom", __FILE__)
+ : vboy_rom_device(mconfig, VBOY_ROM_EEPROM, tag, owner, clock)
{
}
diff --git a/src/devices/bus/vboy/rom.h b/src/devices/bus/vboy/rom.h
index 05b0a518120..6963a09fb9c 100644
--- a/src/devices/bus/vboy/rom.h
+++ b/src/devices/bus/vboy/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __VBOY_ROM_H
-#define __VBOY_ROM_H
+#ifndef MAME_BUS_VBOY_ROM_H
+#define MAME_BUS_VBOY_ROM_H
+
+#pragma once
#include "slot.h"
@@ -13,14 +15,16 @@ class vboy_rom_device : public device_t,
{
public:
// construction/destruction
- vboy_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
vboy_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {}
-
// reading and writing
virtual DECLARE_READ32_MEMBER(read_cart) override;
+
+protected:
+ vboy_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { }
};
// ======================> vboy_eeprom_device
@@ -37,11 +41,8 @@ public:
};
-
// device type definition
-extern const device_type VBOY_ROM_STD;
-extern const device_type VBOY_ROM_EEPROM;
-
-
+DECLARE_DEVICE_TYPE(VBOY_ROM_STD, vboy_rom_device)
+DECLARE_DEVICE_TYPE(VBOY_ROM_EEPROM, vboy_eeprom_device)
-#endif
+#endif // MAME_BUS_VBOY_ROM_H
diff --git a/src/devices/bus/vboy/slot.cpp b/src/devices/bus/vboy/slot.cpp
index a6840087159..6ed81901d12 100644
--- a/src/devices/bus/vboy/slot.cpp
+++ b/src/devices/bus/vboy/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VBOY_CART_SLOT = device_creator<vboy_cart_slot_device>;
+DEFINE_DEVICE_TYPE(VBOY_CART_SLOT, vboy_cart_slot_device, "vboy_cart_slot", "Nintendo Virtual Boy Cartridge Slot")
//**************************************************************************
// vboy cartridges Interface
@@ -75,10 +75,11 @@ void device_vboy_cart_interface::eeprom_alloc(uint32_t size)
// vboy_cart_slot_device - constructor
//-------------------------------------------------
vboy_cart_slot_device::vboy_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VBOY_CART_SLOT, "Nintendo Virtual Boy Cartridge Slot", tag, owner, clock, "vboy_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(VBOY_STD), m_cart(nullptr)
+ device_t(mconfig, VBOY_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(VBOY_STD),
+ m_cart(nullptr)
{
}
diff --git a/src/devices/bus/vboy/slot.h b/src/devices/bus/vboy/slot.h
index 264eb9f4cc1..a81efa07519 100644
--- a/src/devices/bus/vboy/slot.h
+++ b/src/devices/bus/vboy/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __VBOY_SLOT_H
-#define __VBOY_SLOT_H
+#ifndef MAME_BUS_VBOY_SLOT_H
+#define MAME_BUS_VBOY_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -25,13 +27,12 @@ class device_vboy_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_vboy_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_vboy_cart_interface();
// reading and writing
virtual DECLARE_READ32_MEMBER(read_cart) { return 0xffffffff; }
virtual DECLARE_READ32_MEMBER(read_eeprom) { return 0xffffffff; }
- virtual DECLARE_WRITE32_MEMBER(write_eeprom) {}
+ virtual DECLARE_WRITE32_MEMBER(write_eeprom) { }
void rom_alloc(uint32_t size, const char *tag);
void eeprom_alloc(uint32_t size);
@@ -40,9 +41,11 @@ public:
uint32_t get_rom_size() { return m_rom_size; }
uint32_t get_eeprom_size() { return m_eeprom.size(); }
- void save_eeprom() { device().save_item(NAME(m_eeprom)); }
+ void save_eeprom() { device().save_item(NAME(m_eeprom)); }
protected:
+ device_vboy_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint32_t *m_rom;
uint32_t m_rom_size;
@@ -62,9 +65,6 @@ public:
vboy_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~vboy_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override;
@@ -92,15 +92,16 @@ public:
virtual DECLARE_WRITE32_MEMBER(write_eeprom);
protected:
+ // device-level overrides
+ virtual void device_start() override;
int m_type;
- device_vboy_cart_interface* m_cart;
+ device_vboy_cart_interface* m_cart;
};
-
// device type definition
-extern const device_type VBOY_CART_SLOT;
+DECLARE_DEVICE_TYPE(VBOY_CART_SLOT, vboy_cart_slot_device)
/***************************************************************************
@@ -112,4 +113,5 @@ extern const device_type VBOY_CART_SLOT;
#define MCFG_VBOY_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, VBOY_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+
+#endif // MAME_BUS_VBOY_SLOT_H
diff --git a/src/devices/bus/vc4000/rom.cpp b/src/devices/bus/vc4000/rom.cpp
index 0f6f0865099..0e41b2638ed 100644
--- a/src/devices/bus/vc4000/rom.cpp
+++ b/src/devices/bus/vc4000/rom.cpp
@@ -192,36 +192,34 @@
// vc4000_rom_device - constructor
//-------------------------------------------------
-const device_type VC4000_ROM_STD = device_creator<vc4000_rom_device>;
-const device_type VC4000_ROM_ROM4K = device_creator<vc4000_rom4k_device>;
-const device_type VC4000_ROM_RAM1K = device_creator<vc4000_ram1k_device>;
-const device_type VC4000_ROM_CHESS2 = device_creator<vc4000_chess2_device>;
+DEFINE_DEVICE_TYPE(VC4000_ROM_STD, vc4000_rom_device, "vc4000_rom", "VC 4000 Standard Carts")
+DEFINE_DEVICE_TYPE(VC4000_ROM_ROM4K, vc4000_rom4k_device, "vc4000_rom4k", "VC 4000 Carts w/4K ROM")
+DEFINE_DEVICE_TYPE(VC4000_ROM_RAM1K, vc4000_ram1k_device, "vc4000_ram1k", "VC 4000 Carts w/1K RAM")
+DEFINE_DEVICE_TYPE(VC4000_ROM_CHESS2, vc4000_chess2_device, "vc4000_chess2", "VC 4000 Chess II Cart")
-vc4000_rom_device::vc4000_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_vc4000_cart_interface( mconfig, *this )
+vc4000_rom_device::vc4000_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_vc4000_cart_interface(mconfig, *this)
{
}
vc4000_rom_device::vc4000_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VC4000_ROM_STD, "VC 4000 Standard Carts", tag, owner, clock, "vc4000_rom", __FILE__),
- device_vc4000_cart_interface( mconfig, *this )
+ : vc4000_rom_device(mconfig, VC4000_ROM_STD, tag, owner, clock)
{
}
vc4000_rom4k_device::vc4000_rom4k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vc4000_rom_device(mconfig, VC4000_ROM_ROM4K, "VC 4000 Carts w/4K ROM", tag, owner, clock, "vc4000_rom4k", __FILE__)
+ : vc4000_rom_device(mconfig, VC4000_ROM_ROM4K, tag, owner, clock)
{
}
vc4000_ram1k_device::vc4000_ram1k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vc4000_rom_device(mconfig, VC4000_ROM_RAM1K, "VC 4000 Carts w/1K RAM", tag, owner, clock, "vc4000_ram1k", __FILE__)
+ : vc4000_rom_device(mconfig, VC4000_ROM_RAM1K, tag, owner, clock)
{
}
vc4000_chess2_device::vc4000_chess2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vc4000_rom_device(mconfig, VC4000_ROM_CHESS2, "VC 4000 Chess II Cart", tag, owner, clock, "vc4000_chess2", __FILE__)
+ : vc4000_rom_device(mconfig, VC4000_ROM_CHESS2, tag, owner, clock)
{
}
diff --git a/src/devices/bus/vc4000/rom.h b/src/devices/bus/vc4000/rom.h
index dcd5d3b37f8..a8d524f2989 100644
--- a/src/devices/bus/vc4000/rom.h
+++ b/src/devices/bus/vc4000/rom.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __VC4000_ROM_H
-#define __VC4000_ROM_H
+#ifndef MAME_BUS_VC4000_ROM_H
+#define MAME_BUS_VC4000_ROM_H
#include "slot.h"
@@ -13,15 +13,17 @@ class vc4000_rom_device : public device_t,
{
public:
// construction/destruction
- vc4000_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
vc4000_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {}
- virtual void device_reset() override {}
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
+
+protected:
+ vc4000_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
};
// ======================> vc4000_rom4k_device
@@ -62,13 +64,10 @@ public:
-
-
// device type definition
-extern const device_type VC4000_ROM_STD;
-extern const device_type VC4000_ROM_ROM4K;
-extern const device_type VC4000_ROM_RAM1K;
-extern const device_type VC4000_ROM_CHESS2;
-
+DECLARE_DEVICE_TYPE(VC4000_ROM_STD, vc4000_rom_device)
+DECLARE_DEVICE_TYPE(VC4000_ROM_ROM4K, vc4000_rom4k_device)
+DECLARE_DEVICE_TYPE(VC4000_ROM_RAM1K, vc4000_ram1k_device)
+DECLARE_DEVICE_TYPE(VC4000_ROM_CHESS2, vc4000_chess2_device)
-#endif
+#endif // MAME_BUS_VC4000_ROM_H
diff --git a/src/devices/bus/vc4000/slot.cpp b/src/devices/bus/vc4000/slot.cpp
index 444575b3dd0..68c7ca15f4b 100644
--- a/src/devices/bus/vc4000/slot.cpp
+++ b/src/devices/bus/vc4000/slot.cpp
@@ -15,8 +15,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VC4000_CART_SLOT = device_creator<vc4000_cart_slot_device>;
-const device_type H21_CART_SLOT = device_creator<h21_cart_slot_device>;
+DEFINE_DEVICE_TYPE(VC4000_CART_SLOT, vc4000_cart_slot_device, "vc4000_cart_slot", "Interton VC 4000 Cartridge Slot")
+DEFINE_DEVICE_TYPE(H21_CART_SLOT, h21_cart_slot_device, "h21_cart_slot", "TRQ H-21 Cartridge Slot")
//**************************************************************************
// VC4000 Cartridges Interface
@@ -74,20 +74,17 @@ void device_vc4000_cart_interface::ram_alloc(uint32_t size)
// vc4000_cart_slot_device - constructor
//-------------------------------------------------
vc4000_cart_slot_device::vc4000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vc4000_cart_slot_device(mconfig, VC4000_CART_SLOT, "Interton VC 4000 Cartridge Slot", tag, owner, clock, "vc4000_cart_slot", __FILE__)
+ : vc4000_cart_slot_device(mconfig, VC4000_CART_SLOT, tag, owner, clock)
{
}
vc4000_cart_slot_device::vc4000_cart_slot_device(
const machine_config &mconfig,
device_type type,
- const char *name,
const char *tag,
device_t *owner,
- uint32_t clock,
- const char *shortname,
- const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_image_interface(mconfig, *this)
, device_slot_interface(mconfig, *this)
, m_type(VC4000_STD)
@@ -118,7 +115,7 @@ void vc4000_cart_slot_device::device_start()
//-------------------------------------------------
h21_cart_slot_device::h21_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vc4000_cart_slot_device(mconfig, H21_CART_SLOT, "TRQ H-21 Cartridge Slot", tag, owner, clock, "h21_cart_slot", __FILE__)
+ : vc4000_cart_slot_device(mconfig, H21_CART_SLOT, tag, owner, clock)
{
}
diff --git a/src/devices/bus/vc4000/slot.h b/src/devices/bus/vc4000/slot.h
index c663397dbe1..61cba93bd94 100644
--- a/src/devices/bus/vc4000/slot.h
+++ b/src/devices/bus/vc4000/slot.h
@@ -27,7 +27,6 @@ class device_vc4000_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_vc4000_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_vc4000_cart_interface();
// reading and writing
@@ -46,6 +45,8 @@ public:
void save_ram() { device().save_item(NAME(m_ram)); }
protected:
+ device_vc4000_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -64,12 +65,9 @@ public:
vc4000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~vc4000_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
- virtual void call_unload() override {}
+ virtual void call_unload() override { }
virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); }
int get_type() { return m_type; }
@@ -95,15 +93,15 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_ram);
protected:
+ // device-level overrides
+ virtual void device_start() override;
+
vc4000_cart_slot_device(
const machine_config &mconfig,
device_type type,
- const char *name,
const char *tag,
device_t *owner,
- uint32_t clock,
- const char *shortname,
- const char *source);
+ uint32_t clock);
int m_type;
device_vc4000_cart_interface *m_cart;
@@ -120,8 +118,8 @@ public:
};
// device type definition
-extern const device_type VC4000_CART_SLOT;
-extern const device_type H21_CART_SLOT;
+DECLARE_DEVICE_TYPE(VC4000_CART_SLOT, vc4000_cart_slot_device)
+DECLARE_DEVICE_TYPE(H21_CART_SLOT, h21_cart_slot_device)
/***************************************************************************
diff --git a/src/devices/bus/vcs/compumat.cpp b/src/devices/bus/vcs/compumat.cpp
index 304dbbf3403..5b5c8ad9495 100644
--- a/src/devices/bus/vcs/compumat.cpp
+++ b/src/devices/bus/vcs/compumat.cpp
@@ -13,11 +13,11 @@
#include "emu.h"
#include "compumat.h"
-const device_type A26_ROM_COMPUMATE = device_creator<a26_rom_cm_device>;
+DEFINE_DEVICE_TYPE(A26_ROM_COMPUMATE, a26_rom_cm_device, "a2600_cm", "Atari 2600 ROM Cart Compumate")
a26_rom_cm_device::a26_rom_cm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_COMPUMATE, "Atari 2600 ROM Cart Compumate", tag, owner, clock, "a2600_cm", __FILE__)
+ : a26_rom_f6_device(mconfig, A26_ROM_COMPUMATE, tag, owner, clock)
{
}
diff --git a/src/devices/bus/vcs/compumat.h b/src/devices/bus/vcs/compumat.h
index 6f59ead6ea0..0eed91e59e5 100644
--- a/src/devices/bus/vcs/compumat.h
+++ b/src/devices/bus/vcs/compumat.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __VCS_COMPUMAT_H
-#define __VCS_COMPUMAT_H
+#ifndef MAME_BUS_VCS_COMPUMAT_H
+#define MAME_BUS_VCS_COMPUMAT_H
+
+#pragma once
#include "rom.h"
@@ -28,6 +30,6 @@ public:
// device type definition
-extern const device_type A26_ROM_COMPUMATE;
+DECLARE_DEVICE_TYPE(A26_ROM_COMPUMATE, a26_rom_cm_device)
-#endif
+#endif // MAME_BUS_VCS_COMPUMAT_H
diff --git a/src/devices/bus/vcs/dpc.cpp b/src/devices/bus/vcs/dpc.cpp
index 524013c3d9b..84cd9841a93 100644
--- a/src/devices/bus/vcs/dpc.cpp
+++ b/src/devices/bus/vcs/dpc.cpp
@@ -14,11 +14,11 @@
// DPC device
-const device_type ATARI_DPC = device_creator<dpc_device>;
+DEFINE_DEVICE_TYPE(ATARI_DPC, dpc_device, "atari_dpc", "Atari DPC")
dpc_device::dpc_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) :
- device_t(mconfig, ATARI_DPC, "Atari DCP", tag, owner, clock, "atari_dcp", __FILE__),
+ device_t(mconfig, ATARI_DPC, tag, owner, clock),
m_movamt(0),
m_latch_62(0),
m_latch_64(0),
@@ -238,12 +238,11 @@ WRITE8_MEMBER(dpc_device::write)
// cart device
-const device_type A26_ROM_DPC = device_creator<a26_rom_dpc_device>;
+DEFINE_DEVICE_TYPE(A26_ROM_DPC, a26_rom_dpc_device, "a2600_dpc", "Atari 2600 ROM Cart Pitfall II")
a26_rom_dpc_device::a26_rom_dpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f8_device(mconfig, A26_ROM_DPC, "Atari 2600 ROM Cart Pitfall II", tag, owner, clock, "a2600_dcp", __FILE__),
- m_dpc(*this, "dpc")
+ : a26_rom_f8_device(mconfig, A26_ROM_DPC, tag, owner, clock), m_dpc(*this, "dpc")
{
}
diff --git a/src/devices/bus/vcs/dpc.h b/src/devices/bus/vcs/dpc.h
index 358cba6f942..9ce74b57684 100644
--- a/src/devices/bus/vcs/dpc.h
+++ b/src/devices/bus/vcs/dpc.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __VCS_DCP_H
-#define __VCS_DCP_H
+#ifndef MAME_BUS_VCS_DPC_H
+#define MAME_BUS_VCS_DPC_H
+
+#pragma once
#include "rom.h"
@@ -11,16 +13,6 @@
// TO DO: DPC should be made a separate device!
-struct df_t {
- uint8_t top;
- uint8_t bottom;
- uint8_t low;
- uint8_t high;
- uint8_t flag;
- uint8_t music_mode; /* Only used by data fetchers 5,6, and 7 */
- uint8_t osc_clk; /* Only used by data fetchers 5,6, and 7 */
-};
-
// m_dpc.oscillator = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(a2600_state::modeDPC_timer_callback),this));
class dpc_device : public device_t
@@ -29,36 +21,47 @@ public:
// construction/destruction
dpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- df_t m_df[8];
- uint8_t m_movamt;
- uint8_t m_latch_62;
- uint8_t m_latch_64;
- uint8_t m_dlc;
- uint8_t m_shift_reg;
- uint8_t *m_displaydata;
void set_display_data(uint8_t *data) { m_displaydata = data; }
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual DECLARE_READ8_MEMBER(read);
+ virtual DECLARE_WRITE8_MEMBER(write);
+
+protected:
+ static constexpr device_timer_id TIMER_OSC = 0;
+
+ struct df_t {
+ uint8_t top;
+ uint8_t bottom;
+ uint8_t low;
+ uint8_t high;
+ uint8_t flag;
+ uint8_t music_mode; /* Only used by data fetchers 5,6, and 7 */
+ uint8_t osc_clk; /* Only used by data fetchers 5,6, and 7 */
+ };
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual DECLARE_READ8_MEMBER(read);
- virtual DECLARE_WRITE8_MEMBER(write);
+ df_t m_df[8];
+ uint8_t m_movamt;
+ uint8_t m_latch_62;
+ uint8_t m_latch_64;
+ uint8_t m_dlc;
+ uint8_t m_shift_reg;
+ uint8_t *m_displaydata;
private:
-
void decrement_counter(uint8_t data_fetcher);
void check_flag(uint8_t data_fetcher);
- static const device_timer_id TIMER_OSC = 0;
emu_timer *m_oscillator;
};
// device type definition
-extern const device_type ATARI_DPC;
+DECLARE_DEVICE_TYPE(ATARI_DPC, dpc_device)
@@ -86,6 +89,6 @@ public:
// device type definition
-extern const device_type A26_ROM_DPC;
+DECLARE_DEVICE_TYPE(A26_ROM_DPC, a26_rom_dpc_device)
-#endif
+#endif // MAME_BUS_VCS_DPC_H
diff --git a/src/devices/bus/vcs/harmony_melody.cpp b/src/devices/bus/vcs/harmony_melody.cpp
index 6721cb6eff9..2e35ea48331 100644
--- a/src/devices/bus/vcs/harmony_melody.cpp
+++ b/src/devices/bus/vcs/harmony_melody.cpp
@@ -59,16 +59,13 @@ map:
-
-
// cart device
-const device_type A26_ROM_HARMONY = device_creator<a26_rom_harmony_device>;
+DEFINE_DEVICE_TYPE(A26_ROM_HARMONY, a26_rom_harmony_device, "a2600_harmony", "Atari 2600 ROM Cart HARMONY/MELODY")
a26_rom_harmony_device::a26_rom_harmony_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f8_device(mconfig, A26_ROM_HARMONY, "Atari 2600 ROM Cart HARMONY/MELODY", tag, owner, clock, "a2600_harmony", __FILE__),
- m_cpu(*this, "arm")
+ : a26_rom_f8_device(mconfig, A26_ROM_HARMONY, tag, owner, clock), m_cpu(*this, "arm")
{
}
diff --git a/src/devices/bus/vcs/harmony_melody.h b/src/devices/bus/vcs/harmony_melody.h
index 7ed337c56ec..3af4cfd9dcc 100644
--- a/src/devices/bus/vcs/harmony_melody.h
+++ b/src/devices/bus/vcs/harmony_melody.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
-#ifndef __VCS_HARMONY_H
-#define __VCS_HARMONY_H
+#ifndef MAME_BUS_VCS_HARMONY_MELODY_H
+#define MAME_BUS_VCS_HARMONY_MELODY_H
+
+#pragma once
#include "rom.h"
#include "cpu/arm7/lpc210x.h"
@@ -15,26 +17,26 @@ public:
// construction/destruction
a26_rom_harmony_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_reset() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
-
DECLARE_READ8_MEMBER(read8_r);
+private:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
void check_bankswitch(offs_t offset);
-private:
required_device<lpc210x_device> m_cpu;
};
// device type definition
-extern const device_type A26_ROM_HARMONY;
+DECLARE_DEVICE_TYPE(A26_ROM_HARMONY, a26_rom_harmony_device)
-#endif
+#endif // MAME_BUS_VCS_HARMONY_MELODY_H
diff --git a/src/devices/bus/vcs/rom.cpp b/src/devices/bus/vcs/rom.cpp
index 37c47ff950e..e5699d1ae48 100755
--- a/src/devices/bus/vcs/rom.cpp
+++ b/src/devices/bus/vcs/rom.cpp
@@ -21,167 +21,164 @@
// a26_rom_*k_device - constructor
//-------------------------------------------------
-const device_type A26_ROM_2K = device_creator<a26_rom_2k_device>;
-const device_type A26_ROM_4K = device_creator<a26_rom_4k_device>;
-const device_type A26_ROM_F4 = device_creator<a26_rom_f4_device>;
-const device_type A26_ROM_F6 = device_creator<a26_rom_f6_device>;
-const device_type A26_ROM_F8 = device_creator<a26_rom_f8_device>;
-const device_type A26_ROM_F8_SW = device_creator<a26_rom_f8_sw_device>;
-const device_type A26_ROM_FA = device_creator<a26_rom_fa_device>;
-const device_type A26_ROM_FE = device_creator<a26_rom_fe_device>;
-const device_type A26_ROM_3E = device_creator<a26_rom_3e_device>;
-const device_type A26_ROM_3F = device_creator<a26_rom_3f_device>;
-const device_type A26_ROM_E0 = device_creator<a26_rom_e0_device>;
-const device_type A26_ROM_E7 = device_creator<a26_rom_e7_device>;
-const device_type A26_ROM_UA = device_creator<a26_rom_ua_device>;
-const device_type A26_ROM_CV = device_creator<a26_rom_cv_device>;
-const device_type A26_ROM_DC = device_creator<a26_rom_dc_device>;
-const device_type A26_ROM_FV = device_creator<a26_rom_fv_device>;
-const device_type A26_ROM_JVP = device_creator<a26_rom_jvp_device>;
-const device_type A26_ROM_4IN1 = device_creator<a26_rom_4in1_device>;
-const device_type A26_ROM_8IN1 = device_creator<a26_rom_8in1_device>;
-const device_type A26_ROM_32IN1 = device_creator<a26_rom_32in1_device>;
-const device_type A26_ROM_X07 = device_creator<a26_rom_x07_device>;
-
-
-a26_rom_2k_device::a26_rom_2k_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_vcs_cart_interface( mconfig, *this )
+DEFINE_DEVICE_TYPE(A26_ROM_2K, a26_rom_2k_device, "vcs_2k", "Atari VCS 2600 2K ROM Carts")
+DEFINE_DEVICE_TYPE(A26_ROM_4K, a26_rom_4k_device, "vcs_4k", "Atari VCS 2600 4K ROM Carts")
+DEFINE_DEVICE_TYPE(A26_ROM_F4, a26_rom_f4_device, "vcs_f4", "Atari VCS 2600 ROM Carts w/F4 bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_F6, a26_rom_f6_device, "vcs_f6", "Atari VCS 2600 ROM Carts w/F6 bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_F8, a26_rom_f8_device, "vcs_f8", "Atari VCS 2600 ROM Carts w/F8 bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_F8_SW, a26_rom_f8_sw_device, "vcs_f8_sw", "Atari VCS 2600 ROM Cart Snow White")
+DEFINE_DEVICE_TYPE(A26_ROM_FA, a26_rom_fa_device, "vcs_fa", "Atari VCS 2600 ROM Carts w/FA bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_FE, a26_rom_fe_device, "vcs_fe", "Atari VCS 2600 ROM Carts w/FE bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_3E, a26_rom_3e_device, "vcs_3e", "Atari VCS 2600 ROM Carts w/3E bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_3F, a26_rom_3f_device, "vcs_3f", "Atari VCS 2600 ROM Carts w/3F bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_E0, a26_rom_e0_device, "vcs_e0", "Atari VCS 2600 ROM Carts w/E0 bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_E7, a26_rom_e7_device, "vcs_e7", "Atari VCS 2600 ROM Carts w/E7 bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_UA, a26_rom_ua_device, "vcs_ua", "Atari VCS 2600 ROM Carts w/UA bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_CV, a26_rom_cv_device, "vcs_cv", "Atari VCS 2600 ROM Carts w/Commavid bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_DC, a26_rom_dc_device, "vcs_dc", "Atari VCS 2600 ROM Carts w/Dynacom bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_FV, a26_rom_fv_device, "vcs_fv", "Atari VCS 2600 ROM Carts w/FV bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_JVP, a26_rom_jvp_device, "vcs_jvp", "Atari VCS 2600 ROM Carts w/JVP bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_4IN1, a26_rom_4in1_device, "vcs_4in1", "Atari VCS 2600 ROM Cart 4 in 1")
+DEFINE_DEVICE_TYPE(A26_ROM_8IN1, a26_rom_8in1_device, "vcs_8in1", "Atari VCS 2600 ROM Cart 8 in 1")
+DEFINE_DEVICE_TYPE(A26_ROM_32IN1, a26_rom_32in1_device, "vcs_32in1", "Atari VCS 2600 ROM Cart 32 in 1")
+DEFINE_DEVICE_TYPE(A26_ROM_X07, a26_rom_x07_device, "vcs_x07", "Atari VCS 2600 ROM Carts w/X07 bankswitch")
+
+
+a26_rom_2k_device::a26_rom_2k_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_vcs_cart_interface(mconfig, *this)
{
}
a26_rom_2k_device::a26_rom_2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, A26_ROM_2K, "Atari VCS 2600 2K ROM Carts", tag, owner, clock, "vcs_2k", __FILE__),
- device_vcs_cart_interface( mconfig, *this )
+ : a26_rom_2k_device(mconfig, A26_ROM_2K, tag, owner, clock)
{
}
a26_rom_4k_device::a26_rom_4k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_2k_device(mconfig, A26_ROM_4K, "Atari VCS 2600 4K ROM Carts", tag, owner, clock, "vcs_4k", __FILE__)
+ : a26_rom_2k_device(mconfig, A26_ROM_4K, tag, owner, clock)
{
}
-a26_rom_f6_device::a26_rom_f6_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : a26_rom_2k_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_base_bank(-1) // set to -1 to help the Xin1 multicart...
+a26_rom_f6_device::a26_rom_f6_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : a26_rom_2k_device(mconfig, type, tag, owner, clock)
+ , m_base_bank(-1) // set to -1 to help the Xin1 multicart...
{
}
a26_rom_f6_device::a26_rom_f6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_2k_device(mconfig, A26_ROM_F6, "Atari VCS 2600 ROM Carts w/F6 bankswitch", tag, owner, clock, "vcs_f6", __FILE__),
- m_base_bank(-1) // set to -1 to help the Xin1 multicart...
+ : a26_rom_f6_device(mconfig, A26_ROM_F6, tag, owner, clock)
{
}
a26_rom_f4_device::a26_rom_f4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_F4, "Atari VCS 2600 ROM Carts w/F4 bankswitch", tag, owner, clock, "vcs_f4", __FILE__)
+ : a26_rom_f6_device(mconfig, A26_ROM_F4, tag, owner, clock)
{
}
-a26_rom_f8_device::a26_rom_f8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : a26_rom_f6_device(mconfig, type, name, tag, owner, clock, shortname, source)
+a26_rom_f8_device::a26_rom_f8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : a26_rom_f6_device(mconfig, type, tag, owner, clock)
{
}
a26_rom_f8_device::a26_rom_f8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_F8, "Atari VCS 2600 ROM Carts w/F8 bankswitch", tag, owner, clock, "vcs_f8", __FILE__)
+ : a26_rom_f8_device(mconfig, A26_ROM_F8, tag, owner, clock)
{
}
a26_rom_f8_sw_device::a26_rom_f8_sw_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f8_device(mconfig, A26_ROM_F8_SW, "Atari VCS 2600 ROM Cart Snow White", tag, owner, clock, "vcs_f8_sw", __FILE__)
+ : a26_rom_f8_device(mconfig, A26_ROM_F8_SW, tag, owner, clock)
{
}
a26_rom_fa_device::a26_rom_fa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_FA, "Atari VCS 2600 ROM Carts w/FA bankswitch", tag, owner, clock, "vcs_fa", __FILE__)
+ : a26_rom_f6_device(mconfig, A26_ROM_FA, tag, owner, clock)
{
}
a26_rom_fe_device::a26_rom_fe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_2k_device(mconfig, A26_ROM_FE, "Atari VCS 2600 ROM Carts w/FE bankswitch", tag, owner, clock, "vcs_fe", __FILE__), m_base_bank(0), m_trigger_on_next_access(0)
- {
+ : a26_rom_2k_device(mconfig, A26_ROM_FE, tag, owner, clock), m_base_bank(0), m_trigger_on_next_access(0)
+{
}
a26_rom_3e_device::a26_rom_3e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_3E, "Atari VCS 2600 ROM Carts w/3E bankswitch", tag, owner, clock, "vcs_3e", __FILE__), m_num_bank(0), m_ram_bank(0), m_ram_enable(0)
- {
+ : a26_rom_f6_device(mconfig, A26_ROM_3E, tag, owner, clock), m_num_bank(0), m_ram_bank(0), m_ram_enable(0)
+{
}
a26_rom_3f_device::a26_rom_3f_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_3F, "Atari VCS 2600 ROM Carts w/3F bankswitch", tag, owner, clock, "vcs_3f", __FILE__), m_num_bank(0)
- {
+ : a26_rom_f6_device(mconfig, A26_ROM_3F, tag, owner, clock), m_num_bank(0)
+{
}
a26_rom_e0_device::a26_rom_e0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_E0, "Atari VCS 2600 ROM Carts w/E0 bankswitch", tag, owner, clock, "vcs_e0", __FILE__)
+ : a26_rom_f6_device(mconfig, A26_ROM_E0, tag, owner, clock)
{
}
a26_rom_e7_device::a26_rom_e7_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_E7, "Atari VCS 2600 ROM Carts w/E7 bankswitch", tag, owner, clock, "vcs_e7", __FILE__), m_ram_bank(0)
- {
+ : a26_rom_f6_device(mconfig, A26_ROM_E7, tag, owner, clock), m_ram_bank(0)
+{
}
a26_rom_ua_device::a26_rom_ua_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_UA, "Atari VCS 2600 ROM Carts w/UA bankswitch", tag, owner, clock, "vcs_ua", __FILE__)
+ : a26_rom_f6_device(mconfig, A26_ROM_UA, tag, owner, clock)
{
}
a26_rom_cv_device::a26_rom_cv_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_2k_device(mconfig, A26_ROM_CV, "Atari VCS 2600 ROM Carts w/Commavid bankswitch", tag, owner, clock, "vcs_cv", __FILE__)
+ : a26_rom_2k_device(mconfig, A26_ROM_CV, tag, owner, clock)
{
}
a26_rom_dc_device::a26_rom_dc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_DC, "Atari VCS 2600 ROM Carts w/Dynacom bankswitch", tag, owner, clock, "vcs_dc", __FILE__)
+ : a26_rom_f6_device(mconfig, A26_ROM_DC, tag, owner, clock)
{
}
a26_rom_fv_device::a26_rom_fv_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_FV, "Atari VCS 2600 ROM Carts w/FV bankswitch", tag, owner, clock, "vcs_fv", __FILE__), m_locked(0)
- {
+ : a26_rom_f6_device(mconfig, A26_ROM_FV, tag, owner, clock), m_locked(0)
+{
}
a26_rom_jvp_device::a26_rom_jvp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_JVP, "Atari VCS 2600 ROM Carts w/JVP bankswitch", tag, owner, clock, "vcs_jvp", __FILE__)
+ : a26_rom_f6_device(mconfig, A26_ROM_JVP, tag, owner, clock)
{
}
a26_rom_4in1_device::a26_rom_4in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_4IN1, "Atari VCS 2600 ROM Cart 4 in 1", tag, owner, clock, "vcs_4in1", __FILE__)
+ : a26_rom_f6_device(mconfig, A26_ROM_4IN1, tag, owner, clock)
{
}
a26_rom_8in1_device::a26_rom_8in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f8_device(mconfig, A26_ROM_8IN1, "Atari VCS 2600 ROM Cart 8 in 1", tag, owner, clock, "vcs_8in1", __FILE__), m_reset_bank(0)
- {
+ : a26_rom_f8_device(mconfig, A26_ROM_8IN1, tag, owner, clock), m_reset_bank(0)
+{
}
a26_rom_32in1_device::a26_rom_32in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_32IN1, "Atari VCS 2600 ROM Cart 32 in 1", tag, owner, clock, "vcs_32in1", __FILE__)
+ : a26_rom_f6_device(mconfig, A26_ROM_32IN1, tag, owner, clock)
{
}
a26_rom_x07_device::a26_rom_x07_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_X07, "Atari VCS 2600 ROM Carts w/X07 bankswitch", tag, owner, clock, "vcs_x07", __FILE__)
+ : a26_rom_f6_device(mconfig, A26_ROM_X07, tag, owner, clock)
{
}
diff --git a/src/devices/bus/vcs/rom.h b/src/devices/bus/vcs/rom.h
index faebae0cf74..01e730c03a6 100755
--- a/src/devices/bus/vcs/rom.h
+++ b/src/devices/bus/vcs/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __VCS_ROM_H
-#define __VCS_ROM_H
+#ifndef MAME_BUS_VCS_ROM_H
+#define MAME_BUS_VCS_ROM_H
+
+#pragma once
#include "vcs_slot.h"
@@ -13,15 +15,17 @@ class a26_rom_2k_device : public device_t,
{
public:
// construction/destruction
- a26_rom_2k_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a26_rom_2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom) override;
+
+protected:
+ a26_rom_2k_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-
- // reading and writing
- virtual DECLARE_READ8_MEMBER(read_rom) override;
};
@@ -46,18 +50,19 @@ class a26_rom_f6_device : public a26_rom_2k_device
{
public:
// construction/destruction
- a26_rom_f6_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a26_rom_f6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
protected:
+ a26_rom_f6_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_base_bank;
};
@@ -70,12 +75,13 @@ public:
// construction/destruction
a26_rom_f4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+
+protected:
+ // device-level overrides
+ virtual void device_reset() override;
};
@@ -85,12 +91,14 @@ class a26_rom_f8_device : public a26_rom_f6_device
{
public:
// construction/destruction
- a26_rom_f8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
a26_rom_f8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+
+protected:
+ a26_rom_f8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
@@ -102,6 +110,7 @@ public:
// construction/destruction
a26_rom_f8_sw_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
// device-level overrides
virtual void device_reset() override;
};
@@ -129,10 +138,6 @@ public:
// construction/destruction
a26_rom_fe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_READ8_MEMBER(read_bank) override;
@@ -140,6 +145,10 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_base_bank;
int m_trigger_on_next_access;
};
@@ -153,16 +162,16 @@ public:
// construction/destruction
a26_rom_3e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_num_bank;
int m_ram_bank;
int m_ram_enable;
@@ -177,14 +186,14 @@ public:
// construction/destruction
a26_rom_3f_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
protected:
+ // device-level overrides
+ virtual void device_reset() override;
+
int m_num_bank;
};
@@ -197,15 +206,15 @@ public:
// construction/destruction
a26_rom_e0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_base_banks[4];
};
@@ -218,15 +227,15 @@ public:
// construction/destruction
a26_rom_e7_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_ram_bank;
};
@@ -239,13 +248,14 @@ public:
// construction/destruction
a26_rom_ua_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_READ8_MEMBER(read_bank) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+
+protected:
+ // device-level overrides
+ virtual void device_reset() override;
};
@@ -285,15 +295,15 @@ public:
// construction/destruction
a26_rom_fv_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_locked;
};
@@ -320,11 +330,12 @@ public:
// construction/destruction
a26_rom_4in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
+
+protected:
+ // device-level overrides
+ virtual void device_reset() override;
};
@@ -336,14 +347,14 @@ public:
// construction/destruction
a26_rom_8in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
int m_reset_bank;
};
@@ -356,11 +367,12 @@ public:
// construction/destruction
a26_rom_32in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
+
+protected:
+ // device-level overrides
+ virtual void device_reset() override;
};
@@ -380,27 +392,27 @@ public:
// device type definition
-extern const device_type A26_ROM_2K;
-extern const device_type A26_ROM_4K;
-extern const device_type A26_ROM_F4;
-extern const device_type A26_ROM_F6;
-extern const device_type A26_ROM_F8;
-extern const device_type A26_ROM_F8_SW;
-extern const device_type A26_ROM_FA;
-extern const device_type A26_ROM_FE;
-extern const device_type A26_ROM_3E;
-extern const device_type A26_ROM_3F;
-extern const device_type A26_ROM_E0;
-extern const device_type A26_ROM_E7;
-extern const device_type A26_ROM_UA;
-extern const device_type A26_ROM_CV;
-extern const device_type A26_ROM_DC;
-extern const device_type A26_ROM_FV;
-extern const device_type A26_ROM_JVP;
-extern const device_type A26_ROM_4IN1;
-extern const device_type A26_ROM_8IN1;
-extern const device_type A26_ROM_32IN1;
-extern const device_type A26_ROM_X07;
-
-
-#endif
+DECLARE_DEVICE_TYPE(A26_ROM_2K, a26_rom_2k_device)
+DECLARE_DEVICE_TYPE(A26_ROM_4K, a26_rom_4k_device)
+DECLARE_DEVICE_TYPE(A26_ROM_F4, a26_rom_f4_device)
+DECLARE_DEVICE_TYPE(A26_ROM_F6, a26_rom_f6_device)
+DECLARE_DEVICE_TYPE(A26_ROM_F8, a26_rom_f8_device)
+DECLARE_DEVICE_TYPE(A26_ROM_F8_SW, a26_rom_f8_sw_device)
+DECLARE_DEVICE_TYPE(A26_ROM_FA, a26_rom_fa_device)
+DECLARE_DEVICE_TYPE(A26_ROM_FE, a26_rom_fe_device)
+DECLARE_DEVICE_TYPE(A26_ROM_3E, a26_rom_3e_device)
+DECLARE_DEVICE_TYPE(A26_ROM_3F, a26_rom_3f_device)
+DECLARE_DEVICE_TYPE(A26_ROM_E0, a26_rom_e0_device)
+DECLARE_DEVICE_TYPE(A26_ROM_E7, a26_rom_e7_device)
+DECLARE_DEVICE_TYPE(A26_ROM_UA, a26_rom_ua_device)
+DECLARE_DEVICE_TYPE(A26_ROM_CV, a26_rom_cv_device)
+DECLARE_DEVICE_TYPE(A26_ROM_DC, a26_rom_dc_device)
+DECLARE_DEVICE_TYPE(A26_ROM_FV, a26_rom_fv_device)
+DECLARE_DEVICE_TYPE(A26_ROM_JVP, a26_rom_jvp_device)
+DECLARE_DEVICE_TYPE(A26_ROM_4IN1, a26_rom_4in1_device)
+DECLARE_DEVICE_TYPE(A26_ROM_8IN1, a26_rom_8in1_device)
+DECLARE_DEVICE_TYPE(A26_ROM_32IN1, a26_rom_32in1_device)
+DECLARE_DEVICE_TYPE(A26_ROM_X07, a26_rom_x07_device)
+
+
+#endif // MAME_BUS_VCS_ROM_H
diff --git a/src/devices/bus/vcs/scharger.cpp b/src/devices/bus/vcs/scharger.cpp
index dc63e100ba9..05d6b006f30 100644
--- a/src/devices/bus/vcs/scharger.cpp
+++ b/src/devices/bus/vcs/scharger.cpp
@@ -37,12 +37,12 @@
#include "sound/wave.h"
#include "formats/a26_cas.h"
-const device_type A26_ROM_SUPERCHARGER = device_creator<a26_rom_ss_device>;
+DEFINE_DEVICE_TYPE(A26_ROM_SUPERCHARGER, a26_rom_ss_device, "a2600_ss", "Atari 2600 ROM Cart Supercharger")
a26_rom_ss_device::a26_rom_ss_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : a26_rom_f6_device(mconfig, A26_ROM_SUPERCHARGER, "Atari 2600 ROM Cart Supercharger", tag, owner, clock, "a2600_ss", __FILE__),
- m_cassette(*this, "cassette"),
+ : a26_rom_f6_device(mconfig, A26_ROM_SUPERCHARGER, tag, owner, clock),
+ m_cassette(*this, "cassette"),
m_maincpu(nullptr),
m_reg(0),
m_write_delay(0),
@@ -51,7 +51,7 @@ a26_rom_ss_device::a26_rom_ss_device(const machine_config &mconfig, const char *
m_byte_started(0),
m_last_address(0),
m_diff_adjust(0)
- {
+{
}
//-------------------------------------------------
diff --git a/src/devices/bus/vcs/scharger.h b/src/devices/bus/vcs/scharger.h
index d4c8b2d10bc..9aee1ecee2e 100644
--- a/src/devices/bus/vcs/scharger.h
+++ b/src/devices/bus/vcs/scharger.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __VCS_SCHARGER_H
-#define __VCS_SCHARGER_H
+#ifndef MAME_BUS_VCS_SCHARGER_H
+#define MAME_BUS_VCS_SCHARGER_H
+
+#pragma once
#include "rom.h"
#include "imagedev/cassette.h"
@@ -18,17 +20,18 @@ public:
// construction/destruction
a26_rom_ss_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_reset() override;
-
- required_device<cassette_image_device> m_cassette;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
private:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ required_device<cassette_image_device> m_cassette;
+
cpu_device *m_maincpu;
inline uint8_t read_byte(uint32_t offset);
@@ -42,6 +45,6 @@ private:
// device type definition
-extern const device_type A26_ROM_SUPERCHARGER;
+DECLARE_DEVICE_TYPE(A26_ROM_SUPERCHARGER, a26_rom_ss_device)
-#endif
+#endif // MAME_BUS_VCS_SCHARGER_H
diff --git a/src/devices/bus/vcs/vcs_slot.cpp b/src/devices/bus/vcs/vcs_slot.cpp
index f3ab23222d9..ec1c653be2a 100644
--- a/src/devices/bus/vcs/vcs_slot.cpp
+++ b/src/devices/bus/vcs/vcs_slot.cpp
@@ -22,7 +22,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VCS_CART_SLOT = device_creator<vcs_cart_slot_device>;
+DEFINE_DEVICE_TYPE(VCS_CART_SLOT, vcs_cart_slot_device, "vcs_cart_slot", "Atari VCS 2600 Cartridge Slot")
//-------------------------------------------------
@@ -78,9 +78,9 @@ void device_vcs_cart_interface::ram_alloc(uint32_t size)
// vcs_cart_slot_device - constructor
//-------------------------------------------------
vcs_cart_slot_device::vcs_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VCS_CART_SLOT, "Atari VCS 2600 Cartridge Slot", tag, owner, clock, "vcs_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this), m_cart(nullptr), m_type(0)
+ device_t(mconfig, VCS_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this), m_cart(nullptr), m_type(0)
{
}
diff --git a/src/devices/bus/vcs/vcs_slot.h b/src/devices/bus/vcs/vcs_slot.h
index 6ea83683c51..e62dcc2f71b 100755
--- a/src/devices/bus/vcs/vcs_slot.h
+++ b/src/devices/bus/vcs/vcs_slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __VCS_SLOT_H
-#define __VCS_SLOT_H
+#ifndef MAME_BUS_VCS_VCS_SLOT_H
+#define MAME_BUS_VCS_VCS_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -48,19 +50,18 @@ class device_vcs_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_vcs_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_vcs_cart_interface();
// reading from ROM
virtual DECLARE_READ8_MEMBER(read_rom) { return 0xff; }
// writing to RAM chips (sometimes it is in a different range than write_bank!)
- virtual DECLARE_WRITE8_MEMBER(write_ram) {}
+ virtual DECLARE_WRITE8_MEMBER(write_ram) { }
// read/write to bankswitch address
virtual DECLARE_READ8_MEMBER(read_bank) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write_bank) {}
+ virtual DECLARE_WRITE8_MEMBER(write_bank) { }
- virtual void setup_addon_ptr(uint8_t *ptr) {}
+ virtual void setup_addon_ptr(uint8_t *ptr) { }
void rom_alloc(uint32_t size, const char *tag);
void ram_alloc(uint32_t size);
@@ -70,6 +71,8 @@ public:
uint32_t get_ram_size() { return m_ram.size(); }
protected:
+ device_vcs_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -88,9 +91,6 @@ public:
vcs_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~vcs_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override;
@@ -118,6 +118,9 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_ram);
private:
+ // device-level overrides
+ virtual void device_start() override;
+
device_vcs_cart_interface* m_cart;
int m_type;
@@ -155,4 +158,4 @@ extern const device_type VCS_CART_SLOT;
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+#endif // MAME_BUS_VCS_VCS_SLOT_H
diff --git a/src/devices/bus/vcs_ctrl/ctrl.cpp b/src/devices/bus/vcs_ctrl/ctrl.cpp
index f68088de7bf..f25ef4f6545 100644
--- a/src/devices/bus/vcs_ctrl/ctrl.cpp
+++ b/src/devices/bus/vcs_ctrl/ctrl.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITION
//**************************************************************************
-const device_type VCS_CONTROL_PORT = device_creator<vcs_control_port_device>;
+DEFINE_DEVICE_TYPE(VCS_CONTROL_PORT, vcs_control_port_device, "vcs_control_port", "Atari VCS controller port")
@@ -44,7 +44,7 @@ device_vcs_control_port_interface::device_vcs_control_port_interface(const machi
//-------------------------------------------------
vcs_control_port_device::vcs_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VCS_CONTROL_PORT, "Atari VCS control port", tag, owner, clock, "vcs_control_port", __FILE__),
+ device_t(mconfig, VCS_CONTROL_PORT, tag, owner, clock),
device_slot_interface(mconfig, *this), m_device(nullptr),
m_write_trigger(*this)
{
diff --git a/src/devices/bus/vcs_ctrl/ctrl.h b/src/devices/bus/vcs_ctrl/ctrl.h
index 4d0de4e3972..bc018839989 100644
--- a/src/devices/bus/vcs_ctrl/ctrl.h
+++ b/src/devices/bus/vcs_ctrl/ctrl.h
@@ -9,10 +9,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_CVS_CTRL_CTRL_H
+#define MAME_BUS_CVS_CTRL_CTRL_H
-#ifndef __VCS_CONTROL_PORT__
-#define __VCS_CONTROL_PORT__
+#pragma once
@@ -68,10 +68,9 @@ class vcs_control_port_device : public device_t,
public:
// construction/destruction
vcs_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~vcs_control_port_device() { }
// static configuration helpers
- template<class _Object> static devcb_base &set_trigger_wr_callback(device_t &device, _Object object) { return downcast<vcs_control_port_device &>(device).m_write_trigger.set_callback(object); }
+ template <class Object> static devcb_base &set_trigger_wr_callback(device_t &device, Object &&cb) { return downcast<vcs_control_port_device &>(device).m_write_trigger.set_callback(std::forward<Object>(cb)); }
// computer interface
@@ -113,10 +112,8 @@ private:
// device type definition
-extern const device_type VCS_CONTROL_PORT;
+DECLARE_DEVICE_TYPE(VCS_CONTROL_PORT, vcs_control_port_device)
SLOT_INTERFACE_EXTERN( vcs_control_port_devices );
-
-
-#endif
+#endif // MAME_BUS_CVS_CTRL_CTRL_H
diff --git a/src/devices/bus/vcs_ctrl/joybooster.cpp b/src/devices/bus/vcs_ctrl/joybooster.cpp
index 8a731cc0ef1..9ea3b813ac1 100644
--- a/src/devices/bus/vcs_ctrl/joybooster.cpp
+++ b/src/devices/bus/vcs_ctrl/joybooster.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VCS_JOYSTICK_BOOSTER = device_creator<vcs_joystick_booster_device>;
+DEFINE_DEVICE_TYPE(VCS_JOYSTICK_BOOSTER, vcs_joystick_booster_device, "vcs_joystick_booster", "Atari / CBM Digital joystick with Boostergrip")
static INPUT_PORTS_START( vcs_joystick_booster )
@@ -58,7 +58,7 @@ ioport_constructor vcs_joystick_booster_device::device_input_ports() const
//-------------------------------------------------
vcs_joystick_booster_device::vcs_joystick_booster_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VCS_JOYSTICK_BOOSTER, "Atari / CBM Digital joystick with Boostergrip", tag, owner, clock, "vcs_joystick_booster", __FILE__),
+ device_t(mconfig, VCS_JOYSTICK_BOOSTER, tag, owner, clock),
device_vcs_control_port_interface(mconfig, *this),
m_joy(*this, "JOY"),
m_potx(*this, "POTX"),
diff --git a/src/devices/bus/vcs_ctrl/joybooster.h b/src/devices/bus/vcs_ctrl/joybooster.h
index bc5ecbda1c2..8b3cf922a1b 100644
--- a/src/devices/bus/vcs_ctrl/joybooster.h
+++ b/src/devices/bus/vcs_ctrl/joybooster.h
@@ -7,10 +7,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VCS_CTRL_JOYBOOSTER_H
+#define MAME_BUS_VCS_CTRL_JOYBOOSTER_H
-#ifndef __VCS_JOYSTICKBOOSTER__
-#define __VCS_JOYSTICKBOOSTER__
+#pragma once
#include "ctrl.h"
@@ -52,7 +52,6 @@ private:
// device type definition
-extern const device_type VCS_JOYSTICK_BOOSTER;
-
+DECLARE_DEVICE_TYPE(VCS_JOYSTICK_BOOSTER, vcs_joystick_booster_device)
-#endif
+#endif // MAME_BUS_VCS_CTRL_JOYBOOSTER_H
diff --git a/src/devices/bus/vcs_ctrl/joystick.cpp b/src/devices/bus/vcs_ctrl/joystick.cpp
index 87ae2f72aa6..c911f435a0c 100644
--- a/src/devices/bus/vcs_ctrl/joystick.cpp
+++ b/src/devices/bus/vcs_ctrl/joystick.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VCS_JOYSTICK = device_creator<vcs_joystick_device>;
+DEFINE_DEVICE_TYPE(VCS_JOYSTICK, vcs_joystick_device, "vcs_joystick", "Atari / CBM Digital joystick")
static INPUT_PORTS_START( vcs_joystick )
@@ -49,7 +49,7 @@ ioport_constructor vcs_joystick_device::device_input_ports() const
//-------------------------------------------------
vcs_joystick_device::vcs_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VCS_JOYSTICK, "Atari / CBM Digital joystick", tag, owner, clock, "vcs_joystick", __FILE__),
+ device_t(mconfig, VCS_JOYSTICK, tag, owner, clock),
device_vcs_control_port_interface(mconfig, *this),
m_joy(*this, "JOY")
{
diff --git a/src/devices/bus/vcs_ctrl/joystick.h b/src/devices/bus/vcs_ctrl/joystick.h
index 1f7663cd3b5..dcae27d2965 100644
--- a/src/devices/bus/vcs_ctrl/joystick.h
+++ b/src/devices/bus/vcs_ctrl/joystick.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VCS_CTRL_JOYSTICK_H
+#define MAME_BUS_VCS_CTRL_JOYSTICK_H
-#ifndef __VCS_JOYSTICK__
-#define __VCS_JOYSTICK__
+#pragma once
#include "ctrl.h"
@@ -44,7 +44,7 @@ private:
// device type definition
-extern const device_type VCS_JOYSTICK;
+DECLARE_DEVICE_TYPE(VCS_JOYSTICK, vcs_joystick_device)
-#endif
+#endif // MAME_BUS_VCS_CTRL_JOYSTICK_H
diff --git a/src/devices/bus/vcs_ctrl/keypad.cpp b/src/devices/bus/vcs_ctrl/keypad.cpp
index 7c8b0f0104a..97a43253c08 100644
--- a/src/devices/bus/vcs_ctrl/keypad.cpp
+++ b/src/devices/bus/vcs_ctrl/keypad.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VCS_KEYPAD = device_creator<vcs_keypad_device>;
+DEFINE_DEVICE_TYPE(VCS_KEYPAD, vcs_keypad_device, "vcs_keypad", "Atari / CBM Keypad")
static INPUT_PORTS_START( vcs_keypad )
@@ -55,9 +55,10 @@ ioport_constructor vcs_keypad_device::device_input_ports() const
//-------------------------------------------------
vcs_keypad_device::vcs_keypad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VCS_KEYPAD, "Atari / CBM Keypad", tag, owner, clock, "vcs_keypad", __FILE__),
+ device_t(mconfig, VCS_KEYPAD, tag, owner, clock),
device_vcs_control_port_interface(mconfig, *this),
- m_keypad(*this, "KEYPAD"), m_column(0)
+ m_keypad(*this, "KEYPAD"),
+ m_column(0)
{
}
diff --git a/src/devices/bus/vcs_ctrl/keypad.h b/src/devices/bus/vcs_ctrl/keypad.h
index 71ad42999cc..37733cc135c 100644
--- a/src/devices/bus/vcs_ctrl/keypad.h
+++ b/src/devices/bus/vcs_ctrl/keypad.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VCS_CTRL_KEYPAD_H
+#define MAME_BUS_VCS_CTRL_KEYPAD_H
-#ifndef __VCS_KEYPAD__
-#define __VCS_KEYPAD__
+#pragma once
#include "ctrl.h"
@@ -52,7 +52,6 @@ private:
// device type definition
-extern const device_type VCS_KEYPAD;
-
+DECLARE_DEVICE_TYPE(VCS_KEYPAD, vcs_keypad_device)
-#endif
+#endif // MAME_BUS_VCS_CTRL_KEYPAD_H
diff --git a/src/devices/bus/vcs_ctrl/lightpen.cpp b/src/devices/bus/vcs_ctrl/lightpen.cpp
index fe129a9fe5c..6f67d4bd901 100644
--- a/src/devices/bus/vcs_ctrl/lightpen.cpp
+++ b/src/devices/bus/vcs_ctrl/lightpen.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VCS_LIGHTPEN = device_creator<vcs_lightpen_device>;
+DEFINE_DEVICE_TYPE(VCS_LIGHTPEN, vcs_lightpen_device, "vcs_lightpen", "Atari / CBM Light Pen")
INPUT_CHANGED_MEMBER( vcs_lightpen_device::trigger )
@@ -58,7 +58,7 @@ ioport_constructor vcs_lightpen_device::device_input_ports() const
//-------------------------------------------------
vcs_lightpen_device::vcs_lightpen_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VCS_LIGHTPEN, "Atari / CBM Light Pen", tag, owner, clock, "vcs_lightpen", __FILE__),
+ device_t(mconfig, VCS_LIGHTPEN, tag, owner, clock),
device_vcs_control_port_interface(mconfig, *this),
m_joy(*this, "JOY"),
m_lightx(*this, "LIGHTX"),
diff --git a/src/devices/bus/vcs_ctrl/lightpen.h b/src/devices/bus/vcs_ctrl/lightpen.h
index 5c2a132ea4e..f0b2805bdd6 100644
--- a/src/devices/bus/vcs_ctrl/lightpen.h
+++ b/src/devices/bus/vcs_ctrl/lightpen.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VCS_CTRL_LIGHTPEN_H
+#define MAME_BUS_VCS_CTRL_LIGHTPEN_H
-#ifndef __VCS_LIGHTPEN__
-#define __VCS_LIGHTPEN__
+#pragma once
#include "ctrl.h"
@@ -48,7 +48,6 @@ private:
// device type definition
-extern const device_type VCS_LIGHTPEN;
-
+DECLARE_DEVICE_TYPE(VCS_LIGHTPEN, vcs_lightpen_device)
-#endif
+#endif // MAME_BUS_VCS_CTRL_LIGHTPEN_H
diff --git a/src/devices/bus/vcs_ctrl/paddles.cpp b/src/devices/bus/vcs_ctrl/paddles.cpp
index 17ee8c854eb..09e7a0d26a5 100644
--- a/src/devices/bus/vcs_ctrl/paddles.cpp
+++ b/src/devices/bus/vcs_ctrl/paddles.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VCS_PADDLES = device_creator<vcs_paddles_device>;
+DEFINE_DEVICE_TYPE(VCS_PADDLES, vcs_paddles_device, "vcs_paddles", "Atari / CBM Dual paddles")
static INPUT_PORTS_START( vcs_paddles )
@@ -52,7 +52,7 @@ ioport_constructor vcs_paddles_device::device_input_ports() const
//-------------------------------------------------
vcs_paddles_device::vcs_paddles_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VCS_PADDLES, "Atari / CBM Digital paddles", tag, owner, clock, "vcs_paddles", __FILE__),
+ device_t(mconfig, VCS_PADDLES, tag, owner, clock),
device_vcs_control_port_interface(mconfig, *this),
m_joy(*this, "JOY"),
m_potx(*this, "POTX"),
diff --git a/src/devices/bus/vcs_ctrl/paddles.h b/src/devices/bus/vcs_ctrl/paddles.h
index c6b4b2db1ce..e88084066ee 100644
--- a/src/devices/bus/vcs_ctrl/paddles.h
+++ b/src/devices/bus/vcs_ctrl/paddles.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VCS_CTRL_PADDLES_H
+#define MAME_BUS_VCS_CTRL_PADDLES_H
-#ifndef __VCS_PADDLES__
-#define __VCS_PADDLES__
+#pragma once
#include "ctrl.h"
@@ -51,7 +51,6 @@ private:
// device type definition
-extern const device_type VCS_PADDLES;
-
+DECLARE_DEVICE_TYPE(VCS_PADDLES, vcs_paddles_device)
-#endif
+#endif // MAME_BUS_VCS_CTRL_PADDLES_H
diff --git a/src/devices/bus/vcs_ctrl/wheel.cpp b/src/devices/bus/vcs_ctrl/wheel.cpp
index 2bff2cb5698..76e86530cf8 100644
--- a/src/devices/bus/vcs_ctrl/wheel.cpp
+++ b/src/devices/bus/vcs_ctrl/wheel.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VCS_WHEEL = device_creator<vcs_wheel_device>;
+DEFINE_DEVICE_TYPE(VCS_WHEEL, vcs_wheel_device, "vcs_wheel", "Atari / CBM Driving Wheel")
static INPUT_PORTS_START( vcs_wheel )
@@ -48,7 +48,7 @@ ioport_constructor vcs_wheel_device::device_input_ports() const
//-------------------------------------------------
vcs_wheel_device::vcs_wheel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VCS_WHEEL, "Atari / CBM Driving Wheel", tag, owner, clock, "vcs_wheel", __FILE__),
+ device_t(mconfig, VCS_WHEEL, tag, owner, clock),
device_vcs_control_port_interface(mconfig, *this),
m_joy(*this, "JOY"),
m_wheel(*this, "WHEEL")
diff --git a/src/devices/bus/vcs_ctrl/wheel.h b/src/devices/bus/vcs_ctrl/wheel.h
index 91b0c836929..369afe7c614 100644
--- a/src/devices/bus/vcs_ctrl/wheel.h
+++ b/src/devices/bus/vcs_ctrl/wheel.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VCS_CTRL_WHEEL_H
+#define MAME_BUS_VCS_CTRL_WHEEL_H
-#ifndef __VCS_WHEEL__
-#define __VCS_WHEEL__
+#pragma once
#include "ctrl.h"
@@ -45,7 +45,6 @@ private:
// device type definition
-extern const device_type VCS_WHEEL;
-
+DECLARE_DEVICE_TYPE(VCS_WHEEL, vcs_wheel_device)
-#endif
+#endif // MAME_BUS_VCS_CTRL_WHEEL_H
diff --git a/src/devices/bus/vectrex/rom.cpp b/src/devices/bus/vectrex/rom.cpp
index e4f53eb8e1d..54697fe34b3 100644
--- a/src/devices/bus/vectrex/rom.cpp
+++ b/src/devices/bus/vectrex/rom.cpp
@@ -20,30 +20,28 @@
// vectrex_rom_device - constructor
//-------------------------------------------------
-const device_type VECTREX_ROM_STD = device_creator<vectrex_rom_device>;
-const device_type VECTREX_ROM_64K = device_creator<vectrex_rom64k_device>;
-const device_type VECTREX_ROM_SRAM = device_creator<vectrex_sram_device>;
+DEFINE_DEVICE_TYPE(VECTREX_ROM_STD, vectrex_rom_device, "vectrex_rom", "Vectrex Standard Carts")
+DEFINE_DEVICE_TYPE(VECTREX_ROM_64K, vectrex_rom64k_device, "vectrex_64k", "Vectrex Carts w/Bankswitch")
+DEFINE_DEVICE_TYPE(VECTREX_ROM_SRAM, vectrex_sram_device, "vectrex_sram", "Vectrex Carts w/SRAM")
-vectrex_rom_device::vectrex_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_vectrex_cart_interface(mconfig, *this)
+vectrex_rom_device::vectrex_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_vectrex_cart_interface(mconfig, *this)
{
}
vectrex_rom_device::vectrex_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VECTREX_ROM_STD, "Vectrex Standard Carts", tag, owner, clock, "vectrex_rom", __FILE__),
- device_vectrex_cart_interface(mconfig, *this)
+ : vectrex_rom_device(mconfig, VECTREX_ROM_STD, tag, owner, clock)
{
}
vectrex_rom64k_device::vectrex_rom64k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vectrex_rom_device(mconfig, VECTREX_ROM_64K, "Vectrex Carts w/ Bankswitch", tag, owner, clock, "vectrex_64k", __FILE__), m_bank(0)
- {
+ : vectrex_rom_device(mconfig, VECTREX_ROM_64K, tag, owner, clock), m_bank(0)
+{
}
vectrex_sram_device::vectrex_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vectrex_rom_device(mconfig, VECTREX_ROM_SRAM, "Vectrex Carts w/ SRAM", tag, owner, clock, "vectrex_sram", __FILE__)
+ : vectrex_rom_device(mconfig, VECTREX_ROM_SRAM, tag, owner, clock)
{
}
diff --git a/src/devices/bus/vectrex/rom.h b/src/devices/bus/vectrex/rom.h
index 4ef56d8f58d..375db83315c 100644
--- a/src/devices/bus/vectrex/rom.h
+++ b/src/devices/bus/vectrex/rom.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __VECTREX_ROM_H
-#define __VECTREX_ROM_H
+#ifndef MAME_BUS_VECTREX_ROM_H
+#define MAME_BUS_VECTREX_ROM_H
+
+#pragma once
#include "slot.h"
@@ -13,15 +15,17 @@ class vectrex_rom_device : public device_t,
{
public:
// construction/destruction
- vectrex_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
vectrex_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override {}
- virtual void device_reset() override {}
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
+
+protected:
+ vectrex_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override { }
+ virtual void device_reset() override { }
};
// ======================> vectrex_rom64k_device
@@ -32,14 +36,15 @@ public:
// construction/destruction
vectrex_rom64k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_WRITE8_MEMBER(write_bank) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
int m_bank;
};
@@ -59,9 +64,8 @@ public:
// device type definition
-extern const device_type VECTREX_ROM_STD;
-extern const device_type VECTREX_ROM_64K;
-extern const device_type VECTREX_ROM_SRAM;
-
+DECLARE_DEVICE_TYPE(VECTREX_ROM_STD, vectrex_rom_device)
+DECLARE_DEVICE_TYPE(VECTREX_ROM_64K, vectrex_rom64k_device)
+DECLARE_DEVICE_TYPE(VECTREX_ROM_SRAM, vectrex_sram_device)
-#endif
+#endif // MAME_BUS_VECTREX_ROM_H
diff --git a/src/devices/bus/vectrex/slot.cpp b/src/devices/bus/vectrex/slot.cpp
index 60fadce1193..43f39178a49 100644
--- a/src/devices/bus/vectrex/slot.cpp
+++ b/src/devices/bus/vectrex/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VECTREX_CART_SLOT = device_creator<vectrex_cart_slot_device>;
+DEFINE_DEVICE_TYPE(VECTREX_CART_SLOT, vectrex_cart_slot_device, "vectrex_cart_slot", "GCE Vectrex Cartridge Slot")
//**************************************************************************
// Vectrex Cartridges Interface
@@ -63,11 +63,12 @@ void device_vectrex_cart_interface::rom_alloc(uint32_t size, const char *tag)
// vectrex_cart_slot_device - constructor
//-------------------------------------------------
vectrex_cart_slot_device::vectrex_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VECTREX_CART_SLOT, "GCE Vectrex Cartridge Slot", tag, owner, clock, "vectrex_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(VECTREX_STD),
- m_vec3d(VEC3D_NONE), m_cart(nullptr)
+ device_t(mconfig, VECTREX_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(VECTREX_STD),
+ m_vec3d(VEC3D_NONE),
+ m_cart(nullptr)
{
}
diff --git a/src/devices/bus/vectrex/slot.h b/src/devices/bus/vectrex/slot.h
index 22fa385fc60..605e273875f 100644
--- a/src/devices/bus/vectrex/slot.h
+++ b/src/devices/bus/vectrex/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Fabio Priuli
-#ifndef __VECTREX_SLOT_H
-#define __VECTREX_SLOT_H
+#ifndef MAME_BUS_VECTREX_SLOT_H
+#define MAME_BUS_VECTREX_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -34,19 +36,20 @@ class device_vectrex_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_vectrex_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_vectrex_cart_interface();
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write_ram) {}
- virtual DECLARE_WRITE8_MEMBER(write_bank) {}
+ virtual DECLARE_WRITE8_MEMBER(write_ram) { }
+ virtual DECLARE_WRITE8_MEMBER(write_bank) { }
void rom_alloc(uint32_t size, const char *tag);
uint8_t* get_rom_base() { return m_rom; }
uint32_t get_rom_size() { return m_rom_size; }
protected:
+ device_vectrex_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -64,12 +67,9 @@ public:
vectrex_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~vectrex_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
- virtual void call_unload() override {}
+ virtual void call_unload() override { }
virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); }
int get_type() { return m_type; }
@@ -93,6 +93,8 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_bank);
protected:
+ // device-level overrides
+ virtual void device_start() override;
int m_type, m_vec3d;
device_vectrex_cart_interface* m_cart;
@@ -101,7 +103,7 @@ protected:
// device type definition
-extern const device_type VECTREX_CART_SLOT;
+DECLARE_DEVICE_TYPE(VECTREX_CART_SLOT, vectrex_cart_slot_device)
/***************************************************************************
@@ -113,4 +115,5 @@ extern const device_type VECTREX_CART_SLOT;
#define MCFG_VECTREX_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, VECTREX_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+
+#endif // MAME_BUS_VECTREX_SLOT_H
diff --git a/src/devices/bus/vic10/exp.cpp b/src/devices/bus/vic10/exp.cpp
index 75237c2e4b5..c4f7c3daeae 100644
--- a/src/devices/bus/vic10/exp.cpp
+++ b/src/devices/bus/vic10/exp.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC10_EXPANSION_SLOT = device_creator<vic10_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(VIC10_EXPANSION_SLOT, vic10_expansion_slot_device, "vic10_expansion_slot", "VIC-10 expansion port")
@@ -57,13 +57,14 @@ device_vic10_expansion_card_interface::~device_vic10_expansion_card_interface()
//-------------------------------------------------
vic10_expansion_slot_device::vic10_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VIC10_EXPANSION_SLOT, "VIC-10 expansion port", tag, owner, clock, "vic10_expansion_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- device_image_interface(mconfig, *this),
- m_write_irq(*this),
- m_write_res(*this),
- m_write_cnt(*this),
- m_write_sp(*this), m_card(nullptr)
+ device_t(mconfig, VIC10_EXPANSION_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ device_image_interface(mconfig, *this),
+ m_write_irq(*this),
+ m_write_res(*this),
+ m_write_cnt(*this),
+ m_write_sp(*this),
+ m_card(nullptr)
{
}
diff --git a/src/devices/bus/vic10/exp.h b/src/devices/bus/vic10/exp.h
index cf9ac72516b..81135fef1f6 100644
--- a/src/devices/bus/vic10/exp.h
+++ b/src/devices/bus/vic10/exp.h
@@ -31,10 +31,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC10_EXP_H
+#define MAME_BUS_VIC10_EXP_H
-#ifndef __VIC10_EXPANSION_SLOT__
-#define __VIC10_EXPANSION_SLOT__
+#pragma once
#include "softlist_dev.h"
#include "formats/cbm_crt.h"
@@ -94,10 +94,10 @@ public:
// construction/destruction
vic10_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<vic10_expansion_slot_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_res_wr_callback(device_t &device, _Object object) { return downcast<vic10_expansion_slot_device &>(device).m_write_res.set_callback(object); }
- template<class _Object> static devcb_base &set_cnt_wr_callback(device_t &device, _Object object) { return downcast<vic10_expansion_slot_device &>(device).m_write_cnt.set_callback(object); }
- template<class _Object> static devcb_base &set_sp_wr_callback(device_t &device, _Object object) { return downcast<vic10_expansion_slot_device &>(device).m_write_sp.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_res_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_res.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cnt_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_cnt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sp_wr_callback(device_t &device, Object &&cb) { return downcast<vic10_expansion_slot_device &>(device).m_write_sp.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int lorom, int uprom, int exram);
@@ -151,17 +151,18 @@ class device_vic10_expansion_card_interface : public device_slot_card_interface
public:
// construction/destruction
- device_vic10_expansion_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_vic10_expansion_card_interface();
- virtual uint8_t vic10_cd_r(address_space &space, offs_t offset, uint8_t data, int lorom, int uprom, int exram) { return data; };
- virtual void vic10_cd_w(address_space &space, offs_t offset, uint8_t data, int lorom, int uprom, int exram) { };
- virtual int vic10_p0_r() { return 0; };
- virtual void vic10_p0_w(int state) { };
- virtual void vic10_sp_w(int state) { };
- virtual void vic10_cnt_w(int state) { };
+ virtual uint8_t vic10_cd_r(address_space &space, offs_t offset, uint8_t data, int lorom, int uprom, int exram) { return data; }
+ virtual void vic10_cd_w(address_space &space, offs_t offset, uint8_t data, int lorom, int uprom, int exram) { }
+ virtual int vic10_p0_r() { return 0; }
+ virtual void vic10_p0_w(int state) { }
+ virtual void vic10_sp_w(int state) { }
+ virtual void vic10_cnt_w(int state) { }
protected:
+ device_vic10_expansion_card_interface(const machine_config &mconfig, device_t &device);
+
optional_shared_ptr<uint8_t> m_lorom;
optional_shared_ptr<uint8_t> m_exram;
optional_shared_ptr<uint8_t> m_uprom;
@@ -171,11 +172,9 @@ protected:
// device type definition
-extern const device_type VIC10_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(VIC10_EXPANSION_SLOT, vic10_expansion_slot_device)
SLOT_INTERFACE_EXTERN( vic10_expansion_cards );
-
-
-#endif
+#endif // MAME_BUS_VIC10_EXP_H
diff --git a/src/devices/bus/vic10/std.cpp b/src/devices/bus/vic10/std.cpp
index 28d9530494f..0257ea11d98 100644
--- a/src/devices/bus/vic10/std.cpp
+++ b/src/devices/bus/vic10/std.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC10_STD = device_creator<vic10_standard_cartridge_device>;
+DEFINE_DEVICE_TYPE(VIC10_STD, vic10_standard_cartridge_device, "vic10_standard", "VIC-10 Standard Cartridge")
@@ -28,8 +28,7 @@ const device_type VIC10_STD = device_creator<vic10_standard_cartridge_device>;
//-------------------------------------------------
vic10_standard_cartridge_device::vic10_standard_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIC10_STD, "VIC-10 Standard Cartridge", tag, owner, clock, "vic10_standard", __FILE__),
- device_vic10_expansion_card_interface(mconfig, *this)
+ : device_t(mconfig, VIC10_STD, tag, owner, clock), device_vic10_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/vic10/std.h b/src/devices/bus/vic10/std.h
index b95391f8cb5..05480365eb2 100644
--- a/src/devices/bus/vic10/std.h
+++ b/src/devices/bus/vic10/std.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC10_STD_H
+#define MAME_BUS_VIC10_STD_H
-#ifndef __VIC10_STD__
-#define __VIC10_STD__
+#pragma once
#include "exp.h"
@@ -40,7 +40,6 @@ protected:
// device type definition
extern const device_type VIC10_STD;
+DECLARE_DEVICE_TYPE(VIC10_STD, vic10_standard_cartridge_device)
-
-
-#endif
+#endif // MAME_BUS_VIC10_STD_H
diff --git a/src/devices/bus/vic20/4cga.cpp b/src/devices/bus/vic20/4cga.cpp
index ede850ed5be..f806598433a 100644
--- a/src/devices/bus/vic20/4cga.cpp
+++ b/src/devices/bus/vic20/4cga.cpp
@@ -18,7 +18,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64_4CGA = device_creator<c64_4cga_device>;
+DEFINE_DEVICE_TYPE(C64_4CGA, c64_4cga_device, "c64_4cga", "C64 Protovision 4 Player Interface")
static INPUT_PORTS_START( c64_4player )
@@ -60,7 +60,7 @@ ioport_constructor c64_4cga_device::device_input_ports() const
//-------------------------------------------------
c64_4cga_device::c64_4cga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_4CGA, "C64 Protovision 4 Player Interface", tag, owner, clock, "c64_4cga", __FILE__),
+ device_t(mconfig, C64_4CGA, tag, owner, clock),
device_pet_user_port_interface(mconfig, *this),
m_port(0),
m_joy3(0xf),
diff --git a/src/devices/bus/vic20/4cga.h b/src/devices/bus/vic20/4cga.h
index 0e2cee4bec5..b4e1ada9a05 100644
--- a/src/devices/bus/vic20/4cga.h
+++ b/src/devices/bus/vic20/4cga.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_4CGA_H
+#define MAME_BUS_VIC20_4CGA_H
-#ifndef __C64_4CGA__
-#define __C64_4CGA__
+#pragma once
#include "user.h"
@@ -59,7 +59,7 @@ private:
// device type definition
-extern const device_type C64_4CGA;
+DECLARE_DEVICE_TYPE(C64_4CGA, c64_4cga_device)
-#endif
+#endif // MAME_BUS_VIC20_4CGA_H
diff --git a/src/devices/bus/vic20/exp.cpp b/src/devices/bus/vic20/exp.cpp
index 7621310b5c1..535375536be 100644
--- a/src/devices/bus/vic20/exp.cpp
+++ b/src/devices/bus/vic20/exp.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC20_EXPANSION_SLOT = device_creator<vic20_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(VIC20_EXPANSION_SLOT, vic20_expansion_slot_device, "vic20_expansion_slot", "VIC-20 expansion port")
@@ -58,12 +58,13 @@ device_vic20_expansion_card_interface::~device_vic20_expansion_card_interface()
//-------------------------------------------------
vic20_expansion_slot_device::vic20_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VIC20_EXPANSION_SLOT, "VIC-20 expansion port", tag, owner, clock, "vic20_expansion_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- device_image_interface(mconfig, *this),
- m_write_irq(*this),
- m_write_nmi(*this),
- m_write_res(*this), m_card(nullptr)
+ device_t(mconfig, VIC20_EXPANSION_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ device_image_interface(mconfig, *this),
+ m_write_irq(*this),
+ m_write_nmi(*this),
+ m_write_res(*this),
+ m_card(nullptr)
{
}
diff --git a/src/devices/bus/vic20/exp.h b/src/devices/bus/vic20/exp.h
index 10eccc7c6b1..12c958598f0 100644
--- a/src/devices/bus/vic20/exp.h
+++ b/src/devices/bus/vic20/exp.h
@@ -31,10 +31,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_EXP_H
+#define MAME_BUS_VIC20_EXP_H
-#ifndef __VIC20_EXPANSION_SLOT__
-#define __VIC20_EXPANSION_SLOT__
+#pragma once
#include "softlist_dev.h"
@@ -89,9 +89,9 @@ public:
// construction/destruction
vic20_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<vic20_expansion_slot_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<vic20_expansion_slot_device &>(device).m_write_nmi.set_callback(object); }
- template<class _Object> static devcb_base &set_res_wr_callback(device_t &device, _Object object) { return downcast<vic20_expansion_slot_device &>(device).m_write_res.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<vic20_expansion_slot_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<vic20_expansion_slot_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_res_wr_callback(device_t &device, Object &&cb) { return downcast<vic20_expansion_slot_device &>(device).m_write_res.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t cd_r(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3);
@@ -141,13 +141,14 @@ class device_vic20_expansion_card_interface : public device_slot_card_interface
public:
// construction/destruction
- device_vic20_expansion_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_vic20_expansion_card_interface();
virtual uint8_t vic20_cd_r(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3) { return data; };
virtual void vic20_cd_w(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3) { };
protected:
+ device_vic20_expansion_card_interface(const machine_config &mconfig, device_t &device);
+
optional_shared_ptr<uint8_t> m_blk1;
optional_shared_ptr<uint8_t> m_blk2;
optional_shared_ptr<uint8_t> m_blk3;
@@ -160,10 +161,9 @@ protected:
// device type definition
extern const device_type VIC20_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(VIC20_EXPANSION_SLOT, vic20_expansion_slot_device)
SLOT_INTERFACE_EXTERN( vic20_expansion_cards );
-
-
-#endif
+#endif // MAME_BUS_VIC20_EXP_H
diff --git a/src/devices/bus/vic20/fe3.cpp b/src/devices/bus/vic20/fe3.cpp
index dbe03de0183..5b4b78af977 100644
--- a/src/devices/bus/vic20/fe3.cpp
+++ b/src/devices/bus/vic20/fe3.cpp
@@ -56,7 +56,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC20_FE3 = device_creator<vic20_final_expansion_3_t>;
+DEFINE_DEVICE_TYPE(VIC20_FE3, vic20_final_expansion_3_device, "vic20_fe3", "Final Expansion v3")
//-------------------------------------------------
@@ -76,7 +76,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *vic20_final_expansion_3_t::device_rom_region() const
+const tiny_rom_entry *vic20_final_expansion_3_device::device_rom_region() const
{
return ROM_NAME( vic20_fe3 );
}
@@ -96,7 +96,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor vic20_final_expansion_3_t::device_mconfig_additions() const
+machine_config_constructor vic20_final_expansion_3_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( vic20_fe3 );
}
@@ -108,11 +108,11 @@ machine_config_constructor vic20_final_expansion_3_t::device_mconfig_additions()
//**************************************************************************
//-------------------------------------------------
-// vic20_final_expansion_3_t - constructor
+// vic20_final_expansion_3_device - constructor
//-------------------------------------------------
-vic20_final_expansion_3_t::vic20_final_expansion_3_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VIC20_FE3, "Final Expansion v3", tag, owner, clock, "vic20_fe3", __FILE__),
+vic20_final_expansion_3_device::vic20_final_expansion_3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VIC20_FE3, tag, owner, clock),
device_vic20_expansion_card_interface(mconfig, *this),
m_flash_rom(*this, AM29F040_TAG),
m_ram(*this, "sram"), m_reg1(0), m_reg2(0), m_lockbit(0)
@@ -124,7 +124,7 @@ vic20_final_expansion_3_t::vic20_final_expansion_3_t(const machine_config &mconf
// device_start - device-specific startup
//-------------------------------------------------
-void vic20_final_expansion_3_t::device_start()
+void vic20_final_expansion_3_device::device_start()
{
m_ram.allocate(0x80000);
@@ -139,7 +139,7 @@ void vic20_final_expansion_3_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void vic20_final_expansion_3_t::device_reset()
+void vic20_final_expansion_3_device::device_reset()
{
m_reg1 = 0;
m_reg2 = 0;
@@ -150,7 +150,7 @@ void vic20_final_expansion_3_t::device_reset()
// vic20_cd_r - cartridge data read
//-------------------------------------------------
-uint8_t vic20_final_expansion_3_t::vic20_cd_r(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
+uint8_t vic20_final_expansion_3_device::vic20_cd_r(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
{
switch (m_reg1 & REG1_MODE_MASK)
{
@@ -371,7 +371,7 @@ uint8_t vic20_final_expansion_3_t::vic20_cd_r(address_space &space, offs_t offse
// vic20_cd_w - cartridge data write
//-------------------------------------------------
-void vic20_final_expansion_3_t::vic20_cd_w(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
+void vic20_final_expansion_3_device::vic20_cd_w(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
{
switch (m_reg1 & REG1_MODE_MASK)
{
@@ -589,7 +589,7 @@ void vic20_final_expansion_3_t::vic20_cd_w(address_space &space, offs_t offset,
// get_address -
//-------------------------------------------------
-offs_t vic20_final_expansion_3_t::get_address(int bank, int block, offs_t offset)
+offs_t vic20_final_expansion_3_device::get_address(int bank, int block, offs_t offset)
{
block ^= (m_reg2 >> 5) & 0x03;
@@ -601,7 +601,7 @@ offs_t vic20_final_expansion_3_t::get_address(int bank, int block, offs_t offset
// read_register -
//-------------------------------------------------
-uint8_t vic20_final_expansion_3_t::read_register(offs_t offset)
+uint8_t vic20_final_expansion_3_device::read_register(offs_t offset)
{
uint8_t data = 0;
@@ -624,7 +624,7 @@ uint8_t vic20_final_expansion_3_t::read_register(offs_t offset)
// write_register -
//-------------------------------------------------
-void vic20_final_expansion_3_t::write_register(offs_t offset, uint8_t data)
+void vic20_final_expansion_3_device::write_register(offs_t offset, uint8_t data)
{
switch (offset)
{
diff --git a/src/devices/bus/vic20/fe3.h b/src/devices/bus/vic20/fe3.h
index 4e712b257af..24f9b954b87 100644
--- a/src/devices/bus/vic20/fe3.h
+++ b/src/devices/bus/vic20/fe3.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_FE3_H
+#define MAME_BUS_VIC20_FE3_H
-#ifndef __VIC20_FE3__
-#define __VIC20_FE3__
+#pragma once
#include "exp.h"
#include "machine/intelfsh.h"
@@ -20,14 +20,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> vic20_final_expansion_3_t
+// ======================> vic20_final_expansion_3_device
-class vic20_final_expansion_3_t : public device_t,
+class vic20_final_expansion_3_device : public device_t,
public device_vic20_expansion_card_interface
{
public:
// construction/destruction
- vic20_final_expansion_3_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vic20_final_expansion_3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -86,8 +86,6 @@ private:
// device type definition
-extern const device_type VIC20_FE3;
-
-
+DECLARE_DEVICE_TYPE(VIC20_FE3, vic20_final_expansion_3_device)
-#endif
+#endif // MAME_BUS_VIC20_FE3_H
diff --git a/src/devices/bus/vic20/megacart.cpp b/src/devices/bus/vic20/megacart.cpp
index 7186e6b405c..4b592a50714 100644
--- a/src/devices/bus/vic20/megacart.cpp
+++ b/src/devices/bus/vic20/megacart.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC20_MEGACART = device_creator<vic20_megacart_device>;
+DEFINE_DEVICE_TYPE(VIC20_MEGACART, vic20_megacart_device, "vic20_megacart", "VIC-20 Mega-Cart")
//-------------------------------------------------
@@ -48,10 +48,10 @@ machine_config_constructor vic20_megacart_device::device_mconfig_additions() con
//-------------------------------------------------
vic20_megacart_device::vic20_megacart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIC20_MEGACART, "Mega-Cart", tag, owner, clock, "megacart", __FILE__),
- device_vic20_expansion_card_interface(mconfig, *this),
- device_nvram_interface(mconfig, *this),
- m_nvram_en(0)
+ : device_t(mconfig, VIC20_MEGACART, tag, owner, clock)
+ , device_vic20_expansion_card_interface(mconfig, *this)
+ , device_nvram_interface(mconfig, *this)
+ , m_nvram_en(0)
{
}
diff --git a/src/devices/bus/vic20/megacart.h b/src/devices/bus/vic20/megacart.h
index 8a35c468adb..a4de69ea228 100644
--- a/src/devices/bus/vic20/megacart.h
+++ b/src/devices/bus/vic20/megacart.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_MEGACART_H
+#define MAME_BUS_VIC20_MEGACART_H
-#ifndef __VIC20_MEGACART__
-#define __VIC20_MEGACART__
+#pragma once
#include "exp.h"
@@ -52,8 +52,6 @@ private:
// device type definition
-extern const device_type VIC20_MEGACART;
-
-
+DECLARE_DEVICE_TYPE(VIC20_MEGACART, vic20_megacart_device)
-#endif
+#endif // MAME_BUS_VIC20_MEGACART_H
diff --git a/src/devices/bus/vic20/speakeasy.cpp b/src/devices/bus/vic20/speakeasy.cpp
index 102c18bae8f..a5cfb0571d3 100644
--- a/src/devices/bus/vic20/speakeasy.cpp
+++ b/src/devices/bus/vic20/speakeasy.cpp
@@ -26,7 +26,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC20_SPEAKEASY = device_creator<vic20_speakeasy_t>;
+DEFINE_DEVICE_TYPE(VIC20_SPEAKEASY, vic20_speakeasy_device, "vic20_speakeasy", "PPP Speakeasy VIC-20")
//-------------------------------------------------
@@ -46,7 +46,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor vic20_speakeasy_t::device_mconfig_additions() const
+machine_config_constructor vic20_speakeasy_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( speakeasy );
}
@@ -58,11 +58,11 @@ machine_config_constructor vic20_speakeasy_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// vic20_speakeasy_t - constructor
+// vic20_speakeasy_device - constructor
//-------------------------------------------------
-vic20_speakeasy_t::vic20_speakeasy_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VIC20_SPEAKEASY, "Speakeasy VIC20", tag, owner, clock, "speakeasyvic20", __FILE__),
+vic20_speakeasy_device::vic20_speakeasy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VIC20_SPEAKEASY, tag, owner, clock),
device_vic20_expansion_card_interface(mconfig, *this),
m_votrax(*this, SC01A_TAG)
{
@@ -73,7 +73,7 @@ vic20_speakeasy_t::vic20_speakeasy_t(const machine_config &mconfig, const char *
// device_start - device-specific startup
//-------------------------------------------------
-void vic20_speakeasy_t::device_start()
+void vic20_speakeasy_device::device_start()
{
}
@@ -82,7 +82,7 @@ void vic20_speakeasy_t::device_start()
// vic20_cd_r - cartridge data read
//-------------------------------------------------
-uint8_t vic20_speakeasy_t::vic20_cd_r(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
+uint8_t vic20_speakeasy_device::vic20_cd_r(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
{
if (!io2)
{
@@ -97,7 +97,7 @@ uint8_t vic20_speakeasy_t::vic20_cd_r(address_space &space, offs_t offset, uint8
// vic20_cd_w - cartridge data write
//-------------------------------------------------
-void vic20_speakeasy_t::vic20_cd_w(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
+void vic20_speakeasy_device::vic20_cd_w(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
{
if (!io2)
{
diff --git a/src/devices/bus/vic20/speakeasy.h b/src/devices/bus/vic20/speakeasy.h
index 1db2180ecbd..09ccd0f315e 100644
--- a/src/devices/bus/vic20/speakeasy.h
+++ b/src/devices/bus/vic20/speakeasy.h
@@ -7,10 +7,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_SPEAKEASY_H
+#define MAME_BUS_VIC20_SPEAKEASY_H
-#ifndef __VIC20_SPEAKEASY__
-#define __VIC20_SPEAKEASY__
+#pragma once
#include "exp.h"
#include "sound/votrax.h"
@@ -21,14 +21,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> vic20_speakeasy_t
+// ======================> vic20_speakeasy_device
-class vic20_speakeasy_t : public device_t,
+class vic20_speakeasy_device : public device_t,
public device_vic20_expansion_card_interface
{
public:
// construction/destruction
- vic20_speakeasy_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vic20_speakeasy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -47,8 +47,6 @@ private:
// device type definition
-extern const device_type VIC20_SPEAKEASY;
-
-
+DECLARE_DEVICE_TYPE(VIC20_SPEAKEASY, vic20_speakeasy_device)
-#endif
+#endif // MAME_BUS_VIC20_SPEAKEASY_H
diff --git a/src/devices/bus/vic20/std.cpp b/src/devices/bus/vic20/std.cpp
index 26de8b6ef70..7b4823dfcdf 100644
--- a/src/devices/bus/vic20/std.cpp
+++ b/src/devices/bus/vic20/std.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC20_STD = device_creator<vic20_standard_cartridge_device>;
+DEFINE_DEVICE_TYPE(VIC20_STD, vic20_standard_cartridge_device, "vic20_standard", "VIC-20 Standard Cartridge")
@@ -28,8 +28,7 @@ const device_type VIC20_STD = device_creator<vic20_standard_cartridge_device>;
//-------------------------------------------------
vic20_standard_cartridge_device::vic20_standard_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIC20_STD, "VIC-20 Standard Cartridge", tag, owner, clock, "vic20_standard", __FILE__),
- device_vic20_expansion_card_interface(mconfig, *this)
+ : device_t(mconfig, VIC20_STD, tag, owner, clock), device_vic20_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/vic20/std.h b/src/devices/bus/vic20/std.h
index fb006c62093..2362a9c1c4c 100644
--- a/src/devices/bus/vic20/std.h
+++ b/src/devices/bus/vic20/std.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_STD_H
+#define MAME_BUS_VIC20_STD_H
-#ifndef __VIC20_STD__
-#define __VIC20_STD__
+#pragma once
#include "exp.h"
@@ -38,8 +38,6 @@ protected:
// device type definition
-extern const device_type VIC20_STD;
-
-
+DECLARE_DEVICE_TYPE(VIC20_STD, vic20_standard_cartridge_device)
-#endif
+#endif // MAME_BUS_VIC20_STD_H
diff --git a/src/devices/bus/vic20/user.h b/src/devices/bus/vic20/user.h
index 2273a744917..a53fec7124b 100644
--- a/src/devices/bus/vic20/user.h
+++ b/src/devices/bus/vic20/user.h
@@ -21,13 +21,13 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_USER_H
+#define MAME_BUS_VIC20_USER_H
-#ifndef __VIC20_USER_PORT__
-#define __VIC20_USER_PORT__
+#pragma once
#include "bus/pet/user.h"
SLOT_INTERFACE_EXTERN( vic20_user_port_cards );
-#endif
+#endif // MAME_BUS_VIC20_USER_H
diff --git a/src/devices/bus/vic20/vic1010.cpp b/src/devices/bus/vic20/vic1010.cpp
index f2b2ec91219..1cec999f003 100644
--- a/src/devices/bus/vic20/vic1010.cpp
+++ b/src/devices/bus/vic20/vic1010.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC1010 = device_creator<vic1010_device>;
+DEFINE_DEVICE_TYPE(VIC1010, vic1010_device, "vic1010", "VIC-1010 Expansion Module")
//-------------------------------------------------
@@ -53,14 +53,9 @@ machine_config_constructor vic1010_device::device_mconfig_additions() const
//-------------------------------------------------
vic1010_device::vic1010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIC1010, "VIC1010", tag, owner, clock, "vic1010", __FILE__),
- device_vic20_expansion_card_interface(mconfig, *this),
- m_slot1(*this, "slot1"),
- m_slot2(*this, "slot2"),
- m_slot3(*this, "slot3"),
- m_slot4(*this, "slot4"),
- m_slot5(*this, "slot5"),
- m_slot6(*this, "slot6")
+ : device_t(mconfig, VIC1010, tag, owner, clock)
+ , device_vic20_expansion_card_interface(mconfig, *this)
+ , m_expansion_slot(*this, "slot%u", 1)
{
}
@@ -71,13 +66,6 @@ vic1010_device::vic1010_device(const machine_config &mconfig, const char *tag, d
void vic1010_device::device_start()
{
- // find devices
- m_expansion_slot[0] = m_slot1;
- m_expansion_slot[1] = m_slot2;
- m_expansion_slot[2] = m_slot3;
- m_expansion_slot[3] = m_slot4;
- m_expansion_slot[4] = m_slot5;
- m_expansion_slot[5] = m_slot6;
}
diff --git a/src/devices/bus/vic20/vic1010.h b/src/devices/bus/vic20/vic1010.h
index 3c02789b436..77082de99bb 100644
--- a/src/devices/bus/vic20/vic1010.h
+++ b/src/devices/bus/vic20/vic1010.h
@@ -6,24 +6,16 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_VIC1010_H
+#define MAME_BUS_VIC20_VIC1010_H
-#ifndef __VIC1010__
-#define __VIC1010__
+#pragma once
#include "exp.h"
//**************************************************************************
-// MACROS/CONSTANTS
-//**************************************************************************
-
-#define MAX_SLOTS 6
-
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -49,20 +41,13 @@ protected:
virtual void vic20_cd_w(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3) override;
private:
- required_device<vic20_expansion_slot_device> m_slot1;
- required_device<vic20_expansion_slot_device> m_slot2;
- required_device<vic20_expansion_slot_device> m_slot3;
- required_device<vic20_expansion_slot_device> m_slot4;
- required_device<vic20_expansion_slot_device> m_slot5;
- required_device<vic20_expansion_slot_device> m_slot6;
-
- vic20_expansion_slot_device *m_expansion_slot[MAX_SLOTS];
+ static constexpr unsigned MAX_SLOTS = 6;
+
+ required_device_array<vic20_expansion_slot_device, MAX_SLOTS> m_expansion_slot;
};
// device type definition
-extern const device_type VIC1010;
-
-
+DECLARE_DEVICE_TYPE(VIC1010, vic1010_device)
-#endif
+#endif // MAME_BUS_VIC20_VIC1010_H
diff --git a/src/devices/bus/vic20/vic1011.cpp b/src/devices/bus/vic20/vic1011.cpp
index 5187fcdbf3a..8f022af6b57 100644
--- a/src/devices/bus/vic20/vic1011.cpp
+++ b/src/devices/bus/vic20/vic1011.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC1011 = device_creator<vic1011_device>;
+DEFINE_DEVICE_TYPE(VIC1011, vic1011_device, "vic1011", "VIC-1011 RS-232C")
//-------------------------------------------------
@@ -60,9 +60,9 @@ machine_config_constructor vic1011_device::device_mconfig_additions() const
//-------------------------------------------------
vic1011_device::vic1011_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIC1011, "VIC1011", tag, owner, clock, "vic1011", __FILE__),
- device_pet_user_port_interface(mconfig, *this),
- m_rs232(*this, RS232_TAG)
+ : device_t(mconfig, VIC1011, tag, owner, clock)
+ , device_pet_user_port_interface(mconfig, *this)
+ , m_rs232(*this, RS232_TAG)
{
}
diff --git a/src/devices/bus/vic20/vic1011.h b/src/devices/bus/vic20/vic1011.h
index d3362b95d1a..5b76d2780d5 100644
--- a/src/devices/bus/vic20/vic1011.h
+++ b/src/devices/bus/vic20/vic1011.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_VIC1011_H
+#define MAME_BUS_VIC20_VIC1011_H
-#ifndef __VIC1011__
-#define __VIC1011__
+#pragma once
#include "user.h"
#include "bus/rs232/rs232.h"
@@ -54,4 +54,4 @@ extern const device_type VIC1011;
-#endif
+#endif // MAME_BUS_VIC20_VIC1011_H
diff --git a/src/devices/bus/vic20/vic1110.cpp b/src/devices/bus/vic20/vic1110.cpp
index 0d9ec595347..8edd2179bf9 100644
--- a/src/devices/bus/vic20/vic1110.cpp
+++ b/src/devices/bus/vic20/vic1110.cpp
@@ -28,7 +28,7 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC1110 = device_creator<vic1110_device>;
+DEFINE_DEVICE_TYPE(VIC1110, vic1110_device, "vic1110", "VIC-1110 8K RAM Expansion")
@@ -67,10 +67,10 @@ ioport_constructor vic1110_device::device_input_ports() const
//-------------------------------------------------
vic1110_device::vic1110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIC1110, "VIC1110", tag, owner, clock, "vic1110", __FILE__),
- device_vic20_expansion_card_interface(mconfig, *this),
- m_ram(*this, "ram"),
- m_sw(*this, "SW")
+ : device_t(mconfig, VIC1110, tag, owner, clock)
+ , device_vic20_expansion_card_interface(mconfig, *this)
+ , m_ram(*this, "ram")
+ , m_sw(*this, "SW")
{
}
diff --git a/src/devices/bus/vic20/vic1110.h b/src/devices/bus/vic20/vic1110.h
index 66d9cca2b32..05874804600 100644
--- a/src/devices/bus/vic20/vic1110.h
+++ b/src/devices/bus/vic20/vic1110.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_VIC1110_H
+#define MAME_BUS_VIC20_VIC1110_H
-#ifndef __VIC1110__
-#define __VIC1110__
+#pragma once
#include "exp.h"
@@ -47,7 +47,6 @@ private:
// device type definition
extern const device_type VIC1110;
+DECLARE_DEVICE_TYPE(VIC1110, vic1110_device)
-
-
-#endif
+#endif // MAME_BUS_VIC20_VIC1110_H
diff --git a/src/devices/bus/vic20/vic1111.cpp b/src/devices/bus/vic20/vic1111.cpp
index 8d6b0268429..ccfbabccd48 100644
--- a/src/devices/bus/vic20/vic1111.cpp
+++ b/src/devices/bus/vic20/vic1111.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC1111 = device_creator<vic1111_device>;
+DEFINE_DEVICE_TYPE(VIC1111, vic1111_device, "vic1111", "VIC-1111 16K RAM Expansion")
@@ -28,9 +28,9 @@ const device_type VIC1111 = device_creator<vic1111_device>;
//-------------------------------------------------
vic1111_device::vic1111_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIC1111, "VIC1111", tag, owner, clock, "vic1111", __FILE__),
- device_vic20_expansion_card_interface(mconfig, *this),
- m_ram(*this, "ram")
+ : device_t(mconfig, VIC1111, tag, owner, clock)
+ , device_vic20_expansion_card_interface(mconfig, *this)
+ , m_ram(*this, "ram")
{
}
diff --git a/src/devices/bus/vic20/vic1111.h b/src/devices/bus/vic20/vic1111.h
index e3be916a985..21f439534e9 100644
--- a/src/devices/bus/vic20/vic1111.h
+++ b/src/devices/bus/vic20/vic1111.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_VIC1111_H
+#define MAME_BUS_VIC20_VIC1111_H
-#ifndef __VIC1111__
-#define __VIC1111__
+#pragma once
#include "exp.h"
@@ -42,8 +42,6 @@ private:
// device type definition
-extern const device_type VIC1111;
-
-
+DECLARE_DEVICE_TYPE(VIC1111, vic1111_device)
-#endif
+#endif // MAME_BUS_VIC20_VIC1111_H
diff --git a/src/devices/bus/vic20/vic1112.cpp b/src/devices/bus/vic20/vic1112.cpp
index 070da86db75..d8dbb158aae 100644
--- a/src/devices/bus/vic20/vic1112.cpp
+++ b/src/devices/bus/vic20/vic1112.cpp
@@ -24,7 +24,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC1112 = device_creator<vic1112_device>;
+DEFINE_DEVICE_TYPE(VIC1112, vic1112_device, "vic1112", "VIC-1112 IEEE-488 Interface")
WRITE_LINE_MEMBER( vic1112_device::via0_irq_w )
@@ -136,11 +136,12 @@ machine_config_constructor vic1112_device::device_mconfig_additions() const
//-------------------------------------------------
vic1112_device::vic1112_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIC1112, "VIC1112", tag, owner, clock, "vic1112", __FILE__),
- device_vic20_expansion_card_interface(mconfig, *this),
- m_via0(*this, M6522_0_TAG),
- m_via1(*this, M6522_1_TAG),
- m_bus(*this, IEEE488_TAG), m_via0_irq(0), m_via1_irq(0)
+ : device_t(mconfig, VIC1112, tag, owner, clock)
+ , device_vic20_expansion_card_interface(mconfig, *this)
+ , m_via0(*this, M6522_0_TAG)
+ , m_via1(*this, M6522_1_TAG)
+ , m_bus(*this, IEEE488_TAG)
+ , m_via0_irq(0), m_via1_irq(0)
{
}
@@ -176,21 +177,12 @@ uint8_t vic1112_device::vic20_cd_r(address_space &space, offs_t offset, uint8_t
{
if (!io2)
{
- if (offset & 0x10)
- {
- data = m_via1->read(space, offset & 0x0f);
- }
- else
- {
- data = m_via0->read(space, offset & 0x0f);
- }
+ data = (BIT(offset, 4) ? m_via1 : m_via0)->read(space, offset & 0x0f);
}
else if (!blk5)
{
if (offset & 0x1000)
- {
data = m_blk5[offset & 0x17ff];
- }
}
return data;
@@ -205,13 +197,6 @@ void vic1112_device::vic20_cd_w(address_space &space, offs_t offset, uint8_t dat
{
if (!io2)
{
- if (offset & 0x10)
- {
- m_via1->write(space, offset & 0x0f, data);
- }
- else
- {
- m_via0->write(space, offset & 0x0f, data);
- }
+ (BIT(offset, 4) ? m_via1 : m_via0)->write(space, offset & 0x0f, data);
}
}
diff --git a/src/devices/bus/vic20/vic1112.h b/src/devices/bus/vic20/vic1112.h
index fe8cea87b2c..cb6de5bbbed 100644
--- a/src/devices/bus/vic20/vic1112.h
+++ b/src/devices/bus/vic20/vic1112.h
@@ -8,10 +8,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_VIC1112_H
+#define MAME_BUS_VIC20_VIC1112_H
-#ifndef __VIC1112__
-#define __VIC1112__
+#pragma once
#include "exp.h"
#include "bus/ieee488/ieee488.h"
@@ -64,8 +64,6 @@ private:
// device type definition
-extern const device_type VIC1112;
-
-
+DECLARE_DEVICE_TYPE(VIC1112, vic1112_device)
-#endif
+#endif // MAME_BUS_VIC20_VIC1112_H
diff --git a/src/devices/bus/vic20/vic1210.cpp b/src/devices/bus/vic20/vic1210.cpp
index b28cb42aa78..81e5d75cc1d 100644
--- a/src/devices/bus/vic20/vic1210.cpp
+++ b/src/devices/bus/vic20/vic1210.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC1210 = device_creator<vic1210_device>;
+DEFINE_DEVICE_TYPE(VIC1210, vic1210_device, "vic1210", "VIC-1210 3K RAM Expansion")
@@ -29,9 +29,9 @@ const device_type VIC1210 = device_creator<vic1210_device>;
//-------------------------------------------------
vic1210_device::vic1210_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIC1210, "VIC1210", tag, owner, clock, "vic1210", __FILE__),
- device_vic20_expansion_card_interface(mconfig, *this),
- m_ram(*this, "ram")
+ : device_t(mconfig, VIC1210, tag, owner, clock)
+ , device_vic20_expansion_card_interface(mconfig, *this)
+ , m_ram(*this, "ram")
{
}
diff --git a/src/devices/bus/vic20/vic1210.h b/src/devices/bus/vic20/vic1210.h
index 709712b1c31..9fa0ea48a99 100644
--- a/src/devices/bus/vic20/vic1210.h
+++ b/src/devices/bus/vic20/vic1210.h
@@ -7,10 +7,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_VIC1210_H
+#define MAME_BUS_VIC20_VIC1210_H
-#ifndef __VIC1210__
-#define __VIC1210__
+#pragma once
#include "exp.h"
@@ -43,8 +43,6 @@ private:
// device type definition
-extern const device_type VIC1210;
-
-
+DECLARE_DEVICE_TYPE(VIC1210, vic1210_device)
-#endif
+#endif // MAME_BUS_VIC20_VIC1210_H
diff --git a/src/devices/bus/vic20/videopak.cpp b/src/devices/bus/vic20/videopak.cpp
index c117263152e..a7cba165e1d 100644
--- a/src/devices/bus/vic20/videopak.cpp
+++ b/src/devices/bus/vic20/videopak.cpp
@@ -30,7 +30,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIC20_VIDEO_PAK = device_creator<vic20_video_pak_t>;
+DEFINE_DEVICE_TYPE(VIC20_VIDEO_PAK, vic20_video_pak_device, "vic20_videopak", "Data 20 Video Pak")
//-------------------------------------------------
@@ -48,7 +48,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *vic20_video_pak_t::device_rom_region() const
+const tiny_rom_entry *vic20_video_pak_device::device_rom_region() const
{
return ROM_NAME( videopak );
}
@@ -57,7 +57,7 @@ const tiny_rom_entry *vic20_video_pak_t::device_rom_region() const
// mc6845
//-------------------------------------------------
-MC6845_UPDATE_ROW( vic20_video_pak_t::crtc_update_row )
+MC6845_UPDATE_ROW( vic20_video_pak_device::crtc_update_row )
{
const pen_t *pen = m_palette->pens();
@@ -110,7 +110,7 @@ static MACHINE_CONFIG_FRAGMENT( vic20_video_pak )
MCFG_MC6845_ADD(MC6845_TAG, H46505, MC6845_SCREEN_TAG, XTAL_14_31818MHz / 8)
MCFG_MC6845_SHOW_BORDER_AREA(true)
MCFG_MC6845_CHAR_WIDTH(8)
- MCFG_MC6845_UPDATE_ROW_CB(vic20_video_pak_t, crtc_update_row)
+ MCFG_MC6845_UPDATE_ROW_CB(vic20_video_pak_device, crtc_update_row)
MACHINE_CONFIG_END
@@ -119,7 +119,7 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor vic20_video_pak_t::device_mconfig_additions() const
+machine_config_constructor vic20_video_pak_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( vic20_video_pak );
}
@@ -131,11 +131,11 @@ machine_config_constructor vic20_video_pak_t::device_mconfig_additions() const
//**************************************************************************
//-------------------------------------------------
-// vic20_video_pak_t - constructor
+// vic20_video_pak_device - constructor
//-------------------------------------------------
-vic20_video_pak_t::vic20_video_pak_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VIC20_VIDEO_PAK, "Data 20 Video Pak", tag, owner, clock, "videopak", __FILE__),
+vic20_video_pak_device::vic20_video_pak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VIC20_VIDEO_PAK, tag, owner, clock),
device_vic20_expansion_card_interface(mconfig, *this),
m_crtc(*this, MC6845_TAG),
m_palette(*this, "palette"),
@@ -150,7 +150,7 @@ vic20_video_pak_t::vic20_video_pak_t(const machine_config &mconfig, const char *
// device_start - device-specific startup
//-------------------------------------------------
-void vic20_video_pak_t::device_start()
+void vic20_video_pak_device::device_start()
{
// allocate memory
m_videoram.allocate(VIDEORAM_SIZE);
@@ -162,7 +162,7 @@ void vic20_video_pak_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void vic20_video_pak_t::device_reset()
+void vic20_video_pak_device::device_reset()
{
}
@@ -171,7 +171,7 @@ void vic20_video_pak_t::device_reset()
// vic20_cd_r - cartridge data read
//-------------------------------------------------
-uint8_t vic20_video_pak_t::vic20_cd_r(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
+uint8_t vic20_video_pak_device::vic20_cd_r(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
{
if (!m_ram_enable)
{
@@ -246,7 +246,7 @@ uint8_t vic20_video_pak_t::vic20_cd_r(address_space &space, offs_t offset, uint8
// vic20_cd_w - cartridge data write
//-------------------------------------------------
-void vic20_video_pak_t::vic20_cd_w(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
+void vic20_video_pak_device::vic20_cd_w(address_space &space, offs_t offset, uint8_t data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
{
if (!m_ram_enable)
{
diff --git a/src/devices/bus/vic20/videopak.h b/src/devices/bus/vic20/videopak.h
index f11800f0f35..79d0cafe16b 100644
--- a/src/devices/bus/vic20/videopak.h
+++ b/src/devices/bus/vic20/videopak.h
@@ -7,10 +7,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIC20_VIDEOPAK_H
+#define MAME_BUS_VIC20_VIDEOPAK_H
-#ifndef __VIC20_VIDEO_PAK__
-#define __VIC20_VIDEO_PAK__
+#pragma once
#include "exp.h"
@@ -22,14 +22,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> vic20_video_pak_t
+// ======================> vic20_video_pak_device
-class vic20_video_pak_t : public device_t,
+class vic20_video_pak_device : public device_t,
public device_vic20_expansion_card_interface
{
public:
// construction/destruction
- vic20_video_pak_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vic20_video_pak_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -64,7 +64,6 @@ private:
// device type definition
-extern const device_type VIC20_VIDEO_PAK;
-
+DECLARE_DEVICE_TYPE(VIC20_VIDEO_PAK, vic20_video_pak_device)
-#endif
+#endif // MAME_BUS_VIC20_VIDEOPAK_H
diff --git a/src/devices/bus/vidbrain/exp.cpp b/src/devices/bus/vidbrain/exp.cpp
index 298fdec8751..ebd4a541da0 100644
--- a/src/devices/bus/vidbrain/exp.cpp
+++ b/src/devices/bus/vidbrain/exp.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIDEOBRAIN_EXPANSION_SLOT = device_creator<videobrain_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(VIDEOBRAIN_EXPANSION_SLOT, videobrain_expansion_slot_device, "videobrain_expansion_slot", "VideoBrain expansion port")
@@ -88,7 +88,7 @@ uint8_t* device_videobrain_expansion_card_interface::videobrain_ram_pointer(runn
//-------------------------------------------------
videobrain_expansion_slot_device::videobrain_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VIDEOBRAIN_EXPANSION_SLOT, "VideoBrain expansion port", tag, owner, clock, "videobrain_expansion_slot", __FILE__),
+ device_t(mconfig, VIDEOBRAIN_EXPANSION_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
device_image_interface(mconfig, *this),
m_write_extres(*this), m_cart(nullptr)
diff --git a/src/devices/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h
index 8806e18e11c..23ae2108d3e 100644
--- a/src/devices/bus/vidbrain/exp.h
+++ b/src/devices/bus/vidbrain/exp.h
@@ -34,10 +34,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIDBRAIN_EXP_H
+#define MAME_BUS_VIDBRAIN_EXP_H
-#ifndef __VIDEOBRAIN_EXPANSION_SLOT__
-#define __VIDEOBRAIN_EXPANSION_SLOT__
+#pragma once
#include "softlist_dev.h"
@@ -78,18 +78,19 @@ class device_videobrain_expansion_card_interface : public device_slot_card_inter
public:
// construction/destruction
- device_videobrain_expansion_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_videobrain_expansion_card_interface() { }
protected:
+ device_videobrain_expansion_card_interface(const machine_config &mconfig, device_t &device);
+
// initialization
virtual uint8_t* videobrain_rom_pointer(running_machine &machine, size_t size);
virtual uint8_t* videobrain_ram_pointer(running_machine &machine, size_t size);
// runtime
- virtual uint8_t videobrain_bo_r(address_space &space, offs_t offset, int cs1, int cs2) { return 0; };
- virtual void videobrain_bo_w(address_space &space, offs_t offset, uint8_t data, int cs1, int cs2) { };
- virtual void videobrain_extres_w() { };
+ virtual uint8_t videobrain_bo_r(address_space &space, offs_t offset, int cs1, int cs2) { return 0; }
+ virtual void videobrain_bo_w(address_space &space, offs_t offset, uint8_t data, int cs1, int cs2) { }
+ virtual void videobrain_extres_w() { }
videobrain_expansion_slot_device *m_slot;
@@ -110,9 +111,8 @@ class videobrain_expansion_slot_device : public device_t,
public:
// construction/destruction
videobrain_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~videobrain_expansion_slot_device() { }
- template<class _Object> static devcb_base &set_extres_wr_callback(device_t &device, _Object object) { return downcast<videobrain_expansion_slot_device &>(device).m_write_extres.set_callback(object); }
+ template <class Object> static devcb_base &set_extres_wr_callback(device_t &device, Object &&cb) { return downcast<videobrain_expansion_slot_device &>(device).m_write_extres.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t bo_r(address_space &space, offs_t offset, int cs1, int cs2);
@@ -156,11 +156,9 @@ protected:
// device type definition
-extern const device_type VIDEOBRAIN_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(VIDEOBRAIN_EXPANSION_SLOT, videobrain_expansion_slot_device)
SLOT_INTERFACE_EXTERN( vidbrain_expansion_cards );
-
-
-#endif
+#endif // MAME_BUS_VIDBRAIN_EXP_H
diff --git a/src/devices/bus/vidbrain/money_minder.cpp b/src/devices/bus/vidbrain/money_minder.cpp
index eb7e7b2d6c4..81220a499b6 100644
--- a/src/devices/bus/vidbrain/money_minder.cpp
+++ b/src/devices/bus/vidbrain/money_minder.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VB_MONEY_MINDER = device_creator<videobrain_money_minder_cartridge_device>;
+DEFINE_DEVICE_TYPE(VB_MONEY_MINDER, videobrain_money_minder_cartridge_device, "vb_money_minder", "VideoBrain Money Minder cartridge")
@@ -28,7 +28,7 @@ const device_type VB_MONEY_MINDER = device_creator<videobrain_money_minder_cartr
//-------------------------------------------------
videobrain_money_minder_cartridge_device::videobrain_money_minder_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VB_MONEY_MINDER, "VideoBrain Money Minder cartridge", tag, owner, clock, "vb_money_minder", __FILE__),
+ device_t(mconfig, VB_MONEY_MINDER, tag, owner, clock),
device_videobrain_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/vidbrain/money_minder.h b/src/devices/bus/vidbrain/money_minder.h
index c7f435a1d65..20ead06960e 100644
--- a/src/devices/bus/vidbrain/money_minder.h
+++ b/src/devices/bus/vidbrain/money_minder.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIDBRAIN_MONEY_MINDER_H
+#define MAME_BUS_VIDBRAIN_MONEY_MINDER_H
-#ifndef __VIDEOBRAIN_MONEY_MINDER_CARTRIDGE__
-#define __VIDEOBRAIN_MONEY_MINDER_CARTRIDGE__
+#pragma once
#include "exp.h"
@@ -39,7 +39,6 @@ protected:
// device type definition
-extern const device_type VB_MONEY_MINDER;
-
+DECLARE_DEVICE_TYPE(VB_MONEY_MINDER, videobrain_money_minder_cartridge_device)
-#endif
+#endif // MAME_BUS_VIDBRAIN_MONEY_MINDER_H
diff --git a/src/devices/bus/vidbrain/std.cpp b/src/devices/bus/vidbrain/std.cpp
index c8bbf1fbaae..82a6fc2761e 100644
--- a/src/devices/bus/vidbrain/std.cpp
+++ b/src/devices/bus/vidbrain/std.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VB_STD = device_creator<videobrain_standard_cartridge_device>;
+DEFINE_DEVICE_TYPE(VB_STD, videobrain_standard_cartridge_device, "vb_std", "VideoBrain standard cartridge")
@@ -28,7 +28,7 @@ const device_type VB_STD = device_creator<videobrain_standard_cartridge_device>;
//-------------------------------------------------
videobrain_standard_cartridge_device::videobrain_standard_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VB_STD, "VideoBrain standard cartridge", tag, owner, clock, "vb_std", __FILE__),
+ device_t(mconfig, VB_STD, tag, owner, clock),
device_videobrain_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/vidbrain/std.h b/src/devices/bus/vidbrain/std.h
index b54c2acd2d0..2dbbde3231f 100644
--- a/src/devices/bus/vidbrain/std.h
+++ b/src/devices/bus/vidbrain/std.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIDBRAIN_STD_H
+#define MAME_BUS_VIDBRAIN_STD_H
-#ifndef __VIDEOBRAIN_STANDARD_CARTRIDGE__
-#define __VIDEOBRAIN_STANDARD_CARTRIDGE__
+#pragma once
#include "exp.h"
@@ -38,7 +38,6 @@ protected:
// device type definition
-extern const device_type VB_STD;
-
+DECLARE_DEVICE_TYPE(VB_STD, videobrain_standard_cartridge_device)
-#endif
+#endif // MAME_BUS_VIDBRAIN_STD_H
diff --git a/src/devices/bus/vidbrain/timeshare.cpp b/src/devices/bus/vidbrain/timeshare.cpp
index 00b47a194a1..f4997a55ddc 100644
--- a/src/devices/bus/vidbrain/timeshare.cpp
+++ b/src/devices/bus/vidbrain/timeshare.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VB_TIMESHARE = device_creator<videobrain_timeshare_cartridge_device>;
+DEFINE_DEVICE_TYPE(VB_TIMESHARE, videobrain_timeshare_cartridge_device, "vb_timeshare", "VideoBrain Timeshare cartridge")
@@ -28,7 +28,7 @@ const device_type VB_TIMESHARE = device_creator<videobrain_timeshare_cartridge_d
//-------------------------------------------------
videobrain_timeshare_cartridge_device::videobrain_timeshare_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VB_TIMESHARE, "VideoBrain Timeshare cartridge", tag, owner, clock, "vb_timeshare", __FILE__),
+ device_t(mconfig, VB_TIMESHARE, tag, owner, clock),
device_videobrain_expansion_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/vidbrain/timeshare.h b/src/devices/bus/vidbrain/timeshare.h
index 272cd8cdd05..971c5674320 100644
--- a/src/devices/bus/vidbrain/timeshare.h
+++ b/src/devices/bus/vidbrain/timeshare.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIDBRAIN_TIMESHARE_H
+#define MAME_BUS_VIDBRAIN_TIMESHARE_H
-#ifndef __VIDEOBRAIN_TIMESHARE_CARTRIDGE__
-#define __VIDEOBRAIN_TIMESHARE_CARTRIDGE__
+#pragma once
#include "exp.h"
@@ -39,7 +39,6 @@ protected:
// device type definition
-extern const device_type VB_TIMESHARE;
-
+DECLARE_DEVICE_TYPE(VB_TIMESHARE, videobrain_timeshare_cartridge_device)
-#endif
+#endif // MAME_BUS_VIDBRAIN_TIMESHARE_H
diff --git a/src/devices/bus/vip/byteio.cpp b/src/devices/bus/vip/byteio.cpp
index 9e2cb2c7ef1..c44c4825abb 100644
--- a/src/devices/bus/vip/byteio.cpp
+++ b/src/devices/bus/vip/byteio.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VIP_BYTEIO_PORT = device_creator<vip_byteio_port_device>;
+DEFINE_DEVICE_TYPE(VIP_BYTEIO_PORT, vip_byteio_port_device, "vip_byteio_port", "VIP byte I/O port")
@@ -44,9 +44,10 @@ device_vip_byteio_port_interface::device_vip_byteio_port_interface(const machine
//-------------------------------------------------
vip_byteio_port_device::vip_byteio_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VIP_BYTEIO_PORT, "VIP byte I/O port", tag, owner, clock, "vip_byteio_port", __FILE__),
- device_slot_interface(mconfig, *this),
- m_write_inst(*this), m_cart(nullptr)
+ device_t(mconfig, VIP_BYTEIO_PORT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_write_inst(*this),
+ m_cart(nullptr)
{
}
diff --git a/src/devices/bus/vip/byteio.h b/src/devices/bus/vip/byteio.h
index 61ff58682b9..5c0ebc29afd 100644
--- a/src/devices/bus/vip/byteio.h
+++ b/src/devices/bus/vip/byteio.h
@@ -31,11 +31,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __VIP_BYTEIO_PORT__
-#define __VIP_BYTEIO_PORT__
+#ifndef MAME_BUS_VIP_BYTEIO_H
+#define MAME_BUS_VIP_BYTEIO_H
+#pragma once
@@ -102,24 +101,24 @@ protected:
class device_vip_byteio_port_interface : public device_slot_card_interface
{
public:
- // construction/destruction
- device_vip_byteio_port_interface(const machine_config &mconfig, device_t &device);
-
- virtual uint8_t vip_in_r() { return 0xff; };
- virtual void vip_out_w(uint8_t data) { };
+ virtual uint8_t vip_in_r() { return 0xff; }
+ virtual void vip_out_w(uint8_t data) { }
virtual int vip_ef3_r() { return CLEAR_LINE; }
virtual int vip_ef4_r() { return CLEAR_LINE; }
- virtual void vip_q_w(int state) { };
+ virtual void vip_q_w(int state) { }
protected:
+ // construction/destruction
+ device_vip_byteio_port_interface(const machine_config &mconfig, device_t &device);
+
vip_byteio_port_device *m_slot;
};
// device type definition
-extern const device_type VIP_BYTEIO_PORT;
+DECLARE_DEVICE_TYPE(VIP_BYTEIO_PORT, vip_byteio_port_device)
// slot devices
@@ -127,6 +126,4 @@ extern const device_type VIP_BYTEIO_PORT;
SLOT_INTERFACE_EXTERN( vip_byteio_cards );
-
-
-#endif
+#endif // MAME_BUS_VIP_BYTEIO_H
diff --git a/src/devices/bus/vip/exp.cpp b/src/devices/bus/vip/exp.cpp
index f5dc4bdd070..5430dd482ed 100644
--- a/src/devices/bus/vip/exp.cpp
+++ b/src/devices/bus/vip/exp.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VIP_EXPANSION_SLOT = device_creator<vip_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(VIP_EXPANSION_SLOT, vip_expansion_slot_device, "vip_expansion_slot", "VIP expansion port")
@@ -52,7 +52,7 @@ device_vip_expansion_card_interface::device_vip_expansion_card_interface(const m
//-------------------------------------------------
vip_expansion_slot_device::vip_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VIP_EXPANSION_SLOT, "VIP expansion port", tag, owner, clock, "vip_expansion_slot", __FILE__),
+ device_t(mconfig, VIP_EXPANSION_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_write_int(*this),
m_write_dma_out(*this),
diff --git a/src/devices/bus/vip/exp.h b/src/devices/bus/vip/exp.h
index 6c7d18966fb..9e49ad4b98c 100644
--- a/src/devices/bus/vip/exp.h
+++ b/src/devices/bus/vip/exp.h
@@ -31,10 +31,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIP_EXP_H
+#define MAME_BUS_VIP_EXP_H
-#ifndef __VIP_EXPANSION_SLOT__
-#define __VIP_EXPANSION_SLOT__
+#pragma once
@@ -82,9 +82,9 @@ public:
// construction/destruction
vip_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_int_wr_callback(device_t &device, _Object object) { return downcast<vip_expansion_slot_device &>(device).m_write_int.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_out_wr_callback(device_t &device, _Object object) { return downcast<vip_expansion_slot_device &>(device).m_write_dma_out.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_in_wr_callback(device_t &device, _Object object) { return downcast<vip_expansion_slot_device &>(device).m_write_dma_in.set_callback(object); }
+ template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<vip_expansion_slot_device &>(device).m_write_int.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_out_wr_callback(device_t &device, Object &&cb) { return downcast<vip_expansion_slot_device &>(device).m_write_dma_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_in_wr_callback(device_t &device, Object &&cb) { return downcast<vip_expansion_slot_device &>(device).m_write_dma_in.set_callback(std::forward<Object>(cb)); }
// computer interface
uint8_t program_r(address_space &space, offs_t offset, int cs, int cdef, int *minh);
@@ -124,20 +124,19 @@ class device_vip_expansion_card_interface : public device_slot_card_interface
{
friend class vip_expansion_slot_device;
-public:
+protected:
// construction/destruction
device_vip_expansion_card_interface(const machine_config &mconfig, device_t &device);
-protected:
// runtime
- virtual uint8_t vip_program_r(address_space &space, offs_t offset, int cs, int cdef, int *minh) { return 0xff; };
- virtual void vip_program_w(address_space &space, offs_t offset, uint8_t data, int cdef, int *minh) { };
+ virtual uint8_t vip_program_r(address_space &space, offs_t offset, int cs, int cdef, int *minh) { return 0xff; }
+ virtual void vip_program_w(address_space &space, offs_t offset, uint8_t data, int cdef, int *minh) { }
- virtual uint8_t vip_io_r(address_space &space, offs_t offset) { return 0xff; };
- virtual void vip_io_w(address_space &space, offs_t offset, uint8_t data) { };
+ virtual uint8_t vip_io_r(address_space &space, offs_t offset) { return 0xff; }
+ virtual void vip_io_w(address_space &space, offs_t offset, uint8_t data) { }
- virtual uint8_t vip_dma_r(address_space &space, offs_t offset) { return 0xff; };
- virtual void vip_dma_w(address_space &space, offs_t offset, uint8_t data) { };
+ virtual uint8_t vip_dma_r(address_space &space, offs_t offset) { return 0xff; }
+ virtual void vip_dma_w(address_space &space, offs_t offset, uint8_t data) { }
virtual uint32_t vip_screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return 0; }
@@ -145,22 +144,20 @@ protected:
virtual int vip_ef3_r() { return CLEAR_LINE; }
virtual int vip_ef4_r() { return CLEAR_LINE; }
- virtual void vip_sc_w(int data) { };
+ virtual void vip_sc_w(int data) { }
- virtual void vip_q_w(int state) { };
+ virtual void vip_q_w(int state) { }
- virtual void vip_run_w(int state) { };
+ virtual void vip_run_w(int state) { }
vip_expansion_slot_device *m_slot;
};
// device type definition
-extern const device_type VIP_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(VIP_EXPANSION_SLOT, vip_expansion_slot_device)
SLOT_INTERFACE_EXTERN( vip_expansion_cards );
-
-
-#endif
+#endif // MAME_BUS_VIP_EXP_H
diff --git a/src/devices/bus/vip/vp550.cpp b/src/devices/bus/vip/vp550.cpp
index 23e49972909..c5ed565886b 100644
--- a/src/devices/bus/vip/vp550.cpp
+++ b/src/devices/bus/vip/vp550.cpp
@@ -43,7 +43,7 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VP550 = device_creator<vp550_device>;
+DEFINE_DEVICE_TYPE(VP550, vp550_device, "vp550", "VP-550 Super Sound")
//-------------------------------------------------
@@ -82,7 +82,7 @@ machine_config_constructor vp550_device::device_mconfig_additions() const
//-------------------------------------------------
vp550_device::vp550_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VP550, "VP550", tag, owner, clock, "vp550", __FILE__),
+ device_t(mconfig, VP550, tag, owner, clock),
device_vip_expansion_card_interface(mconfig, *this),
m_pfg_a(*this, CDP1863_A_TAG),
m_pfg_b(*this, CDP1863_B_TAG), m_sync_timer(nullptr)
diff --git a/src/devices/bus/vip/vp550.h b/src/devices/bus/vip/vp550.h
index d849e4b1ad1..ecc4b640f04 100644
--- a/src/devices/bus/vip/vp550.h
+++ b/src/devices/bus/vip/vp550.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIP_VP550_H
+#define MAME_BUS_VIP_VP550_H
-#ifndef __VP550__
-#define __VP550__
+#pragma once
#include "exp.h"
#include "sound/cdp1863.h"
@@ -59,7 +59,6 @@ private:
// device type definition
-extern const device_type VP550;
-
+DECLARE_DEVICE_TYPE(VP550, vp550_device)
-#endif
+#endif // MAME_BUS_VIP_VP550_H
diff --git a/src/devices/bus/vip/vp570.cpp b/src/devices/bus/vip/vp570.cpp
index 0aaa2b7f256..e01d427649b 100644
--- a/src/devices/bus/vip/vp570.cpp
+++ b/src/devices/bus/vip/vp570.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VP570 = device_creator<vp570_device>;
+DEFINE_DEVICE_TYPE(VP570, vp570_device, "vp570", "VP-570 4K RAM Expansion")
//-------------------------------------------------
@@ -61,7 +61,7 @@ ioport_constructor vp570_device::device_input_ports() const
//-------------------------------------------------
vp570_device::vp570_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VP570, "VP570", tag, owner, clock, "vp570", __FILE__),
+ device_t(mconfig, VP570, tag, owner, clock),
device_vip_expansion_card_interface(mconfig, *this),
m_ram(*this, "ram"),
m_base(*this, "BASE"),
diff --git a/src/devices/bus/vip/vp570.h b/src/devices/bus/vip/vp570.h
index c08b350fd57..004be88a8bf 100644
--- a/src/devices/bus/vip/vp570.h
+++ b/src/devices/bus/vip/vp570.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIP_VP570_H
+#define MAME_BUS_VIP_VP570_H
-#ifndef __VP570__
-#define __VP570__
+#pragma once
#include "exp.h"
@@ -47,7 +47,7 @@ private:
// device type definition
-extern const device_type VP570;
+DECLARE_DEVICE_TYPE(VP570, vp570_device)
-#endif
+#endif // MAME_BUS_VIP_VP570_H
diff --git a/src/devices/bus/vip/vp575.cpp b/src/devices/bus/vip/vp575.cpp
index 3c498a7ae83..ea542a7123e 100644
--- a/src/devices/bus/vip/vp575.cpp
+++ b/src/devices/bus/vip/vp575.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VP575 = device_creator<vp575_device>;
+DEFINE_DEVICE_TYPE(VP575, vp575_device, "vp575", "VP-575 System Expansion")
//-------------------------------------------------
@@ -94,8 +94,9 @@ machine_config_constructor vp575_device::device_mconfig_additions() const
//-------------------------------------------------
vp575_device::vp575_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VP575, "VP575", tag, owner, clock, "vp575", __FILE__),
- device_vip_expansion_card_interface(mconfig, *this)
+ device_t(mconfig, VP575, tag, owner, clock),
+ device_vip_expansion_card_interface(mconfig, *this),
+ m_expansion_slot(*this, "exp%u", 1)
{
for (int i = 0; i < MAX_SLOTS; i++)
{
@@ -112,12 +113,6 @@ vp575_device::vp575_device(const machine_config &mconfig, const char *tag, devic
void vp575_device::device_start()
{
- // find devices
- m_expansion_slot[0] = dynamic_cast<vip_expansion_slot_device *>(subdevice("exp1"));
- m_expansion_slot[1] = dynamic_cast<vip_expansion_slot_device *>(subdevice("exp2"));
- m_expansion_slot[2] = dynamic_cast<vip_expansion_slot_device *>(subdevice("exp3"));
- m_expansion_slot[3] = dynamic_cast<vip_expansion_slot_device *>(subdevice("exp4"));
- m_expansion_slot[4] = dynamic_cast<vip_expansion_slot_device *>(subdevice("exp5"));
}
diff --git a/src/devices/bus/vip/vp575.h b/src/devices/bus/vip/vp575.h
index 6680cf1600d..915d1d12725 100644
--- a/src/devices/bus/vip/vp575.h
+++ b/src/devices/bus/vip/vp575.h
@@ -6,24 +6,16 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIP_VP575_H
+#define MAME_BUS_VIP_VP575_H
-#ifndef __VP575__
-#define __VP575__
+#pragma once
#include "exp.h"
//**************************************************************************
-// MACROS/CONSTANTS
-//**************************************************************************
-
-#define MAX_SLOTS 5
-
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -80,7 +72,9 @@ protected:
virtual void vip_run_w(int state) override;
private:
- vip_expansion_slot_device *m_expansion_slot[MAX_SLOTS];
+ static constexpr unsigned MAX_SLOTS = 5;
+
+ required_device_array<vip_expansion_slot_device, MAX_SLOTS> m_expansion_slot;
int m_int[MAX_SLOTS];
int m_dma_out[MAX_SLOTS];
@@ -89,7 +83,6 @@ private:
// device type definition
-extern const device_type VP575;
-
+DECLARE_DEVICE_TYPE(VP575, vp575_device)
-#endif
+#endif // MAME_BUS_VIP_VP575_H
diff --git a/src/devices/bus/vip/vp585.cpp b/src/devices/bus/vip/vp585.cpp
index 84f89fba5ef..47a1115097a 100644
--- a/src/devices/bus/vip/vp585.cpp
+++ b/src/devices/bus/vip/vp585.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VP585 = device_creator<vp585_device>;
+DEFINE_DEVICE_TYPE(VP585, vp585_device, "vp585", "VP-585 Keyboard Interface + VP-580 16-key keypad")
//-------------------------------------------------
@@ -81,10 +81,11 @@ ioport_constructor vp585_device::device_input_ports() const
//-------------------------------------------------
vp585_device::vp585_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VP585, "VP585", tag, owner, clock, "vp585", __FILE__),
+ device_t(mconfig, VP585, tag, owner, clock),
device_vip_expansion_card_interface(mconfig, *this),
m_j1(*this, "J1"),
- m_j2(*this, "J2"), m_keylatch(0)
+ m_j2(*this, "J2"),
+ m_keylatch(0)
{
}
diff --git a/src/devices/bus/vip/vp585.h b/src/devices/bus/vip/vp585.h
index 4d00d0ddb99..a3511def5d0 100644
--- a/src/devices/bus/vip/vp585.h
+++ b/src/devices/bus/vip/vp585.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIP_VP585_H
+#define MAME_BUS_VIP_VP585_H
-#ifndef __VP585__
-#define __VP585__
+#pragma once
#include "exp.h"
@@ -49,7 +49,6 @@ private:
// device type definition
-extern const device_type VP585;
-
+DECLARE_DEVICE_TYPE(VP585, vp585_device)
-#endif
+#endif // MAME_BUS_VIP_VP585_H
diff --git a/src/devices/bus/vip/vp590.cpp b/src/devices/bus/vip/vp590.cpp
index 3434c11fee7..fd04837c05e 100644
--- a/src/devices/bus/vip/vp590.cpp
+++ b/src/devices/bus/vip/vp590.cpp
@@ -26,7 +26,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VP590 = device_creator<vp590_device>;
+DEFINE_DEVICE_TYPE(VP590, vp590_device, "vp590", "VP-590 Color Board + VP-580 16-key keypad")
//-------------------------------------------------
@@ -138,12 +138,13 @@ ioport_constructor vp590_device::device_input_ports() const
//-------------------------------------------------
vp590_device::vp590_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VP590, "VP590", tag, owner, clock, "vp590", __FILE__),
+ device_t(mconfig, VP590, tag, owner, clock),
device_vip_expansion_card_interface(mconfig, *this),
m_cgc(*this, CDP1862_TAG),
m_color_ram(*this, "color_ram"),
m_j1(*this, "J1"),
- m_j2(*this, "J2"), m_a12(0), m_color(0), m_keylatch(0)
+ m_j2(*this, "J2"),
+ m_a12(0), m_color(0), m_keylatch(0)
{
}
diff --git a/src/devices/bus/vip/vp590.h b/src/devices/bus/vip/vp590.h
index 418e240110f..9524e81b6e5 100644
--- a/src/devices/bus/vip/vp590.h
+++ b/src/devices/bus/vip/vp590.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIP_VP590_H
+#define MAME_BUS_VIP_VP590_H
-#ifndef __VP590__
-#define __VP590__
+#pragma once
#include "machine/rescap.h"
#include "exp.h"
@@ -64,7 +64,6 @@ private:
// device type definition
-extern const device_type VP590;
-
+DECLARE_DEVICE_TYPE(VP590, vp590_device)
-#endif
+#endif // MAME_BUS_VIP_VP590_H
diff --git a/src/devices/bus/vip/vp595.cpp b/src/devices/bus/vip/vp595.cpp
index 2c99188c79f..2d1b436e378 100644
--- a/src/devices/bus/vip/vp595.cpp
+++ b/src/devices/bus/vip/vp595.cpp
@@ -26,7 +26,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VP595 = device_creator<vp595_device>;
+DEFINE_DEVICE_TYPE(VP595, vp595_device, "vp595", "VP-595 Simple Sound")
//-------------------------------------------------
@@ -62,7 +62,7 @@ machine_config_constructor vp595_device::device_mconfig_additions() const
//-------------------------------------------------
vp595_device::vp595_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VP595, "VP595", tag, owner, clock, "vp595", __FILE__),
+ device_t(mconfig, VP595, tag, owner, clock),
device_vip_expansion_card_interface(mconfig, *this),
m_pfg(*this, CDP1863_TAG)
{
diff --git a/src/devices/bus/vip/vp595.h b/src/devices/bus/vip/vp595.h
index fa810084875..5751a35e6d0 100644
--- a/src/devices/bus/vip/vp595.h
+++ b/src/devices/bus/vip/vp595.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIP_VP595_H
+#define MAME_BUS_VIP_VP595_H
-#ifndef __VP595__
-#define __VP595__
+#pragma once
#include "exp.h"
#include "sound/cdp1863.h"
@@ -46,7 +46,6 @@ private:
// device type definition
-extern const device_type VP595;
-
+DECLARE_DEVICE_TYPE(VP595, vp595_device)
-#endif
+#endif // MAME_BUS_VIP_VP595_H
diff --git a/src/devices/bus/vip/vp620.cpp b/src/devices/bus/vip/vp620.cpp
index b90adb56425..547c535a302 100644
--- a/src/devices/bus/vip/vp620.cpp
+++ b/src/devices/bus/vip/vp620.cpp
@@ -15,14 +15,14 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VP620 = device_creator<vp620_device>;
+DEFINE_DEVICE_TYPE(VP620, vp620_device, "vp620", "VP-620 ASCII Keyboard")
//-------------------------------------------------
// ASCII_KEYBOARD_INTERFACE( kb_intf )
//-------------------------------------------------
-WRITE8_MEMBER( vp620_device::kb_w )
+void vp620_device::kb_w(uint8_t data)
{
m_keydata = data;
@@ -38,7 +38,7 @@ WRITE8_MEMBER( vp620_device::kb_w )
static MACHINE_CONFIG_FRAGMENT( vp620 )
MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(WRITE8(vp620_device, kb_w))
+ MCFG_GENERIC_KEYBOARD_CB(PUT(vp620_device, kb_w))
MACHINE_CONFIG_END
@@ -63,7 +63,7 @@ machine_config_constructor vp620_device::device_mconfig_additions() const
//-------------------------------------------------
vp620_device::vp620_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VP620, "VP620", tag, owner, clock, "vp620", __FILE__),
+ device_t(mconfig, VP620, tag, owner, clock),
device_vip_byteio_port_interface(mconfig, *this),
m_keydata(0),
m_keystb(CLEAR_LINE)
diff --git a/src/devices/bus/vip/vp620.h b/src/devices/bus/vip/vp620.h
index 55bf8ab04f6..4917f5760da 100644
--- a/src/devices/bus/vip/vp620.h
+++ b/src/devices/bus/vip/vp620.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIP_VP620_H
+#define MAME_BUS_VIP_VP620_H
-#ifndef __VP620__
-#define __VP620__
+#pragma once
#include "byteio.h"
#include "machine/keyboard.h"
@@ -33,7 +33,7 @@ public:
virtual machine_config_constructor device_mconfig_additions() const override;
// not really public
- DECLARE_WRITE8_MEMBER( kb_w );
+ void kb_w(uint8_t data);
protected:
// device-level overrides
@@ -50,7 +50,6 @@ private:
// device type definition
-extern const device_type VP620;
-
+DECLARE_DEVICE_TYPE(VP620, vp620_device)
-#endif
+#endif // MAME_BUS_VIP_VP620_H
diff --git a/src/devices/bus/vip/vp700.cpp b/src/devices/bus/vip/vp700.cpp
index 80e4085b458..4b7dbab2839 100644
--- a/src/devices/bus/vip/vp700.cpp
+++ b/src/devices/bus/vip/vp700.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type VP700 = device_creator<vp700_device>;
+DEFINE_DEVICE_TYPE(VP700, vp700_device, "vp700", "VP-700 Expanded Tiny BASIC")
//-------------------------------------------------
@@ -47,7 +47,7 @@ const tiny_rom_entry *vp700_device::device_rom_region() const
//-------------------------------------------------
vp700_device::vp700_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VP700, "VP700", tag, owner, clock, "vp700", __FILE__),
+ device_t(mconfig, VP700, tag, owner, clock),
device_vip_expansion_card_interface(mconfig, *this),
m_rom(*this, "vp700")
{
diff --git a/src/devices/bus/vip/vp700.h b/src/devices/bus/vip/vp700.h
index 88e5a99967c..16e7cd2f78e 100644
--- a/src/devices/bus/vip/vp700.h
+++ b/src/devices/bus/vip/vp700.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_VIP_VP700_H
+#define MAME_BUS_VIP_VP700_H
-#ifndef __VP700__
-#define __VP700__
+#pragma once
#include "exp.h"
#include "sound/cdp1863.h"
@@ -45,7 +45,6 @@ private:
// device type definition
-extern const device_type VP700;
-
+DECLARE_DEVICE_TYPE(VP700, vp700_device)
-#endif
+#endif // MAME_BUS_VIP_VP700_H
diff --git a/src/devices/bus/vme/vme.cpp b/src/devices/bus/vme/vme.cpp
index c4245ebc0a5..d397d45789f 100644
--- a/src/devices/bus/vme/vme.cpp
+++ b/src/devices/bus/vme/vme.cpp
@@ -76,17 +76,15 @@
#define LOG_GENERAL 0x01
#define LOG_SETUP 0x02
-#define LOG_PRINTF 0x04
-#define VERBOSE 0 // (LOG_PRINTF | LOG_SETUP | LOG_GENERAL)
+//#define VERBOSE (LOG_SETUP | LOG_GENERAL)
-#define LOGMASK(mask, ...) do { if (VERBOSE & mask) logerror(__VA_ARGS__); } while (0)
-#define LOGLEVEL(mask, level, ...) do { if ((VERBOSE & mask) >= level) logerror(__VA_ARGS__); } while (0)
+#define LOG_OUTPUT_FUNC printf // logerror is not available here
-#define LOG(...) LOGMASK(LOG_GENERAL, __VA_ARGS__)
-#define LOGSETUP(...) LOGMASK(LOG_SETUP, __VA_ARGS__)
+#include "logmacro.h"
-#define logerror printf // logerror is not available here
+#define LOG(...) LOGMASKED(LOG_GENERAL, __VA_ARGS__)
+#define LOGSETUP(...) LOGMASKED(LOG_SETUP, __VA_ARGS__)
#ifdef _MSC_VER
#define FUNCNAME __func__
@@ -98,27 +96,22 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VME_SLOT = device_creator<vme_slot_device>;
+DEFINE_DEVICE_TYPE(VME_SLOT, vme_slot_device, "vme_slot", "VME slot")
//-------------------------------------------------
// vme_slot_device - constructor
//-------------------------------------------------
-vme_slot_device::vme_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VME_SLOT, "VME_SLOT", tag, owner, clock, "vme_slot", __FILE__)
- ,device_slot_interface(mconfig, *this)
- ,m_vme_tag(nullptr)
- ,m_vme_slottag(nullptr)
- ,m_vme_j1_callback(*this)
+vme_slot_device::vme_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : vme_slot_device(mconfig, VME_SLOT, tag, owner, clock)
{
- LOG("%s %s\n", tag, FUNCNAME);
}
-vme_slot_device::vme_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_slot_interface(mconfig, *this)
- ,m_vme_tag(nullptr)
- ,m_vme_slottag(nullptr)
- ,m_vme_j1_callback(*this)
+vme_slot_device::vme_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_slot_interface(mconfig, *this)
+ , m_vme_tag(nullptr)
+ , m_vme_slottag(nullptr)
+ , m_vme_j1_callback(*this)
{
LOG("%s %s\n", tag, FUNCNAME);
}
@@ -210,7 +203,7 @@ SLOT_INTERFACE_END
// VME device P1
//
-const device_type VME = device_creator<vme_device>;
+DEFINE_DEVICE_TYPE(VME, vme_device, "vme", "VME bus")
// static_set_cputag - used to be able to lookup the CPU owning this VME bus
void vme_device::static_set_cputag(device_t &device, const char *tag)
@@ -230,18 +223,13 @@ void vme_device::static_use_owner_spaces(device_t &device)
vme.m_allocspaces = false;
}
-vme_device::vme_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VME, "VME", tag, owner, clock, "vme", __FILE__)
- , device_memory_interface(mconfig, *this)
- , m_a32_config("VME A32", ENDIANNESS_BIG, 32, 32, 0, nullptr)
- , m_allocspaces(true)
- , m_cputag("maincpu")
+vme_device::vme_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : vme_device(mconfig, VME, tag, owner, clock)
{
- LOG("%s %s\n", tag, FUNCNAME);
}
-vme_device::vme_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+vme_device::vme_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_memory_interface(mconfig, *this)
, m_a32_config("VME A32", ENDIANNESS_BIG, 32, 32, 0, nullptr)
, m_allocspaces(true)
diff --git a/src/devices/bus/vme/vme.h b/src/devices/bus/vme/vme.h
index 16e7c52aaaa..ed4bd7efd5f 100644
--- a/src/devices/bus/vme/vme.h
+++ b/src/devices/bus/vme/vme.h
@@ -45,8 +45,8 @@
*/
-#ifndef VME_H_
-#define VME_H_
+#ifndef MAME_BUS_VME_VME_H
+#define MAME_BUS_VME_VME_H
#pragma once
@@ -91,30 +91,30 @@ public:
// construction/destruction
vme_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ template <class Object> static devcb_base &static_set_vme_j1_callback(device_t &device, Object &&cb) { return downcast<vme_slot_device &>(device).m_vme_j1_callback.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &static_set_vme_j1_callback(device_t &device, _Object object) { return downcast<vme_slot_device &>(device).m_vme_j1_callback.set_callback(object); }
+ static void static_set_vme_slot(device_t &device, const char *tag, const char *slottag);
+ static void static_update_vme_chains(device_t &device, uint32_t slot_nbr);
+
+ virtual DECLARE_READ8_MEMBER(read8);
+ virtual DECLARE_WRITE8_MEMBER(write8);
+
+protected:
+ vme_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
virtual void device_config_complete() override;
- static void static_set_vme_slot(device_t &device, const char *tag, const char *slottag);
- static void static_update_vme_chains(device_t &device, uint32_t slot_nbr);
-
// configuration
const char *m_vme_tag, *m_vme_slottag;
- virtual DECLARE_READ8_MEMBER(read8);
- virtual DECLARE_WRITE8_MEMBER(write8);
-
// callbacks
devcb_write_line m_vme_j1_callback;
device_vme_card_interface *m_card;
-private:
};
-extern const device_type VME;
+DECLARE_DEVICE_TYPE(VME, vme_device)
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -136,7 +136,6 @@ class vme_device : public device_t,
{
public:
vme_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
~vme_device();
// inline configuration
@@ -197,6 +196,8 @@ public:
void install_device(vme_amod_t amod, offs_t start, offs_t end, read32_delegate rhandler, write32_delegate whandler, uint32_t mask);
protected:
+ vme_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -217,25 +218,32 @@ protected:
// device type definition
-extern const device_type VME_SLOT;
+DECLARE_DEVICE_TYPE(VME_SLOT, vme_slot_device)
class device_vme_card_interface : public device_slot_card_interface
{
+ template <class ElementType> friend class simple_list;
public:
+ // inline configuration
+ static void static_set_vme_tag(device_t &device, const char *tag, const char *slottag);
+
// construction/destruction
- device_vme_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_vme_card_interface();
void set_vme_device();
virtual DECLARE_READ8_MEMBER(read8);
virtual DECLARE_WRITE8_MEMBER(write8);
+
+ device_vme_card_interface(const machine_config &mconfig, device_t &device);
+
+protected:
device_t *m_device;
- // inline configuration
- static void static_set_vme_tag(device_t &device, const char *tag, const char *slottag);
vme_device *m_vme;
const char *m_vme_tag, *m_vme_slottag;
int m_slot;
+
+private:
device_vme_card_interface *m_next;
};
@@ -250,4 +258,4 @@ public:
#define MCFG_VME_SLOT_REMOVE(_tag) \
MCFG_DEVICE_REMOVE(_tag)
-#endif /* VME_H_ */
+#endif // MAME_BUS_VME_VME_H
diff --git a/src/devices/bus/vme/vme_fccpu20.cpp b/src/devices/bus/vme/vme_fccpu20.cpp
index b5384d31e5c..d2076caefc1 100644
--- a/src/devices/bus/vme/vme_fccpu20.cpp
+++ b/src/devices/bus/vme/vme_fccpu20.cpp
@@ -183,13 +183,14 @@
* - VME bus arbiter as MAME always gets the bus
****************************************************************************/
#include "emu.h"
+#include "vme_fccpu20.h"
+
#include "cpu/m68000/m68000.h"
#include "bus/rs232/rs232.h"
#include "machine/68230pit.h"
#include "machine/68153bim.h"
#include "machine/68561mpcc.h"
#include "machine/clock.h"
-#include "vme_fccpu20.h"
//#define LOG_GENERAL (1U << 0)
#define LOG_SETUP (1U << 1)
@@ -213,13 +214,13 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VME_FCCPU20 = device_creator<vme_fccpu20_card_device>;
-const device_type VME_FCCPU21S = device_creator<vme_fccpu21s_card_device>;
-const device_type VME_FCCPU21 = device_creator<vme_fccpu21_card_device>;
-const device_type VME_FCCPU21A = device_creator<vme_fccpu21a_card_device>;
-const device_type VME_FCCPU21YA = device_creator<vme_fccpu21ya_card_device>;
-const device_type VME_FCCPU21B = device_creator<vme_fccpu21b_card_device>;
-const device_type VME_FCCPU21YB = device_creator<vme_fccpu21yb_card_device>;
+DEFINE_DEVICE_TYPE(VME_FCCPU20, vme_fccpu20_card_device, "fccpu20", "Force Computer SYS68K/CPU-20 CPU Board")
+DEFINE_DEVICE_TYPE(VME_FCCPU21S, vme_fccpu21s_card_device, "fccpu21s", "Force Computer SYS68K/CPU-21S CPU Board")
+DEFINE_DEVICE_TYPE(VME_FCCPU21, vme_fccpu21_card_device, "fccpu21", "Force Computer SYS68K/CPU-21 CPU Board")
+DEFINE_DEVICE_TYPE(VME_FCCPU21A, vme_fccpu21a_card_device, "fccpu21a", "Force Computer SYS68K/CPU-21A CPU Board")
+DEFINE_DEVICE_TYPE(VME_FCCPU21YA, vme_fccpu21ya_card_device, "fccpu21ya", "Force Computer SYS68K/CPU-21YA CPU Board")
+DEFINE_DEVICE_TYPE(VME_FCCPU21B, vme_fccpu21b_card_device, "fccpu21b", "Force Computer SYS68K/CPU-21B CPU Board")
+DEFINE_DEVICE_TYPE(VME_FCCPU21YB, vme_fccpu21yb_card_device, "fccpu21yb", "Force Computer SYS68K/CPU-21YB CPU Board")
#define CLOCK50 XTAL_50MHz /* HCJ */
#define CLOCK40 XTAL_40MHz /* HCJ */
@@ -364,8 +365,8 @@ machine_config_constructor vme_fccpu20_device::device_mconfig_additions() const
//**************************************************************************
// Base Device
//**************************************************************************
-vme_fccpu20_device::vme_fccpu20_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, fc_board_t board_id) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+vme_fccpu20_device::vme_fccpu20_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, fc_board_t board_id) :
+ device_t(mconfig, type, tag, owner, clock)
, device_vme_card_interface(mconfig, *this)
, m_maincpu (*this, "maincpu")
, m_pit (*this, "pit")
@@ -382,46 +383,46 @@ vme_fccpu20_device::vme_fccpu20_device(const machine_config &mconfig, device_typ
// Card Devices
//**************************************************************************
vme_fccpu20_card_device::vme_fccpu20_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vme_fccpu20_card_device( mconfig, VME_FCCPU20, "Force Computer SYS68K/CPU-20 CPU Board", tag, owner, clock, "fccpu20", __FILE__)
+ : vme_fccpu20_card_device(mconfig, VME_FCCPU20, tag, owner, clock)
{
LOG("%s %s\n", tag, FUNCNAME);
}
vme_fccpu21s_card_device::vme_fccpu21s_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vme_fccpu21s_card_device( mconfig, VME_FCCPU21S, "Force Computer SYS68K/CPU-21S CPU Board", tag, owner, clock, "fccpu21s", __FILE__)
+ : vme_fccpu21s_card_device(mconfig, VME_FCCPU21S, tag, owner, clock)
{
LOG("%s %s\n", tag, FUNCNAME);
}
vme_fccpu21_card_device::vme_fccpu21_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vme_fccpu21_card_device( mconfig, VME_FCCPU21, "Force Computer SYS68K/CPU-21 CPU Board", tag, owner, clock, "fccpu21", __FILE__)
+ : vme_fccpu21_card_device(mconfig, VME_FCCPU21, tag, owner, clock)
{
LOG("%s %s\n", tag, FUNCNAME);
}
vme_fccpu21a_card_device::vme_fccpu21a_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vme_fccpu21a_card_device( mconfig, VME_FCCPU21A, "Force Computer SYS68K/CPU-21A CPU Board", tag, owner, clock, "fccpu21a", __FILE__)
+ : vme_fccpu21a_card_device(mconfig, VME_FCCPU21A, tag, owner, clock)
{
LOG("%s %s\n", tag, FUNCNAME);
}
// TODO: Change to 2MB on board RAM and move FLME memory and find/verify memory map
vme_fccpu21ya_card_device::vme_fccpu21ya_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vme_fccpu21ya_card_device( mconfig, VME_FCCPU21YA, "Force Computer SYS68K/CPU-21YA CPU Board", tag, owner, clock, "fccpu21ya", __FILE__)
+ : vme_fccpu21ya_card_device(mconfig, VME_FCCPU21YA, tag, owner, clock)
{
LOG("%s %s\n", tag, FUNCNAME);
}
vme_fccpu21b_card_device::vme_fccpu21b_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vme_fccpu21b_card_device( mconfig, VME_FCCPU21B, "Force Computer SYS68K/CPU-21B CPU Board", tag, owner, clock, "fccpu21b", __FILE__)
+ : vme_fccpu21b_card_device(mconfig, VME_FCCPU21B, tag, owner, clock)
{
LOG("%s %s\n", tag, FUNCNAME);
}
// TODO: Change to 2MB on board RAM and move FLME memory and find/verify memory map
vme_fccpu21yb_card_device::vme_fccpu21yb_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vme_fccpu21yb_card_device( mconfig, VME_FCCPU21YB, "Force Computer SYS68K/CPU-21YB CPU Board", tag, owner, clock, "fccpu21yb", __FILE__)
+ : vme_fccpu21yb_card_device(mconfig, VME_FCCPU21YB, tag, owner, clock)
{
LOG("%s %s\n", tag, FUNCNAME);
}
diff --git a/src/devices/bus/vme/vme_fccpu20.h b/src/devices/bus/vme/vme_fccpu20.h
index fe92435a5a6..8bc9cbb2c4b 100644
--- a/src/devices/bus/vme/vme_fccpu20.h
+++ b/src/devices/bus/vme/vme_fccpu20.h
@@ -1,37 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edstrom
-#ifndef VME_FCCPU20_H
-#define VME_FCCPU20_H
-#pragma once
+#ifndef MAME_BUS_VME_VME_FCCPU20_H
+#define MAME_BUS_VME_VME_FCCPU20_H
+#pragma once
+#include "bus/vme/vme.h"
#include "machine/68561mpcc.h"
#include "machine/68230pit.h"
#include "machine/68153bim.h"
-#include "bus/vme/vme.h"
-extern const device_type VME_FCCPU20;
-extern const device_type VME_FCCPU21S;
-extern const device_type VME_FCCPU21;
-extern const device_type VME_FCCPU21A;
-extern const device_type VME_FCCPU21YA;
-extern const device_type VME_FCCPU21B;
-extern const device_type VME_FCCPU21YB;
-
-// PIT port C Board ID bits
-#define CPU20 0x40
-#define CPU21 0x00
-
-/* Board types */
-enum fc_board_t {
- cpu20,
- cpu21,
- cpu21a,
- cpu21ya,
- cpu21b,
- cpu21yb,
- cpu21s
-};
+DECLARE_DEVICE_TYPE(VME_FCCPU20, vme_fccpu20_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21S, vme_fccpu21s_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21, vme_fccpu21_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21A, vme_fccpu21a_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21YA, vme_fccpu21ya_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21B, vme_fccpu21b_card_device)
+DECLARE_DEVICE_TYPE(VME_FCCPU21YB, vme_fccpu21yb_card_device)
//**************************************************************************
// Base Device declaration
@@ -39,26 +24,48 @@ enum fc_board_t {
class vme_fccpu20_device : public device_t, public device_vme_card_interface
{
public:
- vme_fccpu20_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, fc_board_t board_id);
-
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
- virtual void device_start() override;
// Below are duplicated declarations from src/mame/drivers/fccpu20.cpp
DECLARE_READ32_MEMBER (bootvect_r);
DECLARE_WRITE32_MEMBER (bootvect_w);
DECLARE_WRITE_LINE_MEMBER(bim_irq_callback);
- uint8_t bim_irq_state;
- int bim_irq_level;
/* PIT callbacks */
DECLARE_READ8_MEMBER (pita_r);
DECLARE_READ8_MEMBER (pitb_r);
DECLARE_READ8_MEMBER (pitc_r);
+protected:
+ // PIT port C Board ID bits
+ static constexpr unsigned CPU20 = 0x40;
+ static constexpr unsigned CPU21 = 0x00;
+
+ /* Board types */
+ enum fc_board_t {
+ cpu20,
+ cpu21,
+ cpu21a,
+ cpu21ya,
+ cpu21b,
+ cpu21yb,
+ cpu21s
+ };
+
+ vme_fccpu20_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, fc_board_t board_id);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ uint8_t bim_irq_state;
+ int bim_irq_level;
+
+ emu_timer *m_arbiter_start; // Need a startup delay because it is hooked up to the sense inputs of the PIT
+
private:
required_device<cpu_device> m_maincpu;
required_device<pit68230_device> m_pit;
@@ -71,13 +78,7 @@ private:
uint32_t *m_sysrom;
uint32_t m_sysram[2];
void update_irq_to_maincpu();
- fc_board_t m_board_id;
-
- // Below replaces machine_start and machine_reset from src/mame/drivers/fccpu20.cpp
-protected:
- virtual void device_reset() override;
- virtual void device_timer (emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- emu_timer *m_arbiter_start; // Need a startup delay because it is hooked up to the sense inputs of the PIT
+ const fc_board_t m_board_id;
};
//**************************************************************************
@@ -88,57 +89,78 @@ class vme_fccpu20_card_device : public vme_fccpu20_device
{
public :
vme_fccpu20_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu20_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu20) { }
+
+protected:
+ vme_fccpu20_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu20)
+ { }
};
class vme_fccpu21s_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21s_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21s_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21s) { }
+
+protected:
+ vme_fccpu21s_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21s)
+ { }
};
class vme_fccpu21_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21) { }
+
+protected:
+ vme_fccpu21_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21)
+ { }
};
class vme_fccpu21a_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21a_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21a_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21a) { }
+
+protected:
+ vme_fccpu21a_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21a)
+ { }
};
class vme_fccpu21ya_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21ya_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21ya_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21ya) { }
+
+protected:
+ vme_fccpu21ya_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21ya)
+ { }
};
class vme_fccpu21b_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21b_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21b_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21b) { }
+
+protected:
+ vme_fccpu21b_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21b)
+ { }
};
class vme_fccpu21yb_card_device : public vme_fccpu20_device
{
public :
vme_fccpu21yb_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_fccpu21yb_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vme_fccpu20_device( mconfig, type, name, tag, owner, clock, shortname, source, cpu21yb) { }
+
+protected:
+ vme_fccpu21yb_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fccpu20_device(mconfig, type, tag, owner, clock, cpu21yb)
+ { }
};
-#endif // VME_FCCPU20_H
+#endif // MAME_BUS_VME_VME_FCCPU20_H
diff --git a/src/devices/bus/vme/vme_fcisio.cpp b/src/devices/bus/vme/vme_fcisio.cpp
index 647d88ed5db..0c386c31e87 100644
--- a/src/devices/bus/vme/vme_fcisio.cpp
+++ b/src/devices/bus/vme/vme_fcisio.cpp
@@ -124,16 +124,15 @@
* PIT and DUSCCs are hooked up to the BIM to get further.
*
****************************************************************************/
-#define TODO "VME side hookup of 68153 BIM device needed\n"
-
#include "emu.h"
+#include "vme_fcisio.h"
+
#include "cpu/m68000/m68000.h"
#include "machine/scnxx562.h"
#include "machine/68230pit.h"
#include "machine/68153bim.h"
#include "bus/rs232/rs232.h"
#include "machine/clock.h"
-#include "vme_fcisio.h"
//#define LOG_GENERAL (1U << 0)
#define LOG_SETUP (1U << 1)
@@ -151,11 +150,13 @@
#define FUNCNAME __PRETTY_FUNCTION__
#endif
+#define TODO "VME side hookup of 68153 BIM device needed\n"
+
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VME_FCISIO1 = device_creator<vme_fcisio1_card_device>;
+DEFINE_DEVICE_TYPE(VME_FCISIO1, vme_fcisio1_card_device, "fcisio1", "Force Computer SYS68K/ISIO-1/2 Intelligent Serial I/O Board")
#define CPU_CLOCK XTAL_20MHz /* HCJ */
#define DUSCC_CLOCK XTAL_14_7456MHz /* HCJ */
@@ -384,32 +385,23 @@ const tiny_rom_entry *vme_fcisio1_card_device::device_rom_region() const
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
-vme_fcisio1_card_device::vme_fcisio1_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source)
- ,device_vme_card_interface(mconfig, *this)
- ,m_maincpu (*this, "maincpu")
- ,m_duscc0(*this, "duscc0")
- ,m_duscc1(*this, "duscc1")
- ,m_duscc2(*this, "duscc2")
- ,m_duscc3(*this, "duscc3")
- ,m_pit (*this, "pit")
- ,m_bim (*this, "bim")
+vme_fcisio1_card_device::vme_fcisio1_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_vme_card_interface(mconfig, *this)
+ , m_maincpu (*this, "maincpu")
+ , m_duscc0(*this, "duscc0")
+ , m_duscc1(*this, "duscc1")
+ , m_duscc2(*this, "duscc2")
+ , m_duscc3(*this, "duscc3")
+ , m_pit (*this, "pit")
+ , m_bim (*this, "bim")
{
LOG("%s\n", FUNCNAME);
}
-vme_fcisio1_card_device::vme_fcisio1_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VME_FCISIO1, "Force Computer SYS68K/ISIO-1/2 Intelligent Serial I/O Board", tag, owner, clock, "fcisio1", __FILE__)
- ,device_vme_card_interface(mconfig, *this)
- ,m_maincpu(*this, "maincpu")
- ,m_duscc0(*this, "duscc0")
- ,m_duscc1(*this, "duscc1")
- ,m_duscc2(*this, "duscc2")
- ,m_duscc3(*this, "duscc3")
- ,m_pit (*this, "pit")
- ,m_bim (*this, "bim")
+vme_fcisio1_card_device::vme_fcisio1_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fcisio1_card_device(mconfig, VME_FCISIO1, tag, owner, clock)
{
- LOG("%s %s\n", tag, FUNCNAME);
}
/* Start it up */
diff --git a/src/devices/bus/vme/vme_fcisio.h b/src/devices/bus/vme/vme_fcisio.h
index fc668cc276a..93e682ed8d1 100644
--- a/src/devices/bus/vme/vme_fcisio.h
+++ b/src/devices/bus/vme/vme_fcisio.h
@@ -1,7 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edstrom
-#ifndef VME_FCISIO_H
-#define VME_FCISIO_H
+#ifndef MAME_BUS_VME_VME_FCISIO_H
+#define MAME_BUS_VME_VME_FCISIO_H
+
#pragma once
#include "machine/scnxx562.h"
@@ -9,14 +10,11 @@
#include "machine/68153bim.h"
#include "bus/vme/vme.h"
-extern const device_type VME_FCISIO1;
+DECLARE_DEVICE_TYPE(VME_FCISIO1, vme_fcisio1_card_device)
-class vme_fcisio1_card_device :
- public device_t
- ,public device_vme_card_interface
+class vme_fcisio1_card_device : public device_t, public device_vme_card_interface
{
public:
- vme_fcisio1_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
vme_fcisio1_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -31,6 +29,8 @@ public:
DECLARE_WRITE8_MEMBER (not_implemented_w);
protected:
+ vme_fcisio1_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -48,4 +48,4 @@ private:
uint16_t *m_sysrom;
};
-#endif // VME_FCISIO_H
+#endif // MAME_BUS_VME_VME_FCISIO_H
diff --git a/src/devices/bus/vme/vme_fcscsi.cpp b/src/devices/bus/vme/vme_fcscsi.cpp
index 3d1be933dff..b476ff2efe3 100644
--- a/src/devices/bus/vme/vme_fcscsi.cpp
+++ b/src/devices/bus/vme/vme_fcscsi.cpp
@@ -142,16 +142,15 @@
* - Let a controller CPU board (eg CPU-1 or CPU-30) boot from floppy or SCSI disk
*
****************************************************************************/
-#define TODO "Driver for SCSI NCR5386s device needed\n"
-
#include "emu.h"
+#include "vme_fcscsi.h"
+
#include "cpu/m68000/m68000.h"
#include "machine/68230pit.h"
#include "machine/wd_fdc.h"
#include "machine/hd63450.h" // compatible with MC68450
#include "machine/clock.h"
#include "formats/pc_dsk.h"
-#include "vme_fcscsi.h"
#define LOG_GENERAL 0x01
#define LOG_SETUP 0x02
@@ -175,11 +174,13 @@
#define FUNCNAME __PRETTY_FUNCTION__
#endif
+#define TODO "Driver for SCSI NCR5386s device needed\n"
+
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VME_FCSCSI1 = device_creator<vme_fcscsi1_card_device>;
+DEFINE_DEVICE_TYPE(VME_FCSCSI1, vme_fcscsi1_card_device, "fcscsi1", "Force Computer SYS68K/ISCSI-1 Intelligent Mass Storage Controller Board")
#define CPU_CRYSTAL XTAL_20MHz /* Jauch */
#define PIT_CRYSTAL XTAL_16MHz /* Jauch */
@@ -194,7 +195,7 @@ static ADDRESS_MAP_START (fcscsi1_mem, AS_PROGRAM, 16, vme_fcscsi1_card_device)
// AM_RANGE (0xc40000, 0xc4001f) AM_DEVREADWRITE8("scsi", ncr5386_device, read, write, 0x00ff) /* SCSI Controller interface - device support not yet available*/
AM_RANGE (0xc40000, 0xc4001f) AM_READWRITE8 (scsi_r, scsi_w, 0x00ff)
AM_RANGE (0xc80000, 0xc800ff) AM_DEVREADWRITE("mc68450", hd63450_device, read, write) /* DMA Controller interface */
- AM_RANGE (0xcc0000, 0xcc0007) AM_DEVREADWRITE8("fdc", wd1772_t, read, write, 0x00ff) /* Floppy Controller interface */
+ AM_RANGE (0xcc0000, 0xcc0007) AM_DEVREADWRITE8("fdc", wd1772_device, read, write, 0x00ff) /* Floppy Controller interface */
AM_RANGE (0xcc0008, 0xcc0009) AM_READWRITE8 (tcr_r, tcr_w, 0x00ff) /* The Control Register, SCSI ID and FD drive select bits */
ADDRESS_MAP_END
@@ -274,28 +275,21 @@ const tiny_rom_entry *vme_fcscsi1_card_device::device_rom_region() const
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
-vme_fcscsi1_card_device::vme_fcscsi1_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source)
- ,device_vme_card_interface(mconfig, *this)
- ,m_maincpu (*this, "maincpu")
- ,m_fdc (*this, "fdc")
- ,m_pit (*this, "pit")
- ,m_dmac(*this, "mc68450")
- ,m_tcr (0)
+vme_fcscsi1_card_device::vme_fcscsi1_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_vme_card_interface(mconfig, *this)
+ , m_maincpu(*this, "maincpu")
+ , m_fdc(*this, "fdc")
+ , m_pit(*this, "pit")
+ , m_dmac(*this, "mc68450")
+ , m_tcr(0)
{
LOG("%s\n", FUNCNAME);
}
-vme_fcscsi1_card_device::vme_fcscsi1_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VME_FCSCSI1, "Force Computer SYS68K/ISCSI-1 Intelligent Mass Storage Controller Board", tag, owner, clock, "fcscsi1", __FILE__)
- ,device_vme_card_interface(mconfig, *this)
- ,m_maincpu(*this, "maincpu")
- ,m_fdc(*this, "fdc")
- ,m_pit(*this, "pit")
- ,m_dmac(*this, "mc68450")
- ,m_tcr(0)
+vme_fcscsi1_card_device::vme_fcscsi1_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : vme_fcscsi1_card_device(mconfig, VME_FCSCSI1, tag, owner, clock)
{
- LOG("%s\n", FUNCNAME);
}
/* Start it up */
diff --git a/src/devices/bus/vme/vme_fcscsi.h b/src/devices/bus/vme/vme_fcscsi.h
index 91b65a91552..c25a3edd431 100644
--- a/src/devices/bus/vme/vme_fcscsi.h
+++ b/src/devices/bus/vme/vme_fcscsi.h
@@ -1,7 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edstrom
-#ifndef VME_FCSCSI_H
-#define VME_FCSCSI_H
+#ifndef MAME_BUS_VME_VME_FCSCSI_H
+#define MAME_BUS_VME_VME_FCSCSI_H
+
#pragma once
#include "machine/68230pit.h"
@@ -16,7 +17,6 @@ class vme_fcscsi1_card_device :
,public device_vme_card_interface
{
public:
- vme_fcscsi1_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
vme_fcscsi1_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
@@ -41,25 +41,27 @@ public:
DECLARE_FLOPPY_FORMATS(floppy_formats);
/* Dummy driver routines */
- DECLARE_READ8_MEMBER (not_implemented_r);
- DECLARE_WRITE8_MEMBER (not_implemented_w);
-
- DECLARE_READ8_MEMBER (scsi_r);
- DECLARE_WRITE8_MEMBER (scsi_w);
-
- uint8_t fdc_irq_state;
- uint8_t dmac_irq_state;
- int dmac_irq_vector;
+ DECLARE_READ8_MEMBER(not_implemented_r);
+ DECLARE_WRITE8_MEMBER(not_implemented_w);
- void update_irq_to_maincpu();
+ DECLARE_READ8_MEMBER(scsi_r);
+ DECLARE_WRITE8_MEMBER(scsi_w);
protected:
+ vme_fcscsi1_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
+ void update_irq_to_maincpu();
+
+ uint8_t fdc_irq_state;
+ uint8_t dmac_irq_state;
+ int dmac_irq_vector;
+
private:
required_device<cpu_device> m_maincpu;
- required_device<wd1772_t> m_fdc;
+ required_device<wd1772_device> m_fdc;
required_device<pit68230_device> m_pit;
required_device<hd63450_device> m_dmac;
@@ -69,5 +71,4 @@ private:
uint16_t *m_sysrom;
};
-#endif // VME_FCSCSI_H
-
+#endif // MAME_BUS_VME_VME_FCSCSI_H
diff --git a/src/devices/bus/vme/vme_mvme350.cpp b/src/devices/bus/vme/vme_mvme350.cpp
index d2fc6d07836..b353eceb215 100644
--- a/src/devices/bus/vme/vme_mvme350.cpp
+++ b/src/devices/bus/vme/vme_mvme350.cpp
@@ -128,9 +128,10 @@
****************************************************************************/
#include "emu.h"
+#include "vme_mvme350.h"
+
#include "cpu/m68000/m68000.h"
#include "machine/68230pit.h"
-#include "vme_mvme350.h"
#define LOG_GENERAL 0x01
#define LOG_SETUP 0x02
@@ -158,7 +159,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VME_MVME350 = device_creator<vme_mvme350_card_device>;
+DEFINE_DEVICE_TYPE(VME_MVME350, vme_mvme350_card_device, "mvme350", "Motorola MVME-350 Intelligent Tape Controller")
#define MVME350_CPU_TAG "mvme350_cpu"
#define MVME350_ROM "mvme350_rom"
@@ -212,16 +213,15 @@ const tiny_rom_entry *vme_mvme350_card_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-vme_mvme350_card_device::vme_mvme350_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_vme_card_interface(mconfig, *this)
+vme_mvme350_card_device::vme_mvme350_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_vme_card_interface(mconfig, *this)
{
LOG("%s %s\n", tag, FUNCNAME);
}
vme_mvme350_card_device::vme_mvme350_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VME_MVME350, "Motorola MVME-350 Intelligent Tape Controller", tag, owner, clock, "mvme350", __FILE__),
- device_vme_card_interface(mconfig, *this)
+ vme_mvme350_card_device(mconfig, VME_MVME350, tag, owner, clock)
{
LOG("%s %s\n", tag, FUNCNAME);
}
diff --git a/src/devices/bus/vme/vme_mvme350.h b/src/devices/bus/vme/vme_mvme350.h
index 54aecc1ec82..75f58762318 100644
--- a/src/devices/bus/vme/vme_mvme350.h
+++ b/src/devices/bus/vme/vme_mvme350.h
@@ -1,20 +1,18 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edstrom
-#ifndef VME_MVME350_H
-#define VME_MVME350_H
+#ifndef MAME_BUS_VME_VME_MVME350_H
+#define MAME_BUS_VME_VME_MVME350_H
+
#pragma once
#include "bus/vme/vme.h"
-extern const device_type VME_MVME350;
+DECLARE_DEVICE_TYPE(VME_MVME350, vme_mvme350_card_device)
-class vme_mvme350_card_device :
- public device_t
- ,public device_vme_card_interface
+class vme_mvme350_card_device : public device_t, public device_vme_card_interface
{
public:
vme_mvme350_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_mvme350_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -23,10 +21,12 @@ public:
// Shared memory methods to be exported to the VME bus
// virtual DECLARE_READ16_MEMBER (read16) override;
// virtual DECLARE_WRITE16_MEMBER (write16) override;
+
protected:
+ vme_mvme350_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
-private:
};
-#endif // VME_MVME350_H
+#endif // MAME_BUS_VME_VME_MVME350_H
diff --git a/src/devices/bus/vme/vme_mzr8105.cpp b/src/devices/bus/vme/vme_mzr8105.cpp
index 24eac1dfc9d..23a60feaa17 100644
--- a/src/devices/bus/vme/vme_mzr8105.cpp
+++ b/src/devices/bus/vme/vme_mzr8105.cpp
@@ -30,7 +30,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VME_MZR8105 = device_creator<vme_mzr8105_card_device>;
+DEFINE_DEVICE_TYPE(VME_MZR8105, vme_mzr8105_card_device, "mzr8105", "Mizar 8105 68K CPU board")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -46,15 +46,14 @@ machine_config_constructor vme_mzr8105_card_device::device_mconfig_additions() c
}
vme_mzr8105_card_device::vme_mzr8105_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VME_MZR8105, "Mizar 8105 68K CPU board", tag, owner, clock, "mzr8105", __FILE__),
- device_vme_card_interface(mconfig, *this)
+ vme_mzr8105_card_device(mconfig, VME_MZR8105, tag, owner, clock)
{
m_slot = 1;
LOG("%s %s\n", tag, FUNCNAME);
}
-vme_mzr8105_card_device::vme_mzr8105_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+vme_mzr8105_card_device::vme_mzr8105_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_vme_card_interface(mconfig, *this)
{
LOG("%s %s\n", tag, FUNCNAME);
diff --git a/src/devices/bus/vme/vme_mzr8105.h b/src/devices/bus/vme/vme_mzr8105.h
index 525cf691408..0378f19b727 100644
--- a/src/devices/bus/vme/vme_mzr8105.h
+++ b/src/devices/bus/vme/vme_mzr8105.h
@@ -1,24 +1,27 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edstrom
-#ifndef VME_MZR8105_H
-#define VME_MZR8105_H
+#ifndef MAME_BUS_VME_VME_MZR8105_H
+#define MAME_BUS_VME_VME_MZR8105_H
+
#pragma once
#include "bus/vme/vme.h"
-extern const device_type VME_MZR8105;
+DECLARE_DEVICE_TYPE(VME_MZR8105, vme_mzr8105_card_device)
-class vme_mzr8105_card_device : public device_t
- ,public device_vme_card_interface
+class vme_mzr8105_card_device : public device_t, public device_vme_card_interface
{
public:
vme_mzr8105_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_mzr8105_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
-private:
+
+protected:
+ vme_mzr8105_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
};
-#endif // VME_MZR8105_H
+#endif // MAME_BUS_VME_VME_MZR8105_H
diff --git a/src/devices/bus/vme/vme_mzr8300.cpp b/src/devices/bus/vme/vme_mzr8300.cpp
index a9d85736661..571422a1ea6 100644
--- a/src/devices/bus/vme/vme_mzr8300.cpp
+++ b/src/devices/bus/vme/vme_mzr8300.cpp
@@ -83,6 +83,7 @@
#include "emu.h"
#include "vme_mzr8300.h"
+
#include "machine/z80sio.h"
#include "bus/rs232/rs232.h"
#include "machine/clock.h"
@@ -113,7 +114,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type VME_MZR8300 = device_creator<vme_mzr8300_card_device>;
+DEFINE_DEVICE_TYPE(VME_MZR8300, vme_mzr8300_card_device, "mzr8300", "Mizar 8300 SIO serial board")
/* These values are borrowed just to get the terminal going and should be replaced
* once a proper serial board hardware (ie MZ 8300) is found and emulated. */
@@ -128,8 +129,8 @@ MACHINE_CONFIG_FRAGMENT( mzr8300 )
MCFG_Z80SIO_OUT_RTSB_CB(DEVWRITELINE("rs232p1", rs232_port_device, write_rts))
MCFG_RS232_PORT_ADD ("rs232p1", default_rs232_devices, "terminal")
- MCFG_RS232_RXD_HANDLER (DEVWRITELINE ("sio0", upd7201N_device, rxb_w))
- MCFG_RS232_CTS_HANDLER (DEVWRITELINE ("sio0", upd7201N_device, ctsb_w))
+ MCFG_RS232_RXD_HANDLER (DEVWRITELINE ("sio0", upd7201_new_device, rxb_w))
+ MCFG_RS232_CTS_HANDLER (DEVWRITELINE ("sio0", upd7201_new_device, ctsb_w))
MCFG_Z80SIO_ADD("sio1", XTAL_4MHz, 0, 0, 0, 0 )
MACHINE_CONFIG_END
@@ -150,18 +151,16 @@ machine_config_constructor vme_mzr8300_card_device::device_mconfig_additions() c
// LIVE DEVICE
//**************************************************************************
-vme_mzr8300_card_device::vme_mzr8300_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_vme_card_interface(mconfig, *this)
+vme_mzr8300_card_device::vme_mzr8300_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ device_vme_card_interface(mconfig, *this)
{
LOG("%s %s\n", tag, FUNCNAME);
}
vme_mzr8300_card_device::vme_mzr8300_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VME_MZR8300, "Mizar 8300 SIO serial board", tag, owner, clock, "mzr8300", __FILE__),
- device_vme_card_interface(mconfig, *this)
+ vme_mzr8300_card_device(mconfig, VME_MZR8300, tag, owner, clock)
{
- LOG("%s %s\n", tag, FUNCNAME);
}
void vme_mzr8300_card_device::device_start()
diff --git a/src/devices/bus/vme/vme_mzr8300.h b/src/devices/bus/vme/vme_mzr8300.h
index b7145037073..cce6c9da7a5 100644
--- a/src/devices/bus/vme/vme_mzr8300.h
+++ b/src/devices/bus/vme/vme_mzr8300.h
@@ -1,30 +1,30 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edstrom
-#ifndef VME_MZR8300_H
-#define VME_MZR8300_H
+#ifndef MAME_BUS_VME_VME_MZR8300_H
+#define MAME_BUS_VME_VME_MZR8300_H
+
#pragma once
#include "bus/vme/vme.h"
extern const device_type VME_MZR8300;
-class vme_mzr8300_card_device :
- public device_t
- ,public device_vme_card_interface
+class vme_mzr8300_card_device : public device_t, public device_vme_card_interface
{
public:
vme_mzr8300_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- vme_mzr8300_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
// virtual DECLARE_READ8_MEMBER (read8) override;
// virtual DECLARE_WRITE8_MEMBER (write8) override;
+
protected:
+ vme_mzr8300_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
-private:
};
-#endif // VME_MZR8300_H
+#endif // MAME_BUS_VME_VME_MZR8300_H
diff --git a/src/devices/bus/vtech/ioexp/carts.cpp b/src/devices/bus/vtech/ioexp/carts.cpp
index d9ddb4cb9ec..ae579ba23e5 100644
--- a/src/devices/bus/vtech/ioexp/carts.cpp
+++ b/src/devices/bus/vtech/ioexp/carts.cpp
@@ -9,7 +9,11 @@
#include "emu.h"
#include "carts.h"
-SLOT_INTERFACE_START( ioexp_slot_carts )
- SLOT_INTERFACE("joystick", JOYSTICK_INTERFACE)
- SLOT_INTERFACE("printer", PRINTER_INTERFACE)
+#include "joystick.h"
+#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
diff --git a/src/devices/bus/vtech/ioexp/carts.h b/src/devices/bus/vtech/ioexp/carts.h
index 6bdd27b2ee8..a6195747389 100644
--- a/src/devices/bus/vtech/ioexp/carts.h
+++ b/src/devices/bus/vtech/ioexp/carts.h
@@ -6,15 +6,12 @@
***************************************************************************/
-#pragma once
-
-#ifndef __VTECH_IOEXP_CARTS_H__
-#define __VTECH_IOEXP_CARTS_H__
+#ifndef MAME_BUS_VTECH_IOEXP_CARTS_H
+#define MAME_BUS_VTECH_IOEXP_CARTS_H
+#pragma once
-#include "joystick.h"
-#include "printer.h"
-SLOT_INTERFACE_EXTERN( ioexp_slot_carts );
+SLOT_INTERFACE_EXTERN( vtech_ioexp_slot_carts );
-#endif // __VTECH_IOEXP_CARTS_H__
+#endif // MAME_BUS_VTECH_IOEXP_CARTS_H
diff --git a/src/devices/bus/vtech/ioexp/ioexp.cpp b/src/devices/bus/vtech/ioexp/ioexp.cpp
index 178b35137ab..c2916a0ba14 100644
--- a/src/devices/bus/vtech/ioexp/ioexp.cpp
+++ b/src/devices/bus/vtech/ioexp/ioexp.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type IOEXP_SLOT = device_creator<ioexp_slot_device>;
+DEFINE_DEVICE_TYPE(VTECH_IOEXP_SLOT, vtech_ioexp_slot_device, "vtech_ioexp_slot", "Laser/VZ I/O Expansion Slot")
//**************************************************************************
@@ -24,11 +24,11 @@ const device_type IOEXP_SLOT = device_creator<ioexp_slot_device>;
//**************************************************************************
//-------------------------------------------------
-// ioexp_slot_device - constructor
+// vtech_ioexp_slot_device - constructor
//-------------------------------------------------
-ioexp_slot_device::ioexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, IOEXP_SLOT, "Peripheral Expansion Slot", tag, owner, clock, "ioexp_slot", __FILE__),
+vtech_ioexp_slot_device::vtech_ioexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_IOEXP_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_io(nullptr),
m_cart(nullptr)
@@ -36,10 +36,10 @@ ioexp_slot_device::ioexp_slot_device(const machine_config &mconfig, const char *
}
//-------------------------------------------------
-// ioexp_slot_device - destructor
+// vtech_ioexp_slot_device - destructor
//-------------------------------------------------
-ioexp_slot_device::~ioexp_slot_device()
+vtech_ioexp_slot_device::~vtech_ioexp_slot_device()
{
}
@@ -47,7 +47,7 @@ ioexp_slot_device::~ioexp_slot_device()
// device_start - device-specific startup
//-------------------------------------------------
-void ioexp_slot_device::device_start()
+void vtech_ioexp_slot_device::device_start()
{
}
@@ -55,7 +55,7 @@ void ioexp_slot_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void ioexp_slot_device::device_reset()
+void vtech_ioexp_slot_device::device_reset()
{
}
@@ -63,7 +63,7 @@ void ioexp_slot_device::device_reset()
// set_io_space - set address space we are attached to
//-------------------------------------------------
-void ioexp_slot_device::set_io_space(address_space *io)
+void vtech_ioexp_slot_device::set_io_space(address_space *io)
{
m_io = io;
}
@@ -74,19 +74,19 @@ void ioexp_slot_device::set_io_space(address_space *io)
//**************************************************************************
//-------------------------------------------------
-// device_ioexp_interface - constructor
+// device_vtech_ioexp_interface - constructor
//-------------------------------------------------
-device_ioexp_interface::device_ioexp_interface(const machine_config &mconfig, device_t &device) :
+device_vtech_ioexp_interface::device_vtech_ioexp_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device)
{
- m_slot = dynamic_cast<ioexp_slot_device *>(device.owner());
+ m_slot = dynamic_cast<vtech_ioexp_slot_device *>(device.owner());
}
//-------------------------------------------------
-// ~device_ioexp_interface - destructor
+// ~device_vtech_ioexp_interface - destructor
//-------------------------------------------------
-device_ioexp_interface::~device_ioexp_interface()
+device_vtech_ioexp_interface::~device_vtech_ioexp_interface()
{
}
diff --git a/src/devices/bus/vtech/ioexp/ioexp.h b/src/devices/bus/vtech/ioexp/ioexp.h
index 6dec80c6c4a..7b9e97a7e03 100644
--- a/src/devices/bus/vtech/ioexp/ioexp.h
+++ b/src/devices/bus/vtech/ioexp/ioexp.h
@@ -24,10 +24,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_VTECH_IOEXP_IOEXP_H
+#define MAME_BUS_VTECH_IOEXP_IOEXP_H
-#ifndef __VTECH_IOEXP_H__
-#define __VTECH_IOEXP_H__
+#pragma once
@@ -36,51 +36,55 @@
//**************************************************************************
#define MCFG_IOEXP_SLOT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, IOEXP_SLOT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(ioexp_slot_carts, nullptr, false)
+ MCFG_DEVICE_ADD(_tag, VTECH_IOEXP_SLOT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(vtech_ioexp_slot_carts, nullptr, false)
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class device_ioexp_interface;
+class device_vtech_ioexp_interface;
-class ioexp_slot_device : public device_t, public device_slot_interface
+class vtech_ioexp_slot_device : public device_t, public device_slot_interface
{
+ friend class device_vtech_ioexp_interface;
public:
// construction/destruction
- ioexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~ioexp_slot_device();
+ vtech_ioexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~vtech_ioexp_slot_device();
void set_io_space(address_space *io);
- address_space *m_io;
-
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- device_ioexp_interface *m_cart;
+ address_space *m_io;
+
+ device_vtech_ioexp_interface *m_cart;
};
// class representing interface-specific live ioexp device
-class device_ioexp_interface : public device_slot_card_interface
+class device_vtech_ioexp_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_ioexp_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_ioexp_interface();
+ virtual ~device_vtech_ioexp_interface();
protected:
- ioexp_slot_device *m_slot;
+ device_vtech_ioexp_interface(const machine_config &mconfig, device_t &device);
+
+ address_space &io_space() { return *m_slot->m_io; }
+
+ vtech_ioexp_slot_device *m_slot;
};
// device type definition
-extern const device_type IOEXP_SLOT;
+DECLARE_DEVICE_TYPE(VTECH_IOEXP_SLOT, vtech_ioexp_slot_device)
// include here so drivers don't need to
#include "carts.h"
-#endif // __VTECH_IOEXP_H__
+#endif // MAME_BUS_VTECH_IOEXP_IOEXP_H
diff --git a/src/devices/bus/vtech/ioexp/joystick.cpp b/src/devices/bus/vtech/ioexp/joystick.cpp
index f73bf722be7..7570deca3b5 100644
--- a/src/devices/bus/vtech/ioexp/joystick.cpp
+++ b/src/devices/bus/vtech/ioexp/joystick.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type JOYSTICK_INTERFACE = device_creator<joystick_interface_device>;
+DEFINE_DEVICE_TYPE(VTECH_JOYSTICK_INTERFACE, vtech_joystick_interface_device, "vtech_joystick", "Laser/VZ Joystick Interface")
//-------------------------------------------------
// input_ports - device-specific input ports
@@ -51,7 +51,7 @@ static INPUT_PORTS_START( joystick )
PORT_BIT(0xe0, IP_ACTIVE_LOW, IPT_UNUSED)
INPUT_PORTS_END
-ioport_constructor joystick_interface_device::device_input_ports() const
+ioport_constructor vtech_joystick_interface_device::device_input_ports() const
{
return INPUT_PORTS_NAME( joystick );
}
@@ -62,12 +62,12 @@ ioport_constructor joystick_interface_device::device_input_ports() const
//**************************************************************************
//-------------------------------------------------
-// joystick_interface_device - constructor
+// vtech_joystick_interface_device - constructor
//-------------------------------------------------
-joystick_interface_device::joystick_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, JOYSTICK_INTERFACE, "Laser/VZ Joystick Interface", tag, owner, clock, "joystick", __FILE__),
- device_ioexp_interface(mconfig, *this),
+vtech_joystick_interface_device::vtech_joystick_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_JOYSTICK_INTERFACE, tag, owner, clock),
+ device_vtech_ioexp_interface(mconfig, *this),
m_joy0(*this, "joystick_0"),
m_joy0_arm(*this, "joystick_0_arm"),
m_joy1(*this, "joystick_1"),
@@ -79,7 +79,7 @@ joystick_interface_device::joystick_interface_device(const machine_config &mconf
// device_start - device-specific startup
//-------------------------------------------------
-void joystick_interface_device::device_start()
+void vtech_joystick_interface_device::device_start()
{
}
@@ -87,9 +87,9 @@ void joystick_interface_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void joystick_interface_device::device_reset()
+void vtech_joystick_interface_device::device_reset()
{
- m_slot->m_io->install_read_handler(0x20, 0x2f, read8_delegate(FUNC(joystick_interface_device::joystick_r), this));
+ io_space().install_read_handler(0x20, 0x2f, read8_delegate(FUNC(vtech_joystick_interface_device::joystick_r), this));
}
@@ -97,7 +97,7 @@ void joystick_interface_device::device_reset()
// IMPLEMENTATION
//**************************************************************************
-READ8_MEMBER( joystick_interface_device::joystick_r )
+READ8_MEMBER( vtech_joystick_interface_device::joystick_r )
{
uint8_t data = 0xff;
diff --git a/src/devices/bus/vtech/ioexp/joystick.h b/src/devices/bus/vtech/ioexp/joystick.h
index 803e3bd5848..0c05403ad2b 100644
--- a/src/devices/bus/vtech/ioexp/joystick.h
+++ b/src/devices/bus/vtech/ioexp/joystick.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_VTECH_IOEXP_JOYSTICK_H
+#define MAME_BUS_VTECH_IOEXP_JOYSTICK_H
-#ifndef __VTECH_IOEXP_JOYSTICK_H__
-#define __VTECH_IOEXP_JOYSTICK_H__
+#pragma once
#include "ioexp.h"
@@ -23,11 +23,11 @@
// ======================> joystick_interface_device
-class joystick_interface_device : public device_t, public device_ioexp_interface
+class vtech_joystick_interface_device : public device_t, public device_vtech_ioexp_interface
{
public:
// construction/destruction
- joystick_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vtech_joystick_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER( joystick_r );
@@ -44,6 +44,6 @@ private:
};
// device type definition
-extern const device_type JOYSTICK_INTERFACE;
+DECLARE_DEVICE_TYPE(VTECH_JOYSTICK_INTERFACE, vtech_joystick_interface_device)
-#endif // __VTECH_IOEXP_JOYSTICK_H__
+#endif // MAME_BUS_VTECH_IOEXP_JOYSTICK_H
diff --git a/src/devices/bus/vtech/ioexp/printer.cpp b/src/devices/bus/vtech/ioexp/printer.cpp
index 974d8c3818c..970bf08303d 100644
--- a/src/devices/bus/vtech/ioexp/printer.cpp
+++ b/src/devices/bus/vtech/ioexp/printer.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PRINTER_INTERFACE = device_creator<printer_interface_device>;
+DEFINE_DEVICE_TYPE(VTECH_PRINTER_INTERFACE, vtech_printer_interface_device, "vtech_printer", "Laser/VZ Printer Interface")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -26,11 +26,11 @@ const device_type PRINTER_INTERFACE = device_creator<printer_interface_device>;
static MACHINE_CONFIG_FRAGMENT( printer_interface )
MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
- MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(printer_interface_device, busy_w))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(vtech_printer_interface_device, busy_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("latch", "centronics")
MACHINE_CONFIG_END
-machine_config_constructor printer_interface_device::device_mconfig_additions() const
+machine_config_constructor vtech_printer_interface_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( printer_interface );
}
@@ -41,12 +41,12 @@ machine_config_constructor printer_interface_device::device_mconfig_additions()
//**************************************************************************
//-------------------------------------------------
-// printer_interface_device - constructor
+// vtech_printer_interface_device - constructor
//-------------------------------------------------
-printer_interface_device::printer_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PRINTER_INTERFACE, "Laser/VZ Printer Interface", tag, owner, clock, "printer", __FILE__),
- device_ioexp_interface(mconfig, *this),
+vtech_printer_interface_device::vtech_printer_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_PRINTER_INTERFACE, tag, owner, clock),
+ device_vtech_ioexp_interface(mconfig, *this),
m_centronics(*this, "centronics"),
m_latch(*this, "latch"),
m_centronics_busy(0)
@@ -57,7 +57,7 @@ printer_interface_device::printer_interface_device(const machine_config &mconfig
// device_start - device-specific startup
//-------------------------------------------------
-void printer_interface_device::device_start()
+void vtech_printer_interface_device::device_start()
{
}
@@ -65,11 +65,11 @@ void printer_interface_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void printer_interface_device::device_reset()
+void vtech_printer_interface_device::device_reset()
{
- m_slot->m_io->install_read_handler(0x00, 0x00, read8_delegate(FUNC(printer_interface_device::busy_r), this));
- m_slot->m_io->install_write_handler(0x0d, 0x0d, write8_delegate(FUNC(printer_interface_device::strobe_w), this));
- m_slot->m_io->install_write_handler(0x0e, 0x0e, write8_delegate(FUNC(output_latch_device::write), m_latch.target()));
+ io_space().install_read_handler(0x00, 0x00, read8_delegate(FUNC(vtech_printer_interface_device::busy_r), this));
+ io_space().install_write_handler(0x0d, 0x0d, write8_delegate(FUNC(vtech_printer_interface_device::strobe_w), this));
+ io_space().install_write_handler(0x0e, 0x0e, write8_delegate(FUNC(output_latch_device::write), m_latch.target()));
}
@@ -77,17 +77,17 @@ void printer_interface_device::device_reset()
// IMPLEMENTATION
//**************************************************************************
-WRITE_LINE_MEMBER( printer_interface_device::busy_w )
+WRITE_LINE_MEMBER( vtech_printer_interface_device::busy_w )
{
m_centronics_busy = state;
}
-READ8_MEMBER( printer_interface_device::busy_r )
+READ8_MEMBER( vtech_printer_interface_device::busy_r )
{
return 0xfe | m_centronics_busy;
}
-WRITE8_MEMBER( printer_interface_device::strobe_w )
+WRITE8_MEMBER( vtech_printer_interface_device::strobe_w )
{
m_centronics->write_strobe(1);
m_centronics->write_strobe(0);
diff --git a/src/devices/bus/vtech/ioexp/printer.h b/src/devices/bus/vtech/ioexp/printer.h
index 37a25a35fad..8a05106bf59 100644
--- a/src/devices/bus/vtech/ioexp/printer.h
+++ b/src/devices/bus/vtech/ioexp/printer.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_VTECH_IOEXP_PRINTER_H
+#define MAME_BUS_VTECH_IOEXP_PRINTER_H
-#ifndef __VTECH_IOEXP_PRINTER_H__
-#define __VTECH_IOEXP_PRINTER_H__
+#pragma once
#include "ioexp.h"
#include "bus/centronics/ctronics.h"
@@ -23,11 +23,11 @@
// ======================> printer_interface_device
-class printer_interface_device : public device_t, public device_ioexp_interface
+class vtech_printer_interface_device : public device_t, public device_vtech_ioexp_interface
{
public:
// construction/destruction
- printer_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vtech_printer_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE_LINE_MEMBER( busy_w );
DECLARE_READ8_MEMBER( busy_r );
@@ -46,6 +46,6 @@ private:
};
// device type definition
-extern const device_type PRINTER_INTERFACE;
+DECLARE_DEVICE_TYPE(VTECH_PRINTER_INTERFACE, vtech_printer_interface_device)
-#endif // __VTECH_IOEXP_PRINTER_H__
+#endif // MAME_BUS_VTECH_IOEXP_PRINTER_H
diff --git a/src/devices/bus/vtech/memexp/carts.cpp b/src/devices/bus/vtech/memexp/carts.cpp
index c4dddf1bbae..9ca95b56dee 100644
--- a/src/devices/bus/vtech/memexp/carts.cpp
+++ b/src/devices/bus/vtech/memexp/carts.cpp
@@ -9,13 +9,20 @@
#include "emu.h"
#include "carts.h"
-SLOT_INTERFACE_START( memexp_slot_carts )
- SLOT_INTERFACE("floppy", FLOPPY_CONTROLLER)
- SLOT_INTERFACE("laser110_16k", LASER110_16K)
- SLOT_INTERFACE("laser210_16k", LASER210_16K)
- SLOT_INTERFACE("laser310_16k", LASER310_16K)
- SLOT_INTERFACE("laser_64k", LASER_64K)
- SLOT_INTERFACE("rs232", RS232_INTERFACE)
- SLOT_INTERFACE("rtty", RTTY_INTERFACE)
- SLOT_INTERFACE("wordpro", WORDPRO)
+#include "floppy.h"
+#include "memory.h"
+#include "rs232.h"
+#include "rtty.h"
+#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
diff --git a/src/devices/bus/vtech/memexp/carts.h b/src/devices/bus/vtech/memexp/carts.h
index bfbe697b7aa..f8baa314256 100644
--- a/src/devices/bus/vtech/memexp/carts.h
+++ b/src/devices/bus/vtech/memexp/carts.h
@@ -6,18 +6,11 @@
***************************************************************************/
-#pragma once
-
-#ifndef __VTECH_MEMEXP_CARTS_H__
-#define __VTECH_MEMEXP_CARTS_H__
+#ifndef MAME_BUS_VTECH_MEMEXP_CARTS_H
+#define MAME_BUS_VTECH_MEMEXP_CARTS_H
+#pragma once
-#include "floppy.h"
-#include "memory.h"
-#include "rs232.h"
-#include "rtty.h"
-#include "wordpro.h"
-
-SLOT_INTERFACE_EXTERN( memexp_slot_carts );
+SLOT_INTERFACE_EXTERN( vtech_memexp_carts );
-#endif // __VTECH_MEMEXP_CARTS_H__
+#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 355194df583..49c27f0118f 100644
--- a/src/devices/bus/vtech/memexp/floppy.cpp
+++ b/src/devices/bus/vtech/memexp/floppy.cpp
@@ -17,9 +17,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type FLOPPY_CONTROLLER = device_creator<floppy_controller_device>;
+DEFINE_DEVICE_TYPE(VTECH_FLOPPY_CONTROLLER, vtech_floppy_controller_device, "vtech_fdc", "Laser/VZ Floppy Disk Controller")
-DEVICE_ADDRESS_MAP_START(map, 8, floppy_controller_device)
+DEVICE_ADDRESS_MAP_START(map, 8, vtech_floppy_controller_device)
AM_RANGE(0, 0) AM_WRITE(latch_w)
AM_RANGE(1, 1) AM_READ(shifter_r)
AM_RANGE(2, 2) AM_READ(rd_r)
@@ -35,7 +35,7 @@ ROM_START( floppy )
ROM_LOAD("vzdos.rom", 0x0000, 0x2000, CRC(b6ed6084) SHA1(59d1cbcfa6c5e1906a32704fbf0d9670f0d1fd8b))
ROM_END
-const tiny_rom_entry *floppy_controller_device::device_rom_region() const
+const tiny_rom_entry *vtech_floppy_controller_device::device_rom_region() const
{
return ROM_NAME( floppy );
}
@@ -55,7 +55,7 @@ static MACHINE_CONFIG_FRAGMENT( floppy_controller )
MCFG_FLOPPY_DRIVE_ADD("1", laser_floppies, "525", floppy_image_device::default_floppy_formats)
MACHINE_CONFIG_END
-machine_config_constructor floppy_controller_device::device_mconfig_additions() const
+machine_config_constructor vtech_floppy_controller_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( floppy_controller );
}
@@ -65,15 +65,16 @@ machine_config_constructor floppy_controller_device::device_mconfig_additions()
//**************************************************************************
//-------------------------------------------------
-// floppy_controller_device - constructor
+// vtech_floppy_controller_device - constructor
//-------------------------------------------------
-floppy_controller_device::floppy_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, FLOPPY_CONTROLLER, "Laser/VZ Floppy Disk Controller", tag, owner, clock, "laserfdc", __FILE__),
- device_memexp_interface(mconfig, *this),
+vtech_floppy_controller_device::vtech_floppy_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_FLOPPY_CONTROLLER, tag, owner, clock),
+ device_vtech_memexp_interface(mconfig, *this),
m_memexp(*this, "mem"),
m_floppy0(*this, "0"),
- m_floppy1(*this, "1"), m_floppy(nullptr), m_latch(0), m_shifter(0), m_latching_inverter(false), m_current_cyl(0), m_write_position(0)
+ m_floppy1(*this, "1"),
+ m_floppy(nullptr), m_latch(0), m_shifter(0), m_latching_inverter(false), m_current_cyl(0), m_write_position(0)
{
}
@@ -81,7 +82,7 @@ floppy_controller_device::floppy_controller_device(const machine_config &mconfig
// device_start - device-specific startup
//-------------------------------------------------
-void floppy_controller_device::device_start()
+void vtech_floppy_controller_device::device_start()
{
save_item(NAME(m_latch));
save_item(NAME(m_shifter));
@@ -106,14 +107,14 @@ void floppy_controller_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void floppy_controller_device::device_reset()
+void vtech_floppy_controller_device::device_reset()
{
- m_memexp->set_io_space(m_slot->m_io);
- m_memexp->set_program_space(m_slot->m_program);
+ m_memexp->set_io_space(&io_space());
+ m_memexp->set_program_space(&program_space());
- m_slot->m_program->install_rom(0x4000, 0x5fff, memregion("software")->base());
+ program_space().install_rom(0x4000, 0x5fff, memregion("software")->base());
- m_slot->m_io->install_device(0x10, 0x1f, *this, &floppy_controller_device::map);
+ io_space().install_device(0x10, 0x1f, *this, &vtech_floppy_controller_device::map);
m_latch = 0x00;
m_floppy = nullptr;
@@ -137,7 +138,7 @@ void floppy_controller_device::device_reset()
// bit 6: !write request
// bits 4,7: floppy select
-WRITE8_MEMBER(floppy_controller_device::latch_w)
+WRITE8_MEMBER(vtech_floppy_controller_device::latch_w)
{
uint8_t diff = m_latch ^ data;
m_latch = data;
@@ -158,7 +159,7 @@ WRITE8_MEMBER(floppy_controller_device::latch_w)
if(newflop) {
newflop->set_rpm(85);
newflop->mon_w(0);
- newflop->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&floppy_controller_device::index_callback, this));
+ newflop->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&vtech_floppy_controller_device::index_callback, this));
m_current_cyl = newflop->get_cyl() << 1;
}
m_floppy = newflop;
@@ -213,7 +214,7 @@ WRITE8_MEMBER(floppy_controller_device::latch_w)
// - the inverted inverter output is shifted through the lsb of the shift register
// - the inverter is cleared
-READ8_MEMBER(floppy_controller_device::shifter_r)
+READ8_MEMBER(vtech_floppy_controller_device::shifter_r)
{
update_latching_inverter();
m_shifter = (m_shifter << 1) | !m_latching_inverter;
@@ -223,7 +224,7 @@ READ8_MEMBER(floppy_controller_device::shifter_r)
// Linked to the latching inverter on bit 7, rest is floating
-READ8_MEMBER(floppy_controller_device::rd_r)
+READ8_MEMBER(vtech_floppy_controller_device::rd_r)
{
update_latching_inverter();
return m_latching_inverter ? 0x80 : 0x00;
@@ -231,12 +232,12 @@ READ8_MEMBER(floppy_controller_device::rd_r)
// Linked to wp signal on bit 7, rest is floating
-READ8_MEMBER(floppy_controller_device::wpt_r)
+READ8_MEMBER(vtech_floppy_controller_device::wpt_r)
{
return m_floppy && m_floppy->wpt_r() ? 0x80 : 0x00;
}
-void floppy_controller_device::update_latching_inverter()
+void vtech_floppy_controller_device::update_latching_inverter()
{
attotime now = machine().time();
if(!m_floppy) {
@@ -254,13 +255,13 @@ void floppy_controller_device::update_latching_inverter()
m_last_latching_inverter_update_time = now;
}
-void floppy_controller_device::index_callback(floppy_image_device *floppy, int state)
+void vtech_floppy_controller_device::index_callback(floppy_image_device *floppy, int state)
{
update_latching_inverter();
flush_writes(true);
}
-void floppy_controller_device::flush_writes(bool keep_margin)
+void vtech_floppy_controller_device::flush_writes(bool keep_margin)
{
if(!m_floppy || m_write_start_time == attotime::never)
return;
diff --git a/src/devices/bus/vtech/memexp/floppy.h b/src/devices/bus/vtech/memexp/floppy.h
index bc6046a7ec3..d361ca5a4fc 100644
--- a/src/devices/bus/vtech/memexp/floppy.h
+++ b/src/devices/bus/vtech/memexp/floppy.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_VTECH_MEMEXP_FLOPPY_H
+#define MAME_BUS_VTECH_MEMEXP_FLOPPY_H
-#ifndef __VTECH_MEMEXP_FLOPPY_H__
-#define __VTECH_MEMEXP_FLOPPY_H__
+#pragma once
#include "memexp.h"
#include "imagedev/floppy.h"
@@ -22,13 +22,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> floppy_controller_device
+// ======================> vtech_floppy_controller_device
-class floppy_controller_device : public device_t, public device_memexp_interface
+class vtech_floppy_controller_device : public device_t, public device_vtech_memexp_interface
{
public:
// construction/destruction
- floppy_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vtech_floppy_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_ADDRESS_MAP(map, 8);
@@ -43,7 +43,11 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
- required_device<memexp_slot_device> m_memexp;
+ void index_callback(floppy_image_device *floppy, int state);
+ void update_latching_inverter();
+ void flush_writes(bool keep_margin = false);
+
+ required_device<vtech_memexp_slot_device> m_memexp;
required_device<floppy_connector> m_floppy0, m_floppy1;
floppy_image_device *m_floppy;
@@ -53,13 +57,9 @@ protected:
attotime m_last_latching_inverter_update_time;
attotime m_write_start_time, m_write_buffer[32];
int m_write_position;
-
- void index_callback(floppy_image_device *floppy, int state);
- void update_latching_inverter();
- void flush_writes(bool keep_margin = false);
};
// device type definition
-extern const device_type FLOPPY_CONTROLLER;
+DECLARE_DEVICE_TYPE(VTECH_FLOPPY_CONTROLLER, vtech_floppy_controller_device)
-#endif // __VTECH_MEMEXP_FLOPPY_H__
+#endif // MAME_BUS_VTECH_MEMEXP_FLOPPY_H
diff --git a/src/devices/bus/vtech/memexp/memexp.cpp b/src/devices/bus/vtech/memexp/memexp.cpp
index 369403aa1c4..e7f61e5d048 100644
--- a/src/devices/bus/vtech/memexp/memexp.cpp
+++ b/src/devices/bus/vtech/memexp/memexp.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MEMEXP_SLOT = device_creator<memexp_slot_device>;
+DEFINE_DEVICE_TYPE(VTECH_MEMEXP_SLOT, vtech_memexp_slot_device, "vtech_memexp_slot", "Laser/VZ Memory Expansion Slot")
//**************************************************************************
@@ -24,11 +24,11 @@ const device_type MEMEXP_SLOT = device_creator<memexp_slot_device>;
//**************************************************************************
//-------------------------------------------------
-// memexp_slot_device - constructor
+// vtech_memexp_slot_device - constructor
//-------------------------------------------------
-memexp_slot_device::memexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MEMEXP_SLOT, "Memory Expansion Slot", tag, owner, clock, "memexp_slot", __FILE__),
+vtech_memexp_slot_device::vtech_memexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_MEMEXP_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_program(nullptr),
m_io(nullptr),
@@ -40,10 +40,10 @@ memexp_slot_device::memexp_slot_device(const machine_config &mconfig, const char
}
//-------------------------------------------------
-// memexp_slot_device - destructor
+// vtech_memexp_slot_device - destructor
//-------------------------------------------------
-memexp_slot_device::~memexp_slot_device()
+vtech_memexp_slot_device::~vtech_memexp_slot_device()
{
}
@@ -51,7 +51,7 @@ memexp_slot_device::~memexp_slot_device()
// device_start - device-specific startup
//-------------------------------------------------
-void memexp_slot_device::device_start()
+void vtech_memexp_slot_device::device_start()
{
// resolve callbacks
m_int_handler.resolve_safe();
@@ -63,7 +63,7 @@ void memexp_slot_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void memexp_slot_device::device_reset()
+void vtech_memexp_slot_device::device_reset()
{
}
@@ -71,7 +71,7 @@ void memexp_slot_device::device_reset()
// set_program_space - set address space we are attached to
//-------------------------------------------------
-void memexp_slot_device::set_program_space(address_space *program)
+void vtech_memexp_slot_device::set_program_space(address_space *program)
{
m_program = program;
}
@@ -80,7 +80,7 @@ void memexp_slot_device::set_program_space(address_space *program)
// set_io_space - set address space we are attached to
//-------------------------------------------------
-void memexp_slot_device::set_io_space(address_space *io)
+void vtech_memexp_slot_device::set_io_space(address_space *io)
{
m_io = io;
}
@@ -91,19 +91,19 @@ void memexp_slot_device::set_io_space(address_space *io)
//**************************************************************************
//-------------------------------------------------
-// device_memexp_interface - constructor
+// device_vtech_memexp_interface - constructor
//-------------------------------------------------
-device_memexp_interface::device_memexp_interface(const machine_config &mconfig, device_t &device) :
+device_vtech_memexp_interface::device_vtech_memexp_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device)
{
- m_slot = dynamic_cast<memexp_slot_device *>(device.owner());
+ m_slot = dynamic_cast<vtech_memexp_slot_device *>(device.owner());
}
//-------------------------------------------------
-// ~device_memexp_interface - destructor
+// ~device_vtech_memexp_interface - destructor
//-------------------------------------------------
-device_memexp_interface::~device_memexp_interface()
+device_vtech_memexp_interface::~device_vtech_memexp_interface()
{
}
diff --git a/src/devices/bus/vtech/memexp/memexp.h b/src/devices/bus/vtech/memexp/memexp.h
index fab938ef488..692f10c819a 100644
--- a/src/devices/bus/vtech/memexp/memexp.h
+++ b/src/devices/bus/vtech/memexp/memexp.h
@@ -31,10 +31,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_VTECH_MEMEXP_MEMEXP_H
+#define MAME_BUS_VTECH_MEMEXP_MEMEXP_H
-#ifndef __VTECH_MEMEXP_H__
-#define __VTECH_MEMEXP_H__
+#pragma once
@@ -43,59 +43,60 @@
//**************************************************************************
#define MCFG_MEMEXP_SLOT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, MEMEXP_SLOT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(memexp_slot_carts, nullptr, false)
+ MCFG_DEVICE_ADD(_tag, VTECH_MEMEXP_SLOT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(vtech_memexp_carts, nullptr, false)
#define MCFG_MEMEXP_SLOT_INT_HANDLER(_devcb) \
- devcb = &memexp_device::set_int_handler(*device, DEVCB_##_devcb);
+ devcb = &vtech_memexp_device::set_int_handler(*device, DEVCB_##_devcb);
#define MCFG_MEMEXP_SLOT_NMI_HANDLER(_devcb) \
- devcb = &memexp_device::set_nmi_handler(*device, DEVCB_##_devcb);
+ devcb = &vtech_memexp_device::set_nmi_handler(*device, DEVCB_##_devcb);
#define MCFG_MEMEXP_SLOT_RESET_HANDLER(_devcb) \
- devcb = &memexp_device::set_reset_handler(*device, DEVCB_##_devcb);
+ devcb = &vtech_memexp_device::set_reset_handler(*device, DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class device_memexp_interface;
+class device_vtech_memexp_interface;
-class memexp_slot_device : public device_t, public device_slot_interface
+class vtech_memexp_slot_device : public device_t, public device_slot_interface
{
+ friend class device_vtech_memexp_interface;
public:
// construction/destruction
- memexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~memexp_slot_device();
+ vtech_memexp_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~vtech_memexp_slot_device();
void set_program_space(address_space *program);
void set_io_space(address_space *io);
// callbacks
- template<class _Object> static devcb_base &set_int_handler(device_t &device, _Object object)
- { return downcast<memexp_slot_device &>(device).m_int_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
+ { return downcast<vtech_memexp_slot_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_nmi_handler(device_t &device, _Object object)
- { return downcast<memexp_slot_device &>(device).m_nmi_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
+ { return downcast<vtech_memexp_slot_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_reset_handler(device_t &device, _Object object)
- { return downcast<memexp_slot_device &>(device).m_reset_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb)
+ { return downcast<vtech_memexp_slot_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); }
// called from cart device
DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); }
DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_nmi_handler(state); }
DECLARE_WRITE_LINE_MEMBER( reset_w ) { m_reset_handler(state); }
- address_space *m_program;
- address_space *m_io;
-
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- device_memexp_interface *m_cart;
+ address_space *m_program;
+ address_space *m_io;
+
+ device_vtech_memexp_interface *m_cart;
private:
devcb_write_line m_int_handler;
@@ -104,21 +105,24 @@ private:
};
// class representing interface-specific live memexp device
-class device_memexp_interface : public device_slot_card_interface
+class device_vtech_memexp_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_memexp_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_memexp_interface();
+ device_vtech_memexp_interface(const machine_config &mconfig, device_t &device);
+ virtual ~device_vtech_memexp_interface();
protected:
- memexp_slot_device *m_slot;
+ address_space &program_space() { return *m_slot->m_program; }
+ address_space &io_space() { return *m_slot->m_io; }
+
+ vtech_memexp_slot_device *m_slot;
};
// device type definition
-extern const device_type MEMEXP_SLOT;
+DECLARE_DEVICE_TYPE(VTECH_MEMEXP_SLOT, vtech_memexp_slot_device)
// include here so drivers don't need to
#include "carts.h"
-#endif // __VTECH_MEMEXP_H__
+#endif // MAME_BUS_VTECH_MEMEXP_MEMEXP_H
diff --git a/src/devices/bus/vtech/memexp/memory.cpp b/src/devices/bus/vtech/memexp/memory.cpp
index 96fc47bc52c..15ccbeb949e 100644
--- a/src/devices/bus/vtech/memexp/memory.cpp
+++ b/src/devices/bus/vtech/memexp/memory.cpp
@@ -14,10 +14,10 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type LASER110_16K = device_creator<laser110_16k_device>;
-const device_type LASER210_16K = device_creator<laser210_16k_device>;
-const device_type LASER310_16K = device_creator<laser310_16k_device>;
-const device_type LASER_64K = device_creator<laser_64k_device>;
+DEFINE_DEVICE_TYPE(VTECH_LASER110_16K, vtech_laser110_16k_device, "vtech_laser110_16k", "Laser 110/200/VZ-200 16k Memory")
+DEFINE_DEVICE_TYPE(VTECH_LASER210_16K, vtech_laser210_16k_device, "vtech_laser210_16k", "Laser 210/VZ-200 16k Memory")
+DEFINE_DEVICE_TYPE(VTECH_LASER310_16K, vtech_laser310_16k_device, "vtech_laser310_16k", "Laser 310/VZ-300 16k Memory")
+DEFINE_DEVICE_TYPE(VTECH_LASER_64K, vtech_laser_64k_device, "vtech_laser_64k", "Laser/VZ 64k Memory")
//**************************************************************************
@@ -28,9 +28,9 @@ const device_type LASER_64K = device_creator<laser_64k_device>;
// laser110_16k_device - constructor
//-------------------------------------------------
-laser110_16k_device::laser110_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, LASER110_16K, "Laser 110/200/VZ-200 16k Memory", tag, owner, clock, "laser110_16k", __FILE__),
- device_memexp_interface(mconfig, *this)
+vtech_laser110_16k_device::vtech_laser110_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_LASER110_16K, tag, owner, clock),
+ device_vtech_memexp_interface(mconfig, *this)
{
}
@@ -38,7 +38,7 @@ laser110_16k_device::laser110_16k_device(const machine_config &mconfig, const ch
// device_start - device-specific startup
//-------------------------------------------------
-void laser110_16k_device::device_start()
+void vtech_laser110_16k_device::device_start()
{
m_ram.resize(16 * 1024);
}
@@ -47,9 +47,9 @@ void laser110_16k_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void laser110_16k_device::device_reset()
+void vtech_laser110_16k_device::device_reset()
{
- m_slot->m_program->install_ram(0x8000, 0xbfff, &m_ram[0]);
+ program_space().install_ram(0x8000, 0xbfff, &m_ram[0]);
}
@@ -58,12 +58,12 @@ void laser110_16k_device::device_reset()
//**************************************************************************
//-------------------------------------------------
-// laser210_16k_device - constructor
+// vtech_laser210_16k_device - constructor
//-------------------------------------------------
-laser210_16k_device::laser210_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, LASER210_16K, "Laser 210/VZ-200 (DSE) 16k Memory", tag, owner, clock, "laser210_16k", __FILE__),
- device_memexp_interface(mconfig, *this)
+vtech_laser210_16k_device::vtech_laser210_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_LASER210_16K, tag, owner, clock),
+ device_vtech_memexp_interface(mconfig, *this)
{
}
@@ -71,7 +71,7 @@ laser210_16k_device::laser210_16k_device(const machine_config &mconfig, const ch
// device_start - device-specific startup
//-------------------------------------------------
-void laser210_16k_device::device_start()
+void vtech_laser210_16k_device::device_start()
{
m_ram.resize(16 * 1024);
}
@@ -80,9 +80,9 @@ void laser210_16k_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void laser210_16k_device::device_reset()
+void vtech_laser210_16k_device::device_reset()
{
- m_slot->m_program->install_ram(0x9000, 0xcfff, &m_ram[0]);
+ program_space().install_ram(0x9000, 0xcfff, &m_ram[0]);
}
@@ -91,12 +91,12 @@ void laser210_16k_device::device_reset()
//**************************************************************************
//-------------------------------------------------
-// laser310_16k_device - constructor
+// vtech_laser310_16k_device - constructor
//-------------------------------------------------
-laser310_16k_device::laser310_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, LASER310_16K, "Laser 310/VZ-300 16k Memory", tag, owner, clock, "laser310_16k", __FILE__),
- device_memexp_interface(mconfig, *this)
+vtech_laser310_16k_device::vtech_laser310_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_LASER310_16K, tag, owner, clock),
+ device_vtech_memexp_interface(mconfig, *this)
{
}
@@ -104,7 +104,7 @@ laser310_16k_device::laser310_16k_device(const machine_config &mconfig, const ch
// device_start - device-specific startup
//-------------------------------------------------
-void laser310_16k_device::device_start()
+void vtech_laser310_16k_device::device_start()
{
m_ram.resize(16 * 1024);
}
@@ -113,9 +113,9 @@ void laser310_16k_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void laser310_16k_device::device_reset()
+void vtech_laser310_16k_device::device_reset()
{
- m_slot->m_program->install_ram(0xb800, 0xf7ff, &m_ram[0]);
+ program_space().install_ram(0xb800, 0xf7ff, &m_ram[0]);
}
@@ -124,12 +124,12 @@ void laser310_16k_device::device_reset()
//**************************************************************************
//-------------------------------------------------
-// laser_64k_device - constructor
+// vtech_laser_64k_device - constructor
//-------------------------------------------------
-laser_64k_device::laser_64k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, LASER_64K, "Laser/VZ 64k Memory", tag, owner, clock, "laser_64k", __FILE__),
- device_memexp_interface(mconfig, *this)
+vtech_laser_64k_device::vtech_laser_64k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_LASER_64K, tag, owner, clock),
+ device_vtech_memexp_interface(mconfig, *this)
{
}
@@ -137,7 +137,7 @@ laser_64k_device::laser_64k_device(const machine_config &mconfig, const char *ta
// device_start - device-specific startup
//-------------------------------------------------
-void laser_64k_device::device_start()
+void vtech_laser_64k_device::device_start()
{
m_ram.resize(64 * 1024);
}
@@ -146,22 +146,22 @@ void laser_64k_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void laser_64k_device::device_reset()
+void vtech_laser_64k_device::device_reset()
{
// fixed first bank
- m_slot->m_program->install_ram(0x8000, 0xbfff, &m_ram[0]);
+ program_space().install_ram(0x8000, 0xbfff, &m_ram[0]);
// other banks
- m_slot->m_program->install_readwrite_bank(0xc000, 0xffff, tag());
+ program_space().install_readwrite_bank(0xc000, 0xffff, tag());
membank(tag())->configure_entries(0, 4, &m_ram[0], 0x4000);
membank(tag())->set_entry(1);
// bank switch
- m_slot->m_io->install_write_handler(0x70, 0x7f, write8_delegate(FUNC(laser_64k_device::bankswitch_w), this));
+ io_space().install_write_handler(0x70, 0x7f, write8_delegate(FUNC(vtech_laser_64k_device::bankswitch_w), this));
}
-WRITE8_MEMBER( laser_64k_device::bankswitch_w )
+WRITE8_MEMBER( vtech_laser_64k_device::bankswitch_w )
{
membank(tag())->set_entry(data & 0x03);
}
diff --git a/src/devices/bus/vtech/memexp/memory.h b/src/devices/bus/vtech/memexp/memory.h
index b330707cc14..f8a0fe78e7d 100644
--- a/src/devices/bus/vtech/memexp/memory.h
+++ b/src/devices/bus/vtech/memexp/memory.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_VTECH_MEMEXP_MEMORY_H
+#define MAME_BUS_VTECH_MEMEXP_MEMORY_H
-#ifndef __VTECH_MEMEXP_MEMORY__
-#define __VTECH_MEMEXP_MEMORY__
+#pragma once
#include "memexp.h"
@@ -18,13 +18,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> laser110_16k_device
+// ======================> vtech_laser110_16k_device
-class laser110_16k_device : public device_t, public device_memexp_interface
+class vtech_laser110_16k_device : public device_t, public device_vtech_memexp_interface
{
public:
// construction/destruction
- laser110_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vtech_laser110_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual void device_start() override;
@@ -34,13 +34,13 @@ private:
std::vector<uint8_t> m_ram;
};
-// ======================> laser210_16k_device
+// ======================> vtech_laser210_16k_device
-class laser210_16k_device : public device_t, public device_memexp_interface
+class vtech_laser210_16k_device : public device_t, public device_vtech_memexp_interface
{
public:
// construction/destruction
- laser210_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vtech_laser210_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual void device_start() override;
@@ -50,13 +50,13 @@ private:
std::vector<uint8_t> m_ram;
};
-// ======================> laser310_16k_device
+// ======================> vtech_laser310_16k_device
-class laser310_16k_device : public device_t, public device_memexp_interface
+class vtech_laser310_16k_device : public device_t, public device_vtech_memexp_interface
{
public:
// construction/destruction
- laser310_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vtech_laser310_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual void device_start() override;
@@ -66,13 +66,13 @@ private:
std::vector<uint8_t> m_ram;
};
-// ======================> laser_64k_device
+// ======================> vtech_laser_64k_device
-class laser_64k_device : public device_t, public device_memexp_interface
+class vtech_laser_64k_device : public device_t, public device_vtech_memexp_interface
{
public:
// construction/destruction
- laser_64k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vtech_laser_64k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE8_MEMBER( bankswitch_w );
@@ -85,9 +85,9 @@ private:
};
// device type definition
-extern const device_type LASER110_16K;
-extern const device_type LASER210_16K;
-extern const device_type LASER310_16K;
-extern const device_type LASER_64K;
+DECLARE_DEVICE_TYPE(VTECH_LASER110_16K, vtech_laser110_16k_device)
+DECLARE_DEVICE_TYPE(VTECH_LASER210_16K, vtech_laser210_16k_device)
+DECLARE_DEVICE_TYPE(VTECH_LASER310_16K, vtech_laser310_16k_device)
+DECLARE_DEVICE_TYPE(VTECH_LASER_64K, vtech_laser_64k_device)
-#endif // __VTECH_MEMEXP_MEMORY__
+#endif // MAME_BUS_VTECH_MEMEXP_MEMORY_H
diff --git a/src/devices/bus/vtech/memexp/rs232.cpp b/src/devices/bus/vtech/memexp/rs232.cpp
index 550eb8f54b7..7cebd6edb8e 100644
--- a/src/devices/bus/vtech/memexp/rs232.cpp
+++ b/src/devices/bus/vtech/memexp/rs232.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type RS232_INTERFACE = device_creator<rs232_interface_device>;
+DEFINE_DEVICE_TYPE(VTECH_RS232_INTERFACE, vtech_rs232_interface_device, "vtech_rs232", "DSE VZ-200/300 RS-232 Interface")
//-------------------------------------------------
// rom_region - device-specific ROM region
@@ -25,7 +25,7 @@ ROM_START( rs232 )
ROM_LOAD("rs232_v15.ic2", 0x000, 0x800, CRC(6545260d) SHA1(4042f6f1e09e383f3c92f628c6187dc5f072fdb2))
ROM_END
-const tiny_rom_entry *rs232_interface_device::device_rom_region() const
+const tiny_rom_entry *vtech_rs232_interface_device::device_rom_region() const
{
return ROM_NAME( rs232 );
}
@@ -37,10 +37,10 @@ const tiny_rom_entry *rs232_interface_device::device_rom_region() const
static MACHINE_CONFIG_FRAGMENT( rs232 )
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(rs232_interface_device, rs232_rx_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(vtech_rs232_interface_device, rs232_rx_w))
MACHINE_CONFIG_END
-machine_config_constructor rs232_interface_device::device_mconfig_additions() const
+machine_config_constructor vtech_rs232_interface_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( rs232 );
}
@@ -51,12 +51,12 @@ machine_config_constructor rs232_interface_device::device_mconfig_additions() co
//**************************************************************************
//-------------------------------------------------
-// rs232_interface_device - constructor
+// vtech_rs232_interface_device - constructor
//-------------------------------------------------
-rs232_interface_device::rs232_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, RS232_INTERFACE, "DSE VZ-200/300 RS-232 Interface", tag, owner, clock, "vz_rs232", __FILE__),
- device_memexp_interface(mconfig, *this),
+vtech_rs232_interface_device::vtech_rs232_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_RS232_INTERFACE, tag, owner, clock),
+ device_vtech_memexp_interface(mconfig, *this),
m_rs232(*this, "rs232"),
m_rx(1)
{
@@ -66,7 +66,7 @@ rs232_interface_device::rs232_interface_device(const machine_config &mconfig, co
// device_start - device-specific startup
//-------------------------------------------------
-void rs232_interface_device::device_start()
+void vtech_rs232_interface_device::device_start()
{
}
@@ -74,14 +74,14 @@ void rs232_interface_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void rs232_interface_device::device_reset()
+void vtech_rs232_interface_device::device_reset()
{
// program
- m_slot->m_program->install_rom(0x4000, 0x47ff, 0x800, memregion("software")->base());
+ program_space().install_rom(0x4000, 0x47ff, 0x800, memregion("software")->base());
// data
- m_slot->m_program->install_read_handler(0x5000, 0x57ff, read8_delegate(FUNC(rs232_interface_device::receive_data_r), this));
- m_slot->m_program->install_write_handler(0x5800, 0x5fff, write8_delegate(FUNC(rs232_interface_device::transmit_data_w), this));
+ program_space().install_read_handler(0x5000, 0x57ff, read8_delegate(FUNC(vtech_rs232_interface_device::receive_data_r), this));
+ program_space().install_write_handler(0x5800, 0x5fff, write8_delegate(FUNC(vtech_rs232_interface_device::transmit_data_w), this));
}
@@ -89,17 +89,17 @@ void rs232_interface_device::device_reset()
// IMPLEMENTATION
//**************************************************************************
-WRITE_LINE_MEMBER( rs232_interface_device::rs232_rx_w )
+WRITE_LINE_MEMBER( vtech_rs232_interface_device::rs232_rx_w )
{
m_rx = state;
}
-READ8_MEMBER( rs232_interface_device::receive_data_r )
+READ8_MEMBER( vtech_rs232_interface_device::receive_data_r )
{
return 0x7f | (m_rx << 7);
}
-WRITE8_MEMBER( rs232_interface_device::transmit_data_w )
+WRITE8_MEMBER( vtech_rs232_interface_device::transmit_data_w )
{
m_rs232->write_txd(!BIT(data, 7));
}
diff --git a/src/devices/bus/vtech/memexp/rs232.h b/src/devices/bus/vtech/memexp/rs232.h
index 4727066a913..189653258dd 100644
--- a/src/devices/bus/vtech/memexp/rs232.h
+++ b/src/devices/bus/vtech/memexp/rs232.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_VTECH_MEMEXP_RS232_H
+#define MAME_BUS_VTECH_MEMEXP_RS232_H
-#ifndef __VTECH_MEMEXP_RS232_H__
-#define __VTECH_MEMEXP_RS232_H__
+#pragma once
#include "memexp.h"
#include "bus/rs232/rs232.h"
@@ -19,13 +19,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> rs232_interface_device
+// ======================> vtech_rs232_interface_device
-class rs232_interface_device : public device_t, public device_memexp_interface
+class vtech_rs232_interface_device : public device_t, public device_vtech_memexp_interface
{
public:
// construction/destruction
- rs232_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vtech_rs232_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE_LINE_MEMBER( rs232_rx_w );
DECLARE_READ8_MEMBER( receive_data_r );
@@ -44,6 +44,6 @@ private:
};
// device type definition
-extern const device_type RS232_INTERFACE;
+DECLARE_DEVICE_TYPE(VTECH_RS232_INTERFACE, vtech_rs232_interface_device)
-#endif // __VTECH_MEMEXP_RS232_H__
+#endif // MAME_BUS_VTECH_MEMEXP_RS232_H
diff --git a/src/devices/bus/vtech/memexp/rtty.cpp b/src/devices/bus/vtech/memexp/rtty.cpp
index d6a1278d577..96e394bfb4d 100644
--- a/src/devices/bus/vtech/memexp/rtty.cpp
+++ b/src/devices/bus/vtech/memexp/rtty.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type RTTY_INTERFACE = device_creator<rtty_interface_device>;
+DEFINE_DEVICE_TYPE(VTECH_RTTY_INTERFACE, vtech_rtty_interface_device, "vtech_rtty", "DSE VZ-200/300 RTTY Interface")
//-------------------------------------------------
// rom_region - device-specific ROM region
@@ -25,7 +25,7 @@ ROM_START( rtty )
ROM_LOAD("vzrtty.ic3", 0x0000, 0x1000, CRC(ccf4289b) SHA1(de737ef0e0b582b3102da473836af1fa159a2e78))
ROM_END
-const tiny_rom_entry *rtty_interface_device::device_rom_region() const
+const tiny_rom_entry *vtech_rtty_interface_device::device_rom_region() const
{
return ROM_NAME( rtty );
}
@@ -36,12 +36,12 @@ const tiny_rom_entry *rtty_interface_device::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// rtty_interface_device - constructor
+// vtech_rtty_interface_device - constructor
//-------------------------------------------------
-rtty_interface_device::rtty_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, RTTY_INTERFACE, "DSE VZ-200/300 RTTY Interface", tag, owner, clock, "vz_rtty", __FILE__),
- device_memexp_interface(mconfig, *this)
+vtech_rtty_interface_device::vtech_rtty_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_RTTY_INTERFACE, tag, owner, clock),
+ device_vtech_memexp_interface(mconfig, *this)
{
}
@@ -49,7 +49,7 @@ rtty_interface_device::rtty_interface_device(const machine_config &mconfig, cons
// device_start - device-specific startup
//-------------------------------------------------
-void rtty_interface_device::device_start()
+void vtech_rtty_interface_device::device_start()
{
}
@@ -57,15 +57,15 @@ void rtty_interface_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void rtty_interface_device::device_reset()
+void vtech_rtty_interface_device::device_reset()
{
// program
- m_slot->m_program->install_rom(0x4000, 0x4fff, 0x1000, memregion("software")->base());
+ program_space().install_rom(0x4000, 0x4fff, 0x1000, memregion("software")->base());
// data
- m_slot->m_program->install_read_handler(0x5000, 0x57ff, read8_delegate(FUNC(rtty_interface_device::receive_data_r), this));
- m_slot->m_program->install_write_handler(0x5800, 0x5fff, write8_delegate(FUNC(rtty_interface_device::transmit_data_w), this));
- m_slot->m_program->install_write_handler(0x6000, 0x67ff, write8_delegate(FUNC(rtty_interface_device::relay_w), this));
+ program_space().install_read_handler(0x5000, 0x57ff, read8_delegate(FUNC(vtech_rtty_interface_device::receive_data_r), this));
+ program_space().install_write_handler(0x5800, 0x5fff, write8_delegate(FUNC(vtech_rtty_interface_device::transmit_data_w), this));
+ program_space().install_write_handler(0x6000, 0x67ff, write8_delegate(FUNC(vtech_rtty_interface_device::relay_w), this));
}
@@ -73,17 +73,17 @@ void rtty_interface_device::device_reset()
// IMPLEMENTATION
//**************************************************************************
-READ8_MEMBER( rtty_interface_device::receive_data_r )
+READ8_MEMBER( vtech_rtty_interface_device::receive_data_r )
{
return 0xff;
}
-WRITE8_MEMBER( rtty_interface_device::transmit_data_w )
+WRITE8_MEMBER( vtech_rtty_interface_device::transmit_data_w )
{
logerror("transmit_w: %d\n", BIT(data, 7));
}
-WRITE8_MEMBER( rtty_interface_device::relay_w )
+WRITE8_MEMBER( vtech_rtty_interface_device::relay_w )
{
logerror("relay_w: %d\n", BIT(data, 7));
}
diff --git a/src/devices/bus/vtech/memexp/rtty.h b/src/devices/bus/vtech/memexp/rtty.h
index 5f16aa6d234..82c3b150f34 100644
--- a/src/devices/bus/vtech/memexp/rtty.h
+++ b/src/devices/bus/vtech/memexp/rtty.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_VTECH_MEMEXP_RTTY_H
+#define MAME_BUS_VTECH_MEMEXP_RTTY_H
-#ifndef __VTECH_MEMEXP_RTTY_H__
-#define __VTECH_MEMEXP_RTTY_H__
+#pragma once
#include "memexp.h"
@@ -18,13 +18,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> rtty_interface_device
+// ======================> vtech_rtty_interface_device
-class rtty_interface_device : public device_t, public device_memexp_interface
+class vtech_rtty_interface_device : public device_t, public device_vtech_memexp_interface
{
public:
// construction/destruction
- rtty_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vtech_rtty_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER( receive_data_r );
DECLARE_WRITE8_MEMBER( transmit_data_w );
@@ -34,11 +34,9 @@ protected:
virtual const tiny_rom_entry *device_rom_region() const override;
virtual void device_start() override;
virtual void device_reset() override;
-
-private:
};
// device type definition
-extern const device_type RTTY_INTERFACE;
+DECLARE_DEVICE_TYPE(VTECH_RTTY_INTERFACE, vtech_rtty_interface_device)
-#endif // __VTECH_MEMEXP_RTTY_H__
+#endif // MAME_BUS_VTECH_MEMEXP_RTTY_H
diff --git a/src/devices/bus/vtech/memexp/wordpro.cpp b/src/devices/bus/vtech/memexp/wordpro.cpp
index 03df6982a61..099702ef844 100644
--- a/src/devices/bus/vtech/memexp/wordpro.cpp
+++ b/src/devices/bus/vtech/memexp/wordpro.cpp
@@ -14,7 +14,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WORDPRO = device_creator<wordpro_device>;
+DEFINE_DEVICE_TYPE(VTECH_WORDPRO, vtech_wordpro_device, "vtech_wordpro", "DSE VZ-300 WordPro")
//-------------------------------------------------
// rom_region - device-specific ROM region
@@ -27,7 +27,7 @@ ROM_START( wordpro )
ROM_LOAD("wordpro.u5", 0x2000, 0x1000, CRC(2a336802) SHA1(b4de50f943243f18a2bfabef354b76d77178c189))
ROM_END
-const tiny_rom_entry *wordpro_device::device_rom_region() const
+const tiny_rom_entry *vtech_wordpro_device::device_rom_region() const
{
return ROM_NAME( wordpro );
}
@@ -38,12 +38,12 @@ const tiny_rom_entry *wordpro_device::device_rom_region() const
//**************************************************************************
//-------------------------------------------------
-// wordpro_device - constructor
+// vtech_wordpro_device - constructor
//-------------------------------------------------
-wordpro_device::wordpro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WORDPRO, "DSE VZ-300 WordPro", tag, owner, clock, "wordpro", __FILE__),
- device_memexp_interface(mconfig, *this)
+vtech_wordpro_device::vtech_wordpro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, VTECH_WORDPRO, tag, owner, clock),
+ device_vtech_memexp_interface(mconfig, *this)
{
}
@@ -51,7 +51,7 @@ wordpro_device::wordpro_device(const machine_config &mconfig, const char *tag, d
// device_start - device-specific startup
//-------------------------------------------------
-void wordpro_device::device_start()
+void vtech_wordpro_device::device_start()
{
}
@@ -59,8 +59,8 @@ void wordpro_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void wordpro_device::device_reset()
+void vtech_wordpro_device::device_reset()
{
- m_slot->m_program->install_rom(0x6000, 0x67ff, memregion("software")->base());
- m_slot->m_program->install_rom(0xd000, 0xffff, memregion("software")->base());
+ program_space().install_rom(0x6000, 0x67ff, memregion("software")->base());
+ program_space().install_rom(0xd000, 0xffff, memregion("software")->base());
}
diff --git a/src/devices/bus/vtech/memexp/wordpro.h b/src/devices/bus/vtech/memexp/wordpro.h
index 0d12ae7a8d5..f7b6422a319 100644
--- a/src/devices/bus/vtech/memexp/wordpro.h
+++ b/src/devices/bus/vtech/memexp/wordpro.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_BUS_VTECH_MEMEXP_WORDPRO_H
+#define MAME_BUS_VTECH_MEMEXP_WORDPRO_H
-#ifndef __VTECH_MEMEXP_WORDPRO_H__
-#define __VTECH_MEMEXP_WORDPRO_H__
+#pragma once
#include "memexp.h"
@@ -18,13 +18,13 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> wordpro_device
+// ======================> vtech_wordpro_device
-class wordpro_device : public device_t, public device_memexp_interface
+class vtech_wordpro_device : public device_t, public device_vtech_memexp_interface
{
public:
// construction/destruction
- wordpro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ vtech_wordpro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -33,6 +33,6 @@ protected:
};
// device type definition
-extern const device_type WORDPRO;
+DECLARE_DEVICE_TYPE(VTECH_WORDPRO, vtech_wordpro_device)
-#endif // __VTECH_MEMEXP_WORDPRO_H__
+#endif // MAME_BUS_VTECH_MEMEXP_WORDPRO_H
diff --git a/src/devices/bus/wangpc/emb.cpp b/src/devices/bus/wangpc/emb.cpp
index 06cb5372f9f..8f555391bea 100644
--- a/src/devices/bus/wangpc/emb.cpp
+++ b/src/devices/bus/wangpc/emb.cpp
@@ -32,7 +32,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WANGPC_EMB = device_creator<wangpc_emb_device>;
+DEFINE_DEVICE_TYPE(WANGPC_EMB, wangpc_emb_device, "wangpc_emb", "Wang PC-PM031-B Extended Memory Board")
@@ -45,9 +45,10 @@ const device_type WANGPC_EMB = device_creator<wangpc_emb_device>;
//-------------------------------------------------
wangpc_emb_device::wangpc_emb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WANGPC_EMB, "Wang PC-PM031-B", tag, owner, clock, "wangpc_emb", __FILE__),
+ device_t(mconfig, WANGPC_EMB, tag, owner, clock),
device_wangpcbus_card_interface(mconfig, *this),
- m_ram(*this, "ram"), m_option(0), m_parity_error(0), m_parity_odd(0)
+ m_ram(*this, "ram"),
+ m_option(0), m_parity_error(0), m_parity_odd(0)
{
}
diff --git a/src/devices/bus/wangpc/emb.h b/src/devices/bus/wangpc/emb.h
index f80fa5322df..4e1406ec747 100644
--- a/src/devices/bus/wangpc/emb.h
+++ b/src/devices/bus/wangpc/emb.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_WANGPC_EMB_H
+#define MAME_BUS_WANGPC_EMB_H
-#ifndef __WANGPC_EMB__
-#define __WANGPC_EMB__
+#pragma once
#include "wangpc.h"
@@ -50,5 +50,4 @@ private:
// device type definition
extern const device_type WANGPC_EMB;
-
-#endif
+#endif // MAME_BUS_WANGPC_EMB_H
diff --git a/src/devices/bus/wangpc/lic.cpp b/src/devices/bus/wangpc/lic.cpp
index 3bd7397001d..ed1ad4dbc09 100644
--- a/src/devices/bus/wangpc/lic.cpp
+++ b/src/devices/bus/wangpc/lic.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WANGPC_LIC = device_creator<wangpc_lic_device>;
+DEFINE_DEVICE_TYPE(WANGPC_LIC, wangpc_lic_device, "wangpc_lic", "Wang PC-PM070 Local Interconnect")
//-------------------------------------------------
@@ -75,7 +75,7 @@ machine_config_constructor wangpc_lic_device::device_mconfig_additions() const
//-------------------------------------------------
wangpc_lic_device::wangpc_lic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WANGPC_LIC, "Wang PC-PM070", tag, owner, clock, "wangpc_lic", __FILE__),
+ device_t(mconfig, WANGPC_LIC, tag, owner, clock),
device_wangpcbus_card_interface(mconfig, *this)
{
}
diff --git a/src/devices/bus/wangpc/lic.h b/src/devices/bus/wangpc/lic.h
index 146a851734d..292dd0a5aa3 100644
--- a/src/devices/bus/wangpc/lic.h
+++ b/src/devices/bus/wangpc/lic.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_WANGPC_LIC_H
+#define MAME_BUS_WANGPC_LIC_H
-#ifndef __WANGPC_LIC__
-#define __WANGPC_LIC__
+#pragma once
#include "wangpc.h"
@@ -46,7 +46,6 @@ protected:
// device type definition
-extern const device_type WANGPC_LIC;
-
+DECLARE_DEVICE_TYPE(WANGPC_LIC, wangpc_lic_device)
-#endif
+#endif // MAME_BUS_WANGPC_LIC_H
diff --git a/src/devices/bus/wangpc/lvc.cpp b/src/devices/bus/wangpc/lvc.cpp
index 45c3ecf1834..aa5d76605b8 100644
--- a/src/devices/bus/wangpc/lvc.cpp
+++ b/src/devices/bus/wangpc/lvc.cpp
@@ -47,7 +47,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WANGPC_LVC = device_creator<wangpc_lvc_device>;
+DEFINE_DEVICE_TYPE(WANGPC_LVC, wangpc_lvc_device, "wangpc_lvc", "Wang PC Low Resolution Video Card")
//-------------------------------------------------
@@ -170,7 +170,7 @@ inline void wangpc_lvc_device::set_irq(int state)
//-------------------------------------------------
wangpc_lvc_device::wangpc_lvc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WANGPC_LVC, "Wang PC Low Resolution Video Card", tag, owner, clock, "wangpc_lvc", __FILE__),
+ device_t(mconfig, WANGPC_LVC, tag, owner, clock),
device_wangpcbus_card_interface(mconfig, *this),
m_crtc(*this, MC6845_TAG),
m_video_ram(*this, "video_ram"),
diff --git a/src/devices/bus/wangpc/lvc.h b/src/devices/bus/wangpc/lvc.h
index f21c8a4e3cf..01f12abad83 100644
--- a/src/devices/bus/wangpc/lvc.h
+++ b/src/devices/bus/wangpc/lvc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_WANGPC_LVC_H
+#define MAME_BUS_WANGPC_LVC_H
-#ifndef __WANGPC_LVC__
-#define __WANGPC_LVC__
+#pragma once
#include "wangpc.h"
#include "video/mc6845.h"
@@ -61,7 +61,6 @@ private:
// device type definition
-extern const device_type WANGPC_LVC;
-
+DECLARE_DEVICE_TYPE(WANGPC_LVC, wangpc_lvc_device)
-#endif
+#endif // MAME_BUS_WANGPC_LVC_H
diff --git a/src/devices/bus/wangpc/mcc.cpp b/src/devices/bus/wangpc/mcc.cpp
index 93fe1f530a3..580e93dcc32 100644
--- a/src/devices/bus/wangpc/mcc.cpp
+++ b/src/devices/bus/wangpc/mcc.cpp
@@ -48,7 +48,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WANGPC_MCC = device_creator<wangpc_mcc_device>;
+DEFINE_DEVICE_TYPE(WANGPC_MCC, wangpc_mcc_device, "wangpc_mcc", "Wang PC-PM043 Multiport Communications Controller")
//-------------------------------------------------
@@ -104,7 +104,7 @@ inline void wangpc_mcc_device::set_irq(int state)
//-------------------------------------------------
wangpc_mcc_device::wangpc_mcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WANGPC_MCC, "Wang PC-PM043", tag, owner, clock, "wangpc_mcc", __FILE__),
+ device_t(mconfig, WANGPC_MCC, tag, owner, clock),
device_wangpcbus_card_interface(mconfig, *this),
m_sio(*this, Z80SIO2_TAG),
m_dart(*this, Z80DART_TAG), m_option(0), m_irq(0)
diff --git a/src/devices/bus/wangpc/mcc.h b/src/devices/bus/wangpc/mcc.h
index e8675402a89..be716cb264f 100644
--- a/src/devices/bus/wangpc/mcc.h
+++ b/src/devices/bus/wangpc/mcc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_WANGPC_MCC_H
+#define MAME_BUS_WANGPC_MCC_H
-#ifndef __WANGPC_MCC__
-#define __WANGPC_MCC__
+#pragma once
#include "wangpc.h"
#include "machine/z80dart.h"
@@ -53,7 +53,6 @@ private:
// device type definition
-extern const device_type WANGPC_MCC;
-
+DECLARE_DEVICE_TYPE(WANGPC_MCC, wangpc_mcc_device)
-#endif
+#endif // MAME_BUS_WANGPC_MCC_H
diff --git a/src/devices/bus/wangpc/mvc.cpp b/src/devices/bus/wangpc/mvc.cpp
index af95b0695ac..b10527b8410 100644
--- a/src/devices/bus/wangpc/mvc.cpp
+++ b/src/devices/bus/wangpc/mvc.cpp
@@ -62,7 +62,7 @@ static const rgb_t PALETTE_MVC[] =
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WANGPC_MVC = device_creator<wangpc_mvc_device>;
+DEFINE_DEVICE_TYPE(WANGPC_MVC, wangpc_mvc_device, "wangpc_mvc", "Wang PC Medium Resolution Video Card")
//-------------------------------------------------
@@ -190,7 +190,7 @@ inline void wangpc_mvc_device::set_irq(int state)
//-------------------------------------------------
wangpc_mvc_device::wangpc_mvc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WANGPC_MVC, "Wang PC Medium Resolution Video Card", tag, owner, clock, "wangpc_mvc", __FILE__),
+ device_t(mconfig, WANGPC_MVC, tag, owner, clock),
device_wangpcbus_card_interface(mconfig, *this),
m_crtc(*this, MC6845_TAG),
m_video_ram(*this, "video_ram"),
diff --git a/src/devices/bus/wangpc/mvc.h b/src/devices/bus/wangpc/mvc.h
index 98dd98edf6a..7ac0ac7da06 100644
--- a/src/devices/bus/wangpc/mvc.h
+++ b/src/devices/bus/wangpc/mvc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_WANGPC_MVC_H
+#define MAME_BUS_WANGPC_MVC_H
-#ifndef __WANGPC_MVC__
-#define __WANGPC_MVC__
+#pragma once
#include "wangpc.h"
#include "video/mc6845.h"
@@ -61,7 +61,6 @@ private:
// device type definition
-extern const device_type WANGPC_MVC;
-
+DECLARE_DEVICE_TYPE(WANGPC_MVC, wangpc_mvc_device)
-#endif
+#endif // MAME_BUS_WANGPC_MVC_H
diff --git a/src/devices/bus/wangpc/rtc.cpp b/src/devices/bus/wangpc/rtc.cpp
index 1e59c870b68..1fdb44571cb 100644
--- a/src/devices/bus/wangpc/rtc.cpp
+++ b/src/devices/bus/wangpc/rtc.cpp
@@ -29,7 +29,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WANGPC_RTC = device_creator<wangpc_rtc_device>;
+DEFINE_DEVICE_TYPE(WANGPC_RTC, wangpc_rtc_device, "wangpc_rtc", "Wang PC-PM040-B Remote Telecommunication Controller")
//-------------------------------------------------
@@ -187,7 +187,7 @@ ioport_constructor wangpc_rtc_device::device_input_ports() const
//-------------------------------------------------
wangpc_rtc_device::wangpc_rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WANGPC_RTC, "Wang PC-PM040-B", tag, owner, clock, "wangpc_rtc", __FILE__),
+ device_t(mconfig, WANGPC_RTC, tag, owner, clock),
device_wangpcbus_card_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG),
m_dmac(*this, AM9517A_TAG),
diff --git a/src/devices/bus/wangpc/rtc.h b/src/devices/bus/wangpc/rtc.h
index cd6b9bbeb0c..da931f80b89 100644
--- a/src/devices/bus/wangpc/rtc.h
+++ b/src/devices/bus/wangpc/rtc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_WANGPC_RTC_H
+#define MAME_BUS_WANGPC_RTC_H
-#ifndef __WANGPC_RTC__
-#define __WANGPC_RTC__
+#pragma once
#include "wangpc.h"
#include "cpu/z80/z80.h"
@@ -59,7 +59,6 @@ private:
// device type definition
-extern const device_type WANGPC_RTC;
-
+DECLARE_DEVICE_TYPE(WANGPC_RTC, wangpc_rtc_device)
-#endif
+#endif // MAME_BUS_WANGPC_RTC_H
diff --git a/src/devices/bus/wangpc/tig.cpp b/src/devices/bus/wangpc/tig.cpp
index 31dea52508c..5e3ac4b5278 100644
--- a/src/devices/bus/wangpc/tig.cpp
+++ b/src/devices/bus/wangpc/tig.cpp
@@ -55,7 +55,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WANGPC_TIG = device_creator<wangpc_tig_device>;
+DEFINE_DEVICE_TYPE(WANGPC_TIG, wangpc_tig_device, "wangpc_tig", "Want PC Text/Image/Graphics Controller")
//-------------------------------------------------
@@ -154,7 +154,7 @@ machine_config_constructor wangpc_tig_device::device_mconfig_additions() const
//-------------------------------------------------
wangpc_tig_device::wangpc_tig_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WANGPC_TIG, "Wang PC TIG Controller", tag, owner, clock, "wangpc_tig", __FILE__),
+ device_t(mconfig, WANGPC_TIG, tag, owner, clock),
device_wangpcbus_card_interface(mconfig, *this),
m_hgdc0(*this, UPD7720_0_TAG),
m_hgdc1(*this, UPD7720_1_TAG),
diff --git a/src/devices/bus/wangpc/tig.h b/src/devices/bus/wangpc/tig.h
index 5154abc5e20..66d782cfd42 100644
--- a/src/devices/bus/wangpc/tig.h
+++ b/src/devices/bus/wangpc/tig.h
@@ -2,14 +2,14 @@
// copyright-holders:Curt Coder
/**********************************************************************
- Wang PC PM-001B Medium-Resolution Video Controller emulation
+ Wang PC Text/Image/Graphics controller emulation
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_WANGPC_TIG_H
+#define MAME_BUS_WANGPC_TIG_H
-#ifndef __WANGPC_TIG__
-#define __WANGPC_TIG__
+#pragma once
#include "wangpc.h"
#include "video/upd7220.h"
@@ -62,7 +62,6 @@ private:
// device type definition
-extern const device_type WANGPC_TIG;
-
+DECLARE_DEVICE_TYPE(WANGPC_TIG, wangpc_tig_device)
-#endif
+#endif // MAME_BUS_WANGPC_TIG_H
diff --git a/src/devices/bus/wangpc/wangpc.cpp b/src/devices/bus/wangpc/wangpc.cpp
index 7d387ecec15..8344178ca8d 100644
--- a/src/devices/bus/wangpc/wangpc.cpp
+++ b/src/devices/bus/wangpc/wangpc.cpp
@@ -14,8 +14,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WANGPC_BUS = device_creator<wangpcbus_device>;
-const device_type WANGPC_BUS_SLOT = device_creator<wangpcbus_slot_device>;
+DEFINE_DEVICE_TYPE(WANGPC_BUS, wangpcbus_device, "wangpcbus", "Wang PC bus")
+DEFINE_DEVICE_TYPE(WANGPC_BUS_SLOT, wangpcbus_slot_device, "wangpcbus_slot", "Wang PC bus slot")
@@ -28,7 +28,7 @@ const device_type WANGPC_BUS_SLOT = device_creator<wangpcbus_slot_device>;
//-------------------------------------------------
wangpcbus_slot_device::wangpcbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WANGPC_BUS_SLOT, "Wang PC bus slot", tag, owner, clock, "wangpcbus_slot", __FILE__),
+ device_t(mconfig, WANGPC_BUS_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_bus(nullptr),
m_sid(0)
@@ -59,7 +59,7 @@ void wangpcbus_slot_device::device_start()
//-------------------------------------------------
wangpcbus_device::wangpcbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WANGPC_BUS, "Wang PC bus", tag, owner, clock, "wangpcbus", __FILE__),
+ device_t(mconfig, WANGPC_BUS, tag, owner, clock),
m_write_irq2(*this),
m_write_irq3(*this),
m_write_irq4(*this),
diff --git a/src/devices/bus/wangpc/wangpc.h b/src/devices/bus/wangpc/wangpc.h
index 08cfa56c80d..740c7e5ed53 100644
--- a/src/devices/bus/wangpc/wangpc.h
+++ b/src/devices/bus/wangpc/wangpc.h
@@ -9,10 +9,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_WANGPC_WANGPC_H
+#define MAME_BUS_WANGPC_WANGPC_H
-#ifndef __WANGPC_BUS__
-#define __WANGPC_BUS__
+#pragma once
@@ -77,19 +77,19 @@
class wangpcbus_device;
-class wangpcbus_slot_device : public device_t,
- public device_slot_interface
+class wangpcbus_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
wangpcbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
-
// inline configuration
static void static_set_wangpcbus_slot(device_t &device, int sid);
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
private:
// configuration
wangpcbus_device *m_bus;
@@ -98,7 +98,7 @@ private:
// device type definition
-extern const device_type WANGPC_BUS_SLOT;
+DECLARE_DEVICE_TYPE(WANGPC_BUS_SLOT, wangpcbus_slot_device)
class device_wangpcbus_card_interface;
@@ -113,16 +113,16 @@ public:
wangpcbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~wangpcbus_device() { m_device_list.detach_all(); }
- template<class _Object> static devcb_base &set_irq2_wr_callback(device_t &device, _Object object) { return downcast<wangpcbus_device &>(device).m_write_irq2.set_callback(object); }
- template<class _Object> static devcb_base &set_irq3_wr_callback(device_t &device, _Object object) { return downcast<wangpcbus_device &>(device).m_write_irq3.set_callback(object); }
- template<class _Object> static devcb_base &set_irq4_wr_callback(device_t &device, _Object object) { return downcast<wangpcbus_device &>(device).m_write_irq4.set_callback(object); }
- template<class _Object> static devcb_base &set_irq5_wr_callback(device_t &device, _Object object) { return downcast<wangpcbus_device &>(device).m_write_irq5.set_callback(object); }
- template<class _Object> static devcb_base &set_irq6_wr_callback(device_t &device, _Object object) { return downcast<wangpcbus_device &>(device).m_write_irq6.set_callback(object); }
- template<class _Object> static devcb_base &set_irq7_wr_callback(device_t &device, _Object object) { return downcast<wangpcbus_device &>(device).m_write_irq7.set_callback(object); }
- template<class _Object> static devcb_base &set_drq1_wr_callback(device_t &device, _Object object) { return downcast<wangpcbus_device &>(device).m_write_drq1.set_callback(object); }
- template<class _Object> static devcb_base &set_drq2_wr_callback(device_t &device, _Object object) { return downcast<wangpcbus_device &>(device).m_write_drq2.set_callback(object); }
- template<class _Object> static devcb_base &set_drq3_wr_callback(device_t &device, _Object object) { return downcast<wangpcbus_device &>(device).m_write_drq3.set_callback(object); }
- template<class _Object> static devcb_base &set_ioerror_wr_callback(device_t &device, _Object object) { return downcast<wangpcbus_device &>(device).m_write_ioerror.set_callback(object); }
+ template <class Object> static devcb_base &set_irq2_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq3_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq4_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq5_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq5.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq6_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq6.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq7_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_irq7.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq1_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_drq1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq2_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_drq2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq3_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_drq3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ioerror_wr_callback(device_t &device, Object &&cb) { return downcast<wangpcbus_device &>(device).m_write_ioerror.set_callback(std::forward<Object>(cb)); }
void add_card(device_wangpcbus_card_interface *card, int sid);
@@ -180,7 +180,7 @@ private:
// device type definition
-extern const device_type WANGPC_BUS;
+DECLARE_DEVICE_TYPE(WANGPC_BUS, wangpcbus_device)
// ======================> device_wangpcbus_card_interface
@@ -189,22 +189,19 @@ extern const device_type WANGPC_BUS;
class device_wangpcbus_card_interface : public device_slot_card_interface
{
friend class wangpcbus_device;
+ template <class ElementType> friend class simple_list;
public:
- // construction/destruction
- device_wangpcbus_card_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_wangpcbus_card_interface() { }
-
device_wangpcbus_card_interface *next() const { return m_next; }
// memory access
- virtual uint16_t wangpcbus_mrdc_r(address_space &space, offs_t offset, uint16_t mem_mask) { return 0; };
- virtual void wangpcbus_amwc_w(address_space &space, offs_t offset, uint16_t mem_mask, uint16_t data) { };
+ virtual uint16_t wangpcbus_mrdc_r(address_space &space, offs_t offset, uint16_t mem_mask) { return 0; }
+ virtual void wangpcbus_amwc_w(address_space &space, offs_t offset, uint16_t mem_mask, uint16_t data) { }
// I/O access
- virtual uint16_t wangpcbus_iorc_r(address_space &space, offs_t offset, uint16_t mem_mask) { return 0; };
- virtual void wangpcbus_aiowc_w(address_space &space, offs_t offset, uint16_t mem_mask, uint16_t data) { };
- bool sad(offs_t offset) { return ((offset & 0xf80) == (0x800 | (m_sid << 7))) ? true : false; }
+ virtual uint16_t wangpcbus_iorc_r(address_space &space, offs_t offset, uint16_t mem_mask) { return 0; }
+ virtual void wangpcbus_aiowc_w(address_space &space, offs_t offset, uint16_t mem_mask, uint16_t data) { }
+ bool sad(offs_t offset) const { return (offset & 0xf80) == (0x800 | (m_sid << 7)); }
// DMA
virtual uint8_t wangpcbus_dack_r(address_space &space, int line) { return 0; }
@@ -212,16 +209,20 @@ public:
virtual void wangpcbus_tc_w(int state) { }
virtual bool wangpcbus_have_dack(int line) { return false; }
- wangpcbus_device *m_bus;
+protected:
+ // construction/destruction
+ device_wangpcbus_card_interface(const machine_config &mconfig, device_t &device);
+
+ wangpcbus_device *m_bus;
wangpcbus_slot_device *m_slot;
int m_sid;
+
+private:
device_wangpcbus_card_interface *m_next;
};
SLOT_INTERFACE_EXTERN( wangpc_cards );
-
-
-#endif
+#endif // MAME_BUS_WANGPC_WANGPC_H
diff --git a/src/devices/bus/wangpc/wdc.cpp b/src/devices/bus/wangpc/wdc.cpp
index 4c6326c85d3..d468b76697c 100644
--- a/src/devices/bus/wangpc/wdc.cpp
+++ b/src/devices/bus/wangpc/wdc.cpp
@@ -31,7 +31,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WANGPC_WDC = device_creator<wangpc_wdc_device>;
+DEFINE_DEVICE_TYPE(WANGPC_WDC, wangpc_wdc_device, "wangpc_wdc", "Wang PC-PM001 Winchester Disk Controller")
//-------------------------------------------------
@@ -143,7 +143,7 @@ inline void wangpc_wdc_device::set_irq(int state)
//-------------------------------------------------
wangpc_wdc_device::wangpc_wdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WANGPC_WDC, "Wang PC-PM001", tag, owner, clock, "wangpc_wdc", __FILE__),
+ device_t(mconfig, WANGPC_WDC, tag, owner, clock),
device_wangpcbus_card_interface(mconfig, *this),
m_maincpu(*this, Z80_TAG),
m_ctc(*this, MK3882_TAG), m_status(0), m_option(0), m_irq(0)
diff --git a/src/devices/bus/wangpc/wdc.h b/src/devices/bus/wangpc/wdc.h
index 4667e637c1d..d665c453366 100644
--- a/src/devices/bus/wangpc/wdc.h
+++ b/src/devices/bus/wangpc/wdc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_BUS_WANGPC_WDC_H
+#define MAME_BUS_WANGPC_WDC_H
-#ifndef __WANGPC_WDC__
-#define __WANGPC_WDC__
+#pragma once
#include "wangpc.h"
#include "cpu/z80/z80.h"
@@ -74,7 +74,6 @@ private:
// device type definition
-extern const device_type WANGPC_WDC;
-
+DECLARE_DEVICE_TYPE(WANGPC_WDC, wangpc_wdc_device)
-#endif
+#endif // MAME_BUS_WANGPC_WDC_H
diff --git a/src/devices/bus/wswan/rom.cpp b/src/devices/bus/wswan/rom.cpp
index b9594f84ac1..4ba57a44fe4 100644
--- a/src/devices/bus/wswan/rom.cpp
+++ b/src/devices/bus/wswan/rom.cpp
@@ -21,13 +21,13 @@ enum
// ws_rom_device - constructor
//-------------------------------------------------
-const device_type WS_ROM_STD = device_creator<ws_rom_device>;
-const device_type WS_ROM_SRAM = device_creator<ws_rom_sram_device>;
-const device_type WS_ROM_EEPROM = device_creator<ws_rom_eeprom_device>;
+DEFINE_DEVICE_TYPE(WS_ROM_STD, ws_rom_device, "ws_rom", "Wonderswan Standard Carts")
+DEFINE_DEVICE_TYPE(WS_ROM_SRAM, ws_rom_sram_device, "ws_sram", "Wonderswan Carts w/SRAM")
+DEFINE_DEVICE_TYPE(WS_ROM_EEPROM, ws_rom_eeprom_device, "ws_eeprom", "Wonderswan Carts w/EEPROM")
-ws_rom_device::ws_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ws_rom_device::ws_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_ws_cart_interface(mconfig, *this),
m_base20(0),
m_base30(0),
@@ -45,34 +45,22 @@ ws_rom_device::ws_rom_device(const machine_config &mconfig, device_type type, co
{
}
-ws_rom_device::ws_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, WS_ROM_STD, "Wonderswan Standard Carts", tag, owner, clock, "ws_rom", __FILE__),
- device_ws_cart_interface( mconfig, *this ), m_base20(0),
- m_base30(0),
- m_base40(0),
- m_rtc_setting(0),
- m_rtc_year(0),
- m_rtc_month(0),
- m_rtc_day(0),
- m_rtc_day_of_week(0),
- m_rtc_hour(0),
- m_rtc_minute(0),
- m_rtc_second(0),
- m_rtc_index(0),
- rtc_timer(nullptr)
- {
+ws_rom_device::ws_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ ws_rom_device(mconfig, WS_ROM_STD, tag, owner, clock)
+{
}
-ws_rom_sram_device::ws_rom_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ws_rom_device(mconfig, WS_ROM_SRAM, "Wonderswan Carts w/SRAM", tag, owner, clock, "ws_sram", __FILE__), m_nvram_base(0)
- {
+ws_rom_sram_device::ws_rom_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ ws_rom_device(mconfig, WS_ROM_SRAM, tag, owner, clock),
+ m_nvram_base(0)
+{
}
-ws_rom_eeprom_device::ws_rom_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ws_rom_device(mconfig, WS_ROM_EEPROM, "Wonderswan Carts w/EEPROM", tag, owner, clock, "ws_eeprom", __FILE__), m_eeprom_mode(0),
- m_eeprom_address(0), m_eeprom_command(0), m_eeprom_start(0), m_eeprom_write_enabled(0)
- {
+ws_rom_eeprom_device::ws_rom_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ ws_rom_device(mconfig, WS_ROM_EEPROM, tag, owner, clock),
+ m_eeprom_mode(0), m_eeprom_address(0), m_eeprom_command(0), m_eeprom_start(0), m_eeprom_write_enabled(0)
+{
}
diff --git a/src/devices/bus/wswan/rom.h b/src/devices/bus/wswan/rom.h
index 9197cf98911..ae420667c8f 100644
--- a/src/devices/bus/wswan/rom.h
+++ b/src/devices/bus/wswan/rom.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __WS_ROM_H
-#define __WS_ROM_H
+#ifndef MAME_BUS_WSWAN_ROM_H
+#define MAME_BUS_WSWAN_ROM_H
#include "slot.h"
@@ -13,14 +13,8 @@ class ws_rom_device : public device_t,
{
public:
// construction/destruction
- ws_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
ws_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom20) override;
virtual DECLARE_READ8_MEMBER(read_rom30) override;
@@ -29,6 +23,15 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_io) override;
protected:
+ static constexpr device_timer_id TIMER_RTC = 0;
+
+ ws_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
uint8_t m_io_regs[0x10];
uint32_t m_base20, m_base30, m_base40;
@@ -43,7 +46,6 @@ protected:
uint8_t m_rtc_second; /* Second */
uint8_t m_rtc_index; /* index for reading/writing of current of alarm time */
- static const device_timer_id TIMER_RTC = 0;
emu_timer *rtc_timer;
};
@@ -56,15 +58,16 @@ public:
// construction/destruction
ws_rom_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_io) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint32_t m_nvram_base;
};
@@ -78,14 +81,15 @@ public:
// construction/destruction
ws_rom_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
// reading and writing
virtual DECLARE_READ8_MEMBER(read_io) override;
virtual DECLARE_WRITE8_MEMBER(write_io) override;
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
private:
uint8_t m_eeprom_mode; /* eeprom mode */
uint16_t m_eeprom_address; /* Read/write address */
@@ -97,9 +101,8 @@ private:
// device type definition
-extern const device_type WS_ROM_STD;
-extern const device_type WS_ROM_SRAM;
-extern const device_type WS_ROM_EEPROM;
-
+DECLARE_DEVICE_TYPE(WS_ROM_STD, ws_rom_device)
+DECLARE_DEVICE_TYPE(WS_ROM_SRAM, ws_rom_sram_device)
+DECLARE_DEVICE_TYPE(WS_ROM_EEPROM, ws_rom_eeprom_device)
-#endif
+#endif // MAME_BUS_WSWAN_ROM_H
diff --git a/src/devices/bus/wswan/slot.cpp b/src/devices/bus/wswan/slot.cpp
index fd92197ddbf..45df7c195bf 100644
--- a/src/devices/bus/wswan/slot.cpp
+++ b/src/devices/bus/wswan/slot.cpp
@@ -15,7 +15,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type WS_CART_SLOT = device_creator<ws_cart_slot_device>;
+DEFINE_DEVICE_TYPE(WS_CART_SLOT, ws_cart_slot_device, "ws_cart_slot", "Wonderswan Cartridge Slot")
//**************************************************************************
// Wonderswan Cartridges Interface
@@ -77,10 +77,11 @@ void device_ws_cart_interface::nvram_alloc(uint32_t size)
// ws_cart_slot_device - constructor
//-------------------------------------------------
ws_cart_slot_device::ws_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WS_CART_SLOT, "Wonderswan Cartridge Slot", tag, owner, clock, "ws_cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_type(WS_STD), m_cart(nullptr)
+ device_t(mconfig, WS_CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(WS_STD),
+ m_cart(nullptr)
{
}
diff --git a/src/devices/bus/wswan/slot.h b/src/devices/bus/wswan/slot.h
index ce2c4726ed2..5cde9bee01f 100644
--- a/src/devices/bus/wswan/slot.h
+++ b/src/devices/bus/wswan/slot.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __WS_SLOT_H
-#define __WS_SLOT_H
+#ifndef MAME_BUS_WSWAN_SLOT_H
+#define MAME_BUS_WSWAN_SLOT_H
+
+#pragma once
#include "softlist_dev.h"
@@ -26,7 +28,6 @@ class device_ws_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_ws_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_ws_cart_interface();
// reading and writing
@@ -36,7 +37,7 @@ public:
virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; }
virtual DECLARE_WRITE8_MEMBER(write_ram) {}
virtual DECLARE_READ8_MEMBER(read_io) { return 0xff; }
- virtual DECLARE_WRITE8_MEMBER(write_io) {}
+ virtual DECLARE_WRITE8_MEMBER(write_io) { }
void rom_alloc(uint32_t size, const char *tag);
void nvram_alloc(uint32_t size);
@@ -45,12 +46,14 @@ public:
uint32_t get_rom_size() { return m_rom_size; }
uint32_t get_nvram_size() { return m_nvram.size(); }
- void save_nvram() { device().save_item(NAME(m_nvram)); }
+ void save_nvram() { device().save_item(NAME(m_nvram)); }
void set_has_rtc(bool val) { m_has_rtc = val; }
void set_is_rotated(bool val) { m_is_rotated = val; }
int get_is_rotated() { return m_is_rotated ? 1 : 0; }
protected:
+ device_ws_cart_interface(const machine_config &mconfig, device_t &device);
+
// internal state
uint8_t *m_rom;
uint32_t m_rom_size;
@@ -72,9 +75,6 @@ public:
ws_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~ws_cart_slot_device();
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override;
@@ -109,15 +109,17 @@ public:
virtual DECLARE_WRITE8_MEMBER(write_io);
protected:
+ // device-level overrides
+ virtual void device_start() override;
int m_type;
- device_ws_cart_interface* m_cart;
+ device_ws_cart_interface* m_cart;
};
// device type definition
-extern const device_type WS_CART_SLOT;
+DECLARE_DEVICE_TYPE(WS_CART_SLOT, ws_cart_slot_device)
/***************************************************************************
@@ -129,4 +131,5 @@ extern const device_type WS_CART_SLOT;
#define MCFG_WSWAN_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, WS_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-#endif
+
+#endif // MAME_BUS_WSWAN_SLOT_H
diff --git a/src/devices/bus/x68k/x68k_neptunex.cpp b/src/devices/bus/x68k/x68k_neptunex.cpp
index 1c5d5fca020..619e461a01b 100644
--- a/src/devices/bus/x68k/x68k_neptunex.cpp
+++ b/src/devices/bus/x68k/x68k_neptunex.cpp
@@ -13,7 +13,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type X68K_NEPTUNEX = device_creator<x68k_neptune_device>;
+DEFINE_DEVICE_TYPE(X68K_NEPTUNEX, x68k_neptune_device, "x68k_neptunex", "Neptune-X")
// device machine config
static MACHINE_CONFIG_FRAGMENT( x68k_neptunex )
@@ -29,10 +29,10 @@ machine_config_constructor x68k_neptune_device::device_mconfig_additions() const
}
x68k_neptune_device::x68k_neptune_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, X68K_NEPTUNEX, "Neptune-X", tag, owner, clock, "x68k_neptunex", __FILE__),
- device_x68k_expansion_card_interface(mconfig, *this),
- m_slot(nullptr),
- m_dp8390(*this, "dp8390d")
+ : device_t(mconfig, X68K_NEPTUNEX, tag, owner, clock)
+ , device_x68k_expansion_card_interface(mconfig, *this)
+ , m_slot(nullptr)
+ , m_dp8390(*this, "dp8390d")
{
}
diff --git a/src/devices/bus/x68k/x68k_neptunex.h b/src/devices/bus/x68k/x68k_neptunex.h
index 77ff9ab69e5..3fa0736dcdd 100644
--- a/src/devices/bus/x68k/x68k_neptunex.h
+++ b/src/devices/bus/x68k/x68k_neptunex.h
@@ -10,11 +10,13 @@
* 0xECE400-0xECE7FF: "Y1"
*/
-#ifndef X68K_NEPTUNEX_H_
-#define X68K_NEPTUNEX_H_
+#ifndef MAME_BUS_X68K_X68K_NEPTUNEX_H
+#define MAME_BUS_X68K_X68K_NEPTUNEX_H
+
+#pragma once
-#include "machine/dp8390.h"
#include "x68kexp.h"
+#include "machine/dp8390.h"
#define NEPTUNE_IRQ_VECTOR 0xf9
@@ -28,12 +30,13 @@ public:
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- void x68k_neptune_irq_w(int state);
DECLARE_READ8_MEMBER(x68k_neptune_mem_read);
DECLARE_WRITE8_MEMBER(x68k_neptune_mem_write);
DECLARE_READ16_MEMBER(x68k_neptune_port_r);
DECLARE_WRITE16_MEMBER(x68k_neptune_port_w);
+ void x68k_neptune_irq_w(int state);
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -48,6 +51,6 @@ private:
};
// device type definition
-extern const device_type X68K_NEPTUNEX;
+DECLARE_DEVICE_TYPE(X68K_NEPTUNEX, x68k_neptune_device)
-#endif /* X68K_NEPTUNEX_H_ */
+#endif // MAME_BUS_X68K_X68K_NEPTUNEX_H
diff --git a/src/devices/bus/x68k/x68k_scsiext.cpp b/src/devices/bus/x68k/x68k_scsiext.cpp
index 049a990ff1f..e04458a3dfd 100644
--- a/src/devices/bus/x68k/x68k_scsiext.cpp
+++ b/src/devices/bus/x68k/x68k_scsiext.cpp
@@ -18,7 +18,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type X68K_SCSIEXT = device_creator<x68k_scsiext_device>;
+DEFINE_DEVICE_TYPE(X68K_SCSIEXT, x68k_scsiext_device, "x68k_cz6bs1", "Sharp CZ-6BS1 SCSI-1")
//-------------------------------------------------
// rom_region - device-specific ROM region
@@ -57,9 +57,10 @@ machine_config_constructor x68k_scsiext_device::device_mconfig_additions() const
}
x68k_scsiext_device::x68k_scsiext_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, X68K_SCSIEXT, "Sharp CZ-6BS1 SCSI-1", tag, owner, clock, "x68k_cz6bs1", __FILE__),
- device_x68k_expansion_card_interface(mconfig, *this), m_slot(nullptr),
- m_spc(*this, "mb89352")
+ : device_t(mconfig, X68K_SCSIEXT, tag, owner, clock)
+ , device_x68k_expansion_card_interface(mconfig, *this)
+ , m_slot(nullptr),
+ m_spc(*this, "mb89352")
{
}
diff --git a/src/devices/bus/x68k/x68k_scsiext.h b/src/devices/bus/x68k/x68k_scsiext.h
index 54658840e8a..b3448e25dfb 100644
--- a/src/devices/bus/x68k/x68k_scsiext.h
+++ b/src/devices/bus/x68k/x68k_scsiext.h
@@ -6,11 +6,13 @@
* Created on: 5/06/2012
*/
-#ifndef X68K_SCSIEXT_H_
-#define X68K_SCSIEXT_H_
+#ifndef MAME_BUS_X68K_X68K_SCSIEXT_H
+#define MAME_BUS_X68K_X68K_SCSIEXT_H
+
+#pragma once
-#include "machine/mb89352.h"
#include "x68kexp.h"
+#include "machine/mb89352.h"
class x68k_scsiext_device : public device_t,
public device_x68k_expansion_card_interface
@@ -32,6 +34,7 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+
private:
x68k_expansion_slot_device *m_slot;
@@ -39,7 +42,6 @@ private:
};
// device type definition
-extern const device_type X68K_SCSIEXT;
-
+DECLARE_DEVICE_TYPE(X68K_SCSIEXT, x68k_scsiext_device)
-#endif /* X68K_SCSIEXT_H_ */
+#endif // MAME_BUS_X68K_X68K_SCSIEXT_H
diff --git a/src/devices/bus/x68k/x68kexp.cpp b/src/devices/bus/x68k/x68kexp.cpp
index c187ad0a26d..9d9cded5bd8 100644
--- a/src/devices/bus/x68k/x68kexp.cpp
+++ b/src/devices/bus/x68k/x68kexp.cpp
@@ -11,7 +11,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type X68K_EXPANSION_SLOT = device_creator<x68k_expansion_slot_device>;
+DEFINE_DEVICE_TYPE(X68K_EXPANSION_SLOT, x68k_expansion_slot_device, "x68k_expansion_slot", "Sharp X680x0 expansion slot")
//**************************************************************************
@@ -34,12 +34,13 @@ device_x68k_expansion_card_interface::~device_x68k_expansion_card_interface()
//**************************************************************************
x68k_expansion_slot_device::x68k_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, X68K_EXPANSION_SLOT, "Sharp X680x0 expansion slot", tag, owner, clock, "x68k_expansion_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_out_irq2_cb(*this),
- m_out_irq4_cb(*this),
- m_out_nmi_cb(*this),
- m_out_reset_cb(*this), m_card(nullptr)
+ device_t(mconfig, X68K_EXPANSION_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ m_out_irq2_cb(*this),
+ m_out_irq4_cb(*this),
+ m_out_nmi_cb(*this),
+ m_out_reset_cb(*this),
+ m_card(nullptr)
{
}
diff --git a/src/devices/bus/x68k/x68kexp.h b/src/devices/bus/x68k/x68kexp.h
index c1bde3a2306..5b66685fbed 100644
--- a/src/devices/bus/x68k/x68kexp.h
+++ b/src/devices/bus/x68k/x68kexp.h
@@ -61,8 +61,10 @@
*
*/
-#ifndef X68KEXP_H_
-#define X68KEXP_H_
+#ifndef MAME_BUS_X68K_X68KEXP_H
+#define MAME_BUS_X68K_X68KEXP_H
+
+#pragma once
//**************************************************************************
@@ -99,28 +101,29 @@ class device_x68k_expansion_card_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_x68k_expansion_card_interface(const machine_config &mconfig, device_t &device);
virtual ~device_x68k_expansion_card_interface();
// reset
- virtual void x68k_reset_w() { };
+ virtual void x68k_reset_w() { }
+
+protected:
+ device_x68k_expansion_card_interface(const machine_config &mconfig, device_t &device);
};
// ======================> x68k_expansion_slot_device
-class x68k_expansion_slot_device : public device_t,
- public device_slot_interface
+class x68k_expansion_slot_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
x68k_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~x68k_expansion_slot_device();
- template<class _Object> static devcb_base &set_out_irq2_callback(device_t &device, _Object object) { return downcast<x68k_expansion_slot_device &>(device).m_out_irq2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq4_callback(device_t &device, _Object object) { return downcast<x68k_expansion_slot_device &>(device).m_out_irq4_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_nmi_callback(device_t &device, _Object object) { return downcast<x68k_expansion_slot_device &>(device).m_out_nmi_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_reset_callback(device_t &device, _Object object) { return downcast<x68k_expansion_slot_device &>(device).m_out_reset_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq2_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_irq2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq4_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_irq4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_nmi_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_reset_callback(device_t &device, Object &&cb) { return downcast<x68k_expansion_slot_device &>(device).m_out_reset_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( irq2_w );
@@ -143,6 +146,6 @@ protected:
// device type definition
-extern const device_type X68K_EXPANSION_SLOT;
+DECLARE_DEVICE_TYPE(X68K_EXPANSION_SLOT, x68k_expansion_slot_device)
-#endif /* X68KEXP_H_ */
+#endif // MAME_BUS_X68K_X68KEXP_H
diff --git a/src/devices/bus/z88/flash.cpp b/src/devices/bus/z88/flash.cpp
index 752ec937eb9..28a995d86f7 100644
--- a/src/devices/bus/z88/flash.cpp
+++ b/src/devices/bus/z88/flash.cpp
@@ -22,7 +22,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type Z88_1024K_FLASH = device_creator<z88_1024k_flash_device>;
+DEFINE_DEVICE_TYPE(Z88_1024K_FLASH, z88_1024k_flash_device, "z88_1024k_flash", "Z88 1024KB Flash")
//-------------------------------------------------
// MACHINE_CONFIG_FRAGMENT( z88_flash )
@@ -42,9 +42,9 @@ MACHINE_CONFIG_END
//-------------------------------------------------
z88_1024k_flash_device::z88_1024k_flash_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z88_1024K_FLASH, "Z88 1024KB Flash", tag, owner, clock, "z88_1024k_flash", __FILE__),
- device_z88cart_interface( mconfig, *this ),
- m_flash(*this, FLASH_TAG)
+ : device_t(mconfig, Z88_1024K_FLASH, tag, owner, clock)
+ , device_z88cart_interface(mconfig, *this)
+ , m_flash(*this, FLASH_TAG)
{
}
diff --git a/src/devices/bus/z88/flash.h b/src/devices/bus/z88/flash.h
index 4d79cb55afe..b33507f059e 100644
--- a/src/devices/bus/z88/flash.h
+++ b/src/devices/bus/z88/flash.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_Z88_FLASH_H
+#define MAME_BUS_Z88_FLASH_H
-#ifndef __Z88_FLASH_H__
-#define __Z88_FLASH_H__
+#pragma once
#include "z88.h"
#include "machine/intelfsh.h"
@@ -39,7 +39,6 @@ private:
};
// device type definition
-extern const device_type Z88_1024K_FLASH;
-
+DECLARE_DEVICE_TYPE(Z88_1024K_FLASH, z88_1024k_flash_device)
-#endif /* __Z88_FLASH_H__ */
+#endif // MAME_BUS_Z88_FLASH_H
diff --git a/src/devices/bus/z88/ram.cpp b/src/devices/bus/z88/ram.cpp
index 22852bf62b3..69ddd3125a6 100644
--- a/src/devices/bus/z88/ram.cpp
+++ b/src/devices/bus/z88/ram.cpp
@@ -19,10 +19,10 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type Z88_32K_RAM = device_creator<z88_32k_ram_device>;
-const device_type Z88_128K_RAM = device_creator<z88_128k_ram_device>;
-const device_type Z88_512K_RAM = device_creator<z88_512k_ram_device>;
-const device_type Z88_1024K_RAM = device_creator<z88_1024k_ram_device>;
+DEFINE_DEVICE_TYPE(Z88_32K_RAM, z88_32k_ram_device, "z88_32k_ram", "Z88 32KB RAM")
+DEFINE_DEVICE_TYPE(Z88_128K_RAM, z88_128k_ram_device, "z88_128k_ram", "Z88 128KB RAM")
+DEFINE_DEVICE_TYPE(Z88_512K_RAM, z88_512k_ram_device, "z88_512k_ram", "Z88 512KB RAM")
+DEFINE_DEVICE_TYPE(Z88_1024K_RAM, z88_1024k_ram_device, "z88_1024k_ram", "Z88 1024KB RAM")
//**************************************************************************
// LIVE DEVICE
@@ -33,15 +33,13 @@ const device_type Z88_1024K_RAM = device_creator<z88_1024k_ram_device>;
//-------------------------------------------------
z88_32k_ram_device::z88_32k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z88_32K_RAM, "Z88 32KB RAM", tag, owner, clock, "z88_32k_ram", __FILE__),
- device_z88cart_interface( mconfig, *this ), m_ram(nullptr)
- {
+ : z88_32k_ram_device(mconfig, Z88_32K_RAM, tag, owner, clock)
+{
}
-z88_32k_ram_device::z88_32k_ram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_z88cart_interface( mconfig, *this ), m_ram(nullptr)
- {
+z88_32k_ram_device::z88_32k_ram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_z88cart_interface(mconfig, *this), m_ram(nullptr)
+{
}
//-------------------------------------------------
@@ -49,7 +47,7 @@ z88_32k_ram_device::z88_32k_ram_device(const machine_config &mconfig, device_typ
//-------------------------------------------------
z88_128k_ram_device::z88_128k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z88_32k_ram_device(mconfig, Z88_128K_RAM, "Z88 128KB RAM", tag, owner, clock, "z88_128k_ram", __FILE__)
+ : z88_32k_ram_device(mconfig, Z88_128K_RAM, tag, owner, clock)
{
}
@@ -58,7 +56,7 @@ z88_128k_ram_device::z88_128k_ram_device(const machine_config &mconfig, const ch
//-------------------------------------------------
z88_512k_ram_device::z88_512k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z88_32k_ram_device(mconfig, Z88_512K_RAM, "Z88 512KB RAM", tag, owner, clock, "z88_512k_ram", __FILE__)
+ : z88_32k_ram_device(mconfig, Z88_512K_RAM, tag, owner, clock)
{
}
@@ -67,7 +65,7 @@ z88_512k_ram_device::z88_512k_ram_device(const machine_config &mconfig, const ch
//-------------------------------------------------
z88_1024k_ram_device::z88_1024k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z88_32k_ram_device(mconfig, Z88_1024K_RAM, "Z88 1024KB RAM", tag, owner, clock, "z88_1024k_ram", __FILE__)
+ : z88_32k_ram_device(mconfig, Z88_1024K_RAM, tag, owner, clock)
{
}
diff --git a/src/devices/bus/z88/ram.h b/src/devices/bus/z88/ram.h
index d2e1646145d..357959064a8 100644
--- a/src/devices/bus/z88/ram.h
+++ b/src/devices/bus/z88/ram.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_Z88_RAM_H
+#define MAME_BUS_Z88_RAM_H
-#ifndef __Z88_RAM_H__
-#define __Z88_RAM_H__
+#pragma once
#include "z88.h"
@@ -19,9 +19,10 @@ class z88_32k_ram_device : public device_t,
public:
// construction/destruction
z88_32k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- z88_32k_ram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ z88_32k_ram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
@@ -76,9 +77,9 @@ protected:
};
// device type definition
-extern const device_type Z88_32K_RAM;
-extern const device_type Z88_128K_RAM;
-extern const device_type Z88_512K_RAM;
-extern const device_type Z88_1024K_RAM;
+DECLARE_DEVICE_TYPE(Z88_32K_RAM, z88_32k_ram_device)
+DECLARE_DEVICE_TYPE(Z88_128K_RAM, z88_128k_ram_device)
+DECLARE_DEVICE_TYPE(Z88_512K_RAM, z88_512k_ram_device)
+DECLARE_DEVICE_TYPE(Z88_1024K_RAM, z88_1024k_ram_device)
-#endif /* __Z88_RAM_H__ */
+#endif // MAME_BUS_Z88_RAM_H
diff --git a/src/devices/bus/z88/rom.cpp b/src/devices/bus/z88/rom.cpp
index 4ac53bba045..ea1feb603f4 100644
--- a/src/devices/bus/z88/rom.cpp
+++ b/src/devices/bus/z88/rom.cpp
@@ -19,9 +19,9 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type Z88_32K_ROM = device_creator<z88_32k_rom_device>;
-const device_type Z88_128K_ROM = device_creator<z88_128k_rom_device>;
-const device_type Z88_256K_ROM = device_creator<z88_256k_rom_device>;
+DEFINE_DEVICE_TYPE(Z88_32K_ROM, z88_32k_rom_device, "z88_32k_rom", "Z88 32KB ROM")
+DEFINE_DEVICE_TYPE(Z88_128K_ROM, z88_128k_rom_device, "z88_128k_rom", "Z88 128KB ROM")
+DEFINE_DEVICE_TYPE(Z88_256K_ROM, z88_256k_rom_device, "z88_256k_rom", "Z88 256KB ROM")
//**************************************************************************
// LIVE DEVICE
@@ -32,15 +32,13 @@ const device_type Z88_256K_ROM = device_creator<z88_256k_rom_device>;
//-------------------------------------------------
z88_32k_rom_device::z88_32k_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z88_32K_ROM, "Z88 32KB ROM", tag, owner, clock, "z88_32k_rom", __FILE__),
- device_z88cart_interface( mconfig, *this ), m_rom(nullptr)
- {
+ : z88_32k_rom_device(mconfig, Z88_32K_ROM, tag, owner, clock)
+{
}
-z88_32k_rom_device::z88_32k_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_z88cart_interface( mconfig, *this ), m_rom(nullptr)
- {
+z88_32k_rom_device::z88_32k_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), device_z88cart_interface(mconfig, *this), m_rom(nullptr)
+{
}
//-------------------------------------------------
@@ -48,7 +46,7 @@ z88_32k_rom_device::z88_32k_rom_device(const machine_config &mconfig, device_typ
//-------------------------------------------------
z88_128k_rom_device::z88_128k_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z88_32k_rom_device(mconfig, Z88_128K_ROM, "Z88 128KB ROM", tag, owner, clock, "z88_128k_rom", __FILE__)
+ : z88_32k_rom_device(mconfig, Z88_128K_ROM, tag, owner, clock)
{
}
@@ -57,7 +55,7 @@ z88_128k_rom_device::z88_128k_rom_device(const machine_config &mconfig, const ch
//-------------------------------------------------
z88_256k_rom_device::z88_256k_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z88_32k_rom_device(mconfig, Z88_256K_ROM, "Z88 256KB ROM", tag, owner, clock, "z88_256k_rom", __FILE__)
+ : z88_32k_rom_device(mconfig, Z88_256K_ROM, tag, owner, clock)
{
}
diff --git a/src/devices/bus/z88/rom.h b/src/devices/bus/z88/rom.h
index 41c63955d4f..9508efbef14 100644
--- a/src/devices/bus/z88/rom.h
+++ b/src/devices/bus/z88/rom.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
-#pragma once
+#ifndef MAME_BUS_Z88_ROM_H
+#define MAME_BUS_Z88_ROM_H
-#ifndef __Z88_ROM_H__
-#define __Z88_ROM_H__
+#pragma once
#include "z88.h"
@@ -19,9 +19,10 @@ class z88_32k_rom_device : public device_t,
public:
// construction/destruction
z88_32k_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- z88_32k_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ z88_32k_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
@@ -62,8 +63,8 @@ protected:
};
// device type definition
-extern const device_type Z88_32K_ROM;
-extern const device_type Z88_128K_ROM;
-extern const device_type Z88_256K_ROM;
+DECLARE_DEVICE_TYPE(Z88_32K_ROM, z88_32k_rom_device)
+DECLARE_DEVICE_TYPE(Z88_128K_ROM, z88_128k_rom_device)
+DECLARE_DEVICE_TYPE(Z88_256K_ROM, z88_256k_rom_device)
-#endif /* __Z88_ROM_H__ */
+#endif // MAME_BUS_Z88_ROM_H
diff --git a/src/devices/bus/z88/z88.cpp b/src/devices/bus/z88/z88.cpp
index d6dd43b77f2..9f7b7fb3172 100644
--- a/src/devices/bus/z88/z88.cpp
+++ b/src/devices/bus/z88/z88.cpp
@@ -22,7 +22,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type Z88CART_SLOT = device_creator<z88cart_slot_device>;
+DEFINE_DEVICE_TYPE(Z88CART_SLOT, z88cart_slot_device, "z88cart_slot", "Z88 Cartridge Slot")
//**************************************************************************
@@ -56,10 +56,11 @@ device_z88cart_interface::~device_z88cart_interface()
// z88cart_slot_device - constructor
//-------------------------------------------------
z88cart_slot_device::z88cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, Z88CART_SLOT, "Z88 Cartridge Slot", tag, owner, clock, "z88cart_slot", __FILE__),
- device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this),
- m_out_flp_cb(*this), m_cart(nullptr), m_flp_timer(nullptr)
+ device_t(mconfig, Z88CART_SLOT, tag, owner, clock),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_out_flp_cb(*this),
+ m_cart(nullptr), m_flp_timer(nullptr)
{
}
diff --git a/src/devices/bus/z88/z88.h b/src/devices/bus/z88/z88.h
index cd7a8ce3808..477b98eca7c 100644
--- a/src/devices/bus/z88/z88.h
+++ b/src/devices/bus/z88/z88.h
@@ -51,8 +51,10 @@
*********************************************************************/
-#ifndef __Z88CART_H__
-#define __Z88CART_H__
+#ifndef MAME_BUS_Z88_Z88_H
+#define MAME_BUS_Z88_Z88_H
+
+#pragma once
#include "softlist_dev.h"
@@ -67,7 +69,6 @@ class device_z88cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
- device_z88cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_z88cart_interface();
// reading and writing
@@ -75,6 +76,9 @@ public:
virtual DECLARE_WRITE8_MEMBER(write) { }
virtual uint8_t* get_cart_base() { return nullptr; }
virtual uint32_t get_cart_size() { return 0; }
+
+protected:
+ device_z88cart_interface(const machine_config &mconfig, device_t &device);
};
@@ -89,11 +93,7 @@ public:
z88cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~z88cart_slot_device();
- template<class _Object> static devcb_base &set_out_flp_callback(device_t &device, _Object object) { return downcast<z88cart_slot_device &>(device).m_out_flp_cb.set_callback(object); }
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ template <class Object> static devcb_base &set_out_flp_callback(device_t &device, Object &&cb) { return downcast<z88cart_slot_device &>(device).m_out_flp_cb.set_callback(std::forward<Object>(cb)); }
// image-level overrides
virtual image_init_result call_load() override;
@@ -116,8 +116,14 @@ public:
virtual DECLARE_READ8_MEMBER(read);
virtual DECLARE_WRITE8_MEMBER(write);
virtual uint8_t* get_cart_base();
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
- static const device_timer_id TIMER_FLP_CLEAR = 0;
+ static constexpr device_timer_id TIMER_FLP_CLEAR = 0;
devcb_write_line m_out_flp_cb;
device_z88cart_interface* m_cart;
@@ -126,7 +132,7 @@ private:
// device type definition
-extern const device_type Z88CART_SLOT;
+DECLARE_DEVICE_TYPE(Z88CART_SLOT, z88cart_slot_device)
/***************************************************************************
@@ -136,4 +142,4 @@ extern const device_type Z88CART_SLOT;
#define MCFG_Z88CART_SLOT_OUT_FLP_CB(_devcb) \
devcb = &z88cart_slot_device::set_out_flp_callback(*device, DEVCB_##_devcb);
-#endif /* __Z88CART_H__ */
+#endif // MAME_BUS_Z88_Z88_H
diff --git a/src/devices/cpu/8x300/8x300.cpp b/src/devices/cpu/8x300/8x300.cpp
index a405d4dda69..c3929144aa3 100644
--- a/src/devices/cpu/8x300/8x300.cpp
+++ b/src/devices/cpu/8x300/8x300.cpp
@@ -37,11 +37,11 @@
#define DST_LATCH do { if(DST_IS_RIGHT_BANK) m_right_IV = READPORT(m_IVR+0x100); else m_left_IV = READPORT(m_IVL); } while (0)
#define SET_OVF do { if(result & 0xff00) m_OVF = 1; else m_OVF = 0; } while (0)
-const device_type N8X300 = device_creator<n8x300_cpu_device>;
+DEFINE_DEVICE_TYPE(N8X300, n8x300_cpu_device, "8x300", "Signetics 8X300")
n8x300_cpu_device::n8x300_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, N8X300, "Signetics 8X300", tag, owner, clock, "8x300", __FILE__)
+ : cpu_device(mconfig, N8X300, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 16, 14, 0)
, m_io_config("io", ENDIANNESS_BIG, 8, 9, 0)
{
diff --git a/src/devices/cpu/8x300/8x300.h b/src/devices/cpu/8x300/8x300.h
index d26afc55748..532fc58a6c1 100644
--- a/src/devices/cpu/8x300/8x300.h
+++ b/src/devices/cpu/8x300/8x300.h
@@ -7,9 +7,10 @@
* Created on: 18/12/2013
*/
-#ifndef _8X300_H_
-#define _8X300_H_
+#ifndef MAME_CPU_8X300_8X300_H
+#define MAME_CPU_8X300_8X300_H
+#pragma once
// Register enumeration
enum
@@ -133,6 +134,6 @@ private:
uint8_t get_reg(uint8_t reg);
};
-extern const device_type N8X300;
+DECLARE_DEVICE_TYPE(N8X300, n8x300_cpu_device)
-#endif /* 8X300_H_ */
+#endif // MAME_CPU_8X300_8X300_H
diff --git a/src/devices/cpu/adsp2100/adsp2100.cpp b/src/devices/cpu/adsp2100/adsp2100.cpp
index 88670a0bf5e..f8499c373a7 100644
--- a/src/devices/cpu/adsp2100/adsp2100.cpp
+++ b/src/devices/cpu/adsp2100/adsp2100.cpp
@@ -103,12 +103,12 @@
// device type definitions
-const device_type ADSP2100 = device_creator<adsp2100_device>;
-const device_type ADSP2101 = device_creator<adsp2101_device>;
-const device_type ADSP2104 = device_creator<adsp2104_device>;
-const device_type ADSP2105 = device_creator<adsp2105_device>;
-const device_type ADSP2115 = device_creator<adsp2115_device>;
-const device_type ADSP2181 = device_creator<adsp2181_device>;
+DEFINE_DEVICE_TYPE(ADSP2100, adsp2100_device, "adsp2100", "ADSP-2100")
+DEFINE_DEVICE_TYPE(ADSP2101, adsp2101_device, "adsp2101", "ADSP-2101")
+DEFINE_DEVICE_TYPE(ADSP2104, adsp2104_device, "adsp2104", "ADSP-2104")
+DEFINE_DEVICE_TYPE(ADSP2105, adsp2105_device, "adsp2105", "ADSP-2105")
+DEFINE_DEVICE_TYPE(ADSP2115, adsp2115_device, "adsp2115", "ADSP-2115")
+DEFINE_DEVICE_TYPE(ADSP2181, adsp2181_device, "adsp2181", "ADSP-2181")
//**************************************************************************
@@ -119,8 +119,8 @@ const device_type ADSP2181 = device_creator<adsp2181_device>;
// adsp21xx_device - constructor
//-------------------------------------------------
-adsp21xx_device::adsp21xx_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+adsp21xx_device::adsp21xx_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_LITTLE, 32, 14, -2),
m_data_config("data", ENDIANNESS_LITTLE, 16, 14, -1),
m_chip_type(chiptype),
@@ -249,26 +249,33 @@ adsp21xx_device::adsp21xx_device(const machine_config &mconfig, device_type type
}
adsp2100_device::adsp2100_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adsp21xx_device(mconfig, ADSP2100, "ADSP-2100", tag, owner, clock, CHIP_TYPE_ADSP2100, "adsp2100", __FILE__) { }
+ : adsp21xx_device(mconfig, ADSP2100, tag, owner, clock, CHIP_TYPE_ADSP2100)
+{ }
adsp2101_device::adsp2101_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adsp21xx_device(mconfig, ADSP2101, "ADSP-2101", tag, owner, clock, CHIP_TYPE_ADSP2101, "adsp2101", __FILE__) { }
+ : adsp2101_device(mconfig, ADSP2101, tag, owner, clock, CHIP_TYPE_ADSP2101)
+{ }
-adsp2101_device::adsp2101_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype, const char *shortname, const char *source)
- : adsp21xx_device(mconfig, type, name, tag, owner, clock, chiptype, shortname, source) { }
+adsp2101_device::adsp2101_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype)
+ : adsp21xx_device(mconfig, type, tag, owner, clock, chiptype)
+{ }
adsp2104_device::adsp2104_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adsp2101_device(mconfig, ADSP2104, "ADSP-2104", tag, owner, clock, CHIP_TYPE_ADSP2104, "adsp2104", __FILE__) { }
+ : adsp2101_device(mconfig, ADSP2104, tag, owner, clock, CHIP_TYPE_ADSP2104)
+{ }
adsp2105_device::adsp2105_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adsp2101_device(mconfig, ADSP2105, "ADSP-2105", tag, owner, clock, CHIP_TYPE_ADSP2105, "adsp2105", __FILE__) { }
+ : adsp2101_device(mconfig, ADSP2105, tag, owner, clock, CHIP_TYPE_ADSP2105)
+{ }
adsp2115_device::adsp2115_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adsp2101_device(mconfig, ADSP2115, "ADSP-2115", tag, owner, clock, CHIP_TYPE_ADSP2115, "adsp2115", __FILE__) { }
+ : adsp2101_device(mconfig, ADSP2115, tag, owner, clock, CHIP_TYPE_ADSP2115)
+{ }
adsp2181_device::adsp2181_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adsp21xx_device(mconfig, ADSP2181, "ADSP-2181", tag, owner, clock, CHIP_TYPE_ADSP2181, "adsp2181", __FILE__),
- m_io_config("I/O", ENDIANNESS_LITTLE, 16, 11, -1) { }
+ : adsp21xx_device(mconfig, ADSP2181, tag, owner, clock, CHIP_TYPE_ADSP2181)
+ , m_io_config("I/O", ENDIANNESS_LITTLE, 16, 11, -1)
+{ }
//-------------------------------------------------
diff --git a/src/devices/cpu/adsp2100/adsp2100.h b/src/devices/cpu/adsp2100/adsp2100.h
index aa7fb7853dc..2a32163a96d 100644
--- a/src/devices/cpu/adsp2100/adsp2100.h
+++ b/src/devices/cpu/adsp2100/adsp2100.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_ADSP2100_ADSP2100_H
+#define MAME_CPU_ADSP2100_ADSP2100_H
-#ifndef __ADSP2100_H__
-#define __ADSP2100_H__
+#pragma once
//**************************************************************************
@@ -200,6 +200,18 @@ enum
class adsp21xx_device : public cpu_device
{
+public:
+ virtual ~adsp21xx_device();
+
+ // inline configuration helpers
+ template <class Object> static devcb_base &set_sport_rx_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_sport_rx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sport_tx_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_sport_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_timer_fired_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_timer_fired_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dmovlay_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_dmovlay_cb.set_callback(std::forward<Object>(cb)); }
+
+ // public interfaces
+ void load_boot_data(uint8_t *srcdata, uint32_t *dstdata);
+
protected:
enum
{
@@ -212,20 +224,8 @@ protected:
};
// construction/destruction
- adsp21xx_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype, const char *shortname, const char *source);
- virtual ~adsp21xx_device();
-
-public:
- // inline configuration helpers
- template<class _Object> static devcb_base &set_sport_rx_callback(device_t &device, _Object object) { return downcast<adsp21xx_device &>(device).m_sport_rx_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_sport_tx_callback(device_t &device, _Object object) { return downcast<adsp21xx_device &>(device).m_sport_tx_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_timer_fired_callback(device_t &device, _Object object) { return downcast<adsp21xx_device &>(device).m_timer_fired_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_dmovlay_callback(device_t &device, _Object object) { return downcast<adsp21xx_device &>(device).m_dmovlay_cb.set_callback(object); }
+ adsp21xx_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype);
- // public interfaces
- void load_boot_data(uint8_t *srcdata, uint32_t *dstdata);
-
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -509,7 +509,7 @@ public:
adsp2101_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
- adsp2101_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype, const char *shortname, const char *source);
+ adsp2101_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype);
// device_execute_interface overrides
virtual uint32_t execute_input_lines() const override;
@@ -577,12 +577,12 @@ public:
// device type definition
-extern const device_type ADSP2100;
-extern const device_type ADSP2101;
-extern const device_type ADSP2104;
-extern const device_type ADSP2105;
-extern const device_type ADSP2115;
-extern const device_type ADSP2181;
+DECLARE_DEVICE_TYPE(ADSP2100, adsp2100_device)
+DECLARE_DEVICE_TYPE(ADSP2101, adsp2101_device)
+DECLARE_DEVICE_TYPE(ADSP2104, adsp2104_device)
+DECLARE_DEVICE_TYPE(ADSP2105, adsp2105_device)
+DECLARE_DEVICE_TYPE(ADSP2115, adsp2115_device)
+DECLARE_DEVICE_TYPE(ADSP2181, adsp2181_device)
-#endif /* __ADSP2100_H__ */
+#endif // MAME_CPU_ADSP2100_ADSP2100_H
diff --git a/src/devices/cpu/alph8201/alph8201.cpp b/src/devices/cpu/alph8201/alph8201.cpp
index 81ac62696b7..ea7bf566657 100644
--- a/src/devices/cpu/alph8201/alph8201.cpp
+++ b/src/devices/cpu/alph8201/alph8201.cpp
@@ -161,12 +161,12 @@ Timming
****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "alph8201.h"
+#include "debugger.h"
-const device_type ALPHA8201L = device_creator<alpha8201_cpu_device>;
-const device_type ALPHA8301L = device_creator<alpha8301_cpu_device>;
+DEFINE_DEVICE_TYPE(ALPHA8201L, alpha8201_cpu_device, "alpha8201l", "ALPHA-8201L")
+DEFINE_DEVICE_TYPE(ALPHA8301L, alpha8301_cpu_device, "alpha8301l", "ALPHA-8301L")
/* instruction cycle count */
@@ -185,26 +185,22 @@ const device_type ALPHA8301L = device_creator<alpha8301_cpu_device>;
alpha8201_cpu_device::alpha8201_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : cpu_device(mconfig, ALPHA8201L, "ALPHA-8201L", tag, owner, clock, "alpha8201l", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 8, 10, 0)
- , m_io_config("io", ENDIANNESS_LITTLE, 8, 6, 0)
- , m_opmap(opcode_8201)
+ : alpha8201_cpu_device(mconfig, ALPHA8201L, tag, owner, clock, opcode_8201)
{
}
-alpha8201_cpu_device::alpha8201_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+alpha8201_cpu_device::alpha8201_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, const s_opcode *opmap)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 10, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 6, 0)
- , m_opmap(opcode_8201)
+ , m_opmap(opmap)
{
}
alpha8301_cpu_device::alpha8301_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : alpha8201_cpu_device(mconfig, ALPHA8301L, "ALPHA-8301L", tag, owner, clock, "alpha8301l", __FILE__)
+ : alpha8201_cpu_device(mconfig, ALPHA8301L, tag, owner, clock, opcode_8301)
{
- m_opmap = opcode_8301;
}
diff --git a/src/devices/cpu/alph8201/alph8201.h b/src/devices/cpu/alph8201/alph8201.h
index 2f098b4d779..e5c3151d341 100644
--- a/src/devices/cpu/alph8201/alph8201.h
+++ b/src/devices/cpu/alph8201/alph8201.h
@@ -20,8 +20,8 @@ cpu/alph8201/ will be removed when the alpha 8304 has been dumped.
* *
\**************************************************************************/
-#ifndef __ALPH8201_H__
-#define __ALPH8201_H__
+#ifndef MAME_CPU_ALPH8201_ALPH8201_H
+#define MAME_CPU_ALPH8201_ALPH8201_H
#pragma once
@@ -51,9 +51,18 @@ class alpha8201_cpu_device : public cpu_device
public:
// construction/destruction
alpha8201_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- alpha8201_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);
protected:
+ typedef void ( alpha8201_cpu_device::*opcode_fun ) ();
+
+ /* The opcode table now is a combination of cycle counts and function pointers */
+ struct s_opcode {
+ unsigned cycles;
+ opcode_fun opcode_func;
+ };
+
+ alpha8201_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, const s_opcode *opmap);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -352,14 +361,6 @@ protected:
void save_zc() { m_savez = m_zf; m_savec = m_cf; };
void rest_zc() { m_zf = m_savez; m_cf = m_savec; };
- typedef void ( alpha8201_cpu_device::*opcode_fun ) ();
-
- /* The opcode table now is a combination of cycle counts and function pointers */
- struct s_opcode {
- unsigned cycles;
- opcode_fun opcode_func;
- };
-
static const s_opcode opcode_8201[256];
static const s_opcode opcode_8301[256];
@@ -393,7 +394,7 @@ protected:
int m_icount;
int m_inst_cycles;
- const s_opcode *m_opmap;
+ const s_opcode *const m_opmap;
// Used for import/export only
u8 m_sp;
@@ -410,8 +411,7 @@ public:
};
-extern const device_type ALPHA8201L;
-extern const device_type ALPHA8301L;
-
+DECLARE_DEVICE_TYPE(ALPHA8201L, alpha8201_cpu_device)
+DECLARE_DEVICE_TYPE(ALPHA8301L, alpha8301_cpu_device)
-#endif /* __ALPH8201_H__ */
+#endif // MAME_CPU_ALPH8201_ALPH8201_H
diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp
index 56b2e89ebb3..ad6fae3c282 100644
--- a/src/devices/cpu/alto2/alto2cpu.cpp
+++ b/src/devices/cpu/alto2/alto2cpu.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type ALTO2 = device_creator<alto2_cpu_device>;
+DEFINE_DEVICE_TYPE(ALTO2, alto2_cpu_device, "alto2_cpu", "Xerox Alto-II")
//**************************************************************************
// LOGGING AND DEBUGGING
@@ -122,7 +122,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
alto2_cpu_device::alto2_cpu_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) :
- cpu_device(mconfig, ALTO2, "Xerox Alto-II", tag, owner, clock, "alto2_cpu", __FILE__),
+ cpu_device(mconfig, ALTO2, tag, owner, clock),
m_ucode_config("ucode", ENDIANNESS_BIG, 32, 12, -2 ),
m_const_config("const", ENDIANNESS_BIG, 16, 8, -1 ),
m_iomem_config("iomem", ENDIANNESS_BIG, 16, 17, -1 ),
diff --git a/src/devices/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h
index 58dbefd0984..440a8f972ba 100644
--- a/src/devices/cpu/alto2/alto2cpu.h
+++ b/src/devices/cpu/alto2/alto2cpu.h
@@ -8,6 +8,8 @@
#ifndef MAME_DEVICES_CPU_ALTO2_H
#define MAME_DEVICES_CPU_ALTO2_H
+#pragma once
+
#include "machine/diablo_hd.h"
#include "sound/spkrdev.h"
@@ -937,6 +939,6 @@ private:
#include "a2kwd.h"
};
-extern const device_type ALTO2;
+DECLARE_DEVICE_TYPE(ALTO2, alto2_cpu_device)
#endif // MAME_DEVICES_CPU_ALTO2_H
diff --git a/src/devices/cpu/am29000/am29000.cpp b/src/devices/cpu/am29000/am29000.cpp
index 8960629ea9e..691b23edfb3 100644
--- a/src/devices/cpu/am29000/am29000.cpp
+++ b/src/devices/cpu/am29000/am29000.cpp
@@ -19,7 +19,7 @@
#include "am29000.h"
-const device_type AM29000 = device_creator<am29000_cpu_device>;
+DEFINE_DEVICE_TYPE(AM29000, am29000_cpu_device, "am29000", "AMC Am29000")
/***************************************************************************
@@ -79,7 +79,7 @@ const device_type AM29000 = device_creator<am29000_cpu_device>;
***************************************************************************/
am29000_cpu_device::am29000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, AM29000, "AMD Am29000", tag, owner, clock, "am29000", __FILE__)
+ : cpu_device(mconfig, AM29000, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 32, 32, 0)
, m_io_config("io", ENDIANNESS_BIG, 32, 32, 0)
, m_data_config("data", ENDIANNESS_BIG, 32, 32, 0)
diff --git a/src/devices/cpu/am29000/am29000.h b/src/devices/cpu/am29000/am29000.h
index d685e5c7272..16b8ebccd67 100644
--- a/src/devices/cpu/am29000/am29000.h
+++ b/src/devices/cpu/am29000/am29000.h
@@ -8,10 +8,11 @@
***************************************************************************/
+#ifndef MAME_CPU_AM29000_AM29000_H
+#define MAME_CPU_AM29000_AM29000_H
+
#pragma once
-#ifndef __AM29000_H__
-#define __AM29000_H__
/***************************************************************************
@@ -431,7 +432,7 @@ enum
#define AM29000_INTR3 3
-class am29000_cpu_device : public cpu_device
+class am29000_cpu_device : public cpu_device
{
public:
// construction/destruction
@@ -655,7 +656,6 @@ protected:
};
-extern const device_type AM29000;
-
+DECLARE_DEVICE_TYPE(AM29000, am29000_cpu_device)
-#endif /* __AM29000_H__ */
+#endif // MAME_CPU_AM29000_AM29000_H
diff --git a/src/devices/cpu/amis2000/amis2000.cpp b/src/devices/cpu/amis2000/amis2000.cpp
index 5d1436d2fe6..e1bdc09970e 100644
--- a/src/devices/cpu/amis2000/amis2000.cpp
+++ b/src/devices/cpu/amis2000/amis2000.cpp
@@ -26,11 +26,11 @@
// S2000 is the most basic one, 64 nibbles internal RAM and 1KB internal ROM
// S2150 increased RAM to 80 nibbles and ROM to 1.5KB
// high-voltage output versions of these chips (S2000A and S2150A) are identical overall
-const device_type AMI_S2000 = device_creator<amis2000_cpu_device>;
-const device_type AMI_S2150 = device_creator<amis2150_cpu_device>;
+DEFINE_DEVICE_TYPE(AMI_S2000, amis2000_cpu_device, "amis2000", "AMI S2000")
+DEFINE_DEVICE_TYPE(AMI_S2150, amis2150_cpu_device, "amis2150", "AMI S2150")
// S2152 is an extension to S2150, removing the K pins and adding a better timer
-const device_type AMI_S2152 = device_creator<amis2152_cpu_device>;
+DEFINE_DEVICE_TYPE(AMI_S2152, amis2152_cpu_device, "amis2152", "AMI S2152")
// internal memory maps
@@ -57,15 +57,15 @@ ADDRESS_MAP_END
// device definitions
amis2000_cpu_device::amis2000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : amis2000_base_device(mconfig, AMI_S2000, "AMI S2000", tag, owner, clock, 2, 10, 3, 13, ADDRESS_MAP_NAME(program_1k), 6, ADDRESS_MAP_NAME(data_64x4), "amis2000", __FILE__)
+ : amis2000_base_device(mconfig, AMI_S2000, tag, owner, clock, 2, 10, 3, 13, ADDRESS_MAP_NAME(program_1k), 6, ADDRESS_MAP_NAME(data_64x4))
{ }
amis2150_cpu_device::amis2150_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : amis2000_base_device(mconfig, AMI_S2150, "AMI S2150", tag, owner, clock, 3, 11, 3, 13, ADDRESS_MAP_NAME(program_1_5k), 7, ADDRESS_MAP_NAME(data_80x4), "amis2150", __FILE__)
+ : amis2000_base_device(mconfig, AMI_S2150, tag, owner, clock, 3, 11, 3, 13, ADDRESS_MAP_NAME(program_1_5k), 7, ADDRESS_MAP_NAME(data_80x4))
{ }
amis2152_cpu_device::amis2152_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : amis2000_base_device(mconfig, AMI_S2152, "AMI S2152", tag, owner, clock, 3, 11, 3, 13, ADDRESS_MAP_NAME(program_1_5k), 7, ADDRESS_MAP_NAME(data_80x4), "amis2152", __FILE__)
+ : amis2000_base_device(mconfig, AMI_S2152, tag, owner, clock, 3, 11, 3, 13, ADDRESS_MAP_NAME(program_1_5k), 7, ADDRESS_MAP_NAME(data_80x4))
{ }
diff --git a/src/devices/cpu/amis2000/amis2000.h b/src/devices/cpu/amis2000/amis2000.h
index d411a1b5f60..dc4b6d8e832 100644
--- a/src/devices/cpu/amis2000/amis2000.h
+++ b/src/devices/cpu/amis2000/amis2000.h
@@ -6,9 +6,10 @@
*/
-#ifndef _AMIS2000_H_
-#define _AMIS2000_H_
+#ifndef MAME_CPU_AMIS2000_AMIS2000_H
+#define MAME_CPU_AMIS2000_AMIS2000_H
+#pragma once
// generic input pins (4 bits each)
@@ -42,9 +43,19 @@
class amis2000_base_device : public cpu_device
{
public:
+ // static configuration helpers
+ template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_i_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_i.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_a_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_a.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); }
+ static void set_7seg_table(device_t &device, const u8 *ptr) { downcast<amis2000_base_device &>(device).m_7seg_table = ptr; }
+
+protected:
// construction/destruction
- amis2000_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 bu_bits, u8 callstack_bits, u8 callstack_depth, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ amis2000_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 bu_bits, u8 callstack_bits, u8 callstack_depth, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 8, prgwidth, 0, program)
, m_data_config("data", ENDIANNESS_BIG, 8, datawidth, 0, data)
, m_bu_bits(bu_bits)
@@ -57,18 +68,9 @@ public:
, m_write_d(*this)
, m_write_a(*this)
, m_write_f(*this)
- { }
-
- // static configuration helpers
- template<class _Object> static devcb_base &set_read_k_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_read_k.set_callback(object); }
- template<class _Object> static devcb_base &set_read_i_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_read_i.set_callback(object); }
- template<class _Object> static devcb_base &set_read_d_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_read_d.set_callback(object); }
- template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_write_d.set_callback(object); }
- template<class _Object> static devcb_base &set_write_a_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_write_a.set_callback(object); }
- template<class _Object> static devcb_base &set_write_f_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_write_f.set_callback(object); }
- static void set_7seg_table(device_t &device, const u8 *ptr) { downcast<amis2000_base_device &>(device).m_7seg_table = ptr; }
+ {
+ }
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -236,10 +238,8 @@ protected:
};
+DECLARE_DEVICE_TYPE(AMI_S2000, amis2000_cpu_device)
+DECLARE_DEVICE_TYPE(AMI_S2150, amis2150_cpu_device)
+DECLARE_DEVICE_TYPE(AMI_S2152, amis2152_cpu_device)
-extern const device_type AMI_S2000;
-extern const device_type AMI_S2150;
-extern const device_type AMI_S2152;
-
-
-#endif /* _AMIS2000_H_ */
+#endif // MAME_CPU_AMIS2000_AMIS2000_H
diff --git a/src/devices/cpu/apexc/apexc.cpp b/src/devices/cpu/apexc/apexc.cpp
index 46ead8310c1..aad7126433d 100644
--- a/src/devices/cpu/apexc/apexc.cpp
+++ b/src/devices/cpu/apexc/apexc.cpp
@@ -326,11 +326,11 @@ field: X address D Function Y address D (part 2)
*/
#include "emu.h"
-#include "debugger.h"
#include "apexc.h"
+#include "debugger.h"
-const device_type APEXC = device_creator<apexc_cpu_device>;
+DEFINE_DEVICE_TYPE(APEXC, apexc_cpu_device, "apexc_cpu", "APEXC")
/* decrement ICount by n */
@@ -338,7 +338,7 @@ const device_type APEXC = device_creator<apexc_cpu_device>;
apexc_cpu_device::apexc_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, APEXC, "APEXC", tag, owner, clock, "apexc_cpu", __FILE__)
+ : cpu_device(mconfig, APEXC, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 32, 15, 0)
, m_io_config("io", ENDIANNESS_BIG, 8, 1, 0)
, m_a(0)
diff --git a/src/devices/cpu/apexc/apexc.h b/src/devices/cpu/apexc/apexc.h
index dfb9bb5d58d..bf753180dd8 100644
--- a/src/devices/cpu/apexc/apexc.h
+++ b/src/devices/cpu/apexc/apexc.h
@@ -1,10 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Raphael Nabet
/* register names for apexc_get_reg & apexc_set_reg */
-#pragma once
+#ifndef MAME_CPU_APEXC_APEXC_H
+#define MAME_CPU_APEXC_APEXC_H
-#ifndef __APEXC_H__
-#define __APEXC_H__
+#pragma once
enum
{
@@ -81,7 +81,6 @@ protected:
};
-extern const device_type APEXC;
-
+DECLARE_DEVICE_TYPE(APEXC, apexc_cpu_device)
-#endif /* __APEXC_H__ */
+#endif // MAME_CPU_APEXC_APEXC_H
diff --git a/src/devices/cpu/arc/arc.cpp b/src/devices/cpu/arc/arc.cpp
index c1ebd6f2eff..eb71302468a 100644
--- a/src/devices/cpu/arc/arc.cpp
+++ b/src/devices/cpu/arc/arc.cpp
@@ -14,18 +14,19 @@
#include "arc.h"
-const device_type ARC = device_creator<arc_device>;
+DEFINE_DEVICE_TYPE(ARC, arc_cpu_device, "arc_a4", "ARCtangent A4")
-arc_device::arc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, ARC, "ARCtangent A4", tag, owner, clock, "arc", __FILE__)
- , m_program_config("program", ENDIANNESS_BIG, 32, 24, 0), m_pc(0), m_program(nullptr), m_icount(0), m_debugger_temp(0)
+arc_cpu_device::arc_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, ARC, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_BIG, 32, 24, 0)
+ , m_pc(0), m_program(nullptr), m_icount(0), m_debugger_temp(0)
// some docs describe these as 'middle endian'?!
{
}
-offs_t arc_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options)
+offs_t arc_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options)
{
extern CPU_DISASSEMBLE( arc );
return CPU_DISASSEMBLE_NAME(arc)(this, stream, pc, oprom, opram, options);
@@ -36,26 +37,26 @@ offs_t arc_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uin
/*****************************************************************************/
-void arc_device::unimplemented_opcode(uint16_t op)
+void arc_cpu_device::unimplemented_opcode(uint16_t op)
{
fatalerror("arc: unknown opcode %04x at %04x\n", op, m_pc << 2);
}
/*****************************************************************************/
-uint32_t arc_device::READ32(uint32_t address)
+uint32_t arc_cpu_device::READ32(uint32_t address)
{
return m_program->read_dword(address << 2);
}
-void arc_device::WRITE32(uint32_t address, uint32_t data)
+void arc_cpu_device::WRITE32(uint32_t address, uint32_t data)
{
m_program->write_dword(address << 2, data);
}
/*****************************************************************************/
-void arc_device::device_start()
+void arc_cpu_device::device_start()
{
m_pc = 0;
@@ -75,7 +76,7 @@ void arc_device::device_start()
// to a known location where it can be read
//-------------------------------------------------
-void arc_device::state_export(const device_state_entry &entry)
+void arc_cpu_device::state_export(const device_state_entry &entry)
{
switch (entry.index())
{
@@ -92,7 +93,7 @@ void arc_device::state_export(const device_state_entry &entry)
// after it has been set
//-------------------------------------------------
-void arc_device::state_import(const device_state_entry &entry)
+void arc_cpu_device::state_import(const device_state_entry &entry)
{
switch (entry.index())
{
@@ -103,19 +104,19 @@ void arc_device::state_import(const device_state_entry &entry)
}
}
-void arc_device::device_reset()
+void arc_cpu_device::device_reset()
{
m_pc = 0x00000000;
}
/*****************************************************************************/
-void arc_device::execute_set_input(int irqline, int state)
+void arc_cpu_device::execute_set_input(int irqline, int state)
{
}
-void arc_device::execute_run()
+void arc_cpu_device::execute_run()
{
//uint32_t lres;
//lres = 0;
diff --git a/src/devices/cpu/arc/arc.h b/src/devices/cpu/arc/arc.h
index 04639abf17c..78975cdad87 100644
--- a/src/devices/cpu/arc/arc.h
+++ b/src/devices/cpu/arc/arc.h
@@ -7,21 +7,21 @@
\*********************************/
-#pragma once
+#ifndef MAME_CPU_ARC_ARC_H
+#define MAME_CPU_ARC_ARC_H
-#ifndef __ARC_H__
-#define __ARC_H__
+#pragma once
enum
{
ARC_PC = STATE_GENPC
};
-class arc_device : public cpu_device
+class arc_cpu_device : public cpu_device
{
public:
// construction/destruction
- arc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ arc_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
// device-level overrides
@@ -74,7 +74,6 @@ private:
};
-extern const device_type ARC;
-
+DECLARE_DEVICE_TYPE(ARC, arc_cpu_device)
-#endif /* __ARC_H__ */
+#endif // MAME_CPU_ARC_ARC_H
diff --git a/src/devices/cpu/arcompact/arcompact.cpp b/src/devices/cpu/arcompact/arcompact.cpp
index d4fdf778088..331f9e9d448 100644
--- a/src/devices/cpu/arcompact/arcompact.cpp
+++ b/src/devices/cpu/arcompact/arcompact.cpp
@@ -24,7 +24,7 @@
#include "arcompact_common.h"
-const device_type ARCA5 = device_creator<arcompact_device>;
+DEFINE_DEVICE_TYPE(ARCA5, arcompact_device, "arc_a5", "ARCtangent A5")
READ32_MEMBER( arcompact_device::arcompact_auxreg002_LPSTART_r) { return m_LP_START&0xfffffffe; }
@@ -51,7 +51,7 @@ ADDRESS_MAP_END
#define AUX_SPACE_ADDRESS_WIDTH 64 // but the MAME core requires us to use power of 2 values for >32
arcompact_device::arcompact_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, ARCA5, "ARCtangent-A5", tag, owner, clock, "arca5", __FILE__)
+ : cpu_device(mconfig, ARCA5, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0) // some docs describe these as 'middle endian'?!
, m_io_config( "io", ENDIANNESS_LITTLE, 32, AUX_SPACE_ADDRESS_WIDTH, 0, ADDRESS_MAP_NAME( arcompact_auxreg_map ) )
{
diff --git a/src/devices/cpu/arcompact/arcompact.h b/src/devices/cpu/arcompact/arcompact.h
index 227abe8f912..78cc1e26ed5 100644
--- a/src/devices/cpu/arcompact/arcompact.h
+++ b/src/devices/cpu/arcompact/arcompact.h
@@ -6,10 +6,10 @@
\*********************************/
-#pragma once
+#ifndef MAME_CPU_ARCOMPACT_ARCOMPACT_H
+#define MAME_CPU_ARCOMPACT_ARCOMPACT_H
-#ifndef __ARCOMPACT_H__
-#define __ARCOMPACT_H__
+#pragma once
enum
{
@@ -894,7 +894,7 @@ private:
#define CONDITION_LT ((STATUS32_CHECK_N && !STATUS32_CHECK_V) || (!STATUS32_CHECK_N && STATUS32_CHECK_V))
#define CONDITION_MI (STATUS32_CHECK_N)
-extern const device_type ARCA5;
+DECLARE_DEVICE_TYPE(ARCA5, arcompact_device)
-#endif /* __ARCOMPACT_H__ */
+#endif // MAME_CPU_ARCOMPACT_ARCOMPACT_H
diff --git a/src/devices/cpu/arm/arm.cpp b/src/devices/cpu/arm/arm.cpp
index 1fba0a93f34..ab8dff26921 100644
--- a/src/devices/cpu/arm/arm.cpp
+++ b/src/devices/cpu/arm/arm.cpp
@@ -18,8 +18,8 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "arm.h"
+#include "debugger.h"
CPU_DISASSEMBLE( arm );
CPU_DISASSEMBLE( arm_be );
@@ -224,32 +224,28 @@ enum
/***************************************************************************/
-const device_type ARM = device_creator<arm_cpu_device>;
-const device_type ARM_BE = device_creator<arm_be_cpu_device>;
+DEFINE_DEVICE_TYPE(ARM, arm_cpu_device, "arm_le", "ARM (little)")
+DEFINE_DEVICE_TYPE(ARM_BE, arm_be_cpu_device, "arm_be", "ARM (big)")
arm_cpu_device::arm_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, ARM, "ARM", tag, owner, clock, "arm", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 32, 26, 0)
- , m_endian(ENDIANNESS_LITTLE)
- , m_copro_type(ARM_COPRO_TYPE_UNKNOWN_CP15)
+ : arm_cpu_device(mconfig, ARM, tag, owner, clock, ENDIANNESS_LITTLE)
{
- memset(m_sArmRegister, 0x00, sizeof(m_sArmRegister));
}
-arm_cpu_device::arm_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, endianness_t endianness)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+arm_cpu_device::arm_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", endianness, 32, 26, 0)
, m_endian(endianness)
- , m_copro_type(ARM_COPRO_TYPE_UNKNOWN_CP15)
+ , m_copro_type(copro_type::UNKNOWN_CP15)
{
- memset(m_sArmRegister, 0x00, sizeof(m_sArmRegister));
+ std::fill(std::begin(m_sArmRegister), std::end(m_sArmRegister), 0);
}
arm_be_cpu_device::arm_be_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arm_cpu_device(mconfig, ARM_BE, "ARM (big endian)", tag, owner, clock, "arm_be", __FILE__, ENDIANNESS_BIG)
+ : arm_cpu_device(mconfig, ARM_BE, tag, owner, clock, ENDIANNESS_BIG)
{
}
@@ -420,7 +416,7 @@ void arm_cpu_device::execute_run()
}
else if ((insn & 0x0f000000u) == 0x0e000000u) /* Coprocessor */
{
- if (m_copro_type == ARM_COPRO_TYPE_VL86C020)
+ if (m_copro_type == copro_type::VL86C020)
HandleCoProVL86C020(insn);
else
HandleCoPro(insn);
@@ -679,7 +675,7 @@ void arm_cpu_device::HandleMemSingle( uint32_t insn )
In other cases, 4 is subracted from R15 here to account for pipelining.
*/
- if (m_copro_type == ARM_COPRO_TYPE_VL86C020 || (cpu_read32(rnv)&3)==0)
+ if (m_copro_type == copro_type::VL86C020 || (cpu_read32(rnv)&3)==0)
R15 -= 4;
m_icount -= S_CYCLE + N_CYCLE;
diff --git a/src/devices/cpu/arm/arm.h b/src/devices/cpu/arm/arm.h
index 4c8dbec4384..e3d1e77dfec 100644
--- a/src/devices/cpu/arm/arm.h
+++ b/src/devices/cpu/arm/arm.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Bryan McPhail
-#pragma once
+#ifndef MAME_CPU_ARM_ARM_H
+#define MAME_CPU_ARM_ARM_H
-#ifndef __ARM_H__
-#define __ARM_H__
+#pragma once
/****************************************************************************************************
* INTERRUPT CONSTANTS
@@ -16,36 +16,36 @@
* PUBLIC FUNCTIONS
***************************************************************************************************/
-enum
-{
- ARM_COPRO_TYPE_UNKNOWN_CP15 = 0,
- ARM_COPRO_TYPE_VL86C020
-};
-
#define MCFG_ARM_COPRO(_type) \
- arm_cpu_device::set_copro_type(*device, _type);
-
-
-enum
-{
- ARM32_PC=0,
- ARM32_R0, ARM32_R1, ARM32_R2, ARM32_R3, ARM32_R4, ARM32_R5, ARM32_R6, ARM32_R7,
- ARM32_R8, ARM32_R9, ARM32_R10, ARM32_R11, ARM32_R12, ARM32_R13, ARM32_R14, ARM32_R15,
- ARM32_FR8, ARM32_FR9, ARM32_FR10, ARM32_FR11, ARM32_FR12, ARM32_FR13, ARM32_FR14,
- ARM32_IR13, ARM32_IR14, ARM32_SR13, ARM32_SR14
-};
+ arm_cpu_device::set_copro_type(*device, arm_cpu_device::copro_type::_type);
class arm_cpu_device : public cpu_device
{
public:
+ enum class copro_type : uint8_t
+ {
+ UNKNOWN_CP15 = 0,
+ VL86C020
+ };
+
// construction/destruction
arm_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- arm_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, endianness_t endianness);
- static void set_copro_type(device_t &device, int type) { downcast<arm_cpu_device &>(device).m_copro_type = type; }
+ static void set_copro_type(device_t &device, copro_type type) { downcast<arm_cpu_device &>(device).m_copro_type = type; }
protected:
+ enum
+ {
+ ARM32_PC = 0,
+ ARM32_R0, ARM32_R1, ARM32_R2, ARM32_R3, ARM32_R4, ARM32_R5, ARM32_R6, ARM32_R7,
+ ARM32_R8, ARM32_R9, ARM32_R10, ARM32_R11, ARM32_R12, ARM32_R13, ARM32_R14, ARM32_R15,
+ ARM32_FR8, ARM32_FR9, ARM32_FR10, ARM32_FR11, ARM32_FR12, ARM32_FR13, ARM32_FR14,
+ ARM32_IR13, ARM32_IR14, ARM32_SR13, ARM32_SR14
+ };
+
+ arm_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -78,7 +78,7 @@ protected:
address_space *m_program;
direct_read_data *m_direct;
endianness_t m_endian;
- uint8_t m_copro_type;
+ copro_type m_copro_type;
void cpu_write32( int addr, uint32_t data );
void cpu_write8( int addr, uint8_t data );
@@ -117,8 +117,7 @@ protected:
};
-extern const device_type ARM;
-extern const device_type ARM_BE;
-
+DECLARE_DEVICE_TYPE(ARM, arm_cpu_device)
+DECLARE_DEVICE_TYPE(ARM_BE, arm_be_cpu_device)
-#endif /* __ARM_H__ */
+#endif // MAME_CPU_ARM_ARM_H
diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp
index 4933ea18b52..eaeb3052393 100644
--- a/src/devices/cpu/arm7/arm7.cpp
+++ b/src/devices/cpu/arm7/arm7.cpp
@@ -45,30 +45,23 @@ void (*arm7_coproc_dt_r_callback)(arm_state *arm, uint32_t insn, uint32_t *prn,
void (*arm7_coproc_dt_w_callback)(arm_state *arm, uint32_t insn, uint32_t *prn, void (*write32)(arm_state *arm, uint32_t addr, uint32_t data));
-const device_type ARM7 = device_creator<arm7_cpu_device>;
-const device_type ARM7_BE = device_creator<arm7_be_cpu_device>;
-const device_type ARM7500 = device_creator<arm7500_cpu_device>;
-const device_type ARM9 = device_creator<arm9_cpu_device>;
-const device_type ARM920T = device_creator<arm920t_cpu_device>;
-const device_type PXA255 = device_creator<pxa255_cpu_device>;
-const device_type SA1110 = device_creator<sa1110_cpu_device>;
+DEFINE_DEVICE_TYPE(ARM7, arm7_cpu_device, "arm7_le", "ARM7 (little)")
+DEFINE_DEVICE_TYPE(ARM7_BE, arm7_be_cpu_device, "arm7_be", "ARM7 (big)")
+DEFINE_DEVICE_TYPE(ARM7500, arm7500_cpu_device, "arm7500", "ARM7500")
+DEFINE_DEVICE_TYPE(ARM9, arm9_cpu_device, "arm9", "ARM9")
+DEFINE_DEVICE_TYPE(ARM920T, arm920t_cpu_device, "arm920t", "ARM920T")
+DEFINE_DEVICE_TYPE(PXA255, pxa255_cpu_device, "pxa255", "Intel XScale PXA255")
+DEFINE_DEVICE_TYPE(SA1110, sa1110_cpu_device, "sa1110", "Intel StrongARM SA-1110")
arm7_cpu_device::arm7_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, ARM7, "ARM7", tag, owner, clock, "arm7", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0)
- , m_endian(ENDIANNESS_LITTLE)
- , m_archRev(4) // ARMv4
- , m_archFlags(eARM_ARCHFLAGS_T) // has Thumb
- , m_copro_id(0x41 | (1 << 23) | (7 << 12)) // <-- where did this come from?
- , m_pc(0)
+ : arm7_cpu_device(mconfig, ARM7, tag, owner, clock, 4, eARM_ARCHFLAGS_T, ENDIANNESS_LITTLE)
{
- memset(m_r, 0x00, sizeof(m_r));
}
-arm7_cpu_device::arm7_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, uint8_t archRev, uint8_t archFlags, endianness_t endianness)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+arm7_cpu_device::arm7_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t archRev, uint8_t archFlags, endianness_t endianness)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", endianness, 32, 32, 0)
, m_endian(endianness)
, m_archRev(archRev)
@@ -81,20 +74,20 @@ arm7_cpu_device::arm7_cpu_device(const machine_config &mconfig, device_type type
arm7_be_cpu_device::arm7_be_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arm7_cpu_device(mconfig, ARM7_BE, "ARM7 (big endian)", tag, owner, clock, "arm7_be", __FILE__, 4, eARM_ARCHFLAGS_T, ENDIANNESS_BIG)
+ : arm7_cpu_device(mconfig, ARM7_BE, tag, owner, clock, 4, eARM_ARCHFLAGS_T, ENDIANNESS_BIG)
{
}
arm7500_cpu_device::arm7500_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arm7_cpu_device(mconfig, ARM7500, "ARM7500", tag, owner, clock, "arm7500", __FILE__, 3, eARM_ARCHFLAGS_MODE26)
+ : arm7_cpu_device(mconfig, ARM7500, tag, owner, clock, 3, eARM_ARCHFLAGS_MODE26, ENDIANNESS_LITTLE)
{
m_copro_id = (0x41 << 24) | (0 << 20) | (1 << 16) | (0x710 << 4) | (0 << 0);
}
arm9_cpu_device::arm9_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arm7_cpu_device(mconfig, ARM9, "ARM9", tag, owner, clock, "arm9", __FILE__, 5, eARM_ARCHFLAGS_T | eARM_ARCHFLAGS_E)
+ : arm7_cpu_device(mconfig, ARM9, tag, owner, clock, 5, eARM_ARCHFLAGS_T | eARM_ARCHFLAGS_E, ENDIANNESS_LITTLE)
// ARMv5
// has TE extensions
{
@@ -102,7 +95,7 @@ arm9_cpu_device::arm9_cpu_device(const machine_config &mconfig, const char *tag,
arm920t_cpu_device::arm920t_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arm7_cpu_device(mconfig, ARM920T, "ARM920T", tag, owner, clock, "arm920t", __FILE__, 4, eARM_ARCHFLAGS_T)
+ : arm7_cpu_device(mconfig, ARM920T, tag, owner, clock, 4, eARM_ARCHFLAGS_T, ENDIANNESS_LITTLE)
// ARMv4
// has T extension
{
@@ -111,7 +104,7 @@ arm920t_cpu_device::arm920t_cpu_device(const machine_config &mconfig, const char
pxa255_cpu_device::pxa255_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arm7_cpu_device(mconfig, PXA255, "PXA255", tag, owner, clock, "pxa255", __FILE__, 5, eARM_ARCHFLAGS_T | eARM_ARCHFLAGS_E | eARM_ARCHFLAGS_XSCALE)
+ : arm7_cpu_device(mconfig, PXA255, tag, owner, clock, 5, eARM_ARCHFLAGS_T | eARM_ARCHFLAGS_E | eARM_ARCHFLAGS_XSCALE, ENDIANNESS_LITTLE)
// ARMv5
// has TE and XScale extensions
{
@@ -119,7 +112,7 @@ pxa255_cpu_device::pxa255_cpu_device(const machine_config &mconfig, const char *
sa1110_cpu_device::sa1110_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arm7_cpu_device(mconfig, SA1110, "SA1110", tag, owner, clock, "sa1110", __FILE__, 4, eARM_ARCHFLAGS_SA)
+ : arm7_cpu_device(mconfig, SA1110, tag, owner, clock, 4, eARM_ARCHFLAGS_SA, ENDIANNESS_LITTLE)
// ARMv4
// has StrongARM, no Thumb, no Enhanced DSP
{
diff --git a/src/devices/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h
index d243c788e00..ca994db6a32 100644
--- a/src/devices/cpu/arm7/arm7.h
+++ b/src/devices/cpu/arm7/arm7.h
@@ -18,10 +18,10 @@
******************************************************************************/
-#pragma once
+#ifndef MAME_CPU_ARM7_ARM7_H
+#define MAME_CPU_ARM7_ARM7_H
-#ifndef __ARM7_H__
-#define __ARM7_H__
+#pragma once
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
@@ -51,9 +51,10 @@ class arm7_cpu_device : public cpu_device
public:
// construction/destruction
arm7_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- arm7_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, uint8_t archRev, uint8_t archFlags, endianness_t endianness = ENDIANNESS_LITTLE);
protected:
+ arm7_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t archRev, uint8_t archFlags, endianness_t endianness);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -506,7 +507,6 @@ class arm7_be_cpu_device : public arm7_cpu_device
public:
// construction/destruction
arm7_be_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
};
@@ -515,7 +515,6 @@ class arm7500_cpu_device : public arm7_cpu_device
public:
// construction/destruction
arm7500_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
};
@@ -524,7 +523,6 @@ class arm9_cpu_device : public arm7_cpu_device
public:
// construction/destruction
arm9_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
};
@@ -533,7 +531,6 @@ class arm920t_cpu_device : public arm7_cpu_device
public:
// construction/destruction
arm920t_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
};
@@ -542,7 +539,6 @@ class pxa255_cpu_device : public arm7_cpu_device
public:
// construction/destruction
pxa255_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
};
@@ -551,16 +547,15 @@ class sa1110_cpu_device : public arm7_cpu_device
public:
// construction/destruction
sa1110_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
};
-extern const device_type ARM7;
-extern const device_type ARM7_BE;
-extern const device_type ARM7500;
-extern const device_type ARM9;
-extern const device_type ARM920T;
-extern const device_type PXA255;
-extern const device_type SA1110;
+DECLARE_DEVICE_TYPE(ARM7, arm7_cpu_device)
+DECLARE_DEVICE_TYPE(ARM7_BE, arm7_be_cpu_device)
+DECLARE_DEVICE_TYPE(ARM7500, arm7500_cpu_device)
+DECLARE_DEVICE_TYPE(ARM9, arm9_cpu_device)
+DECLARE_DEVICE_TYPE(ARM920T, arm920t_cpu_device)
+DECLARE_DEVICE_TYPE(PXA255, pxa255_cpu_device)
+DECLARE_DEVICE_TYPE(SA1110, sa1110_cpu_device)
-#endif /* __ARM7_H__ */
+#endif // MAME_CPU_ARM7_ARM7_H
diff --git a/src/devices/cpu/arm7/lpc210x.cpp b/src/devices/cpu/arm7/lpc210x.cpp
index d9b21e9d5c1..e45b80461c0 100644
--- a/src/devices/cpu/arm7/lpc210x.cpp
+++ b/src/devices/cpu/arm7/lpc210x.cpp
@@ -15,7 +15,7 @@
#include "emu.h"
#include "lpc210x.h"
-const device_type LPC2103 = device_creator<lpc210x_device>;
+DEFINE_DEVICE_TYPE(LPC2103, lpc210x_device, "lpc2103", "NXP LPC2103")
static ADDRESS_MAP_START( lpc2103_map, AS_PROGRAM, 32, lpc210x_device )
AM_RANGE(0x00000000, 0x00007fff) AM_READWRITE(flash_r, flash_w) // 32kb internal FLASH rom
@@ -41,8 +41,8 @@ ADDRESS_MAP_END
lpc210x_device::lpc210x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arm7_cpu_device(mconfig, LPC2103, "LPC2103", tag, owner, clock, "lpc2103", __FILE__, 4, eARM_ARCHFLAGS_T, ENDIANNESS_LITTLE),
- m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0, ADDRESS_MAP_NAME(lpc2103_map))
+ : arm7_cpu_device(mconfig, LPC2103, tag, owner, clock, 4, eARM_ARCHFLAGS_T, ENDIANNESS_LITTLE)
+ , m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0, ADDRESS_MAP_NAME(lpc2103_map))
{
}
diff --git a/src/devices/cpu/arm7/lpc210x.h b/src/devices/cpu/arm7/lpc210x.h
index 581560a3a62..de71075314c 100644
--- a/src/devices/cpu/arm7/lpc210x.h
+++ b/src/devices/cpu/arm7/lpc210x.h
@@ -1,10 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
-#pragma once
+#ifndef MAME_CPU_ARM7_LPC2103_H
+#define MAME_CPU_ARM7_LPC2103_H
-#ifndef __LPC2103__
-#define __LPC2103__
+#pragma once
#include "arm7.h"
#include "arm7core.h"
@@ -25,9 +25,6 @@ public:
// static configuration helpers
- // todo, use an appropriate flash type instead
- uint8_t m_flash[0x8000];
-
DECLARE_READ32_MEMBER(arm_E01FC088_r);
DECLARE_READ32_MEMBER(flash_r);
@@ -43,8 +40,6 @@ public:
void write_timer(address_space &space, int timer, int offset, uint32_t data, uint32_t mem_mask);
uint32_t read_timer(address_space &space, int timer, int offset, uint32_t mem_mask);
- uint32_t m_TxPR[2];
-
// VIC
DECLARE_READ32_MEMBER(vic_r);
DECLARE_WRITE32_MEMBER(vic_w);
@@ -73,31 +68,25 @@ public:
DECLARE_READ32_MEMBER(fio_r);
DECLARE_WRITE32_MEMBER(fio_w);
+ // todo, use an appropriate flash type instead
+ uint8_t m_flash[0x8000]; // needs to be public because the harmony/melody device injects contents with memcpy, yuck
+
protected:
// device-level overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void device_start() override;
virtual void device_reset() override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
-
-
-
-
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
+ uint32_t m_TxPR[2];
private:
address_space_config m_program_config;
-
-
-
-
-
};
// device type definition
-extern const device_type LPC2103;
-
+DECLARE_DEVICE_TYPE(LPC2103, lpc210x_device)
-#endif /// __LPC2103__
+#endif // MAME_CPU_ARM7_LPC2103_H
diff --git a/src/devices/cpu/asap/asap.cpp b/src/devices/cpu/asap/asap.cpp
index ccf461162d1..17d00735a7a 100644
--- a/src/devices/cpu/asap/asap.cpp
+++ b/src/devices/cpu/asap/asap.cpp
@@ -12,27 +12,27 @@
***************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "asap.h"
+#include "debugger.h"
//**************************************************************************
// CONSTANTS
//**************************************************************************
-const uint32_t PS_CFLAG = 0x00000001;
-const uint32_t PS_VFLAG = 0x00000002;
-const uint32_t PS_ZFLAG = 0x00000004;
-const uint32_t PS_NFLAG = 0x00000008;
-const uint32_t PS_IFLAG = 0x00000010;
-const uint32_t PS_PFLAG = 0x00000020;
+constexpr uint32_t PS_CFLAG = 0x00000001;
+constexpr uint32_t PS_VFLAG = 0x00000002;
+constexpr uint32_t PS_ZFLAG = 0x00000004;
+constexpr uint32_t PS_NFLAG = 0x00000008;
+constexpr uint32_t PS_IFLAG = 0x00000010;
+constexpr uint32_t PS_PFLAG = 0x00000020;
-//const int EXCEPTION_RESET = 0;
-const int EXCEPTION_TRAP0 = 1;
-const int EXCEPTION_TRAPF = 2;
-const int EXCEPTION_INTERRUPT = 3;
+//constexpr int EXCEPTION_RESET = 0;
+constexpr int EXCEPTION_TRAP0 = 1;
+constexpr int EXCEPTION_TRAPF = 2;
+constexpr int EXCEPTION_INTERRUPT = 3;
-const int REGBASE = 0xffe0;
+constexpr int REGBASE = 0xffe0;
@@ -130,14 +130,14 @@ const asap_device::ophandler asap_device::s_conditiontable[16] =
//**************************************************************************
// device type definition
-const device_type ASAP = device_creator<asap_device>;
+DEFINE_DEVICE_TYPE(ASAP, asap_device, "asap", "ASAP")
//-------------------------------------------------
// asap_device - constructor
//-------------------------------------------------
asap_device::asap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, ASAP, "ASAP", tag, owner, clock, "asap", __FILE__),
+ : cpu_device(mconfig, ASAP, tag, owner, clock),
m_program_config("program", ENDIANNESS_LITTLE, 32, 32),
m_pc(0),
m_pflag(0),
diff --git a/src/devices/cpu/asap/asap.h b/src/devices/cpu/asap/asap.h
index 4ac44a9bcdb..1f4c3a6e070 100644
--- a/src/devices/cpu/asap/asap.h
+++ b/src/devices/cpu/asap/asap.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_ASAP_ASAP_H
+#define MAME_CPU_ASAP_ASAP_H
-#ifndef __ASAP_H__
-#define __ASAP_H__
+#pragma once
//**************************************************************************
@@ -31,6 +31,44 @@ public:
// public interfaces
protected:
+ enum
+ {
+ ASAP_PC = 1,
+ ASAP_PS,
+ ASAP_R0,
+ ASAP_R1,
+ ASAP_R2,
+ ASAP_R3,
+ ASAP_R4,
+ ASAP_R5,
+ ASAP_R6,
+ ASAP_R7,
+ ASAP_R8,
+ ASAP_R9,
+ ASAP_R10,
+ ASAP_R11,
+ ASAP_R12,
+ ASAP_R13,
+ ASAP_R14,
+ ASAP_R15,
+ ASAP_R16,
+ ASAP_R17,
+ ASAP_R18,
+ ASAP_R19,
+ ASAP_R20,
+ ASAP_R21,
+ ASAP_R22,
+ ASAP_R23,
+ ASAP_R24,
+ ASAP_R25,
+ ASAP_R26,
+ ASAP_R27,
+ ASAP_R28,
+ ASAP_R29,
+ ASAP_R30,
+ ASAP_R31
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -222,45 +260,6 @@ protected:
// ENUMERATIONS
//**************************************************************************
-// registers
-enum
-{
- ASAP_PC = 1,
- ASAP_PS,
- ASAP_R0,
- ASAP_R1,
- ASAP_R2,
- ASAP_R3,
- ASAP_R4,
- ASAP_R5,
- ASAP_R6,
- ASAP_R7,
- ASAP_R8,
- ASAP_R9,
- ASAP_R10,
- ASAP_R11,
- ASAP_R12,
- ASAP_R13,
- ASAP_R14,
- ASAP_R15,
- ASAP_R16,
- ASAP_R17,
- ASAP_R18,
- ASAP_R19,
- ASAP_R20,
- ASAP_R21,
- ASAP_R22,
- ASAP_R23,
- ASAP_R24,
- ASAP_R25,
- ASAP_R26,
- ASAP_R27,
- ASAP_R28,
- ASAP_R29,
- ASAP_R30,
- ASAP_R31
-};
-
// input lines
enum
{
@@ -270,7 +269,6 @@ enum
// device type definition
-extern const device_type ASAP;
-
+DECLARE_DEVICE_TYPE(ASAP, asap_device)
-#endif /* __ASAP_H__ */
+#endif // MAME_CPU_ASAP_ASAP_H
diff --git a/src/devices/cpu/avr8/avr8.cpp b/src/devices/cpu/avr8/avr8.cpp
index a79ae1d06a7..01193dfa289 100644
--- a/src/devices/cpu/avr8/avr8.cpp
+++ b/src/devices/cpu/avr8/avr8.cpp
@@ -58,29 +58,25 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "avr8.h"
+#include "debugger.h"
#define VERBOSE_LEVEL (0)
#define ENABLE_VERBOSE_LOG (0)
-#if ENABLE_VERBOSE_LOG
-static inline void ATTR_PRINTF(3,4) verboselog(uint16_t pc, int n_level, const char *s_fmt, ...)
+static inline void ATTR_PRINTF(3, 4) verboselogout(device_t &dev, uint16_t pc, const char *s_fmt, ...)
{
- if( VERBOSE_LEVEL >= n_level )
- {
- va_list v;
- char buf[ 32768 ];
- va_start( v, s_fmt );
- vsprintf( buf, s_fmt, v );
- va_end( v );
- logerror( "%05x: %s", pc << 1, buf );
- }
+ va_list v;
+ char buf[ 32768 ];
+ va_start( v, s_fmt );
+ vsprintf( buf, s_fmt, v );
+ va_end( v );
+ dev.logerror( "%05x: %s", pc << 1, buf );
}
-#else
-#define verboselog(x,y,z, ...)
-#endif
+
+#define verboselog(x,y,...) do { if (ENABLE_VERBOSE_LOG && (VERBOSE_LEVEL >= y)) verboselogout(*this, x, __VA_ARGS__); } while (false)
+
//**************************************************************************
// ENUMS AND MACROS
@@ -171,7 +167,7 @@ enum
WGM5_FAST_PWM_OCR
};
-//static const char avr8_reg_name[4] = { 'A', 'B', 'C', 'D' };
+static const char avr8_reg_name[4] = { 'A', 'B', 'C', 'D' };
#define SREG_R(b) ((m_r[AVR8_REGIDX_SREG] & (1 << (b))) >> (b))
#define SREG_W(b,v) m_r[AVR8_REGIDX_SREG] = (m_r[AVR8_REGIDX_SREG] & ~(1 << (b))) | ((v) << (b))
@@ -567,10 +563,10 @@ enum
// DEVICE INTERFACE
//**************************************************************************
-const device_type ATMEGA88 = device_creator<atmega88_device>;
-const device_type ATMEGA644 = device_creator<atmega644_device>;
-const device_type ATMEGA1280 = device_creator<atmega1280_device>;
-const device_type ATMEGA2560 = device_creator<atmega2560_device>;
+DEFINE_DEVICE_TYPE(ATMEGA88, atmega88_device, "atmega88", "ATmega88")
+DEFINE_DEVICE_TYPE(ATMEGA644, atmega644_device, "atmega644", "ATmega644")
+DEFINE_DEVICE_TYPE(ATMEGA1280, atmega1280_device, "atmega1280", "ATmega1280")
+DEFINE_DEVICE_TYPE(ATMEGA2560, atmega2560_device, "atmega2560", "ATmega2560")
//**************************************************************************
// INTERNAL ADDRESS MAP
@@ -597,7 +593,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
atmega88_device::atmega88_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : avr8_device(mconfig, "ATMEGA88", tag, owner, clock, ATMEGA88, 0x0fff, ADDRESS_MAP_NAME(atmega88_internal_map), CPU_TYPE_ATMEGA88, "atmega88", __FILE__)
+ : avr8_device(mconfig, tag, owner, clock, ATMEGA88, 0x0fff, ADDRESS_MAP_NAME(atmega88_internal_map), CPU_TYPE_ATMEGA88)
{
}
@@ -606,7 +602,7 @@ atmega88_device::atmega88_device(const machine_config &mconfig, const char *tag,
//-------------------------------------------------
atmega644_device::atmega644_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : avr8_device(mconfig, "ATMEGA644", tag, owner, clock, ATMEGA644, 0xffff, ADDRESS_MAP_NAME(atmega644_internal_map), CPU_TYPE_ATMEGA644, "atmega644", __FILE__)
+ : avr8_device(mconfig, tag, owner, clock, ATMEGA644, 0xffff, ADDRESS_MAP_NAME(atmega644_internal_map), CPU_TYPE_ATMEGA644)
{
}
@@ -615,7 +611,7 @@ atmega644_device::atmega644_device(const machine_config &mconfig, const char *ta
//-------------------------------------------------
atmega1280_device::atmega1280_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : avr8_device(mconfig, "ATMEGA1280", tag, owner, clock, ATMEGA1280, 0x1ffff, ADDRESS_MAP_NAME(atmega1280_internal_map), CPU_TYPE_ATMEGA1280, "atmega1280", __FILE__)
+ : avr8_device(mconfig, tag, owner, clock, ATMEGA1280, 0x1ffff, ADDRESS_MAP_NAME(atmega1280_internal_map), CPU_TYPE_ATMEGA1280)
{
}
@@ -624,7 +620,7 @@ atmega1280_device::atmega1280_device(const machine_config &mconfig, const char *
//-------------------------------------------------
atmega2560_device::atmega2560_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : avr8_device(mconfig, "ATMEGA2560", tag, owner, clock, ATMEGA2560, 0x1ffff, ADDRESS_MAP_NAME(atmega2560_internal_map), CPU_TYPE_ATMEGA2560, "atmega2560", __FILE__)
+ : avr8_device(mconfig, tag, owner, clock, ATMEGA2560, 0x1ffff, ADDRESS_MAP_NAME(atmega2560_internal_map), CPU_TYPE_ATMEGA2560)
{
}
@@ -632,8 +628,8 @@ atmega2560_device::atmega2560_device(const machine_config &mconfig, const char *
// avr8_device - constructor
//-------------------------------------------------
-avr8_device::avr8_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock, const device_type type, uint32_t addr_mask, address_map_constructor internal_map, uint8_t cpu_type, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+avr8_device::avr8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const device_type type, uint32_t addr_mask, address_map_constructor internal_map, uint8_t cpu_type)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_shifted_pc(0)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 22)
, m_data_config("data", ENDIANNESS_LITTLE, 8, 16, 0, internal_map)
@@ -1774,7 +1770,7 @@ void avr8_device::timer4_tick()
break;
default:
- verboselog(m_pc, 0, "update_timer4_compare_mode: Unknown waveform generation mode: %02x\n", wgm4);
+ verboselog(m_pc, 0, "update_timer4_compare_mode: Unknown waveform generation mode: %02x\n", AVR8_WGM4);
break;
}
diff --git a/src/devices/cpu/avr8/avr8.h b/src/devices/cpu/avr8/avr8.h
index ffef27cd781..cfcaec7ae45 100644
--- a/src/devices/cpu/avr8/avr8.h
+++ b/src/devices/cpu/avr8/avr8.h
@@ -5,7 +5,7 @@
- Notes -
Cycle counts are generally considered to be 100% accurate per-instruction, does not support mid-instruction
- interrupts although no software has been countered yet that requires it. Evidence of cycle accuracy is given
+ interrupts although no software has been encountered yet that requires it. Evidence of cycle accuracy is given
in the form of the demoscene 'wild' demo, Craft, by [lft], which uses an ATmega88 to write video out a 6-bit
RGB DAC pixel-by-pixel, synchronously with the frame timing. Intentionally modifying the timing of any of
the existing opcodes has been shown to wildly corrupt the video output in Craft, so one can assume that the
@@ -37,10 +37,10 @@
*/
-#pragma once
+#ifndef MAME_CPU_AVR8_AVR8_H
+#define MAME_CPU_AVR8_AVR8_H
-#ifndef __AVR8_H__
-#define __AVR8_H__
+#pragma once
//**************************************************************************
@@ -90,10 +90,7 @@ public:
// public interfaces
virtual void update_interrupt(int source);
- uint64_t get_elapsed_cycles()
- {
- return m_elapsed_cycles;
- }
+ uint64_t get_elapsed_cycles() const { return m_elapsed_cycles; }
// register handling
DECLARE_WRITE8_MEMBER( regs_w );
@@ -109,7 +106,7 @@ protected:
CPU_TYPE_ATMEGA2560
};
- avr8_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock, const device_type type, uint32_t address_mask, address_map_constructor internal_map, uint8_t cpu_type, const char *shortname, const char *source);
+ avr8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const device_type type, uint32_t address_mask, address_map_constructor internal_map, uint8_t cpu_type);
// device-level overrides
virtual void device_start() override;
@@ -251,10 +248,10 @@ protected:
};
// device type definition
-extern const device_type ATMEGA88;
-extern const device_type ATMEGA644;
-extern const device_type ATMEGA1280;
-extern const device_type ATMEGA2560;
+DECLARE_DEVICE_TYPE(ATMEGA88, atmega88_device)
+DECLARE_DEVICE_TYPE(ATMEGA644, atmega644_device)
+DECLARE_DEVICE_TYPE(ATMEGA1280, atmega1280_device)
+DECLARE_DEVICE_TYPE(ATMEGA2560, atmega2560_device)
// ======================> atmega88_device
diff --git a/src/devices/cpu/ccpu/ccpu.cpp b/src/devices/cpu/ccpu/ccpu.cpp
index a7742e9b270..5ec2ae0a7c8 100644
--- a/src/devices/cpu/ccpu/ccpu.cpp
+++ b/src/devices/cpu/ccpu/ccpu.cpp
@@ -11,11 +11,11 @@
***************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "ccpu.h"
+#include "debugger.h"
-const device_type CCPU = device_creator<ccpu_cpu_device>;
+DEFINE_DEVICE_TYPE(CCPU, ccpu_cpu_device, "ccpu", "Cinematronics CPU")
/***************************************************************************
@@ -63,7 +63,7 @@ do { \
***************************************************************************/
ccpu_cpu_device::ccpu_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, CCPU, "Cinematronics CPU", tag, owner, clock, "ccpu", __FILE__)
+ : cpu_device(mconfig, CCPU, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 8, 15, 0)
, m_data_config("data", ENDIANNESS_BIG, 16, 32, -1)
, m_io_config("io", ENDIANNESS_BIG, 8, 5, 0)
diff --git a/src/devices/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h
index 73cd5c6109c..f08936e190a 100644
--- a/src/devices/cpu/ccpu/ccpu.h
+++ b/src/devices/cpu/ccpu/ccpu.h
@@ -10,32 +10,16 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_CCPU_CCPU_H
+#define MAME_CPU_CCPU_CCPU_H
-#ifndef __CCPU_H__
-#define __CCPU_H__
+#pragma once
/***************************************************************************
REGISTER ENUMERATION
***************************************************************************/
-enum
-{
- CCPU_PC=1,
- CCPU_FLAGS,
- CCPU_A,
- CCPU_B,
- CCPU_I,
- CCPU_J,
- CCPU_P,
- CCPU_X,
- CCPU_Y,
- CCPU_T
-};
-
-
-typedef device_delegate<void (int16_t, int16_t, int16_t, int16_t, uint8_t)> ccpu_vector_delegate;
#define MCFG_CCPU_EXTERNAL_FUNC(_devcb) \
@@ -48,12 +32,30 @@ typedef device_delegate<void (int16_t, int16_t, int16_t, int16_t, uint8_t)> ccpu
class ccpu_cpu_device : public cpu_device
{
public:
+ // register enumeration
+ // public because the cinemat driver accesses A/P/X/Y through state interace - should there be a proper public interface to read registers?
+ enum
+ {
+ CCPU_PC=1,
+ CCPU_FLAGS,
+ CCPU_A,
+ CCPU_B,
+ CCPU_I,
+ CCPU_J,
+ CCPU_P,
+ CCPU_X,
+ CCPU_Y,
+ CCPU_T
+ };
+
+ typedef device_delegate<void (int16_t, int16_t, int16_t, int16_t, uint8_t)> vector_delegate;
+
// construction/destruction
ccpu_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_external_func(device_t &device, _Object object) { return downcast<ccpu_cpu_device &>(device).m_external_input.set_callback(object); }
- static void set_vector_func(device_t &device, ccpu_vector_delegate callback) { downcast<ccpu_cpu_device &>(device).m_vector_callback = callback; }
+ template <class Object> static devcb_base &set_external_func(device_t &device, Object &&cb) { return downcast<ccpu_cpu_device &>(device).m_external_input.set_callback(std::forward<Object>(cb)); }
+ static void set_vector_func(device_t &device, vector_delegate callback) { downcast<ccpu_cpu_device &>(device).m_vector_callback = callback; }
DECLARE_READ8_MEMBER( read_jmi );
void wdt_timer_trigger();
@@ -109,7 +111,7 @@ protected:
uint16_t m_drflag;
devcb_read8 m_external_input;
- ccpu_vector_delegate m_vector_callback;
+ vector_delegate m_vector_callback;
uint8_t m_waiting;
uint8_t m_watchdog;
@@ -126,7 +128,6 @@ protected:
};
-extern const device_type CCPU;
-
+DECLARE_DEVICE_TYPE(CCPU, ccpu_cpu_device)
-#endif /* __CCPU_H__ */
+#endif // MAME_CPU_CCPU_CCPU_H
diff --git a/src/devices/cpu/clipper/clipper.cpp b/src/devices/cpu/clipper/clipper.cpp
index cd1c6ff7764..ffdc3177bfd 100644
--- a/src/devices/cpu/clipper/clipper.cpp
+++ b/src/devices/cpu/clipper/clipper.cpp
@@ -22,27 +22,51 @@
#include "clipper.h"
#define VERBOSE 0
-#if VERBOSE
-#define LOG_INTERRUPT(...) logerror(__VA_ARGS__)
-#else
-#define LOG_INTERRUPT(...)
-#endif
-
-const device_type CLIPPER_C100 = device_creator<clipper_c100_device>;
-const device_type CLIPPER_C300 = device_creator<clipper_c300_device>;
-const device_type CLIPPER_C400 = device_creator<clipper_c400_device>;
+#define LOG_INTERRUPT(...) do { if (VERBOSE) logerror(__VA_ARGS__); } while (false)
+
+// convenience macros for frequently used instruction fields
+#define R1 (m_info.r1)
+#define R2 (m_info.r2)
+
+// convenience macros for dealing with the psw
+#define PSW(mask) (m_psw & PSW_##mask)
+#define SSW(mask) (m_ssw & SSW_##mask)
+
+// macros for setting psw condition codes
+#define FLAGS(C,V,Z,N) \
+ m_psw = (m_psw & ~(PSW_C | PSW_V | PSW_Z | PSW_N)) | (((C) << 3) | ((V) << 2) | ((Z) << 1) | ((N) << 0));
+#define FLAGS_CV(C,V) \
+ m_psw = (m_psw & ~(PSW_C | PSW_V)) | (((C) << 3) | ((V) << 2));
+#define FLAGS_ZN(Z,N) \
+ m_psw = (m_psw & ~(PSW_Z | PSW_N)) | (((Z) << 1) | ((N) << 0));
+
+// over/underflow for addition/subtraction from here: http://stackoverflow.com/questions/199333/how-to-detect-integer-overflow-in-c-c
+#define OF_ADD(a, b) ((b > 0) && (a > INT_MAX - b))
+#define UF_ADD(a, b) ((b < 0) && (a < INT_MIN - b))
+#define OF_SUB(a, b) ((b < 0) && (a > INT_MAX + b))
+#define UF_SUB(a, b) ((b > 0) && (a < INT_MIN + b))
+
+// CLIPPER logic for carry and overflow flags
+#define C_ADD(a, b) ((u32)a + (u32)b < (u32)a)
+#define V_ADD(a, b) (OF_ADD((s32)a, (s32)b) || UF_ADD((s32)a, (s32)b))
+#define C_SUB(a, b) ((u32)a < (u32)b)
+#define V_SUB(a, b) (OF_SUB((s32)a, (s32)b) || UF_SUB((s32)a, (s32)b))
+
+DEFINE_DEVICE_TYPE(CLIPPER_C100, clipper_c100_device, "clipper_c100", "C100 CLIPPER")
+DEFINE_DEVICE_TYPE(CLIPPER_C300, clipper_c300_device, "clipper_c300", "C300 CLIPPER")
+DEFINE_DEVICE_TYPE(CLIPPER_C400, clipper_c400_device, "clipper_c400", "C400 CLIPPER")
clipper_c100_device::clipper_c100_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : clipper_device(mconfig, CLIPPER_C100, "C100 CLIPPER", tag, owner, clock, "c100", __FILE__) { }
+ : clipper_device(mconfig, CLIPPER_C100, tag, owner, clock) { }
clipper_c300_device::clipper_c300_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : clipper_device(mconfig, CLIPPER_C300, "C300 CLIPPER", tag, owner, clock, "c300", __FILE__) { }
+ : clipper_device(mconfig, CLIPPER_C300, tag, owner, clock) { }
clipper_c400_device::clipper_c400_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : clipper_device(mconfig, CLIPPER_C400, "C400 CLIPPER", tag, owner, clock, "c400", __FILE__) { }
+ : clipper_device(mconfig, CLIPPER_C400, tag, owner, clock) { }
-clipper_device::clipper_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+clipper_device::clipper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_pc(0),
m_r(m_rs),
m_insn_config("insn", ENDIANNESS_LITTLE, 32, 32, 0),
@@ -1245,7 +1269,7 @@ int clipper_device::execute_instruction ()
case 0x04:
// reti: restore psw, ssw and pc from supervisor stack
LOG_INTERRUPT("reti r%d, ssp = %08x, pc = %08x, next_pc = %08x\n",
- (macro >> 4) & 0xf, m_rs[(m_info.macro >> 4) & 0xf], m_pc, m_program->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 8));
+ (m_info.macro >> 4) & 0xf, m_rs[(m_info.macro >> 4) & 0xf], m_pc, m_insn->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 8));
m_psw = m_data->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 0);
m_ssw = m_data->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 4);
@@ -1303,7 +1327,7 @@ int clipper_device::execute_instruction ()
*/
u32 clipper_device::intrap(u32 vector, u32 pc, u32 cts, u32 mts)
{
- LOG_INTERRUPT("intrap - vector %x, pc = 0x%08x, next_pc = 0x%08x, ssp = 0x%08x\n", vector, pc, m_program->read_dword(vector + 4), m_rs[15]);
+ LOG_INTERRUPT("intrap - vector %x, pc = 0x%08x, next_pc = 0x%08x, ssp = 0x%08x\n", vector, pc, m_insn->read_dword(vector + 4), m_rs[15]);
// set cts and mts to indicate source of exception
m_psw = (m_psw & ~(PSW_CTS | PSW_MTS)) | mts | cts;
diff --git a/src/devices/cpu/clipper/clipper.h b/src/devices/cpu/clipper/clipper.h
index 6711a2f5e60..49857a0a689 100644
--- a/src/devices/cpu/clipper/clipper.h
+++ b/src/devices/cpu/clipper/clipper.h
@@ -1,39 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:Patrick Mackinlay
-#pragma once
+#ifndef MAME_CPU_CLIPPER_CLIPPER_H
+#define MAME_CPU_CLIPPER_CLIPPER_H
-#ifndef __CLIPPER_H__
-#define __CLIPPER_H__
+#pragma once
#include <limits.h>
-// convenience macros for frequently used instruction fields
-#define R1 (m_info.r1)
-#define R2 (m_info.r2)
-
-// convenience macros for dealing with the psw
-#define PSW(mask) (m_psw & PSW_##mask)
-#define SSW(mask) (m_ssw & SSW_##mask)
-
-// macros for setting psw condition codes
-#define FLAGS(C,V,Z,N) \
- m_psw = (m_psw & ~(PSW_C | PSW_V | PSW_Z | PSW_N)) | (((C) << 3) | ((V) << 2) | ((Z) << 1) | ((N) << 0));
-#define FLAGS_CV(C,V) \
- m_psw = (m_psw & ~(PSW_C | PSW_V)) | (((C) << 3) | ((V) << 2));
-#define FLAGS_ZN(Z,N) \
- m_psw = (m_psw & ~(PSW_Z | PSW_N)) | (((Z) << 1) | ((N) << 0));
-
-// over/underflow for addition/subtraction from here: http://stackoverflow.com/questions/199333/how-to-detect-integer-overflow-in-c-c
-#define OF_ADD(a, b) ((b > 0) && (a > INT_MAX - b))
-#define UF_ADD(a, b) ((b < 0) && (a < INT_MIN - b))
-#define OF_SUB(a, b) ((b < 0) && (a > INT_MAX + b))
-#define UF_SUB(a, b) ((b > 0) && (a < INT_MIN + b))
-
-// CLIPPER logic for carry and overflow flags
-#define C_ADD(a, b) ((u32)a + (u32)b < (u32)a)
-#define V_ADD(a, b) (OF_ADD((s32)a, (s32)b) || UF_ADD((s32)a, (s32)b))
-#define C_SUB(a, b) ((u32)a < (u32)b)
-#define V_SUB(a, b) (OF_SUB((s32)a, (s32)b) || UF_SUB((s32)a, (s32)b))
class clipper_device : public cpu_device
{
@@ -191,24 +164,24 @@ class clipper_device : public cpu_device
};
public:
- clipper_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);
-
DECLARE_READ_LINE_MEMBER(ssw) { return m_ssw; }
protected:
+ clipper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
// device_execute_interface overrides
- virtual u32 execute_min_cycles() const override { return 1; };
- virtual u32 execute_max_cycles() const override { return 1; }; // FIXME: don't know, especially macro instructions
- virtual u32 execute_input_lines() const override { return 2; }; // number of input/interrupt lines (irq/nmi)
+ virtual u32 execute_min_cycles() const override { return 1; }
+ virtual u32 execute_max_cycles() const override { return 1; } // FIXME: don't know, especially macro instructions
+ virtual u32 execute_input_lines() const override { return 2; } // number of input/interrupt lines (irq/nmi)
virtual void execute_run() override;
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
// device_state_interface overrides
#if 0
@@ -288,9 +261,10 @@ public:
clipper_c400_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
-extern const device_type CLIPPER_C100;
-extern const device_type CLIPPER_C300;
-extern const device_type CLIPPER_C400;
+DECLARE_DEVICE_TYPE(CLIPPER_C100, clipper_c100_device)
+DECLARE_DEVICE_TYPE(CLIPPER_C300, clipper_c300_device)
+DECLARE_DEVICE_TYPE(CLIPPER_C400, clipper_c400_device)
extern CPU_DISASSEMBLE(clipper);
-#endif /* __CLIPPER_H__ */
+
+#endif // MAME_CPU_CLIPPER_CLIPPER_H
diff --git a/src/devices/cpu/cop400/cop400.cpp b/src/devices/cpu/cop400/cop400.cpp
index 757cf0cf21f..7c04e615e2a 100644
--- a/src/devices/cpu/cop400/cop400.cpp
+++ b/src/devices/cpu/cop400/cop400.cpp
@@ -58,23 +58,23 @@
#include "cop400.h"
-const device_type COP401 = device_creator<cop401_cpu_device>;
-const device_type COP410 = device_creator<cop410_cpu_device>;
-const device_type COP411 = device_creator<cop411_cpu_device>;
-const device_type COP402 = device_creator<cop402_cpu_device>;
-const device_type COP420 = device_creator<cop420_cpu_device>;
-const device_type COP421 = device_creator<cop421_cpu_device>;
-const device_type COP422 = device_creator<cop422_cpu_device>;
-const device_type COP404L = device_creator<cop404l_cpu_device>;
-const device_type COP444L = device_creator<cop444l_cpu_device>;
-const device_type COP445L = device_creator<cop445l_cpu_device>;
-const device_type COP404C = device_creator<cop404c_cpu_device>;
-const device_type COP424C = device_creator<cop424c_cpu_device>;
-const device_type COP425C = device_creator<cop425c_cpu_device>;
-const device_type COP426C = device_creator<cop426c_cpu_device>;
-const device_type COP444C = device_creator<cop444c_cpu_device>;
-const device_type COP445C = device_creator<cop445c_cpu_device>;
-const device_type COP446C = device_creator<cop446c_cpu_device>;
+DEFINE_DEVICE_TYPE(COP401, cop401_cpu_device, "cop401", "COP401")
+DEFINE_DEVICE_TYPE(COP410, cop410_cpu_device, "cop410", "COP410")
+DEFINE_DEVICE_TYPE(COP411, cop411_cpu_device, "cop411", "COP411")
+DEFINE_DEVICE_TYPE(COP402, cop402_cpu_device, "cop402", "COP402")
+DEFINE_DEVICE_TYPE(COP420, cop420_cpu_device, "cop420", "COP420")
+DEFINE_DEVICE_TYPE(COP421, cop421_cpu_device, "cop421", "COP421")
+DEFINE_DEVICE_TYPE(COP422, cop422_cpu_device, "cop422", "COP422")
+DEFINE_DEVICE_TYPE(COP404L, cop404l_cpu_device, "cop404l", "COP404L")
+DEFINE_DEVICE_TYPE(COP444L, cop444l_cpu_device, "cop444l", "COP444L")
+DEFINE_DEVICE_TYPE(COP445L, cop445l_cpu_device, "cop445l", "COP445L")
+DEFINE_DEVICE_TYPE(COP404C, cop404c_cpu_device, "cop404c", "COP404C")
+DEFINE_DEVICE_TYPE(COP424C, cop424c_cpu_device, "cop424c", "COP424C")
+DEFINE_DEVICE_TYPE(COP425C, cop425c_cpu_device, "cop425c", "COP425C")
+DEFINE_DEVICE_TYPE(COP426C, cop426c_cpu_device, "cop426c", "COP426C")
+DEFINE_DEVICE_TYPE(COP444C, cop444c_cpu_device, "cop444c", "COP444C")
+DEFINE_DEVICE_TYPE(COP445C, cop445c_cpu_device, "cop445c", "COP445C")
+DEFINE_DEVICE_TYPE(COP446C, cop446c_cpu_device, "cop446c", "COP446C")
@@ -155,8 +155,8 @@ static ADDRESS_MAP_START( data_128b, AS_DATA, 8, cop400_cpu_device )
ADDRESS_MAP_END
-cop400_cpu_device::cop400_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, uint8_t program_addr_bits, uint8_t data_addr_bits, uint8_t featuremask, uint8_t g_mask, uint8_t d_mask, uint8_t in_mask, bool has_counter, bool has_inil, address_map_constructor internal_map_program, address_map_constructor internal_map_data)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+cop400_cpu_device::cop400_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t program_addr_bits, uint8_t data_addr_bits, uint8_t featuremask, uint8_t g_mask, uint8_t d_mask, uint8_t in_mask, bool has_counter, bool has_inil, address_map_constructor internal_map_program, address_map_constructor internal_map_data)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, program_addr_bits, 0, internal_map_program)
, m_data_config("data", ENDIANNESS_LITTLE, 8, data_addr_bits, 0, internal_map_data) // data width is really 4
, m_read_l(*this)
@@ -230,87 +230,87 @@ cop400_cpu_device::cop400_cpu_device(const machine_config &mconfig, device_type
}
cop401_cpu_device::cop401_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP401, "COP401", tag, owner, clock, "cop401", __FILE__, 9, 6, COP410_FEATURE, 0xf, 0xf, 0, false, false, nullptr, ADDRESS_MAP_NAME(data_32b))
+ : cop400_cpu_device(mconfig, COP401, tag, owner, clock, 9, 6, COP410_FEATURE, 0xf, 0xf, 0, false, false, nullptr, ADDRESS_MAP_NAME(data_32b))
{
}
cop410_cpu_device::cop410_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP410, "COP410", tag, owner, clock, "cop410", __FILE__, 9, 6, COP410_FEATURE, 0xf, 0xf, 0, false, false, ADDRESS_MAP_NAME(program_512b), ADDRESS_MAP_NAME(data_32b))
+ : cop400_cpu_device(mconfig, COP410, tag, owner, clock, 9, 6, COP410_FEATURE, 0xf, 0xf, 0, false, false, ADDRESS_MAP_NAME(program_512b), ADDRESS_MAP_NAME(data_32b))
{
}
cop411_cpu_device::cop411_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP411, "COP411", tag, owner, clock, "cop411", __FILE__, 9, 6, COP410_FEATURE, 0x7, 0x3, 0, false, false, ADDRESS_MAP_NAME(program_512b), ADDRESS_MAP_NAME(data_32b))
+ : cop400_cpu_device(mconfig, COP411, tag, owner, clock, 9, 6, COP410_FEATURE, 0x7, 0x3, 0, false, false, ADDRESS_MAP_NAME(program_512b), ADDRESS_MAP_NAME(data_32b))
{
}
cop402_cpu_device::cop402_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP402, "COP402", tag, owner, clock, "cop402", __FILE__, 10, 6, COP420_FEATURE, 0xf, 0xf, 0xf, true, true, nullptr, ADDRESS_MAP_NAME(data_64b))
+ : cop400_cpu_device(mconfig, COP402, tag, owner, clock, 10, 6, COP420_FEATURE, 0xf, 0xf, 0xf, true, true, nullptr, ADDRESS_MAP_NAME(data_64b))
{
}
cop420_cpu_device::cop420_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP420, "COP420", tag, owner, clock, "cop420", __FILE__, 10, 6, COP420_FEATURE, 0xf, 0xf, 0xf, true, true, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
+ : cop400_cpu_device(mconfig, COP420, tag, owner, clock, 10, 6, COP420_FEATURE, 0xf, 0xf, 0xf, true, true, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
{
}
cop421_cpu_device::cop421_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP421, "COP421", tag, owner, clock, "cop421", __FILE__, 10, 6, COP420_FEATURE, 0xf, 0xf, 0, true, false, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
+ : cop400_cpu_device(mconfig, COP421, tag, owner, clock, 10, 6, COP420_FEATURE, 0xf, 0xf, 0, true, false, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
{
}
cop422_cpu_device::cop422_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP422, "COP422", tag, owner, clock, "cop422", __FILE__, 10, 6, COP420_FEATURE, 0xe, 0xe, 0, true, false, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
+ : cop400_cpu_device(mconfig, COP422, tag, owner, clock, 10, 6, COP420_FEATURE, 0xe, 0xe, 0, true, false, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
{
}
cop404l_cpu_device::cop404l_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP404L, "COP404L", tag, owner, clock, "cop404l", __FILE__, 11, 7, COP444L_FEATURE, 0xf, 0xf, 0xf, true, true, nullptr, ADDRESS_MAP_NAME(data_128b))
+ : cop400_cpu_device(mconfig, COP404L, tag, owner, clock, 11, 7, COP444L_FEATURE, 0xf, 0xf, 0xf, true, true, nullptr, ADDRESS_MAP_NAME(data_128b))
{
}
cop444l_cpu_device::cop444l_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP444L, "COP444L", tag, owner, clock, "cop444l", __FILE__, 11, 7, COP444L_FEATURE, 0xf, 0xf, 0xf, true, true, ADDRESS_MAP_NAME(program_2kb), ADDRESS_MAP_NAME(data_128b))
+ : cop400_cpu_device(mconfig, COP444L, tag, owner, clock, 11, 7, COP444L_FEATURE, 0xf, 0xf, 0xf, true, true, ADDRESS_MAP_NAME(program_2kb), ADDRESS_MAP_NAME(data_128b))
{
}
cop445l_cpu_device::cop445l_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP445L, "COP445L", tag, owner, clock, "cop445l", __FILE__, 11, 7, COP444L_FEATURE, 0x7, 0x3, 0, true, false, ADDRESS_MAP_NAME(program_2kb), ADDRESS_MAP_NAME(data_128b))
+ : cop400_cpu_device(mconfig, COP445L, tag, owner, clock, 11, 7, COP444L_FEATURE, 0x7, 0x3, 0, true, false, ADDRESS_MAP_NAME(program_2kb), ADDRESS_MAP_NAME(data_128b))
{
}
cop404c_cpu_device::cop404c_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP404C, "COP404C", tag, owner, clock, "cop404c", __FILE__, 11, 7, COP424C_FEATURE, 0xf, 0xf, 0xf, true, true, nullptr, ADDRESS_MAP_NAME(data_128b))
+ : cop400_cpu_device(mconfig, COP404C, tag, owner, clock, 11, 7, COP424C_FEATURE, 0xf, 0xf, 0xf, true, true, nullptr, ADDRESS_MAP_NAME(data_128b))
{
}
cop424c_cpu_device::cop424c_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP424C, "COP424C", tag, owner, clock, "cop424c", __FILE__, 10, 6, COP424C_FEATURE, 0xf, 0xf, 0xf, true, true, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
+ : cop400_cpu_device(mconfig, COP424C, tag, owner, clock, 10, 6, COP424C_FEATURE, 0xf, 0xf, 0xf, true, true, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
{
}
cop425c_cpu_device::cop425c_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP425C, "COP425C", tag, owner, clock, "cop425c", __FILE__, 10, 6, COP424C_FEATURE, 0xf, 0xf, 0, true, false, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
+ : cop400_cpu_device(mconfig, COP425C, tag, owner, clock, 10, 6, COP424C_FEATURE, 0xf, 0xf, 0, true, false, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
{
}
cop426c_cpu_device::cop426c_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP426C, "COP426C", tag, owner, clock, "cop426c", __FILE__, 10, 6, COP424C_FEATURE, 0xe, 0xe, 0xf, true, true, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
+ : cop400_cpu_device(mconfig, COP426C, tag, owner, clock, 10, 6, COP424C_FEATURE, 0xe, 0xe, 0xf, true, true, ADDRESS_MAP_NAME(program_1kb), ADDRESS_MAP_NAME(data_64b))
{
}
cop444c_cpu_device::cop444c_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP444C, "COP444C", tag, owner, clock, "cop444c", __FILE__, 11, 7, COP424C_FEATURE, 0xf, 0xf, 0xf, true, true, ADDRESS_MAP_NAME(program_2kb), ADDRESS_MAP_NAME(data_128b))
+ : cop400_cpu_device(mconfig, COP444C, tag, owner, clock, 11, 7, COP424C_FEATURE, 0xf, 0xf, 0xf, true, true, ADDRESS_MAP_NAME(program_2kb), ADDRESS_MAP_NAME(data_128b))
{
}
cop445c_cpu_device::cop445c_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP445C, "COP445C", tag, owner, clock, "cop445c", __FILE__, 11, 7, COP424C_FEATURE, 0xf, 0xf, 0, true, false, ADDRESS_MAP_NAME(program_2kb), ADDRESS_MAP_NAME(data_128b))
+ : cop400_cpu_device(mconfig, COP445C, tag, owner, clock, 11, 7, COP424C_FEATURE, 0xf, 0xf, 0, true, false, ADDRESS_MAP_NAME(program_2kb), ADDRESS_MAP_NAME(data_128b))
{
}
cop446c_cpu_device::cop446c_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cop400_cpu_device(mconfig, COP446C, "COP446C", tag, owner, clock, "cop446c", __FILE__, 11, 7, COP424C_FEATURE, 0xe, 0xe, 0xf, true, true, ADDRESS_MAP_NAME(program_2kb), ADDRESS_MAP_NAME(data_128b))
+ : cop400_cpu_device(mconfig, COP446C, tag, owner, clock, 11, 7, COP424C_FEATURE, 0xe, 0xe, 0xf, true, true, ADDRESS_MAP_NAME(program_2kb), ADDRESS_MAP_NAME(data_128b))
{
}
diff --git a/src/devices/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h
index e2ce7e6577c..8802df460b9 100644
--- a/src/devices/cpu/cop400/cop400.h
+++ b/src/devices/cpu/cop400/cop400.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_DEVICES_CPU_COP400_H
+#define MAME_DEVICES_CPU_COP400_H
-#ifndef __COP400__
-#define __COP400__
+#pragma once
// i/o pins
@@ -118,9 +118,6 @@ enum cop400_cko_bond {
class cop400_cpu_device : public cpu_device
{
public:
- // construction/destruction
- cop400_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, uint8_t program_addr_bits, uint8_t data_addr_bits, uint8_t featuremask, uint8_t g_mask, uint8_t d_mask, uint8_t in_mask, bool has_counter, bool has_inil, address_map_constructor internal_map_program, address_map_constructor internal_map_data);
-
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
// static configuration helpers
@@ -144,6 +141,9 @@ public:
DECLARE_WRITE8_MEMBER( microbus_wr );
protected:
+ // construction/destruction
+ cop400_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t program_addr_bits, uint8_t data_addr_bits, uint8_t featuremask, uint8_t g_mask, uint8_t d_mask, uint8_t in_mask, bool has_counter, bool has_inil, address_map_constructor internal_map_program, address_map_constructor internal_map_data);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -519,22 +519,22 @@ public:
};
-extern const device_type COP401;
-extern const device_type COP410;
-extern const device_type COP411;
-extern const device_type COP402;
-extern const device_type COP420;
-extern const device_type COP421;
-extern const device_type COP422;
-extern const device_type COP404L;
-extern const device_type COP444L;
-extern const device_type COP445L;
-extern const device_type COP404C;
-extern const device_type COP424C;
-extern const device_type COP425C;
-extern const device_type COP426C;
-extern const device_type COP444C;
-extern const device_type COP445C;
-extern const device_type COP446C;
-
-#endif /* __COP400__ */
+DECLARE_DEVICE_TYPE(COP401, cop401_cpu_device)
+DECLARE_DEVICE_TYPE(COP410, cop410_cpu_device)
+DECLARE_DEVICE_TYPE(COP411, cop411_cpu_device)
+DECLARE_DEVICE_TYPE(COP402, cop402_cpu_device)
+DECLARE_DEVICE_TYPE(COP420, cop420_cpu_device)
+DECLARE_DEVICE_TYPE(COP421, cop421_cpu_device)
+DECLARE_DEVICE_TYPE(COP422, cop422_cpu_device)
+DECLARE_DEVICE_TYPE(COP404L, cop404l_cpu_device)
+DECLARE_DEVICE_TYPE(COP444L, cop444l_cpu_device)
+DECLARE_DEVICE_TYPE(COP445L, cop445l_cpu_device)
+DECLARE_DEVICE_TYPE(COP404C, cop404c_cpu_device)
+DECLARE_DEVICE_TYPE(COP424C, cop424c_cpu_device)
+DECLARE_DEVICE_TYPE(COP425C, cop425c_cpu_device)
+DECLARE_DEVICE_TYPE(COP426C, cop426c_cpu_device)
+DECLARE_DEVICE_TYPE(COP444C, cop444c_cpu_device)
+DECLARE_DEVICE_TYPE(COP445C, cop445c_cpu_device)
+DECLARE_DEVICE_TYPE(COP446C, cop446c_cpu_device)
+
+#endif // MAME_DEVICES_CPU_COP400_H
diff --git a/src/devices/cpu/cosmac/cosmac.cpp b/src/devices/cpu/cosmac/cosmac.cpp
index 913b71cbd31..e1b5e728c23 100644
--- a/src/devices/cpu/cosmac/cosmac.cpp
+++ b/src/devices/cpu/cosmac/cosmac.cpp
@@ -260,16 +260,16 @@ cosmac_device::ophandler cdp1802_device::get_ophandler(uint8_t opcode)
//**************************************************************************
// device type definition
-const device_type CDP1801 = device_creator<cdp1801_device>;
-const device_type CDP1802 = device_creator<cdp1802_device>;
+DEFINE_DEVICE_TYPE(CDP1801, cdp1801_device, "cdp1801", "RCA CDP1801")
+DEFINE_DEVICE_TYPE(CDP1802, cdp1802_device, "cdp1802", "RCA CDP1802")
//-------------------------------------------------
// cosmac_device - constructor
//-------------------------------------------------
-cosmac_device::cosmac_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+cosmac_device::cosmac_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_LITTLE, 8, 16),
m_io_config("io", ENDIANNESS_LITTLE, 8, 3),
m_read_wait(*this),
@@ -302,7 +302,7 @@ cosmac_device::cosmac_device(const machine_config &mconfig, device_type type, co
//-------------------------------------------------
cdp1801_device::cdp1801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cosmac_device(mconfig, CDP1801, "CDP1801", tag, owner, clock, "cdp1801", __FILE__)
+ : cosmac_device(mconfig, CDP1801, tag, owner, clock)
{
}
@@ -312,7 +312,7 @@ cdp1801_device::cdp1801_device(const machine_config &mconfig, const char *tag, d
//-------------------------------------------------
cdp1802_device::cdp1802_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cosmac_device(mconfig, CDP1802, "CDP1802", tag, owner, clock, "cdp1802", __FILE__)
+ : cosmac_device(mconfig, CDP1802, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/cosmac/cosmac.h b/src/devices/cpu/cosmac/cosmac.h
index e9ff3b705bb..9adb9e1ec4d 100644
--- a/src/devices/cpu/cosmac/cosmac.h
+++ b/src/devices/cpu/cosmac/cosmac.h
@@ -76,10 +76,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_CPU_COSMAC_COSMAC_H
+#define MAME_CPU_COSMAC_COSMAC_H
-#ifndef __COSMAC_H__
-#define __COSMAC_H__
+#pragma once
@@ -123,39 +123,6 @@
// ENUMERATIONS
//**************************************************************************
-// registers
-enum
-{
- COSMAC_P,
- COSMAC_X,
- COSMAC_D,
- COSMAC_B,
- COSMAC_T,
- COSMAC_R0,
- COSMAC_R1,
- COSMAC_R2,
- COSMAC_R3,
- COSMAC_R4,
- COSMAC_R5,
- COSMAC_R6,
- COSMAC_R7,
- COSMAC_R8,
- COSMAC_R9,
- COSMAC_Ra,
- COSMAC_Rb,
- COSMAC_Rc,
- COSMAC_Rd,
- COSMAC_Re,
- COSMAC_Rf,
- COSMAC_DF,
- COSMAC_IE,
- COSMAC_Q,
- COSMAC_N,
- COSMAC_I,
- COSMAC_SC
-};
-
-
// input lines
enum
{
@@ -189,19 +156,51 @@ enum cosmac_state_code
class cosmac_device : public cpu_device
{
public:
- // construction/destruction
- cosmac_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- template<class _Object> static devcb_base &set_wait_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_wait.set_callback(object); }
- template<class _Object> static devcb_base &set_clear_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_clear.set_callback(object); }
- template<class _Object> static devcb_base &set_ef1_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_ef1.set_callback(object); }
- template<class _Object> static devcb_base &set_ef2_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_ef2.set_callback(object); }
- template<class _Object> static devcb_base &set_ef3_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_ef3.set_callback(object); }
- template<class _Object> static devcb_base &set_ef4_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_ef4.set_callback(object); }
- template<class _Object> static devcb_base &set_q_wr_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_write_q.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_rd_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_read_dma.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_wr_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_write_dma.set_callback(object); }
- template<class _Object> static devcb_base &set_sc_wr_callback(device_t &device, _Object object) { return downcast<cosmac_device &>(device).m_write_sc.set_callback(object); }
+ // registers
+ // public because machine/pecom.cpp accesses registers through the state interface - there should be a proper way to get address on bus for this
+ // drivers/microkit.cpp and drivers/eti660.cpp are even worse setting R0 through the state interface to hack around running boot code or something
+ enum
+ {
+ COSMAC_P,
+ COSMAC_X,
+ COSMAC_D,
+ COSMAC_B,
+ COSMAC_T,
+ COSMAC_R0,
+ COSMAC_R1,
+ COSMAC_R2,
+ COSMAC_R3,
+ COSMAC_R4,
+ COSMAC_R5,
+ COSMAC_R6,
+ COSMAC_R7,
+ COSMAC_R8,
+ COSMAC_R9,
+ COSMAC_Ra,
+ COSMAC_Rb,
+ COSMAC_Rc,
+ COSMAC_Rd,
+ COSMAC_Re,
+ COSMAC_Rf,
+ COSMAC_DF,
+ COSMAC_IE,
+ COSMAC_Q,
+ COSMAC_N,
+ COSMAC_I,
+ COSMAC_SC
+ };
+
+
+ template <class Object> static devcb_base &set_wait_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_wait.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_clear_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_clear.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ef1_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ef2_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ef3_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ef4_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_q.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_dma.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_dma.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sc_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_sc.set_callback(std::forward<Object>(cb)); }
// public interfaces
offs_t get_memory_address();
@@ -215,6 +214,9 @@ public:
DECLARE_WRITE_LINE_MEMBER( ef4_w ) { set_input_line(COSMAC_INPUT_LINE_EF4, state); }
protected:
+ // construction/destruction
+ cosmac_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -478,8 +480,8 @@ protected:
// device type definition
-extern const device_type CDP1801;
-extern const device_type CDP1802;
+DECLARE_DEVICE_TYPE(CDP1801, cdp1801_device)
+DECLARE_DEVICE_TYPE(CDP1802, cdp1802_device)
-#endif /* __COSMAC_H__ */
+#endif // MAME_CPU_COSMAC_COSMAC_H
diff --git a/src/devices/cpu/cp1610/cp1610.cpp b/src/devices/cpu/cp1610/cp1610.cpp
index 60ba26c1e36..edaa32795e8 100644
--- a/src/devices/cpu/cp1610/cp1610.cpp
+++ b/src/devices/cpu/cp1610/cp1610.cpp
@@ -14,11 +14,11 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "cp1610.h"
+#include "debugger.h"
-const device_type CP1610 = device_creator<cp1610_cpu_device>;
+DEFINE_DEVICE_TYPE(CP1610, cp1610_cpu_device, "cp1610", "GI CP1610")
#define S 0x80
@@ -3395,7 +3395,7 @@ void cp1610_cpu_device::execute_set_input(int irqline, int state)
cp1610_cpu_device::cp1610_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, CP1610, "CP1610", tag, owner, clock, "cp1610", __FILE__)
+ : cpu_device(mconfig, CP1610, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 16, 16, -1)
, m_read_bext(*this)
{
diff --git a/src/devices/cpu/cp1610/cp1610.h b/src/devices/cpu/cp1610/cp1610.h
index 17bb37c2897..677e86ae0ab 100644
--- a/src/devices/cpu/cp1610/cp1610.h
+++ b/src/devices/cpu/cp1610/cp1610.h
@@ -9,16 +9,10 @@
*
*****************************************************************************/
-#pragma once
-
-#ifndef __CP1610_H__
-#define __CP1610_H__
+#ifndef MAME_CPU_CP1610_CP1610_H
+#define MAME_CPU_CP1610_CP1610_H
-enum
-{
- CP1610_R0=1, CP1610_R1, CP1610_R2, CP1610_R3,
- CP1610_R4, CP1610_R5, CP1610_R6, CP1610_R7
-};
+#pragma once
#define CP1610_INT_NONE 0
#define CP1610_INT_INTRM 1 /* Maskable */
@@ -32,12 +26,19 @@ enum
class cp1610_cpu_device : public cpu_device
{
public:
+ // public because drivers R7 through state interface on machine reset - where does the initial R7 actually come from?
+ enum
+ {
+ CP1610_R0=1, CP1610_R1, CP1610_R2, CP1610_R3,
+ CP1610_R4, CP1610_R5, CP1610_R6, CP1610_R7
+ };
+
// construction/destruction
cp1610_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- template<class _read> devcb_base &set_bext_callback(_read rd)
+ template <class Object> devcb_base &set_bext_callback(Object &&rd)
{
- return m_read_bext.set_callback(rd);
+ return m_read_bext.set_callback(std::forward<Object>(rd));
}
protected:
@@ -208,9 +209,9 @@ private:
};
-extern const device_type CP1610;
+DECLARE_DEVICE_TYPE(CP1610, cp1610_cpu_device)
CPU_DISASSEMBLE( cp1610 );
-#endif /* __CP1610_H__ */
+#endif // MAME_CPU_CP1610_CP1610_H
diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp
index 0ddb88e974d..46b5e871a08 100644
--- a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp
+++ b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp
@@ -70,13 +70,13 @@ enum alu_dst
***************************************************************************/
-const device_type CQUESTSND = device_creator<cquestsnd_cpu_device>;
-const device_type CQUESTROT = device_creator<cquestrot_cpu_device>;
-const device_type CQUESTLIN = device_creator<cquestlin_cpu_device>;
+DEFINE_DEVICE_TYPE(CQUESTSND, cquestsnd_cpu_device, "cquestsnd", "Cube Quest Sound CPU")
+DEFINE_DEVICE_TYPE(CQUESTROT, cquestrot_cpu_device, "cquestrot", "Cube Quest Rotate CPU")
+DEFINE_DEVICE_TYPE(CQUESTLIN, cquestlin_cpu_device, "cquestlin", "Cube Quest Line CPU")
cquestsnd_cpu_device::cquestsnd_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, CQUESTSND, "Cube Quest Sound CPU", tag, owner, clock, "cquestsnd", __FILE__)
+ : cpu_device(mconfig, CQUESTSND, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 64, 8, -3)
, m_dac_w(*this)
, m_sound_region_tag(nullptr)
@@ -92,7 +92,7 @@ offs_t cquestsnd_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc,
cquestrot_cpu_device::cquestrot_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, CQUESTROT, "Cube Quest Rotate CPU", tag, owner, clock, "cquestrot", __FILE__)
+ : cpu_device(mconfig, CQUESTROT, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 64, 9, -3)
, m_linedata_w(*this)
{
@@ -113,7 +113,7 @@ offs_t cquestrot_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc,
cquestlin_cpu_device::cquestlin_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, CQUESTLIN, "Cube Quest Line CPU", tag, owner, clock, "cquestlin", __FILE__)
+ : cpu_device(mconfig, CQUESTLIN, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 64, 8, -3)
, m_linedata_r(*this)
, m_flags(0)
diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.h b/src/devices/cpu/cubeqcpu/cubeqcpu.h
index 590993d07d5..c63893a0a42 100644
--- a/src/devices/cpu/cubeqcpu/cubeqcpu.h
+++ b/src/devices/cpu/cubeqcpu/cubeqcpu.h
@@ -8,110 +8,8 @@
***************************************************************************/
-#ifndef _CUBEQCPU_H
-#define _CUBEQCPU_H
-
-
-/***************************************************************************
- COMPILE-TIME DEFINITIONS
-***************************************************************************/
-
-
-/***************************************************************************
- GLOBAL CONSTANTS
-***************************************************************************/
-
-
-/***************************************************************************
- REGISTER ENUMERATION
-***************************************************************************/
-
-enum
-{
- CQUESTSND_PC = 1,
- CQUESTSND_Q,
- CQUESTSND_RAM0,
- CQUESTSND_RAM1,
- CQUESTSND_RAM2,
- CQUESTSND_RAM3,
- CQUESTSND_RAM4,
- CQUESTSND_RAM5,
- CQUESTSND_RAM6,
- CQUESTSND_RAM7,
- CQUESTSND_RAM8,
- CQUESTSND_RAM9,
- CQUESTSND_RAMA,
- CQUESTSND_RAMB,
- CQUESTSND_RAMC,
- CQUESTSND_RAMD,
- CQUESTSND_RAME,
- CQUESTSND_RAMF,
- CQUESTSND_RTNLATCH,
- CQUESTSND_ADRCNTR,
- CQUESTSND_DINLATCH
-};
-
-enum
-{
- CQUESTROT_PC = 1,
- CQUESTROT_Q,
- CQUESTROT_RAM0,
- CQUESTROT_RAM1,
- CQUESTROT_RAM2,
- CQUESTROT_RAM3,
- CQUESTROT_RAM4,
- CQUESTROT_RAM5,
- CQUESTROT_RAM6,
- CQUESTROT_RAM7,
- CQUESTROT_RAM8,
- CQUESTROT_RAM9,
- CQUESTROT_RAMA,
- CQUESTROT_RAMB,
- CQUESTROT_RAMC,
- CQUESTROT_RAMD,
- CQUESTROT_RAME,
- CQUESTROT_RAMF,
- CQUESTROT_SEQCNT,
- CQUESTROT_DYNADDR,
- CQUESTROT_DYNDATA,
- CQUESTROT_YRLATCH,
- CQUESTROT_YDLATCH,
- CQUESTROT_DINLATCH,
- CQUESTROT_DSRCLATCH,
- CQUESTROT_RSRCLATCH,
- CQUESTROT_LDADDR,
- CQUESTROT_LDDATA
-};
-
-enum
-{
- CQUESTLIN_FGPC = 1,
- CQUESTLIN_BGPC,
- CQUESTLIN_Q,
- CQUESTLIN_RAM0,
- CQUESTLIN_RAM1,
- CQUESTLIN_RAM2,
- CQUESTLIN_RAM3,
- CQUESTLIN_RAM4,
- CQUESTLIN_RAM5,
- CQUESTLIN_RAM6,
- CQUESTLIN_RAM7,
- CQUESTLIN_RAM8,
- CQUESTLIN_RAM9,
- CQUESTLIN_RAMA,
- CQUESTLIN_RAMB,
- CQUESTLIN_RAMC,
- CQUESTLIN_RAMD,
- CQUESTLIN_RAME,
- CQUESTLIN_RAMF,
- CQUESTLIN_FADLATCH,
- CQUESTLIN_BADLATCH,
- CQUESTLIN_SREG,
- CQUESTLIN_XCNT,
- CQUESTLIN_YCNT,
- CQUESTLIN_CLATCH,
- CQUESTLIN_ZLATCH
-};
+#ifndef MAME_CPU_CUBEQCPU_CUBEQCPU_H
+#define MAME_CPU_CUBEQCPU_CUBEQCPU_H
/***************************************************************************
@@ -143,13 +41,38 @@ public:
cquestsnd_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_dac_w(device_t &device, _Object object) { return downcast<cquestsnd_cpu_device &>(device).m_dac_w.set_callback(object); }
+ template <class Object> static devcb_base &set_dac_w(device_t &device, Object &&cb) { return downcast<cquestsnd_cpu_device &>(device).m_dac_w.set_callback(std::forward<Object>(cb)); }
static void set_sound_region(device_t &device, const char *tag) { downcast<cquestsnd_cpu_device &>(device).m_sound_region_tag = tag; }
DECLARE_WRITE16_MEMBER(sndram_w);
DECLARE_READ16_MEMBER(sndram_r);
protected:
+ enum
+ {
+ CQUESTSND_PC = 1,
+ CQUESTSND_Q,
+ CQUESTSND_RAM0,
+ CQUESTSND_RAM1,
+ CQUESTSND_RAM2,
+ CQUESTSND_RAM3,
+ CQUESTSND_RAM4,
+ CQUESTSND_RAM5,
+ CQUESTSND_RAM6,
+ CQUESTSND_RAM7,
+ CQUESTSND_RAM8,
+ CQUESTSND_RAM9,
+ CQUESTSND_RAMA,
+ CQUESTSND_RAMB,
+ CQUESTSND_RAMC,
+ CQUESTSND_RAMD,
+ CQUESTSND_RAME,
+ CQUESTSND_RAMF,
+ CQUESTSND_RTNLATCH,
+ CQUESTSND_ADRCNTR,
+ CQUESTSND_DINLATCH
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -211,13 +134,45 @@ public:
cquestrot_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_linedata_w(device_t &device, _Object object) { return downcast<cquestrot_cpu_device &>(device).m_linedata_w.set_callback(object); }
+ template <class Object> static devcb_base &set_linedata_w(device_t &device, Object &&cb) { return downcast<cquestrot_cpu_device &>(device).m_linedata_w.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER(linedata_r);
DECLARE_WRITE16_MEMBER(rotram_w);
DECLARE_READ16_MEMBER(rotram_r);
protected:
+ enum
+ {
+ CQUESTROT_PC = 1,
+ CQUESTROT_Q,
+ CQUESTROT_RAM0,
+ CQUESTROT_RAM1,
+ CQUESTROT_RAM2,
+ CQUESTROT_RAM3,
+ CQUESTROT_RAM4,
+ CQUESTROT_RAM5,
+ CQUESTROT_RAM6,
+ CQUESTROT_RAM7,
+ CQUESTROT_RAM8,
+ CQUESTROT_RAM9,
+ CQUESTROT_RAMA,
+ CQUESTROT_RAMB,
+ CQUESTROT_RAMC,
+ CQUESTROT_RAMD,
+ CQUESTROT_RAME,
+ CQUESTROT_RAMF,
+ CQUESTROT_SEQCNT,
+ CQUESTROT_DYNADDR,
+ CQUESTROT_DYNDATA,
+ CQUESTROT_YRLATCH,
+ CQUESTROT_YDLATCH,
+ CQUESTROT_DINLATCH,
+ CQUESTROT_DSRCLATCH,
+ CQUESTROT_RSRCLATCH,
+ CQUESTROT_LDADDR,
+ CQUESTROT_LDDATA
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -293,7 +248,7 @@ public:
cquestlin_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_linedata_r(device_t &device, _Object object) { return downcast<cquestlin_cpu_device &>(device).m_linedata_r.set_callback(object); }
+ template <class Object> static devcb_base &set_linedata_r(device_t &device, Object &&cb) { return downcast<cquestlin_cpu_device &>(device).m_linedata_r.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE16_MEMBER( linedata_w );
void cubeqcpu_swap_line_banks();
@@ -302,6 +257,36 @@ public:
uint32_t* cubeqcpu_get_stack_ram();
protected:
+ enum
+ {
+ CQUESTLIN_FGPC = 1,
+ CQUESTLIN_BGPC,
+ CQUESTLIN_Q,
+ CQUESTLIN_RAM0,
+ CQUESTLIN_RAM1,
+ CQUESTLIN_RAM2,
+ CQUESTLIN_RAM3,
+ CQUESTLIN_RAM4,
+ CQUESTLIN_RAM5,
+ CQUESTLIN_RAM6,
+ CQUESTLIN_RAM7,
+ CQUESTLIN_RAM8,
+ CQUESTLIN_RAM9,
+ CQUESTLIN_RAMA,
+ CQUESTLIN_RAMB,
+ CQUESTLIN_RAMC,
+ CQUESTLIN_RAMD,
+ CQUESTLIN_RAME,
+ CQUESTLIN_RAMF,
+ CQUESTLIN_FADLATCH,
+ CQUESTLIN_BADLATCH,
+ CQUESTLIN_SREG,
+ CQUESTLIN_XCNT,
+ CQUESTLIN_YCNT,
+ CQUESTLIN_CLATCH,
+ CQUESTLIN_ZLATCH
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -376,9 +361,9 @@ private:
};
-extern const device_type CQUESTSND;
-extern const device_type CQUESTROT;
-extern const device_type CQUESTLIN;
+DECLARE_DEVICE_TYPE(CQUESTSND, cquestsnd_cpu_device)
+DECLARE_DEVICE_TYPE(CQUESTROT, cquestrot_cpu_device)
+DECLARE_DEVICE_TYPE(CQUESTLIN, cquestlin_cpu_device)
-#endif /* _CUBEQCPU_H */
+#endif // MAME_CPU_CUBEQCPU_CUBEQCPU_H
diff --git a/src/devices/cpu/dsp16/dsp16.cpp b/src/devices/cpu/dsp16/dsp16.cpp
index e9b6444b162..fc210f818d1 100644
--- a/src/devices/cpu/dsp16/dsp16.cpp
+++ b/src/devices/cpu/dsp16/dsp16.cpp
@@ -27,7 +27,7 @@
//**************************************************************************
// device type definition
-const device_type DSP16 = device_creator<dsp16_device>;
+DEFINE_DEVICE_TYPE(DSP16, dsp16_device, "dsp16", "DSP16")
//-------------------------------------------------
@@ -35,7 +35,7 @@ const device_type DSP16 = device_creator<dsp16_device>;
//-------------------------------------------------
dsp16_device::dsp16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, DSP16, "DSP16", tag, owner, clock, "dsp16", __FILE__),
+ : cpu_device(mconfig, DSP16, tag, owner, clock),
m_program_config("program", ENDIANNESS_LITTLE, 16, 16, -1),
m_data_config("data", ENDIANNESS_LITTLE, 16, 16, -1),
m_i(0),
diff --git a/src/devices/cpu/dsp16/dsp16.h b/src/devices/cpu/dsp16/dsp16.h
index e138edae5b4..26768a4a862 100644
--- a/src/devices/cpu/dsp16/dsp16.h
+++ b/src/devices/cpu/dsp16/dsp16.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_DSP16_DSP16_H
+#define MAME_CPU_DSP16_DSP16_H
-#ifndef __DSP16_H__
-#define __DSP16_H__
+#pragma once
//**************************************************************************
@@ -29,6 +29,40 @@ public:
// public interfaces
protected:
+ enum
+ {
+ DSP16_I, // ROM Address Arithmetic Unit (XAAU)
+ DSP16_PC,
+ DSP16_PT,
+ DSP16_PR,
+ DSP16_PI,
+ DSP16_J, // RAM Address Arithmetic Unit (YAAU)
+ DSP16_K,
+ DSP16_RB,
+ DSP16_RE,
+ DSP16_R0,
+ DSP16_R1,
+ DSP16_R2,
+ DSP16_R3,
+ DSP16_X, // Data Arithmetic Unit (DAU)
+ DSP16_Y,
+ DSP16_P,
+ DSP16_A0,
+ DSP16_A1,
+ DSP16_AUC,
+ DSP16_PSW,
+ DSP16_C0,
+ DSP16_C1,
+ DSP16_C2,
+ DSP16_SIOC,
+ DSP16_SRTA,
+ DSP16_SDX,
+ DSP16_PIOC,
+ DSP16_PDX0,
+ DSP16_PDX1
+ };
+
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -147,45 +181,6 @@ protected:
// device type definition
-extern const device_type DSP16;
-
-
-/***************************************************************************
- REGISTER ENUMERATION
-***************************************************************************/
-
-enum
-{
- DSP16_I, // ROM Address Arithmetic Unit (XAAU)
- DSP16_PC,
- DSP16_PT,
- DSP16_PR,
- DSP16_PI,
- DSP16_J, // RAM Address Arithmetic Unit (YAAU)
- DSP16_K,
- DSP16_RB,
- DSP16_RE,
- DSP16_R0,
- DSP16_R1,
- DSP16_R2,
- DSP16_R3,
- DSP16_X, // Data Arithmetic Unit (DAU)
- DSP16_Y,
- DSP16_P,
- DSP16_A0,
- DSP16_A1,
- DSP16_AUC,
- DSP16_PSW,
- DSP16_C0,
- DSP16_C1,
- DSP16_C2,
- DSP16_SIOC,
- DSP16_SRTA,
- DSP16_SDX,
- DSP16_PIOC,
- DSP16_PDX0,
- DSP16_PDX1
-};
-
+DECLARE_DEVICE_TYPE(DSP16, dsp16_device)
-#endif /* __DSP16_H__ */
+#endif // MAME_CPU_DSP16_DSP16_H
diff --git a/src/devices/cpu/dsp32/dsp32.cpp b/src/devices/cpu/dsp32/dsp32.cpp
index 18a50dc0b26..f87fa710fb8 100644
--- a/src/devices/cpu/dsp32/dsp32.cpp
+++ b/src/devices/cpu/dsp32/dsp32.cpp
@@ -29,8 +29,8 @@
***************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "dsp32.h"
+#include "debugger.h"
//**************************************************************************
@@ -136,14 +136,14 @@
// DEVICE INTERFACE
//**************************************************************************
-const device_type DSP32C = device_creator<dsp32c_device>;
+DEFINE_DEVICE_TYPE(DSP32C, dsp32c_device, "dsp32c", "DSP32C")
//-------------------------------------------------
// dsp32c_device - constructor
//-------------------------------------------------
dsp32c_device::dsp32c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, DSP32C, "DSP32C", tag, owner, clock, "dsp32c", __FILE__),
+ : cpu_device(mconfig, DSP32C, tag, owner, clock),
m_program_config("program", ENDIANNESS_LITTLE, 32, 24),
m_pin(0),
m_pout(0),
diff --git a/src/devices/cpu/dsp32/dsp32.h b/src/devices/cpu/dsp32/dsp32.h
index 4b39600284a..6efdebdbf21 100644
--- a/src/devices/cpu/dsp32/dsp32.h
+++ b/src/devices/cpu/dsp32/dsp32.h
@@ -7,10 +7,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_DSP32_DSP32_H
+#define MAME_CPU_DSP32_DSP32_H
-#ifndef __DSP32_H__
-#define __DSP32_H__
+#pragma once
//**************************************************************************
@@ -25,63 +25,6 @@ const int DSP32_IRQ1 = 1; // IRQ1
const int DSP32_OUTPUT_PIF = 0x01;
const int DSP32_OUTPUT_PDF = 0x02;
-// register enumeration
-enum
-{
- // CAU
- DSP32_PC=1,
- DSP32_R0,
- DSP32_R1,
- DSP32_R2,
- DSP32_R3,
- DSP32_R4,
- DSP32_R5,
- DSP32_R6,
- DSP32_R7,
- DSP32_R8,
- DSP32_R9,
- DSP32_R10,
- DSP32_R11,
- DSP32_R12,
- DSP32_R13,
- DSP32_R14,
- DSP32_R15,
- DSP32_R16,
- DSP32_R17,
- DSP32_R18,
- DSP32_R19,
- DSP32_R20,
- DSP32_R21,
- DSP32_R22,
- DSP32_PIN,
- DSP32_POUT,
- DSP32_IVTP,
-
- // DAU
- DSP32_A0,
- DSP32_A1,
- DSP32_A2,
- DSP32_A3,
- DSP32_DAUC,
-
- // PIO
- DSP32_PAR,
- DSP32_PDR,
- DSP32_PIR,
- DSP32_PCR,
- DSP32_EMR,
- DSP32_ESR,
- DSP32_PCW,
- DSP32_PIOP,
-
- // SIO
- DSP32_IBUF,
- DSP32_ISR,
- DSP32_OBUF,
- DSP32_OSR,
- DSP32_IOC
-};
-
//**************************************************************************
// TYPE DEFINITIONS
@@ -98,7 +41,7 @@ public:
// construction/destruction
dsp32c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_output_pins_callback(device_t &device, _Object object) { return downcast<dsp32c_device &>(device).m_output_pins_changed.set_callback(object); }
+ template <class Object> static devcb_base &set_output_pins_callback(device_t &device, Object &&cb) { return downcast<dsp32c_device &>(device).m_output_pins_changed.set_callback(std::forward<Object>(cb)); }
// public interfaces
@@ -106,6 +49,63 @@ public:
int pio_r(int reg);
protected:
+ // register enumeration
+ enum
+ {
+ // CAU
+ DSP32_PC=1,
+ DSP32_R0,
+ DSP32_R1,
+ DSP32_R2,
+ DSP32_R3,
+ DSP32_R4,
+ DSP32_R5,
+ DSP32_R6,
+ DSP32_R7,
+ DSP32_R8,
+ DSP32_R9,
+ DSP32_R10,
+ DSP32_R11,
+ DSP32_R12,
+ DSP32_R13,
+ DSP32_R14,
+ DSP32_R15,
+ DSP32_R16,
+ DSP32_R17,
+ DSP32_R18,
+ DSP32_R19,
+ DSP32_R20,
+ DSP32_R21,
+ DSP32_R22,
+ DSP32_PIN,
+ DSP32_POUT,
+ DSP32_IVTP,
+
+ // DAU
+ DSP32_A0,
+ DSP32_A1,
+ DSP32_A2,
+ DSP32_A3,
+ DSP32_DAUC,
+
+ // PIO
+ DSP32_PAR,
+ DSP32_PDR,
+ DSP32_PIR,
+ DSP32_PCR,
+ DSP32_EMR,
+ DSP32_ESR,
+ DSP32_PCW,
+ DSP32_PIOP,
+
+ // SIO
+ DSP32_IBUF,
+ DSP32_ISR,
+ DSP32_OBUF,
+ DSP32_OSR,
+ DSP32_IOC
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -432,8 +432,6 @@ protected:
};
-extern const device_type DSP32C;
-
-
+DECLARE_DEVICE_TYPE(DSP32C, dsp32c_device)
-#endif /* __DSP32_H__ */
+#endif // MAME_CPU_DSP32_DSP32_H
diff --git a/src/devices/cpu/dsp56k/dsp56k.cpp b/src/devices/cpu/dsp56k/dsp56k.cpp
index f75d720c2f7..e7ac94434e9 100644
--- a/src/devices/cpu/dsp56k/dsp56k.cpp
+++ b/src/devices/cpu/dsp56k/dsp56k.cpp
@@ -32,16 +32,14 @@
***************************************************************************/
#include "emu.h"
+#include "dsp56k.h"
+
#include "opcode.h"
-#include "emu.h"
#include "debugger.h"
-#include "dsp56k.h"
#include "dsp56def.h"
-using namespace DSP56K;
-
/***************************************************************************
COMPONENT FUNCTIONALITY
***************************************************************************/
@@ -61,6 +59,11 @@ using namespace DSP56K;
#include "dsp56mem.h"
+DEFINE_DEVICE_TYPE_NS(DSP56156, DSP56K, dsp56k_device, "dsp56156", "DSP56156")
+
+
+namespace DSP56K {
+
enum
{
// PCU
@@ -102,9 +105,6 @@ enum
};
-const device_type DSP56156 = device_creator<dsp56k_device>;
-
-
/****************************************************************************
* Internal Memory Maps
****************************************************************************/
@@ -120,7 +120,7 @@ ADDRESS_MAP_END
dsp56k_device::dsp56k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, DSP56156, "DSP56156", tag, owner, clock, "dsp56156", __FILE__)
+ : cpu_device(mconfig, DSP56156, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 16, -1, ADDRESS_MAP_NAME(dsp56156_program_map))
, m_data_config("data", ENDIANNESS_LITTLE, 16, 16, -1, ADDRESS_MAP_NAME(dsp56156_x_data_map))
, m_program_ram(*this, "dsk56k_program_ram")
@@ -497,6 +497,7 @@ void dsp56k_device::execute_run()
offs_t dsp56k_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options)
{
- extern CPU_DISASSEMBLE( dsp56k );
return CPU_DISASSEMBLE_NAME(dsp56k)(this, stream, pc, oprom, opram, options);
}
+
+} // namespace DSP56K
diff --git a/src/devices/cpu/dsp56k/dsp56k.h b/src/devices/cpu/dsp56k/dsp56k.h
index 6053aa0557a..fe186684655 100644
--- a/src/devices/cpu/dsp56k/dsp56k.h
+++ b/src/devices/cpu/dsp56k/dsp56k.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_DSP56K_DSP56K_H
+#define MAME_CPU_DSP56K_DSP56K_H
-#ifndef __DSP56K_H__
-#define __DSP56K_H__
+#pragma once
@@ -24,6 +24,8 @@
#define DSP56K_IRQ_RESET 3 /* Is this needed? */
+namespace DSP56K {
+
/***************************************************************************
STRUCTURES & TYPEDEFS
***************************************************************************/
@@ -246,11 +248,14 @@ private:
void agu_init();
void alu_init();
-
};
+} // namespace DSP56K
+
-extern const device_type DSP56156;
+DECLARE_DEVICE_TYPE_NS(DSP56156, DSP56K, dsp56k_device)
+using DSP56K::dsp56k_device;
+extern CPU_DISASSEMBLE( dsp56k );
-#endif /* __DSP56K_H__ */
+#endif // MAME_CPU_DSP56K_DSP56K_H
diff --git a/src/devices/cpu/dsp56k/dsp56mem.cpp b/src/devices/cpu/dsp56k/dsp56mem.cpp
index 31ed7503acb..257865cb325 100644
--- a/src/devices/cpu/dsp56k/dsp56mem.cpp
+++ b/src/devices/cpu/dsp56k/dsp56mem.cpp
@@ -7,8 +7,8 @@
#include "dsp56mem.h"
#include "dsp56pcu.h"
-namespace DSP56K
-{
+namespace DSP56K {
+
/* IPR Accessor Implementations */
void IPR_set(dsp56k_core* cpustate, uint16_t value)
{
@@ -486,9 +486,6 @@ void dsp56k_io_reset(dsp56k_core* cpustate)
}
-} // namespace DSP56K
-
-
/* Work */
READ16_MEMBER( dsp56k_device::peripheral_register_r )
{
@@ -947,3 +944,6 @@ uint16_t dsp56k_device::get_peripheral_memory(uint16_t addr)
dsp56k_core* cpustate = &m_dsp56k_core;
return cpustate->peripheral_ram[A2O(addr)];
}
+
+
+} // namespace DSP56K
diff --git a/src/devices/cpu/dsp56k/dsp56mem.h b/src/devices/cpu/dsp56k/dsp56mem.h
index c80e278758e..2ceabc31c1e 100644
--- a/src/devices/cpu/dsp56k/dsp56mem.h
+++ b/src/devices/cpu/dsp56k/dsp56mem.h
@@ -1,12 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#ifndef __DSP56_MEM_H__
-#define __DSP56_MEM_H__
+#ifndef MAME_CPU_DSP56K_DSP56MEM_H
+#define MAME_CPU_DSP56K_DSP56MEM_H
#include "dsp56k.h"
-namespace DSP56K
-{
+namespace DSP56K {
+
/***************************************************************************
MEMORY
***************************************************************************/
@@ -238,4 +238,4 @@ void PCD_set(dsp56k_core* cpustate, uint16_t value);
} // namespace DSP56K
-#endif
+#endif // MAME_CPU_DSP56K_DSP56MEM_H
diff --git a/src/devices/cpu/e0c6200/e0c6200.cpp b/src/devices/cpu/e0c6200/e0c6200.cpp
index ace906943a0..7e20728f549 100644
--- a/src/devices/cpu/e0c6200/e0c6200.cpp
+++ b/src/devices/cpu/e0c6200/e0c6200.cpp
@@ -23,6 +23,14 @@
#include "debugger.h"
+// construction/destruction
+e0c6200_cpu_device::e0c6200_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor program, address_map_constructor data)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_BIG, 16, 13, -1, program)
+ , m_data_config("data", ENDIANNESS_BIG, 8, 12, 0, data), m_program(nullptr), m_data(nullptr), m_op(0), m_prev_op(0), m_irq_vector(0), m_irq_id(0), m_possible_irq(false), m_halt(false),
+ m_sleep(false), m_icount(0), m_pc(0), m_prev_pc(0), m_npc(0), m_jpc(0), m_a(0), m_b(0), m_xp(0), m_xh(0), m_xl(0), m_yp(0), m_yh(0), m_yl(0), m_sp(0), m_f(0)
+{ }
+
// disasm
void e0c6200_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
diff --git a/src/devices/cpu/e0c6200/e0c6200.h b/src/devices/cpu/e0c6200/e0c6200.h
index 5f250d4f444..6539abfda88 100644
--- a/src/devices/cpu/e0c6200/e0c6200.h
+++ b/src/devices/cpu/e0c6200/e0c6200.h
@@ -6,21 +6,15 @@
*/
-#ifndef _E0C6200_H_
-#define _E0C6200_H_
-
+#ifndef MAME_CPU_E0C6200_E0C6200_H
+#define MAME_CPU_E0C6200_E0C6200_H
class e0c6200_cpu_device : public cpu_device
{
public:
// construction/destruction
- e0c6200_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, address_map_constructor program, address_map_constructor data, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_BIG, 16, 13, -1, program)
- , m_data_config("data", ENDIANNESS_BIG, 8, 12, 0, data), m_program(nullptr), m_data(nullptr), m_op(0), m_prev_op(0), m_irq_vector(0), m_irq_id(0), m_possible_irq(false), m_halt(false),
- m_sleep(false), m_icount(0), m_pc(0), m_prev_pc(0), m_npc(0), m_jpc(0), m_a(0), m_b(0), m_xp(0), m_xh(0), m_xl(0), m_yp(0), m_yh(0), m_yl(0), m_sp(0), m_f(0)
- { }
+ e0c6200_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor program, address_map_constructor data);
protected:
// device-level overrides
@@ -115,6 +109,4 @@ protected:
u8 op_rrc(u8 x);
};
-
-
-#endif /* _E0C6200_H_ */
+#endif // MAME_CPU_E0C6200_E0C6200_H
diff --git a/src/devices/cpu/e0c6200/e0c6s46.cpp b/src/devices/cpu/e0c6200/e0c6s46.cpp
index 5c412667c2e..2a9ca96d543 100644
--- a/src/devices/cpu/e0c6200/e0c6s46.cpp
+++ b/src/devices/cpu/e0c6200/e0c6s46.cpp
@@ -28,7 +28,7 @@ enum
IRQREG_INPUT1
};
-const device_type E0C6S46 = device_creator<e0c6s46_device>;
+DEFINE_DEVICE_TYPE(E0C6S46, e0c6s46_device, "e0c6s46", "Seiko Epson E0C6S46")
// internal memory maps
@@ -47,7 +47,7 @@ ADDRESS_MAP_END
// device definitions
e0c6s46_device::e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : e0c6200_cpu_device(mconfig, E0C6S46, "E0C6S46", tag, owner, clock, ADDRESS_MAP_NAME(e0c6s46_program), ADDRESS_MAP_NAME(e0c6s46_data), "e0c6s46", __FILE__)
+ : e0c6200_cpu_device(mconfig, E0C6S46, tag, owner, clock, ADDRESS_MAP_NAME(e0c6s46_program), ADDRESS_MAP_NAME(e0c6s46_data))
, m_vram1(*this, "vram1")
, m_vram2(*this, "vram2"), m_osc(0), m_svd(0), m_lcd_control(0), m_lcd_contrast(0)
, m_pixel_update_handler(nullptr)
diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h
index d4e4d0f50af..ca432e52481 100644
--- a/src/devices/cpu/e0c6200/e0c6s46.h
+++ b/src/devices/cpu/e0c6200/e0c6s46.h
@@ -6,8 +6,8 @@
*/
-#ifndef _E0C6S46_H_
-#define _E0C6S46_H_
+#ifndef MAME_CPU_E0C6200_E0C6S46_H
+#define MAME_CPU_E0C6200_E0C6S46_H
#include "e0c6200.h"
@@ -59,32 +59,33 @@ enum
#define MCFG_E0C6S46_PIXEL_UPDATE_CB(_cb) \
e0c6s46_device::static_set_pixel_update_cb(*device, _cb);
-typedef void (*e0c6s46_pixel_update_func)(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, int contrast, int seg, int com, int state);
#define E0C6S46_PIXEL_UPDATE_CB(name) void name(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, int contrast, int seg, int com, int state)
class e0c6s46_device : public e0c6200_cpu_device
{
public:
+ typedef void (*pixel_update_func)(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, int contrast, int seg, int com, int state);
+
e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_write_r0_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_write_r0.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r1_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_write_r1.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r2_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_write_r2.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r3_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_write_r3.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r4_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_write_r4.set_callback(object); }
-
- template<class _Object> static devcb_base &set_read_p0_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_read_p0.set_callback(object); }
- template<class _Object> static devcb_base &set_read_p1_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_read_p1.set_callback(object); }
- template<class _Object> static devcb_base &set_read_p2_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_read_p2.set_callback(object); }
- template<class _Object> static devcb_base &set_read_p3_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_read_p3.set_callback(object); }
- template<class _Object> static devcb_base &set_write_p0_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_write_p0.set_callback(object); }
- template<class _Object> static devcb_base &set_write_p1_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_write_p1.set_callback(object); }
- template<class _Object> static devcb_base &set_write_p2_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_write_p2.set_callback(object); }
- template<class _Object> static devcb_base &set_write_p3_callback(device_t &device, _Object object) { return downcast<e0c6s46_device &>(device).m_write_p3.set_callback(object); }
-
- static void static_set_pixel_update_cb(device_t &device, e0c6s46_pixel_update_func _cb) { downcast<e0c6s46_device &>(device).m_pixel_update_handler = _cb; }
+ template <class Object> static devcb_base &set_write_r0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r4_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r4.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> static devcb_base &set_read_p0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_p1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_p2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_p3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_p0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_p1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_p2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_p3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p3.set_callback(std::forward<Object>(cb)); }
+
+ static void static_set_pixel_update_cb(device_t &device, pixel_update_func cb) { downcast<e0c6s46_device &>(device).m_pixel_update_handler = cb; }
DECLARE_READ8_MEMBER(io_r);
DECLARE_WRITE8_MEMBER(io_w);
@@ -113,7 +114,7 @@ private:
u8 m_lcd_control;
u8 m_lcd_contrast;
- e0c6s46_pixel_update_func m_pixel_update_handler;
+ pixel_update_func m_pixel_update_handler;
// i/o ports
devcb_write8 m_write_r0, m_write_r1, m_write_r2, m_write_r3, m_write_r4;
@@ -176,7 +177,6 @@ private:
};
+DECLARE_DEVICE_TYPE(E0C6S46, e0c6s46_device)
-extern const device_type E0C6S46;
-
-#endif /* _E0C6S46_H_ */
+#endif // MAME_CPU_E0C6200_E0C6S46_H
diff --git a/src/devices/cpu/e132xs/32xsdasm.cpp b/src/devices/cpu/e132xs/32xsdasm.cpp
index b44da23a7bb..ec853983346 100644
--- a/src/devices/cpu/e132xs/32xsdasm.cpp
+++ b/src/devices/cpu/e132xs/32xsdasm.cpp
@@ -8,8 +8,11 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "e132xs.h"
+#include "debugger.h"
+
+#include "32xsdefs.h"
+
static const char *const L_REG[] =
{
diff --git a/src/devices/cpu/e132xs/32xsdefs.h b/src/devices/cpu/e132xs/32xsdefs.h
new file mode 100644
index 00000000000..164377f0060
--- /dev/null
+++ b/src/devices/cpu/e132xs/32xsdefs.h
@@ -0,0 +1,96 @@
+// license:BSD-3-Clause
+// copyright-holders:Pierpaolo Prazzoli
+#ifndef MAME_CPU_E132XS_XS32DEFS_H
+#define MAME_CPU_E132XS_XS32DEFS_H
+
+/***************************************************************************
+ COMPILE-TIME DEFINITIONS
+***************************************************************************/
+
+#define PC_REGISTER 0
+#define SR_REGISTER 1
+#define BCR_REGISTER 20
+#define TPR_REGISTER 21
+#define TCR_REGISTER 22
+#define TR_REGISTER 23
+#define ISR_REGISTER 25
+#define FCR_REGISTER 26
+#define MCR_REGISTER 27
+
+#define X_CODE(val) ((val & 0x7000) >> 12)
+#define E_BIT(val) ((val & 0x8000) >> 15)
+#define S_BIT_CONST(val) ((val & 0x4000) >> 14)
+#define DD(val) ((val & 0x3000) >> 12)
+
+
+/* Extended DSP instructions */
+#define EMUL 0x102
+#define EMULU 0x104
+#define EMULS 0x106
+#define EMAC 0x10a
+#define EMACD 0x10e
+#define EMSUB 0x11a
+#define EMSUBD 0x11e
+#define EHMAC 0x02a
+#define EHMACD 0x02e
+#define EHCMULD 0x046
+#define EHCMACD 0x04e
+#define EHCSUMD 0x086
+#define EHCFFTD 0x096
+#define EHCFFTSD 0x296
+
+/* Delay values */
+#define NO_DELAY 0
+#define DELAY_EXECUTE 1
+
+/* IRQ numbers */
+#define IRQ_INT1 0
+#define IRQ_INT2 1
+#define IRQ_INT3 2
+#define IRQ_INT4 3
+#define IRQ_IO1 4
+#define IRQ_IO2 5
+#define IRQ_IO3 6
+
+/* Trap numbers */
+#define TRAPNO_IO2 48
+#define TRAPNO_IO1 49
+#define TRAPNO_INT4 50
+#define TRAPNO_INT3 51
+#define TRAPNO_INT2 52
+#define TRAPNO_INT1 53
+#define TRAPNO_IO3 54
+#define TRAPNO_TIMER 55
+#define TRAPNO_RESERVED1 56
+#define TRAPNO_TRACE_EXCEPTION 57
+#define TRAPNO_PARITY_ERROR 58
+#define TRAPNO_EXTENDED_OVERFLOW 59
+#define TRAPNO_RANGE_ERROR 60
+#define TRAPNO_PRIVILEGE_ERROR TRAPNO_RANGE_ERROR
+#define TRAPNO_FRAME_ERROR TRAPNO_RANGE_ERROR
+#define TRAPNO_RESERVED2 61
+#define TRAPNO_RESET 62 // reserved if not mapped @ MEM3
+#define TRAPNO_ERROR_ENTRY 63 // for instruction code of all ones
+
+/* Trap codes */
+#define TRAPLE 4
+#define TRAPGT 5
+#define TRAPLT 6
+#define TRAPGE 7
+#define TRAPSE 8
+#define TRAPHT 9
+#define TRAPST 10
+#define TRAPHE 11
+#define TRAPE 12
+#define TRAPNE 13
+#define TRAPV 14
+#define TRAP 15
+
+/* Entry point to get trap locations or emulated code associated */
+#define E132XS_ENTRY_MEM0 0
+#define E132XS_ENTRY_MEM1 1
+#define E132XS_ENTRY_MEM2 2
+#define E132XS_ENTRY_IRAM 3
+#define E132XS_ENTRY_MEM3 7
+
+#endif // MAME_CPU_E132XS_XS32DEFS_H
diff --git a/src/devices/cpu/e132xs/e132xs.cpp b/src/devices/cpu/e132xs/e132xs.cpp
index f6fef84cf77..56ab898685b 100644
--- a/src/devices/cpu/e132xs/e132xs.cpp
+++ b/src/devices/cpu/e132xs/e132xs.cpp
@@ -214,15 +214,43 @@
*********************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "e132xs.h"
+#include "debugger.h"
+
+#include "32xsdefs.h"
+
#ifdef MAME_DEBUG
#define DEBUG_PRINTF(x) do { osd_printf_debug x; } while (0)
#else
#define DEBUG_PRINTF(x) do { } while (0)
#endif
+/* Memory access */
+/* read byte */
+#define READ_B(addr) m_program->read_byte((addr))
+/* read half-word */
+#define READ_HW(addr) m_program->read_word((addr) & ~1)
+/* read word */
+#define READ_W(addr) m_program->read_dword((addr) & ~3)
+
+/* write byte */
+#define WRITE_B(addr, data) m_program->write_byte(addr, data)
+/* write half-word */
+#define WRITE_HW(addr, data) m_program->write_word((addr) & ~1, data)
+/* write word */
+#define WRITE_W(addr, data) m_program->write_dword((addr) & ~3, data)
+
+
+/* I/O access */
+/* read word */
+#define IO_READ_W(addr) m_io->read_dword(((addr) >> 11) & 0x7ffc)
+/* write word */
+#define IO_WRITE_W(addr, data) m_io->write_dword(((addr) >> 11) & 0x7ffc, data)
+
+
+#define READ_OP(addr) m_direct->read_word((addr), m_opcodexor)
+
// set C in adds/addsi/subs/sums
#define SETCARRYS 0
#define MISSIONCRAFT_FLAGS 1
@@ -318,9 +346,9 @@ ADDRESS_MAP_END
// hyperstone_device - constructor
//-------------------------------------------------
-hyperstone_device::hyperstone_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const device_type type, uint32_t prg_data_width, uint32_t io_data_width, address_map_constructor internal_map, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+hyperstone_device::hyperstone_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t io_data_width, address_map_constructor internal_map)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, prg_data_width, 32, 0, internal_map),
m_io_config("io", ENDIANNESS_BIG, io_data_width, 15),
m_icount(0)
@@ -336,7 +364,7 @@ hyperstone_device::hyperstone_device(const machine_config &mconfig, const char *
//-------------------------------------------------
e116t_device::e116t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "E1-16T", tag, owner, clock, E116T, 16, 16, ADDRESS_MAP_NAME(e116_4k_iram_map), "e116t", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, E116T, 16, 16, ADDRESS_MAP_NAME(e116_4k_iram_map))
{
}
@@ -346,7 +374,7 @@ e116t_device::e116t_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
e116xt_device::e116xt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "E1-16XT", tag, owner, clock, E116XT, 16, 16, ADDRESS_MAP_NAME(e116_8k_iram_map), "e116xt", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, E116XT, 16, 16, ADDRESS_MAP_NAME(e116_8k_iram_map))
{
}
@@ -356,7 +384,7 @@ e116xt_device::e116xt_device(const machine_config &mconfig, const char *tag, dev
//-------------------------------------------------
e116xs_device::e116xs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "E1-16XS", tag, owner, clock, E116XS, 16, 16, ADDRESS_MAP_NAME(e116_16k_iram_map), "e116xs", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, E116XS, 16, 16, ADDRESS_MAP_NAME(e116_16k_iram_map))
{
}
@@ -366,7 +394,7 @@ e116xs_device::e116xs_device(const machine_config &mconfig, const char *tag, dev
//-------------------------------------------------
e116xsr_device::e116xsr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "E1-16XSR", tag, owner, clock, E116XSR, 16, 16, ADDRESS_MAP_NAME(e116_16k_iram_map), "e116xsr", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, E116XSR, 16, 16, ADDRESS_MAP_NAME(e116_16k_iram_map))
{
}
@@ -376,7 +404,7 @@ e116xsr_device::e116xsr_device(const machine_config &mconfig, const char *tag, d
//-------------------------------------------------
e132n_device::e132n_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "E1-32N", tag, owner, clock, E132N, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map), "e132n", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, E132N, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map))
{
}
@@ -386,7 +414,7 @@ e132n_device::e132n_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
e132t_device::e132t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "E1-32T", tag, owner, clock, E132T, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map), "e132t", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, E132T, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map))
{
}
@@ -396,7 +424,7 @@ e132t_device::e132t_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
e132xn_device::e132xn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "E1-32XN", tag, owner, clock, E132XN, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map), "e132xn", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, E132XN, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map))
{
}
@@ -406,7 +434,7 @@ e132xn_device::e132xn_device(const machine_config &mconfig, const char *tag, dev
//-------------------------------------------------
e132xt_device::e132xt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "E1-32XT", tag, owner, clock, E132XT, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map), "e132xt", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, E132XT, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map))
{
}
@@ -416,7 +444,7 @@ e132xt_device::e132xt_device(const machine_config &mconfig, const char *tag, dev
//-------------------------------------------------
e132xs_device::e132xs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "E1-32XS", tag, owner, clock, E132XS, 32, 32, ADDRESS_MAP_NAME(e132_16k_iram_map), "e132xs", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, E132XS, 32, 32, ADDRESS_MAP_NAME(e132_16k_iram_map))
{
}
@@ -426,7 +454,7 @@ e132xs_device::e132xs_device(const machine_config &mconfig, const char *tag, dev
//-------------------------------------------------
e132xsr_device::e132xsr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "E1-32XSR", tag, owner, clock, E132XSR, 32, 32, ADDRESS_MAP_NAME(e132_16k_iram_map), "e132xsr", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, E132XSR, 32, 32, ADDRESS_MAP_NAME(e132_16k_iram_map))
{
}
@@ -436,7 +464,7 @@ e132xsr_device::e132xsr_device(const machine_config &mconfig, const char *tag, d
//-------------------------------------------------
gms30c2116_device::gms30c2116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "GMS30C2116", tag, owner, clock, GMS30C2116, 16, 16, ADDRESS_MAP_NAME(e116_4k_iram_map), "gms30c2116", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, GMS30C2116, 16, 16, ADDRESS_MAP_NAME(e116_4k_iram_map))
{
}
@@ -446,7 +474,7 @@ gms30c2116_device::gms30c2116_device(const machine_config &mconfig, const char *
//-------------------------------------------------
gms30c2132_device::gms30c2132_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "GMS30C2132", tag, owner, clock, GMS30C2132, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map), "gms30c2132", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, GMS30C2132, 32, 32, ADDRESS_MAP_NAME(e132_4k_iram_map))
{
}
@@ -456,7 +484,7 @@ gms30c2132_device::gms30c2132_device(const machine_config &mconfig, const char *
//-------------------------------------------------
gms30c2216_device::gms30c2216_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "GMS30C2216", tag, owner, clock, GMS30C2216, 16, 16, ADDRESS_MAP_NAME(e116_8k_iram_map), "gms30c2216", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, GMS30C2216, 16, 16, ADDRESS_MAP_NAME(e116_8k_iram_map))
{
}
@@ -466,7 +494,7 @@ gms30c2216_device::gms30c2216_device(const machine_config &mconfig, const char *
//-------------------------------------------------
gms30c2232_device::gms30c2232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hyperstone_device(mconfig, "GMS30C2232", tag, owner, clock, GMS30C2232, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map), "gms30c2232", __FILE__)
+ : hyperstone_device(mconfig, tag, owner, clock, GMS30C2232, 32, 32, ADDRESS_MAP_NAME(e132_8k_iram_map))
{
}
@@ -4990,17 +5018,17 @@ void hyperstone_device::execute_run()
} while( m_icount > 0 );
}
-const device_type E116T = device_creator<e116t_device>;
-const device_type E116XT = device_creator<e116xt_device>;
-const device_type E116XS = device_creator<e116xs_device>;
-const device_type E116XSR = device_creator<e116xsr_device>;
-const device_type E132N = device_creator<e132n_device>;
-const device_type E132T = device_creator<e132t_device>;
-const device_type E132XN = device_creator<e132xn_device>;
-const device_type E132XT = device_creator<e132xt_device>;
-const device_type E132XS = device_creator<e132xs_device>;
-const device_type E132XSR = device_creator<e132xsr_device>;
-const device_type GMS30C2116 = device_creator<gms30c2116_device>;
-const device_type GMS30C2132 = device_creator<gms30c2132_device>;
-const device_type GMS30C2216 = device_creator<gms30c2216_device>;
-const device_type GMS30C2232 = device_creator<gms30c2232_device>;
+DEFINE_DEVICE_TYPE(E116T, e116t_device, "e116t", "E1-16T")
+DEFINE_DEVICE_TYPE(E116XT, e116xt_device, "e116xt", "E1-16XT")
+DEFINE_DEVICE_TYPE(E116XS, e116xs_device, "e116xs", "E1-16XS")
+DEFINE_DEVICE_TYPE(E116XSR, e116xsr_device, "e116xsr", "E1-16XSR")
+DEFINE_DEVICE_TYPE(E132N, e132n_device, "e132n", "E1-32N")
+DEFINE_DEVICE_TYPE(E132T, e132t_device, "e132t", "E1-32T")
+DEFINE_DEVICE_TYPE(E132XN, e132xn_device, "e132xn", "E1-32XN")
+DEFINE_DEVICE_TYPE(E132XT, e132xt_device, "e132xt", "E1-32XT")
+DEFINE_DEVICE_TYPE(E132XS, e132xs_device, "e132xs", "E1-32XS")
+DEFINE_DEVICE_TYPE(E132XSR, e132xsr_device, "e132xsr", "E1-32XSR")
+DEFINE_DEVICE_TYPE(GMS30C2116, gms30c2116_device, "gms30c2116", "GMS30C2116")
+DEFINE_DEVICE_TYPE(GMS30C2132, gms30c2132_device, "gms30c2132", "GMS30C2132")
+DEFINE_DEVICE_TYPE(GMS30C2216, gms30c2216_device, "gms30c2216", "GMS30C2216")
+DEFINE_DEVICE_TYPE(GMS30C2232, gms30c2232_device, "gms30c2232", "GMS30C2232")
diff --git a/src/devices/cpu/e132xs/e132xs.h b/src/devices/cpu/e132xs/e132xs.h
index f28d6a244e8..436d462fe11 100644
--- a/src/devices/cpu/e132xs/e132xs.h
+++ b/src/devices/cpu/e132xs/e132xs.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Pierpaolo Prazzoli
-#pragma once
+#ifndef MAME_CPU_E132XS_E132XS_H
+#define MAME_CPU_E132XS_E132XS_H
-#ifndef __E132XS_H__
-#define __E132XS_H__
+#pragma once
/*
@@ -25,155 +25,9 @@
/* Functions */
/***************************************************************************
- COMPILE-TIME DEFINITIONS
-***************************************************************************/
-
-#define PC_REGISTER 0
-#define SR_REGISTER 1
-#define BCR_REGISTER 20
-#define TPR_REGISTER 21
-#define TCR_REGISTER 22
-#define TR_REGISTER 23
-#define ISR_REGISTER 25
-#define FCR_REGISTER 26
-#define MCR_REGISTER 27
-
-#define X_CODE(val) ((val & 0x7000) >> 12)
-#define E_BIT(val) ((val & 0x8000) >> 15)
-#define S_BIT_CONST(val) ((val & 0x4000) >> 14)
-#define DD(val) ((val & 0x3000) >> 12)
-
-
-/* Extended DSP instructions */
-#define EMUL 0x102
-#define EMULU 0x104
-#define EMULS 0x106
-#define EMAC 0x10a
-#define EMACD 0x10e
-#define EMSUB 0x11a
-#define EMSUBD 0x11e
-#define EHMAC 0x02a
-#define EHMACD 0x02e
-#define EHCMULD 0x046
-#define EHCMACD 0x04e
-#define EHCSUMD 0x086
-#define EHCFFTD 0x096
-#define EHCFFTSD 0x296
-
-/* Delay values */
-#define NO_DELAY 0
-#define DELAY_EXECUTE 1
-
-/* IRQ numbers */
-#define IRQ_INT1 0
-#define IRQ_INT2 1
-#define IRQ_INT3 2
-#define IRQ_INT4 3
-#define IRQ_IO1 4
-#define IRQ_IO2 5
-#define IRQ_IO3 6
-
-/* Trap numbers */
-#define TRAPNO_IO2 48
-#define TRAPNO_IO1 49
-#define TRAPNO_INT4 50
-#define TRAPNO_INT3 51
-#define TRAPNO_INT2 52
-#define TRAPNO_INT1 53
-#define TRAPNO_IO3 54
-#define TRAPNO_TIMER 55
-#define TRAPNO_RESERVED1 56
-#define TRAPNO_TRACE_EXCEPTION 57
-#define TRAPNO_PARITY_ERROR 58
-#define TRAPNO_EXTENDED_OVERFLOW 59
-#define TRAPNO_RANGE_ERROR 60
-#define TRAPNO_PRIVILEGE_ERROR TRAPNO_RANGE_ERROR
-#define TRAPNO_FRAME_ERROR TRAPNO_RANGE_ERROR
-#define TRAPNO_RESERVED2 61
-#define TRAPNO_RESET 62 // reserved if not mapped @ MEM3
-#define TRAPNO_ERROR_ENTRY 63 // for instruction code of all ones
-
-/* Trap codes */
-#define TRAPLE 4
-#define TRAPGT 5
-#define TRAPLT 6
-#define TRAPGE 7
-#define TRAPSE 8
-#define TRAPHT 9
-#define TRAPST 10
-#define TRAPHE 11
-#define TRAPE 12
-#define TRAPNE 13
-#define TRAPV 14
-#define TRAP 15
-
-/* Entry point to get trap locations or emulated code associated */
-#define E132XS_ENTRY_MEM0 0
-#define E132XS_ENTRY_MEM1 1
-#define E132XS_ENTRY_MEM2 2
-#define E132XS_ENTRY_IRAM 3
-#define E132XS_ENTRY_MEM3 7
-
-/***************************************************************************
REGISTER ENUMERATION
***************************************************************************/
-enum
-{
- E132XS_PC = 1,
- E132XS_SR,
- E132XS_FER,
- E132XS_G3,
- E132XS_G4,
- E132XS_G5,
- E132XS_G6,
- E132XS_G7,
- E132XS_G8,
- E132XS_G9,
- E132XS_G10,
- E132XS_G11,
- E132XS_G12,
- E132XS_G13,
- E132XS_G14,
- E132XS_G15,
- E132XS_G16,
- E132XS_G17,
- E132XS_SP,
- E132XS_UB,
- E132XS_BCR,
- E132XS_TPR,
- E132XS_TCR,
- E132XS_TR,
- E132XS_WCR,
- E132XS_ISR,
- E132XS_FCR,
- E132XS_MCR,
- E132XS_G28,
- E132XS_G29,
- E132XS_G30,
- E132XS_G31,
- E132XS_CL0, E132XS_CL1, E132XS_CL2, E132XS_CL3,
- E132XS_CL4, E132XS_CL5, E132XS_CL6, E132XS_CL7,
- E132XS_CL8, E132XS_CL9, E132XS_CL10,E132XS_CL11,
- E132XS_CL12,E132XS_CL13,E132XS_CL14,E132XS_CL15,
- E132XS_L0, E132XS_L1, E132XS_L2, E132XS_L3,
- E132XS_L4, E132XS_L5, E132XS_L6, E132XS_L7,
- E132XS_L8, E132XS_L9, E132XS_L10, E132XS_L11,
- E132XS_L12, E132XS_L13, E132XS_L14, E132XS_L15,
- E132XS_L16, E132XS_L17, E132XS_L18, E132XS_L19,
- E132XS_L20, E132XS_L21, E132XS_L22, E132XS_L23,
- E132XS_L24, E132XS_L25, E132XS_L26, E132XS_L27,
- E132XS_L28, E132XS_L29, E132XS_L30, E132XS_L31,
- E132XS_L32, E132XS_L33, E132XS_L34, E132XS_L35,
- E132XS_L36, E132XS_L37, E132XS_L38, E132XS_L39,
- E132XS_L40, E132XS_L41, E132XS_L42, E132XS_L43,
- E132XS_L44, E132XS_L45, E132XS_L46, E132XS_L47,
- E132XS_L48, E132XS_L49, E132XS_L50, E132XS_L51,
- E132XS_L52, E132XS_L53, E132XS_L54, E132XS_L55,
- E132XS_L56, E132XS_L57, E132XS_L58, E132XS_L59,
- E132XS_L60, E132XS_L61, E132XS_L62, E132XS_L63
-};
-
extern unsigned dasm_hyperstone(std::ostream &stream, unsigned pc, const uint8_t *oprom, unsigned h_flag, int private_fp);
//**************************************************************************
@@ -185,14 +39,67 @@ extern unsigned dasm_hyperstone(std::ostream &stream, unsigned pc, const uint8_t
// Used by core CPU interface
class hyperstone_device : public cpu_device
{
-public:
- // construction/destruction
- hyperstone_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const device_type type, uint32_t prg_data_width, uint32_t io_data_width, address_map_constructor internal_map, const char *shortname, const char *source);
+protected:
+ enum
+ {
+ E132XS_PC = 1,
+ E132XS_SR,
+ E132XS_FER,
+ E132XS_G3,
+ E132XS_G4,
+ E132XS_G5,
+ E132XS_G6,
+ E132XS_G7,
+ E132XS_G8,
+ E132XS_G9,
+ E132XS_G10,
+ E132XS_G11,
+ E132XS_G12,
+ E132XS_G13,
+ E132XS_G14,
+ E132XS_G15,
+ E132XS_G16,
+ E132XS_G17,
+ E132XS_SP,
+ E132XS_UB,
+ E132XS_BCR,
+ E132XS_TPR,
+ E132XS_TCR,
+ E132XS_TR,
+ E132XS_WCR,
+ E132XS_ISR,
+ E132XS_FCR,
+ E132XS_MCR,
+ E132XS_G28,
+ E132XS_G29,
+ E132XS_G30,
+ E132XS_G31,
+ E132XS_CL0, E132XS_CL1, E132XS_CL2, E132XS_CL3,
+ E132XS_CL4, E132XS_CL5, E132XS_CL6, E132XS_CL7,
+ E132XS_CL8, E132XS_CL9, E132XS_CL10,E132XS_CL11,
+ E132XS_CL12,E132XS_CL13,E132XS_CL14,E132XS_CL15,
+ E132XS_L0, E132XS_L1, E132XS_L2, E132XS_L3,
+ E132XS_L4, E132XS_L5, E132XS_L6, E132XS_L7,
+ E132XS_L8, E132XS_L9, E132XS_L10, E132XS_L11,
+ E132XS_L12, E132XS_L13, E132XS_L14, E132XS_L15,
+ E132XS_L16, E132XS_L17, E132XS_L18, E132XS_L19,
+ E132XS_L20, E132XS_L21, E132XS_L22, E132XS_L23,
+ E132XS_L24, E132XS_L25, E132XS_L26, E132XS_L27,
+ E132XS_L28, E132XS_L29, E132XS_L30, E132XS_L31,
+ E132XS_L32, E132XS_L33, E132XS_L34, E132XS_L35,
+ E132XS_L36, E132XS_L37, E132XS_L38, E132XS_L39,
+ E132XS_L40, E132XS_L41, E132XS_L42, E132XS_L43,
+ E132XS_L44, E132XS_L45, E132XS_L46, E132XS_L47,
+ E132XS_L48, E132XS_L49, E132XS_L50, E132XS_L51,
+ E132XS_L52, E132XS_L53, E132XS_L54, E132XS_L55,
+ E132XS_L56, E132XS_L57, E132XS_L58, E132XS_L59,
+ E132XS_L60, E132XS_L61, E132XS_L62, E132XS_L63
+ };
- // public interfaces
+ // construction/destruction
+ hyperstone_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t io_data_width, address_map_constructor internal_map);
-protected:
void init(int scale_mask);
// device-level overrides
@@ -470,20 +377,20 @@ private:
};
// device type definition
-extern const device_type E116T;
-extern const device_type E116XT;
-extern const device_type E116XS;
-extern const device_type E116XSR;
-extern const device_type E132N;
-extern const device_type E132T;
-extern const device_type E132XN;
-extern const device_type E132XT;
-extern const device_type E132XS;
-extern const device_type E132XSR;
-extern const device_type GMS30C2116;
-extern const device_type GMS30C2132;
-extern const device_type GMS30C2216;
-extern const device_type GMS30C2232;
+DECLARE_DEVICE_TYPE(E116T, e116t_device)
+DECLARE_DEVICE_TYPE(E116XT, e116xt_device)
+DECLARE_DEVICE_TYPE(E116XS, e116xs_device)
+DECLARE_DEVICE_TYPE(E116XSR, e116xsr_device)
+DECLARE_DEVICE_TYPE(E132N, e132n_device)
+DECLARE_DEVICE_TYPE(E132T, e132t_device)
+DECLARE_DEVICE_TYPE(E132XN, e132xn_device)
+DECLARE_DEVICE_TYPE(E132XT, e132xt_device)
+DECLARE_DEVICE_TYPE(E132XS, e132xs_device)
+DECLARE_DEVICE_TYPE(E132XSR, e132xsr_device)
+DECLARE_DEVICE_TYPE(GMS30C2116, gms30c2116_device)
+DECLARE_DEVICE_TYPE(GMS30C2132, gms30c2132_device)
+DECLARE_DEVICE_TYPE(GMS30C2216, gms30c2216_device)
+DECLARE_DEVICE_TYPE(GMS30C2232, gms30c2232_device)
// ======================> e116t_device
@@ -667,4 +574,4 @@ protected:
virtual void device_start() override;
};
-#endif /* __E132XS_H__ */
+#endif // MAME_CPU_E132XS_E132XS_H
diff --git a/src/devices/cpu/es5510/es5510.cpp b/src/devices/cpu/es5510/es5510.cpp
index 43cf3ecb702..204975d0abf 100644
--- a/src/devices/cpu/es5510/es5510.cpp
+++ b/src/devices/cpu/es5510/es5510.cpp
@@ -7,17 +7,20 @@
*
***************************************************************************/
-#include <cstdio>
#include "emu.h"
-#include "debugger.h"
#include "es5510.h"
+
#include "cpu/m68000/m68000.h"
+#include "debugger.h"
+
+#include <cstdio>
+
-static const int32_t MIN_24 = -(1 << 23);
-static const int32_t MAX_24 = (1 << 23) - 1;
+static constexpr int32_t MIN_24 = -(1 << 23);
+static constexpr int32_t MAX_24 = (1 << 23) - 1;
-static const int64_t MIN_48 = -(s64(1) << 47);
-static const int64_t MAX_48 = (s64(1) << 47) - 1;
+static constexpr int64_t MIN_48 = -(s64(1) << 47);
+static constexpr int64_t MAX_48 = (s64(1) << 47) - 1;
#define SIGN_BIT_24 (0x00800000)
#define GET_SIGN_BIT_24(x) ((x) & SIGN_BIT_24)
@@ -25,15 +28,14 @@ static const int64_t MAX_48 = (s64(1) << 47) - 1;
#define CARRY_OUT_24 (0x01000000)
-static inline int32_t SX(int32_t x) { return IS_NEGATIVE(x) ? x | 0xff000000 : x & 0x00ffffff; }
-static inline int32_t SC(int32_t x) { return x & 0x00ffffff; }
-static inline int64_t SX64(int64_t x) { return (x & s64(0x0000800000000000U)) ? x | s64(0xffff000000000000U) : x & s64(0x0000ffffffffffffU); }
-//static inline int64_t SC64(int64_t x) { return x & s64(0x0000ffffffffffffU); }
+constexpr int32_t SX(int32_t x) { return IS_NEGATIVE(x) ? x | 0xff000000 : x & 0x00ffffff; }
+constexpr int32_t SC(int32_t x) { return x & 0x00ffffff; }
+constexpr int64_t SX64(int64_t x) { return (x & s64(0x0000800000000000U)) ? x | s64(0xffff000000000000U) : x & s64(0x0000ffffffffffffU); }
+//constexpr int64_t SC64(int64_t x) { return x & s64(0x0000ffffffffffffU); }
#define VERBOSE 0
#define VERBOSE_EXEC 0
-#if VERBOSE
static inline void ATTR_PRINTF(1,2) log_to_stderr(const char *format, ...) {
va_list ap;
va_start(ap, format);
@@ -41,20 +43,17 @@ static inline void ATTR_PRINTF(1,2) log_to_stderr(const char *format, ...) {
va_end(ap);
}
-#define LOG(x) do { log_to_stderr x; } while(0)
-#else
-#define LOG(x)
-#endif
+#define LOG(...) do { if (VERBOSE) log_to_stderr(__VA_ARGS__); } while(0)
#if VERBOSE_EXEC
static int exec_cc = 0;
-#define LOG_EXEC(x) do { if (!exec_cc) LOG(x); } while(0)
+#define LOG_EXEC(x) do { if (!exec_cc) LOG x; } while(0)
#else
#define LOG_EXEC(x)
#endif
-const device_type ES5510 = device_creator<es5510_device>;
+DEFINE_DEVICE_TYPE(ES5510, es5510_device, "es5510", "ES5510")
#define FLAG_N (1 << 7)
#define FLAG_C (1 << 6)
@@ -127,7 +126,7 @@ inline static int32_t asl(int32_t value, int shift, uint8_t &flags) {
}
es5510_device::es5510_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: cpu_device(mconfig, ES5510, "ES5510", tag, owner, clock, "es5510", __FILE__)
+ : cpu_device(mconfig, ES5510, tag, owner, clock)
{
// Initialize ESP to mostly zeroed, configured for 64k samples of delay line memory, running (not halted)
halt_asserted = false;
@@ -370,30 +369,30 @@ READ8_MEMBER(es5510_device::host_r)
switch(offset)
{
- case 0x00: LOG(("ES5510: Host Read GPR latch[2]: %02x\n", (gpr_latch >> 16) & 0xff)); return (gpr_latch >> 16) & 0xff;
- case 0x01: LOG(("ES5510: Host Read GPR latch[1]: %02x\n", (gpr_latch >> 8) & 0xff)); return (gpr_latch >> 8) & 0xff;
- case 0x02: LOG(("ES5510: Host Read GPR latch[0]: %02x\n", (gpr_latch >> 0) & 0xff)); return (gpr_latch >> 0) & 0xff;
+ case 0x00: LOG("ES5510: Host Read GPR latch[2]: %02x\n", (gpr_latch >> 16) & 0xff); return (gpr_latch >> 16) & 0xff;
+ case 0x01: LOG("ES5510: Host Read GPR latch[1]: %02x\n", (gpr_latch >> 8) & 0xff); return (gpr_latch >> 8) & 0xff;
+ case 0x02: LOG("ES5510: Host Read GPR latch[0]: %02x\n", (gpr_latch >> 0) & 0xff); return (gpr_latch >> 0) & 0xff;
- case 0x03: LOG(("ES5510: Host Read INSTR latch[5]: %02x\n", (uint8_t)((instr_latch >> 40) & 0xff))); return (instr_latch >> 40) & 0xff;
- case 0x04: LOG(("ES5510: Host Read INSTR latch[4]: %02x\n", (uint8_t)((instr_latch >> 32) & 0xff))); return (instr_latch >> 32) & 0xff;
- case 0x05: LOG(("ES5510: Host Read INSTR latch[3]: %02x\n", (uint8_t)((instr_latch >> 24) & 0xff))); return (instr_latch >> 24) & 0xff;
- case 0x06: LOG(("ES5510: Host Read INSTR latch[2]: %02x\n", (uint8_t)((instr_latch >> 16) & 0xff))); return (instr_latch >> 16) & 0xff;
- case 0x07: LOG(("ES5510: Host Read INSTR latch[1]: %02x\n", (uint8_t)((instr_latch >> 8) & 0xff))); return (instr_latch >> 8) & 0xff;
- case 0x08: LOG(("ES5510: Host Read INSTR latch[0]: %02x\n", (uint8_t)((instr_latch >> 0) & 0xff))); return (instr_latch >> 0) & 0xff;
+ case 0x03: LOG("ES5510: Host Read INSTR latch[5]: %02x\n", uint8_t((instr_latch >> 40) & 0xff)); return (instr_latch >> 40) & 0xff;
+ case 0x04: LOG("ES5510: Host Read INSTR latch[4]: %02x\n", uint8_t((instr_latch >> 32) & 0xff)); return (instr_latch >> 32) & 0xff;
+ case 0x05: LOG("ES5510: Host Read INSTR latch[3]: %02x\n", uint8_t((instr_latch >> 24) & 0xff)); return (instr_latch >> 24) & 0xff;
+ case 0x06: LOG("ES5510: Host Read INSTR latch[2]: %02x\n", uint8_t((instr_latch >> 16) & 0xff)); return (instr_latch >> 16) & 0xff;
+ case 0x07: LOG("ES5510: Host Read INSTR latch[1]: %02x\n", uint8_t((instr_latch >> 8) & 0xff)); return (instr_latch >> 8) & 0xff;
+ case 0x08: LOG("ES5510: Host Read INSTR latch[0]: %02x\n", uint8_t((instr_latch >> 0) & 0xff)); return (instr_latch >> 0) & 0xff;
- case 0x09: LOG(("ES5510: Host Read DIL latch[2]: %02x\n", (dil_latch >> 16) & 0xff)); return (dil_latch >> 16) & 0xff;
- case 0x0a: LOG(("ES5510: Host Read DIL latch[1]: %02x\n", (dil_latch >> 8) & 0xff)); return (dil_latch >> 8) & 0xff;
- case 0x0b: LOG(("ES5510: Host Read DIL latch[0]: %02x\n", 0)); return 0;
+ case 0x09: LOG("ES5510: Host Read DIL latch[2]: %02x\n", (dil_latch >> 16) & 0xff); return (dil_latch >> 16) & 0xff;
+ case 0x0a: LOG("ES5510: Host Read DIL latch[1]: %02x\n", (dil_latch >> 8) & 0xff); return (dil_latch >> 8) & 0xff;
+ case 0x0b: LOG("ES5510: Host Read DIL latch[0]: %02x\n", 0); return 0;
- case 0x0c: LOG(("ES5510: Host Read DOL latch[2]: %02x\n", (dol_latch >> 16) & 0xff)); return (dol_latch >> 16) & 0xff;
- case 0x0d: LOG(("ES5510: Host Read DOL latch[1]: %02x\n", (dol_latch >> 8) & 0xff)); return (dol_latch >> 8) & 0xff;
- case 0x0e: LOG(("ES5510: Host Read DOL latch[0]: %02x\n", 0xff)); return 0xff;
+ case 0x0c: LOG("ES5510: Host Read DOL latch[2]: %02x\n", (dol_latch >> 16) & 0xff); return (dol_latch >> 16) & 0xff;
+ case 0x0d: LOG("ES5510: Host Read DOL latch[1]: %02x\n", (dol_latch >> 8) & 0xff); return (dol_latch >> 8) & 0xff;
+ case 0x0e: LOG("ES5510: Host Read DOL latch[0]: %02x\n", 0xff); return 0xff;
- case 0x0f: LOG(("ES5510: Host Read DADR latch[2]: %02x\n", (dadr_latch >> 16) & 0xff)); return (dadr_latch >> 16) & 0xff;
- case 0x10: LOG(("ES5510: Host Read DADR latch[1]: %02x\n", (dadr_latch >> 8) & 0xff)); return (dadr_latch >> 8) & 0xff;
- case 0x11: LOG(("ES5510: Host Read DADR latch[0]: %02x\n", (dadr_latch >> 0) & 0xff)); return (dadr_latch >> 0) & 0xff;
+ case 0x0f: LOG("ES5510: Host Read DADR latch[2]: %02x\n", (dadr_latch >> 16) & 0xff); return (dadr_latch >> 16) & 0xff;
+ case 0x10: LOG("ES5510: Host Read DADR latch[1]: %02x\n", (dadr_latch >> 8) & 0xff); return (dadr_latch >> 8) & 0xff;
+ case 0x11: LOG("ES5510: Host Read DADR latch[0]: %02x\n", (dadr_latch >> 0) & 0xff); return (dadr_latch >> 0) & 0xff;
- case 0x12: LOG(("ES5510: Host Reading Host Control\n")); return 0; // Host Control
+ case 0x12: LOG("ES5510: Host Reading Host Control\n"); return 0; // Host Control
case 0x16: return 0x27; // Program Counter, for test purposes only
}
@@ -410,30 +409,30 @@ WRITE8_MEMBER(es5510_device::host_w)
switch (offset) {
case 0x00:
gpr_latch = (gpr_latch&0x00ffff) | ((data&0xff)<<16);
- LOG(("ES5510: Host Write GPR latch[2] = %02x -> %06x (%d)\n", data, gpr_latch, SX(gpr_latch)));
+ LOG("ES5510: Host Write GPR latch[2] = %02x -> %06x (%d)\n", data, gpr_latch, SX(gpr_latch));
break;
case 0x01:
gpr_latch = (gpr_latch&0xff00ff) | ((data&0xff)<< 8);
- LOG(("ES5510: Host Write GPR latch[1] = %02x -> %06x (%d)\n", data, gpr_latch, SX(gpr_latch)));
+ LOG("ES5510: Host Write GPR latch[1] = %02x -> %06x (%d)\n", data, gpr_latch, SX(gpr_latch));
break;
case 0x02:
gpr_latch = (gpr_latch&0xffff00) | ((data&0xff)<< 0);
- LOG(("ES5510: Host Write GPR latch[0] = %02x -> %06x (%d)\n", data, gpr_latch, SX(gpr_latch)));
+ LOG("ES5510: Host Write GPR latch[0] = %02x -> %06x (%d)\n", data, gpr_latch, SX(gpr_latch));
break;
/* 0x03 to 0x08 INSTR Register */
- case 0x03: instr_latch = ((instr_latch&0x00ffffffffffU) | ((int64_t)data&0xff)<<40); LOG(("%s",string_format("ES5510: Host Write INSTR latch[5] = %02x -> %012I64x\n", data, instr_latch).c_str())); break;
- case 0x04: instr_latch = ((instr_latch&0xff00ffffffffU) | ((int64_t)data&0xff)<<32); LOG(("%s",string_format("ES5510: Host Write INSTR latch[4] = %02x -> %012I64x\n", data, instr_latch).c_str())); break;
- case 0x05: instr_latch = ((instr_latch&0xffff00ffffffU) | ((int64_t)data&0xff)<<24); LOG(("%s",string_format("ES5510: Host Write INSTR latch[3] = %02x -> %012I64x\n", data, instr_latch).c_str())); break;
- case 0x06: instr_latch = ((instr_latch&0xffffff00ffffU) | ((int64_t)data&0xff)<<16); LOG(("%s",string_format("ES5510: Host Write INSTR latch[2] = %02x -> %012I64x\n", data, instr_latch).c_str())); break;
- case 0x07: instr_latch = ((instr_latch&0xffffffff00ffU) | ((int64_t)data&0xff)<< 8); LOG(("%s",string_format("ES5510: Host Write INSTR latch[1] = %02x -> %012I64x\n", data, instr_latch).c_str())); break;
- case 0x08: instr_latch = ((instr_latch&0xffffffffff00U) | ((int64_t)data&0xff)<< 0); LOG(("%s",string_format("ES5510: Host Write INSTR latch[0] = %02x -> %012I64x\n", data, instr_latch).c_str())); break;
+ case 0x03: instr_latch = ((instr_latch&0x00ffffffffffU) | (int64_t(data)&0xff)<<40); LOG("%s",string_format("ES5510: Host Write INSTR latch[5] = %02x -> %012I64x\n", data, instr_latch).c_str()); break;
+ case 0x04: instr_latch = ((instr_latch&0xff00ffffffffU) | (int64_t(data)&0xff)<<32); LOG("%s",string_format("ES5510: Host Write INSTR latch[4] = %02x -> %012I64x\n", data, instr_latch).c_str()); break;
+ case 0x05: instr_latch = ((instr_latch&0xffff00ffffffU) | (int64_t(data)&0xff)<<24); LOG("%s",string_format("ES5510: Host Write INSTR latch[3] = %02x -> %012I64x\n", data, instr_latch).c_str()); break;
+ case 0x06: instr_latch = ((instr_latch&0xffffff00ffffU) | (int64_t(data)&0xff)<<16); LOG("%s",string_format("ES5510: Host Write INSTR latch[2] = %02x -> %012I64x\n", data, instr_latch).c_str()); break;
+ case 0x07: instr_latch = ((instr_latch&0xffffffff00ffU) | (int64_t(data)&0xff)<< 8); LOG("%s",string_format("ES5510: Host Write INSTR latch[1] = %02x -> %012I64x\n", data, instr_latch).c_str()); break;
+ case 0x08: instr_latch = ((instr_latch&0xffffffffff00U) | (int64_t(data)&0xff)<< 0); LOG("%s",string_format("ES5510: Host Write INSTR latch[0] = %02x -> %012I64x\n", data, instr_latch).c_str()); break;
/* 0x09 to 0x0b DIL Register (r/o) */
- case 0x0c: dol_latch = (dol_latch&0x00ffff) | ((data&0xff)<<16); LOG(("ES5510: Host Write DOL latch[2] = %02x -> %06x (%d)\n", data, dol_latch, SX(dol_latch))); break;
- case 0x0d: dol_latch = (dol_latch&0xff00ff) | ((data&0xff)<< 8); LOG(("ES5510: Host Write DOL latch[1] = %02x -> %06x (%d)\n", data, dol_latch, SX(dol_latch))); break;
- case 0x0e: dol_latch = (dol_latch&0xffff00) | ((data&0xff)<< 0); LOG(("ES5510: Host Write DOL latch[0] = %02x -> %06x (%d)\n", data, dol_latch, SX(dol_latch))); break; //TODO: docs says that this always returns 0xff
+ case 0x0c: dol_latch = (dol_latch&0x00ffff) | ((data&0xff)<<16); LOG("ES5510: Host Write DOL latch[2] = %02x -> %06x (%d)\n", data, dol_latch, SX(dol_latch)); break;
+ case 0x0d: dol_latch = (dol_latch&0xff00ff) | ((data&0xff)<< 8); LOG("ES5510: Host Write DOL latch[1] = %02x -> %06x (%d)\n", data, dol_latch, SX(dol_latch)); break;
+ case 0x0e: dol_latch = (dol_latch&0xffff00) | ((data&0xff)<< 0); LOG("ES5510: Host Write DOL latch[0] = %02x -> %06x (%d)\n", data, dol_latch, SX(dol_latch)); break; //TODO: docs says that this always returns 0xff
case 0x0f:
dadr_latch = (dadr_latch&0x00ffff) | ((data&0xff)<<16);
@@ -458,26 +457,26 @@ WRITE8_MEMBER(es5510_device::host_w)
/* 0x17 Internal Refresh counter (test purpose) */
/* 0x18 Host Serial Control */
case 0x18:
- LOG(("ES5510: Host Write Host Serial control %02x: %s, %s, ser3 %s, ser2 %s, ser1 %s, ser0 %s\n", data,
+ LOG("ES5510: Host Write Host Serial control %02x: %s, %s, ser3 %s, ser2 %s, ser1 %s, ser0 %s\n", data,
data&0x80 ? "Master" : "Slave",
data&0x40 ? "Sony" : "I2S",
data & 0x20 ? "Out" : "In",
data & 0x10 ? "Out" : "In",
data & 0x08 ? "Out" : "In",
- data & 0x04 ? "Out" : "In"));
+ data & 0x04 ? "Out" : "In");
break;
/* 0x1f Halt enable (w) / Frame Counter (r) */
case 0x1F:
- LOG(("ES5510: Host Write Halt Enable %02x; HALT line is %d\n", data, halt_asserted));
+ LOG("ES5510: Host Write Halt Enable %02x; HALT line is %d\n", data, halt_asserted);
if (halt_asserted) {
- LOG(("ES5510: Host Write to Halt Enable while HALT line is asserted: Halting!\n"));
+ LOG("ES5510: Host Write to Halt Enable while HALT line is asserted: Halting!\n");
state = STATE_HALTED;
}
break;
case 0x80: /* Read select - GPR + INSTR */
- LOG(("%s",string_format("ES5510: Host Read INSTR+GPR %02x (%s): %012I64x %06x (%d)\n", data, REGNAME(data & 0xff), instr[data] & 0xffffffffffffU, gpr[data] & 0xffffff, gpr[data]).c_str()));
+ LOG("%s",string_format("ES5510: Host Read INSTR+GPR %02x (%s): %012I64x %06x (%d)\n", data, REGNAME(data & 0xff), instr[data] & 0xffffffffffffU, gpr[data] & 0xffffff, gpr[data]).c_str());
/* Check if an INSTR address is selected */
if (data < 0xa0) {
@@ -491,14 +490,14 @@ WRITE8_MEMBER(es5510_device::host_w)
break;
case 0xa0: /* Write select - GPR */
- LOG(("ES5510: Host Write GPR %02x (%s): %06x (%d)\n", data, REGNAME(data&0xff), gpr_latch, SX(gpr_latch)));
+ LOG("ES5510: Host Write GPR %02x (%s): %06x (%d)\n", data, REGNAME(data&0xff), gpr_latch, SX(gpr_latch));
write_reg(data, gpr_latch);
break;
case 0xc0: /* Write select - INSTR */
#if VERBOSE
DESCRIBE_INSTR(buf, instr_latch, gpr[data], nullptr, nullptr, nullptr, nullptr);
- LOG(("%s",string_format("ES5510: Host Write INSTR %02x %012I64x: %s\n", data, instr_latch&0xffffffffffffU, buf).c_str()));
+ LOG("%s",string_format("ES5510: Host Write INSTR %02x %012I64x: %s\n", data, instr_latch&0xffffffffffffU, buf).c_str());
#endif
if (data < 0xa0) {
instr[data] = instr_latch&0xffffffffffffU;
@@ -508,7 +507,7 @@ WRITE8_MEMBER(es5510_device::host_w)
case 0xe0: /* Write select - GPR + INSTR */
#if VERBOSE
DESCRIBE_INSTR(buf, instr_latch, gpr_latch, nullptr, nullptr, nullptr, nullptr);
- LOG(("%s",string_format("ES5510: Host Write INSTR+GPR %02x (%s): %012I64x %06x (%d): %s\n", data, REGNAME(data&0xff), instr_latch, gpr_latch, SX(gpr_latch), buf).c_str()));
+ LOG("%s",string_format("ES5510: Host Write INSTR+GPR %02x (%s): %012I64x %06x (%d): %s\n", data, REGNAME(data&0xff), instr_latch, gpr_latch, SX(gpr_latch), buf).c_str());
#endif
if (data < 0xa0) {
instr[data] = instr_latch;
@@ -601,7 +600,7 @@ void es5510_device::execute_set_input(int linenum, int state) {
}
void es5510_device::list_program(void(p)(const char *, ...)) {
- LOG(("ES5501: Starting!\n"));
+ LOG("ES5501: Starting!\n");
char buf[1024];
bool is_written[0x100], is_read[0x100];
diff --git a/src/devices/cpu/es5510/es5510.h b/src/devices/cpu/es5510/es5510.h
index 89da725c28e..d3524aa5324 100644
--- a/src/devices/cpu/es5510/es5510.h
+++ b/src/devices/cpu/es5510/es5510.h
@@ -7,10 +7,10 @@
*
**********************************************************************************************/
-#pragma once
+#ifndef MAME_CPU_ES5510_ES5510_H
+#define MAME_CPU_ES5510_ES5510_H
-#ifndef __ES5510_H__
-#define __ES5510_H__
+#pragma once
class es5510_device : public cpu_device {
@@ -189,6 +189,6 @@ private:
ram_t ram, ram_p, ram_pp; // ram operations for cycles N, N-1 and N-2
};
-extern const device_type ES5510;
+DECLARE_DEVICE_TYPE(ES5510, es5510_device)
-#endif // __ES5510_H__
+#endif // MAME_CPU_ES5510_ES5510_H
diff --git a/src/devices/cpu/esrip/esrip.cpp b/src/devices/cpu/esrip/esrip.cpp
index 2780a3a50e3..77f2401200d 100644
--- a/src/devices/cpu/esrip/esrip.cpp
+++ b/src/devices/cpu/esrip/esrip.cpp
@@ -1687,14 +1687,14 @@ void esrip_device::nop(uint16_t inst)
// DEVICE INTERFACE
//**************************************************************************
-const device_type ESRIP = device_creator<esrip_device>;
+DEFINE_DEVICE_TYPE(ESRIP, esrip_device, "esrip", "Entertainment Sciences RIP")
//-------------------------------------------------
// esrip_device - constructor
//-------------------------------------------------
esrip_device::esrip_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, ESRIP, "ESRIP", tag, owner, clock, "esrip", __FILE__),
+ : cpu_device(mconfig, ESRIP, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, 64, 9, -3),
m_fdt_r(*this),
m_fdt_w(*this),
diff --git a/src/devices/cpu/esrip/esrip.h b/src/devices/cpu/esrip/esrip.h
index 7af07d8f7c4..873a8bf1580 100644
--- a/src/devices/cpu/esrip/esrip.h
+++ b/src/devices/cpu/esrip/esrip.h
@@ -8,18 +8,11 @@
***************************************************************************/
-#ifndef _ESRIP_H
-#define _ESRIP_H
+#ifndef MAME_CPU_ESRIP_ESRIP_H
+#define MAME_CPU_ESRIP_ESRIP_H
+#pragma once
-/***************************************************************************
- COMPILE-TIME DEFINITIONS
-***************************************************************************/
-
-
-/***************************************************************************
- GLOBAL CONSTANTS
-***************************************************************************/
/***************************************************************************
INTERFACE CONFIGURATION MACROS
@@ -36,77 +29,18 @@
devcb = &esrip_device::static_set_status_in_callback(*device, DEVCB_##_read);
#define MCFG_ESRIP_DRAW_CALLBACK_OWNER(_class, _method) \
- esrip_device::static_set_draw_callback(*device, esrip_draw_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ esrip_device::static_set_draw_callback(*device, esrip_device::draw_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ESRIP_LBRM_PROM(_tag) \
esrip_device::static_lbrm_prom(*device, _tag);
-/***************************************************************************
- REGISTER ENUMERATION
-***************************************************************************/
-
-enum
-{
- ESRIP_PC = 1,
- ESRIP_ACC,
- ESRIP_DLATCH,
- ESRIP_ILATCH,
- ESRIP_RAM00,
- ESRIP_RAM01,
- ESRIP_RAM02,
- ESRIP_RAM03,
- ESRIP_RAM04,
- ESRIP_RAM05,
- ESRIP_RAM06,
- ESRIP_RAM07,
- ESRIP_RAM08,
- ESRIP_RAM09,
- ESRIP_RAM0A,
- ESRIP_RAM0B,
- ESRIP_RAM0C,
- ESRIP_RAM0D,
- ESRIP_RAM0E,
- ESRIP_RAM0F,
- ESRIP_RAM10,
- ESRIP_RAM11,
- ESRIP_RAM12,
- ESRIP_RAM13,
- ESRIP_RAM14,
- ESRIP_RAM15,
- ESRIP_RAM16,
- ESRIP_RAM17,
- ESRIP_RAM18,
- ESRIP_RAM19,
- ESRIP_RAM1A,
- ESRIP_RAM1B,
- ESRIP_RAM1C,
- ESRIP_RAM1D,
- ESRIP_RAM1E,
- ESRIP_RAM1F,
- ESRIP_STATW,
- ESRIP_FDTC,
- ESRIP_IPTC,
- ESRIP_XSCALE,
- ESRIP_YSCALE,
- ESRIP_BANK,
- ESRIP_LINE,
- ESRIP_FIG,
- ESRIP_ATTR,
- ESRIP_ADRL,
- ESRIP_ADRR,
- ESRIP_COLR,
- ESRIP_IADDR
-};
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<int (int l, int r, int fig, int attr, int addr, int col, int x_scale, int bank)> esrip_draw_delegate;
// device type definition
-extern const device_type ESRIP;
+DECLARE_DEVICE_TYPE(ESRIP, esrip_device)
// ======================> esrip_device
@@ -114,20 +48,76 @@ extern const device_type ESRIP;
class esrip_device : public cpu_device
{
public:
+ typedef device_delegate<int (int l, int r, int fig, int attr, int addr, int col, int x_scale, int bank)> draw_delegate;
+
// construction/destruction
esrip_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration helpers
- template<class _Object> static devcb_base &static_set_fdt_r_callback(device_t &device, _Object object) { return downcast<esrip_device &>(device).m_fdt_r.set_callback(object); }
- template<class _Object> static devcb_base &static_set_fdt_w_callback(device_t &device, _Object object) { return downcast<esrip_device &>(device).m_fdt_w.set_callback(object); }
- template<class _Object> static devcb_base &static_set_status_in_callback(device_t &device, _Object object) { return downcast<esrip_device &>(device).m_status_in.set_callback(object); }
- static void static_set_draw_callback(device_t &device, esrip_draw_delegate func) { downcast<esrip_device &>(device).m_draw = func; }
+ template <class Object> static devcb_base &static_set_fdt_r_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_fdt_r.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_fdt_w_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_fdt_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_status_in_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_status_in.set_callback(std::forward<Object>(cb)); }
+ static void static_set_draw_callback(device_t &device, draw_delegate func) { downcast<esrip_device &>(device).m_draw = func; }
static void static_lbrm_prom(device_t &device, const char *name) { downcast<esrip_device &>(device).m_lbrm_prom = name; }
// public interfaces
uint8_t get_rip_status();
protected:
+ // register enumeration
+ enum
+ {
+ ESRIP_PC = 1,
+ ESRIP_ACC,
+ ESRIP_DLATCH,
+ ESRIP_ILATCH,
+ ESRIP_RAM00,
+ ESRIP_RAM01,
+ ESRIP_RAM02,
+ ESRIP_RAM03,
+ ESRIP_RAM04,
+ ESRIP_RAM05,
+ ESRIP_RAM06,
+ ESRIP_RAM07,
+ ESRIP_RAM08,
+ ESRIP_RAM09,
+ ESRIP_RAM0A,
+ ESRIP_RAM0B,
+ ESRIP_RAM0C,
+ ESRIP_RAM0D,
+ ESRIP_RAM0E,
+ ESRIP_RAM0F,
+ ESRIP_RAM10,
+ ESRIP_RAM11,
+ ESRIP_RAM12,
+ ESRIP_RAM13,
+ ESRIP_RAM14,
+ ESRIP_RAM15,
+ ESRIP_RAM16,
+ ESRIP_RAM17,
+ ESRIP_RAM18,
+ ESRIP_RAM19,
+ ESRIP_RAM1A,
+ ESRIP_RAM1B,
+ ESRIP_RAM1C,
+ ESRIP_RAM1D,
+ ESRIP_RAM1E,
+ ESRIP_RAM1F,
+ ESRIP_STATW,
+ ESRIP_FDTC,
+ ESRIP_IPTC,
+ ESRIP_XSCALE,
+ ESRIP_YSCALE,
+ ESRIP_BANK,
+ ESRIP_LINE,
+ ESRIP_FIG,
+ ESRIP_ATTR,
+ ESRIP_ADRL,
+ ESRIP_ADRR,
+ ESRIP_COLR,
+ ESRIP_IADDR
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -212,7 +202,7 @@ protected:
devcb_read16 m_fdt_r;
devcb_write16 m_fdt_w;
devcb_read8 m_status_in;
- esrip_draw_delegate m_draw;
+ draw_delegate m_draw;
const char *m_lbrm_prom;
typedef void (esrip_device::*ophandler)(uint16_t inst);
@@ -279,4 +269,4 @@ private:
CPU_DISASSEMBLE( esrip );
-#endif /* _ESRIP_H */
+#endif // MAME_CPU_ESRIP_ESRIP_H
diff --git a/src/devices/cpu/f8/f8.cpp b/src/devices/cpu/f8/f8.cpp
index 8df6d500366..1b26b4ab638 100644
--- a/src/devices/cpu/f8/f8.cpp
+++ b/src/devices/cpu/f8/f8.cpp
@@ -15,8 +15,8 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "f8.h"
+#include "debugger.h"
#define S 0x01
#define C 0x02
@@ -56,11 +56,11 @@
}
-const device_type F8 = device_creator<f8_cpu_device>;
+DEFINE_DEVICE_TYPE(F8, f8_cpu_device, "f8", "Fairchild F8")
f8_cpu_device::f8_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, F8, "Fairchild F8", tag, owner, clock, "f8", __FILE__)
+ : cpu_device(mconfig, F8, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 8, 16, 0)
, m_io_config("io", ENDIANNESS_BIG, 8, 8, 0)
, m_pc0(0)
diff --git a/src/devices/cpu/f8/f8.h b/src/devices/cpu/f8/f8.h
index 02c1d4733e3..558c0b2a468 100644
--- a/src/devices/cpu/f8/f8.h
+++ b/src/devices/cpu/f8/f8.h
@@ -7,15 +7,24 @@
*
*****************************************************************************/
+#ifndef MAME_CPU_F8_F8_H
+#define MAME_CPU_F8_F8_H
+
#pragma once
-#ifndef __F8_H__
-#define _F8_H
+#define F8_INPUT_LINE_INT_REQ 1
-enum
+class f8_cpu_device : public cpu_device
{
- F8_PC0=1, F8_PC1, F8_DC0, F8_DC1, F8_W, F8_A, F8_IS,
+public:
+ // construction/destruction
+ f8_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ enum
+ {
+ F8_PC0=1, F8_PC1, F8_DC0, F8_DC1, F8_W, F8_A, F8_IS,
F8_J, F8_HU, F8_HL, F8_KU, F8_KL, F8_QU, F8_QL,
F8_R0, F8_R1, F8_R2, F8_R3, F8_R4, F8_R5, F8_R6, F8_R7, F8_R8,
@@ -25,17 +34,8 @@ enum
F8_R40, F8_R41, F8_R42, F8_R43, F8_R44, F8_R45, F8_R46, F8_R47,
F8_R48, F8_R49, F8_R50, F8_R51, F8_R52, F8_R53, F8_R54, F8_R55,
F8_R56, F8_R57, F8_R58, F8_R59, F8_R60, F8_R61, F8_R62, F8_R63
-};
+ };
-#define F8_INPUT_LINE_INT_REQ 1
-
-class f8_cpu_device : public cpu_device
-{
-public:
- // construction/destruction
- f8_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -211,7 +211,6 @@ private:
};
-extern const device_type F8;
-
+DECLARE_DEVICE_TYPE(F8, f8_cpu_device)
-#endif /* __F8_H__ */
+#endif // MAME_CPU_F8_F8_H
diff --git a/src/devices/cpu/g65816/g65816.cpp b/src/devices/cpu/g65816/g65816.cpp
index f15d6fcb7d5..b68fccce743 100644
--- a/src/devices/cpu/g65816/g65816.cpp
+++ b/src/devices/cpu/g65816/g65816.cpp
@@ -93,20 +93,24 @@ TODO general:
#include "g65816.h"
-const device_type G65816 = device_creator<g65816_device>;
-const device_type _5A22 = device_creator<_5a22_device>;
+DEFINE_DEVICE_TYPE(G65816, g65816_device, "g65c816", "G65C816")
+DEFINE_DEVICE_TYPE(_5A22, _5a22_device, "5a22", "5A22")
+
+enum
+{
+ CPU_TYPE_G65816 = 0,
+ CPU_TYPE_5A22 = 1
+};
g65816_device::g65816_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, G65816, "G65C816", tag, owner, clock, "g65c816", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 8, 24, 0)
- , m_cpu_type(CPU_TYPE_G65816)
+ : g65816_device(mconfig, G65816, tag, owner, clock, CPU_TYPE_G65816, nullptr)
{
}
-g65816_device::g65816_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int cpu_type, address_map_constructor internal)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+g65816_device::g65816_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cpu_type, address_map_constructor internal)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 24, 0, internal)
, m_cpu_type(cpu_type)
{
@@ -130,7 +134,7 @@ ADDRESS_MAP_END
_5a22_device::_5a22_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : g65816_device(mconfig, _5A22, "5A22", tag, owner, clock, "5a22", __FILE__, CPU_TYPE_5A22, ADDRESS_MAP_NAME(_5a22_map))
+ : g65816_device(mconfig, _5A22, tag, owner, clock, CPU_TYPE_5A22, ADDRESS_MAP_NAME(_5a22_map))
{
}
diff --git a/src/devices/cpu/g65816/g65816.h b/src/devices/cpu/g65816/g65816.h
index 07c649c746c..ab85e1513fc 100644
--- a/src/devices/cpu/g65816/g65816.h
+++ b/src/devices/cpu/g65816/g65816.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Karl Stenerud
-#pragma once
+#ifndef MAME_CPU_G65816_G65816_H
+#define MAME_CPU_G65816_G65816_H
-#ifndef __G65816_H__
-#define __G65816_H__
+#pragma once
#include "g65816cm.h"
@@ -45,26 +45,26 @@ enum
#define G65816_INT_NMI G65816_LINE_NMI
-/* Registers - used by g65816_set_reg() and g65816_get_reg() */
-enum
-{
- G65816_PC=1, G65816_S, G65816_P, G65816_A, G65816_X, G65816_Y,
- G65816_PB, G65816_DB, G65816_D, G65816_E,
- G65816_NMI_STATE, G65816_IRQ_STATE,
- _5A22_FASTROM
-};
-
-
class g65816_device : public cpu_device
{
public:
// construction/destruction
g65816_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- g65816_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int cpu_type, address_map_constructor internal = nullptr);
void set_read_vector_callback(read8_delegate read_vector);
protected:
+ /* Registers - used by g65816_set_reg() and g65816_get_reg() */
+ enum
+ {
+ G65816_PC=1, G65816_S, G65816_P, G65816_A, G65816_X, G65816_Y,
+ G65816_PB, G65816_DB, G65816_D, G65816_E,
+ G65816_NMI_STATE, G65816_IRQ_STATE,
+ _5A22_FASTROM
+ };
+
+ g65816_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cpu_type, address_map_constructor internal);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -1555,12 +1555,8 @@ protected:
};
-extern const device_type G65816;
-extern const device_type _5A22;
-
-
-#define CPU_TYPE_G65816 0
-#define CPU_TYPE_5A22 1
+DECLARE_DEVICE_TYPE(G65816, g65816_device)
+DECLARE_DEVICE_TYPE(_5A22, _5a22_device)
/* ======================================================================== */
diff --git a/src/devices/cpu/h6280/h6280.cpp b/src/devices/cpu/h6280/h6280.cpp
index 87a3f2c8dd1..fb0d2dc70a7 100644
--- a/src/devices/cpu/h6280/h6280.cpp
+++ b/src/devices/cpu/h6280/h6280.cpp
@@ -7,7 +7,7 @@
Copyright Bryan McPhail, mish@tendril.co.uk
This source code is based (with permission!) on the 6502 emulator by
- Juergen Buchmueller. It is released as part of the Mame emulator project.
+ Juergen Buchmueller. It is released as part of the MAME emulator project.
Let me know if you intend to use this code in any other project.
@@ -153,16 +153,16 @@ enum
// DEVICE INTERFACE
//**************************************************************************
-const device_type H6280 = device_creator<h6280_device>;
+DEFINE_DEVICE_TYPE(H6280, h6280_device, "h6280", "HuC6280")
//-------------------------------------------------
// h6280_device - constructor
//-------------------------------------------------
h6280_device::h6280_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, H6280, "H6280", tag, owner, clock, "h6280", __FILE__),
- m_program_config("program", ENDIANNESS_LITTLE, 8, 21),
- m_io_config("io", ENDIANNESS_LITTLE, 8, 2)
+ : cpu_device(mconfig, H6280, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 8, 21)
+ , m_io_config("io", ENDIANNESS_LITTLE, 8, 2)
{
// build the opcode table
for (int op = 0; op < 256; op++)
@@ -255,7 +255,7 @@ void h6280_device::device_start()
save_item(NAME(m_irq_state[2]));
save_item(NAME(m_irq_pending));
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
save_item(NAME(m_nz));
#endif
save_item(NAME(m_io_buffer));
@@ -287,7 +287,7 @@ void h6280_device::device_reset()
m_irq_mask = 0;
m_timer_ack = 0;
m_timer_value = 0;
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
m_nz = 0;
#endif
m_io_buffer = 0;
@@ -333,7 +333,7 @@ inline void h6280_device::h6280_cycles(int cyc)
m_timer_value -= ((cyc) * m_clocks_per_cycle);
}
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
#define NZ m_NZ
inline void h6280_device::set_nz(uint8_t n)
@@ -709,7 +709,7 @@ inline void h6280_device::wb_eaz(uint8_t tmp)
* including N and Z and set any
* SET and clear any CLR bits also
***************************************************************/
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
inline void h6280_device::compose_p(uint8_t SET, uint8_t CLR)
{
@@ -880,7 +880,7 @@ inline void h6280_device::bcs()
***************************************************************/
inline void h6280_device::beq()
{
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
bra(!(NZ & 0xff));
#else
bra(P & _fZ);
@@ -903,7 +903,7 @@ inline void h6280_device::bit(uint8_t tmp)
***************************************************************/
inline void h6280_device::bmi()
{
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
bra(NZ & 0x8000);
#else
bra(P & _fN);
@@ -915,7 +915,7 @@ inline void h6280_device::bmi()
***************************************************************/
inline void h6280_device::bne()
{
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
bra(NZ & 0xff);
#else
bra(!(P & _fZ));
@@ -927,7 +927,7 @@ inline void h6280_device::bne()
***************************************************************/
inline void h6280_device::bpl()
{
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
bra(!(NZ & 0x8000));
#else
bra(!(P & _fN));
@@ -1319,7 +1319,7 @@ inline void h6280_device::pla()
***************************************************************/
inline void h6280_device::plp()
{
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
pull(P);
P |= _fB;
NZ = ((P & _fN) << 8) |
@@ -1396,7 +1396,7 @@ inline uint8_t h6280_device::ror(uint8_t tmp)
***************************************************************/
inline void h6280_device::rti()
{
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
pull(P);
P |= _fB;
NZ = ((P & _fN) << 8) |
diff --git a/src/devices/cpu/h6280/h6280.h b/src/devices/cpu/h6280/h6280.h
index 7e4bf9cf9e8..01ffa06bec7 100644
--- a/src/devices/cpu/h6280/h6280.h
+++ b/src/devices/cpu/h6280/h6280.h
@@ -12,41 +12,13 @@
******************************************************************************/
-#pragma once
-
-#ifndef __H6280_H__
-#define __H6280_H__
-
+#ifndef MAME_CPU_H6280_H6280_H
+#define MAME_CPU_H6280_H6280_H
-#define LAZY_FLAGS 0
+#pragma once
-/***************************************************************************
- REGISTER ENUMERATION
-***************************************************************************/
-enum
-{
- H6280_PC = 1,
- H6280_S,
- H6280_P,
- H6280_A,
- H6280_X,
- H6280_Y,
- H6280_IRQ_MASK,
- H6280_TIMER_STATE,
- H6280_NMI_STATE,
- H6280_IRQ1_STATE,
- H6280_IRQ2_STATE,
- H6280_IRQT_STATE,
- H6280_M1,
- H6280_M2,
- H6280_M3,
- H6280_M4,
- H6280_M5,
- H6280_M6,
- H6280_M7,
- H6280_M8
-};
+#define H6280_LAZY_FLAGS 0
//**************************************************************************
// TYPE DEFINITIONS
@@ -75,6 +47,31 @@ public:
void io_set_buffer(uint8_t);
protected:
+ // register enumeration
+ enum
+ {
+ H6280_PC = 1,
+ H6280_S,
+ H6280_P,
+ H6280_A,
+ H6280_X,
+ H6280_Y,
+ H6280_IRQ_MASK,
+ H6280_TIMER_STATE,
+ H6280_NMI_STATE,
+ H6280_IRQ1_STATE,
+ H6280_IRQ2_STATE,
+ H6280_IRQT_STATE,
+ H6280_M1,
+ H6280_M2,
+ H6280_M3,
+ H6280_M4,
+ H6280_M5,
+ H6280_M6,
+ H6280_M7,
+ H6280_M8
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -351,7 +348,7 @@ protected:
uint8_t m_nmi_state;
uint8_t m_irq_state[3];
uint8_t m_irq_pending;
-#if LAZY_FLAGS
+#if H6280_LAZY_FLAGS
int32_t m_nz; /* last value (lazy N and Z flag) */
#endif
uint8_t m_io_buffer; /* last value written to the PSG, timer, and interrupt pages */
@@ -371,6 +368,6 @@ protected:
static const ophandler s_opcodetable[256];
};
-extern const device_type H6280;
+DECLARE_DEVICE_TYPE(H6280, h6280_device)
-#endif /* __H6280_H__ */
+#endif // MAME_CPU_H6280_H6280_H
diff --git a/src/devices/cpu/h8/h8.cpp b/src/devices/cpu/h8/h8.cpp
index f572063e186..1416b4c19b5 100644
--- a/src/devices/cpu/h8/h8.cpp
+++ b/src/devices/cpu/h8/h8.cpp
@@ -15,8 +15,8 @@
#include "h8_dma.h"
#include "h8_dtc.h"
-h8_device::h8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, bool mode_a16, address_map_delegate map_delegate) :
- cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+h8_device::h8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool mode_a16, address_map_delegate map_delegate) :
+ cpu_device(mconfig, type, tag, owner, clock),
program_config("program", ENDIANNESS_BIG, 16, mode_a16 ? 16 : 24, 0, map_delegate),
io_config("io", ENDIANNESS_BIG, 16, 16, -1), program(nullptr), io(nullptr), direct(nullptr), PPC(0), NPC(0), PC(0), PIR(0), EXR(0), CCR(0), MAC(0), MACF(0),
TMP1(0), TMP2(0), TMPR(0), inst_state(0), inst_substate(0), icount(0), bcount(0), irq_vector(0), taken_irq_vector(0), irq_level(0), taken_irq_level(0), irq_required(false), irq_nmi(false)
diff --git a/src/devices/cpu/h8/h8.h b/src/devices/cpu/h8/h8.h
index 089cec91fb7..ac1cb6dd2fe 100644
--- a/src/devices/cpu/h8/h8.h
+++ b/src/devices/cpu/h8/h8.h
@@ -9,8 +9,10 @@
***************************************************************************/
-#ifndef __H8_H__
-#define __H8_H__
+#ifndef MAME_CPU_H8_H8_H
+#define MAME_CPU_H8_H8_H
+
+#pragma once
class h8_dma_device;
class h8_dtc_device;
@@ -61,8 +63,6 @@ public:
STATE_DTC_WRITEBACK = 0x10006
};
- h8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, bool mode_a16, address_map_delegate map_delegate);
-
void internal_update();
void set_irq(int irq_vector, int irq_level, bool irq_nmi);
bool trigger_dma(int vector);
@@ -154,6 +154,8 @@ protected:
DASM_mach /* internal register mach */
};
+ h8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool mode_a16, address_map_delegate map_delegate);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -490,4 +492,4 @@ enum {
H8_EXR
};
-#endif
+#endif // MAME_CPU_H8_H8_H
diff --git a/src/devices/cpu/h8/h83002.cpp b/src/devices/cpu/h8/h83002.cpp
index 569e78cec41..64f15eba1a7 100644
--- a/src/devices/cpu/h8/h83002.cpp
+++ b/src/devices/cpu/h8/h83002.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "h83002.h"
-const device_type H83002 = device_creator<h83002_device>;
+DEFINE_DEVICE_TYPE(H83002, h83002_device, "h83002", "H8/3002")
h83002_device::h83002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8h_device(mconfig, H83002, "H8/3002", tag, owner, clock, "h83002", __FILE__, address_map_delegate(FUNC(h83002_device::map), this)),
+ h8h_device(mconfig, H83002, tag, owner, clock, address_map_delegate(FUNC(h83002_device::map), this)),
intc(*this, "intc"),
adc(*this, "adc"),
dma(*this, "dma"),
diff --git a/src/devices/cpu/h8/h83002.h b/src/devices/cpu/h8/h83002.h
index 0b0b1a2c76c..dfca4051479 100644
--- a/src/devices/cpu/h8/h83002.h
+++ b/src/devices/cpu/h8/h83002.h
@@ -11,8 +11,10 @@
***************************************************************************/
-#ifndef __H83002_H__
-#define __H83002_H__
+#ifndef MAME_CPU_H8_H83002_H
+#define MAME_CPU_H8_H83002_H
+
+#pragma once
#include "h8h.h"
#include "h8_adc.h"
@@ -82,6 +84,6 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
};
-extern const device_type H83002;
+DECLARE_DEVICE_TYPE(H83002, h83002_device)
-#endif
+#endif // MAME_CPU_H8_H83002_H
diff --git a/src/devices/cpu/h8/h83006.cpp b/src/devices/cpu/h8/h83006.cpp
index 1c12b4b8a89..527359ef208 100644
--- a/src/devices/cpu/h8/h83006.cpp
+++ b/src/devices/cpu/h8/h83006.cpp
@@ -3,12 +3,12 @@
#include "emu.h"
#include "h83006.h"
-const device_type H83006 = device_creator<h83006_device>;
-const device_type H83007 = device_creator<h83007_device>;
+DEFINE_DEVICE_TYPE(H83006, h83006_device, "h83006", "H8/3006")
+DEFINE_DEVICE_TYPE(H83007, h83007_device, "h83007", "H8/3007")
-h83006_device::h83006_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- h8h_device(mconfig, type, name, tag, owner, clock, shortname, source, address_map_delegate(FUNC(h83006_device::map), this)),
+h83006_device::h83006_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start) :
+ h8h_device(mconfig, type, tag, owner, clock, address_map_delegate(FUNC(h83006_device::map), this)),
intc(*this, "intc"),
adc(*this, "adc"),
port4(*this, "port4"),
@@ -29,45 +29,21 @@ h83006_device::h83006_device(const machine_config &mconfig, device_type type, co
sci0(*this, "sci0"),
sci1(*this, "sci1"),
sci2(*this, "sci2"),
- watchdog(*this, "watchdog")
+ watchdog(*this, "watchdog"),
+ syscr(0),
+ ram_start(start)
{
- syscr = 0;
- ram_start = 0;
}
h83006_device::h83006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8h_device(mconfig, H83006, "H8/3006", tag, owner, clock, "h83006", __FILE__, address_map_delegate(FUNC(h83006_device::map), this)),
- intc(*this, "intc"),
- adc(*this, "adc"),
- port4(*this, "port4"),
- port6(*this, "port6"),
- port7(*this, "port7"),
- port8(*this, "port8"),
- port9(*this, "port9"),
- porta(*this, "porta"),
- portb(*this, "portb"),
- timer8_0(*this, "timer8_0"),
- timer8_1(*this, "timer8_1"),
- timer8_2(*this, "timer8_2"),
- timer8_3(*this, "timer8_3"),
- timer16(*this, "timer16"),
- timer16_0(*this, "timer16:0"),
- timer16_1(*this, "timer16:1"),
- timer16_2(*this, "timer16:2"),
- sci0(*this, "sci0"),
- sci1(*this, "sci1"),
- sci2(*this, "sci2"),
- watchdog(*this, "watchdog")
+ h83006_device(mconfig, H83006, tag, owner, clock, 0xfff720)
{
- syscr = 0;
- ram_start = 0xfff720;
}
h83007_device::h83007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h83006_device(mconfig, H83007, "H8/3007", tag, owner, clock, "h83007", __FILE__)
+ h83006_device(mconfig, H83007, tag, owner, clock, 0xffef20)
{
- ram_start = 0xffef20;
}
static MACHINE_CONFIG_FRAGMENT(h83006)
diff --git a/src/devices/cpu/h8/h83006.h b/src/devices/cpu/h8/h83006.h
index 9b73d54d1fe..6809c28c464 100644
--- a/src/devices/cpu/h8/h83006.h
+++ b/src/devices/cpu/h8/h83006.h
@@ -11,8 +11,10 @@
***************************************************************************/
-#ifndef __H83006_H__
-#define __H83006_H__
+#ifndef MAME_CPU_H8_H83006_H
+#define MAME_CPU_H8_H83006_H
+
+#pragma once
#include "h8h.h"
#include "h8_adc.h"
@@ -25,13 +27,14 @@
class h83006_device : public h8h_device {
public:
- h83006_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
h83006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER(syscr_r);
DECLARE_WRITE8_MEMBER(syscr_w);
protected:
+ h83006_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start);
+
required_device<h8h_intc_device> intc;
required_device<h8_adc_device> adc;
required_device<h8_port_device> port4;
@@ -76,7 +79,7 @@ public:
h83007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type H83006;
-extern const device_type H83007;
+DECLARE_DEVICE_TYPE(H83006, h83006_device)
+DECLARE_DEVICE_TYPE(H83007, h83007_device)
-#endif
+#endif // MAME_CPU_H8_H83006_H
diff --git a/src/devices/cpu/h8/h83008.cpp b/src/devices/cpu/h8/h83008.cpp
index 05fd4df2482..392747d2997 100644
--- a/src/devices/cpu/h8/h83008.cpp
+++ b/src/devices/cpu/h8/h83008.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "h83008.h"
-const device_type H83008 = device_creator<h83008_device>;
+DEFINE_DEVICE_TYPE(H83008, h83008_device, "h83008", "H8/3008")
h83008_device::h83008_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8h_device(mconfig, H83008, "H8/3008", tag, owner, clock, "h83008", __FILE__, address_map_delegate(FUNC(h83008_device::map), this)),
+ h8h_device(mconfig, H83008, tag, owner, clock, address_map_delegate(FUNC(h83008_device::map), this)),
intc(*this, "intc"),
adc(*this, "adc"),
port4(*this, "port4"),
@@ -26,9 +26,9 @@ h83008_device::h83008_device(const machine_config &mconfig, const char *tag, dev
timer16_2(*this, "timer16:2"),
sci0(*this, "sci0"),
sci1(*this, "sci1"),
- watchdog(*this, "watchdog")
+ watchdog(*this, "watchdog"),
+ syscr(0)
{
- syscr = 0;
}
static MACHINE_CONFIG_FRAGMENT(h83008)
diff --git a/src/devices/cpu/h8/h83008.h b/src/devices/cpu/h8/h83008.h
index 8a24631ee90..17eaff299e6 100644
--- a/src/devices/cpu/h8/h83008.h
+++ b/src/devices/cpu/h8/h83008.h
@@ -11,8 +11,10 @@
***************************************************************************/
-#ifndef __H83008_H__
-#define __H83008_H__
+#ifndef MAME_CPU_H8_H83008_H
+#define MAME_CPU_H8_H83008_H
+
+#pragma once
#include "h8h.h"
#include "h8_adc.h"
@@ -67,6 +69,6 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
};
-extern const device_type H83008;
+DECLARE_DEVICE_TYPE(H83008, h83008_device)
-#endif
+#endif // MAME_CPU_H8_H83008_H
diff --git a/src/devices/cpu/h8/h83048.cpp b/src/devices/cpu/h8/h83048.cpp
index f68b52b382c..a3d5f56f76a 100644
--- a/src/devices/cpu/h8/h83048.cpp
+++ b/src/devices/cpu/h8/h83048.cpp
@@ -3,13 +3,13 @@
#include "emu.h"
#include "h83048.h"
-const device_type H83044 = device_creator<h83044_device>;
-const device_type H83045 = device_creator<h83045_device>;
-const device_type H83047 = device_creator<h83047_device>;
-const device_type H83048 = device_creator<h83048_device>;
+DEFINE_DEVICE_TYPE(H83044, h83044_device, "h83044", "H8/3044")
+DEFINE_DEVICE_TYPE(H83045, h83045_device, "h83045", "H8/3045")
+DEFINE_DEVICE_TYPE(H83047, h83047_device, "h83047", "H8/3047")
+DEFINE_DEVICE_TYPE(H83048, h83048_device, "h83048", "H8/3048")
-h83048_device::h83048_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- h8h_device(mconfig, type, name, tag, owner, clock, shortname, source, address_map_delegate(FUNC(h83048_device::map), this)),
+h83048_device::h83048_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start) :
+ h8h_device(mconfig, type, tag, owner, clock, address_map_delegate(FUNC(h83048_device::map), this)),
intc(*this, "intc"),
adc(*this, "adc"),
port1(*this, "port1"),
@@ -31,57 +31,30 @@ h83048_device::h83048_device(const machine_config &mconfig, device_type type, co
timer16_4(*this, "timer16:4"),
sci0(*this, "sci0"),
sci1(*this, "sci1"),
- watchdog(*this, "watchdog")
+ watchdog(*this, "watchdog"),
+ ram_start(start),
+ syscr(0)
{
- ram_start = 0;
- syscr = 0;
}
h83048_device::h83048_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8h_device(mconfig, H83048, "H8/3048", tag, owner, clock, "h83048", __FILE__, address_map_delegate(FUNC(h83048_device::map), this)),
- intc(*this, "intc"),
- adc(*this, "adc"),
- port1(*this, "port1"),
- port2(*this, "port2"),
- port3(*this, "port3"),
- port4(*this, "port4"),
- port5(*this, "port5"),
- port6(*this, "port6"),
- port7(*this, "port7"),
- port8(*this, "port8"),
- port9(*this, "port9"),
- porta(*this, "porta"),
- portb(*this, "portb"),
- timer16(*this, "timer16"),
- timer16_0(*this, "timer16:0"),
- timer16_1(*this, "timer16:1"),
- timer16_2(*this, "timer16:2"),
- timer16_3(*this, "timer16:3"),
- timer16_4(*this, "timer16:4"),
- sci0(*this, "sci0"),
- sci1(*this, "sci1"),
- watchdog(*this, "watchdog")
+ h83048_device(mconfig, H83048, tag, owner, clock, 0xffef10)
{
- syscr = 0;
- ram_start = 0xffef10;
}
h83044_device::h83044_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h83048_device(mconfig, H83044, "H8/3044", tag, owner, clock, "h83044", __FILE__)
+ h83048_device(mconfig, H83044, tag, owner, clock, 0xfff710)
{
- ram_start = 0xfff710;
}
h83045_device::h83045_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h83048_device(mconfig, H83045, "H8/3045", tag, owner, clock, "h83045", __FILE__)
+ h83048_device(mconfig, H83045, tag, owner, clock, 0xfff710)
{
- ram_start = 0xfff710;
}
h83047_device::h83047_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h83048_device(mconfig, H83047, "H8/3047", tag, owner, clock, "h83047", __FILE__)
+ h83048_device(mconfig, H83047, tag, owner, clock, 0xffef10)
{
- ram_start = 0xffef10;
}
static MACHINE_CONFIG_FRAGMENT(h83048)
diff --git a/src/devices/cpu/h8/h83048.h b/src/devices/cpu/h8/h83048.h
index 367313290fc..4dcb95103db 100644
--- a/src/devices/cpu/h8/h83048.h
+++ b/src/devices/cpu/h8/h83048.h
@@ -19,8 +19,8 @@
***************************************************************************/
-#ifndef __H83048_H__
-#define __H83048_H__
+#ifndef MAME_CPU_H8_H83048_H
+#define MAME_CPU_H8_H83048_H
#include "h8h.h"
#include "h8_adc.h"
@@ -32,13 +32,14 @@
class h83048_device : public h8h_device {
public:
- h83048_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
h83048_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER(syscr_r);
DECLARE_WRITE8_MEMBER(syscr_w);
protected:
+ h83048_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start);
+
required_device<h8h_intc_device> intc;
required_device<h8_adc_device> adc;
required_device<h8_port_device> port1;
@@ -93,9 +94,9 @@ public:
h83047_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type H83044;
-extern const device_type H83045;
-extern const device_type H83047;
-extern const device_type H83048;
+DECLARE_DEVICE_TYPE(H83044, h83044_device)
+DECLARE_DEVICE_TYPE(H83045, h83045_device)
+DECLARE_DEVICE_TYPE(H83047, h83047_device)
+DECLARE_DEVICE_TYPE(H83048, h83048_device)
-#endif
+#endif // MAME_CPU_H8_H83048_H
diff --git a/src/devices/cpu/h8/h83337.cpp b/src/devices/cpu/h8/h83337.cpp
index eb107c504dc..4d5bedc14ae 100644
--- a/src/devices/cpu/h8/h83337.cpp
+++ b/src/devices/cpu/h8/h83337.cpp
@@ -3,13 +3,13 @@
#include "emu.h"
#include "h83337.h"
-const device_type H83334 = device_creator<h83334_device>;
-const device_type H83336 = device_creator<h83336_device>;
-const device_type H83337 = device_creator<h83337_device>;
+DEFINE_DEVICE_TYPE(H83334, h83334_device, "h83334", "H8/3334")
+DEFINE_DEVICE_TYPE(H83336, h83336_device, "h83336", "H8/3336")
+DEFINE_DEVICE_TYPE(H83337, h83337_device, "h83337", "H8/3337")
-h83337_device::h83337_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- h8_device(mconfig, type, name, tag, owner, clock, shortname, source, true, address_map_delegate(FUNC(h83337_device::map), this)),
+h83337_device::h83337_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start) :
+ h8_device(mconfig, type, tag, owner, clock, true, address_map_delegate(FUNC(h83337_device::map), this)),
intc(*this, "intc"),
adc(*this, "adc"),
port1(*this, "port1"),
@@ -27,47 +27,25 @@ h83337_device::h83337_device(const machine_config &mconfig, device_type type, co
timer16_0(*this, "timer16:0"),
sci0(*this, "sci0"),
sci1(*this, "sci1"),
- watchdog(*this, "watchdog")
+ watchdog(*this, "watchdog"),
+ syscr(0),
+ ram_start(start)
{
- syscr = 0;
- ram_start = 0;
}
h83337_device::h83337_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_device(mconfig, H83337, "H8/3337", tag, owner, clock, "h83337", __FILE__, true, address_map_delegate(FUNC(h83337_device::map), this)),
- intc(*this, "intc"),
- adc(*this, "adc"),
- port1(*this, "port1"),
- port2(*this, "port2"),
- port3(*this, "port3"),
- port4(*this, "port4"),
- port5(*this, "port5"),
- port6(*this, "port6"),
- port7(*this, "port7"),
- port8(*this, "port8"),
- port9(*this, "port9"),
- timer8_0(*this, "timer8_0"),
- timer8_1(*this, "timer8_1"),
- timer16(*this, "timer16"),
- timer16_0(*this, "timer16:0"),
- sci0(*this, "sci0"),
- sci1(*this, "sci1"),
- watchdog(*this, "watchdog")
+ h83337_device(mconfig, H83337, tag, owner, clock, 0xf780)
{
- syscr = 0;
- ram_start = 0xf780;
}
h83334_device::h83334_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h83337_device(mconfig, H83334, "H8/3334", tag, owner, clock, "h83334", __FILE__)
+ h83337_device(mconfig, H83334, tag, owner, clock, 0xfb80)
{
- ram_start = 0xfb80;
}
h83336_device::h83336_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h83337_device(mconfig, H83336, "H8/3336", tag, owner, clock, "h83336", __FILE__)
+ h83337_device(mconfig, H83336, tag, owner, clock, 0xf780)
{
- ram_start = 0xf780;
}
static MACHINE_CONFIG_FRAGMENT(h83337)
diff --git a/src/devices/cpu/h8/h83337.h b/src/devices/cpu/h8/h83337.h
index f5a66409335..b29872b4c08 100644
--- a/src/devices/cpu/h8/h83337.h
+++ b/src/devices/cpu/h8/h83337.h
@@ -18,8 +18,10 @@
***************************************************************************/
-#ifndef __H83337_H__
-#define __H83337_H__
+#ifndef MAME_CPU_H8_H83337_H
+#define MAME_CPU_H8_H83337_H
+
+#pragma once
#include "h8.h"
#include "h8_intc.h"
@@ -32,7 +34,6 @@
class h83337_device : public h8_device {
public:
- h83337_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
h83337_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER(wscr_r);
@@ -45,6 +46,8 @@ public:
DECLARE_WRITE8_MEMBER(mdcr_w);
protected:
+ h83337_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start);
+
required_device<h8_intc_device> intc;
required_device<h8_adc_device> adc;
required_device<h8_port_device> port1;
@@ -89,8 +92,8 @@ public:
h83336_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type H83334;
-extern const device_type H83336;
-extern const device_type H83337;
+DECLARE_DEVICE_TYPE(H83334, h83334_device)
+DECLARE_DEVICE_TYPE(H83336, h83336_device)
+DECLARE_DEVICE_TYPE(H83337, h83337_device)
-#endif
+#endif // MAME_CPU_H8_H83337_H
diff --git a/src/devices/cpu/h8/h8_adc.cpp b/src/devices/cpu/h8/h8_adc.cpp
index fbeaa5e9199..979b13fe631 100644
--- a/src/devices/cpu/h8/h8_adc.cpp
+++ b/src/devices/cpu/h8/h8_adc.cpp
@@ -8,16 +8,17 @@
// 1 = everything
const int V = 0;
-const device_type H8_ADC_3337 = device_creator<h8_adc_3337_device>;
-const device_type H8_ADC_3006 = device_creator<h8_adc_3006_device>;
-const device_type H8_ADC_2245 = device_creator<h8_adc_2245_device>;
-const device_type H8_ADC_2320 = device_creator<h8_adc_2320_device>;
-const device_type H8_ADC_2357 = device_creator<h8_adc_2357_device>;
-const device_type H8_ADC_2655 = device_creator<h8_adc_2655_device>;
-
-h8_adc_device::h8_adc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- cpu(*this, DEVICE_SELF_OWNER), intc(nullptr), io(nullptr), intc_tag(nullptr), intc_vector(0), adcsr(0), adcr(0), register_mask(0), trigger(0), start_mode(0), start_channel(0),
+DEFINE_DEVICE_TYPE(H8_ADC_3337, h8_adc_3337_device, "h8_adc_3337", "H8/3337 ADC")
+DEFINE_DEVICE_TYPE(H8_ADC_3006, h8_adc_3006_device, "h8_adc_3006", "H8/3006 ADC")
+DEFINE_DEVICE_TYPE(H8_ADC_2245, h8_adc_2245_device, "h8_adc_2245", "H8/2245 ADC")
+DEFINE_DEVICE_TYPE(H8_ADC_2320, h8_adc_2320_device, "h8_adc_2320", "H8/2320 ADC")
+DEFINE_DEVICE_TYPE(H8_ADC_2357, h8_adc_2357_device, "h8_adc_2357", "H8/2357 ADC")
+DEFINE_DEVICE_TYPE(H8_ADC_2655, h8_adc_2655_device, "h8_adc_2655", "H8/2655 ADC")
+
+h8_adc_device::h8_adc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ cpu(*this, DEVICE_SELF_OWNER),
+ intc(nullptr), io(nullptr), intc_tag(nullptr), intc_vector(0), adcsr(0), adcr(0), register_mask(0), trigger(0), start_mode(0), start_channel(0),
end_channel(0), start_count(0), mode(0), channel(0), count(0), analog_powered(false), adtrg(false), next_event(0)
{
suspend_on_interrupt = false;
@@ -272,7 +273,7 @@ int h8_adc_device::get_channel_index(int count)
h8_adc_3337_device::h8_adc_3337_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_adc_device(mconfig, H8_ADC_3337, "H8 ADC 3337", tag, owner, clock, "h8_adc_3337", __FILE__)
+ h8_adc_device(mconfig, H8_ADC_3337, tag, owner, clock)
{
register_mask = 3;
}
@@ -303,7 +304,7 @@ void h8_adc_3337_device::mode_update()
h8_adc_3006_device::h8_adc_3006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_adc_device(mconfig, H8_ADC_3006, "H8 ADC 3006", tag, owner, clock, "h8_adc_3006", __FILE__)
+ h8_adc_device(mconfig, H8_ADC_3006, tag, owner, clock)
{
register_mask = 3;
}
@@ -334,7 +335,7 @@ void h8_adc_3006_device::mode_update()
h8_adc_2245_device::h8_adc_2245_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_adc_device(mconfig, H8_ADC_2245, "H8 ADC 2245", tag, owner, clock, "h8_adc_2245", __FILE__)
+ h8_adc_device(mconfig, H8_ADC_2245, tag, owner, clock)
{
register_mask = 3;
}
@@ -365,7 +366,7 @@ void h8_adc_2245_device::mode_update()
h8_adc_2320_device::h8_adc_2320_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_adc_device(mconfig, H8_ADC_2320, "H8 ADC 2320", tag, owner, clock, "h8_adc_2320", __FILE__)
+ h8_adc_device(mconfig, H8_ADC_2320, tag, owner, clock)
{
register_mask = 3;
}
@@ -402,7 +403,7 @@ void h8_adc_2320_device::mode_update()
h8_adc_2357_device::h8_adc_2357_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_adc_device(mconfig, H8_ADC_2357, "H8 ADC 2357", tag, owner, clock, "h8_adc_2357", __FILE__)
+ h8_adc_device(mconfig, H8_ADC_2357, tag, owner, clock)
{
register_mask = 3;
}
@@ -433,7 +434,7 @@ void h8_adc_2357_device::mode_update()
h8_adc_2655_device::h8_adc_2655_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_adc_device(mconfig, H8_ADC_2655, "H8 ADC 2655", tag, owner, clock, "h8_adc_2655", __FILE__)
+ h8_adc_device(mconfig, H8_ADC_2655, tag, owner, clock)
{
suspend_on_interrupt = true;
register_mask = 7;
diff --git a/src/devices/cpu/h8/h8_adc.h b/src/devices/cpu/h8/h8_adc.h
index ad87432517f..8dbbbc79e5b 100644
--- a/src/devices/cpu/h8/h8_adc.h
+++ b/src/devices/cpu/h8/h8_adc.h
@@ -9,8 +9,10 @@
***************************************************************************/
-#ifndef __H8_ADC_H__
-#define __H8_ADC_H__
+#ifndef MAME_CPU_H8_H8_ADC_H
+#define MAME_CPU_H8_H8_ADC_H
+
+#pragma once
#include "h8.h"
#include "h8_intc.h"
@@ -39,8 +41,6 @@
class h8_adc_device : public device_t {
public:
- h8_adc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
void set_info(const char *intc_tag, int vect);
DECLARE_READ8_MEMBER(addr8_r);
@@ -55,6 +55,8 @@ public:
uint64_t internal_update(uint64_t current_time);
protected:
+ h8_adc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
required_device<h8_device> cpu;
h8_intc_device *intc;
address_space *io;
@@ -167,11 +169,11 @@ protected:
virtual int get_channel_index(int count) override;
};
-extern const device_type H8_ADC_3337;
-extern const device_type H8_ADC_3006;
-extern const device_type H8_ADC_2245;
-extern const device_type H8_ADC_2320;
-extern const device_type H8_ADC_2357;
-extern const device_type H8_ADC_2655;
+DECLARE_DEVICE_TYPE(H8_ADC_3337, h8_adc_3337_device)
+DECLARE_DEVICE_TYPE(H8_ADC_3006, h8_adc_3006_device)
+DECLARE_DEVICE_TYPE(H8_ADC_2245, h8_adc_2245_device)
+DECLARE_DEVICE_TYPE(H8_ADC_2320, h8_adc_2320_device)
+DECLARE_DEVICE_TYPE(H8_ADC_2357, h8_adc_2357_device)
+DECLARE_DEVICE_TYPE(H8_ADC_2655, h8_adc_2655_device)
-#endif
+#endif // MAME_CPU_H8_H8_ADC_H
diff --git a/src/devices/cpu/h8/h8_dma.cpp b/src/devices/cpu/h8/h8_dma.cpp
index 28e245e43c4..20f034d63e0 100644
--- a/src/devices/cpu/h8/h8_dma.cpp
+++ b/src/devices/cpu/h8/h8_dma.cpp
@@ -1,11 +1,11 @@
#include "emu.h"
#include "h8_dma.h"
-const device_type H8_DMA = device_creator<h8_dma_device>;
-const device_type H8_DMA_CHANNEL = device_creator<h8_dma_channel_device>;
+DEFINE_DEVICE_TYPE(H8_DMA, h8_dma_device, "h8_dma", "H8 DMA controller")
+DEFINE_DEVICE_TYPE(H8_DMA_CHANNEL, h8_dma_channel_device, "h8_dma_channel", "H8 DMA channel")
h8_dma_device::h8_dma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, H8_DMA, "H8 DMA controller", tag, owner, clock, "h8_dma", __FILE__),
+ device_t(mconfig, H8_DMA, tag, owner, clock),
dmach0(*this, "0"),
dmach1(*this, "1")
{
@@ -115,7 +115,7 @@ WRITE16_MEMBER(h8_dma_device::dmabcr_w)
h8_dma_channel_device::h8_dma_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, H8_DMA_CHANNEL, "H8 DMA channel", tag, owner, clock, "h8_dma_channel", __FILE__),
+ device_t(mconfig, H8_DMA_CHANNEL, tag, owner, clock),
dmac(*this, "^"),
cpu(*this, "^^")
{
diff --git a/src/devices/cpu/h8/h8_dma.h b/src/devices/cpu/h8/h8_dma.h
index e703f14b52c..375d57a2dd0 100644
--- a/src/devices/cpu/h8/h8_dma.h
+++ b/src/devices/cpu/h8/h8_dma.h
@@ -8,8 +8,10 @@
***************************************************************************/
-#ifndef __H8_DMA_H__
-#define __H8_DMA_H__
+#ifndef MAME_CPU_H8_H8_DMA_H
+#define MAME_CPU_H8_H8_DMA_H
+
+#pragma once
#include "h8.h"
#include "h8_intc.h"
@@ -151,7 +153,7 @@ protected:
void start(int submodule);
};
-extern const device_type H8_DMA;
-extern const device_type H8_DMA_CHANNEL;
+DECLARE_DEVICE_TYPE(H8_DMA, h8_dma_device)
+DECLARE_DEVICE_TYPE(H8_DMA_CHANNEL, h8_dma_channel_device)
-#endif
+#endif // MAME_CPU_H8_H8_DMA_H
diff --git a/src/devices/cpu/h8/h8_dtc.cpp b/src/devices/cpu/h8/h8_dtc.cpp
index 9ea8037ff37..f600b71c6a8 100644
--- a/src/devices/cpu/h8/h8_dtc.cpp
+++ b/src/devices/cpu/h8/h8_dtc.cpp
@@ -7,7 +7,7 @@
// 2 = everything
const int V = 0;
-const device_type H8_DTC = device_creator<h8_dtc_device>;
+DEFINE_DEVICE_TYPE(H8_DTC, h8_dtc_device, "h8_dtc", "H8 DTC controller")
const int h8_dtc_device::vector_to_enable[92] = {
-1, -1, -1, -1, -1, -1, -1, -1, // NMI at 7
@@ -25,7 +25,7 @@ const int h8_dtc_device::vector_to_enable[92] = {
};
h8_dtc_device::h8_dtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, H8_DTC, "H8 DTC controller", tag, owner, clock, "h8_dtc", __FILE__),
+ device_t(mconfig, H8_DTC, tag, owner, clock),
cpu(*this, DEVICE_SELF_OWNER)
{
}
diff --git a/src/devices/cpu/h8/h8_dtc.h b/src/devices/cpu/h8/h8_dtc.h
index d74f0ef3252..f78478e18ab 100644
--- a/src/devices/cpu/h8/h8_dtc.h
+++ b/src/devices/cpu/h8/h8_dtc.h
@@ -8,8 +8,10 @@
***************************************************************************/
-#ifndef __H8_DTC_H__
-#define __H8_DTC_H__
+#ifndef MAME_CPU_H8_H8_DTC_H
+#define MAME_CPU_H8_H8_DTC_H
+
+#pragma once
#include "h8_intc.h"
@@ -69,6 +71,6 @@ protected:
void queue(int vector);
};
-extern const device_type H8_DTC;
+DECLARE_DEVICE_TYPE(H8_DTC, h8_dtc_device)
-#endif
+#endif // MAME_CPU_H8_H8_DTC_H
diff --git a/src/devices/cpu/h8/h8_intc.cpp b/src/devices/cpu/h8/h8_intc.cpp
index 98f0b8de61e..2dda3b5faa2 100644
--- a/src/devices/cpu/h8/h8_intc.cpp
+++ b/src/devices/cpu/h8/h8_intc.cpp
@@ -3,20 +3,19 @@
#include "emu.h"
#include "h8_intc.h"
-const device_type H8_INTC = device_creator<h8_intc_device>;
-const device_type H8H_INTC = device_creator<h8h_intc_device>;
-const device_type H8S_INTC = device_creator<h8s_intc_device>;
+DEFINE_DEVICE_TYPE(H8_INTC, h8_intc_device, "h8_intc", "H8 interrupt controller")
+DEFINE_DEVICE_TYPE(H8H_INTC, h8h_intc_device, "h8h_intc", "H8H interrupt controller")
+DEFINE_DEVICE_TYPE(H8S_INTC, h8s_intc_device, "h8s_intc", "H8S interrupt controller")
h8_intc_device::h8_intc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, H8_INTC, "H8 INTC", tag, owner, clock, "h8_intc", __FILE__),
- cpu(*this, DEVICE_SELF_OWNER), nmi_input(false), irq_input(0), ier(0), isr(0), iscr(0), icr_filter(0), ipr_filter(0)
+ h8_intc_device(mconfig, H8_INTC, tag, owner, clock)
{
irq_vector_base = 4;
irq_vector_nmi = 3;
}
-h8_intc_device::h8_intc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source), irq_vector_base(0), irq_vector_nmi(0),
+h8_intc_device::h8_intc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock), irq_vector_base(0), irq_vector_nmi(0),
cpu(*this, DEVICE_SELF_OWNER), nmi_input(false), irq_input(0), ier(0), isr(0), iscr(0), icr_filter(0), ipr_filter(0)
{
}
@@ -194,14 +193,14 @@ void h8_intc_device::get_priority(int vect, int &icr_pri, int &ipr_pri) const
h8h_intc_device::h8h_intc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_intc_device(mconfig, H8H_INTC, "H8H INTC", tag, owner, clock, "h8h_intc", __FILE__)
+ h8h_intc_device(mconfig, H8H_INTC, tag, owner, clock)
{
irq_vector_base = 12;
irq_vector_nmi = 7;
}
-h8h_intc_device::h8h_intc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- h8_intc_device(mconfig, type, name, tag, owner, clock, shortname, source)
+h8h_intc_device::h8h_intc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ h8_intc_device(mconfig, type, tag, owner, clock)
{
}
@@ -320,7 +319,7 @@ void h8h_intc_device::get_priority(int vect, int &icr_pri, int &ipr_pri) const
}
h8s_intc_device::h8s_intc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8h_intc_device(mconfig, H8S_INTC, "H8S INTC", tag, owner, clock, "h8s_intc", __FILE__)
+ h8h_intc_device(mconfig, H8S_INTC, tag, owner, clock)
{
irq_vector_base = 16;
irq_vector_nmi = 7;
diff --git a/src/devices/cpu/h8/h8_intc.h b/src/devices/cpu/h8/h8_intc.h
index 4b4b384b8b1..ca9452ad61d 100644
--- a/src/devices/cpu/h8/h8_intc.h
+++ b/src/devices/cpu/h8/h8_intc.h
@@ -9,8 +9,10 @@
***************************************************************************/
-#ifndef __H8_INTC_H__
-#define __H8_INTC_H__
+#ifndef MAME_CPU_H8_H8_INTC_H
+#define MAME_CPU_H8_H8_INTC_H
+
+#pragma once
#include "h8.h"
@@ -27,7 +29,6 @@
class h8_intc_device : public device_t {
public:
h8_intc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- h8_intc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
int interrupt_taken(int vector);
void internal_interrupt(int vector);
@@ -57,6 +58,8 @@ protected:
uint16_t iscr;
int icr_filter, ipr_filter;
+ h8_intc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -69,7 +72,6 @@ protected:
class h8h_intc_device : public h8_intc_device {
public:
h8h_intc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- h8h_intc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
DECLARE_READ8_MEMBER(isr_r);
DECLARE_WRITE8_MEMBER(isr_w);
@@ -87,6 +89,8 @@ protected:
uint32_t icr;
+ h8h_intc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -110,8 +114,8 @@ private:
virtual void device_reset() override;
};
-extern const device_type H8_INTC;
-extern const device_type H8H_INTC;
-extern const device_type H8S_INTC;
+DECLARE_DEVICE_TYPE(H8_INTC, h8_intc_device)
+DECLARE_DEVICE_TYPE(H8H_INTC, h8h_intc_device)
+DECLARE_DEVICE_TYPE(H8S_INTC, h8s_intc_device)
-#endif
+#endif // MAME_CPU_H8_H8_INTC_H
diff --git a/src/devices/cpu/h8/h8_port.cpp b/src/devices/cpu/h8/h8_port.cpp
index ec61a0fd196..ae63eedad51 100644
--- a/src/devices/cpu/h8/h8_port.cpp
+++ b/src/devices/cpu/h8/h8_port.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "h8_port.h"
-const device_type H8_PORT = device_creator<h8_port_device>;
+DEFINE_DEVICE_TYPE(H8_PORT, h8_port_device, "h8_digital_port", "H8 digital port")
h8_port_device::h8_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, H8_PORT, "H8 digital port", tag, owner, clock, "h8_digital_port", __FILE__),
+ device_t(mconfig, H8_PORT, tag, owner, clock),
cpu(*this, DEVICE_SELF_OWNER), io(nullptr), address(0), default_ddr(0), ddr(0), pcr(0), odr(0), mask(0), dr(0), last_output(0)
{
}
diff --git a/src/devices/cpu/h8/h8_port.h b/src/devices/cpu/h8/h8_port.h
index c6b7e8e2095..babd50cdaa3 100644
--- a/src/devices/cpu/h8/h8_port.h
+++ b/src/devices/cpu/h8/h8_port.h
@@ -9,8 +9,10 @@
***************************************************************************/
-#ifndef __H8_PORT_H__
-#define __H8_PORT_H__
+#ifndef MAME_CPU_H8_H8_PORT_H
+#define MAME_CPU_H8_H8_PORT_H
+
+#pragma once
#include "h8.h"
@@ -48,6 +50,6 @@ protected:
void update_output();
};
-extern const device_type H8_PORT;
+DECLARE_DEVICE_TYPE(H8_PORT, h8_port_device)
-#endif
+#endif // MAME_CPU_H8_H8_PORT_H
diff --git a/src/devices/cpu/h8/h8_sci.cpp b/src/devices/cpu/h8/h8_sci.cpp
index 8d6ea7163a1..6b708655256 100644
--- a/src/devices/cpu/h8/h8_sci.cpp
+++ b/src/devices/cpu/h8/h8_sci.cpp
@@ -11,12 +11,12 @@
const int V = 1;
-const device_type H8_SCI = device_creator<h8_sci_device>;
+DEFINE_DEVICE_TYPE(H8_SCI, h8_sci_device, "h8_sci", "H8 Serial Communications Interface")
const char *const h8_sci_device::state_names[] = { "idle", "start", "bit", "parity", "stop", "last-tick" };
h8_sci_device::h8_sci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, H8_SCI, "H8 Serial Communications Interface", tag, owner, clock, "h8_sci", __FILE__),
+ device_t(mconfig, H8_SCI, tag, owner, clock),
cpu(*this, DEVICE_SELF_OWNER),
tx_cb(*this),
clk_cb(*this), intc(nullptr), intc_tag(nullptr), external_to_internal_ratio(0), internal_to_external_ratio(0), sync_timer(nullptr), eri_int(0), rxi_int(0), txi_int(0), tei_int(0),
diff --git a/src/devices/cpu/h8/h8_sci.h b/src/devices/cpu/h8/h8_sci.h
index 1c3a79b0f39..ea13f1f65a2 100644
--- a/src/devices/cpu/h8/h8_sci.h
+++ b/src/devices/cpu/h8/h8_sci.h
@@ -9,8 +9,10 @@
***************************************************************************/
-#ifndef __H8_SCI_H__
-#define __H8_SCI_H__
+#ifndef MAME_CPU_H8_H8_SCI_H
+#define MAME_CPU_H8_H8_SCI_H
+
+#pragma once
#include "h8.h"
#include "h8_intc.h"
@@ -52,8 +54,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(rx_w);
DECLARE_WRITE_LINE_MEMBER(clk_w);
- template<class _Object> static devcb_base &set_tx_cb(device_t &device, _Object object) { return downcast<h8_sci_device &>(device).tx_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_clk_cb(device_t &device, _Object object) { return downcast<h8_sci_device &>(device).clk_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_tx_cb(device_t &device, Object &&cb) { return downcast<h8_sci_device &>(device).tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_clk_cb(device_t &device, Object &&cb) { return downcast<h8_sci_device &>(device).clk_cb.set_callback(std::forward<Object>(cb)); }
uint64_t internal_update(uint64_t current_time);
@@ -143,6 +145,6 @@ protected:
bool has_recv_error() const;
};
-extern const device_type H8_SCI;
+DECLARE_DEVICE_TYPE(H8_SCI, h8_sci_device)
-#endif
+#endif // MAME_CPU_H8_H8_SCI_H
diff --git a/src/devices/cpu/h8/h8_timer16.cpp b/src/devices/cpu/h8/h8_timer16.cpp
index a35690b78bf..5c4294e542c 100644
--- a/src/devices/cpu/h8/h8_timer16.cpp
+++ b/src/devices/cpu/h8/h8_timer16.cpp
@@ -8,21 +8,19 @@
// 1 = everything
const int V = 0;
-const device_type H8_TIMER16 = device_creator<h8_timer16_device>;
-const device_type H8_TIMER16_CHANNEL = device_creator<h8_timer16_channel_device>;
-const device_type H8H_TIMER16_CHANNEL = device_creator<h8h_timer16_channel_device>;
-const device_type H8S_TIMER16_CHANNEL = device_creator<h8s_timer16_channel_device>;
+DEFINE_DEVICE_TYPE(H8_TIMER16, h8_timer16_device, "h8_timer16", "H8 16-bit timer")
+DEFINE_DEVICE_TYPE(H8_TIMER16_CHANNEL, h8_timer16_channel_device, "h8_timer16_channel", "H8 16-bit timer channel")
+DEFINE_DEVICE_TYPE(H8H_TIMER16_CHANNEL, h8h_timer16_channel_device, "h8h_timer16_channel", "H8H 16-bit timer channel")
+DEFINE_DEVICE_TYPE(H8S_TIMER16_CHANNEL, h8s_timer16_channel_device, "h8s_timer16_channel", "H8S 16-bit timer channel")
h8_timer16_channel_device::h8_timer16_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, H8_TIMER16_CHANNEL, "H8 16-bits timer channel", tag, owner, clock, "h8_16bits_timer_channel", __FILE__),
- cpu(*this, "^^"), chained_timer(nullptr), intc(nullptr), intc_tag(nullptr), tier_mask(0), tgr_count(0), tbr_count(0), tgr_clearing(0), tcr(0), tier(0), ier(0), isr(0), clock_type(0),
- clock_divider(0), tcnt(0), last_clock_update(0), event_time(0), phase(0), counter_cycle(0), counter_incrementing(false), channel_active(false)
+ h8_timer16_channel_device(mconfig, H8_TIMER16_CHANNEL, tag, owner, clock)
{
chain_tag = nullptr;
}
-h8_timer16_channel_device::h8_timer16_channel_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+h8_timer16_channel_device::h8_timer16_channel_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
cpu(*this, "^^"), chained_timer(nullptr), intc(nullptr), intc_tag(nullptr), tier_mask(0), tgr_count(0), tbr_count(0), tgr_clearing(0), tcr(0), tier(0), ier(0), isr(0), clock_type(0),
clock_divider(0), tcnt(0), last_clock_update(0), event_time(0), phase(0), counter_cycle(0), counter_incrementing(false), channel_active(false)
{
@@ -316,7 +314,7 @@ void h8_timer16_channel_device::recalc_event(uint64_t cur_time)
}
h8_timer16_device::h8_timer16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, H8_TIMER16, "H8 16-bits timer", tag, owner, clock, "h8_timer16", __FILE__),
+ device_t(mconfig, H8_TIMER16, tag, owner, clock),
cpu(*this, DEVICE_SELF_OWNER)
{
}
@@ -522,7 +520,7 @@ uint8_t h8_timer16_channel_device::tisr_r(int offset) const
}
h8h_timer16_channel_device::h8h_timer16_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_timer16_channel_device(mconfig, H8H_TIMER16_CHANNEL, "H8H 16-bits timer channel", tag, owner, clock, "h8h_16bits_timer_channel", __FILE__)
+ h8_timer16_channel_device(mconfig, H8H_TIMER16_CHANNEL, tag, owner, clock)
{
}
@@ -620,7 +618,7 @@ void h8h_timer16_channel_device::tcr_update()
}
h8s_timer16_channel_device::h8s_timer16_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_timer16_channel_device(mconfig, H8S_TIMER16_CHANNEL, "H8S 16-bits timer channel", tag, owner, clock, "h8s_16bits_timer_channel", __FILE__)
+ h8_timer16_channel_device(mconfig, H8S_TIMER16_CHANNEL, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/h8/h8_timer16.h b/src/devices/cpu/h8/h8_timer16.h
index 6a0973da0d5..3741849b186 100644
--- a/src/devices/cpu/h8/h8_timer16.h
+++ b/src/devices/cpu/h8/h8_timer16.h
@@ -9,8 +9,10 @@
***************************************************************************/
-#ifndef __H8_TIMER16_H__
-#define __H8_TIMER16_H__
+#ifndef MAME_CPU_H8_H8_TIMER16_H
+#define MAME_CPU_H8_H8_TIMER16_H
+
+#pragma once
#include "h8.h"
#include "h8_intc.h"
@@ -74,7 +76,6 @@ public:
h8_timer16_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- h8_timer16_channel_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
void set_info(int tgr_count, int tbr_count, const char *intc, int irq_base);
@@ -119,6 +120,8 @@ protected:
bool counter_incrementing;
bool channel_active;
+ h8_timer16_channel_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -197,9 +200,9 @@ protected:
virtual void device_reset() override;
};
-extern const device_type H8_TIMER16;
-extern const device_type H8_TIMER16_CHANNEL;
-extern const device_type H8H_TIMER16_CHANNEL;
-extern const device_type H8S_TIMER16_CHANNEL;
+DECLARE_DEVICE_TYPE(H8_TIMER16, h8_timer16_device)
+DECLARE_DEVICE_TYPE(H8_TIMER16_CHANNEL, h8_timer16_channel_device)
+DECLARE_DEVICE_TYPE(H8H_TIMER16_CHANNEL, h8h_timer16_channel_device)
+DECLARE_DEVICE_TYPE(H8S_TIMER16_CHANNEL, h8s_timer16_channel_device)
-#endif
+#endif // MAME_CPU_H8_H8_TIMER16_H
diff --git a/src/devices/cpu/h8/h8_timer8.cpp b/src/devices/cpu/h8/h8_timer8.cpp
index 4bac2b89f0d..7a95717471d 100644
--- a/src/devices/cpu/h8/h8_timer8.cpp
+++ b/src/devices/cpu/h8/h8_timer8.cpp
@@ -9,18 +9,16 @@
// 2 = everything
const int V = 1;
-const device_type H8_TIMER8_CHANNEL = device_creator<h8_timer8_channel_device>;
-const device_type H8H_TIMER8_CHANNEL = device_creator<h8h_timer8_channel_device>;
+DEFINE_DEVICE_TYPE(H8_TIMER8_CHANNEL, h8_timer8_channel_device, "h8_timer8_channel", "H8 8-bit timer channel")
+DEFINE_DEVICE_TYPE(H8H_TIMER8_CHANNEL, h8h_timer8_channel_device, "h8h_timer8_channel", "H8H 8-bit timer channel")
h8_timer8_channel_device::h8_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, H8_TIMER8_CHANNEL, "H8 8-bits timer channel", tag, owner, clock, "h8_8bits_timer_channel", __FILE__),
- cpu(*this, "^"), chained_timer(nullptr), intc(nullptr), chain_tag(nullptr), intc_tag(nullptr), irq_ca(0), irq_cb(0), irq_v(0), chain_type(0), tcr(0), tcsr(0), tcnt(0), extra_clock_bit(false),
- has_adte(false), has_ice(false), clock_type(0), clock_divider(0), clear_type(0), counter_cycle(0), last_clock_update(0), event_time(0)
+ h8_timer8_channel_device(mconfig, H8_TIMER8_CHANNEL, tag, owner, clock)
{
}
-h8_timer8_channel_device::h8_timer8_channel_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+h8_timer8_channel_device::h8_timer8_channel_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
cpu(*this, "^"), chained_timer(nullptr), intc(nullptr), chain_tag(nullptr), intc_tag(nullptr), irq_ca(0), irq_cb(0), irq_v(0), chain_type(0), tcr(0), tcsr(0), tcnt(0), extra_clock_bit(false),
has_adte(false), has_ice(false), clock_type(0), clock_divider(0), clear_type(0), counter_cycle(0), last_clock_update(0), event_time(0)
{
@@ -354,7 +352,7 @@ void h8_timer8_channel_device::timer_tick()
}
h8h_timer8_channel_device::h8h_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8_timer8_channel_device(mconfig, H8H_TIMER8_CHANNEL, "H8H 8-bits timer channel", tag, owner, clock, "h8h_8bits_timer_channel", __FILE__)
+ h8_timer8_channel_device(mconfig, H8H_TIMER8_CHANNEL, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/h8/h8_timer8.h b/src/devices/cpu/h8/h8_timer8.h
index d4919dddce0..cf9f2fd219e 100644
--- a/src/devices/cpu/h8/h8_timer8.h
+++ b/src/devices/cpu/h8/h8_timer8.h
@@ -9,8 +9,10 @@
***************************************************************************/
-#ifndef __H8_TIMER8_H__
-#define __H8_TIMER8_H__
+#ifndef MAME_CPU_H8_H8_TIMER8_H
+#define MAME_CPU_H8_H8_TIMER8_H
+
+#pragma once
#include "h8.h"
#include "h8_intc.h"
@@ -36,7 +38,6 @@ public:
};
h8_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- h8_timer8_channel_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
void set_info(const char *intc, int irq_ca, int irq_cb, int irq_v, int div1, int div2, int div3, int div4, int div5, int div6);
@@ -89,6 +90,8 @@ protected:
int clock_type, clock_divider, clear_type, counter_cycle;
uint64_t last_clock_update, event_time;
+ h8_timer8_channel_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -107,7 +110,7 @@ public:
void set_info(const char *intc, int irq_ca, int irq_cb, int irq_v, const char *chain_tag, int chain_type, bool has_adte, bool has_ice);
};
-extern const device_type H8_TIMER8_CHANNEL;
-extern const device_type H8H_TIMER8_CHANNEL;
+DECLARE_DEVICE_TYPE(H8_TIMER8_CHANNEL, h8_timer8_channel_device)
+DECLARE_DEVICE_TYPE(H8H_TIMER8_CHANNEL, h8h_timer8_channel_device)
-#endif
+#endif // MAME_CPU_H8_H8_TIMER8_H
diff --git a/src/devices/cpu/h8/h8_watchdog.cpp b/src/devices/cpu/h8/h8_watchdog.cpp
index 5ace536ac7a..b50b956abcf 100644
--- a/src/devices/cpu/h8/h8_watchdog.cpp
+++ b/src/devices/cpu/h8/h8_watchdog.cpp
@@ -1,13 +1,13 @@
#include "emu.h"
#include "h8_watchdog.h"
-const device_type H8_WATCHDOG = device_creator<h8_watchdog_device>;
+DEFINE_DEVICE_TYPE(H8_WATCHDOG, h8_watchdog_device, "h8_watchdog", "H8 watchdog")
const int h8_watchdog_device::div_bh[8] = { 1, 6, 7, 9, 11, 13, 15, 17 };
const int h8_watchdog_device::div_s [8] = { 1, 5, 6, 7, 8, 9, 11, 12 };
h8_watchdog_device::h8_watchdog_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, H8_WATCHDOG, "H8 watchdog", tag, owner, clock, "h8_watchdog", __FILE__),
+ device_t(mconfig, H8_WATCHDOG, tag, owner, clock),
cpu(*this, DEVICE_SELF_OWNER)
{
}
diff --git a/src/devices/cpu/h8/h8_watchdog.h b/src/devices/cpu/h8/h8_watchdog.h
index f746be40aa9..af4cc0b7e35 100644
--- a/src/devices/cpu/h8/h8_watchdog.h
+++ b/src/devices/cpu/h8/h8_watchdog.h
@@ -37,8 +37,10 @@
***************************************************************************/
-#ifndef __H8_WATCHDOG_H__
-#define __H8_WATCHDOG_H__
+#ifndef MAME_CPU_H8_H8_WATCHDOG_H
+#define MAME_CPU_H8_H8_WATCHDOG_H
+
+#pragma once
#include "h8.h"
#include "h8_intc.h"
@@ -94,6 +96,6 @@ private:
void tcnt_update(uint64_t current_time = 0);
};
-extern const device_type H8_WATCHDOG;
+DECLARE_DEVICE_TYPE(H8_WATCHDOG, h8_watchdog_device)
-#endif
+#endif // MAME_CPU_H8_H8_WATCHDOG_H
diff --git a/src/devices/cpu/h8/h8h.cpp b/src/devices/cpu/h8/h8h.cpp
index 87ae39a884b..37756da3d12 100644
--- a/src/devices/cpu/h8/h8h.cpp
+++ b/src/devices/cpu/h8/h8h.cpp
@@ -3,8 +3,8 @@
#include "emu.h"
#include "h8h.h"
-h8h_device::h8h_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_delegate map_delegate) :
- h8_device(mconfig, type, name, tag, owner, clock, shortname, source, false, map_delegate)
+h8h_device::h8h_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_delegate map_delegate) :
+ h8_device(mconfig, type, tag, owner, clock, false, map_delegate)
{
supports_advanced = true;
mode_advanced = true;
diff --git a/src/devices/cpu/h8/h8h.h b/src/devices/cpu/h8/h8h.h
index f634e0aa82a..460ddcefc3a 100644
--- a/src/devices/cpu/h8/h8h.h
+++ b/src/devices/cpu/h8/h8h.h
@@ -11,18 +11,19 @@
***************************************************************************/
-#ifndef __H8H_H__
-#define __H8H_H__
+#ifndef MAME_CPU_H8_H8H_H
+#define MAME_CPU_H8_H8H_H
+
+#pragma once
#include "h8.h"
class h8h_device : public h8_device {
-public:
- h8h_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_delegate map_delegate);
-
protected:
static const disasm_entry disasm_entries[];
+ h8h_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_delegate map_delegate);
+
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
virtual void do_exec_full() override;
@@ -106,4 +107,4 @@ protected:
#undef O
};
-#endif
+#endif // MAME_CPU_H8_H8H_H
diff --git a/src/devices/cpu/h8/h8s2000.cpp b/src/devices/cpu/h8/h8s2000.cpp
index 99086cbc95f..2af090f5867 100644
--- a/src/devices/cpu/h8/h8s2000.cpp
+++ b/src/devices/cpu/h8/h8s2000.cpp
@@ -3,8 +3,8 @@
#include "emu.h"
#include "h8s2000.h"
-h8s2000_device::h8s2000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_delegate map_delegate) :
- h8h_device(mconfig, type, name, tag, owner, clock, shortname, source, map_delegate)
+h8s2000_device::h8s2000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_delegate map_delegate) :
+ h8h_device(mconfig, type, tag, owner, clock, map_delegate)
{
has_exr = true;
}
diff --git a/src/devices/cpu/h8/h8s2000.h b/src/devices/cpu/h8/h8s2000.h
index 34edb361cd8..e28e640baec 100644
--- a/src/devices/cpu/h8/h8s2000.h
+++ b/src/devices/cpu/h8/h8s2000.h
@@ -12,17 +12,18 @@
***************************************************************************/
-#ifndef __H8S2000_H__
-#define __H8S2000_H__
+#ifndef MAME_CPU_H8_H8S2000_H
+#define MAME_CPU_H8_H8S2000_H
+
+#pragma once
#include "h8h.h"
#include "h8_dtc.h"
class h8s2000_device : public h8h_device {
-public:
- h8s2000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_delegate map_delegate);
-
protected:
+ h8s2000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_delegate map_delegate);
+
static const disasm_entry disasm_entries[];
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
diff --git a/src/devices/cpu/h8/h8s2245.cpp b/src/devices/cpu/h8/h8s2245.cpp
index cbb3a5e91d1..b6ad54493b1 100644
--- a/src/devices/cpu/h8/h8s2245.cpp
+++ b/src/devices/cpu/h8/h8s2245.cpp
@@ -3,14 +3,14 @@
#include "emu.h"
#include "h8s2245.h"
-const device_type H8S2241 = device_creator<h8s2241_device>;
-const device_type H8S2242 = device_creator<h8s2242_device>;
-const device_type H8S2245 = device_creator<h8s2245_device>;
-const device_type H8S2246 = device_creator<h8s2246_device>;
+DEFINE_DEVICE_TYPE(H8S2241, h8s2241_device, "h8s2241", "H8S/2241")
+DEFINE_DEVICE_TYPE(H8S2242, h8s2242_device, "h8s2242", "H8S/2242")
+DEFINE_DEVICE_TYPE(H8S2245, h8s2245_device, "h8s2245", "H8S/2245")
+DEFINE_DEVICE_TYPE(H8S2246, h8s2246_device, "h8s2246", "H8S/2246")
-h8s2245_device::h8s2245_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- h8s2000_device(mconfig, type, name, tag, owner, clock, shortname, source, address_map_delegate(FUNC(h8s2245_device::map), this)),
+h8s2245_device::h8s2245_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start) :
+ h8s2000_device(mconfig, type, tag, owner, clock, address_map_delegate(FUNC(h8s2245_device::map), this)),
intc(*this, "intc"),
adc(*this, "adc"),
dtc(*this, "dtc"),
@@ -35,60 +35,30 @@ h8s2245_device::h8s2245_device(const machine_config &mconfig, device_type type,
sci0(*this, "sci0"),
sci1(*this, "sci1"),
sci2(*this, "sci2"),
- watchdog(*this, "watchdog")
+ watchdog(*this, "watchdog"),
+ ram_start(start),
+ syscr(0)
{
- syscr = 0;
- ram_start = 0;
}
h8s2245_device::h8s2245_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2000_device(mconfig, H8S2245, "H8S/2245", tag, owner, clock, "h8s2245", __FILE__, address_map_delegate(FUNC(h8s2245_device::map), this)),
- intc(*this, "intc"),
- adc(*this, "adc"),
- dtc(*this, "dtc"),
- port1(*this, "port1"),
- port2(*this, "port2"),
- port3(*this, "port3"),
- port4(*this, "port4"),
- port5(*this, "port5"),
- porta(*this, "porta"),
- portb(*this, "portb"),
- portc(*this, "portc"),
- portd(*this, "portd"),
- porte(*this, "porte"),
- portf(*this, "portf"),
- portg(*this, "portg"),
- timer8_0(*this, "timer8_0"),
- timer8_1(*this, "timer8_1"),
- timer16(*this, "timer16"),
- timer16_0(*this, "timer16:0"),
- timer16_1(*this, "timer16:1"),
- timer16_2(*this, "timer16:2"),
- sci0(*this, "sci0"),
- sci1(*this, "sci1"),
- sci2(*this, "sci2"),
- watchdog(*this, "watchdog")
+ h8s2245_device(mconfig, H8S2245, tag, owner, clock, 0xffec00)
{
- syscr = 0;
- ram_start = 0xffec00;
}
h8s2241_device::h8s2241_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2245_device(mconfig, H8S2241, "H8S/2241", tag, owner, clock, "h8s2241", __FILE__)
+ h8s2245_device(mconfig, H8S2241, tag, owner, clock, 0xffec00)
{
- ram_start = 0xffec00;
}
h8s2242_device::h8s2242_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2245_device(mconfig, H8S2242, "H8S/2242", tag, owner, clock, "h8s2242", __FILE__)
+ h8s2245_device(mconfig, H8S2242, tag, owner, clock, 0xffdc00)
{
- ram_start = 0xffdc00;
}
h8s2246_device::h8s2246_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2245_device(mconfig, H8S2246, "H8S/2246", tag, owner, clock, "h8s2246", __FILE__)
+ h8s2245_device(mconfig, H8S2246, tag, owner, clock, 0xffdc00)
{
- ram_start = 0xffdc00;
}
static MACHINE_CONFIG_FRAGMENT(h8s2245)
diff --git a/src/devices/cpu/h8/h8s2245.h b/src/devices/cpu/h8/h8s2245.h
index b5c64aef730..54d6d3a5b27 100644
--- a/src/devices/cpu/h8/h8s2245.h
+++ b/src/devices/cpu/h8/h8s2245.h
@@ -18,8 +18,10 @@
***************************************************************************/
-#ifndef __H8S2245_H__
-#define __H8S2245_H__
+#ifndef MAME_CPU_H8_H8S2245_H
+#define MAME_CPU_H8_H8S2245_H
+
+#pragma once
#include "h8s2000.h"
#include "h8_intc.h"
@@ -33,7 +35,6 @@
class h8s2245_device : public h8s2000_device {
public:
- h8s2245_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
h8s2245_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER(syscr_r);
@@ -72,6 +73,8 @@ protected:
uint16_t mstpcr;
uint8_t syscr;
+ h8s2245_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start);
+
virtual bool exr_in_stack() const override;
virtual void update_irq_filter() override;
virtual void interrupt_taken() override;
@@ -101,9 +104,9 @@ public:
h8s2246_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type H8S2241;
-extern const device_type H8S2242;
-extern const device_type H8S2245;
-extern const device_type H8S2246;
+DECLARE_DEVICE_TYPE(H8S2241, h8s2241_device)
+DECLARE_DEVICE_TYPE(H8S2242, h8s2242_device)
+DECLARE_DEVICE_TYPE(H8S2245, h8s2245_device)
+DECLARE_DEVICE_TYPE(H8S2246, h8s2246_device)
-#endif
+#endif // MAME_CPU_H8_H8S2245_H
diff --git a/src/devices/cpu/h8/h8s2320.cpp b/src/devices/cpu/h8/h8s2320.cpp
index e2951a0d2a1..589fed1d7cc 100644
--- a/src/devices/cpu/h8/h8s2320.cpp
+++ b/src/devices/cpu/h8/h8s2320.cpp
@@ -3,19 +3,19 @@
#include "emu.h"
#include "h8s2320.h"
-const device_type H8S2320 = device_creator<h8s2320_device>;
-const device_type H8S2321 = device_creator<h8s2321_device>;
-const device_type H8S2322 = device_creator<h8s2322_device>;
-const device_type H8S2323 = device_creator<h8s2323_device>;
-const device_type H8S2324 = device_creator<h8s2324_device>;
-const device_type H8S2326 = device_creator<h8s2326_device>;
-const device_type H8S2327 = device_creator<h8s2327_device>;
-const device_type H8S2328 = device_creator<h8s2328_device>;
-const device_type H8S2329 = device_creator<h8s2329_device>;
-
-
-h8s2320_device::h8s2320_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- h8s2000_device(mconfig, type, name, tag, owner, clock, shortname, source, address_map_delegate(FUNC(h8s2320_device::map), this)),
+DEFINE_DEVICE_TYPE(H8S2320, h8s2320_device, "h8s2320", "H8S/2320")
+DEFINE_DEVICE_TYPE(H8S2321, h8s2321_device, "h8s2321", "H8S/2321")
+DEFINE_DEVICE_TYPE(H8S2322, h8s2322_device, "h8s2322", "H8S/2322")
+DEFINE_DEVICE_TYPE(H8S2323, h8s2323_device, "h8s2323", "H8S/2323")
+DEFINE_DEVICE_TYPE(H8S2324, h8s2324_device, "h8s2324", "H8S/2324")
+DEFINE_DEVICE_TYPE(H8S2326, h8s2326_device, "h8s2326", "H8S/2326")
+DEFINE_DEVICE_TYPE(H8S2327, h8s2327_device, "h8s2327", "H8S/2327")
+DEFINE_DEVICE_TYPE(H8S2328, h8s2328_device, "h8s2328", "H8S/2328")
+DEFINE_DEVICE_TYPE(H8S2329, h8s2329_device, "h8s2329", "H8S/2329")
+
+
+h8s2320_device::h8s2320_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start) :
+ h8s2000_device(mconfig, type, tag, owner, clock, address_map_delegate(FUNC(h8s2320_device::map), this)),
intc(*this, "intc"),
adc(*this, "adc"),
dma(*this, "dma"),
@@ -47,97 +47,55 @@ h8s2320_device::h8s2320_device(const machine_config &mconfig, device_type type,
sci0(*this, "sci0"),
sci1(*this, "sci1"),
sci2(*this, "sci2"),
- watchdog(*this, "watchdog")
+ watchdog(*this, "watchdog"),
+ ram_start(start),
+ syscr(0)
{
- syscr = 0;
- ram_start = 0;
}
h8s2320_device::h8s2320_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2000_device(mconfig, H8S2320, "H8S/2320", tag, owner, clock, "h8s2320", __FILE__, address_map_delegate(FUNC(h8s2320_device::map), this)),
- intc(*this, "intc"),
- adc(*this, "adc"),
- dma(*this, "dma"),
- dma0(*this, "dma:0"),
- dma1(*this, "dma:1"),
- dtc(*this, "dtc"),
- port1(*this, "port1"),
- port2(*this, "port2"),
- port3(*this, "port3"),
- port4(*this, "port4"),
- port5(*this, "port5"),
- port6(*this, "port6"),
- porta(*this, "porta"),
- portb(*this, "portb"),
- portc(*this, "portc"),
- portd(*this, "portd"),
- porte(*this, "porte"),
- portf(*this, "portf"),
- portg(*this, "portg"),
- timer8_0(*this, "timer8_0"),
- timer8_1(*this, "timer8_1"),
- timer16(*this, "timer16"),
- timer16_0(*this, "timer16:0"),
- timer16_1(*this, "timer16:1"),
- timer16_2(*this, "timer16:2"),
- timer16_3(*this, "timer16:3"),
- timer16_4(*this, "timer16:4"),
- timer16_5(*this, "timer16:5"),
- sci0(*this, "sci0"),
- sci1(*this, "sci1"),
- sci2(*this, "sci2"),
- watchdog(*this, "watchdog")
+ h8s2320_device(mconfig, H8S2320, tag, owner, clock, 0xffec00)
{
- syscr = 0;
- ram_start = 0xffec00;
}
h8s2321_device::h8s2321_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2320_device(mconfig, H8S2321, "H8S/2321", tag, owner, clock, "h8s2321", __FILE__)
+ h8s2320_device(mconfig, H8S2321, tag, owner, clock, 0xffec00)
{
- ram_start = 0xffec00;
}
h8s2322_device::h8s2322_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2320_device(mconfig, H8S2322, "H8S/2322", tag, owner, clock, "h8s2322", __FILE__)
+ h8s2320_device(mconfig, H8S2322, tag, owner, clock, 0xffdc00)
{
- ram_start = 0xffdc00;
}
h8s2323_device::h8s2323_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2320_device(mconfig, H8S2323, "H8S/2323", tag, owner, clock, "h8s2323", __FILE__)
+ h8s2320_device(mconfig, H8S2323, tag, owner, clock, 0xffdc00)
{
- ram_start = 0xffdc00;
}
h8s2324_device::h8s2324_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2320_device(mconfig, H8S2324, "H8S/2324", tag, owner, clock, "h8s2324", __FILE__)
+ h8s2320_device(mconfig, H8S2324, tag, owner, clock, 0xff7c00)
{
- ram_start = 0xff7c00;
}
h8s2326_device::h8s2326_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2320_device(mconfig, H8S2326, "H8S/2326", tag, owner, clock, "h8s2326", __FILE__)
+ h8s2320_device(mconfig, H8S2326, tag, owner, clock, 0xffdc00)
{
- ram_start = 0xffdc00;
}
h8s2327_device::h8s2327_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2320_device(mconfig, H8S2327, "H8S/2327", tag, owner, clock, "h8s2327", __FILE__)
+ h8s2320_device(mconfig, H8S2327, tag, owner, clock, 0xffdc00)
{
- ram_start = 0xffdc00;
}
h8s2328_device::h8s2328_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2320_device(mconfig, H8S2328, "H8S/2328", tag, owner, clock, "h8s2328", __FILE__)
+ h8s2320_device(mconfig, H8S2328, tag, owner, clock, 0xffdc00)
{
- ram_start = 0xffdc00;
}
h8s2329_device::h8s2329_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2320_device(mconfig, H8S2329, "H8S/2329", tag, owner, clock, "h8s2329", __FILE__)
+ h8s2320_device(mconfig, H8S2329, tag, owner, clock, 0xff7c00)
{
- ram_start = 0xff7c00;
}
// TODO: the 2321 doesn't have the dma subdevice
diff --git a/src/devices/cpu/h8/h8s2320.h b/src/devices/cpu/h8/h8s2320.h
index e8a979127cf..df0e7898a5a 100644
--- a/src/devices/cpu/h8/h8s2320.h
+++ b/src/devices/cpu/h8/h8s2320.h
@@ -23,8 +23,10 @@
***************************************************************************/
-#ifndef __H8S2320_H__
-#define __H8S2320_H__
+#ifndef MAME_CPU_H8_H8S2320_H
+#define MAME_CPU_H8_H8S2320_H
+
+#pragma once
#include "h8s2000.h"
#include "h8_intc.h"
@@ -39,7 +41,6 @@
class h8s2320_device : public h8s2000_device {
public:
- h8s2320_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
h8s2320_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER(syscr_r);
@@ -82,6 +83,8 @@ protected:
uint32_t ram_start;
uint8_t syscr;
+ h8s2320_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start);
+
virtual bool exr_in_stack() const override;
virtual void update_irq_filter() override;
virtual void interrupt_taken() override;
@@ -137,15 +140,14 @@ public:
h8s2329_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type H8S2320;
-extern const device_type H8S2321;
-extern const device_type H8S2322;
-extern const device_type H8S2323;
-extern const device_type H8S2324;
-extern const device_type H8S2326;
-extern const device_type H8S2327;
-extern const device_type H8S2328;
-extern const device_type H8S2329;
-
-
-#endif
+DECLARE_DEVICE_TYPE(H8S2320, h8s2320_device)
+DECLARE_DEVICE_TYPE(H8S2321, h8s2321_device)
+DECLARE_DEVICE_TYPE(H8S2322, h8s2322_device)
+DECLARE_DEVICE_TYPE(H8S2323, h8s2323_device)
+DECLARE_DEVICE_TYPE(H8S2324, h8s2324_device)
+DECLARE_DEVICE_TYPE(H8S2326, h8s2326_device)
+DECLARE_DEVICE_TYPE(H8S2327, h8s2327_device)
+DECLARE_DEVICE_TYPE(H8S2328, h8s2328_device)
+DECLARE_DEVICE_TYPE(H8S2329, h8s2329_device)
+
+#endif // MAME_CPU_H8_H8S2320_H
diff --git a/src/devices/cpu/h8/h8s2357.cpp b/src/devices/cpu/h8/h8s2357.cpp
index b143a566933..f9dcf52f6df 100644
--- a/src/devices/cpu/h8/h8s2357.cpp
+++ b/src/devices/cpu/h8/h8s2357.cpp
@@ -3,15 +3,15 @@
#include "emu.h"
#include "h8s2357.h"
-const device_type H8S2357 = device_creator<h8s2357_device>;
-const device_type H8S2352 = device_creator<h8s2352_device>;
-const device_type H8S2398 = device_creator<h8s2398_device>;
-const device_type H8S2394 = device_creator<h8s2394_device>;
-const device_type H8S2392 = device_creator<h8s2392_device>;
-const device_type H8S2390 = device_creator<h8s2390_device>;
+DEFINE_DEVICE_TYPE(H8S2357, h8s2357_device, "h8s2357", "H8S/2357")
+DEFINE_DEVICE_TYPE(H8S2352, h8s2352_device, "h8s2352", "H8S/2352")
+DEFINE_DEVICE_TYPE(H8S2398, h8s2398_device, "h8s2398", "H8S/2398")
+DEFINE_DEVICE_TYPE(H8S2394, h8s2394_device, "h8s2394", "H8S/2394")
+DEFINE_DEVICE_TYPE(H8S2392, h8s2392_device, "h8s2392", "H8S/2392")
+DEFINE_DEVICE_TYPE(H8S2390, h8s2390_device, "h8s2390", "H8S/2390")
-h8s2357_device::h8s2357_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- h8s2000_device(mconfig, type, name, tag, owner, clock, shortname, source, address_map_delegate(FUNC(h8s2357_device::map), this)),
+h8s2357_device::h8s2357_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start) :
+ h8s2000_device(mconfig, type, tag, owner, clock, address_map_delegate(FUNC(h8s2357_device::map), this)),
intc(*this, "intc"),
adc(*this, "adc"),
port1(*this, "port1"),
@@ -39,76 +39,40 @@ h8s2357_device::h8s2357_device(const machine_config &mconfig, device_type type,
sci0(*this, "sci0"),
sci1(*this, "sci1"),
sci2(*this, "sci2"),
- watchdog(*this, "watchdog")
+ watchdog(*this, "watchdog"),
+ ram_start(start),
+ syscr(0)
{
- ram_start = 0;
- syscr = 0;
}
h8s2357_device::h8s2357_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2000_device(mconfig, H8S2357, "H8S/2357", tag, owner, clock, "h8s2357", __FILE__, address_map_delegate(FUNC(h8s2357_device::map), this)),
- intc(*this, "intc"),
- adc(*this, "adc"),
- port1(*this, "port1"),
- port2(*this, "port2"),
- port3(*this, "port3"),
- port4(*this, "port4"),
- port5(*this, "port5"),
- port6(*this, "port6"),
- porta(*this, "porta"),
- portb(*this, "portb"),
- portc(*this, "portc"),
- portd(*this, "portd"),
- porte(*this, "porte"),
- portf(*this, "portf"),
- portg(*this, "portg"),
- timer8_0(*this, "timer8_0"),
- timer8_1(*this, "timer8_1"),
- timer16(*this, "timer16"),
- timer16_0(*this, "timer16:0"),
- timer16_1(*this, "timer16:1"),
- timer16_2(*this, "timer16:2"),
- timer16_3(*this, "timer16:3"),
- timer16_4(*this, "timer16:4"),
- timer16_5(*this, "timer16:5"),
- sci0(*this, "sci0"),
- sci1(*this, "sci1"),
- sci2(*this, "sci2"),
- watchdog(*this, "watchdog")
+ h8s2357_device(mconfig, H8S2357, tag, owner, clock, 0xffdc00)
{
- ram_start = 0;
- syscr = 0;
- ram_start = 0xffdc00;
}
h8s2352_device::h8s2352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2357_device(mconfig, H8S2352, "H8S/2352", tag, owner, clock, "h8s2352", __FILE__)
+ h8s2357_device(mconfig, H8S2352, tag, owner, clock, 0xffdc00)
{
- ram_start = 0xffdc00;
}
h8s2398_device::h8s2398_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2357_device(mconfig, H8S2398, "H8S/2398", tag, owner, clock, "h8s2398", __FILE__)
+ h8s2357_device(mconfig, H8S2398, tag, owner, clock, 0xffdc00)
{
- ram_start = 0xffdc00;
}
h8s2394_device::h8s2394_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2357_device(mconfig, H8S2394, "H8S/2394", tag, owner, clock, "h8s2394", __FILE__)
+ h8s2357_device(mconfig, H8S2394, tag, owner, clock, 0xff7c00)
{
- ram_start = 0xff7c00;
}
h8s2392_device::h8s2392_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2357_device(mconfig, H8S2392, "H8S/2392", tag, owner, clock, "h8s2392", __FILE__)
+ h8s2357_device(mconfig, H8S2392, tag, owner, clock, 0xffdc00)
{
- ram_start = 0xffdc00;
}
h8s2390_device::h8s2390_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2357_device(mconfig, H8S2390, "H8S/2390", tag, owner, clock, "h8s2390", __FILE__)
+ h8s2357_device(mconfig, H8S2390, tag, owner, clock, 0xffec00)
{
- ram_start = 0xffec00;
}
static MACHINE_CONFIG_FRAGMENT(h8s2357)
diff --git a/src/devices/cpu/h8/h8s2357.h b/src/devices/cpu/h8/h8s2357.h
index c7fe219b5a7..8e9d3bb7ea8 100644
--- a/src/devices/cpu/h8/h8s2357.h
+++ b/src/devices/cpu/h8/h8s2357.h
@@ -20,8 +20,10 @@
***************************************************************************/
-#ifndef __H8S2357_H__
-#define __H8S2357_H__
+#ifndef MAME_CPU_H8_H8S2357_H
+#define MAME_CPU_H8_H8S2357_H
+
+#pragma once
#include "h8s2000.h"
#include "h8_intc.h"
@@ -34,7 +36,6 @@
class h8s2357_device : public h8s2000_device {
public:
- h8s2357_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
h8s2357_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER(syscr_r);
@@ -73,6 +74,8 @@ protected:
uint32_t ram_start;
unsigned char syscr;
+ h8s2357_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start);
+
virtual bool exr_in_stack() const override;
virtual void update_irq_filter() override;
virtual void interrupt_taken() override;
@@ -113,12 +116,11 @@ public:
h8s2390_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type H8S2357;
-extern const device_type H8S2352;
-extern const device_type H8S2398;
-extern const device_type H8S2394;
-extern const device_type H8S2392;
-extern const device_type H8S2390;
-
+DECLARE_DEVICE_TYPE(H8S2357, h8s2357_device)
+DECLARE_DEVICE_TYPE(H8S2352, h8s2352_device)
+DECLARE_DEVICE_TYPE(H8S2398, h8s2398_device)
+DECLARE_DEVICE_TYPE(H8S2394, h8s2394_device)
+DECLARE_DEVICE_TYPE(H8S2392, h8s2392_device)
+DECLARE_DEVICE_TYPE(H8S2390, h8s2390_device)
-#endif
+#endif // MAME_CPU_H8_H8S2357_H
diff --git a/src/devices/cpu/h8/h8s2600.cpp b/src/devices/cpu/h8/h8s2600.cpp
index 5bd2d7419cc..188f879279d 100644
--- a/src/devices/cpu/h8/h8s2600.cpp
+++ b/src/devices/cpu/h8/h8s2600.cpp
@@ -3,8 +3,8 @@
#include "emu.h"
#include "h8s2600.h"
-h8s2600_device::h8s2600_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_delegate map_delegate) :
- h8s2000_device(mconfig, type, name, tag, owner, clock, shortname, source, map_delegate)
+h8s2600_device::h8s2600_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_delegate map_delegate) :
+ h8s2000_device(mconfig, type, tag, owner, clock, map_delegate)
{
}
diff --git a/src/devices/cpu/h8/h8s2600.h b/src/devices/cpu/h8/h8s2600.h
index eb2881d66dd..45b84bb2f8c 100644
--- a/src/devices/cpu/h8/h8s2600.h
+++ b/src/devices/cpu/h8/h8s2600.h
@@ -11,18 +11,19 @@
***************************************************************************/
-#ifndef __H8S2600_H__
-#define __H8S2600_H__
+#ifndef MAME_CPU_H8_H8S2600_H
+#define MAME_CPU_H8_H8S2600_H
+
+#pragma once
#include "h8s2000.h"
class h8s2600_device : public h8s2000_device {
-public:
- h8s2600_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_delegate map_delegate);
-
protected:
static const disasm_entry disasm_entries[];
+ h8s2600_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_delegate map_delegate);
+
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
virtual void do_exec_full() override;
@@ -36,4 +37,4 @@ protected:
#undef O
};
-#endif
+#endif // MAME_CPU_H8_H8S2600_H
diff --git a/src/devices/cpu/h8/h8s2655.cpp b/src/devices/cpu/h8/h8s2655.cpp
index b95fb91ad68..60b1fa02b2e 100644
--- a/src/devices/cpu/h8/h8s2655.cpp
+++ b/src/devices/cpu/h8/h8s2655.cpp
@@ -3,11 +3,11 @@
#include "emu.h"
#include "h8s2655.h"
-const device_type H8S2655 = device_creator<h8s2655_device>;
-const device_type H8S2653 = device_creator<h8s2653_device>;
+DEFINE_DEVICE_TYPE(H8S2655, h8s2655_device, "h8s2655", "H8S/2655")
+DEFINE_DEVICE_TYPE(H8S2653, h8s2653_device, "h8s2653", "H8S/2653")
-h8s2655_device::h8s2655_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- h8s2600_device(mconfig, type, name, tag, owner, clock, shortname, source, address_map_delegate(FUNC(h8s2655_device::map), this)),
+h8s2655_device::h8s2655_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ h8s2600_device(mconfig, type, tag, owner, clock, address_map_delegate(FUNC(h8s2655_device::map), this)),
intc(*this, "intc"),
adc(*this, "adc"),
port1(*this, "port1"),
@@ -35,50 +35,20 @@ h8s2655_device::h8s2655_device(const machine_config &mconfig, device_type type,
sci0(*this, "sci0"),
sci1(*this, "sci1"),
sci2(*this, "sci2"),
- watchdog(*this, "watchdog")
+ watchdog(*this, "watchdog"),
+ syscr(0)
{
has_trace = true;
- syscr = 0;
}
h8s2655_device::h8s2655_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2600_device(mconfig, H8S2655, "H8S/2655", tag, owner, clock, "h8s2655", __FILE__, address_map_delegate(FUNC(h8s2655_device::map), this)),
- intc(*this, "intc"),
- adc(*this, "adc"),
- port1(*this, "port1"),
- port2(*this, "port2"),
- port3(*this, "port3"),
- port4(*this, "port4"),
- port5(*this, "port5"),
- port6(*this, "port6"),
- porta(*this, "porta"),
- portb(*this, "portb"),
- portc(*this, "portc"),
- portd(*this, "portd"),
- porte(*this, "porte"),
- portf(*this, "portf"),
- portg(*this, "portg"),
- timer8_0(*this, "timer8_0"),
- timer8_1(*this, "timer8_1"),
- timer16(*this, "timer16"),
- timer16_0(*this, "timer16:0"),
- timer16_1(*this, "timer16:1"),
- timer16_2(*this, "timer16:2"),
- timer16_3(*this, "timer16:3"),
- timer16_4(*this, "timer16:4"),
- timer16_5(*this, "timer16:5"),
- sci0(*this, "sci0"),
- sci1(*this, "sci1"),
- sci2(*this, "sci2"),
- watchdog(*this, "watchdog")
+ h8s2655_device(mconfig, H8S2655, tag, owner, clock)
{
- has_trace = true;
- syscr = 0;
}
h8s2653_device::h8s2653_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- h8s2655_device(mconfig, H8S2653, "H8S/2653", tag, owner, clock, "h8s2653", __FILE__)
+ h8s2655_device(mconfig, H8S2653, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/h8/h8s2655.h b/src/devices/cpu/h8/h8s2655.h
index 7da96bce082..0d8c310a91c 100644
--- a/src/devices/cpu/h8/h8s2655.h
+++ b/src/devices/cpu/h8/h8s2655.h
@@ -12,8 +12,10 @@
***************************************************************************/
-#ifndef __H8S2655_H__
-#define __H8S2655_H__
+#ifndef MAME_CPU_H8_H8S2655_H
+#define MAME_CPU_H8_H8S2655_H
+
+#pragma once
#include "h8s2600.h"
#include "h8_intc.h"
@@ -26,7 +28,6 @@
class h8s2655_device : public h8s2600_device {
public:
- h8s2655_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
h8s2655_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER(syscr_r);
@@ -64,6 +65,8 @@ protected:
uint8_t syscr;
+ h8s2655_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual bool exr_in_stack() const override;
virtual void update_irq_filter() override;
virtual void interrupt_taken() override;
@@ -84,7 +87,7 @@ public:
h8s2653_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type H8S2655;
-extern const device_type H8S2653;
+DECLARE_DEVICE_TYPE(H8S2655, h8s2655_device)
+DECLARE_DEVICE_TYPE(H8S2653, h8s2653_device)
-#endif
+#endif // MAME_CPU_H8_H8S2655_H
diff --git a/src/devices/cpu/hcd62121/hcd62121.cpp b/src/devices/cpu/hcd62121/hcd62121.cpp
index 931781c2c72..7d7ee5fa62e 100644
--- a/src/devices/cpu/hcd62121/hcd62121.cpp
+++ b/src/devices/cpu/hcd62121/hcd62121.cpp
@@ -17,9 +17,10 @@ TODO:
**********************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "hcd62121.h"
+#include "debugger.h"
+
enum
{
@@ -44,11 +45,11 @@ constexpr u8 FLAG_CL = 0x01;
constexpr u8 FLAG_ZH = 0x10;
-const device_type HCD62121 = device_creator<hcd62121_cpu_device>;
+DEFINE_DEVICE_TYPE(HCD62121, hcd62121_cpu_device, "hcd62121_cpu_device", "Hitachi HCD62121")
hcd62121_cpu_device::hcd62121_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, HCD62121, "Hitachi HCD62121", tag, owner, clock, "hcd62121", __FILE__)
+ : cpu_device(mconfig, HCD62121, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 8, 24, 0)
, m_prev_pc(0)
, m_sp(0)
diff --git a/src/devices/cpu/hcd62121/hcd62121.h b/src/devices/cpu/hcd62121/hcd62121.h
index 8e4d2bb788e..65f67e90bda 100644
--- a/src/devices/cpu/hcd62121/hcd62121.h
+++ b/src/devices/cpu/hcd62121/hcd62121.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __HCD62121_H__
-#define __HCD62121_H__
-
+#ifndef MAME_CPU_HCD62121_HCD62121_H
+#define MAME_CPU_HCD62121_HCD62121_H
+#pragma once
#define MCFG_HCD62121_KOL_CB(_devcb) devcb = &hcd62121_cpu_device::set_kol_callback(*device, DEVCB_##_devcb);
@@ -20,14 +20,29 @@ public:
// construction/destruction
hcd62121_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_kol_callback(device_t &device, _Object object) { return downcast<hcd62121_cpu_device &>(device).m_kol_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_koh_callback(device_t &device, _Object object) { return downcast<hcd62121_cpu_device &>(device).m_koh_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_port_callback(device_t &device, _Object object) { return downcast<hcd62121_cpu_device &>(device).m_port_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_opt_callback(device_t &device, _Object object) { return downcast<hcd62121_cpu_device &>(device).m_opt_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_ki_callback(device_t &device, _Object object) { return downcast<hcd62121_cpu_device &>(device).m_ki_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in0_callback(device_t &device, _Object object) { return downcast<hcd62121_cpu_device &>(device).m_in0_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_kol_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_kol_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_koh_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_koh_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_port_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_opt_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_opt_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ki_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_ki_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in0_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_in0_cb.set_callback(std::forward<Object>(cb)); }
protected:
+ enum
+ {
+ HCD62121_IP=1, HCD62121_SP, HCD62121_F, HCD62121_LAR,
+ HCD62121_CS, HCD62121_DS, HCD62121_SS, HCD62121_DSIZE,
+ /* 128 byte register file */
+ HCD62121_R00, HCD62121_R04, HCD62121_R08, HCD62121_R0C,
+ HCD62121_R10, HCD62121_R14, HCD62121_R18, HCD62121_R1C,
+ HCD62121_R20, HCD62121_R24, HCD62121_R28, HCD62121_R2C,
+ HCD62121_R30, HCD62121_R34, HCD62121_R38, HCD62121_R3C,
+ HCD62121_R40, HCD62121_R44, HCD62121_R48, HCD62121_R4C,
+ HCD62121_R50, HCD62121_R54, HCD62121_R58, HCD62121_R5C,
+ HCD62121_R60, HCD62121_R64, HCD62121_R68, HCD62121_R6C,
+ HCD62121_R70, HCD62121_R74, HCD62121_R78, HCD62121_R7C
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -113,7 +128,6 @@ private:
};
-extern const device_type HCD62121;
-
+DECLARE_DEVICE_TYPE(HCD62121, hcd62121_cpu_device)
-#endif /* __HCD62121_H__ */
+#endif // MAME_CPU_HCD62121_HCD62121_H
diff --git a/src/devices/cpu/hd61700/hd61700.cpp b/src/devices/cpu/hd61700/hd61700.cpp
index 92201470a6c..2fc84f0eb15 100644
--- a/src/devices/cpu/hd61700/hd61700.cpp
+++ b/src/devices/cpu/hd61700/hd61700.cpp
@@ -23,9 +23,11 @@
******************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "hd61700.h"
+#include "debugger.h"
+
+
// internal ROM
#define INT_ROM 0x0c00
@@ -95,28 +97,27 @@ static const uint16_t irq_vector[] = {0x0032, 0x0042, 0x0052, 0x0062, 0x0072};
// HD61700 DEVICE
//**************************************************************************
-const device_type HD61700 = device_creator<hd61700_cpu_device>;
+DEFINE_DEVICE_TYPE(HD61700, hd61700_cpu_device, "hd61700", "HD61700")
//-------------------------------------------------
// hd61700_cpu_device - constructor
//-------------------------------------------------
hd61700_cpu_device::hd61700_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, HD61700, "HD61700", tag, owner, clock, "hd61700", __FILE__),
- m_program_config("program", ENDIANNESS_BIG, 16, 18, -1),
- m_ppc(0x0000),
- m_curpc(0x0000),
- m_pc(0),
- m_flags(0),
- m_lcd_ctrl_cb(*this),
- m_lcd_read_cb(*this),
- m_lcd_write_cb(*this),
- m_kb_read_cb(*this),
- m_kb_write_cb(*this),
- m_port_read_cb(*this),
- m_port_write_cb(*this)
+ : cpu_device(mconfig, HD61700, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_BIG, 16, 18, -1)
+ , m_ppc(0x0000)
+ , m_curpc(0x0000)
+ , m_pc(0)
+ , m_flags(0)
+ , m_lcd_ctrl_cb(*this)
+ , m_lcd_read_cb(*this)
+ , m_lcd_write_cb(*this)
+ , m_kb_read_cb(*this)
+ , m_kb_write_cb(*this)
+ , m_port_read_cb(*this)
+ , m_port_write_cb(*this)
{
- // ...
}
@@ -304,7 +305,7 @@ offs_t hd61700_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, c
// check_irqs - check if need interrupts
//-------------------------------------------------
-bool hd61700_cpu_device::check_irqs(void)
+bool hd61700_cpu_device::check_irqs()
{
for (int i=4; i>=0; i--)
{
diff --git a/src/devices/cpu/hd61700/hd61700.h b/src/devices/cpu/hd61700/hd61700.h
index fee2e4cd465..559cda51dab 100644
--- a/src/devices/cpu/hd61700/hd61700.h
+++ b/src/devices/cpu/hd61700/hd61700.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_CPU_HD61700_HD61700_H
+#define MAME_CPU_HD61700_HD61700_H
-#ifndef __HD61700_H__
-#define __HD61700_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -41,14 +41,6 @@
// DEFINITIONS
//**************************************************************************
-// registers
-enum
-{
- HD61700_PC=1, HD61700_F, HD61700_SX, HD61700_SY, HD61700_SZ, HD61700_PE, HD61700_PD,
- HD61700_IB, HD61700_UA, HD61700_IA, HD61700_IE, HD61700_TM, HD61700_IX,
- HD61700_IY, HD61700_IZ, HD61700_US, HD61700_SS, HD61700_KY, HD61700_MAINREG
-};
-
// input lines
enum
{
@@ -103,7 +95,7 @@ protected:
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
// interrupts
- bool check_irqs(void);
+ bool check_irqs();
// inline helpers
inline void set_pc(int32_t new_pc);
@@ -124,11 +116,18 @@ protected:
inline uint16_t make_bcd_sub(uint8_t arg1, uint8_t arg2);
inline uint16_t make_bcd_add(uint8_t arg1, uint8_t arg2);
-protected:
+ // registers
+ enum
+ {
+ HD61700_PC=1, HD61700_F, HD61700_SX, HD61700_SY, HD61700_SZ, HD61700_PE, HD61700_PD,
+ HD61700_IB, HD61700_UA, HD61700_IA, HD61700_IE, HD61700_TM, HD61700_IX,
+ HD61700_IY, HD61700_IZ, HD61700_US, HD61700_SS, HD61700_KY, HD61700_MAINREG
+ };
+
+ static constexpr device_timer_id SEC_TIMER = 1;
// internal state
address_space_config m_program_config;
- static const device_timer_id SEC_TIMER = 1;
emu_timer *m_sec_timer;
offs_t m_ppc;
@@ -157,15 +156,14 @@ protected:
devcb_write8 m_port_write_cb; //8 bit port write
// flag definitions
- static const int FLAG_Z = 0x80;
- static const int FLAG_C = 0x40;
- static const int FLAG_LZ = 0x20;
- static const int FLAG_UZ = 0x10;
- static const int FLAG_SW = 0x08;
- static const int FLAG_APO = 0x04;
+ static constexpr int FLAG_Z = 0x80;
+ static constexpr int FLAG_C = 0x40;
+ static constexpr int FLAG_LZ = 0x20;
+ static constexpr int FLAG_UZ = 0x10;
+ static constexpr int FLAG_SW = 0x08;
+ static constexpr int FLAG_APO = 0x04;
};
-extern const device_type HD61700;
-
+DECLARE_DEVICE_TYPE(HD61700, hd61700_cpu_device)
-#endif /* __HD61700_H__ */
+#endif // MAME_CPU_HD61700_HD61700_H
diff --git a/src/devices/cpu/hmcs40/hmcs40.cpp b/src/devices/cpu/hmcs40/hmcs40.cpp
index a14b947820a..092a6417c32 100644
--- a/src/devices/cpu/hmcs40/hmcs40.cpp
+++ b/src/devices/cpu/hmcs40/hmcs40.cpp
@@ -11,47 +11,47 @@
*/
-#define IS_PMOS 0
-#define IS_CMOS ~0
-
#include "emu.h"
#include "hmcs40.h"
#include "debugger.h"
+#define IS_PMOS 0
+#define IS_CMOS ~0
+
// MCU types
// HMCS42/C/CL
-//const device_type HD38702 = device_creator<hd38702_device>; // PMOS, 28 pins, 22 I/O lines, (512+32)x10 ROM, 32x4 RAM, no B or SPY register
-//const device_type HD44700 = device_creator<hd44700_device>; // CMOS version
-//const device_type HD44708 = device_creator<hd44708_device>; // CMOS version, low-power
+//DEFINE_DEVICE_TYPE(HD38702, hd38702_device, "hd38702", "HD38702") // PMOS, 28 pins, 22 I/O lines, (512+32)x10 ROM, 32x4 RAM, no B or SPY register
+//DEFINE_DEVICE_TYPE(HD44700, hd44700_device, "hd44700", "HD44700") // CMOS version
+//DEFINE_DEVICE_TYPE(HD44708, hd44708_device, "hd44708", "HD44708") // CMOS version, low-power
// HMCS43/C/CL
-const device_type HD38750 = device_creator<hd38750_device>; // PMOS, 42 pins, 32 I/O lines, (1024+64)x10 ROM, 80x4 RAM
-const device_type HD38755 = device_creator<hd38755_device>; // ceramic filter oscillator type
-const device_type HD44750 = device_creator<hd44750_device>; // CMOS version
-const device_type HD44758 = device_creator<hd44758_device>; // CMOS version, low-power
+DEFINE_DEVICE_TYPE(HD38750, hd38750_device, "hd38750", "HD38750") // PMOS, 42 pins, 32 I/O lines, (1024+64)x10 ROM, 80x4 RAM
+DEFINE_DEVICE_TYPE(HD38755, hd38755_device, "hd38755", "HD38755") // ceramic filter oscillator type
+DEFINE_DEVICE_TYPE(HD44750, hd44750_device, "hd44750", "HD44750") // CMOS version
+DEFINE_DEVICE_TYPE(HD44758, hd44758_device, "hd44758", "HD44758") // CMOS version, low-power
// HMCS44A/C/CL
-const device_type HD38800 = device_creator<hd38800_device>; // PMOS, 42 pins, 32 I/O lines, (2048+128)x10 ROM, 160x4 RAM
-const device_type HD38805 = device_creator<hd38805_device>; // ceramic filter oscillator type
-const device_type HD44801 = device_creator<hd44801_device>; // CMOS version
-const device_type HD44808 = device_creator<hd44808_device>; // CMOS version, low-power
+DEFINE_DEVICE_TYPE(HD38800, hd38800_device, "hd38800", "HD38800") // PMOS, 42 pins, 32 I/O lines, (2048+128)x10 ROM, 160x4 RAM
+DEFINE_DEVICE_TYPE(HD38805, hd38805_device, "hd38805", "HD38805") // ceramic filter oscillator type
+DEFINE_DEVICE_TYPE(HD44801, hd44801_device, "hd44801", "HD44801") // CMOS version
+DEFINE_DEVICE_TYPE(HD44808, hd44808_device, "hd44808", "HD44808") // CMOS version, low-power
// HMCS45A/C/CL
-const device_type HD38820 = device_creator<hd38820_device>; // PMOS, 54 pins(QFP) or 64 pins(DIP), 44 I/O lines, (2048+128)x10 ROM, 160x4 RAM
-const device_type HD38825 = device_creator<hd38825_device>; // ceramic filter oscillator type
-const device_type HD44820 = device_creator<hd44820_device>; // CMOS version
-const device_type HD44828 = device_creator<hd44828_device>; // CMOS version, low-power
+DEFINE_DEVICE_TYPE(HD38820, hd38820_device, "hd38820", "HD38820") // PMOS, 54 pins(QFP) or 64 pins(DIP), 44 I/O lines, (2048+128)x10 ROM, 160x4 RAM
+DEFINE_DEVICE_TYPE(HD38825, hd38825_device, "hd38825", "HD38825") // ceramic filter oscillator type
+DEFINE_DEVICE_TYPE(HD44820, hd44820_device, "hd44820", "HD44820") // CMOS version
+DEFINE_DEVICE_TYPE(HD44828, hd44828_device, "hd44828", "HD44828") // CMOS version, low-power
// HMCS46C/CL (no PMOS version exists)
-//const device_type HD44840 = device_creator<hd44840_device>; // CMOS, 42 pins, 32 I/O lines, 4096x10 ROM, 256x4 RAM
-//const device_type HD44848 = device_creator<hd44848_device>; // CMOS, low-power
+//DEFINE_DEVICE_TYPE(HD44840, hd44840_device, "hd44840", "HD44840") // CMOS, 42 pins, 32 I/O lines, 4096x10 ROM, 256x4 RAM
+//DEFINE_DEVICE_TYPE(HD44848, hd44848_device, "hd44848", "HD44848") // CMOS, low-power
// HMCS47A/C/CL
-//const device_type HD38870 = device_creator<hd38870_device>; // PMOS, 54 pins(QFP) or 64 pins(DIP), 44 I/O lines, 4096x10 ROM, 256x4 RAM
-//const device_type HD44860 = device_creator<hd44860_device>; // CMOS version
-//const device_type HD44868 = device_creator<hd44868_device>; // CMOS version, low-power
+//DEFINE_DEVICE_TYPE(HD38870, hd38870_device, "hd38870", "HD38870") // PMOS, 54 pins(QFP) or 64 pins(DIP), 44 I/O lines, 4096x10 ROM, 256x4 RAM
+//DEFINE_DEVICE_TYPE(HD44860, hd44860_device, "hd44860", "HD44860") // CMOS version
+//DEFINE_DEVICE_TYPE(HD44868, hd44868_device, "hd44868", "HD44868") // CMOS version, low-power
// internal memory maps
@@ -79,57 +79,74 @@ ADDRESS_MAP_END
// device definitions
-hmcs43_cpu_device::hmcs43_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u16 polarity, const char *shortname)
- : hmcs40_cpu_device(mconfig, type, name, tag, owner, clock, HMCS40_FAMILY_HMCS43, polarity, 3 /* stack levels */, 10 /* pc width */, 11 /* prg width */, ADDRESS_MAP_NAME(program_1k), 7 /* data width */, ADDRESS_MAP_NAME(data_80x4), shortname, __FILE__)
+hmcs40_cpu_device::hmcs40_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int family, u16 polarity, int stack_levels, int pcwidth, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 16, prgwidth, -1, program)
+ , m_data_config("data", ENDIANNESS_LITTLE, 8, datawidth, 0, data)
+ , m_pcwidth(pcwidth)
+ , m_prgwidth(prgwidth)
+ , m_datawidth(datawidth)
+ , m_family(family)
+ , m_polarity(polarity)
+ , m_stack_levels(stack_levels)
+ , m_read_r0(*this), m_read_r1(*this), m_read_r2(*this), m_read_r3(*this), m_read_r4(*this), m_read_r5(*this), m_read_r6(*this), m_read_r7(*this)
+ , m_write_r0(*this), m_write_r1(*this), m_write_r2(*this), m_write_r3(*this), m_write_r4(*this), m_write_r5(*this), m_write_r6(*this), m_write_r7(*this)
+ , m_read_d(*this)
+ , m_write_d(*this)
+{
+}
+
+hmcs43_cpu_device::hmcs43_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u16 polarity)
+ : hmcs40_cpu_device(mconfig, type, tag, owner, clock, HMCS40_FAMILY_HMCS43, polarity, 3 /* stack levels */, 10 /* pc width */, 11 /* prg width */, ADDRESS_MAP_NAME(program_1k), 7 /* data width */, ADDRESS_MAP_NAME(data_80x4))
{ }
hd38750_device::hd38750_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs43_cpu_device(mconfig, HD38750, "HD38750", tag, owner, clock, IS_PMOS, "hd38750")
+ : hmcs43_cpu_device(mconfig, HD38750, tag, owner, clock, IS_PMOS)
{ }
hd38755_device::hd38755_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs43_cpu_device(mconfig, HD38755, "HD38755", tag, owner, clock, IS_PMOS, "hd38755")
+ : hmcs43_cpu_device(mconfig, HD38755, tag, owner, clock, IS_PMOS)
{ }
hd44750_device::hd44750_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs43_cpu_device(mconfig, HD44750, "HD44750", tag, owner, clock, IS_CMOS, "hd44750")
+ : hmcs43_cpu_device(mconfig, HD44750, tag, owner, clock, IS_CMOS)
{ }
hd44758_device::hd44758_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs43_cpu_device(mconfig, HD44758, "HD44758", tag, owner, clock, IS_CMOS, "hd44758")
+ : hmcs43_cpu_device(mconfig, HD44758, tag, owner, clock, IS_CMOS)
{ }
-hmcs44_cpu_device::hmcs44_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u16 polarity, const char *shortname)
- : hmcs40_cpu_device(mconfig, type, name, tag, owner, clock, HMCS40_FAMILY_HMCS44, polarity, 4, 11, 12, ADDRESS_MAP_NAME(program_2k), 8, ADDRESS_MAP_NAME(data_160x4), shortname, __FILE__)
+hmcs44_cpu_device::hmcs44_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u16 polarity)
+ : hmcs40_cpu_device(mconfig, type, tag, owner, clock, HMCS40_FAMILY_HMCS44, polarity, 4, 11, 12, ADDRESS_MAP_NAME(program_2k), 8, ADDRESS_MAP_NAME(data_160x4))
{ }
hd38800_device::hd38800_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs44_cpu_device(mconfig, HD38800, "HD38800", tag, owner, clock, IS_PMOS, "hd38800")
+ : hmcs44_cpu_device(mconfig, HD38800, tag, owner, clock, IS_PMOS)
{ }
hd38805_device::hd38805_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs44_cpu_device(mconfig, HD38805, "HD38805", tag, owner, clock, IS_PMOS, "hd38805")
+ : hmcs44_cpu_device(mconfig, HD38805, tag, owner, clock, IS_PMOS)
{ }
hd44801_device::hd44801_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs44_cpu_device(mconfig, HD44801, "HD44801", tag, owner, clock, IS_CMOS, "hd44801")
+ : hmcs44_cpu_device(mconfig, HD44801, tag, owner, clock, IS_CMOS)
{ }
hd44808_device::hd44808_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs44_cpu_device(mconfig, HD44808, "HD44808", tag, owner, clock, IS_CMOS, "hd44808")
+ : hmcs44_cpu_device(mconfig, HD44808, tag, owner, clock, IS_CMOS)
{ }
-hmcs45_cpu_device::hmcs45_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u16 polarity, const char *shortname)
- : hmcs40_cpu_device(mconfig, type, name, tag, owner, clock, HMCS40_FAMILY_HMCS45, polarity, 4, 11, 12, ADDRESS_MAP_NAME(program_2k), 8, ADDRESS_MAP_NAME(data_160x4), shortname, __FILE__)
+hmcs45_cpu_device::hmcs45_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u16 polarity)
+ : hmcs40_cpu_device(mconfig, type, tag, owner, clock, HMCS40_FAMILY_HMCS45, polarity, 4, 11, 12, ADDRESS_MAP_NAME(program_2k), 8, ADDRESS_MAP_NAME(data_160x4))
{ }
hd38820_device::hd38820_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs45_cpu_device(mconfig, HD38820, "HD38820", tag, owner, clock, IS_PMOS, "hd38820")
+ : hmcs45_cpu_device(mconfig, HD38820, tag, owner, clock, IS_PMOS)
{ }
hd38825_device::hd38825_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs45_cpu_device(mconfig, HD38825, "HD38825", tag, owner, clock, IS_PMOS, "hd38825")
+ : hmcs45_cpu_device(mconfig, HD38825, tag, owner, clock, IS_PMOS)
{ }
hd44820_device::hd44820_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs45_cpu_device(mconfig, HD44820, "HD44820", tag, owner, clock, IS_CMOS, "hd44820")
+ : hmcs45_cpu_device(mconfig, HD44820, tag, owner, clock, IS_CMOS)
{ }
hd44828_device::hd44828_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hmcs45_cpu_device(mconfig, HD44828, "HD44828", tag, owner, clock, IS_CMOS, "hd44828")
+ : hmcs45_cpu_device(mconfig, HD44828, tag, owner, clock, IS_CMOS)
{ }
diff --git a/src/devices/cpu/hmcs40/hmcs40.h b/src/devices/cpu/hmcs40/hmcs40.h
index 9bd2e3f82a5..af933a999a7 100644
--- a/src/devices/cpu/hmcs40/hmcs40.h
+++ b/src/devices/cpu/hmcs40/hmcs40.h
@@ -6,9 +6,10 @@
*/
-#ifndef _HMCS40_H_
-#define _HMCS40_H_
+#ifndef MAME_CPU_HMCS40_HMCS40_H
+#define MAME_CPU_HMCS40_HMCS40_H
+#pragma once
// I/O ports setup
@@ -27,33 +28,11 @@
enum
{
- HMCS40_PORT_R0X = 0,
- HMCS40_PORT_R1X,
- HMCS40_PORT_R2X,
- HMCS40_PORT_R3X,
- HMCS40_PORT_R4X,
- HMCS40_PORT_R5X,
- HMCS40_PORT_R6X,
- HMCS40_PORT_R7X
-};
-
-enum
-{
HMCS40_INPUT_LINE_INT0 = 0,
HMCS40_INPUT_LINE_INT1,
HMCS40_INPUT_LINE_HLT
};
-enum
-{
- HMCS40_FAMILY_HMCS42 = 0,
- HMCS40_FAMILY_HMCS43,
- HMCS40_FAMILY_HMCS44,
- HMCS40_FAMILY_HMCS45,
- HMCS40_FAMILY_HMCS46,
- HMCS40_FAMILY_HMCS47
-};
-
// pinout reference
@@ -114,46 +93,54 @@ enum
class hmcs40_cpu_device : public cpu_device
{
public:
- // construction/destruction
- hmcs40_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, int family, u16 polarity, int stack_levels, int pcwidth, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_LITTLE, 16, prgwidth, -1, program)
- , m_data_config("data", ENDIANNESS_LITTLE, 8, datawidth, 0, data)
- , m_pcwidth(pcwidth)
- , m_prgwidth(prgwidth)
- , m_datawidth(datawidth)
- , m_family(family)
- , m_polarity(polarity)
- , m_stack_levels(stack_levels)
- , m_read_r0(*this), m_read_r1(*this), m_read_r2(*this), m_read_r3(*this), m_read_r4(*this), m_read_r5(*this), m_read_r6(*this), m_read_r7(*this)
- , m_write_r0(*this), m_write_r1(*this), m_write_r2(*this), m_write_r3(*this), m_write_r4(*this), m_write_r5(*this), m_write_r6(*this), m_write_r7(*this)
- , m_read_d(*this)
- , m_write_d(*this)
- { }
+ enum
+ {
+ PORT_R0X = 0,
+ PORT_R1X,
+ PORT_R2X,
+ PORT_R3X,
+ PORT_R4X,
+ PORT_R5X,
+ PORT_R6X,
+ PORT_R7X
+ };
// static configuration helpers
- template<class _Object> static devcb_base &set_read_r0_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_read_r0.set_callback(object); }
- template<class _Object> static devcb_base &set_read_r1_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_read_r1.set_callback(object); }
- template<class _Object> static devcb_base &set_read_r2_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_read_r2.set_callback(object); }
- template<class _Object> static devcb_base &set_read_r3_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_read_r3.set_callback(object); }
- template<class _Object> static devcb_base &set_read_r4_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_read_r4.set_callback(object); }
- template<class _Object> static devcb_base &set_read_r5_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_read_r5.set_callback(object); }
- template<class _Object> static devcb_base &set_read_r6_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_read_r6.set_callback(object); }
- template<class _Object> static devcb_base &set_read_r7_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_read_r7.set_callback(object); }
-
- template<class _Object> static devcb_base &set_write_r0_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_write_r0.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r1_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_write_r1.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r2_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_write_r2.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r3_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_write_r3.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r4_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_write_r4.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r5_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_write_r5.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r6_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_write_r6.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r7_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_write_r7.set_callback(object); }
-
- template<class _Object> static devcb_base &set_read_d_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_read_d.set_callback(object); }
- template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<hmcs40_cpu_device &>(device).m_write_d.set_callback(object); }
+ template <class Object> static devcb_base &set_read_r0_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_r1_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_r2_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_r3_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_r4_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_r5_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r5.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_r6_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r6.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_r7_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r7.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> static devcb_base &set_write_r0_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r1_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r2_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r3_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r4_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r5_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r5.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r6_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r6.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r7_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r7.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); }
protected:
+ enum
+ {
+ HMCS40_FAMILY_HMCS42 = 0,
+ HMCS40_FAMILY_HMCS43,
+ HMCS40_FAMILY_HMCS44,
+ HMCS40_FAMILY_HMCS45,
+ HMCS40_FAMILY_HMCS46,
+ HMCS40_FAMILY_HMCS47
+ };
+
+ // construction/destruction
+ hmcs40_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int family, u16 polarity, int stack_levels, int pcwidth, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -347,10 +334,9 @@ protected:
class hmcs43_cpu_device : public hmcs40_cpu_device
{
-public:
- hmcs43_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u16 polarity, const char *shortname);
-
protected:
+ hmcs43_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u16 polarity);
+
// overrides
virtual u8 read_r(int index) override;
virtual void write_r(int index, u8 data) override;
@@ -384,10 +370,9 @@ public:
class hmcs44_cpu_device : public hmcs40_cpu_device
{
-public:
- hmcs44_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u16 polarity, const char *shortname);
-
protected:
+ hmcs44_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u16 polarity);
+
// overrides
virtual u8 read_r(int index) override;
virtual void write_r(int index, u8 data) override;
@@ -420,10 +405,9 @@ public:
class hmcs45_cpu_device : public hmcs40_cpu_device
{
-public:
- hmcs45_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u16 polarity, const char *shortname);
-
protected:
+ hmcs45_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u16 polarity);
+
// overrides
virtual u8 read_r(int index) override;
virtual void write_r(int index, u8 data) override;
@@ -455,20 +439,19 @@ public:
-extern const device_type HD38750;
-extern const device_type HD38755;
-extern const device_type HD44750;
-extern const device_type HD44758;
-
-extern const device_type HD38800;
-extern const device_type HD38805;
-extern const device_type HD44801;
-extern const device_type HD44808;
+DECLARE_DEVICE_TYPE(HD38750, hd38750_device)
+DECLARE_DEVICE_TYPE(HD38755, hd38755_device)
+DECLARE_DEVICE_TYPE(HD44750, hd44750_device)
+DECLARE_DEVICE_TYPE(HD44758, hd44758_device)
-extern const device_type HD38820;
-extern const device_type HD38825;
-extern const device_type HD44820;
-extern const device_type HD44828;
+DECLARE_DEVICE_TYPE(HD38800, hd38800_device)
+DECLARE_DEVICE_TYPE(HD38805, hd38805_device)
+DECLARE_DEVICE_TYPE(HD44801, hd44801_device)
+DECLARE_DEVICE_TYPE(HD44808, hd44808_device)
+DECLARE_DEVICE_TYPE(HD38820, hd38820_device)
+DECLARE_DEVICE_TYPE(HD38825, hd38825_device)
+DECLARE_DEVICE_TYPE(HD44820, hd44820_device)
+DECLARE_DEVICE_TYPE(HD44828, hd44828_device)
-#endif /* _HMCS40_H_ */
+#endif // MAME_CPU_HMCS40_HMCS40_H
diff --git a/src/devices/cpu/hphybrid/hphybrid.cpp b/src/devices/cpu/hphybrid/hphybrid.cpp
index 08db689b177..c00ba6e6471 100644
--- a/src/devices/cpu/hphybrid/hphybrid.cpp
+++ b/src/devices/cpu/hphybrid/hphybrid.cpp
@@ -32,8 +32,11 @@
// * RET 0,P is executed to end ISR: return program counter is popped off the stack and IM is cleared
#include "emu.h"
-#include "debugger.h"
#include "hphybrid.h"
+#include "debugger.h"
+
+#include "hphybrid_defs.h"
+
enum {
HPHYBRID_A,
@@ -101,8 +104,8 @@ enum {
// Part of r32-r37 that is actually output as address extension (6 bits of "BSC": block select code)
#define BSC_REG_MASK 0x3f
-const device_type HP_5061_3001 = device_creator<hp_5061_3001_cpu_device>;
-const device_type HP_5061_3011 = device_creator<hp_5061_3011_cpu_device>;
+DEFINE_DEVICE_TYPE(HP_5061_3001, hp_5061_3001_cpu_device, "5061_3001", "HP-5061-3001")
+DEFINE_DEVICE_TYPE(HP_5061_3011, hp_5061_3011_cpu_device, "5061_3011", "HP-5061-3011")
WRITE_LINE_MEMBER(hp_hybrid_cpu_device::dmar_w)
{
@@ -141,8 +144,8 @@ uint8_t hp_hybrid_cpu_device::pa_r(void) const
return CURRENT_PA;
}
-hp_hybrid_cpu_device::hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname , uint8_t addrwidth)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+hp_hybrid_cpu_device::hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t addrwidth)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_pa_changed_func(*this)
, m_program_config("program", ENDIANNESS_BIG, 16, addrwidth, -1)
, m_io_config("io", ENDIANNESS_BIG, 16, 6, -1)
@@ -1121,7 +1124,7 @@ void hp_hybrid_cpu_device::WIO(uint8_t pa , uint8_t ic , uint16_t v)
}
hp_5061_3001_cpu_device::hp_5061_3001_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hp_hybrid_cpu_device(mconfig, HP_5061_3001, "HP-5061-3001", tag, owner, clock, "5061_3001", 22)
+ : hp_hybrid_cpu_device(mconfig, HP_5061_3001, tag, owner, clock, 22)
, m_boot_mode(false)
{
}
@@ -1685,7 +1688,7 @@ void hp_5061_3001_cpu_device::enter_isr(void)
}
hp_5061_3011_cpu_device::hp_5061_3011_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hp_hybrid_cpu_device(mconfig, HP_5061_3011, "HP-5061-3011", tag, owner, clock, "5061_3011", 16)
+ : hp_hybrid_cpu_device(mconfig, HP_5061_3011, tag, owner, clock, 16)
{
}
diff --git a/src/devices/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h
index 62e4724139a..57960e01d2c 100644
--- a/src/devices/cpu/hphybrid/hphybrid.h
+++ b/src/devices/cpu/hphybrid/hphybrid.h
@@ -19,8 +19,10 @@
// - hp9800e emulator for inspiration on implementing EMC instructions
// - A lot of "educated" guessing
-#ifndef _HPHYBRID_H_
-#define _HPHYBRID_H_
+#ifndef MAME_CPU_HPHYBRID_HPHYBRID_H
+#define MAME_CPU_HPHYBRID_HPHYBRID_H
+
+#pragma once
// Input lines
#define HPHYBRID_IRH 0 // High-level interrupt
@@ -37,40 +39,6 @@
// Compose an I/O address from PA & IC
#define HP_MAKE_IOADDR(pa , ic) (((pa) << HP_IOADDR_PA_SHIFT) | ((ic) << HP_IOADDR_IC_SHIFT))
-// Addresses of memory mapped registers
-#define HP_REG_A_ADDR 0x0000
-#define HP_REG_B_ADDR 0x0001
-#define HP_REG_P_ADDR 0x0002
-#define HP_REG_R_ADDR 0x0003
-#define HP_REG_R4_ADDR 0x0004
-#define HP_REG_R5_ADDR 0x0005
-#define HP_REG_R6_ADDR 0x0006
-#define HP_REG_R7_ADDR 0x0007
-#define HP_REG_IV_ADDR 0x0008
-#define HP_REG_PA_ADDR 0x0009
-#define HP_REG_W_ADDR 0x000A
-#define HP_REG_DMAPA_ADDR 0x000B
-#define HP_REG_DMAMA_ADDR 0x000C
-#define HP_REG_DMAC_ADDR 0x000D
-#define HP_REG_C_ADDR 0x000e
-#define HP_REG_D_ADDR 0x000f
-#define HP_REG_AR2_ADDR 0x0010
-#define HP_REG_SE_ADDR 0x0014
-#define HP_REG_R25_ADDR 0x0015
-#define HP_REG_R26_ADDR 0x0016
-#define HP_REG_R27_ADDR 0x0017
-#define HP_REG_R32_ADDR 0x001a
-#define HP_REG_R33_ADDR 0x001b
-#define HP_REG_R34_ADDR 0x001c
-#define HP_REG_R35_ADDR 0x001d
-#define HP_REG_R36_ADDR 0x001e
-#define HP_REG_R37_ADDR 0x001f
-#define HP_REG_LAST_ADDR 0x001f
-#define HP_REG_AR1_ADDR 0xfff8
-
-#define HP_REG_IV_MASK 0xfff0
-#define HP_REG_PA_MASK 0x000f
-
// Set boot mode of 5061-3001: either normal (false) or as in HP9845 system (true)
#define MCFG_HPHYBRID_SET_9845_BOOT(_mode) \
hp_5061_3001_cpu_device::set_boot_mode_static(*device, _mode);
@@ -82,171 +50,171 @@
class hp_hybrid_cpu_device : public cpu_device
{
public:
- DECLARE_WRITE_LINE_MEMBER(dmar_w);
- DECLARE_WRITE_LINE_MEMBER(halt_w);
- DECLARE_WRITE_LINE_MEMBER(status_w);
- DECLARE_WRITE_LINE_MEMBER(flag_w);
+ DECLARE_WRITE_LINE_MEMBER(dmar_w);
+ DECLARE_WRITE_LINE_MEMBER(halt_w);
+ DECLARE_WRITE_LINE_MEMBER(status_w);
+ DECLARE_WRITE_LINE_MEMBER(flag_w);
- uint8_t pa_r(void) const;
+ uint8_t pa_r() const;
- template<class _Object> static devcb_base &set_pa_changed_func(device_t &device, _Object object) { return downcast<hp_hybrid_cpu_device &>(device).m_pa_changed_func.set_callback(object); }
+ template <class Object> static devcb_base &set_pa_changed_func(device_t &device, Object &&cb) { return downcast<hp_hybrid_cpu_device &>(device).m_pa_changed_func.set_callback(std::forward<Object>(cb)); }
protected:
- hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname , uint8_t addrwidth);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
- // device_execute_interface overrides
- virtual uint32_t execute_min_cycles() const override { return 6; }
- virtual uint32_t execute_input_lines() const override { return 2; }
- virtual uint32_t execute_default_irq_vector() const override { return 0xffff; }
- virtual void execute_run() override;
- virtual void execute_set_input(int inputnum, int state) override;
-
- uint16_t execute_one(uint16_t opcode);
- uint16_t execute_one_sub(uint16_t opcode);
- // Execute an instruction that doesn't belong to either BPC or IOC
- virtual uint16_t execute_no_bpc_ioc(uint16_t opcode) = 0;
-
- // device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
-
- // device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
-
- // device_disasm_interface overrides
- virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }
- virtual uint32_t disasm_max_opcode_bytes() const override { return 2; }
- virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
-
- // Different cases of memory access
- // See patent @ pg 361
- typedef enum {
- AEC_CASE_A, // Instr. fetches, non-base page fetches of link pointers, BPC direct non-base page accesses
- AEC_CASE_B, // Base page fetches of link pointers, BPC direct base page accesses
- AEC_CASE_C, // IOC, EMC & BPC indirect final destination accesses
- AEC_CASE_D // DMA accesses
- } aec_cases_t;
-
- // do memory address extension
- virtual uint32_t add_mae(aec_cases_t aec_case , uint16_t addr) = 0;
-
- uint16_t remove_mae(uint32_t addr);
-
- uint16_t RM(aec_cases_t aec_case , uint16_t addr);
- uint16_t RM(uint32_t addr);
- virtual uint16_t read_non_common_reg(uint16_t addr) = 0;
-
- void WM(aec_cases_t aec_case , uint16_t addr , uint16_t v);
- void WM(uint32_t addr , uint16_t v);
- virtual void write_non_common_reg(uint16_t addr , uint16_t v) = 0;
-
- uint16_t fetch(void);
-
- uint16_t get_skip_addr(uint16_t opcode , bool condition) const;
-
- devcb_write8 m_pa_changed_func;
-
- int m_icount;
- bool m_forced_bsc_25;
-
- // State of processor
- uint16_t m_reg_A; // Register A
- uint16_t m_reg_B; // Register B
- uint16_t m_reg_P; // Register P
- uint16_t m_reg_R; // Register R
- uint16_t m_reg_C; // Register C
- uint16_t m_reg_D; // Register D
- uint16_t m_reg_IV; // Register IV
- uint16_t m_reg_W; // Register W
- uint8_t m_reg_PA[ HPHYBRID_INT_LVLS + 1 ]; // Stack of register PA (4 bit-long)
- uint32_t m_flags; // Flags
- uint8_t m_dmapa; // DMA peripheral address (4 bits)
- uint16_t m_dmama; // DMA address
- uint16_t m_dmac; // DMA counter
- uint16_t m_reg_I; // Instruction register
- uint32_t m_genpc; // Full PC
+ hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t addrwidth);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // device_execute_interface overrides
+ virtual uint32_t execute_min_cycles() const override { return 6; }
+ virtual uint32_t execute_input_lines() const override { return 2; }
+ virtual uint32_t execute_default_irq_vector() const override { return 0xffff; }
+ virtual void execute_run() override;
+ virtual void execute_set_input(int inputnum, int state) override;
+
+ uint16_t execute_one(uint16_t opcode);
+ uint16_t execute_one_sub(uint16_t opcode);
+ // Execute an instruction that doesn't belong to either BPC or IOC
+ virtual uint16_t execute_no_bpc_ioc(uint16_t opcode) = 0;
+
+ // device_memory_interface overrides
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
+
+ // device_state_interface overrides
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
+
+ // device_disasm_interface overrides
+ virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }
+ virtual uint32_t disasm_max_opcode_bytes() const override { return 2; }
+ virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
+
+ // Different cases of memory access
+ // See patent @ pg 361
+ typedef enum {
+ AEC_CASE_A, // Instr. fetches, non-base page fetches of link pointers, BPC direct non-base page accesses
+ AEC_CASE_B, // Base page fetches of link pointers, BPC direct base page accesses
+ AEC_CASE_C, // IOC, EMC & BPC indirect final destination accesses
+ AEC_CASE_D // DMA accesses
+ } aec_cases_t;
+
+ // do memory address extension
+ virtual uint32_t add_mae(aec_cases_t aec_case , uint16_t addr) = 0;
+
+ uint16_t remove_mae(uint32_t addr);
+
+ uint16_t RM(aec_cases_t aec_case , uint16_t addr);
+ uint16_t RM(uint32_t addr);
+ virtual uint16_t read_non_common_reg(uint16_t addr) = 0;
+
+ void WM(aec_cases_t aec_case , uint16_t addr , uint16_t v);
+ void WM(uint32_t addr , uint16_t v);
+ virtual void write_non_common_reg(uint16_t addr , uint16_t v) = 0;
+
+ uint16_t fetch();
+
+ uint16_t get_skip_addr(uint16_t opcode , bool condition) const;
+
+ devcb_write8 m_pa_changed_func;
+
+ int m_icount;
+ bool m_forced_bsc_25;
+
+ // State of processor
+ uint16_t m_reg_A; // Register A
+ uint16_t m_reg_B; // Register B
+ uint16_t m_reg_P; // Register P
+ uint16_t m_reg_R; // Register R
+ uint16_t m_reg_C; // Register C
+ uint16_t m_reg_D; // Register D
+ uint16_t m_reg_IV; // Register IV
+ uint16_t m_reg_W; // Register W
+ uint8_t m_reg_PA[ HPHYBRID_INT_LVLS + 1 ]; // Stack of register PA (4 bit-long)
+ uint32_t m_flags; // Flags
+ uint8_t m_dmapa; // DMA peripheral address (4 bits)
+ uint16_t m_dmama; // DMA address
+ uint16_t m_dmac; // DMA counter
+ uint16_t m_reg_I; // Instruction register
+ uint32_t m_genpc; // Full PC
private:
- address_space_config m_program_config;
- address_space_config m_io_config;
-
- address_space *m_program;
- direct_read_data *m_direct;
- address_space *m_io;
-
- uint32_t get_ea(uint16_t opcode);
- void do_add(uint16_t& addend1 , uint16_t addend2);
- uint16_t get_skip_addr_sc(uint16_t opcode , uint16_t& v , unsigned n);
- uint16_t get_skip_addr_sc(uint16_t opcode , uint32_t& v , unsigned n);
- void do_pw(uint16_t opcode);
- void check_for_interrupts(void);
- virtual void enter_isr(void);
- void handle_dma(void);
-
- uint16_t RIO(uint8_t pa , uint8_t ic);
- void WIO(uint8_t pa , uint8_t ic , uint16_t v);
+ address_space_config m_program_config;
+ address_space_config m_io_config;
+
+ address_space *m_program;
+ direct_read_data *m_direct;
+ address_space *m_io;
+
+ uint32_t get_ea(uint16_t opcode);
+ void do_add(uint16_t& addend1 , uint16_t addend2);
+ uint16_t get_skip_addr_sc(uint16_t opcode , uint16_t& v , unsigned n);
+ uint16_t get_skip_addr_sc(uint16_t opcode , uint32_t& v , unsigned n);
+ void do_pw(uint16_t opcode);
+ void check_for_interrupts();
+ virtual void enter_isr();
+ void handle_dma();
+
+ uint16_t RIO(uint8_t pa , uint8_t ic);
+ void WIO(uint8_t pa , uint8_t ic , uint16_t v);
};
class hp_5061_3001_cpu_device : public hp_hybrid_cpu_device
{
public:
- hp_5061_3001_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ hp_5061_3001_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_boot_mode_static(device_t &device, bool mode) { downcast<hp_5061_3001_cpu_device &>(device).m_boot_mode = mode; }
protected:
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual uint32_t execute_max_cycles() const override { return 237; } // FMP 15
-
- static uint8_t do_dec_shift_r(uint8_t d1 , uint64_t& mantissa);
- static uint8_t do_dec_shift_l(uint8_t d12 , uint64_t& mantissa);
- uint64_t get_ar1(void);
- void set_ar1(uint64_t v);
- uint64_t get_ar2(void) const;
- void set_ar2(uint64_t v);
- uint64_t do_mrxy(uint64_t ar);
- bool do_dec_add(bool carry_in , uint64_t& a , uint64_t b);
- void do_mpy(void);
-
- virtual uint16_t execute_no_bpc_ioc(uint16_t opcode) override;
- virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
- virtual uint32_t add_mae(aec_cases_t aec_case, uint16_t addr) override;
- virtual uint16_t read_non_common_reg(uint16_t addr) override;
- virtual void write_non_common_reg(uint16_t addr , uint16_t v) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual uint32_t execute_max_cycles() const override { return 237; } // FMP 15
+
+ static uint8_t do_dec_shift_r(uint8_t d1 , uint64_t& mantissa);
+ static uint8_t do_dec_shift_l(uint8_t d12 , uint64_t& mantissa);
+ uint64_t get_ar1();
+ void set_ar1(uint64_t v);
+ uint64_t get_ar2() const;
+ void set_ar2(uint64_t v);
+ uint64_t do_mrxy(uint64_t ar);
+ bool do_dec_add(bool carry_in , uint64_t& a , uint64_t b);
+ void do_mpy();
+
+ virtual uint16_t execute_no_bpc_ioc(uint16_t opcode) override;
+ virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
+ virtual uint32_t add_mae(aec_cases_t aec_case, uint16_t addr) override;
+ virtual uint16_t read_non_common_reg(uint16_t addr) override;
+ virtual void write_non_common_reg(uint16_t addr , uint16_t v) override;
private:
- bool m_boot_mode;
+ bool m_boot_mode;
- // Additional state of processor
- uint16_t m_reg_ar2[ 4 ]; // AR2 register
- uint16_t m_reg_se; // SE register (4 bits)
- uint16_t m_reg_r25; // R25 register
- uint16_t m_reg_r26; // R26 register
- uint16_t m_reg_r27; // R27 register
- uint16_t m_reg_aec[ HP_REG_R37_ADDR - HP_REG_R32_ADDR + 1 ]; // AEC registers R32-R37
+ // Additional state of processor
+ uint16_t m_reg_ar2[ 4 ]; // AR2 register
+ uint16_t m_reg_se; // SE register (4 bits)
+ uint16_t m_reg_r25; // R25 register
+ uint16_t m_reg_r26; // R26 register
+ uint16_t m_reg_r27; // R27 register
+ uint16_t m_reg_aec[ 37 - 32 + 1 ]; // AEC registers R32-R37
- virtual void enter_isr(void) override;
+ virtual void enter_isr() override;
};
class hp_5061_3011_cpu_device : public hp_hybrid_cpu_device
{
public:
- hp_5061_3011_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ hp_5061_3011_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
- virtual uint32_t execute_max_cycles() const override { return 25; }
- virtual uint16_t execute_no_bpc_ioc(uint16_t opcode) override;
- virtual uint32_t add_mae(aec_cases_t aec_case , uint16_t addr) override;
- virtual uint16_t read_non_common_reg(uint16_t addr) override;
- virtual void write_non_common_reg(uint16_t addr , uint16_t v) override;
+ virtual uint32_t execute_max_cycles() const override { return 25; }
+ virtual uint16_t execute_no_bpc_ioc(uint16_t opcode) override;
+ virtual uint32_t add_mae(aec_cases_t aec_case , uint16_t addr) override;
+ virtual uint16_t read_non_common_reg(uint16_t addr) override;
+ virtual void write_non_common_reg(uint16_t addr , uint16_t v) override;
};
-extern const device_type HP_5061_3001;
-extern const device_type HP_5061_3011;
+DECLARE_DEVICE_TYPE(HP_5061_3001, hp_5061_3001_cpu_device)
+DECLARE_DEVICE_TYPE(HP_5061_3011, hp_5061_3011_cpu_device)
-#endif /* _HPHYBRID_H_ */
+#endif // MAME_CPU_HPHYBRID_HPHYBRID_H
diff --git a/src/devices/cpu/hphybrid/hphybrid_dasm.cpp b/src/devices/cpu/hphybrid/hphybrid_dasm.cpp
index e825e31c36c..58d800a3722 100644
--- a/src/devices/cpu/hphybrid/hphybrid_dasm.cpp
+++ b/src/devices/cpu/hphybrid/hphybrid_dasm.cpp
@@ -5,8 +5,11 @@
// ********************************************************************************
#include "emu.h"
-#include "debugger.h"
#include "hphybrid.h"
+#include "debugger.h"
+
+#include "hphybrid_defs.h"
+
typedef void (*fn_dis_param)(std::ostream &stream , offs_t pc , uint16_t opcode , bool is_3001);
diff --git a/src/devices/cpu/hphybrid/hphybrid_defs.h b/src/devices/cpu/hphybrid/hphybrid_defs.h
new file mode 100644
index 00000000000..634a74b94a4
--- /dev/null
+++ b/src/devices/cpu/hphybrid/hphybrid_defs.h
@@ -0,0 +1,38 @@
+#ifndef MAME_CPU_HPHYBRID_HPHYBRID_DEFS_H
+#define MAME_CPU_HPHYBRID_HPHYBRID_DEFS_H
+
+// Addresses of memory mapped registers
+#define HP_REG_A_ADDR 0x0000
+#define HP_REG_B_ADDR 0x0001
+#define HP_REG_P_ADDR 0x0002
+#define HP_REG_R_ADDR 0x0003
+#define HP_REG_R4_ADDR 0x0004
+#define HP_REG_R5_ADDR 0x0005
+#define HP_REG_R6_ADDR 0x0006
+#define HP_REG_R7_ADDR 0x0007
+#define HP_REG_IV_ADDR 0x0008
+#define HP_REG_PA_ADDR 0x0009
+#define HP_REG_W_ADDR 0x000A
+#define HP_REG_DMAPA_ADDR 0x000B
+#define HP_REG_DMAMA_ADDR 0x000C
+#define HP_REG_DMAC_ADDR 0x000D
+#define HP_REG_C_ADDR 0x000e
+#define HP_REG_D_ADDR 0x000f
+#define HP_REG_AR2_ADDR 0x0010
+#define HP_REG_SE_ADDR 0x0014
+#define HP_REG_R25_ADDR 0x0015
+#define HP_REG_R26_ADDR 0x0016
+#define HP_REG_R27_ADDR 0x0017
+#define HP_REG_R32_ADDR 0x001a
+#define HP_REG_R33_ADDR 0x001b
+#define HP_REG_R34_ADDR 0x001c
+#define HP_REG_R35_ADDR 0x001d
+#define HP_REG_R36_ADDR 0x001e
+#define HP_REG_R37_ADDR 0x001f
+#define HP_REG_LAST_ADDR 0x001f
+#define HP_REG_AR1_ADDR 0xfff8
+
+#define HP_REG_IV_MASK 0xfff0
+#define HP_REG_PA_MASK 0x000f
+
+#endif // MAME_CPU_HPHYBRID_HPHYBRID_DEFS_H
diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp
index aeccd66818a..69ed56d46fc 100644
--- a/src/devices/cpu/i386/i386.cpp
+++ b/src/devices/cpu/i386/i386.cpp
@@ -18,45 +18,37 @@
*/
#include "emu.h"
+#include "i386.h"
+
#include "debugger.h"
#include "i386priv.h"
-#include "i386.h"
#include "debug/debugcpu.h"
/* seems to be defined on mingw-gcc */
#undef i386
-const device_type I386 = device_creator<i386_device>;
-const device_type I386SX = device_creator<i386SX_device>;
-const device_type I486 = device_creator<i486_device>;
-const device_type I486DX4 = device_creator<i486dx4_device>;
-const device_type PENTIUM = device_creator<pentium_device>;
-const device_type MEDIAGX = device_creator<mediagx_device>;
-const device_type PENTIUM_PRO = device_creator<pentium_pro_device>;
-const device_type PENTIUM_MMX = device_creator<pentium_mmx_device>;
-const device_type PENTIUM2 = device_creator<pentium2_device>;
-const device_type PENTIUM3 = device_creator<pentium3_device>;
-const device_type PENTIUM4 = device_creator<pentium4_device>;
+DEFINE_DEVICE_TYPE(I386, i386_device, "i386", "I386")
+DEFINE_DEVICE_TYPE(I386SX, i386sx_device, "i386sx", "I386SX")
+DEFINE_DEVICE_TYPE(I486, i486_device, "i486", "I486")
+DEFINE_DEVICE_TYPE(I486DX4, i486dx4_device, "i486dx4", "I486DX4")
+DEFINE_DEVICE_TYPE(PENTIUM, pentium_device, "pentium", "Pentium")
+DEFINE_DEVICE_TYPE(MEDIAGX, mediagx_device, "mediagx", "Cyrix MediaGX")
+DEFINE_DEVICE_TYPE(PENTIUM_PRO, pentium_pro_device, "pentium_pro", "Pentium Pro")
+DEFINE_DEVICE_TYPE(PENTIUM_MMX, pentium_mmx_device, "pentium_mmx", "Pentium MMX")
+DEFINE_DEVICE_TYPE(PENTIUM2, pentium2_device, "pentium2", "Pentium II")
+DEFINE_DEVICE_TYPE(PENTIUM3, pentium3_device, "pentium3", "Pentium III")
+DEFINE_DEVICE_TYPE(PENTIUM4, pentium4_device, "pentium4", "Pentium 4")
i386_device::i386_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, I386, "I386", tag, owner, clock, "i386", __FILE__)
- , device_vtlb_interface(mconfig, *this, AS_PROGRAM)
- , m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0)
- , m_io_config("io", ENDIANNESS_LITTLE, 32, 16, 0)
- , m_smiact(*this)
+ : i386_device(mconfig, I386, tag, owner, clock, 32, 32, 32)
{
- m_program_config.m_logaddr_width = 32;
- m_program_config.m_page_shift = 12;
-
- // 32 unified
- set_vtlb_dynamic_entries(32);
}
-i386_device::i386_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int program_data_width, int program_addr_width, int io_data_width)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+i386_device::i386_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_data_width, int program_addr_width, int io_data_width)
+ : cpu_device(mconfig, type, tag, owner, clock)
, device_vtlb_interface(mconfig, *this, AS_PROGRAM)
, m_program_config("program", ENDIANNESS_LITTLE, program_data_width, program_addr_width, 0)
, m_io_config("io", ENDIANNESS_LITTLE, io_data_width, 16, 0)
@@ -69,73 +61,71 @@ i386_device::i386_device(const machine_config &mconfig, device_type type, const
set_vtlb_dynamic_entries(32);
}
-i386SX_device::i386SX_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i386_device(mconfig, I386SX, "I386SX", tag, owner, clock, "i386sx", __FILE__, 16, 24, 16)
+i386sx_device::i386sx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : i386_device(mconfig, I386SX, tag, owner, clock, 16, 24, 16)
{
}
i486_device::i486_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i386_device(mconfig, I486, "I486", tag, owner, clock, "i486", __FILE__)
+ : i486_device(mconfig, I486, tag, owner, clock)
{
}
-i486_device::i486_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : i386_device(mconfig, type, name, tag, owner, clock, shortname, source)
+i486_device::i486_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : i386_device(mconfig, type, tag, owner, clock, 32, 32, 32)
{
}
i486dx4_device::i486dx4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i486_device(mconfig, I486DX4, "I486DX4", tag, owner, clock, "i486dx4", __FILE__)
+ : i486_device(mconfig, I486DX4, tag, owner, clock)
{
}
pentium_device::pentium_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i386_device(mconfig, PENTIUM, "PENTIUM", tag, owner, clock, "pentium", __FILE__)
+ : pentium_device(mconfig, PENTIUM, tag, owner, clock)
{
- // 64 dtlb small, 8 dtlb large, 32 itlb
- set_vtlb_dynamic_entries(96);
}
-pentium_device::pentium_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : i386_device(mconfig, type, name, tag, owner, clock, shortname, source)
+pentium_device::pentium_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : i386_device(mconfig, type, tag, owner, clock, 32, 32, 32)
{
// 64 dtlb small, 8 dtlb large, 32 itlb
set_vtlb_dynamic_entries(96);
}
mediagx_device::mediagx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i386_device(mconfig, MEDIAGX, "MEDIAGX", tag, owner, clock, "mediagx", __FILE__)
+ : i386_device(mconfig, MEDIAGX, tag, owner, clock, 32, 32, 32)
{
}
pentium_pro_device::pentium_pro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pentium_device(mconfig, PENTIUM_PRO, "Pentium Pro", tag, owner, clock, "pentium_pro", __FILE__)
+ : pentium_device(mconfig, PENTIUM_PRO, tag, owner, clock)
{
}
pentium_mmx_device::pentium_mmx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pentium_device(mconfig, PENTIUM_MMX, "Pentium MMX", tag, owner, clock, "pentium_mmx", __FILE__)
+ : pentium_device(mconfig, PENTIUM_MMX, tag, owner, clock)
{
// 64 dtlb small, 8 dtlb large, 32 itlb small, 2 itlb large
set_vtlb_dynamic_entries(96);
}
pentium2_device::pentium2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pentium_device(mconfig, PENTIUM2, "Pentium II", tag, owner, clock, "pentium2", __FILE__)
+ : pentium_device(mconfig, PENTIUM2, tag, owner, clock)
{
// 64 dtlb small, 8 dtlb large, 32 itlb small, 2 itlb large
set_vtlb_dynamic_entries(96);
}
pentium3_device::pentium3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pentium_device(mconfig, PENTIUM3, "Pentium III", tag, owner, clock, "pentium3", __FILE__)
+ : pentium_device(mconfig, PENTIUM3, tag, owner, clock)
{
// 64 dtlb small, 8 dtlb large, 32 itlb small, 2 itlb large
set_vtlb_dynamic_entries(96);
}
pentium4_device::pentium4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pentium_device(mconfig, PENTIUM4, "Pentium 4", tag, owner, clock, "pentium4", __FILE__)
+ : pentium_device(mconfig, PENTIUM4, tag, owner, clock)
{
// 128 dtlb, 64 itlb
set_vtlb_dynamic_entries(196);
diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h
index 6f2397a6f38..401619e9602 100644
--- a/src/devices/cpu/i386/i386.h
+++ b/src/devices/cpu/i386/i386.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Ville Linde, Barry Rodewald, Carl, Philip Bennett
-#pragma once
+#ifndef MAME_CPU_I386_I386_H
+#define MAME_CPU_I386_I386_H
-#ifndef __I386INTF_H__
-#define __I386INTF_H__
+#pragma once
// SoftFloat 2 lacks an include guard
#ifndef softfloat_h
@@ -34,10 +34,9 @@ class i386_device : public cpu_device, public device_vtlb_interface
public:
// construction/destruction
i386_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- i386_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int program_data_width=32, int program_addr_width=32, int io_data_width=32);
// static configuration helpers
- template<class _Object> static devcb_base &set_smiact(device_t &device, _Object object) { return downcast<i386_device &>(device).m_smiact.set_callback(object); }
+ template <class Object> static devcb_base &set_smiact(device_t &device, Object &&cb) { return downcast<i386_device &>(device).m_smiact.set_callback(std::forward<Object>(cb)); }
uint64_t debug_segbase(symbol_table &table, int params, const uint64_t *param);
uint64_t debug_seglimit(symbol_table &table, int params, const uint64_t *param);
@@ -45,6 +44,8 @@ public:
uint64_t debug_virttophys(symbol_table &table, int params, const uint64_t *param);
protected:
+ i386_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_data_width, int program_addr_width, int io_data_width);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -58,7 +59,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_IO) ? &m_io_config : nullptr; }
virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override;
// device_state_interface overrides
@@ -78,68 +79,68 @@ protected:
std::unique_ptr<uint8_t[]> cycle_table_pm[X86_NUM_CPUS];
-union I386_GPR {
- uint32_t d[8];
- uint16_t w[16];
- uint8_t b[32];
-};
+ union I386_GPR {
+ uint32_t d[8];
+ uint16_t w[16];
+ uint8_t b[32];
+ };
-struct I386_SREG {
- uint16_t selector;
- uint16_t flags;
- uint32_t base;
- uint32_t limit;
- int d; // Operand size
- bool valid;
-};
+ struct I386_SREG {
+ uint16_t selector;
+ uint16_t flags;
+ uint32_t base;
+ uint32_t limit;
+ int d; // Operand size
+ bool valid;
+ };
-struct I386_SYS_TABLE {
- uint32_t base;
- uint16_t limit;
-};
+ struct I386_SYS_TABLE {
+ uint32_t base;
+ uint16_t limit;
+ };
-struct I386_SEG_DESC {
- uint16_t segment;
- uint16_t flags;
- uint32_t base;
- uint32_t limit;
-};
+ struct I386_SEG_DESC {
+ uint16_t segment;
+ uint16_t flags;
+ uint32_t base;
+ uint32_t limit;
+ };
-union XMM_REG {
- uint8_t b[16];
- uint16_t w[8];
- uint32_t d[4];
- uint64_t q[2];
- int8_t c[16];
- int16_t s[8];
- int32_t i[4];
- int64_t l[2];
- float f[4];
- double f64[2];
-};
+ union XMM_REG {
+ uint8_t b[16];
+ uint16_t w[8];
+ uint32_t d[4];
+ uint64_t q[2];
+ int8_t c[16];
+ int16_t s[8];
+ int32_t i[4];
+ int64_t l[2];
+ float f[4];
+ double f64[2];
+ };
-union MMX_REG {
- uint32_t d[2];
- int32_t i[2];
- uint16_t w[4];
- int16_t s[4];
- uint8_t b[8];
- int8_t c[8];
- float f[2];
- uint64_t q;
- int64_t l;
-};
+ union MMX_REG {
+ uint32_t d[2];
+ int32_t i[2];
+ uint16_t w[4];
+ int16_t s[4];
+ uint8_t b[8];
+ int8_t c[8];
+ float f[2];
+ uint64_t q;
+ int64_t l;
+ };
-struct I386_CALL_GATE
-{
- uint16_t segment;
- uint16_t selector;
- uint32_t offset;
- uint8_t ar; // access rights
- uint8_t dpl;
- uint8_t dword_count;
- uint8_t present;
-};
+ struct I386_CALL_GATE
+ {
+ uint16_t segment;
+ uint16_t selector;
+ uint32_t offset;
+ uint8_t ar; // access rights
+ uint8_t dpl;
+ uint8_t dword_count;
+ uint8_t present;
+ };
typedef void (i386_device::*i386_modrm_func)(uint8_t modrm);
typedef void (i386_device::*i386_op_func)();
@@ -1424,11 +1425,11 @@ struct I386_CALL_GATE
};
-class i386SX_device : public i386_device
+class i386sx_device : public i386_device
{
public:
// construction/destruction
- i386SX_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ i386sx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
@@ -1437,9 +1438,10 @@ class i486_device : public i386_device
public:
// construction/destruction
i486_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- i486_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ i486_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
};
@@ -1460,9 +1462,10 @@ class pentium_device : public i386_device
public:
// construction/destruction
pentium_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- pentium_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ pentium_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void execute_set_input(int inputnum, int state) override;
virtual void device_start() override;
virtual void device_reset() override;
@@ -1541,17 +1544,16 @@ protected:
};
-extern const device_type I386;
-extern const device_type I386SX;
-extern const device_type I486;
-extern const device_type I486DX4;
-extern const device_type PENTIUM;
-extern const device_type MEDIAGX;
-extern const device_type PENTIUM_PRO;
-extern const device_type PENTIUM_MMX;
-extern const device_type PENTIUM2;
-extern const device_type PENTIUM3;
-extern const device_type PENTIUM4;
-
+DECLARE_DEVICE_TYPE(I386, i386_device)
+DECLARE_DEVICE_TYPE(I386SX, i386sx_device)
+DECLARE_DEVICE_TYPE(I486, i486_device)
+DECLARE_DEVICE_TYPE(I486DX4, i486dx4_device)
+DECLARE_DEVICE_TYPE(PENTIUM, pentium_device)
+DECLARE_DEVICE_TYPE(MEDIAGX, mediagx_device)
+DECLARE_DEVICE_TYPE(PENTIUM_PRO, pentium_pro_device)
+DECLARE_DEVICE_TYPE(PENTIUM_MMX, pentium_mmx_device)
+DECLARE_DEVICE_TYPE(PENTIUM2, pentium2_device)
+DECLARE_DEVICE_TYPE(PENTIUM3, pentium3_device)
+DECLARE_DEVICE_TYPE(PENTIUM4, pentium4_device)
-#endif /* __I386INTF_H__ */
+#endif // MAME_CPU_I386_I386_H
diff --git a/src/devices/cpu/i4004/i4004.cpp b/src/devices/cpu/i4004/i4004.cpp
index 58fce33bdc4..782e59d6d84 100644
--- a/src/devices/cpu/i4004/i4004.cpp
+++ b/src/devices/cpu/i4004/i4004.cpp
@@ -8,8 +8,8 @@
*
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "i4004.h"
+#include "debugger.h"
static const uint8_t kbp_table[] = { 0x00,0x01,0x02,0x0f,0x03,0x0f,0x0f,0x0f,0x04,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f };
@@ -21,11 +21,11 @@ static const uint8_t kbp_table[] = { 0x00,0x01,0x02,0x0f,0x03,0x0f,0x0f,0x0f,0x0
#define GET_PC (m_ADDR[m_pc_pos])
-const device_type I4004 = device_creator<i4004_cpu_device>;
+DEFINE_DEVICE_TYPE(I4004, i4004_cpu_device, "i4004", "Intel 4004")
i4004_cpu_device::i4004_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, I4004, "Intel I4004", tag, owner, clock, "i4004", __FILE__)
+ : cpu_device(mconfig, I4004, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 12, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 6, 0)
, m_data_config("data", ENDIANNESS_LITTLE, 8, 12, 0), m_A(0), m_C(0), m_TEST(0), m_flags(0), m_program(nullptr), m_direct(nullptr), m_data(nullptr), m_io(nullptr), m_icount(0), m_pc_pos(0), m_addr_mask(0)
diff --git a/src/devices/cpu/i4004/i4004.h b/src/devices/cpu/i4004/i4004.h
index 3e90ba466b8..42dd51cd0ca 100644
--- a/src/devices/cpu/i4004/i4004.h
+++ b/src/devices/cpu/i4004/i4004.h
@@ -1,8 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
-#ifndef __I4004_H__
-#define __I4004_H__
+#ifndef MAME_CPU_I4004_I4004_H
+#define MAME_CPU_I4004_I4004_H
+#pragma once
/***************************************************************************
@@ -101,7 +102,6 @@ protected:
};
-extern const device_type I4004;
+DECLARE_DEVICE_TYPE(I4004, i4004_cpu_device)
-
-#endif
+#endif // MAME_CPU_I4004_I4004_H
diff --git a/src/devices/cpu/i8008/i8008.cpp b/src/devices/cpu/i8008/i8008.cpp
index 18bf62d4f46..f5e6aa4b62e 100644
--- a/src/devices/cpu/i8008/i8008.cpp
+++ b/src/devices/cpu/i8008/i8008.cpp
@@ -8,8 +8,8 @@
*
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "i8008.h"
+#include "debugger.h"
//**************************************************************************
// MACROS
@@ -24,7 +24,7 @@
//**************************************************************************
// device type definition
-const device_type I8008 = device_creator<i8008_device>;
+DEFINE_DEVICE_TYPE(I8008, i8008_device, "i8008", "Intel 8008")
//**************************************************************************
// DEVICE INTERFACE
@@ -34,11 +34,11 @@ const device_type I8008 = device_creator<i8008_device>;
// i8008_device - constructor
//-------------------------------------------------
i8008_device::i8008_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, I8008, "i8008", tag, owner, clock, "i8008", __FILE__),
- m_program_config("program", ENDIANNESS_LITTLE, 8, 14),
- m_io_config("io", ENDIANNESS_LITTLE, 8, 8),
- m_program(nullptr),
- m_direct(nullptr)
+ : cpu_device(mconfig, I8008, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 8, 14)
+ , m_io_config("io", ENDIANNESS_LITTLE, 8, 8)
+ , m_program(nullptr)
+ , m_direct(nullptr)
{
// set our instruction counter
m_icountptr = &m_icount;
diff --git a/src/devices/cpu/i8008/i8008.h b/src/devices/cpu/i8008/i8008.h
index 7f45e3dbb52..60b2414d61d 100644
--- a/src/devices/cpu/i8008/i8008.h
+++ b/src/devices/cpu/i8008/i8008.h
@@ -1,25 +1,14 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
-#ifndef __I8008_H__
-#define __I8008_H__
+#ifndef MAME_CPU_I8008_I8008_H
+#define MAME_CPU_I8008_I8008_H
-//**************************************************************************
-// ENUMERATIONS
-//**************************************************************************
-
-enum
-{
- I8008_PC,
- I8008_A,I8008_B,I8008_C,I8008_D,I8008_E,I8008_H,I8008_L,
- I8008_ADDR1,I8008_ADDR2,I8008_ADDR3,I8008_ADDR4,I8008_ADDR5,I8008_ADDR6,I8008_ADDR7,I8008_ADDR8
-};
+#pragma once
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class i8008_device;
-
// ======================> asap_device
class i8008_device : public cpu_device
{
@@ -28,6 +17,13 @@ public:
i8008_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
+ enum
+ {
+ I8008_PC,
+ I8008_A,I8008_B,I8008_C,I8008_D,I8008_E,I8008_H,I8008_L,
+ I8008_ADDR1,I8008_ADDR2,I8008_ADDR3,I8008_ADDR4,I8008_ADDR5,I8008_ADDR6,I8008_ADDR7,I8008_ADDR8
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -94,6 +90,6 @@ protected:
};
// device type definition
-extern const device_type I8008;
+DECLARE_DEVICE_TYPE(I8008, i8008_device)
-#endif
+#endif // MAME_CPU_I8008_I8008_H
diff --git a/src/devices/cpu/i8085/i8085.cpp b/src/devices/cpu/i8085/i8085.cpp
index 342bf445d5a..23362ba1242 100644
--- a/src/devices/cpu/i8085/i8085.cpp
+++ b/src/devices/cpu/i8085/i8085.cpp
@@ -106,8 +106,7 @@
#include "i8085cpu.h"
#define VERBOSE 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+#include "logmacro.h"
#define CPUTYPE_8080 0
#define CPUTYPE_8085 1
@@ -177,26 +176,19 @@ M_CALL 8085 11 +7(18) -2(9)
*/
-const device_type I8080 = device_creator<i8080_cpu_device>;
-const device_type I8080A = device_creator<i8080a_cpu_device>;
-const device_type I8085A = device_creator<i8085a_cpu_device>;
+DEFINE_DEVICE_TYPE(I8080, i8080_cpu_device, "i8080", "8080")
+DEFINE_DEVICE_TYPE(I8080A, i8080a_cpu_device, "i8080a", "8080A")
+DEFINE_DEVICE_TYPE(I8085A, i8085a_cpu_device, "i8085a", "8085A")
i8085a_cpu_device::i8085a_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, I8085A, "8085A", tag, owner, clock, "i8085a", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0)
- , m_io_config("io", ENDIANNESS_LITTLE, 8, 8, 0)
- , m_out_status_func(*this)
- , m_out_inte_func(*this)
- , m_in_sid_func(*this)
- , m_out_sod_func(*this)
- , m_cputype(CPUTYPE_8085)
+ : i8085a_cpu_device(mconfig, I8085A, tag, owner, clock, CPUTYPE_8085)
{
}
-i8085a_cpu_device::i8085a_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int cputype)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+i8085a_cpu_device::i8085a_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cputype)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 8, 0)
, m_out_status_func(*this)
@@ -209,13 +201,13 @@ i8085a_cpu_device::i8085a_cpu_device(const machine_config &mconfig, device_type
i8080_cpu_device::i8080_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8085a_cpu_device(mconfig, I8080, "8080", tag, owner, clock, "i8080", __FILE__, CPUTYPE_8080)
+ : i8085a_cpu_device(mconfig, I8080, tag, owner, clock, CPUTYPE_8080)
{
}
i8080a_cpu_device::i8080a_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8085a_cpu_device(mconfig, I8080A, "8080A", tag, owner, clock, "i8080a", __FILE__, CPUTYPE_8080)
+ : i8085a_cpu_device(mconfig, I8080A, tag, owner, clock, CPUTYPE_8080)
{
}
@@ -429,7 +421,7 @@ void i8085a_cpu_device::check_for_interrupts()
break;
default:
- LOG(("i8085 take int $%02x\n", vector));
+ LOG("i8085 take int $%02x\n", vector);
execute_one(vector & 0xff);
break;
}
diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h
index 8f7822057b0..96f49d9e107 100644
--- a/src/devices/cpu/i8085/i8085.h
+++ b/src/devices/cpu/i8085/i8085.h
@@ -1,36 +1,19 @@
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller, hap
-#ifndef __I8085_H__
-#define __I8085_H__
+#ifndef MAME_CPU_I8085_I8085_H
+#define MAME_CPU_I8085_I8085_H
/***************************************************************************
CONSTANTS
***************************************************************************/
-enum
-{
- I8085_PC, I8085_SP, I8085_AF, I8085_BC, I8085_DE, I8085_HL,
- I8085_A, I8085_B, I8085_C, I8085_D, I8085_E, I8085_F, I8085_H, I8085_L,
- I8085_STATUS, I8085_SOD, I8085_SID, I8085_INTE,
- I8085_HALT, I8085_IM
-};
-
#define I8085_INTR_LINE 0
#define I8085_RST55_LINE 1
#define I8085_RST65_LINE 2
#define I8085_RST75_LINE 3
-#define I8085_STATUS_INTA 0x01
-#define I8085_STATUS_WO 0x02
-#define I8085_STATUS_STACK 0x04
-#define I8085_STATUS_HLTA 0x08
-#define I8085_STATUS_OUT 0x10
-#define I8085_STATUS_M1 0x20
-#define I8085_STATUS_INP 0x40
-#define I8085_STATUS_MEMR 0x80
-
// STATUS changed callback
#define MCFG_I8085A_STATUS(_devcb) \
@@ -55,21 +38,42 @@ enum
i8085a_cpu_device::static_set_clk_out(*device, clock_update_delegate(&_class::_func, #_class "::" _func, owner));
-class i8085a_cpu_device : public cpu_device
+class i8085a_cpu_device : public cpu_device
{
public:
+ // FIXME: public because drivers/altair.cpp, drivers/ipc.cpp and drivers/unior.cpp set initial PC through state interface
+ // should fix boot vector loading in these drivers
+ // machine/lviv.cpp and machine/poly88.cpp also access registers via state interface when handling snapshot files
+ enum
+ {
+ I8085_PC, I8085_SP, I8085_AF, I8085_BC, I8085_DE, I8085_HL,
+ I8085_A, I8085_B, I8085_C, I8085_D, I8085_E, I8085_F, I8085_H, I8085_L,
+ I8085_STATUS, I8085_SOD, I8085_SID, I8085_INTE,
+ I8085_HALT, I8085_IM
+ };
+
+ static constexpr uint8_t STATUS_INTA = 0x01;
+ static constexpr uint8_t STATUS_WO = 0x02;
+ static constexpr uint8_t STATUS_STACK = 0x04;
+ static constexpr uint8_t STATUS_HLTA = 0x08;
+ static constexpr uint8_t STATUS_OUT = 0x10;
+ static constexpr uint8_t STATUS_M1 = 0x20;
+ static constexpr uint8_t STATUS_INP = 0x40;
+ static constexpr uint8_t STATUS_MEMR = 0x80;
+
// construction/destruction
i8085a_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- i8085a_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int cputype);
// static configuration helpers
- template<class _Object> static devcb_base &set_out_status_func(device_t &device, _Object object) { return downcast<i8085a_cpu_device &>(device).m_out_status_func.set_callback(object); }
- template<class _Object> static devcb_base &set_out_inte_func(device_t &device, _Object object) { return downcast<i8085a_cpu_device &>(device).m_out_inte_func.set_callback(object); }
- template<class _Object> static devcb_base &set_in_sid_func(device_t &device, _Object object) { return downcast<i8085a_cpu_device &>(device).m_in_sid_func.set_callback(object); }
- template<class _Object> static devcb_base &set_out_sod_func(device_t &device, _Object object) { return downcast<i8085a_cpu_device &>(device).m_out_sod_func.set_callback(object); }
+ template <class Object> static devcb_base &set_out_status_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_status_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_inte_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_inte_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_sid_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_in_sid_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_sod_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_sod_func.set_callback(std::forward<Object>(cb)); }
static void static_set_clk_out(device_t &device, clock_update_delegate &&clk_out) { downcast<i8085a_cpu_device &>(device).m_clk_out_func = std::move(clk_out); }
protected:
+ i8085a_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cputype);
+
// device-level overrides
virtual void device_config_complete() override;
virtual void device_clock_changed() override;
@@ -180,8 +184,8 @@ protected:
};
-extern const device_type I8080;
-extern const device_type I8080A;
-extern const device_type I8085A;
+DECLARE_DEVICE_TYPE(I8080, i8080_cpu_device)
+DECLARE_DEVICE_TYPE(I8080A, i8080a_cpu_device)
+DECLARE_DEVICE_TYPE(I8085A, i8085a_cpu_device)
-#endif
+#endif // MAME_CPU_I8085_I8085_H
diff --git a/src/devices/cpu/i8089/i8089.cpp b/src/devices/cpu/i8089/i8089.cpp
index 9b1ada7b1f6..720110b890d 100644
--- a/src/devices/cpu/i8089/i8089.cpp
+++ b/src/devices/cpu/i8089/i8089.cpp
@@ -22,7 +22,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type I8089 = device_creator<i8089_device>;
+DEFINE_DEVICE_TYPE(I8089, i8089_device, "i8089", "I8089")
//**************************************************************************
@@ -34,7 +34,7 @@ const device_type I8089 = device_creator<i8089_device>;
//-------------------------------------------------
i8089_device::i8089_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- cpu_device(mconfig, I8089, "I8089", tag, owner, clock, "i8089", __FILE__),
+ cpu_device(mconfig, I8089, tag, owner, clock),
m_icount(0),
m_ch1(*this, "1"),
m_ch2(*this, "2"),
@@ -68,29 +68,29 @@ void i8089_device::device_start()
state_add(SCB, "SCB", m_scb).mask(0xfffff);
state_add(SOC, "SOC", m_soc).mask(0x03).formatstr("%2s");
state_add_divider(DIVIDER1);
- state_add(CH1_GA, "CH1 GA", m_ch1->m_r[i8089_channel::GA].w).mask(0xfffff).formatstr("%8s");
- state_add(CH1_GB, "CH1 GB", m_ch1->m_r[i8089_channel::GB].w).mask(0xfffff).formatstr("%8s");
- state_add(CH1_GC, "CH1 GC", m_ch1->m_r[i8089_channel::GC].w).mask(0xfffff).formatstr("%8s");
- state_add(CH1_TP, "CH1 TP", m_ch1->m_r[i8089_channel::TP].w).mask(0xfffff).formatstr("%8s");
- state_add(CH1_BC, "CH1 BC", m_ch1->m_r[i8089_channel::BC].w).mask(0xffff);
- state_add(CH1_IX, "CH1 IX", m_ch1->m_r[i8089_channel::IX].w).mask(0xffff);
- state_add(CH1_CC, "CH1 CC", m_ch1->m_r[i8089_channel::CC].w).mask(0xffff);
- state_add(CH1_MC, "CH1 MC", m_ch1->m_r[i8089_channel::MC].w).mask(0xffff);
- state_add(CH1_CP, "CH1 CP", m_ch1->m_r[i8089_channel::CP].w).mask(0xfffff);
- state_add(CH1_PP, "CH1 PP", m_ch1->m_r[i8089_channel::PP].w).mask(0xfffff);
- state_add(CH1_PSW, "CH1 PSW", m_ch1->m_r[i8089_channel::PSW].w).callimport().callexport().formatstr("%12s");
+ state_add(CH1_GA, "CH1 GA", m_ch1->m_r[i8089_channel_device::GA].w).mask(0xfffff).formatstr("%8s");
+ state_add(CH1_GB, "CH1 GB", m_ch1->m_r[i8089_channel_device::GB].w).mask(0xfffff).formatstr("%8s");
+ state_add(CH1_GC, "CH1 GC", m_ch1->m_r[i8089_channel_device::GC].w).mask(0xfffff).formatstr("%8s");
+ state_add(CH1_TP, "CH1 TP", m_ch1->m_r[i8089_channel_device::TP].w).mask(0xfffff).formatstr("%8s");
+ state_add(CH1_BC, "CH1 BC", m_ch1->m_r[i8089_channel_device::BC].w).mask(0xffff);
+ state_add(CH1_IX, "CH1 IX", m_ch1->m_r[i8089_channel_device::IX].w).mask(0xffff);
+ state_add(CH1_CC, "CH1 CC", m_ch1->m_r[i8089_channel_device::CC].w).mask(0xffff);
+ state_add(CH1_MC, "CH1 MC", m_ch1->m_r[i8089_channel_device::MC].w).mask(0xffff);
+ state_add(CH1_CP, "CH1 CP", m_ch1->m_r[i8089_channel_device::CP].w).mask(0xfffff);
+ state_add(CH1_PP, "CH1 PP", m_ch1->m_r[i8089_channel_device::PP].w).mask(0xfffff);
+ state_add(CH1_PSW, "CH1 PSW", m_ch1->m_r[i8089_channel_device::PSW].w).callimport().callexport().formatstr("%12s");
state_add_divider(DIVIDER2);
- state_add(CH2_GA, "CH2 GA", m_ch2->m_r[i8089_channel::GA].w).mask(0xfffff).formatstr("%8s");
- state_add(CH2_GB, "CH2 GB", m_ch2->m_r[i8089_channel::GB].w).mask(0xfffff).formatstr("%8s");
- state_add(CH2_GC, "CH2 GC", m_ch2->m_r[i8089_channel::GC].w).mask(0xfffff).formatstr("%8s");
- state_add(CH2_TP, "CH2 TP", m_ch2->m_r[i8089_channel::TP].w).mask(0xfffff).formatstr("%8s");
- state_add(CH2_BC, "CH2 BC", m_ch2->m_r[i8089_channel::BC].w).mask(0xffff);
- state_add(CH2_IX, "CH2 IX", m_ch2->m_r[i8089_channel::IX].w).mask(0xffff);
- state_add(CH2_CC, "CH2 CC", m_ch2->m_r[i8089_channel::CC].w).mask(0xffff);
- state_add(CH2_MC, "CH2 MC", m_ch2->m_r[i8089_channel::MC].w).mask(0xffff);
- state_add(CH2_CP, "CH2 CP", m_ch2->m_r[i8089_channel::CP].w).mask(0xfffff);
- state_add(CH2_PP, "CH2 PP", m_ch2->m_r[i8089_channel::PP].w).mask(0xfffff);
- state_add(CH2_PSW, "CH2 PSW", m_ch2->m_r[i8089_channel::PSW].w).callimport().callexport().formatstr("%12s");
+ state_add(CH2_GA, "CH2 GA", m_ch2->m_r[i8089_channel_device::GA].w).mask(0xfffff).formatstr("%8s");
+ state_add(CH2_GB, "CH2 GB", m_ch2->m_r[i8089_channel_device::GB].w).mask(0xfffff).formatstr("%8s");
+ state_add(CH2_GC, "CH2 GC", m_ch2->m_r[i8089_channel_device::GC].w).mask(0xfffff).formatstr("%8s");
+ state_add(CH2_TP, "CH2 TP", m_ch2->m_r[i8089_channel_device::TP].w).mask(0xfffff).formatstr("%8s");
+ state_add(CH2_BC, "CH2 BC", m_ch2->m_r[i8089_channel_device::BC].w).mask(0xffff);
+ state_add(CH2_IX, "CH2 IX", m_ch2->m_r[i8089_channel_device::IX].w).mask(0xffff);
+ state_add(CH2_CC, "CH2 CC", m_ch2->m_r[i8089_channel_device::CC].w).mask(0xffff);
+ state_add(CH2_MC, "CH2 MC", m_ch2->m_r[i8089_channel_device::MC].w).mask(0xffff);
+ state_add(CH2_CP, "CH2 CP", m_ch2->m_r[i8089_channel_device::CP].w).mask(0xfffff);
+ state_add(CH2_PP, "CH2 PP", m_ch2->m_r[i8089_channel_device::PP].w).mask(0xfffff);
+ state_add(CH2_PSW, "CH2 PSW", m_ch2->m_r[i8089_channel_device::PSW].w).callimport().callexport().formatstr("%12s");
state_add(STATE_GENPC, "GENPC", m_current_tp).mask(0xfffff).noshow();
state_add(STATE_GENPCBASE, "CURPC", m_current_tp).mask(0xfffff).noshow();
@@ -162,7 +162,7 @@ offs_t i8089_device::disasm_disassemble(std::ostream &stream, offs_t pc, const u
void i8089_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
- const i8089_channel *ch = m_ch1;
+ const i8089_channel_device *ch = m_ch1;
if (entry.index() >= CH2_GA && entry.index() <= CH2_PSW)
ch = m_ch2;
@@ -177,31 +177,31 @@ void i8089_device::state_string_export(const device_state_entry &entry, std::str
break;
case CH1_GA:
case CH2_GA:
- str = string_format("%d %05X", ch->m_r[i8089_channel::GA].t & 1, ch->m_r[i8089_channel::GA].w);
+ str = string_format("%d %05X", ch->m_r[i8089_channel_device::GA].t & 1, ch->m_r[i8089_channel_device::GA].w);
break;
case CH1_GB:
case CH2_GB:
- str = string_format("%d %05X", ch->m_r[i8089_channel::GB].t & 1, ch->m_r[i8089_channel::GB].w);
+ str = string_format("%d %05X", ch->m_r[i8089_channel_device::GB].t & 1, ch->m_r[i8089_channel_device::GB].w);
break;
case CH1_GC:
case CH2_GC:
- str = string_format("%d %05X", ch->m_r[i8089_channel::GC].t & 1, ch->m_r[i8089_channel::GC].w);
+ str = string_format("%d %05X", ch->m_r[i8089_channel_device::GC].t & 1, ch->m_r[i8089_channel_device::GC].w);
break;
case CH1_TP:
case CH2_TP:
- str = string_format("%d %05X", ch->m_r[i8089_channel::TP].t & 1, ch->m_r[i8089_channel::TP].w);
+ str = string_format("%d %05X", ch->m_r[i8089_channel_device::TP].t & 1, ch->m_r[i8089_channel_device::TP].w);
break;
case CH1_PSW:
case CH2_PSW:
str = string_format("%c%s%c%s%s%s%c%c",
- BIT(ch->m_r[i8089_channel::PSW].w, 7) ? 'P':'.',
- BIT(ch->m_r[i8089_channel::PSW].w, 6) ? "XF":"..",
- BIT(ch->m_r[i8089_channel::PSW].w, 5) ? 'B':'.',
- BIT(ch->m_r[i8089_channel::PSW].w, 4) ? "IS":"..",
- BIT(ch->m_r[i8089_channel::PSW].w, 3) ? "IC":"..",
- BIT(ch->m_r[i8089_channel::PSW].w, 2) ? "TB":"..",
- BIT(ch->m_r[i8089_channel::PSW].w, 1) ? 'S':'.',
- BIT(ch->m_r[i8089_channel::PSW].w, 0) ? 'D':'.');
+ BIT(ch->m_r[i8089_channel_device::PSW].w, 7) ? 'P':'.',
+ BIT(ch->m_r[i8089_channel_device::PSW].w, 6) ? "XF":"..",
+ BIT(ch->m_r[i8089_channel_device::PSW].w, 5) ? 'B':'.',
+ BIT(ch->m_r[i8089_channel_device::PSW].w, 4) ? "IS":"..",
+ BIT(ch->m_r[i8089_channel_device::PSW].w, 3) ? "IC":"..",
+ BIT(ch->m_r[i8089_channel_device::PSW].w, 2) ? "TB":"..",
+ BIT(ch->m_r[i8089_channel_device::PSW].w, 1) ? 'S':'.',
+ BIT(ch->m_r[i8089_channel_device::PSW].w, 0) ? 'D':'.');
break;
}
}
@@ -258,8 +258,8 @@ void i8089_device::initialize()
offs_t cb_address = ((cb_segment << 4) + cb_offset) & 0x0fffff;
// initialize channels
- m_ch1->set_reg(i8089_channel::CP, cb_address);
- m_ch2->set_reg(i8089_channel::CP, cb_address + 8);
+ m_ch1->set_reg(i8089_channel_device::CP, cb_address);
+ m_ch2->set_reg(i8089_channel_device::CP, cb_address + 8);
// clear busy
uint16_t ccw = read_word(0, cb_address);
diff --git a/src/devices/cpu/i8089/i8089.h b/src/devices/cpu/i8089/i8089.h
index 5f69c0b42e7..4e931b1a857 100644
--- a/src/devices/cpu/i8089/i8089.h
+++ b/src/devices/cpu/i8089/i8089.h
@@ -6,12 +6,10 @@
***************************************************************************/
-#pragma once
-
-#ifndef __I8089_H__
-#define __I8089_H__
+#ifndef MAME_CPU_I8089_I8089_H
+#define MAME_CPU_I8089_I8089_H
-#include "i8089_channel.h"
+#pragma once
//**************************************************************************
@@ -33,21 +31,21 @@
//**************************************************************************
// forward declaration
-class i8089_channel;
+class i8089_channel_device;
// ======================> i8089_device
class i8089_device : public cpu_device
{
- friend class i8089_channel;
+ friend class i8089_channel_device;
public:
// construction/destruction
i8089_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template<class _sintr1> devcb_base &set_sintr1_callback(_sintr1 sintr1) { return m_write_sintr1.set_callback(sintr1); }
- template<class _sintr2> devcb_base &set_sintr2_callback(_sintr2 sintr2) { return m_write_sintr2.set_callback(sintr2); }
+ template <class Object> devcb_base &set_sintr1_callback(Object &&sintr1) { return m_write_sintr1.set_callback(std::forward<Object>(sintr1)); }
+ template <class Object> devcb_base &set_sintr2_callback(Object &&sintr2) { return m_write_sintr2.set_callback(std::forward<Object>(sintr2)); }
// static configuration helpers
static void set_databus_width(device_t &device, uint8_t databus_width) { downcast<i8089_device &>(device).m_databus_width = databus_width; }
@@ -76,7 +74,7 @@ protected:
int m_icount;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
address_space_config m_program_config;
address_space_config m_io_config;
@@ -102,8 +100,8 @@ private:
void write_byte(bool space, offs_t address, uint8_t data);
void write_word(bool space, offs_t address, uint16_t data);
- required_device<i8089_channel> m_ch1;
- required_device<i8089_channel> m_ch2;
+ required_device<i8089_channel_device> m_ch1;
+ required_device<i8089_channel_device> m_ch2;
devcb_write_line m_write_sintr1;
devcb_write_line m_write_sintr2;
@@ -151,7 +149,7 @@ private:
// device type definition
-extern const device_type I8089;
+DECLARE_DEVICE_TYPE(I8089, i8089_device)
-#endif /* __I8089_H__ */
+#endif // MAME_CPU_I8089_I8089_H
diff --git a/src/devices/cpu/i8089/i8089_channel.cpp b/src/devices/cpu/i8089/i8089_channel.cpp
index 8cfcdc6cca7..8511e924b33 100644
--- a/src/devices/cpu/i8089/i8089_channel.cpp
+++ b/src/devices/cpu/i8089/i8089_channel.cpp
@@ -9,8 +9,8 @@
***************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "i8089_channel.h"
+#include "debugger.h"
//**************************************************************************
@@ -37,7 +37,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type I8089_CHANNEL = device_creator<i8089_channel>;
+DEFINE_DEVICE_TYPE(I8089_CHANNEL, i8089_channel_device, "i8089_channel", "Intel 8089 I/O Channel")
//**************************************************************************
@@ -45,11 +45,11 @@ const device_type I8089_CHANNEL = device_creator<i8089_channel>;
//**************************************************************************
//-------------------------------------------------
-// i8089_channel - constructor
+// i8089_channel_device - constructor
//-------------------------------------------------
-i8089_channel::i8089_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, I8089_CHANNEL, "Intel 8089 I/O Channel", tag, owner, clock, "i8089_channel", __FILE__),
+i8089_channel_device::i8089_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, I8089_CHANNEL, tag, owner, clock),
m_write_sintr(*this),
m_iop(nullptr),
m_icount(0),
@@ -65,7 +65,7 @@ i8089_channel::i8089_channel(const machine_config &mconfig, const char *tag, dev
// device_start - device-specific startup
//-------------------------------------------------
-void i8089_channel::device_start()
+void i8089_channel_device::device_start()
{
// get parent device
m_iop = downcast<i8089_device *>(owner());
@@ -91,7 +91,7 @@ void i8089_channel::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void i8089_channel::device_reset()
+void i8089_channel_device::device_reset()
{
m_xfer_pending = false;
@@ -109,7 +109,7 @@ void i8089_channel::device_reset()
// IMPLEMENTATION
//**************************************************************************
-void i8089_channel::set_reg(int reg, uint32_t value, int tag)
+void i8089_channel_device::set_reg(int reg, uint32_t value, int tag)
{
if((reg == BC) || (reg == IX) || (reg == CC) || (reg == MC))
{
@@ -134,14 +134,14 @@ void i8089_channel::set_reg(int reg, uint32_t value, int tag)
}
// channel status
-bool i8089_channel::executing() { return BIT(m_r[PSW].w, 2); }
-bool i8089_channel::transferring() { return BIT(m_r[PSW].w, 6); }
-bool i8089_channel::priority() { return BIT(m_r[PSW].w, 7); }
-int i8089_channel::chan_prio() { return m_prio; }
-bool i8089_channel::chained() { return CC_CHAIN; }
-bool i8089_channel::lock() { return CC_LOCK; }
-
-int16_t i8089_channel::displacement(int wb)
+bool i8089_channel_device::executing() { return BIT(m_r[PSW].w, 2); }
+bool i8089_channel_device::transferring() { return BIT(m_r[PSW].w, 6); }
+bool i8089_channel_device::priority() { return BIT(m_r[PSW].w, 7); }
+int i8089_channel_device::chan_prio() { return m_prio; }
+bool i8089_channel_device::chained() { return CC_CHAIN; }
+bool i8089_channel_device::lock() { return CC_LOCK; }
+
+int16_t i8089_channel_device::displacement(int wb)
{
int16_t displacement = 0;
@@ -159,7 +159,7 @@ int16_t i8089_channel::displacement(int wb)
return displacement;
}
-uint32_t i8089_channel::offset(int aa, int mm, int w)
+uint32_t i8089_channel_device::offset(int aa, int mm, int w)
{
uint32_t offset = 0;
switch(aa)
@@ -182,14 +182,14 @@ uint32_t i8089_channel::offset(int aa, int mm, int w)
return offset & 0xfffff;
}
-int8_t i8089_channel::imm8()
+int8_t i8089_channel_device::imm8()
{
int8_t imm8 = (int8_t)m_iop->read_byte(m_r[TP].t, m_r[TP].w);
set_reg(TP, m_r[TP].w + 1);
return imm8;
}
-int16_t i8089_channel::imm16()
+int16_t i8089_channel_device::imm16()
{
int16_t imm16 = (int16_t)m_iop->read_word(m_r[TP].t, m_r[TP].w);
set_reg(TP, m_r[TP].w + 2);
@@ -197,7 +197,7 @@ int16_t i8089_channel::imm16()
}
// adjust task pointer and continue execution
-void i8089_channel::terminate_dma(int offset)
+void i8089_channel_device::terminate_dma(int offset)
{
if (VERBOSE)
logerror("%s('%s'): terminating dma transfer\n", shortname(), tag());
@@ -208,7 +208,7 @@ void i8089_channel::terminate_dma(int offset)
m_dma_state = DMA_IDLE;
}
-int i8089_channel::execute_run()
+int i8089_channel_device::execute_run()
{
m_icount = 0;
@@ -676,7 +676,7 @@ int i8089_channel::execute_run()
return m_icount;
}
-void i8089_channel::examine_ccw(uint8_t ccw)
+void i8089_channel_device::examine_ccw(uint8_t ccw)
{
// priority and bus load limit, bit 7 and 5
m_r[PSW].w = (m_r[PSW].w & 0x5f) | (ccw & 0xa0);
@@ -698,7 +698,7 @@ void i8089_channel::examine_ccw(uint8_t ccw)
}
}
-void i8089_channel::attention()
+void i8089_channel_device::attention()
{
// examine control byte
uint8_t ccw = m_iop->read_byte(m_r[CP].t, m_r[CP].w);
@@ -826,12 +826,12 @@ void i8089_channel::attention()
}
}
-void i8089_channel::ca()
+void i8089_channel_device::ca()
{
m_prio = PRIO_CHAN_ATTN;
}
-WRITE_LINE_MEMBER( i8089_channel::ext_w )
+WRITE_LINE_MEMBER( i8089_channel_device::ext_w )
{
if (VERBOSE)
logerror("%s('%s'): ext_w: %d\n", shortname(), tag(), state);
@@ -840,7 +840,7 @@ WRITE_LINE_MEMBER( i8089_channel::ext_w )
terminate_dma((CC_TX - 1) * 4);
}
-WRITE_LINE_MEMBER( i8089_channel::drq_w )
+WRITE_LINE_MEMBER( i8089_channel_device::drq_w )
{
if (VERBOSE_DMA)
logerror("%s('%s'): drq_w: %d\n", shortname(), tag(), state);
diff --git a/src/devices/cpu/i8089/i8089_channel.h b/src/devices/cpu/i8089/i8089_channel.h
index 914ed70bfbe..fc0e6064efe 100644
--- a/src/devices/cpu/i8089/i8089_channel.h
+++ b/src/devices/cpu/i8089/i8089_channel.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_I8080_I8089_CHANNEL_H
+#define MAME_CPU_I8080_I8089_CHANNEL_H
-#ifndef __I8089_CHANNEL_H__
-#define __I8089_CHANNEL_H__
+#pragma once
#include "i8089.h"
@@ -24,7 +24,7 @@
MCFG_DEVICE_ADD(_tag, I8089_CHANNEL, 0)
#define MCFG_I8089_CHANNEL_SINTR(_sintr) \
- downcast<i8089_channel *>(device)->set_sintr_callback(DEVCB_##_sintr);
+ downcast<i8089_channel_device *>(device)->set_sintr_callback(DEVCB_##_sintr);
//**************************************************************************
@@ -34,13 +34,13 @@
// forward declaration
class i8089_device;
-class i8089_channel : public device_t
+class i8089_channel_device : public device_t
{
public:
// construction/destruction
- i8089_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ i8089_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _sintr> void set_sintr_callback(_sintr sintr) { m_write_sintr.set_callback(sintr); }
+ template <class Object> void set_sintr_callback(Object &&sintr) { m_write_sintr.set_callback(std::forward<Object>(sintr)); }
// set register
void set_reg(int reg, uint32_t value, int tag = -1);
@@ -217,7 +217,7 @@ private:
// device type definition
-extern const device_type I8089_CHANNEL;
+DECLARE_DEVICE_TYPE(I8089_CHANNEL, i8089_channel_device)
-#endif /* __I8089_CHANNEL_H__ */
+#endif // MAME_CPU_I8080_I8089_CHANNEL_H
diff --git a/src/devices/cpu/i8089/i8089_ops.cpp b/src/devices/cpu/i8089/i8089_ops.cpp
index 4b20052014e..44d05cb467d 100644
--- a/src/devices/cpu/i8089/i8089_ops.cpp
+++ b/src/devices/cpu/i8089/i8089_ops.cpp
@@ -18,192 +18,192 @@
#define SWR(m, o, d) (m_iop->write_word(m_r[m].t, o, d))
#define SBR(m, o, d) (m_iop->write_byte(m_r[m].t, o, d))
-void i8089_channel::add_rm(int r, int m, int o)
+void i8089_channel_device::add_rm(int r, int m, int o)
{
set_reg(r, m_r[r].w + LWR(m, o));
}
-void i8089_channel::add_mr(int m, int r, int o)
+void i8089_channel_device::add_mr(int m, int r, int o)
{
SWR(m, o, LWR(m, o) + m_r[r].w);
}
-void i8089_channel::addb_rm(int r, int m, int o)
+void i8089_channel_device::addb_rm(int r, int m, int o)
{
set_reg(r, m_r[r].w + LBR(m, o));
}
-void i8089_channel::addb_mr(int m, int r, int o)
+void i8089_channel_device::addb_mr(int m, int r, int o)
{
SBR(m, o, LBR(m, o) + m_r[r].w);
}
-void i8089_channel::addbi_ri(int r, int8_t i)
+void i8089_channel_device::addbi_ri(int r, int8_t i)
{
set_reg(r, m_r[r].w + i);
}
-void i8089_channel::addbi_mi(int m, int8_t i, int o)
+void i8089_channel_device::addbi_mi(int m, int8_t i, int o)
{
SBR(m, o, LBR(m, o) + i);
}
-void i8089_channel::addi_ri(int r, int16_t i)
+void i8089_channel_device::addi_ri(int r, int16_t i)
{
set_reg(r, m_r[r].w + i);
}
-void i8089_channel::addi_mi(int m, int16_t i, int o)
+void i8089_channel_device::addi_mi(int m, int16_t i, int o)
{
SWR(m, o, LWR(m, o) + i);
}
-void i8089_channel::and_rm(int r, int m, int o)
+void i8089_channel_device::and_rm(int r, int m, int o)
{
set_reg(r, m_r[r].w & LWR(m, o));
}
-void i8089_channel::and_mr(int m, int r, int o)
+void i8089_channel_device::and_mr(int m, int r, int o)
{
SWR(m, o, LWR(m, o) & m_r[r].w);
}
-void i8089_channel::andb_rm(int r, int m, int o)
+void i8089_channel_device::andb_rm(int r, int m, int o)
{
set_reg(r, m_r[r].w & (int16_t)LBR(m, o));
}
-void i8089_channel::andb_mr(int m, int r, int o)
+void i8089_channel_device::andb_mr(int m, int r, int o)
{
SBR(m, o, LBR(m, o) & m_r[r].w);
}
-void i8089_channel::andbi_ri(int r, int8_t i)
+void i8089_channel_device::andbi_ri(int r, int8_t i)
{
set_reg(r, m_r[r].w & (int16_t)i);
}
-void i8089_channel::andbi_mi(int m, int8_t i, int o)
+void i8089_channel_device::andbi_mi(int m, int8_t i, int o)
{
SBR(m, o, LBR(m, o) & i);
}
-void i8089_channel::andi_ri(int r, int16_t i)
+void i8089_channel_device::andi_ri(int r, int16_t i)
{
set_reg(r, m_r[r].w & i);
}
-void i8089_channel::andi_mi(int m, int16_t i, int o)
+void i8089_channel_device::andi_mi(int m, int16_t i, int o)
{
SWR(m, o, LWR(m, o) & i);
}
-void i8089_channel::call(int m, int16_t d, int o)
+void i8089_channel_device::call(int m, int16_t d, int o)
{
movp_mp(m, TP, o);
set_reg(TP, m_r[TP].w + d);
}
-void i8089_channel::clr(int m, int b, int o)
+void i8089_channel_device::clr(int m, int b, int o)
{
SBR(m, o, LBR(m, o) & ~(1<<b));
}
-void i8089_channel::dec_r(int r)
+void i8089_channel_device::dec_r(int r)
{
m_icount += 3;
set_reg(r, m_r[r].w - 1);
}
-void i8089_channel::dec_m(int m, int o)
+void i8089_channel_device::dec_m(int m, int o)
{
SWR(m, o, LWR(m, o) - 1);
}
-void i8089_channel::decb(int m, int o)
+void i8089_channel_device::decb(int m, int o)
{
SBR(m, o, LBR(m, o) - 1);
}
// halt
-void i8089_channel::hlt()
+void i8089_channel_device::hlt()
{
movbi_mi(CP, 0x00, m_r[CP].w + 1);
m_r[PSW].w &= ~(1 << 2);
m_prio = PRIO_IDLE;
}
-void i8089_channel::inc_r(int r)
+void i8089_channel_device::inc_r(int r)
{
set_reg(r, m_r[r].w + 1);
}
-void i8089_channel::inc_m(int m, int o)
+void i8089_channel_device::inc_m(int m, int o)
{
SWR(m, o, LWR(m, o) + 1);
}
-void i8089_channel::incb(int m, int o)
+void i8089_channel_device::incb(int m, int o)
{
SBR(m, o, LBR(m, o) + 1);
}
-void i8089_channel::jbt(int m, int b, int16_t d, int o)
+void i8089_channel_device::jbt(int m, int b, int16_t d, int o)
{
if(LBR(m, o) & (1<<b))
set_reg(TP, m_r[TP].w + d);
}
-void i8089_channel::jmce(int m, int16_t d, int o)
+void i8089_channel_device::jmce(int m, int16_t d, int o)
{
if(!((LBR(m, o) ^ (m_r[MC].w & 0xff)) & (m_r[MC].w >> 8)))
set_reg(TP, m_r[TP].w + d);
}
-void i8089_channel::jmcne(int m, int16_t d, int o)
+void i8089_channel_device::jmcne(int m, int16_t d, int o)
{
if((LBR(m, o) ^ (m_r[MC].w & 0xff)) & (m_r[MC].w >> 8))
set_reg(TP, m_r[TP].w + d);
}
-void i8089_channel::jnbt(int m, int b, int16_t d, int o)
+void i8089_channel_device::jnbt(int m, int b, int16_t d, int o)
{
if(!(LBR(m, o) & (1<<b)))
set_reg(TP, m_r[TP].w + d);
}
-void i8089_channel::jnz_r(int r, int16_t d)
+void i8089_channel_device::jnz_r(int r, int16_t d)
{
m_icount += 5;
if(m_r[r].w & 0xffff)
set_reg(TP, m_r[TP].w + d);
}
-void i8089_channel::jnz_m(int m, int16_t d, int o)
+void i8089_channel_device::jnz_m(int m, int16_t d, int o)
{
if(LWR(m, o))
set_reg(TP, m_r[TP].w + d);
}
-void i8089_channel::jnzb(int m, int16_t d, int o)
+void i8089_channel_device::jnzb(int m, int16_t d, int o)
{
if(LBR(m, o))
set_reg(TP, m_r[TP].w + d);
}
-void i8089_channel::jz_r(int r, int16_t d)
+void i8089_channel_device::jz_r(int r, int16_t d)
{
if(!(m_r[r].w & 0xffff))
set_reg(TP, m_r[TP].w + d);
}
-void i8089_channel::jz_m(int m, int16_t d, int o)
+void i8089_channel_device::jz_m(int m, int16_t d, int o)
{
if(!LWR(m, o))
set_reg(TP, m_r[TP].w + d);
}
-void i8089_channel::jzb(int m, int16_t d, int o)
+void i8089_channel_device::jzb(int m, int16_t d, int o)
{
if(!LBR(m, o))
set_reg(TP, m_r[TP].w + d);
@@ -211,7 +211,7 @@ void i8089_channel::jzb(int m, int16_t d, int o)
// load pointer from memory
-void i8089_channel::lpd(int p, int m, int o)
+void i8089_channel_device::lpd(int p, int m, int o)
{
uint16_t offset = m_iop->read_word(m_r[m].t, o);
uint16_t segment = m_iop->read_word(m_r[m].t, o + 2);
@@ -220,79 +220,79 @@ void i8089_channel::lpd(int p, int m, int o)
}
// load pointer from immediate data
-void i8089_channel::lpdi(int p, int s, int o)
+void i8089_channel_device::lpdi(int p, int s, int o)
{
set_reg(p, (s << 4) + (o & 0xffff), 0);
}
-void i8089_channel::mov_mr(int m, int r, int o)
+void i8089_channel_device::mov_mr(int m, int r, int o)
{
SWR(m, o, m_r[r].w);
}
-void i8089_channel::mov_rm(int r, int m, int o)
+void i8089_channel_device::mov_rm(int r, int m, int o)
{
set_reg(r, (int32_t)LWR(m, o), 1);
}
-void i8089_channel::mov_mm(int m1, int m2, int o1, int o2)
+void i8089_channel_device::mov_mm(int m1, int m2, int o1, int o2)
{
SWR(m2, o2, LWR(m1, o1));
}
// move register to memory byte
-void i8089_channel::movb_mr(int m, int r, int o)
+void i8089_channel_device::movb_mr(int m, int r, int o)
{
m_iop->write_byte(m_r[m].t, o, m_r[r].w & 0xff);
}
// move memory byte to register
-void i8089_channel::movb_rm(int r, int m, int o)
+void i8089_channel_device::movb_rm(int r, int m, int o)
{
uint8_t byte = m_iop->read_byte(m_r[m].t, o);
set_reg(r, (BIT(byte, 7) ? 0xfff00 : 0x00000) | byte, 1);
}
// move memory byte to memory byte
-void i8089_channel::movb_mm(int m1, int m2, int o1, int o2)
+void i8089_channel_device::movb_mm(int m1, int m2, int o1, int o2)
{
uint8_t byte = m_iop->read_byte(m_r[m1].t, o1);
m_iop->write_byte(m_r[m2].t, o2, byte);
}
// move immediate byte to register
-void i8089_channel::movbi_ri(int r, int8_t i)
+void i8089_channel_device::movbi_ri(int r, int8_t i)
{
set_reg(r, (BIT(i, 7) ? 0xfff00 : 0x00000) | (i & 0xff), 1);
}
// move immediate byte to memory byte
-void i8089_channel::movbi_mi(int m, int8_t i, int o)
+void i8089_channel_device::movbi_mi(int m, int8_t i, int o)
{
m_iop->write_byte(m_r[m].t, o, i & 0xff);
}
// move immediate word to register
-void i8089_channel::movi_ri(int r, int16_t i)
+void i8089_channel_device::movi_ri(int r, int16_t i)
{
set_reg(r, (BIT(i, 15) ? 0xf0000 : 0x00000) | (i & 0xffff), 1);
}
// move immediate word to memory word
-void i8089_channel::movi_mi(int m, int16_t i, int o)
+void i8089_channel_device::movi_mi(int m, int16_t i, int o)
{
m_iop->write_word(m_r[m].t, o, (BIT(i, 15) ? 0xf0000 : 0x00000) | (i & 0xffff));
}
// move pointer to memory (store)
-void i8089_channel::movp_mp(int m, int p, int o)
+void i8089_channel_device::movp_mp(int m, int p, int o)
{
m_iop->write_word(m_r[m].t, o, m_r[p].w & 0xffff);
m_iop->write_byte(m_r[m].t, o + 2, ((m_r[p].w >> 12) & 0xf0) | (m_r[p].t << 3));
}
// move memory to pointer (restore)
-void i8089_channel::movp_pm(int p, int m, int o)
+void i8089_channel_device::movp_pm(int p, int m, int o)
{
uint16_t offset = m_iop->read_word(m_r[m].t, o);
uint16_t segment = m_iop->read_byte(m_r[m].t, o + 2);
@@ -301,83 +301,83 @@ void i8089_channel::movp_pm(int p, int m, int o)
}
// no operation
-void i8089_channel::nop()
+void i8089_channel_device::nop()
{
}
-void i8089_channel::not_r(int r)
+void i8089_channel_device::not_r(int r)
{
set_reg(r, ~m_r[r].w);
}
-void i8089_channel::not_m(int m, int o)
+void i8089_channel_device::not_m(int m, int o)
{
SWR(m, o, ~LWR(m, o));
}
-void i8089_channel::not_rm(int r, int m, int o)
+void i8089_channel_device::not_rm(int r, int m, int o)
{
set_reg(r, ~(int32_t)LWR(m, o));
}
-void i8089_channel::notb_m(int m, int o)
+void i8089_channel_device::notb_m(int m, int o)
{
SBR(m, o, ~LBR(m, o));
}
-void i8089_channel::notb_rm(int r, int m, int o)
+void i8089_channel_device::notb_rm(int r, int m, int o)
{
set_reg(r, ~(int32_t)LBR(m, o));
}
-void i8089_channel::or_rm(int r, int m, int o)
+void i8089_channel_device::or_rm(int r, int m, int o)
{
set_reg(r, m_r[r].w | LWR(m, o));
}
-void i8089_channel::or_mr(int m, int r, int o)
+void i8089_channel_device::or_mr(int m, int r, int o)
{
SWR(m, o, LWR(m, o) | m_r[r].w);
}
-void i8089_channel::orb_rm(int r, int m, int o)
+void i8089_channel_device::orb_rm(int r, int m, int o)
{
set_reg(r, m_r[r].w | (int16_t)LBR(m, o));
}
-void i8089_channel::orb_mr(int m, int r, int o)
+void i8089_channel_device::orb_mr(int m, int r, int o)
{
SBR(m, o, LBR(m, o) | m_r[r].w);
}
-void i8089_channel::orbi_ri(int r, int8_t i)
+void i8089_channel_device::orbi_ri(int r, int8_t i)
{
set_reg(r, m_r[r].w | (int16_t)i);
}
-void i8089_channel::orbi_mi(int m, int8_t i, int o)
+void i8089_channel_device::orbi_mi(int m, int8_t i, int o)
{
SBR(m, o, LBR(m, o) | i);
}
-void i8089_channel::ori_ri(int r, int16_t i)
+void i8089_channel_device::ori_ri(int r, int16_t i)
{
set_reg(r, m_r[r].w | i);
}
-void i8089_channel::ori_mi(int m, int16_t i, int o)
+void i8089_channel_device::ori_mi(int m, int16_t i, int o)
{
SWR(m, o, LWR(m, o) | i);
}
-void i8089_channel::setb(int m, int b, int o)
+void i8089_channel_device::setb(int m, int b, int o)
{
SBR(m, o, LBR(m, o) | (1<<b));
}
// set interrupt service flip-flop
-void i8089_channel::sintr()
+void i8089_channel_device::sintr()
{
if (BIT(m_r[PSW].w, 4))
{
@@ -386,7 +386,7 @@ void i8089_channel::sintr()
}
}
-void i8089_channel::tsl(int m, int8_t i, int8_t d, int o)
+void i8089_channel_device::tsl(int m, int8_t i, int8_t d, int o)
{
if(LBR(m, o))
set_reg(TP, m_r[TP].w + d);
@@ -396,7 +396,7 @@ void i8089_channel::tsl(int m, int8_t i, int8_t d, int o)
// set source and destination logical widths
-void i8089_channel::wid(int s, int d)
+void i8089_channel_device::wid(int s, int d)
{
m_r[PSW].w &= 0x3f;
m_r[PSW].w |= d << 0;
@@ -404,12 +404,12 @@ void i8089_channel::wid(int s, int d)
}
// enter dma transfer mode after next instruction
-void i8089_channel::xfer()
+void i8089_channel_device::xfer()
{
m_xfer_pending = true;
}
-void i8089_channel::invalid(int opc)
+void i8089_channel_device::invalid(int opc)
{
logerror("%s('%s'): invalid opcode: %02x\n", shortname(), tag(), opc);
}
diff --git a/src/devices/cpu/i86/i186.cpp b/src/devices/cpu/i86/i186.cpp
index 99f42c5da76..0f3edc7a801 100644
--- a/src/devices/cpu/i86/i186.cpp
+++ b/src/devices/cpu/i86/i186.cpp
@@ -118,11 +118,11 @@ const uint8_t i80186_cpu_device::m_i80186_timing[] =
33, /* (80186) BOUND */
};
-const device_type I80186 = device_creator<i80186_cpu_device>;
-const device_type I80188 = device_creator<i80188_cpu_device>;
+DEFINE_DEVICE_TYPE(I80186, i80186_cpu_device, "i80186", "I80186")
+DEFINE_DEVICE_TYPE(I80188, i80188_cpu_device, "i80188", "I80188")
i80188_cpu_device::i80188_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i80186_cpu_device(mconfig, I80188, "I80188", tag, owner, clock, "i80188", __FILE__, 8)
+ : i80186_cpu_device(mconfig, I80188, tag, owner, clock, 8)
{
memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing));
m_fetch_xor = 0;
@@ -130,22 +130,15 @@ i80188_cpu_device::i80188_cpu_device(const machine_config &mconfig, const char *
}
i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8086_common_cpu_device(mconfig, I80186, "I80186", tag, owner, clock, "i80186", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 16, 20, 0)
- , m_opcodes_config("opcodes", ENDIANNESS_LITTLE, 16, 20, 0)
- , m_io_config("io", ENDIANNESS_LITTLE, 16, 16, 0)
- , m_read_slave_ack_func(*this)
- , m_out_chip_select_func(*this)
- , m_out_tmrout0_func(*this)
- , m_out_tmrout1_func(*this)
+ : i80186_cpu_device(mconfig, I80186, tag, owner, clock, 16)
{
memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing));
m_fetch_xor = BYTE_XOR_LE(0);
static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this));
}
-i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int data_bus_size)
- : i8086_common_cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size)
+ : i8086_common_cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, data_bus_size, 20, 0)
, m_opcodes_config("opcodes", ENDIANNESS_LITTLE, data_bus_size, 20, 0)
, m_io_config("io", ENDIANNESS_LITTLE, data_bus_size, 16, 0)
diff --git a/src/devices/cpu/i86/i186.h b/src/devices/cpu/i86/i186.h
index 74a659c64c0..54ab1d20fae 100644
--- a/src/devices/cpu/i86/i186.h
+++ b/src/devices/cpu/i86/i186.h
@@ -1,24 +1,25 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef I186_H__
-#define I186_H__
+#ifndef MAME_CPU_I86_I186_H
+#define MAME_CPU_I86_I186_H
+
+#pragma once
#include "i86.h"
-extern const device_type I80186;
-extern const device_type I80188;
+DECLARE_DEVICE_TYPE(I80186, i80186_cpu_device)
+DECLARE_DEVICE_TYPE(I80188, i80188_cpu_device)
class i80186_cpu_device : public i8086_common_cpu_device
{
public:
// construction/destruction
i80186_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- i80186_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int data_bus_size);
- template<class _Object> static devcb_base &static_set_read_slave_ack_callback(device_t &device, _Object object) { return downcast<i80186_cpu_device &>(device).m_read_slave_ack_func.set_callback(object); }
- template<class _Object> static devcb_base &static_set_chip_select_callback(device_t &device, _Object object) { return downcast<i80186_cpu_device &>(device).m_out_chip_select_func.set_callback(object); }
- template<class _Object> static devcb_base &static_set_tmrout0_handler(device_t &device, _Object object) { return downcast<i80186_cpu_device &>(device).m_out_tmrout0_func.set_callback(object); }
- template<class _Object> static devcb_base &static_set_tmrout1_handler(device_t &device, _Object object) { return downcast<i80186_cpu_device &>(device).m_out_tmrout1_func.set_callback(object); }
+ template <class Object> static devcb_base &static_set_read_slave_ack_callback(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_chip_select_callback(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_chip_select_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_tmrout0_handler(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_tmrout0_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_tmrout1_handler(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_tmrout1_func.set_callback(std::forward<Object>(cb)); }
IRQ_CALLBACK_MEMBER(int_callback);
DECLARE_WRITE_LINE_MEMBER(drq0_w) { if(state) drq_callback(0); m_dma[0].drq_state = state; }
@@ -31,9 +32,11 @@ public:
DECLARE_WRITE_LINE_MEMBER(int3_w) { external_int(3, state); }
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
protected:
+ i80186_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size);
+
// device_execute_interface overrides
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks / 2); }
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 2); }
@@ -148,4 +151,4 @@ public:
#define MCFG_80186_TMROUT1_HANDLER(_devcb) \
devcb = &i80186_cpu_device::static_set_tmrout1_handler(*device, DEVCB_##_devcb);
-#endif
+#endif // MAME_CPU_I86_I186_H
diff --git a/src/devices/cpu/i86/i286.cpp b/src/devices/cpu/i86/i286.cpp
index 7640e0a5102..f871a8c17cd 100644
--- a/src/devices/cpu/i86/i286.cpp
+++ b/src/devices/cpu/i86/i286.cpp
@@ -165,10 +165,10 @@ const uint8_t i80286_cpu_device::m_i80286_timing[] =
13, /* (80186) BOUND */
};
-const device_type I80286 = device_creator<i80286_cpu_device>;
+DEFINE_DEVICE_TYPE(I80286, i80286_cpu_device, "i80286", "I80286")
i80286_cpu_device::i80286_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8086_common_cpu_device(mconfig, I80286, "I80286", tag, owner, clock, "i80286", __FILE__)
+ : i8086_common_cpu_device(mconfig, I80286, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 24, 0)
, m_opcodes_config("opcodes", ENDIANNESS_LITTLE, 16, 24, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 16, 16, 0)
diff --git a/src/devices/cpu/i86/i286.h b/src/devices/cpu/i86/i286.h
index b5945065aef..e0a2c1600ed 100644
--- a/src/devices/cpu/i86/i286.h
+++ b/src/devices/cpu/i86/i286.h
@@ -1,12 +1,14 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef I286_H_
-#define I286_H_
+#ifndef MAME_CPU_I86_I286_H
+#define MAME_CPU_I86_I286_H
+
+#pragma once
#include "i86.h"
#define INPUT_LINE_A20 1
-extern const device_type I80286;
+DECLARE_DEVICE_TYPE(I80286, i80286_cpu_device)
enum
{ // same order as I8086 registers
@@ -67,11 +69,11 @@ public:
i80286_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
typedef delegate<uint32_t (bool)> a20_cb;
static void static_set_a20_callback(device_t &device, a20_cb object) { downcast<i80286_cpu_device &>(device).m_a20_callback = object; }
- template<class _Object> static devcb_base &static_set_shutdown_callback(device_t &device, _Object object) { return downcast<i80286_cpu_device &>(device).m_out_shutdown_func.set_callback(object); }
+ template <class Object> static devcb_base &static_set_shutdown_callback(device_t &device, Object &&cb) { return downcast<i80286_cpu_device &>(device).m_out_shutdown_func.set_callback(std::forward<Object>(cb)); }
protected:
virtual void execute_run() override;
@@ -166,4 +168,4 @@ private:
#define MCFG_80286_SHUTDOWN(_devcb) \
devcb = &i80286_cpu_device::static_set_shutdown_callback(*device, DEVCB_##_devcb);
-#endif /* I286_H_ */
+#endif // MAME_CPU_I86_I286_H
diff --git a/src/devices/cpu/i86/i86.cpp b/src/devices/cpu/i86/i86.cpp
index c13329ced5b..2288ab63194 100644
--- a/src/devices/cpu/i86/i86.cpp
+++ b/src/devices/cpu/i86/i86.cpp
@@ -12,8 +12,8 @@
****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "i86.h"
+#include "debugger.h"
#include "i86inline.h"
#define I8086_NMI_INT_VECTOR 2
@@ -87,28 +87,25 @@ const uint8_t i8086_cpu_device::m_i8086_timing[] =
/***************************************************************************/
-const device_type I8086 = device_creator<i8086_cpu_device>;
-const device_type I8088 = device_creator<i8088_cpu_device>;
+DEFINE_DEVICE_TYPE(I8086, i8086_cpu_device, "i8086", "I8086")
+DEFINE_DEVICE_TYPE(I8088, i8088_cpu_device, "i8088", "I8088")
i8088_cpu_device::i8088_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8086_cpu_device(mconfig, I8088, "I8088", tag, owner, clock, "i8088", __FILE__, 8)
+ : i8086_cpu_device(mconfig, I8088, tag, owner, clock, 8)
{
memcpy(m_timing, m_i8086_timing, sizeof(m_i8086_timing));
m_fetch_xor = 0;
}
i8086_cpu_device::i8086_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8086_common_cpu_device(mconfig, I8086, "I8086", tag, owner, clock, "i8086", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 16, 20, 0)
- , m_opcodes_config("opcodes", ENDIANNESS_LITTLE, 16, 20, 0)
- , m_io_config("io", ENDIANNESS_LITTLE, 16, 16, 0)
+ : i8086_cpu_device(mconfig, I8086, tag, owner, clock, 16)
{
memcpy(m_timing, m_i8086_timing, sizeof(m_i8086_timing));
m_fetch_xor = BYTE_XOR_LE(0);
}
-i8086_cpu_device::i8086_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int data_bus_size)
- : i8086_common_cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+i8086_cpu_device::i8086_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size)
+ : i8086_common_cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, data_bus_size, 20, 0)
, m_opcodes_config("opcodes", ENDIANNESS_LITTLE, data_bus_size, 20, 0)
, m_io_config("io", ENDIANNESS_LITTLE, data_bus_size, 16, 0)
@@ -291,8 +288,8 @@ void i8086_cpu_device::device_start()
state_add( I8086_HALT, "HALT", m_halt ).mask(1);
}
-i8086_common_cpu_device::i8086_common_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+i8086_common_cpu_device::i8086_common_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_ip(0)
, m_TF(0)
, m_int_vector(0)
diff --git a/src/devices/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h
index 8fba839409a..626246c8dde 100644
--- a/src/devices/cpu/i86/i86.h
+++ b/src/devices/cpu/i86/i86.h
@@ -1,13 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef __I8086_H__
-#define __I8086_H__
+#ifndef MAME_CPU_I86_I86_H
+#define MAME_CPU_I86_I86_H
+
+#pragma once
/////////////////////////////////////////////////////////////////
-extern const device_type I8086;
-extern const device_type I8088;
+DECLARE_DEVICE_TYPE(I8086, i8086_cpu_device)
+DECLARE_DEVICE_TYPE(I8088, i8088_cpu_device)
#define INPUT_LINE_INT0 INPUT_LINE_IRQ0
#define INPUT_LINE_TEST 20
@@ -29,11 +31,8 @@ enum
class i8086_common_cpu_device : public cpu_device
{
public:
- // construction/destruction
- i8086_common_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- template<class _Object> static devcb_base &set_lock_handler(device_t &device, _Object object)
- { return downcast<i8086_common_cpu_device &>(device).m_lock_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_lock_handler(device_t &device, Object &&cb)
+ { return downcast<i8086_common_cpu_device &>(device).m_lock_handler.set_callback(std::forward<Object>(cb)); }
protected:
enum
@@ -111,6 +110,9 @@ protected:
enum SREGS { ES=0, CS, SS, DS };
enum WREGS { AX=0, CX, DX, BX, SP, BP, SI, DI };
+ // construction/destruction
+ i8086_common_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -246,8 +248,6 @@ protected:
inline void ADJ4(int8_t param1, int8_t param2);
inline void ADJB(int8_t param1, int8_t param2);
-protected:
-
union
{ /* eight general registers */
uint16_t w[8]; /* viewed as 16 bits registers */
@@ -342,12 +342,13 @@ class i8086_cpu_device : public i8086_common_cpu_device
public:
// construction/destruction
i8086_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- i8086_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int data_bus_size);
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
protected:
+ i8086_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size);
+
virtual void execute_run() override;
virtual void device_start() override;
virtual uint32_t execute_input_lines() const override { return 1; }
@@ -369,4 +370,4 @@ public:
};
-#endif /* __I8086_H__ */
+#endif // MAME_CPU_I86_I86_H
diff --git a/src/devices/cpu/i860/i860.cpp b/src/devices/cpu/i860/i860.cpp
index b894ebc8c3f..f33eaf37fae 100644
--- a/src/devices/cpu/i860/i860.cpp
+++ b/src/devices/cpu/i860/i860.cpp
@@ -31,12 +31,13 @@ enum {
};
-const device_type I860 = device_creator<i860_cpu_device>;
+DEFINE_DEVICE_TYPE(I860, i860_cpu_device, "i860xr", "i860XR")
i860_cpu_device::i860_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, I860, "i860XR", tag, owner, clock, "i860xr", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 64, 32, 0), m_pc(0), m_merge(0), m_pin_bus_hold(0), m_pin_reset(0), m_exiting_readmem(0), m_exiting_ifetch(0), m_pc_updated(0), m_pending_trap(0), m_fir_gets_trap_addr(0), m_single_stepping(0), m_program(nullptr), m_icount(0)
+ : cpu_device(mconfig, I860, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 64, 32, 0)
+ , m_pc(0), m_merge(0), m_pin_bus_hold(0), m_pin_reset(0), m_exiting_readmem(0), m_exiting_ifetch(0), m_pc_updated(0), m_pending_trap(0), m_fir_gets_trap_addr(0), m_single_stepping(0), m_program(nullptr), m_icount(0)
{
}
diff --git a/src/devices/cpu/i860/i860.h b/src/devices/cpu/i860/i860.h
index d107f111c97..e0b86665bf2 100644
--- a/src/devices/cpu/i860/i860.h
+++ b/src/devices/cpu/i860/i860.h
@@ -10,40 +10,16 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_I860_I860_H
+#define MAME_CPU_I860_I860_H
-#ifndef __I860_H__
-#define __I860_H__
+#pragma once
/***************************************************************************
REGISTER ENUMERATION
***************************************************************************/
-enum
-{
- I860_PC = 1,
-
- I860_FIR,
- I860_PSR,
- I860_DIRBASE,
- I860_DB,
- I860_FSR,
- I860_EPSR,
-
- I860_R0, I860_R1, I860_R2, I860_R3, I860_R4, I860_R5, I860_R6, I860_R7, I860_R8, I860_R9,
- I860_R10, I860_R11, I860_R12, I860_R13, I860_R14, I860_R15, I860_R16, I860_R17, I860_R18, I860_R19,
- I860_R20, I860_R21, I860_R22, I860_R23, I860_R24, I860_R25, I860_R26, I860_R27, I860_R28, I860_R29,
- I860_R30, I860_R31,
-
- I860_F0, I860_F1, I860_F2, I860_F3, I860_F4, I860_F5, I860_F6, I860_F7, I860_F8, I860_F9,
- I860_F10, I860_F11, I860_F12, I860_F13, I860_F14, I860_F15, I860_F16, I860_F17, I860_F18, I860_F19,
- I860_F20, I860_F21, I860_F22, I860_F23, I860_F24, I860_F25, I860_F26, I860_F27, I860_F28, I860_F29,
- I860_F30, I860_F31
-
-};
-
-
class i860_cpu_device : public cpu_device
{
public:
@@ -62,6 +38,30 @@ public:
void reset_i860();
protected:
+ enum
+ {
+ I860_PC = 1,
+
+ I860_FIR,
+ I860_PSR,
+ I860_DIRBASE,
+ I860_DB,
+ I860_FSR,
+ I860_EPSR,
+
+ I860_R0, I860_R1, I860_R2, I860_R3, I860_R4, I860_R5, I860_R6, I860_R7, I860_R8, I860_R9,
+ I860_R10, I860_R11, I860_R12, I860_R13, I860_R14, I860_R15, I860_R16, I860_R17, I860_R18, I860_R19,
+ I860_R20, I860_R21, I860_R22, I860_R23, I860_R24, I860_R25, I860_R26, I860_R27, I860_R28, I860_R29,
+ I860_R30, I860_R31,
+
+ I860_F0, I860_F1, I860_F2, I860_F3, I860_F4, I860_F5, I860_F6, I860_F7, I860_F8, I860_F9,
+ I860_F10, I860_F11, I860_F12, I860_F13, I860_F14, I860_F15, I860_F16, I860_F17, I860_F18, I860_F19,
+ I860_F20, I860_F21, I860_F22, I860_F23, I860_F24, I860_F25, I860_F26, I860_F27, I860_F28, I860_F29,
+ I860_F30, I860_F31
+
+ };
+
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -307,7 +307,6 @@ enum {
};
-extern const device_type I860;
-
+DECLARE_DEVICE_TYPE(I860, i860_cpu_device)
-#endif /* __I860_H__ */
+#endif // MAME_CPU_I860_I860_H
diff --git a/src/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp
index 73b722c98ef..6eedf8206a9 100644
--- a/src/devices/cpu/i960/i960.cpp
+++ b/src/devices/cpu/i960/i960.cpp
@@ -1,8 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:Farfetch'd, R. Belmont
#include "emu.h"
-#include "debugger.h"
#include "i960.h"
+#include "debugger.h"
CPU_DISASSEMBLE( i960 );
@@ -13,13 +13,14 @@ CPU_DISASSEMBLE( i960 );
#endif
-const device_type I960 = device_creator<i960_cpu_device>;
+DEFINE_DEVICE_TYPE(I960, i960_cpu_device, "i960kb", "i960KB")
i960_cpu_device::i960_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, I960, "i960kb", tag, owner, clock, "i960kb", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0), m_rcache_pos(0), m_SAT(0), m_PRCB(0), m_PC(0), m_AC(0), m_IP(0), m_PIP(0), m_ICR(0), m_bursting(0), m_immediate_irq(0),
- m_immediate_vector(0), m_immediate_pri(0), m_program(nullptr), m_direct(nullptr), m_icount(0)
+ : cpu_device(mconfig, I960, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0)
+ , m_rcache_pos(0), m_SAT(0), m_PRCB(0), m_PC(0), m_AC(0), m_IP(0), m_PIP(0), m_ICR(0), m_bursting(0), m_immediate_irq(0)
+ , m_immediate_vector(0), m_immediate_pri(0), m_program(nullptr), m_direct(nullptr), m_icount(0)
{
}
diff --git a/src/devices/cpu/i960/i960.h b/src/devices/cpu/i960/i960.h
index 64c1eb4cb98..1bc29a7c6f9 100644
--- a/src/devices/cpu/i960/i960.h
+++ b/src/devices/cpu/i960/i960.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Farfetch'd, R. Belmont
-#pragma once
+#ifndef MAME_CPU_I960_I960_H
+#define MAME_CPU_I960_I960_H
-#ifndef __I960_H__
-#define __I960_H__
+#pragma once
enum
@@ -63,9 +63,6 @@ enum
};
-enum { I960_RCACHE_SIZE = 4 };
-
-
class i960_cpu_device : public cpu_device
{
public:
@@ -79,6 +76,8 @@ public:
void i960_stall() { m_IP = m_PIP; }
protected:
+ enum { I960_RCACHE_SIZE = 4 };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -172,7 +171,6 @@ private:
};
-extern const device_type I960;
-
+DECLARE_DEVICE_TYPE(I960, i960_cpu_device)
-#endif /* __I960_H__ */
+#endif // MAME_CPU_I960_I960_H
diff --git a/src/devices/cpu/ie15/ie15.cpp b/src/devices/cpu/ie15/ie15.cpp
index 2e8c34225a9..322d2b5753d 100644
--- a/src/devices/cpu/ie15/ie15.cpp
+++ b/src/devices/cpu/ie15/ie15.cpp
@@ -21,7 +21,7 @@
//**************************************************************************
// device type definition
-const device_type IE15_CPU = device_creator<ie15_cpu_device>;
+DEFINE_DEVICE_TYPE(IE15_CPU, ie15_cpu_device, "ie15_cpu", "ie15 CPU")
//**************************************************************************
// DEVICE INTERFACE
@@ -31,11 +31,10 @@ const device_type IE15_CPU = device_creator<ie15_cpu_device>;
// ie15_cpu_device - constructor
//-------------------------------------------------
ie15_cpu_device::ie15_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, IE15_CPU, "ie15 CPU", tag, owner, clock, "ie15_cpu", __FILE__),
- m_program_config("program", ENDIANNESS_LITTLE, 8, 14),
- m_io_config("io", ENDIANNESS_LITTLE, 8, 8), m_A(0), m_CF(0), m_ZF(0), m_RF(0), m_flags(0),
- m_program(nullptr), m_io(nullptr),
- m_direct(nullptr)
+ : cpu_device(mconfig, IE15_CPU, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 8, 14)
+ , m_io_config("io", ENDIANNESS_LITTLE, 8, 8), m_A(0), m_CF(0), m_ZF(0), m_RF(0), m_flags(0)
+ , m_program(nullptr), m_io(nullptr), m_direct(nullptr)
{
// set our instruction counter
m_icountptr = &m_icount;
diff --git a/src/devices/cpu/ie15/ie15.h b/src/devices/cpu/ie15/ie15.h
index ab5525481b7..0b4d6fbdf8f 100644
--- a/src/devices/cpu/ie15/ie15.h
+++ b/src/devices/cpu/ie15/ie15.h
@@ -1,28 +1,14 @@
// license:BSD-3-Clause
// copyright-holders:Sergey Svishchev
-#ifndef __IE15_H__
-#define __IE15_H__
+#ifndef MAME_CPU_IE15_IE15_H
+#define MAME_CPU_IE15_IE15_H
-//**************************************************************************
-// ENUMERATIONS
-//**************************************************************************
-
-enum
-{
- IE15_PC,
- IE15_A,
- IE15_R0, IE15_R1, IE15_R2, IE15_R3, IE15_R4, IE15_R5, IE15_R6, IE15_R7,
- IE15_R8, IE15_R9, IE15_R10, IE15_R11, IE15_R12, IE15_R13, IE15_R14, IE15_R15,
- IE15_R16, IE15_R17, IE15_R18, IE15_R19, IE15_R20, IE15_R21, IE15_R22, IE15_R23,
- IE15_R24, IE15_R25, IE15_R26, IE15_R27, IE15_R28, IE15_R29, IE15_R30, IE15_R31
-};
+#pragma once
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class ie15_cpu_device;
-
class ie15_cpu_device : public cpu_device
{
public:
@@ -30,6 +16,16 @@ public:
ie15_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
+ enum
+ {
+ IE15_PC,
+ IE15_A,
+ IE15_R0, IE15_R1, IE15_R2, IE15_R3, IE15_R4, IE15_R5, IE15_R6, IE15_R7,
+ IE15_R8, IE15_R9, IE15_R10, IE15_R11, IE15_R12, IE15_R13, IE15_R14, IE15_R15,
+ IE15_R16, IE15_R17, IE15_R18, IE15_R19, IE15_R20, IE15_R21, IE15_R22, IE15_R23,
+ IE15_R24, IE15_R25, IE15_R26, IE15_R27, IE15_R28, IE15_R29, IE15_R30, IE15_R31
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -84,6 +80,6 @@ protected:
};
// device type definition
-extern const device_type IE15_CPU;
+DECLARE_DEVICE_TYPE(IE15_CPU, ie15_cpu_device)
-#endif
+#endif // MAME_CPU_IE15_IE15_H
diff --git a/src/devices/cpu/jaguar/jagdasm.cpp b/src/devices/cpu/jaguar/jagdasm.cpp
index 5be18a327a3..538f35b4b48 100644
--- a/src/devices/cpu/jaguar/jagdasm.cpp
+++ b/src/devices/cpu/jaguar/jagdasm.cpp
@@ -23,6 +23,9 @@
STATIC VARIABLES
***************************************************************************/
+static constexpr unsigned JAGUAR_VARIANT_GPU = 0;
+static constexpr unsigned JAGUAR_VARIANT_DSP = 1;
+
static const uint8_t convert_zero[32] =
{ 32,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 };
diff --git a/src/devices/cpu/jaguar/jaguar.cpp b/src/devices/cpu/jaguar/jaguar.cpp
index 51ac4db16ff..f76bd49f1db 100644
--- a/src/devices/cpu/jaguar/jaguar.cpp
+++ b/src/devices/cpu/jaguar/jaguar.cpp
@@ -136,12 +136,12 @@ const jaguar_cpu_device::op_func jaguar_cpu_device::dsp_op_table[64] =
#define ROPCODE(pc) (m_direct->read_word(pc, WORD_XOR_BE(0)))
-const device_type JAGUARGPU = device_creator<jaguargpu_cpu_device>;
-const device_type JAGUARDSP = device_creator<jaguardsp_cpu_device>;
+DEFINE_DEVICE_TYPE(JAGUARGPU, jaguargpu_cpu_device, "jaguargpu", "Jaguar GPU")
+DEFINE_DEVICE_TYPE(JAGUARDSP, jaguardsp_cpu_device, "jaguardsp", "Jaguar DSP")
-jaguar_cpu_device::jaguar_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, bool isdsp)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+jaguar_cpu_device::jaguar_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool isdsp)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 32, 24, 0)
, m_isdsp(isdsp)
, m_cpu_interrupt(*this)
@@ -163,13 +163,13 @@ jaguar_cpu_device::jaguar_cpu_device(const machine_config &mconfig, device_type
jaguargpu_cpu_device::jaguargpu_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : jaguar_cpu_device(mconfig, JAGUARGPU, "Jaguar GPU", tag, owner, clock, "jaguargpu", __FILE__, false)
+ : jaguar_cpu_device(mconfig, JAGUARGPU, tag, owner, clock, false)
{
}
jaguardsp_cpu_device::jaguardsp_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : jaguar_cpu_device(mconfig, JAGUARDSP, "Jaguar DSP", tag, owner, clock, "jaguardsp", __FILE__, true)
+ : jaguar_cpu_device(mconfig, JAGUARDSP, tag, owner, clock, true)
{
}
diff --git a/src/devices/cpu/jaguar/jaguar.h b/src/devices/cpu/jaguar/jaguar.h
index e01afb5f24f..de5f296a936 100644
--- a/src/devices/cpu/jaguar/jaguar.h
+++ b/src/devices/cpu/jaguar/jaguar.h
@@ -8,19 +8,10 @@
***************************************************************************/
-#pragma once
-
-#ifndef __JAGUAR_H__
-#define __JAGUAR_H__
-
-
-
-/***************************************************************************
- GLOBAL CONSTANTS
-***************************************************************************/
+#ifndef MAME_CPU_JAGUAR_JAGUAR_H
+#define MAME_CPU_JAGUAR_JAGUAR_H
-#define JAGUAR_VARIANT_GPU 0
-#define JAGUAR_VARIANT_DSP 1
+#pragma once
@@ -94,25 +85,25 @@ enum
PUBLIC FUNCTIONS
***************************************************************************/
-
-extern const device_type JAGUARGPU;
-extern const device_type JAGUARDSP;
+DECLARE_DEVICE_TYPE(JAGUARGPU, jaguargpu_cpu_device)
+DECLARE_DEVICE_TYPE(JAGUARDSP, jaguardsp_cpu_device)
class jaguar_cpu_device : public cpu_device
{
public:
// construction/destruction
- jaguar_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, bool isdsp);
~jaguar_cpu_device();
// static configuration helpers
- template<class _Object> static devcb_base &set_int_func(device_t &device, _Object object) { return downcast<jaguar_cpu_device &>(device).m_cpu_interrupt.set_callback(object); }
+ template <class Object> static devcb_base &set_int_func(device_t &device, Object &&cb) { return downcast<jaguar_cpu_device &>(device).m_cpu_interrupt.set_callback(std::forward<Object>(cb)); }
- virtual DECLARE_WRITE32_MEMBER(ctrl_w) { assert(0); }
- virtual DECLARE_READ32_MEMBER(ctrl_r) { assert(0); return 0; }
+ virtual DECLARE_WRITE32_MEMBER(ctrl_w) = 0;
+ virtual DECLARE_READ32_MEMBER(ctrl_r) = 0;
protected:
+ jaguar_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool isdsp);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -124,7 +115,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
@@ -279,4 +270,4 @@ protected:
};
-#endif /* __JAGUAR_H__ */
+#endif // MAME_CPU_JAGUAR_JAGUAR_H
diff --git a/src/devices/cpu/lc8670/lc8670.cpp b/src/devices/cpu/lc8670/lc8670.cpp
index 3149c51643f..f35cce529c5 100644
--- a/src/devices/cpu/lc8670/lc8670.cpp
+++ b/src/devices/cpu/lc8670/lc8670.cpp
@@ -31,7 +31,7 @@
// CONSTANTS
//**************************************************************************
-const device_type LC8670 = device_creator<lc8670_cpu_device>;
+DEFINE_DEVICE_TYPE(LC8670, lc8670_cpu_device, "lc8670", "Sanyo LC8670")
//**************************************************************************
@@ -171,13 +171,13 @@ ADDRESS_MAP_END
//-------------------------------------------------
lc8670_cpu_device::lc8670_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, LC8670, "Sanyo LC8670", tag, owner, clock, "lc8670", __FILE__),
- m_program_config("program", ENDIANNESS_BIG, 8, 16, 0),
- m_data_config("data", ENDIANNESS_BIG, 8, 9, 0, ADDRESS_MAP_NAME(lc8670_internal_map)),
- m_io_config("io", ENDIANNESS_BIG, 8, 8, 0),
- m_pc(0),
- m_ppc(0),
- m_bankswitch_func(*this)
+ : cpu_device(mconfig, LC8670, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_BIG, 8, 16, 0)
+ , m_data_config("data", ENDIANNESS_BIG, 8, 9, 0, ADDRESS_MAP_NAME(lc8670_internal_map))
+ , m_io_config("io", ENDIANNESS_BIG, 8, 8, 0)
+ , m_pc(0)
+ , m_ppc(0)
+ , m_bankswitch_func(*this)
{
memset(m_sfr, 0x00, sizeof(m_sfr));
memset(m_timer0, 0x00, sizeof(m_timer0));
@@ -204,7 +204,7 @@ void lc8670_cpu_device::device_start()
// setup timers
m_basetimer = timer_alloc(BASE_TIMER);
- m_basetimer->adjust(attotime::from_hz(m_clocks[LC8670_SUB_CLOCK]), 0, attotime::from_hz(m_clocks[LC8670_SUB_CLOCK]));
+ m_basetimer->adjust(attotime::from_hz(m_clocks[unsigned(clock_source::SUB)]), 0, attotime::from_hz(m_clocks[unsigned(clock_source::SUB)]));
m_clocktimer = timer_alloc(CLOCK_TIMER);
// register state for debugger
@@ -1168,14 +1168,14 @@ inline void lc8670_cpu_device::change_clock_source()
switch(REG_OCR & 0x30)
{
case 0x00:
- new_clock = m_clocks[LC8670_RC_CLOCK];
+ new_clock = m_clocks[unsigned(clock_source::RC)];
break;
case 0x20:
- new_clock = m_clocks[LC8670_SUB_CLOCK];
+ new_clock = m_clocks[unsigned(clock_source::SUB)];
break;
case 0x10:
case 0x30:
- new_clock = m_clocks[LC8670_CF_CLOCK];
+ new_clock = m_clocks[unsigned(clock_source::CF)];
break;
}
diff --git a/src/devices/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h
index e2fc9582e48..cec7274a567 100644
--- a/src/devices/cpu/lc8670/lc8670.h
+++ b/src/devices/cpu/lc8670/lc8670.h
@@ -6,22 +6,16 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_CPU_LC8670_LC8670_H
+#define MAME_CPU_LC8670_LC8670_H
-#ifndef __LC8670_H__
-#define __LC8670_H__
+#pragma once
//**************************************************************************
// DEFINITION
//**************************************************************************
-enum
-{
- LC8670_PC = 1,
- LC8670_SFR
-};
-
// input ports
enum
{
@@ -39,20 +33,10 @@ enum
LC8670_EXT_INT3 // P73
};
-// clock sources
-enum
-{
- LC8670_SUB_CLOCK = 0,
- LC8670_RC_CLOCK,
- LC8670_CF_CLOCK
-};
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-typedef uint32_t (*lc8670_lcd_update)(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t* vram, bool lcd_enabled, uint8_t stad);
#define LC8670_LCD_UPDATE(name) uint32_t name(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t* vram, bool lcd_enabled, uint8_t stad)
@@ -61,9 +45,9 @@ typedef uint32_t (*lc8670_lcd_update)(device_t &device, bitmap_ind16 &bitmap, co
//**************************************************************************
#define MCFG_LC8670_SET_CLOCK_SOURCES(_sub_clock, _rc_clock, _cf_clock) \
- lc8670_cpu_device::static_set_cpu_clock(*device, LC8670_SUB_CLOCK, _sub_clock); \
- lc8670_cpu_device::static_set_cpu_clock(*device, LC8670_RC_CLOCK, _rc_clock); \
- lc8670_cpu_device::static_set_cpu_clock(*device, LC8670_CF_CLOCK, _cf_clock);
+ lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::SUB, _sub_clock); \
+ lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::RC, _rc_clock); \
+ lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::CF, _cf_clock);
#define MCFG_LC8670_BANKSWITCH_CB(_devcb) \
devcb = &lc8670_cpu_device::static_set_bankswitch_cb(*device, DEVCB_##_devcb);
@@ -76,6 +60,15 @@ typedef uint32_t (*lc8670_lcd_update)(device_t &device, bitmap_ind16 &bitmap, co
class lc8670_cpu_device : public cpu_device
{
public:
+ enum class clock_source
+ {
+ SUB = 0,
+ RC,
+ CF
+ };
+
+ typedef uint32_t (*lcd_update)(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t* vram, bool lcd_enabled, uint8_t stad);
+
// construction/destruction
lc8670_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
@@ -91,11 +84,17 @@ public:
DECLARE_WRITE8_MEMBER(xram_w);
// static configuration helpers
- static void static_set_cpu_clock(device_t &device, int _source, uint32_t _clock) { downcast<lc8670_cpu_device &>(device).m_clocks[_source] = _clock; }
- static void static_set_lcd_update_cb(device_t &device, lc8670_lcd_update _cb) { downcast<lc8670_cpu_device &>(device).m_lcd_update_func = _cb; }
- template<class _Object> static devcb_base & static_set_bankswitch_cb(device_t &device, _Object object) { return downcast<lc8670_cpu_device &>(device).m_bankswitch_func.set_callback(object); }
+ static void static_set_cpu_clock(device_t &device, clock_source source, uint32_t clock) { downcast<lc8670_cpu_device &>(device).m_clocks[unsigned(source)] = clock; }
+ static void static_set_lcd_update_cb(device_t &device, lcd_update cb) { downcast<lc8670_cpu_device &>(device).m_lcd_update_func = cb; }
+ template <class Object> static devcb_base & static_set_bankswitch_cb(device_t &device, Object &&cb) { return downcast<lc8670_cpu_device &>(device).m_bankswitch_func.set_callback(std::forward<Object>(cb)); }
protected:
+ enum
+ {
+ LC8670_PC = 1,
+ LC8670_SFR
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -194,7 +193,6 @@ private:
int op_rolc();
int op_xor();
-private:
address_space_config m_program_config;
address_space_config m_data_config;
address_space_config m_io_config;
@@ -234,7 +232,7 @@ private:
// configuration
uint32_t m_clocks[3]; // clock sources
devcb_write8 m_bankswitch_func; // bankswitch CB
- lc8670_lcd_update m_lcd_update_func; // LCD update CB
+ lcd_update m_lcd_update_func; // LCD update CB
// interrupts vectors
static const uint16_t s_irq_vectors[16];
@@ -271,6 +269,6 @@ private:
static const dasm_entry s_dasm_table[80];
};
-extern const device_type LC8670;
+DECLARE_DEVICE_TYPE(LC8670, lc8670_cpu_device)
-#endif /* __LC8670_H__ */
+#endif // MAME_CPU_LC8670_LC8670_H
diff --git a/src/devices/cpu/lh5801/lh5801.cpp b/src/devices/cpu/lh5801/lh5801.cpp
index b7467695a68..3ab8bd38a35 100644
--- a/src/devices/cpu/lh5801/lh5801.cpp
+++ b/src/devices/cpu/lh5801/lh5801.cpp
@@ -15,13 +15,14 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
-
#include "lh5801.h"
+#include "debugger.h"
+
#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+#include "logmacro.h"
+
enum
{
@@ -62,11 +63,11 @@ enum
#define H 0x10
-const device_type LH5801 = device_creator<lh5801_cpu_device>;
+DEFINE_DEVICE_TYPE(LH5801, lh5801_cpu_device, "lh5801", "LH5801")
lh5801_cpu_device::lh5801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, LH5801, "LH5801", tag, owner, clock, "lh5801", __FILE__)
+ : cpu_device(mconfig, LH5801, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 16, 0)
, m_in_func(*this)
diff --git a/src/devices/cpu/lh5801/lh5801.h b/src/devices/cpu/lh5801/lh5801.h
index d48c8661e01..4e7433dfb5d 100644
--- a/src/devices/cpu/lh5801/lh5801.h
+++ b/src/devices/cpu/lh5801/lh5801.h
@@ -7,10 +7,10 @@
*
*
*****************************************************************************/
-#pragma once
+#ifndef MAME_CPU_LH5801_LH5801_H
+#define MAME_CPU_LH5801_LH5801_H
-#ifndef __LH5801_H__
-#define __LH5801_H__
+#pragma once
/*
lh5801
@@ -71,7 +71,7 @@ public:
lh5801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_in_func(device_t &device, _Object object) { return downcast<lh5801_cpu_device &>(device).m_in_func.set_callback(object); }
+ template <class Object> static devcb_base &set_in_func(device_t &device, Object &&cb) { return downcast<lh5801_cpu_device &>(device).m_in_func.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
@@ -87,7 +87,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_IO) ? &m_io_config : nullptr; }
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
@@ -182,7 +182,7 @@ private:
};
-extern const device_type LH5801;
+DECLARE_DEVICE_TYPE(LH5801, lh5801_cpu_device)
-#endif /* __LH5801_H__ */
+#endif // MAME_CPU_LH5801_LH5801_H
diff --git a/src/devices/cpu/lr35902/lr35902.cpp b/src/devices/cpu/lr35902/lr35902.cpp
index 5602a19d721..c4b454c8719 100644
--- a/src/devices/cpu/lr35902/lr35902.cpp
+++ b/src/devices/cpu/lr35902/lr35902.cpp
@@ -40,8 +40,8 @@
/*************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "lr35902.h"
+#include "debugger.h"
/* Flag bit definitions */
enum lr35902_flag
@@ -60,11 +60,11 @@ enum lr35902_flag
// LR35902 DEVICE
//**************************************************************************
-const device_type LR35902 = device_creator<lr35902_cpu_device>;
+DEFINE_DEVICE_TYPE(LR35902, lr35902_cpu_device, "lr35902", "LR35902")
lr35902_cpu_device::lr35902_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, LR35902, "LR35902", tag, owner, clock, "lr35902", __FILE__)
+ : cpu_device(mconfig, LR35902, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0)
, m_A(0)
, m_F(0)
diff --git a/src/devices/cpu/lr35902/lr35902.h b/src/devices/cpu/lr35902/lr35902.h
index b1b511db760..120cf6836b7 100644
--- a/src/devices/cpu/lr35902/lr35902.h
+++ b/src/devices/cpu/lr35902/lr35902.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#pragma once
+#ifndef MAME_CPU_LR35902_LR35902_H
+#define MAME_CPU_LR35902_LR35902_H
-#ifndef __LR35902_H__
-#define __LR35902_H__
+#pragma once
#define MCFG_LR35902_TIMER_CB(_devcb) \
@@ -33,7 +33,7 @@ enum
};
-class lr35902_cpu_device : public cpu_device
+class lr35902_cpu_device : public cpu_device
{
public:
// construction/destruction
@@ -140,6 +140,6 @@ protected:
devcb_write32 m_incdec16_func;
};
-extern const device_type LR35902;
+DECLARE_DEVICE_TYPE(LR35902, lr35902_cpu_device)
-#endif /* __LR35902_H__ */
+#endif // MAME_CPU_LR35902_LR35902_H
diff --git a/src/devices/cpu/m37710/m37710.cpp b/src/devices/cpu/m37710/m37710.cpp
index 44af6a383cc..b17e9d5e2e5 100644
--- a/src/devices/cpu/m37710/m37710.cpp
+++ b/src/devices/cpu/m37710/m37710.cpp
@@ -62,9 +62,9 @@
#define M37710_DEBUG (0) // enables verbose logging for peripherals, etc.
-const device_type M37702M2 = device_creator<m37702m2_device>;
-const device_type M37702S1 = device_creator<m37702s1_device>;
-const device_type M37710S4 = device_creator<m37710s4_device>;
+DEFINE_DEVICE_TYPE(M37702M2, m37702m2_device, "m37702m2", "M37702M2")
+DEFINE_DEVICE_TYPE(M37702S1, m37702s1_device, "m37702s1", "M37702S1")
+DEFINE_DEVICE_TYPE(M37710S4, m37710s4_device, "m37710s4", "M37710S4")
// On-board RAM, ROM, and peripherals
@@ -94,8 +94,8 @@ ADDRESS_MAP_END
// many other combinations of RAM and ROM size exist
-m37710_cpu_device::m37710_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_delegate map_delegate)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+m37710_cpu_device::m37710_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_delegate map_delegate)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 24, 0, map_delegate)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 16, 0)
{
@@ -103,25 +103,25 @@ m37710_cpu_device::m37710_cpu_device(const machine_config &mconfig, device_type
m37702m2_device::m37702m2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m37710_cpu_device(mconfig, M37702M2, "M37702M2", tag, owner, clock, "m37702m2", __FILE__, address_map_delegate(FUNC(m37702m2_device::map), this))
+ : m37702m2_device(mconfig, M37702M2, tag, owner, clock)
{
}
-m37702m2_device::m37702m2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : m37710_cpu_device(mconfig, type, name, tag, owner, clock, shortname, source, address_map_delegate(FUNC(m37702m2_device::map), this))
+m37702m2_device::m37702m2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : m37710_cpu_device(mconfig, type, tag, owner, clock, address_map_delegate(FUNC(m37702m2_device::map), this))
{
}
m37702s1_device::m37702s1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m37710_cpu_device(mconfig, M37702S1, "M37702S1", tag, owner, clock, "m37702s1", __FILE__, address_map_delegate(FUNC(m37702s1_device::map), this))
+ : m37710_cpu_device(mconfig, M37702S1, tag, owner, clock, address_map_delegate(FUNC(m37702s1_device::map), this))
{
}
m37710s4_device::m37710s4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m37710_cpu_device(mconfig, M37710S4, "M37710S4", tag, owner, clock, "m37710s4", __FILE__, address_map_delegate(FUNC(m37710s4_device::map), this))
+ : m37710_cpu_device(mconfig, M37710S4, tag, owner, clock, address_map_delegate(FUNC(m37710s4_device::map), this))
{
}
diff --git a/src/devices/cpu/m37710/m37710.h b/src/devices/cpu/m37710/m37710.h
index d775b8564c3..64a9c21b692 100644
--- a/src/devices/cpu/m37710/m37710.h
+++ b/src/devices/cpu/m37710/m37710.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont, Karl Stenerud, hap
-#ifndef __M37710_H__
-#define __M37710_H__
+#ifndef MAME_CPU_M37710_M37710_H
+#define MAME_CPU_M37710_M37710_H
/* ======================================================================== */
/* =============================== COPYRIGHT ============================== */
@@ -93,13 +93,13 @@ enum
class m37710_cpu_device : public cpu_device
{
public:
- // construction/destruction
- m37710_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_delegate map_delegate);
-
DECLARE_READ16_MEMBER( m37710_internal_word_r );
DECLARE_WRITE16_MEMBER( m37710_internal_word_w );
protected:
+ // construction/destruction
+ m37710_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_delegate map_delegate);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -2024,8 +2024,8 @@ class m37702m2_device : public m37710_cpu_device
public:
// construction/destruction
m37702m2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m37702m2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ m37702m2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
DECLARE_ADDRESS_MAP(map, 16);
};
@@ -2039,13 +2039,13 @@ protected:
};
-extern const device_type M37702M2;
-extern const device_type M37702S1;
-extern const device_type M37710S4;
+DECLARE_DEVICE_TYPE(M37702M2, m37702m2_device)
+DECLARE_DEVICE_TYPE(M37702S1, m37702s1_device)
+DECLARE_DEVICE_TYPE(M37710S4, m37710s4_device)
/* ======================================================================== */
/* ============================== END OF FILE ============================= */
/* ======================================================================== */
-#endif /* __M37710_H__ */
+#endif // MAME_CPU_M37710_M37710_H
diff --git a/src/devices/cpu/m6502/deco16.cpp b/src/devices/cpu/m6502/deco16.cpp
index b32db04191b..66404758eb5 100644
--- a/src/devices/cpu/m6502/deco16.cpp
+++ b/src/devices/cpu/m6502/deco16.cpp
@@ -13,10 +13,10 @@
#define DECO16_VERBOSE 1
-const device_type DECO16 = device_creator<deco16_device>;
+DEFINE_DEVICE_TYPE(DECO16, deco16_device, "deco16", "DECO16")
deco16_device::deco16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6502_device(mconfig, DECO16, "DECO16", tag, owner, clock, "deco16", __FILE__),
+ m6502_device(mconfig, DECO16, tag, owner, clock),
io(nullptr),
io_config("io", ENDIANNESS_LITTLE, 8, 16)
{
diff --git a/src/devices/cpu/m6502/deco16.h b/src/devices/cpu/m6502/deco16.h
index f018ddec056..73c2314d945 100644
--- a/src/devices/cpu/m6502/deco16.h
+++ b/src/devices/cpu/m6502/deco16.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef __DECO16_H__
-#define __DECO16_H__
+#ifndef MAME_CPU_M6502_DECO16_H
+#define MAME_CPU_M6502_DECO16_H
#include "m6502.h"
@@ -57,6 +57,6 @@ enum {
DECO16_SET_OVERFLOW = m6502_device::V_LINE
};
-extern const device_type DECO16;
+DECLARE_DEVICE_TYPE(DECO16, deco16_device)
-#endif
+#endif // MAME_CPU_M6502_DECO16_H
diff --git a/src/devices/cpu/m6502/m3745x.cpp b/src/devices/cpu/m6502/m3745x.cpp
index bbb46b9eb49..d92e2835e57 100644
--- a/src/devices/cpu/m6502/m3745x.cpp
+++ b/src/devices/cpu/m6502/m3745x.cpp
@@ -28,7 +28,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type M37450 = device_creator<m37450_device>;
+DEFINE_DEVICE_TYPE(M37450, m37450_device, "m37450", "Mitsubishi M37450")
//**************************************************************************
// LIVE DEVICE
@@ -37,8 +37,8 @@ const device_type M37450 = device_creator<m37450_device>;
//-------------------------------------------------
// m3745x_device - constructor
//-------------------------------------------------
-m3745x_device::m3745x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map, const char *shortname, const char *source) :
- m740_device(mconfig, type, name, tag, owner, clock, "m3745x", source),
+m3745x_device::m3745x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map) :
+ m740_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0, internal_map),
read_p3(*this),
read_p4(*this),
@@ -499,11 +499,11 @@ static ADDRESS_MAP_START( m37450_map, AS_PROGRAM, 8, m37450_device )
ADDRESS_MAP_END
m37450_device::m37450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m3745x_device(mconfig, M37450, "Mitsubishi M37450", tag, owner, clock, ADDRESS_MAP_NAME(m37450_map), "m3745x", __FILE__)
+ m37450_device(mconfig, M37450, tag, owner, clock)
{
}
-m37450_device::m37450_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- m3745x_device(mconfig, type, name, tag, owner, clock, ADDRESS_MAP_NAME(m37450_map), shortname, source)
+m37450_device::m37450_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ m3745x_device(mconfig, type, tag, owner, clock, ADDRESS_MAP_NAME(m37450_map))
{
}
diff --git a/src/devices/cpu/m6502/m3745x.h b/src/devices/cpu/m6502/m3745x.h
index 6b85aee9c20..2b592ae4e9e 100644
--- a/src/devices/cpu/m6502/m3745x.h
+++ b/src/devices/cpu/m6502/m3745x.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#pragma once
+#ifndef MAME_CPU_M6502_M3745X_H
+#define MAME_CPU_M6502_M3745X_H
-#ifndef __M3745X_H__
-#define __M3745X_H__
+#pragma once
#include "m740.h"
@@ -60,9 +60,6 @@ public:
M3745X_SET_OVERFLOW = M740_SET_OVERFLOW
};
- // construction/destruction
- m3745x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map, const char *shortname, const char *source);
-
const address_space_config m_program_config;
template<class _read, class _write> void set_p3_callbacks(_read rd, _write wr)
@@ -120,6 +117,9 @@ public:
bool are_port_bits_output(uint8_t port, uint8_t mask) { return ((m_ddrs[port] & mask) == mask) ? true : false; }
protected:
+ // construction/destruction
+ m3745x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -145,9 +145,11 @@ class m37450_device : public m3745x_device
{
public:
m37450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m37450_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+
+protected:
+ m37450_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type M37450;
+DECLARE_DEVICE_TYPE(M37450, m37450_device)
-#endif
+#endif // MAME_CPU_M6502_M3745X_H
diff --git a/src/devices/cpu/m6502/m4510.cpp b/src/devices/cpu/m6502/m4510.cpp
index 45f2c369b3e..fb84a15112a 100644
--- a/src/devices/cpu/m6502/m4510.cpp
+++ b/src/devices/cpu/m6502/m4510.cpp
@@ -11,10 +11,10 @@
#include "emu.h"
#include "m4510.h"
-const device_type M4510 = device_creator<m4510_device>;
+DEFINE_DEVICE_TYPE(M4510, m4510_device, "m4510", "M4510")
m4510_device::m4510_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m65ce02_device(mconfig, M4510, "M4510", tag, owner, clock, "m4510", __FILE__),
+ m65ce02_device(mconfig, M4510, tag, owner, clock),
map_enable(0),
nomap(false)
{
diff --git a/src/devices/cpu/m6502/m4510.h b/src/devices/cpu/m6502/m4510.h
index 62e55ea7a8c..4b25f0c9c26 100644
--- a/src/devices/cpu/m6502/m4510.h
+++ b/src/devices/cpu/m6502/m4510.h
@@ -8,8 +8,10 @@
***************************************************************************/
-#ifndef __M4510_H__
-#define __M4510_H__
+#ifndef MAME_CPU_M6502_M4510_H
+#define MAME_CPU_M6502_M4510_H
+
+#pragma once
#include "m65ce02.h"
@@ -77,6 +79,6 @@ enum {
M4510_NMI_LINE = m6502_device::NMI_LINE
};
-extern const device_type M4510;
+DECLARE_DEVICE_TYPE(M4510, m4510_device)
-#endif
+#endif // MAME_CPU_M6502_M4510_H
diff --git a/src/devices/cpu/m6502/m5074x.cpp b/src/devices/cpu/m6502/m5074x.cpp
index 9ea21e760cb..9498774c62d 100644
--- a/src/devices/cpu/m6502/m5074x.cpp
+++ b/src/devices/cpu/m6502/m5074x.cpp
@@ -29,8 +29,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type M50740 = device_creator<m50740_device>;
-const device_type M50741 = device_creator<m50741_device>;
+DEFINE_DEVICE_TYPE(M50740, m50740_device, "m50740", "Mitsubishi M50740")
+DEFINE_DEVICE_TYPE(M50741, m50741_device, "m50741", "Mitsubishi M50741")
//**************************************************************************
// LIVE DEVICE
@@ -39,8 +39,8 @@ const device_type M50741 = device_creator<m50741_device>;
//-------------------------------------------------
// m5074x_device - constructor
//-------------------------------------------------
-m5074x_device::m5074x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map, const char *shortname, const char *source) :
- m740_device(mconfig, type, name, tag, owner, clock, shortname, source),
+m5074x_device::m5074x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map) :
+ m740_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_LITTLE, 8, 13, 0, internal_map),
read_p0(*this),
read_p1(*this),
@@ -490,12 +490,12 @@ static ADDRESS_MAP_START( m50740_map, AS_PROGRAM, 8, m50740_device )
ADDRESS_MAP_END
m50740_device::m50740_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m5074x_device(mconfig, M50740, "Mitsubishi M50740", tag, owner, clock, ADDRESS_MAP_NAME(m50740_map), "m50740", __FILE__)
+ m50740_device(mconfig, M50740, tag, owner, clock)
{
}
-m50740_device::m50740_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- m5074x_device(mconfig, type, name, tag, owner, clock, ADDRESS_MAP_NAME(m50740_map), shortname, source)
+m50740_device::m50740_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ m5074x_device(mconfig, type, tag, owner, clock, ADDRESS_MAP_NAME(m50740_map))
{
}
@@ -508,11 +508,11 @@ static ADDRESS_MAP_START( m50741_map, AS_PROGRAM, 8, m50741_device )
ADDRESS_MAP_END
m50741_device::m50741_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m5074x_device(mconfig, M50740, "Mitsubishi M50741", tag, owner, clock, ADDRESS_MAP_NAME(m50741_map), "m50741", __FILE__)
+ m50741_device(mconfig, M50740, tag, owner, clock)
{
}
-m50741_device::m50741_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- m5074x_device(mconfig, type, name, tag, owner, clock, ADDRESS_MAP_NAME(m50741_map), shortname, source)
+m50741_device::m50741_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ m5074x_device(mconfig, type, tag, owner, clock, ADDRESS_MAP_NAME(m50741_map))
{
}
diff --git a/src/devices/cpu/m6502/m5074x.h b/src/devices/cpu/m6502/m5074x.h
index 0486a243a24..635c0d9f552 100644
--- a/src/devices/cpu/m6502/m5074x.h
+++ b/src/devices/cpu/m6502/m5074x.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#pragma once
+#ifndef MAME_CPU_M6502_M5074X_H
+#define MAME_CPU_M6502_M5074X_H
-#ifndef __M5074X_H__
-#define __M5074X_H__
+#pragma once
#include "m740.h"
@@ -71,9 +71,6 @@ class m5074x_device : public m740_device
};
public:
- // construction/destruction
- m5074x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map, const char *shortname, const char *source);
-
const address_space_config m_program_config;
template<class _Object> static devcb_base &set_p0_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p0.set_callback(object); }
@@ -96,6 +93,9 @@ public:
bool are_port_bits_output(uint8_t port, uint8_t mask) { return ((m_ddrs[port] & mask) == mask) ? true : false; }
protected:
+ // construction/destruction
+ m5074x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -123,17 +123,21 @@ class m50740_device : public m5074x_device
{
public:
m50740_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m50740_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+
+protected:
+ m50740_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
class m50741_device : public m5074x_device
{
public:
m50741_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m50741_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+
+protected:
+ m50741_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type M50740;
-extern const device_type M50741;
+DECLARE_DEVICE_TYPE(M50740, m50740_device)
+DECLARE_DEVICE_TYPE(M50741, m50741_device)
-#endif
+#endif // MAME_CPU_M6502_M5074X_H
diff --git a/src/devices/cpu/m6502/m6502.cpp b/src/devices/cpu/m6502/m6502.cpp
index b6a93b00769..ea3f2662fca 100644
--- a/src/devices/cpu/m6502/m6502.cpp
+++ b/src/devices/cpu/m6502/m6502.cpp
@@ -12,20 +12,15 @@
#include "debugger.h"
#include "m6502.h"
-const device_type M6502 = device_creator<m6502_device>;
+DEFINE_DEVICE_TYPE(M6502, m6502_device, "m6502", "M6502")
m6502_device::m6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- cpu_device(mconfig, M6502, "M6502", tag, owner, clock, "m6502", __FILE__),
- sync_w(*this),
- program_config("program", ENDIANNESS_LITTLE, 8, 16),
- sprogram_config("decrypted_opcodes", ENDIANNESS_LITTLE, 8, 16), PPC(0), NPC(0), PC(0), SP(0), TMP(0), TMP2(0), A(0), X(0), Y(0), P(0), IR(0), inst_state_base(0), mintf(nullptr),
- inst_state(0), inst_substate(0), icount(0), nmi_state(false), irq_state(false), apu_irq_state(false), v_state(false), irq_taken(false), sync(false), inhibit_interrupts(false)
+ m6502_device(mconfig, M6502, tag, owner, clock)
{
- direct_disabled = false;
}
-m6502_device::m6502_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+m6502_device::m6502_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ cpu_device(mconfig, type, tag, owner, clock),
sync_w(*this),
program_config("program", ENDIANNESS_LITTLE, 8, 16),
sprogram_config("decrypted_opcodes", ENDIANNESS_LITTLE, 8, 16), PPC(0), NPC(0), PC(0), SP(0), TMP(0), TMP2(0), A(0), X(0), Y(0), P(0), IR(0), inst_state_base(0), mintf(nullptr),
diff --git a/src/devices/cpu/m6502/m6502.h b/src/devices/cpu/m6502/m6502.h
index bb112697431..d764e906ab8 100644
--- a/src/devices/cpu/m6502/m6502.h
+++ b/src/devices/cpu/m6502/m6502.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef __M6502FAM_H__
-#define __M6502FAM_H__
+#ifndef MAME_CPU_M6502_M6502_H
+#define MAME_CPU_M6502_M6502_H
#define MCFG_M6502_DISABLE_DIRECT() \
downcast<m6502_device *>(device)->disable_direct();
@@ -27,7 +27,6 @@ public:
};
m6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m6502_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
bool get_sync() const { return sync; }
void disable_direct() { direct_disabled = true; }
@@ -37,6 +36,8 @@ public:
devcb_write_line sync_w;
protected:
+ m6502_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
class memory_interface {
public:
address_space *program, *sprogram;
@@ -327,6 +328,6 @@ enum {
M6502_SET_OVERFLOW = m6502_device::V_LINE
};
-extern const device_type M6502;
+DECLARE_DEVICE_TYPE(M6502, m6502_device)
-#endif
+#endif // MAME_CPU_M6502_M6502_H
diff --git a/src/devices/cpu/m6502/m6504.cpp b/src/devices/cpu/m6502/m6504.cpp
index 4ec4c9ecb31..c6a20579333 100644
--- a/src/devices/cpu/m6502/m6504.cpp
+++ b/src/devices/cpu/m6502/m6504.cpp
@@ -11,10 +11,10 @@
#include "emu.h"
#include "m6504.h"
-const device_type M6504 = device_creator<m6504_device>;
+DEFINE_DEVICE_TYPE(M6504, m6504_device, "m6504", "M6504")
m6504_device::m6504_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6502_device(mconfig, M6504, "M6504", tag, owner, clock, "m6504", __FILE__)
+ m6502_device(mconfig, M6504, tag, owner, clock)
{
program_config.m_addrbus_width = 13;
sprogram_config.m_addrbus_width = 13;
diff --git a/src/devices/cpu/m6502/m6504.h b/src/devices/cpu/m6502/m6504.h
index fdd15ff46a6..94f0c68ce2a 100644
--- a/src/devices/cpu/m6502/m6504.h
+++ b/src/devices/cpu/m6502/m6504.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef __M6504_H__
-#define __M6504_H__
+#ifndef MAME_CPU_M6502_M6504_H
+#define MAME_CPU_M6502_M6504_H
#include "m6502.h"
@@ -46,4 +46,4 @@ enum {
extern const device_type M6504;
-#endif
+#endif // MAME_CPU_M6502_M6504_H
diff --git a/src/devices/cpu/m6502/m6507.cpp b/src/devices/cpu/m6502/m6507.cpp
index 21bb42dbd3e..d64b08c54c9 100644
--- a/src/devices/cpu/m6502/m6507.cpp
+++ b/src/devices/cpu/m6502/m6507.cpp
@@ -11,10 +11,10 @@
#include "emu.h"
#include "m6507.h"
-const device_type M6507 = device_creator<m6507_device>;
+DEFINE_DEVICE_TYPE(M6507, m6507_device, "m6507", "M6507")
m6507_device::m6507_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6502_device(mconfig, M6507, "M6507", tag, owner, clock, "m6507", __FILE__)
+ m6502_device(mconfig, M6507, tag, owner, clock)
{
program_config.m_addrbus_width = 13;
sprogram_config.m_addrbus_width = 13;
diff --git a/src/devices/cpu/m6502/m6507.h b/src/devices/cpu/m6502/m6507.h
index 256f1e4c8bb..93c39a35378 100644
--- a/src/devices/cpu/m6502/m6507.h
+++ b/src/devices/cpu/m6502/m6507.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef __M6507_H__
-#define __M6507_H__
+#ifndef MAME_CPU_M6502_M6507_H
+#define MAME_CPU_M6502_M6507_H
#include "m6502.h"
@@ -44,6 +44,6 @@ enum {
M6507_SET_OVERFLOW = m6502_device::V_LINE
};
-extern const device_type M6507;
+DECLARE_DEVICE_TYPE(M6507, m6507_device)
-#endif
+#endif // MAME_CPU_M6502_M6507_H
diff --git a/src/devices/cpu/m6502/m6509.cpp b/src/devices/cpu/m6502/m6509.cpp
index 5241c36d88a..729b919fb50 100644
--- a/src/devices/cpu/m6502/m6509.cpp
+++ b/src/devices/cpu/m6502/m6509.cpp
@@ -11,10 +11,10 @@
#include "emu.h"
#include "m6509.h"
-const device_type M6509 = device_creator<m6509_device>;
+DEFINE_DEVICE_TYPE(M6509, m6509_device, "m6509", "M6509")
m6509_device::m6509_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6502_device(mconfig, M6509, "M6509", tag, owner, clock, "m6509", __FILE__), XPC(0), bank_i(0), bank_y(0)
+ m6502_device(mconfig, M6509, tag, owner, clock), XPC(0), bank_i(0), bank_y(0)
{
program_config.m_addrbus_width = 20;
program_config.m_logaddr_width = 20;
diff --git a/src/devices/cpu/m6502/m6509.h b/src/devices/cpu/m6502/m6509.h
index 349ea8b20f7..0057f900c83 100644
--- a/src/devices/cpu/m6502/m6509.h
+++ b/src/devices/cpu/m6502/m6509.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef __M6509_H__
-#define __M6509_H__
+#ifndef MAME_CPU_M6502_M6509_H
+#define MAME_CPU_M6502_M6509_H
#include "m6502.h"
@@ -82,6 +82,6 @@ enum {
M6509_BY
};
-extern const device_type M6509;
+DECLARE_DEVICE_TYPE(M6509, m6509_device)
-#endif
+#endif // MAME_CPU_M6502_M6509_H
diff --git a/src/devices/cpu/m6502/m6510.cpp b/src/devices/cpu/m6502/m6510.cpp
index e1aa0937f76..e4b4585eaaa 100644
--- a/src/devices/cpu/m6502/m6510.cpp
+++ b/src/devices/cpu/m6502/m6510.cpp
@@ -11,19 +11,15 @@
#include "emu.h"
#include "m6510.h"
-const device_type M6510 = device_creator<m6510_device>;
+DEFINE_DEVICE_TYPE(M6510, m6510_device, "m6510", "M6510")
m6510_device::m6510_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6502_device(mconfig, M6510, "M6510", tag, owner, clock, "m6510", __FILE__),
- read_port(*this),
- write_port(*this), dir(0), port(0), drive(0)
+ m6510_device(mconfig, M6510, tag, owner, clock)
{
- pullup = 0x00;
- floating = 0x00;
}
-m6510_device::m6510_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- m6502_device(mconfig, type, name, tag, owner, clock, shortname, source),
+m6510_device::m6510_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ m6502_device(mconfig, type, tag, owner, clock),
read_port(*this),
write_port(*this), dir(0), port(0), drive(0)
{
diff --git a/src/devices/cpu/m6502/m6510.h b/src/devices/cpu/m6502/m6510.h
index e51bf21e718..d3819f4899f 100644
--- a/src/devices/cpu/m6502/m6510.h
+++ b/src/devices/cpu/m6502/m6510.h
@@ -7,9 +7,10 @@
6502 with 6 i/o pins, also known as 8500
***************************************************************************/
+#ifndef MAME_CPU_M6502_M6510_H
+#define MAME_CPU_M6502_M6510_H
-#ifndef __M6510FAM_H__
-#define __M6510FAM_H__
+#pragma once
#include "m6502.h"
@@ -22,7 +23,6 @@
class m6510_device : public m6502_device {
public:
m6510_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m6510_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
uint8_t get_port();
void set_pulls(uint8_t pullup, uint8_t pulldown);
@@ -39,6 +39,8 @@ public:
virtual void do_exec_partial() override;
protected:
+ m6510_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
class mi_6510_normal : public memory_interface {
public:
m6510_device *base;
@@ -93,6 +95,6 @@ enum {
M6510_NMI_LINE = m6502_device::NMI_LINE
};
-extern const device_type M6510;
+DECLARE_DEVICE_TYPE(M6510, m6510_device)
-#endif
+#endif // MAME_CPU_M6502_M6510_H
diff --git a/src/devices/cpu/m6502/m6510t.cpp b/src/devices/cpu/m6502/m6510t.cpp
index c2d9e750f5a..36844bbf655 100644
--- a/src/devices/cpu/m6502/m6510t.cpp
+++ b/src/devices/cpu/m6502/m6510t.cpp
@@ -11,9 +11,9 @@
#include "emu.h"
#include "m6510t.h"
-const device_type M6510T = device_creator<m6510t_device>;
+DEFINE_DEVICE_TYPE(M6510T, m6510t_device, "m6510t", "M6510T")
m6510t_device::m6510t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6510_device(mconfig, M6510T, "M6510T", tag, owner, clock, "m6510t", __FILE__)
+ m6510_device(mconfig, M6510T, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/m6502/m6510t.h b/src/devices/cpu/m6502/m6510t.h
index e27fe97ea98..04e683bd0c3 100644
--- a/src/devices/cpu/m6502/m6510t.h
+++ b/src/devices/cpu/m6502/m6510t.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef __M6510T_H__
-#define __M6510T_H__
+#ifndef MAME_CPU_M6502_M6510T_H
+#define MAME_CPU_M6502_M6510T_H
#include "m6510.h"
@@ -29,6 +29,6 @@ enum {
M6510T_SET_OVERFLOW = m6502_device::V_LINE
};
-extern const device_type M6510T;
+DECLARE_DEVICE_TYPE(M6510T, m6510t_device)
-#endif
+#endif // MAME_CPU_M6502_M6510T_H
diff --git a/src/devices/cpu/m6502/m65c02.cpp b/src/devices/cpu/m6502/m65c02.cpp
index 9f0a1d4cc9e..d109cc502bf 100644
--- a/src/devices/cpu/m6502/m65c02.cpp
+++ b/src/devices/cpu/m6502/m65c02.cpp
@@ -12,15 +12,15 @@
#include "emu.h"
#include "m65c02.h"
-const device_type M65C02 = device_creator<m65c02_device>;
+DEFINE_DEVICE_TYPE(M65C02, m65c02_device, "m65c02", "M65C02")
m65c02_device::m65c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6502_device(mconfig, M65C02, "M65C02", tag, owner, clock, "mc65c02", __FILE__)
+ m6502_device(mconfig, M65C02, tag, owner, clock)
{
}
-m65c02_device::m65c02_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- m6502_device(mconfig, type, name, tag, owner, clock, shortname, source)
+m65c02_device::m65c02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ m6502_device(mconfig, type, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/m6502/m65c02.h b/src/devices/cpu/m6502/m65c02.h
index 5d6d1503c2f..828556e5f83 100644
--- a/src/devices/cpu/m6502/m65c02.h
+++ b/src/devices/cpu/m6502/m65c02.h
@@ -8,16 +8,16 @@
not the bitwise ones)
***************************************************************************/
+#ifndef MAME_CPU_M6502_M65C02_H
+#define MAME_CPU_M6502_M65C02_H
-#ifndef __M65C02_H__
-#define __M65C02_H__
+#pragma once
#include "m6502.h"
class m65c02_device : public m6502_device {
public:
m65c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m65c02_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
static const disasm_entry disasm_entries[0x100];
@@ -26,6 +26,8 @@ public:
virtual void do_exec_partial() override;
protected:
+ m65c02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
#define O(o) void o ## _full(); void o ## _partial()
// 65c02 opcodes
@@ -71,6 +73,6 @@ enum {
M65C02_SET_OVERFLOW = m6502_device::V_LINE
};
-extern const device_type M65C02;
+DECLARE_DEVICE_TYPE(M65C02, m65c02_device)
-#endif
+#endif // MAME_CPU_M6502_M65C02_H
diff --git a/src/devices/cpu/m6502/m65ce02.cpp b/src/devices/cpu/m6502/m65ce02.cpp
index 0a167f75704..239e900ed6d 100644
--- a/src/devices/cpu/m6502/m65ce02.cpp
+++ b/src/devices/cpu/m6502/m65ce02.cpp
@@ -11,15 +11,15 @@
#include "emu.h"
#include "m65ce02.h"
-const device_type M65CE02 = device_creator<m65ce02_device>;
+DEFINE_DEVICE_TYPE(M65CE02, m65ce02_device, "m65ce02", "M65CE02")
m65ce02_device::m65ce02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m65c02_device(mconfig, M65CE02, "M65CE02", tag, owner, clock, "m65ce02", __FILE__), TMP3(0), Z(0), B(0)
+ m65ce02_device(mconfig, M65CE02, tag, owner, clock)
{
}
-m65ce02_device::m65ce02_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- m65c02_device(mconfig, type, name, tag, owner, clock, shortname, source), TMP3(0), Z(0), B(0)
+m65ce02_device::m65ce02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ m65c02_device(mconfig, type, tag, owner, clock), TMP3(0), Z(0), B(0)
{
}
diff --git a/src/devices/cpu/m6502/m65ce02.h b/src/devices/cpu/m6502/m65ce02.h
index 019ced7d0b2..191123683f6 100644
--- a/src/devices/cpu/m6502/m65ce02.h
+++ b/src/devices/cpu/m6502/m65ce02.h
@@ -7,16 +7,16 @@
6502 with Z register and some more stuff
***************************************************************************/
+#ifndef MAME_CPU_M6502_M65CE02_H
+#define MAME_CPU_M6502_M65CE02_H
-#ifndef __M65CE02_H__
-#define __M65CE02_H__
+#pragma once
#include "m65c02.h"
class m65ce02_device : public m65c02_device {
public:
m65ce02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m65ce02_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
static const disasm_entry disasm_entries[0x100];
@@ -25,6 +25,8 @@ public:
virtual void do_exec_partial() override;
protected:
+ m65ce02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
uint16_t TMP3; /* temporary internal values */
uint8_t Z; /* Z index register */
uint16_t B; /* Zero page base address (always xx00) */
@@ -148,6 +150,6 @@ enum {
M65CE02_B
};
-extern const device_type M65CE02;
+DECLARE_DEVICE_TYPE(M65CE02, m65ce02_device)
-#endif
+#endif // MAME_CPU_M6502_M65CE02_H
diff --git a/src/devices/cpu/m6502/m65sc02.cpp b/src/devices/cpu/m6502/m65sc02.cpp
index ae87d1ea78d..0fae547b4be 100644
--- a/src/devices/cpu/m6502/m65sc02.cpp
+++ b/src/devices/cpu/m6502/m65sc02.cpp
@@ -11,9 +11,9 @@
#include "emu.h"
#include "m65sc02.h"
-const device_type M65SC02 = device_creator<m65sc02_device>;
+DEFINE_DEVICE_TYPE(M65SC02, m65sc02_device, "m65sc02", "M65SC02")
m65sc02_device::m65sc02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- r65c02_device(mconfig, M65SC02, "M65SC02", tag, owner, clock, "m65sc02", __FILE__)
+ r65c02_device(mconfig, M65SC02, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/m6502/m65sc02.h b/src/devices/cpu/m6502/m65sc02.h
index 13e91a3d0e1..686411c0b22 100644
--- a/src/devices/cpu/m6502/m65sc02.h
+++ b/src/devices/cpu/m6502/m65sc02.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef __M65SC02_H__
-#define __M65SC02_H__
+#ifndef MAME_CPU_M6502_M65SC02_H
+#define MAME_CPU_M6502_M65SC02_H
#include "r65c02.h"
@@ -24,6 +24,6 @@ enum {
M65SC02_SET_OVERFLOW = m6502_device::V_LINE
};
-extern const device_type M65SC02;
+DECLARE_DEVICE_TYPE(M65SC02, m65sc02_device)
-#endif
+#endif // MAME_CPU_M6502_M65SC02_H
diff --git a/src/devices/cpu/m6502/m740.cpp b/src/devices/cpu/m6502/m740.cpp
index 9c4a45cce16..807eac55b09 100644
--- a/src/devices/cpu/m6502/m740.cpp
+++ b/src/devices/cpu/m6502/m740.cpp
@@ -11,15 +11,15 @@
#include "emu.h"
#include "m740.h"
-const device_type M740 = device_creator<m740_device>;
+DEFINE_DEVICE_TYPE(M740, m740_device, "m740", "M740")
m740_device::m740_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6502_device(mconfig, M740, "M740", tag, owner, clock, "m740", __FILE__), m_irq_multiplex(0), m_irq_vector(0)
+ m740_device(mconfig, M740, tag, owner, clock)
{
}
-m740_device::m740_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- m6502_device(mconfig, type, name, tag, owner, clock, shortname, source), m_irq_multiplex(0), m_irq_vector(0)
+m740_device::m740_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ m6502_device(mconfig, type, tag, owner, clock), m_irq_multiplex(0), m_irq_vector(0)
{
}
diff --git a/src/devices/cpu/m6502/m740.h b/src/devices/cpu/m6502/m740.h
index 2e94a82980a..350ea8bced6 100644
--- a/src/devices/cpu/m6502/m740.h
+++ b/src/devices/cpu/m6502/m740.h
@@ -8,50 +8,51 @@
***************************************************************************/
-#ifndef __M740_H__
-#define __M740_H__
+#ifndef MAME_CPU_M6502_M740_H
+#define MAME_CPU_M6502_M740_H
#include "m6502.h"
class m740_device : public m6502_device {
public:
- enum
- {
- M740_INT0_LINE = INPUT_LINE_IRQ0, // (fffc)
- M740_INT1_LINE, // (fffa)
- M740_INT2_LINE, // (fff8)
- M740_INT3_LINE, // (fff6)
- M740_INT4_LINE, // (fff4)
- M740_INT5_LINE, // (fff2)
- M740_INT6_LINE, // (fff0)
- M740_INT7_LINE, // (ffee)
- M740_INT8_LINE, // (ffec)
- M740_INT9_LINE, // (ffea)
- M740_INT10_LINE, // (ffe8)
- M740_INT11_LINE, // (ffe6)
- M740_INT12_LINE, // (ffe4)
- M740_INT13_LINE, // (ffe2)
- M740_INT14_LINE, // (ffe0)
- M740_MAX_INT_LINE = M740_INT14_LINE,
- M740_SET_OVERFLOW = m6502_device::V_LINE
- };
-
- m740_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m740_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- virtual void device_start() override;
- virtual void device_reset() override;
-
- static const disasm_entry disasm_entries[0x200];
-
- virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
-
- virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
- virtual void do_exec_full() override;
- virtual void do_exec_partial() override;
- virtual void execute_set_input(int inputnum, int state) override;
+ enum
+ {
+ M740_INT0_LINE = INPUT_LINE_IRQ0, // (fffc)
+ M740_INT1_LINE, // (fffa)
+ M740_INT2_LINE, // (fff8)
+ M740_INT3_LINE, // (fff6)
+ M740_INT4_LINE, // (fff4)
+ M740_INT5_LINE, // (fff2)
+ M740_INT6_LINE, // (fff0)
+ M740_INT7_LINE, // (ffee)
+ M740_INT8_LINE, // (ffec)
+ M740_INT9_LINE, // (ffea)
+ M740_INT10_LINE, // (ffe8)
+ M740_INT11_LINE, // (ffe6)
+ M740_INT12_LINE, // (ffe4)
+ M740_INT13_LINE, // (ffe2)
+ M740_INT14_LINE, // (ffe0)
+ M740_MAX_INT_LINE = M740_INT14_LINE,
+ M740_SET_OVERFLOW = m6502_device::V_LINE
+ };
+
+ m740_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ static const disasm_entry disasm_entries[0x200];
+
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
+
+ virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
+ virtual void do_exec_full() override;
+ virtual void do_exec_partial() override;
+ virtual void execute_set_input(int inputnum, int state) override;
protected:
+ m740_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
#define O(o) void o ## _full(); void o ## _partial()
uint8_t do_clb(uint8_t in, uint8_t bit);
@@ -100,6 +101,6 @@ protected:
void set_irq_line(int line, int state);
};
-extern const device_type M740;
+DECLARE_DEVICE_TYPE(M740, m740_device)
-#endif
+#endif // MAME_CPU_M6502_M740_H
diff --git a/src/devices/cpu/m6502/m7501.cpp b/src/devices/cpu/m6502/m7501.cpp
index 826ae10ad15..912a7a023dd 100644
--- a/src/devices/cpu/m6502/m7501.cpp
+++ b/src/devices/cpu/m6502/m7501.cpp
@@ -11,9 +11,9 @@
#include "emu.h"
#include "m7501.h"
-const device_type M7501 = device_creator<m7501_device>;
+DEFINE_DEVICE_TYPE(M7501, m7501_device, "m7501", "M7501")
m7501_device::m7501_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6510_device(mconfig, M7501, "M7501", tag, owner, clock, "m7501", __FILE__)
+ m6510_device(mconfig, M7501, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/m6502/m7501.h b/src/devices/cpu/m6502/m7501.h
index 7912d3af0de..90087eebe97 100644
--- a/src/devices/cpu/m6502/m7501.h
+++ b/src/devices/cpu/m6502/m7501.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef __M7501_H__
-#define __M7501_H__
+#ifndef MAME_CPU_M6502_M7501_H
+#define MAME_CPU_M6502_M7501_H
#include "m6510.h"
@@ -31,4 +31,4 @@ enum {
extern const device_type M7501;
-#endif
+#endif // MAME_CPU_M6502_M7501_H
diff --git a/src/devices/cpu/m6502/m8502.cpp b/src/devices/cpu/m6502/m8502.cpp
index 897bd3e00e2..75a4a2f7b25 100644
--- a/src/devices/cpu/m6502/m8502.cpp
+++ b/src/devices/cpu/m6502/m8502.cpp
@@ -11,9 +11,9 @@
#include "emu.h"
#include "m8502.h"
-const device_type M8502 = device_creator<m8502_device>;
+DEFINE_DEVICE_TYPE(M8502, m8502_device, "m8502", "M8502")
m8502_device::m8502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6510_device(mconfig, M8502, "M8502", tag, owner, clock, "m8502", __FILE__)
+ m6510_device(mconfig, M8502, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/m6502/m8502.h b/src/devices/cpu/m6502/m8502.h
index 4967f8379bc..bc52b45ef2c 100644
--- a/src/devices/cpu/m6502/m8502.h
+++ b/src/devices/cpu/m6502/m8502.h
@@ -7,9 +7,10 @@
6510 derivative, capable of running at 2MHz.
***************************************************************************/
+#ifndef MAME_CPU_M6502_M8502_H
+#define MAME_CPU_M6502_M8502_H
-#ifndef __M8502_H__
-#define __M8502_H__
+#pragma once
#include "m6510.h"
@@ -29,6 +30,6 @@ enum {
M8502_NMI_LINE = m6502_device::NMI_LINE
};
-extern const device_type M8502;
+DECLARE_DEVICE_TYPE(M8502, m8502_device)
-#endif
+#endif // MAME_CPU_M6502_M8502_H
diff --git a/src/devices/cpu/m6502/n2a03.cpp b/src/devices/cpu/m6502/n2a03.cpp
index 772f6ebda54..d01caa89fda 100644
--- a/src/devices/cpu/m6502/n2a03.cpp
+++ b/src/devices/cpu/m6502/n2a03.cpp
@@ -11,7 +11,7 @@
#include "emu.h"
#include "n2a03.h"
-const device_type N2A03 = device_creator<n2a03_device>;
+DEFINE_DEVICE_TYPE(N2A03, n2a03_device, "n2a03", "N2A03")
READ8_MEMBER(n2a03_device::psg1_4014_r)
{
@@ -50,7 +50,7 @@ ADDRESS_MAP_END
n2a03_device::n2a03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6502_device(mconfig, N2A03, "N2A03", tag, owner, clock, "n2a03", __FILE__),
+ m6502_device(mconfig, N2A03, tag, owner, clock),
m_apu(*this, "nesapu"),
m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0, ADDRESS_MAP_NAME(n2a03_map))
{
diff --git a/src/devices/cpu/m6502/n2a03.h b/src/devices/cpu/m6502/n2a03.h
index 3f406af15e9..54fc137c8e6 100644
--- a/src/devices/cpu/m6502/n2a03.h
+++ b/src/devices/cpu/m6502/n2a03.h
@@ -7,9 +7,10 @@
6502, NES variant
***************************************************************************/
+#ifndef MAME_CPU_M6502_N2A03_H
+#define MAME_CPU_M6502_N2A03_H
-#ifndef __N2A03_H__
-#define __N2A03_H__
+#pragma once
#include "m6502.h"
#include "sound/nes_apu.h"
@@ -89,6 +90,6 @@ enum {
N2A03_SET_OVERFLOW = m6502_device::V_LINE
};
-extern const device_type N2A03;
+DECLARE_DEVICE_TYPE(N2A03, n2a03_device)
-#endif
+#endif // MAME_CPU_M6502_N2A03_H
diff --git a/src/devices/cpu/m6502/r65c02.cpp b/src/devices/cpu/m6502/r65c02.cpp
index eb6d85be265..53c5b40b662 100644
--- a/src/devices/cpu/m6502/r65c02.cpp
+++ b/src/devices/cpu/m6502/r65c02.cpp
@@ -11,15 +11,15 @@
#include "emu.h"
#include "r65c02.h"
-const device_type R65C02 = device_creator<r65c02_device>;
+DEFINE_DEVICE_TYPE(R65C02, r65c02_device, "r65c02", "R65C02")
r65c02_device::r65c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m65c02_device(mconfig, R65C02, "R65C02", tag, owner, clock, "r65c02", __FILE__)
+ r65c02_device(mconfig, R65C02, tag, owner, clock)
{
}
-r65c02_device::r65c02_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- m65c02_device(mconfig, type, name, tag, owner, clock, shortname, source)
+r65c02_device::r65c02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ m65c02_device(mconfig, type, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/m6502/r65c02.h b/src/devices/cpu/m6502/r65c02.h
index 4a406654422..41cea972944 100644
--- a/src/devices/cpu/m6502/r65c02.h
+++ b/src/devices/cpu/m6502/r65c02.h
@@ -8,21 +8,23 @@
***************************************************************************/
-#ifndef __R65C02_H__
-#define __R65C02_H__
+#ifndef MAME_CPU_M6502_R65C02_H
+#define MAME_CPU_M6502_R65C02_H
#include "m65c02.h"
class r65c02_device : public m65c02_device {
public:
r65c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- r65c02_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
static const disasm_entry disasm_entries[0x100];
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
virtual void do_exec_full() override;
virtual void do_exec_partial() override;
+
+protected:
+ r65c02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
enum {
@@ -31,6 +33,6 @@ enum {
R65C02_SET_OVERFLOW = m6502_device::V_LINE
};
-extern const device_type R65C02;
+DECLARE_DEVICE_TYPE(R65C02, r65c02_device)
-#endif
+#endif // MAME_CPU_M6502_R65C02_H
diff --git a/src/devices/cpu/m6800/m6800.cpp b/src/devices/cpu/m6800/m6800.cpp
index 5bc454a281e..5b13a1b5d20 100644
--- a/src/devices/cpu/m6800/m6800.cpp
+++ b/src/devices/cpu/m6800/m6800.cpp
@@ -520,34 +520,25 @@ const uint8_t m6800_cpu_device::cycles_nsc8105[256] =
}
-const device_type M6800 = device_creator<m6800_cpu_device>;
-const device_type M6801 = device_creator<m6801_cpu_device>;
-const device_type M6802 = device_creator<m6802_cpu_device>;
-const device_type M6803 = device_creator<m6803_cpu_device>;
-const device_type M6808 = device_creator<m6808_cpu_device>;
-const device_type HD6301 = device_creator<hd6301_cpu_device>;
-const device_type HD63701 = device_creator<hd63701_cpu_device>;
-const device_type NSC8105 = device_creator<nsc8105_cpu_device>;
-const device_type HD6303R = device_creator<hd6303r_cpu_device>;
-const device_type HD6303Y = device_creator<hd6303y_cpu_device>;
+DEFINE_DEVICE_TYPE(M6800, m6800_cpu_device, "m6800", "M6800")
+DEFINE_DEVICE_TYPE(M6801, m6801_cpu_device, "m6801", "M6801")
+DEFINE_DEVICE_TYPE(M6802, m6802_cpu_device, "m6802", "M6802")
+DEFINE_DEVICE_TYPE(M6803, m6803_cpu_device, "m6803", "M6803")
+DEFINE_DEVICE_TYPE(M6808, m6808_cpu_device, "m6808", "M6808")
+DEFINE_DEVICE_TYPE(HD6301, hd6301_cpu_device, "hd6301", "HD6301")
+DEFINE_DEVICE_TYPE(HD63701, hd63701_cpu_device, "hd63701", "HD63701")
+DEFINE_DEVICE_TYPE(NSC8105, nsc8105_cpu_device, "nsc8105", "NSC8105")
+DEFINE_DEVICE_TYPE(HD6303R, hd6303r_cpu_device, "hd6304r", "HD6304R")
+DEFINE_DEVICE_TYPE(HD6303Y, hd6303y_cpu_device, "hd6303y", "HD6303Y")
m6800_cpu_device::m6800_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, M6800, "M6800", tag, owner, clock, "m6800", __FILE__)
- , m_program_config("program", ENDIANNESS_BIG, 8, 16, 0)
- , m_decrypted_opcodes_config("program", ENDIANNESS_BIG, 8, 16, 0)
- , m_io_config("io", ENDIANNESS_BIG, 8, 9, 0)
- , m_has_io(false)
- , m_out_sc2_func(*this)
- , m_out_sertx_func(*this)
- , m_insn(m6800_insn)
- , m_cycles(cycles_6800)
+ : m6800_cpu_device(mconfig, M6800, tag, owner, clock, false, 1, m6800_insn, cycles_6800, nullptr)
{
- m_clock_divider = 1;
}
-m6800_cpu_device::m6800_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, bool has_io, int clock_divider, const op_func *insn, const uint8_t *cycles, address_map_constructor internal)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+m6800_cpu_device::m6800_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool has_io, int clock_divider, const op_func *insn, const uint8_t *cycles, address_map_constructor internal)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 8, 16, 0, internal)
, m_decrypted_opcodes_config("program", ENDIANNESS_BIG, 8, 16, 0)
, m_io_config("io", ENDIANNESS_BIG, 8, 9, 0)
@@ -561,22 +552,22 @@ m6800_cpu_device::m6800_cpu_device(const machine_config &mconfig, device_type ty
}
m6801_cpu_device::m6801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m6800_cpu_device(mconfig, M6801, "M6801", tag, owner, clock, "m6801", __FILE__, true, 4, m6803_insn, cycles_6803)
+ : m6801_cpu_device(mconfig, M6801, tag, owner, clock, m6803_insn, cycles_6803, nullptr)
{
}
-m6801_cpu_device::m6801_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, const op_func *insn, const uint8_t *cycles, address_map_constructor internal)
- : m6800_cpu_device(mconfig, type, name, tag, owner, clock, shortname, source, true, 4, insn, cycles, internal)
+m6801_cpu_device::m6801_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const op_func *insn, const uint8_t *cycles, address_map_constructor internal)
+ : m6800_cpu_device(mconfig, type, tag, owner, clock, true, 4, insn, cycles, internal)
{
}
m6802_cpu_device::m6802_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m6800_cpu_device(mconfig, M6802, "M6802", tag, owner, clock, "m6802", __FILE__, false, 4, m6800_insn, cycles_6800)
+ : m6802_cpu_device(mconfig, M6802, tag, owner, clock, m6800_insn, cycles_6800)
{
}
-m6802_cpu_device::m6802_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, const op_func *insn, const uint8_t *cycles)
- : m6800_cpu_device(mconfig, type, name, tag, owner, clock, shortname, source, false, 4, insn, cycles)
+m6802_cpu_device::m6802_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const op_func *insn, const uint8_t *cycles)
+ : m6800_cpu_device(mconfig, type, tag, owner, clock, false, 4, insn, cycles, nullptr)
{
}
@@ -588,42 +579,42 @@ ADDRESS_MAP_END
m6803_cpu_device::m6803_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m6801_cpu_device(mconfig, M6803, "M6803", tag, owner, clock, "m6803", __FILE__, m6803_insn, cycles_6803, ADDRESS_MAP_NAME(m6803_mem))
+ : m6801_cpu_device(mconfig, M6803, tag, owner, clock, m6803_insn, cycles_6803, ADDRESS_MAP_NAME(m6803_mem))
{
}
m6808_cpu_device::m6808_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m6802_cpu_device(mconfig, M6808, "M6808", tag, owner, clock, "m6808", __FILE__, m6800_insn, cycles_6800)
+ : m6802_cpu_device(mconfig, M6808, tag, owner, clock, m6800_insn, cycles_6800)
{
}
hd6301_cpu_device::hd6301_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m6801_cpu_device(mconfig, HD6301, "HD6301", tag, owner, clock, "hd6301", __FILE__, hd63701_insn, cycles_63701)
+ : hd6301_cpu_device(mconfig, HD6301, tag, owner, clock)
{
}
-hd6301_cpu_device::hd6301_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : m6801_cpu_device(mconfig, type, name, tag, owner, clock, shortname, source, hd63701_insn, cycles_63701)
+hd6301_cpu_device::hd6301_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : m6801_cpu_device(mconfig, type, tag, owner, clock, hd63701_insn, cycles_63701)
{
}
hd63701_cpu_device::hd63701_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m6801_cpu_device(mconfig, HD63701, "HD63701", tag, owner, clock, "hd63701", __FILE__, hd63701_insn, cycles_63701)
+ : m6801_cpu_device(mconfig, HD63701, tag, owner, clock, hd63701_insn, cycles_63701)
{
}
nsc8105_cpu_device::nsc8105_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m6802_cpu_device(mconfig, NSC8105, "NSC8105", tag, owner, clock, "nsc8105", __FILE__, nsc8105_insn, cycles_nsc8105)
+ : m6802_cpu_device(mconfig, NSC8105, tag, owner, clock, nsc8105_insn, cycles_nsc8105)
{
}
hd6303r_cpu_device::hd6303r_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hd6301_cpu_device(mconfig, HD6303R, "HD6303R", tag, owner, clock, "hd6303r", __FILE__)
+ : hd6301_cpu_device(mconfig, HD6303R, tag, owner, clock)
{
}
hd6303y_cpu_device::hd6303y_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hd6301_cpu_device(mconfig, HD6303Y, "HD6303Y", tag, owner, clock, "hd6303y", __FILE__)
+ : hd6301_cpu_device(mconfig, HD6303Y, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/m6800/m6800.h b/src/devices/cpu/m6800/m6800.h
index fd03156d530..e4dee70b822 100644
--- a/src/devices/cpu/m6800/m6800.h
+++ b/src/devices/cpu/m6800/m6800.h
@@ -2,10 +2,10 @@
// copyright-holders:Aaron Giles
/*** m6800: Portable 6800 class emulator *************************************/
-#pragma once
+#ifndef MAME_CPU_M6800_M6800_H
+#define MAME_CPU_M6800_M6800_H
-#ifndef __M6800_H__
-#define __M6800_H__
+#pragma once
enum
@@ -78,7 +78,6 @@ public:
// construction/destruction
m6800_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m6800_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, bool has_io, int clock_divider, const m6800_cpu_device::op_func *insn, const uint8_t *cycles, address_map_constructor internal = nullptr);
// static configuration helpers
template<class _Object> static devcb_base &set_out_sc2_func(device_t &device, _Object object) { return downcast<m6800_cpu_device &>(device).m_out_sc2_func.set_callback(object); }
@@ -88,6 +87,8 @@ public:
DECLARE_WRITE8_MEMBER( m6801_io_w );
protected:
+ m6800_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool has_io, int clock_divider, const m6800_cpu_device::op_func *insn, const uint8_t *cycles, address_map_constructor internal);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -454,11 +455,12 @@ class m6801_cpu_device : public m6800_cpu_device
{
public:
m6801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m6801_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, const m6800_cpu_device::op_func *insn, const uint8_t *cycles, address_map_constructor internal = nullptr);
void m6801_clock_serial();
protected:
+ m6801_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const m6800_cpu_device::op_func *insn, const uint8_t *cycles, address_map_constructor internal = nullptr);
+
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks + 4 - 1) / 4; }
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 4); }
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
@@ -469,9 +471,10 @@ class m6802_cpu_device : public m6800_cpu_device
{
public:
m6802_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m6802_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, const m6800_cpu_device::op_func *insn, const uint8_t *cycles);
protected:
+ m6802_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const m6800_cpu_device::op_func *insn, const uint8_t *cycles);
+
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks + 4 - 1) / 4; }
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 4); }
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
@@ -502,9 +505,10 @@ class hd6301_cpu_device : public m6801_cpu_device
{
public:
hd6301_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- hd6301_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ hd6301_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
};
@@ -552,15 +556,15 @@ public:
};
-extern const device_type M6800;
-extern const device_type M6801;
-extern const device_type M6802;
-extern const device_type M6803;
-extern const device_type M6808;
-extern const device_type HD6301;
-extern const device_type HD63701;
-extern const device_type NSC8105;
-extern const device_type HD6303R;
-extern const device_type HD6303Y;
+DECLARE_DEVICE_TYPE(M6800, m6800_cpu_device)
+DECLARE_DEVICE_TYPE(M6801, m6801_cpu_device)
+DECLARE_DEVICE_TYPE(M6802, m6802_cpu_device)
+DECLARE_DEVICE_TYPE(M6803, m6803_cpu_device)
+DECLARE_DEVICE_TYPE(M6808, m6808_cpu_device)
+DECLARE_DEVICE_TYPE(HD6301, hd6301_cpu_device)
+DECLARE_DEVICE_TYPE(HD63701, hd63701_cpu_device)
+DECLARE_DEVICE_TYPE(NSC8105, nsc8105_cpu_device)
+DECLARE_DEVICE_TYPE(HD6303R, hd6303r_cpu_device)
+DECLARE_DEVICE_TYPE(HD6303Y, hd6303y_cpu_device)
-#endif /* __M6800_H__ */
+#endif // MAME_CPU_M6800_M6800_H
diff --git a/src/devices/cpu/m68000/m68000.h b/src/devices/cpu/m68000/m68000.h
index cf203e43ca1..c3aae63b454 100644
--- a/src/devices/cpu/m68000/m68000.h
+++ b/src/devices/cpu/m68000/m68000.h
@@ -1,11 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Karl Stenerud
-#pragma once
-
-#ifndef __M68000_H__
-#define __M68000_H__
-
+#ifndef MAME_CPU_M68000_M68000_H
+#define MAME_CPU_M68000_M68000_H
+#pragma once
// SoftFloat 2 lacks an include guard
#ifndef softfloat_h
@@ -124,12 +122,6 @@ class m68000_base_device : public cpu_device
public:
// construction/destruction
- m68000_base_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, const char *shortname, const char *source);
-
- m68000_base_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map, const char *shortname, const char *source);
-
m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void presave();
@@ -175,6 +167,13 @@ public:
void set_instruction_hook(read32_delegate ihook);
void set_buserror_details(uint32_t fault_addr, uint8_t rw, uint8_t fc);
+protected:
+ m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits);
+
+ m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map);
+
private:
int has_fpu; /* Indicates if a FPU is available (yes on 030, 040, may be on 020) */
public:
@@ -406,12 +405,6 @@ class m68000_device : public m68000_base_device
public:
// construction/destruction
m68000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- m68000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- m68000_device(const machine_config &mconfig, const device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- m68000_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map, const char *shortname, const char *source);
-
virtual uint32_t disasm_min_opcode_bytes() const override { return 2; };
@@ -425,6 +418,12 @@ public:
// device-level overrides
virtual void device_start() override;
+
+protected:
+ m68000_device(const machine_config &mconfig, const device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ m68000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map);
};
class m68301_device : public m68000_base_device
@@ -726,9 +725,6 @@ public:
// construction/destruction
fscpu32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- fscpu32_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map, const char *shortname, const char *source);
-
virtual uint32_t disasm_min_opcode_bytes() const override { return 2; };
virtual uint32_t disasm_max_opcode_bytes() const override { return 20; };
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
@@ -740,6 +736,10 @@ public:
// device-level overrides
virtual void device_start() override;
+
+protected:
+ fscpu32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map);
};
@@ -765,24 +765,24 @@ public:
};
-extern const device_type M68000;
-extern const device_type M68301;
-extern const device_type M68008;
-extern const device_type M68008PLCC;
-extern const device_type M68010;
-extern const device_type M68EC020;
-extern const device_type M68020;
-extern const device_type M68020FPU;
-extern const device_type M68020PMMU;
-extern const device_type M68020HMMU;
-extern const device_type M68EC030;
-extern const device_type M68030;
-extern const device_type M68EC040;
-extern const device_type M68LC040;
-extern const device_type M68040;
-extern const device_type SCC68070;
-extern const device_type FSCPU32;
-extern const device_type MCF5206E;
-
-
-#endif /* __M68000_H__ */
+DECLARE_DEVICE_TYPE(M68000, m68000_device)
+DECLARE_DEVICE_TYPE(M68301, m68301_device)
+DECLARE_DEVICE_TYPE(M68008, m68008_device)
+DECLARE_DEVICE_TYPE(M68008PLCC, m68008plcc_device)
+DECLARE_DEVICE_TYPE(M68010, m68010_device)
+DECLARE_DEVICE_TYPE(M68EC020, m68ec020_device)
+DECLARE_DEVICE_TYPE(M68020, m68020_device)
+DECLARE_DEVICE_TYPE(M68020FPU, m68020fpu_device)
+DECLARE_DEVICE_TYPE(M68020PMMU, m68020pmmu_device)
+DECLARE_DEVICE_TYPE(M68020HMMU, m68020hmmu_device)
+DECLARE_DEVICE_TYPE(M68EC030, m68ec030_device)
+DECLARE_DEVICE_TYPE(M68030, m68030_device)
+DECLARE_DEVICE_TYPE(M68EC040, m68ec040_device)
+DECLARE_DEVICE_TYPE(M68LC040, m68lc040_device)
+DECLARE_DEVICE_TYPE(M68040, m68040_device)
+DECLARE_DEVICE_TYPE(SCC68070, scc68070_device)
+DECLARE_DEVICE_TYPE(FSCPU32, fscpu32_device)
+DECLARE_DEVICE_TYPE(MCF5206E, mcf5206e_device)
+
+
+#endif // MAME_CPU_M68000_M68000_H
diff --git a/src/devices/cpu/m68000/m68kcpu.cpp b/src/devices/cpu/m68000/m68kcpu.cpp
index 5a7793e6af1..0de7af11c00 100644
--- a/src/devices/cpu/m68000/m68kcpu.cpp
+++ b/src/devices/cpu/m68000/m68kcpu.cpp
@@ -2271,14 +2271,14 @@ void m68000_base_device::m68ki_exception_interrupt(m68000_base_device *m68k, uin
}
-const device_type M68K = device_creator<m68000_base_device>;
+DEFINE_DEVICE_TYPE(M68K, m68000_base_device, "m68k", "M68K")
//-------------------------------------------------
// h6280_device - constructor
//-------------------------------------------------
m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, M68K, "M68K", tag, owner, clock, "m68k", __FILE__),
+ : cpu_device(mconfig, M68K, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, 16, 24),
m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, 16, 24)
{
@@ -2288,9 +2288,9 @@ m68000_base_device::m68000_base_device(const machine_config &mconfig, const char
-m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, internal_map),
m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, internal_map)
{
@@ -2298,9 +2298,9 @@ m68000_base_device::m68000_base_device(const machine_config &mconfig, const char
}
-m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, prg_data_width, prg_address_bits),
m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits)
{
@@ -2495,37 +2495,32 @@ const address_space_config *m68000_base_device::memory_space_config(address_spac
-const device_type M68000 = device_creator<m68000_device>;
-const device_type M68301 = device_creator<m68301_device>;
-const device_type M68008 = device_creator<m68008_device>;
-const device_type M68008PLCC = device_creator<m68008plcc_device>;
-const device_type M68010 = device_creator<m68010_device>;
-const device_type M68EC020 = device_creator<m68ec020_device>;
-const device_type M68020 = device_creator<m68020_device>;
-const device_type M68020FPU = device_creator<m68020fpu_device>;
-const device_type M68020PMMU = device_creator<m68020pmmu_device>;
-const device_type M68020HMMU = device_creator<m68020hmmu_device>;
-const device_type M68EC030 = device_creator<m68ec030_device>;
-const device_type M68030 = device_creator<m68030_device>;
-const device_type M68EC040 = device_creator<m68ec040_device>;
-const device_type M68LC040 = device_creator<m68lc040_device>;
-const device_type M68040 = device_creator<m68040_device>;
-const device_type SCC68070 = device_creator<scc68070_device>;
-const device_type FSCPU32 = device_creator<fscpu32_device>;
-const device_type MCF5206E = device_creator<mcf5206e_device>;
+DEFINE_DEVICE_TYPE(M68000, m68000_device, "m68000", "M68000")
+DEFINE_DEVICE_TYPE(M68301, m68301_device, "m68301", "M68301")
+DEFINE_DEVICE_TYPE(M68008, m68008_device, "m68008", "M68008")
+DEFINE_DEVICE_TYPE(M68008PLCC, m68008plcc_device, "m68008plcc", "M68008PLCC")
+DEFINE_DEVICE_TYPE(M68010, m68010_device, "m68010", "M68010")
+DEFINE_DEVICE_TYPE(M68EC020, m68ec020_device, "m68ec020", "M68EC020")
+DEFINE_DEVICE_TYPE(M68020, m68020_device, "m68020", "M68020")
+DEFINE_DEVICE_TYPE(M68020FPU, m68020fpu_device, "m68020fpu", "M68020FPU")
+DEFINE_DEVICE_TYPE(M68020PMMU, m68020pmmu_device, "m68020pmmu", "M68020PMMU")
+DEFINE_DEVICE_TYPE(M68020HMMU, m68020hmmu_device, "m68020hmmu", "M68020HMMU")
+DEFINE_DEVICE_TYPE(M68EC030, m68ec030_device, "m68ec030", "M68EC030")
+DEFINE_DEVICE_TYPE(M68030, m68030_device, "m68030", "M68030")
+DEFINE_DEVICE_TYPE(M68EC040, m68ec040_device, "m68ec040", "M68EC040")
+DEFINE_DEVICE_TYPE(M68LC040, m68lc040_device, "m68lc040", "M68LC040")
+DEFINE_DEVICE_TYPE(M68040, m68040_device, "m68040", "M68040")
+DEFINE_DEVICE_TYPE(SCC68070, scc68070_device, "scc68070", "SCC68070")
+DEFINE_DEVICE_TYPE(FSCPU32, fscpu32_device, "fscpu32", "Freescale CPU32 Core")
+DEFINE_DEVICE_TYPE(MCF5206E, mcf5206e_device, "mcf5206e", "MCF5206E")
m68000_device::m68000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68000", tag, owner, clock, M68000, 16,24, "m68000", __FILE__)
+ : m68000_device(mconfig, M68000, tag, owner, clock)
{
}
-m68000_device::m68000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : m68000_base_device(mconfig, "M68000", tag, owner, clock, M68000, 16,24, shortname, source)
-{
-}
-
-m68000_device::m68000_device(const machine_config &mconfig, const device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : m68000_base_device(mconfig, name, tag, owner, clock, type, 16,24, shortname, source)
+m68000_device::m68000_device(const machine_config &mconfig, const device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, tag, owner, clock, type, 16,24)
{
}
@@ -2534,9 +2529,9 @@ void m68000_device::device_start()
init_cpu_m68000();
}
-m68000_device::m68000_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map, const char *shortname, const char *source)
- : m68000_base_device(mconfig, name, tag, owner, clock, type, prg_data_width, prg_address_bits, internal_map, shortname, source)
+m68000_device::m68000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map)
+ : m68000_base_device(mconfig, tag, owner, clock, type, prg_data_width, prg_address_bits, internal_map)
{
}
@@ -2545,7 +2540,7 @@ m68000_device::m68000_device(const machine_config &mconfig, const char *name, co
m68301_device::m68301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68301", tag, owner, clock, M68301, 16,24, "m68301", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68301, 16,24)
{
}
@@ -2563,7 +2558,7 @@ void m68301_device::device_start()
/* m68008_device */
m68008_device::m68008_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68008", tag, owner, clock, M68008, 8,20, "m68008", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68008, 8,20)
{
}
@@ -2574,7 +2569,7 @@ void m68008_device::device_start()
m68008plcc_device::m68008plcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68008PLCC", tag, owner, clock, M68008PLCC, 8,22, "m68008plcc", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68008PLCC, 8,22)
{
}
@@ -2586,7 +2581,7 @@ void m68008plcc_device::device_start()
m68010_device::m68010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68010", tag, owner, clock, M68010, 16,24, "m68010", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68010, 16,24)
{
}
@@ -2598,7 +2593,7 @@ void m68010_device::device_start()
m68020_device::m68020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68020", tag, owner, clock, M68020, 32,32, "m68020", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68020, 32,32)
{
}
@@ -2609,7 +2604,7 @@ void m68020_device::device_start()
m68020fpu_device::m68020fpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68020FPU", tag, owner, clock, M68020FPU, 32,32, "m68020fpu", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68020FPU, 32,32)
{
}
@@ -2620,7 +2615,7 @@ void m68020fpu_device::device_start()
// 68020 with 68851 PMMU
m68020pmmu_device::m68020pmmu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68020PMMU", tag, owner, clock, M68020PMMU, 32,32, "m68020pmmu", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68020PMMU, 32,32)
{
}
@@ -2645,7 +2640,7 @@ bool m68020hmmu_device::memory_translate(address_spacenum space, int intention,
// 68020 with Apple HMMU & 68881 FPU
// case CPUINFO_FCT_TRANSLATE: info->translate = CPU_TRANSLATE_NAME(m68khmmu); break;
m68020hmmu_device::m68020hmmu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68020HMMU", tag, owner, clock, M68020HMMU, 32,32, "m68020hmmu", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68020HMMU, 32,32)
{
}
@@ -2656,7 +2651,7 @@ void m68020hmmu_device::device_start()
m68ec020_device::m68ec020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68EC020", tag, owner, clock, M68EC020, 32,24, "m68ec020", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68EC020, 32,24)
{
}
@@ -2666,7 +2661,7 @@ void m68ec020_device::device_start()
}
m68030_device::m68030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68030", tag, owner, clock, M68030, 32,32, "m68030", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68030, 32,32)
{
}
@@ -2676,7 +2671,7 @@ void m68030_device::device_start()
}
m68ec030_device::m68ec030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68EC030", tag, owner, clock, M68EC030, 32,32, "m68ec030", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68EC030, 32,32)
{
}
@@ -2686,7 +2681,7 @@ void m68ec030_device::device_start()
}
m68040_device::m68040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68040", tag, owner, clock, M68040, 32,32, "m68040", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68040, 32,32)
{
}
@@ -2699,7 +2694,7 @@ void m68040_device::device_start()
m68ec040_device::m68ec040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68EC040", tag, owner, clock, M68EC040, 32,32, "m68ec040", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68EC040, 32,32)
{
}
@@ -2711,7 +2706,7 @@ void m68ec040_device::device_start()
m68lc040_device::m68lc040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "M68LC040", tag, owner, clock, M68LC040, 32,32, "m68lc040", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, M68LC040, 32,32)
{
}
@@ -2722,7 +2717,7 @@ void m68lc040_device::device_start()
scc68070_device::scc68070_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "SCC68070", tag, owner, clock, SCC68070, 16,32, "scc68070", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, SCC68070, 16,32)
{
}
@@ -2733,13 +2728,13 @@ void scc68070_device::device_start()
fscpu32_device::fscpu32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "Freescale CPU32 Core", tag, owner, clock, FSCPU32, 32,32, "fscpu32", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, FSCPU32, 32,32)
{
}
-fscpu32_device::fscpu32_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map, const char *shortname, const char *source)
- : m68000_base_device(mconfig, name, tag, owner, clock, type, prg_data_width, prg_address_bits, internal_map, shortname, source)
+fscpu32_device::fscpu32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map)
+ : m68000_base_device(mconfig, tag, owner, clock, type, prg_data_width, prg_address_bits, internal_map)
{
}
@@ -2752,7 +2747,7 @@ void fscpu32_device::device_start()
mcf5206e_device::mcf5206e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_base_device(mconfig, "MCF5206E", tag, owner, clock, MCF5206E, 32,32, "mcf5206e", __FILE__)
+ : m68000_base_device(mconfig, tag, owner, clock, MCF5206E, 32,32)
{
}
diff --git a/src/devices/cpu/m68000/m68kcpu.h b/src/devices/cpu/m68000/m68kcpu.h
index 4326735cd1b..41d9e93c883 100644
--- a/src/devices/cpu/m68000/m68kcpu.h
+++ b/src/devices/cpu/m68000/m68kcpu.h
@@ -12,11 +12,11 @@
*
*/
+#ifndef MAME_CPU_M68000_M68KCPU_H
+#define MAME_CPU_M68000_M68KCPU_H
#pragma once
-#ifndef __M68KCPU_H__
-#define __M68KCPU_H__
class m68000_base_device;
@@ -1701,4 +1701,4 @@ static inline void m68ki_check_interrupts(m68000_base_device *m68k)
/* ============================== END OF FILE ============================= */
/* ======================================================================== */
-#endif /* __M68KCPU_H__ */
+#endif // MAME_CPU_M68000_M68KCPU_H
diff --git a/src/devices/cpu/m6805/m6805.cpp b/src/devices/cpu/m6805/m6805.cpp
index a606077a021..a4b8a1c10e9 100644
--- a/src/devices/cpu/m6805/m6805.cpp
+++ b/src/devices/cpu/m6805/m6805.cpp
@@ -236,11 +236,8 @@ m6805_base_device::m6805_base_device(
device_t *owner,
uint32_t clock,
device_type const type,
- char const *name,
- configuration_params const &params,
- char const *shortname,
- char const *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ configuration_params const &params)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_params(params)
, m_program_config("program", ENDIANNESS_BIG, 8, params.m_addr_width)
{
@@ -252,12 +249,9 @@ m6805_base_device::m6805_base_device(
device_t *owner,
uint32_t clock,
device_type const type,
- char const *name,
configuration_params const &params,
- address_map_delegate internal_map,
- char const *shortname,
- char const *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ address_map_delegate internal_map)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_params(params)
, m_program_config("program", ENDIANNESS_BIG, 8, params.m_addr_width, 0, internal_map)
{
@@ -555,10 +549,7 @@ m6805_device::m6805_device(const machine_config &mconfig, const char *tag, devic
owner,
clock,
M6805,
- "M6805",
- { s_hmos_ops, s_hmos_cycles, 12, 0x007f, 0x0060, 0xfffc },
- "m6805",
- __FILE__)
+ { s_hmos_ops, s_hmos_cycles, 12, 0x007f, 0x0060, 0xfffc })
{
}
@@ -572,10 +563,7 @@ m68hc05eg_device::m68hc05eg_device(const machine_config &mconfig, const char *ta
owner,
clock,
M68HC05EG,
- "M68HC05EG",
- { s_hmos_ops, s_hmos_cycles, 13, 0x00ff, 0x00c0, 0xfffc }, // completely wrong, but it preserves existing behaviour
- "m68hc05eg",
- __FILE__)
+ { s_hmos_ops, s_hmos_cycles, 13, 0x00ff, 0x00c0, 0xfffc }) // completely wrong, but it preserves existing behaviour
{
}
@@ -615,10 +603,7 @@ hd63705_device::hd63705_device(const machine_config &mconfig, const char *tag, d
owner,
clock,
HD63705,
- "HD63705",
- { s_hmos_ops, s_hmos_cycles, 16, 0x017f, 0x0100, 0x1ffa },
- "hd63705",
- __FILE__)
+ { s_hmos_ops, s_hmos_cycles, 16, 0x017f, 0x0100, 0x1ffa })
{
}
@@ -707,6 +692,6 @@ void hd63705_device::interrupt_vector()
}
-const device_type M6805 = device_creator<m6805_device>;
-const device_type M68HC05EG = device_creator<m68hc05eg_device>;
-const device_type HD63705 = device_creator<hd63705_device>;
+DEFINE_DEVICE_TYPE(M6805, m6805_device, "m6805", "M6805")
+DEFINE_DEVICE_TYPE(M68HC05EG, m68hc05eg_device, "m68hc05eg", "MC68HC05EG")
+DEFINE_DEVICE_TYPE(HD63705, hd63705_device, "hd63705", "HD63705")
diff --git a/src/devices/cpu/m6805/m6805.h b/src/devices/cpu/m6805/m6805.h
index 25a8cac6454..aad9b371751 100644
--- a/src/devices/cpu/m6805/m6805.h
+++ b/src/devices/cpu/m6805/m6805.h
@@ -12,9 +12,9 @@
//**************************************************************************
// device type definition
-extern const device_type M6805;
-extern const device_type M68HC05EG;
-extern const device_type HD63705;
+DECLARE_DEVICE_TYPE(M6805, m6805_device)
+DECLARE_DEVICE_TYPE(M68HC05EG, m68hc05eg_device)
+DECLARE_DEVICE_TYPE(HD63705, hd63705_device)
// ======================> m6805_base_device
@@ -92,21 +92,15 @@ protected:
device_t *owner,
uint32_t clock,
device_type const type,
- char const *name,
- configuration_params const &params,
- char const *shortname,
- char const *source);
+ configuration_params const &params);
m6805_base_device(
machine_config const &mconfig,
char const *tag,
device_t *owner,
uint32_t clock,
device_type const type,
- char const *name,
configuration_params const &params,
- address_map_delegate internal_map,
- char const *shortname,
- char const *source);
+ address_map_delegate internal_map);
// device-level overrides
virtual void device_start() override;
diff --git a/src/devices/cpu/m6805/m68705.cpp b/src/devices/cpu/m6805/m68705.cpp
index e8c12a0d7fa..ba4dae3a39f 100644
--- a/src/devices/cpu/m6805/m68705.cpp
+++ b/src/devices/cpu/m6805/m68705.cpp
@@ -87,10 +87,10 @@ constexpr u16 M68705_INT_MASK = 0x03;
* Global variables
****************************************************************************/
-device_type const M68705P3 = device_creator<m68705p3_device>;
-device_type const M68705P5 = device_creator<m68705p5_device>;
-device_type const M68705R3 = device_creator<m68705r3_device>;
-device_type const M68705U3 = device_creator<m68705u3_device>;
+DEFINE_DEVICE_TYPE(M68705P3, m68705p3_device, "m68705p3", "MC68705P3")
+DEFINE_DEVICE_TYPE(M68705P5, m68705p5_device, "m68705p5", "MC68705P5")
+DEFINE_DEVICE_TYPE(M68705R3, m68705r3_device, "m68705r3", "MC68705R3")
+DEFINE_DEVICE_TYPE(M68705U3, m68705u3_device, "m68705u3", "MC68705U3")
/****************************************************************************
@@ -191,22 +191,16 @@ m68705_device::m68705_device(
device_t *owner,
u32 clock,
device_type type,
- char const *name,
u32 addr_width,
- address_map_delegate internal_map,
- char const *shortname,
- char const *source)
+ address_map_delegate internal_map)
: m6805_base_device(
mconfig,
tag,
owner,
clock,
type,
- name,
{ s_hmos_ops, s_hmos_cycles, addr_width, 0x007f, 0x0060, M68705_VECTOR_SWI },
- internal_map,
- shortname,
- source)
+ internal_map)
, device_nvram_interface(mconfig, *this)
, m_user_rom(*this, DEVICE_SELF, u32(1) << addr_width)
, m_port_open_drain{ false, false, false, false }
@@ -680,11 +674,8 @@ m68705p_device::m68705p_device(
char const *tag,
device_t *owner,
u32 clock,
- device_type type,
- char const *name,
- char const *shortname,
- char const *source)
- : m68705_device(mconfig, tag, owner, clock, type, name, 11, address_map_delegate(FUNC(m68705p_device::p_map), this), shortname, source)
+ device_type type)
+ : m68705_device(mconfig, tag, owner, clock, type, 11, address_map_delegate(FUNC(m68705p_device::p_map), this))
{
set_port_open_drain<0>(true); // Port A is open drain with internal pull-ups
set_port_mask<2>(0xf0); // Port C is four bits wide
@@ -751,11 +742,8 @@ m68705u_device::m68705u_device(
device_t *owner,
u32 clock,
device_type type,
- char const *name,
- address_map_delegate internal_map,
- char const *shortname,
- char const *source)
- : m68705_device(mconfig, tag, owner, clock, type, name, 12, internal_map, shortname, source)
+ address_map_delegate internal_map)
+ : m68705_device(mconfig, tag, owner, clock, type, 12, internal_map)
{
set_port_open_drain<0>(true); // Port A is open drain with internal pull-ups
}
@@ -765,11 +753,8 @@ m68705u_device::m68705u_device(
char const *tag,
device_t *owner,
u32 clock,
- device_type type,
- char const *name,
- char const *shortname,
- char const *source)
- : m68705u_device(mconfig, tag, owner, clock, type, name, address_map_delegate(FUNC(m68705u_device::u_map), this), shortname, source)
+ device_type type)
+ : m68705u_device(mconfig, tag, owner, clock, type, address_map_delegate(FUNC(m68705u_device::u_map), this))
{
}
@@ -837,11 +822,8 @@ m68705r_device::m68705r_device(
char const *tag,
device_t *owner,
u32 clock,
- device_type type,
- char const *name,
- char const *shortname,
- char const *source)
- : m68705u_device(mconfig, tag, owner, clock, type, name, address_map_delegate(FUNC(m68705r_device::r_map), this), shortname, source)
+ device_type type)
+ : m68705u_device(mconfig, tag, owner, clock, type, address_map_delegate(FUNC(m68705r_device::r_map), this))
{
}
@@ -868,7 +850,7 @@ offs_t m68705r_device::disasm_disassemble(
****************************************************************************/
m68705p3_device::m68705p3_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
- : m68705p_device(mconfig, tag, owner, clock, M68705P3, "MC68705P3", "m68705p3", __FILE__)
+ : m68705p_device(mconfig, tag, owner, clock, M68705P3)
{
}
@@ -888,7 +870,7 @@ u8 m68705p3_device::get_mask_options() const
****************************************************************************/
m68705p5_device::m68705p5_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
- : m68705p_device(mconfig, tag, owner, clock, M68705P5, "MC68705P5", "m68705p5", __FILE__)
+ : m68705p_device(mconfig, tag, owner, clock, M68705P5)
{
}
@@ -908,7 +890,7 @@ u8 m68705p5_device::get_mask_options() const
****************************************************************************/
m68705r3_device::m68705r3_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
- : m68705r_device(mconfig, tag, owner, clock, M68705R3, "MC68705R3", "m68705r3", __FILE__)
+ : m68705r_device(mconfig, tag, owner, clock, M68705R3)
{
}
@@ -928,7 +910,7 @@ u8 m68705r3_device::get_mask_options() const
****************************************************************************/
m68705u3_device::m68705u3_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
- : m68705u_device(mconfig, tag, owner, clock, M68705U3, "MC68705U3", "m68705u3", __FILE__)
+ : m68705u_device(mconfig, tag, owner, clock, M68705U3)
{
}
diff --git a/src/devices/cpu/m6805/m68705.h b/src/devices/cpu/m6805/m68705.h
index 6241079f912..aaa2f88d693 100644
--- a/src/devices/cpu/m6805/m68705.h
+++ b/src/devices/cpu/m6805/m68705.h
@@ -12,10 +12,10 @@
// GLOBAL VARIABLES
//**************************************************************************
-extern device_type const M68705P3;
-extern device_type const M68705P5;
-extern device_type const M68705R3;
-extern device_type const M68705U3;
+DECLARE_DEVICE_TYPE(M68705P3, m68705p3_device)
+DECLARE_DEVICE_TYPE(M68705P5, m68705p5_device)
+DECLARE_DEVICE_TYPE(M68705R3, m68705r3_device)
+DECLARE_DEVICE_TYPE(M68705U3, m68705u3_device)
//**************************************************************************
@@ -97,11 +97,8 @@ protected:
device_t *owner,
u32 clock,
device_type type,
- char const *name,
u32 addr_width,
- address_map_delegate internal_map,
- char const *shortname,
- char const *source);
+ address_map_delegate internal_map);
template <offs_t B> DECLARE_READ8_MEMBER(eprom_r);
template <offs_t B> DECLARE_WRITE8_MEMBER(eprom_w);
@@ -201,10 +198,7 @@ protected:
char const *tag,
device_t *owner,
u32 clock,
- device_type type,
- char const *name,
- char const *shortname,
- char const *source);
+ device_type type);
virtual void device_start() override;
@@ -236,19 +230,13 @@ protected:
device_t *owner,
u32 clock,
device_type type,
- char const *name,
- address_map_delegate internal_map,
- char const *shortname,
- char const *source);
+ address_map_delegate internal_map);
m68705u_device(
machine_config const &mconfig,
char const *tag,
device_t *owner,
u32 clock,
- device_type type,
- char const *name,
- char const *shortname,
- char const *source);
+ device_type type);
virtual void device_start() override;
@@ -276,10 +264,7 @@ protected:
char const *tag,
device_t *owner,
u32 clock,
- device_type type,
- char const *name,
- char const *shortname,
- char const *source);
+ device_type type);
virtual void device_start() override;
diff --git a/src/devices/cpu/m6805/m68hc05.cpp b/src/devices/cpu/m6805/m68hc05.cpp
index 7901af45b34..90575e98ab2 100644
--- a/src/devices/cpu/m6805/m68hc05.cpp
+++ b/src/devices/cpu/m6805/m68hc05.cpp
@@ -89,9 +89,9 @@ constexpr u16 M68HC05_INT_MASK = M68HC05_INT_IRQ | M68HC05_INT_TIMER;
* Global variables
****************************************************************************/
-device_type const M68HC05C4 = device_creator<m68hc05c4_device>;
-device_type const M68HC05C8 = device_creator<m68hc05c8_device>;
-device_type const M68HC705C8A = device_creator<m68hc705c8a_device>;
+DEFINE_DEVICE_TYPE(M68HC05C4, m68hc05c4_device, "m68hc05c4", "MC68HC05C4")
+DEFINE_DEVICE_TYPE(M68HC05C8, m68hc05c8_device, "m68hc05c8", "MC68HC05C8")
+DEFINE_DEVICE_TYPE(M68HC705C8A, m68hc705c8a_device, "m68hc705c8a", "MC68HC705C8A")
@@ -105,21 +105,15 @@ m68hc05_device::m68hc05_device(
device_t *owner,
u32 clock,
device_type type,
- char const *name,
- address_map_delegate internal_map,
- char const *shortname,
- char const *source)
+ address_map_delegate internal_map)
: m6805_base_device(
mconfig,
tag,
owner,
clock,
type,
- name,
{ s_hc_ops, s_hc_cycles, 13, 0x00ff, 0x00c0, M68HC05_VECTOR_SWI },
- internal_map,
- shortname,
- source)
+ internal_map)
, m_port_cb_r{ *this, *this, *this, *this }
, m_port_cb_w{ *this, *this, *this, *this }
, m_port_bits{ 0xff, 0xff, 0xff, 0xff }
@@ -718,11 +712,8 @@ m68hc705_device::m68hc705_device(
device_t *owner,
u32 clock,
device_type type,
- char const *name,
- address_map_delegate internal_map,
- char const *shortname,
- char const *source)
- : m68hc05_device(mconfig, tag, owner, clock, type, name, internal_map, shortname, source)
+ address_map_delegate internal_map)
+ : m68hc05_device(mconfig, tag, owner, clock, type, internal_map)
{
}
@@ -770,10 +761,7 @@ m68hc05c4_device::m68hc05c4_device(machine_config const &mconfig, char const *ta
owner,
clock,
M68HC05C4,
- "MC68HC05C4",
- address_map_delegate(FUNC(m68hc05c4_device::c4_map), this),
- "m68hc05c4",
- __FILE__)
+ address_map_delegate(FUNC(m68hc05c4_device::c4_map), this))
{
set_port_bits(std::array<u8, PORT_COUNT>{{ 0xff, 0xff, 0xff, 0xbf }});
}
@@ -842,10 +830,7 @@ m68hc05c8_device::m68hc05c8_device(machine_config const &mconfig, char const *ta
owner,
clock,
M68HC05C8,
- "MC68HC05C8",
- address_map_delegate(FUNC(m68hc05c8_device::c8_map), this),
- "m68hc05c8",
- __FILE__)
+ address_map_delegate(FUNC(m68hc05c8_device::c8_map), this))
{
set_port_bits(std::array<u8, PORT_COUNT>{{ 0xff, 0xff, 0xff, 0xbf }});
}
@@ -920,10 +905,7 @@ m68hc705c8a_device::m68hc705c8a_device(machine_config const &mconfig, char const
owner,
clock,
M68HC705C8A,
- "MC68HC705C8A",
- address_map_delegate(FUNC(m68hc705c8a_device::c8a_map), this),
- "m68hc705c8a",
- __FILE__)
+ address_map_delegate(FUNC(m68hc705c8a_device::c8a_map), this))
{
set_port_bits(std::array<u8, PORT_COUNT>{{ 0xff, 0xff, 0xff, 0xbf }});
}
diff --git a/src/devices/cpu/m6805/m68hc05.h b/src/devices/cpu/m6805/m68hc05.h
index d751d4b2f9d..db61afc8b60 100644
--- a/src/devices/cpu/m6805/m68hc05.h
+++ b/src/devices/cpu/m6805/m68hc05.h
@@ -14,9 +14,9 @@
// GLOBAL VARIABLES
//**************************************************************************
-extern device_type const M68HC05C4;
-extern device_type const M68HC05C8;
-extern device_type const M68HC705C8A;
+DECLARE_DEVICE_TYPE(M68HC05C4, m68hc05c4_device)
+DECLARE_DEVICE_TYPE(M68HC05C8, m68hc05c8_device)
+DECLARE_DEVICE_TYPE(M68HC705C8A, m68hc705c8a_device)
//**************************************************************************
@@ -108,10 +108,7 @@ protected:
device_t *owner,
u32 clock,
device_type type,
- char const *name,
- address_map_delegate internal_map,
- char const *shortname,
- char const *source);
+ address_map_delegate internal_map);
void set_port_bits(std::array<u8, PORT_COUNT> const &bits);
void set_port_interrupt(std::array<u8, PORT_COUNT> const &interrupt);
@@ -216,10 +213,7 @@ protected:
device_t *owner,
u32 clock,
device_type type,
- char const *name,
- address_map_delegate internal_map,
- char const *shortname,
- char const *source);
+ address_map_delegate internal_map);
};
diff --git a/src/devices/cpu/m6809/hd6309.cpp b/src/devices/cpu/m6809/hd6309.cpp
index 25673b0d761..30de26db2c6 100644
--- a/src/devices/cpu/m6809/hd6309.cpp
+++ b/src/devices/cpu/m6809/hd6309.cpp
@@ -124,7 +124,7 @@ March 2013 NPW:
// DEVICE INTERFACE
//**************************************************************************
-const device_type HD6309 = device_creator<hd6309_device>;
+DEFINE_DEVICE_TYPE(HD6309, hd6309_device, "hd6309", "HD6309")
//-------------------------------------------------
@@ -132,7 +132,7 @@ const device_type HD6309 = device_creator<hd6309_device>;
//-------------------------------------------------
hd6309_device::hd6309_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- m6809_base_device(mconfig, "HD6309", tag, owner, clock, HD6309, 4, "hd6309", __FILE__),
+ m6809_base_device(mconfig, tag, owner, clock, HD6309, 4),
m_md(0),
m_temp_im(0)
{
diff --git a/src/devices/cpu/m6809/hd6309.h b/src/devices/cpu/m6809/hd6309.h
index f4eae899bfa..a097902da1f 100644
--- a/src/devices/cpu/m6809/hd6309.h
+++ b/src/devices/cpu/m6809/hd6309.h
@@ -8,10 +8,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_CPU_M6809_HD6309_H
+#define MAME_CPU_M6809_HD6309_H
-#ifndef __HD6309_H__
-#define __HD6309_H__
+#pragma once
#include "m6809.h"
@@ -21,7 +21,7 @@
//**************************************************************************
// device type definition
-extern const device_type HD6309;
+DECLARE_DEVICE_TYPE(HD6309, hd6309_device)
// ======================> hd6309_device
@@ -143,4 +143,4 @@ enum
#define HD6309_IRQ_LINE M6809_IRQ_LINE /* 0 - IRQ line number */
#define HD6309_FIRQ_LINE M6809_FIRQ_LINE /* 1 - FIRQ line number */
-#endif // __HD6309_H__
+#endif // MAME_CPU_M6809_HD6309_H
diff --git a/src/devices/cpu/m6809/konami.cpp b/src/devices/cpu/m6809/konami.cpp
index e8114c7e75d..55f3a864744 100644
--- a/src/devices/cpu/m6809/konami.cpp
+++ b/src/devices/cpu/m6809/konami.cpp
@@ -77,7 +77,7 @@ March 2013 NPW:
// DEVICE INTERFACE
//**************************************************************************
-const device_type KONAMI = device_creator<konami_cpu_device>;
+DEFINE_DEVICE_TYPE(KONAMI, konami_cpu_device, "konami_cpu", "KONAMI CPU")
//-------------------------------------------------
@@ -85,8 +85,8 @@ const device_type KONAMI = device_creator<konami_cpu_device>;
//-------------------------------------------------
konami_cpu_device::konami_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m6809_base_device(mconfig, "KONAMI CPU", tag, owner, clock, KONAMI, 1, "konami_cpu", __FILE__),
- m_set_lines(*this)
+ : m6809_base_device(mconfig, tag, owner, clock, KONAMI, 1)
+ , m_set_lines(*this)
{
}
diff --git a/src/devices/cpu/m6809/konami.h b/src/devices/cpu/m6809/konami.h
index 2850eff7372..1d9d900c138 100644
--- a/src/devices/cpu/m6809/konami.h
+++ b/src/devices/cpu/m6809/konami.h
@@ -8,10 +8,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_CPU_M6809_KONAMI_H
+#define MAME_CPU_M6809_KONAMI_H
-#ifndef __KONAMI_CPU_H__
-#define __KONAMI_CPU_H__
+#pragma once
#include "m6809.h"
@@ -25,7 +25,7 @@
// device type definition
-extern const device_type KONAMI;
+DECLARE_DEVICE_TYPE(KONAMI, konami_cpu_device)
// ======================> konami_cpu_device
@@ -78,4 +78,4 @@ private:
#define KONAMI_IRQ_LINE M6809_IRQ_LINE /* 0 - IRQ line number */
#define KONAMI_FIRQ_LINE M6809_FIRQ_LINE /* 1 - FIRQ line number */
-#endif /* __KONAMI_CPU_H__ */
+#endif // MAME_CPU_M6809_KONAMI_H
diff --git a/src/devices/cpu/m6809/m6809.cpp b/src/devices/cpu/m6809/m6809.cpp
index f3c6e1584ca..f1f8e387ca2 100644
--- a/src/devices/cpu/m6809/m6809.cpp
+++ b/src/devices/cpu/m6809/m6809.cpp
@@ -103,16 +103,16 @@ March 2013 NPW:
// DEVICE INTERFACE
//**************************************************************************
-const device_type M6809 = device_creator<m6809_device>;
-const device_type M6809E = device_creator<m6809e_device>;
+DEFINE_DEVICE_TYPE(M6809, m6809_device, "m6809", "M6809")
+DEFINE_DEVICE_TYPE(M6809E, m6809e_device, "m6809e", "M6809E")
//-------------------------------------------------
// m6809_base_device - constructor
//-------------------------------------------------
-m6809_base_device::m6809_base_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock, const device_type type, int divider, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+m6809_base_device::m6809_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const device_type type, int divider)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_lic_func(*this),
m_program_config("program", ENDIANNESS_BIG, 8, 16),
m_sprogram_config("decrypted_opcodes", ENDIANNESS_BIG, 8, 16),
@@ -601,7 +601,7 @@ void m6809_base_device::mi_default::write(uint16_t adr, uint8_t val)
//-------------------------------------------------
m6809_device::m6809_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m6809_base_device(mconfig, "M6809", tag, owner, clock, M6809, 1, "m6809", __FILE__)
+ : m6809_base_device(mconfig, tag, owner, clock, M6809, 1)
{
}
@@ -612,6 +612,6 @@ m6809_device::m6809_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
m6809e_device::m6809e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m6809_base_device(mconfig, "M6809E", tag, owner, clock, M6809E, 4, "m6809e", __FILE__)
+ : m6809_base_device(mconfig, tag, owner, clock, M6809E, 4)
{
}
diff --git a/src/devices/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h
index 96f245cc535..bfe82224b4d 100644
--- a/src/devices/cpu/m6809/m6809.h
+++ b/src/devices/cpu/m6809/m6809.h
@@ -8,33 +8,29 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_CPU_M6809_M6809_H
+#define MAME_CPU_M6809_M6809_H
-#ifndef __M6809_H__
-#define __M6809_H__
+#pragma once
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class m6809_device;
-
-
// device type definition
-extern const device_type M6809;
-extern const device_type M6809E;
+DECLARE_DEVICE_TYPE(M6809, m6809_device)
+DECLARE_DEVICE_TYPE(M6809E, m6809e_device)
// ======================> m6809_base_device
// Used by core CPU interface
class m6809_base_device : public cpu_device
{
-public:
+protected:
// construction/destruction
- m6809_base_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock, const device_type type, int divider, const char *shortname, const char *source);
+ m6809_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const device_type type, int divider);
-protected:
class memory_interface {
public:
address_space *m_program, *m_sprogram;
@@ -334,4 +330,4 @@ enum
/* M6809e has LIC line to indicate opcode/data fetch */
-#endif /* __M6809_H__ */
+#endif // MAME_CPU_M6809_M6809_H
diff --git a/src/devices/cpu/mb86233/mb86233.cpp b/src/devices/cpu/mb86233/mb86233.cpp
index 3ba9afdc1ad..3d7a4be3155 100644
--- a/src/devices/cpu/mb86233/mb86233.cpp
+++ b/src/devices/cpu/mb86233/mb86233.cpp
@@ -20,19 +20,20 @@
#include "mb86233.h"
-const device_type MB86233 = device_creator<mb86233_cpu_device>;
+DEFINE_DEVICE_TYPE(MB86233, mb86233_cpu_device, "mb86233", "MB86233")
mb86233_cpu_device::mb86233_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, MB86233, "MB86233", tag, owner, clock, "mb86233", __FILE__)
+ : cpu_device(mconfig, MB86233, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 32, 32, -2)
- , m_data_config("data", ENDIANNESS_LITTLE, 32, 32, 0), m_pc(0), m_reps(0), m_pcsp(0), m_eb(0), m_shift(0), m_repcnt(0), m_sr(0),
- m_fpucontrol(0), m_program(nullptr), m_direct(nullptr), m_icount(0), m_fifo_wait(0)
- , m_fifo_read_cb(*this)
+ , m_data_config("data", ENDIANNESS_LITTLE, 32, 32, 0)
+ , m_pc(0), m_reps(0), m_pcsp(0), m_eb(0), m_shift(0), m_repcnt(0), m_sr(0)
+ , m_fpucontrol(0), m_program(nullptr), m_direct(nullptr), m_icount(0), m_fifo_wait(0)
+ , m_fifo_read_cb(*this)
, m_fifo_read_ok_cb(*this)
, m_fifo_write_cb(*this)
, m_tablergn(nullptr), m_ARAM(nullptr), m_BRAM(nullptr)
- , m_Tables(nullptr)
+ , m_Tables(nullptr)
{
}
diff --git a/src/devices/cpu/mb86233/mb86233.h b/src/devices/cpu/mb86233/mb86233.h
index 65a2c370b07..d95fbd9b1f5 100644
--- a/src/devices/cpu/mb86233/mb86233.h
+++ b/src/devices/cpu/mb86233/mb86233.h
@@ -1,44 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi
-#pragma once
-
-#ifndef __MB86233_H__
-#define __MB86233_H__
-
+#ifndef MAME_CPU_MB86233_MB86233_H
+#define MAME_CPU_MB86233_MB86233_H
-/***************************************************************************
- REGISTER ENUMERATION
-***************************************************************************/
-
-enum
-{
- MB86233_PC=1,
- MB86233_A,
- MB86233_B,
- MB86233_D,
- MB86233_P,
- MB86233_REP,
- MB86233_SP,
- MB86233_EB,
- MB86233_SHIFT,
- MB86233_FLAGS,
- MB86233_R0,
- MB86233_R1,
- MB86233_R2,
- MB86233_R3,
- MB86233_R4,
- MB86233_R5,
- MB86233_R6,
- MB86233_R7,
- MB86233_R8,
- MB86233_R9,
- MB86233_R10,
- MB86233_R11,
- MB86233_R12,
- MB86233_R13,
- MB86233_R14,
- MB86233_R15
-};
+#pragma once
#define MCFG_MB86233_FIFO_READ_CB(_devcb) \
@@ -58,12 +23,43 @@ public:
mb86233_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_fifo_read_cb(device_t &device, _Object object) { return downcast<mb86233_cpu_device &>(device).m_fifo_read_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_fifo_read_ok_cb(device_t &device, _Object object) { return downcast<mb86233_cpu_device &>(device).m_fifo_read_ok_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_fifo_write_cb(device_t &device, _Object object) { return downcast<mb86233_cpu_device &>(device).m_fifo_write_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_fifo_read_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_fifo_read_ok_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_read_ok_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_fifo_write_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_write_cb.set_callback(std::forward<Object>(cb)); }
static void set_tablergn(device_t &device, const char *tablergn) { downcast<mb86233_cpu_device &>(device).m_tablergn = tablergn; }
protected:
+ // register enumeration
+ enum
+ {
+ MB86233_PC=1,
+ MB86233_A,
+ MB86233_B,
+ MB86233_D,
+ MB86233_P,
+ MB86233_REP,
+ MB86233_SP,
+ MB86233_EB,
+ MB86233_SHIFT,
+ MB86233_FLAGS,
+ MB86233_R0,
+ MB86233_R1,
+ MB86233_R2,
+ MB86233_R3,
+ MB86233_R4,
+ MB86233_R5,
+ MB86233_R6,
+ MB86233_R7,
+ MB86233_R8,
+ MB86233_R9,
+ MB86233_R10,
+ MB86233_R11,
+ MB86233_R12,
+ MB86233_R13,
+ MB86233_R14,
+ MB86233_R15
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -75,7 +71,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ); }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ); }
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
@@ -144,6 +140,6 @@ private:
};
-extern const device_type MB86233;
+DECLARE_DEVICE_TYPE(MB86233, mb86233_cpu_device)
-#endif /* __MB86233_H__ */
+#endif // MAME_CPU_MB86233_MB86233_H
diff --git a/src/devices/cpu/mb86235/mb86235.cpp b/src/devices/cpu/mb86235/mb86235.cpp
index c2a2d1e2c88..e1f6c6ec41f 100644
--- a/src/devices/cpu/mb86235/mb86235.cpp
+++ b/src/devices/cpu/mb86235/mb86235.cpp
@@ -12,10 +12,11 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "mb86235.h"
#include "mb86235fe.h"
+#include "debugger.h"
+
#define ENABLE_DRC 0
@@ -28,7 +29,7 @@
-const device_type MB86235 = device_creator<mb86235_device>;
+DEFINE_DEVICE_TYPE(MB86235, mb86235_device, "mb86235", "MB86235")
static ADDRESS_MAP_START(internal_abus, AS_DATA, 32, mb86235_device)
@@ -204,7 +205,7 @@ void mb86235_cpu_device::execute_set_input(int irqline, int state)
#endif
mb86235_device::mb86235_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, MB86235, "MB86235", tag, owner, clock, "mb86235", __FILE__)
+ : cpu_device(mconfig, MB86235, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 64, 32, -3)
, m_dataa_config("data_a", ENDIANNESS_LITTLE, 32, 24, -2, ADDRESS_MAP_NAME(internal_abus))
, m_datab_config("data_b", ENDIANNESS_LITTLE, 32, 10, -2, ADDRESS_MAP_NAME(internal_bbus))
diff --git a/src/devices/cpu/mb86235/mb86235.h b/src/devices/cpu/mb86235/mb86235.h
index 99c008ae88e..c5826ea8960 100644
--- a/src/devices/cpu/mb86235/mb86235.h
+++ b/src/devices/cpu/mb86235/mb86235.h
@@ -6,10 +6,10 @@
*
*****************************************************************************/
-#pragma once
+#ifndef MAME_CPU_MB86235_MB86235_H
+#define MAME_CPU_MB86235_MB86235_H
-#ifndef __MB86235_H__
-#define __MB86235_H__
+#pragma once
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
@@ -17,23 +17,6 @@
class mb86235_frontend;
-
-
-#define OP_USERFLAG_FIFOIN 0x1
-#define OP_USERFLAG_FIFOOUT0 0x2
-#define OP_USERFLAG_FIFOOUT1 0x4
-#define OP_USERFLAG_REPEAT 0x8
-#define OP_USERFLAG_REPEATED_OP 0x10
-#define OP_USERFLAG_PR_MASK 0x300
-#define OP_USERFLAG_PR_INC 0x100
-#define OP_USERFLAG_PR_DEC 0x200
-#define OP_USERFLAG_PR_ZERO 0x300
-#define OP_USERFLAG_PW_MASK 0xc00
-#define OP_USERFLAG_PW_INC 0x400
-#define OP_USERFLAG_PW_DEC 0x800
-#define OP_USERFLAG_PW_ZERO 0xc00
-
-
class mb86235_device : public cpu_device
{
friend class mb86235_frontend;
@@ -65,9 +48,9 @@ public:
MB86235_AR0, MB86235_AR1, MB86235_AR2, MB86235_AR3, MB86235_AR4, MB86235_AR5, MB86235_AR6, MB86235_AR7,
};
- const int FIFOIN_SIZE = 16;
- const int FIFOOUT0_SIZE = 16;
- const int FIFOOUT1_SIZE = 16;
+ static constexpr int FIFOIN_SIZE = 16;
+ static constexpr int FIFOOUT0_SIZE = 16;
+ static constexpr int FIFOOUT1_SIZE = 16;
protected:
// device-level overrides
@@ -243,9 +226,9 @@ private:
};
-extern const device_type MB86235;
+DECLARE_DEVICE_TYPE(MB86235, mb86235_device)
CPU_DISASSEMBLE( mb86235 );
-#endif /* __MB86235_H__ */
+#endif // MAME_CPU_MB86235_MB86235_H
diff --git a/src/devices/cpu/mb86235/mb86235defs.h b/src/devices/cpu/mb86235/mb86235defs.h
new file mode 100644
index 00000000000..b3ad225257c
--- /dev/null
+++ b/src/devices/cpu/mb86235/mb86235defs.h
@@ -0,0 +1,21 @@
+#ifndef MAME_CPU_MB86235_MB86235DEFS_H
+#define MAME_CPU_MB86235_MB86235DEFS_H
+
+#pragma once
+
+
+#define OP_USERFLAG_FIFOIN 0x1
+#define OP_USERFLAG_FIFOOUT0 0x2
+#define OP_USERFLAG_FIFOOUT1 0x4
+#define OP_USERFLAG_REPEAT 0x8
+#define OP_USERFLAG_REPEATED_OP 0x10
+#define OP_USERFLAG_PR_MASK 0x300
+#define OP_USERFLAG_PR_INC 0x100
+#define OP_USERFLAG_PR_DEC 0x200
+#define OP_USERFLAG_PR_ZERO 0x300
+#define OP_USERFLAG_PW_MASK 0xc00
+#define OP_USERFLAG_PW_INC 0x400
+#define OP_USERFLAG_PW_DEC 0x800
+#define OP_USERFLAG_PW_ZERO 0xc00
+
+#endif // MAME_CPU_MB86235_MB86235DEFS_H
diff --git a/src/devices/cpu/mb86235/mb86235drc.cpp b/src/devices/cpu/mb86235/mb86235drc.cpp
index 0a27c23eafc..d3fa314b0ae 100644
--- a/src/devices/cpu/mb86235/mb86235drc.cpp
+++ b/src/devices/cpu/mb86235/mb86235drc.cpp
@@ -8,12 +8,16 @@
******************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "mb86235.h"
#include "mb86235fe.h"
+
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
#include "cpu/drcumlsh.h"
+#include "debugger.h"
+
+#include "mb86235defs.h"
+
/*
TODO:
diff --git a/src/devices/cpu/mb86235/mb86235fe.cpp b/src/devices/cpu/mb86235/mb86235fe.cpp
index f55fb0934bf..854fd97abb7 100644
--- a/src/devices/cpu/mb86235/mb86235fe.cpp
+++ b/src/devices/cpu/mb86235/mb86235fe.cpp
@@ -10,6 +10,8 @@
#include "emu.h"
#include "mb86235fe.h"
+#include "mb86235defs.h"
+
#define AA_USED(desc,x) do { (desc).regin[0] |= 1 << (x); } while(0)
#define AA_MODIFIED(desc,x) do { (desc).regout[0] |= 1 << (x); } while(0)
diff --git a/src/devices/cpu/mb88xx/mb88xx.cpp b/src/devices/cpu/mb88xx/mb88xx.cpp
index 3d0b88b2382..24a2943e518 100644
--- a/src/devices/cpu/mb88xx/mb88xx.cpp
+++ b/src/devices/cpu/mb88xx/mb88xx.cpp
@@ -16,17 +16,17 @@
***************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "mb88xx.h"
+#include "debugger.h"
-const device_type MB88 = device_creator<mb88_cpu_device>;
-const device_type MB88201 = device_creator<mb88201_cpu_device>;
-const device_type MB88202 = device_creator<mb88202_cpu_device>;
-const device_type MB8841 = device_creator<mb8841_cpu_device>;
-const device_type MB8842 = device_creator<mb8842_cpu_device>;
-const device_type MB8843 = device_creator<mb8843_cpu_device>;
-const device_type MB8844 = device_creator<mb8844_cpu_device>;
+DEFINE_DEVICE_TYPE(MB88, mb88_cpu_device, "mb88xx", "MB88xx");
+DEFINE_DEVICE_TYPE(MB88201, mb88201_cpu_device, "mb88201", "MB88201")
+DEFINE_DEVICE_TYPE(MB88202, mb88202_cpu_device, "mb88202", "MB88202")
+DEFINE_DEVICE_TYPE(MB8841, mb8841_cpu_device, "mb8841", "MB8841")
+DEFINE_DEVICE_TYPE(MB8842, mb8842_cpu_device, "mb8842", "MB8842")
+DEFINE_DEVICE_TYPE(MB8843, mb8843_cpu_device, "mb8843", "MB8843")
+DEFINE_DEVICE_TYPE(MB8844, mb8844_cpu_device, "mb8844", "MB8844")
/***************************************************************************
@@ -110,7 +110,7 @@ ADDRESS_MAP_END
mb88_cpu_device::mb88_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, MB88, "MB88xx", tag, owner, clock, "mb88xx", __FILE__)
+ : cpu_device(mconfig, MB88, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 8, 11, 0)
, m_data_config("data", ENDIANNESS_BIG, 8, 7, 0)
, m_io_config("io", ENDIANNESS_BIG, 8, 3, 0)
@@ -119,46 +119,46 @@ mb88_cpu_device::mb88_cpu_device(const machine_config &mconfig, const char *tag,
}
-mb88_cpu_device::mb88_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int program_width, int data_width)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_BIG, 8, program_width, 0, ( (program_width == 9) ? ADDRESS_MAP_NAME(program_9bit) : (program_width == 10) ? ADDRESS_MAP_NAME(program_10bit) : ADDRESS_MAP_NAME(program_11bit) ) )
- , m_data_config("data", ENDIANNESS_BIG, 8, data_width, 0, ( (data_width == 4) ? ADDRESS_MAP_NAME(data_4bit) : (data_width == 5) ? ADDRESS_MAP_NAME(data_5bit) : (data_width == 6) ? ADDRESS_MAP_NAME(data_6bit) : ADDRESS_MAP_NAME(data_7bit) ) )
+mb88_cpu_device::mb88_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_BIG, 8, program_width, 0, (program_width == 9) ? ADDRESS_MAP_NAME(program_9bit) : (program_width == 10) ? ADDRESS_MAP_NAME(program_10bit) : ADDRESS_MAP_NAME(program_11bit))
+ , m_data_config("data", ENDIANNESS_BIG, 8, data_width, 0, (data_width == 4) ? ADDRESS_MAP_NAME(data_4bit) : (data_width == 5) ? ADDRESS_MAP_NAME(data_5bit) : (data_width == 6) ? ADDRESS_MAP_NAME(data_6bit) : ADDRESS_MAP_NAME(data_7bit))
, m_io_config("io", ENDIANNESS_BIG, 8, 3, 0)
, m_PLA(nullptr)
{
}
mb88201_cpu_device::mb88201_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mb88_cpu_device(mconfig, MB88201, "MB88201", tag, owner, clock, "mb88201", __FILE__, 9, 4)
+ : mb88_cpu_device(mconfig, MB88201, tag, owner, clock, 9, 4)
{
}
mb88202_cpu_device::mb88202_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mb88_cpu_device(mconfig, MB88202, "MB88202", tag, owner, clock, "mb88202", __FILE__, 10, 5)
+ : mb88_cpu_device(mconfig, MB88202, tag, owner, clock, 10, 5)
{
}
mb8841_cpu_device::mb8841_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mb88_cpu_device(mconfig, MB8841, "MB8841", tag, owner, clock, "mb8841", __FILE__, 11, 7)
+ : mb88_cpu_device(mconfig, MB8841, tag, owner, clock, 11, 7)
{
}
mb8842_cpu_device::mb8842_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mb88_cpu_device(mconfig, MB8842, "MB8842", tag, owner, clock, "mb8842", __FILE__, 11, 7)
+ : mb88_cpu_device(mconfig, MB8842, tag, owner, clock, 11, 7)
{
}
mb8843_cpu_device::mb8843_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mb88_cpu_device(mconfig, MB8843, "MB8843", tag, owner, clock, "mb8843", __FILE__, 10, 6)
+ : mb88_cpu_device(mconfig, MB8843, tag, owner, clock, 10, 6)
{
}
mb8844_cpu_device::mb8844_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mb88_cpu_device(mconfig, MB8844, "MB8844", tag, owner, clock, "mb8844", __FILE__, 10, 6)
+ : mb88_cpu_device(mconfig, MB8844, tag, owner, clock, 10, 6)
{
}
diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h
index e5acb3e7526..b44a93709cc 100644
--- a/src/devices/cpu/mb88xx/mb88xx.h
+++ b/src/devices/cpu/mb88xx/mb88xx.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_MB88XX_MB88XX_H
+#define MAME_CPU_MB88XX_MB88XX_H
-#ifndef __MB88XX_H__
-#define __MB88XX_H__
+#pragma once
/***************************************************************************
@@ -65,7 +65,6 @@ class mb88_cpu_device : public cpu_device
public:
// construction/destruction
mb88_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- mb88_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int program_width, int data_width);
// static configuration helpers
static void set_pla(device_t &device, uint8_t *pla) { downcast<mb88_cpu_device &>(device).m_PLA = pla; }
@@ -73,6 +72,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( clock_w );
protected:
+ mb88_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -87,7 +88,7 @@ protected:
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 6); }
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ) ); }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_DATA) ? &m_data_config : (spacenum == AS_IO) ? &m_io_config : nullptr; }
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
@@ -205,13 +206,12 @@ public:
};
-extern const device_type MB88;
-extern const device_type MB88201;
-extern const device_type MB88202;
-extern const device_type MB8841;
-extern const device_type MB8842;
-extern const device_type MB8843;
-extern const device_type MB8844;
-
+DECLARE_DEVICE_TYPE(MB88, mb88_cpu_device)
+DECLARE_DEVICE_TYPE(MB88201, mb88201_cpu_device)
+DECLARE_DEVICE_TYPE(MB88202, mb88202_cpu_device)
+DECLARE_DEVICE_TYPE(MB8841, mb8841_cpu_device)
+DECLARE_DEVICE_TYPE(MB8842, mb8842_cpu_device)
+DECLARE_DEVICE_TYPE(MB8843, mb8843_cpu_device)
+DECLARE_DEVICE_TYPE(MB8844, mb8844_cpu_device)
-#endif /* __MB88XX_H__ */
+#endif // MAME_CPU_MB88XX_MB88XX_H
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.cpp b/src/devices/cpu/mc68hc11/mc68hc11.cpp
index e4405d4c1ec..3bac6f74f14 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.cpp
+++ b/src/devices/cpu/mc68hc11/mc68hc11.cpp
@@ -39,11 +39,11 @@ enum
static const int div_tab[4] = { 1, 4, 8, 16 };
-const device_type MC68HC11 = device_creator<mc68hc11_cpu_device>;
+DEFINE_DEVICE_TYPE(MC68HC11, mc68hc11_cpu_device, "mc68hc11", "MC68HC11")
mc68hc11_cpu_device::mc68hc11_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, MC68HC11, "MC68HC11", tag, owner, clock, "mc68hc11", __FILE__)
+ : cpu_device(mconfig, MC68HC11, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0 )
, m_io_config("io", ENDIANNESS_LITTLE, 8, 8, 0)
/* defaults it to the HC11M0 version for now (I might strip this down on a later date) */
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h
index 1c83b137d06..1156eed45c3 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.h
+++ b/src/devices/cpu/mc68hc11/mc68hc11.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Ville Linde, Angelo Salese, hap
-#pragma once
+#ifndef MAME_CPU_MC68HC11_MC68HC11_H
+#define MAME_CPU_MC68HC11_MC68HC11_H
-#ifndef __MC68HC11_H__
-#define __MC68HC11_H__
+#pragma once
#define MC68HC11_IO_PORTA 0x00
@@ -29,7 +29,7 @@
#define MC68HC11_TOC1_LINE 1
-extern const device_type MC68HC11;
+DECLARE_DEVICE_TYPE(MC68HC11, mc68hc11_cpu_device)
#define MCFG_MC68HC11_CONFIG(_has_extended_io, _internal_ram_size, _init_value) \
@@ -439,5 +439,4 @@ private:
void check_irq_lines();
};
-
-#endif /* __MC68HC11_H__ */
+#endif // MAME_CPU_MC68HC11_MC68HC11_H
diff --git a/src/devices/cpu/mcs48/mcs48.cpp b/src/devices/cpu/mcs48/mcs48.cpp
index f1427487cd6..0a1bf4432cb 100644
--- a/src/devices/cpu/mcs48/mcs48.cpp
+++ b/src/devices/cpu/mcs48/mcs48.cpp
@@ -151,25 +151,25 @@
-const device_type I8021 = device_creator<i8021_device>;
-const device_type I8022 = device_creator<i8022_device>;
-const device_type I8035 = device_creator<i8035_device>;
-const device_type I8048 = device_creator<i8048_device>;
-const device_type I8648 = device_creator<i8648_device>;
-const device_type I8748 = device_creator<i8748_device>;
-const device_type I8039 = device_creator<i8039_device>;
-const device_type I8049 = device_creator<i8049_device>;
-const device_type I8749 = device_creator<i8749_device>;
-const device_type I8040 = device_creator<i8040_device>;
-const device_type I8050 = device_creator<i8050_device>;
-const device_type I8041 = device_creator<i8041_device>;
-const device_type I8741 = device_creator<i8741_device>;
-const device_type I8042 = device_creator<i8042_device>;
-const device_type I8242 = device_creator<i8242_device>;
-const device_type I8742 = device_creator<i8742_device>;
-const device_type MB8884 = device_creator<mb8884_device>;
-const device_type N7751 = device_creator<n7751_device>;
-const device_type M58715 = device_creator<m58715_device>;
+DEFINE_DEVICE_TYPE(I8021, i8021_device, "i8021", "I8021")
+DEFINE_DEVICE_TYPE(I8022, i8022_device, "i8022", "I8022")
+DEFINE_DEVICE_TYPE(I8035, i8035_device, "i8035", "I8035")
+DEFINE_DEVICE_TYPE(I8048, i8048_device, "i8048", "I8048")
+DEFINE_DEVICE_TYPE(I8648, i8648_device, "i8648", "I8648")
+DEFINE_DEVICE_TYPE(I8748, i8748_device, "i8748", "I8748")
+DEFINE_DEVICE_TYPE(I8039, i8039_device, "i8039", "I8039")
+DEFINE_DEVICE_TYPE(I8049, i8049_device, "i8049", "I8049")
+DEFINE_DEVICE_TYPE(I8749, i8749_device, "i8749", "I8749")
+DEFINE_DEVICE_TYPE(I8040, i8040_device, "i8040", "I8040")
+DEFINE_DEVICE_TYPE(I8050, i8050_device, "i8050", "I8050")
+DEFINE_DEVICE_TYPE(I8041, i8041_device, "i8041", "I8041")
+DEFINE_DEVICE_TYPE(I8741, i8741_device, "i8741", "I8741")
+DEFINE_DEVICE_TYPE(I8042, i8042_device, "i8042", "I8042")
+DEFINE_DEVICE_TYPE(I8242, i8242_device, "i8242", "I8242")
+DEFINE_DEVICE_TYPE(I8742, i8742_device, "i8742", "I8742")
+DEFINE_DEVICE_TYPE(MB8884, mb8884_device, "mb8884", "MB8884")
+DEFINE_DEVICE_TYPE(N7751, n7751_device, "n7751", "N7751")
+DEFINE_DEVICE_TYPE(M58715, m58715_device, "m58715", "M58715")
/***************************************************************************
@@ -202,12 +202,12 @@ static ADDRESS_MAP_START(data_8bit, AS_DATA, 8, mcs48_cpu_device)
ADDRESS_MAP_END
-mcs48_cpu_device::mcs48_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int rom_size, int ram_size, uint8_t feature_mask)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+mcs48_cpu_device::mcs48_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int rom_size, int ram_size, uint8_t feature_mask)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 12, 0
- , ( ( rom_size == 1024 ) ? ADDRESS_MAP_NAME(program_10bit) : ( ( rom_size == 2048 ) ? ADDRESS_MAP_NAME(program_11bit) : ( ( rom_size == 4096 ) ? ADDRESS_MAP_NAME(program_12bit) : nullptr ) ) ))
+ , (rom_size == 1024) ? ADDRESS_MAP_NAME(program_10bit) : (rom_size == 2048) ? ADDRESS_MAP_NAME(program_11bit) : (rom_size == 4096) ? ADDRESS_MAP_NAME(program_12bit) : nullptr)
, m_data_config("data", ENDIANNESS_LITTLE, 8, ( ( ram_size == 64 ) ? 6 : ( ( ram_size == 128 ) ? 7 : 8 ) ), 0
- , ( ( ram_size == 64 ) ? ADDRESS_MAP_NAME(data_6bit) : ( ( ram_size == 128 ) ? ADDRESS_MAP_NAME(data_7bit) : ADDRESS_MAP_NAME(data_8bit) ) ))
+ , (ram_size == 64) ? ADDRESS_MAP_NAME(data_6bit) : (ram_size == 128) ? ADDRESS_MAP_NAME(data_7bit) : ADDRESS_MAP_NAME(data_8bit))
, m_io_config("io", ENDIANNESS_LITTLE, 8, 8, 0)
, m_port_in_cb{{*this}, {*this}}
, m_port_out_cb{{*this}, {*this}}
@@ -233,102 +233,102 @@ mcs48_cpu_device::mcs48_cpu_device(const machine_config &mconfig, device_type ty
}
i8021_device::i8021_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8021, "I8021", tag, owner, clock, "i8021", 1024, 64)
+ : mcs48_cpu_device(mconfig, I8021, tag, owner, clock, 1024, 64)
{
}
i8022_device::i8022_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8022, "I8022", tag, owner, clock, "i8022", 2048, 128)
+ : mcs48_cpu_device(mconfig, I8022, tag, owner, clock, 2048, 128)
{
}
i8035_device::i8035_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8035, "I8035", tag, owner, clock, "i8035", 0, 64)
+ : mcs48_cpu_device(mconfig, I8035, tag, owner, clock, 0, 64)
{
}
i8048_device::i8048_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8048, "I8048", tag, owner, clock, "i8048", 1024, 64)
+ : mcs48_cpu_device(mconfig, I8048, tag, owner, clock, 1024, 64)
{
}
i8648_device::i8648_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8648, "I8648", tag, owner, clock, "i8648", 1024, 64)
+ : mcs48_cpu_device(mconfig, I8648, tag, owner, clock, 1024, 64)
{
}
i8748_device::i8748_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8748, "I8748", tag, owner, clock, "i8748", 1024, 64)
+ : mcs48_cpu_device(mconfig, I8748, tag, owner, clock, 1024, 64)
{
}
i8039_device::i8039_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8039, "I8039", tag, owner, clock, "i8039", 0, 128)
+ : mcs48_cpu_device(mconfig, I8039, tag, owner, clock, 0, 128)
{
}
i8049_device::i8049_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8049, "I8049", tag, owner, clock, "i8049", 2048, 128)
+ : mcs48_cpu_device(mconfig, I8049, tag, owner, clock, 2048, 128)
{
}
i8749_device::i8749_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8749, "I8749", tag, owner, clock, "i8749", 2048, 128)
+ : mcs48_cpu_device(mconfig, I8749, tag, owner, clock, 2048, 128)
{
}
i8040_device::i8040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8040, "I8040", tag, owner, clock, "i8040", 0, 256)
+ : mcs48_cpu_device(mconfig, I8040, tag, owner, clock, 0, 256)
{
}
i8050_device::i8050_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, I8050, "I8050", tag, owner, clock, "i8050", 4096, 256)
+ : mcs48_cpu_device(mconfig, I8050, tag, owner, clock, 4096, 256)
{
}
mb8884_device::mb8884_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, MB8884, "MB8884", tag, owner, clock, "mb8884", 0, 64)
+ : mcs48_cpu_device(mconfig, MB8884, tag, owner, clock, 0, 64)
{
}
n7751_device::n7751_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, N7751, "N7751", tag, owner, clock, "n7751", 1024, 64)
+ : mcs48_cpu_device(mconfig, N7751, tag, owner, clock, 1024, 64)
{
}
m58715_device::m58715_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs48_cpu_device(mconfig, M58715, "M58715", tag, owner, clock, "m58715", 2048, 128)
+ : mcs48_cpu_device(mconfig, M58715, tag, owner, clock, 2048, 128)
{
}
-upi41_cpu_device::upi41_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int rom_size, int ram_size)
- : mcs48_cpu_device(mconfig, type, name, tag, owner, clock, shortname, rom_size, ram_size, UPI41_FEATURE)
+upi41_cpu_device::upi41_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int rom_size, int ram_size)
+ : mcs48_cpu_device(mconfig, type, tag, owner, clock, rom_size, ram_size, UPI41_FEATURE)
{
}
i8041_device::i8041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upi41_cpu_device(mconfig, I8041, "I8041", tag, owner, clock, "i8041", 1024, 128)
+ : upi41_cpu_device(mconfig, I8041, tag, owner, clock, 1024, 128)
{
}
i8741_device::i8741_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upi41_cpu_device(mconfig, I8741, "I8741", tag, owner, clock, "i8741", 1024, 128)
+ : upi41_cpu_device(mconfig, I8741, tag, owner, clock, 1024, 128)
{
}
i8042_device::i8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upi41_cpu_device(mconfig, I8042, "I8042", tag, owner, clock, "i8042", 2048, 256)
+ : upi41_cpu_device(mconfig, I8042, tag, owner, clock, 2048, 256)
{
}
i8242_device::i8242_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upi41_cpu_device(mconfig, I8242, "I8242", tag, owner, clock, "i8242", 2048, 256)
+ : upi41_cpu_device(mconfig, I8242, tag, owner, clock, 2048, 256)
{
}
i8742_device::i8742_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upi41_cpu_device(mconfig, I8742, "I8742", tag, owner, clock, "i8742", 2048, 256)
+ : upi41_cpu_device(mconfig, I8742, tag, owner, clock, 2048, 256)
{
}
diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h
index 8e23671684c..274224099e9 100644
--- a/src/devices/cpu/mcs48/mcs48.h
+++ b/src/devices/cpu/mcs48/mcs48.h
@@ -11,10 +11,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_MCS48_MCS48_H
+#define MAME_CPU_MCS48_MCS48_H
-#ifndef __MCS48_H__
-#define __MCS48_H__
+#pragma once
@@ -102,29 +102,29 @@ enum
***************************************************************************/
/* Official Intel MCS-48 parts */
-extern const device_type I8021; /* 1k internal ROM, 64 bytes internal RAM */
-extern const device_type I8022; /* 2k internal ROM, 128 bytes internal RAM */
-extern const device_type I8035; /* external ROM, 64 bytes internal RAM */
-extern const device_type I8048; /* 1k internal ROM, 64 bytes internal RAM */
-extern const device_type I8648; /* 1k internal OTP ROM, 64 bytes internal RAM */
-extern const device_type I8748; /* 1k internal EEPROM, 64 bytes internal RAM */
-extern const device_type I8039; /* external ROM, 128 bytes internal RAM */
-extern const device_type I8049; /* 2k internal ROM, 128 bytes internal RAM */
-extern const device_type I8749; /* 2k internal EEPROM, 128 bytes internal RAM */
-extern const device_type I8040; /* external ROM, 256 bytes internal RAM */
-extern const device_type I8050; /* 4k internal ROM, 256 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8021, i8021_device) /* 1k internal ROM, 64 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8022, i8022_device) /* 2k internal ROM, 128 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8035, i8035_device) /* external ROM, 64 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8048, i8048_device) /* 1k internal ROM, 64 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8648, i8648_device) /* 1k internal OTP ROM, 64 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8748, i8748_device) /* 1k internal EEPROM, 64 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8039, i8039_device) /* external ROM, 128 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8049, i8049_device) /* 2k internal ROM, 128 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8749, i8749_device) /* 2k internal EEPROM, 128 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8040, i8040_device) /* external ROM, 256 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8050, i8050_device) /* 4k internal ROM, 256 bytes internal RAM */
/* Official Intel UPI-41 parts */
-extern const device_type I8041; /* 1k internal ROM, 128 bytes internal RAM */
-extern const device_type I8741; /* 1k internal EEPROM, 128 bytes internal RAM */
-extern const device_type I8042; /* 2k internal ROM, 256 bytes internal RAM */
-extern const device_type I8242; /* 2k internal ROM, 256 bytes internal RAM */
-extern const device_type I8742; /* 2k internal EEPROM, 256 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8041, i8041_device) /* 1k internal ROM, 128 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8741, i8741_device) /* 1k internal EEPROM, 128 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8042, i8042_device) /* 2k internal ROM, 256 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8242, i8242_device) /* 2k internal ROM, 256 bytes internal RAM */
+DECLARE_DEVICE_TYPE(I8742, i8742_device) /* 2k internal EEPROM, 256 bytes internal RAM */
/* Clones */
-extern const device_type MB8884; /* 8035 clone */
-extern const device_type N7751; /* 8048 clone */
-extern const device_type M58715; /* 8049 clone */
+DECLARE_DEVICE_TYPE(MB8884, mb8884_device) /* 8035 clone */
+DECLARE_DEVICE_TYPE(N7751, n7751_device) /* 8048 clone */
+DECLARE_DEVICE_TYPE(M58715, m58715_device) /* 8049 clone */
@@ -140,22 +140,22 @@ public:
EXPANDER_OP_AND = 3
};
- // construction/destruction
- mcs48_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int rom_size, int ram_size, uint8_t feature_mask = 0);
-
// static configuration
- template<class Object> static devcb_base &set_port_in_cb(device_t &device, int n, Object &&obj) { return downcast<mcs48_cpu_device &>(device).m_port_in_cb[n].set_callback(std::forward<Object>(obj)); }
- template<class Object> static devcb_base &set_port_out_cb(device_t &device, int n, Object &&obj) { return downcast<mcs48_cpu_device &>(device).m_port_out_cb[n].set_callback(std::forward<Object>(obj)); }
- template<class Object> static devcb_base &set_bus_in_cb(device_t &device, Object &&obj) { return downcast<mcs48_cpu_device &>(device).m_bus_in_cb.set_callback(std::forward<Object>(obj)); }
- template<class Object> static devcb_base &set_bus_out_cb(device_t &device, Object &&obj) { return downcast<mcs48_cpu_device &>(device).m_bus_out_cb.set_callback(std::forward<Object>(obj)); }
- template<class Object> static devcb_base &set_test_in_cb(device_t &device, int n, Object &&obj) { return downcast<mcs48_cpu_device &>(device).m_test_in_cb[n].set_callback(std::forward<Object>(obj)); }
+ template <class Object> static devcb_base &set_port_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_port_in_cb[n].set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port_out_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_port_out_cb[n].set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_bus_in_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_bus_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_bus_out_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_bus_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_test_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_test_in_cb[n].set_callback(std::forward<Object>(cb)); }
static void set_t0_clk_cb(device_t &device, clock_update_delegate &&func) { downcast<mcs48_cpu_device &>(device).m_t0_clk_func = std::move(func); }
- template<class Object> static devcb_base &set_prog_out_cb(device_t &device, Object &&obj) { return downcast<mcs48_cpu_device &>(device).m_prog_out_cb.set_callback(std::forward<Object>(obj)); }
+ template <class Object> static devcb_base &set_prog_out_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_prog_out_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(p1_r);
DECLARE_READ8_MEMBER(p2_r);
protected:
+ // construction/destruction
+ mcs48_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int rom_size, int ram_size, uint8_t feature_mask = 0);
+
// device-level overrides
virtual void device_start() override;
virtual void device_config_complete() override;
@@ -628,14 +628,14 @@ public:
class upi41_cpu_device : public mcs48_cpu_device
{
public:
- // construction/destruction
- upi41_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int rom_size, int ram_size);
-
/* functions for talking to the input/output buffers on the UPI41-class chips */
DECLARE_READ8_MEMBER(upi41_master_r);
DECLARE_WRITE8_MEMBER(upi41_master_w);
protected:
+ // construction/destruction
+ upi41_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int rom_size, int ram_size);
+
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
TIMER_CALLBACK_MEMBER( master_callback );
@@ -677,4 +677,4 @@ public:
};
-#endif /* __MCS48_H__ */
+#endif // MAME_CPU_MCS48_MCS48_H
diff --git a/src/devices/cpu/mcs51/mcs51.cpp b/src/devices/cpu/mcs51/mcs51.cpp
index dadbf3113f3..997f475ccbc 100644
--- a/src/devices/cpu/mcs51/mcs51.cpp
+++ b/src/devices/cpu/mcs51/mcs51.cpp
@@ -221,20 +221,20 @@ enum
};
-const device_type I8031 = device_creator<i8031_device>;
-const device_type I8032 = device_creator<i8032_device>;
-const device_type I8051 = device_creator<i8051_device>;
-const device_type I8751 = device_creator<i8751_device>;
-const device_type I8052 = device_creator<i8052_device>;
-const device_type I8752 = device_creator<i8752_device>;
-const device_type I80C31 = device_creator<i80c31_device>;
-const device_type I80C51 = device_creator<i80c51_device>;
-const device_type I87C51 = device_creator<i87c51_device>;
-const device_type I80C32 = device_creator<i80c32_device>;
-const device_type I80C52 = device_creator<i80c52_device>;
-const device_type I87C52 = device_creator<i87c52_device>;
-const device_type AT89C4051 = device_creator<at89c4051_device>;
-const device_type DS5002FP = device_creator<ds5002fp_device>;
+DEFINE_DEVICE_TYPE(I8031, i8031_device, "i8031", "I8031")
+DEFINE_DEVICE_TYPE(I8032, i8032_device, "i8032", "I8032")
+DEFINE_DEVICE_TYPE(I8051, i8051_device, "i8051", "I8051")
+DEFINE_DEVICE_TYPE(I8751, i8751_device, "i8751", "I8751")
+DEFINE_DEVICE_TYPE(I8052, i8052_device, "i8052", "I8052")
+DEFINE_DEVICE_TYPE(I8752, i8752_device, "i8752", "I8752")
+DEFINE_DEVICE_TYPE(I80C31, i80c31_device, "i80c31", "I80C31")
+DEFINE_DEVICE_TYPE(I80C51, i80c51_device, "i80c51", "I80C51")
+DEFINE_DEVICE_TYPE(I87C51, i87c51_device, "i87c51", "I87C51")
+DEFINE_DEVICE_TYPE(I80C32, i80c32_device, "i80c32", "I80C32")
+DEFINE_DEVICE_TYPE(I80C52, i80c52_device, "i80c52", "I80C52")
+DEFINE_DEVICE_TYPE(I87C52, i87c52_device, "i87c52", "I87C52")
+DEFINE_DEVICE_TYPE(AT89C4051, at89c4051_device, "at89c4051", "AT89C4051")
+DEFINE_DEVICE_TYPE(DS5002FP, ds5002fp_device, "ds5002fp", "DS5002FP")
/***************************************************************************
@@ -260,12 +260,12 @@ static ADDRESS_MAP_START(data_8bit, AS_DATA, 8, mcs51_cpu_device)
ADDRESS_MAP_END
-mcs51_cpu_device::mcs51_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0
- , ( ( program_width == 12 ) ? ADDRESS_MAP_NAME(program_12bit) : ( ( program_width == 13 ) ? ADDRESS_MAP_NAME(program_13bit) : nullptr ) ))
- , m_data_config("data", ENDIANNESS_LITTLE, 8, 9, 0
- , ( ( data_width == 7 ) ? ADDRESS_MAP_NAME(data_7bit) : ( ( data_width == 8 ) ? ADDRESS_MAP_NAME(data_8bit) : nullptr ) ))
+mcs51_cpu_device::mcs51_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width, uint8_t features)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0,
+ (program_width == 12) ? ADDRESS_MAP_NAME(program_12bit) : (program_width == 13) ? ADDRESS_MAP_NAME(program_13bit) : nullptr)
+ , m_data_config("data", ENDIANNESS_LITTLE, 8, 9, 0,
+ (data_width == 7) ? ADDRESS_MAP_NAME(data_7bit) : (data_width == 8) ? ADDRESS_MAP_NAME(data_8bit) : nullptr )
, m_io_config("io", ENDIANNESS_LITTLE, 8, 18, 0)
, m_pc(0)
, m_features(features)
@@ -287,91 +287,90 @@ mcs51_cpu_device::mcs51_cpu_device(const machine_config &mconfig, device_type ty
i8031_device::i8031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs51_cpu_device(mconfig, I8031, "I8031", tag, owner, clock, "i8031", 0, 7)
+ : mcs51_cpu_device(mconfig, I8031, tag, owner, clock, 0, 7)
{
}
i8051_device::i8051_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs51_cpu_device(mconfig, I8051, "I8051", tag, owner, clock, "i8051", 12, 7)
+ : mcs51_cpu_device(mconfig, I8051, tag, owner, clock, 12, 7)
{
}
i8751_device::i8751_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs51_cpu_device(mconfig, I8751, "I8751", tag, owner, clock, "i8751", 12, 7)
+ : mcs51_cpu_device(mconfig, I8751, tag, owner, clock, 12, 7)
{
}
-i8052_device::i8052_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features)
- : mcs51_cpu_device(mconfig, type, name, tag, owner, clock, shortname, program_width, data_width, features | FEATURE_I8052)
+i8052_device::i8052_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width, uint8_t features)
+ : mcs51_cpu_device(mconfig, type, tag, owner, clock, program_width, data_width, features | FEATURE_I8052)
{
m_num_interrupts = 6;
}
i8052_device::i8052_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs51_cpu_device(mconfig, I8052, "I8052", tag, owner, clock, "i8052", 13, 8, FEATURE_I8052)
+ : i8052_device(mconfig, I8052, tag, owner, clock, 13, 8)
{
- m_num_interrupts = 6;
}
i8032_device::i8032_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8052_device(mconfig, I8032, "I8032", tag, owner, clock, "i8032", 0, 8)
+ : i8052_device(mconfig, I8032, tag, owner, clock, 0, 8)
{
}
i8752_device::i8752_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8052_device(mconfig, I8752, "I8752", tag, owner, clock, "i8752", 13, 8)
+ : i8052_device(mconfig, I8752, tag, owner, clock, 13, 8)
{
}
i80c31_device::i80c31_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8052_device(mconfig, I80C31, "I80C31", tag, owner, clock, "i80c31", 0, 7)
+ : i8052_device(mconfig, I80C31, tag, owner, clock, 0, 7)
{
}
-i80c51_device::i80c51_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features)
- : mcs51_cpu_device(mconfig, type, name, tag, owner, clock, shortname, program_width, data_width, features | FEATURE_CMOS)
+i80c51_device::i80c51_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width, uint8_t features)
+ : mcs51_cpu_device(mconfig, type, tag, owner, clock, program_width, data_width, features | FEATURE_CMOS)
{
}
i80c51_device::i80c51_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs51_cpu_device(mconfig, I80C51, "I80C51", tag, owner, clock, "i80c51", 12, 7)
+ : i80c51_device(mconfig, I80C51, tag, owner, clock, 12, 7)
{
}
i87c51_device::i87c51_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i80c51_device(mconfig, I87C51, "I87C51", tag, owner, clock, "i87c51", 12, 7)
+ : i80c51_device(mconfig, I87C51, tag, owner, clock, 12, 7)
{
}
-i80c52_device::i80c52_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features)
- : i8052_device(mconfig, type, name, tag, owner, clock, shortname, program_width, data_width, features | FEATURE_I80C52 | FEATURE_CMOS)
+i80c52_device::i80c52_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width, uint8_t features)
+ : i8052_device(mconfig, type, tag, owner, clock, program_width, data_width, features | FEATURE_I80C52 | FEATURE_CMOS)
{
}
i80c52_device::i80c52_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8052_device(mconfig, I80C52, "I80C52", tag, owner, clock, "i80c52", 13, 8, FEATURE_I80C52 | FEATURE_CMOS)
+ : i80c52_device(mconfig, I80C52, tag, owner, clock, 13, 8)
{
}
i80c32_device::i80c32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i80c52_device(mconfig, I80C32, "I80C32", tag, owner, clock, "i80c32", 0, 8)
+ : i80c52_device(mconfig, I80C32, tag, owner, clock, 0, 8)
{
}
i87c52_device::i87c52_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i80c52_device(mconfig, I87C52, "I87C52", tag, owner, clock, "i87c52", 13, 8)
+ : i80c52_device(mconfig, I87C52, tag, owner, clock, 13, 8)
{
}
at89c4051_device::at89c4051_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i80c51_device(mconfig, AT89C4051, "AT89C4051", tag, owner, clock, "at89c4051", 12, 7)
+ : i80c51_device(mconfig, AT89C4051, tag, owner, clock, 12, 7)
{
}
ds5002fp_device::ds5002fp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mcs51_cpu_device(mconfig, DS5002FP, "DS5002FP", tag, owner, clock, "ds5002fp", 12, 7, FEATURE_DS5002FP | FEATURE_CMOS)
+ : mcs51_cpu_device(mconfig, DS5002FP, tag, owner, clock, 12, 7, FEATURE_DS5002FP | FEATURE_CMOS)
{
}
diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h
index f2ff095a940..e9c9109c860 100644
--- a/src/devices/cpu/mcs51/mcs51.h
+++ b/src/devices/cpu/mcs51/mcs51.h
@@ -26,10 +26,10 @@
* - full emulation of 8xCx2 processors
*****************************************************************************/
-#pragma once
+#ifndef MAME_CPU_MCS51_MCS51_H
+#define MAME_CPU_MCS51_MCS51_H
-#ifndef __MCS51_H__
-#define __MCS51_H__
+#pragma once
#define MCFG_MCS51_SERIAL_RX_CB(_devcb) \
@@ -83,15 +83,15 @@ enum
class mcs51_cpu_device : public cpu_device
{
public:
- // construction/destruction
- mcs51_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features = 0);
-
// configuration helpers
static void set_port_forced_input(device_t &device, uint8_t port, uint8_t forced_input) { downcast<mcs51_cpu_device &>(device).m_forced_inputs[port] = forced_input; }
template<class _Object> static devcb_base & set_serial_rx_cb(device_t &device, _Object object) { return downcast<mcs51_cpu_device &>(device).m_serial_rx_cb.set_callback(object); }
template<class _Object> static devcb_base & set_serial_tx_cb(device_t &device, _Object object) { return downcast<mcs51_cpu_device &>(device).m_serial_tx_cb.set_callback(object); }
protected:
+ // construction/destruction
+ mcs51_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width, uint8_t features = 0);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -341,26 +341,26 @@ protected:
/* variants with no internal rom and 128 byte internal memory */
-extern const device_type I8031;
+DECLARE_DEVICE_TYPE(I8031, i8031_device)
/* variants with no internal rom and 256 byte internal memory */
-extern const device_type I8032;
+DECLARE_DEVICE_TYPE(I8032, i8032_device)
/* variants 4k internal rom and 128 byte internal memory */
-extern const device_type I8051;
-extern const device_type I8751;
+DECLARE_DEVICE_TYPE(I8051, i8051_device)
+DECLARE_DEVICE_TYPE(I8751, i8751_device)
/* variants 8k internal rom and 256 byte internal memory and more registers */
-extern const device_type I8052;
-extern const device_type I8752;
+DECLARE_DEVICE_TYPE(I8052, i8052_device)
+DECLARE_DEVICE_TYPE(I8752, i8751_device)
/* cmos variants */
-extern const device_type I80C31;
-extern const device_type I80C51;
-extern const device_type I87C51;
-extern const device_type I80C32;
-extern const device_type I80C52;
-extern const device_type I87C52;
+DECLARE_DEVICE_TYPE(I80C31, i80c31_device)
+DECLARE_DEVICE_TYPE(I80C51, i80c51_device)
+DECLARE_DEVICE_TYPE(I87C51, i87c51_device)
+DECLARE_DEVICE_TYPE(I80C32, i80c32_device)
+DECLARE_DEVICE_TYPE(I80C52, i80c52_device)
+DECLARE_DEVICE_TYPE(I87C52, i87c52_device)
/* 4k internal perom and 128 internal ram and 2 analog comparators */
-extern const device_type AT89C4051;
+DECLARE_DEVICE_TYPE(AT89C4051, at89c4051_device)
-extern const device_type DS5002FP;
+DECLARE_DEVICE_TYPE(DS5002FP, ds5002fp_device)
class i8031_device : public mcs51_cpu_device
@@ -390,9 +390,10 @@ class i8052_device : public mcs51_cpu_device
public:
// construction/destruction
i8052_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- i8052_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features = 0);
protected:
+ i8052_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width, uint8_t features = 0);
+
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
/* SFR Callbacks */
@@ -430,9 +431,10 @@ class i80c51_device : public mcs51_cpu_device
public:
// construction/destruction
i80c51_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- i80c51_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features = 0);
protected:
+ i80c51_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width, uint8_t features = 0);
+
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
};
@@ -449,9 +451,10 @@ class i80c52_device : public i8052_device
public:
// construction/destruction
i80c52_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- i80c52_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, uint8_t features = 0);
protected:
+ i80c52_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width, uint8_t features = 0);
+
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
/* SFR Callbacks */
@@ -520,4 +523,4 @@ protected:
};
-#endif /* __MCS51_H__ */
+#endif // MAME_CPU_MCS51_MCS51_H
diff --git a/src/devices/cpu/mcs96/i8x9x.cpp b/src/devices/cpu/mcs96/i8x9x.cpp
index 151a4809cb8..1118ef80c36 100644
--- a/src/devices/cpu/mcs96/i8x9x.cpp
+++ b/src/devices/cpu/mcs96/i8x9x.cpp
@@ -11,8 +11,8 @@
#include "emu.h"
#include "i8x9x.h"
-i8x9x_device::i8x9x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- mcs96_device(mconfig, type, name, tag, owner, clock, 8, "i8x9x", __FILE__),
+i8x9x_device::i8x9x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ mcs96_device(mconfig, type, tag, owner, clock, 8),
io_config("io", ENDIANNESS_LITTLE, 16, 16, -1), io(nullptr), base_timer2(0), ad_done(0), hso_command(0), ad_command(0), hso_time(0), ad_result(0),
ios0(0), ios1(0), ioc0(0), ioc1(0), sbuf(0), sp_stat(0), serial_send_buf(0), serial_send_timer(0)
{
@@ -359,16 +359,16 @@ void i8x9x_device::internal_update(uint64_t current_time)
}
c8095_device::c8095_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- i8x9x_device(mconfig, C8095, "C8095", tag, owner, clock, "c8095", __FILE__)
+ i8x9x_device(mconfig, C8095, tag, owner, clock)
{
}
p8098_device::p8098_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- i8x9x_device(mconfig, P8098, "P8098", tag, owner, clock, "p8098", __FILE__)
+ i8x9x_device(mconfig, P8098, tag, owner, clock)
{
}
-const device_type C8095 = device_creator<c8095_device>;
-const device_type P8098 = C8095;
+DEFINE_DEVICE_TYPE(C8095, c8095_device, "c8095", "C8095")
+DEFINE_DEVICE_TYPE(P8098, p8098_device, "p8098", "P8098")
#include "cpu/mcs96/i8x9x.hxx"
diff --git a/src/devices/cpu/mcs96/i8x9x.h b/src/devices/cpu/mcs96/i8x9x.h
index efb8997dabb..1951f672ada 100644
--- a/src/devices/cpu/mcs96/i8x9x.h
+++ b/src/devices/cpu/mcs96/i8x9x.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef __I8X9X_H__
-#define __I8X9X_H__
+#ifndef MAME_CPU_MCS96_I8X9X_H
+#define MAME_CPU_MCS96_I8X9X_H
#include "mcs96.h"
@@ -21,11 +21,11 @@ public:
P0, P1, P2
};
- i8x9x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
void serial_w(uint8_t val);
protected:
+ i8x9x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
@@ -92,7 +92,7 @@ public:
p8098_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type C8095;
-extern const device_type P8098;
+DECLARE_DEVICE_TYPE(C8095, c8095_device)
+DECLARE_DEVICE_TYPE(P8098, p8098_device)
-#endif
+#endif // MAME_CPU_MCS96_I8X9X_H
diff --git a/src/devices/cpu/mcs96/i8xc196.cpp b/src/devices/cpu/mcs96/i8xc196.cpp
index ce9c9b9d8ac..adffde72dc0 100644
--- a/src/devices/cpu/mcs96/i8xc196.cpp
+++ b/src/devices/cpu/mcs96/i8xc196.cpp
@@ -11,8 +11,8 @@
#include "emu.h"
#include "i8xc196.h"
-i8xc196_device::i8xc196_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- mcs96_device(mconfig, type, name, tag, owner, clock, 16, shortname, source)
+i8xc196_device::i8xc196_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ mcs96_device(mconfig, type, tag, owner, clock, 16)
{
}
diff --git a/src/devices/cpu/mcs96/i8xc196.h b/src/devices/cpu/mcs96/i8xc196.h
index 54e811e35b0..bd5489a1721 100644
--- a/src/devices/cpu/mcs96/i8xc196.h
+++ b/src/devices/cpu/mcs96/i8xc196.h
@@ -8,14 +8,14 @@
***************************************************************************/
-#ifndef __I8XC196_H__
-#define __I8XC196_H__
+#ifndef MAME_CPU_MCS96_I8XC196_H
+#define MAME_CPU_MCS96_I8XC196_H
#include "mcs96.h"
class i8xc196_device : public mcs96_device {
-public:
- i8xc196_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+protected:
+ i8xc196_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
static const disasm_entry disasm_entries[0x100];
@@ -43,4 +43,4 @@ public:
#undef O
};
-#endif
+#endif // MAME_CPU_MCS96_I8XC196_H
diff --git a/src/devices/cpu/mcs96/mcs96.cpp b/src/devices/cpu/mcs96/mcs96.cpp
index be96adecaa7..11d9cf23f30 100644
--- a/src/devices/cpu/mcs96/mcs96.cpp
+++ b/src/devices/cpu/mcs96/mcs96.cpp
@@ -12,9 +12,10 @@
#include "debugger.h"
#include "mcs96.h"
-mcs96_device::mcs96_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, int data_width, const char *shortname, const char *source) :
- cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
- program_config("program", ENDIANNESS_LITTLE, data_width, 16), program(nullptr), direct(nullptr), icount(0), bcount(0), inst_state(0), cycles_scaling(0), pending_irq(0),
+mcs96_device::mcs96_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_width) :
+ cpu_device(mconfig, type, tag, owner, clock),
+ program_config("program", ENDIANNESS_LITTLE, data_width, 16),
+ program(nullptr), direct(nullptr), icount(0), bcount(0), inst_state(0), cycles_scaling(0), pending_irq(0),
PC(0), PPC(0), PSW(0), OP1(0), OP2(0), OP3(0), OPI(0), TMP(0), irq_requested(false)
{
}
diff --git a/src/devices/cpu/mcs96/mcs96.h b/src/devices/cpu/mcs96/mcs96.h
index f4cda34c224..57c4e2cedd4 100644
--- a/src/devices/cpu/mcs96/mcs96.h
+++ b/src/devices/cpu/mcs96/mcs96.h
@@ -8,8 +8,10 @@
***************************************************************************/
-#ifndef __MCS96_H__
-#define __MCS96_H__
+#ifndef MAME_CPU_MCS96_MCS96_H
+#define MAME_CPU_MCS96_MCS96_H
+
+#pragma once
class mcs96_device : public cpu_device {
public:
@@ -17,7 +19,11 @@ public:
EXINT_LINE = 1
};
- mcs96_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, int data_width, const char *shortname, const char *source);
+ enum {
+ MCS96_PC = 1,
+ MCS96_PSW,
+ MCS96_R // 0x74 entries
+ };
protected:
enum {
@@ -68,6 +74,8 @@ protected:
DASM_indexed_3 /* Indexed, short or long, 3 operators */
};
+ mcs96_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_width);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -247,10 +255,4 @@ protected:
#undef O
};
-enum {
- MCS96_PC = 1,
- MCS96_PSW,
- MCS96_R // 0x74 entries
-};
-
-#endif
+#endif // MAME_CPU_MCS96_MCS96_H
diff --git a/src/devices/cpu/melps4/m58846.cpp b/src/devices/cpu/melps4/m58846.cpp
index b4089356f28..6f4924da86e 100644
--- a/src/devices/cpu/melps4/m58846.cpp
+++ b/src/devices/cpu/melps4/m58846.cpp
@@ -10,7 +10,7 @@
#include "m58846.h"
-const device_type M58846 = device_creator<m58846_device>;
+DEFINE_DEVICE_TYPE(M58846, m58846_device, "m58846", "M58846")
// internal memory maps
@@ -26,7 +26,7 @@ ADDRESS_MAP_END
// device definitions
m58846_device::m58846_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : melps4_cpu_device(mconfig, M58846, "M58846", tag, owner, clock, 11, ADDRESS_MAP_NAME(program_2kx9), 7, ADDRESS_MAP_NAME(data_128x4), 12 /* number of D pins */, 2 /* subroutine page */, 1 /* interrupt page */, "m58846", __FILE__), m_timer(nullptr)
+ : melps4_cpu_device(mconfig, M58846, tag, owner, clock, 11, ADDRESS_MAP_NAME(program_2kx9), 7, ADDRESS_MAP_NAME(data_128x4), 12 /* number of D pins */, 2 /* subroutine page */, 1 /* interrupt page */), m_timer(nullptr)
{ }
diff --git a/src/devices/cpu/melps4/m58846.h b/src/devices/cpu/melps4/m58846.h
index d270074ff74..4a3bf8674bf 100644
--- a/src/devices/cpu/melps4/m58846.h
+++ b/src/devices/cpu/melps4/m58846.h
@@ -6,8 +6,10 @@
*/
-#ifndef _M58846_H_
-#define _M58846_H_
+#ifndef MAME_CPU_MELPS4_M58846_H
+#define MAME_CPU_MELPS4_M58846_H
+
+#pragma once
#include "melps4.h"
@@ -39,8 +41,6 @@ protected:
};
+DECLARE_DEVICE_TYPE(M58846, m58846_device)
-extern const device_type M58846;
-
-
-#endif /* _M58846_H_ */
+#endif // MAME_CPU_MELPS4_M58846_H
diff --git a/src/devices/cpu/melps4/melps4.cpp b/src/devices/cpu/melps4/melps4.cpp
index 896966c5882..4205851634b 100644
--- a/src/devices/cpu/melps4/melps4.cpp
+++ b/src/devices/cpu/melps4/melps4.cpp
@@ -42,6 +42,31 @@
#include "debugger.h"
+melps4_cpu_device::melps4_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, int d_pins, uint8_t sm_page, uint8_t int_page)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 16, prgwidth, -1, program)
+ , m_data_config("data", ENDIANNESS_LITTLE, 8, datawidth, 0, data)
+ , m_prgwidth(prgwidth)
+ , m_datawidth(datawidth)
+ , m_d_pins(d_pins)
+ , m_sm_page(sm_page)
+ , m_int_page(int_page)
+ , m_xami_mask(0xf)
+ , m_sp_mask(0x7<<4)
+ , m_ba_op(0x01)
+ , m_stack_levels(3)
+ , m_read_k(*this)
+ , m_read_d(*this)
+ , m_read_s(*this)
+ , m_read_f(*this)
+ , m_write_d(*this)
+ , m_write_s(*this)
+ , m_write_f(*this)
+ , m_write_g(*this)
+ , m_write_u(*this)
+ , m_write_t(*this)
+{ }
+
// disasm
void melps4_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
diff --git a/src/devices/cpu/melps4/melps4.h b/src/devices/cpu/melps4/melps4.h
index ba641efcd7f..627bca9042d 100644
--- a/src/devices/cpu/melps4/melps4.h
+++ b/src/devices/cpu/melps4/melps4.h
@@ -6,9 +6,10 @@
*/
-#ifndef _MELPS4_H_
-#define _MELPS4_H_
+#ifndef MAME_CPU_MELPS4_MELPS4_H
+#define MAME_CPU_MELPS4_MELPS4_H
+#pragma once
// I/O ports setup
@@ -99,46 +100,23 @@ enum
class melps4_cpu_device : public cpu_device
{
public:
- // construction/destruction
- melps4_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, int d_pins, uint8_t sm_page, uint8_t int_page, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_LITTLE, 16, prgwidth, -1, program)
- , m_data_config("data", ENDIANNESS_LITTLE, 8, datawidth, 0, data)
- , m_prgwidth(prgwidth)
- , m_datawidth(datawidth)
- , m_d_pins(d_pins)
- , m_sm_page(sm_page)
- , m_int_page(int_page)
- , m_xami_mask(0xf)
- , m_sp_mask(0x7<<4)
- , m_ba_op(0x01)
- , m_stack_levels(3)
- , m_read_k(*this)
- , m_read_d(*this)
- , m_read_s(*this)
- , m_read_f(*this)
- , m_write_d(*this)
- , m_write_s(*this)
- , m_write_f(*this)
- , m_write_g(*this)
- , m_write_u(*this)
- , m_write_t(*this)
- { }
-
// static configuration helpers
- template<class _Object> static devcb_base &set_read_k_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_read_k.set_callback(object); }
- template<class _Object> static devcb_base &set_read_d_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_read_d.set_callback(object); }
- template<class _Object> static devcb_base &set_read_s_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_read_s.set_callback(object); }
- template<class _Object> static devcb_base &set_read_f_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_read_f.set_callback(object); }
-
- template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_d.set_callback(object); }
- template<class _Object> static devcb_base &set_write_s_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_s.set_callback(object); }
- template<class _Object> static devcb_base &set_write_f_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_f.set_callback(object); }
- template<class _Object> static devcb_base &set_write_g_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_g.set_callback(object); }
- template<class _Object> static devcb_base &set_write_u_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_u.set_callback(object); }
- template<class _Object> static devcb_base &set_write_t_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_t.set_callback(object); }
+ template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_s_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_s.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_f_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_f.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_s_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_s.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_g_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_g.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_u_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_u.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_t_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_t.set_callback(std::forward<Object>(cb)); }
protected:
+ // construction/destruction
+ melps4_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, int d_pins, uint8_t sm_page, uint8_t int_page);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -361,5 +339,4 @@ protected:
};
-
-#endif /* _MELPS4_H_ */
+#endif // MAME_CPU_MELPS4_MELPS4_H
diff --git a/src/devices/cpu/minx/minx.cpp b/src/devices/cpu/minx/minx.cpp
index 599c53bcb35..2b91305d28d 100644
--- a/src/devices/cpu/minx/minx.cpp
+++ b/src/devices/cpu/minx/minx.cpp
@@ -45,8 +45,8 @@ TODO:
*/
#include "emu.h"
-#include "debugger.h"
#include "minx.h"
+#include "debugger.h"
#define FLAG_I 0x80
#define FLAG_D 0x40
@@ -72,11 +72,11 @@ TODO:
#define GET_MINX_PC ( ( m_PC & 0x8000 ) ? ( m_V << 15 ) | (m_PC & 0x7FFF ) : m_PC )
-const device_type MINX = device_creator<minx_cpu_device>;
+DEFINE_DEVICE_TYPE(MINX, minx_cpu_device, "minx", "Nintendo Minx")
minx_cpu_device::minx_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, MINX, "Nintendo Minx", tag, owner, clock, "minx", __FILE__)
+ : cpu_device(mconfig, MINX, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 8, 24, 0)
{
}
diff --git a/src/devices/cpu/minx/minx.h b/src/devices/cpu/minx/minx.h
index 8ab7ce18a06..a9640ecd132 100644
--- a/src/devices/cpu/minx/minx.h
+++ b/src/devices/cpu/minx/minx.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#pragma once
+#ifndef MAME_CPU_MINX_MINX_H
+#define MAME_CPU_MINX_MINX_H
-#ifndef __MINX_H__
-#define __MINX_H__
+#pragma once
enum
@@ -115,7 +115,6 @@ private:
};
-extern const device_type MINX;
-
+DECLARE_DEVICE_TYPE(MINX, minx_cpu_device)
-#endif /* __MINX_H__ */
+#endif // MAME_CPU_MINX_MINX_H
diff --git a/src/devices/cpu/mips/mips3.cpp b/src/devices/cpu/mips/mips3.cpp
index 595ad22f970..544bcb5c86c 100644
--- a/src/devices/cpu/mips/mips3.cpp
+++ b/src/devices/cpu/mips/mips3.cpp
@@ -98,31 +98,31 @@ static const uint8_t fpmode_source[4] =
#define ROPCODE(pc) direct->read_dword(pc)
-const device_type VR4300BE = device_creator<vr4300be_device>;
-const device_type VR4300LE = device_creator<vr4300le_device>;
-const device_type VR4310BE = device_creator<vr4310be_device>;
-const device_type VR4310LE = device_creator<vr4310le_device>;
-const device_type R4600BE = device_creator<r4600be_device>;
-const device_type R4600LE = device_creator<r4600le_device>;
-const device_type R4650BE = device_creator<r4650be_device>;
-const device_type R4650LE = device_creator<r4650le_device>;
-const device_type R4700BE = device_creator<r4700be_device>;
-const device_type R4700LE = device_creator<r4700le_device>;
-const device_type TX4925BE = device_creator<tx4925be_device>;
-const device_type TX4925LE = device_creator<tx4925le_device>;
-const device_type R5000BE = device_creator<r5000be_device>;
-const device_type R5000LE = device_creator<r5000le_device>;
-const device_type VR5500BE = device_creator<vr5500be_device>;
-const device_type VR5500LE = device_creator<vr5500le_device>;
-const device_type QED5271BE = device_creator<qed5271be_device>;
-const device_type QED5271LE = device_creator<qed5271le_device>;
-const device_type RM7000BE = device_creator<rm7000be_device>;
-const device_type RM7000LE = device_creator<rm7000le_device>;
+DEFINE_DEVICE_TYPE(VR4300BE, vr4300be_device, "vr4300be", "VR4300 (big)")
+DEFINE_DEVICE_TYPE(VR4300LE, vr4300le_device, "vr4300le", "VR4300 (little)")
+DEFINE_DEVICE_TYPE(VR4310BE, vr4310be_device, "vr4310be", "VR4310 (big)")
+DEFINE_DEVICE_TYPE(VR4310LE, vr4310le_device, "vr4310le", "VR4310 (little)")
+DEFINE_DEVICE_TYPE(R4600BE, r4600be_device, "r4600be", "R4600 (big)")
+DEFINE_DEVICE_TYPE(R4600LE, r4600le_device, "r4600le", "R4600 (little)")
+DEFINE_DEVICE_TYPE(R4650BE, r4650be_device, "r4650be", "IDT R4650 (big)")
+DEFINE_DEVICE_TYPE(R4650LE, r4650le_device, "r4650le", "IDT R4650 (little)")
+DEFINE_DEVICE_TYPE(R4700BE, r4700be_device, "r4700be", "R4700 (big)")
+DEFINE_DEVICE_TYPE(R4700LE, r4700le_device, "r4700le", "R4700 (little)")
+DEFINE_DEVICE_TYPE(TX4925BE, tx4925be_device, "tx4925be", "TX4925 (big)")
+DEFINE_DEVICE_TYPE(TX4925LE, tx4925le_device, "tx4925le", "TX4925 (little)")
+DEFINE_DEVICE_TYPE(R5000BE, r5000be_device, "r5000be", "R5000 (big)")
+DEFINE_DEVICE_TYPE(R5000LE, r5000le_device, "r5000le", "R5000 (little)")
+DEFINE_DEVICE_TYPE(VR5500BE, vr5500be_device, "vr5500be", "VR5500 (big)")
+DEFINE_DEVICE_TYPE(VR5500LE, vr5500le_device, "vr5500le", "VR5500 (little)")
+DEFINE_DEVICE_TYPE(QED5271BE, qed5271be_device, "qed5271be", "QED5271 (big)")
+DEFINE_DEVICE_TYPE(QED5271LE, qed5271le_device, "qed5271le", "QED5271 (little)")
+DEFINE_DEVICE_TYPE(RM7000BE, rm7000be_device, "rm7000be", "RM7000 (big)")
+DEFINE_DEVICE_TYPE(RM7000LE, rm7000le_device, "rm7000le", "RM7000 (little)")
// VR4300 and VR5432 have 4 fewer PFN bits, and only 32 TLB entries
-mips3_device::mips3_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, mips3_flavor flavor, endianness_t endianness)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+mips3_device::mips3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, mips3_flavor flavor, endianness_t endianness)
+ : cpu_device(mconfig, type, tag, owner, clock)
, device_vtlb_interface(mconfig, *this, AS_PROGRAM)
, m_program_config("program", endianness, 32, 32, 0, 32, MIPS3_MIN_PAGE_SHIFT)
, m_flavor(flavor)
diff --git a/src/devices/cpu/mips/mips3.h b/src/devices/cpu/mips/mips3.h
index f3e2ef52c74..cf1057a0513 100644
--- a/src/devices/cpu/mips/mips3.h
+++ b/src/devices/cpu/mips/mips3.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_MIPS_MIPS3_H
+#define MAME_CPU_MIPS_MIPS3_H
-#ifndef __MIPS3_H__
-#define __MIPS3_H__
+#pragma once
#include "divtlb.h"
@@ -22,27 +22,27 @@
// NEC VR4300 series is MIPS III with 32-bit address bus and slightly custom COP0/TLB
-extern const device_type VR4300BE;
-extern const device_type VR4300LE;
+DECLARE_DEVICE_TYPE(VR4300BE, r4300be_device)
+DECLARE_DEVICE_TYPE(VR4300LE, r4300le_device)
// VR4310 = VR4300 with different speed bin
-extern const device_type VR4310BE;
-extern const device_type VR4310LE;
-extern const device_type R4600BE;
-extern const device_type R4600LE;
-extern const device_type R4650BE;
-extern const device_type R4650LE;
-extern const device_type R4700BE;
-extern const device_type R4700LE;
-extern const device_type TX4925BE;
-extern const device_type TX4925LE;
-extern const device_type R5000BE;
-extern const device_type R5000LE;
-extern const device_type VR5500BE;
-extern const device_type VR5500LE;
-extern const device_type QED5271BE;
-extern const device_type QED5271LE;
-extern const device_type RM7000BE;
-extern const device_type RM7000LE;
+DECLARE_DEVICE_TYPE(VR4310BE, r4310be_device)
+DECLARE_DEVICE_TYPE(VR4310LE, r4310le_device)
+DECLARE_DEVICE_TYPE(R4600BE, r4600be_device)
+DECLARE_DEVICE_TYPE(R4600LE, r4600le_device)
+DECLARE_DEVICE_TYPE(R4650BE, r4650be_device)
+DECLARE_DEVICE_TYPE(R4650LE, r4650le_device)
+DECLARE_DEVICE_TYPE(R4700BE, r4700be_device)
+DECLARE_DEVICE_TYPE(R4700LE, r4700le_device)
+DECLARE_DEVICE_TYPE(TX4925BE, tx4925be_device)
+DECLARE_DEVICE_TYPE(TX4925LE, tx4925le_device)
+DECLARE_DEVICE_TYPE(R5000BE, r5000be_device)
+DECLARE_DEVICE_TYPE(R5000LE, r5000le_device)
+DECLARE_DEVICE_TYPE(VR5500BE, vr5500be_device)
+DECLARE_DEVICE_TYPE(VR5500LE, vr5500le_device)
+DECLARE_DEVICE_TYPE(QED5271BE, qed5271be_device)
+DECLARE_DEVICE_TYPE(QED5271LE, qed5271le_device)
+DECLARE_DEVICE_TYPE(RM7000BE, rm7000be_device)
+DECLARE_DEVICE_TYPE(RM7000LE, rm7000le_device)
/***************************************************************************
@@ -275,7 +275,7 @@ protected:
public:
// construction/destruction
- mips3_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, mips3_flavor flavor, endianness_t endiannes);
+ mips3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, mips3_flavor flavor, endianness_t endiannes);
static void set_icache_size(device_t &device, size_t icache_size) { downcast<mips3_device &>(device).c_icache_size = icache_size; }
static void set_dcache_size(device_t &device, size_t dcache_size) { downcast<mips3_device &>(device).c_dcache_size = dcache_size; }
@@ -583,7 +583,7 @@ class vr4300be_device : public mips3_device
public:
// construction/destruction
vr4300be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, VR4300BE, "VR4300 (big)", tag, owner, clock, "vr4300be", MIPS3_TYPE_VR4300, ENDIANNESS_BIG)
+ : mips3_device(mconfig, VR4300BE, tag, owner, clock, MIPS3_TYPE_VR4300, ENDIANNESS_BIG)
{ }
};
@@ -592,7 +592,7 @@ class vr4300le_device : public mips3_device
public:
// construction/destruction
vr4300le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, VR4300LE, "VR4300 (little)", tag, owner, clock, "vr4300le", MIPS3_TYPE_VR4300, ENDIANNESS_LITTLE)
+ : mips3_device(mconfig, VR4300LE, tag, owner, clock, MIPS3_TYPE_VR4300, ENDIANNESS_LITTLE)
{ }
};
@@ -601,7 +601,7 @@ class vr4310be_device : public mips3_device
public:
// construction/destruction
vr4310be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, VR4310BE, "VR4310 (big)", tag, owner, clock, "vr4310be", MIPS3_TYPE_VR4300, ENDIANNESS_BIG)
+ : mips3_device(mconfig, VR4310BE, tag, owner, clock, MIPS3_TYPE_VR4300, ENDIANNESS_BIG)
{ }
};
@@ -610,7 +610,7 @@ class vr4310le_device : public mips3_device
public:
// construction/destruction
vr4310le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, VR4310LE, "VR4310 (little)", tag, owner, clock, "vr4310le", MIPS3_TYPE_VR4300, ENDIANNESS_LITTLE)
+ : mips3_device(mconfig, VR4310LE, tag, owner, clock, MIPS3_TYPE_VR4300, ENDIANNESS_LITTLE)
{ }
};
@@ -619,7 +619,7 @@ class r4600be_device : public mips3_device
public:
// construction/destruction
r4600be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, R4600BE, "R4600 (big)", tag, owner, clock, "r4600be", MIPS3_TYPE_R4600, ENDIANNESS_BIG)
+ : mips3_device(mconfig, R4600BE, tag, owner, clock, MIPS3_TYPE_R4600, ENDIANNESS_BIG)
{ }
};
@@ -628,7 +628,7 @@ class r4600le_device : public mips3_device
public:
// construction/destruction
r4600le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, R4600LE, "R4600 (little)", tag, owner, clock, "r4600le", MIPS3_TYPE_R4600, ENDIANNESS_LITTLE)
+ : mips3_device(mconfig, R4600LE, tag, owner, clock, MIPS3_TYPE_R4600, ENDIANNESS_LITTLE)
{ }
};
@@ -637,7 +637,7 @@ class r4650be_device : public mips3_device
public:
// construction/destruction
r4650be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, R4650BE, "IDT R4650 (big)", tag, owner, clock, "r4650be", MIPS3_TYPE_R4650, ENDIANNESS_BIG)
+ : mips3_device(mconfig, R4650BE, tag, owner, clock, MIPS3_TYPE_R4650, ENDIANNESS_BIG)
{ }
};
@@ -646,7 +646,7 @@ class r4650le_device : public mips3_device
public:
// construction/destruction
r4650le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, R4650LE, "IDT R4650 (little)", tag, owner, clock, "r4650le", MIPS3_TYPE_R4650, ENDIANNESS_LITTLE)
+ : mips3_device(mconfig, R4650LE, tag, owner, clock, MIPS3_TYPE_R4650, ENDIANNESS_LITTLE)
{ }
};
@@ -655,7 +655,7 @@ class r4700be_device : public mips3_device
public:
// construction/destruction
r4700be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, R4700BE, "R4700 (big)", tag, owner, clock, "r4700be", MIPS3_TYPE_R4700, ENDIANNESS_BIG)
+ : mips3_device(mconfig, R4700BE, tag, owner, clock, MIPS3_TYPE_R4700, ENDIANNESS_BIG)
{ }
};
@@ -664,7 +664,7 @@ class r4700le_device : public mips3_device
public:
// construction/destruction
r4700le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, R4700LE, "R4700 (little)", tag, owner, clock, "r4700le", MIPS3_TYPE_R4700, ENDIANNESS_LITTLE)
+ : mips3_device(mconfig, R4700LE, tag, owner, clock, MIPS3_TYPE_R4700, ENDIANNESS_LITTLE)
{ }
};
@@ -673,7 +673,7 @@ class tx4925be_device : public mips3_device
public:
// construction/destruction
tx4925be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, TX4925BE, "TX4925 (big)", tag, owner, clock, "tx4925be", MIPS3_TYPE_TX4925, ENDIANNESS_BIG)
+ : mips3_device(mconfig, TX4925BE, tag, owner, clock, MIPS3_TYPE_TX4925, ENDIANNESS_BIG)
{ }
};
@@ -682,7 +682,7 @@ class tx4925le_device : public mips3_device
public:
// construction/destruction
tx4925le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, TX4925LE, "TX4925 (little)", tag, owner, clock, "tx4925le", MIPS3_TYPE_TX4925, ENDIANNESS_LITTLE)
+ : mips3_device(mconfig, TX4925LE, tag, owner, clock, MIPS3_TYPE_TX4925, ENDIANNESS_LITTLE)
{ }
};
@@ -691,7 +691,7 @@ class r5000be_device : public mips3_device
public:
// construction/destruction
r5000be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, R5000BE, "R5000 (big)", tag, owner, clock, "r5000be", MIPS3_TYPE_R5000, ENDIANNESS_BIG)
+ : mips3_device(mconfig, R5000BE, tag, owner, clock, MIPS3_TYPE_R5000, ENDIANNESS_BIG)
{ }
};
@@ -700,7 +700,7 @@ class r5000le_device : public mips3_device
public:
// construction/destruction
r5000le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, R5000LE, "R5000 (little)", tag, owner, clock, "r5000le", MIPS3_TYPE_R5000, ENDIANNESS_LITTLE)
+ : mips3_device(mconfig, R5000LE, tag, owner, clock, MIPS3_TYPE_R5000, ENDIANNESS_LITTLE)
{ }
};
@@ -709,7 +709,7 @@ class vr5500be_device : public mips3_device
public:
// construction/destruction
vr5500be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, VR5500BE, "VR5500 (big)", tag, owner, clock, "vr5500be", MIPS3_TYPE_R5000, ENDIANNESS_BIG)
+ : mips3_device(mconfig, VR5500BE, tag, owner, clock, MIPS3_TYPE_R5000, ENDIANNESS_BIG)
{ }
};
@@ -718,7 +718,7 @@ class vr5500le_device : public mips3_device
public:
// construction/destruction
vr5500le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, VR5500LE, "VR5500 (little)", tag, owner, clock, "r5500le", MIPS3_TYPE_R5000, ENDIANNESS_LITTLE)
+ : mips3_device(mconfig, VR5500LE, tag, owner, clock, MIPS3_TYPE_R5000, ENDIANNESS_LITTLE)
{ }
};
@@ -727,7 +727,7 @@ class qed5271be_device : public mips3_device
public:
// construction/destruction
qed5271be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, QED5271BE, "QED5271 (big)", tag, owner, clock, "qed5271be", MIPS3_TYPE_QED5271, ENDIANNESS_BIG)
+ : mips3_device(mconfig, QED5271BE, tag, owner, clock, MIPS3_TYPE_QED5271, ENDIANNESS_BIG)
{ }
};
@@ -736,7 +736,7 @@ class qed5271le_device : public mips3_device
public:
// construction/destruction
qed5271le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, QED5271LE, "QED5271 (little)", tag, owner, clock, "qed5271le", MIPS3_TYPE_QED5271, ENDIANNESS_LITTLE)
+ : mips3_device(mconfig, QED5271LE, tag, owner, clock, MIPS3_TYPE_QED5271, ENDIANNESS_LITTLE)
{ }
};
@@ -745,7 +745,7 @@ class rm7000be_device : public mips3_device
public:
// construction/destruction
rm7000be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, RM7000BE, "RM7000 (big)", tag, owner, clock, "rm7000be", MIPS3_TYPE_RM7000, ENDIANNESS_BIG)
+ : mips3_device(mconfig, RM7000BE, tag, owner, clock, MIPS3_TYPE_RM7000, ENDIANNESS_BIG)
{ }
};
@@ -754,7 +754,7 @@ class rm7000le_device : public mips3_device
public:
// construction/destruction
rm7000le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mips3_device(mconfig, RM7000LE, "RM7000 (little)", tag, owner, clock, "rm7000le", MIPS3_TYPE_RM7000, ENDIANNESS_LITTLE)
+ : mips3_device(mconfig, RM7000LE, tag, owner, clock, MIPS3_TYPE_RM7000, ENDIANNESS_LITTLE)
{ }
};
@@ -809,4 +809,4 @@ private:
unsigned dasmmips3(std::ostream &stream, unsigned pc, uint32_t op);
-#endif /* __MIPS3_H__ */
+#endif // MAME_CPU_MIPS_MIPS3_H
diff --git a/src/devices/cpu/mips/r3000.cpp b/src/devices/cpu/mips/r3000.cpp
index a1dbba4e008..b8fbfa26b91 100644
--- a/src/devices/cpu/mips/r3000.cpp
+++ b/src/devices/cpu/mips/r3000.cpp
@@ -9,8 +9,8 @@
***************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "r3000.h"
+#include "debugger.h"
#define ENABLE_OVERFLOWS 0
@@ -113,19 +113,19 @@
// DEVICE INTERFACE
//**************************************************************************
-const device_type R3041 = device_creator<r3041_device>;
-const device_type R3051 = device_creator<r3051_device>;
-const device_type R3052 = device_creator<r3052_device>;
-const device_type R3071 = device_creator<r3071_device>;
-const device_type R3081 = device_creator<r3081_device>;
+DEFINE_DEVICE_TYPE(R3041, r3041_device, "r3041", "R3041")
+DEFINE_DEVICE_TYPE(R3051, r3051_device, "r3051", "R3051")
+DEFINE_DEVICE_TYPE(R3052, r3052_device, "r3052", "R3052")
+DEFINE_DEVICE_TYPE(R3071, r3071_device, "r3071", "R3071")
+DEFINE_DEVICE_TYPE(R3081, r3081_device, "r3081", "R3081")
//-------------------------------------------------
// r3000_device - constructor
//-------------------------------------------------
-r3000_device::r3000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, chip_type chiptype, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+r3000_device::r3000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, chip_type chiptype)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_program_config_be("program", ENDIANNESS_BIG, 32, 29),
m_program_config_le("program", ENDIANNESS_LITTLE, 32, 29),
m_program(nullptr),
@@ -170,7 +170,7 @@ r3000_device::~r3000_device()
//-------------------------------------------------
r3041_device::r3041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : r3000_device(mconfig, R3041, "R3041", tag, owner, clock, CHIP_TYPE_R3041, "r3041", __FILE__) { }
+ : r3000_device(mconfig, R3041, tag, owner, clock, CHIP_TYPE_R3041) { }
//-------------------------------------------------
@@ -178,7 +178,7 @@ r3041_device::r3041_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
r3051_device::r3051_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : r3000_device(mconfig, R3051, "R3051", tag, owner, clock, CHIP_TYPE_R3051, "r3051", __FILE__) { }
+ : r3000_device(mconfig, R3051, tag, owner, clock, CHIP_TYPE_R3051) { }
//-------------------------------------------------
@@ -186,7 +186,7 @@ r3051_device::r3051_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
r3052_device::r3052_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : r3000_device(mconfig, R3052, "R3052", tag, owner, clock, CHIP_TYPE_R3052, "r3052", __FILE__) { }
+ : r3000_device(mconfig, R3052, tag, owner, clock, CHIP_TYPE_R3052) { }
//-------------------------------------------------
@@ -194,7 +194,7 @@ r3052_device::r3052_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
r3071_device::r3071_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : r3000_device(mconfig, R3071, "R3071", tag, owner, clock, CHIP_TYPE_R3071, "r3071", __FILE__) { }
+ : r3000_device(mconfig, R3071, tag, owner, clock, CHIP_TYPE_R3071) { }
//-------------------------------------------------
@@ -202,7 +202,7 @@ r3071_device::r3071_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
r3081_device::r3081_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : r3000_device(mconfig, R3081, "R3081", tag, owner, clock, CHIP_TYPE_R3081, "r3081", __FILE__) { }
+ : r3000_device(mconfig, R3081, tag, owner, clock, CHIP_TYPE_R3081) { }
//-------------------------------------------------
diff --git a/src/devices/cpu/mips/r3000.h b/src/devices/cpu/mips/r3000.h
index e424877d9ae..8274202c0e9 100644
--- a/src/devices/cpu/mips/r3000.h
+++ b/src/devices/cpu/mips/r3000.h
@@ -8,8 +8,10 @@
***************************************************************************/
-#ifndef __R3000_H__
-#define __R3000_H__
+#ifndef MAME_CPU_MIPS_R3000_H
+#define MAME_CPU_MIPS_R3000_H
+
+#pragma once
/***************************************************************************
@@ -66,48 +68,48 @@ enum
class r3000_device : public cpu_device
{
-protected:
- enum chip_type
- {
- CHIP_TYPE_R3041,
- CHIP_TYPE_R3051,
- CHIP_TYPE_R3052,
- CHIP_TYPE_R3071,
- CHIP_TYPE_R3081
- };
-
+public:
// construction/destruction
- r3000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, chip_type chiptype, const char *shortname, const char *source);
virtual ~r3000_device();
-public:
// inline configuration helpers
static void static_set_endianness(device_t &device, endianness_t endianness)
{
downcast<r3000_device &>(device).m_endianness = endianness;
}
- template<class _Object> static devcb_base &static_set_brcond0_input(device_t &device, _Object object)
+ template <class Object> static devcb_base &static_set_brcond0_input(device_t &device, Object &&cb)
{
- return downcast<r3000_device &>(device).m_in_brcond0.set_callback(object);
+ return downcast<r3000_device &>(device).m_in_brcond0.set_callback(std::forward<Object>(cb));
}
- template<class _Object> static devcb_base &static_set_brcond1_input(device_t &device, _Object object)
+ template <class Object> static devcb_base &static_set_brcond1_input(device_t &device, Object &&cb)
{
- return downcast<r3000_device &>(device).m_in_brcond1.set_callback(object);
+ return downcast<r3000_device &>(device).m_in_brcond1.set_callback(std::forward<Object>(cb));
}
- template<class _Object> static devcb_base &static_set_brcond2_input(device_t &device, _Object object)
+ template <class Object> static devcb_base &static_set_brcond2_input(device_t &device, Object &&cb)
{
- return downcast<r3000_device &>(device).m_in_brcond2.set_callback(object);
+ return downcast<r3000_device &>(device).m_in_brcond2.set_callback(std::forward<Object>(cb));
}
- template<class _Object> static devcb_base &static_set_brcond3_input(device_t &device, _Object object)
+ template <class Object> static devcb_base &static_set_brcond3_input(device_t &device, Object &&cb)
{
- return downcast<r3000_device &>(device).m_in_brcond3.set_callback(object);
+ return downcast<r3000_device &>(device).m_in_brcond3.set_callback(std::forward<Object>(cb));
}
protected:
+ enum chip_type
+ {
+ CHIP_TYPE_R3041,
+ CHIP_TYPE_R3051,
+ CHIP_TYPE_R3052,
+ CHIP_TYPE_R3071,
+ CHIP_TYPE_R3081
+ };
+
+ r3000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, chip_type chiptype);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -121,7 +123,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
@@ -310,10 +312,10 @@ public:
// device type definition
-extern const device_type R3041;
-extern const device_type R3051;
-extern const device_type R3052;
-extern const device_type R3071;
-extern const device_type R3081;
+DECLARE_DEVICE_TYPE(R3041, r3041_device)
+DECLARE_DEVICE_TYPE(R3051, r3051_device)
+DECLARE_DEVICE_TYPE(R3052, r3052_device)
+DECLARE_DEVICE_TYPE(R3071, r3071_device)
+DECLARE_DEVICE_TYPE(R3081, r3081_device)
-#endif /* __R3000_H__ */
+#endif // MAME_CPU_MIPS_R3000_H
diff --git a/src/devices/cpu/mn10200/mn10200.cpp b/src/devices/cpu/mn10200/mn10200.cpp
index 634a2ff9a5c..07fc55a3723 100644
--- a/src/devices/cpu/mn10200/mn10200.cpp
+++ b/src/devices/cpu/mn10200/mn10200.cpp
@@ -36,7 +36,7 @@ enum mn10200_flag
};
-const device_type MN1020012A = device_creator<mn1020012a_device>;
+DEFINE_DEVICE_TYPE(MN1020012A, mn1020012a_device, "mn1020012a", "MN1020012A")
// internal memory maps
static ADDRESS_MAP_START( mn1020012a_internal_map, AS_PROGRAM, 16, mn10200_device )
@@ -44,9 +44,17 @@ static ADDRESS_MAP_START( mn1020012a_internal_map, AS_PROGRAM, 16, mn10200_devic
ADDRESS_MAP_END
+mn10200_device::mn10200_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor program)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 16, 24, 0, program), m_program(nullptr)
+ , m_read_port0(*this), m_read_port1(*this), m_read_port2(*this), m_read_port3(*this), m_read_port4(*this)
+ , m_write_port0(*this), m_write_port1(*this), m_write_port2(*this), m_write_port3(*this), m_write_port4(*this), m_cycles(0), m_pc(0), m_psw(0), m_mdr(0), m_nmicr(0), m_iagr(0),
+ m_extmdl(0), m_extmdh(0), m_possible_irq(false), m_pplul(0), m_ppluh(0), m_p3md(0), m_p4(0)
+{ }
+
// device definitions
mn1020012a_device::mn1020012a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mn10200_device(mconfig, MN1020012A, "MN1020012A", tag, owner, clock, ADDRESS_MAP_NAME(mn1020012a_internal_map), "mn1020012a", __FILE__)
+ : mn10200_device(mconfig, MN1020012A, tag, owner, clock, ADDRESS_MAP_NAME(mn1020012a_internal_map))
{ }
diff --git a/src/devices/cpu/mn10200/mn10200.h b/src/devices/cpu/mn10200/mn10200.h
index 4eb0947ab2b..7831d5cfeb1 100644
--- a/src/devices/cpu/mn10200/mn10200.h
+++ b/src/devices/cpu/mn10200/mn10200.h
@@ -8,8 +8,10 @@
*/
-#ifndef MN10200_H
-#define MN10200_H
+#ifndef MAME_CPU_MN10200_MN10200_H
+#define MAME_CPU_MN10200_MN10200_H
+
+#pragma once
// port setup
#define MCFG_MN10200_READ_PORT_CB(X, _devcb) \
@@ -37,40 +39,34 @@ enum
};
-#define MN10200_NUM_PRESCALERS (2)
-#define MN10200_NUM_TIMERS_8BIT (10)
-#define MN10200_NUM_IRQ_GROUPS (31)
-
-
class mn10200_device : public cpu_device
{
public:
- // construction/destruction
- mn10200_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, address_map_constructor program, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_LITTLE, 16, 24, 0, program), m_program(nullptr)
- , m_read_port0(*this), m_read_port1(*this), m_read_port2(*this), m_read_port3(*this), m_read_port4(*this)
- , m_write_port0(*this), m_write_port1(*this), m_write_port2(*this), m_write_port3(*this), m_write_port4(*this), m_cycles(0), m_pc(0), m_psw(0), m_mdr(0), m_nmicr(0), m_iagr(0),
- m_extmdl(0), m_extmdh(0), m_possible_irq(false), m_pplul(0), m_ppluh(0), m_p3md(0), m_p4(0)
- { }
-
// static configuration helpers
- template<class _Object> static devcb_base &set_read_port0_callback(device_t &device, _Object object) { return downcast<mn10200_device &>(device).m_read_port0.set_callback(object); }
- template<class _Object> static devcb_base &set_read_port1_callback(device_t &device, _Object object) { return downcast<mn10200_device &>(device).m_read_port1.set_callback(object); }
- template<class _Object> static devcb_base &set_read_port2_callback(device_t &device, _Object object) { return downcast<mn10200_device &>(device).m_read_port2.set_callback(object); }
- template<class _Object> static devcb_base &set_read_port3_callback(device_t &device, _Object object) { return downcast<mn10200_device &>(device).m_read_port3.set_callback(object); }
- template<class _Object> static devcb_base &set_read_port4_callback(device_t &device, _Object object) { return downcast<mn10200_device &>(device).m_read_port4.set_callback(object); }
-
- template<class _Object> static devcb_base &set_write_port0_callback(device_t &device, _Object object) { return downcast<mn10200_device &>(device).m_write_port0.set_callback(object); }
- template<class _Object> static devcb_base &set_write_port1_callback(device_t &device, _Object object) { return downcast<mn10200_device &>(device).m_write_port1.set_callback(object); }
- template<class _Object> static devcb_base &set_write_port2_callback(device_t &device, _Object object) { return downcast<mn10200_device &>(device).m_write_port2.set_callback(object); }
- template<class _Object> static devcb_base &set_write_port3_callback(device_t &device, _Object object) { return downcast<mn10200_device &>(device).m_write_port3.set_callback(object); }
- template<class _Object> static devcb_base &set_write_port4_callback(device_t &device, _Object object) { return downcast<mn10200_device &>(device).m_write_port4.set_callback(object); }
+ template <class Object> static devcb_base &set_read_port0_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_port1_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_port2_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_port3_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_port4_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port4.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> static devcb_base &set_write_port0_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_port1_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_port2_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_port3_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_port4_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port4.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(io_control_r);
DECLARE_WRITE8_MEMBER(io_control_w);
protected:
+ static constexpr unsigned MN10200_NUM_PRESCALERS = 2;
+ static constexpr unsigned MN10200_NUM_TIMERS_8BIT = 10;
+ static constexpr unsigned MN10200_NUM_IRQ_GROUPS = 31;
+
+
+ // construction/destruction
+ mn10200_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor program);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -213,7 +209,7 @@ public:
-extern const device_type MN1020012A;
+DECLARE_DEVICE_TYPE(MN1020012A, mn1020012a_device)
-#endif // MN10200_H
+#endif // MAME_CPU_MN10200_MN10200_H
diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.cpp b/src/devices/cpu/nanoprocessor/nanoprocessor.cpp
index f41bdb97bb9..47d9091b46e 100644
--- a/src/devices/cpu/nanoprocessor/nanoprocessor.cpp
+++ b/src/devices/cpu/nanoprocessor/nanoprocessor.cpp
@@ -2,8 +2,8 @@
// copyright-holders:F. Ulivi
#include "emu.h"
-#include "debugger.h"
#include "nanoprocessor.h"
+#include "debugger.h"
// Index of state variables
enum {
@@ -41,10 +41,10 @@ enum {
#define NANO_E_BIT (NANO_DC0_BIT + HP_NANO_DC_NO) // Extend flag
#define NANO_I_BIT (NANO_E_BIT + 1) // Interrupt flag
-const device_type HP_NANOPROCESSOR = device_creator<hp_nanoprocessor_device>;
+DEFINE_DEVICE_TYPE(HP_NANOPROCESSOR, hp_nanoprocessor_device, "nanoprocessor", "HP-Nanoprocessor")
hp_nanoprocessor_device::hp_nanoprocessor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- cpu_device(mconfig , HP_NANOPROCESSOR , "HP-Nanoprocessor" , tag , owner , clock , "nanoprocessor" , __FILE__),
+ cpu_device(mconfig , HP_NANOPROCESSOR , tag , owner , clock),
m_dc_changed_func(*this),
m_read_dc_func(*this),
m_program_config("program" , ENDIANNESS_BIG , 8 , 11),
diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.h b/src/devices/cpu/nanoprocessor/nanoprocessor.h
index 56bf23dbf72..acdb40cb862 100644
--- a/src/devices/cpu/nanoprocessor/nanoprocessor.h
+++ b/src/devices/cpu/nanoprocessor/nanoprocessor.h
@@ -50,13 +50,12 @@
// The HP manual of Nanoprocessor is available here:
// http://www.hp9845.net/9845/downloads/manuals/Nanoprocessor.pdf
// Thanks to anyone who made the manual available.
-#ifndef _NANOPROCESSOR_H_
-#define _NANOPROCESSOR_H_
+#ifndef MAME_CPU_NANOPROCESSOR_NANOPROCESSOR_H
+#define MAME_CPU_NANOPROCESSOR_NANOPROCESSOR_H
-#define HP_NANO_REGS 16 // Number of GP registers
-#define HP_NANO_PC_MASK 0x7ff // Mask of PC meaningful bits: 11 bits available
-#define HP_NANO_DC_NO 8 // Number of direct control lines (DC7 is typically used as interrupt mask)
-#define HP_NANO_IE_DC 7 // DC line used as interrupt enable/mask (DC7)
+#pragma once
+
+constexpr unsigned HP_NANO_IE_DC = 7; // DC line used as interrupt enable/mask (DC7)
// DC changed callback
// The callback receives a 8-bit word holding the state of all DC lines.
@@ -75,12 +74,8 @@ class hp_nanoprocessor_device : public cpu_device
public:
hp_nanoprocessor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_dc_changed_func(device_t &device, _Object object) { return downcast<hp_nanoprocessor_device &>(device).m_dc_changed_func.set_callback(object); }
- template<class _Object> static devcb_base &set_read_dc_func(device_t &device, _Object object) { return downcast<hp_nanoprocessor_device &>(device).m_read_dc_func.set_callback(object); }
-
- // device_t overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ template <class Object> static devcb_base &set_dc_changed_func(device_t &device, Object &&cb) { return downcast<hp_nanoprocessor_device &>(device).m_dc_changed_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_dc_func(device_t &device, Object &&cb) { return downcast<hp_nanoprocessor_device &>(device).m_read_dc_func.set_callback(std::forward<Object>(cb)); }
// device_execute_interface overrides
virtual uint32_t execute_min_cycles() const override { return 2; }
@@ -88,8 +83,6 @@ public:
virtual uint32_t execute_max_cycles() const override { return 3; }
virtual uint32_t execute_input_lines() const override { return 1; }
virtual uint32_t execute_default_irq_vector() const override { return 0xff; }
- virtual void execute_run() override;
- virtual void execute_set_input(int linenum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override {
@@ -105,6 +98,10 @@ public:
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
private:
+ static constexpr unsigned HP_NANO_REGS = 16; // Number of GP registers
+ static constexpr unsigned HP_NANO_PC_MASK = 0x7ff; // Mask of PC meaningful bits: 11 bits available
+ static constexpr unsigned HP_NANO_DC_NO = 8; // Number of direct control lines (DC7 is typically used as interrupt mask)
+
devcb_write8 m_dc_changed_func;
devcb_read8 m_read_dc_func;
int m_icount;
@@ -124,6 +121,13 @@ private:
direct_read_data *m_direct;
address_space *m_io;
+ // device_t overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ virtual void execute_run() override;
+ virtual void execute_set_input(int linenum, int state) override;
+
void execute_one(uint8_t opcode);
uint16_t pa_offset(unsigned off) const;
uint8_t fetch(void);
diff --git a/src/devices/cpu/nec/nec.cpp b/src/devices/cpu/nec/nec.cpp
index 5e3ca395d0a..3b61283ce41 100644
--- a/src/devices/cpu/nec/nec.cpp
+++ b/src/devices/cpu/nec/nec.cpp
@@ -105,6 +105,7 @@
****************************************************************************/
#include "emu.h"
+#include "nec.h"
#include "debugger.h"
typedef uint8_t BOOLEAN;
@@ -112,18 +113,17 @@ typedef uint8_t BYTE;
typedef uint16_t WORD;
typedef uint32_t DWORD;
-#include "nec.h"
#include "necpriv.h"
-const device_type V20 = device_creator<v20_device>;
-const device_type V30 = device_creator<v30_device>;
-const device_type V33 = device_creator<v33_device>;
-const device_type V33A =device_creator<v33a_device>;
+DEFINE_DEVICE_TYPE(V20, v20_device, "v20", "V20")
+DEFINE_DEVICE_TYPE(V30, v30_device, "v30", "V30")
+DEFINE_DEVICE_TYPE(V33, v33_device, "v33", "V33")
+DEFINE_DEVICE_TYPE(V33A, v33a_device, "v33a", "V33A")
-nec_common_device::nec_common_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, bool is_16bit, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+nec_common_device::nec_common_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_16bit, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, is_16bit ? 16 : 8, 20, 0)
, m_io_config("io", ENDIANNESS_LITTLE, is_16bit ? 16 : 8, 16, 0)
, m_fetch_xor(fetch_xor)
@@ -135,13 +135,13 @@ nec_common_device::nec_common_device(const machine_config &mconfig, device_type
v20_device::v20_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nec_common_device(mconfig, V20, "V20", tag, owner, clock, "v20", __FILE__, false, 0, 4, 4, V20_TYPE)
+ : nec_common_device(mconfig, V20, tag, owner, clock, false, 0, 4, 4, V20_TYPE)
{
}
v30_device::v30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nec_common_device(mconfig, V30, "V30", tag, owner, clock, "v30", __FILE__, true, BYTE_XOR_LE(0), 6, 2, V30_TYPE)
+ : nec_common_device(mconfig, V30, tag, owner, clock, true, BYTE_XOR_LE(0), 6, 2, V30_TYPE)
{
}
@@ -150,13 +150,13 @@ v30_device::v30_device(const machine_config &mconfig, const char *tag, device_t
* complete guess below, nbbatman will not work
* properly without. */
v33_device::v33_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nec_common_device(mconfig, V33, "V33", tag, owner, clock, "v33", __FILE__, true, BYTE_XOR_LE(0), 6, 1, V33_TYPE)
+ : nec_common_device(mconfig, V33, tag, owner, clock, true, BYTE_XOR_LE(0), 6, 1, V33_TYPE)
{
}
v33a_device::v33a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nec_common_device(mconfig, V33A, "V33A", tag, owner, clock, "v33a", __FILE__, true, BYTE_XOR_LE(0), 6, 1, V33_TYPE)
+ : nec_common_device(mconfig, V33A, tag, owner, clock, true, BYTE_XOR_LE(0), 6, 1, V33_TYPE)
{
}
diff --git a/src/devices/cpu/nec/nec.h b/src/devices/cpu/nec/nec.h
index 36a38019990..f4f95ad6788 100644
--- a/src/devices/cpu/nec/nec.h
+++ b/src/devices/cpu/nec/nec.h
@@ -1,8 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Bryan McPhail
/* ASG 971222 -- rewrote this interface */
-#ifndef __NEC_H_
-#define __NEC_H_
+#ifndef MAME_CPU_NEC_NEC_H
+#define MAME_CPU_NEC_NEC_H
+
+#pragma once
#define NEC_INPUT_LINE_INTP0 10
@@ -21,11 +23,10 @@ enum
class nec_common_device : public cpu_device
{
-public:
+protected:
// construction/destruction
- nec_common_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, bool is_16bit, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type);
+ nec_common_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_16bit, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type);
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -55,12 +56,12 @@ private:
address_space_config m_program_config;
address_space_config m_io_config;
-/* NEC registers */
-union necbasicregs
-{ /* eight general registers */
- uint16_t w[8]; /* viewed as 16 bits registers */
- uint8_t b[16]; /* or as 8 bit registers */
-};
+ /* NEC registers */
+ union necbasicregs
+ { /* eight general registers */
+ uint16_t w[8]; /* viewed as 16 bits registers */
+ uint8_t b[16]; /* or as 8 bit registers */
+ };
necbasicregs m_regs;
offs_t m_fetch_xor;
@@ -423,11 +424,9 @@ public:
};
-extern const device_type V20;
-extern const device_type V30;
-extern const device_type V33;
-extern const device_type V33A;
-
-
+DECLARE_DEVICE_TYPE(V20, v20_device)
+DECLARE_DEVICE_TYPE(V30, v30_device)
+DECLARE_DEVICE_TYPE(V33, v33_device)
+DECLARE_DEVICE_TYPE(V33A, v33a_device)
-#endif
+#endif // MAME_CPU_NEC_NEC_H
diff --git a/src/devices/cpu/nec/v25.cpp b/src/devices/cpu/nec/v25.cpp
index bc1c944d34f..66d4e6885e8 100644
--- a/src/devices/cpu/nec/v25.cpp
+++ b/src/devices/cpu/nec/v25.cpp
@@ -46,12 +46,12 @@ typedef uint32_t DWORD;
#include "v25priv.h"
#include "nec_common.h"
-const device_type V25 = device_creator<v25_device>;
-const device_type V35 = device_creator<v35_device>;
+DEFINE_DEVICE_TYPE(V25, v25_device, "v25", "V25")
+DEFINE_DEVICE_TYPE(V35, v35_device, "v35", "V35")
-v25_common_device::v25_common_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, bool is_16bit, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+v25_common_device::v25_common_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_16bit, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, is_16bit ? 16 : 8, 20, 0)
, m_io_config("io", ENDIANNESS_LITTLE, is_16bit ? 16 : 8, 16, 0)
, m_fetch_xor(fetch_xor)
@@ -72,13 +72,13 @@ v25_common_device::v25_common_device(const machine_config &mconfig, device_type
v25_device::v25_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : v25_common_device(mconfig, V25, "V25", tag, owner, clock, "v25", false, 0, 4, 4, V20_TYPE)
+ : v25_common_device(mconfig, V25, tag, owner, clock, false, 0, 4, 4, V20_TYPE)
{
}
v35_device::v35_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : v25_common_device(mconfig, V35, "V35", tag, owner, clock, "v35", true, BYTE_XOR_LE(0), 6, 2, V30_TYPE)
+ : v25_common_device(mconfig, V35, tag, owner, clock, true, BYTE_XOR_LE(0), 6, 2, V30_TYPE)
{
}
diff --git a/src/devices/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h
index c5cc0b5ee2a..00bf192f22f 100644
--- a/src/devices/cpu/nec/v25.h
+++ b/src/devices/cpu/nec/v25.h
@@ -1,8 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Bryan McPhail, Alex W. Jackson
/* ASG 971222 -- rewrote this interface */
-#ifndef __NEC_V25_H_
-#define __NEC_V25_H_
+#ifndef MAME_CPU_NEC_V25_H
+#define MAME_CPU_NEC_V25_H
+
+#pragma once
#define NEC_INPUT_LINE_INTP0 10
@@ -48,24 +50,24 @@ enum
class v25_common_device : public cpu_device
{
public:
- // construction/destruction
- v25_common_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, bool is_16bit, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type);
-
// static configuration helpers
static void set_decryption_table(device_t &device, const uint8_t *decryption_table) { downcast<v25_common_device &>(device).m_v25v35_decryptiontable = decryption_table; }
- template<class _Object> static devcb_base & set_pt_in_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_pt_in.set_callback(object); }
- template<class _Object> static devcb_base & set_p0_in_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p0_in.set_callback(object); }
- template<class _Object> static devcb_base & set_p1_in_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p1_in.set_callback(object); }
- template<class _Object> static devcb_base & set_p2_in_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p2_in.set_callback(object); }
+ template <class Object> static devcb_base & set_pt_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_pt_in.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base & set_p0_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p0_in.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base & set_p1_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p1_in.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base & set_p2_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p2_in.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base & set_p0_out_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p0_out.set_callback(object); }
- template<class _Object> static devcb_base & set_p1_out_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p1_out.set_callback(object); }
- template<class _Object> static devcb_base & set_p2_out_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p2_out.set_callback(object); }
+ template <class Object> static devcb_base & set_p0_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p0_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base & set_p1_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p1_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base & set_p2_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p2_out.set_callback(std::forward<Object>(cb)); }
TIMER_CALLBACK_MEMBER(v25_timer_callback);
protected:
+ // construction/destruction
+ v25_common_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_16bit, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -98,12 +100,12 @@ private:
address_space_config m_program_config;
address_space_config m_io_config;
-/* internal RAM and register banks */
-union internalram
-{
- uint16_t w[128];
- uint8_t b[256];
-};
+ /* internal RAM and register banks */
+ union internalram
+ {
+ uint16_t w[128];
+ uint8_t b[256];
+ };
internalram m_ram;
offs_t m_fetch_xor;
@@ -487,8 +489,8 @@ public:
};
-extern const device_type V25;
-extern const device_type V35;
+DECLARE_DEVICE_TYPE(V25, v25_device)
+DECLARE_DEVICE_TYPE(V35, v35_device)
-#endif
+#endif // MAME_CPU_NEC_V25_H
diff --git a/src/devices/cpu/nec/v53.cpp b/src/devices/cpu/nec/v53.cpp
index c596d46d824..dfad59b52ba 100644
--- a/src/devices/cpu/nec/v53.cpp
+++ b/src/devices/cpu/nec/v53.cpp
@@ -12,9 +12,12 @@
#include "emu.h"
#include "v53.h"
+#include "necpriv.h"
-const device_type V53 = device_creator<v53_device>;
-const device_type V53A =device_creator<v53a_device>;
+
+
+DEFINE_DEVICE_TYPE(V53, v53_device, "v53", "V53")
+DEFINE_DEVICE_TYPE(V53A, v53a_device, "v53a", "V53A")
WRITE8_MEMBER(v53_base_device::BSEL_w)
{
@@ -526,8 +529,8 @@ machine_config_constructor v53_base_device::device_mconfig_additions() const
}
-v53_base_device::v53_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type)
- : nec_common_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__, true, fetch_xor, prefetch_size, prefetch_cycles, chip_type),
+v53_base_device::v53_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type)
+ : nec_common_device(mconfig, type, tag, owner, clock, true, fetch_xor, prefetch_size, prefetch_cycles, chip_type),
m_io_space_config( "io", ENDIANNESS_LITTLE, 16, 16, 0, ADDRESS_MAP_NAME( v53_internal_port_map ) ),
m_v53tcu(*this, "pit"),
m_v53dmau(*this, "upd71071dma"),
@@ -567,12 +570,12 @@ v53_base_device::v53_base_device(const machine_config &mconfig, device_type type
v53_device::v53_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : v53_base_device(mconfig, V53, "V53", tag, owner, clock, "v53", BYTE_XOR_LE(0), 6, 1, V33_TYPE)
+ : v53_base_device(mconfig, V53, tag, owner, clock, BYTE_XOR_LE(0), 6, 1, V33_TYPE)
{
}
v53a_device::v53a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : v53_base_device(mconfig, V53A, "V53A", tag, owner, clock, "v53a", BYTE_XOR_LE(0), 6, 1, V33_TYPE)
+ : v53_base_device(mconfig, V53A, tag, owner, clock, BYTE_XOR_LE(0), 6, 1, V33_TYPE)
{
}
diff --git a/src/devices/cpu/nec/v53.h b/src/devices/cpu/nec/v53.h
index 2f1f58d8361..315fa97a8d0 100644
--- a/src/devices/cpu/nec/v53.h
+++ b/src/devices/cpu/nec/v53.h
@@ -1,14 +1,17 @@
// license:BSD-3-Clause
// copyright-holders:Bryan McPhail
/* V53 */
+#ifndef MAME_CPU_NEC_V53_H
+#define MAME_CPU_NEC_V53_H
+
+#pragma once
#include "nec.h"
-#include "necpriv.h"
-#include "machine/pit8253.h"
#include "machine/am9517a.h"
-#include "machine/pic8259.h"
#include "machine/i8251.h"
+#include "machine/pic8259.h"
+#include "machine/pit8253.h"
// SCU
@@ -107,8 +110,6 @@
class v53_base_device : public nec_common_device
{
public:
- v53_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type);
-
DECLARE_WRITE8_MEMBER(BSEL_w);
DECLARE_WRITE8_MEMBER(BADR_w);
DECLARE_WRITE8_MEMBER(BRC_w);
@@ -131,29 +132,19 @@ public:
DECLARE_WRITE8_MEMBER(OPSEL_w);
DECLARE_WRITE8_MEMBER(SCTL_w);
- uint8_t m_SCTL;
- uint8_t m_OPSEL;
-
- uint8_t m_SULA;
- uint8_t m_TULA;
- uint8_t m_IULA;
- uint8_t m_DULA;
- uint8_t m_OPHA;
-
// SCU
DECLARE_READ8_MEMBER(scu_simk_r);
DECLARE_WRITE8_MEMBER(scu_simk_w);
- uint8_t m_simk;
- template<class _Object> static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_txd_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_dtr_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_dtr_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rts_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_rts_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rxrdy_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_rxrdy_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_txrdy_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_txrdy_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_txempty_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_txempty_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_syndet_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_syndet_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rxrdy_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_rxrdy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_txrdy_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txrdy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_txempty_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txempty_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_syndet_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_syndet_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(scu_txd_trampoline_cb) { m_txd_handler(state); }
DECLARE_WRITE_LINE_MEMBER(scu_dtr_trampoline_cb) { m_dtr_handler(state); }
- DECLARE_WRITE_LINE_MEMBER(scu_rts_trampoline_cb) { m_rts_handler(state); }
+ DECLARE_WRITE_LINE_MEMBER(scu_rts_trampoline_cb) { m_rts_handler(state); }
DECLARE_WRITE_LINE_MEMBER(scu_rxrdy_trampoline_cb) { m_rxrdy_handler(state); } /* should we mask this here based on m_simk? it can mask the interrupt */
DECLARE_WRITE_LINE_MEMBER(scu_txrdy_trampoline_cb) { m_txrdy_handler(state); } /* should we mask this here based on m_simk? it can mask the interrupt */
DECLARE_WRITE_LINE_MEMBER(scu_txempty_trampoline_cb) { m_txempty_handler(state); }
@@ -170,30 +161,30 @@ public:
// static void set_clk0(device_t &device, double clk0) { downcast<v53_base_device &>(device).m_clk0 = clk0; }
// static void set_clk1(device_t &device, double clk1) { downcast<v53_base_device &>(device).m_clk1 = clk1; }
// static void set_clk2(device_t &device, double clk2) { downcast<v53_base_device &>(device).m_clk2 = clk2; }
- template<class _Object> static devcb_base &set_out0_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out0_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_out1_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_out2_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out2_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_out0_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out1_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out2_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out2_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(tcu_out0_trampoline_cb){ m_out0_handler(state); }
DECLARE_WRITE_LINE_MEMBER(tcu_out1_trampoline_cb){ m_out1_handler(state); }
DECLARE_WRITE_LINE_MEMBER(tcu_out2_trampoline_cb){ m_out2_handler(state); }
// DMAU
- template<class _Object> static devcb_base &set_out_hreq_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_hreq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_eop_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_eop_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_memr_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_in_memr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_memw_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_memw_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ior_0_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_in_ior_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ior_1_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_in_ior_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ior_2_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_in_ior_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ior_3_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_in_ior_3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iow_0_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_iow_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iow_1_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_iow_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iow_2_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_iow_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iow_3_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_iow_3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_0_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_dack_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_1_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_dack_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_2_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_dack_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_3_callback(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out_dack_3_cb.set_callback(object); }
+ template<class Object> static devcb_base &set_out_hreq_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_hreq_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_out_eop_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_eop_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_in_memr_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_memr_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_out_memw_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_memw_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_in_ior_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_0_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_in_ior_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_1_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_in_ior_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_2_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_in_ior_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_3_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_out_iow_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_0_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_out_iow_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_1_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_out_iow_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_2_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_out_iow_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_3_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_out_dack_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_0_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_out_dack_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_1_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_out_dack_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_2_cb.set_callback(std::forward<Object>(cb)); }
+ template<class Object> static devcb_base &set_out_dack_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_3_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(hreq_trampoline_cb) { m_out_hreq_cb(state); }
DECLARE_WRITE_LINE_MEMBER(eop_trampoline_cb) { m_out_eop_cb(state); }
DECLARE_READ8_MEMBER(dma_memr_trampoline_r) { return m_in_memr_cb(space, offset); }
@@ -219,6 +210,18 @@ public:
DECLARE_WRITE_LINE_MEMBER(hack_w);
+ DECLARE_READ8_MEMBER(get_pic_ack);
+ DECLARE_WRITE_LINE_MEMBER(internal_irq_w);
+
+
+protected:
+ v53_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, offs_t fetch_xor, uint8_t prefetch_size, uint8_t prefetch_cycles, uint32_t chip_type);
+
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void execute_set_input(int inputnum, int state) override;
void install_peripheral_io();
@@ -234,18 +237,16 @@ public:
}
+ uint8_t m_SCTL;
+ uint8_t m_OPSEL;
+ uint8_t m_SULA;
+ uint8_t m_TULA;
+ uint8_t m_IULA;
+ uint8_t m_DULA;
+ uint8_t m_OPHA;
- DECLARE_READ8_MEMBER(get_pic_ack);
- DECLARE_WRITE_LINE_MEMBER(internal_irq_w);
-
-
-protected:
- // device-level overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void execute_set_input(int inputnum, int state) override;
+ uint8_t m_simk;
required_device<pit8253_device> m_v53tcu;
required_device<upd71071_v53_device> m_v53dmau;
@@ -287,9 +288,6 @@ protected:
devcb_write_line m_out_dack_1_cb;
devcb_write_line m_out_dack_2_cb;
devcb_write_line m_out_dack_3_cb;
-
-
-
};
@@ -305,5 +303,7 @@ public:
v53a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type V53;
-extern const device_type V53A;
+DECLARE_DEVICE_TYPE(V53, v53_device)
+DECLARE_DEVICE_TYPE(V53A, v53a_device)
+
+#endif // MAME_CPU_NEC_V53_H
diff --git a/src/devices/cpu/patinhofeio/patinho_feio.cpp b/src/devices/cpu/patinhofeio/patinho_feio.cpp
index bd9479038d2..f482e2d3b19 100644
--- a/src/devices/cpu/patinhofeio/patinho_feio.cpp
+++ b/src/devices/cpu/patinhofeio/patinho_feio.cpp
@@ -5,9 +5,9 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "patinhofeio_cpu.h"
-#include "includes/patinhofeio.h"
+#include "debugger.h"
+#include "includes/patinhofeio.h" // FIXME: this is a dependency from devices on MAME
#define PC m_pc //The program counter is called "contador de instrucoes" (IC) in portuguese
#define ACC m_acc
@@ -49,7 +49,7 @@ void patinho_feio_cpu_device::compute_effective_address(unsigned int addr){
}
}
-const device_type PATO_FEIO_CPU = device_creator<patinho_feio_cpu_device>;
+DEFINE_DEVICE_TYPE(PATO_FEIO_CPU, patinho_feio_cpu_device, "pato_feio_cpu", "Patinho Feio CPU")
//Internal 4kbytes of RAM
static ADDRESS_MAP_START(prog_8bit, AS_PROGRAM, 8, patinho_feio_cpu_device)
@@ -57,7 +57,7 @@ static ADDRESS_MAP_START(prog_8bit, AS_PROGRAM, 8, patinho_feio_cpu_device)
ADDRESS_MAP_END
patinho_feio_cpu_device::patinho_feio_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, PATO_FEIO_CPU, "Patinho Feio CPU", tag, owner, clock, "pato_feio_cpu", __FILE__)
+ : cpu_device(mconfig, PATO_FEIO_CPU, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 12, 0, ADDRESS_MAP_NAME(prog_8bit))
, m_icount(0)
, m_rc_read_cb(*this)
diff --git a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h
index d33069143f8..1f7de74638a 100644
--- a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h
+++ b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h
@@ -53,16 +53,15 @@ public:
// construction/destruction
patinho_feio_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- template<class _Object> static devcb_base &set_rc_read_callback(device_t &device, _Object object) { return downcast<patinho_feio_cpu_device &>(device).m_rc_read_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_buttons_read_callback(device_t &device, _Object object) { return downcast<patinho_feio_cpu_device &>(device).m_buttons_read_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_iodev_read_callback(device_t &device, int devnumber, _Object object) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_read_cb[devnumber].set_callback(object); }
- template<class _Object> static devcb_base &set_iodev_write_callback(device_t &device, int devnumber, _Object object) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_write_cb[devnumber].set_callback(object); }
- template<class _Object> static devcb_base &set_iodev_status_callback(device_t &device, int devnumber, _Object object) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_status_cb[devnumber].set_callback(object); }
+ template <class Object> static devcb_base &set_rc_read_callback(device_t &device, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_rc_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_buttons_read_callback(device_t &device, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_buttons_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_iodev_read_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_read_cb[devnumber].set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_iodev_write_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_write_cb[devnumber].set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_iodev_status_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_status_cb[devnumber].set_callback(std::forward<Object>(cb)); }
void transfer_byte_from_external_device(uint8_t channel, uint8_t data);
- void set_iodev_status(uint8_t channel, bool status) {
- m_iodev_status[channel] = status;
- }
+ void set_iodev_status(uint8_t channel, bool status) { m_iodev_status[channel] = status; }
+
protected:
virtual void execute_run() override;
@@ -120,7 +119,7 @@ protected:
virtual uint32_t execute_max_cycles() const override { return 2; }
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_disasm_interface overrides
virtual uint32_t disasm_min_opcode_bytes() const override { return 1; }
@@ -139,6 +138,6 @@ private:
uint8_t m_mode;
};
-extern const device_type PATO_FEIO_CPU;
+DECLARE_DEVICE_TYPE(PATO_FEIO_CPU, patinho_feio_cpu_device)
#endif // MAME_DEVICES_CPU_PATINHOFEIO_CPU_H
diff --git a/src/devices/cpu/pdp1/pdp1.cpp b/src/devices/cpu/pdp1/pdp1.cpp
index 8ad561c18d8..c79e612191d 100644
--- a/src/devices/cpu/pdp1/pdp1.cpp
+++ b/src/devices/cpu/pdp1/pdp1.cpp
@@ -377,11 +377,11 @@
#define PREVIOUS_PC ((PC & ADDRESS_EXTENSION_MASK) | ((PC-1) & BASE_ADDRESS_MASK))
-const device_type PDP1 = device_creator<pdp1_device>;
+DEFINE_DEVICE_TYPE(PDP1, pdp1_device, "pdp1_cpu", "PDP1")
pdp1_device::pdp1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, PDP1, "PDP1", tag, owner, clock, "pdp1_cpu", __FILE__)
+ : cpu_device(mconfig, PDP1, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 32, 18, 0)
{
m_program_config.m_is_octal = true;
diff --git a/src/devices/cpu/pdp1/pdp1.h b/src/devices/cpu/pdp1/pdp1.h
index 55ff0a5ec6a..4604069d33b 100644
--- a/src/devices/cpu/pdp1/pdp1.h
+++ b/src/devices/cpu/pdp1/pdp1.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Raphael Nabet
-#pragma once
+#ifndef MAME_CPU_PDP1_PDP1_H
+#define MAME_CPU_PDP1_PDP1_H
-#ifndef __PDP1_H__
-#define __PDP1_H__
+#pragma once
@@ -198,11 +198,11 @@ private:
};
-extern const device_type PDP1;
+DECLARE_DEVICE_TYPE(PDP1, pdp1_device)
#define MCFG_PDP1_RESET_PARAM(_param) \
pdp1_device::static_set_reset_param(*device, &(_param));
-#endif /* __PDP1_H__ */
+#endif // MAME_CPU_PDP1_PDP1_H
diff --git a/src/devices/cpu/pdp1/tx0.cpp b/src/devices/cpu/pdp1/tx0.cpp
index 4ceb64a0bbe..b3ae8567d3a 100644
--- a/src/devices/cpu/pdp1/tx0.cpp
+++ b/src/devices/cpu/pdp1/tx0.cpp
@@ -11,8 +11,8 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "tx0.h"
+#include "debugger.h"
#define LOG 0
#define LOG_EXTRA 0
@@ -40,17 +40,17 @@
#define INCREMENT_PC_8KW (PC = (PC+1) & ADDRESS_MASK_8KW)
-const device_type TX0_8KW = device_creator<tx0_8kw_device>;
-const device_type TX0_64KW = device_creator<tx0_64kw_device>;
+DEFINE_DEVICE_TYPE(TX0_8KW, tx0_8kw_device, "tx0_8kw_cpu", "TX-0 8KW")
+DEFINE_DEVICE_TYPE(TX0_64KW, tx0_64kw_device, "tx0_64kw_cpu", "TX-0 64KW")
-tx0_device::tx0_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int addr_bits, int address_mask, int ir_mask)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_BIG, 32, addr_bits , -2), m_mbr(0), m_ac(0), m_mar(0), m_pc(0), m_ir(0), m_lr(0), m_xr(0), m_pf(0), m_tbr(0), m_tac(0), m_cm_sel(0),
- m_lr_sel(0), m_gbl_cm_sel(0), m_stop_cyc0(0), m_stop_cyc1(0), m_run(0), m_rim(0), m_cycle(0), m_ioh(0), m_ios(0), m_rim_step(0)
- , m_address_mask(address_mask)
+tx0_device::tx0_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int addr_bits, int address_mask, int ir_mask)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_BIG, 32, addr_bits , -2), m_mbr(0), m_ac(0), m_mar(0), m_pc(0), m_ir(0), m_lr(0), m_xr(0), m_pf(0), m_tbr(0), m_tac(0), m_cm_sel(0)
+ , m_lr_sel(0), m_gbl_cm_sel(0), m_stop_cyc0(0), m_stop_cyc1(0), m_run(0), m_rim(0), m_cycle(0), m_ioh(0), m_ios(0), m_rim_step(0)
+ , m_address_mask(address_mask)
, m_ir_mask(ir_mask), m_icount(0), m_program(nullptr)
- , m_cpy_handler(*this)
+ , m_cpy_handler(*this)
, m_r1l_handler(*this)
, m_dis_handler(*this)
, m_r3l_handler(*this)
@@ -65,13 +65,13 @@ tx0_device::tx0_device(const machine_config &mconfig, device_type type, const ch
}
tx0_8kw_device::tx0_8kw_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tx0_device(mconfig, TX0_8KW, "TX-0 8KW", tag, owner, clock, "tx0_8w_cpu", __FILE__, 13, ADDRESS_MASK_8KW, 037)
+ : tx0_device(mconfig, TX0_8KW, tag, owner, clock, 13, ADDRESS_MASK_8KW, 037)
{
}
tx0_64kw_device::tx0_64kw_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tx0_device(mconfig, TX0_64KW, "TX-0 64KW", tag, owner, clock, "tx0_64kw_cpu", __FILE__, 16, ADDRESS_MASK_64KW, 03)
+ : tx0_device(mconfig, TX0_64KW, tag, owner, clock, 16, ADDRESS_MASK_64KW, 03)
{
}
diff --git a/src/devices/cpu/pdp1/tx0.h b/src/devices/cpu/pdp1/tx0.h
index afd39fc938a..7f4a094521a 100644
--- a/src/devices/cpu/pdp1/tx0.h
+++ b/src/devices/cpu/pdp1/tx0.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Raphael Nabet
-#pragma once
+#ifndef MAME_CPU_PDP1_TX0_H
+#define MAME_CPU_PDP1_TX0_H
-#ifndef __TX0_H__
-#define __TX0_H__
+#pragma once
@@ -37,25 +37,25 @@ enum
class tx0_device : public cpu_device
{
public:
- // construction/destruction
- tx0_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int addr_bits, int address_mask, int ir_mask);
-
// static configuration helpers
- template<class _Object> static devcb_base &set_cpy_cb(device_t &device, _Object object) { return downcast<tx0_device &>(device).m_cpy_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_r1l_cb(device_t &device, _Object object) { return downcast<tx0_device &>(device).m_r1l_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_dis_cb(device_t &device, _Object object) { return downcast<tx0_device &>(device).m_dis_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_r3l_cb(device_t &device, _Object object) { return downcast<tx0_device &>(device).m_r3l_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_prt_cb(device_t &device, _Object object) { return downcast<tx0_device &>(device).m_prt_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rsv_cb(device_t &device, _Object object) { return downcast<tx0_device &>(device).m_rsv_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_p6h_cb(device_t &device, _Object object) { return downcast<tx0_device &>(device).m_p6h_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_p7h_cb(device_t &device, _Object object) { return downcast<tx0_device &>(device).m_p7h_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_sel_cb(device_t &device, _Object object) { return downcast<tx0_device &>(device).m_sel_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_res_cb(device_t &device, _Object object) { return downcast<tx0_device &>(device).m_io_reset_callback.set_callback(object); }
+ template <class Object> static devcb_base &set_cpy_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_cpy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_r1l_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_r1l_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dis_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_dis_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_r3l_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_r3l_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_prt_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_prt_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rsv_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_rsv_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_p6h_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_p6h_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_p7h_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_p7h_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sel_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_sel_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_res_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_io_reset_callback.set_callback(std::forward<Object>(cb)); }
void pulse_reset();
void io_complete();
protected:
+ // construction/destruction
+ tx0_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int addr_bits, int address_mask, int ir_mask);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -65,7 +65,7 @@ protected:
virtual uint32_t execute_max_cycles() const override { return 3; }
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_disasm_interface overrides
virtual uint32_t disasm_min_opcode_bytes() const override { return 4; }
@@ -173,7 +173,7 @@ private:
};
-extern const device_type TX0_64KW;
-extern const device_type TX0_8KW;
+DECLARE_DEVICE_TYPE(TX0_64KW, tx0_64kw_device)
+DECLARE_DEVICE_TYPE(TX0_8KW, tx0_8kw_device)
-#endif /* __TX0_H__ */
+#endif // MAME_CPU_PDP1_TX0_H
diff --git a/src/devices/cpu/pic16c5x/pic16c5x.cpp b/src/devices/cpu/pic16c5x/pic16c5x.cpp
index 3c36f681915..9c21dd2c737 100644
--- a/src/devices/cpu/pic16c5x/pic16c5x.cpp
+++ b/src/devices/cpu/pic16c5x/pic16c5x.cpp
@@ -72,18 +72,18 @@
\**************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "pic16c5x.h"
+#include "debugger.h"
-const device_type PIC16C54 = device_creator<pic16c54_device>;
-const device_type PIC16C55 = device_creator<pic16c55_device>;
-const device_type PIC16C56 = device_creator<pic16c56_device>;
-const device_type PIC16C57 = device_creator<pic16c57_device>;
-const device_type PIC16C58 = device_creator<pic16c58_device>;
+DEFINE_DEVICE_TYPE(PIC16C54, pic16c54_device, "pic16c54", "PIC16C54")
+DEFINE_DEVICE_TYPE(PIC16C55, pic16c55_device, "pic16c55", "PIC16C55")
+DEFINE_DEVICE_TYPE(PIC16C56, pic16c56_device, "pic16c56", "PIC16C56")
+DEFINE_DEVICE_TYPE(PIC16C57, pic16c57_device, "pic16c57", "PIC16C57")
+DEFINE_DEVICE_TYPE(PIC16C58, pic16c58_device, "pic16c58", "PIC16C58")
-const device_type PIC1650 = device_creator<pic1650_device>;
-const device_type PIC1655 = device_creator<pic1655_device>;
+DEFINE_DEVICE_TYPE(PIC1650, pic1650_device, "pic1650", "PIC1650")
+DEFINE_DEVICE_TYPE(PIC1655, pic1655_device, "pic1655", "PIC1655")
/****************************************************************************
@@ -118,12 +118,12 @@ static ADDRESS_MAP_START( pic16c5x_ram_7, AS_DATA, 8, pic16c5x_device )
ADDRESS_MAP_END
-pic16c5x_device::pic16c5x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, int picmodel)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+pic16c5x_device::pic16c5x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width, int picmodel)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 16, program_width, -1
- , ( ( program_width == 9 ) ? ADDRESS_MAP_NAME(pic16c5x_rom_9) : ( ( program_width == 10 ) ? ADDRESS_MAP_NAME(pic16c5x_rom_10) : ADDRESS_MAP_NAME(pic16c5x_rom_11) )))
+ , ( ( program_width == 9 ) ? ADDRESS_MAP_NAME(pic16c5x_rom_9) : ( ( program_width == 10 ) ? ADDRESS_MAP_NAME(pic16c5x_rom_10) : ADDRESS_MAP_NAME(pic16c5x_rom_11) )))
, m_data_config("data", ENDIANNESS_LITTLE, 8, data_width, 0
- , ( ( data_width == 5 ) ? ADDRESS_MAP_NAME(pic16c5x_ram_5) : ADDRESS_MAP_NAME(pic16c5x_ram_7) ) )
+ , ( ( data_width == 5 ) ? ADDRESS_MAP_NAME(pic16c5x_ram_5) : ADDRESS_MAP_NAME(pic16c5x_ram_7) ) )
, m_reset_vector((program_width == 9) ? 0x1ff : ((program_width == 10) ? 0x3ff : 0x7ff))
, m_picmodel(picmodel)
, m_temp_config(0)
@@ -141,37 +141,37 @@ pic16c5x_device::pic16c5x_device(const machine_config &mconfig, device_type type
pic16c54_device::pic16c54_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c5x_device(mconfig, PIC16C54, "PIC16C54", tag, owner, clock, "pic16c54", 9, 5, 0x16C54)
+ : pic16c5x_device(mconfig, PIC16C54, tag, owner, clock, 9, 5, 0x16C54)
{
}
pic16c55_device::pic16c55_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c5x_device(mconfig, PIC16C55, "PIC16C55", tag, owner, clock, "pic16c55", 9, 5, 0x16C55)
+ : pic16c5x_device(mconfig, PIC16C55, tag, owner, clock, 9, 5, 0x16C55)
{
}
pic16c56_device::pic16c56_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c5x_device(mconfig, PIC16C56, "PIC16C56", tag, owner, clock, "pic16c56", 10, 5, 0x16C56)
+ : pic16c5x_device(mconfig, PIC16C56, tag, owner, clock, 10, 5, 0x16C56)
{
}
pic16c57_device::pic16c57_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c5x_device(mconfig, PIC16C57, "PIC16C57", tag, owner, clock, "pic16c57", 11, 7, 0x16C57)
+ : pic16c5x_device(mconfig, PIC16C57, tag, owner, clock, 11, 7, 0x16C57)
{
}
pic16c58_device::pic16c58_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c5x_device(mconfig, PIC16C58, "PIC16C58", tag, owner, clock, "pic16c58", 11, 7, 0x16C58)
+ : pic16c5x_device(mconfig, PIC16C58, tag, owner, clock, 11, 7, 0x16C58)
{
}
pic1650_device::pic1650_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c5x_device(mconfig, PIC1650, "PIC1650", tag, owner, clock, "pic1650", 9, 5, 0x1650)
+ : pic16c5x_device(mconfig, PIC1650, tag, owner, clock, 9, 5, 0x1650)
{
}
pic1655_device::pic1655_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c5x_device(mconfig, PIC1655, "PIC1655", tag, owner, clock, "pic1655", 9, 5, 0x1655)
+ : pic16c5x_device(mconfig, PIC1655, tag, owner, clock, 9, 5, 0x1655)
{
}
diff --git a/src/devices/cpu/pic16c5x/pic16c5x.h b/src/devices/cpu/pic16c5x/pic16c5x.h
index da6c8f62449..8642ae8da43 100644
--- a/src/devices/cpu/pic16c5x/pic16c5x.h
+++ b/src/devices/cpu/pic16c5x/pic16c5x.h
@@ -11,10 +11,10 @@
* *
\**************************************************************************/
-#pragma once
+#ifndef MAME_CPU_PIC16C5X_PIC16C5X_H
+#define MAME_CPU_PIC16C5X_PIC16C5X_H
-#ifndef __PIC16C5X_H__
-#define __PIC16C5X_H__
+#pragma once
// input lines
enum
@@ -65,32 +65,29 @@ enum
-extern const device_type PIC16C54;
-extern const device_type PIC16C55;
-extern const device_type PIC16C56;
-extern const device_type PIC16C57;
-extern const device_type PIC16C58;
+DECLARE_DEVICE_TYPE(PIC16C54, pic16c54_device)
+DECLARE_DEVICE_TYPE(PIC16C55, pic16c55_device)
+DECLARE_DEVICE_TYPE(PIC16C56, pic16c56_device)
+DECLARE_DEVICE_TYPE(PIC16C57, pic16c57_device)
+DECLARE_DEVICE_TYPE(PIC16C58, pic16c58_device)
-extern const device_type PIC1650;
-extern const device_type PIC1655;
+DECLARE_DEVICE_TYPE(PIC1650, pic1650_device)
+DECLARE_DEVICE_TYPE(PIC1655, pic1655_device)
class pic16c5x_device : public cpu_device
{
public:
- // construction/destruction
- pic16c5x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int data_width, int picmodel);
-
// static configuration helpers
- template<class _Object> static devcb_base &set_read_a_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_read_a.set_callback(object); }
- template<class _Object> static devcb_base &set_read_b_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_read_b.set_callback(object); }
- template<class _Object> static devcb_base &set_read_c_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_read_c.set_callback(object); }
- template<class _Object> static devcb_base &set_read_d_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_read_d.set_callback(object); }
+ template <class Object> static devcb_base &set_read_a_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_a.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_c_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_c.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_write_a_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_write_a.set_callback(object); }
- template<class _Object> static devcb_base &set_write_b_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_write_b.set_callback(object); }
- template<class _Object> static devcb_base &set_write_c_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_write_c.set_callback(object); }
- template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_write_d.set_callback(object); }
+ template <class Object> static devcb_base &set_write_a_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_a.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_b_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_b.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_c_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_c.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); }
/****************************************************************************
* Function to configure the CONFIG register. This is actually hard-wired
@@ -103,6 +100,9 @@ public:
static void set_config_static(device_t &device, uint16_t data) { downcast<pic16c5x_device &>(device).m_temp_config = data; }
protected:
+ // construction/destruction
+ pic16c5x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width, int picmodel);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -125,7 +125,7 @@ protected:
virtual void execute_set_input(int line, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override
{
return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr );
}
@@ -305,4 +305,4 @@ public:
pic1655_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-#endif /* __PIC16C5X_H__ */
+#endif // MAME_CPU_PIC16C5X_PIC16C5X_H
diff --git a/src/devices/cpu/pic16c62x/pic16c62x.cpp b/src/devices/cpu/pic16c62x/pic16c62x.cpp
index 9901fedc3a0..c7943ad8480 100644
--- a/src/devices/cpu/pic16c62x/pic16c62x.cpp
+++ b/src/devices/cpu/pic16c62x/pic16c62x.cpp
@@ -53,16 +53,16 @@
\**************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "pic16c62x.h"
+#include "debugger.h"
-const device_type PIC16C620 = device_creator<pic16c620_device>;
-const device_type PIC16C620A = device_creator<pic16c620a_device>;
-const device_type PIC16C621 = device_creator<pic16c621_device>;
-const device_type PIC16C621A = device_creator<pic16c621a_device>;
-const device_type PIC16C622 = device_creator<pic16c622_device>;
-const device_type PIC16C622A = device_creator<pic16c622a_device>;
+DEFINE_DEVICE_TYPE(PIC16C620, pic16c620_device, "pic16c620", "PIC16C620")
+DEFINE_DEVICE_TYPE(PIC16C620A, pic16c620a_device, "pic16c620a", "PIC16C620A")
+DEFINE_DEVICE_TYPE(PIC16C621, pic16c621_device, "pic16c621", "PIC16C621")
+DEFINE_DEVICE_TYPE(PIC16C621A, pic16c621a_device, "pic16c621a", "PIC16C621A")
+DEFINE_DEVICE_TYPE(PIC16C622, pic16c622_device, "pic16c622", "PIC16C622")
+DEFINE_DEVICE_TYPE(PIC16C622A, pic16c622a_device, "pic16c622a", "PIC16C622A")
@@ -113,12 +113,12 @@ static ADDRESS_MAP_START( pic16c62xa_ram, AS_DATA, 8, pic16c62x_device )
ADDRESS_MAP_END
-pic16c62x_device::pic16c62x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int picmodel)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+pic16c62x_device::pic16c62x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int picmodel)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 16, program_width, -1
- , ( ( program_width == 9 ) ? ADDRESS_MAP_NAME(pic16c62x_rom_9) : ( ( program_width == 10 ) ? ADDRESS_MAP_NAME(pic16c62x_rom_10) : ADDRESS_MAP_NAME(pic16c62x_rom_11) )))
+ , ( ( program_width == 9 ) ? ADDRESS_MAP_NAME(pic16c62x_rom_9) : ( ( program_width == 10 ) ? ADDRESS_MAP_NAME(pic16c62x_rom_10) : ADDRESS_MAP_NAME(pic16c62x_rom_11) )))
, m_data_config("data", ENDIANNESS_LITTLE, 8, 8, 0
- , ( ( picmodel == 0x16C620 || picmodel == 0x16C621 ) ? ADDRESS_MAP_NAME(pic16c620_ram) : ( ( picmodel == 0x16C622 ) ? ADDRESS_MAP_NAME(pic16c622_ram) : ADDRESS_MAP_NAME(pic16c62xa_ram) ) ) )
+ , ( ( picmodel == 0x16C620 || picmodel == 0x16C621 ) ? ADDRESS_MAP_NAME(pic16c620_ram) : ( ( picmodel == 0x16C622 ) ? ADDRESS_MAP_NAME(pic16c622_ram) : ADDRESS_MAP_NAME(pic16c62xa_ram) ) ) )
, m_io_config("io", ENDIANNESS_LITTLE, 8, 5, 0)
, m_reset_vector(0x0)
, m_picmodel(picmodel)
@@ -128,32 +128,32 @@ pic16c62x_device::pic16c62x_device(const machine_config &mconfig, device_type ty
pic16c620_device::pic16c620_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c62x_device(mconfig, PIC16C620, "PIC16C620", tag, owner, clock, "pic16c620", 9, 0x16C620)
+ : pic16c62x_device(mconfig, PIC16C620, tag, owner, clock, 9, 0x16C620)
{
}
pic16c620a_device::pic16c620a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c62x_device(mconfig, PIC16C620A, "PIC16C620A", tag, owner, clock, "pic16c620a", 9, 0x16C620A)
+ : pic16c62x_device(mconfig, PIC16C620A, tag, owner, clock, 9, 0x16C620A)
{
}
pic16c621_device::pic16c621_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c62x_device(mconfig, PIC16C621, "PIC16C621", tag, owner, clock, "pic16c621", 9, 0x16C621)
+ : pic16c62x_device(mconfig, PIC16C621, tag, owner, clock, 9, 0x16C621)
{
}
pic16c621a_device::pic16c621a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c62x_device(mconfig, PIC16C621A, "PIC16C621A", tag, owner, clock, "pic16c621a", 9, 0x16C621A)
+ : pic16c62x_device(mconfig, PIC16C621A, tag, owner, clock, 9, 0x16C621A)
{
}
pic16c622_device::pic16c622_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c62x_device(mconfig, PIC16C622, "PIC16C622", tag, owner, clock, "pic16c622", 9, 0x16C622)
+ : pic16c62x_device(mconfig, PIC16C622, tag, owner, clock, 9, 0x16C622)
{
}
pic16c622a_device::pic16c622a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c62x_device(mconfig, PIC16C622A, "PIC16C622A", tag, owner, clock, "pic16c622a", 9, 0x16C622A)
+ : pic16c62x_device(mconfig, PIC16C622A, tag, owner, clock, 9, 0x16C622A)
{
}
diff --git a/src/devices/cpu/pic16c62x/pic16c62x.h b/src/devices/cpu/pic16c62x/pic16c62x.h
index 0c2c19f41be..b873d5e19b6 100644
--- a/src/devices/cpu/pic16c62x/pic16c62x.h
+++ b/src/devices/cpu/pic16c62x/pic16c62x.h
@@ -13,10 +13,10 @@
* *
\**************************************************************************/
-#pragma once
+#ifndef MAME_CPU_PIC16C62X_PIC16C62X_H
+#define MAME_CPU_PIC16C62X_PIC16C62X_H
-#ifndef __PIC16C62X_H__
-#define __PIC16C62X_H__
+#pragma once
@@ -42,21 +42,21 @@ enum
#define PIC16C62x_T0 0
-extern const device_type PIC16C620;
-extern const device_type PIC16C620A;
-//extern const device_type PIC16CR620A;
-extern const device_type PIC16C621;
-extern const device_type PIC16C621A;
-extern const device_type PIC16C622;
-extern const device_type PIC16C622A;
+DECLARE_DEVICE_TYPE(PIC16C620, pic16c620_device)
+DECLARE_DEVICE_TYPE(PIC16C620A, pic16c620a_device)
+//DECLARE_DEVICE_TYPE(PIC16CR620A, pic16cr620a_device)
+DECLARE_DEVICE_TYPE(PIC16C621, pic16c621_device)
+DECLARE_DEVICE_TYPE(PIC16C621A, pic16c621a_device)
+DECLARE_DEVICE_TYPE(PIC16C622, pic16c622_device)
+DECLARE_DEVICE_TYPE(PIC16C622A, pic16c622a_device)
class pic16c62x_device : public cpu_device
{
-public:
- // construction/destruction
- pic16c62x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int program_width, int picmodel);
protected:
+ // construction/destruction
+ pic16c62x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int picmodel);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -71,7 +71,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override
{
return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) );
}
@@ -253,4 +253,4 @@ public:
};
-#endif /* __PIC16C62X_H__ */
+#endif // MAME_CPU_PIC16C62X_PIC16C62X_H
diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h
index b5db869b111..dd27ba8799f 100644
--- a/src/devices/cpu/powerpc/ppc.h
+++ b/src/devices/cpu/powerpc/ppc.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_POWERPC_PPC_H
+#define MAME_CPU_POWERPC_PPC_H
-#ifndef __PPC_H__
-#define __PPC_H__
+#pragma once
#include "divtlb.h"
#include "cpu/drcfe.h"
@@ -209,10 +209,10 @@ protected:
PPC_MODEL_MPC8245 = 0x80811014 /* "Kahlua II" */
};
-public:
// construction/destruction
- ppc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int address_bits, int data_bits, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor, address_map_constructor internal_map);
+ ppc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int address_bits, int data_bits, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor, address_map_constructor internal_map);
+public:
static void set_bus_frequency(device_t &device, uint32_t bus_frequency) { downcast<ppc_device &>(device).c_bus_frequency = bus_frequency; }
void ppc_set_dcstore_callback(write32_delegate callback);
@@ -750,8 +750,6 @@ public:
class ppc4xx_device : public ppc_device
{
public:
- ppc4xx_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor);
-
void ppc4xx_spu_set_tx_handler(write8_delegate callback);
void ppc4xx_spu_receive_byte(uint8_t byteval);
@@ -764,6 +762,8 @@ public:
DECLARE_WRITE8_MEMBER( ppc4xx_spu_w );
protected:
+ ppc4xx_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor);
+
virtual uint32_t execute_input_lines() const override { return 5; }
virtual void execute_set_input(int inputnum, int state) override;
};
@@ -790,16 +790,15 @@ public:
};
-extern const device_type PPC601;
-extern const device_type PPC602;
-extern const device_type PPC603;
-extern const device_type PPC603E;
-extern const device_type PPC603R;
-extern const device_type PPC604;
-extern const device_type MPC8240;
-extern const device_type PPC403GA;
-extern const device_type PPC403GCX;
-extern const device_type PPC405GP;
-
+DECLARE_DEVICE_TYPE(PPC601, ppc601device)
+DECLARE_DEVICE_TYPE(PPC602, ppc602device)
+DECLARE_DEVICE_TYPE(PPC603, ppc603device)
+DECLARE_DEVICE_TYPE(PPC603E, ppc603e_device)
+DECLARE_DEVICE_TYPE(PPC603R, ppc603r_device)
+DECLARE_DEVICE_TYPE(PPC604, ppc604_device)
+DECLARE_DEVICE_TYPE(MPC8240, mpc8240_device)
+DECLARE_DEVICE_TYPE(PPC403GA, ppc403ga_device)
+DECLARE_DEVICE_TYPE(PPC403GCX, ppc403ga_device)
+DECLARE_DEVICE_TYPE(PPC405GP, ppc405gp_device)
-#endif /* __PPC_H__ */
+#endif // MAME_CPU_POWERPC_PPC_H
diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp
index 70c22b222dd..ef24a09fc45 100644
--- a/src/devices/cpu/powerpc/ppccom.cpp
+++ b/src/devices/cpu/powerpc/ppccom.cpp
@@ -195,20 +195,20 @@ static const uint8_t fcmp_cr_table_source[32] =
};
-const device_type PPC601 = device_creator<ppc601_device>;
-const device_type PPC602 = device_creator<ppc602_device>;
-const device_type PPC603 = device_creator<ppc603_device>;
-const device_type PPC603E = device_creator<ppc603e_device>;
-const device_type PPC603R = device_creator<ppc603r_device>;
-const device_type PPC604 = device_creator<ppc604_device>;
-const device_type MPC8240 = device_creator<mpc8240_device>;
-const device_type PPC403GA = device_creator<ppc403ga_device>;
-const device_type PPC403GCX = device_creator<ppc403gcx_device>;
-const device_type PPC405GP = device_creator<ppc405gp_device>;
-
-
-ppc_device::ppc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int address_bits, int data_bits, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor, address_map_constructor internal_map)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+DEFINE_DEVICE_TYPE(PPC601, ppc601_device, "ppc601", "PowerPC 601")
+DEFINE_DEVICE_TYPE(PPC602, ppc602_device, "ppc602", "PowerPC 602")
+DEFINE_DEVICE_TYPE(PPC603, ppc603_device, "ppc603", "PowerPC 603")
+DEFINE_DEVICE_TYPE(PPC603E, ppc603e_device, "ppc603e", "PowerPC 603E")
+DEFINE_DEVICE_TYPE(PPC603R, ppc603r_device, "ppc603r", "PowerPC 603R")
+DEFINE_DEVICE_TYPE(PPC604, ppc604_device, "ppc604", "PowerPC 604")
+DEFINE_DEVICE_TYPE(MPC8240, mpc8240_device, "mpc8240", "PowerPC MPC8240")
+DEFINE_DEVICE_TYPE(PPC403GA, ppc403ga_device, "ppc403ga", "PowerPC 403GA")
+DEFINE_DEVICE_TYPE(PPC403GCX, ppc403gcx_device, "ppc403gcx", "PowerPC 403GCX")
+DEFINE_DEVICE_TYPE(PPC405GP, ppc405gp_device, "ppc405gp", "PowerPC 405GP")
+
+
+ppc_device::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)
+ : cpu_device(mconfig, type, tag, owner, clock)
, device_vtlb_interface(mconfig, *this, AS_PROGRAM)
, m_program_config("program", ENDIANNESS_BIG, data_bits, address_bits, 0, internal_map)
, c_bus_frequency(0)
@@ -242,37 +242,37 @@ ppc_device::ppc_device(const machine_config &mconfig, device_type type, const ch
//}
ppc603_device::ppc603_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ppc_device(mconfig, PPC603, "PowerPC 603", tag, owner, clock, "ppc603", 32, 64, PPC_MODEL_603, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_603_MMU, 4, nullptr)
+ : ppc_device(mconfig, PPC603, tag, owner, clock, 32, 64, PPC_MODEL_603, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_603_MMU, 4, nullptr)
{
}
ppc603e_device::ppc603e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ppc_device(mconfig, PPC603E, "PowerPC 603e", tag, owner, clock, "ppc603e", 32, 64, PPC_MODEL_603E, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_603_MMU, 4, nullptr)
+ : ppc_device(mconfig, PPC603E, tag, owner, clock, 32, 64, PPC_MODEL_603E, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_603_MMU, 4, nullptr)
{
}
ppc603r_device::ppc603r_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ppc_device(mconfig, PPC603R, "PowerPC 603R", tag, owner, clock, "ppc603r", 32, 64, PPC_MODEL_603R, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_603_MMU, 4, nullptr)
+ : ppc_device(mconfig, PPC603R, tag, owner, clock, 32, 64, PPC_MODEL_603R, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_603_MMU, 4, nullptr)
{
}
ppc602_device::ppc602_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ppc_device(mconfig, PPC602, "PowerPC 602", tag, owner, clock, "ppc602", 32, 64, PPC_MODEL_602, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_603_MMU, 4, nullptr)
+ : ppc_device(mconfig, PPC602, tag, owner, clock, 32, 64, PPC_MODEL_602, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_603_MMU, 4, nullptr)
{
}
mpc8240_device::mpc8240_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ppc_device(mconfig, MPC8240, "PowerPC MPC8240", tag, owner, clock, "mpc8240", 32, 64, PPC_MODEL_MPC8240, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_603_MMU, 4/* unknown */, nullptr)
+ : ppc_device(mconfig, MPC8240, tag, owner, clock, 32, 64, PPC_MODEL_MPC8240, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_603_MMU, 4/* unknown */, nullptr)
{
}
ppc601_device::ppc601_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ppc_device(mconfig, PPC601, "PowerPC 601", tag, owner, clock, "ppc601", 32, 64, PPC_MODEL_601, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_MFIOC | PPCCAP_601BAT, 0/* no TB */, nullptr)
+ : ppc_device(mconfig, PPC601, tag, owner, clock, 32, 64, PPC_MODEL_601, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_MFIOC | PPCCAP_601BAT, 0/* no TB */, nullptr)
{
}
ppc604_device::ppc604_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ppc_device(mconfig, PPC604, "PowerPC 604", tag, owner, clock, "ppc604", 32, 64, PPC_MODEL_604, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_604_MMU, 4, nullptr)
+ : ppc_device(mconfig, PPC604, tag, owner, clock, 32, 64, PPC_MODEL_604, PPCCAP_OEA | PPCCAP_VEA | PPCCAP_FPU | PPCCAP_MISALIGNED | PPCCAP_604_MMU, 4, nullptr)
{
}
@@ -280,23 +280,23 @@ static ADDRESS_MAP_START( internal_ppc4xx, AS_PROGRAM, 32, ppc4xx_device )
AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE8(ppc4xx_spu_r, ppc4xx_spu_w, 0xffffffff)
ADDRESS_MAP_END
-ppc4xx_device::ppc4xx_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor)
- : ppc_device(mconfig, type, name, tag, owner, clock, shortname, 31, 32, flavor, cap, tb_divisor, ADDRESS_MAP_NAME(internal_ppc4xx))
+ppc4xx_device::ppc4xx_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor)
+ : ppc_device(mconfig, type, tag, owner, clock, 31, 32, flavor, cap, tb_divisor, ADDRESS_MAP_NAME(internal_ppc4xx))
{
}
ppc403ga_device::ppc403ga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ppc4xx_device(mconfig, PPC403GA, "PowerPC 403GA", tag, owner, clock, "ppc403ga", PPC_MODEL_403GA, PPCCAP_4XX, 1)
+ : ppc4xx_device(mconfig, PPC403GA, tag, owner, clock, PPC_MODEL_403GA, PPCCAP_4XX, 1)
{
}
ppc403gcx_device::ppc403gcx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ppc4xx_device(mconfig, PPC403GCX, "PowerPC 403GCX", tag, owner, clock, "ppc403gcx", PPC_MODEL_403GCX, PPCCAP_4XX, 1)
+ : ppc4xx_device(mconfig, PPC403GCX, tag, owner, clock, PPC_MODEL_403GCX, PPCCAP_4XX, 1)
{
}
ppc405gp_device::ppc405gp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ppc4xx_device(mconfig, PPC405GP, "PowerPC 405GP", tag, owner, clock, "ppc405gp", PPC_MODEL_405GP, PPCCAP_4XX | PPCCAP_VEA, 1)
+ : ppc4xx_device(mconfig, PPC405GP, tag, owner, clock, PPC_MODEL_405GP, PPCCAP_4XX | PPCCAP_VEA, 1)
{
}
diff --git a/src/devices/cpu/pps4/pps4.cpp b/src/devices/cpu/pps4/pps4.cpp
index cf7acd70a8d..57865f58659 100644
--- a/src/devices/cpu/pps4/pps4.cpp
+++ b/src/devices/cpu/pps4/pps4.cpp
@@ -77,23 +77,18 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "pps4.h"
+#include "debugger.h"
#define VERBOSE 0 //!< set to 1 to log certain instruction conditions
+#include "logmacro.h"
-#if VERBOSE
-#define LOG(x) logerror x
-#else
-#define LOG(x)
-#endif
-
-const device_type PPS4 = device_creator<pps4_device>;
-const device_type PPS4_2 = device_creator<pps4_2_device>;
+DEFINE_DEVICE_TYPE(PPS4, pps4_device, "pps4", "PPS4-4")
+DEFINE_DEVICE_TYPE(PPS4_2, pps4_2_device, "pps4_2", "PPS-4/2")
-pps4_device::pps4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *file)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, file)
+pps4_device::pps4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 12)
, m_data_config("data", ENDIANNESS_LITTLE, 8, 12) // 4bit RAM
, m_io_config("io", ENDIANNESS_LITTLE, 8, 8) // 4bit IO
@@ -104,12 +99,12 @@ pps4_device::pps4_device(const machine_config &mconfig, device_type type, const
}
pps4_device::pps4_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : pps4_device(mconfig, PPS4, "PPS-4", tag, owner, clock, "pps4", __FILE__)
+ : pps4_device(mconfig, PPS4, tag, owner, clock)
{
}
pps4_2_device::pps4_2_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : pps4_device(mconfig, PPS4_2, "PPS-4/2", tag, owner, clock, "pps4_2", __FILE__)
+ : pps4_device(mconfig, PPS4_2, tag, owner, clock)
{
}
@@ -616,7 +611,7 @@ void pps4_device::iLDI()
{
// previous LDI instruction?
if (0x70 == (m_Ip & 0xf0)) {
- LOG(("%s: skip prev:%02x op:%02x\n", __FUNCTION__, m_Ip, m_I1));
+ LOG("%s: skip prev:%02x op:%02x\n", __FUNCTION__, m_Ip, m_I1);
return;
}
m_A = ~m_I1 & 15;
@@ -863,7 +858,7 @@ void pps4_device::iLB()
{
// previous LB or LBL instruction?
if (0xc0 == (m_Ip & 0xf0) || 0x00 == m_Ip) {
- LOG(("%s: skip prev:%02x op:%02x\n", __FUNCTION__, m_Ip, m_I1));
+ LOG("%s: skip prev:%02x op:%02x\n", __FUNCTION__, m_Ip, m_I1);
return;
}
m_SB = m_SA;
@@ -905,7 +900,7 @@ void pps4_device::iLBL()
m_I2 = ARG();
// previous LB or LBL instruction?
if (0xc0 == (m_Ip & 0xf0) || 0x00 == m_Ip) {
- LOG(("%s: skip prev:%02x op:%02x\n", __FUNCTION__, m_Ip, m_I1));
+ LOG("%s: skip prev:%02x op:%02x\n", __FUNCTION__, m_Ip, m_I1);
return;
}
m_B = ~m_I2 & 255; // Note: immediate is 1's complement
@@ -931,7 +926,7 @@ void pps4_device::iINCB()
u8 bl = m_B & 15;
bl = (bl + 1) & 15;
if (0 == bl) {
- LOG(("%s: skip BL=%x\n", __FUNCTION__, bl));
+ LOG("%s: skip BL=%x\n", __FUNCTION__, bl);
m_Skip = 1;
}
m_B = (m_B & ~15) | bl;
@@ -957,7 +952,7 @@ void pps4_device::iDECB()
u8 bl = m_B & 15;
bl = (bl - 1) & 15;
if (15 == bl) {
- LOG(("%s: skip BL=%x\n", __FUNCTION__, bl));
+ LOG("%s: skip BL=%x\n", __FUNCTION__, bl);
m_Skip = 1;
}
m_B = (m_B & ~15) | bl;
@@ -981,7 +976,7 @@ void pps4_device::iDECB()
void pps4_device::iT()
{
const u16 p = (m_P & ~63) | (m_I1 & 63);
- LOG(("%s: P=%03x I=%02x -> P=%03x\n", __FUNCTION__, m_P, m_I1, p));
+ LOG("%s: P=%03x I=%02x -> P=%03x\n", __FUNCTION__, m_P, m_I1, p);
m_P = p;
}
@@ -1235,9 +1230,9 @@ void pps4_device::iIOL()
u8 ac = (~m_A & 15);
m_I2 = ARG();
m_io->write_byte(m_I2, ac);
- LOG(("%s: port:%02x <- %x\n", __FUNCTION__, m_I2, ac));
+ LOG("%s: port:%02x <- %x\n", __FUNCTION__, m_I2, ac);
ac = m_io->read_byte(m_I2) & 15;
- LOG(("%s: port:%02x -> %x\n", __FUNCTION__, m_I2, ac));
+ LOG("%s: port:%02x -> %x\n", __FUNCTION__, m_I2, ac);
m_A = ~ac & 15;
}
@@ -1339,7 +1334,7 @@ void pps4_device::execute_one()
m_I1 = ROP();
if (m_Skip) {
m_Skip = 0;
- LOG(("%s: skip op:%02x\n", __FUNCTION__, m_I1));
+ LOG("%s: skip op:%02x\n", __FUNCTION__, m_I1);
return;
}
switch (m_I1) {
diff --git a/src/devices/cpu/pps4/pps4.h b/src/devices/cpu/pps4/pps4.h
index c9878028063..59493f89c7b 100644
--- a/src/devices/cpu/pps4/pps4.h
+++ b/src/devices/cpu/pps4/pps4.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller
-#ifndef __PPS4_H__
-#define __PPS4_H__
+#ifndef MAME_CPU_PPS4_PPS4_H
+#define MAME_CPU_PPS4_PPS4_H
+
+#pragma once
/***************************************************************************
@@ -39,8 +41,8 @@ enum
// DEVICE TYPE DEFINITIONS
//**************************************************************************
-extern const device_type PPS4;
-extern const device_type PPS4_2;
+DECLARE_DEVICE_TYPE(PPS4, pps4_device)
+DECLARE_DEVICE_TYPE(PPS4_2, pps4_2_device)
/***************************************************************************
FUNCTION PROTOTYPES
@@ -51,18 +53,17 @@ class pps4_device : public cpu_device
public:
// construction/destruction
pps4_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
-protected:
- pps4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *file);
-public:
// static configuration helpers
- template<class _Object> static devcb_base &set_dia_cb(device_t &device, _Object object) { return downcast<pps4_device &>(device).m_dia_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_dib_cb(device_t &device, _Object object) { return downcast<pps4_device &>(device).m_dib_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_do_cb(device_t &device, _Object object) { return downcast<pps4_device &>(device).m_do_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_dia_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_dia_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dib_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_dib_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_do_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_do_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER(address_bus_r);
protected:
+ pps4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -75,7 +76,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override
{
return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) );
}
@@ -88,7 +89,6 @@ protected:
virtual u32 disasm_max_opcode_bytes() const override { return 2; }
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const u8 *oprom, const u8 *opram, u32 options) override;
-protected:
address_space_config m_program_config;
address_space_config m_data_config;
address_space_config m_io_config;
@@ -206,4 +206,4 @@ private:
u8 m_DIO; //!< DIO clamp
};
-#endif // __PPS4_H__
+#endif // MAME_CPU_PPS4_PPS4_H
diff --git a/src/devices/cpu/psx/dma.cpp b/src/devices/cpu/psx/dma.cpp
index 44cca2aa00d..5ec8e29fdbd 100644
--- a/src/devices/cpu/psx/dma.cpp
+++ b/src/devices/cpu/psx/dma.cpp
@@ -25,10 +25,10 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, c
}
}
-const device_type PSX_DMA = device_creator<psxdma_device>;
+DEFINE_DEVICE_TYPE(PSX_DMA, psxdma_device, "psxdma", "Sony PSX DMA")
psxdma_device::psxdma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PSX_DMA, "Sony PSX DMA", tag, owner, clock, "psxdma", __FILE__), m_ram( ), m_ramsize(0), m_dpcp(0), m_dicr(0),
+ device_t(mconfig, PSX_DMA, tag, owner, clock), m_ram(), m_ramsize(0), m_dpcp(0), m_dicr(0),
m_irq_handler(*this)
{
}
@@ -201,12 +201,12 @@ void psxdma_device::device_timer(emu_timer &timer, device_timer_id id, int param
dma_finished(id);
}
-void psxdma_device::install_read_handler( int index, psx_dma_read_delegate p_fn_dma_read )
+void psxdma_device::install_read_handler( int index, read_delegate p_fn_dma_read )
{
m_channel[ index ].fn_read = p_fn_dma_read;
}
-void psxdma_device::install_write_handler( int index, psx_dma_read_delegate p_fn_dma_write )
+void psxdma_device::install_write_handler( int index, write_delegate p_fn_dma_write )
{
m_channel[ index ].fn_write = p_fn_dma_write;
}
diff --git a/src/devices/cpu/psx/dma.h b/src/devices/cpu/psx/dma.h
index eeb68ac0161..ba10e80903c 100644
--- a/src/devices/cpu/psx/dma.h
+++ b/src/devices/cpu/psx/dma.h
@@ -7,42 +7,30 @@
*
*/
-#pragma once
+#ifndef MAME_CPU_PSX_DMA_H
+#define MAME_CPU_PSX_DMA_H
-#ifndef __PSXDMA_H__
-#define __PSXDMA_H__
+#pragma once
-extern const device_type PSX_DMA;
+DECLARE_DEVICE_TYPE(PSX_DMA, psxdma_device)
#define MCFG_PSX_DMA_IRQ_HANDLER(_devcb) \
devcb = &psxdma_device::set_irq_handler(*device, DEVCB_##_devcb);
-typedef delegate<void (uint32_t *, uint32_t, int32_t)> psx_dma_read_delegate;
-typedef delegate<void (uint32_t *, uint32_t, int32_t)> psx_dma_write_delegate;
-
-struct psx_dma_channel
-{
- uint32_t n_base;
- uint32_t n_blockcontrol;
- uint32_t n_channelcontrol;
- emu_timer *timer;
- psx_dma_read_delegate fn_read;
- psx_dma_write_delegate fn_write;
- uint32_t n_ticks;
- uint32_t b_running;
-};
-
class psxdma_device : public device_t
{
public:
+ typedef delegate<void (uint32_t *, uint32_t, int32_t)> read_delegate;
+ typedef delegate<void (uint32_t *, uint32_t, int32_t)> write_delegate;
+
psxdma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<psxdma_device &>(device).m_irq_handler.set_callback(object); }
- void install_read_handler( int n_channel, psx_dma_read_delegate p_fn_dma_read );
- void install_write_handler( int n_channel, psx_dma_read_delegate p_fn_dma_write );
+ void install_read_handler( int n_channel, read_delegate p_fn_dma_read );
+ void install_write_handler( int n_channel, write_delegate p_fn_dma_write );
DECLARE_WRITE32_MEMBER( write );
DECLARE_READ32_MEMBER( read );
@@ -57,6 +45,18 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ struct psx_dma_channel
+ {
+ uint32_t n_base;
+ uint32_t n_blockcontrol;
+ uint32_t n_channelcontrol;
+ emu_timer *timer;
+ read_delegate fn_read;
+ write_delegate fn_write;
+ uint32_t n_ticks;
+ uint32_t b_running;
+ };
+
void dma_start_timer( int n_channel, uint32_t n_ticks );
void dma_stop_timer( int n_channel );
void dma_timer_adjust( int n_channel );
diff --git a/src/devices/cpu/psx/gte.h b/src/devices/cpu/psx/gte.h
index a577c317718..33755043704 100644
--- a/src/devices/cpu/psx/gte.h
+++ b/src/devices/cpu/psx/gte.h
@@ -7,10 +7,10 @@
*
*/
-#pragma once
+#ifndef MAME_CPU_PSX_GTE_H
+#define MAME_CPU_PSX_GTE_H
-#ifndef __PSXGTE_H__
-#define __PSXGTE_H__
+#pragma once
#define GTE_SF( op ) ( ( op >> 19 ) & 1 )
@@ -110,4 +110,4 @@ protected:
int64_t m_mac3;
};
-#endif
+#endif // MAME_CPU_PSX_GTE_H
diff --git a/src/devices/cpu/psx/irq.cpp b/src/devices/cpu/psx/irq.cpp
index a06e83866a9..94aafc73b2f 100644
--- a/src/devices/cpu/psx/irq.cpp
+++ b/src/devices/cpu/psx/irq.cpp
@@ -28,10 +28,10 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, c
}
}
-const device_type PSX_IRQ = device_creator<psxirq_device>;
+DEFINE_DEVICE_TYPE(PSX_IRQ, psxirq_device, "psxirq", "Sony PSX IRQ")
psxirq_device::psxirq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PSX_IRQ, "Sony PSX IRQ", tag, owner, clock, "psxirq", __FILE__), n_irqdata(0), n_irqmask(0),
+ device_t(mconfig, PSX_IRQ, tag, owner, clock), n_irqdata(0), n_irqmask(0),
m_irq_handler(*this)
{
}
diff --git a/src/devices/cpu/psx/irq.h b/src/devices/cpu/psx/irq.h
index d90b0b1365c..5a4f91b6aa7 100644
--- a/src/devices/cpu/psx/irq.h
+++ b/src/devices/cpu/psx/irq.h
@@ -7,10 +7,10 @@
*
*/
-#pragma once
+#ifndef MAME_CPU_PSX_IRQ_H
+#define MAME_CPU_PSX_IRQ_H
-#ifndef __PSXIRQ_H__
-#define __PSXIRQ_H__
+#pragma once
extern const device_type PSX_IRQ;
@@ -24,7 +24,7 @@ public:
psxirq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<psxirq_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<psxirq_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ32_MEMBER( read );
DECLARE_WRITE32_MEMBER( write );
@@ -56,4 +56,4 @@ private:
devcb_write_line m_irq_handler;
};
-#endif
+#endif // MAME_CPU_PSX_IRQ_H
diff --git a/src/devices/cpu/psx/mdec.cpp b/src/devices/cpu/psx/mdec.cpp
index 6398ecc0160..6a177255da9 100644
--- a/src/devices/cpu/psx/mdec.cpp
+++ b/src/devices/cpu/psx/mdec.cpp
@@ -10,8 +10,8 @@
*/
#include "emu.h"
-#include "dma.h"
#include "mdec.h"
+#include "dma.h"
#define VERBOSE_LEVEL ( 0 )
@@ -28,10 +28,10 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, c
}
}
-const device_type PSX_MDEC = device_creator<psxmdec_device>;
+DEFINE_DEVICE_TYPE(PSX_MDEC, psxmdec_device, "psxmdec", "Sony PSX MDEC")
psxmdec_device::psxmdec_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PSX_MDEC, "Sony PSX MDEC", tag, owner, clock, "psxmdec", __FILE__), n_decoded(0), n_offset(0), n_0_command(0), n_0_address(0), n_0_size(0), n_1_command(0), n_1_status(0)
+ : device_t(mconfig, PSX_MDEC, tag, owner, clock), n_decoded(0), n_offset(0), n_0_command(0), n_0_address(0), n_0_size(0), n_1_command(0), n_1_status(0)
{
}
@@ -94,7 +94,7 @@ static inline uint16_t psxreadword( uint32_t *p_n_psxram, uint32_t n_address )
return *( (uint16_t *)( (uint8_t *)p_n_psxram + WORD_XOR_LE( n_address ) ) );
}
-static const uint32_t m_p_n_mdec_zigzag[ DCTSIZE2 ] =
+const uint32_t psxmdec_device::m_p_n_mdec_zigzag[ DCTSIZE2 ] =
{
0, 1, 8, 16, 9, 2, 3, 10,
17, 24, 32, 25, 18, 11, 4, 5,
diff --git a/src/devices/cpu/psx/mdec.h b/src/devices/cpu/psx/mdec.h
index 7dc2c20fb5d..941ba2f2f58 100644
--- a/src/devices/cpu/psx/mdec.h
+++ b/src/devices/cpu/psx/mdec.h
@@ -7,18 +7,13 @@
*
*/
-#pragma once
-
-#ifndef __PSXMDEC_H__
-#define __PSXMDEC_H__
+#ifndef MAME_CPU_PSX_MDEC_H
+#define MAME_CPU_PSX_MDEC_H
+#pragma once
-extern const device_type PSX_MDEC;
-
-#define DCTSIZE ( 8 )
-#define DCTSIZE2 ( DCTSIZE * DCTSIZE )
-#define MDEC_COS_PRECALC_BITS ( 21 )
+DECLARE_DEVICE_TYPE(PSX_MDEC, psxmdec_device)
class psxmdec_device : public device_t
{
@@ -37,6 +32,13 @@ protected:
virtual void device_post_load() override;
private:
+ static constexpr unsigned DCTSIZE = 8;
+ static constexpr unsigned DCTSIZE2 = DCTSIZE * DCTSIZE;
+
+ static constexpr unsigned MDEC_COS_PRECALC_BITS = 21;
+
+ static const uint32_t m_p_n_mdec_zigzag[ DCTSIZE2 ];
+
void mdec_cos_precalc();
void mdec_idct( int32_t *p_n_src, int32_t *p_n_dst );
uint32_t mdec_unpack( uint32_t *ram, uint32_t n_address );
@@ -72,4 +74,4 @@ private:
int32_t m_p_n_unpacked[ DCTSIZE2 * 6 * 2 ];
};
-#endif
+#endif // MAME_CPU_PSX_MDEC_H
diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp
index 6170198eef9..5c8e2ef6304 100644
--- a/src/devices/cpu/psx/psx.cpp
+++ b/src/devices/cpu/psx/psx.cpp
@@ -72,6 +72,8 @@
#include "sound/spu.h"
#include "debugger.h"
+#include "psxdefs.h"
+
#define LOG_BIOSCALL ( 0 )
#define EXC_INT ( 0 )
@@ -165,12 +167,12 @@ static const char *const delayn[] =
};
// device type definition
-const device_type CXD8530AQ = device_creator<cxd8530aq_device>;
-const device_type CXD8530BQ = device_creator<cxd8530bq_device>;
-const device_type CXD8530CQ = device_creator<cxd8530cq_device>;
-const device_type CXD8661R = device_creator<cxd8661r_device>;
-const device_type CXD8606BQ = device_creator<cxd8606bq_device>;
-const device_type CXD8606CQ = device_creator<cxd8606cq_device>;
+DEFINE_DEVICE_TYPE(CXD8530AQ, cxd8530aq_device, "cxd8530aq", "CXD8530AQ")
+DEFINE_DEVICE_TYPE(CXD8530BQ, cxd8530bq_device, "cxd8530bq", "CXD8530BQ")
+DEFINE_DEVICE_TYPE(CXD8530CQ, cxd8530cq_device, "cxd8530cq", "CXD8530CQ")
+DEFINE_DEVICE_TYPE(CXD8661R, cxd8661r_device, "cxd8661r", "CXD8661R")
+DEFINE_DEVICE_TYPE(CXD8606BQ, cxd8606bq_device, "cxd8606bq", "CXD8606BQ")
+DEFINE_DEVICE_TYPE(CXD8606CQ, cxd8606cq_device, "cxd8606cq", "CXD8606CQ")
static const uint32_t mtc0_writemask[]=
{
@@ -1747,8 +1749,8 @@ ADDRESS_MAP_END
// psxcpu_device - constructor
//-------------------------------------------------
-psxcpu_device::psxcpu_device( const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source ) :
- cpu_device( mconfig, type, name, tag, owner, clock, shortname, source ),
+psxcpu_device::psxcpu_device( const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock ) :
+ cpu_device( mconfig, type, tag, owner, clock ),
m_program_config( "program", ENDIANNESS_LITTLE, 32, 32, 0, ADDRESS_MAP_NAME( psxcpu_internal_map ) ),
m_gpu_read_handler( *this ),
m_gpu_write_handler( *this ),
@@ -1762,32 +1764,32 @@ psxcpu_device::psxcpu_device( const machine_config &mconfig, device_type type, c
}
cxd8530aq_device::cxd8530aq_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : psxcpu_device( mconfig, CXD8530AQ, "CXD8530AQ", tag, owner, clock, "cxd8530aq", __FILE__ )
+ : psxcpu_device( mconfig, CXD8530AQ, tag, owner, clock)
{
}
cxd8530bq_device::cxd8530bq_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : psxcpu_device( mconfig, CXD8530BQ, "CXD8530BQ", tag, owner, clock, "cxd8530bq", __FILE__ )
+ : psxcpu_device( mconfig, CXD8530BQ, tag, owner, clock)
{
}
cxd8530cq_device::cxd8530cq_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : psxcpu_device( mconfig, CXD8530CQ, "CXD8530CQ", tag, owner, clock, "cxd8530cq", __FILE__ )
+ : psxcpu_device( mconfig, CXD8530CQ, tag, owner, clock)
{
}
cxd8661r_device::cxd8661r_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : psxcpu_device( mconfig, CXD8661R, "CXD8661R", tag, owner, clock, "cxd8661r", __FILE__ )
+ : psxcpu_device( mconfig, CXD8661R, tag, owner, clock)
{
}
cxd8606bq_device::cxd8606bq_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : psxcpu_device( mconfig, CXD8606BQ, "CXD8606BQ", tag, owner, clock, "cxd8606bq", __FILE__ )
+ : psxcpu_device( mconfig, CXD8606BQ, tag, owner, clock)
{
}
cxd8606cq_device::cxd8606cq_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : psxcpu_device( mconfig, CXD8606CQ, "CXD8606CQ", tag, owner, clock, "cxd8606cq", __FILE__ )
+ : psxcpu_device( mconfig, CXD8606CQ, tag, owner, clock)
{
}
@@ -3391,8 +3393,8 @@ static MACHINE_CONFIG_FRAGMENT( psx )
MCFG_PSX_DMA_IRQ_HANDLER( DEVWRITELINE("irq", psxirq_device, intin3 ) )
MCFG_DEVICE_ADD( "mdec", PSX_MDEC, 0 )
- MCFG_PSX_DMA_CHANNEL_WRITE( DEVICE_SELF, 0, psx_dma_write_delegate(&psxmdec_device::dma_write, (psxmdec_device *) device ) )
- MCFG_PSX_DMA_CHANNEL_READ( DEVICE_SELF, 1, psx_dma_read_delegate(&psxmdec_device::dma_read, (psxmdec_device *) device ) )
+ MCFG_PSX_DMA_CHANNEL_WRITE( DEVICE_SELF, 0, psxdma_device::write_delegate(&psxmdec_device::dma_write, (psxmdec_device *) device ) )
+ MCFG_PSX_DMA_CHANNEL_READ( DEVICE_SELF, 1, psxdma_device::read_delegate(&psxmdec_device::dma_read, (psxmdec_device *) device ) )
MCFG_DEVICE_ADD( "rcnt", PSX_RCNT, 0 )
MCFG_PSX_RCNT_IRQ0_HANDLER( DEVWRITELINE( "irq", psxirq_device, intin4 ) )
diff --git a/src/devices/cpu/psx/psx.h b/src/devices/cpu/psx/psx.h
index 8bf4a5d12b3..1dc04cd6c3c 100644
--- a/src/devices/cpu/psx/psx.h
+++ b/src/devices/cpu/psx/psx.h
@@ -7,8 +7,8 @@
*
*/
-#ifndef MAME_DEVICES_CPU_PSX_PSX_H
-#define MAME_DEVICES_CPU_PSX_PSX_H
+#ifndef MAME_CPU_PSX_PSX_H
+#define MAME_CPU_PSX_PSX_H
#pragma once
@@ -22,11 +22,6 @@
// CONSTANTS
//**************************************************************************
-// cache
-
-#define ICACHE_ENTRIES ( 0x400 )
-#define DCACHE_ENTRIES ( 0x100 )
-
// interrupts
#define PSXCPU_IRQ0 ( 0 )
@@ -151,12 +146,12 @@ class psxcpu_device : public cpu_device, psxcpu_state
{
public:
// static configuration helpers
- template<class _Object> static devcb_base &set_gpu_read_handler(device_t &device, _Object object) { return downcast<psxcpu_device &>(device).m_gpu_read_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_gpu_write_handler(device_t &device, _Object object) { return downcast<psxcpu_device &>(device).m_gpu_write_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_spu_read_handler(device_t &device, _Object object) { return downcast<psxcpu_device &>(device).m_spu_read_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_spu_write_handler(device_t &device, _Object object) { return downcast<psxcpu_device &>(device).m_spu_write_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_cd_read_handler(device_t &device, _Object object) { return downcast<psxcpu_device &>(device).m_cd_read_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_cd_write_handler(device_t &device, _Object object) { return downcast<psxcpu_device &>(device).m_cd_write_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_gpu_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_gpu_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gpu_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_gpu_write_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_spu_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_spu_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_spu_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_spu_write_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cd_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_cd_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cd_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_cd_write_handler.set_callback(std::forward<Object>(cb)); }
// public interfaces
DECLARE_WRITE32_MEMBER( berr_w );
@@ -195,7 +190,10 @@ public:
void set_disable_rom_berr(bool mode);
protected:
- psxcpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ static constexpr unsigned ICACHE_ENTRIES = 0x400;
+ static constexpr unsigned DCACHE_ENTRIES = 0x100;
+
+ psxcpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -391,132 +389,14 @@ public:
};
// device type definition
-extern const device_type CXD8530AQ;
-extern const device_type CXD8530BQ;
-extern const device_type CXD8530CQ;
-extern const device_type CXD8661R;
-extern const device_type CXD8606BQ;
-extern const device_type CXD8606CQ;
-
-
-
-#define PSXCPU_DELAYR_PC ( 32 )
-#define PSXCPU_DELAYR_NOTPC ( 33 )
-
-#define PSXCPU_BYTE_EXTEND( a ) ( (int32_t)(int8_t)a )
-#define PSXCPU_WORD_EXTEND( a ) ( (int32_t)(int16_t)a )
-
-#define INS_OP( op ) ( ( op >> 26 ) & 63 )
-#define INS_RS( op ) ( ( op >> 21 ) & 31 )
-#define INS_RT( op ) ( ( op >> 16 ) & 31 )
-#define INS_IMMEDIATE( op ) ( op & 0xffff )
-#define INS_TARGET( op ) ( op & 0x3ffffff )
-#define INS_RD( op ) ( ( op >> 11 ) & 31 )
-#define INS_SHAMT( op ) ( ( op >> 6 ) & 31 )
-#define INS_FUNCT( op ) ( op & 63 )
-#define INS_CODE( op ) ( ( op >> 6 ) & 0xfffff )
-#define INS_CO( op ) ( ( op >> 25 ) & 1 )
-#define INS_COFUN( op ) ( op & 0x1ffffff )
-#define INS_CF( op ) ( op & 31 )
-#define INS_BC( op ) ( ( op >> 16 ) & 1 )
-#define INS_RT_REGIMM( op ) ( ( op >> 16 ) & 1 )
-
-#define OP_SPECIAL ( 0 )
-#define OP_REGIMM ( 1 )
-#define OP_J ( 2 )
-#define OP_JAL ( 3 )
-#define OP_BEQ ( 4 )
-#define OP_BNE ( 5 )
-#define OP_BLEZ ( 6 )
-#define OP_BGTZ ( 7 )
-#define OP_ADDI ( 8 )
-#define OP_ADDIU ( 9 )
-#define OP_SLTI ( 10 )
-#define OP_SLTIU ( 11 )
-#define OP_ANDI ( 12 )
-#define OP_ORI ( 13 )
-#define OP_XORI ( 14 )
-#define OP_LUI ( 15 )
-#define OP_COP0 ( 16 )
-#define OP_COP1 ( 17 )
-#define OP_COP2 ( 18 )
-#define OP_COP3 ( 19 )
-#define OP_LB ( 32 )
-#define OP_LH ( 33 )
-#define OP_LWL ( 34 )
-#define OP_LW ( 35 )
-#define OP_LBU ( 36 )
-#define OP_LHU ( 37 )
-#define OP_LWR ( 38 )
-#define OP_SB ( 40 )
-#define OP_SH ( 41 )
-#define OP_SWL ( 42 )
-#define OP_SW ( 43 )
-#define OP_SWR ( 46 )
-#define OP_LWC0 ( 48 )
-#define OP_LWC1 ( 49 )
-#define OP_LWC2 ( 50 )
-#define OP_LWC3 ( 51 )
-#define OP_SWC0 ( 56 )
-#define OP_SWC1 ( 57 )
-#define OP_SWC2 ( 58 )
-#define OP_SWC3 ( 59 )
-
-/* OP_SPECIAL */
-#define FUNCT_SLL ( 0 )
-#define FUNCT_SRL ( 2 )
-#define FUNCT_SRA ( 3 )
-#define FUNCT_SLLV ( 4 )
-#define FUNCT_SRLV ( 6 )
-#define FUNCT_SRAV ( 7 )
-#define FUNCT_JR ( 8 )
-#define FUNCT_JALR ( 9 )
-#define FUNCT_SYSCALL ( 12 )
-#define FUNCT_BREAK ( 13 )
-#define FUNCT_MFHI ( 16 )
-#define FUNCT_MTHI ( 17 )
-#define FUNCT_MFLO ( 18 )
-#define FUNCT_MTLO ( 19 )
-#define FUNCT_MULT ( 24 )
-#define FUNCT_MULTU ( 25 )
-#define FUNCT_DIV ( 26 )
-#define FUNCT_DIVU ( 27 )
-#define FUNCT_ADD ( 32 )
-#define FUNCT_ADDU ( 33 )
-#define FUNCT_SUB ( 34 )
-#define FUNCT_SUBU ( 35 )
-#define FUNCT_AND ( 36 )
-#define FUNCT_OR ( 37 )
-#define FUNCT_XOR ( 38 )
-#define FUNCT_NOR ( 39 )
-#define FUNCT_SLT ( 42 )
-#define FUNCT_SLTU ( 43 )
-
-/* OP_REGIMM */
-#define RT_BLTZ ( 0 )
-#define RT_BGEZ ( 1 )
-#define RT_BLTZAL ( 16 )
-#define RT_BGEZAL ( 17 )
-
-/* OP_COP0/OP_COP1/OP_COP2 */
-#define RS_MFC ( 0 )
-#define RS_CFC ( 2 )
-#define RS_MTC ( 4 )
-#define RS_CTC ( 6 )
-#define RS_BC ( 8 )
-#define RS_BC_ALT ( 12 )
-
-/* BC_BC */
-#define BC_BCF ( 0 )
-#define BC_BCT ( 1 )
-
-/* OP_COP0 */
-#define CF_TLBR ( 1 )
-#define CF_TLBWI ( 2 )
-#define CF_TLBWR ( 6 )
-#define CF_TLBP ( 8 )
-#define CF_RFE ( 16 )
+DECLARE_DEVICE_TYPE(CXD8530AQ, cxd8530aq_device)
+DECLARE_DEVICE_TYPE(CXD8530BQ, cxd8530bq_device)
+DECLARE_DEVICE_TYPE(CXD8530CQ, cxd8530cq_device)
+DECLARE_DEVICE_TYPE(CXD8661R, cxd8661r_device)
+DECLARE_DEVICE_TYPE(CXD8606BQ, cxd8606bq_device)
+DECLARE_DEVICE_TYPE(CXD8606CQ, cxd8606cq_device)
+
extern unsigned DasmPSXCPU(psxcpu_state *state, std::ostream &stream, uint32_t pc, const uint8_t *opram);
-#endif // MAME_DEVICES_CPU_PSX_PSX_H
+#endif // MAME_CPU_PSX_PSX_H
diff --git a/src/devices/cpu/psx/psxdasm.cpp b/src/devices/cpu/psx/psxdasm.cpp
index 7d65b097a86..2bb38b6d407 100644
--- a/src/devices/cpu/psx/psxdasm.cpp
+++ b/src/devices/cpu/psx/psxdasm.cpp
@@ -9,6 +9,9 @@
#include "psx.h"
#include "gte.h"
+#include "psxdefs.h"
+
+
static char *make_signed_hex_str_16( uint32_t value )
{
static char s_hex[ 20 ];
diff --git a/src/devices/cpu/psx/psxdefs.h b/src/devices/cpu/psx/psxdefs.h
new file mode 100644
index 00000000000..fde2456b515
--- /dev/null
+++ b/src/devices/cpu/psx/psxdefs.h
@@ -0,0 +1,126 @@
+// license:BSD-3-Clause
+// copyright-holders:smf
+#ifndef MAME_CPU_PSX_PSXDEFS_H
+#define MAME_CPU_PSX_PSXDEFS_H
+
+#pragma once
+
+
+#define PSXCPU_DELAYR_PC ( 32 )
+#define PSXCPU_DELAYR_NOTPC ( 33 )
+
+#define PSXCPU_BYTE_EXTEND( a ) ( (int32_t)(int8_t)a )
+#define PSXCPU_WORD_EXTEND( a ) ( (int32_t)(int16_t)a )
+
+#define INS_OP( op ) ( ( op >> 26 ) & 63 )
+#define INS_RS( op ) ( ( op >> 21 ) & 31 )
+#define INS_RT( op ) ( ( op >> 16 ) & 31 )
+#define INS_IMMEDIATE( op ) ( op & 0xffff )
+#define INS_TARGET( op ) ( op & 0x3ffffff )
+#define INS_RD( op ) ( ( op >> 11 ) & 31 )
+#define INS_SHAMT( op ) ( ( op >> 6 ) & 31 )
+#define INS_FUNCT( op ) ( op & 63 )
+#define INS_CODE( op ) ( ( op >> 6 ) & 0xfffff )
+#define INS_CO( op ) ( ( op >> 25 ) & 1 )
+#define INS_COFUN( op ) ( op & 0x1ffffff )
+#define INS_CF( op ) ( op & 31 )
+#define INS_BC( op ) ( ( op >> 16 ) & 1 )
+#define INS_RT_REGIMM( op ) ( ( op >> 16 ) & 1 )
+
+#define OP_SPECIAL ( 0 )
+#define OP_REGIMM ( 1 )
+#define OP_J ( 2 )
+#define OP_JAL ( 3 )
+#define OP_BEQ ( 4 )
+#define OP_BNE ( 5 )
+#define OP_BLEZ ( 6 )
+#define OP_BGTZ ( 7 )
+#define OP_ADDI ( 8 )
+#define OP_ADDIU ( 9 )
+#define OP_SLTI ( 10 )
+#define OP_SLTIU ( 11 )
+#define OP_ANDI ( 12 )
+#define OP_ORI ( 13 )
+#define OP_XORI ( 14 )
+#define OP_LUI ( 15 )
+#define OP_COP0 ( 16 )
+#define OP_COP1 ( 17 )
+#define OP_COP2 ( 18 )
+#define OP_COP3 ( 19 )
+#define OP_LB ( 32 )
+#define OP_LH ( 33 )
+#define OP_LWL ( 34 )
+#define OP_LW ( 35 )
+#define OP_LBU ( 36 )
+#define OP_LHU ( 37 )
+#define OP_LWR ( 38 )
+#define OP_SB ( 40 )
+#define OP_SH ( 41 )
+#define OP_SWL ( 42 )
+#define OP_SW ( 43 )
+#define OP_SWR ( 46 )
+#define OP_LWC0 ( 48 )
+#define OP_LWC1 ( 49 )
+#define OP_LWC2 ( 50 )
+#define OP_LWC3 ( 51 )
+#define OP_SWC0 ( 56 )
+#define OP_SWC1 ( 57 )
+#define OP_SWC2 ( 58 )
+#define OP_SWC3 ( 59 )
+
+/* OP_SPECIAL */
+#define FUNCT_SLL ( 0 )
+#define FUNCT_SRL ( 2 )
+#define FUNCT_SRA ( 3 )
+#define FUNCT_SLLV ( 4 )
+#define FUNCT_SRLV ( 6 )
+#define FUNCT_SRAV ( 7 )
+#define FUNCT_JR ( 8 )
+#define FUNCT_JALR ( 9 )
+#define FUNCT_SYSCALL ( 12 )
+#define FUNCT_BREAK ( 13 )
+#define FUNCT_MFHI ( 16 )
+#define FUNCT_MTHI ( 17 )
+#define FUNCT_MFLO ( 18 )
+#define FUNCT_MTLO ( 19 )
+#define FUNCT_MULT ( 24 )
+#define FUNCT_MULTU ( 25 )
+#define FUNCT_DIV ( 26 )
+#define FUNCT_DIVU ( 27 )
+#define FUNCT_ADD ( 32 )
+#define FUNCT_ADDU ( 33 )
+#define FUNCT_SUB ( 34 )
+#define FUNCT_SUBU ( 35 )
+#define FUNCT_AND ( 36 )
+#define FUNCT_OR ( 37 )
+#define FUNCT_XOR ( 38 )
+#define FUNCT_NOR ( 39 )
+#define FUNCT_SLT ( 42 )
+#define FUNCT_SLTU ( 43 )
+
+/* OP_REGIMM */
+#define RT_BLTZ ( 0 )
+#define RT_BGEZ ( 1 )
+#define RT_BLTZAL ( 16 )
+#define RT_BGEZAL ( 17 )
+
+/* OP_COP0/OP_COP1/OP_COP2 */
+#define RS_MFC ( 0 )
+#define RS_CFC ( 2 )
+#define RS_MTC ( 4 )
+#define RS_CTC ( 6 )
+#define RS_BC ( 8 )
+#define RS_BC_ALT ( 12 )
+
+/* BC_BC */
+#define BC_BCF ( 0 )
+#define BC_BCT ( 1 )
+
+/* OP_COP0 */
+#define CF_TLBR ( 1 )
+#define CF_TLBWI ( 2 )
+#define CF_TLBWR ( 6 )
+#define CF_TLBP ( 8 )
+#define CF_RFE ( 16 )
+
+#endif // MAME_CPU_PSX_PSXDEFS_H
diff --git a/src/devices/cpu/psx/rcnt.cpp b/src/devices/cpu/psx/rcnt.cpp
index c3b574e4c31..e0ac985fa0a 100644
--- a/src/devices/cpu/psx/rcnt.cpp
+++ b/src/devices/cpu/psx/rcnt.cpp
@@ -25,10 +25,10 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, c
}
}
-const device_type PSX_RCNT = device_creator<psxrcnt_device>;
+DEFINE_DEVICE_TYPE(PSX_RCNT, psxrcnt_device, "psxrcnt", "Sony PSX RCNT")
psxrcnt_device::psxrcnt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PSX_RCNT, "Sony PSX RCNT", tag, owner, clock, "psxrcnt", __FILE__),
+ device_t(mconfig, PSX_RCNT, tag, owner, clock),
m_irq0_handler(*this),
m_irq1_handler(*this),
m_irq2_handler(*this)
diff --git a/src/devices/cpu/psx/rcnt.h b/src/devices/cpu/psx/rcnt.h
index d56b3a6531a..48262325bfc 100644
--- a/src/devices/cpu/psx/rcnt.h
+++ b/src/devices/cpu/psx/rcnt.h
@@ -7,13 +7,13 @@
*
*/
-#pragma once
+#ifndef MAME_CPU_PSX_RCNT_H
+#define MAME_CPU_PSX_RCNT_H
-#ifndef __PSXRCNT_H__
-#define __PSXRCNT_H__
+#pragma once
-extern const device_type PSX_RCNT;
+DECLARE_DEVICE_TYPE(PSX_RCNT, psxrcnt_device)
#define MCFG_PSX_RCNT_IRQ0_HANDLER(_devcb) \
devcb = &psxrcnt_device::set_irq0_handler(*device, DEVCB_##_devcb);
@@ -30,24 +30,15 @@ extern const device_type PSX_RCNT;
#define PSX_RC_CLC ( 0x100 )
#define PSX_RC_DIV ( 0x200 )
-struct psx_root
-{
- emu_timer *timer;
- uint16_t n_count;
- uint16_t n_mode;
- uint16_t n_target;
- uint64_t n_start;
-};
-
class psxrcnt_device : public device_t
{
public:
psxrcnt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq0_handler(device_t &device, _Object object) { return downcast<psxrcnt_device &>(device).m_irq0_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_irq1_handler(device_t &device, _Object object) { return downcast<psxrcnt_device &>(device).m_irq1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_irq2_handler(device_t &device, _Object object) { return downcast<psxrcnt_device &>(device).m_irq2_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq0_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq1_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq2_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq2_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE32_MEMBER( write );
DECLARE_READ32_MEMBER( read );
@@ -59,6 +50,15 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ struct psx_root
+ {
+ emu_timer *timer;
+ uint16_t n_count;
+ uint16_t n_mode;
+ uint16_t n_target;
+ uint64_t n_start;
+ };
+
psx_root root_counter[ 3 ];
uint64_t gettotalcycles( void );
@@ -72,4 +72,4 @@ private:
devcb_write_line m_irq2_handler;
};
-#endif
+#endif // MAME_CPU_PSX_RCNT_H
diff --git a/src/devices/cpu/psx/sio.cpp b/src/devices/cpu/psx/sio.cpp
index 048ab52de88..5ff3e671109 100644
--- a/src/devices/cpu/psx/sio.cpp
+++ b/src/devices/cpu/psx/sio.cpp
@@ -25,21 +25,21 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, c
}
}
-const device_type PSX_SIO0 = device_creator<psxsio0_device>;
-const device_type PSX_SIO1 = device_creator<psxsio1_device>;
+DEFINE_DEVICE_TYPE(PSX_SIO0, psxsio0_device, "psxsio0", "Sony PSX SIO-0")
+DEFINE_DEVICE_TYPE(PSX_SIO1, psxsio1_device, "psxsio1", "Sony PSX SIO-1")
psxsio0_device::psxsio0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- psxsio_device(mconfig, PSX_SIO0, "Sony PSX SIO-0", tag, owner, clock, "psxsio0", __FILE__)
+ psxsio_device(mconfig, PSX_SIO0, tag, owner, clock)
{
}
psxsio1_device::psxsio1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- psxsio_device(mconfig, PSX_SIO1, "Sony PSX SIO-1", tag, owner, clock, "psxsio1", __FILE__)
+ psxsio_device(mconfig, PSX_SIO1, tag, owner, clock)
{
}
-psxsio_device::psxsio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+psxsio_device::psxsio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
m_status(SIO_STATUS_TX_EMPTY | SIO_STATUS_TX_RDY), m_mode(0), m_control(0), m_baud(0),
m_rxd(1), m_tx_data(0), m_rx_data(0), m_tx_shift(0), m_rx_shift(0), m_tx_bits(0), m_rx_bits(0), m_timer(nullptr),
m_irq_handler(*this),
diff --git a/src/devices/cpu/psx/sio.h b/src/devices/cpu/psx/sio.h
index 4f2df7f912b..1205e4b278c 100644
--- a/src/devices/cpu/psx/sio.h
+++ b/src/devices/cpu/psx/sio.h
@@ -7,14 +7,14 @@
*
*/
-#pragma once
+#ifndef MAME_CPU_PSX_SIO_H
+#define MAME_CPU_PSX_SIO_H
-#ifndef __PSXSIO_H__
-#define __PSXSIO_H__
+#pragma once
-extern const device_type PSX_SIO0;
-extern const device_type PSX_SIO1;
+DECLARE_DEVICE_TYPE(PSX_SIO0, psxsio0_device)
+DECLARE_DEVICE_TYPE(PSX_SIO1, psxsio1_device)
#define MCFG_PSX_SIO_IRQ_HANDLER(_devcb) \
devcb = &psxsio_device::set_irq_handler(*device, DEVCB_##_devcb);
@@ -51,14 +51,12 @@ extern const device_type PSX_SIO1;
class psxsio_device : public device_t
{
public:
- psxsio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<psxsio_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_sck_handler(device_t &device, _Object object) { return downcast<psxsio_device &>(device).m_sck_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast<psxsio_device &>(device).m_txd_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_dtr_handler(device_t &device, _Object object) { return downcast<psxsio_device &>(device).m_dtr_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rts_handler(device_t &device, _Object object) { return downcast<psxsio_device &>(device).m_rts_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sck_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_sck_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE32_MEMBER( write );
DECLARE_READ32_MEMBER( read );
@@ -67,6 +65,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(write_dsr);
protected:
+ psxsio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -109,4 +109,4 @@ public:
psxsio1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-#endif
+#endif // MAME_CPU_PSX_SIO_H
diff --git a/src/devices/cpu/rsp/rsp.cpp b/src/devices/cpu/rsp/rsp.cpp
index eb3b553107b..5bdf36fd046 100644
--- a/src/devices/cpu/rsp/rsp.cpp
+++ b/src/devices/cpu/rsp/rsp.cpp
@@ -7,14 +7,18 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "rsp.h"
+
#include "rspfe.h"
#include "rspcp2.h"
#include "rspcp2d.h"
+#include "debugger.h"
+
+#include "rspdefs.h"
+
-const device_type RSP = device_creator<rsp_device>;
+DEFINE_DEVICE_TYPE(RSP, rsp_device, "rsp", "RSP")
#define LOG_INSTRUCTION_EXECUTION 0
@@ -97,7 +101,7 @@ const device_type RSP = device_creator<rsp_device>;
rsp_device::rsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, RSP, "RSP", tag, owner, clock, "rsp", __FILE__)
+ : cpu_device(mconfig, RSP, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 32, 32)
, m_cache(CACHE_SIZE + sizeof(internal_rsp_state))
, m_drcuml(nullptr)
diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h
index 578fd89b482..170315ec69f 100644
--- a/src/devices/cpu/rsp/rsp.h
+++ b/src/devices/cpu/rsp/rsp.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_RSP_RSP_H
+#define MAME_CPU_RSP_RSP_H
-#ifndef __RSP_H__
-#define __RSP_H__
+#pragma once
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
@@ -65,32 +65,6 @@ enum
RSP_V24, RSP_V25, RSP_V26, RSP_V27, RSP_V28, RSP_V29, RSP_V30, RSP_V31
};
-/***************************************************************************
- HELPER MACROS
-***************************************************************************/
-
-#define REG_LO 32
-#define REG_HI 33
-
-#define RSREG ((op >> 21) & 31)
-#define RTREG ((op >> 16) & 31)
-#define RDREG ((op >> 11) & 31)
-#define SHIFT ((op >> 6) & 31)
-
-#define FRREG ((op >> 21) & 31)
-#define FTREG ((op >> 16) & 31)
-#define FSREG ((op >> 11) & 31)
-#define FDREG ((op >> 6) & 31)
-
-#define IS_SINGLE(o) (((o) & (1 << 21)) == 0)
-#define IS_DOUBLE(o) (((o) & (1 << 21)) != 0)
-#define IS_FLOAT(o) (((o) & (1 << 23)) == 0)
-#define IS_INTEGRAL(o) (((o) & (1 << 23)) != 0)
-
-#define SIMMVAL ((int16_t)op)
-#define UIMMVAL ((uint16_t)op)
-#define LIMMVAL (op & 0x03ffffff)
-
#define RSP_STATUS_HALT 0x0001
#define RSP_STATUS_BROKE 0x0002
#define RSP_STATUS_DMABUSY 0x0004
@@ -139,11 +113,11 @@ public:
rsp_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
void resolve_cb();
- template<class _Object> static devcb_base &static_set_dp_reg_r_callback(device_t &device, _Object object) { return downcast<rsp_device &>(device).m_dp_reg_r_func.set_callback(object); }
- template<class _Object> static devcb_base &static_set_dp_reg_w_callback(device_t &device, _Object object) { return downcast<rsp_device &>(device).m_dp_reg_w_func.set_callback(object); }
- template<class _Object> static devcb_base &static_set_sp_reg_r_callback(device_t &device, _Object object) { return downcast<rsp_device &>(device).m_sp_reg_r_func.set_callback(object); }
- template<class _Object> static devcb_base &static_set_sp_reg_w_callback(device_t &device, _Object object) { return downcast<rsp_device &>(device).m_sp_reg_w_func.set_callback(object); }
- template<class _Object> static devcb_base &static_set_status_callback(device_t &device, _Object object) { return downcast<rsp_device &>(device).m_sp_set_status_func.set_callback(object); }
+ template <class Object> static devcb_base &static_set_dp_reg_r_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_dp_reg_r_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_dp_reg_w_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_dp_reg_w_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_sp_reg_r_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_reg_r_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_sp_reg_w_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_reg_w_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_status_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_set_status_func.set_callback(std::forward<Object>(cb)); }
void rspdrc_flush_drc_cache();
void rspdrc_set_options(uint32_t options);
@@ -323,9 +297,9 @@ private:
};
-extern const device_type RSP;
+DECLARE_DEVICE_TYPE(RSP, rsp_device)
extern offs_t rsp_dasm_one(std::ostream &stream, offs_t pc, uint32_t op);
-#endif /* __RSP_H__ */
+#endif // MAME_CPU_RSP_RSP_H
diff --git a/src/devices/cpu/rsp/rspcp2.cpp b/src/devices/cpu/rsp/rspcp2.cpp
index 1a5e95a980c..4169b563819 100644
--- a/src/devices/cpu/rsp/rspcp2.cpp
+++ b/src/devices/cpu/rsp/rspcp2.cpp
@@ -10,9 +10,12 @@
***************************************************************************/
#include "emu.h"
-#include "rsp.h"
#include "rspcp2.h"
+#include "rsp.h"
+#include "rspdefs.h"
+
+
#if USE_SIMD
#include <emmintrin.h>
diff --git a/src/devices/cpu/rsp/rspcp2d.cpp b/src/devices/cpu/rsp/rspcp2d.cpp
index c904caf8646..7152d6cbe59 100644
--- a/src/devices/cpu/rsp/rspcp2d.cpp
+++ b/src/devices/cpu/rsp/rspcp2d.cpp
@@ -10,13 +10,18 @@
***************************************************************************/
#include "emu.h"
+#include "rspcp2d.h"
+
#include "rsp.h"
#include "rspcp2.h"
-#include "rspcp2d.h"
+
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
#include "cpu/drcumlsh.h"
+#include "rspdefs.h"
+
+
using namespace uml;
/***************************************************************************
diff --git a/src/devices/cpu/rsp/rspdefs.h b/src/devices/cpu/rsp/rspdefs.h
new file mode 100644
index 00000000000..c061ceaa407
--- /dev/null
+++ b/src/devices/cpu/rsp/rspdefs.h
@@ -0,0 +1,32 @@
+// license:BSD-3-Clause
+// copyright-holders:Ville Linde, Ryan Holtz
+#ifndef MAME_CPU_RSP_RSPDEFS_H
+#define MAME_CPU_RSP_RSPDEFS_H
+
+/***************************************************************************
+ HELPER MACROS
+***************************************************************************/
+
+#define REG_LO 32
+#define REG_HI 33
+
+#define RSREG ((op >> 21) & 31)
+#define RTREG ((op >> 16) & 31)
+#define RDREG ((op >> 11) & 31)
+#define SHIFT ((op >> 6) & 31)
+
+#define FRREG ((op >> 21) & 31)
+#define FTREG ((op >> 16) & 31)
+#define FSREG ((op >> 11) & 31)
+#define FDREG ((op >> 6) & 31)
+
+#define IS_SINGLE(o) (((o) & (1 << 21)) == 0)
+#define IS_DOUBLE(o) (((o) & (1 << 21)) != 0)
+#define IS_FLOAT(o) (((o) & (1 << 23)) == 0)
+#define IS_INTEGRAL(o) (((o) & (1 << 23)) != 0)
+
+#define SIMMVAL ((int16_t)op)
+#define UIMMVAL ((uint16_t)op)
+#define LIMMVAL (op & 0x03ffffff)
+
+#endif // MAME_CPU_RSP_RSPDEFS_H
diff --git a/src/devices/cpu/rsp/rspdrc.cpp b/src/devices/cpu/rsp/rspdrc.cpp
index c384c94eb54..cdc10338571 100644
--- a/src/devices/cpu/rsp/rspdrc.cpp
+++ b/src/devices/cpu/rsp/rspdrc.cpp
@@ -19,14 +19,19 @@
***************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "rsp.h"
+
#include "rspfe.h"
#include "rspcp2.h"
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
#include "cpu/drcumlsh.h"
+#include "debugger.h"
+
+#include "rspdefs.h"
+
+
using namespace uml;
CPU_DISASSEMBLE( rsp );
diff --git a/src/devices/cpu/rsp/rspfe.cpp b/src/devices/cpu/rsp/rspfe.cpp
index 5bbf6c94c2e..abf0597d006 100644
--- a/src/devices/cpu/rsp/rspfe.cpp
+++ b/src/devices/cpu/rsp/rspfe.cpp
@@ -10,7 +10,10 @@
#include "emu.h"
#include "rspfe.h"
+
#include "rsp.h"
+#include "rspdefs.h"
+
//**************************************************************************
// RSP FRONTEND
diff --git a/src/devices/cpu/s2650/s2650.cpp b/src/devices/cpu/s2650/s2650.cpp
index 1eff9ebd2ff..6f4dc66c016 100644
--- a/src/devices/cpu/s2650/s2650.cpp
+++ b/src/devices/cpu/s2650/s2650.cpp
@@ -18,19 +18,18 @@
#include "s2650cpu.h"
/* define this to have some interrupt information logged */
-#define VERBOSE 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
/* define this to expand all EA calculations inline */
#define INLINE_EA 1
-const device_type S2650 = device_creator<s2650_device>;
+DEFINE_DEVICE_TYPE(S2650, s2650_device, "s2650", "S2650")
s2650_device::s2650_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, S2650, "S2650", tag, owner, clock, "s2650", __FILE__ )
+ : cpu_device(mconfig, S2650, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 15)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 9)
, m_flag_handler(*this), m_intack_handler(*this)
@@ -197,7 +196,7 @@ inline int s2650_device::check_irq_line()
if (!(++addr & PMSK)) addr -= PLEN;
m_ea = (m_ea + RDMEM(addr)) & AMSK;
}
- LOG(("S2650 interrupt to $%04x\n", m_ea));
+ LOG("S2650 interrupt to $%04x\n", m_ea);
set_sp(get_sp() + 1);
set_psu(m_psu | II);
m_ras[get_sp()] = m_page + m_iar;
diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h
index ae41f5baa6e..818fd57b300 100644
--- a/src/devices/cpu/s2650/s2650.h
+++ b/src/devices/cpu/s2650/s2650.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller
-#pragma once
+#ifndef MAME_CPU_S2650_S2650_H
+#define MAME_CPU_S2650_S2650_H
-#ifndef __S2650_H__
-#define __S2650_H__
+#pragma once
#define S2650_SENSE_LINE INPUT_LINE_IRQ1
@@ -25,7 +25,7 @@ enum
};
-extern const device_type S2650;
+DECLARE_DEVICE_TYPE(S2650, s2650_device)
#define MCFG_S2650_FLAG_HANDLER(_devcb) \
@@ -41,8 +41,8 @@ public:
s2650_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_flag_handler(device_t &device, _Object object) { return downcast<s2650_device &>(device).m_flag_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_intack_handler(device_t &device, _Object object) { return downcast<s2650_device &>(device).m_intack_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_flag_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_flag_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_intack_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_intack_handler.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
@@ -113,4 +113,4 @@ private:
};
-#endif /* __S2650_H__ */
+#endif // MAME_CPU_S2650_S2650_H
diff --git a/src/devices/cpu/saturn/satops.hxx b/src/devices/cpu/saturn/satops.hxx
index 3d279da8e2f..28e94ae8dfa 100644
--- a/src/devices/cpu/saturn/satops.hxx
+++ b/src/devices/cpu/saturn/satops.hxx
@@ -3,7 +3,7 @@
#define IRQ_ADDRESS 0xf
#define saturn_assert(x) \
- do { if (!(x)) logerror("SATURN '%s' assertion failed: %s at %s:%i, pc=%05x\n", tag(), #x, __FILE__, __LINE__, m_pc); } while (0)
+ do { if (!(x)) logerror("SATURN assertion failed: %s at %s:%i, pc=%05x\n", #x, __FILE__, __LINE__, m_pc); } while (0)
int saturn_device::READ_OP()
{
@@ -202,24 +202,24 @@ void saturn_device::saturn_push(uint32_t adr)
void saturn_device::saturn_interrupt_on()
{
- LOG(( "SATURN '%s' at %05x: INTON\n", tag(), m_pc-4 ));
+ LOG("SATURN at %05x: INTON\n", m_pc-4);
m_irq_enable=1;
if (m_irq_state)
{
- LOG(( "SATURN '%s' set_irq_line(ASSERT)\n", tag()));
+ LOG("SATURN set_irq_line(ASSERT)\n");
m_pending_irq=1;
}
}
void saturn_device::saturn_interrupt_off()
{
- LOG(( "SATURN '%s' at %05x: INTOFF\n", tag(), m_pc-4 ));
+ LOG("SATURN at %05x: INTOFF\n", m_pc-4);
m_irq_enable=0;
}
void saturn_device::saturn_reset_interrupt()
{
- LOG(( "SATURN '%s' at %05x: RSI\n", tag(), m_pc-5 ));
+ LOG("SATURN at %05x: RSI\n", m_pc-5);
m_rsi_func(ASSERT_LINE);
}
@@ -250,7 +250,7 @@ void saturn_device::saturn_shutdown()
{
m_sleeping=1;
m_irq_enable=1;
- LOG(( "SATURN '%s' at %05x: SHUTDN\n", tag(), m_pc-3 ));
+ LOG("SATURN at %05x: SHUTDN\n", m_pc-3);
}
void saturn_device::saturn_bus_command_b()
@@ -473,7 +473,7 @@ void saturn_device::saturn_return_carry_clear()
void saturn_device::saturn_return_interrupt()
{
- LOG(( "SATURN '%s' at %05x: RTI\n", tag(), m_pc-2 ));
+ LOG("SATURN at %05x: RTI\n", tag(), m_pc-2);
m_in_irq=0; /* set to 1 when an IRQ is taken */
m_pc=saturn_pop();
// m_icount-=10;
diff --git a/src/devices/cpu/saturn/saturn.cpp b/src/devices/cpu/saturn/saturn.cpp
index c77006fd97d..a3d7b912f46 100644
--- a/src/devices/cpu/saturn/saturn.cpp
+++ b/src/devices/cpu/saturn/saturn.cpp
@@ -10,9 +10,10 @@
*****************************************************************************/
#include "emu.h"
+#include "saturn.h"
+
#include "debugger.h"
-#include "saturn.h"
#define R0 0
#define R1 1
@@ -26,9 +27,8 @@
#define I 9 // invalid
-#define VERBOSE 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
// Hardware status bits
@@ -39,11 +39,11 @@
-const device_type SATURN = device_creator<saturn_device>;
+DEFINE_DEVICE_TYPE(SATURN, saturn_device, "saturn_cpu", "HP Saturn")
saturn_device::saturn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SATURN, "HP Saturn", tag, owner, clock, "saturn_cpu", __FILE__)
+ : cpu_device(mconfig, SATURN, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 20, 0)
, m_out_func(*this)
, m_in_func(*this)
@@ -326,7 +326,7 @@ void saturn_device::saturn_take_irq()
saturn_push(m_pc);
m_pc=IRQ_ADDRESS;
- LOG(("Saturn '%s' takes IRQ ($%04x)\n", tag(), m_pc));
+ LOG("SATURN takes IRQ ($%04x)\n", m_pc);
standard_irq_callback(SATURN_IRQ_LINE);
}
@@ -367,7 +367,7 @@ void saturn_device::execute_set_input(int inputnum, int state)
m_nmi_state = state;
if ( state != CLEAR_LINE )
{
- LOG(( "SATURN '%s' set_nmi_line(ASSERT)\n", tag()));
+ LOG("SATURN set_nmi_line(ASSERT)\n");
m_pending_irq = 1;
}
break;
@@ -377,7 +377,7 @@ void saturn_device::execute_set_input(int inputnum, int state)
m_irq_state = state;
if ( state != CLEAR_LINE && m_irq_enable )
{
- LOG(( "SATURN '%s' set_irq_line(ASSERT)\n", tag()));
+ LOG("SATURN set_irq_line(ASSERT)\n");
m_pending_irq = 1;
}
break;
@@ -385,7 +385,7 @@ void saturn_device::execute_set_input(int inputnum, int state)
case SATURN_WAKEUP_LINE:
if (m_sleeping && state==1)
{
- LOG(( "SATURN '%s' set_wakeup_line(ASSERT)\n", tag()));
+ LOG("SATURN set_wakeup_line(ASSERT)\n");
standard_irq_callback(SATURN_WAKEUP_LINE);
m_sleeping = 0;
}
diff --git a/src/devices/cpu/saturn/saturn.h b/src/devices/cpu/saturn/saturn.h
index df7c5f80df8..a8a221995b6 100644
--- a/src/devices/cpu/saturn/saturn.h
+++ b/src/devices/cpu/saturn/saturn.h
@@ -27,10 +27,10 @@ HP38G 09/??/95 1LT8 Yorke
/* 4 bit processor
20 address lines */
-#pragma once
+#ifndef MAME_CPU_SATURN_SATURN_H
+#define MAME_CPU_SATURN_SATURN_H
-#ifndef __SATURN_H__
-#define _SATURN_H
+#pragma once
#define SATURN_INT_NONE 0
@@ -79,14 +79,14 @@ public:
saturn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_out_func(device_t &device, _Object object) { return downcast<saturn_device &>(device).m_out_func.set_callback(object); }
- template<class _Object> static devcb_base &set_in_func(device_t &device, _Object object) { return downcast<saturn_device &>(device).m_in_func.set_callback(object); }
- template<class _Object> static devcb_base &set_reset_func(device_t &device, _Object object) { return downcast<saturn_device &>(device).m_reset_func.set_callback(object); }
- template<class _Object> static devcb_base &set_config_func(device_t &device, _Object object) { return downcast<saturn_device &>(device).m_config_func.set_callback(object); }
- template<class _Object> static devcb_base &set_unconfig_func(device_t &device, _Object object) { return downcast<saturn_device &>(device).m_unconfig_func.set_callback(object); }
- template<class _Object> static devcb_base &set_id_func(device_t &device, _Object object) { return downcast<saturn_device &>(device).m_id_func.set_callback(object); }
- template<class _Object> static devcb_base &set_crc_func(device_t &device, _Object object) { return downcast<saturn_device &>(device).m_crc_func.set_callback(object); }
- template<class _Object> static devcb_base &set_rsi_func(device_t &device, _Object object) { return downcast<saturn_device &>(device).m_rsi_func.set_callback(object); }
+ template <class Object> static devcb_base &set_out_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_out_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_in_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_reset_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_reset_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_config_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_config_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_unconfig_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_unconfig_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_id_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_id_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_crc_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_crc_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rsi_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_rsi_func.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
@@ -134,7 +134,7 @@ typedef uint8_t Saturn64[16];
uint8_t m_p; // 4 bit pointer
- uint16_t m_out; // 12 bit (packed)
+ uint16_t m_out; // 12 bit (packed)
uint8_t m_carry, m_decimal;
uint16_t m_st; // status 16 bit
@@ -289,7 +289,6 @@ typedef uint8_t Saturn64[16];
void saturn_instruction();
};
-extern const device_type SATURN;
-
+DECLARE_DEVICE_TYPE(SATURN, saturn_device)
-#endif /* __SATURN_H__ */
+#endif // MAME_CPU_SATURN_SATURN_H
diff --git a/src/devices/cpu/sc61860/sc61860.cpp b/src/devices/cpu/sc61860/sc61860.cpp
index 3d095eba8e0..4c10bdb288c 100644
--- a/src/devices/cpu/sc61860/sc61860.cpp
+++ b/src/devices/cpu/sc61860/sc61860.cpp
@@ -18,10 +18,10 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
-
#include "sc61860.h"
+#include "debugger.h"
+
#define I 0
#define J 1
@@ -41,16 +41,15 @@
#define C 95
-#define VERBOSE 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
-const device_type SC61860 = device_creator<sc61860_device>;
+DEFINE_DEVICE_TYPE(SC61860, sc61860_device, "sc61860", "SC61860")
sc61860_device::sc61860_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SC61860, "SC61860", tag, owner, clock, "sc61860", __FILE__)
+ : cpu_device(mconfig, SC61860, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 8, 16, 0)
, m_reset(*this)
, m_brk(*this)
diff --git a/src/devices/cpu/sc61860/sc61860.h b/src/devices/cpu/sc61860/sc61860.h
index e3da855936a..90385223cd0 100644
--- a/src/devices/cpu/sc61860/sc61860.h
+++ b/src/devices/cpu/sc61860/sc61860.h
@@ -10,10 +10,10 @@
*
*****************************************************************************/
-#pragma once
+#ifndef MAME_CPU_SC61860_SC61860_H
+#define MAME_CPU_SC61860_SC61860_H
-#ifndef __SC61860_H__
-#define __SC61860_H__
+#pragma once
/*
official names seam to be
@@ -75,14 +75,14 @@ public:
sc61860_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_reset_cb(device_t &device, _Object object) { return downcast<sc61860_device &>(device).m_reset.set_callback(object); }
- template<class _Object> static devcb_base &set_brk_cb(device_t &device, _Object object) { return downcast<sc61860_device &>(device).m_brk.set_callback(object); }
- template<class _Object> static devcb_base &set_x_cb(device_t &device, _Object object) { return downcast<sc61860_device &>(device).m_x.set_callback(object); }
- template<class _Object> static devcb_base &set_ina_cb(device_t &device, _Object object) { return downcast<sc61860_device &>(device).m_ina.set_callback(object); }
- template<class _Object> static devcb_base &set_outa_cb(device_t &device, _Object object) { return downcast<sc61860_device &>(device).m_outa.set_callback(object); }
- template<class _Object> static devcb_base &set_inb_cb(device_t &device, _Object object) { return downcast<sc61860_device &>(device).m_inb.set_callback(object); }
- template<class _Object> static devcb_base &set_outb_cb(device_t &device, _Object object) { return downcast<sc61860_device &>(device).m_outb.set_callback(object); }
- template<class _Object> static devcb_base &set_outc_cb(device_t &device, _Object object) { return downcast<sc61860_device &>(device).m_outc.set_callback(object); }
+ template <class Object> static devcb_base &set_reset_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_reset.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_brk_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_brk.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_x_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_x.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ina_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_ina.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_outa_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outa.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_inb_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_inb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_outb_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_outc_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outc.set_callback(std::forward<Object>(cb)); }
/* this is though for power on/off of the sharps */
uint8_t *internal_ram();
@@ -230,7 +230,6 @@ private:
};
-extern const device_type SC61860;
-
+DECLARE_DEVICE_TYPE(SC61860, sc61860_device)
-#endif /* __SC61860_H__ */
+#endif // MAME_CPU_SC61860_SC61860_H
diff --git a/src/devices/cpu/scmp/scmp.cpp b/src/devices/cpu/scmp/scmp.cpp
index f04d5e01f87..6cb366ae97f 100644
--- a/src/devices/cpu/scmp/scmp.cpp
+++ b/src/devices/cpu/scmp/scmp.cpp
@@ -9,35 +9,29 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "scmp.h"
-#define VERBOSE 0
+#include "debugger.h"
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
-const device_type SCMP = device_creator<scmp_device>;
-const device_type INS8060 = device_creator<ins8060_device>;
+DEFINE_DEVICE_TYPE(SCMP, scmp_device, "ins8050", "INS 8050 SC/MP")
+DEFINE_DEVICE_TYPE(INS8060, ins8060_device, "ins8060", "INS 8060 SC/MP II")
scmp_device::scmp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SCMP, "INS 8050 SC/MP", tag, owner, clock, "ins8050", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0), m_AC(0), m_ER(0), m_SR(0), m_program(nullptr), m_direct(nullptr), m_icount(0)
- , m_flag_out_func(*this)
- , m_sout_func(*this)
- , m_sin_func(*this)
- , m_sensea_func(*this)
- , m_senseb_func(*this)
- , m_halt_func(*this)
+ : scmp_device(mconfig, SCMP, tag, owner, clock)
{
}
-scmp_device::scmp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0), m_AC(0), m_ER(0), m_SR(0), m_program(nullptr), m_direct(nullptr), m_icount(0)
- , m_flag_out_func(*this)
+scmp_device::scmp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0)
+ , m_AC(0), m_ER(0), m_SR(0), m_program(nullptr), m_direct(nullptr), m_icount(0)
+ , m_flag_out_func(*this)
, m_sout_func(*this)
, m_sin_func(*this)
, m_sensea_func(*this)
@@ -48,7 +42,7 @@ scmp_device::scmp_device(const machine_config &mconfig, device_type type, const
ins8060_device::ins8060_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : scmp_device(mconfig, INS8060, "INS 8060 SC/MP II", tag, owner, clock, "ins8060", __FILE__)
+ : scmp_device(mconfig, INS8060, tag, owner, clock)
{
}
@@ -91,20 +85,17 @@ void scmp_device::WM(uint32_t a, uint8_t v)
void scmp_device::illegal(uint8_t opcode)
{
-#if VERBOSE
- uint16_t pc = m_PC.w.l;
- LOG(("SC/MP illegal instruction %04X $%02X\n", pc-1, opcode));
-#endif
+ uint16_t const pc = m_PC.w.l;
+ LOG("SC/MP illegal instruction %04X $%02X\n", pc-1, opcode);
}
PAIR *scmp_device::GET_PTR_REG(int num)
{
switch(num) {
- case 1: return &m_P1;
- case 2: return &m_P2;
- case 3: return &m_P3;
- default :
- return &m_PC;
+ case 1: return &m_P1;
+ case 2: return &m_P2;
+ case 3: return &m_P3;
+ default: return &m_PC;
}
}
diff --git a/src/devices/cpu/scmp/scmp.h b/src/devices/cpu/scmp/scmp.h
index be53c83e16c..fcfc3bb01cc 100644
--- a/src/devices/cpu/scmp/scmp.h
+++ b/src/devices/cpu/scmp/scmp.h
@@ -1,17 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
-#ifndef __SCMP_H__
-#define __SCMP_H__
+#ifndef MAME_CPU_SCMP_SCMP_H
+#define MAME_CPU_SCMP_SCMP_H
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-enum
-{
- SCMP_PC, SCMP_P1, SCMP_P2, SCMP_P3, SCMP_AC, SCMP_ER, SCMP_SR
-};
+#pragma once
#define MCFG_SCMP_CONFIG(_flag_out_devcb, _sout_devcb, _sin_devcb, _sensea_devcb, _senseb_devcb, _halt_devcb) \
@@ -28,17 +20,23 @@ class scmp_device : public cpu_device
public:
// construction/destruction
scmp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- scmp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// static configuration helpers
- template<class _Object> static devcb_base &set_flag_out_cb(device_t &device, _Object object) { return downcast<scmp_device &>(device).m_flag_out_func.set_callback(object); }
- template<class _Object> static devcb_base &set_sout_cb(device_t &device, _Object object) { return downcast<scmp_device &>(device).m_sout_func.set_callback(object); }
- template<class _Object> static devcb_base &set_sin_cb(device_t &device, _Object object) { return downcast<scmp_device &>(device).m_sin_func.set_callback(object); }
- template<class _Object> static devcb_base &set_sensea_cb(device_t &device, _Object object) { return downcast<scmp_device &>(device).m_sensea_func.set_callback(object); }
- template<class _Object> static devcb_base &set_senseb_cb(device_t &device, _Object object) { return downcast<scmp_device &>(device).m_senseb_func.set_callback(object); }
- template<class _Object> static devcb_base &set_halt_cb(device_t &device, _Object object) { return downcast<scmp_device &>(device).m_halt_func.set_callback(object); }
+ template <class Object> static devcb_base &set_flag_out_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_flag_out_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sout_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sout_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sin_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sin_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sensea_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sensea_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_senseb_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_senseb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_halt_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_halt_func.set_callback(std::forward<Object>(cb)); }
protected:
+ enum
+ {
+ SCMP_PC, SCMP_P1, SCMP_P2, SCMP_P3, SCMP_AC, SCMP_ER, SCMP_SR
+ };
+
+ scmp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -50,7 +48,7 @@ protected:
virtual void execute_run() override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
@@ -94,7 +92,6 @@ private:
inline uint16_t GET_ADDR(uint8_t code);
void execute_one(int opcode);
void take_interrupt();
-
};
@@ -110,8 +107,7 @@ protected:
};
-extern const device_type SCMP;
-extern const device_type INS8060;
-
+DECLARE_DEVICE_TYPE(SCMP, scmp_device)
+DECLARE_DEVICE_TYPE(INS8060, ins8060_device)
-#endif
+#endif // MAME_CPU_SCMP_SCMP_H
diff --git a/src/devices/cpu/score/score.cpp b/src/devices/cpu/score/score.cpp
index b24c7b2f941..e8f049fb53f 100644
--- a/src/devices/cpu/score/score.cpp
+++ b/src/devices/cpu/score/score.cpp
@@ -16,7 +16,7 @@
// CONSTANTS
//**************************************************************************
-const device_type SCORE7 = device_creator<score7_cpu_device>;
+DEFINE_DEVICE_TYPE(SCORE7, score7_cpu_device, "score7", "S+core 7")
//**************************************************************************
@@ -53,10 +53,10 @@ const score7_cpu_device::op_handler score7_cpu_device::s_opcode16_table[8] =
//-------------------------------------------------
score7_cpu_device::score7_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SCORE7, "S+core 7", tag, owner, clock, "score7", __FILE__),
- m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0),
- m_pc(0),
- m_ppc(0)
+ : cpu_device(mconfig, SCORE7, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0)
+ , m_pc(0)
+ , m_ppc(0)
{
memset(m_gpr, 0x00, sizeof(m_gpr));
memset(m_cr, 0x00, sizeof(m_cr));
diff --git a/src/devices/cpu/score/score.h b/src/devices/cpu/score/score.h
index 8fb1002095d..797a2bedf3d 100644
--- a/src/devices/cpu/score/score.h
+++ b/src/devices/cpu/score/score.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_CPU_SCORE_SCORE_H
+#define MAME_CPU_SCORE_SCORE_H
-#ifndef __SCORE_H__
-#define __SCORE_H__
+#pragma once
//**************************************************************************
@@ -33,7 +33,8 @@ class score7_cpu_device : public cpu_device
{
public:
// construction/destruction
- score7_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
+ score7_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -110,7 +111,6 @@ private:
void op_iform1a();
void op_iform1b();
-private:
address_space_config m_program_config;
address_space * m_program;
direct_read_data * m_direct;
@@ -145,6 +145,6 @@ private:
static const char *const m_cr_op[2];
};
-extern const device_type SCORE7;
+DECLARE_DEVICE_TYPE(SCORE7, score7_cpu_device)
-#endif /* __SCORE_H__ */
+#endif // MAME_CPU_SCORE_SCORE_H
diff --git a/src/devices/cpu/scudsp/scudsp.cpp b/src/devices/cpu/scudsp/scudsp.cpp
index 2da97c8cc7f..8898dd5fa34 100644
--- a/src/devices/cpu/scudsp/scudsp.cpp
+++ b/src/devices/cpu/scudsp/scudsp.cpp
@@ -91,11 +91,12 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "scudsp.h"
+#include "debugger.h"
+
-const device_type SCUDSP = device_creator<scudsp_cpu_device>;
+DEFINE_DEVICE_TYPE(SCUDSP, scudsp_cpu_device, "scudsp", "Sega SCUDSP")
/* FLAGS */
#define PRF m_flags & 0x04000000
@@ -1001,7 +1002,7 @@ void scudsp_cpu_device::execute_set_input(int irqline, int state)
}
scudsp_cpu_device::scudsp_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SCUDSP, "SCUDSP", tag, owner, clock, "scudsp", __FILE__)
+ : cpu_device(mconfig, SCUDSP, tag, owner, clock)
, m_out_irq_cb(*this)
, m_in_dma_cb(*this)
, m_out_dma_cb(*this)
diff --git a/src/devices/cpu/scudsp/scudsp.h b/src/devices/cpu/scudsp/scudsp.h
index b30667dd319..6012748257c 100644
--- a/src/devices/cpu/scudsp/scudsp.h
+++ b/src/devices/cpu/scudsp/scudsp.h
@@ -6,10 +6,10 @@
*
*****************************************************************************/
-#pragma once
+#ifndef MAME_CPU_SCUDSP_SCUDSP_H
+#define MAME_CPU_SCUDSP_SCUDSP_H
-#ifndef __SCUDSP_H__
-#define __SCUDSP_H__
+#pragma once
enum
{
@@ -48,25 +48,15 @@ enum
#define SCUDSP_RESET INPUT_LINE_RESET /* Non-Maskable */
-union SCUDSPREG32 {
- int32_t si;
- uint32_t ui;
-};
-
-union SCUDSPREG16 {
- int16_t si;
- uint16_t ui;
-};
-
-class scudsp_cpu_device : public cpu_device
+class scudsp_cpu_device : public cpu_device
{
public:
// construction/destruction
scudsp_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<scudsp_cpu_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_dma_callback(device_t &device, _Object object) { return downcast<scudsp_cpu_device &>(device).m_in_dma_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dma_callback(device_t &device, _Object object) { return downcast<scudsp_cpu_device &>(device).m_out_dma_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_dma_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_in_dma_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dma_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_out_dma_cb.set_callback(std::forward<Object>(cb)); }
/* port 0 */
DECLARE_READ32_MEMBER( program_control_r );
@@ -78,7 +68,6 @@ public:
/* port 3 */
DECLARE_READ32_MEMBER( ram_address_r );
DECLARE_WRITE32_MEMBER( ram_address_w );
-// virtual DECLARE_ADDRESS_MAP(map, 32) = 0;
protected:
// device-level overrides
@@ -108,6 +97,16 @@ protected:
devcb_write16 m_out_dma_cb;
private:
+ union SCUDSPREG32 {
+ int32_t si;
+ uint32_t ui;
+ };
+
+ union SCUDSPREG16 {
+ int16_t si;
+ uint16_t ui;
+ };
+
address_space_config m_program_config;
address_space_config m_data_config;
@@ -156,9 +155,9 @@ private:
};
-extern const device_type SCUDSP;
+DECLARE_DEVICE_TYPE(SCUDSP, scudsp_cpu_device)
CPU_DISASSEMBLE( scudsp );
-#endif /* __SCUDSP_H__ */
+#endif // MAME_CPU_SCUDSP_SCUDSP_H
diff --git a/src/devices/cpu/se3208/se3208.cpp b/src/devices/cpu/se3208/se3208.cpp
index 29d04d867e5..13b0ec92f22 100644
--- a/src/devices/cpu/se3208/se3208.cpp
+++ b/src/devices/cpu/se3208/se3208.cpp
@@ -1,9 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:ElSemi
#include "emu.h"
-#include "debugger.h"
#include "se3208.h"
+#include "debugger.h"
+
+
/*
SE3208 CPU Emulator by ElSemi
@@ -42,12 +44,13 @@
// are such accesses simply illegal, be handled in a different way, or simply not be happening in the first place?
#define ALLOW_UNALIGNED_DWORD_ACCESS 0
-const device_type SE3208 = device_creator<se3208_device>;
+DEFINE_DEVICE_TYPE(SE3208, se3208_device, "se3208", "SE3208")
se3208_device::se3208_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SE3208, "SE3208", tag, owner, clock, "se3208", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0), m_PC(0), m_SR(0), m_SP(0), m_ER(0), m_PPC(0), m_program(nullptr), m_direct(nullptr), m_IRQ(0), m_NMI(0), m_icount(0)
+ : cpu_device(mconfig, SE3208, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0)
+ , m_PC(0), m_SR(0), m_SP(0), m_ER(0), m_PPC(0), m_program(nullptr), m_direct(nullptr), m_IRQ(0), m_NMI(0), m_icount(0)
{
}
@@ -1438,7 +1441,7 @@ INST(MVFC)
}
-se3208_device::_OP se3208_device::DecodeOp(uint16_t Opcode)
+se3208_device::OP se3208_device::DecodeOp(uint16_t Opcode)
{
switch(EXTRACT(Opcode,14,15))
{
diff --git a/src/devices/cpu/se3208/se3208.h b/src/devices/cpu/se3208/se3208.h
index 7f005bec2f3..bb00f3f06ad 100644
--- a/src/devices/cpu/se3208/se3208.h
+++ b/src/devices/cpu/se3208/se3208.h
@@ -1,5 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:ElSemi
+#ifndef MAME_CPU_SE3208_SE3208_H
+#define MAME_CPU_SE3208_SE3208_H
+
+#pragma once
enum
{
@@ -80,8 +84,8 @@ private:
inline void PushVal(uint32_t Val);
inline uint32_t PopVal();
- typedef void (se3208_device::*_OP)(uint16_t Opcode);
- _OP OpTable[0x10000];
+ typedef void (se3208_device::*OP)(uint16_t Opcode);
+ OP OpTable[0x10000];
void INVALIDOP(uint16_t Opcode);
void LDB(uint16_t Opcode);
@@ -159,11 +163,13 @@ private:
void MVFC(uint16_t Opcode);
void BuildTable(void);
- _OP DecodeOp(uint16_t Opcode);
+ OP DecodeOp(uint16_t Opcode);
void SE3208_NMI();
void SE3208_Interrupt();
};
-extern const device_type SE3208;
+DECLARE_DEVICE_TYPE(SE3208, se3208_device)
+
+#endif // MAME_CPU_SE3208_SE3208_H
diff --git a/src/devices/cpu/sh2/sh2.cpp b/src/devices/cpu/sh2/sh2.cpp
index fb9e564fe73..1877196a013 100644
--- a/src/devices/cpu/sh2/sh2.cpp
+++ b/src/devices/cpu/sh2/sh2.cpp
@@ -93,10 +93,14 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "sh2.h"
#include "sh2comn.h"
+#include "debugger.h"
+
+//#define VERBOSE 1
+#include "logmacro.h"
+
/***************************************************************************
DEBUGGING
@@ -105,8 +109,6 @@
#define DISABLE_FAST_REGISTERS (0) // set to 1 to turn off usage of register caching
#define SINGLE_INSTRUCTION_MODE (0)
-#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
/***************************************************************************
CONSTANTS
@@ -122,9 +124,9 @@
#define COMPILE_MAX_SEQUENCE 64
-const device_type SH1 = device_creator<sh1_device>;
-const device_type SH2 = device_creator<sh2_device>;
-const device_type SH2A = device_creator<sh2a_device>;
+DEFINE_DEVICE_TYPE(SH1, sh1_device, "sh1", "SH-1")
+DEFINE_DEVICE_TYPE(SH2, sh2_device, "sh2", "SH-2")
+DEFINE_DEVICE_TYPE(SH2A, sh2a_device, "sh21", "SH-2A")
/*-------------------------------------------------
sh2_internal_a5 - read handler for
@@ -170,30 +172,8 @@ static ADDRESS_MAP_START( sh7032_map, AS_PROGRAM, 32, sh1_device )
ADDRESS_MAP_END
sh2_device::sh2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SH2, "SH-2", tag, owner, clock, "sh2", __FILE__)
- , m_program_config("program", ENDIANNESS_BIG, 32, 32, 0, ADDRESS_MAP_NAME(sh7604_map))
- , m_decrypted_program_config("decrypted_opcodes", ENDIANNESS_BIG, 32, 32, 0)
- , m_is_slave(0)
- , m_cpu_type(CPU_TYPE_SH2)
- , m_cache(CACHE_SIZE + sizeof(internal_sh2_state))
- , m_drcuml(nullptr)
-// , m_drcuml(*this, m_cache, 0, 1, 32, 1)
- , m_drcfe(nullptr)
- , m_drcoptions(0)
- , m_sh2_state(nullptr)
- , m_entry(nullptr)
- , m_read8(nullptr)
- , m_write8(nullptr)
- , m_read16(nullptr)
- , m_write16(nullptr)
- , m_read32(nullptr)
- , m_write32(nullptr)
- , m_interrupt(nullptr)
- , m_nocode(nullptr)
- , m_out_of_cycles(nullptr)
- , m_debugger_temp(0)
+ : sh2_device(mconfig, SH2, tag, owner, clock, CPU_TYPE_SH2, ADDRESS_MAP_NAME(sh7604_map), 32)
{
- m_isdrc = allow_drc();
}
@@ -202,8 +182,8 @@ void sh2_device::device_stop()
}
-sh2_device::sh2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int cpu_type, address_map_constructor internal_map, int addrlines )
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+sh2_device::sh2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cpu_type, address_map_constructor internal_map, int addrlines)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 32, addrlines, 0, internal_map)
, m_decrypted_program_config("decrypted_opcodes", ENDIANNESS_BIG, 32, addrlines, 0)
, m_is_slave(0)
@@ -224,17 +204,18 @@ sh2_device::sh2_device(const machine_config &mconfig, device_type type, const ch
, m_interrupt(nullptr)
, m_nocode(nullptr)
, m_out_of_cycles(nullptr)
+ , m_debugger_temp(0)
{
m_isdrc = allow_drc();
}
sh2a_device::sh2a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sh2_device(mconfig, SH2A, "SH-2A", tag, owner, clock, "sh2a", __FILE__, CPU_TYPE_SH2, ADDRESS_MAP_NAME(sh7021_map), 28)
+ : sh2_device(mconfig, SH2A, tag, owner, clock, CPU_TYPE_SH2, ADDRESS_MAP_NAME(sh7021_map), 28)
{
}
sh1_device::sh1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sh2_device(mconfig, SH1, "SH-1", tag, owner, clock, "sh1", __FILE__, CPU_TYPE_SH1, ADDRESS_MAP_NAME(sh7032_map), 28)
+ : sh2_device(mconfig, SH1, tag, owner, clock, CPU_TYPE_SH1, ADDRESS_MAP_NAME(sh7032_map), 28)
{
}
@@ -258,10 +239,6 @@ offs_t sh2_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uin
/* speed up delay loops, bail out of tight loops */
#define BUSY_LOOP_HACKS 1
-#define VERBOSE 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
-
uint8_t sh2_device::RB(offs_t A)
{
if((A & 0xf0000000) == 0 || (A & 0xf0000000) == 0x20000000)
@@ -2609,13 +2586,13 @@ void sh2_device::execute_set_input(int irqline, int state)
return;
m_nmi_line_state = state;
- if( state == CLEAR_LINE )
+ if (state == CLEAR_LINE)
{
- LOG(("SH-2 '%s' cleared nmi\n", tag()));
+ LOG("SH-2 cleared nmi\n");
}
else
{
- LOG(("SH-2 '%s' assert nmi\n", tag()));
+ LOG("SH-2 asserted nmi\n");
sh2_exception("Set IRQ line", 16);
@@ -2629,14 +2606,14 @@ void sh2_device::execute_set_input(int irqline, int state)
return;
m_irq_line_state[irqline] = state;
- if( state == CLEAR_LINE )
+ if (state == CLEAR_LINE)
{
- LOG(("SH-2 '%s' cleared irq #%d\n", tag(), irqline));
+ LOG("SH-2 cleared irq #%d\n", irqline);
m_sh2_state->pending_irq &= ~(1 << irqline);
}
else
{
- LOG(("SH-2 '%s' assert irq #%d\n", tag(), irqline));
+ LOG("SH-2 asserted irq #%d\n", irqline);
m_sh2_state->pending_irq |= 1 << irqline;
if (m_isdrc)
{
@@ -2651,5 +2628,74 @@ void sh2_device::execute_set_input(int irqline, int state)
}
}
-#include "sh2comn.cpp"
+void sh2_device::sh2_exception(const char *message, int irqline)
+{
+ int vector;
+
+ if (irqline != 16)
+ {
+ if (irqline <= ((m_sh2_state->sr >> 4) & 15)) /* If the cpu forbids this interrupt */
+ return;
+
+ // if this is an sh2 internal irq, use its vector
+ if (m_sh2_state->internal_irq_level == irqline)
+ {
+ vector = m_internal_irq_vector;
+ /* avoid spurious irqs with this (TODO: needs a better fix) */
+ m_sh2_state->internal_irq_level = -1;
+ LOG("SH-2 exception #%d (internal vector: $%x) after [%s]\n", irqline, vector, message);
+ }
+ else
+ {
+ if(m_m[0x38] & 0x00010000)
+ {
+ vector = standard_irq_callback(irqline);
+ LOG("SH-2 exception #%d (external vector: $%x) after [%s]\n", irqline, vector, message);
+ }
+ else
+ {
+ standard_irq_callback(irqline);
+ vector = 64 + irqline/2;
+ LOG("SH-2 exception #%d (autovector: $%x) after [%s]\n", irqline, vector, message);
+ }
+ }
+ }
+ else
+ {
+ vector = 11;
+ LOG("SH-2 nmi exception (autovector: $%x) after [%s]\n", vector, message);
+ }
+
+ if (m_isdrc)
+ {
+ m_sh2_state->evec = RL( m_sh2_state->vbr + vector * 4 );
+ m_sh2_state->evec &= AM;
+ m_sh2_state->irqsr = m_sh2_state->sr;
+
+ /* set I flags in SR */
+ if (irqline > SH2_INT_15)
+ m_sh2_state->sr = m_sh2_state->sr | I;
+ else
+ m_sh2_state->sr = (m_sh2_state->sr & ~I) | (irqline << 4);
+
+// printf("sh2_exception [%s] irqline %x evec %x save SR %x new SR %x\n", message, irqline, m_sh2_state->evec, m_sh2_state->irqsr, m_sh2_state->sr);
+ } else {
+ m_sh2_state->r[15] -= 4;
+ WL( m_sh2_state->r[15], m_sh2_state->sr ); /* push SR onto stack */
+ m_sh2_state->r[15] -= 4;
+ WL( m_sh2_state->r[15], m_sh2_state->pc ); /* push PC onto stack */
+
+ /* set I flags in SR */
+ if (irqline > SH2_INT_15)
+ m_sh2_state->sr = m_sh2_state->sr | I;
+ else
+ m_sh2_state->sr = (m_sh2_state->sr & ~I) | (irqline << 4);
+
+ /* fetch PC */
+ m_sh2_state->pc = RL( m_sh2_state->vbr + vector * 4 );
+ }
+
+ if(m_sh2_state->sleep_mode == 1) { m_sh2_state->sleep_mode = 2; }
+}
+
#include "sh2drc.cpp"
diff --git a/src/devices/cpu/sh2/sh2.h b/src/devices/cpu/sh2/sh2.h
index b13ce13f618..77095149254 100644
--- a/src/devices/cpu/sh2/sh2.h
+++ b/src/devices/cpu/sh2/sh2.h
@@ -12,10 +12,10 @@
*
*****************************************************************************/
-#pragma once
+#ifndef MAME_CPU_SH2_SH2_H
+#define MAME_CPU_SH2_SH2_H
-#ifndef __SH2_H__
-#define __SH2_H__
+#pragma once
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
@@ -48,13 +48,10 @@ enum
};
-typedef device_delegate<int (uint32_t src, uint32_t dst, uint32_t data, int size)> sh2_dma_kludge_delegate;
#define SH2_DMA_KLUDGE_CB(name) int name(uint32_t src, uint32_t dst, uint32_t data, int size)
-typedef device_delegate<int (uint32_t src, uint32_t dst, uint32_t data, int size)> sh2_dma_fifo_data_available_delegate;
#define SH2_DMA_FIFO_DATA_AVAILABLE_CB(name) int name(uint32_t src, uint32_t dst, uint32_t data, int size)
-typedef device_delegate<void (uint32_t data)> sh2_ftcsr_read_delegate;
#define SH2_FTCSR_READ_CB(name) void name(uint32_t data)
@@ -62,13 +59,13 @@ typedef device_delegate<void (uint32_t data)> sh2_ftcsr_read_delegate;
sh2_device::set_is_slave(*device, _slave);
#define MCFG_SH2_DMA_KLUDGE_CB(_class, _method) \
- sh2_device::set_dma_kludge_callback(*device, sh2_dma_kludge_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ sh2_device::set_dma_kludge_callback(*device, sh2_device::dma_kludge_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_SH2_FIFO_DATA_AVAIL_CB(_class, _method) \
- sh2_device::set_dma_fifo_data_available_callback(*device, sh2_dma_fifo_data_available_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ sh2_device::set_dma_fifo_data_available_callback(*device, sh2_device::dma_fifo_data_available_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_SH2_FTCSR_READ_CB(_class, _method) \
- sh2_device::set_ftcsr_read_callback(*device, sh2_ftcsr_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ sh2_device::set_ftcsr_read_callback(*device, sh2_device::ftcsr_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
/***************************************************************************
@@ -91,14 +88,17 @@ class sh2_device : public cpu_device
friend class sh2_frontend;
public:
+ typedef device_delegate<int (uint32_t src, uint32_t dst, uint32_t data, int size)> dma_kludge_delegate;
+ typedef device_delegate<int (uint32_t src, uint32_t dst, uint32_t data, int size)> dma_fifo_data_available_delegate;
+ typedef device_delegate<void (uint32_t data)> ftcsr_read_delegate;
+
// construction/destruction
- sh2_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- sh2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int cpu_type,address_map_constructor internal_map, int addrlines);
+ sh2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_is_slave(device_t &device, int slave) { downcast<sh2_device &>(device).m_is_slave = slave; }
- static void set_dma_kludge_callback(device_t &device, sh2_dma_kludge_delegate callback) { downcast<sh2_device &>(device).m_dma_kludge_cb = callback; }
- static void set_dma_fifo_data_available_callback(device_t &device, sh2_dma_fifo_data_available_delegate callback) { downcast<sh2_device &>(device).m_dma_fifo_data_available_cb = callback; }
- static void set_ftcsr_read_callback(device_t &device, sh2_ftcsr_read_delegate callback) { downcast<sh2_device &>(device).m_ftcsr_read_cb = callback; }
+ static void set_dma_kludge_callback(device_t &device, dma_kludge_delegate callback) { downcast<sh2_device &>(device).m_dma_kludge_cb = callback; }
+ static void set_dma_fifo_data_available_callback(device_t &device, dma_fifo_data_available_delegate callback) { downcast<sh2_device &>(device).m_dma_fifo_data_available_cb = callback; }
+ static void set_ftcsr_read_callback(device_t &device, ftcsr_read_delegate callback) { downcast<sh2_device &>(device).m_ftcsr_read_cb = callback; }
DECLARE_WRITE32_MEMBER( sh7604_w );
DECLARE_READ32_MEMBER( sh7604_r );
@@ -112,6 +112,8 @@ public:
void sh2_notify_dma_data_available();
protected:
+ sh2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int cpu_type,address_map_constructor internal_map, int addrlines);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -126,7 +128,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
@@ -212,9 +214,9 @@ private:
uint8_t m_wtcsr;
int m_is_slave, m_cpu_type;
- sh2_dma_kludge_delegate m_dma_kludge_cb;
- sh2_dma_fifo_data_available_delegate m_dma_fifo_data_available_cb;
- sh2_ftcsr_read_delegate m_ftcsr_read_cb;
+ dma_kludge_delegate m_dma_kludge_cb;
+ dma_fifo_data_available_delegate m_dma_fifo_data_available_cb;
+ ftcsr_read_delegate m_ftcsr_read_cb;
drc_cache m_cache; /* pointer to the DRC code cache */
std::unique_ptr<drcuml_state> m_drcuml; /* DRC UML generator state */
@@ -484,7 +486,7 @@ class sh2a_device : public sh2_device
{
public:
// construction/destruction
- sh2a_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
+ sh2a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ32_MEMBER(dma_sar0_r);
DECLARE_WRITE32_MEMBER(dma_sar0_w);
@@ -547,9 +549,9 @@ private:
};
-extern const device_type SH1;
-extern const device_type SH2;
-extern const device_type SH2A;
+DECLARE_DEVICE_TYPE(SH1, sh1_device)
+DECLARE_DEVICE_TYPE(SH2, sh2_device)
+DECLARE_DEVICE_TYPE(SH2A, sh2a_device)
-#endif /* __SH2_H__ */
+#endif // MAME_CPU_SH2_SH2_H
diff --git a/src/devices/cpu/sh2/sh2comn.cpp b/src/devices/cpu/sh2/sh2comn.cpp
index a3a15262490..b6ac0e1cc65 100644
--- a/src/devices/cpu/sh2/sh2comn.cpp
+++ b/src/devices/cpu/sh2/sh2comn.cpp
@@ -9,13 +9,13 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "sh2.h"
#include "sh2comn.h"
-#define VERBOSE 0
+#include "debugger.h"
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
static const int div_tab[4] = { 3, 5, 7, 0 };
@@ -365,7 +365,7 @@ void sh2_device::sh2_do_dma(int dma)
}
- LOG(("SH2.%s: DMA %d complete\n", tag(), dma));
+ LOG("SH2: DMA %d complete\n", dma);
m_m[0x62+4*dma] = 0;
m_m[0x63+4*dma] |= 2;
m_dma_timer_active[dma] = 0;
@@ -405,7 +405,7 @@ void sh2_device::sh2_dmac_check(int dma)
if(!m_active_dma_count[dma])
m_active_dma_count[dma] = 0x1000000;
- LOG(("SH2: DMA %d start %x, %x, %x, %04x, %d, %d, %d\n", dma, m_active_dma_src[dma], m_active_dma_dst[dma], m_active_dma_count[dma], m_m[0x63+4*dma], m_active_dma_incs[dma], m_active_dma_incd[dma], m_active_dma_size[dma]));
+ LOG("SH2: DMA %d start %x, %x, %x, %04x, %d, %d, %d\n", dma, m_active_dma_src[dma], m_active_dma_dst[dma], m_active_dma_count[dma], m_m[0x63+4*dma], m_active_dma_incs[dma], m_active_dma_incd[dma], m_active_dma_size[dma]);
m_dma_timer_active[dma] = 1;
@@ -584,7 +584,7 @@ WRITE32_MEMBER( sh2_device::sh7604_w )
{
int32_t a = m_m[0x41];
int32_t b = m_m[0x40];
- LOG(("SH2 '%s' div+mod %d/%d\n", tag(), a, b));
+ LOG("SH2 div+mod %d/%d\n", a, b);
if (b)
{
m_m[0x45] = a / b;
@@ -612,7 +612,7 @@ WRITE32_MEMBER( sh2_device::sh7604_w )
{
int64_t a = m_m[0x45] | ((uint64_t)(m_m[0x44]) << 32);
int64_t b = (int32_t)m_m[0x40];
- LOG(("SH2 '%s' div+mod %d/%d\n", tag(), a, b));
+ LOG("SH2 div+mod %d/%d\n", a, b);
if (b)
{
int64_t q = a / b;
@@ -814,76 +814,6 @@ void sh2_device::sh2_recalc_irq()
m_test_irq = 1;
}
-void sh2_device::sh2_exception(const char *message, int irqline)
-{
- int vector;
-
- if (irqline != 16)
- {
- if (irqline <= ((m_sh2_state->sr >> 4) & 15)) /* If the cpu forbids this interrupt */
- return;
-
- // if this is an sh2 internal irq, use its vector
- if (m_sh2_state->internal_irq_level == irqline)
- {
- vector = m_internal_irq_vector;
- /* avoid spurious irqs with this (TODO: needs a better fix) */
- m_sh2_state->internal_irq_level = -1;
- LOG(("SH-2 '%s' exception #%d (internal vector: $%x) after [%s]\n", tag(), irqline, vector, message));
- }
- else
- {
- if(m_m[0x38] & 0x00010000)
- {
- vector = standard_irq_callback(irqline);
- LOG(("SH-2 '%s' exception #%d (external vector: $%x) after [%s]\n", tag(), irqline, vector, message));
- }
- else
- {
- standard_irq_callback(irqline);
- vector = 64 + irqline/2;
- LOG(("SH-2 '%s' exception #%d (autovector: $%x) after [%s]\n", tag(), irqline, vector, message));
- }
- }
- }
- else
- {
- vector = 11;
- LOG(("SH-2 '%s' nmi exception (autovector: $%x) after [%s]\n", tag(), vector, message));
- }
-
- if (m_isdrc)
- {
- m_sh2_state->evec = RL( m_sh2_state->vbr + vector * 4 );
- m_sh2_state->evec &= AM;
- m_sh2_state->irqsr = m_sh2_state->sr;
-
- /* set I flags in SR */
- if (irqline > SH2_INT_15)
- m_sh2_state->sr = m_sh2_state->sr | I;
- else
- m_sh2_state->sr = (m_sh2_state->sr & ~I) | (irqline << 4);
-
-// printf("sh2_exception [%s] irqline %x evec %x save SR %x new SR %x\n", message, irqline, m_sh2_state->evec, m_sh2_state->irqsr, m_sh2_state->sr);
- } else {
- m_sh2_state->r[15] -= 4;
- WL( m_sh2_state->r[15], m_sh2_state->sr ); /* push SR onto stack */
- m_sh2_state->r[15] -= 4;
- WL( m_sh2_state->r[15], m_sh2_state->pc ); /* push PC onto stack */
-
- /* set I flags in SR */
- if (irqline > SH2_INT_15)
- m_sh2_state->sr = m_sh2_state->sr | I;
- else
- m_sh2_state->sr = (m_sh2_state->sr & ~I) | (irqline << 4);
-
- /* fetch PC */
- m_sh2_state->pc = RL( m_sh2_state->vbr + vector * 4 );
- }
-
- if(m_sh2_state->sleep_mode == 1) { m_sh2_state->sleep_mode = 2; }
-}
-
/*
SH-7021 on-chip device
*/
diff --git a/src/devices/cpu/sh2/sh2comn.h b/src/devices/cpu/sh2/sh2comn.h
index 79d06547462..1c859e227d6 100644
--- a/src/devices/cpu/sh2/sh2comn.h
+++ b/src/devices/cpu/sh2/sh2comn.h
@@ -8,10 +8,10 @@
*
*****************************************************************************/
-#pragma once
+#ifndef MAME_CPU_SH2_SH2COMN_H
+#define MAME_CPU_SH2_SH2COMN_H
-#ifndef __SH2COMN_H__
-#define __SH2COMN_H__
+#pragma once
@@ -82,4 +82,4 @@ do { \
} while(0)
-#endif /* __SH2COMN_H__ */
+#endif // MAME_CPU_SH2_SH2COMN_H
diff --git a/src/devices/cpu/sh2/sh7604_bus.cpp b/src/devices/cpu/sh2/sh7604_bus.cpp
index 5052d4a41f1..596172879e4 100644
--- a/src/devices/cpu/sh2/sh7604_bus.cpp
+++ b/src/devices/cpu/sh2/sh7604_bus.cpp
@@ -23,7 +23,7 @@
//**************************************************************************
// device type definition
-const device_type SH7604_BUS = device_creator<sh7604_bus_device>;
+DEFINE_DEVICE_TYPE(SH7604_BUS, sh7604_bus_device, "sh7604bus", "SH7604 BUS Controller")
//**************************************************************************
@@ -109,9 +109,9 @@ ADDRESS_MAP_END
//-------------------------------------------------
sh7604_bus_device::sh7604_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SH7604_BUS, "sh7604_bus_longname", tag, owner, clock, "sh7604_bus", __FILE__),
- device_memory_interface(mconfig, *this),
- m_space_config("regs", ENDIANNESS_BIG, 16, 4, 0, nullptr, *ADDRESS_MAP_NAME(bus_regs))
+ : device_t(mconfig, SH7604_BUS, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , m_space_config("regs", ENDIANNESS_BIG, 16, 4, 0, nullptr, *ADDRESS_MAP_NAME(bus_regs))
{
}
diff --git a/src/devices/cpu/sh2/sh7604_bus.h b/src/devices/cpu/sh2/sh7604_bus.h
index 0c989f23010..8c907a13e06 100644
--- a/src/devices/cpu/sh2/sh7604_bus.h
+++ b/src/devices/cpu/sh2/sh7604_bus.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_SH2_SH7604_BUS_H
+#define MAME_CPU_SH2_SH7604_BUS_H
-#ifndef __SH7604_BUSDEV_H__
-#define __SH7604_BUSDEV_H__
+#pragma once
@@ -72,14 +72,6 @@ private:
// device type definition
-extern const device_type SH7604_BUS;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(SH7604_BUS, sh7604_bus_device)
-#endif
+#endif // MAME_CPU_SH2_SH7604_BUS_H
diff --git a/src/devices/cpu/sh2/sh7604_sci.cpp b/src/devices/cpu/sh2/sh7604_sci.cpp
index a20d3c3135a..e49c7d988e6 100644
--- a/src/devices/cpu/sh2/sh7604_sci.cpp
+++ b/src/devices/cpu/sh2/sh7604_sci.cpp
@@ -22,7 +22,7 @@
//**************************************************************************
// device type definition
-const device_type SH7604_SCI = device_creator<sh7604_sci_device>;
+DEFINE_DEVICE_TYPE(SH7604_SCI, sh7604_sci_device, "sh7604sci", "SH7604 SCI Controller")
//**************************************************************************
@@ -113,9 +113,9 @@ ADDRESS_MAP_END
//-------------------------------------------------
sh7604_sci_device::sh7604_sci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SH7604_SCI, "sh7604_sci_longname", tag, owner, clock, "sh7604_sci", __FILE__),
- device_memory_interface(mconfig, *this),
- m_space_config("regs", ENDIANNESS_BIG, 8, 4, 0, nullptr, *ADDRESS_MAP_NAME(sci_regs))
+ : device_t(mconfig, SH7604_SCI, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , m_space_config("regs", ENDIANNESS_BIG, 8, 4, 0, nullptr, *ADDRESS_MAP_NAME(sci_regs))
{
}
diff --git a/src/devices/cpu/sh2/sh7604_sci.h b/src/devices/cpu/sh2/sh7604_sci.h
index 97ef31dd881..082e8c37ae9 100644
--- a/src/devices/cpu/sh2/sh7604_sci.h
+++ b/src/devices/cpu/sh2/sh7604_sci.h
@@ -6,21 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_SH2_SH7604_SCI_H
+#define MAME_CPU_SH2_SH7604_SCI_H
-#ifndef __SH7604_SCIDEV_H__
-#define __SH7604_SCIDEV_H__
-
-enum {
- STATUS_MPBT = 1 << 0,
- STATUS_MPB = 1 << 1,
- STATUS_TEND = 1 << 2,
- STATUS_PER = 1 << 3,
- STATUS_FER = 1 << 4,
- STATUS_ORER = 1 << 5,
- STATUS_RDRF = 1 << 6,
- STATUS_TDRE = 1 << 7
-};
+#pragma once
@@ -61,12 +50,25 @@ public:
DECLARE_WRITE8_MEMBER( serial_ack_w );
DECLARE_READ8_MEMBER( receive_data_r );
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
+
protected:
+ enum {
+ STATUS_MPBT = 1 << 0,
+ STATUS_MPB = 1 << 1,
+ STATUS_TEND = 1 << 2,
+ STATUS_PER = 1 << 3,
+ STATUS_FER = 1 << 4,
+ STATUS_ORER = 1 << 5,
+ STATUS_RDRF = 1 << 6,
+ STATUS_TDRE = 1 << 7
+ };
+
// device-level overrides
// virtual void device_validity_check(validity_checker &valid) const;
virtual void device_start() override;
virtual void device_reset() override;
+
private:
const address_space_config m_space_config;
uint8_t m_smr;
@@ -77,14 +79,6 @@ private:
// device type definition
-extern const device_type SH7604_SCI;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(SH7604_SCI, sh7604_sci_device)
-#endif
+#endif // MAME_CPU_SH2_SH7604_SCI_H
diff --git a/src/devices/cpu/sh2/sh7604_wdt.cpp b/src/devices/cpu/sh2/sh7604_wdt.cpp
index a396e2872f3..9db87131378 100644
--- a/src/devices/cpu/sh2/sh7604_wdt.cpp
+++ b/src/devices/cpu/sh2/sh7604_wdt.cpp
@@ -20,7 +20,7 @@
//**************************************************************************
// device type definition
-const device_type SH7604_WDT = device_creator<sh7604_wdt_device>;
+DEFINE_DEVICE_TYPE(SH7604_WDT, sh7604_wdt_device, "sh7604wdt", "SH7604 Watchdog Timer")
//**************************************************************************
@@ -39,9 +39,9 @@ ADDRESS_MAP_END
//-------------------------------------------------
sh7604_wdt_device::sh7604_wdt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SH7604_WDT, "sh7604_wdt_longname", tag, owner, clock, "sh7604_wdt", __FILE__),
- device_memory_interface(mconfig, *this),
- m_space_config("regs", ENDIANNESS_BIG, 8, 4, 0, nullptr, *ADDRESS_MAP_NAME(wdt_regs))
+ : device_t(mconfig, SH7604_WDT, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , m_space_config("regs", ENDIANNESS_BIG, 8, 4, 0, nullptr, *ADDRESS_MAP_NAME(wdt_regs))
{
}
diff --git a/src/devices/cpu/sh2/sh7604_wdt.h b/src/devices/cpu/sh2/sh7604_wdt.h
index 89ab8faebe7..352b94e3190 100644
--- a/src/devices/cpu/sh2/sh7604_wdt.h
+++ b/src/devices/cpu/sh2/sh7604_wdt.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_SH7604_WDT_H
+#define MAME_CPU_SH7604_WDT_H
-#ifndef __SH7604_WDTDEV_H__
-#define __SH7604_WDTDEV_H__
+#pragma once
@@ -49,14 +49,6 @@ private:
// device type definition
-extern const device_type SH7604_WDT;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(SH7604_WDT, sh7604_wdt_device)
-#endif
+#endif // MAME_CPU_SH7604_WDT_H
diff --git a/src/devices/cpu/sh4/sh4.cpp b/src/devices/cpu/sh4/sh4.cpp
index 1605d918aed..c9741c19ac5 100644
--- a/src/devices/cpu/sh4/sh4.cpp
+++ b/src/devices/cpu/sh4/sh4.cpp
@@ -25,13 +25,15 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "sh4.h"
#include "sh4regs.h"
#include "sh4comn.h"
#include "sh3comn.h"
#include "sh4tmu.h"
+#include "debugger.h"
+
+
#if SH4_USE_FASTRAM_OPTIMIZATION
void sh34_base_device::add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base)
{
@@ -55,10 +57,10 @@ CPU_DISASSEMBLE( sh4 );
CPU_DISASSEMBLE( sh4be );
-const device_type SH3LE = device_creator<sh3_device>;
-const device_type SH3BE = device_creator<sh3be_device>;
-const device_type SH4LE = device_creator<sh4_device>;
-const device_type SH4BE = device_creator<sh4be_device>;
+DEFINE_DEVICE_TYPE(SH3LE, sh3_device, "sh3le", "SH-3 (little)")
+DEFINE_DEVICE_TYPE(SH3BE, sh3be_device, "sh3be", "SH-3 (big)")
+DEFINE_DEVICE_TYPE(SH4LE, sh4_device, "sh4le", "SH-4 (little)")
+DEFINE_DEVICE_TYPE(SH4BE, sh4be_device, "sh4be", "SH-4 (big)")
#if 0
@@ -89,8 +91,8 @@ static ADDRESS_MAP_START( sh3_internal_map, AS_PROGRAM, 64, sh3_base_device )
ADDRESS_MAP_END
-sh34_base_device::sh34_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, endianness_t endianness, address_map_constructor internal)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+sh34_base_device::sh34_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness, address_map_constructor internal)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", endianness, 64, 32, 0, internal)
, m_io_config("io", endianness, 64, 8)
, c_md2(0)
@@ -118,40 +120,40 @@ sh34_base_device::sh34_base_device(const machine_config &mconfig, device_type ty
}
-sh3_base_device::sh3_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, endianness_t endianness)
- : sh34_base_device(mconfig, type, name, tag, owner, clock, shortname, endianness, ADDRESS_MAP_NAME(sh3_internal_map))
+sh3_base_device::sh3_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness)
+ : sh34_base_device(mconfig, type, tag, owner, clock, endianness, ADDRESS_MAP_NAME(sh3_internal_map))
{
m_cpu_type = CPU_TYPE_SH3;
}
-sh4_base_device::sh4_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, endianness_t endianness)
- : sh34_base_device(mconfig, type, name, tag, owner, clock, shortname, endianness, ADDRESS_MAP_NAME(sh4_internal_map))
+sh4_base_device::sh4_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness)
+ : sh34_base_device(mconfig, type, tag, owner, clock, endianness, ADDRESS_MAP_NAME(sh4_internal_map))
{
m_cpu_type = CPU_TYPE_SH4;
}
sh3_device::sh3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sh3_base_device(mconfig, SH3LE, "SH-3 (little)", tag, owner, clock, "sh3", ENDIANNESS_LITTLE)
+ : sh3_base_device(mconfig, SH3LE, tag, owner, clock, ENDIANNESS_LITTLE)
{
}
sh3be_device::sh3be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sh3_base_device(mconfig, SH3BE, "SH-3 (big)", tag, owner, clock, "sh3be", ENDIANNESS_BIG)
+ : sh3_base_device(mconfig, SH3BE, tag, owner, clock, ENDIANNESS_BIG)
{
}
sh4_device::sh4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sh4_base_device(mconfig, SH4LE, "SH-4 (little)", tag, owner, clock, "sh4", ENDIANNESS_LITTLE)
+ : sh4_base_device(mconfig, SH4LE, tag, owner, clock, ENDIANNESS_LITTLE)
{
}
sh4be_device::sh4be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sh4_base_device(mconfig, SH4BE, "SH-4 (big)", tag, owner, clock, "sh4be", ENDIANNESS_BIG)
+ : sh4_base_device(mconfig, SH4BE, tag, owner, clock, ENDIANNESS_BIG)
{
}
diff --git a/src/devices/cpu/sh4/sh4.h b/src/devices/cpu/sh4/sh4.h
index b170b25d4c0..29977b286dd 100644
--- a/src/devices/cpu/sh4/sh4.h
+++ b/src/devices/cpu/sh4/sh4.h
@@ -10,8 +10,10 @@
*
*****************************************************************************/
-#ifndef __SH4_H__
-#define __SH4_H__
+#ifndef MAME_CPU_SH4_SH4_H
+#define MAME_CPU_SH4_SH4_H
+
+#pragma once
// doesn't actually seem to improve performance at all
#define SH4_USE_FASTRAM_OPTIMIZATION 0
@@ -197,9 +199,6 @@ typedef void (*sh4_ftcsr_callback)(uint32_t);
class sh34_base_device : public cpu_device
{
public:
- // construction/destruction
- sh34_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, endianness_t endianness, address_map_constructor internal);
-
//#if SH4_USE_FASTRAM_OPTIMIZATION
void add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base);
//#endif
@@ -229,6 +228,9 @@ public:
void sh4_dma_ddt(struct sh4_ddt_dma *s);
protected:
+ // construction/destruction
+ sh34_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness, address_map_constructor internal);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -253,7 +255,6 @@ protected:
virtual uint32_t disasm_max_opcode_bytes() const override { return 2; }
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
-protected:
address_space_config m_program_config;
address_space_config m_io_config;
@@ -742,9 +743,6 @@ protected:
class sh3_base_device : public sh34_base_device
{
public:
- // construction/destruction
- sh3_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, endianness_t endianness);
-
DECLARE_WRITE32_MEMBER( sh3_internal_w );
DECLARE_READ32_MEMBER( sh3_internal_r );
@@ -752,6 +750,9 @@ public:
DECLARE_READ32_MEMBER( sh3_internal_high_r );
protected:
+ // construction/destruction
+ sh3_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness);
+
virtual void device_reset() override;
};
@@ -759,9 +760,6 @@ protected:
class sh4_base_device : public sh34_base_device
{
public:
- // construction/destruction
- sh4_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, endianness_t endianness);
-
DECLARE_WRITE32_MEMBER( sh4_internal_w );
DECLARE_READ32_MEMBER( sh4_internal_r );
@@ -779,6 +777,9 @@ public:
sh4_utlb m_utlb[64];
protected:
+ // construction/destruction
+ sh4_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness);
+
virtual void device_start() override;
virtual void device_reset() override;
};
@@ -820,10 +821,10 @@ protected:
};
-extern const device_type SH3LE;
-extern const device_type SH3BE;
-extern const device_type SH4LE;
-extern const device_type SH4BE;
+DECLARE_DEVICE_TYPE(SH3LE, sh3_device)
+DECLARE_DEVICE_TYPE(SH3BE, sh3be_device)
+DECLARE_DEVICE_TYPE(SH4LE, sh4_device)
+DECLARE_DEVICE_TYPE(SH4BE, sh4be_device)
/***************************************************************************
@@ -840,4 +841,4 @@ extern const device_type SH4BE;
void sh4drc_set_options(device_t *device, uint32_t options);
void sh4drc_add_pcflush(device_t *device, offs_t address);
-#endif /* __SH4_H__ */
+#endif // MAME_CPU_SH4_SH4_H
diff --git a/src/devices/cpu/sharc/sharc.cpp b/src/devices/cpu/sharc/sharc.cpp
index 1b49b409e00..c6faeb367ef 100644
--- a/src/devices/cpu/sharc/sharc.cpp
+++ b/src/devices/cpu/sharc/sharc.cpp
@@ -6,10 +6,11 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "sharc.h"
#include "sharcfe.h"
+#include "debugger.h"
+
#define DISABLE_FAST_REGISTERS 1
@@ -52,7 +53,7 @@ enum
SHARC_B12, SHARC_B13, SHARC_B14, SHARC_B15
};
-const device_type ADSP21062 = device_creator<adsp21062_device>;
+DEFINE_DEVICE_TYPE(ADSP21062, adsp21062_device, "adsp21062", "ADSP21062")
static ADDRESS_MAP_START( internal_pgm, AS_PROGRAM, 64, adsp21062_device )
AM_RANGE(0x20000, 0x24fff) AM_READWRITE(pm0_r, pm0_w)
@@ -74,7 +75,7 @@ static ADDRESS_MAP_START( internal_data, AS_DATA, 32, adsp21062_device )
ADDRESS_MAP_END
adsp21062_device::adsp21062_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, ADSP21062, "ADSP21062", tag, owner, clock, "adsp21062", __FILE__)
+ : cpu_device(mconfig, ADSP21062, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 64, 24, -3, ADDRESS_MAP_NAME(internal_pgm))
, m_data_config("data", ENDIANNESS_LITTLE, 32, 32, -2, ADDRESS_MAP_NAME(internal_data))
, m_boot_mode(BOOT_MODE_HOST)
diff --git a/src/devices/cpu/sharc/sharc.h b/src/devices/cpu/sharc/sharc.h
index b644147983f..a55fa5facf7 100644
--- a/src/devices/cpu/sharc/sharc.h
+++ b/src/devices/cpu/sharc/sharc.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Ville Linde
-#pragma once
+#ifndef MAME_CPU_SHARC_SHARC_H
+#define MAME_CPU_SHARC_SHARC_H
-#ifndef __SHARC_H__
-#define __SHARC_H__
+#pragma once
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
@@ -14,65 +14,6 @@
#define SHARC_INPUT_FLAG3 6
-enum SHARC_BOOT_MODE
-{
- BOOT_MODE_EPROM,
- BOOT_MODE_HOST,
- BOOT_MODE_LINK,
- BOOT_MODE_NOBOOT
-};
-
-
-struct alignas(16) SHARC_DAG
-{
- uint32_t i[8];
- uint32_t m[8];
- uint32_t b[8];
- uint32_t l[8];
-};
-
-union SHARC_REG
-{
- int32_t r;
- float f;
-};
-
-struct SHARC_DMA_REGS
-{
- uint32_t control;
- uint32_t int_index;
- uint32_t int_modifier;
- uint32_t int_count;
- uint32_t chain_ptr;
- uint32_t gen_purpose;
- uint32_t ext_index;
- uint32_t ext_modifier;
- uint32_t ext_count;
-};
-
-struct SHARC_LADDR
-{
- uint32_t addr;
- uint32_t code;
- uint32_t loop_type;
-};
-
-struct SHARC_DMA_OP
-{
- uint32_t src;
- uint32_t dst;
- uint32_t chain_ptr;
- int32_t src_modifier;
- int32_t dst_modifier;
- int32_t src_count;
- int32_t dst_count;
- int32_t pmode;
- int32_t chained_direction;
- emu_timer *timer;
- bool active;
-};
-
-
// STKY flags
#define AUS 0x1 /* ALU floating-point underflow */
#define AVS 0x2 /* ALU floating-point overflow */
@@ -133,7 +74,7 @@ struct SHARC_DMA_OP
#define MCFG_SHARC_BOOT_MODE(boot_mode) \
- adsp21062_device::set_boot_mode(*device, boot_mode);
+ adsp21062_device::set_boot_mode(*device, adsp21062_device::boot_mode);
class sharc_frontend;
@@ -142,11 +83,20 @@ class adsp21062_device : public cpu_device
friend class sharc_frontend;
public:
+ enum sharc_boot_mode
+ {
+ BOOT_MODE_EPROM,
+ BOOT_MODE_HOST,
+ BOOT_MODE_LINK,
+ BOOT_MODE_NOBOOT
+ };
+
+
// construction/destruction
adsp21062_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
// static configuration helpers
- static void set_boot_mode(device_t &device, const SHARC_BOOT_MODE boot_mode) { downcast<adsp21062_device &>(device).m_boot_mode = boot_mode; }
+ static void set_boot_mode(device_t &device, const sharc_boot_mode boot_mode) { downcast<adsp21062_device &>(device).m_boot_mode = boot_mode; }
void set_flag_input(int flag_num, int state);
void external_iop_write(uint32_t address, uint32_t data);
@@ -276,6 +226,56 @@ protected:
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
private:
+ struct alignas(16) SHARC_DAG
+ {
+ uint32_t i[8];
+ uint32_t m[8];
+ uint32_t b[8];
+ uint32_t l[8];
+ };
+
+ union SHARC_REG
+ {
+ int32_t r;
+ float f;
+ };
+
+ struct SHARC_DMA_REGS
+ {
+ uint32_t control;
+ uint32_t int_index;
+ uint32_t int_modifier;
+ uint32_t int_count;
+ uint32_t chain_ptr;
+ uint32_t gen_purpose;
+ uint32_t ext_index;
+ uint32_t ext_modifier;
+ uint32_t ext_count;
+ };
+
+ struct SHARC_LADDR
+ {
+ uint32_t addr;
+ uint32_t code;
+ uint32_t loop_type;
+ };
+
+ struct SHARC_DMA_OP
+ {
+ uint32_t src;
+ uint32_t dst;
+ uint32_t chain_ptr;
+ int32_t src_modifier;
+ int32_t dst_modifier;
+ int32_t src_count;
+ int32_t dst_count;
+ int32_t pmode;
+ int32_t chained_direction;
+ emu_timer *timer;
+ bool active;
+ };
+
+
address_space_config m_program_config;
address_space_config m_data_config;
@@ -425,7 +425,7 @@ private:
sharc_internal_state* m_core;
- SHARC_BOOT_MODE m_boot_mode;
+ sharc_boot_mode m_boot_mode;
// UML stuff
drc_cache m_cache;
@@ -652,7 +652,6 @@ private:
};
-extern const device_type ADSP21062;
-
+DECLARE_DEVICE_TYPE(ADSP21062, adsp21062_device)
-#endif /* __SHARC_H__ */
+#endif // MAME_CPU_SHARC_SHARC_H
diff --git a/src/devices/cpu/sm510/kb1013vk1-2.h b/src/devices/cpu/sm510/kb1013vk1-2.h
index 9a2db29879b..ce51feb36a1 100644
--- a/src/devices/cpu/sm510/kb1013vk1-2.h
+++ b/src/devices/cpu/sm510/kb1013vk1-2.h
@@ -6,8 +6,10 @@
*/
-#ifndef MAME_CPU_SM510_KB1013VK12_H
-#define MAME_CPU_SM510_KB1013VK12_H
+#ifndef MAME_CPU_SM510_KB1013VK1_2_H
+#define MAME_CPU_SM510_KB1013VK1_2_H
+
+#pragma once
#include "sm500.h"
@@ -16,10 +18,6 @@
// ..
-
-
-
-
class kb1013vk12_device : public sm500_device
{
public:
@@ -35,7 +33,6 @@ protected:
};
-extern const device_type KB1013VK12;
-
+DECLARE_DEVICE_TYPE(KB1013VK12, kb1013vk12_device)
-#endif /* MAME_CPU_SM510_KB1013VK12_H */
+#endif // MAME_CPU_SM510_KB1013VK1_2_H
diff --git a/src/devices/cpu/sm510/kb1013vk1-2core.cpp b/src/devices/cpu/sm510/kb1013vk1-2core.cpp
index 31cf174e64f..2ba55cb33f6 100644
--- a/src/devices/cpu/sm510/kb1013vk1-2core.cpp
+++ b/src/devices/cpu/sm510/kb1013vk1-2core.cpp
@@ -11,7 +11,7 @@
#include "debugger.h"
// MCU types
-const device_type KB1013VK12 = device_creator<kb1013vk12_device>;
+DEFINE_DEVICE_TYPE(KB1013VK12, kb1013vk12_device, "kb1013vk1_2", "KB1013VK1-2")
// internal memory maps
@@ -30,8 +30,9 @@ ADDRESS_MAP_END
// device definitions
kb1013vk12_device::kb1013vk12_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : sm500_device(mconfig, KB1013VK12, "KB1013VK1-2", tag, owner, clock, 1 /* stack levels */, 11 /* prg width */, ADDRESS_MAP_NAME(program_1_8k), 7 /* data width */, ADDRESS_MAP_NAME(data_5x13x4), "kb1013vk1_2", __FILE__)
-{ }
+ : sm500_device(mconfig, KB1013VK12, tag, owner, clock, 1 /* stack levels */, 11 /* prg width */, ADDRESS_MAP_NAME(program_1_8k), 7 /* data width */, ADDRESS_MAP_NAME(data_5x13x4))
+{
+}
// disasm
diff --git a/src/devices/cpu/sm510/sm500.h b/src/devices/cpu/sm510/sm500.h
index 02a71715279..b6cc948c71f 100644
--- a/src/devices/cpu/sm510/sm500.h
+++ b/src/devices/cpu/sm510/sm500.h
@@ -9,6 +9,8 @@
#ifndef MAME_CPU_SM510_SM500_H
#define MAME_CPU_SM510_SM500_H
+#pragma once
+
#include "sm510.h"
@@ -47,9 +49,10 @@ class sm500_device : public sm510_base_device
{
public:
sm500_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- sm500_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source);
protected:
+ sm500_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const u8 *oprom, const u8 *opram, u32 options) override;
virtual void execute_one() override;
virtual void get_opcode_param() override;
@@ -76,7 +79,6 @@ protected:
};
-extern const device_type SM500;
-
+DECLARE_DEVICE_TYPE(SM500, sm500_device)
-#endif /* MAME_CPU_SM510_SM500_H */
+#endif // MAME_CPU_SM510_SM500_H
diff --git a/src/devices/cpu/sm510/sm500core.cpp b/src/devices/cpu/sm510/sm500core.cpp
index d25eaf9c673..b22f3de5575 100644
--- a/src/devices/cpu/sm510/sm500core.cpp
+++ b/src/devices/cpu/sm510/sm500core.cpp
@@ -12,7 +12,7 @@
// MCU types
-const device_type SM500 = device_creator<sm500_device>;
+DEFINE_DEVICE_TYPE(SM500, sm500_device, "sm500", "SM500")
// internal memory maps
@@ -30,12 +30,14 @@ ADDRESS_MAP_END
// device definitions
sm500_device::sm500_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : sm510_base_device(mconfig, SM500, "SM500", tag, owner, clock, 1 /* stack levels */, 11 /* prg width */, ADDRESS_MAP_NAME(program_1_2k), 6 /* data width */, ADDRESS_MAP_NAME(data_4x10x4), "sm500", __FILE__)
-{ }
+ : sm500_device(mconfig, SM500, tag, owner, clock, 1 /* stack levels */, 11 /* prg width */, ADDRESS_MAP_NAME(program_1_2k), 6 /* data width */, ADDRESS_MAP_NAME(data_4x10x4))
+{
+}
-sm500_device::sm500_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : sm510_base_device(mconfig, type, name, tag, owner, clock, stack_levels, prgwidth, program, datawidth, data, shortname, source)
-{ }
+sm500_device::sm500_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : sm510_base_device(mconfig, type, tag, owner, clock, stack_levels, prgwidth, program, datawidth, data)
+{
+}
// disasm
diff --git a/src/devices/cpu/sm510/sm510.h b/src/devices/cpu/sm510/sm510.h
index bfdcb7b3995..0fecde8e447 100644
--- a/src/devices/cpu/sm510/sm510.h
+++ b/src/devices/cpu/sm510/sm510.h
@@ -9,6 +9,7 @@
#ifndef MAME_CPU_SM510_SM510_H
#define MAME_CPU_SM510_SM510_H
+#pragma once
// I/O ports setup
@@ -100,8 +101,8 @@ class sm510_base_device : public cpu_device
{
public:
// construction/destruction
- sm510_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ sm510_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, prgwidth, 0, program)
, m_data_config("data", ENDIANNESS_LITTLE, 8, datawidth, 0, data)
, m_prgwidth(prgwidth)
@@ -117,16 +118,16 @@ public:
{ }
// static configuration helpers
- template<class _Object> static devcb_base &set_read_k_callback(device_t &device, _Object object) { return downcast<sm510_base_device &>(device).m_read_k.set_callback(object); }
- template<class _Object> static devcb_base &set_read_ba_callback(device_t &device, _Object object) { return downcast<sm510_base_device &>(device).m_read_ba.set_callback(object); }
- template<class _Object> static devcb_base &set_read_b_callback(device_t &device, _Object object) { return downcast<sm510_base_device &>(device).m_read_b.set_callback(object); }
- template<class _Object> static devcb_base &set_write_s_callback(device_t &device, _Object object) { return downcast<sm510_base_device &>(device).m_write_s.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r_callback(device_t &device, _Object object) { return downcast<sm510_base_device &>(device).m_write_r.set_callback(object); }
+ template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_ba_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_ba.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_s_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_s.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_r.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_write_sega_callback(device_t &device, _Object object) { return downcast<sm510_base_device &>(device).m_write_sega.set_callback(object); }
- template<class _Object> static devcb_base &set_write_segb_callback(device_t &device, _Object object) { return downcast<sm510_base_device &>(device).m_write_segb.set_callback(object); }
- template<class _Object> static devcb_base &set_write_segc_callback(device_t &device, _Object object) { return downcast<sm510_base_device &>(device).m_write_segc.set_callback(object); }
- template<class _Object> static devcb_base &set_write_segbs_callback(device_t &device, _Object object) { return downcast<sm510_base_device &>(device).m_write_segbs.set_callback(object); }
+ template <class Object> static devcb_base &set_write_sega_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_sega.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_segb_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_segc_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segc.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_segbs_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segbs.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
@@ -323,9 +324,10 @@ class sm511_device : public sm510_base_device
{
public:
sm511_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- sm511_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source);
protected:
+ sm511_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
virtual void device_post_load() override { notify_clock_changed(); }
virtual void device_reset() override;
@@ -345,9 +347,8 @@ public:
-extern const device_type SM510;
-extern const device_type SM511;
-extern const device_type SM512;
-
+DECLARE_DEVICE_TYPE(SM510, sm510_device)
+DECLARE_DEVICE_TYPE(SM511, sm511_device)
+DECLARE_DEVICE_TYPE(SM512, sm512_device)
-#endif /* MAME_CPU_SM510_SM510_H */
+#endif // MAME_CPU_SM510_SM510_H
diff --git a/src/devices/cpu/sm510/sm510core.cpp b/src/devices/cpu/sm510/sm510core.cpp
index c739fa83ffe..1c6bac06cad 100644
--- a/src/devices/cpu/sm510/sm510core.cpp
+++ b/src/devices/cpu/sm510/sm510core.cpp
@@ -12,7 +12,7 @@
// MCU types
-const device_type SM510 = device_creator<sm510_device>;
+DEFINE_DEVICE_TYPE(SM510, sm510_device, "sm510", "SM510")
// internal memory maps
@@ -32,8 +32,9 @@ ADDRESS_MAP_END
// device definitions
sm510_device::sm510_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : sm510_base_device(mconfig, SM510, "SM510", tag, owner, clock, 2 /* stack levels */, 12 /* prg width */, ADDRESS_MAP_NAME(program_2_7k), 7 /* data width */, ADDRESS_MAP_NAME(data_96_32x4), "sm510", __FILE__)
-{ }
+ : sm510_base_device(mconfig, SM510, tag, owner, clock, 2 /* stack levels */, 12 /* prg width */, ADDRESS_MAP_NAME(program_2_7k), 7 /* data width */, ADDRESS_MAP_NAME(data_96_32x4))
+{
+}
// disasm
diff --git a/src/devices/cpu/sm510/sm511core.cpp b/src/devices/cpu/sm510/sm511core.cpp
index df596ee27a1..d2e911b02dd 100644
--- a/src/devices/cpu/sm510/sm511core.cpp
+++ b/src/devices/cpu/sm510/sm511core.cpp
@@ -12,8 +12,8 @@
// MCU types
-const device_type SM511 = device_creator<sm511_device>;
-const device_type SM512 = device_creator<sm512_device>;
+DEFINE_DEVICE_TYPE(SM511, sm511_device, "sm511", "SM511")
+DEFINE_DEVICE_TYPE(SM512, sm512_device, "sm512", "SM512")
// internal memory maps
@@ -45,16 +45,19 @@ offs_t sm511_device::disasm_disassemble(std::ostream &stream, offs_t pc, const u
// device definitions
sm511_device::sm511_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : sm510_base_device(mconfig, SM511, "SM511", tag, owner, clock, 2 /* stack levels */, 12 /* prg width */, ADDRESS_MAP_NAME(program_4k), 7 /* data width */, ADDRESS_MAP_NAME(data_96_32x4), "sm511", __FILE__)
-{ }
+ : sm511_device(mconfig, SM511, tag, owner, clock, 2 /* stack levels */, 12 /* prg width */, ADDRESS_MAP_NAME(program_4k), 7 /* data width */, ADDRESS_MAP_NAME(data_96_32x4))
+{
+}
-sm511_device::sm511_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : sm510_base_device(mconfig, type, name, tag, owner, clock, stack_levels, prgwidth, program, datawidth, data, shortname, source)
-{ }
+sm511_device::sm511_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : sm510_base_device(mconfig, type, tag, owner, clock, stack_levels, prgwidth, program, datawidth, data)
+{
+}
sm512_device::sm512_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : sm511_device(mconfig, SM512, "SM512", tag, owner, clock, 2, 12, ADDRESS_MAP_NAME(program_4k), 7, ADDRESS_MAP_NAME(data_80_48x4), "sm512", __FILE__)
-{ }
+ : sm511_device(mconfig, SM512, tag, owner, clock, 2, 12, ADDRESS_MAP_NAME(program_4k), 7, ADDRESS_MAP_NAME(data_80_48x4))
+{
+}
diff --git a/src/devices/cpu/sm510/sm590.h b/src/devices/cpu/sm510/sm590.h
index 185e87a3e6c..57fd0e499ff 100644
--- a/src/devices/cpu/sm510/sm590.h
+++ b/src/devices/cpu/sm510/sm590.h
@@ -96,9 +96,10 @@ class sm590_device : public sm510_base_device
{
public:
sm590_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- sm590_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source);
protected:
+ sm590_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
virtual void device_reset() override;
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const u8 *oprom, const u8 *opram, u32 options) override;
virtual void init_divider() override;
@@ -184,7 +185,6 @@ protected:
};
-extern const device_type SM590;
-
+DECLARE_DEVICE_TYPE(SM590, sm590_device)
-#endif /* MAME_CPU_SM510_SM590_H */
+#endif // MAME_CPU_SM510_SM590_H
diff --git a/src/devices/cpu/sm510/sm590core.cpp b/src/devices/cpu/sm510/sm590core.cpp
index 0c26be887ce..97d54e66576 100644
--- a/src/devices/cpu/sm510/sm590core.cpp
+++ b/src/devices/cpu/sm510/sm590core.cpp
@@ -12,9 +12,9 @@
// MCU types
-const device_type SM590 = device_creator<sm590_device>;
-//const device_type SM591 = device_creator<sm591_device>;
-//const device_type SM595 = device_creator<sm595_device>;
+DEFINE_DEVICE_TYPE(SM590, sm590_device, "sm590", "SM590")
+//DEFINE_DEVICE_TYPE(SM591, sm591_device, "sm591", "SM591")
+//DEFINE_DEVICE_TYPE(SM595, sm595_device, "sm595", "SM595")
// internal memory maps
static ADDRESS_MAP_START(program_1x128x4, AS_PROGRAM, 8, sm510_base_device)
@@ -45,20 +45,24 @@ ADDRESS_MAP_END
// device definitions
sm590_device::sm590_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : sm510_base_device(mconfig, SM590, "SM590", tag, owner, clock, 4 /* stack levels */, 9 /* prg width */, ADDRESS_MAP_NAME(program_1x128x4), 5 /* data width */, ADDRESS_MAP_NAME(data_16x2x4), "sm590", __FILE__)
-{ }
+ : sm590_device(mconfig, SM590, tag, owner, clock, 4 /* stack levels */, 9 /* prg width */, ADDRESS_MAP_NAME(program_1x128x4), 5 /* data width */, ADDRESS_MAP_NAME(data_16x2x4))
+{
+}
-//sm590_device::sm591_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
-// : sm510_base_device(mconfig, SM591, "SM591", tag, owner, clock, 4 /* stack levels */, 10 /* prg width */, ADDRESS_MAP_NAME(program_2x128x4), 6 /* data width */, ADDRESS_MAP_NAME(data_16x3.5x4), "sm591", __FILE__)
-//{ }
+//sm591_device::sm591_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+// : sm510_base_device(mconfig, SM591, tag, owner, clock, 4 /* stack levels */, 10 /* prg width */, ADDRESS_MAP_NAME(program_2x128x4), 6 /* data width */, ADDRESS_MAP_NAME(data_16x3.5x4))
+//{
+//}
-//sm590_device::sm595_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
-// : sm510_base_device(mconfig, SM595, "SM595", tag, owner, clock, 4 /* stack levels */, 10 /* prg width */, ADDRESS_MAP_NAME(program_1x128x4_1x128x2), 5 /* data width */, ADDRESS_MAP_NAME(data_16x2x4), "sm595", __FILE__)
-//{ }
+//sm595_device::sm595_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+// : sm510_base_device(mconfig, SM595, tag, owner, clock, 4 /* stack levels */, 10 /* prg width */, ADDRESS_MAP_NAME(program_1x128x4_1x128x2), 5 /* data width */, ADDRESS_MAP_NAME(data_16x2x4))
+//{
+//}
-sm590_device::sm590_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : sm510_base_device(mconfig, type, name, tag, owner, clock, stack_levels, prgwidth, program, datawidth, data, shortname, source)
-{ }
+sm590_device::sm590_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : sm510_base_device(mconfig, type, tag, owner, clock, stack_levels, prgwidth, program, datawidth, data)
+{
+}
// disasm
diff --git a/src/devices/cpu/sm8500/sm8500.cpp b/src/devices/cpu/sm8500/sm8500.cpp
index e6dc66e6ec5..d7fecc10d31 100644
--- a/src/devices/cpu/sm8500/sm8500.cpp
+++ b/src/devices/cpu/sm8500/sm8500.cpp
@@ -20,26 +20,26 @@ they are internally.
*/
#include "emu.h"
-#include "debugger.h"
#include "sm8500.h"
+#include "debugger.h"
-const device_type SM8500 = device_creator<sm8500_cpu_device>;
+DEFINE_DEVICE_TYPE(SM8500, sm8500_cpu_device, "sm8500", "SM8500")
-static const uint8_t sm8500_b2w[8] = {
+static constexpr uint8_t sm8500_b2w[8] = {
0, 8, 2, 10, 4, 12, 6, 14
};
sm8500_cpu_device::sm8500_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SM8500, "SM8500", tag, owner, clock, "sm8500", __FILE__)
+ : cpu_device(mconfig, SM8500, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 8, 16, 0)
, m_dma_func(*this)
, m_timer_func(*this)
, m_PC(0), m_IE0(0), m_IE1(0), m_IR0(0), m_IR1(0)
- , m_SYS(0), m_CKC(0), m_clock_changed(0)
- , m_SP(0)
+ , m_SYS(0), m_CKC(0), m_clock_changed(0)
+ , m_SP(0)
, m_PS0(0)
, m_PS1(0), m_IFLAGS(0), m_CheckInterrupts(0), m_halted(0), m_icount(0), m_program(nullptr), m_oldpc(0)
{
diff --git a/src/devices/cpu/sm8500/sm8500.h b/src/devices/cpu/sm8500/sm8500.h
index 5baeed1cd66..b8889ce51e1 100644
--- a/src/devices/cpu/sm8500/sm8500.h
+++ b/src/devices/cpu/sm8500/sm8500.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#pragma once
+#ifndef MAME_CPU_SM8500_SM8500_H
+#define MAME_CPU_SM8500_SM8500_H
-#ifndef __SM8500_H__
-#define __SM8500_H__
+#pragma once
#define MCFG_SM8500_DMA_CB(_devcb) \
devcb = &sm8500_cpu_device::set_dma_cb(*device, DEVCB_##_devcb);
@@ -29,32 +29,32 @@ public:
sm8500_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_dma_cb(device_t &device, _Object object) { return downcast<sm8500_cpu_device &>(device).m_dma_func.set_callback(object); }
- template<class _Object> static devcb_base &set_timer_cb(device_t &device, _Object object) { return downcast<sm8500_cpu_device &>(device).m_timer_func.set_callback(object); }
+ template <class Object> static devcb_base &set_dma_cb(device_t &device, Object &&cb) { return downcast<sm8500_cpu_device &>(device).m_dma_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_timer_cb(device_t &device, Object &&cb) { return downcast<sm8500_cpu_device &>(device).m_timer_func.set_callback(std::forward<Object>(cb)); }
/* interrupts */
- static const int ILL_INT = 0;
- static const int DMA_INT = 1;
- static const int TIM0_INT = 2;
- static const int EXT_INT = 3;
- static const int UART_INT = 4;
- static const int LCDC_INT = 5;
- static const int TIM1_INT = 6;
- static const int CK_INT = 7;
- static const int PIO_INT = 8;
- static const int WDT_INT = 9;
- static const int NMI_INT = 10;
+ static constexpr int ILL_INT = 0;
+ static constexpr int DMA_INT = 1;
+ static constexpr int TIM0_INT = 2;
+ static constexpr int EXT_INT = 3;
+ static constexpr int UART_INT = 4;
+ static constexpr int LCDC_INT = 5;
+ static constexpr int TIM1_INT = 6;
+ static constexpr int CK_INT = 7;
+ static constexpr int PIO_INT = 8;
+ static constexpr int WDT_INT = 9;
+ static constexpr int NMI_INT = 10;
protected:
// Flags
- static const uint8_t FLAG_C = 0x80;
- static const uint8_t FLAG_Z = 0x40;
- static const uint8_t FLAG_S = 0x20;
- static const uint8_t FLAG_V = 0x10;
- static const uint8_t FLAG_D = 0x08;
- static const uint8_t FLAG_H = 0x04;
- static const uint8_t FLAG_B = 0x02;
- static const uint8_t FLAG_I = 0x01;
+ static constexpr uint8_t FLAG_C = 0x80;
+ static constexpr uint8_t FLAG_Z = 0x40;
+ static constexpr uint8_t FLAG_S = 0x20;
+ static constexpr uint8_t FLAG_V = 0x10;
+ static constexpr uint8_t FLAG_D = 0x08;
+ static constexpr uint8_t FLAG_H = 0x04;
+ static constexpr uint8_t FLAG_B = 0x02;
+ static constexpr uint8_t FLAG_I = 0x01;
// device-level overrides
virtual void device_start() override;
@@ -112,7 +112,6 @@ protected:
};
-extern const device_type SM8500;
-
+DECLARE_DEVICE_TYPE(SM8500, sm8500_cpu_device)
-#endif /* __SM8500_H__ */
+#endif // MAME_CPU_SM8500_SM8500_H
diff --git a/src/devices/cpu/sparc/mb86901.cpp b/src/devices/cpu/sparc/mb86901.cpp
index 69142f5e474..cc18ae551de 100644
--- a/src/devices/cpu/sparc/mb86901.cpp
+++ b/src/devices/cpu/sparc/mb86901.cpp
@@ -18,11 +18,13 @@
//================================================================
#include "emu.h"
-#include "debugger.h"
#include "sparc.h"
#include "sparcdefs.h"
-const device_type MB86901 = device_creator<mb86901_device>;
+#include "debugger.h"
+
+
+DEFINE_DEVICE_TYPE(MB86901, mb86901_device, "mb86901", "Fujitsu MB86901")
const int mb86901_device::NWINDOWS = 7;
@@ -39,7 +41,7 @@ const int mb86901_device::NWINDOWS = 7;
//-------------------------------------------------
mb86901_device::mb86901_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, MB86901, "Fujitsu MB86901", tag, owner, clock, "mb86901", __FILE__)
+ : cpu_device(mconfig, MB86901, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 32, 32)
, m_dasm(this, 7)
{
diff --git a/src/devices/cpu/sparc/sparc.h b/src/devices/cpu/sparc/sparc.h
index dbd7113f2e5..3eef8c29170 100644
--- a/src/devices/cpu/sparc/sparc.h
+++ b/src/devices/cpu/sparc/sparc.h
@@ -4,8 +4,8 @@
SPARC v7 emulator
*/
-#ifndef __SPARC_H__
-#define __SPARC_H__
+#ifndef MAME_CPU_SPARC_SPARC_H
+#define MAME_CPU_SPARC_SPARC_H
#pragma once
@@ -233,7 +233,7 @@ protected:
};
// device type definition
-extern const device_type MB86901;
+DECLARE_DEVICE_TYPE(MB86901, mb86901_device)
enum
{
@@ -290,4 +290,4 @@ enum
SPARC_RESET
};
-#endif /* __SPARC_H__ */
+#endif // MAME_CPU_SPARC_SPARC_H
diff --git a/src/devices/cpu/spc700/spc700.cpp b/src/devices/cpu/spc700/spc700.cpp
index 15700512a6e..410be9f41d4 100644
--- a/src/devices/cpu/spc700/spc700.cpp
+++ b/src/devices/cpu/spc700/spc700.cpp
@@ -62,11 +62,13 @@ Address Function Register R/W When Reset Remarks
/* ================================ INCLUDES ============================== */
/* ======================================================================== */
-#include <limits.h>
#include "emu.h"
-#include "debugger.h"
#include "spc700.h"
+#include "debugger.h"
+
+#include <limits.h>
+
/* ======================================================================== */
/* ==================== ARCHITECTURE-DEPENDANT DEFINES ==================== */
@@ -216,11 +218,11 @@ static inline int MAKE_INT_8(int A) {return (A & 0x80) ? A | ~0xff : A & 0xff;}
-const device_type SPC700 = device_creator<spc700_device>;
+DEFINE_DEVICE_TYPE(SPC700, spc700_device, "spc700", "SPC700")
spc700_device::spc700_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SPC700, "SPC700", tag, owner, clock, "spc700", __FILE__)
+ : cpu_device(mconfig, SPC700, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0)
, m_a(0)
, m_x(0)
diff --git a/src/devices/cpu/spc700/spc700.h b/src/devices/cpu/spc700/spc700.h
index ba1e064856d..bef136b2815 100644
--- a/src/devices/cpu/spc700/spc700.h
+++ b/src/devices/cpu/spc700/spc700.h
@@ -1,12 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:Karl Stenerud
-#pragma once
+#ifndef MAME_CPU_SPC700_SPC700_H
+#define MAME_CPU_SPC700_SPC700_H
-#ifndef __SPC700_H__
-#define __SPC700_H__
+#pragma once
-class spc700_device : public cpu_device
+class spc700_device : public cpu_device
{
public:
// construction/destruction
@@ -25,7 +25,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
@@ -109,7 +109,7 @@ private:
};
-extern const device_type SPC700;
+DECLARE_DEVICE_TYPE(SPC700, spc700_device)
/* ======================================================================== */
@@ -138,4 +138,4 @@ enum
/* ============================== END OF FILE ============================= */
/* ======================================================================== */
-#endif /* __SPC700_H__ */
+#endif // MAME_CPU_SPC700_SPC700_H
diff --git a/src/devices/cpu/ssem/ssem.cpp b/src/devices/cpu/ssem/ssem.cpp
index 92c85220bdf..c15b984c546 100644
--- a/src/devices/cpu/ssem/ssem.cpp
+++ b/src/devices/cpu/ssem/ssem.cpp
@@ -76,20 +76,20 @@ inline void ssem_device::program_write32(uint32_t address, uint32_t data)
/*****************************************************************************/
-const device_type SSEMCPU = device_creator<ssem_device>;
+DEFINE_DEVICE_TYPE(SSEMCPU, ssem_device, "ssem_cpu", "SSEM CPU")
//-------------------------------------------------
// ssem_device - constructor
//-------------------------------------------------
ssem_device::ssem_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SSEMCPU, "SSEMCPU", tag, owner, clock, "ssem_cpu", __FILE__),
- m_program_config("program", ENDIANNESS_LITTLE, 8, 16),
- m_pc(1),
- m_shifted_pc(1<<2),
- m_a(0),
- m_halt(0),
- m_icount(0)
+ : cpu_device(mconfig, SSEMCPU, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 8, 16)
+ , m_pc(1)
+ , m_shifted_pc(1<<2)
+ , m_a(0)
+ , m_halt(0)
+ , m_icount(0)
{
// Allocate & setup
}
diff --git a/src/devices/cpu/ssem/ssem.h b/src/devices/cpu/ssem/ssem.h
index 69118e1326d..a62d8bb79c9 100644
--- a/src/devices/cpu/ssem/ssem.h
+++ b/src/devices/cpu/ssem/ssem.h
@@ -6,10 +6,10 @@
Written by Ryan Holtz
*/
-#pragma once
+#ifndef MAME_CPU_SSEM_SSEM_H
+#define MAME_CPU_SSEM_SSEM_H
-#ifndef __SSEM_H__
-#define __SSEM_H__
+#pragma once
//**************************************************************************
// TYPE DEFINITIONS
@@ -24,6 +24,7 @@ public:
// construction/destruction
ssem_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -68,7 +69,7 @@ public:
};
// device type definition
-extern const device_type SSEMCPU;
+DECLARE_DEVICE_TYPE(SSEMCPU, ssem_device)
/***************************************************************************
REGISTER ENUMERATION
@@ -83,4 +84,4 @@ enum
CPU_DISASSEMBLE( ssem );
-#endif /* __SSEM_H__ */
+#endif // MAME_CPU_SSEM_SSEM_H
diff --git a/src/devices/cpu/ssp1601/ssp1601.cpp b/src/devices/cpu/ssp1601/ssp1601.cpp
index 4f000067e38..c50e75a1886 100644
--- a/src/devices/cpu/ssp1601/ssp1601.cpp
+++ b/src/devices/cpu/ssp1601/ssp1601.cpp
@@ -17,9 +17,10 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "ssp1601.h"
+#include "debugger.h"
+
/* detect ops with unimplemented/invalid fields.
* Useful for homebrew or if a new VR revision pops up. */
@@ -189,11 +190,11 @@
#endif
-const device_type SSP1601 = device_creator<ssp1601_device>;
+DEFINE_DEVICE_TYPE(SSP1601, ssp1601_device, "ssp1601", "SSP1601")
ssp1601_device::ssp1601_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SSP1601, "SSP1601", tag, owner, clock, "ssp1601", __FILE__)
+ : cpu_device(mconfig, SSP1601, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 16, 16, -1)
, m_io_config("io", ENDIANNESS_BIG, 16, 4, 0)
{
diff --git a/src/devices/cpu/ssp1601/ssp1601.h b/src/devices/cpu/ssp1601/ssp1601.h
index cf5029fcee5..7f241a83067 100644
--- a/src/devices/cpu/ssp1601/ssp1601.h
+++ b/src/devices/cpu/ssp1601/ssp1601.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Pierpaolo Prazzoli
-#pragma once
+#ifndef MAME_CPU_SSP1601_SSP1601_H
+#define MAME_CPU_SSP1601_SSP1601_H
-#ifndef __SSP1601_H__
-#define __SSP1601_H__
+#pragma once
enum
@@ -52,19 +52,21 @@ private:
address_space_config m_io_config;
PAIR m_gr[8]; /* general regs, some are 16bit, some 32bit */
- union {
- unsigned char m_r[8]; /* pointer registers, 4 for earch bank */
- struct {
- unsigned char m_r0[4];
- unsigned char m_r1[4];
- } regs;
+ union
+ {
+ unsigned char m_r[8]; /* pointer registers, 4 for earch bank */
+ struct {
+ unsigned char m_r0[4];
+ unsigned char m_r1[4];
+ } regs;
};
- union {
- unsigned short m_RAM[256*2]; /* 2 256-word internal RAM banks */
- struct {
- unsigned short m_RAM0[256];
- unsigned short m_RAM1[256];
- } mem;
+ union
+ {
+ unsigned short m_RAM[256*2]; /* 2 256-word internal RAM banks */
+ struct {
+ unsigned short m_RAM0[256];
+ unsigned short m_RAM1[256];
+ } mem;
};
uint16_t m_stack[6]; /* 6-level hardware stack */
PAIR m_ppc;
@@ -101,7 +103,6 @@ private:
};
-extern const device_type SSP1601;
-
+DECLARE_DEVICE_TYPE(SSP1601, ssp1601_device)
-#endif /* __SSP1601_H__ */
+#endif // MAME_CPU_SSP1601_SSP1601_H
diff --git a/src/devices/cpu/superfx/superfx.cpp b/src/devices/cpu/superfx/superfx.cpp
index d9487630348..a44d8bd7781 100644
--- a/src/devices/cpu/superfx/superfx.cpp
+++ b/src/devices/cpu/superfx/superfx.cpp
@@ -5,14 +5,14 @@
#include "superfx.h"
-const device_type SUPERFX = device_creator<superfx_device>;
+DEFINE_DEVICE_TYPE(SUPERFX, superfx_device, "superfx", "SuperFX")
superfx_device::superfx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, SUPERFX, "SuperFX", tag, owner, clock, "superfx", __FILE__)
+ : cpu_device(mconfig, SUPERFX, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 32, 0)
- , m_out_irq_func(*this), m_pipeline(0), m_ramaddr(0), m_sfr(0), m_pbr(0), m_rombr(0), m_rambr(0), m_cbr(0), m_scbr(0), m_scmr(0), m_colr(0), m_por(0),
- m_bramr(0), m_vcr(0), m_cfgr(0), m_clsr(0), m_romcl(0), m_romdr(0), m_ramcl(0), m_ramar(0), m_ramdr(0), m_sreg(nullptr), m_sreg_idx(0), m_dreg(nullptr),
- m_dreg_idx(0), m_r15_modified(0), m_irq(0), m_cache_access_speed(0), m_memory_access_speed(0), m_program(nullptr), m_icount(0), m_debugger_temp(0)
+ , m_out_irq_func(*this), m_pipeline(0), m_ramaddr(0), m_sfr(0), m_pbr(0), m_rombr(0), m_rambr(0), m_cbr(0), m_scbr(0), m_scmr(0), m_colr(0), m_por(0)
+ , m_bramr(0), m_vcr(0), m_cfgr(0), m_clsr(0), m_romcl(0), m_romdr(0), m_ramcl(0), m_ramar(0), m_ramdr(0), m_sreg(nullptr), m_sreg_idx(0), m_dreg(nullptr)
+ , m_dreg_idx(0), m_r15_modified(0), m_irq(0), m_cache_access_speed(0), m_memory_access_speed(0), m_program(nullptr), m_icount(0), m_debugger_temp(0)
{
}
diff --git a/src/devices/cpu/superfx/superfx.h b/src/devices/cpu/superfx/superfx.h
index 13dd042ffea..f17c0e8349e 100644
--- a/src/devices/cpu/superfx/superfx.h
+++ b/src/devices/cpu/superfx/superfx.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Ryan Holtz
-#ifndef __SUPERFX_H__
-#define __SUPERFX_H__
+#ifndef MAME_CPU_SUPERFX_SUPERFX_H
+#define MAME_CPU_SUPERFX_SUPERFX_H
+
+#pragma once
enum
@@ -97,7 +99,7 @@ public:
superfx_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_out_irq_func(device_t &device, _Object object) { return downcast<superfx_device &>(device).m_out_irq_func.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_func(device_t &device, Object &&cb) { return downcast<superfx_device &>(device).m_out_irq_func.set_callback(std::forward<Object>(cb)); }
uint8_t mmio_read(uint32_t addr);
void mmio_write(uint32_t addr, uint8_t data);
@@ -212,8 +214,8 @@ private:
};
-extern const device_type SUPERFX;
+DECLARE_DEVICE_TYPE(SUPERFX, superfx_device)
offs_t superfx_dasm_one(std::ostream &stream, offs_t pc, uint8_t op, uint8_t param0, uint8_t param1, uint16_t alt);
-#endif /* __SUPERFX_H__ */
+#endif // MAME_CPU_SUPERFX_SUPERFX_H
diff --git a/src/devices/cpu/t11/t11.cpp b/src/devices/cpu/t11/t11.cpp
index f02649af571..9ff4654cce7 100644
--- a/src/devices/cpu/t11/t11.cpp
+++ b/src/devices/cpu/t11/t11.cpp
@@ -12,8 +12,8 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "t11.h"
+#include "debugger.h"
/*************************************
@@ -35,17 +35,17 @@
#define PSW m_psw.b.l
-const device_type T11 = device_creator<t11_device>;
-const device_type K1801VM2 = device_creator<k1801vm2_device>;
+DEFINE_DEVICE_TYPE(T11, t11_device, "t11", "T11")
+DEFINE_DEVICE_TYPE(K1801VM2, k1801vm2_device, "k1801vm2", "K1801VM2")
k1801vm2_device::k1801vm2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : t11_device(mconfig, K1801VM2, "K1801VM2", tag, owner, clock, "k1801vm2", __FILE__)
+ : t11_device(mconfig, K1801VM2, tag, owner, clock)
{
}
-t11_device::t11_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+t11_device::t11_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 16, 0)
, c_initial_mode(0)
, m_out_reset_func(*this)
@@ -56,14 +56,8 @@ t11_device::t11_device(const machine_config &mconfig, device_type type, const ch
}
t11_device::t11_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, T11, "T11", tag, owner, clock, "t11", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 16, 16, 0)
- , c_initial_mode(0)
- , m_out_reset_func(*this)
+ : t11_device(mconfig, T11, tag, owner, clock)
{
- m_program_config.m_is_octal = true;
- memset(m_reg, 0x00, sizeof(m_reg));
- memset(&m_psw, 0x00, sizeof(m_psw));
}
diff --git a/src/devices/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h
index a25f35f1a17..dbf62e6f5e5 100644
--- a/src/devices/cpu/t11/t11.h
+++ b/src/devices/cpu/t11/t11.h
@@ -2,10 +2,10 @@
// copyright-holders:Aaron Giles
/*** T-11: Portable DEC T-11 emulator ******************************************/
-#pragma once
+#ifndef MAME_CPU_T11_T11_H
+#define MAME_CPU_T11_T11_H
-#ifndef __T11_H__
-#define __T11_H__
+#pragma once
enum
@@ -39,13 +39,14 @@ class t11_device : public cpu_device
public:
// construction/destruction
t11_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
- t11_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// static configuration helpers
static void set_initial_mode(device_t &device, const uint16_t mode) { downcast<t11_device &>(device).c_initial_mode = mode; }
- template<class _Object> static devcb_base &set_out_reset_func(device_t &device, _Object object) { return downcast<t11_device &>(device).m_out_reset_func.set_callback(object); }
+ template <class Object> static devcb_base &set_out_reset_func(device_t &device, Object &&cb) { return downcast<t11_device &>(device).m_out_reset_func.set_callback(std::forward<Object>(cb)); }
protected:
+ t11_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -69,7 +70,6 @@ protected:
virtual uint32_t disasm_max_opcode_bytes() const override { return 6; }
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
-protected:
address_space_config m_program_config;
uint16_t c_initial_mode;
@@ -1153,8 +1153,7 @@ protected:
};
-extern const device_type T11;
-extern const device_type K1801VM2;
-
+DECLARE_DEVICE_TYPE(T11, t11_device)
+DECLARE_DEVICE_TYPE(K1801VM2, k1801vm2_device)
-#endif /* __T11_H__ */
+#endif // MAME_CPU_T11_T11_H
diff --git a/src/devices/cpu/tlcs870/tlcs870.cpp b/src/devices/cpu/tlcs870/tlcs870.cpp
index 04d1e99568c..62f7a8de450 100644
--- a/src/devices/cpu/tlcs870/tlcs870.cpp
+++ b/src/devices/cpu/tlcs870/tlcs870.cpp
@@ -15,8 +15,8 @@
#include "emu.h"
-#include "debugger.h"
#include "tlcs870.h"
+#include "debugger.h"
// di, ei, j, and test are just 'alias' opcodes
@@ -150,7 +150,7 @@ static const char *const reg16p[] = {
-const device_type TMP87PH40AN = device_creator<tmp87ph40an_device>;
+DEFINE_DEVICE_TYPE(TMP87PH40AN, tmp87ph40an_device, "tmp87ph40an", "TMP87PH40AN")
static ADDRESS_MAP_START(tmp87ph40an_mem, AS_PROGRAM, 8, tlcs870_device)
#if 0
@@ -233,8 +233,8 @@ static ADDRESS_MAP_START(tmp87ph40an_mem, AS_PROGRAM, 8, tlcs870_device)
ADDRESS_MAP_END
-tlcs870_device::tlcs870_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_constructor program_map)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+tlcs870_device::tlcs870_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor program_map)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0, program_map)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 16, 0)
, m_intram(*this, "intram")
@@ -243,7 +243,7 @@ tlcs870_device::tlcs870_device(const machine_config &mconfig, device_type type,
tmp87ph40an_device::tmp87ph40an_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tlcs870_device(mconfig, TMP87PH40AN, "TMP87PH40AN", tag, owner, clock, "tmp87ph40an", __FILE__, ADDRESS_MAP_NAME(tmp87ph40an_mem))
+ : tlcs870_device(mconfig, TMP87PH40AN, tag, owner, clock, ADDRESS_MAP_NAME(tmp87ph40an_mem))
{
}
diff --git a/src/devices/cpu/tlcs870/tlcs870.h b/src/devices/cpu/tlcs870/tlcs870.h
index 43c31ce9cce..7d93d2abf22 100644
--- a/src/devices/cpu/tlcs870/tlcs870.h
+++ b/src/devices/cpu/tlcs870/tlcs870.h
@@ -1,17 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
-#pragma once
+#ifndef MAME_CPU_TLCS870_TLCS870_H
+#define MAME_CPU_TLCS870_TLCS870_H
-#ifndef TLCS870_H
-#define TLCS870_H
+#pragma once
class tlcs870_device : public cpu_device
{
-public:
- // construction/destruction
- tlcs870_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_constructor program_map);
-
-
protected:
enum _e_op {
UNKNOWN = 0x00,
@@ -87,7 +82,8 @@ protected:
COND_F
};
- uint32_t m_debugger_temp;
+ // construction/destruction
+ tlcs870_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor program_map);
// device-level overrides
virtual void device_start() override;
@@ -115,9 +111,10 @@ protected:
virtual void disasm_disassemble_param(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options, int type, uint16_t val);
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
-private:
+ uint32_t m_debugger_temp;
+private:
address_space_config m_program_config;
address_space_config m_io_config;
required_shared_ptr<uint8_t> m_intram;
@@ -187,7 +184,6 @@ public:
};
+DECLARE_DEVICE_TYPE(TMP87PH40AN, tmp87ph40an_device)
-extern const device_type TMP87PH40AN;
-
-#endif /* TLCS870_H */
+#endif // MAME_CPU_TLCS870_TLCS870_H
diff --git a/src/devices/cpu/tlcs90/tlcs90.cpp b/src/devices/cpu/tlcs90/tlcs90.cpp
index fa66e90025c..0fbbeaa2eb9 100644
--- a/src/devices/cpu/tlcs90/tlcs90.cpp
+++ b/src/devices/cpu/tlcs90/tlcs90.cpp
@@ -21,12 +21,12 @@ static const char *const op_names[] = { "??", "nop", "ex", "exx",
ALLOW_SAVE_TYPE(tlcs90_device::e_mode); // allow save_item on a non-fundamental type
-const device_type TMP90840 = device_creator<tmp90840_device>;
-const device_type TMP90841 = device_creator<tmp90841_device>;
-const device_type TMP90845 = device_creator<tmp90845_device>;
-const device_type TMP91640 = device_creator<tmp91640_device>;
-const device_type TMP91641 = device_creator<tmp91641_device>;
-const device_type TMP90PH44 = device_creator<tmp90ph44_device>;
+DEFINE_DEVICE_TYPE(TMP90840, tmp90840_device, "tmp90840", "TMP90840")
+DEFINE_DEVICE_TYPE(TMP90841, tmp90841_device, "tmp90841", "TMP90841")
+DEFINE_DEVICE_TYPE(TMP90845, tmp90845_device, "tmp90845", "TMP90845")
+DEFINE_DEVICE_TYPE(TMP91640, tmp91640_device, "tmp91640", "TMP91640")
+DEFINE_DEVICE_TYPE(TMP91641, tmp91641_device, "tmp91641", "TMP91641")
+DEFINE_DEVICE_TYPE(TMP90PH44, tmp90ph44_device, "tmp90ph44", "TMP90PH44")
static ADDRESS_MAP_START(tmp90840_mem, AS_PROGRAM, 8, tlcs90_device)
@@ -60,8 +60,8 @@ static ADDRESS_MAP_START(tmp90ph44_mem, AS_PROGRAM, 8, tlcs90_device )
ADDRESS_MAP_END
-tlcs90_device::tlcs90_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_constructor program_map)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+tlcs90_device::tlcs90_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor program_map)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 20, 0, program_map)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 16, 0)
{
@@ -69,36 +69,36 @@ tlcs90_device::tlcs90_device(const machine_config &mconfig, device_type type, co
tmp90840_device::tmp90840_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tlcs90_device(mconfig, TMP90840, "TMP90840", tag, owner, clock, "tmp90840", __FILE__, ADDRESS_MAP_NAME(tmp90840_mem))
+ : tlcs90_device(mconfig, TMP90840, tag, owner, clock, ADDRESS_MAP_NAME(tmp90840_mem))
{
}
tmp90841_device::tmp90841_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tlcs90_device(mconfig, TMP90841, "TMP90841", tag, owner, clock, "tmp90841", __FILE__, ADDRESS_MAP_NAME(tmp90841_mem))
+ : tlcs90_device(mconfig, TMP90841, tag, owner, clock, ADDRESS_MAP_NAME(tmp90841_mem))
{
}
tmp90845_device::tmp90845_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tlcs90_device(mconfig, TMP90845, "TMP90845", tag, owner, clock, "tmp90845", __FILE__, ADDRESS_MAP_NAME(tmp90841_mem))
+ : tlcs90_device(mconfig, TMP90845, tag, owner, clock, ADDRESS_MAP_NAME(tmp90841_mem))
{
}
tmp91640_device::tmp91640_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tlcs90_device(mconfig, TMP91640, "TMP91640", tag, owner, clock, "tmp91640", __FILE__, ADDRESS_MAP_NAME(tmp91640_mem))
+ : tlcs90_device(mconfig, TMP91640, tag, owner, clock, ADDRESS_MAP_NAME(tmp91640_mem))
{
}
tmp91641_device::tmp91641_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tlcs90_device(mconfig, TMP91641, "TMP91641", tag, owner, clock, "tmp91641", __FILE__, ADDRESS_MAP_NAME(tmp91641_mem))
+ : tlcs90_device(mconfig, TMP91641, tag, owner, clock, ADDRESS_MAP_NAME(tmp91641_mem))
{
}
tmp90ph44_device::tmp90ph44_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tlcs90_device(mconfig, TMP90PH44, "TMP90PH44", tag, owner, clock, "tmp90ph44", __FILE__, ADDRESS_MAP_NAME(tmp90ph44_mem))
+ : tlcs90_device(mconfig, TMP90PH44, tag, owner, clock, ADDRESS_MAP_NAME(tmp90ph44_mem))
{
}
diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h
index 286ea9ee305..9131e60003c 100644
--- a/src/devices/cpu/tlcs90/tlcs90.h
+++ b/src/devices/cpu/tlcs90/tlcs90.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Luca Elia
-#pragma once
+#ifndef MAME_CPU_TLCS90_TLCS90_H
+#define MAME_CPU_TLCS90_TLCS90_H
-#ifndef __TLCS90_H__
-#define __TLCS90_H__
+#pragma once
#define T90_IOBASE 0xffc0
@@ -24,9 +24,6 @@ DECLARE_ENUM_OPERATORS(tlcs90_e_irq)
class tlcs90_device : public cpu_device
{
public:
- // construction/destruction
- tlcs90_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_constructor program_map);
-
DECLARE_READ8_MEMBER( t90_internal_registers_r );
DECLARE_WRITE8_MEMBER( t90_internal_registers_w );
@@ -36,6 +33,9 @@ public:
protected:
enum _e_op { UNKNOWN, NOP, EX, EXX, LD, LDW, LDA, LDI, LDIR, LDD, LDDR, CPI, CPIR, CPD, CPDR, PUSH, POP, JP, JR, CALL, CALLR, RET, RETI, HALT, DI, EI, SWI, DAA, CPL, NEG, LDAR, RCF, SCF, CCF, TSET, BIT, SET, RES, INC, DEC, INCX, DECX, INCW, DECW, ADD, ADC, SUB, SBC, AND, XOR, OR, CP, RLC, RRC, RL, RR, SLA, SRA, SLL, SRL, RLD, RRD, DJNZ, MUL, DIV };
+ // construction/destruction
+ tlcs90_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor program_map);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -191,11 +191,11 @@ public:
};
-extern const device_type TMP90840;
-extern const device_type TMP90841;
-extern const device_type TMP90845;
-extern const device_type TMP91640;
-extern const device_type TMP91641;
-extern const device_type TMP90PH44;
+DECLARE_DEVICE_TYPE(TMP90840, tmp90840_device)
+DECLARE_DEVICE_TYPE(TMP90841, tmp90841_device)
+DECLARE_DEVICE_TYPE(TMP90845, tmp90845_device)
+DECLARE_DEVICE_TYPE(TMP91640, tmp91640_device)
+DECLARE_DEVICE_TYPE(TMP91641, tmp91641_device)
+DECLARE_DEVICE_TYPE(TMP90PH44, tmp90ph44_device)
-#endif /* __TLCS90_H__ */
+#endif // MAME_CPU_TLCS90_TLCS90_H
diff --git a/src/devices/cpu/tlcs900/tlcs900.cpp b/src/devices/cpu/tlcs900/tlcs900.cpp
index 96031d0637e..d627fcf044e 100644
--- a/src/devices/cpu/tlcs900/tlcs900.cpp
+++ b/src/devices/cpu/tlcs900/tlcs900.cpp
@@ -16,12 +16,12 @@ TODO:
*******************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "tlcs900.h"
+#include "debugger.h"
-const device_type TMP95C061 = device_creator<tmp95c061_device>;
-const device_type TMP95C063 = device_creator<tmp95c063_device>;
+DEFINE_DEVICE_TYPE(TMP95C061, tmp95c061_device, "tmp95c061", "TMP95C061")
+DEFINE_DEVICE_TYPE(TMP95C063, tmp95c063_device, "tmp95c063", "TMP95C063")
static ADDRESS_MAP_START( tmp95c061_mem8, AS_PROGRAM, 8, tmp95c061_device )
@@ -42,14 +42,14 @@ static ADDRESS_MAP_START(tmp95c063_mem16, AS_PROGRAM, 16, tmp95c063_device )
ADDRESS_MAP_END
-tlcs900h_device::tlcs900h_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+tlcs900h_device::tlcs900h_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_am8_16(0)
{
}
tmp95c061_device::tmp95c061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tlcs900h_device(mconfig, TMP95C061, "TMP95C061", tag, owner, clock, "tmp95c061" ),
+ : tlcs900h_device(mconfig, TMP95C061, tag, owner, clock),
m_port1_read(*this),
m_port1_write(*this),
m_port2_write(*this),
@@ -88,7 +88,7 @@ void tmp95c061_device::device_config_complete()
}
tmp95c063_device::tmp95c063_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tlcs900h_device(mconfig, TMP95C063, "TMP95C063", tag, owner, clock, "tmp95c063"),
+ : tlcs900h_device(mconfig, TMP95C063, tag, owner, clock),
m_port1_read(*this),
m_port1_write(*this),
m_port2_write(*this),
diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h
index 6c922ce66dc..197b11f1398 100644
--- a/src/devices/cpu/tlcs900/tlcs900.h
+++ b/src/devices/cpu/tlcs900/tlcs900.h
@@ -1,8 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#ifndef __TLCS900_H__
-#define __TLCS900_H__
+#ifndef MAME_CPU_TLCS900_TLCS900_H
+#define MAME_CPU_TLCS900_TLCS900_H
+#pragma once
enum tlcs900_inputs
@@ -39,8 +40,8 @@ enum
};
-extern const device_type TMP95C061;
-extern const device_type TMP95C063;
+DECLARE_DEVICE_TYPE(TMP95C061, tmp95c061_device)
+DECLARE_DEVICE_TYPE(TMP95C063, tmp95c063_device)
#define MCFG_TLCS900H_AM8_16( am8_16 ) tlcs900h_device::set_am8_16( *device, am8_16 );
@@ -48,13 +49,13 @@ extern const device_type TMP95C063;
class tlcs900h_device : public cpu_device
{
public:
- // construction/destruction
- tlcs900h_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
-
// static configuration helpers
static void set_am8_16(device_t &device, int am8_16) { downcast<tlcs900h_device &>(device).m_am8_16 = am8_16; }
protected:
+ // construction/destruction
+ tlcs900h_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
@@ -655,21 +656,21 @@ public:
tmp95c061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_port1_read(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port1_read.set_callback(object); }
- template<class _Object> static devcb_base &set_port1_write(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port1_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port2_write(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port2_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port5_read(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port5_read.set_callback(object); }
- template<class _Object> static devcb_base &set_port5_write(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port5_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port6_write(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port6_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port7_read(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port7_read.set_callback(object); }
- template<class _Object> static devcb_base &set_port7_write(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port7_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port8_read(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port8_read.set_callback(object); }
- template<class _Object> static devcb_base &set_port8_write(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port8_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port9_read(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_port9_read.set_callback(object); }
- template<class _Object> static devcb_base &set_porta_read(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_porta_read.set_callback(object); }
- template<class _Object> static devcb_base &set_porta_write(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_porta_write.set_callback(object); }
- template<class _Object> static devcb_base &set_portb_read(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_portb_read.set_callback(object); }
- template<class _Object> static devcb_base &set_portb_write(device_t &device, _Object object) { return downcast<tmp95c061_device &>(device).m_portb_write.set_callback(object); }
+ template <class Object> static devcb_base &set_port1_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port1_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port1_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port1_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port2_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port2_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port5_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port5_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port5_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port5_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port6_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port6_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port7_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port7_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port7_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port7_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port8_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port8_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port8_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port8_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port9_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port9_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_porta_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_porta_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_porta_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_porta_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portb_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_portb_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portb_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_portb_write.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( internal_r );
DECLARE_WRITE8_MEMBER( internal_w );
@@ -778,36 +779,36 @@ public:
DECLARE_WRITE8_MEMBER( internal_w );
// static configuration helpers
- template<class _Object> static devcb_base &set_port1_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port1_read.set_callback(object); }
- template<class _Object> static devcb_base &set_port1_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port1_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port2_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port2_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port5_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port5_read.set_callback(object); }
- template<class _Object> static devcb_base &set_port5_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port5_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port6_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port6_read.set_callback(object); }
- template<class _Object> static devcb_base &set_port6_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port6_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port7_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port7_read.set_callback(object); }
- template<class _Object> static devcb_base &set_port7_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port7_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port8_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port8_read.set_callback(object); }
- template<class _Object> static devcb_base &set_port8_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port8_write.set_callback(object); }
- template<class _Object> static devcb_base &set_port9_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port9_read.set_callback(object); }
- template<class _Object> static devcb_base &set_port9_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_port9_write.set_callback(object); }
- template<class _Object> static devcb_base &set_porta_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_porta_read.set_callback(object); }
- template<class _Object> static devcb_base &set_porta_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_porta_write.set_callback(object); }
- template<class _Object> static devcb_base &set_portb_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_portb_read.set_callback(object); }
- template<class _Object> static devcb_base &set_portb_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_portb_write.set_callback(object); }
- template<class _Object> static devcb_base &set_portc_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_portc_read.set_callback(object); }
- template<class _Object> static devcb_base &set_portd_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_portd_read.set_callback(object); }
- template<class _Object> static devcb_base &set_portd_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_portd_write.set_callback(object); }
- template<class _Object> static devcb_base &set_porte_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_porte_read.set_callback(object); }
- template<class _Object> static devcb_base &set_porte_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_porte_write.set_callback(object); }
- template<class _Object> static devcb_base &set_an0_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an0_read.set_callback(object); }
- template<class _Object> static devcb_base &set_an1_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an1_read.set_callback(object); }
- template<class _Object> static devcb_base &set_an2_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an2_read.set_callback(object); }
- template<class _Object> static devcb_base &set_an3_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an3_read.set_callback(object); }
- template<class _Object> static devcb_base &set_an4_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an4_read.set_callback(object); }
- template<class _Object> static devcb_base &set_an5_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an5_read.set_callback(object); }
- template<class _Object> static devcb_base &set_an6_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an6_read.set_callback(object); }
- template<class _Object> static devcb_base &set_an7_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an7_read.set_callback(object); }
+ template <class Object> static devcb_base &set_port1_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port1_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port1_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port1_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port2_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port2_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port5_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port5_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port5_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port5_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port6_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port6_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port6_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port6_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port7_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port7_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port7_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port7_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port8_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port8_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port8_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port8_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port9_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port9_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port9_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port9_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_porta_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porta_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_porta_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porta_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portb_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portb_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portb_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portb_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portc_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portc_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portd_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portd_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portd_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portd_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_porte_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porte_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_porte_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porte_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an0_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an0_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an1_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an1_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an2_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an2_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an3_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an3_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an4_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an4_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an5_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an5_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an6_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an6_read.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an7_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an7_read.set_callback(std::forward<Object>(cb)); }
protected:
virtual void device_config_complete() override;
@@ -878,4 +879,4 @@ private:
devcb_read16 m_an7_read;
};
-#endif
+#endif // MAME_CPU_TLCS900_TLCS900_H
diff --git a/src/devices/cpu/tms1000/tms0270.cpp b/src/devices/cpu/tms1000/tms0270.cpp
index c7dec0f2544..b92bdaef1d6 100644
--- a/src/devices/cpu/tms1000/tms0270.cpp
+++ b/src/devices/cpu/tms1000/tms0270.cpp
@@ -15,7 +15,7 @@
// - 64-term microinstructions PLA between the RAM and ROM, similar to TMS0980,
// plus optional separate lines for custom opcode handling
// - 48-term output PLA above the RAM (rotate opla 90 degrees)
-const device_type TMS0270 = device_creator<tms0270_cpu_device>; // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O)
+DEFINE_DEVICE_TYPE(TMS0270, tms0270_cpu_device, "tms0270", "TMS0270") // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O)
// newer TMS0270 chips (eg. Speak & Math) have 42 pins
// TMS0260 is same or similar?
@@ -34,11 +34,12 @@ ADDRESS_MAP_END
// device definitions
tms0270_cpu_device::tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms0980_cpu_device(mconfig, TMS0270, "TMS0270", tag, owner, clock, 16 /* o pins */, 16 /* r pins */, 7 /* pc bits */, 9 /* byte width */, 4 /* x width */, 12 /* prg width */, ADDRESS_MAP_NAME(program_11bit_9), 8 /* data width */, ADDRESS_MAP_NAME(data_144x4), "tms0270", __FILE__)
+ : tms0980_cpu_device(mconfig, TMS0270, tag, owner, clock, 16 /* o pins */, 16 /* r pins */, 7 /* pc bits */, 9 /* byte width */, 4 /* x width */, 12 /* prg width */, ADDRESS_MAP_NAME(program_11bit_9), 8 /* data width */, ADDRESS_MAP_NAME(data_144x4))
, m_read_ctl(*this)
, m_write_ctl(*this)
, m_write_pdc(*this)
-{ }
+{
+}
// machine configs
@@ -46,11 +47,11 @@ static MACHINE_CONFIG_FRAGMENT(tms0270)
// main opcodes PLA, microinstructions PLA, output PLA
MCFG_PLA_ADD("ipla", 9, 22, 24)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("mpla", 6, 22, 64)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("opla", 6, 16, 48)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MACHINE_CONFIG_END
machine_config_constructor tms0270_cpu_device::device_mconfig_additions() const
diff --git a/src/devices/cpu/tms1000/tms0270.h b/src/devices/cpu/tms1000/tms0270.h
index b60395c6329..e8e1d804aa3 100644
--- a/src/devices/cpu/tms1000/tms0270.h
+++ b/src/devices/cpu/tms1000/tms0270.h
@@ -6,8 +6,10 @@
*/
-#ifndef _TMS0270_H_
-#define _TMS0270_H_
+#ifndef MAME_CPU_TMS1000_TMS0270_H
+#define MAME_CPU_TMS1000_TMS0270_H
+
+#pragma once
#include "tms0980.h"
@@ -29,9 +31,9 @@ public:
tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_read_ctl_callback(device_t &device, _Object object) { return downcast<tms0270_cpu_device &>(device).m_read_ctl.set_callback(object); }
- template<class _Object> static devcb_base &set_write_ctl_callback(device_t &device, _Object object) { return downcast<tms0270_cpu_device &>(device).m_write_ctl.set_callback(object); }
- template<class _Object> static devcb_base &set_write_pdc_callback(device_t &device, _Object object) { return downcast<tms0270_cpu_device &>(device).m_write_pdc.set_callback(object); }
+ template <class Object> static devcb_base &set_read_ctl_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_read_ctl.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_ctl_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_write_ctl.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_pdc_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_write_pdc.set_callback(std::forward<Object>(cb)); }
protected:
// overrides
@@ -66,6 +68,6 @@ private:
};
-extern const device_type TMS0270;
+DECLARE_DEVICE_TYPE(TMS0270, tms0270_cpu_device)
-#endif /* _TMS0270_H_ */
+#endif // MAME_CPU_TMS1000_TMS0270_H
diff --git a/src/devices/cpu/tms1000/tms0970.cpp b/src/devices/cpu/tms1000/tms0970.cpp
index c4fbd7618df..305e3e98260 100644
--- a/src/devices/cpu/tms1000/tms0970.cpp
+++ b/src/devices/cpu/tms1000/tms0970.cpp
@@ -13,7 +13,7 @@
// TMS0950 is a TMS1000 with a TMS0980 style opla, it was quickly succeeded by the TMS0970
// - RAM, ROM, microinstructions is the same as TMS1000
// - 10-term inverted output PLA and segment PLA on the top-left
-const device_type TMS0950 = device_creator<tms0950_cpu_device>; // 28-pin DIP, 8 O pins, 11? R pins
+DEFINE_DEVICE_TYPE(TMS0950, tms0950_cpu_device, "tms0950", "TMS0950") // 28-pin DIP, 8 O pins, 11? R pins
// TMS0970 is a stripped-down version of the TMS0980, itself acting more like a TMS1000
// - RAM and ROM is the same as TMS1000
@@ -22,8 +22,8 @@ const device_type TMS0950 = device_creator<tms0950_cpu_device>; // 28-pin DIP, 8
// RETN, SETR, RBIT, SBIT, LDX, COMX, TDO, ..., redir(----0-00), LDP
// - 32-term microinstructions PLA between the RAM and ROM, supporting 15 microinstructions
// - 16-term inverted output PLA and segment PLA above the RAM (rotate opla 90 degrees)
-const device_type TMS0970 = device_creator<tms0970_cpu_device>; // 28-pin DIP, 11 R pins (note: pinout may slightly differ from chip to chip)
-const device_type TMS1990 = device_creator<tms1990_cpu_device>; // 28-pin DIP, ? R pins..
+DEFINE_DEVICE_TYPE(TMS0970, tms0970_cpu_device, "tms0970", "TMS0970") // 28-pin DIP, 11 R pins (note: pinout may slightly differ from chip to chip)
+DEFINE_DEVICE_TYPE(TMS1990, tms1990_cpu_device, "tms1990", "TMS1990") // 28-pin DIP, ? R pins..
// internal memory maps
@@ -38,20 +38,24 @@ ADDRESS_MAP_END
// device definitions
tms0970_cpu_device::tms0970_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1000_cpu_device(mconfig, TMS0970, "TMS0970", tag, owner, clock, 8 /* o pins */, 11 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 2 /* x width */, 10 /* prg width */, ADDRESS_MAP_NAME(program_10bit_8), 6 /* data width */, ADDRESS_MAP_NAME(data_64x4), "tms0970", __FILE__)
-{ }
+ : tms0970_cpu_device(mconfig, TMS0970, tag, owner, clock, 8 /* o pins */, 11 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 2 /* x width */, 10 /* prg width */, ADDRESS_MAP_NAME(program_10bit_8), 6 /* data width */, ADDRESS_MAP_NAME(data_64x4))
+{
+}
-tms0970_cpu_device::tms0970_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : tms1000_cpu_device(mconfig, type, name, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data, shortname, source)
-{ }
+tms0970_cpu_device::tms0970_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : tms1000_cpu_device(mconfig, type, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data)
+{
+}
tms0950_cpu_device::tms0950_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms0970_cpu_device(mconfig, TMS0950, "TMS0950", tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "tms0950", __FILE__)
-{ }
+ : tms0970_cpu_device(mconfig, TMS0950, tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4))
+{
+}
tms1990_cpu_device::tms1990_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms0970_cpu_device(mconfig, TMS1990, "TMS1990", tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "tms1990", __FILE__)
-{ }
+ : tms0970_cpu_device(mconfig, TMS1990, tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4))
+{
+}
// machine configs
@@ -59,11 +63,11 @@ static MACHINE_CONFIG_FRAGMENT(tms0950)
// microinstructions PLA, output PLA, segment PLA
MCFG_PLA_ADD("mpla", 8, 16, 30)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("opla", 4, 8, 10)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("spla", 3, 8, 8)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MACHINE_CONFIG_END
machine_config_constructor tms0950_cpu_device::device_mconfig_additions() const
@@ -75,13 +79,13 @@ static MACHINE_CONFIG_FRAGMENT(tms0970)
// main opcodes PLA, microinstructions PLA, output PLA, segment PLA
MCFG_PLA_ADD("ipla", 8, 15, 18)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("mpla", 5, 15, 32)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("opla", 4, 8, 16)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("spla", 3, 8, 8)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MACHINE_CONFIG_END
machine_config_constructor tms0970_cpu_device::device_mconfig_additions() const
diff --git a/src/devices/cpu/tms1000/tms0970.h b/src/devices/cpu/tms1000/tms0970.h
index ca436163374..3fb46975a3e 100644
--- a/src/devices/cpu/tms1000/tms0970.h
+++ b/src/devices/cpu/tms1000/tms0970.h
@@ -6,8 +6,10 @@
*/
-#ifndef _TMS0970_H_
-#define _TMS0970_H_
+#ifndef MAME_CPU_TMS1000_TMS0970_H
+#define MAME_CPU_TMS1000_TMS0970_H
+
+#pragma once
#include "tms1000.h"
@@ -16,9 +18,10 @@ class tms0970_cpu_device : public tms1000_cpu_device
{
public:
tms0970_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- tms0970_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source);
protected:
+ tms0970_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
// overrides
virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -39,8 +42,8 @@ protected:
virtual void device_reset() override { tms1000_cpu_device::device_reset(); }
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void op_rstr() override { ; } // assume it has no RSTR or CLO
- virtual void op_clo() override { ; } // "
+ virtual void op_rstr() override { } // assume it has no RSTR or CLO
+ virtual void op_clo() override { } // "
};
class tms1990_cpu_device : public tms0970_cpu_device
@@ -50,8 +53,8 @@ public:
};
-extern const device_type TMS0950;
-extern const device_type TMS0970;
-extern const device_type TMS1990;
+DECLARE_DEVICE_TYPE(TMS0950, tms0950_cpu_device)
+DECLARE_DEVICE_TYPE(TMS0970, tms0970_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1990, tms1990_cpu_device)
-#endif /* _TMS0970_H_ */
+#endif // MAME_CPU_TMS1000_TMS0970_H
diff --git a/src/devices/cpu/tms1000/tms0980.cpp b/src/devices/cpu/tms1000/tms0980.cpp
index b9bef8d3cf8..e18b9db20d2 100644
--- a/src/devices/cpu/tms1000/tms0980.cpp
+++ b/src/devices/cpu/tms1000/tms0980.cpp
@@ -20,13 +20,13 @@
// TDO, SBIT, RETN, SETR, REAC, XDA, SAL, RBIT, ..., OFF, SBL, LDP, redir(------00- + R0^BL)
// - 64-term microinstructions PLA between the RAM and ROM, supporting 20 microinstructions
// - 16-term inverted output PLA and segment PLA above the RAM (rotate opla 90 degrees)
-const device_type TMS0980 = device_creator<tms0980_cpu_device>; // 28-pin DIP, 9 R pins
+DEFINE_DEVICE_TYPE(TMS0980, tms0980_cpu_device, "tms0980", "TMS0980") // 28-pin DIP, 9 R pins
// TMS1980 is a TMS0980 with a TMS1x00 style opla
// - RAM, ROM, and main instructions PLAs is the same as TMS0980
// - one of the microinstructions redirects to a RSTR instruction, like on TMS0270
// - 32-term inverted output PLA above the RAM, 7 bits! (rotate opla 270 degrees)
-const device_type TMS1980 = device_creator<tms1980_cpu_device>; // 28-pin DIP, 7 O pins, 10 R pins, high voltage
+DEFINE_DEVICE_TYPE(TMS1980, tms1980_cpu_device, "tms1980", "TMS1980") // 28-pin DIP, 7 O pins, 10 R pins, high voltage
// internal memory maps
@@ -42,16 +42,19 @@ ADDRESS_MAP_END
// device definitions
tms0980_cpu_device::tms0980_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms0970_cpu_device(mconfig, TMS0980, "TMS0980", tag, owner, clock, 8 /* o pins */, 9 /* r pins */, 7 /* pc bits */, 9 /* byte width */, 4 /* x width */, 12 /* prg width */, ADDRESS_MAP_NAME(program_11bit_9), 8 /* data width */, ADDRESS_MAP_NAME(data_144x4), "tms0980", __FILE__)
-{ }
+ : tms0980_cpu_device(mconfig, TMS0980, tag, owner, clock, 8 /* o pins */, 9 /* r pins */, 7 /* pc bits */, 9 /* byte width */, 4 /* x width */, 12 /* prg width */, ADDRESS_MAP_NAME(program_11bit_9), 8 /* data width */, ADDRESS_MAP_NAME(data_144x4))
+{
+}
-tms0980_cpu_device::tms0980_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : tms0970_cpu_device(mconfig, type, name, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data, shortname, source)
-{ }
+tms0980_cpu_device::tms0980_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : tms0970_cpu_device(mconfig, type, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data)
+{
+}
tms1980_cpu_device::tms1980_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms0980_cpu_device(mconfig, TMS1980, "TMS1980", tag, owner, clock, 7, 10, 7, 9, 4, 12, ADDRESS_MAP_NAME(program_11bit_9), 8, ADDRESS_MAP_NAME(data_144x4), "tms1980", __FILE__)
-{ }
+ : tms0980_cpu_device(mconfig, TMS1980, tag, owner, clock, 7, 10, 7, 9, 4, 12, ADDRESS_MAP_NAME(program_11bit_9), 8, ADDRESS_MAP_NAME(data_144x4))
+{
+}
// machine configs
@@ -59,13 +62,13 @@ static MACHINE_CONFIG_FRAGMENT(tms0980)
// main opcodes PLA, microinstructions PLA, output PLA, segment PLA
MCFG_PLA_ADD("ipla", 9, 22, 24)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("mpla", 6, 20, 64)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("opla", 4, 8, 16)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("spla", 3, 8, 8)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MACHINE_CONFIG_END
machine_config_constructor tms0980_cpu_device::device_mconfig_additions() const
@@ -77,11 +80,11 @@ static MACHINE_CONFIG_FRAGMENT(tms1980)
// main opcodes PLA, microinstructions PLA, output PLA
MCFG_PLA_ADD("ipla", 9, 22, 24)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("mpla", 6, 22, 64)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("opla", 5, 7, 32)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MACHINE_CONFIG_END
machine_config_constructor tms1980_cpu_device::device_mconfig_additions() const
diff --git a/src/devices/cpu/tms1000/tms0980.h b/src/devices/cpu/tms1000/tms0980.h
index 24ef6c000ad..883dc3d643d 100644
--- a/src/devices/cpu/tms1000/tms0980.h
+++ b/src/devices/cpu/tms1000/tms0980.h
@@ -6,8 +6,10 @@
*/
-#ifndef _TMS0980_H_
-#define _TMS0980_H_
+#ifndef MAME_CPU_TMS1000_TMS0980_H
+#define MAME_CPU_TMS1000_TMS0980_H
+
+#pragma once
#include "tms0970.h"
@@ -16,9 +18,10 @@ class tms0980_cpu_device : public tms0970_cpu_device
{
public:
tms0980_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- tms0980_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source);
protected:
+ tms0980_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
// overrides
virtual u32 decode_fixed(u16 op);
virtual u32 decode_micro(u8 sel);
@@ -55,7 +58,7 @@ protected:
};
-extern const device_type TMS0980;
-extern const device_type TMS1980;
+DECLARE_DEVICE_TYPE(TMS0980, tms0980_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1980, tms1980_cpu_device)
-#endif /* _TMS0980_H_ */
+#endif // MAME_CPU_TMS1000_TMS0980_H
diff --git a/src/devices/cpu/tms1000/tms1000.cpp b/src/devices/cpu/tms1000/tms1000.cpp
index 3ee2612f191..0c89568a7b6 100644
--- a/src/devices/cpu/tms1000/tms1000.cpp
+++ b/src/devices/cpu/tms1000/tms1000.cpp
@@ -24,15 +24,15 @@
// - 30-term microinstructions PLA(mpla) at the top half, to the right of the midline, supporting 16 microinstructions
// - 20-term output PLA(opla) at the top-left
// - the ALU is between the opla and mpla
-const device_type TMS1000 = device_creator<tms1000_cpu_device>; // 28-pin DIP, 11 R pins
-const device_type TMS1070 = device_creator<tms1070_cpu_device>; // high voltage version
-const device_type TMS1040 = device_creator<tms1040_cpu_device>; // same as TMS1070 with just a different pinout?
-const device_type TMS1200 = device_creator<tms1200_cpu_device>; // 40-pin DIP, 13 R pins
-const device_type TMS1700 = device_creator<tms1700_cpu_device>; // 28-pin DIP, RAM/ROM size halved, 9 R pins
-const device_type TMS1730 = device_creator<tms1730_cpu_device>; // 20-pin DIP, same die as TMS1700, package has less pins: 6 R pins, 5 O pins(output PLA is still 8-bit, O1,O3,O5 unused)
+DEFINE_DEVICE_TYPE(TMS1000, tms1000_cpu_device, "tms1000", "TMS1000") // 28-pin DIP, 11 R pins
+DEFINE_DEVICE_TYPE(TMS1070, tms1070_cpu_device, "tms1070", "TMS1070") // high voltage version
+DEFINE_DEVICE_TYPE(TMS1040, tms1040_cpu_device, "tms1040", "TMS1040") // same as TMS1070 with just a different pinout?
+DEFINE_DEVICE_TYPE(TMS1200, tms1200_cpu_device, "tms1200", "TMS1200") // 40-pin DIP, 13 R pins
+DEFINE_DEVICE_TYPE(TMS1700, tms1700_cpu_device, "tms1700", "TMS1700") // 28-pin DIP, RAM/ROM size halved, 9 R pins
+DEFINE_DEVICE_TYPE(TMS1730, tms1730_cpu_device, "tms1730", "TMS1730") // 20-pin DIP, same die as TMS1700, package has less pins: 6 R pins, 5 O pins (output PLA is still 8-bit, O1,O3,O5 unused)
-const device_type MC141000 = device_creator<mc141000_cpu_device>; // CMOS, pin-compatible with TMS1000(reverse polarity)
-const device_type MC141200 = device_creator<mc141200_cpu_device>; // CMOS, 40-pin DIP, 16 R pins
+DEFINE_DEVICE_TYPE(MC141000, mc141000_cpu_device, "mc141000", "MC141000") // CMOS, pin-compatible with TMS1000(reverse polarity)
+DEFINE_DEVICE_TYPE(MC141200, mc141200_cpu_device, "mc141200", "MC141200") // CMOS, 40-pin DIP, 16 R pins
// internal memory maps
@@ -56,40 +56,49 @@ ADDRESS_MAP_END
// device definitions
tms1000_cpu_device::tms1000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1k_base_device(mconfig, TMS1000, "TMS1000", tag, owner, clock, 8 /* o pins */, 11 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 2 /* x width */, 10 /* prg width */, ADDRESS_MAP_NAME(program_10bit_8), 6 /* data width */, ADDRESS_MAP_NAME(data_64x4), "tms1000", __FILE__)
-{ }
+ : tms1000_cpu_device(mconfig, TMS1000, tag, owner, clock, 8 /* o pins */, 11 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 2 /* x width */, 10 /* prg width */, ADDRESS_MAP_NAME(program_10bit_8), 6 /* data width */, ADDRESS_MAP_NAME(data_64x4))
+{
+}
-tms1000_cpu_device::tms1000_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : tms1k_base_device(mconfig, type, name, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data, shortname, source)
-{ }
+tms1000_cpu_device::tms1000_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : tms1k_base_device(mconfig, type, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data)
+{
+}
tms1070_cpu_device::tms1070_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1000_cpu_device(mconfig, TMS1070, "TMS1070", tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "tms1070", __FILE__)
-{ }
+ : tms1000_cpu_device(mconfig, TMS1070, tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4))
+{
+}
tms1040_cpu_device::tms1040_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1000_cpu_device(mconfig, TMS1040, "TMS1040", tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "tms1040", __FILE__)
-{ }
+ : tms1000_cpu_device(mconfig, TMS1040, tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4))
+{
+}
tms1200_cpu_device::tms1200_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1000_cpu_device(mconfig, TMS1200, "TMS1200", tag, owner, clock, 8, 13, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "tms1200", __FILE__)
-{ }
+ : tms1000_cpu_device(mconfig, TMS1200, tag, owner, clock, 8, 13, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4))
+{
+}
tms1700_cpu_device::tms1700_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1000_cpu_device(mconfig, TMS1700, "TMS1700", tag, owner, clock, 8, 9, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_9bit_8), 6, ADDRESS_MAP_NAME(data_32x4), "tms1700", __FILE__)
-{ }
+ : tms1000_cpu_device(mconfig, TMS1700, tag, owner, clock, 8, 9, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_9bit_8), 6, ADDRESS_MAP_NAME(data_32x4))
+{
+}
tms1730_cpu_device::tms1730_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1000_cpu_device(mconfig, TMS1730, "TMS1730", tag, owner, clock, 8, 9, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_9bit_8), 6, ADDRESS_MAP_NAME(data_32x4), "tms1730", __FILE__)
-{ }
+ : tms1000_cpu_device(mconfig, TMS1730, tag, owner, clock, 8, 9, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_9bit_8), 6, ADDRESS_MAP_NAME(data_32x4))
+{
+}
mc141000_cpu_device::mc141000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1000_cpu_device(mconfig, MC141000, "MC141000", tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "mc141000", __FILE__)
-{ }
+ : tms1000_cpu_device(mconfig, MC141000, tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4))
+{
+}
mc141200_cpu_device::mc141200_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1000_cpu_device(mconfig, MC141200, "MC141200", tag, owner, clock, 8, 16, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "mc141200", __FILE__)
-{ }
+ : tms1000_cpu_device(mconfig, MC141200, tag, owner, clock, 8, 16, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4))
+{
+}
// machine configs
@@ -97,9 +106,9 @@ static MACHINE_CONFIG_FRAGMENT(tms1000)
// microinstructions PLA, output PLA
MCFG_PLA_ADD("mpla", 8, 16, 30)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("opla", 5, 8, 20)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MACHINE_CONFIG_END
machine_config_constructor tms1000_cpu_device::device_mconfig_additions() const
diff --git a/src/devices/cpu/tms1000/tms1000.h b/src/devices/cpu/tms1000/tms1000.h
index c1ccb3d52f2..0498af05304 100644
--- a/src/devices/cpu/tms1000/tms1000.h
+++ b/src/devices/cpu/tms1000/tms1000.h
@@ -6,8 +6,10 @@
*/
-#ifndef _TMS1000_H_
-#define _TMS1000_H_
+#ifndef MAME_CPU_TMS1000_TMS1000_H
+#define MAME_CPU_TMS1000_TMS1000_H
+
+#pragma once
#include "tms1k_base.h"
@@ -16,9 +18,10 @@ class tms1000_cpu_device : public tms1k_base_device
{
public:
tms1000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- tms1000_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source);
protected:
+ tms1000_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
// overrides
virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -73,13 +76,13 @@ public:
};
-extern const device_type TMS1000;
-extern const device_type TMS1070;
-extern const device_type TMS1040;
-extern const device_type TMS1200;
-extern const device_type TMS1700;
-extern const device_type TMS1730;
-extern const device_type MC141000;
-extern const device_type MC141200;
+DECLARE_DEVICE_TYPE(TMS1000, tms1000_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1070, tms1070_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1040, tms1040_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1200, tms1200_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1700, tms1700_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1730, tms1730_cpu_device)
+DECLARE_DEVICE_TYPE(MC141000, mc141000_cpu_device)
+DECLARE_DEVICE_TYPE(MC141200, mc141200_cpu_device)
-#endif /* _TMS1000_H_ */
+#endif // MAME_CPU_TMS1000_TMS1000_H
diff --git a/src/devices/cpu/tms1000/tms1100.cpp b/src/devices/cpu/tms1000/tms1100.cpp
index 781998ffc07..a67f1261512 100644
--- a/src/devices/cpu/tms1000/tms1100.cpp
+++ b/src/devices/cpu/tms1000/tms1100.cpp
@@ -11,10 +11,10 @@
#include "debugger.h"
// TMS1100 is nearly the same as TMS1000, some different opcodes, and with double the RAM and ROM
-const device_type TMS1100 = device_creator<tms1100_cpu_device>; // 28-pin DIP, 11 R pins
-const device_type TMS1170 = device_creator<tms1170_cpu_device>; // high voltage version
-const device_type TMS1300 = device_creator<tms1300_cpu_device>; // 40-pin DIP, 16 R pins
-const device_type TMS1370 = device_creator<tms1370_cpu_device>; // high voltage version
+DEFINE_DEVICE_TYPE(TMS1100, tms1100_cpu_device, "tms1100", "TMS1100") // 28-pin DIP, 11 R pins
+DEFINE_DEVICE_TYPE(TMS1170, tms1170_cpu_device, "tms1170", "TMS1170") // high voltage version
+DEFINE_DEVICE_TYPE(TMS1300, tms1300_cpu_device, "tms1300", "TMS1300") // 40-pin DIP, 16 R pins
+DEFINE_DEVICE_TYPE(TMS1370, tms1370_cpu_device, "tms1370", "TMS1370") // high voltage version
// internal memory maps
@@ -29,24 +29,29 @@ ADDRESS_MAP_END
// device definitions
tms1100_cpu_device::tms1100_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1000_cpu_device(mconfig, TMS1100, "TMS1100", tag, owner, clock, 8 /* o pins */, 11 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 3 /* x width */, 11 /* prg width */, ADDRESS_MAP_NAME(program_11bit_8), 7 /* data width */, ADDRESS_MAP_NAME(data_128x4), "tms1100", __FILE__)
-{ }
+ : tms1100_cpu_device(mconfig, TMS1100, tag, owner, clock, 8 /* o pins */, 11 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 3 /* x width */, 11 /* prg width */, ADDRESS_MAP_NAME(program_11bit_8), 7 /* data width */, ADDRESS_MAP_NAME(data_128x4))
+{
+}
-tms1100_cpu_device::tms1100_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : tms1000_cpu_device(mconfig, type, name, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data, shortname, source)
-{ }
+tms1100_cpu_device::tms1100_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : tms1000_cpu_device(mconfig, type, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data)
+{
+}
tms1170_cpu_device::tms1170_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1100_cpu_device(mconfig, TMS1170, "TMS1170", tag, owner, clock, 8, 11, 6, 8, 3, 11, ADDRESS_MAP_NAME(program_11bit_8), 7, ADDRESS_MAP_NAME(data_128x4), "tms1170", __FILE__)
-{ }
+ : tms1100_cpu_device(mconfig, TMS1170, tag, owner, clock, 8, 11, 6, 8, 3, 11, ADDRESS_MAP_NAME(program_11bit_8), 7, ADDRESS_MAP_NAME(data_128x4))
+{
+}
tms1300_cpu_device::tms1300_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1100_cpu_device(mconfig, TMS1300, "TMS1300", tag, owner, clock, 8, 16, 6, 8, 3, 11, ADDRESS_MAP_NAME(program_11bit_8), 7, ADDRESS_MAP_NAME(data_128x4), "tms1300", __FILE__)
-{ }
+ : tms1100_cpu_device(mconfig, TMS1300, tag, owner, clock, 8, 16, 6, 8, 3, 11, ADDRESS_MAP_NAME(program_11bit_8), 7, ADDRESS_MAP_NAME(data_128x4))
+{
+}
tms1370_cpu_device::tms1370_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1100_cpu_device(mconfig, TMS1370, "TMS1370", tag, owner, clock, 8, 16, 6, 8, 3, 11, ADDRESS_MAP_NAME(program_11bit_8), 7, ADDRESS_MAP_NAME(data_128x4), "tms1370", __FILE__)
-{ }
+ : tms1100_cpu_device(mconfig, TMS1370, tag, owner, clock, 8, 16, 6, 8, 3, 11, ADDRESS_MAP_NAME(program_11bit_8), 7, ADDRESS_MAP_NAME(data_128x4))
+{
+}
// disasm
diff --git a/src/devices/cpu/tms1000/tms1100.h b/src/devices/cpu/tms1000/tms1100.h
index be0b6a70f10..26a3ffbc578 100644
--- a/src/devices/cpu/tms1000/tms1100.h
+++ b/src/devices/cpu/tms1000/tms1100.h
@@ -6,8 +6,10 @@
*/
-#ifndef _TMS1100_H_
-#define _TMS1100_H_
+#ifndef MAME_CPU_TMS1000_TMS1100_H
+#define MAME_CPU_TMS1000_TMS1100_H
+
+#pragma once
#include "tms1000.h"
@@ -16,9 +18,10 @@ class tms1100_cpu_device : public tms1000_cpu_device
{
public:
tms1100_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- tms1100_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source);
protected:
+ tms1100_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
// overrides
virtual void device_reset() override;
@@ -47,10 +50,9 @@ public:
};
-extern const device_type TMS1100;
-extern const device_type TMS1170;
-extern const device_type TMS1300;
-extern const device_type TMS1370;
-
+DECLARE_DEVICE_TYPE(TMS1100, tms1100_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1170, tms1170_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1300, tms1300_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1370, tms1370_cpu_device)
-#endif /* _TMS1100_H_ */
+#endif // MAME_CPU_TMS1000_TMS1100_H
diff --git a/src/devices/cpu/tms1000/tms1400.cpp b/src/devices/cpu/tms1000/tms1400.cpp
index 46b0271c54c..bfd5b50cdb5 100644
--- a/src/devices/cpu/tms1000/tms1400.cpp
+++ b/src/devices/cpu/tms1000/tms1400.cpp
@@ -16,14 +16,14 @@
// TMS1400 follows the TMS1100, it doubles the ROM size again (4 chapters of 16 pages), and adds a 3-level callstack
// - rotate the view and mirror the OR-mask to get the proper layout of the mpla, the default is identical to tms1100
// - the opla size is increased from 20 to 32 terms
-const device_type TMS1400 = device_creator<tms1400_cpu_device>; // 28-pin DIP, 11 R pins (TMS1400CR is same, but with TMS1100 pinout)
-const device_type TMS1470 = device_creator<tms1470_cpu_device>; // high voltage version, 1 R pin removed for Vdd
+DEFINE_DEVICE_TYPE(TMS1400, tms1400_cpu_device, "tms1400", "TMS1400") // 28-pin DIP, 11 R pins (TMS1400CR is same, but with TMS1100 pinout)
+DEFINE_DEVICE_TYPE(TMS1470, tms1470_cpu_device, "tms1470", "TMS1470") // high voltage version, 1 R pin removed for Vdd
// TMS1600 adds more I/O to the TMS1400, input pins are doubled with added L1,2,4,8
// - rotate the view and mirror the OR-mask to get the proper layout of the mpla, the default is identical to tms1100
// - the opla size is increased from 20 to 32 terms
-const device_type TMS1600 = device_creator<tms1600_cpu_device>; // 40-pin DIP, 16 R pins
-const device_type TMS1670 = device_creator<tms1670_cpu_device>; // high voltage version
+DEFINE_DEVICE_TYPE(TMS1600, tms1600_cpu_device, "tms1600", "TMS1600") // 40-pin DIP, 16 R pins
+DEFINE_DEVICE_TYPE(TMS1670, tms1670_cpu_device, "tms1670", "TMS1670") // high voltage version
// internal memory maps
@@ -38,29 +38,35 @@ ADDRESS_MAP_END
// device definitions
tms1400_cpu_device::tms1400_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1100_cpu_device(mconfig, TMS1400, "TMS1400", tag, owner, clock, 8 /* o pins */, 11 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 3 /* x width */, 12 /* prg width */, ADDRESS_MAP_NAME(program_12bit_8), 7 /* data width */, ADDRESS_MAP_NAME(data_128x4), "tms1400", __FILE__)
-{ }
+ : tms1400_cpu_device(mconfig, TMS1400, tag, owner, clock, 8 /* o pins */, 11 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 3 /* x width */, 12 /* prg width */, ADDRESS_MAP_NAME(program_12bit_8), 7 /* data width */, ADDRESS_MAP_NAME(data_128x4))
+{
+}
-tms1400_cpu_device::tms1400_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : tms1100_cpu_device(mconfig, type, name, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data, shortname, source)
-{ }
+tms1400_cpu_device::tms1400_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : tms1100_cpu_device(mconfig, type, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data)
+{
+}
tms1470_cpu_device::tms1470_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1400_cpu_device(mconfig, TMS1470, "TMS1470", tag, owner, clock, 8, 10, 6, 8, 3, 12, ADDRESS_MAP_NAME(program_12bit_8), 7, ADDRESS_MAP_NAME(data_128x4), "tms1470", __FILE__)
-{ }
+ : tms1400_cpu_device(mconfig, TMS1470, tag, owner, clock, 8, 10, 6, 8, 3, 12, ADDRESS_MAP_NAME(program_12bit_8), 7, ADDRESS_MAP_NAME(data_128x4))
+{
+}
tms1600_cpu_device::tms1600_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1400_cpu_device(mconfig, TMS1600, "TMS1600", tag, owner, clock, 8, 16, 6, 8, 3, 12, ADDRESS_MAP_NAME(program_12bit_8), 7, ADDRESS_MAP_NAME(data_128x4), "tms1600", __FILE__)
-{ }
+ : tms1600_cpu_device(mconfig, TMS1600, tag, owner, clock, 8, 16, 6, 8, 3, 12, ADDRESS_MAP_NAME(program_12bit_8), 7, ADDRESS_MAP_NAME(data_128x4))
+{
+}
-tms1600_cpu_device::tms1600_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : tms1400_cpu_device(mconfig, type, name, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data, shortname, source)
-{ }
+tms1600_cpu_device::tms1600_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : tms1400_cpu_device(mconfig, type, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data)
+{
+}
tms1670_cpu_device::tms1670_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1600_cpu_device(mconfig, TMS1670, "TMS1670", tag, owner, clock, 8, 16, 6, 8, 3, 12, ADDRESS_MAP_NAME(program_12bit_8), 7, ADDRESS_MAP_NAME(data_128x4), "tms1670", __FILE__)
-{ }
+ : tms1600_cpu_device(mconfig, TMS1670, tag, owner, clock, 8, 16, 6, 8, 3, 12, ADDRESS_MAP_NAME(program_12bit_8), 7, ADDRESS_MAP_NAME(data_128x4))
+{
+}
// machine configs
@@ -68,9 +74,9 @@ static MACHINE_CONFIG_FRAGMENT(tms1400)
// microinstructions PLA, output PLA
MCFG_PLA_ADD("mpla", 8, 16, 30)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("opla", 5, 8, 32)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MACHINE_CONFIG_END
machine_config_constructor tms1400_cpu_device::device_mconfig_additions() const
diff --git a/src/devices/cpu/tms1000/tms1400.h b/src/devices/cpu/tms1000/tms1400.h
index af8498ad28b..7c5d3111cc1 100644
--- a/src/devices/cpu/tms1000/tms1400.h
+++ b/src/devices/cpu/tms1000/tms1400.h
@@ -6,8 +6,10 @@
*/
-#ifndef _TMS1400_H_
-#define _TMS1400_H_
+#ifndef MAME_CPU_TMS1000_TMS1400_H
+#define MAME_CPU_TMS1000_TMS1400_H
+
+#pragma once
#include "tms1100.h"
@@ -16,9 +18,10 @@ class tms1400_cpu_device : public tms1100_cpu_device
{
public:
tms1400_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- tms1400_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source);
protected:
+ tms1400_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
// overrides
virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -42,7 +45,9 @@ class tms1600_cpu_device : public tms1400_cpu_device
{
public:
tms1600_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- tms1600_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source);
+
+protected:
+ tms1600_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
};
class tms1670_cpu_device : public tms1600_cpu_device
@@ -52,10 +57,9 @@ public:
};
-extern const device_type TMS1400;
-extern const device_type TMS1470;
-extern const device_type TMS1600;
-extern const device_type TMS1670;
-
+DECLARE_DEVICE_TYPE(TMS1400, tms1400_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1470, tms1470_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1600, tms1600_cpu_device)
+DECLARE_DEVICE_TYPE(TMS1670, tms1670_cpu_device)
-#endif /* _TMS1400_H_ */
+#endif // MAME_CPU_TMS1000_TMS1400_H
diff --git a/src/devices/cpu/tms1000/tms1k_base.cpp b/src/devices/cpu/tms1000/tms1k_base.cpp
index 155b27ddc4d..ba526ad9367 100644
--- a/src/devices/cpu/tms1000/tms1k_base.cpp
+++ b/src/devices/cpu/tms1000/tms1k_base.cpp
@@ -70,6 +70,27 @@ unknown cycle: CME, SSE, SSS
#include "tms1k_base.h"
#include "debugger.h"
+tms1k_base_device::tms1k_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_BIG, byte_bits > 8 ? 16 : 8, prgwidth, 0, program)
+ , m_data_config("data", ENDIANNESS_BIG, 8, datawidth, 0, data)
+ , m_mpla(*this, "mpla")
+ , m_ipla(*this, "ipla")
+ , m_opla(*this, "opla")
+ , m_spla(*this, "spla")
+ , m_o_pins(o_pins)
+ , m_r_pins(r_pins)
+ , m_pc_bits(pc_bits)
+ , m_byte_bits(byte_bits)
+ , m_x_bits(x_bits)
+ , m_output_pla_table(nullptr)
+ , m_read_k(*this)
+ , m_write_o(*this)
+ , m_write_r(*this)
+ , m_power_off(*this)
+{
+}
+
// disasm
void tms1k_base_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
diff --git a/src/devices/cpu/tms1000/tms1k_base.h b/src/devices/cpu/tms1000/tms1k_base.h
index 98f7e61ed2e..16e095744c9 100644
--- a/src/devices/cpu/tms1000/tms1k_base.h
+++ b/src/devices/cpu/tms1000/tms1k_base.h
@@ -9,8 +9,10 @@
*/
-#ifndef _TMS1KBASE_H_
-#define _TMS1KBASE_H_
+#ifndef MAME_CPU_TMS1000_TMS1K_BASE_H
+#define MAME_CPU_TMS1000_TMS1K_BASE_H
+
+#pragma once
#include "machine/pla.h"
@@ -82,32 +84,11 @@
class tms1k_base_device : public cpu_device
{
public:
- // construction/destruction
- tms1k_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_BIG, byte_bits > 8 ? 16 : 8, prgwidth, 0, program)
- , m_data_config("data", ENDIANNESS_BIG, 8, datawidth, 0, data)
- , m_mpla(*this, "mpla")
- , m_ipla(*this, "ipla")
- , m_opla(*this, "opla")
- , m_spla(*this, "spla")
- , m_o_pins(o_pins)
- , m_r_pins(r_pins)
- , m_pc_bits(pc_bits)
- , m_byte_bits(byte_bits)
- , m_x_bits(x_bits)
- , m_output_pla_table(nullptr)
- , m_read_k(*this)
- , m_write_o(*this)
- , m_write_r(*this)
- , m_power_off(*this)
- { }
-
// static configuration helpers
- template<class _Object> static devcb_base &set_read_k_callback(device_t &device, _Object object) { return downcast<tms1k_base_device &>(device).m_read_k.set_callback(object); }
- template<class _Object> static devcb_base &set_write_o_callback(device_t &device, _Object object) { return downcast<tms1k_base_device &>(device).m_write_o.set_callback(object); }
- template<class _Object> static devcb_base &set_write_r_callback(device_t &device, _Object object) { return downcast<tms1k_base_device &>(device).m_write_r.set_callback(object); }
- template<class _Object> static devcb_base &set_power_off_callback(device_t &device, _Object object) { return downcast<tms1k_base_device &>(device).m_power_off.set_callback(object); }
+ template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_o_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_write_o.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_r_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_write_r.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_power_off_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_power_off.set_callback(std::forward<Object>(cb)); }
static void set_output_pla(device_t &device, const u16 *output_pla) { downcast<tms1k_base_device &>(device).m_output_pla_table = output_pla; }
u8 debug_peek_o_index() { return m_o_index; } // get output PLA index, for debugging (don't use in emulation)
@@ -171,6 +152,9 @@ public:
};
protected:
+ // construction/destruction
+ tms1k_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -298,4 +282,4 @@ protected:
};
-#endif /* _TMS1KBASE_H_ */
+#endif // MAME_CPU_TMS1000_TMS1K_BASE_H
diff --git a/src/devices/cpu/tms1000/tp0320.cpp b/src/devices/cpu/tms1000/tp0320.cpp
index c5118781499..9c00407ac0e 100644
--- a/src/devices/cpu/tms1000/tp0320.cpp
+++ b/src/devices/cpu/tms1000/tp0320.cpp
@@ -22,7 +22,7 @@
// - 64-term microinstructions PLA between the RAM and ROM, similar to TMS0980,
// plus separate lines for custom opcode handling like TMS0270, used for SETR and RSTR
// - 24-term output PLA above LCD RAM
-const device_type TP0320 = device_creator<tp0320_cpu_device>; // 28-pin SDIP, ..
+DEFINE_DEVICE_TYPE(TP0320, tp0320_cpu_device, "tp0320", "TP0320") // 28-pin SDIP, ..
// internal memory maps
@@ -38,8 +38,9 @@ ADDRESS_MAP_END
// device definitions
tp0320_cpu_device::tp0320_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms0980_cpu_device(mconfig, TP0320, "TP0320", tag, owner, clock, 7 /* o pins */, 10 /* r pins */, 7 /* pc bits */, 9 /* byte width */, 4 /* x width */, 12 /* prg width */, ADDRESS_MAP_NAME(program_11bit_9), 8 /* data width */, ADDRESS_MAP_NAME(data_192x4), "tp0320", __FILE__)
-{ }
+ : tms0980_cpu_device(mconfig, TP0320, tag, owner, clock, 7 /* o pins */, 10 /* r pins */, 7 /* pc bits */, 9 /* byte width */, 4 /* x width */, 12 /* prg width */, ADDRESS_MAP_NAME(program_11bit_9), 8 /* data width */, ADDRESS_MAP_NAME(data_192x4))
+{
+}
// machine configs
@@ -47,9 +48,9 @@ static MACHINE_CONFIG_FRAGMENT(tp0320)
// main opcodes PLA(partial), microinstructions PLA
MCFG_PLA_ADD("ipla", 9, 6, 8)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MCFG_PLA_ADD("mpla", 6, 22, 64)
- MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_FILEFORMAT(BERKELEY)
MACHINE_CONFIG_END
machine_config_constructor tp0320_cpu_device::device_mconfig_additions() const
diff --git a/src/devices/cpu/tms1000/tp0320.h b/src/devices/cpu/tms1000/tp0320.h
index d5675f0e011..d1558fa2dad 100644
--- a/src/devices/cpu/tms1000/tp0320.h
+++ b/src/devices/cpu/tms1000/tp0320.h
@@ -6,8 +6,10 @@
*/
-#ifndef _TP0320_H_
-#define _TP0320_H_
+#ifndef MAME_CPU_TMS1000_TP0320_H
+#define MAME_CPU_TMS1000_TP0320_H
+
+#pragma once
#include "tms0980.h"
@@ -30,6 +32,6 @@ protected:
};
-extern const device_type TP0320;
+DECLARE_DEVICE_TYPE(TP0320, tp0320_cpu_device)
-#endif /* _TP0320_H_ */
+#endif // MAME_CPU_TMS1000_TP0320_H
diff --git a/src/devices/cpu/tms32010/tms32010.cpp b/src/devices/cpu/tms32010/tms32010.cpp
index 19e9efb8e2b..da23e95eb76 100644
--- a/src/devices/cpu/tms32010/tms32010.cpp
+++ b/src/devices/cpu/tms32010/tms32010.cpp
@@ -58,8 +58,8 @@
#include "emu.h"
-#include "debugger.h"
#include "tms32010.h"
+#include "debugger.h"
@@ -73,9 +73,9 @@
#define P_OUT(A,V) TMS32010_Out(A,V)
-const device_type TMS32010 = device_creator<tms32010_device>;
-const device_type TMS32015 = device_creator<tms32015_device>;
-const device_type TMS32016 = device_creator<tms32016_device>;
+DEFINE_DEVICE_TYPE(TMS32010, tms32010_device, "tms32010", "TMS32010")
+DEFINE_DEVICE_TYPE(TMS32015, tms32015_device, "tms32015", "TMS32015")
+DEFINE_DEVICE_TYPE(TMS32016, tms32016_device, "tms32016", "TMS32016")
/****************************************************************************
@@ -98,20 +98,15 @@ ADDRESS_MAP_END
tms32010_device::tms32010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, TMS32010, "TMS32010", tag, owner, clock, "tms32010", __FILE__)
- , m_program_config("program", ENDIANNESS_BIG, 16, 12, -1)
- , m_data_config("data", ENDIANNESS_BIG, 16, 8, -1, ADDRESS_MAP_NAME(tms32010_ram))
- , m_io_config("io", ENDIANNESS_BIG, 16, 4, -1)
- , m_bio_in(*this)
- , m_addr_mask(0x0fff)
+ : tms32010_device(mconfig, TMS32010, tag, owner, clock, ADDRESS_MAP_NAME(tms32010_ram), 0x0fff)
{
}
-tms32010_device::tms32010_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int addr_mask)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+tms32010_device::tms32010_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor data_map, int addr_mask)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 16, 12, -1)
- , m_data_config("data", ENDIANNESS_BIG, 16, 8, -1, ADDRESS_MAP_NAME(tms32015_ram))
+ , m_data_config("data", ENDIANNESS_BIG, 16, 8, -1, data_map)
, m_io_config("io", ENDIANNESS_BIG, 16, 4, -1)
, m_bio_in(*this)
, m_addr_mask(addr_mask)
@@ -120,13 +115,13 @@ tms32010_device::tms32010_device(const machine_config &mconfig, device_type type
tms32015_device::tms32015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms32010_device(mconfig, TMS32015, "TMS32015", tag, owner, clock, "tms32015", __FILE__, 0x0fff)
+ : tms32010_device(mconfig, TMS32015, tag, owner, clock, ADDRESS_MAP_NAME(tms32015_ram), 0x0fff)
{
}
tms32016_device::tms32016_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms32010_device(mconfig, TMS32016, "TMS32016", tag, owner, clock, "tms32016", __FILE__, 0xffff)
+ : tms32010_device(mconfig, TMS32016, tag, owner, clock, ADDRESS_MAP_NAME(tms32015_ram), 0xffff)
{
}
diff --git a/src/devices/cpu/tms32010/tms32010.h b/src/devices/cpu/tms32010/tms32010.h
index 4be9b7fe7d1..e6728ec165e 100644
--- a/src/devices/cpu/tms32010/tms32010.h
+++ b/src/devices/cpu/tms32010/tms32010.h
@@ -10,11 +10,10 @@
* *
\**************************************************************************/
-#pragma once
-
-#ifndef __TMS32010_H__
-#define __TMS32010_H__
+#ifndef MAME_CPU_TMS32010_TMS32010_H
+#define MAME_CPU_TMS32010_TMS32010_H
+#pragma once
@@ -44,12 +43,13 @@ class tms32010_device : public cpu_device
public:
// construction/destruction
tms32010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- tms32010_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int addr_mask);
// static configuration helpers
- template<class _Object> static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast<tms32010_device &>(device).m_bio_in.set_callback(object); }
+ template <class Object> static devcb_base & set_bio_in_cb(device_t &device, Object &&cb) { return downcast<tms32010_device &>(device).m_bio_in.set_callback(std::forward<Object>(cb)); }
protected:
+ tms32010_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor data_map, int addr_mask);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -64,7 +64,7 @@ protected:
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 4); }
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) ); }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_IO) ? &m_io_config : (spacenum == AS_DATA) ? &m_data_config : nullptr; }
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
@@ -191,7 +191,6 @@ private:
void zals();
inline int add_branch_cycle();
int Ext_IRQ();
-
};
@@ -211,9 +210,9 @@ public:
};
-extern const device_type TMS32010;
-extern const device_type TMS32015;
-extern const device_type TMS32016;
+DECLARE_DEVICE_TYPE(TMS32010, tms32010_device)
+DECLARE_DEVICE_TYPE(TMS32015, tms32015_device)
+DECLARE_DEVICE_TYPE(TMS32016, tms32016_device)
-#endif /* __TMS32010_H__ */
+#endif // MAME_CPU_TMS32010_TMS32010_H
diff --git a/src/devices/cpu/tms32025/tms32025.cpp b/src/devices/cpu/tms32025/tms32025.cpp
index c656804fb6d..119ffaa6d96 100644
--- a/src/devices/cpu/tms32025/tms32025.cpp
+++ b/src/devices/cpu/tms32025/tms32025.cpp
@@ -119,8 +119,8 @@ Table 3-2. TMS32025/26 Memory Blocks
#include "emu.h"
-#include "debugger.h"
#include "tms32025.h"
+#include "debugger.h"
#define CLK 4 /* 1 cycle equals 4 clock ticks */ /* PE/DI */
@@ -183,8 +183,8 @@ Table 3-2. TMS32025/26 Memory Blocks
#define IND m_AR[ARP] /* address used in indirect memory access operations */
-const device_type TMS32025 = device_creator<tms32025_device>;
-const device_type TMS32026 = device_creator<tms32026_device>;
+DEFINE_DEVICE_TYPE(TMS32025, tms32025_device, "tms32025", "TMS32025")
+DEFINE_DEVICE_TYPE(TMS32026, tms32026_device, "tms32026", "TMS32026")
static ADDRESS_MAP_START( tms32025_data, AS_DATA, 16, tms32025_device )
AM_RANGE(0x0000, 0x0000) AM_READWRITE(drr_r, drr_w)
@@ -213,27 +213,14 @@ ADDRESS_MAP_END
tms32025_device::tms32025_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, TMS32025, "TMS32025", tag, owner, clock, "tms32025", __FILE__)
- , m_program_config("program", ENDIANNESS_BIG, 16, 16, -1)
- , m_data_config("data", ENDIANNESS_BIG, 16, 16, -1, ADDRESS_MAP_NAME(tms32025_data))
- , m_io_config("io", ENDIANNESS_BIG, 16, 16, -1)
- , m_b0(*this, "b0")
- , m_b1(*this, "b1")
- , m_b2(*this, "b2")
- , m_b3(*this, "b3")
- , m_bio_in(*this)
- , m_hold_in(*this)
- , m_hold_ack_out(*this)
- , m_xf_out(*this)
- , m_dr_in(*this)
- , m_dx_out(*this)
+ : tms32025_device(mconfig, TMS32025, tag, owner, clock, ADDRESS_MAP_NAME(tms32025_data))
{
m_fixed_STR1 = 0x0180;
}
-tms32025_device::tms32025_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_constructor map)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+tms32025_device::tms32025_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor map)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 16, 16, -1)
, m_data_config("data", ENDIANNESS_BIG, 16, 16, -1, map)
, m_io_config("io", ENDIANNESS_BIG, 16, 16, -1)
@@ -248,12 +235,11 @@ tms32025_device::tms32025_device(const machine_config &mconfig, device_type type
, m_dr_in(*this)
, m_dx_out(*this)
{
- m_fixed_STR1 = 0x0180;
}
tms32026_device::tms32026_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms32025_device(mconfig, TMS32026, "TMS32026", tag, owner, clock, "tms32026", __FILE__, ADDRESS_MAP_NAME(tms32026_data))
+ : tms32025_device(mconfig, TMS32026, tag, owner, clock, ADDRESS_MAP_NAME(tms32026_data))
{
m_fixed_STR1 = 0x0100;
}
diff --git a/src/devices/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h
index 6806eeba2d0..1abd9f107ef 100644
--- a/src/devices/cpu/tms32025/tms32025.h
+++ b/src/devices/cpu/tms32025/tms32025.h
@@ -17,10 +17,10 @@
* *
\***************************************************************************/
-#pragma once
+#ifndef MAME_TMS32025_TMS32025_H
+#define MAME_TMS32025_TMS32025_H
-#ifndef __TMS32025_H__
-#define __TMS32025_H__
+#pragma once
#define MCFG_TMS32025_BIO_IN_CB(_devcb) \
@@ -82,7 +82,6 @@ class tms32025_device : public cpu_device
public:
// construction/destruction
tms32025_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- tms32025_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_constructor map);
// static configuration helpers
template<class _Object> static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_bio_in.set_callback(object); }
@@ -106,6 +105,8 @@ public:
DECLARE_WRITE16_MEMBER(greg_w);
protected:
+ tms32025_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor map);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -118,7 +119,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) ); }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_IO) ? &m_io_config : (spacenum == AS_DATA) ? &m_data_config : nullptr; }
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
@@ -376,7 +377,6 @@ protected:
void zals();
inline int process_IRQs();
inline void process_timer(int clocks);
-
};
@@ -394,8 +394,7 @@ protected:
};
-extern const device_type TMS32025;
-extern const device_type TMS32026;
-
+DECLARE_DEVICE_TYPE(TMS32025, tms32025_device)
+DECLARE_DEVICE_TYPE(TMS32026, tms32026_device)
-#endif /* __TMS32025_H__ */
+#endif // MAME_TMS32025_TMS32025_H
diff --git a/src/devices/cpu/tms32031/tms32031.cpp b/src/devices/cpu/tms32031/tms32031.cpp
index fe3608d9bba..944af23df89 100644
--- a/src/devices/cpu/tms32031/tms32031.cpp
+++ b/src/devices/cpu/tms32031/tms32031.cpp
@@ -9,8 +9,8 @@
***************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "tms32031.h"
+#include "debugger.h"
//**************************************************************************
@@ -87,8 +87,8 @@ const int GIEFLAG = 0x2000;
//**************************************************************************
// device type definition
-const device_type TMS32031 = device_creator<tms32031_device>;
-const device_type TMS32032 = device_creator<tms32032_device>;
+DEFINE_DEVICE_TYPE(TMS32031, tms32031_device, "tms32031", "TMS32031")
+DEFINE_DEVICE_TYPE(TMS32032, tms32032_device, "tms32032", "TMS32032")
// internal memory maps
@@ -251,8 +251,8 @@ void tms3203x_device::tmsreg::from_double(double val)
// tms3203x_device - constructor
//-------------------------------------------------
-tms3203x_device::tms3203x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype, address_map_constructor internal_map, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+tms3203x_device::tms3203x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype, address_map_constructor internal_map)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_LITTLE, 32, 24, -2, internal_map),
m_chip_type(chiptype),
m_pc(0),
@@ -281,12 +281,12 @@ tms3203x_device::tms3203x_device(const machine_config &mconfig, device_type type
}
tms32031_device::tms32031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms3203x_device(mconfig, TMS32031, "TMS32031", tag, owner, clock, CHIP_TYPE_TMS32031, ADDRESS_MAP_NAME(internal_32031), "tms32031", __FILE__)
+ : tms3203x_device(mconfig, TMS32031, tag, owner, clock, CHIP_TYPE_TMS32031, ADDRESS_MAP_NAME(internal_32031))
{
}
tms32032_device::tms32032_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms3203x_device(mconfig, TMS32032, "TMS32032", tag, owner, clock, CHIP_TYPE_TMS32032, ADDRESS_MAP_NAME(internal_32032), "tms32032", __FILE__)
+ : tms3203x_device(mconfig, TMS32032, tag, owner, clock, CHIP_TYPE_TMS32032, ADDRESS_MAP_NAME(internal_32032))
{
}
diff --git a/src/devices/cpu/tms32031/tms32031.h b/src/devices/cpu/tms32031/tms32031.h
index 22b1e19488a..b2d38dae11b 100644
--- a/src/devices/cpu/tms32031/tms32031.h
+++ b/src/devices/cpu/tms32031/tms32031.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_TMS32031_TMS32031_H
+#define MAME_CPU_TMS32031_TMS32031_H
-#ifndef __TMS32031_H__
-#define __TMS32031_H__
+#pragma once
//**************************************************************************
@@ -135,23 +135,14 @@ class tms3203x_device : public cpu_device
uint32_t i32[2];
};
-protected:
- enum
- {
- CHIP_TYPE_TMS32031,
- CHIP_TYPE_TMS32032
- };
-
- // construction/destruction
- tms3203x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype, address_map_constructor internal_map, const char *shortname, const char *source);
+public:
virtual ~tms3203x_device();
-public:
// inline configuration helpers
static void set_mcbl_mode(device_t &device, bool mode) { downcast<tms3203x_device &>(device).m_mcbl_mode = mode; }
- template<class _Object> static devcb_base &set_xf0_callback(device_t &device, _Object object) { return downcast<tms3203x_device &>(device).m_xf0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_xf1_callback(device_t &device, _Object object) { return downcast<tms3203x_device &>(device).m_xf1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_iack_callback(device_t &device, _Object object) { return downcast<tms3203x_device &>(device).m_iack_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_xf0_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_xf0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_xf1_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_xf1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_iack_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_iack_cb.set_callback(std::forward<Object>(cb)); }
// public interfaces
static float fp_to_float(uint32_t floatdata);
@@ -160,6 +151,15 @@ public:
static uint32_t double_to_fp(double dval);
protected:
+ enum
+ {
+ CHIP_TYPE_TMS32031,
+ CHIP_TYPE_TMS32032
+ };
+
+ // construction/destruction
+ tms3203x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t chiptype, address_map_constructor internal_map);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -807,9 +807,7 @@ public:
// device type definition
-extern const device_type TMS32031;
-extern const device_type TMS32032;
-
-
+DECLARE_DEVICE_TYPE(TMS32031, tms32031_device)
+DECLARE_DEVICE_TYPE(TMS32032, tms32032_device)
-#endif /* __TMS32031_H__ */
+#endif // MAME_CPU_TMS32031_TMS32031_H
diff --git a/src/devices/cpu/tms32051/tms32051.cpp b/src/devices/cpu/tms32051/tms32051.cpp
index d846e2e4620..f88dc0fc69d 100644
--- a/src/devices/cpu/tms32051/tms32051.cpp
+++ b/src/devices/cpu/tms32051/tms32051.cpp
@@ -7,8 +7,8 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "tms32051.h"
+#include "debugger.h"
enum
{
@@ -46,8 +46,8 @@ enum
};
-const device_type TMS32051 = device_creator<tms32051_device>;
-const device_type TMS32053 = device_creator<tms32053_device>;
+DEFINE_DEVICE_TYPE(TMS32051, tms32051_device, "tms32051", "TMS32051")
+DEFINE_DEVICE_TYPE(TMS32053, tms32053_device, "tms32053", "TMS32053")
/**************************************************************************
@@ -69,8 +69,8 @@ static ADDRESS_MAP_START( tms32051_internal_data, AS_DATA, 16, tms32051_device )
ADDRESS_MAP_END
-tms32051_device::tms32051_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_constructor internal_pgm, address_map_constructor internal_data)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+tms32051_device::tms32051_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_pgm, address_map_constructor internal_data)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 16, -1, internal_pgm)
, m_data_config("data", ENDIANNESS_LITTLE, 16, 16, -1, internal_data)
, m_io_config("io", ENDIANNESS_LITTLE, 16, 16, -1)
@@ -78,9 +78,7 @@ tms32051_device::tms32051_device(const machine_config &mconfig, device_type type
}
tms32051_device::tms32051_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms32051_device(mconfig, TMS32051, "TMS32051", tag, owner, clock, "tms32051", __FILE__,
- ADDRESS_MAP_NAME(tms32051_internal_pgm),
- ADDRESS_MAP_NAME(tms32051_internal_data))
+ : tms32051_device(mconfig, TMS32051, tag, owner, clock, ADDRESS_MAP_NAME(tms32051_internal_pgm), ADDRESS_MAP_NAME(tms32051_internal_data))
{
}
@@ -105,9 +103,7 @@ ADDRESS_MAP_END
tms32053_device::tms32053_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms32051_device(mconfig, TMS32053, "TMS32053", tag, owner, clock, "tms32053", __FILE__,
- ADDRESS_MAP_NAME(tms32053_internal_pgm),
- ADDRESS_MAP_NAME(tms32053_internal_data))
+ : tms32051_device(mconfig, TMS32053, tag, owner, clock, ADDRESS_MAP_NAME(tms32053_internal_pgm), ADDRESS_MAP_NAME(tms32053_internal_data))
{
}
diff --git a/src/devices/cpu/tms32051/tms32051.h b/src/devices/cpu/tms32051/tms32051.h
index 23bd2c2afd0..43553203dc2 100644
--- a/src/devices/cpu/tms32051/tms32051.h
+++ b/src/devices/cpu/tms32051/tms32051.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Ville Linde
-#pragma once
+#ifndef MAME_CPU_TMS32051_TMS32051_H
+#define MAME_CPU_TMS32051_TMS32051_H
-#ifndef __TMS32051_H__
-#define __TMS32051_H__
+#pragma once
enum
@@ -58,12 +58,13 @@ class tms32051_device : public cpu_device
public:
// construction/destruction
tms32051_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- tms32051_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, address_map_constructor internal_pgm, address_map_constructor internal_data);
DECLARE_READ16_MEMBER( cpuregs_r );
DECLARE_WRITE16_MEMBER( cpuregs_w );
protected:
+ tms32051_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_pgm, address_map_constructor internal_data);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -379,8 +380,7 @@ protected:
};
-extern const device_type TMS32051;
-extern const device_type TMS32053;
-
+DECLARE_DEVICE_TYPE(TMS32051, tms32051_device)
+DECLARE_DEVICE_TYPE(TMS32053, tms32053_device)
-#endif /* __TMS32051_H__ */
+#endif // MAME_CPU_TMS32051_TMS32051_H
diff --git a/src/devices/cpu/tms32082/tms32082.cpp b/src/devices/cpu/tms32082/tms32082.cpp
index de23e2f7736..749a8657d6e 100644
--- a/src/devices/cpu/tms32082/tms32082.cpp
+++ b/src/devices/cpu/tms32082/tms32082.cpp
@@ -8,14 +8,14 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "tms32082.h"
+#include "debugger.h"
extern CPU_DISASSEMBLE(tms32082_mp);
extern CPU_DISASSEMBLE(tms32082_pp);
-const device_type TMS32082_MP = device_creator<tms32082_mp_device>;
-const device_type TMS32082_PP = device_creator<tms32082_pp_device>;
+DEFINE_DEVICE_TYPE(TMS32082_MP, tms32082_mp_device, "tms32082_mp", "TMS32082 MP")
+DEFINE_DEVICE_TYPE(TMS32082_PP, tms32082_pp_device, "tms32082_pp", "TMS32082 PP")
@@ -45,7 +45,7 @@ const uint32_t tms32082_mp_device::SHIFT_MASK[] =
tms32082_mp_device::tms32082_mp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, TMS32082_MP, "TMS32082 MP", tag, owner, clock, "tms32082_mp", __FILE__)
+ : cpu_device(mconfig, TMS32082_MP, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 32, 32, 0, ADDRESS_MAP_NAME(mp_internal_map))
{
}
@@ -483,7 +483,7 @@ static ADDRESS_MAP_START(pp_internal_map, AS_PROGRAM, 32, tms32082_pp_device)
ADDRESS_MAP_END
tms32082_pp_device::tms32082_pp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, TMS32082_PP, "TMS32082 PP", tag, owner, clock, "tms32082_pp", __FILE__)
+ : cpu_device(mconfig, TMS32082_PP, tag, owner, clock)
, m_program_config("program", ENDIANNESS_BIG, 32, 32, 0, ADDRESS_MAP_NAME(pp_internal_map))
{
}
diff --git a/src/devices/cpu/tms32082/tms32082.h b/src/devices/cpu/tms32082/tms32082.h
index 9ddf8c6ac00..852f3833363 100644
--- a/src/devices/cpu/tms32082/tms32082.h
+++ b/src/devices/cpu/tms32082/tms32082.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Ville Linde
-#pragma once
+#ifndef MAME_CPU_TMS32082_TMS32082_H
+#define MAME_CPU_TMS32082_TMS32082_H
-#ifndef __TMS32082_H__
-#define __TMS32082_H__
+#pragma once
// Master Processor class
class tms32082_mp_device : public cpu_device
@@ -211,8 +211,8 @@ protected:
};
-extern const device_type TMS32082_MP;
-extern const device_type TMS32082_PP;
+DECLARE_DEVICE_TYPE(TMS32082_MP, tms32082_mp_device)
+DECLARE_DEVICE_TYPE(TMS32082_PP, tms32082_pp_device)
-#endif /* __TMS32082_H__ */
+#endif // MAME_CPU_TMS32082_TMS32082_H
diff --git a/src/devices/cpu/tms34010/34010ops.h b/src/devices/cpu/tms34010/34010ops.h
index 39833b35d77..901e9b56888 100644
--- a/src/devices/cpu/tms34010/34010ops.h
+++ b/src/devices/cpu/tms34010/34010ops.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_TMS34010_34010OPS_H
+#define MAME_CPU_TMS34010_34010OPS_H
-#ifndef __34010OPS_H__
-#define __34010OPS_H__
+#pragma once
@@ -151,4 +151,4 @@ inline void tms340x0_device::TMS34010_WRMEM_DWORD(offs_t A, uint32_t V)
return TMS34010_RDMEM_DWORD(TOBYTE(offset));
-#endif /* __34010OPS_H__ */
+#endif // MAME_CPU_TMS34010_34010OPS_H
diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp
index cf2de1129c0..e437af461c5 100644
--- a/src/devices/cpu/tms34010/tms34010.cpp
+++ b/src/devices/cpu/tms34010/tms34010.cpp
@@ -15,47 +15,46 @@
#include "debugger.h"
#include "screen.h"
+#define LOG_GENERAL (1U << 0)
+#define LOG_CONTROL_REGS (1U << 1)
+#define LOG_GRAPHICS_OPS (1U << 2)
-/***************************************************************************
- DEBUG STATE & STRUCTURES
-***************************************************************************/
-
-#define VERBOSE 0
-#define LOG_CONTROL_REGS 0
-#define LOG_GRAPHICS_OPS 0
+//#define VERBOSE (LOG_GENERAL | LOG_CONTROL_REGS | LOG_GRAPHICS_OPS)
+#include "logmacro.h"
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+#define LOGCONTROLREGS(...) LOGMASKED(LOG_CONTROL_REGS, __VA_ARGS__)
+#define LOGGRAPHICSOPS(...) LOGMASKED(LOG_GRAPHICS_OPS, __VA_ARGS__)
-const device_type TMS34010 = device_creator<tms34010_device>;
-const device_type TMS34020 = device_creator<tms34020_device>;
+DEFINE_DEVICE_TYPE(TMS34010, tms34010_device, "tms34010", "TMS34010")
+DEFINE_DEVICE_TYPE(TMS34020, tms34020_device, "tms34020", "TMS34020")
/***************************************************************************
GLOBAL VARIABLES
***************************************************************************/
-tms340x0_device::tms340x0_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+tms340x0_device::tms340x0_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, type, tag, owner, clock)
, device_video_interface(mconfig, *this)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 32, 3), m_pc(0), m_ppc(0), m_st(0), m_pixel_write(nullptr), m_pixel_read(nullptr), m_raster_op(nullptr), m_pixel_op(nullptr), m_pixel_op_timing(0), m_convsp(0), m_convdp(0), m_convmp(0), m_gfxcycles(0), m_pixelshift(0), m_is_34020(0), m_reset_deferred(false)
- , m_halt_on_reset(false), m_hblank_stable(0), m_external_host_access(0), m_executing(0), m_program(nullptr), m_direct(nullptr)
- , m_pixclock(0)
+ , m_halt_on_reset(false), m_hblank_stable(0), m_external_host_access(0), m_executing(0), m_program(nullptr), m_direct(nullptr)
+ , m_pixclock(0)
, m_pixperclock(0), m_scantimer(nullptr), m_icount(0)
- , m_output_int_cb(*this)
+ , m_output_int_cb(*this)
{
}
tms34010_device::tms34010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms340x0_device(mconfig, TMS34010, "TMS34010", tag, owner, clock, "tms34010")
+ : tms340x0_device(mconfig, TMS34010, tag, owner, clock)
{
m_is_34020 = 0;
}
tms34020_device::tms34020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms340x0_device(mconfig, TMS34020, "TMS34020", tag, owner, clock, "tms34020")
+ : tms340x0_device(mconfig, TMS34020, tag, owner, clock)
{
m_is_34020 = 1;
}
@@ -489,7 +488,7 @@ void tms340x0_device::check_interrupt()
/* check for NMI first */
if (IOREG(REG_HSTCTLH) & 0x0100)
{
- LOG(("TMS34010 '%s' takes NMI\n", tag()));
+ LOG("TMS34010 takes NMI\n");
/* ack the NMI */
IOREG(REG_HSTCTLH) &= ~0x0100;
@@ -516,28 +515,28 @@ void tms340x0_device::check_interrupt()
/* host interrupt */
if (irq & TMS34010_HI)
{
- LOG(("TMS34010 '%s' takes HI\n", tag()));
+ LOG("TMS34010 takes HI\n");
vector = 0xfffffec0;
}
/* display interrupt */
else if (irq & TMS34010_DI)
{
- LOG(("TMS34010 '%s' takes DI\n", tag()));
+ LOG("TMS34010 takes DI\n");
vector = 0xfffffea0;
}
/* window violation interrupt */
else if (irq & TMS34010_WV)
{
- LOG(("TMS34010 '%s' takes WV\n", tag()));
+ LOG("TMS34010 takes WV\n");
vector = 0xfffffe80;
}
/* external 1 interrupt */
else if (irq & TMS34010_INT1)
{
- LOG(("TMS34010 '%s' takes INT1\n", tag()));
+ LOG("TMS34010 takes INT1\n");
vector = 0xffffffc0;
irqline = 0;
}
@@ -545,7 +544,7 @@ void tms340x0_device::check_interrupt()
/* external 2 interrupt */
else if (irq & TMS34010_INT2)
{
- LOG(("TMS34010 '%s' takes INT2\n", tag()));
+ LOG("TMS34010 takes INT2\n");
vector = 0xffffffa0;
irqline = 1;
}
@@ -666,7 +665,7 @@ void tms340x0_device::device_reset()
void tms340x0_device::execute_set_input(int inputnum, int state)
{
- LOG(("TMS34010 '%s' set irq line %d state %d\n", tag(), inputnum, state));
+ LOG("TMS34010 set irq line %d state %d\n", inputnum, state);
/* set the pending interrupt */
switch (inputnum)
@@ -699,7 +698,7 @@ TIMER_CALLBACK_MEMBER( tms340x0_device::internal_interrupt_callback )
/* call through to the CPU to generate the int */
IOREG(REG_INTPEND) |= type;
- LOG(("TMS34010 '%s' set internal interrupt $%04x\n", tag(), type));
+ LOG("TMS34010 set internal interrupt $%04x\n", type);
/* generate triggers so that spin loops can key off them */
signal_interrupt_trigger();
@@ -872,7 +871,7 @@ TIMER_CALLBACK_MEMBER( tms340x0_device::scanline_callback )
if (!m_is_34020)
{
IOREG(REG_DPYADR) = IOREG(REG_DPYSTRT);
- LOG(("Start of VBLANK, DPYADR = %04X\n", IOREG(REG_DPYADR)));
+ LOG("Start of VBLANK, DPYADR = %04X\n", IOREG(REG_DPYADR));
}
/* 34020 loads DPYNXx with DPYSTx */
@@ -921,8 +920,8 @@ TIMER_CALLBACK_MEMBER( tms340x0_device::scanline_callback )
m_hblank_stable++;
}
- LOG(("Configuring screen: HTOTAL=%3d BLANK=%3d-%3d VTOTAL=%3d BLANK=%3d-%3d refresh=%f\n",
- htotal, SMART_IOREG(HEBLNK), SMART_IOREG(HSBLNK), vtotal, veblnk, vsblnk, ATTOSECONDS_TO_HZ(refresh)));
+ LOG("Configuring screen: HTOTAL=%3d BLANK=%3d-%3d VTOTAL=%3d BLANK=%3d-%3d refresh=%f\n",
+ htotal, SMART_IOREG(HEBLNK), SMART_IOREG(HSBLNK), vtotal, veblnk, vsblnk, ATTOSECONDS_TO_HZ(refresh));
/* interlaced timing not supported */
if ((SMART_IOREG(DPYCTL) & 0x4000) == 0)
@@ -973,7 +972,7 @@ TIMER_CALLBACK_MEMBER( tms340x0_device::scanline_callback )
}
-void tms340x0_device::get_display_params(tms34010_display_params *params)
+void tms340x0_device::get_display_params(display_params *params)
{
params->enabled = ((SMART_IOREG(DPYCTL) & 0x8000) != 0);
params->vcount = SMART_IOREG(VCOUNT);
@@ -1007,7 +1006,7 @@ void tms340x0_device::get_display_params(tms34010_display_params *params)
uint32_t tms340x0_device::tms340x0_ind16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
pen_t blackpen = screen.palette().black_pen();
- tms34010_display_params params;
+ display_params params;
int x;
/* get the display parameters for the screen */
@@ -1017,7 +1016,7 @@ uint32_t tms340x0_device::tms340x0_ind16(screen_device &screen, bitmap_ind16 &bi
if (params.enabled)
{
/* call through to the callback */
- LOG((" Update: scan=%3d ROW=%04X COL=%04X\n", cliprect.min_y, params.rowaddr, params.coladdr));
+ LOG(" Update: scan=%3d ROW=%04X COL=%04X\n", cliprect.min_y, params.rowaddr, params.coladdr);
m_scanline_ind16_cb(screen, bitmap, cliprect.min_y, &params);
}
@@ -1038,7 +1037,7 @@ uint32_t tms340x0_device::tms340x0_ind16(screen_device &screen, bitmap_ind16 &bi
uint32_t tms340x0_device::tms340x0_rgb32(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
pen_t blackpen = rgb_t::black();
- tms34010_display_params params;
+ display_params params;
int x;
/* get the display parameters for the screen */
@@ -1048,7 +1047,7 @@ uint32_t tms340x0_device::tms340x0_rgb32(screen_device &screen, bitmap_rgb32 &bi
if (params.enabled)
{
/* call through to the callback */
- LOG((" Update: scan=%3d ROW=%04X COL=%04X\n", cliprect.min_y, params.rowaddr, params.coladdr));
+ LOG(" Update: scan=%3d ROW=%04X COL=%04X\n", cliprect.min_y, params.rowaddr, params.coladdr);
m_scanline_rgb32_cb(screen, bitmap, cliprect.min_y, &params);
}
@@ -1070,7 +1069,6 @@ uint32_t tms340x0_device::tms340x0_rgb32(screen_device &screen, bitmap_rgb32 &bi
I/O REGISTER WRITES
***************************************************************************/
-#if 0
static const char *const ioreg_name[] =
{
"HESYNC", "HEBLNK", "HSBLNK", "HTOTAL",
@@ -1083,7 +1081,6 @@ static const char *const ioreg_name[] =
"RESERVED", "RESERVED", "RESERVED", "DPYTAP",
"HCOUNT", "VCOUNT", "DPYADR", "REFCNT"
};
-#endif
WRITE16_MEMBER( tms34010_device::io_register_w )
{
@@ -1206,12 +1203,10 @@ WRITE16_MEMBER( tms34010_device::io_register_w )
break;
}
-// if (LOG_CONTROL_REGS)
-// logerror("%s: %s = %04X (%d)\n", machine().describe_context(), ioreg_name[offset], IOREG(offset), m_screen.vpos());
+ LOGCONTROLREGS("%s: %s = %04X (%d)\n", machine().describe_context(), ioreg_name[offset], IOREG(offset), m_screen->vpos());
}
-#if 0
static const char *const ioreg020_name[] =
{
"VESYNC", "HESYNC", "VEBLNK", "HEBLNK",
@@ -1234,7 +1229,6 @@ static const char *const ioreg020_name[] =
"IHOST1L", "IHOST1H", "IHOST2L", "IHOST2H",
"IHOST3L", "IHOST3H", "IHOST4L", "IHOST4H"
};
-#endif
WRITE16_MEMBER( tms34020_device::io_register_w )
{
@@ -1244,8 +1238,7 @@ WRITE16_MEMBER( tms34020_device::io_register_w )
oldreg = IOREG(offset);
IOREG(offset) = data;
-// if (LOG_CONTROL_REGS)
-// logerror("%s: %s = %04X (%d)\n", machine().describe_context(), ioreg020_name[offset], IOREG(offset), m_screen.vpos());
+ LOGCONTROLREGS("%s: %s = %04X (%d)\n", machine().describe_context(), ioreg020_name[offset], IOREG(offset), m_screen->vpos());
switch (offset)
{
@@ -1402,8 +1395,7 @@ READ16_MEMBER( tms34010_device::io_register_r )
{
int result, total;
-// if (LOG_CONTROL_REGS)
-// logerror("%s: read %s\n", machine().describe_context(), ioreg_name[offset]);
+ LOGCONTROLREGS("%s: read %s\n", machine().describe_context(), ioreg_name[offset]);
switch (offset)
{
@@ -1444,8 +1436,7 @@ READ16_MEMBER( tms34020_device::io_register_r )
{
int result, total;
-// if (LOG_CONTROL_REGS)
-// logerror("%s: read %s\n", machine().describe_context(), ioreg_name[offset]);
+ LOGCONTROLREGS("%s: read %s\n", machine().describe_context(), ioreg_name[offset]);
switch (offset)
{
diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h
index a4efa7b14da..32b445629a9 100644
--- a/src/devices/cpu/tms34010/tms34010.h
+++ b/src/devices/cpu/tms34010/tms34010.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_TMS34010_TMS34010_H
+#define MAME_CPU_TMS34010_TMS34010_H
-#ifndef __TMS34010_H__
-#define __TMS34010_H__
+#pragma once
/* register indexes for get_reg and set_reg */
@@ -95,77 +95,6 @@ enum
REG_REFCNT
};
-enum
-{
- REG020_VESYNC,
- REG020_HESYNC,
- REG020_VEBLNK,
- REG020_HEBLNK,
- REG020_VSBLNK,
- REG020_HSBLNK,
- REG020_VTOTAL,
- REG020_HTOTAL,
- REG020_DPYCTL, /* matches 010 */
- REG020_DPYSTRT, /* matches 010 */
- REG020_DPYINT, /* matches 010 */
- REG020_CONTROL, /* matches 010 */
- REG020_HSTDATA, /* matches 010 */
- REG020_HSTADRL, /* matches 010 */
- REG020_HSTADRH, /* matches 010 */
- REG020_HSTCTLL, /* matches 010 */
-
- REG020_HSTCTLH, /* matches 010 */
- REG020_INTENB, /* matches 010 */
- REG020_INTPEND, /* matches 010 */
- REG020_CONVSP, /* matches 010 */
- REG020_CONVDP, /* matches 010 */
- REG020_PSIZE, /* matches 010 */
- REG020_PMASKL,
- REG020_PMASKH,
- REG020_CONVMP,
- REG020_CONTROL2,
- REG020_CONFIG,
- REG020_DPYTAP, /* matches 010 */
- REG020_VCOUNT,
- REG020_HCOUNT,
- REG020_DPYADR, /* matches 010 */
- REG020_REFADR,
-
- REG020_DPYSTL,
- REG020_DPYSTH,
- REG020_DPYNXL,
- REG020_DPYNXH,
- REG020_DINCL,
- REG020_DINCH,
- REG020_RES0,
- REG020_HESERR,
- REG020_RES1,
- REG020_RES2,
- REG020_RES3,
- REG020_RES4,
- REG020_SCOUNT,
- REG020_BSFLTST,
- REG020_DPYMSK,
- REG020_RES5,
-
- REG020_SETVCNT,
- REG020_SETHCNT,
- REG020_BSFLTDL,
- REG020_BSFLTDH,
- REG020_RES6,
- REG020_RES7,
- REG020_RES8,
- REG020_RES9,
- REG020_IHOST1L,
- REG020_IHOST1H,
- REG020_IHOST2L,
- REG020_IHOST2H,
- REG020_IHOST3L,
- REG020_IHOST3H,
- REG020_IHOST4L,
- REG020_IHOST4H
-};
-
/* Interrupts that are generated by the processor internally */
#define TMS34010_INT1 0x0002 /* External Interrupt 1 */
#define TMS34010_INT2 0x0004 /* External Interrupt 2 */
@@ -174,18 +103,6 @@ enum
#define TMS34010_WV 0x0800 /* Window Violation Interrupt */
-/* Configuration structure */
-struct tms34010_display_params
-{
- uint16_t vcount; /* most recent VCOUNT */
- uint16_t veblnk, vsblnk; /* start/end of VBLANK */
- uint16_t heblnk, hsblnk; /* start/end of HBLANK */
- uint16_t rowaddr, coladdr; /* row/column addresses */
- uint8_t yoffset; /* y offset from addresses */
- uint8_t enabled; /* video enabled */
-};
-
-
#define MCFG_TMS340X0_HALT_ON_RESET(_value) \
tms340x0_device::set_halt_on_reset(*device, _value);
@@ -195,59 +112,64 @@ struct tms34010_display_params
#define MCFG_TMS340X0_PIXELS_PER_CLOCK(_value) \
tms340x0_device::set_pixels_per_clock(*device, _value);
-typedef device_delegate<void (screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)> scanline_ind16_cb_delegate;
-
-#define TMS340X0_SCANLINE_IND16_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
+#define TMS340X0_SCANLINE_IND16_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms340x0_device::display_params *params)
#define MCFG_TMS340X0_SCANLINE_IND16_CB(_class, _method) \
- tms340x0_device::set_scanline_ind16_callback(*device, scanline_ind16_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-
+ tms340x0_device::set_scanline_ind16_callback(*device, tms340x0_device::scanline_ind16_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-typedef device_delegate<void (screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)> scanline_rgb32_cb_delegate;
-#define TMS340X0_SCANLINE_RGB32_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
+#define TMS340X0_SCANLINE_RGB32_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms340x0_device::display_params *params)
#define MCFG_TMS340X0_SCANLINE_RGB32_CB(_class, _method) \
- tms340x0_device::set_scanline_rgb32_callback(*device, scanline_rgb32_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ tms340x0_device::set_scanline_rgb32_callback(*device, tms340x0_device::scanline_rgb32_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_TMS340X0_OUTPUT_INT_CB(_devcb) \
devcb = &tms340x0_device::set_output_int_callback(*device, DEVCB_##_devcb);
-typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> to_shiftreg_cb_delegate;
-
#define TMS340X0_TO_SHIFTREG_CB_MEMBER(_name) void _name(address_space &space, offs_t address, uint16_t *shiftreg)
#define MCFG_TMS340X0_TO_SHIFTREG_CB(_class, _method) \
- tms340x0_device::set_to_shiftreg_callback(*device, to_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-
+ tms340x0_device::set_to_shiftreg_callback(*device, tms340x0_device::to_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> from_shiftreg_cb_delegate;
#define TMS340X0_FROM_SHIFTREG_CB_MEMBER(_name) void _name(address_space &space, offs_t address, uint16_t *shiftreg)
#define MCFG_TMS340X0_FROM_SHIFTREG_CB(_class, _method) \
- tms340x0_device::set_from_shiftreg_callback(*device, from_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ tms340x0_device::set_from_shiftreg_callback(*device, tms340x0_device::from_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
class tms340x0_device : public cpu_device,
public device_video_interface
{
public:
- // construction/destruction
- tms340x0_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
+ // Configuration structure
+ struct display_params
+ {
+ uint16_t vcount; /* most recent VCOUNT */
+ uint16_t veblnk, vsblnk; /* start/end of VBLANK */
+ uint16_t heblnk, hsblnk; /* start/end of HBLANK */
+ uint16_t rowaddr, coladdr; /* row/column addresses */
+ uint8_t yoffset; /* y offset from addresses */
+ uint8_t enabled; /* video enabled */
+ };
+
+ typedef device_delegate<void (screen_device &screen, bitmap_ind16 &bitmap, int scanline, const display_params *params)> scanline_ind16_cb_delegate;
+ typedef device_delegate<void (screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const display_params *params)> scanline_rgb32_cb_delegate;
+ typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> to_shiftreg_cb_delegate;
+ typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> from_shiftreg_cb_delegate;
static void set_halt_on_reset(device_t &device, bool halt_on_reset) { downcast<tms340x0_device &>(device).m_halt_on_reset = halt_on_reset; }
static void set_pixel_clock(device_t &device, uint32_t pixclock) { downcast<tms340x0_device &>(device).m_pixclock = pixclock; }
static void set_pixels_per_clock(device_t &device, int pixperclock) { downcast<tms340x0_device &>(device).m_pixperclock = pixperclock; }
static void set_scanline_ind16_callback(device_t &device, scanline_ind16_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_ind16_cb = callback; }
static void set_scanline_rgb32_callback(device_t &device, scanline_rgb32_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_rgb32_cb = callback; }
- template<class _Object> static devcb_base &set_output_int_callback(device_t &device, _Object object) { return downcast<tms340x0_device &>(device).m_output_int_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_output_int_callback(device_t &device, Object &&cb) { return downcast<tms340x0_device &>(device).m_output_int_cb.set_callback(std::forward<Object>(cb)); }
static void set_to_shiftreg_callback(device_t &device, to_shiftreg_cb_delegate callback) { downcast<tms340x0_device &>(device).m_to_shiftreg_cb = callback; }
static void set_from_shiftreg_callback(device_t &device, from_shiftreg_cb_delegate callback) { downcast<tms340x0_device &>(device).m_from_shiftreg_cb = callback; }
- void get_display_params(tms34010_display_params *params);
+ void get_display_params(display_params *params);
void tms34010_state_postload();
uint32_t tms340x0_ind16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -263,6 +185,80 @@ public:
TIMER_CALLBACK_MEMBER(scanline_callback);
protected:
+ enum
+ {
+ REG020_VESYNC,
+ REG020_HESYNC,
+ REG020_VEBLNK,
+ REG020_HEBLNK,
+ REG020_VSBLNK,
+ REG020_HSBLNK,
+ REG020_VTOTAL,
+ REG020_HTOTAL,
+ REG020_DPYCTL, /* matches 010 */
+ REG020_DPYSTRT, /* matches 010 */
+ REG020_DPYINT, /* matches 010 */
+ REG020_CONTROL, /* matches 010 */
+ REG020_HSTDATA, /* matches 010 */
+ REG020_HSTADRL, /* matches 010 */
+ REG020_HSTADRH, /* matches 010 */
+ REG020_HSTCTLL, /* matches 010 */
+
+ REG020_HSTCTLH, /* matches 010 */
+ REG020_INTENB, /* matches 010 */
+ REG020_INTPEND, /* matches 010 */
+ REG020_CONVSP, /* matches 010 */
+ REG020_CONVDP, /* matches 010 */
+ REG020_PSIZE, /* matches 010 */
+ REG020_PMASKL,
+ REG020_PMASKH,
+ REG020_CONVMP,
+ REG020_CONTROL2,
+ REG020_CONFIG,
+ REG020_DPYTAP, /* matches 010 */
+ REG020_VCOUNT,
+ REG020_HCOUNT,
+ REG020_DPYADR, /* matches 010 */
+ REG020_REFADR,
+
+ REG020_DPYSTL,
+ REG020_DPYSTH,
+ REG020_DPYNXL,
+ REG020_DPYNXH,
+ REG020_DINCL,
+ REG020_DINCH,
+ REG020_RES0,
+ REG020_HESERR,
+ REG020_RES1,
+ REG020_RES2,
+ REG020_RES3,
+ REG020_RES4,
+ REG020_SCOUNT,
+ REG020_BSFLTST,
+ REG020_DPYMSK,
+ REG020_RES5,
+
+ REG020_SETVCNT,
+ REG020_SETHCNT,
+ REG020_BSFLTDL,
+ REG020_BSFLTDH,
+ REG020_RES6,
+ REG020_RES7,
+ REG020_RES8,
+ REG020_RES9,
+ REG020_IHOST1L,
+ REG020_IHOST1H,
+ REG020_IHOST2L,
+ REG020_IHOST2H,
+ REG020_IHOST3L,
+ REG020_IHOST3H,
+ REG020_IHOST4L,
+ REG020_IHOST4H
+ };
+
+ // construction/destruction
+ tms340x0_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -1032,7 +1028,7 @@ protected:
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
};
-extern const device_type TMS34010;
+DECLARE_DEVICE_TYPE(TMS34010, tms34010_device)
class tms34020_device : public tms340x0_device
{
@@ -1049,7 +1045,7 @@ protected:
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
};
-extern const device_type TMS34020;
+DECLARE_DEVICE_TYPE(TMS34020, tms34020_device)
@@ -1067,4 +1063,4 @@ extern const device_type TMS34020;
CPU_DISASSEMBLE( tms34010 );
CPU_DISASSEMBLE( tms34020 );
-#endif /* __TMS34010_H__ */
+#endif // MAME_CPU_TMS34010_TMS34010_H
diff --git a/src/devices/cpu/tms57002/tms57002.cpp b/src/devices/cpu/tms57002/tms57002.cpp
index 88e49847b80..92da5cd8c72 100644
--- a/src/devices/cpu/tms57002/tms57002.cpp
+++ b/src/devices/cpu/tms57002/tms57002.cpp
@@ -8,12 +8,12 @@
***************************************************************************/
-
#include "emu.h"
-#include "debugger.h"
#include "tms57002.h"
+#include "debugger.h"
+
-const device_type TMS57002 = device_creator<tms57002_device>;
+DEFINE_DEVICE_TYPE(TMS57002, tms57002_device, "tms57002", "TMS57002")
// Can't use a DEVICE_ADDRESS_MAP, not yet anyway
static ADDRESS_MAP_START(internal_pgm, AS_PROGRAM, 32, tms57002_device)
@@ -21,11 +21,11 @@ static ADDRESS_MAP_START(internal_pgm, AS_PROGRAM, 32, tms57002_device)
ADDRESS_MAP_END
tms57002_device::tms57002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, TMS57002, "TMS57002", tag, owner, clock, "tms57002", __FILE__),
- device_sound_interface(mconfig, *this), macc(0), st0(0), st1(0), sti(0),
- txrd(0),
- program_config("program", ENDIANNESS_LITTLE, 32, 8, -2, ADDRESS_MAP_NAME(internal_pgm)),
- data_config("data", ENDIANNESS_LITTLE, 8, 20)
+ : cpu_device(mconfig, TMS57002, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , macc(0), st0(0), st1(0), sti(0), txrd(0)
+ , program_config("program", ENDIANNESS_LITTLE, 32, 8, -2, ADDRESS_MAP_NAME(internal_pgm))
+ , data_config("data", ENDIANNESS_LITTLE, 8, 20)
{
}
diff --git a/src/devices/cpu/tms57002/tms57002.h b/src/devices/cpu/tms57002/tms57002.h
index ba0765b8b07..97fec1739c2 100644
--- a/src/devices/cpu/tms57002/tms57002.h
+++ b/src/devices/cpu/tms57002/tms57002.h
@@ -7,10 +7,10 @@
TMS57002 "DASP" emulator.
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_TMS57002_TMS57002_H
+#define MAME_CPU_TMS57002_TMS57002_H
-#ifndef __TMS57002_H__
-#define __TMS57002_H__
+#pragma once
class tms57002_device : public cpu_device, public device_sound_interface {
public:
@@ -212,6 +212,6 @@ enum {
TMS57002_XWR
};
-extern const device_type TMS57002;
+DECLARE_DEVICE_TYPE(TMS57002, tms57002_device)
-#endif
+#endif // MAME_CPU_TMS57002_TMS57002_H
diff --git a/src/devices/cpu/tms7000/tms7000.cpp b/src/devices/cpu/tms7000/tms7000.cpp
index 6693b69866f..c1bd98620fd 100644
--- a/src/devices/cpu/tms7000/tms7000.cpp
+++ b/src/devices/cpu/tms7000/tms7000.cpp
@@ -22,29 +22,29 @@
// TMS7000 is the most basic one, 128 bytes internal RAM and no internal ROM.
// TMS7020 and TMS7040 are same, but with 2KB and 4KB internal ROM respectively.
-const device_type TMS7000 = device_creator<tms7000_device>;
-const device_type TMS7020 = device_creator<tms7020_device>;
-const device_type TMS7040 = device_creator<tms7040_device>;
+DEFINE_DEVICE_TYPE(TMS7000, tms7000_device, "tms7000", "TMS7000")
+DEFINE_DEVICE_TYPE(TMS7020, tms7020_device, "tms7020", "TMS7020")
+DEFINE_DEVICE_TYPE(TMS7040, tms7040_device, "tms7040", "TMS7040")
// Exelvision (spinoff of TI) TMS7020 added one custom opcode.
-const device_type TMS7020_EXL = device_creator<tms7020_exl_device>;
+DEFINE_DEVICE_TYPE(TMS7020_EXL, tms7020_exl_device, "tms7020_exl", "TMS7020 (Exelvision)")
// CMOS devices biggest difference in a 'real world' setting is that the power
// requirements are much lower. This obviously has no use in software emulation.
-const device_type TMS70C00 = device_creator<tms70c00_device>;
-const device_type TMS70C20 = device_creator<tms70c20_device>;
-const device_type TMS70C40 = device_creator<tms70c40_device>;
+DEFINE_DEVICE_TYPE(TMS70C00, tms70c00_device, "tms70c00", "TMS70C00")
+DEFINE_DEVICE_TYPE(TMS70C20, tms70c20_device, "tms70c20", "TMS70C20")
+DEFINE_DEVICE_TYPE(TMS70C40, tms70c40_device, "tms70c40", "TMS70C40")
// TMS70x1 features more peripheral I/O, the main addition being a serial port.
// TMS70x2 is the same, just with twice more RAM (256 bytes)
-const device_type TMS7001 = device_creator<tms7001_device>;
-const device_type TMS7041 = device_creator<tms7041_device>;
-const device_type TMS7002 = device_creator<tms7002_device>;
-const device_type TMS7042 = device_creator<tms7042_device>;
+DEFINE_DEVICE_TYPE(TMS7001, tms7001_device, "tms7001", "TMS7001")
+DEFINE_DEVICE_TYPE(TMS7041, tms7041_device, "tms7041", "TMS7041")
+DEFINE_DEVICE_TYPE(TMS7002, tms7002_device, "tms7002", "TMS7002")
+DEFINE_DEVICE_TYPE(TMS7042, tms7042_device, "tms7042", "TMS7042")
// TMS70C46 is literally a shell around a TMS70C40, with support for external
// memory bus, auto external clock divider on slow memory, and wake-up on keypress.
-const device_type TMS70C46 = device_creator<tms70c46_device>;
+DEFINE_DEVICE_TYPE(TMS70C46, tms70c46_device, "tms70c46", "TMC70C46")
// TMS70Cx2 is an update to TMS70x2 with some extra features. Due to some changes
// in peripheral file I/O, it is not backward compatible to TMS70x2.
@@ -107,15 +107,12 @@ ADDRESS_MAP_END
// device definitions
tms7000_device::tms7000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, TMS7000, "TMS7000", tag, owner, clock, "tms7000", __FILE__),
- m_program_config("program", ENDIANNESS_BIG, 8, 16, 0, ADDRESS_MAP_NAME(tms7000_mem)),
- m_io_config("io", ENDIANNESS_BIG, 8, 8, 0, ADDRESS_MAP_NAME(tms7000_io)),
- m_info_flags(0)
+ : tms7000_device(mconfig, TMS7000, tag, owner, clock, ADDRESS_MAP_NAME(tms7000_mem), 0)
{
}
-tms7000_device::tms7000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal, uint32_t info_flags, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+tms7000_device::tms7000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal, uint32_t info_flags)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, 8, 16, 0, internal),
m_io_config("io", ENDIANNESS_BIG, 8, 8, 0, ADDRESS_MAP_NAME(tms7000_io)),
m_info_flags(info_flags)
@@ -123,57 +120,57 @@ tms7000_device::tms7000_device(const machine_config &mconfig, device_type type,
}
tms7020_device::tms7020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS7020, "TMS7020", tag, owner, clock, ADDRESS_MAP_NAME(tms7020_mem), 0, "tms7020", __FILE__)
+ : tms7000_device(mconfig, TMS7020, tag, owner, clock, ADDRESS_MAP_NAME(tms7020_mem), 0)
{
}
tms7020_exl_device::tms7020_exl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS7020_EXL, "TMS7020 (Exelvision)", tag, owner, clock, ADDRESS_MAP_NAME(tms7020_mem), 0, "tms7020_exl", __FILE__)
+ : tms7000_device(mconfig, TMS7020_EXL, tag, owner, clock, ADDRESS_MAP_NAME(tms7020_mem), 0)
{
}
tms7040_device::tms7040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS7040, "TMS7040", tag, owner, clock, ADDRESS_MAP_NAME(tms7040_mem), 0, "tms7040", __FILE__)
+ : tms7000_device(mconfig, TMS7040, tag, owner, clock, ADDRESS_MAP_NAME(tms7040_mem), 0)
{
}
tms70c00_device::tms70c00_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS70C00, "TMS70C00", tag, owner, clock, ADDRESS_MAP_NAME(tms7000_mem), TMS7000_CHIP_IS_CMOS, "tms70c00", __FILE__)
+ : tms7000_device(mconfig, TMS70C00, tag, owner, clock, ADDRESS_MAP_NAME(tms7000_mem), CHIP_IS_CMOS)
{
}
tms70c20_device::tms70c20_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS70C20, "TMS70C20", tag, owner, clock, ADDRESS_MAP_NAME(tms7020_mem), TMS7000_CHIP_IS_CMOS, "tms70c20", __FILE__)
+ : tms7000_device(mconfig, TMS70C20, tag, owner, clock, ADDRESS_MAP_NAME(tms7020_mem), CHIP_IS_CMOS)
{
}
tms70c40_device::tms70c40_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS70C40, "TMS70C40", tag, owner, clock, ADDRESS_MAP_NAME(tms7040_mem), TMS7000_CHIP_IS_CMOS, "tms70c40", __FILE__)
+ : tms7000_device(mconfig, TMS70C40, tag, owner, clock, ADDRESS_MAP_NAME(tms7040_mem), CHIP_IS_CMOS)
{
}
tms7001_device::tms7001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS7001, "TMS7001", tag, owner, clock, ADDRESS_MAP_NAME(tms7001_mem), TMS7000_CHIP_FAMILY_70X2, "tms7001", __FILE__)
+ : tms7000_device(mconfig, TMS7001, tag, owner, clock, ADDRESS_MAP_NAME(tms7001_mem), CHIP_FAMILY_70X2)
{
}
tms7041_device::tms7041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS7041, "TMS7041", tag, owner, clock, ADDRESS_MAP_NAME(tms7041_mem), TMS7000_CHIP_FAMILY_70X2, "tms7041", __FILE__)
+ : tms7000_device(mconfig, TMS7041, tag, owner, clock, ADDRESS_MAP_NAME(tms7041_mem), CHIP_FAMILY_70X2)
{
}
tms7002_device::tms7002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS7002, "TMS7002", tag, owner, clock, ADDRESS_MAP_NAME(tms7002_mem), TMS7000_CHIP_FAMILY_70X2, "tms7002", __FILE__)
+ : tms7000_device(mconfig, TMS7002, tag, owner, clock, ADDRESS_MAP_NAME(tms7002_mem), CHIP_FAMILY_70X2)
{
}
tms7042_device::tms7042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS7042, "TMS7042", tag, owner, clock, ADDRESS_MAP_NAME(tms7042_mem), TMS7000_CHIP_FAMILY_70X2, "tms7042", __FILE__)
+ : tms7000_device(mconfig, TMS7042, tag, owner, clock, ADDRESS_MAP_NAME(tms7042_mem), CHIP_FAMILY_70X2)
{
}
tms70c46_device::tms70c46_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms7000_device(mconfig, TMS70C46, "TMS70C46", tag, owner, clock, ADDRESS_MAP_NAME(tms70c46_mem), TMS7000_CHIP_IS_CMOS, "tms70c46", __FILE__)
+ : tms7000_device(mconfig, TMS70C46, tag, owner, clock, ADDRESS_MAP_NAME(tms70c46_mem), CHIP_IS_CMOS)
{
}
diff --git a/src/devices/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h
index 8fbab15246a..c6553e51c4c 100644
--- a/src/devices/cpu/tms7000/tms7000.h
+++ b/src/devices/cpu/tms7000/tms7000.h
@@ -6,10 +6,10 @@
*/
-#pragma once
+#ifndef MAME_CPU_TMS7000_TMS7000_H
+#define MAME_CPU_TMS7000_TMS7000_H
-#ifndef __TMS7000_H__
-#define __TMS7000_H__
+#pragma once
#include "debugger.h"
@@ -32,20 +32,12 @@ enum
TMS7000_PORTE /* TMS70C46 only */
};
-// chip info flags
-#define TMS7000_CHIP_IS_CMOS 0x01
-#define TMS7000_CHIP_FAMILY_70X0 0x00
-#define TMS7000_CHIP_FAMILY_70X2 0x02
-#define TMS7000_CHIP_FAMILY_70CX2 0x04
-#define TMS7000_CHIP_FAMILY_MASK 0x06
-
class tms7000_device : public cpu_device
{
public:
// construction/destruction
tms7000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- tms7000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal, uint32_t info_flags, const char *shortname, const char *source);
DECLARE_READ8_MEMBER(tms7000_unmapped_rf_r) { if (!machine().side_effect_disabled()) logerror("'%s' (%04X): unmapped_rf_r @ $%04x\n", tag(), m_pc, offset + 0x80); return 0; };
DECLARE_WRITE8_MEMBER(tms7000_unmapped_rf_w) { logerror("'%s' (%04X): unmapped_rf_w @ $%04x = $%02x\n", tag(), m_pc, offset + 0x80, data); };
@@ -55,13 +47,21 @@ public:
DECLARE_READ8_MEMBER(tms7002_pf_r) { return tms7000_pf_r(space, offset + 0x10); }
DECLARE_WRITE8_MEMBER(tms7002_pf_w) { tms7000_pf_w(space, offset + 0x10, data); }
- bool chip_is_cmos() { return (m_info_flags & TMS7000_CHIP_IS_CMOS) ? true : false; }
- uint32_t chip_get_family() { return m_info_flags & TMS7000_CHIP_FAMILY_MASK; }
- bool chip_is_family_70x0() { return chip_get_family() == TMS7000_CHIP_FAMILY_70X0; }
- bool chip_is_family_70x2() { return chip_get_family() == TMS7000_CHIP_FAMILY_70X2; }
- bool chip_is_family_70cx2() { return chip_get_family() == TMS7000_CHIP_FAMILY_70CX2; }
+ bool chip_is_cmos() const { return (m_info_flags & CHIP_IS_CMOS) ? true : false; }
+ bool chip_is_family_70x0() const { return chip_get_family() == CHIP_FAMILY_70X0; }
+ bool chip_is_family_70x2() const { return chip_get_family() == CHIP_FAMILY_70X2; }
+ bool chip_is_family_70cx2() const { return chip_get_family() == CHIP_FAMILY_70CX2; }
protected:
+ // chip info flags
+ static constexpr uint32_t CHIP_IS_CMOS = 0x01;
+ static constexpr uint32_t CHIP_FAMILY_70X0 = 0x00;
+ static constexpr uint32_t CHIP_FAMILY_70X2 = 0x02;
+ static constexpr uint32_t CHIP_FAMILY_70CX2 = 0x04;
+ static constexpr uint32_t CHIP_FAMILY_MASK = 0x06;
+
+ tms7000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal, uint32_t info_flags);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -86,6 +86,8 @@ protected:
virtual uint32_t disasm_max_opcode_bytes() const override { return 4; }
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
+ uint32_t chip_get_family() const { return m_info_flags & CHIP_FAMILY_MASK; }
+
virtual void execute_one(uint8_t op);
address_space_config m_program_config;
@@ -358,17 +360,17 @@ public:
};
-extern const device_type TMS7000;
-extern const device_type TMS7020;
-extern const device_type TMS7020_EXL;
-extern const device_type TMS7040;
-extern const device_type TMS70C00;
-extern const device_type TMS70C20;
-extern const device_type TMS70C40;
-extern const device_type TMS70C46;
-extern const device_type TMS7001;
-extern const device_type TMS7041;
-extern const device_type TMS7002;
-extern const device_type TMS7042;
-
-#endif /* __TMS7000_H__ */
+DECLARE_DEVICE_TYPE(TMS7000, tms7000_device)
+DECLARE_DEVICE_TYPE(TMS7020, tms7020_device)
+DECLARE_DEVICE_TYPE(TMS7020_EXL, tms7020_exl_device)
+DECLARE_DEVICE_TYPE(TMS7040, tms7040_device)
+DECLARE_DEVICE_TYPE(TMS70C00, tms70c00_device)
+DECLARE_DEVICE_TYPE(TMS70C20, tms70c20_device)
+DECLARE_DEVICE_TYPE(TMS70C40, tms70c40_device)
+DECLARE_DEVICE_TYPE(TMS70C46, tms70c46_device)
+DECLARE_DEVICE_TYPE(TMS7001, tms7001_device)
+DECLARE_DEVICE_TYPE(TMS7041, tms7041_device)
+DECLARE_DEVICE_TYPE(TMS7002, tms7002_device)
+DECLARE_DEVICE_TYPE(TMS7042, tms7042_device)
+
+#endif // MAME_CPU_TMS7000_TMS7000_H
diff --git a/src/devices/cpu/tms9900/ti990_10.cpp b/src/devices/cpu/tms9900/ti990_10.cpp
index 9fafeb11563..9b724533a55 100644
--- a/src/devices/cpu/tms9900/ti990_10.cpp
+++ b/src/devices/cpu/tms9900/ti990_10.cpp
@@ -43,7 +43,7 @@
****************************************************************************/
ti990_10_device::ti990_10_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, TI990_10, "TI990/10 CPU", tag, owner, clock, "ti990_10_cpu", __FILE__),
+ : cpu_device(mconfig, TI990_10, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, 16, 21),
m_io_config("cru", ENDIANNESS_BIG, 8, 12),
m_prgspace(nullptr),
@@ -147,4 +147,4 @@ offs_t ti990_10_device::disasm_disassemble(std::ostream &stream, offs_t pc, cons
return CPU_DISASSEMBLE_NAME(tms9900)(this, stream, pc, oprom, opram, options);
}
-const device_type TI990_10 = device_creator<ti990_10_device>;
+DEFINE_DEVICE_TYPE(TI990_10, ti990_10_device, "ti990_10_cpu", "TI990/10 CPU")
diff --git a/src/devices/cpu/tms9900/ti990_10.h b/src/devices/cpu/tms9900/ti990_10.h
index 5e33d03435f..f1c27d809d6 100644
--- a/src/devices/cpu/tms9900/ti990_10.h
+++ b/src/devices/cpu/tms9900/ti990_10.h
@@ -5,8 +5,11 @@
See ti990_10.c for documentation
*/
-#ifndef __TI990_10_H__
-#define __TI990_10_H__
+#ifndef MAME_CPU_TMS9900_TI990_10_H
+#define MAME_CPU_TMS9900_TI990_10_H
+
+#pragma once
+
#include "debugger.h"
#include "tms99com.h"
@@ -55,6 +58,6 @@ private:
};
// device type definition
-extern const device_type TI990_10;
+DECLARE_DEVICE_TYPE(TI990_10, ti990_10_device)
-#endif /* __TI990_10_H__ */
+#endif // MAME_CPU_TMS9900_TI990_10_H
diff --git a/src/devices/cpu/tms9900/tms9900.cpp b/src/devices/cpu/tms9900/tms9900.cpp
index cea89881188..7cc7552c502 100644
--- a/src/devices/cpu/tms9900/tms9900.cpp
+++ b/src/devices/cpu/tms9900/tms9900.cpp
@@ -175,8 +175,8 @@ enum
twice their number. Accordingly, the TMS9900 has a CRU bitmask 0x0fff.
****************************************************************************/
-tms99xx_device::tms99xx_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, int databus_width, int prg_addr_bits, int cru_addr_bits, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+tms99xx_device::tms99xx_device(const machine_config &mconfig, device_type type, const char *tag, int databus_width, int prg_addr_bits, int cru_addr_bits, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, databus_width, prg_addr_bits),
m_io_config("cru", ENDIANNESS_BIG, 8, cru_addr_bits),
m_prgspace(nullptr),
@@ -204,7 +204,7 @@ tms99xx_device::~tms99xx_device()
****************************************************************************/
tms9900_device::tms9900_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms99xx_device(mconfig, TMS9900, "TMS9900", tag, 16, 16, 12, owner, clock, "tms9900", __FILE__)
+ : tms99xx_device(mconfig, TMS9900, tag, 16, 16, 12, owner, clock)
{
}
@@ -2775,4 +2775,4 @@ offs_t tms99xx_device::disasm_disassemble(std::ostream &stream, offs_t pc, const
}
-const device_type TMS9900 = device_creator<tms9900_device>;
+DEFINE_DEVICE_TYPE(TMS9900, tms9900_device, "tms9900", "TMS9900")
diff --git a/src/devices/cpu/tms9900/tms9900.h b/src/devices/cpu/tms9900/tms9900.h
index 2380e9e815f..57d6bdfe5be 100644
--- a/src/devices/cpu/tms9900/tms9900.h
+++ b/src/devices/cpu/tms9900/tms9900.h
@@ -8,8 +8,10 @@
See tms9900.c for documentation
*/
-#ifndef __TMS9900_H__
-#define __TMS9900_H__
+#ifndef MAME_CPU_TMS9900_TMS9900_H
+#define MAME_CPU_TMS9900_TMS9900_H
+
+#pragma once
#include "debugger.h"
#include "tms99com.h"
@@ -41,10 +43,6 @@ static const char opname[][5] =
class tms99xx_device : public cpu_device
{
public:
- tms99xx_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, int databus_width, int prg_addr_bits, int cru_addr_bits,
- device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
~tms99xx_device();
// READY input line. When asserted (high), the memory is ready for data exchange.
@@ -65,6 +63,10 @@ public:
template<class _Object> static devcb_base &static_set_dbin_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_dbin_line.set_callback(object); }
protected:
+ tms99xx_device(const machine_config &mconfig, device_type type,
+ const char *tag, int databus_width, int prg_addr_bits, int cru_addr_bits,
+ device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_stop() override;
@@ -391,6 +393,6 @@ public:
// device type definition
-extern const device_type TMS9900;
+DECLARE_DEVICE_TYPE(TMS9900, tms9900_device)
-#endif /* __TMS9900_H__ */
+#endif // MAME_CPU_TMS9900_TMS9900_H
diff --git a/src/devices/cpu/tms9900/tms9980a.cpp b/src/devices/cpu/tms9900/tms9980a.cpp
index 54459206715..b2dcc2f389a 100644
--- a/src/devices/cpu/tms9900/tms9980a.cpp
+++ b/src/devices/cpu/tms9900/tms9980a.cpp
@@ -76,7 +76,7 @@
****************************************************************************/
tms9980a_device::tms9980a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms99xx_device(mconfig, TMS9980A, "TMS9980A", tag, 8, 14, 11, owner, clock, "tms9980a", __FILE__)
+ : tms99xx_device(mconfig, TMS9980A, tag, 8, 14, 11, owner, clock)
{
}
@@ -298,4 +298,4 @@ offs_t tms9980a_device::disasm_disassemble(std::ostream &stream, offs_t pc, cons
return CPU_DISASSEMBLE_NAME(tms9980)(this, stream, pc, oprom, opram, options);
}
-const device_type TMS9980A = device_creator<tms9980a_device>;
+DEFINE_DEVICE_TYPE(TMS9980A, tms9980a_device, "tms9980a", "TMS9980A")
diff --git a/src/devices/cpu/tms9900/tms9980a.h b/src/devices/cpu/tms9900/tms9980a.h
index 9ffbab84a58..34f6eadc434 100644
--- a/src/devices/cpu/tms9900/tms9980a.h
+++ b/src/devices/cpu/tms9900/tms9980a.h
@@ -5,8 +5,10 @@
See tms9980a.c and tms9900.c for documentation
*/
-#ifndef __TMS9980A_H__
-#define __TMS9980A_H__
+#ifndef MAME_CPU_TMS9900_TMS9980A_H
+#define MAME_CPU_TMS9900_TMS9980A_H
+
+#pragma once
#include "debugger.h"
#include "tms9900.h"
@@ -50,6 +52,6 @@ protected:
};
// device type definition
-extern const device_type TMS9980A;
+DECLARE_DEVICE_TYPE(TMS9980A, tms9980a_device)
-#endif /* __TMS9980A_H__ */
+#endif // MAME_CPU_TMS9900_TMS9980A_H
diff --git a/src/devices/cpu/tms9900/tms9995.cpp b/src/devices/cpu/tms9900/tms9995.cpp
index 7def6eeab4f..70deeb97026 100644
--- a/src/devices/cpu/tms9900/tms9995.cpp
+++ b/src/devices/cpu/tms9900/tms9995.cpp
@@ -179,13 +179,13 @@ enum
****************************************************************************/
tms9995_device::tms9995_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9995_device(mconfig, TMS9995, "TMS9995", tag, owner, clock, "tms9995", __FILE__)
+ : tms9995_device(mconfig, TMS9995, tag, owner, clock)
{
m_mp9537 = false;
}
-tms9995_device::tms9995_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+tms9995_device::tms9995_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_state_any(0),
PC(0),
PC_debug(0),
@@ -3538,5 +3538,5 @@ offs_t tms9995_device::disasm_disassemble(std::ostream &stream, offs_t pc, const
}
-const device_type TMS9995 = device_creator<tms9995_device>;
-const device_type TMS9995_MP9537 = device_creator<tms9995_mp9537_device>;
+DEFINE_DEVICE_TYPE(TMS9995, tms9995_device, "tms9995", "TMS9995")
+DEFINE_DEVICE_TYPE(TMS9995_MP9537, tms9995_mp9537_device, "tms9995_mp9537", "TMS9995-MP9537")
diff --git a/src/devices/cpu/tms9900/tms9995.h b/src/devices/cpu/tms9900/tms9995.h
index cbbaaa0c3ce..f9e63051b4c 100644
--- a/src/devices/cpu/tms9900/tms9995.h
+++ b/src/devices/cpu/tms9900/tms9995.h
@@ -7,15 +7,17 @@
Also see tms9900.h for types of TMS99xx processors.
*/
-#ifndef __TMS9995_H__
-#define __TMS9995_H__
+#ifndef MAME_CPU_TMS9995_TMS9995_H
+#define MAME_CPU_TMS9995_TMS9995_H
+
+#pragma once
#include "debugger.h"
#include "tms99com.h"
// device type definition
-extern const device_type TMS9995;
-extern const device_type TMS9995_MP9537;
+DECLARE_DEVICE_TYPE(TMS9995, tms9995_device)
+DECLARE_DEVICE_TYPE(TMS9995_MP9537, tms9995_mp9537_device)
enum
{
@@ -48,7 +50,6 @@ class tms9995_device : public cpu_device
{
public:
tms9995_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- tms9995_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// READY input line. When asserted (high), the memory is ready for data exchange.
// We chose to use a direct method instead of a delegate to keep performance
@@ -78,6 +79,8 @@ public:
void set_overflow_interrupt( int enable ) { m_check_overflow = (enable!=0); }
protected:
+ tms9995_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_stop() override;
@@ -438,10 +441,10 @@ class tms9995_mp9537_device : public tms9995_device
{
public:
tms9995_mp9537_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9995_device(mconfig, TMS9995_MP9537, "TMS9995-MP9537", tag, owner, clock, "tms9995_mp9537", __FILE__)
+ : tms9995_device(mconfig, TMS9995_MP9537, tag, owner, clock)
{
m_mp9537 = true;
}
};
-#endif /* __TMS9995_H__ */
+#endif // MAME_CPU_TMS9995_TMS9995_H
diff --git a/src/devices/cpu/ucom4/ucom4.cpp b/src/devices/cpu/ucom4/ucom4.cpp
index 090030e0a1c..0f3529c9bb9 100644
--- a/src/devices/cpu/ucom4/ucom4.cpp
+++ b/src/devices/cpu/ucom4/ucom4.cpp
@@ -26,13 +26,13 @@
// uCOM-43 products: 2000x8 ROM, 96x4 RAM, supports full instruction set
-const device_type NEC_D546 = device_creator<upd546_cpu_device>; // 42-pin PMOS, 35 pins for I/O
-const device_type NEC_D553 = device_creator<upd553_cpu_device>; // 42-pin PMOS, 35 pins for I/O, high voltage
-const device_type NEC_D557L = device_creator<upd557l_cpu_device>; // 28-pin PMOS, 21 pins for I/O
-const device_type NEC_D650 = device_creator<upd650_cpu_device>; // 42-pin CMOS, 35 pins for I/O
+DEFINE_DEVICE_TYPE(NEC_D546, upd546_cpu_device, "upd546", "NEC uPD546") // 42-pin PMOS, 35 pins for I/O
+DEFINE_DEVICE_TYPE(NEC_D553, upd553_cpu_device, "upd553", "NEC uPD553") // 42-pin PMOS, 35 pins for I/O, high voltage
+DEFINE_DEVICE_TYPE(NEC_D557L, upd557l_cpu_device, "upd557l", "NEC uPD557L") // 28-pin PMOS, 21 pins for I/O
+DEFINE_DEVICE_TYPE(NEC_D650, upd650_cpu_device, "upd650", "NEC uPD650") // 42-pin CMOS, 35 pins for I/O
// uCOM-44 products: 1000x8 ROM, 64x4 RAM, 1-level stack, does not support external interrupt
-const device_type NEC_D552 = device_creator<upd552_cpu_device>; // 42-pin PMOS, 35 pins for I/O, high voltage
+DEFINE_DEVICE_TYPE(NEC_D552, upd552_cpu_device, "upd552", "NEC uPD552") // 42-pin PMOS, 35 pins for I/O, high voltage
// uCOM-45 products: 1000x8 or 640x8 ROM, 32x4 RAM, 1-level stack
//..
@@ -60,25 +60,52 @@ ADDRESS_MAP_END
// device definitions
+ucom4_cpu_device::ucom4_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int family, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_BIG, 8, prgwidth, 0, program)
+ , m_data_config("data", ENDIANNESS_BIG, 8, datawidth, 0, data)
+ , m_prgwidth(prgwidth)
+ , m_datawidth(datawidth)
+ , m_family(family)
+ , m_stack_levels(stack_levels)
+ , m_read_a(*this)
+ , m_read_b(*this)
+ , m_read_c(*this)
+ , m_read_d(*this)
+ , m_write_c(*this)
+ , m_write_d(*this)
+ , m_write_e(*this)
+ , m_write_f(*this)
+ , m_write_g(*this)
+ , m_write_h(*this)
+ , m_write_i(*this)
+{
+}
+
upd546_cpu_device::upd546_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : ucom4_cpu_device(mconfig, NEC_D546, "uPD546", tag, owner, clock, NEC_UCOM43, 3 /* stack levels */, 11 /* prg width */, ADDRESS_MAP_NAME(program_2k), 7 /* data width */, ADDRESS_MAP_NAME(data_96x4), "upd546", __FILE__)
-{ }
+ : ucom4_cpu_device(mconfig, NEC_D546, tag, owner, clock, NEC_UCOM43, 3 /* stack levels */, 11 /* prg width */, ADDRESS_MAP_NAME(program_2k), 7 /* data width */, ADDRESS_MAP_NAME(data_96x4))
+{
+}
upd553_cpu_device::upd553_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : ucom4_cpu_device(mconfig, NEC_D553, "uPD553", tag, owner, clock, NEC_UCOM43, 3, 11, ADDRESS_MAP_NAME(program_2k), 7, ADDRESS_MAP_NAME(data_96x4), "upd553", __FILE__)
-{ }
+ : ucom4_cpu_device(mconfig, NEC_D553, tag, owner, clock, NEC_UCOM43, 3, 11, ADDRESS_MAP_NAME(program_2k), 7, ADDRESS_MAP_NAME(data_96x4))
+{
+}
upd557l_cpu_device::upd557l_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : ucom4_cpu_device(mconfig, NEC_D557L, "uPD557L", tag, owner, clock, NEC_UCOM43, 3, 11, ADDRESS_MAP_NAME(program_2k), 7, ADDRESS_MAP_NAME(data_96x4), "upd557l", __FILE__)
-{ }
+ : ucom4_cpu_device(mconfig, NEC_D557L, tag, owner, clock, NEC_UCOM43, 3, 11, ADDRESS_MAP_NAME(program_2k), 7, ADDRESS_MAP_NAME(data_96x4))
+{
+}
upd650_cpu_device::upd650_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : ucom4_cpu_device(mconfig, NEC_D650, "uPD650", tag, owner, clock, NEC_UCOM43, 3, 11, ADDRESS_MAP_NAME(program_2k), 7, ADDRESS_MAP_NAME(data_96x4), "upd650", __FILE__)
-{ }
+ : ucom4_cpu_device(mconfig, NEC_D650, tag, owner, clock, NEC_UCOM43, 3, 11, ADDRESS_MAP_NAME(program_2k), 7, ADDRESS_MAP_NAME(data_96x4))
+{
+}
upd552_cpu_device::upd552_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : ucom4_cpu_device(mconfig, NEC_D552, "uPD552", tag, owner, clock, NEC_UCOM44, 1, 10, ADDRESS_MAP_NAME(program_1k), 6, ADDRESS_MAP_NAME(data_64x4), "upd552", __FILE__)
-{ }
+ : ucom4_cpu_device(mconfig, NEC_D552, tag, owner, clock, NEC_UCOM44, 1, 10, ADDRESS_MAP_NAME(program_1k), 6, ADDRESS_MAP_NAME(data_64x4))
+{
+}
// disasm
diff --git a/src/devices/cpu/ucom4/ucom4.h b/src/devices/cpu/ucom4/ucom4.h
index bdc0399bafc..eb505917906 100644
--- a/src/devices/cpu/ucom4/ucom4.h
+++ b/src/devices/cpu/ucom4/ucom4.h
@@ -6,9 +6,10 @@
*/
-#ifndef _UCOM4_H_
-#define _UCOM4_H_
+#ifndef MAME_CPU_UCOM4_UCOM4_H
+#define MAME_CPU_UCOM4_UCOM4_H
+#pragma once
// I/O ports setup
@@ -98,43 +99,24 @@ enum
class ucom4_cpu_device : public cpu_device
{
public:
- // construction/destruction
- ucom4_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, int family, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_BIG, 8, prgwidth, 0, program)
- , m_data_config("data", ENDIANNESS_BIG, 8, datawidth, 0, data)
- , m_prgwidth(prgwidth)
- , m_datawidth(datawidth)
- , m_family(family)
- , m_stack_levels(stack_levels)
- , m_read_a(*this)
- , m_read_b(*this)
- , m_read_c(*this)
- , m_read_d(*this)
- , m_write_c(*this)
- , m_write_d(*this)
- , m_write_e(*this)
- , m_write_f(*this)
- , m_write_g(*this)
- , m_write_h(*this)
- , m_write_i(*this)
- { }
-
// static configuration helpers
- template<class _Object> static devcb_base &set_read_a_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_read_a.set_callback(object); }
- template<class _Object> static devcb_base &set_read_b_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_read_b.set_callback(object); }
- template<class _Object> static devcb_base &set_read_c_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_read_c.set_callback(object); }
- template<class _Object> static devcb_base &set_read_d_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_read_d.set_callback(object); }
-
- template<class _Object> static devcb_base &set_write_c_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_write_c.set_callback(object); }
- template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_write_d.set_callback(object); }
- template<class _Object> static devcb_base &set_write_e_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_write_e.set_callback(object); }
- template<class _Object> static devcb_base &set_write_f_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_write_f.set_callback(object); }
- template<class _Object> static devcb_base &set_write_g_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_write_g.set_callback(object); }
- template<class _Object> static devcb_base &set_write_h_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_write_h.set_callback(object); }
- template<class _Object> static devcb_base &set_write_i_callback(device_t &device, _Object object) { return downcast<ucom4_cpu_device &>(device).m_write_i.set_callback(object); }
+ template <class Object> static devcb_base &set_read_a_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_a.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_c_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_c.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> static devcb_base &set_write_c_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_c.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_e_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_e.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_g_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_g.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_h_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_h.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_i_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_i.set_callback(std::forward<Object>(cb)); }
protected:
+ // construction/destruction
+ ucom4_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int family, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -352,11 +334,10 @@ public:
-extern const device_type NEC_D546;
-extern const device_type NEC_D553;
-extern const device_type NEC_D557L;
-extern const device_type NEC_D650;
-extern const device_type NEC_D552;
-
+DECLARE_DEVICE_TYPE(NEC_D546, upd546_cpu_device)
+DECLARE_DEVICE_TYPE(NEC_D553, upd553_cpu_device)
+DECLARE_DEVICE_TYPE(NEC_D557L, upd557l_cpu_device)
+DECLARE_DEVICE_TYPE(NEC_D650, upd650_cpu_device)
+DECLARE_DEVICE_TYPE(NEC_D552, upd552_cpu_device)
-#endif /* _UCOM4_H_ */
+#endif // MAME_CPU_UCOM4_UCOM4_H
diff --git a/src/devices/cpu/unsp/unsp.cpp b/src/devices/cpu/unsp/unsp.cpp
index e33ec57d580..302642d941d 100644
--- a/src/devices/cpu/unsp/unsp.cpp
+++ b/src/devices/cpu/unsp/unsp.cpp
@@ -9,16 +9,17 @@
\**************************/
#include "emu.h"
-#include "debugger.h"
#include "unsp.h"
+#include "debugger.h"
-const device_type UNSP = device_creator<unsp_device>;
+DEFINE_DEVICE_TYPE(UNSP, unsp_device, "unsp", "u'nSP")
unsp_device::unsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, UNSP, "u'nSP", tag, owner, clock, "unsp", __FILE__)
- , m_program_config("program", ENDIANNESS_BIG, 16, 23, -1), m_irq(0), m_fiq(0), m_curirq(0), m_sirq(0), m_sb(0), m_saved_sb(0), m_program(nullptr), m_icount(0), m_debugger_temp(0)
+ : cpu_device(mconfig, UNSP, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_BIG, 16, 23, -1)
+ , m_irq(0), m_fiq(0), m_curirq(0), m_sirq(0), m_sb(0), m_saved_sb(0), m_program(nullptr), m_icount(0), m_debugger_temp(0)
{
}
diff --git a/src/devices/cpu/unsp/unsp.h b/src/devices/cpu/unsp/unsp.h
index a9a656478ee..85e46a44292 100644
--- a/src/devices/cpu/unsp/unsp.h
+++ b/src/devices/cpu/unsp/unsp.h
@@ -8,10 +8,10 @@
*
\**************************/
-#pragma once
+#ifndef MAME_CPU_UNSP_UNSP_H
+#define MAME_CPU_UNSP_UNSP_H
-#ifndef __UNSP_H__
-#define __UNSP_H__
+#pragma once
enum
{
@@ -107,7 +107,6 @@ private:
};
-extern const device_type UNSP;
-
+DECLARE_DEVICE_TYPE(UNSP, unsp_device)
-#endif /* __UNSP_H__ */
+#endif // MAME_CPU_UNSP_UNSP_H
diff --git a/src/devices/cpu/upd7725/upd7725.cpp b/src/devices/cpu/upd7725/upd7725.cpp
index 66d9c1e5a6d..4164ced9dd0 100644
--- a/src/devices/cpu/upd7725/upd7725.cpp
+++ b/src/devices/cpu/upd7725/upd7725.cpp
@@ -21,11 +21,11 @@
//**************************************************************************
// device type definition
-const device_type UPD7725 = device_creator<upd7725_device>;
-const device_type UPD96050 = device_creator<upd96050_device>;
+DEFINE_DEVICE_TYPE(UPD7725, upd7725_device, "upd7725", "uPD7725")
+DEFINE_DEVICE_TYPE(UPD96050, upd96050_device, "upd96050", "uPD96050")
-necdsp_device::necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t abits, uint32_t dbits, const char *name, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+necdsp_device::necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t abits, uint32_t dbits)
+ : cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, 32, abits, -2), // data bus width, address bus width, -2 means DWORD-addressable
m_data_config("data", ENDIANNESS_BIG, 16, dbits, -1), m_icount(0), // -1 for WORD-addressable
m_irq(0),
@@ -49,12 +49,12 @@ necdsp_device::necdsp_device(const machine_config &mconfig, device_type type, co
upd7725_device::upd7725_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : necdsp_device(mconfig, UPD7725, tag, owner, clock, 11, 11, "uPD7725", "upd7725", __FILE__)
+ : necdsp_device(mconfig, UPD7725, tag, owner, clock, 11, 11)
{
}
upd96050_device::upd96050_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : necdsp_device(mconfig, UPD96050, tag, owner, clock, 14, 12, "uPD96050", "upd96050", __FILE__)
+ : necdsp_device(mconfig, UPD96050, tag, owner, clock, 14, 12)
{
}
diff --git a/src/devices/cpu/upd7725/upd7725.h b/src/devices/cpu/upd7725/upd7725.h
index be2610b3854..06eceebe53d 100644
--- a/src/devices/cpu/upd7725/upd7725.h
+++ b/src/devices/cpu/upd7725/upd7725.h
@@ -8,10 +8,10 @@
****************************************************************************/
-#pragma once
+#ifndef MAME_CPU_UPD7725_UPD7725_H
+#define MAME_CPU_UPD7725_UPD7725_H
-#ifndef __UPD7725_H__
-#define __UPD7725_H__
+#pragma once
//**************************************************************************
// ENUMERATIONS
@@ -28,10 +28,6 @@ enum
// TYPE DEFINITIONS
//**************************************************************************
-class necdsp_device;
-class upd7725_device;
-class upd96050_device;
-
#define MCFG_NECDSP_IN_INT_CB(_devcb) \
devcb = &necdsp_device::set_in_int_callback(*device, DEVCB_##_devcb);
@@ -71,28 +67,26 @@ class upd96050_device;
class necdsp_device : public cpu_device
{
-protected:
- // construction/destruction
- necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t abits, uint32_t dbits, const char *name, const char *shortname, const char *source);
-
public:
-
- template<class _Object> static devcb_base &set_in_int_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_in_int_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_in_si_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_in_si_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_in_sck_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_in_sck_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_in_sien_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_in_sien_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_in_soen_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_in_soen_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_in_dack_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_in_dack_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_p0_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_out_p0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_p1_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_out_p1_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_out_so_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_out_so_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_out_sorq_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_out_sorq_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_out_drq_callback(device_t &device, _Object object) { return downcast<necdsp_device &>(device).m_out_drq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_int_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_int_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_in_si_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_si_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_in_sck_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_sck_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_in_sien_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_sien_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_in_soen_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_soen_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_in_dack_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_dack_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_p0_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_p0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_p1_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_p1_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_out_so_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_so_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_out_sorq_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_sorq_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_out_drq_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_drq_cb.set_callback(std::forward<Object>(cb)); }
uint8_t snesdsp_read(bool mode);
void snesdsp_write(bool mode, uint8_t data);
protected:
+ // construction/destruction
+ necdsp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t abits, uint32_t dbits);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -234,6 +228,8 @@ public:
// device type definition
extern const device_type UPD7725;
extern const device_type UPD96050;
+DECLARE_DEVICE_TYPE(UPD7725, upd7725_device)
+DECLARE_DEVICE_TYPE(UPD96050, upd96050_device)
//**************************************************************************
// ENUMERATIONS
@@ -265,4 +261,4 @@ enum
UPD7725_SOACK
};
-#endif /* __UPD7725_H__ */
+#endif // MAME_CPU_UPD7725_UPD7725_H
diff --git a/src/devices/cpu/upd7810/upd7810.cpp b/src/devices/cpu/upd7810/upd7810.cpp
index 888e90824fb..8509b133d63 100644
--- a/src/devices/cpu/upd7810/upd7810.cpp
+++ b/src/devices/cpu/upd7810/upd7810.cpp
@@ -369,20 +369,22 @@ STOP 01001000 10111011 12 stop
*/
#include "emu.h"
-#include "debugger.h"
#include "upd7810.h"
+
+#include "debugger.h"
+
#include "upd7810_macros.h"
-const device_type UPD7810 = device_creator<upd7810_device>;
-const device_type UPD7807 = device_creator<upd7807_device>;
-const device_type UPD7801 = device_creator<upd7801_device>;
-const device_type UPD78C05 = device_creator<upd78c05_device>;
-const device_type UPD78C06 = device_creator<upd78c06_device>;
+DEFINE_DEVICE_TYPE(UPD7810, upd7810_device, "upd7810", "uPD7810")
+DEFINE_DEVICE_TYPE(UPD7807, upd7807_device, "upd7807", "uPD7807")
+DEFINE_DEVICE_TYPE(UPD7801, upd7801_device, "upd7801", "uPD7801")
+DEFINE_DEVICE_TYPE(UPD78C05, upd78c05_device, "upd78c05", "uPD78C05")
+DEFINE_DEVICE_TYPE(UPD78C06, upd78c06_device, "upd78c06", "uPD78C06")
-upd7810_device::upd7810_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+upd7810_device::upd7810_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, type, tag, owner, clock)
, m_to_func(*this)
, m_co0_func(*this)
, m_co1_func(*this)
@@ -412,7 +414,7 @@ upd7810_device::upd7810_device(const machine_config &mconfig, device_type type,
}
upd7810_device::upd7810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upd7810_device(mconfig, UPD7810, "uPD7810", tag, owner, clock, "upd7810", __FILE__)
+ : upd7810_device(mconfig, UPD7810, tag, owner, clock)
{
m_opXX = s_opXX_7810;
m_op48 = s_op48;
@@ -425,7 +427,7 @@ upd7810_device::upd7810_device(const machine_config &mconfig, const char *tag, d
}
upd7807_device::upd7807_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upd7810_device(mconfig, UPD7807, "uPD7807", tag, owner, clock, "upd7807", __FILE__)
+ : upd7810_device(mconfig, UPD7807, tag, owner, clock)
{
m_opXX = s_opXX_7807;
m_op48 = s_op48;
@@ -438,7 +440,7 @@ upd7807_device::upd7807_device(const machine_config &mconfig, const char *tag, d
}
upd7801_device::upd7801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upd7810_device(mconfig, UPD7801, "uPD7801", tag, owner, clock, "upd7801", __FILE__)
+ : upd7810_device(mconfig, UPD7801, tag, owner, clock)
{
m_op48 = s_op48_7801;
m_op4C = s_op4C_7801;
@@ -451,7 +453,7 @@ upd7801_device::upd7801_device(const machine_config &mconfig, const char *tag, d
}
upd78c05_device::upd78c05_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upd7810_device(mconfig, UPD78C05, "uPD78C05", tag, owner, clock, "upd78c05", __FILE__)
+ : upd78c05_device(mconfig, UPD78C05, tag, owner, clock)
{
m_op48 = s_op48_78c05;
m_op4C = s_op4C_78c05;
@@ -463,13 +465,13 @@ upd78c05_device::upd78c05_device(const machine_config &mconfig, const char *tag,
m_opXX = s_opXX_78c05;
}
-upd78c05_device::upd78c05_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : upd7810_device(mconfig, type, name, tag, owner, clock, shortname, source)
+upd78c05_device::upd78c05_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : upd7810_device(mconfig, type, tag, owner, clock)
{
}
upd78c06_device::upd78c06_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upd78c05_device(mconfig, UPD78C06, "uPD78C06", tag, owner, clock, "upd78c06", __FILE__)
+ : upd78c05_device(mconfig, UPD78C06, tag, owner, clock)
{
m_op48 = s_op48_78c06;
m_op4C = s_op4C_78c06;
diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h
index bc119260c0b..1f49ba3cad0 100644
--- a/src/devices/cpu/upd7810/upd7810.h
+++ b/src/devices/cpu/upd7810/upd7810.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller
-#pragma once
+#ifndef MAME_CPU_UPD7810_UPD7810_H
+#define MAME_CPU_UPD7810_UPD7810_H
-#ifndef __UPD7810_H__
-#define __UPD7810_H__
+#pragma once
/*
@@ -129,35 +129,34 @@ class upd7810_device : public cpu_device
public:
// construction/destruction
upd7810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- upd7810_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// static configuration helpers
- template<class _Object> static devcb_base &set_to_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_to_func.set_callback(object); }
- template<class _Object> static devcb_base &set_co0_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_co0_func.set_callback(object); }
- template<class _Object> static devcb_base &set_co1_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_co1_func.set_callback(object); }
- template<class _Object> static devcb_base &set_txd_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_txd_func.set_callback(object); }
- template<class _Object> static devcb_base &set_rxd_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_rxd_func.set_callback(object); }
- template<class _Object> static devcb_base &set_an0_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_an0_func.set_callback(object); }
- template<class _Object> static devcb_base &set_an1_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_an1_func.set_callback(object); }
- template<class _Object> static devcb_base &set_an2_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_an2_func.set_callback(object); }
- template<class _Object> static devcb_base &set_an3_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_an3_func.set_callback(object); }
- template<class _Object> static devcb_base &set_an4_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_an4_func.set_callback(object); }
- template<class _Object> static devcb_base &set_an5_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_an5_func.set_callback(object); }
- template<class _Object> static devcb_base &set_an6_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_an6_func.set_callback(object); }
- template<class _Object> static devcb_base &set_an7_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_an7_func.set_callback(object); }
-
- template<class _Object> static devcb_base &set_pa_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pa_in_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pb_in_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pc_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pc_in_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pd_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pd_in_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pf_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pf_in_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa_out_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pa_out_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb_out_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pb_out_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pc_out_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pc_out_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pd_out_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pd_out_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pf_out_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pf_out_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_pt_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pt_in_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_to_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_to_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_co0_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_co0_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_co1_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_co1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_txd_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_txd_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rxd_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_rxd_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an0_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an0_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an1_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an2_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an3_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an4_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an4_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an5_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an5_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an6_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an6_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_an7_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an7_func.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> static devcb_base &set_pa_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pa_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pb_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pb_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pc_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pc_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pd_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pd_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pf_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pf_in_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pa_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pa_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pb_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pb_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pc_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pc_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pd_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pd_out_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pf_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pf_out_cb.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> static devcb_base &set_pt_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pt_in_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(pa_w);
DECLARE_WRITE8_MEMBER(pb_w);
@@ -208,6 +207,8 @@ protected:
INTSB = 0x0010
};
+ upd7810_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -1464,9 +1465,10 @@ class upd78c05_device : public upd7810_device
public:
// construction/destruction
upd78c05_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- upd78c05_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ upd78c05_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks + 4 - 1) / 4; }
@@ -1484,11 +1486,10 @@ public:
};
-extern const device_type UPD7810;
-extern const device_type UPD7807;
-extern const device_type UPD7801;
-extern const device_type UPD78C05;
-extern const device_type UPD78C06;
-
+DECLARE_DEVICE_TYPE(UPD7810, upd7810_device)
+DECLARE_DEVICE_TYPE(UPD7807, upd7807_device)
+DECLARE_DEVICE_TYPE(UPD7801, upd7801_device)
+DECLARE_DEVICE_TYPE(UPD78C05, upd78c05_device)
+DECLARE_DEVICE_TYPE(UPD78C06, upd78c06_device)
-#endif /* __UPD7810_H__ */
+#endif // MAME_CPU_UPD7810_UPD7810_H
diff --git a/src/devices/cpu/v30mz/v30mz.cpp b/src/devices/cpu/v30mz/v30mz.cpp
index ca4ca40a0f7..ad20e1349d4 100644
--- a/src/devices/cpu/v30mz/v30mz.cpp
+++ b/src/devices/cpu/v30mz/v30mz.cpp
@@ -43,8 +43,8 @@
****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "v30mz.h"
+#include "debugger.h"
enum SREGS { ES=0, CS, SS, DS };
@@ -94,11 +94,11 @@ enum BREGS {
/***************************************************************************/
-const device_type V30MZ = device_creator<v30mz_cpu_device>;
+DEFINE_DEVICE_TYPE(V30MZ, v30mz_cpu_device, "v30mz", "V30MZ")
v30mz_cpu_device::v30mz_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, V30MZ, "V30MZ", tag, owner, clock, "v30mz", __FILE__)
+ : cpu_device(mconfig, V30MZ, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 20, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 16, 0)
, m_ip(0)
diff --git a/src/devices/cpu/v30mz/v30mz.h b/src/devices/cpu/v30mz/v30mz.h
index 4b818654437..bd7019757a1 100644
--- a/src/devices/cpu/v30mz/v30mz.h
+++ b/src/devices/cpu/v30mz/v30mz.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol,Bryan McPhail
-#ifndef __V30MZ_H__
-#define __V30MZ_H__
+#ifndef MAME_CPU_V32MZ_V30MZ_H
+#define MAME_CPU_V32MZ_V30MZ_H
struct nec_config
@@ -20,7 +20,7 @@ enum
/////////////////////////////////////////////////////////////////
-extern const device_type V30MZ;
+DECLARE_DEVICE_TYPE(V30MZ, v30mz_cpu_device)
class v30mz_cpu_device : public cpu_device
{
@@ -166,7 +166,6 @@ protected:
inline void ADJ4(int8_t param1, int8_t param2);
inline void ADJB(int8_t param1, int8_t param2);
-protected:
address_space_config m_program_config;
address_space_config m_io_config;
@@ -222,5 +221,4 @@ protected:
} m_Mod_RM;
};
-
-#endif /* __V30MZ_H__ */
+#endif // MAME_CPU_V32MZ_V30MZ_H
diff --git a/src/devices/cpu/v60/v60.cpp b/src/devices/cpu/v60/v60.cpp
index 1d0bf2641ae..a445f8c7dac 100644
--- a/src/devices/cpu/v60/v60.cpp
+++ b/src/devices/cpu/v60/v60.cpp
@@ -74,40 +74,35 @@ Package: 132-pin PGA, 200-pin QFP
*/
#include "emu.h"
-#include "debugger.h"
#include "v60.h"
+#include "debugger.h"
-const device_type V60 = device_creator<v60_device>;
-const device_type V70 = device_creator<v70_device>;
+DEFINE_DEVICE_TYPE(V60, v60_device, "v60", "V60")
+DEFINE_DEVICE_TYPE(V70, v70_device, "v70", "V70")
+// Set m_PIR (Processor ID) for NEC m_ LSB is reserved to NEC,
+// so I don't know what it contains.
v60_device::v60_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, V60, "V60", tag, owner, clock, "v60", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 16, 24, 0)
- , m_io_config("io", ENDIANNESS_LITTLE, 16, 24, 0)
- , m_fetch_xor(BYTE_XOR_LE(0))
- , m_start_pc(0xfffff0)
+ : v60_device(mconfig, V60, tag, owner, clock, 16, 24, 0x00006000)
{
- // Set m_PIR (Processor ID) for NEC m_ LSB is reserved to NEC,
- // so I don't know what it contains.
- m_reg[45] = 0x00006000;
}
-v60_device::v60_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0)
+v60_device::v60_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int databits, int addrbits, uint32_t pir)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, databits, addrbits, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 16, 24, 0)
, m_fetch_xor(BYTE4_XOR_LE(0))
, m_start_pc(0xfffffff0)
{
- // Set m_PIR (Processor ID) for NEC v70. LSB is reserved to NEC,
- // so I don't know what it contains.
- m_reg[45] = 0x00007000;
+ m_reg[45] = pir;
}
+// Set m_PIR (Processor ID) for NEC v70. LSB is reserved to NEC,
+// so I don't know what it contains.
v70_device::v70_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : v60_device(mconfig, V70, "V70", tag, owner, clock, "v70", __FILE__)
+ : v60_device(mconfig, V70, tag, owner, clock, 32, 32, 0x00007000)
{
}
diff --git a/src/devices/cpu/v60/v60.h b/src/devices/cpu/v60/v60.h
index befd696d155..3348262624e 100644
--- a/src/devices/cpu/v60/v60.h
+++ b/src/devices/cpu/v60/v60.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Farfetch'd, R. Belmont
-#pragma once
+#ifndef MAME_CPU_V60_V60_H
+#define MAME_CPU_V60_V60_H
-#ifndef __V60_H__
-#define __V60_H__
+#pragma once
enum
@@ -85,11 +85,12 @@ class v60_device : public cpu_device
public:
// construction/destruction
v60_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- v60_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
void stall();
protected:
+ v60_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int databits, int addrbits, uint32_t pir);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -782,8 +783,7 @@ protected:
};
-extern const device_type V60;
-extern const device_type V70;
-
+DECLARE_DEVICE_TYPE(V60, v60_device)
+DECLARE_DEVICE_TYPE(V70, v70_device)
-#endif /* __V60_H__ */
+#endif // MAME_CPU_V60_V60_H
diff --git a/src/devices/cpu/v810/v810.cpp b/src/devices/cpu/v810/v810.cpp
index a9d5fe08053..f7cd28bc44d 100644
--- a/src/devices/cpu/v810/v810.cpp
+++ b/src/devices/cpu/v810/v810.cpp
@@ -28,18 +28,18 @@
******************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "v810.h"
+#include "debugger.h"
#define clkIF 3
#define clkMEM 3
-const device_type V810 = device_creator<v810_device>;
+DEFINE_DEVICE_TYPE(V810, v810_device, "v810", "V810")
v810_device::v810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, V810, "V810", tag, owner, clock, "v810", __FILE__)
+ : cpu_device(mconfig, V810, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 32, 32, 0)
{
diff --git a/src/devices/cpu/v810/v810.h b/src/devices/cpu/v810/v810.h
index 17e2606eff0..04dd7e68327 100644
--- a/src/devices/cpu/v810/v810.h
+++ b/src/devices/cpu/v810/v810.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Angelo Salese, Tomasz Slanina
-#pragma once
+#ifndef MAME_CPU_V810_V810_H
+#define MAME_CPU_V810_V810_H
-#ifndef __V810_H__
-#define __V810_H__
+#pragma once
enum
@@ -194,11 +194,9 @@ private:
uint32_t opFpoint(uint32_t op);
uint32_t opBSU(uint32_t op);
void take_interrupt();
-
};
-extern const device_type V810;
-
+DECLARE_DEVICE_TYPE(V810, v810_device)
-#endif /* __V810_H__ */
+#endif // MAME_CPU_V810_V810_H
diff --git a/src/devices/cpu/z180/z180.cpp b/src/devices/cpu/z180/z180.cpp
index d1527a5730b..2c54402ce1e 100644
--- a/src/devices/cpu/z180/z180.cpp
+++ b/src/devices/cpu/z180/z180.cpp
@@ -51,12 +51,11 @@ Hitachi HD647180 series:
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
#include "z180.h"
+#include "debugger.h"
-#define VERBOSE 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
/* interrupt priorities */
#define Z180_INT_TRAP 0 /* Undefined opcode */
@@ -78,11 +77,11 @@ Hitachi HD647180 series:
/* register is calculated as follows: refresh=(Regs.R&127)|(Regs.R2&128) */
/****************************************************************************/
-const device_type Z180 = device_creator<z180_device>;
+DEFINE_DEVICE_TYPE(Z180, z180_device, "z180", "Z180")
z180_device::z180_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, Z180, "Z180", tag, owner, clock, "z180", __FILE__)
+ : cpu_device(mconfig, Z180, tag, owner, clock)
, z80_daisy_chain_interface(mconfig, *this)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 20, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 16, 0)
@@ -805,69 +804,69 @@ uint8_t z180_device::z180_readcontrol(offs_t port)
{
case Z180_CNTLA0:
data = IO_CNTLA0 & Z180_CNTLA0_RMASK;
- LOG(("Z180 '%s' CNTLA0 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 CNTLA0 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_CNTLA1:
data = IO_CNTLA1 & Z180_CNTLA1_RMASK;
- LOG(("Z180 '%s' CNTLA1 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 CNTLA1 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_CNTLB0:
data = IO_CNTLB0 & Z180_CNTLB0_RMASK;
- LOG(("Z180 '%s' CNTLB0 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 CNTLB0 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_CNTLB1:
data = IO_CNTLB1 & Z180_CNTLB1_RMASK;
- LOG(("Z180 '%s' CNTLB1 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 CNTLB1 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_STAT0:
data = IO_STAT0 & Z180_STAT0_RMASK;
-data |= 0x02; // kludge for 20pacgal
- LOG(("Z180 '%s' STAT0 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ data |= 0x02; // kludge for 20pacgal
+ LOG("Z180 STAT0 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_STAT1:
data = IO_STAT1 & Z180_STAT1_RMASK;
- LOG(("Z180 '%s' STAT1 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 STAT1 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_TDR0:
data = IO_TDR0 & Z180_TDR0_RMASK;
- LOG(("Z180 '%s' TDR0 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 TDR0 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_TDR1:
data = IO_TDR1 & Z180_TDR1_RMASK;
- LOG(("Z180 '%s' TDR1 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 TDR1 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_RDR0:
data = IO_RDR0 & Z180_RDR0_RMASK;
- LOG(("Z180 '%s' RDR0 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 RDR0 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_RDR1:
data = IO_RDR1 & Z180_RDR1_RMASK;
- LOG(("Z180 '%s' RDR1 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 RDR1 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_CNTR:
data = IO_CNTR & Z180_CNTR_RMASK;
data &= ~0x10; // Super Famicom Box sets the TE bit then wants it to be toggled after 8 bits transmitted
- LOG(("Z180 '%s' CNTR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 CNTR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_TRDR:
data = IO_TRDR & Z180_TRDR_RMASK;
- logerror("Z180 '%s' TRDR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]);
+ logerror("Z180 TRDR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_TMDR0L:
data = m_tmdr_value[0] & Z180_TMDR0L_RMASK;
- LOG(("Z180 '%s' TMDR0L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 TMDR0L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
/* if timer is counting, latch the MSB and set the latch flag */
if ((IO_TCR & Z180_TCR_TDE0) == 0)
{
@@ -907,17 +906,17 @@ data |= 0x02; // kludge for 20pacgal
{
m_read_tcr_tmdr[0] = 1;
}
- LOG(("Z180 '%s' TMDR0H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 TMDR0H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_RLDR0L:
data = IO_RLDR0L & Z180_RLDR0L_RMASK;
- LOG(("Z180 '%s' RLDR0L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 RLDR0L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_RLDR0H:
data = IO_RLDR0H & Z180_RLDR0H_RMASK;
- LOG(("Z180 '%s' RLDR0H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 RLDR0H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_TCR:
@@ -943,27 +942,27 @@ data |= 0x02; // kludge for 20pacgal
m_read_tcr_tmdr[1] = 1;
}
- LOG(("Z180 '%s' TCR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 TCR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IO11:
data = IO_IO11 & Z180_IO11_RMASK;
- LOG(("Z180 '%s' IO11 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IO11 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_ASEXT0:
data = IO_ASEXT0 & Z180_ASEXT0_RMASK;
- LOG(("Z180 '%s' ASEXT0 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 ASEXT0 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_ASEXT1:
data = IO_ASEXT1 & Z180_ASEXT1_RMASK;
- LOG(("Z180 '%s' ASEXT1 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 ASEXT1 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_TMDR1L:
data = m_tmdr_value[1] & Z180_TMDR1L_RMASK;
- LOG(("Z180 '%s' TMDR1L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 TMDR1L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
/* if timer is counting, latch the MSB and set the latch flag */
if ((IO_TCR & Z180_TCR_TDE1) == 0)
{
@@ -1003,217 +1002,217 @@ data |= 0x02; // kludge for 20pacgal
{
m_read_tcr_tmdr[1] = 1;
}
- LOG(("Z180 '%s' TMDR1H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 TMDR1H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_RLDR1L:
data = IO_RLDR1L & Z180_RLDR1L_RMASK;
- LOG(("Z180 '%s' RLDR1L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 RLDR1L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_RLDR1H:
data = IO_RLDR1H & Z180_RLDR1H_RMASK;
- LOG(("Z180 '%s' RLDR1H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 RLDR1H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_FRC:
data = IO_FRC & Z180_FRC_RMASK;
- LOG(("Z180 '%s' FRC rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 FRC rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IO19:
data = IO_IO19 & Z180_IO19_RMASK;
- LOG(("Z180 '%s' IO19 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IO19 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_ASTC0L:
data = IO_ASTC0L & Z180_ASTC0L_RMASK;
- LOG(("Z180 '%s' ASTC0L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 ASTC0L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_ASTC0H:
data = IO_ASTC0H & Z180_ASTC0H_RMASK;
- LOG(("Z180 '%s' ASTC0H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 ASTC0H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_ASTC1L:
data = IO_ASTC1L & Z180_ASTC1L_RMASK;
- LOG(("Z180 '%s' ASTC1L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 ASTC1L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_ASTC1H:
data = IO_ASTC1H & Z180_ASTC1H_RMASK;
- LOG(("Z180 '%s' ASTC1H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 ASTC1H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_CMR:
data = IO_CMR & Z180_CMR_RMASK;
- LOG(("Z180 '%s' CMR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 CMR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_CCR:
data = IO_CCR & Z180_CCR_RMASK;
- LOG(("Z180 '%s' CCR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 CCR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_SAR0L:
data = IO_SAR0L & Z180_SAR0L_RMASK;
- LOG(("Z180 '%s' SAR0L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 SAR0L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_SAR0H:
data = IO_SAR0H & Z180_SAR0H_RMASK;
- LOG(("Z180 '%s' SAR0H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 SAR0H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_SAR0B:
data = IO_SAR0B & Z180_SAR0B_RMASK;
- LOG(("Z180 '%s' SAR0B rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 SAR0B rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_DAR0L:
data = IO_DAR0L & Z180_DAR0L_RMASK;
- LOG(("Z180 '%s' DAR0L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 DAR0L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_DAR0H:
data = IO_DAR0H & Z180_DAR0H_RMASK;
- LOG(("Z180 '%s' DAR0H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 DAR0H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_DAR0B:
data = IO_DAR0B & Z180_DAR0B_RMASK;
- LOG(("Z180 '%s' DAR0B rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 DAR0B rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_BCR0L:
data = IO_BCR0L & Z180_BCR0L_RMASK;
- LOG(("Z180 '%s' BCR0L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 BCR0L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_BCR0H:
data = IO_BCR0H & Z180_BCR0H_RMASK;
- LOG(("Z180 '%s' BCR0H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 BCR0H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_MAR1L:
data = IO_MAR1L & Z180_MAR1L_RMASK;
- LOG(("Z180 '%s' MAR1L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 MAR1L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_MAR1H:
data = IO_MAR1H & Z180_MAR1H_RMASK;
- LOG(("Z180 '%s' MAR1H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 MAR1H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_MAR1B:
data = IO_MAR1B & Z180_MAR1B_RMASK;
- LOG(("Z180 '%s' MAR1B rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 MAR1B rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IAR1L:
data = IO_IAR1L & Z180_IAR1L_RMASK;
- LOG(("Z180 '%s' IAR1L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IAR1L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IAR1H:
data = IO_IAR1H & Z180_IAR1H_RMASK;
- LOG(("Z180 '%s' IAR1H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IAR1H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IAR1B:
data = IO_IAR1B & Z180_IAR1B_RMASK;
- LOG(("Z180 '%s' IAR1B rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IAR1B rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_BCR1L:
data = IO_BCR1L & Z180_BCR1L_RMASK;
- LOG(("Z180 '%s' BCR1L rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 BCR1L rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_BCR1H:
data = IO_BCR1H & Z180_BCR1H_RMASK;
- LOG(("Z180 '%s' BCR1H rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 BCR1H rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_DSTAT:
data = IO_DSTAT & Z180_DSTAT_RMASK;
- LOG(("Z180 '%s' DSTAT rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 DSTAT rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_DMODE:
data = IO_DMODE & Z180_DMODE_RMASK;
- LOG(("Z180 '%s' DMODE rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 DMODE rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_DCNTL:
data = IO_DCNTL & Z180_DCNTL_RMASK;
- LOG(("Z180 '%s' DCNTL rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 DCNTL rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IL:
data = IO_IL & Z180_IL_RMASK;
- LOG(("Z180 '%s' IL rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IL rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_ITC:
data = IO_ITC & Z180_ITC_RMASK;
- LOG(("Z180 '%s' ITC rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 ITC rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IO35:
data = IO_IO35 & Z180_IO35_RMASK;
- LOG(("Z180 '%s' IO35 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IO35 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_RCR:
data = IO_RCR & Z180_RCR_RMASK;
- LOG(("Z180 '%s' RCR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 RCR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IO37:
data = IO_IO37 & Z180_IO37_RMASK;
- LOG(("Z180 '%s' IO37 rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IO37 rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_CBR:
data = IO_CBR & Z180_CBR_RMASK;
- LOG(("Z180 '%s' CBR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 CBR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_BBR:
data = IO_BBR & Z180_BBR_RMASK;
- LOG(("Z180 '%s' BBR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 BBR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_CBAR:
data = IO_CBAR & Z180_CBAR_RMASK;
- LOG(("Z180 '%s' CBAR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 CBAR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IO3B:
data = IO_IO3B & Z180_IO3B_RMASK;
- LOG(("Z180 '%s' IO3B rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IO3B rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IO3C:
data = IO_IO3C & Z180_IO3C_RMASK;
- LOG(("Z180 '%s' IO3C rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IO3C rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IO3D:
data = IO_IO3D & Z180_IO3D_RMASK;
- LOG(("Z180 '%s' IO3D rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IO3D rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_OMCR:
data = IO_OMCR & Z180_OMCR_RMASK;
- LOG(("Z180 '%s' OMCR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 OMCR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
case Z180_IOCR:
data = IO_IOCR & Z180_IOCR_RMASK;
- LOG(("Z180 '%s' IOCR rd $%02x ($%02x)\n", tag(), data, m_io[port & 0x3f]));
+ LOG("Z180 IOCR rd $%02x ($%02x)\n", data, m_io[port & 0x3f]);
break;
}
@@ -1233,89 +1232,89 @@ void z180_device::z180_writecontrol(offs_t port, uint8_t data)
switch (port + Z180_CNTLA0)
{
case Z180_CNTLA0:
- LOG(("Z180 '%s' CNTLA0 wr $%02x ($%02x)\n", tag(), data, data & Z180_CNTLA0_WMASK));
+ LOG("Z180 CNTLA0 wr $%02x ($%02x)\n", data, data & Z180_CNTLA0_WMASK);
IO_CNTLA0 = (IO_CNTLA0 & ~Z180_CNTLA0_WMASK) | (data & Z180_CNTLA0_WMASK);
break;
case Z180_CNTLA1:
- LOG(("Z180 '%s' CNTLA1 wr $%02x ($%02x)\n", tag(), data, data & Z180_CNTLA1_WMASK));
+ LOG("Z180 CNTLA1 wr $%02x ($%02x)\n", data, data & Z180_CNTLA1_WMASK);
IO_CNTLA1 = (IO_CNTLA1 & ~Z180_CNTLA1_WMASK) | (data & Z180_CNTLA1_WMASK);
break;
case Z180_CNTLB0:
- LOG(("Z180 '%s' CNTLB0 wr $%02x ($%02x)\n", tag(), data, data & Z180_CNTLB0_WMASK));
+ LOG("Z180 CNTLB0 wr $%02x ($%02x)\n", data, data & Z180_CNTLB0_WMASK);
IO_CNTLB0 = (IO_CNTLB0 & ~Z180_CNTLB0_WMASK) | (data & Z180_CNTLB0_WMASK);
break;
case Z180_CNTLB1:
- LOG(("Z180 '%s' CNTLB1 wr $%02x ($%02x)\n", tag(), data, data & Z180_CNTLB1_WMASK));
+ LOG("Z180 CNTLB1 wr $%02x ($%02x)\n", data, data & Z180_CNTLB1_WMASK);
IO_CNTLB1 = (IO_CNTLB1 & ~Z180_CNTLB1_WMASK) | (data & Z180_CNTLB1_WMASK);
break;
case Z180_STAT0:
- LOG(("Z180 '%s' STAT0 wr $%02x ($%02x)\n", tag(), data, data & Z180_STAT0_WMASK));
+ LOG("Z180 STAT0 wr $%02x ($%02x)\n", data, data & Z180_STAT0_WMASK);
IO_STAT0 = (IO_STAT0 & ~Z180_STAT0_WMASK) | (data & Z180_STAT0_WMASK);
break;
case Z180_STAT1:
- LOG(("Z180 '%s' STAT1 wr $%02x ($%02x)\n", tag(), data, data & Z180_STAT1_WMASK));
+ LOG("Z180 STAT1 wr $%02x ($%02x)\n", data, data & Z180_STAT1_WMASK);
IO_STAT1 = (IO_STAT1 & ~Z180_STAT1_WMASK) | (data & Z180_STAT1_WMASK);
break;
case Z180_TDR0:
- LOG(("Z180 '%s' TDR0 wr $%02x ($%02x)\n", tag(), data, data & Z180_TDR0_WMASK));
+ LOG("Z180 TDR0 wr $%02x ($%02x)\n", data, data & Z180_TDR0_WMASK);
IO_TDR0 = (IO_TDR0 & ~Z180_TDR0_WMASK) | (data & Z180_TDR0_WMASK);
break;
case Z180_TDR1:
- LOG(("Z180 '%s' TDR1 wr $%02x ($%02x)\n", tag(), data, data & Z180_TDR1_WMASK));
+ LOG("Z180 TDR1 wr $%02x ($%02x)\n", data, data & Z180_TDR1_WMASK);
IO_TDR1 = (IO_TDR1 & ~Z180_TDR1_WMASK) | (data & Z180_TDR1_WMASK);
break;
case Z180_RDR0:
- LOG(("Z180 '%s' RDR0 wr $%02x ($%02x)\n", tag(), data, data & Z180_RDR0_WMASK));
+ LOG("Z180 RDR0 wr $%02x ($%02x)\n", data, data & Z180_RDR0_WMASK);
IO_RDR0 = (IO_RDR0 & ~Z180_RDR0_WMASK) | (data & Z180_RDR0_WMASK);
break;
case Z180_RDR1:
- LOG(("Z180 '%s' RDR1 wr $%02x ($%02x)\n", tag(), data, data & Z180_RDR1_WMASK));
+ LOG("Z180 RDR1 wr $%02x ($%02x)\n", data, data & Z180_RDR1_WMASK);
IO_RDR1 = (IO_RDR1 & ~Z180_RDR1_WMASK) | (data & Z180_RDR1_WMASK);
break;
case Z180_CNTR:
- LOG(("Z180 '%s' CNTR wr $%02x ($%02x)\n", tag(), data, data & Z180_CNTR_WMASK));
+ LOG("Z180 CNTR wr $%02x ($%02x)\n", data, data & Z180_CNTR_WMASK);
IO_CNTR = (IO_CNTR & ~Z180_CNTR_WMASK) | (data & Z180_CNTR_WMASK);
break;
case Z180_TRDR:
- LOG(("Z180 '%s' TRDR wr $%02x ($%02x)\n", tag(), data, data & Z180_TRDR_WMASK));
+ LOG("Z180 TRDR wr $%02x ($%02x)\n", data, data & Z180_TRDR_WMASK);
IO_TRDR = (IO_TRDR & ~Z180_TRDR_WMASK) | (data & Z180_TRDR_WMASK);
break;
case Z180_TMDR0L:
- LOG(("Z180 '%s' TMDR0L wr $%02x ($%02x)\n", tag(), data, data & Z180_TMDR0L_WMASK));
+ LOG("Z180 TMDR0L wr $%02x ($%02x)\n", data, data & Z180_TMDR0L_WMASK);
IO_TMDR0L = data & Z180_TMDR0L_WMASK;
m_tmdr_value[0] = (m_tmdr_value[0] & 0xff00) | IO_TMDR0L;
break;
case Z180_TMDR0H:
- LOG(("Z180 '%s' TMDR0H wr $%02x ($%02x)\n", tag(), data, data & Z180_TMDR0H_WMASK));
+ LOG("Z180 TMDR0H wr $%02x ($%02x)\n", data, data & Z180_TMDR0H_WMASK);
IO_TMDR0H = data & Z180_TMDR0H_WMASK;
m_tmdr_value[0] = (m_tmdr_value[0] & 0x00ff) | (IO_TMDR0H << 8);
break;
case Z180_RLDR0L:
- LOG(("Z180 '%s' RLDR0L wr $%02x ($%02x)\n", tag(), data, data & Z180_RLDR0L_WMASK));
+ LOG("Z180 RLDR0L wr $%02x ($%02x)\n", data, data & Z180_RLDR0L_WMASK);
IO_RLDR0L = (IO_RLDR0L & ~Z180_RLDR0L_WMASK) | (data & Z180_RLDR0L_WMASK);
break;
case Z180_RLDR0H:
- LOG(("Z180 '%s' RLDR0H wr $%02x ($%02x)\n", tag(), data, data & Z180_RLDR0H_WMASK));
+ LOG("Z180 RLDR0H wr $%02x ($%02x)\n", data, data & Z180_RLDR0H_WMASK);
IO_RLDR0H = (IO_RLDR0H & ~Z180_RLDR0H_WMASK) | (data & Z180_RLDR0H_WMASK);
break;
case Z180_TCR:
- LOG(("Z180 '%s' TCR wr $%02x ($%02x)\n", tag(), data, data & Z180_TCR_WMASK));
+ LOG("Z180 TCR wr $%02x ($%02x)\n", data, data & Z180_TCR_WMASK);
{
uint16_t old = IO_TCR;
/* Force reload on state change */
@@ -1329,164 +1328,164 @@ void z180_device::z180_writecontrol(offs_t port, uint8_t data)
break;
case Z180_IO11:
- LOG(("Z180 '%s' IO11 wr $%02x ($%02x)\n", tag(), data, data & Z180_IO11_WMASK));
+ LOG("Z180 IO11 wr $%02x ($%02x)\n", data, data & Z180_IO11_WMASK);
IO_IO11 = (IO_IO11 & ~Z180_IO11_WMASK) | (data & Z180_IO11_WMASK);
break;
case Z180_ASEXT0:
- LOG(("Z180 '%s' ASEXT0 wr $%02x ($%02x)\n", tag(), data, data & Z180_ASEXT0_WMASK));
+ LOG("Z180 ASEXT0 wr $%02x ($%02x)\n", data, data & Z180_ASEXT0_WMASK);
IO_ASEXT0 = (IO_ASEXT0 & ~Z180_ASEXT0_WMASK) | (data & Z180_ASEXT0_WMASK);
break;
case Z180_ASEXT1:
- LOG(("Z180 '%s' ASEXT1 wr $%02x ($%02x)\n", tag(), data, data & Z180_ASEXT1_WMASK));
+ LOG("Z180 ASEXT1 wr $%02x ($%02x)\n", data, data & Z180_ASEXT1_WMASK);
IO_ASEXT1 = (IO_ASEXT1 & ~Z180_ASEXT1_WMASK) | (data & Z180_ASEXT1_WMASK);
break;
case Z180_TMDR1L:
- LOG(("Z180 '%s' TMDR1L wr $%02x ($%02x)\n", tag(), data, data & Z180_TMDR1L_WMASK));
+ LOG("Z180 TMDR1L wr $%02x ($%02x)\n", data, data & Z180_TMDR1L_WMASK);
IO_TMDR1L = data & Z180_TMDR1L_WMASK;
m_tmdr_value[1] = (m_tmdr_value[1] & 0xff00) | IO_TMDR1L;
break;
case Z180_TMDR1H:
- LOG(("Z180 '%s' TMDR1H wr $%02x ($%02x)\n", tag(), data, data & Z180_TMDR1H_WMASK));
+ LOG("Z180 TMDR1H wr $%02x ($%02x)\n", data, data & Z180_TMDR1H_WMASK);
IO_TMDR1H = data & Z180_TMDR1H_WMASK;
m_tmdr_value[1] = (m_tmdr_value[1] & 0x00ff) | IO_TMDR1H;
break;
case Z180_RLDR1L:
- LOG(("Z180 '%s' RLDR1L wr $%02x ($%02x)\n", tag(), data, data & Z180_RLDR1L_WMASK));
+ LOG("Z180 RLDR1L wr $%02x ($%02x)\n", data, data & Z180_RLDR1L_WMASK);
IO_RLDR1L = (IO_RLDR1L & ~Z180_RLDR1L_WMASK) | (data & Z180_RLDR1L_WMASK);
break;
case Z180_RLDR1H:
- LOG(("Z180 '%s' RLDR1H wr $%02x ($%02x)\n", tag(), data, data & Z180_RLDR1H_WMASK));
+ LOG("Z180 RLDR1H wr $%02x ($%02x)\n", data, data & Z180_RLDR1H_WMASK);
IO_RLDR1H = (IO_RLDR1H & ~Z180_RLDR1H_WMASK) | (data & Z180_RLDR1H_WMASK);
break;
case Z180_FRC:
- LOG(("Z180 '%s' FRC wr $%02x ($%02x)\n", tag(), data, data & Z180_FRC_WMASK));
+ LOG("Z180 FRC wr $%02x ($%02x)\n", data, data & Z180_FRC_WMASK);
IO_FRC = (IO_FRC & ~Z180_FRC_WMASK) | (data & Z180_FRC_WMASK);
break;
case Z180_IO19:
- LOG(("Z180 '%s' IO19 wr $%02x ($%02x)\n", tag(), data, data & Z180_IO19_WMASK));
+ LOG("Z180 IO19 wr $%02x ($%02x)\n", data, data & Z180_IO19_WMASK);
IO_IO19 = (IO_IO19 & ~Z180_IO19_WMASK) | (data & Z180_IO19_WMASK);
break;
case Z180_ASTC0L:
- LOG(("Z180 '%s' ASTC0L wr $%02x ($%02x)\n", tag(), data, data & Z180_ASTC0L_WMASK));
+ LOG("Z180 ASTC0L wr $%02x ($%02x)\n", data, data & Z180_ASTC0L_WMASK);
IO_ASTC0L = (IO_ASTC0L & ~Z180_ASTC0L_WMASK) | (data & Z180_ASTC0L_WMASK);
break;
case Z180_ASTC0H:
- LOG(("Z180 '%s' ASTC0H wr $%02x ($%02x)\n", tag(), data, data & Z180_ASTC0H_WMASK));
+ LOG("Z180 ASTC0H wr $%02x ($%02x)\n", data, data & Z180_ASTC0H_WMASK);
IO_ASTC0H = (IO_ASTC0H & ~Z180_ASTC0H_WMASK) | (data & Z180_ASTC0H_WMASK);
break;
case Z180_ASTC1L:
- LOG(("Z180 '%s' ASTC1L wr $%02x ($%02x)\n", tag(), data, data & Z180_ASTC1L_WMASK));
+ LOG("Z180 ASTC1L wr $%02x ($%02x)\n", data, data & Z180_ASTC1L_WMASK);
IO_ASTC1L = (IO_ASTC1L & ~Z180_ASTC1L_WMASK) | (data & Z180_ASTC1L_WMASK);
break;
case Z180_ASTC1H:
- LOG(("Z180 '%s' ASTC1H wr $%02x ($%02x)\n", tag(), data, data & Z180_ASTC1H_WMASK));
+ LOG("Z180 ASTC1H wr $%02x ($%02x)\n", data, data & Z180_ASTC1H_WMASK);
IO_ASTC1H = (IO_ASTC1H & ~Z180_ASTC1H_WMASK) | (data & Z180_ASTC1H_WMASK);
break;
case Z180_CMR:
- LOG(("Z180 '%s' CMR wr $%02x ($%02x)\n", tag(), data, data & Z180_CMR_WMASK));
+ LOG("Z180 CMR wr $%02x ($%02x)\n", data, data & Z180_CMR_WMASK);
IO_CMR = (IO_CMR & ~Z180_CMR_WMASK) | (data & Z180_CMR_WMASK);
break;
case Z180_CCR:
- LOG(("Z180 '%s' CCR wr $%02x ($%02x)\n", tag(), data, data & Z180_CCR_WMASK));
+ LOG("Z180 CCR wr $%02x ($%02x)\n", data, data & Z180_CCR_WMASK);
IO_CCR = (IO_CCR & ~Z180_CCR_WMASK) | (data & Z180_CCR_WMASK);
break;
case Z180_SAR0L:
- LOG(("Z180 '%s' SAR0L wr $%02x ($%02x)\n", tag(), data, data & Z180_SAR0L_WMASK));
+ LOG("Z180 SAR0L wr $%02x ($%02x)\n", data, data & Z180_SAR0L_WMASK);
IO_SAR0L = (IO_SAR0L & ~Z180_SAR0L_WMASK) | (data & Z180_SAR0L_WMASK);
break;
case Z180_SAR0H:
- LOG(("Z180 '%s' SAR0H wr $%02x ($%02x)\n", tag(), data, data & Z180_SAR0H_WMASK));
+ LOG("Z180 SAR0H wr $%02x ($%02x)\n", data, data & Z180_SAR0H_WMASK);
IO_SAR0H = (IO_SAR0H & ~Z180_SAR0H_WMASK) | (data & Z180_SAR0H_WMASK);
break;
case Z180_SAR0B:
- LOG(("Z180 '%s' SAR0B wr $%02x ($%02x)\n", tag(), data, data & Z180_SAR0B_WMASK));
+ LOG("Z180 SAR0B wr $%02x ($%02x)\n", data, data & Z180_SAR0B_WMASK);
IO_SAR0B = (IO_SAR0B & ~Z180_SAR0B_WMASK) | (data & Z180_SAR0B_WMASK);
break;
case Z180_DAR0L:
- LOG(("Z180 '%s' DAR0L wr $%02x ($%02x)\n", tag(), data, data & Z180_DAR0L_WMASK));
+ LOG("Z180 DAR0L wr $%02x ($%02x)\n", data, data & Z180_DAR0L_WMASK);
IO_DAR0L = (IO_DAR0L & ~Z180_DAR0L_WMASK) | (data & Z180_DAR0L_WMASK);
break;
case Z180_DAR0H:
- LOG(("Z180 '%s' DAR0H wr $%02x ($%02x)\n", tag(), data, data & Z180_DAR0H_WMASK));
+ LOG("Z180 DAR0H wr $%02x ($%02x)\n", data, data & Z180_DAR0H_WMASK);
IO_DAR0H = (IO_DAR0H & ~Z180_DAR0H_WMASK) | (data & Z180_DAR0H_WMASK);
break;
case Z180_DAR0B:
- LOG(("Z180 '%s' DAR0B wr $%02x ($%02x)\n", tag(), data, data & Z180_DAR0B_WMASK));
+ LOG("Z180 DAR0B wr $%02x ($%02x)\n", data, data & Z180_DAR0B_WMASK);
IO_DAR0B = (IO_DAR0B & ~Z180_DAR0B_WMASK) | (data & Z180_DAR0B_WMASK);
break;
case Z180_BCR0L:
- LOG(("Z180 '%s' BCR0L wr $%02x ($%02x)\n", tag(), data, data & Z180_BCR0L_WMASK));
+ LOG("Z180 BCR0L wr $%02x ($%02x)\n", data, data & Z180_BCR0L_WMASK);
IO_BCR0L = (IO_BCR0L & ~Z180_BCR0L_WMASK) | (data & Z180_BCR0L_WMASK);
break;
case Z180_BCR0H:
- LOG(("Z180 '%s' BCR0H wr $%02x ($%02x)\n", tag(), data, data & Z180_BCR0H_WMASK));
+ LOG("Z180 BCR0H wr $%02x ($%02x)\n", data, data & Z180_BCR0H_WMASK);
IO_BCR0H = (IO_BCR0H & ~Z180_BCR0H_WMASK) | (data & Z180_BCR0H_WMASK);
break;
case Z180_MAR1L:
- LOG(("Z180 '%s' MAR1L wr $%02x ($%02x)\n", tag(), data, data & Z180_MAR1L_WMASK));
+ LOG("Z180 MAR1L wr $%02x ($%02x)\n", data, data & Z180_MAR1L_WMASK);
IO_MAR1L = (IO_MAR1L & ~Z180_MAR1L_WMASK) | (data & Z180_MAR1L_WMASK);
break;
case Z180_MAR1H:
- LOG(("Z180 '%s' MAR1H wr $%02x ($%02x)\n", tag(), data, data & Z180_MAR1H_WMASK));
+ LOG("Z180 MAR1H wr $%02x ($%02x)\n", data, data & Z180_MAR1H_WMASK);
IO_MAR1H = (IO_MAR1H & ~Z180_MAR1H_WMASK) | (data & Z180_MAR1H_WMASK);
break;
case Z180_MAR1B:
- LOG(("Z180 '%s' MAR1B wr $%02x ($%02x)\n", tag(), data, data & Z180_MAR1B_WMASK));
+ LOG("Z180 MAR1B wr $%02x ($%02x)\n", data, data & Z180_MAR1B_WMASK);
IO_MAR1B = (IO_MAR1B & ~Z180_MAR1B_WMASK) | (data & Z180_MAR1B_WMASK);
break;
case Z180_IAR1L:
- LOG(("Z180 '%s' IAR1L wr $%02x ($%02x)\n", tag(), data, data & Z180_IAR1L_WMASK));
+ LOG("Z180 IAR1L wr $%02x ($%02x)\n", data, data & Z180_IAR1L_WMASK);
IO_IAR1L = (IO_IAR1L & ~Z180_IAR1L_WMASK) | (data & Z180_IAR1L_WMASK);
break;
case Z180_IAR1H:
- LOG(("Z180 '%s' IAR1H wr $%02x ($%02x)\n", tag(), data, data & Z180_IAR1H_WMASK));
+ LOG("Z180 IAR1H wr $%02x ($%02x)\n", data, data & Z180_IAR1H_WMASK);
IO_IAR1H = (IO_IAR1H & ~Z180_IAR1H_WMASK) | (data & Z180_IAR1H_WMASK);
break;
case Z180_IAR1B:
- LOG(("Z180 '%s' IAR1B wr $%02x ($%02x)\n", tag(), data, data & Z180_IAR1B_WMASK));
+ LOG("Z180 IAR1B wr $%02x ($%02x)\n", data, data & Z180_IAR1B_WMASK);
IO_IAR1B = (IO_IAR1B & ~Z180_IAR1B_WMASK) | (data & Z180_IAR1B_WMASK);
break;
case Z180_BCR1L:
- LOG(("Z180 '%s' BCR1L wr $%02x ($%02x)\n", tag(), data, data & Z180_BCR1L_WMASK));
+ LOG("Z180 BCR1L wr $%02x ($%02x)\n", data, data & Z180_BCR1L_WMASK);
IO_BCR1L = (IO_BCR1L & ~Z180_BCR1L_WMASK) | (data & Z180_BCR1L_WMASK);
break;
case Z180_BCR1H:
- LOG(("Z180 '%s' BCR1H wr $%02x ($%02x)\n", tag(), data, data & Z180_BCR1H_WMASK));
+ LOG("Z180 BCR1H wr $%02x ($%02x)\n", data, data & Z180_BCR1H_WMASK);
IO_BCR1H = (IO_BCR1H & ~Z180_BCR1H_WMASK) | (data & Z180_BCR1H_WMASK);
break;
case Z180_DSTAT:
- LOG(("Z180 '%s' DSTAT wr $%02x ($%02x)\n", tag(), data, data & Z180_DSTAT_WMASK));
+ LOG("Z180 DSTAT wr $%02x ($%02x)\n", data, data & Z180_DSTAT_WMASK);
IO_DSTAT = (IO_DSTAT & ~Z180_DSTAT_WMASK) | (data & Z180_DSTAT_WMASK);
if ((data & (Z180_DSTAT_DE1 | Z180_DSTAT_DWE1)) == Z180_DSTAT_DE1)
{
@@ -1499,80 +1498,80 @@ void z180_device::z180_writecontrol(offs_t port, uint8_t data)
break;
case Z180_DMODE:
- LOG(("Z180 '%s' DMODE wr $%02x ($%02x)\n", tag(), data, data & Z180_DMODE_WMASK));
+ LOG("Z180 DMODE wr $%02x ($%02x)\n", data, data & Z180_DMODE_WMASK);
IO_DMODE = (IO_DMODE & ~Z180_DMODE_WMASK) | (data & Z180_DMODE_WMASK);
break;
case Z180_DCNTL:
- LOG(("Z180 '%s' DCNTL wr $%02x ($%02x)\n", tag(), data, data & Z180_DCNTL_WMASK));
+ LOG("Z180 DCNTL wr $%02x ($%02x)\n", data, data & Z180_DCNTL_WMASK);
IO_DCNTL = (IO_DCNTL & ~Z180_DCNTL_WMASK) | (data & Z180_DCNTL_WMASK);
break;
case Z180_IL:
- LOG(("Z180 '%s' IL wr $%02x ($%02x)\n", tag(), data, data & Z180_IL_WMASK));
+ LOG("Z180 IL wr $%02x ($%02x)\n", data, data & Z180_IL_WMASK);
IO_IL = (IO_IL & ~Z180_IL_WMASK) | (data & Z180_IL_WMASK);
break;
case Z180_ITC:
- LOG(("Z180 '%s' ITC wr $%02x ($%02x)\n", tag(), data, data & Z180_ITC_WMASK));
+ LOG("Z180 ITC wr $%02x ($%02x)\n", data, data & Z180_ITC_WMASK);
IO_ITC = (IO_ITC & ~Z180_ITC_WMASK) | (data & Z180_ITC_WMASK);
break;
case Z180_IO35:
- LOG(("Z180 '%s' IO35 wr $%02x ($%02x)\n", tag(), data, data & Z180_IO35_WMASK));
+ LOG("Z180 IO35 wr $%02x ($%02x)\n", data, data & Z180_IO35_WMASK);
IO_IO35 = (IO_IO35 & ~Z180_IO35_WMASK) | (data & Z180_IO35_WMASK);
break;
case Z180_RCR:
- LOG(("Z180 '%s' RCR wr $%02x ($%02x)\n", tag(), data, data & Z180_RCR_WMASK));
+ LOG("Z180 RCR wr $%02x ($%02x)\n", data, data & Z180_RCR_WMASK);
IO_RCR = (IO_RCR & ~Z180_RCR_WMASK) | (data & Z180_RCR_WMASK);
break;
case Z180_IO37:
- LOG(("Z180 '%s' IO37 wr $%02x ($%02x)\n", tag(), data, data & Z180_IO37_WMASK));
+ LOG("Z180 IO37 wr $%02x ($%02x)\n", data, data & Z180_IO37_WMASK);
IO_IO37 = (IO_IO37 & ~Z180_IO37_WMASK) | (data & Z180_IO37_WMASK);
break;
case Z180_CBR:
- LOG(("Z180 '%s' CBR wr $%02x ($%02x)\n", tag(), data, data & Z180_CBR_WMASK));
+ LOG("Z180 CBR wr $%02x ($%02x)\n", data, data & Z180_CBR_WMASK);
IO_CBR = (IO_CBR & ~Z180_CBR_WMASK) | (data & Z180_CBR_WMASK);
z180_mmu();
break;
case Z180_BBR:
- LOG(("Z180 '%s' BBR wr $%02x ($%02x)\n", tag(), data, data & Z180_BBR_WMASK));
+ LOG("Z180 BBR wr $%02x ($%02x)\n", data, data & Z180_BBR_WMASK);
IO_BBR = (IO_BBR & ~Z180_BBR_WMASK) | (data & Z180_BBR_WMASK);
z180_mmu();
break;
case Z180_CBAR:
- LOG(("Z180 '%s' CBAR wr $%02x ($%02x)\n", tag(), data, data & Z180_CBAR_WMASK));
+ LOG("Z180 CBAR wr $%02x ($%02x)\n", data, data & Z180_CBAR_WMASK);
IO_CBAR = (IO_CBAR & ~Z180_CBAR_WMASK) | (data & Z180_CBAR_WMASK);
z180_mmu();
break;
case Z180_IO3B:
- LOG(("Z180 '%s' IO3B wr $%02x ($%02x)\n", tag(), data, data & Z180_IO3B_WMASK));
+ LOG("Z180 IO3B wr $%02x ($%02x)\n", data, data & Z180_IO3B_WMASK);
IO_IO3B = (IO_IO3B & ~Z180_IO3B_WMASK) | (data & Z180_IO3B_WMASK);
break;
case Z180_IO3C:
- LOG(("Z180 '%s' IO3C wr $%02x ($%02x)\n", tag(), data, data & Z180_IO3C_WMASK));
+ LOG("Z180 IO3C wr $%02x ($%02x)\n", data, data & Z180_IO3C_WMASK);
IO_IO3C = (IO_IO3C & ~Z180_IO3C_WMASK) | (data & Z180_IO3C_WMASK);
break;
case Z180_IO3D:
- LOG(("Z180 '%s' IO3D wr $%02x ($%02x)\n", tag(), data, data & Z180_IO3D_WMASK));
+ LOG("Z180 IO3D wr $%02x ($%02x)\n", data, data & Z180_IO3D_WMASK);
IO_IO3D = (IO_IO3D & ~Z180_IO3D_WMASK) | (data & Z180_IO3D_WMASK);
break;
case Z180_OMCR:
- LOG(("Z180 '%s' OMCR wr $%02x ($%02x)\n", tag(), data, data & Z180_OMCR_WMASK));
+ LOG("Z180 OMCR wr $%02x ($%02x)\n", data, data & Z180_OMCR_WMASK);
IO_OMCR = (IO_OMCR & ~Z180_OMCR_WMASK) | (data & Z180_OMCR_WMASK);
break;
case Z180_IOCR:
- LOG(("Z180 '%s' IOCR wr $%02x ($%02x)\n", tag(), data, data & Z180_IOCR_WMASK));
+ LOG("Z180 IOCR wr $%02x ($%02x)\n", data, data & Z180_IOCR_WMASK);
IO_IOCR = (IO_IOCR & ~Z180_IOCR_WMASK) | (data & Z180_IOCR_WMASK);
break;
}
@@ -1799,120 +1798,120 @@ void z180_device::z180_write_iolines(uint32_t data)
/* I/O asynchronous clock 0 (active high) or DREQ0 (mux) */
if (changes & Z180_CKA0)
{
- LOG(("Z180 '%s' CKA0 %d\n", tag(), data & Z180_CKA0 ? 1 : 0));
+ LOG("Z180 CKA0 %d\n", data & Z180_CKA0 ? 1 : 0);
m_iol = (m_iol & ~Z180_CKA0) | (data & Z180_CKA0);
}
/* I/O asynchronous clock 1 (active high) or TEND1 (mux) */
if (changes & Z180_CKA1)
{
- LOG(("Z180 '%s' CKA1 %d\n", tag(), data & Z180_CKA1 ? 1 : 0));
+ LOG("Z180 CKA1 %d\n", data & Z180_CKA1 ? 1 : 0);
m_iol = (m_iol & ~Z180_CKA1) | (data & Z180_CKA1);
}
/* I/O serial clock (active high) */
if (changes & Z180_CKS)
{
- LOG(("Z180 '%s' CKS %d\n", tag(), data & Z180_CKS ? 1 : 0));
+ LOG("Z180 CKS %d\n", data & Z180_CKS ? 1 : 0);
m_iol = (m_iol & ~Z180_CKS) | (data & Z180_CKS);
}
/* I clear to send 0 (active low) */
if (changes & Z180_CTS0)
{
- LOG(("Z180 '%s' CTS0 %d\n", tag(), data & Z180_CTS0 ? 1 : 0));
+ LOG("Z180 CTS0 %d\n", data & Z180_CTS0 ? 1 : 0);
m_iol = (m_iol & ~Z180_CTS0) | (data & Z180_CTS0);
}
/* I clear to send 1 (active low) or RXS (mux) */
if (changes & Z180_CTS1)
{
- LOG(("Z180 '%s' CTS1 %d\n", tag(), data & Z180_CTS1 ? 1 : 0));
+ LOG("Z180 CTS1 %d\n", data & Z180_CTS1 ? 1 : 0);
m_iol = (m_iol & ~Z180_CTS1) | (data & Z180_CTS1);
}
/* I data carrier detect (active low) */
if (changes & Z180_DCD0)
{
- LOG(("Z180 '%s' DCD0 %d\n", tag(), data & Z180_DCD0 ? 1 : 0));
+ LOG("Z180 DCD0 %d\n", data & Z180_DCD0 ? 1 : 0);
m_iol = (m_iol & ~Z180_DCD0) | (data & Z180_DCD0);
}
/* I data request DMA ch 0 (active low) or CKA0 (mux) */
if (changes & Z180_DREQ0)
{
- LOG(("Z180 '%s' DREQ0 %d\n", tag(), data & Z180_DREQ0 ? 1 : 0));
+ LOG("Z180 DREQ0 %d\n", data & Z180_DREQ0 ? 1 : 0);
m_iol = (m_iol & ~Z180_DREQ0) | (data & Z180_DREQ0);
}
/* I data request DMA ch 1 (active low) */
if (changes & Z180_DREQ1)
{
- LOG(("Z180 '%s' DREQ1 %d\n", tag(), data & Z180_DREQ1 ? 1 : 0));
+ LOG("Z180 DREQ1 %d\n", data & Z180_DREQ1 ? 1 : 0);
m_iol = (m_iol & ~Z180_DREQ1) | (data & Z180_DREQ1);
}
/* I asynchronous receive data 0 (active high) */
if (changes & Z180_RXA0)
{
- LOG(("Z180 '%s' RXA0 %d\n", tag(), data & Z180_RXA0 ? 1 : 0));
+ LOG("Z180 RXA0 %d\n", data & Z180_RXA0 ? 1 : 0);
m_iol = (m_iol & ~Z180_RXA0) | (data & Z180_RXA0);
}
/* I asynchronous receive data 1 (active high) */
if (changes & Z180_RXA1)
{
- LOG(("Z180 '%s' RXA1 %d\n", tag(), data & Z180_RXA1 ? 1 : 0));
+ LOG("Z180 RXA1 %d\n", data & Z180_RXA1 ? 1 : 0);
m_iol = (m_iol & ~Z180_RXA1) | (data & Z180_RXA1);
}
/* I clocked serial receive data (active high) or CTS1 (mux) */
if (changes & Z180_RXS)
{
- LOG(("Z180 '%s' RXS %d\n", tag(), data & Z180_RXS ? 1 : 0));
+ LOG("Z180 RXS %d\n", data & Z180_RXS ? 1 : 0);
m_iol = (m_iol & ~Z180_RXS) | (data & Z180_RXS);
}
/* O request to send (active low) */
if (changes & Z180_RTS0)
{
- LOG(("Z180 '%s' RTS0 won't change output\n", tag()));
+ LOG("Z180 RTS0 won't change output\n");
}
/* O transfer end 0 (active low) or CKA1 (mux) */
if (changes & Z180_TEND0)
{
- LOG(("Z180 '%s' TEND0 won't change output\n", tag()));
+ LOG("Z180 TEND0 won't change output\n");
}
/* O transfer end 1 (active low) */
if (changes & Z180_TEND1)
{
- LOG(("Z180 '%s' TEND1 won't change output\n", tag()));
+ LOG("Z180 TEND1 won't change output\n");
}
/* O transfer out (PRT channel, active low) or A18 (mux) */
if (changes & Z180_A18_TOUT)
{
- LOG(("Z180 '%s' TOUT won't change output\n", tag()));
+ LOG("Z180 TOUT won't change output\n");
}
/* O asynchronous transmit data 0 (active high) */
if (changes & Z180_TXA0)
{
- LOG(("Z180 '%s' TXA0 won't change output\n", tag()));
+ LOG("Z180 TXA0 won't change output\n");
}
/* O asynchronous transmit data 1 (active high) */
if (changes & Z180_TXA1)
{
- LOG(("Z180 '%s' TXA1 won't change output\n", tag()));
+ LOG("Z180 TXA1 won't change output\n");
}
/* O clocked serial transmit data (active high) */
if (changes & Z180_TXS)
{
- LOG(("Z180 '%s' TXS won't change output\n", tag()));
+ LOG("Z180 TXS won't change output\n");
}
}
@@ -2379,7 +2378,7 @@ void z180_device::execute_run()
/* to just check here */
if (m_nmi_pending)
{
- LOG(("Z180 '%s' take NMI\n", tag()));
+ LOG("Z180 take NMI\n");
LEAVE_HALT(); /* Check if processor was halted */
/* disable DMA transfers!! */
@@ -2525,7 +2524,7 @@ void z180_device::execute_set_input(int irqline, int state)
}
else
{
- LOG(("Z180 '%s' set_irq_line %d = %d\n",tag() , irqline,state));
+ LOG("Z180 set_irq_line %d = %d\n", irqline,state);
if(irqline == Z180_INPUT_LINE_IRQ0 || irqline == Z180_INPUT_LINE_IRQ1 || irqline == Z180_INPUT_LINE_IRQ2) {
/* update the IRQ state */
diff --git a/src/devices/cpu/z180/z180.h b/src/devices/cpu/z180/z180.h
index eb4b393ed02..13d558f0425 100644
--- a/src/devices/cpu/z180/z180.h
+++ b/src/devices/cpu/z180/z180.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller
-#pragma once
+#ifndef MAME_CPU_Z180_Z180_H
+#define MAME_CPU_Z180_Z180_H
-#ifndef __Z180_H__
-#define __Z180_H__
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -1773,11 +1773,9 @@ private:
void xycb_fd();
void xycb_fe();
void xycb_ff();
-
};
-extern const device_type Z180;
-
+DECLARE_DEVICE_TYPE(Z180, z180_device)
-#endif /* __Z180_H__ */
+#endif // MAME_CPU_Z180_Z180_H
diff --git a/src/devices/cpu/z180/z180op.hxx b/src/devices/cpu/z180/z180op.hxx
index fce6718f40d..e29d867e66d 100644
--- a/src/devices/cpu/z180/z180op.hxx
+++ b/src/devices/cpu/z180/z180op.hxx
@@ -310,7 +310,7 @@ int z180_device::take_interrupt(int irq)
device_z80daisy_interface *intf = daisy_get_irq_device();
irq_vector = (intf != nullptr) ? intf->z80daisy_irq_ack() : standard_irq_callback_member(*this, 0);
- LOG(("Z180 '%s' single int. irq_vector $%02x\n", tag(), irq_vector));
+ LOG("Z180 single int. irq_vector $%02x\n", irq_vector);
/* Interrupt mode 2. Call [m_I:databyte] */
if( m_IM == 2 )
@@ -318,7 +318,7 @@ int z180_device::take_interrupt(int irq)
irq_vector = (irq_vector & 0xff) + (m_I << 8);
PUSH( PC );
RM16(irq_vector, &m_PC );
- LOG(("Z180 '%s' IM2 [$%04x] = $%04x\n",tag() , irq_vector, _PCD));
+ LOG("Z180 IM2 [$%04x] = $%04x\n", irq_vector, _PCD);
/* CALL opcode timing */
cycles += m_cc[Z180_TABLE_op][0xcd];
}
@@ -326,7 +326,7 @@ int z180_device::take_interrupt(int irq)
/* Interrupt mode 1. RST 38h */
if( m_IM == 1 )
{
- LOG(("Z180 '%s' IM1 $0038\n",tag() ));
+ LOG("Z180 IM1 $0038\n");
PUSH( PC );
_PCD = 0x0038;
/* RST $38 + 'interrupt latency' cycles */
@@ -337,7 +337,7 @@ int z180_device::take_interrupt(int irq)
/* Interrupt mode 0. We check for CALL and JP instructions, */
/* if neither of these were found we assume a 1 byte opcode */
/* was placed on the databus */
- LOG(("Z180 '%s' IM0 $%04x\n",tag() , irq_vector));
+ LOG("Z180 IM0 $%04x\n", irq_vector);
switch (irq_vector & 0xff0000)
{
case 0xcd0000: /* call */
@@ -366,7 +366,7 @@ int z180_device::take_interrupt(int irq)
irq_vector = (m_I << 8) + (irq_vector & 0xff);
PUSH( PC );
RM16(irq_vector, &m_PC );
- LOG(("Z180 '%s' INT%d [$%04x] = $%04x\n", tag(), irq, irq_vector, _PCD));
+ LOG("Z180 INT%d [$%04x] = $%04x\n", irq, irq_vector, _PCD);
/* CALL opcode timing */
cycles += m_cc[Z180_TABLE_op][0xcd];
}
diff --git a/src/devices/cpu/z180/z180ops.h b/src/devices/cpu/z180/z180ops.h
index 952685c0f8a..9ffe45cc42d 100644
--- a/src/devices/cpu/z180/z180ops.h
+++ b/src/devices/cpu/z180/z180ops.h
@@ -213,7 +213,7 @@ uint32_t z180_device::ARG16()
#define RET_COND(cond,opcode) \
if( cond ) \
{ \
- POP(PC); \
+ POP(PC); \
CC(ex,opcode); \
}
@@ -221,19 +221,19 @@ uint32_t z180_device::ARG16()
* RETN
***************************************************************/
#define RETN { \
- LOG(("Z180 '%s' RETN IFF1:%d IFF2:%d\n", tag(), m_IFF1, m_IFF2)); \
- POP(PC); \
- m_IFF1 = m_IFF2; \
+ LOG("Z180 RETN IFF1:%d IFF2:%d\n", m_IFF1, m_IFF2); \
+ POP(PC); \
+ m_IFF1 = m_IFF2; \
}
/***************************************************************
* RETI
***************************************************************/
#define RETI { \
- POP(PC); \
+ POP(PC); \
/* according to http://www.msxnet.org/tech/Z80/z80undoc.txt */ \
-/* m_IFF1 = m_IFF2; */ \
- daisy_call_reti_device(); \
+/* m_IFF1 = m_IFF2; */ \
+ daisy_call_reti_device(); \
}
/***************************************************************
diff --git a/src/devices/cpu/z8/z8.cpp b/src/devices/cpu/z8/z8.cpp
index d29a5d9f081..eb6fdc0703c 100644
--- a/src/devices/cpu/z8/z8.cpp
+++ b/src/devices/cpu/z8/z8.cpp
@@ -21,8 +21,8 @@
*/
#include "emu.h"
-#include "debugger.h"
#include "z8.h"
+#include "debugger.h"
/***************************************************************************
CONSTANTS
@@ -152,9 +152,9 @@ enum
#define PRE1 m_r[Z8_REGISTER_PRE1]
-const device_type Z8601 = device_creator<z8601_device>;
-const device_type UB8830D = device_creator<ub8830d_device>;
-const device_type Z8611 = device_creator<z8611_device>;
+DEFINE_DEVICE_TYPE(Z8601, z8601_device, "z8601", "Z8601")
+DEFINE_DEVICE_TYPE(UB8830D, ub8830d_device, "ub8830d", "UB8830D")
+DEFINE_DEVICE_TYPE(Z8611, z8611_device, "z8611", "Z8611")
/***************************************************************************
@@ -170,29 +170,29 @@ static ADDRESS_MAP_START( program_4kb, AS_PROGRAM, 8, z8_device )
ADDRESS_MAP_END
-z8_device::z8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int size)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
- , m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0, ( size == 4 ) ? ADDRESS_MAP_NAME(program_4kb) : ADDRESS_MAP_NAME(program_2kb))
+z8_device::z8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int size)
+ : cpu_device(mconfig, type, tag, owner, clock)
+ , m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0, (size == 4) ? ADDRESS_MAP_NAME(program_4kb) : ADDRESS_MAP_NAME(program_2kb))
, m_data_config("data", ENDIANNESS_LITTLE, 8, 16, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 2, 0)
{
}
-z8601_device::z8601_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock)
- : z8_device(mconfig, Z8601, "Z8601", _tag, _owner, _clock, "z8601", __FILE__, 2)
+z8601_device::z8601_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : z8_device(mconfig, Z8601, tag, owner, clock, 2)
{
}
-ub8830d_device::ub8830d_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock)
- : z8_device(mconfig, UB8830D, "UB8830D", _tag, _owner, _clock, "ub8830d", __FILE__, 2)
+ub8830d_device::ub8830d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : z8_device(mconfig, UB8830D, tag, owner, clock, 2)
{
}
-z8611_device::z8611_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock)
- : z8_device(mconfig, Z8611, "Z8611", _tag, _owner, _clock, "z8611", __FILE__, 4)
+z8611_device::z8611_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : z8_device(mconfig, Z8611, tag, owner, clock, 4)
{
}
diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h
index 99c8e831677..b2c47421fe5 100644
--- a/src/devices/cpu/z8/z8.h
+++ b/src/devices/cpu/z8/z8.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_CPU_Z8_Z8_H
+#define MAME_CPU_Z8_Z8_H
-#ifndef __Z8_H__
-#define __Z8_H__
+#pragma once
enum
@@ -20,13 +20,12 @@ enum
};
-class z8_device : public cpu_device
+class z8_device : public cpu_device
{
-public:
+protected:
// construction/destruction
- z8_device(const machine_config &mconfig, device_type type, const char *name, const char *_tag, device_t *_owner, uint32_t _clock, const char *shortname, const char *source, int size);
+ z8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int size);
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -41,7 +40,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override
{
switch ( spacenum )
{
@@ -292,32 +291,31 @@ private:
class z8601_device : public z8_device
{
public:
- z8601_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
+ z8601_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class ub8830d_device : public z8_device
{
public:
- ub8830d_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
+ ub8830d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class z8611_device : public z8_device
{
public:
- z8611_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
+ z8611_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-/* Zilog Z8601 */
-extern const device_type Z8601;
-
-/* VEB Mikroelektronik Erfurt UB8830D MME */
-extern const device_type UB8830D;
+// Zilog Z8601
+DECLARE_DEVICE_TYPE(Z8601, z8601_device)
-/* Zilog Z8611 */
-extern const device_type Z8611;
+// VEB Mikroelektronik Erfurt UB8830D MME
+DECLARE_DEVICE_TYPE(UB8830D, ub8830d_device)
+// Zilog Z8611
+DECLARE_DEVICE_TYPE(Z8611, z8611_device)
-#endif
+#endif // MAME_CPU_Z8_Z8_H
diff --git a/src/devices/cpu/z80/kl5c80a12.cpp b/src/devices/cpu/z80/kl5c80a12.cpp
index 6a16ca22bf6..e41eee4b0eb 100644
--- a/src/devices/cpu/z80/kl5c80a12.cpp
+++ b/src/devices/cpu/z80/kl5c80a12.cpp
@@ -16,11 +16,11 @@
#include "emu.h"
#include "kl5c80a12.h"
-const device_type KL5C80A12 = device_creator<kl5c80a12_device>;
+DEFINE_DEVICE_TYPE(KL5C80A12, kl5c80a12_device, "kl5c80a12", "KL5C80A12")
kl5c80a12_device::kl5c80a12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80_device(mconfig, KL5C80A12, "KL5C80A12", tag, owner, clock, "kl5c80a12", __FILE__)
+ : z80_device(mconfig, KL5C80A12, tag, owner, clock)
{
}
diff --git a/src/devices/cpu/z80/kl5c80a12.h b/src/devices/cpu/z80/kl5c80a12.h
index a4e9fc66cea..5804e27af49 100644
--- a/src/devices/cpu/z80/kl5c80a12.h
+++ b/src/devices/cpu/z80/kl5c80a12.h
@@ -13,10 +13,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_Z80_KL5C80A12_H
+#define MAME_CPU_Z80_KL5C80A12_H
-#ifndef __KL5C80A12__
-#define __KL5C80A12__
+#pragma once
#include "z80.h"
#include "machine/z80ctc.h"
@@ -47,7 +47,6 @@ protected:
// device type definition
-extern const device_type KL5C80A12;
-
+DECLARE_DEVICE_TYPE(KL5C80A12, kl5c80a12_device)
-#endif /// __KL5C80A12__
+#endif // MAME_CPU_Z80_KL5C80A12_H
diff --git a/src/devices/cpu/z80/tmpz84c011.cpp b/src/devices/cpu/z80/tmpz84c011.cpp
index 2f24b48ab2d..0143f0d23f5 100644
--- a/src/devices/cpu/z80/tmpz84c011.cpp
+++ b/src/devices/cpu/z80/tmpz84c011.cpp
@@ -13,7 +13,7 @@
#include "emu.h"
#include "tmpz84c011.h"
-const device_type TMPZ84C011 = device_creator<tmpz84c011_device>;
+DEFINE_DEVICE_TYPE(TMPZ84C011, tmpz84c011_device, "tmpz84c011", "TMPZ84C011")
static ADDRESS_MAP_START( tmpz84c011_internal_io_map, AS_IO, 8, tmpz84c011_device )
AM_RANGE(0x10, 0x13) AM_MIRROR(0xff00) AM_DEVREADWRITE("tmpz84c011_ctc", z80ctc_device, read, write)
@@ -32,7 +32,7 @@ ADDRESS_MAP_END
tmpz84c011_device::tmpz84c011_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80_device(mconfig, TMPZ84C011, "TMPZ84C011", tag, owner, clock, "tmpz84c011", __FILE__),
+ : z80_device(mconfig, TMPZ84C011, tag, owner, clock),
m_io_space_config( "io", ENDIANNESS_LITTLE, 8, 16, 0, ADDRESS_MAP_NAME( tmpz84c011_internal_io_map ) ),
m_ctc(*this, "tmpz84c011_ctc"),
m_outportsa(*this),
diff --git a/src/devices/cpu/z80/tmpz84c011.h b/src/devices/cpu/z80/tmpz84c011.h
index 9eaa3e2b0c3..a446eba45e9 100644
--- a/src/devices/cpu/z80/tmpz84c011.h
+++ b/src/devices/cpu/z80/tmpz84c011.h
@@ -7,10 +7,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_Z80_TMPZ84C011_H
+#define MAME_CPU_Z80_TMPZ84C011_H
-#ifndef __TMPZ84C011__
-#define __TMPZ84C011__
+#pragma once
#include "z80.h"
#include "machine/z80ctc.h"
@@ -172,7 +172,7 @@ private:
// device type definition
-extern const device_type TMPZ84C011;
+DECLARE_DEVICE_TYPE(TMPZ84C011, tmpz84c011_device)
-#endif /// __TMPZ84C011__
+#endif // MAME_CPU_Z80_TMPZ84C011_H
diff --git a/src/devices/cpu/z80/tmpz84c015.cpp b/src/devices/cpu/z80/tmpz84c015.cpp
index 27021fc596e..57171485dd5 100644
--- a/src/devices/cpu/z80/tmpz84c015.cpp
+++ b/src/devices/cpu/z80/tmpz84c015.cpp
@@ -15,7 +15,7 @@
#include "emu.h"
#include "tmpz84c015.h"
-const device_type TMPZ84C015 = device_creator<tmpz84c015_device>;
+DEFINE_DEVICE_TYPE(TMPZ84C015, tmpz84c015_device, "tmpz84c015", "TMPZ84C015")
static ADDRESS_MAP_START( tmpz84c015_internal_io_map, AS_IO, 8, tmpz84c015_device )
AM_RANGE(0x10, 0x13) AM_MIRROR(0xff00) AM_DEVREADWRITE("tmpz84c015_ctc", z80ctc_device, read, write)
@@ -26,7 +26,7 @@ ADDRESS_MAP_END
tmpz84c015_device::tmpz84c015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80_device(mconfig, TMPZ84C015, "TMPZ84C015", tag, owner, clock, "tmpz84c015", __FILE__),
+ : z80_device(mconfig, TMPZ84C015, tag, owner, clock),
m_io_space_config( "io", ENDIANNESS_LITTLE, 8, 16, 0, ADDRESS_MAP_NAME( tmpz84c015_internal_io_map ) ),
m_ctc(*this, "tmpz84c015_ctc"),
m_sio(*this, "tmpz84c015_sio"),
diff --git a/src/devices/cpu/z80/tmpz84c015.h b/src/devices/cpu/z80/tmpz84c015.h
index 90ee3154530..4e3c3b96afe 100644
--- a/src/devices/cpu/z80/tmpz84c015.h
+++ b/src/devices/cpu/z80/tmpz84c015.h
@@ -7,10 +7,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_Z80_TMPZ84C015_H
+#define MAME_CPU_Z80_TMPZ84C015_H
-#ifndef __TMPZ84C015__
-#define __TMPZ84C015__
+#pragma once
#include "z80.h"
#include "machine/z80dart.h"
@@ -263,7 +263,7 @@ private:
// device type definition
-extern const device_type TMPZ84C015;
+DECLARE_DEVICE_TYPE(TMPZ84C015, tmpz84c015_device)
-#endif // __TMPZ84C015__
+#endif // MAME_CPU_Z80_TMPZ84C015_H
diff --git a/src/devices/cpu/z80/z80.cpp b/src/devices/cpu/z80/z80.cpp
index fcfbcb264e0..e1a04daf7db 100644
--- a/src/devices/cpu/z80/z80.cpp
+++ b/src/devices/cpu/z80/z80.cpp
@@ -3692,18 +3692,12 @@ void z80_device::z80_set_cycle_tables(const uint8_t *op, const uint8_t *cb, cons
z80_device::z80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- cpu_device(mconfig, Z80, "Z80", tag, owner, clock, "z80", __FILE__),
- z80_daisy_chain_interface(mconfig, *this),
- m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0),
- m_decrypted_opcodes_config("decrypted_opcodes", ENDIANNESS_LITTLE, 8, 16, 0),
- m_io_config("io", ENDIANNESS_LITTLE, 8, 16, 0),
- m_irqack_cb(*this),
- m_refresh_cb(*this)
+ z80_device(mconfig, Z80, tag, owner, clock)
{
}
-z80_device::z80_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+z80_device::z80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ cpu_device(mconfig, type, tag, owner, clock),
z80_daisy_chain_interface(mconfig, *this),
m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0),
m_decrypted_opcodes_config("decrypted_opcodes", ENDIANNESS_LITTLE, 8, 16, 0),
@@ -3724,11 +3718,11 @@ const address_space_config *z80_device::memory_space_config(address_spacenum spa
}
}
-const device_type Z80 = device_creator<z80_device>;
+DEFINE_DEVICE_TYPE(Z80, z80_device, "z80", "Z80")
nsc800_device::nsc800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80_device(mconfig, NSC800, "NSC800", tag, owner, clock, "nsc800", __FILE__)
+ : z80_device(mconfig, NSC800, tag, owner, clock)
{
}
-const device_type NSC800 = device_creator<nsc800_device>;
+DEFINE_DEVICE_TYPE(NSC800, nsc800_device, "nsc800", "NSC800")
diff --git a/src/devices/cpu/z80/z80.h b/src/devices/cpu/z80/z80.h
index 664e484c565..80e3bdabcbd 100644
--- a/src/devices/cpu/z80/z80.h
+++ b/src/devices/cpu/z80/z80.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller
-#pragma once
+#ifndef MAME_CPU_Z80_Z80_H
+#define MAME_CPU_Z80_Z80_H
-#ifndef __Z80_H__
-#define __Z80_H__
+#pragma once
#include "z80daisy.h"
@@ -43,7 +43,7 @@ public:
template<class _Object> static devcb_base &set_refresh_cb(device_t &device, _Object object) { return downcast<z80_device &>(device).m_refresh_cb.set_callback(object); }
protected:
- z80_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ z80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -287,7 +287,7 @@ protected:
const uint8_t * m_cc_ex;
};
-extern const device_type Z80;
+DECLARE_DEVICE_TYPE(Z80, z80_device)
class nsc800_device : public z80_device
{
@@ -308,7 +308,7 @@ protected:
uint8_t m_nsc800_irq_state[4]; /* state of NSC800 restart interrupts A, B, C */
};
-extern const device_type NSC800;
+DECLARE_DEVICE_TYPE(NSC800, nsc800_device)
-#endif /* __Z80_H__ */
+#endif // MAME_CPU_Z80_Z80_H
diff --git a/src/devices/cpu/z8000/8000dasm.cpp b/src/devices/cpu/z8000/8000dasm.cpp
index 5a6d6c51596..a84d5d285e8 100644
--- a/src/devices/cpu/z8000/8000dasm.cpp
+++ b/src/devices/cpu/z8000/8000dasm.cpp
@@ -11,10 +11,12 @@
#include "emu.h"
#include "z8000.h"
#include "z8000cpu.h"
+
#include "debugger.h"
#include "debug/debugvw.h"
#include "debug/debugcon.h"
+
static int n[16]; /* opcode nibbles */
static int b[8]; /* opcode bytes */
static int w[4]; /* opcode words */
@@ -52,13 +54,11 @@ CPU_DISASSEMBLE(z8000)
{
int new_pc = pc, i, j, tmp;
const char *src;
- Z8000_exec *o;
+ z8002_device::Z8000_dasm o;
uint32_t flags = 0;
uint32_t old_w;
- /* already initialized? */
- if(z8000_exec == nullptr)
- z8000_init_tables();
+ z8002_device::init_tables();
GET_OP(oprom, 0, new_pc - pc);
new_pc += 2;
@@ -74,11 +74,11 @@ CPU_DISASSEMBLE(z8000)
util::stream_format(stream, ".word #%%%04x ;RST PC", w[0]);
break;
default:
- o = &z8000_exec[w[0]];
- if (o->size > 1) { GET_OP(oprom, 1, new_pc - pc); new_pc += 2; }
- if (o->size > 2) { GET_OP(oprom, 2, new_pc - pc); new_pc += 2; }
- src = o->dasm;
- flags = o->dasmflags;
+ o = z8002_device::dasm(w[0]);
+ if (o.size > 1) { GET_OP(oprom, 1, new_pc - pc); new_pc += 2; }
+ if (o.size > 2) { GET_OP(oprom, 2, new_pc - pc); new_pc += 2; }
+ src = o.dasm;
+ flags = o.flags;
while (*src)
{
@@ -198,9 +198,9 @@ CPU_DISASSEMBLE(z8000)
if (z8k_segm) {
if (w[i] & 0x8000) {
old_w = w[i];
- for (j = i; j < o->size; j++)
+ for (j = i; j < o.size; j++)
w[j] = w[j + 1];
- GET_OP(oprom, o->size - 1, new_pc - pc);
+ GET_OP(oprom, o.size - 1, new_pc - pc);
new_pc += 2;
w[i] = ((old_w & 0x7f00) << 16) | (w[i] & 0xffff);
}
diff --git a/src/devices/cpu/z8000/z8000.cpp b/src/devices/cpu/z8000/z8000.cpp
index 0256bc9bd90..b3edc18ada2 100644
--- a/src/devices/cpu/z8000/z8000.cpp
+++ b/src/devices/cpu/z8000/z8000.cpp
@@ -13,49 +13,43 @@
*****************************************************************************/
#include "emu.h"
-#include "debugger.h"
-#include "debug/debugcon.h"
#include "z8000.h"
+#include "z8000cpu.h"
-#define VERBOSE 0
-
+#include "debugger.h"
+#include "debug/debugcon.h"
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
extern int z8k_segm;
extern int z8k_segm_mode;
-#include "z8000cpu.h"
-
-const device_type Z8001 = device_creator<z8001_device>;
-const device_type Z8002 = device_creator<z8002_device>;
+DEFINE_DEVICE_TYPE(Z8001, z8001_device, "z8001", "Zilog Z8001")
+DEFINE_DEVICE_TYPE(Z8002, z8002_device, "z8002", "Zilog Z8002")
z8002_device::z8002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, Z8002, "Z8002", tag, owner, clock, "z8002", __FILE__)
- , z80_daisy_chain_interface(mconfig, *this)
- , m_program_config("program", ENDIANNESS_BIG, 16, 16, 0)
- , m_io_config("io", ENDIANNESS_BIG, 8, 16, 0)
- , m_mo_out(*this), m_ppc(0), m_pc(0), m_psapseg(0), m_psapoff(0), m_fcw(0), m_refresh(0), m_nspseg(0), m_nspoff(0), m_irq_req(0), m_irq_vec(0), m_op_valid(0), m_nmi_state(0), m_mi(0), m_program(nullptr), m_data(nullptr), m_direct(nullptr), m_io(nullptr), m_icount(0)
- , m_vector_mult(1)
+ : z8002_device(mconfig, Z8002, tag, owner, clock, 16, 8, 1)
{
}
-z8002_device::z8002_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+z8002_device::z8002_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int addrbits, int iobits, int vecmult)
+ : cpu_device(mconfig, type, tag, owner, clock)
, z80_daisy_chain_interface(mconfig, *this)
- , m_program_config("program", ENDIANNESS_BIG, 16, 20, 0)
- , m_io_config("io", ENDIANNESS_BIG, 16, 16, 0)
- , m_mo_out(*this), m_ppc(0), m_pc(0), m_psapseg(0), m_psapoff(0), m_fcw(0), m_refresh(0), m_nspseg(0), m_nspoff(0), m_irq_req(0), m_irq_vec(0), m_op_valid(0), m_nmi_state(0), m_mi(0), m_program(nullptr), m_data(nullptr), m_direct(nullptr), m_io(nullptr), m_icount(0)
- , m_vector_mult(2)
+ , m_program_config("program", ENDIANNESS_BIG, 16, addrbits, 0)
+ , m_io_config("io", ENDIANNESS_BIG, iobits, 16, 0)
+ , m_mo_out(*this)
+ , m_ppc(0), m_pc(0), m_psapseg(0), m_psapoff(0), m_fcw(0), m_refresh(0), m_nspseg(0), m_nspoff(0), m_irq_req(0), m_irq_vec(0), m_op_valid(0), m_nmi_state(0), m_mi(0), m_program(nullptr), m_data(nullptr), m_direct(nullptr), m_io(nullptr), m_icount(0)
+ , m_vector_mult(vecmult)
{
}
z8001_device::z8001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z8002_device(mconfig, Z8001, "Zilog Z8001", tag, owner, clock, "z8001", __FILE__)
+ : z8002_device(mconfig, Z8001, tag, owner, clock, 20, 16, 2)
, m_data_config("data", ENDIANNESS_BIG, 16, 20, 0)
{
}
@@ -69,7 +63,7 @@ offs_t z8002_device::disasm_disassemble(std::ostream &stream, offs_t pc, const u
/* opcode execution table */
-Z8000_exec *z8000_exec = nullptr;
+std::unique_ptr<z8002_device::Z8000_exec const []> z8002_device::z8000_exec;
/* zero, sign and parity flags for logical byte operations */
static uint8_t z8000_zsp[256];
@@ -385,7 +379,7 @@ void z8002_device::set_irq(int type)
m_irq_req = type;
break;
case Z8000_SYSCALL >> 8:
- LOG(("Z8K '%s' SYSCALL $%02x\n", tag(), type & 0xff));
+ LOG("Z8K SYSCALL $%02x\n", type & 0xff);
m_irq_req = type;
break;
default:
@@ -474,7 +468,7 @@ void z8002_device::Interrupt()
m_irq_req &= ~Z8000_EPU;
CHANGE_FCW(GET_FCW(EPU));
m_pc = GET_PC(EPU);
- LOG(("Z8K '%s' ext instr trap $%04x\n", tag(), m_pc));
+ LOG("Z8K ext instr trap $%04x\n", m_pc);
}
else
if (m_irq_req & Z8000_TRAP)
@@ -486,7 +480,7 @@ void z8002_device::Interrupt()
m_irq_req &= ~Z8000_TRAP;
CHANGE_FCW(GET_FCW(TRAP));
m_pc = GET_PC(TRAP);
- LOG(("Z8K '%s' priv instr trap $%04x\n", tag(), m_pc));
+ LOG("Z8K priv instr trap $%04x\n", m_pc);
}
else
if (m_irq_req & Z8000_SYSCALL)
@@ -498,7 +492,7 @@ void z8002_device::Interrupt()
m_irq_req &= ~Z8000_SYSCALL;
CHANGE_FCW(GET_FCW(SYSCALL));
m_pc = GET_PC(SYSCALL);
- LOG(("Z8K '%s' syscall $%04x\n", tag(), m_pc));
+ LOG("Z8K syscall $%04x\n", m_pc);
}
else
if (m_irq_req & Z8000_SEGTRAP)
@@ -510,7 +504,7 @@ void z8002_device::Interrupt()
m_irq_req &= ~Z8000_SEGTRAP;
CHANGE_FCW(GET_FCW(SEGTRAP));
m_pc = GET_PC(SEGTRAP);
- LOG(("Z8K '%s' segtrap $%04x\n", tag(), m_pc));
+ LOG("Z8K segtrap $%04x\n", m_pc);
}
else
if (m_irq_req & Z8000_NMI)
@@ -523,7 +517,7 @@ void z8002_device::Interrupt()
m_irq_req &= ~Z8000_NMI;
CHANGE_FCW(GET_FCW(NMI));
m_pc = GET_PC(NMI);
- LOG(("Z8K '%s' NMI $%04x\n", tag(), m_pc));
+ LOG("Z8K NMI $%04x\n", m_pc);
}
else
if ((m_irq_req & Z8000_NVI) && (m_fcw & F_NVIE))
@@ -535,7 +529,7 @@ void z8002_device::Interrupt()
m_pc = GET_PC(NVI);
m_irq_req &= ~Z8000_NVI;
CHANGE_FCW(GET_FCW(NVI));
- LOG(("Z8K '%s' NVI $%04x\n", tag(), m_pc));
+ LOG("Z8K NVI $%04x\n", m_pc);
}
else
if ((m_irq_req & Z8000_VI) && (m_fcw & F_VIE))
@@ -547,7 +541,7 @@ void z8002_device::Interrupt()
m_pc = read_irq_vector();
m_irq_req &= ~Z8000_VI;
CHANGE_FCW(GET_FCW(VI));
- LOG(("Z8K '%s' VI [$%04x/$%04x] fcw $%04x, pc $%04x\n", tag(), m_irq_vec, VEC00 + ( m_vector_mult * 2 ) * (m_irq_req & 0xff), m_fcw, m_pc));
+ LOG("Z8K VI [$%04x/$%04x] fcw $%04x, pc $%04x\n", m_irq_vec, VEC00 + ( m_vector_mult * 2 ) * (m_irq_req & 0xff), m_fcw, m_pc);
}
}
@@ -699,9 +693,7 @@ void z8001_device::device_start()
m_direct = &m_program->direct();
m_io = &space(AS_IO);
- /* already initialized? */
- if(z8000_exec == nullptr)
- z8000_init_tables();
+ init_tables();
if (machine().debug_flags & DEBUG_FLAG_ENABLED)
{
@@ -732,9 +724,7 @@ void z8002_device::device_start()
m_direct = &m_program->direct();
m_io = &space(AS_IO);
- /* already initialized? */
- if(z8000_exec == nullptr)
- z8000_init_tables();
+ init_tables();
z8k_segm = false;
@@ -768,7 +758,8 @@ void z8002_device::device_reset()
z8002_device::~z8002_device()
{
- z8000_deinit_tables();
+ // FIXME: assumes that these CPUs can't outlive each other
+ deinit_tables();
}
void z8002_device::execute_run()
@@ -791,11 +782,9 @@ void z8002_device::execute_run()
}
else
{
- Z8000_exec *exec;
-
m_op[0] = RDOP();
m_op_valid = 1;
- exec = &z8000_exec[m_op[0]];
+ Z8000_exec const *const exec = &z8000_exec[m_op[0]];
m_icount -= exec->cycles;
(this->*exec->opcode)();
diff --git a/src/devices/cpu/z8000/z8000.h b/src/devices/cpu/z8000/z8000.h
index 59eeaa02aa5..8186a0d57cc 100644
--- a/src/devices/cpu/z8000/z8000.h
+++ b/src/devices/cpu/z8000/z8000.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller,Ernesto Corvi
-#pragma once
+#ifndef MAME_CPU_Z8000_Z8000_H
+#define MAME_CPU_Z8000_Z8000_H
-#ifndef __Z8000_H__
-#define __Z8000_H__
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -38,13 +38,20 @@ class z8002_device : public cpu_device, public z80_daisy_chain_interface
public:
// construction/destruction
z8002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- z8002_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
~z8002_device();
- template<class _Object> static devcb_base &set_mo_callback(device_t &device, _Object object) { return downcast<z8002_device &>(device).m_mo_out.set_callback(object); }
+ template <class Object> static devcb_base &set_mo_callback(device_t &device, Object &&cb) { return downcast<z8002_device &>(device).m_mo_out.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(mi_w) { m_mi = state; } // XXX: this has to apply in the middle of an insn for now
+ struct Z8000_dasm { char const *dasm; uint32_t flags; int size; };
+
+ static void init_tables();
+ static void deinit_tables();
+ static Z8000_dasm dasm(unsigned w);
+
protected:
+ z8002_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int addrbits, int iobits, int vecmult);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -211,7 +218,6 @@ protected:
virtual uint32_t PSA_ADDR();
virtual uint32_t read_irq_vector();
-public:
void zinvalid();
void Z00_0000_dddd_imm8();
void Z00_ssN0_dddd();
@@ -623,6 +629,31 @@ public:
void ZE_cccc_dsp8();
void ZF_dddd_0dsp7();
void ZF_dddd_1dsp7();
+
+private:
+ // structure for the opcode definition table
+ typedef void (z8002_device::*opcode_func)();
+
+ struct Z8000_init {
+ int beg, end, step;
+ int size, cycles;
+ opcode_func opcode;
+ const char *dasm;
+ uint32_t dasmflags;
+ };
+
+ /* structure for the opcode execution table / disassembler */
+ struct Z8000_exec {
+ opcode_func opcode;
+ int cycles;
+ int size;
+ const char *dasm;
+ uint32_t dasmflags;
+ };
+
+ /* opcode execution table */
+ static const Z8000_init table[];
+ static std::unique_ptr<Z8000_exec const []> z8000_exec;
};
@@ -638,7 +669,7 @@ protected:
virtual void device_reset() override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override
{
switch (spacenum)
{
@@ -671,8 +702,8 @@ private:
};
-extern const device_type Z8001;
-extern const device_type Z8002;
+DECLARE_DEVICE_TYPE(Z8001, z8001_device)
+DECLARE_DEVICE_TYPE(Z8002, z8002_device)
/* possible values for z8k_segm_mode */
@@ -680,4 +711,4 @@ extern const device_type Z8002;
#define Z8K_SEGM_MODE_SEG 1
#define Z8K_SEGM_MODE_AUTO 2
-#endif /* __Z8000_H__ */
+#endif // MAME_CPU_Z8000_Z8000_H
diff --git a/src/devices/cpu/z8000/z8000cpu.h b/src/devices/cpu/z8000/z8000cpu.h
index 21c648ecb6e..102cac41f0e 100644
--- a/src/devices/cpu/z8000/z8000cpu.h
+++ b/src/devices/cpu/z8000/z8000cpu.h
@@ -174,30 +174,3 @@
#define GET_DSP16 uint32_t dsp16 = addr_add(m_pc, (int16_t)get_operand(1))
#define GET_ADDR(o) uint32_t addr = (uint32_t)get_addr_operand(o)
#define GET_ADDR_RAW(o) uint32_t addr = (uint32_t)get_raw_addr_operand(o)
-
-
-/* structure for the opcode definition table */
-typedef void (z8002_device::*opcode_func)();
-
-struct Z8000_init {
- int beg, end, step;
- int size, cycles;
- opcode_func opcode;
- const char *dasm;
- uint32_t dasmflags;
-};
-
-/* structure for the opcode execution table / disassembler */
-struct Z8000_exec {
- opcode_func opcode;
- int cycles;
- int size;
- const char *dasm;
- uint32_t dasmflags;
-};
-
-/* opcode execution table */
-extern Z8000_exec *z8000_exec;
-
-extern void z8000_init_tables(void);
-extern void z8000_deinit_tables(void);
diff --git a/src/devices/cpu/z8000/z8000ops.hxx b/src/devices/cpu/z8000/z8000ops.hxx
index 127c9be11e9..bde18d4d70b 100644
--- a/src/devices/cpu/z8000/z8000ops.hxx
+++ b/src/devices/cpu/z8000/z8000ops.hxx
@@ -1639,7 +1639,7 @@ void z8002_device::Z0E_imm8()
{
CHECK_EXT_INSTR();
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: ext0e $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: ext0e $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -1654,7 +1654,7 @@ void z8002_device::Z0F_imm8()
{
CHECK_EXT_INSTR();
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: ext0f $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: ext0f $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -2411,7 +2411,7 @@ void z8002_device::Z36_0000_0000()
void z8002_device::Z36_imm8()
{
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: rsvd36 $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: rsvd36 $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -2449,7 +2449,7 @@ void z8002_device::Z37_ddN0_ssss_imm16()
void z8002_device::Z38_imm8()
{
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: rsvd38 $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: rsvd38 $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -4544,7 +4544,7 @@ void z8002_device::Z77_ddN0_ssss_0000_xxxx_0000_0000()
void z8002_device::Z78_imm8()
{
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: rsvd78 $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: rsvd78 $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -4620,7 +4620,7 @@ void z8002_device::Z7B_0000_0000()
else
m_pc = POPW(SP); /* get m_pc */
CHANGE_FCW(fcw); /* check for user/system mode change */
- LOG(("Z8K '%s' IRET tag $%04x, fcw $%04x, pc $%04x\n", this->tag(), tag, fcw, m_pc));
+ LOG("Z8K IRET tag $%04x, fcw $%04x, pc $%04x\n", tag, fcw, m_pc);
}
/******************************************
@@ -4736,7 +4736,7 @@ void z8002_device::Z7D_dddd_0ccc()
RW(dst) = m_nspoff;
break;
default:
- LOG(("Z8K '%s' LDCTL R%d,%d\n", tag(), dst, imm3));
+ LOG("Z8K LDCTL R%d,%d\n", dst, imm3);
}
}
@@ -4773,7 +4773,7 @@ void z8002_device::Z7D_ssss_1ccc()
m_nspoff = RW(src);
break;
default:
- LOG(("Z8K '%s' LDCTL %d,R%d\n", tag(), imm3, src));
+ LOG("Z8K LDCTL %d,R%d\n", imm3, src);
}
}
@@ -4784,7 +4784,7 @@ void z8002_device::Z7D_ssss_1ccc()
void z8002_device::Z7E_imm8()
{
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: rsvd7e $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: rsvd7e $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -5102,7 +5102,7 @@ void z8002_device::Z8E_imm8()
{
CHECK_EXT_INSTR();
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: ext8e $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: ext8e $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -5117,7 +5117,7 @@ void z8002_device::Z8F_imm8()
{
CHECK_EXT_INSTR();
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: ext8f $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: ext8f $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -5275,7 +5275,7 @@ void z8002_device::Z9C_dddd_1000()
void z8002_device::Z9D_imm8()
{
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: rsvd9d $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: rsvd9d $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -5336,7 +5336,7 @@ void z8002_device::Z9E_0000_cccc()
void z8002_device::Z9F_imm8()
{
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: rsvd9f $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: rsvd9f $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -6051,7 +6051,7 @@ void z8002_device::ZB8_ddN0_1100_0000_rrrr_ssN0_0000()
void z8002_device::ZB9_imm8()
{
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: rsvdb9 $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: rsvdb9 $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
@@ -6709,7 +6709,7 @@ void z8002_device::ZBE_aaaa_bbbb()
void z8002_device::ZBF_imm8()
{
GET_IMM8(0);
- LOG(("Z8K '%s' %04x: rsvdbf $%02x\n", tag(), m_pc, imm8));
+ LOG("Z8K %04x: rsvdbf $%02x\n", m_pc, imm8);
if (m_fcw & F_EPU) {
/* Z8001 EPU code goes here */
(void)imm8;
diff --git a/src/devices/cpu/z8000/z8000tbl.hxx b/src/devices/cpu/z8000/z8000tbl.hxx
index 39f4a3c192c..7ebbeb4d071 100644
--- a/src/devices/cpu/z8000/z8000tbl.hxx
+++ b/src/devices/cpu/z8000/z8000tbl.hxx
@@ -8,7 +8,7 @@
*
*****************************************************************************/
-static const Z8000_init table[] = {
+const z8002_device::Z8000_init z8002_device::table[] = {
{0x0000,0x000f, 1,2, 7,&z8002_device::Z00_0000_dddd_imm8, "addb %rb3,%#b3", 0},
{0x0010,0x00ff, 1,1, 7,&z8002_device::Z00_ssN0_dddd, "addb %rb3,@%rw2", 0},
{0x0100,0x010f, 1,2, 7,&z8002_device::Z01_0000_dddd_imm16, "add %rw3,%#w1", 0},
@@ -347,16 +347,16 @@ static const Z8000_init table[] = {
{0x7d01,0x7df1,16,1, 7,&z8002_device::Z7D_dddd_0ccc, "ldctl %rw2,ctrl1", 0},
{0x7d02,0x7df2,16,1, 7,&z8002_device::Z7D_dddd_0ccc, "ldctl %rw2,fcw", 0},
{0x7d03,0x7df3,16,1, 7,&z8002_device::Z7D_dddd_0ccc, "ldctl %rw2,refresh", 0},
-{0x7d04,0x7df4,16,1, 7,&z8002_device::Z7D_dddd_0ccc, "ldctl %rw2,psapseg", 0},
-{0x7d05,0x7df5,16,1, 7,&z8002_device::Z7D_dddd_0ccc, "ldctl %rw2,psapoff", 0},
+{0x7d04,0x7df4,16,1, 7,&z8002_device::Z7D_dddd_0ccc, "ldctl %rw2,psapseg", 0},
+{0x7d05,0x7df5,16,1, 7,&z8002_device::Z7D_dddd_0ccc, "ldctl %rw2,psapoff", 0},
{0x7d06,0x7df6,16,1, 7,&z8002_device::Z7D_dddd_0ccc, "ldctl %rw2,nspseg", 0},
{0x7d07,0x7df7,16,1, 7,&z8002_device::Z7D_dddd_0ccc, "ldctl %rw2,nspoff", 0},
{0x7d08,0x7df8,16,1, 7,&z8002_device::Z7D_ssss_1ccc, "ldctl ctrl0,%rw2", 0},
{0x7d09,0x7df9,16,1, 7,&z8002_device::Z7D_ssss_1ccc, "ldctl ctrl1,%rw2", 0},
{0x7d0a,0x7dfa,16,1, 7,&z8002_device::Z7D_ssss_1ccc, "ldctl fcw,%rw2", 0},
{0x7d0b,0x7dfb,16,1, 7,&z8002_device::Z7D_ssss_1ccc, "ldctl refresh,%rw2", 0},
-{0x7d0c,0x7dfc,16,1, 7,&z8002_device::Z7D_ssss_1ccc, "ldctl psapseg,%rw2", 0},
-{0x7d0d,0x7dfd,16,1, 7,&z8002_device::Z7D_ssss_1ccc, "ldctl psapoff,%rw2", 0},
+{0x7d0c,0x7dfc,16,1, 7,&z8002_device::Z7D_ssss_1ccc, "ldctl psapseg,%rw2", 0},
+{0x7d0d,0x7dfd,16,1, 7,&z8002_device::Z7D_ssss_1ccc, "ldctl psapoff,%rw2", 0},
{0x7d0e,0x7dfe,16,1, 7,&z8002_device::Z7D_ssss_1ccc, "ldctl nspseg,%rw2", 0},
{0x7d0f,0x7dff,16,1, 7,&z8002_device::Z7D_ssss_1ccc, "ldctl nspoff,%rw2", 0},
{0x7e00,0x7eff, 1,1, 10,&z8002_device::Z7E_imm8, "rsvd7e %#b1", 0},
@@ -527,17 +527,21 @@ static const Z8000_init table[] = {
{0xfd80,0xfdff, 1,1, 11,&z8002_device::ZF_dddd_1dsp7, "djnz %rw1,%d0", DASMFLAG_STEP_OVER},
{0xfe80,0xfeff, 1,1, 11,&z8002_device::ZF_dddd_1dsp7, "djnz %rw1,%d0", DASMFLAG_STEP_OVER},
{0xff80,0xffff, 1,1, 11,&z8002_device::ZF_dddd_1dsp7, "djnz %rw1,%d0", DASMFLAG_STEP_OVER},
-{0, 0, 0,0, 0,nullptr, nullptr, 0}
+{0, 0, 0,0, 0,nullptr, nullptr, 0}
};
-void z8000_init_tables(void)
+void z8002_device::init_tables()
{
+ /* already initialized? */
+ if (z8000_exec)
+ return;
+
const Z8000_init *init;
int i;
/* allocate the opcode execution and disassembler array */
- z8000_exec = global_alloc_array(Z8000_exec, 0x10000);
+ std::unique_ptr<Z8000_exec []> exec(new Z8000_exec[0x10000]);
/* set up the zero, sign, parity lookup table */
for (i = 0; i < 256; i++)
@@ -548,11 +552,11 @@ void z8000_init_tables(void)
/* first set all 64K opcodes to invalid */
for (i = 0; i < 0x10000; i++)
{
- z8000_exec[i].opcode = &z8002_device::zinvalid;
- z8000_exec[i].cycles = 4;
- z8000_exec[i].size = 1;
- z8000_exec[i].dasm = ".word %#w0";
- z8000_exec[i].dasmflags = 0;
+ exec[i].opcode = &z8002_device::zinvalid;
+ exec[i].cycles = 4;
+ exec[i].size = 1;
+ exec[i].dasm = ".word %#w0";
+ exec[i].dasmflags = 0;
}
/* now decompose the initialization table */
@@ -560,20 +564,28 @@ void z8000_init_tables(void)
{
for (i = init->beg; i <= init->end; i += init->step)
{
- if (z8000_exec[i].opcode != &z8002_device::zinvalid)
- osd_printf_error("Z8000 opcode %04x clash '%s'\n", i, z8000_exec[i].dasm);
+ if (exec[i].opcode != &z8002_device::zinvalid)
+ osd_printf_error("Z8000 opcode %04x clash '%s'\n", i, exec[i].dasm);
- z8000_exec[i].opcode = init->opcode;
- z8000_exec[i].cycles = init->cycles;
- z8000_exec[i].size = init->size;
- z8000_exec[i].dasm = init->dasm;
- z8000_exec[i].dasmflags = init->dasmflags;
+ exec[i].opcode = init->opcode;
+ exec[i].cycles = init->cycles;
+ exec[i].size = init->size;
+ exec[i].dasm = init->dasm;
+ exec[i].dasmflags = init->dasmflags;
}
}
+
+ z8000_exec = std::move(exec);
}
-void z8000_deinit_tables(void)
+void z8002_device::deinit_tables()
{
- global_free_array( z8000_exec );
z8000_exec = nullptr;
}
+
+z8002_device::Z8000_dasm z8002_device::dasm(unsigned w)
+{
+ init_tables();
+ Z8000_exec const &exec(z8000_exec[w]);
+ return Z8000_dasm{ exec.dasm, exec.dasmflags, exec.size };
+}
diff --git a/src/devices/imagedev/bitbngr.cpp b/src/devices/imagedev/bitbngr.cpp
index c1aedcc3a10..5031e0acdd3 100644
--- a/src/devices/imagedev/bitbngr.cpp
+++ b/src/devices/imagedev/bitbngr.cpp
@@ -15,14 +15,14 @@
IMPLEMENTATION
***************************************************************************/
-const device_type BITBANGER = device_creator<bitbanger_device>;
+DEFINE_DEVICE_TYPE(BITBANGER, bitbanger_device, "bitbanger", "Bitbanger")
/*-------------------------------------------------
ctor
-------------------------------------------------*/
bitbanger_device::bitbanger_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, BITBANGER, "Bitbanger", tag, owner, clock, "bitbanger", __FILE__),
+ device_t(mconfig, BITBANGER, tag, owner, clock),
device_image_interface(mconfig, *this),
m_interface(nullptr)
{
diff --git a/src/devices/imagedev/bitbngr.h b/src/devices/imagedev/bitbngr.h
index ddbff5d7c4b..ebd7d3dcc35 100644
--- a/src/devices/imagedev/bitbngr.h
+++ b/src/devices/imagedev/bitbngr.h
@@ -50,6 +50,6 @@ private:
bitbanger_image_device::static_set_interface(*device, _interface);
// device type definition
-extern const device_type BITBANGER;
+DECLARE_DEVICE_TYPE(BITBANGER, bitbanger_device)
#endif // MAME_DEVICES_IMAGEDEV_BITBNGR_H
diff --git a/src/devices/imagedev/cassette.cpp b/src/devices/imagedev/cassette.cpp
index 6054082a764..20c4b919453 100644
--- a/src/devices/imagedev/cassette.cpp
+++ b/src/devices/imagedev/cassette.cpp
@@ -17,14 +17,14 @@
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
// device type definition
-const device_type CASSETTE = device_creator<cassette_image_device>;
+DEFINE_DEVICE_TYPE(CASSETTE, cassette_image_device, "cassette_image", "Cassette")
//-------------------------------------------------
// cassette_image_device - constructor
//-------------------------------------------------
cassette_image_device::cassette_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CASSETTE, "Cassette", tag, owner, clock, "cassette_image", __FILE__),
+ : device_t(mconfig, CASSETTE, tag, owner, clock),
device_image_interface(mconfig, *this),
m_cassette(nullptr),
m_state(CASSETTE_STOPPED),
diff --git a/src/devices/imagedev/cassette.h b/src/devices/imagedev/cassette.h
index 8dd981551de..eb375f8afed 100644
--- a/src/devices/imagedev/cassette.h
+++ b/src/devices/imagedev/cassette.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef CASSETTE_H
-#define CASSETTE_H
+#ifndef MAME_DEVICES_IMAGEDEV_CASSETTE_H
+#define MAME_DEVICES_IMAGEDEV_CASSETTE_H
#include "formats/cassimg.h"
#include "softlist_dev.h"
@@ -117,7 +117,7 @@ private:
};
// device type definition
-extern const device_type CASSETTE;
+DECLARE_DEVICE_TYPE(CASSETTE, cassette_image_device)
// device iterator
typedef device_type_iterator<cassette_image_device> cassette_device_iterator;
@@ -143,4 +143,4 @@ typedef device_type_iterator<cassette_image_device> cassette_device_iterator;
#define MCFG_CASSETTE_INTERFACE(_interface) \
cassette_image_device::static_set_interface(*device, _interface);
-#endif /* CASSETTE_H */
+#endif // MAME_DEVICES_IMAGEDEV_CASSETTE_H
diff --git a/src/devices/imagedev/chd_cd.cpp b/src/devices/imagedev/chd_cd.cpp
index e3a036fd0a4..49592a33f63 100644
--- a/src/devices/imagedev/chd_cd.cpp
+++ b/src/devices/imagedev/chd_cd.cpp
@@ -9,27 +9,24 @@
*********************************************************************/
#include "emu.h"
-#include "cdrom.h"
#include "chd_cd.h"
+#include "cdrom.h"
+
// device type definition
-const device_type CDROM = device_creator<cdrom_image_device>;
+DEFINE_DEVICE_TYPE(CDROM, cdrom_image_device, "cdrom_image", "CD-ROM Image")
//-------------------------------------------------
// cdrom_image_device - constructor
//-------------------------------------------------
cdrom_image_device::cdrom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CDROM, "CD-ROM Image", tag, owner, clock, "cdrom_image", __FILE__),
- device_image_interface(mconfig, *this),
- m_cdrom_handle(nullptr),
- m_extension_list(nullptr),
- m_interface(nullptr)
+ : cdrom_image_device(mconfig, CDROM, tag, owner, clock)
{
}
-cdrom_image_device::cdrom_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+cdrom_image_device::cdrom_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_image_interface(mconfig, *this),
m_cdrom_handle(nullptr),
m_extension_list(nullptr),
diff --git a/src/devices/imagedev/chd_cd.h b/src/devices/imagedev/chd_cd.h
index 9bf63749b58..e257ff67d3f 100644
--- a/src/devices/imagedev/chd_cd.h
+++ b/src/devices/imagedev/chd_cd.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef CHD_CD_H
-#define CHD_CD_H
+#ifndef MAME_DEVICES_IMAGEDEV_CHD_CD_H
+#define MAME_DEVICES_IMAGEDEV_CHD_CD_H
+
+#pragma once
#include "cdrom.h"
#include "softlist_dev.h"
@@ -26,7 +28,6 @@ class cdrom_image_device : public device_t,
public:
// construction/destruction
cdrom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- cdrom_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual ~cdrom_image_device();
static void static_set_interface(device_t &device, const char *_interface) { downcast<cdrom_image_device &>(device).m_interface = _interface; }
@@ -48,7 +49,10 @@ public:
// specific implementation
cdrom_file *get_cdrom_file() { return m_cdrom_handle; }
+
protected:
+ cdrom_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_config_complete() override;
virtual void device_start() override;
@@ -61,7 +65,7 @@ protected:
};
// device type definition
-extern const device_type CDROM;
+DECLARE_DEVICE_TYPE(CDROM, cdrom_image_device)
/***************************************************************************
DEVICE CONFIGURATION MACROS
@@ -74,4 +78,4 @@ extern const device_type CDROM;
#define MCFG_CDROM_INTERFACE(_interface) \
cdrom_image_device::static_set_interface(*device, _interface);
-#endif /* CHD_CD_H */
+#endif // MAME_DEVICES_IMAGEDEV_CHD_CD_H
diff --git a/src/devices/imagedev/diablo.cpp b/src/devices/imagedev/diablo.cpp
index 43b79c5a373..1291e83c01b 100644
--- a/src/devices/imagedev/diablo.cpp
+++ b/src/devices/imagedev/diablo.cpp
@@ -5,9 +5,10 @@
**********************************************************/
#include "emu.h"
+#include "diablo.h"
+
#include "emuopts.h"
#include "harddisk.h"
-#include "diablo.h"
OPTION_GUIDE_START(dsk_option_guide)
@@ -23,14 +24,14 @@ static const char *dsk_option_spec =
// device type definition
-const device_type DIABLO = device_creator<diablo_image_device>;
+DEFINE_DEVICE_TYPE(DIABLO, diablo_image_device, "diablo_image", "Diablo")
//-------------------------------------------------
// diablo_image_device - constructor
//-------------------------------------------------
diablo_image_device::diablo_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DIABLO, "Diablo", tag, owner, clock, "diablo_image", __FILE__),
+ : device_t(mconfig, DIABLO, tag, owner, clock),
device_image_interface(mconfig, *this),
m_chd(nullptr),
m_hard_disk_handle(nullptr),
diff --git a/src/devices/imagedev/diablo.h b/src/devices/imagedev/diablo.h
index e19cc598fa0..087a097ed2a 100644
--- a/src/devices/imagedev/diablo.h
+++ b/src/devices/imagedev/diablo.h
@@ -4,13 +4,15 @@
* DIABLO drive image to hard disk interface
**********************************************************/
-#ifndef _IMAGEDEV_DIABLO_H_
-#define _IMAGEDEV_DIABLO_H_
+#ifndef MAME_DEVICES_IMAGEDEV_DIABLO_H
+#define MAME_DEVICES_IMAGEDEV_DIABLO_H
+
+#pragma once
#include "harddisk.h"
#include "softlist_dev.h"
-#define DIABLO_TAG(_id) "diablo"#_id
+#define DIABLO_TAG(id) "diablo"#id
/***************************************************************************
TYPE DEFINITIONS
@@ -18,8 +20,7 @@
// ======================> diablo_image_device
-class diablo_image_device : public device_t,
- public device_image_interface
+class diablo_image_device : public device_t, public device_image_interface
{
public:
// construction/destruction
@@ -70,7 +71,7 @@ protected:
};
// device type definition
-extern const device_type DIABLO;
+DECLARE_DEVICE_TYPE(DIABLO, diablo_image_device)
/***************************************************************************
DEVICE CONFIGURATION MACROS
@@ -88,4 +89,4 @@ extern const device_type DIABLO;
#define MCFG_DIABLO_INTERFACE(_interface) \
diablo_image_device::static_set_interface(*device, _interface);
-#endif /* _IMAGEDEV_DIABLO_H_ */
+#endif // MAME_DEVICES_IMAGEDEV_DIABLO_H
diff --git a/src/devices/imagedev/flopdrv.cpp b/src/devices/imagedev/flopdrv.cpp
index ed99bcba329..38f21d7dd76 100644
--- a/src/devices/imagedev/flopdrv.cpp
+++ b/src/devices/imagedev/flopdrv.cpp
@@ -694,48 +694,19 @@ READ_LINE_MEMBER( legacy_floppy_image_device::floppy_ready_r )
}
// device type definition
-const device_type LEGACY_FLOPPY = device_creator<legacy_floppy_image_device>;
+DEFINE_DEVICE_TYPE(LEGACY_FLOPPY, legacy_floppy_image_device, "legacy_floppy_image", "Floppy Disk")
//-------------------------------------------------
// legacy_floppy_image_device - constructor
//-------------------------------------------------
legacy_floppy_image_device::legacy_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, LEGACY_FLOPPY, "Floppy Disk", tag, owner, clock, "legacy_floppy_image", __FILE__),
- device_image_interface(mconfig, *this),
- m_out_idx_func(*this),
- m_drtn(0),
- m_stp(0),
- m_wtg(0),
- m_mon(0),
- m_idx(0),
- m_tk00(0),
- m_wpt(0),
- m_rdy(0),
- m_dskchg(0),
- m_drive_id(0),
- m_active(0),
- m_config(nullptr),
- m_flags(0),
- m_max_track(0),
- m_num_sides(0),
- m_current_track(0),
- m_index_timer(nullptr),
- m_index_pulse_callback(nullptr),
- m_rpm(0.0f),
- m_id_index(0),
- m_controller(nullptr),
- m_floppy(nullptr),
- m_track(0),
- m_load_proc(nullptr),
- m_unload_proc(nullptr),
- m_floppy_drive_type(0)
+ : legacy_floppy_image_device(mconfig, LEGACY_FLOPPY, tag, owner, clock)
{
- memset(&m_extension_list,0,sizeof(m_extension_list));
}
-legacy_floppy_image_device::legacy_floppy_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+legacy_floppy_image_device::legacy_floppy_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_image_interface(mconfig, *this),
m_out_idx_func(*this),
m_drtn(0),
diff --git a/src/devices/imagedev/flopdrv.h b/src/devices/imagedev/flopdrv.h
index ca9f469edb6..da4eb864900 100644
--- a/src/devices/imagedev/flopdrv.h
+++ b/src/devices/imagedev/flopdrv.h
@@ -3,8 +3,10 @@
/* flopdrv provides simple emulation of a disc drive */
/* the 8271, upd765 and wd179x use this */
-#ifndef __FLOPDRV_H__
-#define __FLOPDRV_H__
+#ifndef MAME_DEVICES_IMAGEDV_FLOPDRV_H
+#define MAME_DEVICES_IMAGEDV_FLOPDRV_H
+
+#pragma once
#include "formats/flopimg.h"
#include "softlist_dev.h"
@@ -94,7 +96,6 @@ class legacy_floppy_image_device : public device_t,
public:
// construction/destruction
legacy_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- legacy_floppy_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
~legacy_floppy_image_device();
static void static_set_floppy_config(device_t &device, const floppy_interface *config) { downcast<legacy_floppy_image_device &>(device).m_config = config; }
@@ -167,6 +168,8 @@ private:
TIMER_CALLBACK_MEMBER( set_wpt );
protected:
+ legacy_floppy_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device overrides
virtual void device_config_complete() override;
virtual void device_start() override;
@@ -224,7 +227,7 @@ protected:
};
// device type definition
-extern const device_type LEGACY_FLOPPY;
+DECLARE_DEVICE_TYPE(LEGACY_FLOPPY, legacy_floppy_image_device)
@@ -267,4 +270,4 @@ int floppy_get_count(running_machine &machine);
MCFG_DEVICE_ADD(FLOPPY_1, LEGACY_FLOPPY, 0) \
MCFG_LEGACY_FLOPPY_CONFIG(_config)
-#endif /* __FLOPDRV_H__ */
+#endif // MAME_DEVICES_IMAGEDV_FLOPDRV_H
diff --git a/src/devices/imagedev/floppy.cpp b/src/devices/imagedev/floppy.cpp
index 09c9d89429e..cacd4b6bda5 100644
--- a/src/devices/imagedev/floppy.cpp
+++ b/src/devices/imagedev/floppy.cpp
@@ -26,98 +26,94 @@
#define FLOPSND_TAG "floppysound"
// device type definition
-const device_type FLOPPY_CONNECTOR = device_creator<floppy_connector>;
+DEFINE_DEVICE_TYPE(FLOPPY_CONNECTOR, floppy_connector, "floppy_connector", "Floppy drive connector abstraction")
// generic 3" drives
-const device_type FLOPPY_3_SSDD = device_creator<floppy_3_ssdd>;
-const device_type FLOPPY_3_DSDD = device_creator<floppy_3_dsdd>;
+DEFINE_DEVICE_TYPE(FLOPPY_3_SSDD, floppy_3_ssdd, "floppy_3_ssdd", "3\" single-sided floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_3_DSDD, floppy_3_dsdd, "floppy_3_dsdd", "3\" double-sided floppy drive")
// generic 3.5" drives
-const device_type FLOPPY_35_SSDD = device_creator<floppy_35_ssdd>;
-const device_type FLOPPY_35_DD = device_creator<floppy_35_dd>;
-const device_type FLOPPY_35_HD = device_creator<floppy_35_hd>;
-const device_type FLOPPY_35_ED = device_creator<floppy_35_ed>;
+DEFINE_DEVICE_TYPE(FLOPPY_35_SSDD, floppy_35_ssdd, "floppy_35_ssdd", "3.5\" single-sided double density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_35_DD, floppy_35_dd, "floppy_35_dd", "3.5\" double density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_35_HD, floppy_35_hd, "floppy_35_hd", "3.5\" high density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_35_ED, floppy_35_ed, "floppy_35_ed", "3.5\" extended density floppy drive")
// generic 5.25" drives
-const device_type FLOPPY_525_SSSD_35T = device_creator<floppy_525_sssd_35t>;
-const device_type FLOPPY_525_SD_35T = device_creator<floppy_525_sd_35t>;
-const device_type FLOPPY_525_SSSD = device_creator<floppy_525_sssd>;
-const device_type FLOPPY_525_SD = device_creator<floppy_525_sd>;
-const device_type FLOPPY_525_SSDD = device_creator<floppy_525_ssdd>;
-const device_type FLOPPY_525_DD = device_creator<floppy_525_dd>;
-const device_type FLOPPY_525_SSQD = device_creator<floppy_525_ssqd>;
-const device_type FLOPPY_525_QD = device_creator<floppy_525_qd>;
-const device_type FLOPPY_525_HD = device_creator<floppy_525_hd>;
+DEFINE_DEVICE_TYPE(FLOPPY_525_SSSD_35T, floppy_525_sssd_35t, "floppy_525_sssd_35t", "5.25\" single-sided single density 35-track floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_525_SD_35T, floppy_525_sd_35t, "floppy_525_sd_35t", "5.25\" double-sided single density 35-track floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_525_SSSD, floppy_525_sssd, "floppy_525_sssd", "5.25\" single-sided single density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_525_SD, floppy_525_sd, "floppy_525_sd", "5.25\" single density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_525_SSDD, floppy_525_ssdd, "floppy_525_ssdd", "5.25\" single-sided double density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_525_DD, floppy_525_dd, "floppy_525_dd", "5.25\" double density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_525_SSQD, floppy_525_ssqd, "floppy_525_ssqd", "5.25\" single-sided quad density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_525_QD, floppy_525_qd, "floppy_525_qd", "5.25\" quad density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_525_HD, floppy_525_hd, "floppy_525_hd", "5.25\" high density floppy drive")
// generic 8" drives
-const device_type FLOPPY_8_SSSD = device_creator<floppy_8_sssd>;
-const device_type FLOPPY_8_DSSD = device_creator<floppy_8_dssd>;
-const device_type FLOPPY_8_SSDD = device_creator<floppy_8_ssdd>;
-const device_type FLOPPY_8_DSDD = device_creator<floppy_8_dsdd>;
+DEFINE_DEVICE_TYPE(FLOPPY_8_SSSD, floppy_8_sssd, "floppy_8_sssd", "8\" single-sided single density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_8_DSSD, floppy_8_dssd, "floppy_8_dssd", "8\" double-sided single density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_8_SSDD, floppy_8_ssdd, "floppy_8_ssdd", "8\" single-sided double density floppy drive")
+DEFINE_DEVICE_TYPE(FLOPPY_8_DSDD, floppy_8_dsdd, "floppy_8_dsdd", "8\" double-sided double density floppy drive")
// Epson 3.5" drives
#if 0
-const device_type EPSON_SMD_110 = device_creator<epson_smd_110>;
-const device_type EPSON_SMD_120 = device_creator<epson_smd_120>;
-const device_type EPSON_SMD_125 = device_creator<epson_smd_125>;
-const device_type EPSON_SMD_130 = device_creator<epson_smd_130>;
-const device_type EPSON_SMD_140 = device_creator<epson_smd_140>;
-const device_type EPSON_SMD_150 = device_creator<epson_smd_150>;
-const device_type EPSON_SMD_160 = device_creator<epson_smd_160>;
+DEFINE_DEVICE_TYPE(EPSON_SMD_110, epson_smd_110, "epson_smd_110", "EPSON SMD-110 Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_120, epson_smd_120, "epson_smd_120", "EPSON SMD-120 Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_125, epson_smd_125, "epson_smd_125", "EPSON SMD-125 Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_130, epson_smd_130, "epson_smd_130", "EPSON SMD-130 Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_140, epson_smd_140, "epson_smd_140", "EPSON SMD-140 Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_150, epson_smd_150, "epson_smd_150", "EPSON SMD-150 Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_160, epson_smd_160, "epson_smd_160", "EPSON SMD-160 Floppy Disk Drive")
#endif
-const device_type EPSON_SMD_165 = device_creator<epson_smd_165>;
+DEFINE_DEVICE_TYPE(EPSON_SMD_165, epson_smd_165, "epson_smd_165", "EPSON SMD-165 Floppy Disk Drive")
#if 0
-const device_type EPSON_SMD_170 = device_creator<epson_smd_170>;
-const device_type EPSON_SMD_180 = device_creator<epson_smd_180>;
-const device_type EPSON_SMD_240L = device_creator<epson_smd_240l>;
-const device_type EPSON_SMD_280HL = device_creator<epson_smd_280hl>;
-const device_type EPSON_SMD_440L = device_creator<epson_smd_440l>;
-const device_type EPSON_SMD_449L = device_creator<epson_smd_449l>;
-const device_type EPSON_SMD_480LM = device_creator<epson_smd_480lm>;
-const device_type EPSON_SMD_489M = device_creator<epson_smd_489m>;
+DEFINE_DEVICE_TYPE(EPSON_SMD_170, epson_smd_170, "epson_smd_170", "EPSON SMD-170 Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_180, epson_smd_180, "epson_smd_180", "EPSON SMD-180 Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_240L, epson_smd_240l, "epson_smd_240l", "EPSON SMD-240L Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_280HL, epson_smd_280hl, "epson_smd_280hl", "EPSON SMD-280HL Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_440L, epson_smd_440l, "epson_smd_440l", "EPSON SMD-440L Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_449L, epson_smd_449l, "epson_smd_449l", "EPSON SMD-449L Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_480LM, epson_smd_480lm, "epson_smd_480lm", "EPSON SMD-480LM Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SMD_489M, epson_smd_489m, "epson_smd_489m", "EPSON SMD-489M Floppy Disk Drive")
#endif
// Epson 5.25" drives
#if 0
-const device_type EPSON_SD_311 = device_creator<epson_sd_311>;
+DEFINE_DEVICE_TYPE(EPSON_SD_311, epson_sd_311, "epson_sd_311", "EPSON SD-311 Mini-Floppy Disk Drive")
#endif
-const device_type EPSON_SD_320 = device_creator<epson_sd_320>;
-const device_type EPSON_SD_321 = device_creator<epson_sd_321>;
+DEFINE_DEVICE_TYPE(EPSON_SD_320, epson_sd_320, "epson_sd_320", "EPSON SD-320 Mini-Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SD_321, epson_sd_321, "epson_sd_321", "EPSON SD-321 Mini-Floppy Disk Drive")
#if 0
-const device_type EPSON_SD_521L = device_creator<epson_sd_531l>;
-const device_type EPSON_SD_525 = device_creator<epson_sd_525>;
-const device_type EPSON_SD_543 = device_creator<epson_sd_543>;
-const device_type EPSON_SD_545 = device_creator<epson_sd_545>;
-const device_type EPSON_SD_560 = device_creator<epson_sd_560>;
-const device_type EPSON_SD_580L = device_creator<epson_sd_580l>;
-const device_type EPSON_SD_581L = device_creator<epson_sd_581l>;
-const device_type EPSON_SD_621L = device_creator<epson_sd_621l>;
-const device_type EPSON_SD_680L = device_creator<epson_sd_680l>;
+DEFINE_DEVICE_TYPE(EPSON_SD_521L, epson_sd_531l, "epson_sd_531l", "EPSON SD-531L Mini-Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SD_525, epson_sd_525, "epson_sd_525", "EPSON SD-525 Mini-Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SD_543, epson_sd_543, "epson_sd_543", "EPSON SD-543 Mini-Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SD_545, epson_sd_545, "epson_sd_545", "EPSON SD-545 Mini-Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SD_560, epson_sd_560, "epson_sd_560", "EPSON SD-560 Mini-Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SD_580L, epson_sd_580l, "epson_sd_580l", "EPSON SD-580L Mini-Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SD_581L, epson_sd_581l, "epson_sd_581l", "EPSON SD-581L Mini-Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SD_621L, epson_sd_621l, "epson_sd_621l", "EPSON SD-621L Mini-Floppy Disk Drive")
+DEFINE_DEVICE_TYPE(EPSON_SD_680L, epson_sd_680l, "epson_sd_680l", "EPSON SD-680L Mini-Floppy Disk Drive")
#endif
// Sony 3.5" drives
-const device_type SONY_OA_D31V = device_creator<sony_oa_d31v>;
-const device_type SONY_OA_D32W = device_creator<sony_oa_d32w>;
-const device_type SONY_OA_D32V = device_creator<sony_oa_d32v>;
+DEFINE_DEVICE_TYPE(SONY_OA_D31V, sony_oa_d31v, "sony_oa_d31v", "Sony OA-D31V Micro Floppydisk Drive")
+DEFINE_DEVICE_TYPE(SONY_OA_D32W, sony_oa_d32w, "sony_oa_d32w", "Sony OA-D32W Micro Floppydisk Drive")
+DEFINE_DEVICE_TYPE(SONY_OA_D32V, sony_oa_d32v, "sony_oa_d32v", "Sony OA-D32V Micro Floppydisk Drive")
// TEAC 5.25" drives
#if 0
-const device_type TEAC_FD_55A = device_creator<teac_fd_55a>;
-const device_type TEAC_FD_55B = device_creator<teac_fd_55b>;
+DEFINE_DEVICE_TYPE(TEAC_FD_55A, teac_fd_55a, "teac_fd_55a", "TEAC FD-55A FDD")
+DEFINE_DEVICE_TYPE(TEAC_FD_55B, teac_fd_55b, "teac_fd_55b", "TEAC FD-55B FDD")
#endif
-const device_type TEAC_FD_55E = device_creator<teac_fd_55e>;
-const device_type TEAC_FD_55F = device_creator<teac_fd_55f>;
-const device_type TEAC_FD_55G = device_creator<teac_fd_55g>;
+DEFINE_DEVICE_TYPE(TEAC_FD_55E, teac_fd_55e, "teac_fd_55e", "TEAC FD-55E FDD")
+DEFINE_DEVICE_TYPE(TEAC_FD_55F, teac_fd_55f, "teac_fd_55f", "TEAC FD-55F FDD")
+DEFINE_DEVICE_TYPE(TEAC_FD_55G, teac_fd_55g, "teac_fd_55g", "TEAC FD-55G FDD")
// ALPS 5.25" drives
-const device_type ALPS_3255190x = device_creator<alps_3255190x>;
+DEFINE_DEVICE_TYPE(ALPS_3255190X, alps_3255190x, "alps_3255190x", "ALPS 32551901/32551902 Floppy Drive")
// IBM 8" drives
-const device_type IBM_6360 = device_creator<ibm_6360>;
-
-
-template class device_finder<floppy_connector, false>;
-template class device_finder<floppy_connector, true>;
+DEFINE_DEVICE_TYPE(IBM_6360, ibm_6360, "ibm_6360", "IBM 6360 8\" single-sided single density floppy drive")
const floppy_format_type floppy_image_device::default_floppy_formats[] = {
@@ -134,7 +130,7 @@ const floppy_format_type floppy_image_device::default_floppy_formats[] = {
};
floppy_connector::floppy_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, FLOPPY_CONNECTOR, "Floppy drive connector abstraction", tag, owner, clock, "floppy_connector", __FILE__),
+ device_t(mconfig, FLOPPY_CONNECTOR, tag, owner, clock),
device_slot_interface(mconfig, *this),
formats(nullptr),
m_enable_sound(false)
@@ -173,8 +169,8 @@ floppy_image_device *floppy_connector::get_device()
// floppy_image_device - constructor
//-------------------------------------------------
-floppy_image_device::floppy_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+floppy_image_device::floppy_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_image_interface(mconfig, *this),
device_slot_card_interface(mconfig, *this),
input_format(nullptr),
@@ -1044,7 +1040,7 @@ static const char *const floppy525_sample_names[] =
};
floppy_sound_device::floppy_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : samples_device(mconfig, FLOPPYSOUND, "Floppy sound", tag, owner, clock, "flopsnd", __FILE__),
+ : samples_device(mconfig, FLOPPYSOUND, tag, owner, clock),
m_sound(nullptr),
m_step_base(0),
m_spin_samples(0),
@@ -1352,7 +1348,7 @@ machine_config_constructor floppy_image_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME( floppy_img );
}
-const device_type FLOPPYSOUND = device_creator<floppy_sound_device>;
+DEFINE_DEVICE_TYPE(FLOPPYSOUND, floppy_sound_device, "flopsnd", "Floppy sound")
//**************************************************************************
@@ -1364,7 +1360,7 @@ const device_type FLOPPYSOUND = device_creator<floppy_sound_device>;
//-------------------------------------------------
floppy_3_ssdd::floppy_3_ssdd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_3_SSDD, "3\" single sided floppy drive", tag, owner, clock, "floppy_3_ssdd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_3_SSDD, tag, owner, clock)
{
}
@@ -1391,7 +1387,7 @@ void floppy_3_ssdd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_3_dsdd::floppy_3_dsdd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_3_DSDD, "3\" double sided floppy drive", tag, owner, clock, "floppy_3_dsdd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_3_DSDD, tag, owner, clock)
{
}
@@ -1419,7 +1415,7 @@ void floppy_3_dsdd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_35_ssdd::floppy_35_ssdd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_35_SSDD, "3.5\" single-sided double density floppy drive", tag, owner, clock, "floppy_35_ssdd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_35_SSDD, tag, owner, clock)
{
}
@@ -1447,7 +1443,7 @@ void floppy_35_ssdd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_35_dd::floppy_35_dd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_35_DD, "3.5\" double density floppy drive", tag, owner, clock, "floppy_35_dd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_35_DD, tag, owner, clock)
{
}
@@ -1476,7 +1472,7 @@ void floppy_35_dd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_35_hd::floppy_35_hd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_35_HD, "3.5\" high density floppy drive", tag, owner, clock, "floppy_35_hd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_35_HD, tag, owner, clock)
{
}
@@ -1506,7 +1502,7 @@ void floppy_35_hd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_35_ed::floppy_35_ed(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_35_ED, "3.5\" extended density floppy drive", tag, owner, clock, "floppy_35_ed", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_35_ED, tag, owner, clock)
{
}
@@ -1537,7 +1533,7 @@ void floppy_35_ed::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_525_sssd_35t::floppy_525_sssd_35t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_525_SSSD_35T, "5.25\" single-sided single density 35-track floppy drive", tag, owner, clock, "floppy_525_sssd_35t", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_525_SSSD_35T, tag, owner, clock)
{
}
@@ -1564,7 +1560,7 @@ void floppy_525_sssd_35t::handled_variants(uint32_t *variants, int &var_count) c
//-------------------------------------------------
floppy_525_sd_35t::floppy_525_sd_35t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_525_SD_35T, "5.25\" single density 35-track floppy drive", tag, owner, clock, "floppy_525_sd_35t", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_525_SD_35T, tag, owner, clock)
{
}
@@ -1591,7 +1587,7 @@ void floppy_525_sd_35t::handled_variants(uint32_t *variants, int &var_count) con
//-------------------------------------------------
floppy_525_sssd::floppy_525_sssd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_525_SSSD, "5.25\" single-sided single density floppy drive", tag, owner, clock, "floppy_525_sssd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_525_SSSD, tag, owner, clock)
{
}
@@ -1618,7 +1614,7 @@ void floppy_525_sssd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_525_sd::floppy_525_sd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_525_SD, "5.25\" single density floppy drive", tag, owner, clock, "floppy_525_sd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_525_SD, tag, owner, clock)
{
}
@@ -1645,7 +1641,7 @@ void floppy_525_sd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_525_ssdd::floppy_525_ssdd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_525_SSDD, "5.25\" single-sided double density floppy drive", tag, owner, clock, "floppy_525_ssdd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_525_SSDD, tag, owner, clock)
{
}
@@ -1673,7 +1669,7 @@ void floppy_525_ssdd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_525_dd::floppy_525_dd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_525_DD, "5.25\" double density floppy drive", tag, owner, clock, "floppy_525_dd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_525_DD, tag, owner, clock)
{
}
@@ -1702,7 +1698,7 @@ void floppy_525_dd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_525_ssqd::floppy_525_ssqd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_525_SSQD, "5.25\" single-sided quad density floppy drive", tag, owner, clock, "floppy_525_ssqd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_525_SSQD, tag, owner, clock)
{
}
@@ -1731,7 +1727,7 @@ void floppy_525_ssqd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_525_qd::floppy_525_qd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_525_QD, "5.25\" quad density floppy drive", tag, owner, clock, "floppy_525_qd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_525_QD, tag, owner, clock)
{
}
@@ -1763,7 +1759,7 @@ void floppy_525_qd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_525_hd::floppy_525_hd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_525_HD, "5.25\" high density floppy drive", tag, owner, clock, "floppy_525_hd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_525_HD, tag, owner, clock)
{
}
@@ -1795,7 +1791,7 @@ void floppy_525_hd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_8_sssd::floppy_8_sssd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_8_SSSD, "8\" single density single sided floppy drive", tag, owner, clock, "floppy_8_sssd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_8_SSSD, tag, owner, clock)
{
}
@@ -1823,7 +1819,7 @@ void floppy_8_sssd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_8_dssd::floppy_8_dssd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_8_DSSD, "8\" single density double sided floppy drive", tag, owner, clock, "floppy_8_dssd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_8_DSSD, tag, owner, clock)
{
}
@@ -1852,7 +1848,7 @@ void floppy_8_dssd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_8_ssdd::floppy_8_ssdd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_8_SSDD, "8\" double density single sided floppy drive", tag, owner, clock, "floppy_8_ssdd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_8_SSDD, tag, owner, clock)
{
}
@@ -1881,7 +1877,7 @@ void floppy_8_ssdd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
floppy_8_dsdd::floppy_8_dsdd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, FLOPPY_8_DSDD, "8\" double density double sided floppy drive", tag, owner, clock, "floppy_8_dsdd", __FILE__)
+ floppy_image_device(mconfig, FLOPPY_8_DSDD, tag, owner, clock)
{
}
@@ -1922,7 +1918,7 @@ void floppy_8_dsdd::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
epson_smd_165::epson_smd_165(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, EPSON_SMD_165, "EPSON SMD-165 Floppy Disk Drive", tag, owner, clock, "epson_smd_165", __FILE__)
+ floppy_image_device(mconfig, EPSON_SMD_165, tag, owner, clock)
{
}
@@ -1973,7 +1969,7 @@ void epson_smd_165::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
epson_sd_320::epson_sd_320(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, EPSON_SD_320, "EPSON SD-320 Mini-Floppy Disk Drive", tag, owner, clock, "epson_sd_320", __FILE__)
+ floppy_image_device(mconfig, EPSON_SD_320, tag, owner, clock)
{
}
@@ -2005,7 +2001,7 @@ void epson_sd_320::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
epson_sd_321::epson_sd_321(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, EPSON_SD_321, "EPSON SD-321 Mini-Floppy Disk Drive", tag, owner, clock, "epson_sd_321", __FILE__)
+ floppy_image_device(mconfig, EPSON_SD_321, tag, owner, clock)
{
}
@@ -2040,7 +2036,7 @@ void epson_sd_321::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
sony_oa_d31v::sony_oa_d31v(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, SONY_OA_D31V, "Sony OA-D31V Micro Floppydisk Drive", tag, owner, clock, "sony_oa_d31v", __FILE__)
+ floppy_image_device(mconfig, SONY_OA_D31V, tag, owner, clock)
{
}
@@ -2076,7 +2072,7 @@ void sony_oa_d31v::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
sony_oa_d32w::sony_oa_d32w(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, SONY_OA_D32W, "Sony OA-D32W Micro Floppydisk Drive", tag, owner, clock, "sony_oa_d32w", __FILE__)
+ floppy_image_device(mconfig, SONY_OA_D32W, tag, owner, clock)
{
}
@@ -2113,7 +2109,7 @@ void sony_oa_d32w::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
sony_oa_d32v::sony_oa_d32v(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, SONY_OA_D32V, "Sony OA-D32V Micro Floppydisk Drive", tag, owner, clock, "sony_oa_d32v", __FILE__)
+ floppy_image_device(mconfig, SONY_OA_D32V, tag, owner, clock)
{
}
@@ -2148,7 +2144,7 @@ void sony_oa_d32v::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
teac_fd_55e::teac_fd_55e(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, TEAC_FD_55E, "TEAC FD-55E FDD", tag, owner, clock, "teac_fd_55e", __FILE__)
+ floppy_image_device(mconfig, TEAC_FD_55E, tag, owner, clock)
{
}
@@ -2183,7 +2179,7 @@ void teac_fd_55e::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
teac_fd_55f::teac_fd_55f(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, TEAC_FD_55F, "TEAC FD-55F FDD", tag, owner, clock, "teac_fd_55f", __FILE__)
+ floppy_image_device(mconfig, TEAC_FD_55F, tag, owner, clock)
{
}
@@ -2221,7 +2217,7 @@ void teac_fd_55f::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
teac_fd_55g::teac_fd_55g(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, TEAC_FD_55G, "TEAC FD-55G FDD", tag, owner, clock, "teac_fd_55g", __FILE__)
+ floppy_image_device(mconfig, TEAC_FD_55G, tag, owner, clock)
{
}
@@ -2255,7 +2251,7 @@ void teac_fd_55g::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
alps_3255190x::alps_3255190x(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, ALPS_3255190x, "ALPS 32551901/32551902 Floppy Drive", tag, owner, clock, "alps_3255190x", __FILE__)
+ floppy_image_device(mconfig, ALPS_3255190X, tag, owner, clock)
{
}
@@ -2283,7 +2279,7 @@ void alps_3255190x::handled_variants(uint32_t *variants, int &var_count) const
//-------------------------------------------------
ibm_6360::ibm_6360(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- floppy_image_device(mconfig, IBM_6360, "IBM 6360 8\" single density single sided floppy drive", tag, owner, clock, "ibm_6360", __FILE__)
+ floppy_image_device(mconfig, IBM_6360, tag, owner, clock)
{
}
diff --git a/src/devices/imagedev/floppy.h b/src/devices/imagedev/floppy.h
index 8df3ed191d7..bc84ad3ab5e 100644
--- a/src/devices/imagedev/floppy.h
+++ b/src/devices/imagedev/floppy.h
@@ -6,8 +6,10 @@
*********************************************************************/
-#ifndef FLOPPY_H
-#define FLOPPY_H
+#ifndef MAME_DEVICES_IMAGEDEV_FLOPPY_H
+#define MAME_DEVICES_IMAGEDEV_FLOPPY_H
+
+#pragma once
#include "formats/flopimg.h"
#include "formats/d88_dsk.h"
@@ -71,7 +73,6 @@ public:
typedef delegate<void (floppy_image_device *, int)> wpt_cb;
// construction/destruction
- floppy_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual ~floppy_image_device();
virtual void handled_variants(uint32_t *variants, int &var_count) const = 0;
@@ -141,6 +142,8 @@ public:
void enable_sound(bool doit) { m_make_sound = doit; }
protected:
+ floppy_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -207,49 +210,50 @@ protected:
floppy_sound_device* m_sound_out;
};
-#define DECLARE_FLOPPY_IMAGE_DEVICE(_name, _interface) \
- class _name : public floppy_image_device { \
+#define DECLARE_FLOPPY_IMAGE_DEVICE(Type, Name, Interface) \
+ class Name : public floppy_image_device { \
public: \
- _name(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); \
- virtual ~_name(); \
+ Name(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); \
+ virtual ~Name(); \
virtual void handled_variants(uint32_t *variants, int &var_count) const override; \
- virtual const char *image_interface() const override { return _interface; } \
+ virtual const char *image_interface() const override { return Interface; } \
protected: \
virtual void setup_characteristics() override; \
- };
-
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_3_ssdd, "floppy_3")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_3_dsdd, "floppy_3")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_35_ssdd, "floppy_3_5")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_35_dd, "floppy_3_5")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_35_hd, "floppy_3_5")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_35_ed, "floppy_3_5")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_525_sssd_35t, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_525_sd_35t, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_525_sssd, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_525_sd, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_525_ssdd, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_525_dd, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_525_ssqd, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_525_qd, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_525_hd, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_8_sssd, "floppy_8")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_8_dssd, "floppy_8")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_8_ssdd, "floppy_8")
-DECLARE_FLOPPY_IMAGE_DEVICE(floppy_8_dsdd, "floppy_8")
-DECLARE_FLOPPY_IMAGE_DEVICE(epson_smd_165, "floppy_3_5")
-DECLARE_FLOPPY_IMAGE_DEVICE(epson_sd_320, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(epson_sd_321, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(sony_oa_d31v, "floppy_3_5")
-DECLARE_FLOPPY_IMAGE_DEVICE(sony_oa_d32w, "floppy_3_5")
-DECLARE_FLOPPY_IMAGE_DEVICE(sony_oa_d32v, "floppy_3_5")
-DECLARE_FLOPPY_IMAGE_DEVICE(teac_fd_55e, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(teac_fd_55f, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(teac_fd_55g, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(alps_3255190x, "floppy_5_25")
-DECLARE_FLOPPY_IMAGE_DEVICE(ibm_6360, "floppy_8")
-
-extern const device_type FLOPPYSOUND;
+ }; \
+ DECLARE_DEVICE_TYPE(Type, Name)
+
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_3_SSDD, floppy_3_ssdd, "floppy_3")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_3_DSDD, floppy_3_dsdd, "floppy_3")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_35_SSDD, floppy_35_ssdd, "floppy_3_5")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_35_DD, floppy_35_dd, "floppy_3_5")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_35_HD, floppy_35_hd, "floppy_3_5")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_35_ED, floppy_35_ed, "floppy_3_5")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_525_SSSD_35T, floppy_525_sssd_35t, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_525_SD_35T, floppy_525_sd_35t, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_525_SSSD, floppy_525_sssd, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_525_SD, floppy_525_sd, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_525_SSDD, floppy_525_ssdd, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_525_DD, floppy_525_dd, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_525_SSQD, floppy_525_ssqd, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_525_QD, floppy_525_qd, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_525_HD, floppy_525_hd, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_8_SSSD, floppy_8_sssd, "floppy_8")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_8_DSSD, floppy_8_dssd, "floppy_8")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_8_SSDD, floppy_8_ssdd, "floppy_8")
+DECLARE_FLOPPY_IMAGE_DEVICE(FLOPPY_8_DSDD, floppy_8_dsdd, "floppy_8")
+DECLARE_FLOPPY_IMAGE_DEVICE(EPSON_SMD_165, epson_smd_165, "floppy_3_5")
+DECLARE_FLOPPY_IMAGE_DEVICE(EPSON_SD_320, epson_sd_320, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(EPSON_SD_321, epson_sd_321, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(SONY_OA_D31V, sony_oa_d31v, "floppy_3_5")
+DECLARE_FLOPPY_IMAGE_DEVICE(SONY_OA_D32W, sony_oa_d32w, "floppy_3_5")
+DECLARE_FLOPPY_IMAGE_DEVICE(SONY_OA_D32V, sony_oa_d32v, "floppy_3_5")
+DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_55E, teac_fd_55e, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_55F, teac_fd_55f, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_55G, teac_fd_55g, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(ALPS_3255190X, alps_3255190x, "floppy_5_25")
+DECLARE_FLOPPY_IMAGE_DEVICE(IBM_6360, ibm_6360, "floppy_8")
+
+DECLARE_DEVICE_TYPE(FLOPPYSOUND, floppy_sound_device)
/*
@@ -313,39 +317,9 @@ private:
// device type definition
-extern const device_type FLOPPY_CONNECTOR;
-extern const device_type FLOPPY_3_SSDD;
-extern const device_type FLOPPY_3_DSDD;
-extern const device_type FLOPPY_35_SSDD;
-extern const device_type FLOPPY_35_DD;
-extern const device_type FLOPPY_35_HD;
-extern const device_type FLOPPY_35_ED;
-extern const device_type FLOPPY_525_SSSD_35T;
-extern const device_type FLOPPY_525_SD_35T;
-extern const device_type FLOPPY_525_SSSD;
-extern const device_type FLOPPY_525_SD;
-extern const device_type FLOPPY_525_SSDD;
-extern const device_type FLOPPY_525_DD;
-extern const device_type FLOPPY_525_SSQD;
-extern const device_type FLOPPY_525_QD;
-extern const device_type FLOPPY_525_HD;
-extern const device_type FLOPPY_8_SSSD;
-extern const device_type FLOPPY_8_DSSD;
-extern const device_type FLOPPY_8_SSDD;
-extern const device_type FLOPPY_8_DSDD;
-extern const device_type EPSON_SMD_165;
-extern const device_type EPSON_SD_320;
-extern const device_type EPSON_SD_321;
-extern const device_type SONY_OA_D31V;
-extern const device_type SONY_OA_D32W;
-extern const device_type SONY_OA_D32V;
-extern const device_type TEAC_FD_55E;
-extern const device_type TEAC_FD_55F;
-extern const device_type TEAC_FD_55G;
-extern const device_type ALPS_3255190x;
-extern const device_type IBM_6360;
+DECLARE_DEVICE_TYPE(FLOPPY_CONNECTOR, floppy_connector)
extern template class device_finder<floppy_connector, false>;
extern template class device_finder<floppy_connector, true>;
-#endif /* FLOPPY_H */
+#endif // MAME_DEVICES_IMAGEDEV_FLOPPY_H
diff --git a/src/devices/imagedev/harddriv.cpp b/src/devices/imagedev/harddriv.cpp
index 44bba4268bf..490e0fe1bed 100644
--- a/src/devices/imagedev/harddriv.cpp
+++ b/src/devices/imagedev/harddriv.cpp
@@ -14,9 +14,10 @@
*********************************************************************/
#include "emu.h"
+#include "harddriv.h"
+
#include "emuopts.h"
#include "harddisk.h"
-#include "harddriv.h"
OPTION_GUIDE_START(hd_option_guide)
@@ -32,28 +33,22 @@ static const char *hd_option_spec =
// device type definition
-const device_type HARDDISK = device_creator<harddisk_image_device>;
+DEFINE_DEVICE_TYPE(HARDDISK, harddisk_image_device, "harddisk_image", "Harddisk")
//-------------------------------------------------
// harddisk_image_device - constructor
//-------------------------------------------------
harddisk_image_device::harddisk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HARDDISK, "Harddisk", tag, owner, clock, "harddisk_image", __FILE__),
- device_image_interface(mconfig, *this),
- m_chd(nullptr),
- m_hard_disk_handle(nullptr),
- m_device_image_load(device_image_load_delegate()),
- m_device_image_unload(device_image_func_delegate()),
- m_interface(nullptr)
+ : harddisk_image_device(mconfig, HARDDISK, tag, owner, clock)
{
}
//-------------------------------------------------
// harddisk_image_device - constructor for subclasses
//-------------------------------------------------
-harddisk_image_device::harddisk_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+harddisk_image_device::harddisk_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_image_interface(mconfig, *this),
m_chd(nullptr),
m_hard_disk_handle(nullptr),
diff --git a/src/devices/imagedev/harddriv.h b/src/devices/imagedev/harddriv.h
index 6347a43f624..bac33321cb6 100644
--- a/src/devices/imagedev/harddriv.h
+++ b/src/devices/imagedev/harddriv.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef HARDDRIV_H
-#define HARDDRIV_H
+#ifndef MAME_DEVICES_IMAGEDEV_HARDDRIV_H
+#define MAME_DEVICES_IMAGEDEV_HARDDRIV_H
#include "harddisk.h"
#include "softlist_dev.h"
@@ -54,7 +54,7 @@ public:
chd_file *get_chd_file();
protected:
- harddisk_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ harddisk_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_config_complete() override;
@@ -74,7 +74,7 @@ protected:
};
// device type definition
-extern const device_type HARDDISK;
+DECLARE_DEVICE_TYPE(HARDDISK, harddisk_image_device)
/***************************************************************************
DEVICE CONFIGURATION MACROS
@@ -92,4 +92,4 @@ extern const device_type HARDDISK;
#define MCFG_HARDDISK_INTERFACE(_interface) \
harddisk_image_device::static_set_interface(*device, _interface);
-#endif /* HARDDRIV_H */
+#endif // MAME_DEVICES_IMAGEDEV_HARDDRIV_H
diff --git a/src/devices/imagedev/mfmhd.cpp b/src/devices/imagedev/mfmhd.cpp
index ba9d7e2a81d..6e95fcc9e64 100644
--- a/src/devices/imagedev/mfmhd.cpp
+++ b/src/devices/imagedev/mfmhd.cpp
@@ -307,8 +307,8 @@ std::string mfm_harddisk_device::tts(const attotime &t)
return buf;
}
-mfm_harddisk_device::mfm_harddisk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : harddisk_image_device(mconfig, type, name, tag, owner, clock, shortname, source),
+mfm_harddisk_device::mfm_harddisk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : harddisk_image_device(mconfig, type, tag, owner, clock),
device_slot_card_interface(mconfig, *this),
m_index_timer(nullptr),
m_spinup_timer(nullptr),
@@ -935,17 +935,17 @@ int mfm_harddisk_device::get_actual_heads()
The generic HD takes any kind of CHD HD image and magically creates enough heads and cylinders.
*/
mfm_hd_generic_device::mfm_hd_generic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: mfm_harddisk_device(mconfig, MFMHD_GENERIC, "Generic MFM hard disk", tag, owner, clock, "mfm_harddisk", __FILE__)
+: mfm_harddisk_device(mconfig, MFMHD_GENERIC, tag, owner, clock)
{
}
-const device_type MFMHD_GENERIC = device_creator<mfm_hd_generic_device>;
+DEFINE_DEVICE_TYPE(MFMHD_GENERIC, mfm_hd_generic_device, "mfm_harddisk", "Generic MFM hard disk")
/*
Various models.
*/
mfm_hd_st213_device::mfm_hd_st213_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: mfm_harddisk_device(mconfig, MFMHD_ST213, "Seagate ST-213 MFM hard disk", tag, owner, clock, "mfm_hd_st213", __FILE__)
+: mfm_harddisk_device(mconfig, MFMHD_ST213, tag, owner, clock)
{
m_phys_cylinders = 670;
m_max_cylinders = 615; // 0..614
@@ -955,10 +955,10 @@ mfm_hd_st213_device::mfm_hd_st213_device(const machine_config &mconfig, const ch
m_maxseek_time = 150;
}
-const device_type MFMHD_ST213 = device_creator<mfm_hd_st213_device>;
+DEFINE_DEVICE_TYPE(MFMHD_ST213, mfm_hd_st213_device, "mfm_hd_st213", "Seagate ST-213 MFM hard disk")
mfm_hd_st225_device::mfm_hd_st225_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: mfm_harddisk_device(mconfig, MFMHD_ST225, "Seagate ST-225 MFM hard disk", tag, owner, clock, "mfm_hd_st225", __FILE__)
+: mfm_harddisk_device(mconfig, MFMHD_ST225, tag, owner, clock)
{
m_phys_cylinders = 670;
m_max_cylinders = 615;
@@ -968,10 +968,10 @@ mfm_hd_st225_device::mfm_hd_st225_device(const machine_config &mconfig, const ch
m_maxseek_time = 150;
}
-const device_type MFMHD_ST225 = device_creator<mfm_hd_st225_device>;
+DEFINE_DEVICE_TYPE(MFMHD_ST225, mfm_hd_st225_device, "mfm_hd_st225", "Seagate ST-225 MFM hard disk")
mfm_hd_st251_device::mfm_hd_st251_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: mfm_harddisk_device(mconfig, MFMHD_ST251, "Seagate ST-251 MFM hard disk", tag, owner, clock, "mfm_hd_st251", __FILE__)
+: mfm_harddisk_device(mconfig, MFMHD_ST251, tag, owner, clock)
{
m_phys_cylinders = 821;
m_max_cylinders = 820;
@@ -981,7 +981,7 @@ mfm_hd_st251_device::mfm_hd_st251_device(const machine_config &mconfig, const ch
m_maxseek_time = 70;
}
-const device_type MFMHD_ST251 = device_creator<mfm_hd_st251_device>;
+DEFINE_DEVICE_TYPE(MFMHD_ST251, mfm_hd_st251_device, "mfm_hd_st251", "Seagate ST-251 MFM hard disk")
// ===========================================================
// Track cache
@@ -1178,7 +1178,7 @@ uint16_t* mfmhd_trackimage_cache::get_trackimage(int cylinder, int head)
// ================================================================
mfm_harddisk_connector::mfm_harddisk_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock):
- device_t(mconfig, MFM_HD_CONNECTOR, "MFM hard disk connector", tag, owner, clock, "mfm_hd_connector", __FILE__),
+ device_t(mconfig, MFM_HD_CONNECTOR, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_encoding(),
m_spinupms(0),
@@ -1222,4 +1222,4 @@ void mfm_harddisk_connector::device_config_complete()
}
}
-const device_type MFM_HD_CONNECTOR = device_creator<mfm_harddisk_connector>;
+DEFINE_DEVICE_TYPE(MFM_HD_CONNECTOR, mfm_harddisk_connector, "mfm_hd_connector", "MFM hard disk connector")
diff --git a/src/devices/imagedev/mfmhd.h b/src/devices/imagedev/mfmhd.h
index e100a14f7d0..972d7bd4e75 100644
--- a/src/devices/imagedev/mfmhd.h
+++ b/src/devices/imagedev/mfmhd.h
@@ -11,8 +11,10 @@
*****************************************************************************/
-#ifndef __MFMHD__
-#define __MFMHD__
+#ifndef MAME_DEVICES_IMAGEDEV_MFMHD_H
+#define MAME_DEVICES_IMAGEDEV_MFMHD_H
+
+#pragma once
#include "imagedev/harddriv.h"
#include "formats/mfm_hd.h"
@@ -50,7 +52,6 @@ class mfm_harddisk_device : public harddisk_image_device,
public device_slot_card_interface
{
public:
- mfm_harddisk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
~mfm_harddisk_device();
typedef delegate<void (mfm_harddisk_device*, int)> index_pulse_cb;
@@ -101,6 +102,8 @@ public:
int get_actual_heads();
protected:
+ mfm_harddisk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
void device_start() override;
void device_stop() override;
void device_reset() override;
@@ -176,7 +179,7 @@ public:
mfm_hd_generic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type MFMHD_GENERIC;
+DECLARE_DEVICE_TYPE(MFMHD_GENERIC, mfm_hd_generic_device)
class mfm_hd_st213_device : public mfm_harddisk_device
{
@@ -184,7 +187,7 @@ public:
mfm_hd_st213_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type MFMHD_ST213;
+DECLARE_DEVICE_TYPE(MFMHD_ST213, mfm_hd_st213_device)
class mfm_hd_st225_device : public mfm_harddisk_device
{
@@ -192,7 +195,7 @@ public:
mfm_hd_st225_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type MFMHD_ST225;
+DECLARE_DEVICE_TYPE(MFMHD_ST225, mfm_hd_st225_device)
class mfm_hd_st251_device : public mfm_harddisk_device
{
@@ -200,7 +203,7 @@ public:
mfm_hd_st251_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type MFMHD_ST251;
+DECLARE_DEVICE_TYPE(MFMHD_ST251, mfm_hd_st251_device)
/* Connector for a MFM hard disk. See also floppy.c */
@@ -226,7 +229,7 @@ private:
mfmhd_image_format_t* m_format;
};
-extern const device_type MFM_HD_CONNECTOR;
+DECLARE_DEVICE_TYPE(MFM_HD_CONNECTOR, mfm_harddisk_connector)
/*
Add a harddisk connector.
@@ -246,4 +249,4 @@ extern const device_type MFM_HD_CONNECTOR;
static_cast<mfm_harddisk_connector *>(device)->configure(_enc, _spinupms, _cache, _format);
-#endif
+#endif // MAME_DEVICES_IMAGEDEV_MFMHD_H
diff --git a/src/devices/imagedev/midiin.cpp b/src/devices/imagedev/midiin.cpp
index de949f81881..e9301c76504 100644
--- a/src/devices/imagedev/midiin.cpp
+++ b/src/devices/imagedev/midiin.cpp
@@ -16,14 +16,14 @@
IMPLEMENTATION
***************************************************************************/
-const device_type MIDIIN = device_creator<midiin_device>;
+DEFINE_DEVICE_TYPE(MIDIIN, midiin_device, "midiin", "MIDI In image device")
/*-------------------------------------------------
ctor
-------------------------------------------------*/
midiin_device::midiin_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MIDIIN, "MIDI In image device", tag, owner, clock, "midiin", __FILE__),
+ : device_t(mconfig, MIDIIN, tag, owner, clock),
device_image_interface(mconfig, *this),
device_serial_interface(mconfig, *this),
m_midi(nullptr),
diff --git a/src/devices/imagedev/midiin.h b/src/devices/imagedev/midiin.h
index ed02b525dc4..581558bbe1b 100644
--- a/src/devices/imagedev/midiin.h
+++ b/src/devices/imagedev/midiin.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __MIDIIN_H__
-#define __MIDIIN_H__
+#ifndef MAME_DEVICES_IMAGEDEV_MIDIIN_H
+#define MAME_DEVICES_IMAGEDEV_MIDIIN_H
+
+#pragma once
#define MCFG_MIDIIN_INPUT_CB(_devcb) \
@@ -69,9 +71,9 @@ private:
};
// device type definition
-extern const device_type MIDIIN;
+DECLARE_DEVICE_TYPE(MIDIIN, midiin_device)
// device iterator
typedef device_type_iterator<midiin_device> midiin_device_iterator;
-#endif /* __MIDIIN_H__ */
+#endif // MAME_DEVICES_IMAGEDEV_MIDIIN_H
diff --git a/src/devices/imagedev/midiout.cpp b/src/devices/imagedev/midiout.cpp
index 8acb6a540ec..6b05020e77b 100644
--- a/src/devices/imagedev/midiout.cpp
+++ b/src/devices/imagedev/midiout.cpp
@@ -16,14 +16,14 @@
IMPLEMENTATION
***************************************************************************/
-const device_type MIDIOUT = device_creator<midiout_device>;
+DEFINE_DEVICE_TYPE(MIDIOUT, midiout_device, "midiout", "MIDI Out image device")
/*-------------------------------------------------
ctor
-------------------------------------------------*/
midiout_device::midiout_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MIDIOUT, "MIDI Out image device", tag, owner, clock, "midiout", __FILE__),
+ : device_t(mconfig, MIDIOUT, tag, owner, clock),
device_image_interface(mconfig, *this),
device_serial_interface(mconfig, *this),
m_midi(nullptr)
diff --git a/src/devices/imagedev/midiout.h b/src/devices/imagedev/midiout.h
index d79f5247df4..8fa29f9d7a7 100644
--- a/src/devices/imagedev/midiout.h
+++ b/src/devices/imagedev/midiout.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef __MIDIOUT_H__
-#define __MIDIOUT_H__
+#ifndef MAME_DEVICES_IMAGEDEV_MIDIOUT_H
+#define MAME_DEVICES_IMAGEDEV_MIDIOUT_H
/***************************************************************************
@@ -63,9 +63,9 @@ private:
};
// device type definition
-extern const device_type MIDIOUT;
+DECLARE_DEVICE_TYPE(MIDIOUT, midiout_device)
// device iterator
typedef device_type_iterator<midiout_device> midiout_device_iterator;
-#endif /* __MIDIOUT_H__ */
+#endif // MAME_DEVICES_IMAGEDEV_MIDIOUT_H
diff --git a/src/devices/imagedev/printer.cpp b/src/devices/imagedev/printer.cpp
index f4ea99a7d3f..2eb187d843a 100644
--- a/src/devices/imagedev/printer.cpp
+++ b/src/devices/imagedev/printer.cpp
@@ -13,14 +13,14 @@
// device type definition
-const device_type PRINTER = device_creator<printer_image_device>;
+DEFINE_DEVICE_TYPE(PRINTER, printer_image_device, "printer_image", "Printer")
//-------------------------------------------------
// printer_image_device - constructor
//-------------------------------------------------
printer_image_device::printer_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PRINTER, "Printer", tag, owner, clock, "printer_image", __FILE__),
+ device_t(mconfig, PRINTER, tag, owner, clock),
device_image_interface(mconfig, *this),
m_online_cb(*this)
{
diff --git a/src/devices/imagedev/printer.h b/src/devices/imagedev/printer.h
index ae8ad93ae97..acf07296882 100644
--- a/src/devices/imagedev/printer.h
+++ b/src/devices/imagedev/printer.h
@@ -8,8 +8,10 @@
****************************************************************************/
-#ifndef __PRINTER_H__
-#define __PRINTER_H__
+#ifndef MAME_DEVICES_IMAGEDEV_PRINTER_H
+#define MAME_DEVICES_IMAGEDEV_PRINTER_H
+
+#pragma once
#define MCFG_PRINTER_ONLINE_CB(_devcb) \
devcb = &printer_image_device::set_online_callback(*device, DEVCB_##_devcb);
@@ -58,6 +60,6 @@ protected:
// device type definition
-extern const device_type PRINTER;
+DECLARE_DEVICE_TYPE(PRINTER, printer_image_device)
-#endif /* __PRINTER_H__ */
+#endif // MAME_DEVICES_IMAGEDEV_PRINTER_H
diff --git a/src/devices/imagedev/snapquik.cpp b/src/devices/imagedev/snapquik.cpp
index cc95783450d..0e24b9f81ba 100644
--- a/src/devices/imagedev/snapquik.cpp
+++ b/src/devices/imagedev/snapquik.cpp
@@ -12,25 +12,19 @@
#include "snapquik.h"
// device type definition
-const device_type SNAPSHOT = device_creator<snapshot_image_device>;
+DEFINE_DEVICE_TYPE(SNAPSHOT, snapshot_image_device, "snapsot_image", "Snapshot")
//-------------------------------------------------
// snapshot_image_device - constructor
//-------------------------------------------------
snapshot_image_device::snapshot_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SNAPSHOT, "Snapshot", tag, owner, clock, "snapshot_image", __FILE__),
- device_image_interface(mconfig, *this),
- m_file_extensions(nullptr),
- m_interface(nullptr),
- m_delay_seconds(0),
- m_delay_attoseconds(0),
- m_timer(nullptr)
+ : snapshot_image_device(mconfig, SNAPSHOT, tag, owner, clock)
{
}
-snapshot_image_device::snapshot_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+snapshot_image_device::snapshot_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_image_interface(mconfig, *this),
m_file_extensions(nullptr),
m_interface(nullptr),
@@ -78,13 +72,13 @@ image_init_result snapshot_image_device::call_load()
}
// device type definition
-const device_type QUICKLOAD = device_creator<quickload_image_device>;
+DEFINE_DEVICE_TYPE(QUICKLOAD, quickload_image_device, "quickload", "Quickload")
//-------------------------------------------------
// quickload_image_device - constructor
//-------------------------------------------------
quickload_image_device::quickload_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : snapshot_image_device(mconfig, QUICKLOAD, "Quickload", tag, owner, clock, "quickload", __FILE__)
+ : snapshot_image_device(mconfig, QUICKLOAD, tag, owner, clock)
{
}
diff --git a/src/devices/imagedev/snapquik.h b/src/devices/imagedev/snapquik.h
index 89a77a8360f..dfe458979bb 100644
--- a/src/devices/imagedev/snapquik.h
+++ b/src/devices/imagedev/snapquik.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef __SNAPQUIK_H__
-#define __SNAPQUIK_H__
+#ifndef MAME_DEVICES_IMAGEDEV_SNAPQUIK_H
+#define MAME_DEVICES_IMAGEDEV_SNAPQUIK_H
#include "softlist_dev.h"
@@ -22,7 +22,6 @@ class snapshot_image_device : public device_t,
public:
// construction/destruction
snapshot_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- snapshot_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual ~snapshot_image_device();
static void static_set_interface(device_t &device, const char *_interface) { downcast<snapshot_image_device &>(device).m_interface = _interface; }
@@ -42,7 +41,10 @@ public:
TIMER_CALLBACK_MEMBER(process_snapshot_or_quickload);
void set_handler(snapquick_load_delegate load, const char *ext, seconds_t sec) { m_load = load; m_file_extensions = ext; m_delay_seconds = sec; };
+
protected:
+ snapshot_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
@@ -55,7 +57,7 @@ protected:
};
// device type definition
-extern const device_type SNAPSHOT;
+DECLARE_DEVICE_TYPE(SNAPSHOT, snapshot_image_device)
// ======================> quickload_image_device
@@ -69,7 +71,7 @@ public:
};
// device type definition
-extern const device_type QUICKLOAD;
+DECLARE_DEVICE_TYPE(QUICKLOAD, quickload_image_device)
/***************************************************************************
DEVICE CONFIGURATION MACROS
@@ -100,4 +102,4 @@ extern const device_type QUICKLOAD;
#define MCFG_QUICKLOAD_INTERFACE(_interface) \
quickload_image_device::static_set_interface(*device, _interface);
-#endif /* __SNAPQUIK_H__ */
+#endif // MAME_DEVICES_IMAGEDEV_SNAPQUIK_H
diff --git a/src/devices/machine/40105.cpp b/src/devices/machine/40105.cpp
index 6c7490a43af..dbeb7e2f45c 100644
--- a/src/devices/machine/40105.cpp
+++ b/src/devices/machine/40105.cpp
@@ -32,7 +32,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CD40105 = device_creator<cmos_40105_device>;
+DEFINE_DEVICE_TYPE(CD40105, cmos_40105_device, "cd40105", "40105 FIFO")
const device_type HC40105 = CD40105;
@@ -45,7 +45,7 @@ const device_type HC40105 = CD40105;
//-------------------------------------------------
cmos_40105_device::cmos_40105_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : device_t(mconfig, CD40105, "40105 FIFO", tag, owner, clock, "cd40105", __FILE__),
+ : device_t(mconfig, CD40105, tag, owner, clock),
m_write_dir(*this),
m_write_dor(*this),
m_write_q(*this),
diff --git a/src/devices/machine/40105.h b/src/devices/machine/40105.h
index e65fb31f381..2197fddbf8b 100644
--- a/src/devices/machine/40105.h
+++ b/src/devices/machine/40105.h
@@ -17,10 +17,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_40105_H
+#define MAME_MACHINE_40105_H
-#ifndef __CMOS_40105__
-#define __CMOS_40105__
+#pragma once
#include <queue>
@@ -53,9 +53,9 @@ public:
// construction/destruction
cmos_40105_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- template<class _dir> devcb_base &set_dir_callback(_dir dir) { return m_write_dir.set_callback(dir); }
- template<class _dor> devcb_base &set_dor_callback(_dor dor) { return m_write_dor.set_callback(dor); }
- template<class _out> devcb_base &set_data_out_callback(_out out) { return m_write_q.set_callback(out); }
+ template <class Object> devcb_base &set_dir_callback(Object &&dir) { return m_write_dir.set_callback(std::forward<Object>(dir)); }
+ template <class Object> devcb_base &set_dor_callback(Object &&dor) { return m_write_dor.set_callback(std::forward<Object>(dor)); }
+ template <class Object> devcb_base &set_data_out_callback(Object &&out) { return m_write_q.set_callback(std::forward<Object>(out)); }
u8 read();
void write(u8 data);
@@ -95,8 +95,7 @@ private:
// device type definition
-extern const device_type CD40105;
+DECLARE_DEVICE_TYPE(CD40105, cmos_40105_device)
extern const device_type HC40105;
-
-#endif
+#endif // MAME_MACHINE_40105_H
diff --git a/src/devices/machine/53c7xx.cpp b/src/devices/machine/53c7xx.cpp
index e84c4358901..2d215f198b0 100644
--- a/src/devices/machine/53c7xx.cpp
+++ b/src/devices/machine/53c7xx.cpp
@@ -49,17 +49,62 @@ static void ATTR_PRINTF(3,4) verbose_log(running_machine &machine, int level, co
//**************************************************************************
+// REGISTER DEFINES (INCOMPLETE)
+//**************************************************************************
+
+#define SCNTL0_TRG 0x01
+#define SCNTL0_AAP 0x02
+#define SCNTL0_EPG 0x04
+#define SCNTL0_EPC 0x08
+#define SCNTL0_WATN 0x10
+#define SCNTL0_START 0x20
+#define SCNTL0_ARB_MASK 3
+#define SCNTL0_ARB_SHIFT 6
+
+#define SSTAT0_PAR 0x01
+#define SSTAT0_RST 0x02
+#define SSTAT0_UDC 0x04
+#define SSTAT0_SGE 0x08
+#define SSTAT0_SEL 0x10
+#define SSTAT0_STO 0x20
+#define SSTAT0_CMP 0x40
+#define SSTAT0_MA 0x80
+
+#define SSTAT1_SDP 0x01
+#define SSTAT1_RST 0x02
+#define SSTAT1_WOA 0x04
+#define SSTAT1_LOA 0x08
+#define SSTAT1_AIP 0x10
+#define SSTAT1_ORF 0x20
+#define SSTAT1_OLF 0x40
+#define SSTAT1_ILF 0x80
+
+#define ISTAT_DIP 0x01
+#define ISTAT_SIP 0x02
+#define ISTAT_PRE 0x04
+#define ISTAT_CON 0x08
+#define ISTAT_ABRT 0x80
+
+#define DSTAT_OPC 0x01
+#define DSTAT_WTD 0x02
+#define DSTAT_SIR 0x04
+#define DSTAT_SSI 0x08
+#define DSTAT_ABRT 0x10
+#define DSTAT_DFE 0x80
+
+
+//**************************************************************************
// LIVE DEVICE
//**************************************************************************
-const device_type NCR53C7XX = device_creator<ncr53c7xx_device>;
+DEFINE_DEVICE_TYPE(NCR53C7XX, ncr53c7xx_device, "ncr537xx", "NCR 53C7xx SCSI")
//-------------------------------------------------
// ncr53c7xx_device - constructor/destructor
//-------------------------------------------------
ncr53c7xx_device::ncr53c7xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nscsi_device(mconfig, NCR53C7XX, "53C7xx SCSI", tag, owner, clock, "ncr537xx", __FILE__),
+ : nscsi_device(mconfig, NCR53C7XX, tag, owner, clock),
device_execute_interface(mconfig, *this),
m_icount(0),
m_irq_handler(*this),
diff --git a/src/devices/machine/53c7xx.h b/src/devices/machine/53c7xx.h
index f343f8472dc..7dff86c2256 100644
--- a/src/devices/machine/53c7xx.h
+++ b/src/devices/machine/53c7xx.h
@@ -8,55 +8,13 @@
*********************************************************************/
-#ifndef _NCR53C7XX_H_
-#define _NCR53C7XX_H_
+#ifndef MAME_MACHINE_53C7XX_H
+#define MAME_MACHINE_53C7XX_H
-#include "machine/nscsi_bus.h"
+#pragma once
+#include "machine/nscsi_bus.h"
-//**************************************************************************
-// REGISTER DEFINES (INCOMPLETE)
-//**************************************************************************
-
-#define SCNTL0_TRG 0x01
-#define SCNTL0_AAP 0x02
-#define SCNTL0_EPG 0x04
-#define SCNTL0_EPC 0x08
-#define SCNTL0_WATN 0x10
-#define SCNTL0_START 0x20
-#define SCNTL0_ARB_MASK 3
-#define SCNTL0_ARB_SHIFT 6
-
-#define SSTAT0_PAR 0x01
-#define SSTAT0_RST 0x02
-#define SSTAT0_UDC 0x04
-#define SSTAT0_SGE 0x08
-#define SSTAT0_SEL 0x10
-#define SSTAT0_STO 0x20
-#define SSTAT0_CMP 0x40
-#define SSTAT0_MA 0x80
-
-#define SSTAT1_SDP 0x01
-#define SSTAT1_RST 0x02
-#define SSTAT1_WOA 0x04
-#define SSTAT1_LOA 0x08
-#define SSTAT1_AIP 0x10
-#define SSTAT1_ORF 0x20
-#define SSTAT1_OLF 0x40
-#define SSTAT1_ILF 0x80
-
-#define ISTAT_DIP 0x01
-#define ISTAT_SIP 0x02
-#define ISTAT_PRE 0x04
-#define ISTAT_CON 0x08
-#define ISTAT_ABRT 0x80
-
-#define DSTAT_OPC 0x01
-#define DSTAT_WTD 0x02
-#define DSTAT_SIR 0x04
-#define DSTAT_SSI 0x08
-#define DSTAT_ABRT 0x10
-#define DSTAT_DFE 0x80
#define MCFG_NCR53C7XX_IRQ_HANDLER(_devcb) \
devcb = &ncr53c7xx_device::set_irq_handler(*device, DEVCB_##_devcb);
@@ -67,17 +25,16 @@
#define MCFG_NCR53C7XX_HOST_READ(_devcb) \
devcb = &ncr53c7xx_device::set_host_read(*device, DEVCB_##_devcb);
-class ncr53c7xx_device : public nscsi_device,
- public device_execute_interface
+class ncr53c7xx_device : public nscsi_device, public device_execute_interface
{
public:
// construction/destruction
ncr53c7xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ncr53c7xx_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_host_write(device_t &device, _Object object) { return downcast<ncr53c7xx_device &>(device).m_host_write.set_callback(object); }
- template<class _Object> static devcb_base &set_host_read(device_t &device, _Object object) { return downcast<ncr53c7xx_device &>(device).m_host_read.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ncr53c7xx_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_host_write(device_t &device, Object &&cb) { return downcast<ncr53c7xx_device &>(device).m_host_write.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_host_read(device_t &device, Object &&cb) { return downcast<ncr53c7xx_device &>(device).m_host_read.set_callback(std::forward<Object>(cb)); }
// our API
DECLARE_READ32_MEMBER(read);
@@ -225,5 +182,6 @@ private:
};
// device type definition
-extern const device_type NCR53C7XX;
-#endif
+DECLARE_DEVICE_TYPE(NCR53C7XX, ncr53c7xx_device)
+
+#endif // MAME_MACHINE_53C7XX_H
diff --git a/src/devices/machine/53c810.cpp b/src/devices/machine/53c810.cpp
index 5564525869d..87165da1cfd 100644
--- a/src/devices/machine/53c810.cpp
+++ b/src/devices/machine/53c810.cpp
@@ -394,7 +394,7 @@ void lsi53c810_device::dma_exec()
}
}
-uint8_t lsi53c810_device::lsi53c810_reg_r( int offset )
+uint8_t lsi53c810_device::reg_r(int offset)
{
// logerror("53c810: read reg %d:0x%x (PC=%x)\n", offset, offset, space.device().safe_pc());
switch(offset)
@@ -477,7 +477,7 @@ uint8_t lsi53c810_device::lsi53c810_reg_r( int offset )
//return 0;
}
-void lsi53c810_device::lsi53c810_reg_w(int offset, uint8_t data)
+void lsi53c810_device::reg_w(int offset, uint8_t data)
{
// logerror("53c810: %02x to reg %d:0x%x (PC=%x)\n", data, offset, offset, space.device().safe_pc());
switch(offset)
@@ -622,7 +622,7 @@ void lsi53c810_device::add_opcode(uint8_t op, uint8_t mask, opcode_handler_deleg
}
lsi53c810_device::lsi53c810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : legacy_scsi_host_adapter(mconfig, LSI53C810, "53C810 SCSI", tag, owner, clock, "lsi53c810", __FILE__)
+ : legacy_scsi_host_adapter(mconfig, LSI53C810, tag, owner, clock)
{
}
@@ -813,4 +813,4 @@ unsigned lsi53c810_device::lsi53c810_dasm(char *buf, uint32_t pc)
return result;
}
-const device_type LSI53C810 = device_creator<lsi53c810_device>;
+DEFINE_DEVICE_TYPE(LSI53C810, lsi53c810_device, "lsi53c810", "LSI 53C810 SCSI")
diff --git a/src/devices/machine/53c810.h b/src/devices/machine/53c810.h
index b00bf57e8ed..d8115dfb10c 100644
--- a/src/devices/machine/53c810.h
+++ b/src/devices/machine/53c810.h
@@ -1,32 +1,33 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef LSI53C810_H
-#define LSI53C810_H
+#ifndef MAME_MACHINE_53C810_H
+#define MAME_MACHINE_53C810_H
+
+#pragma once
#include "legscsi.h"
-typedef device_delegate<void (int state)> lsi53c810_irq_delegate;
#define LSI53C810_IRQ_CB(name) void name(int state)
-
-typedef device_delegate<void (uint32_t src, uint32_t dst, int length, int byteswap)> lsi53c810_dma_delegate;
#define LSI53C810_DMA_CB(name) void name(uint32_t src, uint32_t dst, int length, int byteswap)
-
-typedef device_delegate<uint32_t (uint32_t dsp)> lsi53c810_fetch_delegate;
#define LSI53C810_FETCH_CB(name) uint32_t name(uint32_t dsp)
class lsi53c810_device : public legacy_scsi_host_adapter
{
public:
+ typedef device_delegate<void (int state)> irq_delegate;
+ typedef device_delegate<void (uint32_t src, uint32_t dst, int length, int byteswap)> dma_delegate;
+ typedef device_delegate<uint32_t (uint32_t dsp)> fetch_delegate;
+
// construction/destruction
lsi53c810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_irq_callback(device_t &device, lsi53c810_irq_delegate callback) { downcast<lsi53c810_device &>(device).m_irq_cb = callback; }
- static void set_dma_callback(device_t &device, lsi53c810_dma_delegate callback) { downcast<lsi53c810_device &>(device).m_dma_cb = callback; }
- static void set_fetch_callback(device_t &device, lsi53c810_fetch_delegate callback) { downcast<lsi53c810_device &>(device).m_fetch_cb = callback; }
+ static void set_irq_callback(device_t &device, irq_delegate &&callback) { downcast<lsi53c810_device &>(device).m_irq_cb = std::move(callback); }
+ static void set_dma_callback(device_t &device, dma_delegate &&callback) { downcast<lsi53c810_device &>(device).m_dma_cb = std::move(callback); }
+ static void set_fetch_callback(device_t &device, fetch_delegate &&callback) { downcast<lsi53c810_device &>(device).m_fetch_cb = std::move(callback); }
- uint8_t lsi53c810_reg_r( int offset );
- void lsi53c810_reg_w(int offset, uint8_t data);
+ uint8_t reg_r(int offset);
+ void reg_w(int offset, uint8_t data);
protected:
// device-level overrides
@@ -36,9 +37,9 @@ private:
typedef delegate<void (void)> opcode_handler_delegate;
opcode_handler_delegate dma_opcode[256];
- lsi53c810_irq_delegate m_irq_cb;
- lsi53c810_dma_delegate m_dma_cb;
- lsi53c810_fetch_delegate m_fetch_cb;
+ irq_delegate m_irq_cb;
+ dma_delegate m_dma_cb;
+ fetch_delegate m_fetch_cb;
uint32_t FETCH();
void dmaop_invalid();
@@ -99,15 +100,16 @@ private:
// device type definition
extern const device_type LSI53C810;
+DECLARE_DEVICE_TYPE(LSI53C810, lsi53c810_device)
#define MCFG_LSI53C810_IRQ_CB(_class, _method) \
- lsi53c810_device::set_irq_callback(*device, lsi53c810_irq_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ lsi53c810_device::set_irq_callback(*device, lsi53c810_device::irq_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_LSI53C810_DMA_CB(_class, _method) \
- lsi53c810_device::set_dma_callback(*device, lsi53c810_dma_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ lsi53c810_device::set_dma_callback(*device, lsi53c810_device::dma_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_LSI53C810_FETCH_CB(_class, _method) \
- lsi53c810_device::set_fetch_callback(*device, lsi53c810_fetch_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ lsi53c810_device::set_fetch_callback(*device, lsi53c810_device::fetch_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-#endif
+#endif // MAME_MACHINE_53C810_H
diff --git a/src/devices/machine/64h156.cpp b/src/devices/machine/64h156.cpp
index 93532565b3e..4b2cd724dca 100644
--- a/src/devices/machine/64h156.cpp
+++ b/src/devices/machine/64h156.cpp
@@ -27,14 +27,14 @@
#include "emu.h"
#include "64h156.h"
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
#define CYCLES_UNTIL_ANALOG_DESYNC 288 // 18 us
@@ -43,7 +43,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type C64H156 = device_creator<c64h156_device>;
+DEFINE_DEVICE_TYPE(C64H156, c64h156_device, "c64h156", "Commodore 64H156")
@@ -56,7 +56,7 @@ const device_type C64H156 = device_creator<c64h156_device>;
//-------------------------------------------------
c64h156_device::c64h156_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64H156, "64H156", tag, owner, clock, "c64h156", __FILE__),
+ device_t(mconfig, C64H156, tag, owner, clock),
m_write_atn(*this),
m_write_sync(*this),
m_write_byte(*this),
@@ -200,7 +200,7 @@ bool c64h156_device::write_next_bit(bool bit, const attotime &limit)
if(bit && cur_live.write_position < ARRAY_LENGTH(cur_live.write_buffer))
cur_live.write_buffer[cur_live.write_position++] = cur_live.tm - m_period;
- if (LOG) logerror("%s write bit %u (%u)\n", cur_live.tm.as_string(), cur_live.bit_counter, bit);
+ LOG("%s write bit %u (%u)\n", cur_live.tm.as_string(), cur_live.bit_counter, bit);
return false;
}
@@ -210,7 +210,7 @@ void c64h156_device::commit(const attotime &tm)
if(cur_live.write_start_time.is_never() || tm == cur_live.write_start_time || !cur_live.write_position)
return;
- if (LOG) logerror("%s committing %u transitions since %s\n", tm.as_string(), cur_live.write_position, cur_live.write_start_time.as_string());
+ LOG("%s committing %u transitions since %s\n", tm.as_string(), cur_live.write_position, cur_live.write_start_time.as_string());
m_floppy->write_flux(cur_live.write_start_time, tm, cur_live.write_position, cur_live.write_buffer);
@@ -307,7 +307,7 @@ void c64h156_device::live_run(const attotime &limit)
cur_live.shift_reg |= !(BIT(cur_live.cell_counter, 3) || BIT(cur_live.cell_counter, 2));
cur_live.shift_reg &= 0x3ff;
- if (LOG) logerror("%s read bit %u (%u) >> %03x, oe=%u soe=%u sync=%u byte=%u\n", cur_live.tm.as_string(), cur_live.bit_counter,
+ LOG("%s read bit %u (%u) >> %03x, oe=%u soe=%u sync=%u byte=%u\n", cur_live.tm.as_string(), cur_live.bit_counter,
!(BIT(cur_live.cell_counter, 3) || BIT(cur_live.cell_counter, 2)), cur_live.shift_reg, cur_live.oe, cur_live.soe, cur_live.sync, cur_live.byte);
syncpoint = true;
@@ -332,21 +332,21 @@ void c64h156_device::live_run(const attotime &limit)
if (!load) {
if (cur_live.oe) {
cur_live.shift_reg_write = cur_live.shift_reg;
- if (LOG) logerror("%s load write shift register from read shift register %02x\n",cur_live.tm.as_string(),cur_live.shift_reg_write);
+ LOG("%s load write shift register from read shift register %02x\n",cur_live.tm.as_string(),cur_live.shift_reg_write);
} else {
cur_live.shift_reg_write = cur_live.yb;
- if (LOG) logerror("%s load write shift register from YB %02x\n",cur_live.tm.as_string(),cur_live.shift_reg_write);
+ LOG("%s load write shift register from YB %02x\n",cur_live.tm.as_string(),cur_live.shift_reg_write);
}
} else if (!BIT(cell_counter, 1) && BIT(cur_live.cell_counter, 1)) {
cur_live.shift_reg_write <<= 1;
cur_live.shift_reg_write &= 0xff;
- if (LOG) logerror("%s shift write register << %02x\n", cur_live.tm.as_string(), cur_live.shift_reg_write);
+ LOG("%s shift write register << %02x\n", cur_live.tm.as_string(), cur_live.shift_reg_write);
}
// update signals
if (byte != cur_live.byte) {
if (!byte || !cur_live.accl) {
- if (LOG) logerror("%s BYTE %02x\n", cur_live.tm.as_string(), cur_live.shift_reg & 0xff);
+ LOG("%s BYTE %02x\n", cur_live.tm.as_string(), cur_live.shift_reg & 0xff);
cur_live.byte = byte;
syncpoint = true;
}
@@ -356,7 +356,7 @@ void c64h156_device::live_run(const attotime &limit)
}
if (sync != cur_live.sync) {
- if (LOG) logerror("%s SYNC %u\n", cur_live.tm.as_string(),sync);
+ LOG("%s SYNC %u\n", cur_live.tm.as_string(),sync);
cur_live.sync = sync;
syncpoint = true;
}
@@ -444,7 +444,7 @@ WRITE8_MEMBER( c64h156_device::yb_w )
live_sync();
m_yb = cur_live.yb = data;
checkpoint();
- if (LOG) logerror("%s YB %02x\n", machine().time().as_string(), data);
+ LOG("%s YB %02x\n", machine().time().as_string(), data);
live_run();
}
@@ -471,7 +471,7 @@ WRITE_LINE_MEMBER( c64h156_device::accl_w )
live_sync();
m_accl = cur_live.accl = state;
checkpoint();
- if (LOG) logerror("%s ACCL %u\n", machine().time().as_string(), state);
+ LOG("%s ACCL %u\n", machine().time().as_string(), state);
live_run();
}
}
@@ -492,7 +492,7 @@ WRITE_LINE_MEMBER( c64h156_device::ted_w )
}
m_ted = state;
checkpoint();
- if (LOG) logerror("%s TED %u\n", machine().time().as_string(), state);
+ LOG("%s TED %u\n", machine().time().as_string(), state);
live_run();
}
}
@@ -508,7 +508,7 @@ WRITE_LINE_MEMBER( c64h156_device::mtr_w )
{
live_sync();
m_mtr = state;
- if (LOG) logerror("%s MTR %u\n", machine().time().as_string(), state);
+ LOG("%s MTR %u\n", machine().time().as_string(), state);
m_floppy->mon_w(!state);
checkpoint();
@@ -541,7 +541,7 @@ WRITE_LINE_MEMBER( c64h156_device::oe_w )
start_writing(machine().time());
}
checkpoint();
- if (LOG) logerror("%s OE %u\n", machine().time().as_string(), state);
+ LOG("%s OE %u\n", machine().time().as_string(), state);
live_run();
}
}
@@ -558,7 +558,7 @@ WRITE_LINE_MEMBER( c64h156_device::soe_w )
live_sync();
m_soe = cur_live.soe = state;
checkpoint();
- if (LOG) logerror("%s SOE %u\n", machine().time().as_string(), state);
+ LOG("%s SOE %u\n", machine().time().as_string(), state);
live_run();
}
}
@@ -570,7 +570,7 @@ WRITE_LINE_MEMBER( c64h156_device::soe_w )
WRITE_LINE_MEMBER( c64h156_device::atni_w )
{
- if (LOG) logerror("ATNI %u\n", state);
+ LOG("ATNI %u\n", state);
m_atni = state;
@@ -584,7 +584,7 @@ WRITE_LINE_MEMBER( c64h156_device::atni_w )
WRITE_LINE_MEMBER( c64h156_device::atna_w )
{
- if (LOG) logerror("ATNA %u\n", state);
+ LOG("ATNA %u\n", state);
m_atna = state;
@@ -657,7 +657,7 @@ void c64h156_device::ds_w(int ds)
live_sync();
m_ds = cur_live.ds = ds;
checkpoint();
- if (LOG) logerror("%s DS %u\n", machine().time().as_string(), ds);
+ LOG("%s DS %u\n", machine().time().as_string(), ds);
live_run();
}
}
diff --git a/src/devices/machine/64h156.h b/src/devices/machine/64h156.h
index 35b1320f920..0964f85558a 100644
--- a/src/devices/machine/64h156.h
+++ b/src/devices/machine/64h156.h
@@ -54,10 +54,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_64H156_H
+#define MAME_MACHINE_64H156_H
-#ifndef __C64H156__
-#define __C64H156__
+#pragma once
#include "imagedev/floppy.h"
#include "formats/d64_dsk.h"
@@ -93,9 +93,9 @@ public:
// construction/destruction
c64h156_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_atn_wr_callback(device_t &device, _Object object) { return downcast<c64h156_device &>(device).m_write_atn.set_callback(object); }
- template<class _Object> static devcb_base &set_sync_wr_callback(device_t &device, _Object object) { return downcast<c64h156_device &>(device).m_write_sync.set_callback(object); }
- template<class _Object> static devcb_base &set_byte_wr_callback(device_t &device, _Object object) { return downcast<c64h156_device &>(device).m_write_byte.set_callback(object); }
+ template <class Object> static devcb_base &set_atn_wr_callback(device_t &device, Object &&cb) { return downcast<c64h156_device &>(device).m_write_atn.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sync_wr_callback(device_t &device, Object &&cb) { return downcast<c64h156_device &>(device).m_write_sync.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_byte_wr_callback(device_t &device, Object &&cb) { return downcast<c64h156_device &>(device).m_write_byte.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( yb_r );
DECLARE_WRITE8_MEMBER( yb_w );
@@ -196,10 +196,7 @@ private:
};
-
// device type definition
-extern const device_type C64H156;
-
-
+DECLARE_DEVICE_TYPE(C64H156, c64h156_device)
-#endif
+#endif // MAME_MACHINE_64H156_H
diff --git a/src/devices/machine/6522via.cpp b/src/devices/machine/6522via.cpp
index c407c05e59a..f2d1dacf6e2 100644
--- a/src/devices/machine/6522via.cpp
+++ b/src/devices/machine/6522via.cpp
@@ -148,7 +148,7 @@ uint16_t via6522_device::get_counter1_value()
//**************************************************************************
// device type definition
-const device_type VIA6522 = device_creator<via6522_device>;
+DEFINE_DEVICE_TYPE(VIA6522, via6522_device, "via6522", "6522 VIA")
DEVICE_ADDRESS_MAP_START( map, 8, via6522_device )
AM_RANGE(0x00, 0x0f) AM_READWRITE(read, write)
@@ -159,7 +159,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
via6522_device::via6522_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIA6522, "6522 VIA", tag, owner, clock, "via6522", __FILE__),
+ : device_t(mconfig, VIA6522, tag, owner, clock),
m_in_a_handler(*this),
m_in_b_handler(*this),
m_out_a_handler(*this),
diff --git a/src/devices/machine/6522via.h b/src/devices/machine/6522via.h
index 87fed27d9a3..8dd3616778d 100644
--- a/src/devices/machine/6522via.h
+++ b/src/devices/machine/6522via.h
@@ -13,10 +13,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_6522VIA_H
+#define MAME_MACHINE_6522VIA_H
-#ifndef __6522VIA_H__
-#define __6522VIA_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -56,24 +56,44 @@
// ======================> via6522_device
-class via6522_device : public device_t
+class via6522_device : public device_t
{
public:
+ enum
+ {
+ VIA_PB = 0,
+ VIA_PA = 1,
+ VIA_DDRB = 2,
+ VIA_DDRA = 3,
+ VIA_T1CL = 4,
+ VIA_T1CH = 5,
+ VIA_T1LL = 6,
+ VIA_T1LH = 7,
+ VIA_T2CL = 8,
+ VIA_T2CH = 9,
+ VIA_SR = 10,
+ VIA_ACR = 11,
+ VIA_PCR = 12,
+ VIA_IFR = 13,
+ VIA_IER = 14,
+ VIA_PANH = 15
+ };
+
// construction/destruction
via6522_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// TODO: REMOVE THESE
- template<class _Object> static devcb_base &set_readpa_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_in_a_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_readpb_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_in_b_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_readpa_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_in_a_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_readpb_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_in_b_handler.set_callback(std::forward<Object>(cb)); }
// TODO: CONVERT THESE TO WRITE LINE
- template<class _Object> static devcb_base &set_writepa_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_out_a_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_writepb_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_out_b_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_writepa_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_out_a_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_writepb_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_out_b_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_ca2_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_ca2_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_cb1_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_cb1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_cb2_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_cb2_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<via6522_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ca2_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_ca2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cb1_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_cb1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cb2_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_cb2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<via6522_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
virtual DECLARE_ADDRESS_MAP(map, 8);
@@ -104,26 +124,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( write_cb1 );
DECLARE_WRITE_LINE_MEMBER( write_cb2 );
- enum
- {
- VIA_PB = 0,
- VIA_PA = 1,
- VIA_DDRB = 2,
- VIA_DDRA = 3,
- VIA_T1CL = 4,
- VIA_T1CH = 5,
- VIA_T1LL = 6,
- VIA_T1LH = 7,
- VIA_T2CL = 8,
- VIA_T2CH = 9,
- VIA_SR = 10,
- VIA_ACR = 11,
- VIA_PCR = 12,
- VIA_IFR = 13,
- VIA_IER = 14,
- VIA_PANH = 15
- };
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -131,11 +131,11 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
- static const device_timer_id TIMER_SHIFT = 0;
- static const device_timer_id TIMER_T1 = 1;
- static const device_timer_id TIMER_T2 = 2;
- static const device_timer_id TIMER_CA2 = 3;
- static const device_timer_id TIMER_SHIFT_IRQ = 4;
+ static constexpr device_timer_id TIMER_SHIFT = 0;
+ static constexpr device_timer_id TIMER_T1 = 1;
+ static constexpr device_timer_id TIMER_T2 = 2;
+ static constexpr device_timer_id TIMER_CA2 = 3;
+ static constexpr device_timer_id TIMER_SHIFT_IRQ = 4;
uint16_t get_counter1_value();
@@ -213,7 +213,7 @@ private:
// device type definition
-extern const device_type VIA6522;
+DECLARE_DEVICE_TYPE(VIA6522, via6522_device)
-#endif /* __6522VIA_H__ */
+#endif // MAME_MACHINE_6522VIA_H
diff --git a/src/devices/machine/6525tpi.cpp b/src/devices/machine/6525tpi.cpp
index be33b929b6b..a82b09d104c 100644
--- a/src/devices/machine/6525tpi.cpp
+++ b/src/devices/machine/6525tpi.cpp
@@ -104,10 +104,10 @@
#define CB_MANUAL_LEVEL ((m_cr & 0x40) ? 1 : 0)
-const device_type TPI6525 = device_creator<tpi6525_device>;
+DEFINE_DEVICE_TYPE(TPI6525, tpi6525_device, "tpi6525", "6525 TPI")
tpi6525_device::tpi6525_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TPI6525, "6525 TPI", tag, owner, clock, "tpi6525", __FILE__),
+ : device_t(mconfig, TPI6525, tag, owner, clock),
m_out_irq_cb(*this),
m_in_pa_cb(*this),
m_out_pa_cb(*this),
diff --git a/src/devices/machine/6525tpi.h b/src/devices/machine/6525tpi.h
index ed927d2e11a..1164e3b31d5 100644
--- a/src/devices/machine/6525tpi.h
+++ b/src/devices/machine/6525tpi.h
@@ -28,8 +28,10 @@
*
****************************************************************************/
-#ifndef __TPI6525_H__
-#define __TPI6525_H__
+#ifndef MAME_MACHINE_6525TPI_H
+#define MAME_MACHINE_6525TPI_H
+
+#pragma once
/***************************************************************************
@@ -40,17 +42,16 @@ class tpi6525_device : public device_t
{
public:
tpi6525_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~tpi6525_device() {}
-
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<tpi6525_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<tpi6525_device &>(device).m_in_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<tpi6525_device &>(device).m_out_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<tpi6525_device &>(device).m_in_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<tpi6525_device &>(device).m_out_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pc_callback(device_t &device, _Object object) { return downcast<tpi6525_device &>(device).m_in_pc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pc_callback(device_t &device, _Object object) { return downcast<tpi6525_device &>(device).m_out_pc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_ca_callback(device_t &device, _Object object) { return downcast<tpi6525_device &>(device).m_out_ca_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_cb_callback(device_t &device, _Object object) { return downcast<tpi6525_device &>(device).m_out_cb_cb.set_callback(object); }
+
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pc_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_in_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pc_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_ca_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_ca_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_cb_callback(device_t &device, Object &&cb) { return downcast<tpi6525_device &>(device).m_out_cb_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -120,7 +121,7 @@ private:
static void port_line_w(uint8_t &port, int line, int state);
};
-extern const device_type TPI6525;
+DECLARE_DEVICE_TYPE(TPI6525, tpi6525_device)
#define MCFG_TPI6525_OUT_IRQ_CB(_devcb) \
@@ -151,4 +152,4 @@ extern const device_type TPI6525;
devcb = &tpi6525_device::set_out_cb_callback(*device, DEVCB_##_devcb);
-#endif /* __TPI6525_H__ */
+#endif // MAME_MACHINE_6525TPI_H
diff --git a/src/devices/machine/6532riot.cpp b/src/devices/machine/6532riot.cpp
index 1ef406a1a73..a04cac9fd79 100644
--- a/src/devices/machine/6532riot.cpp
+++ b/src/devices/machine/6532riot.cpp
@@ -22,7 +22,7 @@ The timer seems to follow these rules:
//**************************************************************************
// device type definition
-const device_type RIOT6532 = device_creator<riot6532_device>;
+DEFINE_DEVICE_TYPE(RIOT6532, riot6532_device, "riot6532", "6532 RIOT")
enum
{
@@ -387,7 +387,7 @@ uint8_t riot6532_device::portb_out_get()
//-------------------------------------------------
riot6532_device::riot6532_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RIOT6532, "6532 RIOT", tag, owner, clock, "riot6532", __FILE__),
+ : device_t(mconfig, RIOT6532, tag, owner, clock),
m_in_pa_cb(*this),
m_out_pa_cb(*this),
m_in_pb_cb(*this),
diff --git a/src/devices/machine/6532riot.h b/src/devices/machine/6532riot.h
index b4d558cbcc6..36df16dbe73 100644
--- a/src/devices/machine/6532riot.h
+++ b/src/devices/machine/6532riot.h
@@ -121,6 +121,6 @@ private:
// device type definition
-extern const device_type RIOT6532;
+DECLARE_DEVICE_TYPE(RIOT6532, riot6532_device)
#endif
diff --git a/src/devices/machine/68153bim.cpp b/src/devices/machine/68153bim.cpp
index 4d9bd20d07a..85682cdeb31 100644
--- a/src/devices/machine/68153bim.cpp
+++ b/src/devices/machine/68153bim.cpp
@@ -59,9 +59,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
// device type definition
-const device_type MC68153_CHANNEL = device_creator<bim68153_channel>;
-const device_type MC68153 = device_creator<bim68153_device>;
-const device_type EI68C153 = device_creator<ei68c153_device>;
+DEFINE_DEVICE_TYPE(MC68153_CHANNEL, bim68153_channel, "bim68153_channel", "68153 BIM channel")
+DEFINE_DEVICE_TYPE(MC68153, bim68153_device, "m68153bim", "Motorola MC68153 BIM")
+DEFINE_DEVICE_TYPE(EI68C153, ei68c153_device, "ei68c153", "EPIC EI68C153 BIM")
//-------------------------------------------------
// device_mconfig_additions -
@@ -86,35 +86,29 @@ machine_config_constructor bim68153_device::device_mconfig_additions() const
//-------------------------------------------------
// bim68153_device - constructor
//-------------------------------------------------
-bim68153_device::bim68153_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
- ,m_chn{{*this, CHN0_TAG}, {*this, CHN1_TAG}, {*this, CHN2_TAG}, {*this, CHN3_TAG}}
- ,m_out_int_cb(*this)
- ,m_out_intal0_cb(*this)
- ,m_out_intal1_cb(*this)
- ,m_out_iackout_cb(*this)
- ,m_iackin(ASSERT_LINE)
- ,m_irq_level(0)
+bim68153_device::bim68153_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_chn{{*this, CHN0_TAG}, {*this, CHN1_TAG}, {*this, CHN2_TAG}, {*this, CHN3_TAG}}
+ , m_out_int_cb(*this)
+ , m_out_intal0_cb(*this)
+ , m_out_intal1_cb(*this)
+ , m_out_iackout_cb(*this)
+ , m_iackin(ASSERT_LINE)
+ , m_irq_level(0)
{
+ // FIXME: is the unused 'variant' parameter supposed to be useful for something?
LOG("%s\n", FUNCNAME);
}
bim68153_device::bim68153_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC68153, "Motorola MC68153 BIM", tag, owner, clock, "m68153bim", __FILE__)
- ,m_chn{{*this, CHN0_TAG}, {*this, CHN1_TAG}, {*this, CHN2_TAG}, {*this, CHN3_TAG}}
- ,m_out_int_cb(*this)
- ,m_out_intal0_cb(*this)
- ,m_out_intal1_cb(*this)
- ,m_out_iackout_cb(*this)
- ,m_iackin(ASSERT_LINE)
- ,m_irq_level(0)
+ : bim68153_device(mconfig, MC68153, tag, owner, clock, TYPE_MC68153)
{
LOG("%s\n", FUNCNAME);
}
/* The EPIC EI68C153 is a CMOS implementation that is fully compatible with the bipolar MC68153 from Motorola */
ei68c153_device::ei68c153_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : bim68153_device(mconfig, EI68C153, "EPIC EI68C153 BIM", tag, owner, clock, TYPE_EI68C153, "ei68c153", __FILE__)
+ : bim68153_device(mconfig, EI68C153, tag, owner, clock, TYPE_EI68C153)
{
LOG("%s\n", FUNCNAME);
}
@@ -329,11 +323,11 @@ WRITE8_MEMBER( bim68153_device::write )
//**************************************************************************
bim68153_channel::bim68153_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC68153_CHANNEL, "BIM channel", tag, owner, clock, "bim68153_channel", __FILE__)
- ,m_out_iack_cb(*this)
- ,m_int_state(NONE)
- ,m_control(0)
- ,m_vector(0)
+ : device_t(mconfig, MC68153_CHANNEL, tag, owner, clock)
+ , m_out_iack_cb(*this)
+ , m_int_state(NONE)
+ , m_control(0)
+ , m_vector(0)
{
LOG("%s\n",FUNCNAME);
}
diff --git a/src/devices/machine/68153bim.h b/src/devices/machine/68153bim.h
index ab59c94c1c1..4d7b22b6e3e 100644
--- a/src/devices/machine/68153bim.h
+++ b/src/devices/machine/68153bim.h
@@ -28,10 +28,10 @@
*
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_68153BIM_H
+#define MAME_MACHINE_68153BIM_H
-#ifndef MC68153BIM_H
-#define MC68153BIM_H
+#pragma once
//**************************************************************************
@@ -128,27 +128,26 @@ protected:
};
-class bim68153_device : public device_t
+class bim68153_device : public device_t
{
friend class bim68153_channel;
public:
// construction/destruction
- bim68153_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
bim68153_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
IRQ_CALLBACK_MEMBER(iack);
int acknowledge();
int get_irq_level();
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<bim68153_device &>(device).m_out_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_intal0_callback(device_t &device, _Object object) { return downcast<bim68153_device &>(device).m_out_intal0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_intal1_callback(device_t &device, _Object object) { return downcast<bim68153_device &>(device).m_out_intal1_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_intal0_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_out_intal0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_intal1_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_out_intal1_cb.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_out_iack0_callback(device_t &device, _Object object) { return downcast<bim68153_device &>(device).m_chn[CHN_0]->m_out_iack_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iack1_callback(device_t &device, _Object object) { return downcast<bim68153_device &>(device).m_chn[CHN_1]->m_out_iack_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iack2_callback(device_t &device, _Object object) { return downcast<bim68153_device &>(device).m_chn[CHN_2]->m_out_iack_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iack4_callback(device_t &device, _Object object) { return downcast<bim68153_device &>(device).m_chn[CHN_3]->m_out_iack_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_iack0_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_0]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_iack1_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_1]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_iack2_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_2]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_iack4_callback(device_t &device, Object &&cb) { return downcast<bim68153_device &>(device).m_chn[CHN_3]->m_out_iack_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -161,6 +160,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( int3_w ) { m_chn[CHN_3]->int_w(state); }
protected:
+ bim68153_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -217,8 +218,8 @@ public :
};
// device type definition
-extern const device_type MC68153;
-extern const device_type EI68C153;
-extern const device_type MC68153_CHANNEL;
+DECLARE_DEVICE_TYPE(MC68153, bim68153_device)
+DECLARE_DEVICE_TYPE(EI68C153, ei68c153_device)
+DECLARE_DEVICE_TYPE(MC68153_CHANNEL, bim68153_channel)
-#endif /* MC68153BIM_H */
+#endif // MAME_MACHINE_68153BIM_H
diff --git a/src/devices/machine/6821pia.cpp b/src/devices/machine/6821pia.cpp
index 489391e043f..5b8dcbe03f0 100644
--- a/src/devices/machine/6821pia.cpp
+++ b/src/devices/machine/6821pia.cpp
@@ -40,10 +40,7 @@
//**************************************************************************
// device type definition
-const device_type PIA6821 = device_creator<pia6821_device>;
-
-template class device_finder<pia6821_device, false>;
-template class device_finder<pia6821_device, true>;
+DEFINE_DEVICE_TYPE(PIA6821, pia6821_device, "pia6821", "6821 PIA")
//-------------------------------------------------
@@ -51,7 +48,7 @@ template class device_finder<pia6821_device, true>;
//-------------------------------------------------
pia6821_device::pia6821_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PIA6821, "6821 PIA", tag, owner, clock, "pia6821", __FILE__),
+ : device_t(mconfig, PIA6821, tag, owner, clock),
m_in_a_handler(*this),
m_in_b_handler(*this),
m_in_ca1_handler(*this),
diff --git a/src/devices/machine/6821pia.h b/src/devices/machine/6821pia.h
index 8c017b786fb..fb3cbb3a371 100644
--- a/src/devices/machine/6821pia.h
+++ b/src/devices/machine/6821pia.h
@@ -19,10 +19,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_DEVICES_MACHINE_6821PIA_H
+#define MAME_DEVICES_MACHINE_6821PIA_H
-#ifndef __6821PIA_H__
-#define __6821PIA_H__
+#pragma once
@@ -241,10 +241,7 @@ private:
// device type definition
-extern const device_type PIA6821;
-
-extern template class device_finder<pia6821_device, false>;
-extern template class device_finder<pia6821_device, true>;
+DECLARE_DEVICE_TYPE(PIA6821, pia6821_device)
-#endif /* __6821PIA_H__ */
+#endif // MAME_DEVICES_MACHINE_6821PIA_H
diff --git a/src/devices/machine/68230pit.cpp b/src/devices/machine/68230pit.cpp
index bf5cfec90b7..f704a4ddd9a 100644
--- a/src/devices/machine/68230pit.cpp
+++ b/src/devices/machine/68230pit.cpp
@@ -58,25 +58,25 @@
// DEVICE TYPE DEFINITIONS
//**************************************************************************
-const device_type PIT68230 = device_creator<pit68230_device>;
+DEFINE_DEVICE_TYPE(PIT68230, pit68230_device, "pit68230", "MC68230 PI/T")
//-------------------------------------------------
// pit68230_device - constructors
//-------------------------------------------------
-pit68230_device::pit68230_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t (mconfig, type, name, tag, owner, clock, shortname, source)
+pit68230_device::pit68230_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock)
, m_pa_out_cb(*this)
, m_pa_in_cb(*this)
, m_pb_out_cb(*this)
, m_pb_in_cb(*this)
, m_pc_out_cb(*this)
, m_pc_in_cb(*this)
- , m_h1_out_cb (*this)
- , m_h2_out_cb (*this)
- , m_h3_out_cb (*this)
- , m_h4_out_cb (*this)
- , m_tirq_out_cb (*this)
- , m_pirq_out_cb (*this)
+ , m_h1_out_cb(*this)
+ , m_h2_out_cb(*this)
+ , m_h3_out_cb(*this)
+ , m_h4_out_cb(*this)
+ , m_tirq_out_cb(*this)
+ , m_pirq_out_cb(*this)
, m_pgcr(0)
, m_psrr(0)
, m_paddr(0)
@@ -98,43 +98,12 @@ pit68230_device::pit68230_device(const machine_config &mconfig, device_type type
, m_cntr(0)
, m_tsr(0)
{
+ // FIXME: is the unused variant parameter supposed to be useful for something?
}
pit68230_device::pit68230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t (mconfig, PIT68230, "PIT68230", tag, owner, clock, "pit68230", __FILE__)
- , m_pa_out_cb (*this)
- , m_pa_in_cb(*this)
- , m_pb_out_cb(*this)
- , m_pb_in_cb(*this)
- , m_pc_out_cb(*this)
- , m_pc_in_cb(*this)
- , m_h1_out_cb(*this)
- , m_h2_out_cb(*this)
- , m_h3_out_cb(*this)
- , m_h4_out_cb(*this)
- , m_tirq_out_cb (*this)
- , m_pirq_out_cb (*this)
- , m_pgcr(0)
- , m_psrr(0)
- , m_paddr(0)
- , m_pbddr(0)
- , m_pcddr(0)
- , m_pivr(0)
- , m_pacr(0)
- , m_pbcr(0)
- , m_padr(0)
- , m_pbdr(0)
- , m_pcdr(0)
- , m_psr(0)
- , m_tcr(0)
- , m_tivr(0)
- , m_cpr(0)
- // , m_cprh(0) // Collectivelly handled by m_cpr
- // , m_cprm(0) // Collectivelly handled by m_cpr
- // , m_cprl(0) // Collectivelly handled by m_cpr
- , m_cntr(0)
- , m_tsr(0)
+ : pit68230_device (mconfig, PIT68230, tag, owner, clock, 0)
{
}
diff --git a/src/devices/machine/68230pit.h b/src/devices/machine/68230pit.h
index 80614f926cb..14b71943cd6 100644
--- a/src/devices/machine/68230pit.h
+++ b/src/devices/machine/68230pit.h
@@ -32,10 +32,10 @@
*
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHIEN_68230PIT_H
+#define MAME_MACHIEN_68230PIT_H
-#ifndef __68230PIT_H__
-#define __68230PIT_H__
+#pragma once
//**************************************************************************
@@ -110,29 +110,29 @@
//**************************************************************************
class pit68230_device : public device_t//, public device_execute_interface
{
- public:
+public:
// construction/destruction
- pit68230_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
pit68230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_pa_in_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_pa_in_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_pa_out_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_pa_out_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_pb_in_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_pb_in_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_pb_out_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_pb_out_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_pc_in_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_pc_in_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_pc_out_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_pc_out_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_h1_out_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_h1_out_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_h2_out_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_h2_out_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_h3_out_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_h3_out_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_h4_out_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_h4_out_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_tirq_out_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_tirq_out_cb.set_callback (object); }
- template<class _Object> static devcb_base &set_pirq_out_callback (device_t &device, _Object object){ return downcast<pit68230_device &>(device).m_pirq_out_cb.set_callback (object); }
+
+ template <class Object> static devcb_base &set_pa_in_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pa_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pa_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pa_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pb_in_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pb_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pb_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pb_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pc_in_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pc_in_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pc_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pc_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_h1_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h1_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_h2_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h2_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_h3_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h3_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_h4_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_h4_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_tirq_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_tirq_out_cb.set_callback (std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pirq_out_callback (device_t &device, Object &&cb){ return downcast<pit68230_device &>(device).m_pirq_out_cb.set_callback (std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER (write);
DECLARE_READ8_MEMBER (read);
// TODO: remove these methods and replace it with a call to methods below in force68k.cpp
- void h1_set (uint8_t state){ if (state) m_psr |= 1; else m_psr &= ~1; }
- void portb_setbit (uint8_t bit, uint8_t state);
+ void h1_set(uint8_t state) { if (state) m_psr |= 1; else m_psr &= ~1; }
+ void portb_setbit(uint8_t bit, uint8_t state);
// Bit updaters
void pa_update_bit(uint8_t bit, uint8_t state);
@@ -145,34 +145,34 @@ class pit68230_device : public device_t//, public device_execute_interface
DECLARE_WRITE_LINE_MEMBER( h3_w );
DECLARE_WRITE_LINE_MEMBER( h4_w );
- DECLARE_WRITE_LINE_MEMBER( pa0_w ){ pa_update_bit(0, state); }
- DECLARE_WRITE_LINE_MEMBER( pa1_w ){ pa_update_bit(1, state); }
- DECLARE_WRITE_LINE_MEMBER( pa2_w ){ pa_update_bit(2, state); }
- DECLARE_WRITE_LINE_MEMBER( pa3_w ){ pa_update_bit(3, state); }
- DECLARE_WRITE_LINE_MEMBER( pa4_w ){ pa_update_bit(4, state); }
- DECLARE_WRITE_LINE_MEMBER( pa5_w ){ pa_update_bit(5, state); }
- DECLARE_WRITE_LINE_MEMBER( pa6_w ){ pa_update_bit(6, state); }
- DECLARE_WRITE_LINE_MEMBER( pa7_w ){ pa_update_bit(7, state); }
-
- DECLARE_WRITE_LINE_MEMBER( pb0_w ){ pb_update_bit(0, state); }
- DECLARE_WRITE_LINE_MEMBER( pb1_w ){ pb_update_bit(1, state); }
- DECLARE_WRITE_LINE_MEMBER( pb2_w ){ pb_update_bit(2, state); }
- DECLARE_WRITE_LINE_MEMBER( pb3_w ){ pb_update_bit(3, state); }
- DECLARE_WRITE_LINE_MEMBER( pb4_w ){ pb_update_bit(4, state); }
- DECLARE_WRITE_LINE_MEMBER( pb5_w ){ pb_update_bit(5, state); }
- DECLARE_WRITE_LINE_MEMBER( pb6_w ){ pb_update_bit(6, state); }
- DECLARE_WRITE_LINE_MEMBER( pb7_w ){ pb_update_bit(7, state); }
-
- DECLARE_WRITE_LINE_MEMBER( pc0_w ){ pc_update_bit(0, state); }
- DECLARE_WRITE_LINE_MEMBER( pc1_w ){ pc_update_bit(1, state); }
- DECLARE_WRITE_LINE_MEMBER( pc2_w ){ pc_update_bit(2, state); }
- DECLARE_WRITE_LINE_MEMBER( pc3_w ){ pc_update_bit(3, state); }
- DECLARE_WRITE_LINE_MEMBER( pc4_w ){ pc_update_bit(4, state); }
- DECLARE_WRITE_LINE_MEMBER( pc5_w ){ pc_update_bit(5, state); }
- DECLARE_WRITE_LINE_MEMBER( pc6_w ){ pc_update_bit(6, state); }
- DECLARE_WRITE_LINE_MEMBER( pc7_w ){ pc_update_bit(7, state); }
-
- private:
+ DECLARE_WRITE_LINE_MEMBER( pa0_w ) { pa_update_bit(0, state); }
+ DECLARE_WRITE_LINE_MEMBER( pa1_w ) { pa_update_bit(1, state); }
+ DECLARE_WRITE_LINE_MEMBER( pa2_w ) { pa_update_bit(2, state); }
+ DECLARE_WRITE_LINE_MEMBER( pa3_w ) { pa_update_bit(3, state); }
+ DECLARE_WRITE_LINE_MEMBER( pa4_w ) { pa_update_bit(4, state); }
+ DECLARE_WRITE_LINE_MEMBER( pa5_w ) { pa_update_bit(5, state); }
+ DECLARE_WRITE_LINE_MEMBER( pa6_w ) { pa_update_bit(6, state); }
+ DECLARE_WRITE_LINE_MEMBER( pa7_w ) { pa_update_bit(7, state); }
+
+ DECLARE_WRITE_LINE_MEMBER( pb0_w ) { pb_update_bit(0, state); }
+ DECLARE_WRITE_LINE_MEMBER( pb1_w ) { pb_update_bit(1, state); }
+ DECLARE_WRITE_LINE_MEMBER( pb2_w ) { pb_update_bit(2, state); }
+ DECLARE_WRITE_LINE_MEMBER( pb3_w ) { pb_update_bit(3, state); }
+ DECLARE_WRITE_LINE_MEMBER( pb4_w ) { pb_update_bit(4, state); }
+ DECLARE_WRITE_LINE_MEMBER( pb5_w ) { pb_update_bit(5, state); }
+ DECLARE_WRITE_LINE_MEMBER( pb6_w ) { pb_update_bit(6, state); }
+ DECLARE_WRITE_LINE_MEMBER( pb7_w ) { pb_update_bit(7, state); }
+
+ DECLARE_WRITE_LINE_MEMBER( pc0_w ) { pc_update_bit(0, state); }
+ DECLARE_WRITE_LINE_MEMBER( pc1_w ) { pc_update_bit(1, state); }
+ DECLARE_WRITE_LINE_MEMBER( pc2_w ) { pc_update_bit(2, state); }
+ DECLARE_WRITE_LINE_MEMBER( pc3_w ) { pc_update_bit(3, state); }
+ DECLARE_WRITE_LINE_MEMBER( pc4_w ) { pc_update_bit(4, state); }
+ DECLARE_WRITE_LINE_MEMBER( pc5_w ) { pc_update_bit(5, state); }
+ DECLARE_WRITE_LINE_MEMBER( pc6_w ) { pc_update_bit(6, state); }
+ DECLARE_WRITE_LINE_MEMBER( pc7_w ) { pc_update_bit(7, state); }
+
+private:
void wr_pitreg_pgcr(uint8_t data);
void wr_pitreg_psrr(uint8_t data);
void wr_pitreg_paddr(uint8_t data);
@@ -311,10 +311,12 @@ protected:
void tick_clock();
+ pit68230_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
- virtual void device_start () override;
- virtual void device_reset () override;
- virtual void device_timer (emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
// Interrupt methods
void trigger_interrupt(int source);
@@ -375,6 +377,6 @@ protected:
};
// device type definition
-extern const device_type PIT68230;
+DECLARE_DEVICE_TYPE(PIT68230, pit68230_device)
-#endif /* __68230PIT_H__ */
+#endif // MAME_MACHIEN_68230PIT_H
diff --git a/src/devices/machine/68307.cpp b/src/devices/machine/68307.cpp
index fbbf8400ad7..cb51fca82fe 100644
--- a/src/devices/machine/68307.cpp
+++ b/src/devices/machine/68307.cpp
@@ -4,8 +4,11 @@
#include "emu.h"
#include "68307.h"
+#include "68307bus.h"
+#include "68307sim.h"
+#include "68307tmu.h"
-const device_type M68307 = device_creator<m68307cpu_device>;
+DEFINE_DEVICE_TYPE(M68307, m68307_cpu_device, "mc68307", "MC68307")
/* 68307 SERIAL Module */
@@ -18,24 +21,24 @@ const device_type M68307 = device_creator<m68307cpu_device>;
a custom verson here, that may change later if subtle differences exist.
*/
-READ8_MEMBER( m68307cpu_device::m68307_internal_serial_r )
+READ8_MEMBER( m68307_cpu_device::m68307_internal_serial_r )
{
- m68307cpu_device *m68k = this;
+ m68307_cpu_device *m68k = this;
if (offset&1) return m_duart->read(*m68k->program, offset>>1);
return 0x0000;
}
-WRITE8_MEMBER(m68307cpu_device::m68307_internal_serial_w)
+WRITE8_MEMBER(m68307_cpu_device::m68307_internal_serial_w)
{
- m68307cpu_device *m68k = this;
+ m68307_cpu_device *m68k = this;
if (offset & 1) m_duart->write(*m68k->program, offset >> 1, data);
}
-static ADDRESS_MAP_START( m68307_internal_map, AS_PROGRAM, 16, m68307cpu_device )
+static ADDRESS_MAP_START( m68307_internal_map, AS_PROGRAM, 16, m68307_cpu_device )
AM_RANGE(0x000000f0, 0x000000ff) AM_READWRITE(m68307_internal_base_r, m68307_internal_base_w)
ADDRESS_MAP_END
@@ -43,21 +46,21 @@ ADDRESS_MAP_END
static MACHINE_CONFIG_FRAGMENT( 68307fragment )
MCFG_MC68681_ADD("internal68681", 16000000/4) // ?? Mhz - should be specified in inline config
- MCFG_MC68681_IRQ_CALLBACK(WRITELINE(m68307cpu_device, m68307_duart_irq_handler))
- MCFG_MC68681_A_TX_CALLBACK(WRITELINE(m68307cpu_device, m68307_duart_txa))
- MCFG_MC68681_B_TX_CALLBACK(WRITELINE(m68307cpu_device, m68307_duart_txb))
- MCFG_MC68681_INPORT_CALLBACK(READ8(m68307cpu_device, m68307_duart_input_r))
- MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(m68307cpu_device, m68307_duart_output_w))
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(m68307_cpu_device, m68307_duart_irq_handler))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE(m68307_cpu_device, m68307_duart_txa))
+ MCFG_MC68681_B_TX_CALLBACK(WRITELINE(m68307_cpu_device, m68307_duart_txb))
+ MCFG_MC68681_INPORT_CALLBACK(READ8(m68307_cpu_device, m68307_duart_input_r))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(m68307_cpu_device, m68307_duart_output_w))
MACHINE_CONFIG_END
-machine_config_constructor m68307cpu_device::device_mconfig_additions() const
+machine_config_constructor m68307_cpu_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( 68307fragment );
}
-m68307cpu_device::m68307cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : m68000_device(mconfig, "MC68307", tag, owner, clock, M68307, 16,24, ADDRESS_MAP_NAME(m68307_internal_map), "mc68307", __FILE__),
+m68307_cpu_device::m68307_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_device(mconfig, tag, owner, clock, M68307, 16, 24, ADDRESS_MAP_NAME(m68307_internal_map)),
write_irq(*this),
write_a_tx(*this),
write_b_tx(*this),
@@ -79,7 +82,7 @@ m68307cpu_device::m68307cpu_device(const machine_config &mconfig, const char *ta
-void m68307cpu_device::device_reset()
+void m68307_cpu_device::device_reset()
{
m68000_device::device_reset();
@@ -98,100 +101,102 @@ void m68307cpu_device::device_reset()
and install handlers? Going through this logic for every memory access is
very slow */
-int m68307_calc_cs(m68307cpu_device *m68k, offs_t address)
+inline int m68307_cpu_device::calc_cs(offs_t address) const
{
- m68307_sim* sim = m68k->m68307SIM;
-
- for (int i=0;i<4;i++)
+ m68307_sim const &sim = *m68307SIM;
+ for (int i=0; i < 4; i++)
{
- int br,amask,bra;
- br = sim->m_br[i] & 1;
- amask = ((sim->m_or[i]&0x1ffc)<<11);
- bra = ((sim->m_br[i] & 0x1ffc)<<11);
- if ((br) && ((address & amask) == bra)) return i+1;
+ int const br = sim.m_br[i] & 1;
+ int const amask = (sim.m_or[i] & 0x1ffc) << 11;
+ int const bra = (sim.m_br[i] & 0x1ffc) << 11;
+ if (br && ((address & amask) == bra)) return i + 1;
}
return 0;
}
-uint16_t m68307cpu_device::simple_read_immediate_16_m68307(offs_t address)
+uint16_t m68307_cpu_device::simple_read_immediate_16_m68307(offs_t address)
{
-// m68307_currentcs = m68307_calc_cs(this, address);
+// m68307_currentcs = calc_cs(address);
return m_direct->read_word(address);
}
-uint8_t m68307cpu_device::read_byte_m68307(offs_t address)
+uint8_t m68307_cpu_device::read_byte_m68307(offs_t address)
{
-// m68307_currentcs = m68307_calc_cs(this, address);
+// m68307_currentcs = calc_cs(address);
return m_space->read_byte(address);
}
-uint16_t m68307cpu_device::read_word_m68307(offs_t address)
+uint16_t m68307_cpu_device::read_word_m68307(offs_t address)
{
-// m68307_currentcs = m68307_calc_cs(this, address);
+// m68307_currentcs = calc_cs(address);
return m_space->read_word(address);
}
-uint32_t m68307cpu_device::read_dword_m68307(offs_t address)
+uint32_t m68307_cpu_device::read_dword_m68307(offs_t address)
{
-// m68307_currentcs = m68307_calc_cs(this, address);
+// m68307_currentcs = calc_cs(address);
return m_space->read_dword(address);
}
-void m68307cpu_device::write_byte_m68307(offs_t address, uint8_t data)
+void m68307_cpu_device::write_byte_m68307(offs_t address, uint8_t data)
{
-// m68307_currentcs = m68307_calc_cs(this, address);
+// m68307_currentcs = calc_cs(address);
m_space->write_byte(address, data);
}
-void m68307cpu_device::write_word_m68307(offs_t address, uint16_t data)
+void m68307_cpu_device::write_word_m68307(offs_t address, uint16_t data)
{
-// m68307_currentcs = m68307_calc_cs(this, address);
+// m68307_currentcs = calc_cs(address);
m_space->write_word(address, data);
}
-void m68307cpu_device::write_dword_m68307(offs_t address, uint32_t data)
+void m68307_cpu_device::write_dword_m68307(offs_t address, uint32_t data)
{
-// m68307_currentcs = m68307_calc_cs(this, address);
+// m68307_currentcs = calc_cs(address);
m_space->write_dword(address, data);
}
-void m68307cpu_device::init16_m68307(address_space &space)
+void m68307_cpu_device::init16_m68307(address_space &space)
{
m_space = &space;
m_direct = &space.direct();
opcode_xor = 0;
- readimm16 = m68k_readimm16_delegate(&m68307cpu_device::simple_read_immediate_16_m68307, this);
- read8 = m68k_read8_delegate(&m68307cpu_device::read_byte_m68307, this);
- read16 = m68k_read16_delegate(&m68307cpu_device::read_word_m68307, this);
- read32 = m68k_read32_delegate(&m68307cpu_device::read_dword_m68307, this);
- write8 = m68k_write8_delegate(&m68307cpu_device::write_byte_m68307, this);
- write16 = m68k_write16_delegate(&m68307cpu_device::write_word_m68307, this);
- write32 = m68k_write32_delegate(&m68307cpu_device::write_dword_m68307, this);
+ readimm16 = m68k_readimm16_delegate(&m68307_cpu_device::simple_read_immediate_16_m68307, this);
+ read8 = m68k_read8_delegate(&m68307_cpu_device::read_byte_m68307, this);
+ read16 = m68k_read16_delegate(&m68307_cpu_device::read_word_m68307, this);
+ read32 = m68k_read32_delegate(&m68307_cpu_device::read_dword_m68307, this);
+ write8 = m68k_write8_delegate(&m68307_cpu_device::write_byte_m68307, this);
+ write16 = m68k_write16_delegate(&m68307_cpu_device::write_word_m68307, this);
+ write32 = m68k_write32_delegate(&m68307_cpu_device::write_dword_m68307, this);
}
-void m68307cpu_device::set_port_callbacks(m68307_porta_read_delegate porta_r, m68307_porta_write_delegate porta_w, m68307_portb_read_delegate portb_r, m68307_portb_write_delegate portb_w)
+void m68307_cpu_device::set_port_callbacks(
+ porta_read_delegate &&porta_r,
+ porta_write_delegate &&porta_w,
+ portb_read_delegate &&portb_r,
+ portb_write_delegate &&portb_w)
{
- m_m68307_porta_r = porta_r;
- m_m68307_porta_w = porta_w;
- m_m68307_portb_r = portb_r;
- m_m68307_portb_w = portb_w;
+ m_porta_r = std::move(porta_r);
+ m_porta_w = std::move(porta_w);
+ m_portb_r = std::move(portb_r);
+ m_portb_w = std::move(portb_w);
}
-uint16_t m68307cpu_device::get_cs(offs_t address)
+uint16_t m68307_cpu_device::get_cs(offs_t address)
{
- m68307_currentcs = m68307_calc_cs(this, address);
+ m68307_currentcs = calc_cs(address);
return m68307_currentcs;
}
@@ -199,19 +204,19 @@ uint16_t m68307cpu_device::get_cs(offs_t address)
/* 68307 specifics - MOVE */
-void m68307cpu_device::set_interrupt(int level, int vector)
+void m68307_cpu_device::set_interrupt(int level, int vector)
{
set_input_line_and_vector(level, HOLD_LINE, vector);
}
-void m68307cpu_device::timer0_interrupt()
+void m68307_cpu_device::timer0_interrupt()
{
int prioritylevel = (m68307SIM->m_picr & 0x7000)>>12;
int vector = (m68307SIM->m_pivr & 0x00f0) | 0xa;
set_interrupt(prioritylevel, vector);
}
-void m68307cpu_device::timer1_interrupt()
+void m68307_cpu_device::timer1_interrupt()
{
int prioritylevel = (m68307SIM->m_picr & 0x0700)>>8;
int vector = (m68307SIM->m_pivr & 0x00f0) | 0xb;
@@ -219,13 +224,13 @@ void m68307cpu_device::timer1_interrupt()
}
-void m68307cpu_device::serial_interrupt(int vector)
+void m68307_cpu_device::serial_interrupt(int vector)
{
int prioritylevel = (m68307SIM->m_picr & 0x0070)>>4;
set_interrupt(prioritylevel, vector);
}
-WRITE_LINE_MEMBER(m68307cpu_device::m68307_duart_irq_handler)
+WRITE_LINE_MEMBER(m68307_cpu_device::m68307_duart_irq_handler)
{
if (state == ASSERT_LINE)
{
@@ -233,14 +238,14 @@ WRITE_LINE_MEMBER(m68307cpu_device::m68307_duart_irq_handler)
}
}
-void m68307cpu_device::mbus_interrupt()
+void m68307_cpu_device::mbus_interrupt()
{
int prioritylevel = (m68307SIM->m_picr & 0x0007)>>0;
int vector = (m68307SIM->m_pivr & 0x00f0) | 0xd;
set_interrupt(prioritylevel, vector);
}
-void m68307cpu_device::licr2_interrupt()
+void m68307_cpu_device::licr2_interrupt()
{
int prioritylevel = (m68307SIM->m_licr2 & 0x0007)>>0;
int vector = (m68307SIM->m_pivr & 0x00f0) | 0x9;
@@ -250,7 +255,7 @@ void m68307cpu_device::licr2_interrupt()
set_interrupt(prioritylevel, vector);
}
-void m68307cpu_device::device_start()
+void m68307_cpu_device::device_start()
{
init_cpu_m68000();
@@ -281,14 +286,14 @@ void m68307cpu_device::device_start()
read_inport.resolve();
write_outport.resolve_safe();
- set_port_callbacks(m68307_porta_read_delegate(),m68307_porta_write_delegate(),m68307_portb_read_delegate(),m68307_portb_write_delegate());
+ set_port_callbacks(porta_read_delegate(), porta_write_delegate(), portb_read_delegate(), portb_write_delegate());
}
-READ16_MEMBER( m68307cpu_device::m68307_internal_base_r )
+READ16_MEMBER( m68307_cpu_device::m68307_internal_base_r )
{
- m68307cpu_device *m68k = this;
+ m68307_cpu_device *m68k = this;
int pc = space.device().safe_pc();
logerror("%08x m68307_internal_base_r %08x, (%04x)\n", pc, offset*2,mem_mask);
@@ -305,9 +310,9 @@ READ16_MEMBER( m68307cpu_device::m68307_internal_base_r )
return 0x0000;
}
-WRITE16_MEMBER( m68307cpu_device::m68307_internal_base_w )
+WRITE16_MEMBER( m68307_cpu_device::m68307_internal_base_w )
{
- m68307cpu_device *m68k = this;
+ m68307_cpu_device *m68k = this;
int pc = space.device().safe_pc();
logerror("%08x m68307_internal_base_w %08x, %04x (%04x)\n", pc, offset*2,data,mem_mask);
@@ -333,10 +338,10 @@ WRITE16_MEMBER( m68307cpu_device::m68307_internal_base_w )
base = (m68k->m68307_base & 0x0fff) << 12;
//mask = (m68k->m68307_base & 0xe000) >> 13;
//if ( m68k->m68307_base & 0x1000 ) mask |= 7;
- m68k->internal->install_readwrite_handler(base + 0x000, base + 0x04f, read16_delegate(FUNC(m68307cpu_device::m68307_internal_sim_r),this), write16_delegate(FUNC(m68307cpu_device::m68307_internal_sim_w),this));
- m68k->internal->install_readwrite_handler(base + 0x100, base + 0x11f, read8_delegate(FUNC(m68307cpu_device::m68307_internal_serial_r),this), write8_delegate(FUNC(m68307cpu_device::m68307_internal_serial_w),this), 0xffff);
- m68k->internal->install_readwrite_handler(base + 0x120, base + 0x13f, read16_delegate(FUNC(m68307cpu_device::m68307_internal_timer_r),this), write16_delegate(FUNC(m68307cpu_device::m68307_internal_timer_w),this));
- m68k->internal->install_readwrite_handler(base + 0x140, base + 0x149, read8_delegate(FUNC(m68307cpu_device::m68307_internal_mbus_r),this), write8_delegate(FUNC(m68307cpu_device::m68307_internal_mbus_w),this), 0xffff);
+ m68k->internal->install_readwrite_handler(base + 0x000, base + 0x04f, read16_delegate(FUNC(m68307_cpu_device::m68307_internal_sim_r),this), write16_delegate(FUNC(m68307_cpu_device::m68307_internal_sim_w),this));
+ m68k->internal->install_readwrite_handler(base + 0x100, base + 0x11f, read8_delegate(FUNC(m68307_cpu_device::m68307_internal_serial_r),this), write8_delegate(FUNC(m68307_cpu_device::m68307_internal_serial_w),this), 0xffff);
+ m68k->internal->install_readwrite_handler(base + 0x120, base + 0x13f, read16_delegate(FUNC(m68307_cpu_device::m68307_internal_timer_r),this), write16_delegate(FUNC(m68307_cpu_device::m68307_internal_timer_w),this));
+ m68k->internal->install_readwrite_handler(base + 0x140, base + 0x149, read8_delegate(FUNC(m68307_cpu_device::m68307_internal_mbus_r),this), write8_delegate(FUNC(m68307_cpu_device::m68307_internal_mbus_w),this), 0xffff);
break;
diff --git a/src/devices/machine/68307.h b/src/devices/machine/68307.h
index c3ea6ea9286..e6ba1afcf44 100644
--- a/src/devices/machine/68307.h
+++ b/src/devices/machine/68307.h
@@ -1,61 +1,52 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/* 68307 */
-
+#ifndef MAME_MACHINE_68307_H
+#define MAME_MACHINE_68307_H
#pragma once
-#ifndef __M68307_H__
-#define __M68307_H__
#include "cpu/m68000/m68000.h"
-
-#include "68307sim.h"
-#include "68307bus.h"
-#include "68307tmu.h"
#include "machine/mc68681.h"
-typedef device_delegate<uint8_t (address_space &space, bool dedicated, uint8_t line_mask)> m68307_porta_read_delegate;
-typedef device_delegate<void (address_space &space, bool dedicated, uint8_t data, uint8_t line_mask)> m68307_porta_write_delegate;
-typedef device_delegate<uint16_t (address_space &space, bool dedicated, uint16_t line_mask)> m68307_portb_read_delegate;
-typedef device_delegate<void (address_space &space, bool dedicated, uint16_t data, uint16_t line_mask)> m68307_portb_write_delegate;
-
-
/* trampolines so we can specify the 68681 serial configuration when adding the CPU */
#define MCFG_MC68307_SERIAL_A_TX_CALLBACK(_cb) \
- devcb = &m68307cpu_device::set_a_tx_cb(*device, DEVCB_##_cb);
+ devcb = &m68307_cpu_device::set_a_tx_cb(*device, DEVCB_##_cb);
#define MCFG_MC68307_SERIAL_B_TX_CALLBACK(_cb) \
- devcb = &m68307cpu_device::set_b_tx_cb(*device, DEVCB_##_cb);
+ devcb = &m68307_cpu_device::set_b_tx_cb(*device, DEVCB_##_cb);
// deprecated: use ipX_w() instead
#define MCFG_MC68307_SERIAL_INPORT_CALLBACK(_cb) \
- devcb = &m68307cpu_device::set_inport_cb(*device, DEVCB_##_cb);
+ devcb = &m68307_cpu_device::set_inport_cb(*device, DEVCB_##_cb);
#define MCFG_MC68307_SERIAL_OUTPORT_CALLBACK(_cb) \
- devcb = &m68307cpu_device::set_outport_cb(*device, DEVCB_##_cb);
+ devcb = &m68307_cpu_device::set_outport_cb(*device, DEVCB_##_cb);
-class m68307cpu_device : public m68000_device {
+class m68307_cpu_device : public m68000_device
+{
public:
- m68307cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ typedef device_delegate<uint8_t (address_space &space, bool dedicated, uint8_t line_mask)> porta_read_delegate;
+ typedef device_delegate<void (address_space &space, bool dedicated, uint8_t data, uint8_t line_mask)> porta_write_delegate;
+ typedef device_delegate<uint16_t (address_space &space, bool dedicated, uint16_t line_mask)> portb_read_delegate;
+ typedef device_delegate<void (address_space &space, bool dedicated, uint16_t data, uint16_t line_mask)> portb_write_delegate;
+
+ m68307_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
/* trampolines so we can specify the 68681 serial configuration when adding the CPU */
- template<class _Object> static devcb_base &set_irq_cb(device_t &device, _Object object) { return downcast<m68307cpu_device &>(device).write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_a_tx_cb(device_t &device, _Object object) { return downcast<m68307cpu_device &>(device).write_a_tx.set_callback(object); }
- template<class _Object> static devcb_base &set_b_tx_cb(device_t &device, _Object object) { return downcast<m68307cpu_device &>(device).write_b_tx.set_callback(object); }
- template<class _Object> static devcb_base &set_inport_cb(device_t &device, _Object object) { return downcast<m68307cpu_device &>(device).read_inport.set_callback(object); }
- template<class _Object> static devcb_base &set_outport_cb(device_t &device, _Object object) { return downcast<m68307cpu_device &>(device).write_outport.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_a_tx_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).write_a_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_b_tx_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).write_b_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_inport_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).read_inport.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_outport_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).write_outport.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(m68307_duart_irq_handler);
- DECLARE_WRITE_LINE_MEMBER(m68307_duart_txa){ write_a_tx(state); }
- DECLARE_WRITE_LINE_MEMBER(m68307_duart_txb){ write_b_tx(state); }
- DECLARE_READ8_MEMBER(m68307_duart_input_r){ return read_inport(); }
- DECLARE_WRITE8_MEMBER(m68307_duart_output_w){ write_outport(data); }
- devcb_write_line write_irq, write_a_tx, write_b_tx;
- devcb_read8 read_inport;
- devcb_write8 write_outport;
-
+ DECLARE_WRITE_LINE_MEMBER(m68307_duart_txa) { write_a_tx(state); }
+ DECLARE_WRITE_LINE_MEMBER(m68307_duart_txb) { write_b_tx(state); }
+ DECLARE_READ8_MEMBER(m68307_duart_input_r) { return read_inport(); }
+ DECLARE_WRITE8_MEMBER(m68307_duart_output_w) { write_outport(data); }
uint16_t simple_read_immediate_16_m68307(offs_t address);
@@ -66,20 +57,6 @@ public:
void write_word_m68307(offs_t address, uint16_t data);
void write_dword_m68307(offs_t address, uint32_t data);
-
- /* 68307 peripheral modules */
- m68307_sim* m68307SIM;
- m68307_mbus* m68307MBUS;
-// m68307_serial* m68307SERIAL;
- m68307_timer* m68307TIMER;
-
- uint16_t m68307_base;
- uint16_t m68307_scrhigh;
- uint16_t m68307_scrlow;
-
- int m68307_currentcs;
-
-
DECLARE_READ16_MEMBER( m68307_internal_base_r );
DECLARE_WRITE16_MEMBER( m68307_internal_base_w );
DECLARE_READ16_MEMBER( m68307_internal_timer_r );
@@ -91,38 +68,60 @@ public:
DECLARE_READ8_MEMBER( m68307_internal_mbus_r );
DECLARE_WRITE8_MEMBER( m68307_internal_mbus_w );
-
/* callbacks for internal ports */
- void set_port_callbacks(m68307_porta_read_delegate porta_r, m68307_porta_write_delegate porta_w, m68307_portb_read_delegate portb_r, m68307_portb_write_delegate portb_w);
- void set_interrupt(int level, int vector);
+ void set_port_callbacks(porta_read_delegate &&porta_r, porta_write_delegate &&porta_w, portb_read_delegate &&portb_r, portb_write_delegate &&portb_w);
uint16_t get_cs(offs_t address);
+ void licr2_interrupt();
+
+protected:
+ class m68307_sim;
+ class m68307_mbus;
+ class m68307_timer;
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual machine_config_constructor device_mconfig_additions() const override;
+
+ virtual uint32_t disasm_min_opcode_bytes() const override { return 2; }
+ virtual uint32_t disasm_max_opcode_bytes() const override { return 10; }
+
+ virtual uint32_t execute_min_cycles() const override { return 4; }
+ virtual uint32_t execute_max_cycles() const override { return 158; }
+
+ void set_interrupt(int level, int vector);
void timer0_interrupt();
void timer1_interrupt();
void serial_interrupt(int vector);
void mbus_interrupt();
- void licr2_interrupt();
-
- m68307_porta_read_delegate m_m68307_porta_r;
- m68307_porta_write_delegate m_m68307_porta_w;
- m68307_portb_read_delegate m_m68307_portb_r;
- m68307_portb_write_delegate m_m68307_portb_w;
void init16_m68307(address_space &space);
- virtual uint32_t disasm_min_opcode_bytes() const override { return 2; };
- virtual uint32_t disasm_max_opcode_bytes() const override { return 10; };
+ int calc_cs(offs_t address) const;
- virtual uint32_t execute_min_cycles() const override { return 4; };
- virtual uint32_t execute_max_cycles() const override { return 158; };
+ devcb_write_line write_irq, write_a_tx, write_b_tx;
+ devcb_read8 read_inport;
+ devcb_write8 write_outport;
+
+ /* 68307 peripheral modules */
+ m68307_sim* m68307SIM;
+ m68307_mbus* m68307MBUS;
+// m68307_serial* m68307SERIAL;
+ m68307_timer* m68307TIMER;
+
+ uint16_t m68307_base;
+ uint16_t m68307_scrhigh;
+ uint16_t m68307_scrlow;
+
+ int m68307_currentcs;
+
+ porta_read_delegate m_porta_r;
+ porta_write_delegate m_porta_w;
+ portb_read_delegate m_portb_r;
+ portb_write_delegate m_portb_w;
required_device<mc68681_device> m_duart;
-protected:
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_start() override;
- virtual void device_reset() override;
};
-extern const device_type M68307;
-
+DECLARE_DEVICE_TYPE(M68307, m68307_cpu_device)
-#endif
+#endif // MAME_MACHINE_68307_H
diff --git a/src/devices/machine/68307bus.cpp b/src/devices/machine/68307bus.cpp
index 91c193f2d4e..3eea5a0811d 100644
--- a/src/devices/machine/68307bus.cpp
+++ b/src/devices/machine/68307bus.cpp
@@ -4,109 +4,107 @@
/* all ports on this are 8-bit? */
#include "emu.h"
-#include "68307.h"
+#include "68307bus.h"
-READ8_MEMBER( m68307cpu_device::m68307_internal_mbus_r )
+#define m68307BUS_MADR (0x01)
+#define m68307BUS_MFDR (0x03)
+#define m68307BUS_MBCR (0x05)
+#define m68307BUS_MBSR (0x07)
+#define m68307BUS_MBDR (0x09)
+
+READ8_MEMBER( m68307_cpu_device::m68307_internal_mbus_r )
{
- m68307cpu_device *m68k = this;
- m68307_mbus* mbus = m68k->m68307MBUS;
- assert(mbus != nullptr);
+ assert(m68307MBUS);
+ m68307_mbus &mbus = *m68307MBUS;
uint8_t retval;
- if (mbus)
- {
- int pc = space.device().safe_pc();
-
-
- switch (offset)
- {
- case m68307BUS_MADR:
- logerror("%08x m68307_internal_mbus_r %08x (MADR - M-Bus Address Register)\n", pc, offset);
- return space.machine().rand();
-
- case m68307BUS_MFDR:
- logerror("%08x m68307_internal_mbus_r %08x (MFDR - M-Bus Frequency Divider Register)\n", pc, offset);
- return space.machine().rand();
-
- case m68307BUS_MBCR:
- logerror("%08x m68307_internal_mbus_r %08x (MFCR - M-Bus Control Register)\n", pc, offset);
- return mbus->m_MFCR;//space.machine().rand();
+ int pc = space.device().safe_pc();
- case m68307BUS_MBSR:
- logerror("%08x m68307_internal_mbus_r %08x (MBSR - M-Bus Status Register)\n", pc, offset);
- retval = 0;
- if (mbus->m_busy) retval |= 0x20;
- if (mbus->m_intpend) retval |= 0x02;
- return retval;
-
- case m68307BUS_MBDR:
- logerror("%08x m68307_internal_mbus_r %08x (MBDR - M-Bus Data I/O Register)\n", pc, offset);
- mbus->m_intpend = true;
- return 0xff;//space.machine().rand();
-
- default:
- logerror("%08x m68307_internal_mbus_r %08x (UNKNOWN / ILLEGAL)\n", pc, offset);
- return 0x00;
- }
+ switch (offset)
+ {
+ case m68307BUS_MADR:
+ logerror("%08x m68307_internal_mbus_r %08x (MADR - M-Bus Address Register)\n", pc, offset);
+ return space.machine().rand();
+
+ case m68307BUS_MFDR:
+ logerror("%08x m68307_internal_mbus_r %08x (MFDR - M-Bus Frequency Divider Register)\n", pc, offset);
+ return space.machine().rand();
+
+ case m68307BUS_MBCR:
+ logerror("%08x m68307_internal_mbus_r %08x (MFCR - M-Bus Control Register)\n", pc, offset);
+ return mbus.m_MFCR;//space.machine().rand();
+
+ case m68307BUS_MBSR:
+ logerror("%08x m68307_internal_mbus_r %08x (MBSR - M-Bus Status Register)\n", pc, offset);
+ retval = 0;
+ if (mbus.m_busy) retval |= 0x20;
+ if (mbus.m_intpend) retval |= 0x02;
+
+ return retval;
+
+ case m68307BUS_MBDR:
+ logerror("%08x m68307_internal_mbus_r %08x (MBDR - M-Bus Data I/O Register)\n", pc, offset);
+ mbus.m_intpend = true;
+ return 0xff;//space.machine().rand();
+
+ default:
+ logerror("%08x m68307_internal_mbus_r %08x (UNKNOWN / ILLEGAL)\n", pc, offset);
+ return 0x00;
}
return 0xff;
}
-WRITE8_MEMBER( m68307cpu_device::m68307_internal_mbus_w )
+WRITE8_MEMBER( m68307_cpu_device::m68307_internal_mbus_w )
{
- m68307cpu_device *m68k = this;
- m68307_mbus* mbus = m68k->m68307MBUS;
- assert(mbus != nullptr);
+ assert(m68307MBUS);
+ m68307_mbus &mbus = *m68307MBUS;
- if (mbus)
- {
- int pc = space.device().safe_pc();
+ int pc = space.device().safe_pc();
- switch (offset)
- {
- case m68307BUS_MADR:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (MADR - M-Bus Address Register)\n", pc, offset,data);
- break;
+ switch (offset)
+ {
+ case m68307BUS_MADR:
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (MADR - M-Bus Address Register)\n", pc, offset,data);
+ break;
- case m68307BUS_MFDR:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (MFDR - M-Bus Frequency Divider Register)\n", pc, offset,data);
- break;
+ case m68307BUS_MFDR:
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (MFDR - M-Bus Frequency Divider Register)\n", pc, offset,data);
+ break;
- case m68307BUS_MBCR:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (MFCR - M-Bus Control Register)\n", pc, offset,data);
+ case m68307BUS_MBCR:
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (MFCR - M-Bus Control Register)\n", pc, offset,data);
- mbus->m_MFCR = data;
- if (data & 0x80)
- {
- mbus->m_busy = false;
- mbus->m_intpend = false;
- }
- if (data & 0x20) mbus->m_busy = true;
+ mbus.m_MFCR = data;
+ if (data & 0x80)
+ {
+ mbus.m_busy = false;
+ mbus.m_intpend = false;
+ }
+ if (data & 0x20) mbus.m_busy = true;
- break;
+ break;
- case m68307BUS_MBSR:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (MBSR - M-Bus Status Register)\n", pc, offset,data);
- break;
+ case m68307BUS_MBSR:
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (MBSR - M-Bus Status Register)\n", pc, offset,data);
+ break;
- case m68307BUS_MBDR:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (MBDR - M-Bus Data I/O Register)\n", pc, offset,data);
+ case m68307BUS_MBDR:
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (MBDR - M-Bus Data I/O Register)\n", pc, offset,data);
- mbus->m_intpend = true;
+ mbus.m_intpend = true;
- break;
+ break;
- default:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (UNKNOWN / ILLEGAL)\n", pc, offset,data);
- break;
- }
+ default:
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (UNKNOWN / ILLEGAL)\n", pc, offset,data);
+ break;
}
}
-void m68307_mbus::reset(void)
+void m68307_cpu_device::m68307_mbus::reset()
{
m_busy = false;
}
diff --git a/src/devices/machine/68307bus.h b/src/devices/machine/68307bus.h
index eb6db9811ae..e927979c034 100644
--- a/src/devices/machine/68307bus.h
+++ b/src/devices/machine/68307bus.h
@@ -1,22 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
-#include "cpu/m68000/m68000.h"
+#ifndef MAME_MACHINE_68307_BUS_H
+#define MAME_MACHINE_68307_BUS_H
-#define m68307BUS_MADR (0x01)
-#define m68307BUS_MFDR (0x03)
-#define m68307BUS_MBCR (0x05)
-#define m68307BUS_MBSR (0x07)
-#define m68307BUS_MBDR (0x09)
+#pragma once
+#include "68307.h"
-class m68307_mbus
-{
- public:
+class m68307_cpu_device::m68307_mbus
+{
+public:
uint16_t m_MFCR;
bool m_busy;
bool m_intpend;
- void reset(void);
+ void reset();
};
+
+#endif // MAME_MACHINE_68307_BUS_H
diff --git a/src/devices/machine/68307sim.cpp b/src/devices/machine/68307sim.cpp
index 47479cae1da..2913d64e0a5 100644
--- a/src/devices/machine/68307sim.cpp
+++ b/src/devices/machine/68307sim.cpp
@@ -3,167 +3,181 @@
/* 68307 SIM module */
#include "emu.h"
-#include "68307.h"
-
-
-READ16_MEMBER( m68307cpu_device::m68307_internal_sim_r )
+#include "68307sim.h"
+
+/* ports */
+#define m68307SIM_PACNT (0x10)
+#define m68307SIM_PADDR (0x12)
+#define m68307SIM_PADAT (0x14)
+#define m68307SIM_PBCNT (0x16)
+#define m68307SIM_PBDDR (0x18)
+#define m68307SIM_PBDAT (0x1a)
+
+
+/* interrupt logic */
+#define m68307SIM_LICR1 (0x20)
+#define m68307SIM_LICR2 (0x22)
+#define m68307SIM_PICR (0x24)
+#define m68307SIM_PIVR (0x26)
+
+/* used for the CS logic */
+#define m68307SIM_BR0 (0x40)
+#define m68307SIM_OR0 (0x42)
+#define m68307SIM_BR1 (0x44)
+#define m68307SIM_OR1 (0x46)
+#define m68307SIM_BR2 (0x48)
+#define m68307SIM_OR2 (0x4a)
+#define m68307SIM_BR3 (0x4c)
+#define m68307SIM_OR3 (0x4e)
+
+READ16_MEMBER( m68307_cpu_device::m68307_internal_sim_r )
{
- m68307cpu_device *m68k = this;
- m68307_sim* sim = m68k->m68307SIM;
- assert(sim != nullptr);
+ assert(m68307SIM);
+ m68307_sim &sim = *m68307SIM;
int pc = space.device().safe_pc();
- if (sim)
+ switch (offset<<1)
{
- switch (offset<<1)
- {
- case m68307SIM_PADAT: return sim->read_padat(this, space, mem_mask);
- case m68307SIM_PBDAT: return sim->read_pbdat(this, space, mem_mask);
-
- case m68307SIM_LICR2: return (sim->m_licr2);
-
- case m68307SIM_BR0: return (sim->m_br[0]);
- case m68307SIM_OR0: return (sim->m_or[0]);
- case m68307SIM_BR1: return (sim->m_br[1]);
- case m68307SIM_OR1: return (sim->m_or[1]);
- case m68307SIM_BR2: return (sim->m_br[2]);
- case m68307SIM_OR2: return (sim->m_or[2]);
- case m68307SIM_BR3: return (sim->m_br[3]);
- case m68307SIM_OR3: return (sim->m_or[3]);
-
- default:
- logerror("%08x m68307_internal_sim_r %08x, (%04x)\n", pc, offset*2,mem_mask);
- return 0xff;
-
- }
+ case m68307SIM_PADAT: return sim.read_padat(this, space, mem_mask);
+ case m68307SIM_PBDAT: return sim.read_pbdat(this, space, mem_mask);
+
+ case m68307SIM_LICR2: return sim.m_licr2;
+
+ case m68307SIM_BR0: return sim.m_br[0];
+ case m68307SIM_OR0: return sim.m_or[0];
+ case m68307SIM_BR1: return sim.m_br[1];
+ case m68307SIM_OR1: return sim.m_or[1];
+ case m68307SIM_BR2: return sim.m_br[2];
+ case m68307SIM_OR2: return sim.m_or[2];
+ case m68307SIM_BR3: return sim.m_br[3];
+ case m68307SIM_OR3: return sim.m_or[3];
+
+ default:
+ logerror("%08x m68307_internal_sim_r %08x, (%04x)\n", pc, offset*2, mem_mask);
+ return 0xff;
}
return 0x0000;
}
-WRITE16_MEMBER( m68307cpu_device::m68307_internal_sim_w )
+WRITE16_MEMBER( m68307_cpu_device::m68307_internal_sim_w )
{
- m68307cpu_device *m68k = this;
- m68307_sim* sim = m68k->m68307SIM;
- assert(sim != nullptr);
+ assert(m68307SIM);
+ m68307_sim &sim = *m68307SIM;
int pc = space.device().safe_pc();
- if (sim)
+ switch (offset<<1)
{
- switch (offset<<1)
- {
- case m68307SIM_PACNT:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port A (8-bit) Control Register - PACNT)\n", pc, offset*2,data,mem_mask);
- sim->write_pacnt(data,mem_mask);
- break;
-
- case m68307SIM_PADDR:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port A (8-bit) Direction Register - PADDR)\n", pc, offset*2,data,mem_mask);
- sim->write_paddr(data,mem_mask);
- break;
-
- case m68307SIM_PADAT:
- sim->write_padat(this, space, data,mem_mask);
- break;
-
- case m68307SIM_PBCNT:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port B (16-bit) Control Register - PBCNT)\n", pc, offset*2,data,mem_mask);
- sim->write_pbcnt(data,mem_mask);
- break;
-
- case m68307SIM_PBDDR:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port B (16-bit) Direction Register - PBDDR)\n", pc, offset*2,data,mem_mask);
- sim->write_pbddr(data,mem_mask);
- break;
-
- case m68307SIM_PBDAT:
- sim->write_pbdat(this, space, data, mem_mask);
- break;
-
-
- case m68307SIM_LICR1:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Latched Interrupt Control Register 1 - LICR1)\n", pc, offset*2,data,mem_mask);
- sim->write_licr1(this,data,mem_mask);
- break;
-
- case m68307SIM_LICR2:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Latched Interrupt Control Register 2 - LICR2)\n", pc, offset*2,data,mem_mask);
- sim->write_licr2(this,data,mem_mask);
- break;
-
- case m68307SIM_PICR:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Peripheral Interrupt Control Register - PICR)\n", pc, offset*2,data,mem_mask);
- sim->write_picr(this,data,mem_mask);
- break;
-
- case m68307SIM_PIVR:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Peripheral Interrupt Vector Register - PIVR)\n", pc, offset*2,data,mem_mask);
- sim->write_pivr(this,data,mem_mask);
- break;
-
- case m68307SIM_BR0:
- COMBINE_DATA(&sim->m_br[0]);
- break;
- case m68307SIM_OR0:
- COMBINE_DATA(&sim->m_or[0]);
- break;
- case m68307SIM_BR1:
- COMBINE_DATA(&sim->m_br[1]);
- break;
- case m68307SIM_OR1:
- COMBINE_DATA(&sim->m_or[1]);
- break;
- case m68307SIM_BR2:
- COMBINE_DATA(&sim->m_br[2]);
- break;
- case m68307SIM_OR2:
- COMBINE_DATA(&sim->m_or[2]);
- break;
- case m68307SIM_BR3:
- COMBINE_DATA(&sim->m_br[3]);
- break;
- case m68307SIM_OR3:
- COMBINE_DATA(&sim->m_or[3]);
- break;
-
-
-
- default :
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x)\n", pc, offset*2,data,mem_mask);
- break;
-
- }
+ case m68307SIM_PACNT:
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port A (8-bit) Control Register - PACNT)\n", pc, offset*2,data,mem_mask);
+ sim.write_pacnt(data,mem_mask);
+ break;
+
+ case m68307SIM_PADDR:
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port A (8-bit) Direction Register - PADDR)\n", pc, offset*2,data,mem_mask);
+ sim.write_paddr(data,mem_mask);
+ break;
+
+ case m68307SIM_PADAT:
+ sim.write_padat(this, space, data,mem_mask);
+ break;
+
+ case m68307SIM_PBCNT:
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port B (16-bit) Control Register - PBCNT)\n", pc, offset*2,data,mem_mask);
+ sim.write_pbcnt(data,mem_mask);
+ break;
+
+ case m68307SIM_PBDDR:
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port B (16-bit) Direction Register - PBDDR)\n", pc, offset*2,data,mem_mask);
+ sim.write_pbddr(data,mem_mask);
+ break;
+
+ case m68307SIM_PBDAT:
+ sim.write_pbdat(this, space, data, mem_mask);
+ break;
+
+
+ case m68307SIM_LICR1:
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Latched Interrupt Control Register 1 - LICR1)\n", pc, offset*2,data,mem_mask);
+ sim.write_licr1(this,data,mem_mask);
+ break;
+
+ case m68307SIM_LICR2:
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Latched Interrupt Control Register 2 - LICR2)\n", pc, offset*2,data,mem_mask);
+ sim.write_licr2(this,data,mem_mask);
+ break;
+
+ case m68307SIM_PICR:
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Peripheral Interrupt Control Register - PICR)\n", pc, offset*2,data,mem_mask);
+ sim.write_picr(this,data,mem_mask);
+ break;
+
+ case m68307SIM_PIVR:
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Peripheral Interrupt Vector Register - PIVR)\n", pc, offset*2,data,mem_mask);
+ sim.write_pivr(this,data,mem_mask);
+ break;
+
+ case m68307SIM_BR0:
+ COMBINE_DATA(&sim.m_br[0]);
+ break;
+ case m68307SIM_OR0:
+ COMBINE_DATA(&sim.m_or[0]);
+ break;
+ case m68307SIM_BR1:
+ COMBINE_DATA(&sim.m_br[1]);
+ break;
+ case m68307SIM_OR1:
+ COMBINE_DATA(&sim.m_or[1]);
+ break;
+ case m68307SIM_BR2:
+ COMBINE_DATA(&sim.m_br[2]);
+ break;
+ case m68307SIM_OR2:
+ COMBINE_DATA(&sim.m_or[2]);
+ break;
+ case m68307SIM_BR3:
+ COMBINE_DATA(&sim.m_br[3]);
+ break;
+ case m68307SIM_OR3:
+ COMBINE_DATA(&sim.m_or[3]);
+ break;
+
+
+
+ default :
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x)\n", pc, offset*2,data,mem_mask);
+ break;
}
}
-void m68307_sim::write_pacnt(uint16_t data, uint16_t mem_mask)
+void m68307_cpu_device::m68307_sim::write_pacnt(uint16_t data, uint16_t mem_mask)
{
COMBINE_DATA(&m_pacnt);
}
-void m68307_sim::write_paddr(uint16_t data, uint16_t mem_mask)
+void m68307_cpu_device::m68307_sim::write_paddr(uint16_t data, uint16_t mem_mask)
{
COMBINE_DATA(&m_paddr);
}
-uint16_t m68307_sim::read_padat(m68307cpu_device* m68k, address_space &space, uint16_t mem_mask)
+uint16_t m68307_cpu_device::m68307_sim::read_padat(m68307_cpu_device* m68k, address_space &space, uint16_t mem_mask)
{
int pc = space.device().safe_pc();
- if (!m68k->m_m68307_porta_r.isnull())
+ if (!m68k->m_porta_r.isnull())
{
// for general purpose bits, if configured as 'output' then anything output gets latched
// and anything configured as input is read from the port
uint8_t outputbits = m_paddr;
uint8_t inputbits = ~m_paddr;
uint8_t general_purpose_bits = ~m_pacnt;
- uint8_t indat = m68k->m_m68307_porta_r(space, false, (inputbits & general_purpose_bits)&mem_mask) & ((inputbits & general_purpose_bits) & mem_mask); // read general purpose input lines
- indat |= m68k->m_m68307_porta_r(space, true, (inputbits & ~general_purpose_bits)&mem_mask) & ((inputbits & ~general_purpose_bits)& mem_mask); // read dedicated input lines
+ uint8_t indat = m68k->m_porta_r(space, false, (inputbits & general_purpose_bits)&mem_mask) & ((inputbits & general_purpose_bits) & mem_mask); // read general purpose input lines
+ indat |= m68k->m_porta_r(space, true, (inputbits & ~general_purpose_bits)&mem_mask) & ((inputbits & ~general_purpose_bits)& mem_mask); // read dedicated input lines
uint8_t outdat = (m_padat & outputbits) & general_purpose_bits; // read general purpose output lines (reads latched data)
return (indat | outdat);
@@ -177,14 +191,14 @@ uint16_t m68307_sim::read_padat(m68307cpu_device* m68k, address_space &space, ui
}
-void m68307_sim::write_padat(m68307cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask)
+void m68307_cpu_device::m68307_sim::write_padat(m68307_cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask)
{
int pc = space.device().safe_pc();
COMBINE_DATA(&m_padat);
- if (!m68k->m_m68307_porta_w.isnull())
+ if (!m68k->m_porta_w.isnull())
{
- m68k->m_m68307_porta_w(space, false, data, 0xff);
+ m68k->m_porta_w(space, false, data, 0xff);
}
else
{
@@ -192,21 +206,21 @@ void m68307_sim::write_padat(m68307cpu_device* m68k, address_space &space, uint1
}
}
-void m68307_sim::write_pbcnt(uint16_t data, uint16_t mem_mask)
+void m68307_cpu_device::m68307_sim::write_pbcnt(uint16_t data, uint16_t mem_mask)
{
COMBINE_DATA(&m_pbcnt);
}
-void m68307_sim::write_pbddr(uint16_t data, uint16_t mem_mask)
+void m68307_cpu_device::m68307_sim::write_pbddr(uint16_t data, uint16_t mem_mask)
{
COMBINE_DATA(&m_pbddr);
}
-uint16_t m68307_sim::read_pbdat(m68307cpu_device* m68k, address_space &space, uint16_t mem_mask)
+uint16_t m68307_cpu_device::m68307_sim::read_pbdat(m68307_cpu_device* m68k, address_space &space, uint16_t mem_mask)
{
int pc = space.device().safe_pc();
- if (!m68k->m_m68307_portb_r.isnull())
+ if (!m68k->m_portb_r.isnull())
{
// for general purpose bits, if configured as 'output' then anything output gets latched
// and anything configured as input is read from the port
@@ -214,8 +228,8 @@ uint16_t m68307_sim::read_pbdat(m68307cpu_device* m68k, address_space &space, ui
uint16_t inputbits = ~m_pbddr;
uint16_t general_purpose_bits = ~m_pbcnt;
- uint16_t indat = m68k->m_m68307_portb_r(space, false, (inputbits & general_purpose_bits)&mem_mask) & ((inputbits & general_purpose_bits) & mem_mask); // read general purpose input lines
- indat |= m68k->m_m68307_portb_r(space, true, (inputbits & ~general_purpose_bits)&mem_mask) & ((inputbits & ~general_purpose_bits)& mem_mask); // read dedicated input lines
+ uint16_t indat = m68k->m_portb_r(space, false, (inputbits & general_purpose_bits)&mem_mask) & ((inputbits & general_purpose_bits) & mem_mask); // read general purpose input lines
+ indat |= m68k->m_portb_r(space, true, (inputbits & ~general_purpose_bits)&mem_mask) & ((inputbits & ~general_purpose_bits)& mem_mask); // read dedicated input lines
uint16_t outdat = (m_pbdat & outputbits) & general_purpose_bits; // read general purpose output lines (reads latched data)
return (indat | outdat);
@@ -228,14 +242,14 @@ uint16_t m68307_sim::read_pbdat(m68307cpu_device* m68k, address_space &space, ui
}
-void m68307_sim::write_pbdat(m68307cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask)
+void m68307_cpu_device::m68307_sim::write_pbdat(m68307_cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask)
{
int pc = space.device().safe_pc();
COMBINE_DATA(&m_pbdat);
- if (!m68k->m_m68307_portb_w.isnull())
+ if (!m68k->m_portb_w.isnull())
{
- m68k->m_m68307_portb_w(space, false, data, mem_mask);
+ m68k->m_portb_w(space, false, data, mem_mask);
}
else
{
@@ -243,7 +257,7 @@ void m68307_sim::write_pbdat(m68307cpu_device* m68k, address_space &space, uint1
}
}
-void m68307_sim::write_licr1(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask)
+void m68307_cpu_device::m68307_sim::write_licr1(m68307_cpu_device* m68k, uint16_t data, uint16_t mem_mask)
{
COMBINE_DATA(&m_licr1);
data = m_licr1;
@@ -259,7 +273,7 @@ void m68307_sim::write_licr1(m68307cpu_device* m68k, uint16_t data, uint16_t mem
m68k->logerror("\n");
}
-void m68307_sim::write_licr2(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask)
+void m68307_cpu_device::m68307_sim::write_licr2(m68307_cpu_device* m68k, uint16_t data, uint16_t mem_mask)
{
COMBINE_DATA(&m_licr2);
uint16_t newdata = m_licr2;
@@ -283,7 +297,7 @@ void m68307_sim::write_licr2(m68307cpu_device* m68k, uint16_t data, uint16_t mem
}
-void m68307_sim::write_picr(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask)
+void m68307_cpu_device::m68307_sim::write_picr(m68307_cpu_device* m68k, uint16_t data, uint16_t mem_mask)
{
COMBINE_DATA(&m_picr);
data = m_picr;
@@ -295,7 +309,7 @@ void m68307_sim::write_picr(m68307cpu_device* m68k, uint16_t data, uint16_t mem_
m68k->logerror("\n");
}
-void m68307_sim::write_pivr(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask)
+void m68307_cpu_device::m68307_sim::write_pivr(m68307_cpu_device* m68k, uint16_t data, uint16_t mem_mask)
{
COMBINE_DATA(&m_pivr);
data = m_pivr;
@@ -304,7 +318,7 @@ void m68307_sim::write_pivr(m68307cpu_device* m68k, uint16_t data, uint16_t mem_
m68k->logerror("high vector %01x\n", (data>>4)&0xf);
}
-void m68307_sim::reset(void)
+void m68307_cpu_device::m68307_sim::reset()
{
for (int i=0;i<4;i++)
{
diff --git a/src/devices/machine/68307sim.h b/src/devices/machine/68307sim.h
index 0d7c5ceea1a..e709f11a96f 100644
--- a/src/devices/machine/68307sim.h
+++ b/src/devices/machine/68307sim.h
@@ -1,41 +1,17 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/* 68307 SIM module */
+#ifndef MAME_MACHINE_68307SIM_H
+#define MAME_MACHINE_68307SIM_H
-#include "cpu/m68000/m68000.h"
+#pragma once
-class m68307cpu_device;
+#include "68307.h"
-/* ports */
-#define m68307SIM_PACNT (0x10)
-#define m68307SIM_PADDR (0x12)
-#define m68307SIM_PADAT (0x14)
-#define m68307SIM_PBCNT (0x16)
-#define m68307SIM_PBDDR (0x18)
-#define m68307SIM_PBDAT (0x1a)
-
-
-/* interrupt logic */
-#define m68307SIM_LICR1 (0x20)
-#define m68307SIM_LICR2 (0x22)
-#define m68307SIM_PICR (0x24)
-#define m68307SIM_PIVR (0x26)
-
-/* used for the CS logic */
-#define m68307SIM_BR0 (0x40)
-#define m68307SIM_OR0 (0x42)
-#define m68307SIM_BR1 (0x44)
-#define m68307SIM_OR1 (0x46)
-#define m68307SIM_BR2 (0x48)
-#define m68307SIM_OR2 (0x4a)
-#define m68307SIM_BR3 (0x4c)
-#define m68307SIM_OR3 (0x4e)
-
-class m68307_sim
+class m68307_cpu_device::m68307_sim
{
- public:
-
+public:
uint16_t m_pacnt; // 8-bit
uint16_t m_paddr; // 8-bit
uint16_t m_padat; // 8-bit
@@ -52,23 +28,22 @@ class m68307_sim
uint16_t m_licr1;
uint16_t m_licr2;
-
void write_pacnt(uint16_t data, uint16_t mem_mask);
void write_paddr(uint16_t data, uint16_t mem_mask);
- uint16_t read_padat(m68307cpu_device* m68k, address_space &space, uint16_t mem_mask);
- void write_padat(m68307cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask);
+ uint16_t read_padat(m68307_cpu_device* m68k, address_space &space, uint16_t mem_mask);
+ void write_padat(m68307_cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask);
void write_pbcnt(uint16_t data, uint16_t mem_mask);
void write_pbddr(uint16_t data, uint16_t mem_mask);
- uint16_t read_pbdat(m68307cpu_device* m68k, address_space &space, uint16_t mem_mask);
- void write_pbdat(m68307cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask);
-
+ uint16_t read_pbdat(m68307_cpu_device* m68k, address_space &space, uint16_t mem_mask);
+ void write_pbdat(m68307_cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask);
+ void write_licr1(m68307_cpu_device* m68k, uint16_t data, uint16_t mem_mask);
+ void write_licr2(m68307_cpu_device* m68k, uint16_t data, uint16_t mem_mask);
+ void write_picr(m68307_cpu_device* m68k, uint16_t data, uint16_t mem_mask);
+ void write_pivr(m68307_cpu_device* m68k, uint16_t data, uint16_t mem_mask);
- void write_licr1(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask);
- void write_licr2(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask);
- void write_picr(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask);
- void write_pivr(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask);
-
- void reset(void);
+ void reset();
};
+
+#endif // MAME_MACHINE_68307SIM_H
diff --git a/src/devices/machine/68307tmu.cpp b/src/devices/machine/68307tmu.cpp
index 5deb48a9f85..c83a0855f29 100644
--- a/src/devices/machine/68307tmu.cpp
+++ b/src/devices/machine/68307tmu.cpp
@@ -4,105 +4,105 @@
// 2x timers
#include "emu.h"
-#include "68307.h"
-
-READ16_MEMBER( m68307cpu_device::m68307_internal_timer_r )
+#include "68307tmu.h"
+
+#define m68307TIMER_TMR (0x0)
+#define m68307TIMER_TRR (0x1)
+#define m68307TIMER_TCR (0x2)
+#define m68307TIMER_TCN (0x3)
+#define m68307TIMER_TER (0x4)
+#define m68307TIMER_WRR (0x5)
+#define m68307TIMER_WCR (0x6)
+#define m68307TIMER_XXX (0x7)
+
+READ16_MEMBER( m68307_cpu_device::m68307_internal_timer_r )
{
- m68307cpu_device *m68k = this;
- m68307_timer* timer = m68k->m68307TIMER;
- assert(timer != nullptr);
+ assert(m68307TIMER);
+ m68307_timer &timer = *m68307TIMER;
+
+ int pc = space.device().safe_pc();
+ int which = offset & 0x8;
- if (timer)
+ switch (offset&0x7)
{
- int pc = space.device().safe_pc();
- int which = offset & 0x8;
-
- switch (offset&0x7)
- {
- case m68307TIMER_TCN: /* 0x3 (0x126 / 0x136) */
- //if (pc!=0x2182e) logerror("%08x m68307_internal_timer_r %08x (%04x) (TCN - Timer Counter for timer %d)\n", pc, offset*2,mem_mask, which);
- return timer->read_tcn(mem_mask, which);
-
- default:
- logerror("%08x m68307_internal_timer_r %08x, (%04x)\n", pc, offset*2,mem_mask);
- break;
- }
+ case m68307TIMER_TCN: /* 0x3 (0x126 / 0x136) */
+ //if (pc!=0x2182e) logerror("%08x m68307_internal_timer_r %08x (%04x) (TCN - Timer Counter for timer %d)\n", pc, offset*2,mem_mask, which);
+ return timer.read_tcn(mem_mask, which);
+
+ default:
+ logerror("%08x m68307_internal_timer_r %08x, (%04x)\n", pc, offset*2,mem_mask);
+ break;
}
return 0x0000;
}
-WRITE16_MEMBER( m68307cpu_device::m68307_internal_timer_w )
+WRITE16_MEMBER( m68307_cpu_device::m68307_internal_timer_w )
{
- m68307cpu_device *m68k = this;
- m68307_timer* timer = m68k->m68307TIMER;
- assert(timer != nullptr);
+ assert(m68307TIMER);
+ m68307_timer &timer = *m68307TIMER;
+
+ int pc = space.device().safe_pc();
+ int which = offset & 0x8;
- if (timer)
+ switch (offset&0x7)
{
- int pc = space.device().safe_pc();
- int which = offset & 0x8;
-
- switch (offset&0x7)
- {
- case m68307TIMER_TMR: /* 0x0 (0x120 / 0x130) */
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TMR - Timer Mode Register for timer %d)\n", pc, offset*2,data,mem_mask, which);
- timer->write_tmr(data, mem_mask, which);
- break;
-
- case m68307TIMER_TRR: /* 0x1 (0x122 / 0x132) */
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TRR - Timer Reference Register for timer %d)\n", pc, offset*2,data,mem_mask, which);
- timer->write_trr(data, mem_mask, which);
- break;
-
- case m68307TIMER_TCR: /* 0x2 (0x124 / 0x134) */
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TCR - Timer Capture Register for timer %d) (illegal, read-only)\n", pc, offset*2,data,mem_mask, which);
- break;
-
- case m68307TIMER_TCN: /* 0x3 (0x126 / 0x136) */
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TCN - Timer Counter for timer %d)\n", pc, offset*2,data,mem_mask, which);
- break;
-
- case m68307TIMER_TER: /* 0x4 (0x128 / 0x138) */
- /* 8-bit only!! */
- //logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TER - Timer Event Register for timer %d)\n", pc, offset*2,data,mem_mask, which);
- timer->write_ter(data, mem_mask, which);
- break;
-
- case m68307TIMER_WRR: /* 0x5 (0x12a / 0x13a) */
- if (which==0)
- {
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (WRR - Watchdog Reference Register)\n", pc, offset*2,data,mem_mask);
- }
- else
- {
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", pc, offset*2,data,mem_mask);
- }
- break;
-
- case m68307TIMER_WCR: /* 0x6 (0x12c / 0x13c) */
- if (which==0)
- {
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (WRR - Watchdog Counter Register)\n", pc, offset*2,data,mem_mask);
- }
- else
- {
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", pc, offset*2,data,mem_mask);
- }
- break;
-
- case m68307TIMER_XXX: /* 0x7 (0x12e / 0x13e) */
+ case m68307TIMER_TMR: /* 0x0 (0x120 / 0x130) */
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TMR - Timer Mode Register for timer %d)\n", pc, offset*2,data,mem_mask, which);
+ timer.write_tmr(data, mem_mask, which);
+ break;
+
+ case m68307TIMER_TRR: /* 0x1 (0x122 / 0x132) */
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TRR - Timer Reference Register for timer %d)\n", pc, offset*2,data,mem_mask, which);
+ timer.write_trr(data, mem_mask, which);
+ break;
+
+ case m68307TIMER_TCR: /* 0x2 (0x124 / 0x134) */
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TCR - Timer Capture Register for timer %d) (illegal, read-only)\n", pc, offset*2,data,mem_mask, which);
+ break;
+
+ case m68307TIMER_TCN: /* 0x3 (0x126 / 0x136) */
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TCN - Timer Counter for timer %d)\n", pc, offset*2,data,mem_mask, which);
+ break;
+
+ case m68307TIMER_TER: /* 0x4 (0x128 / 0x138) */
+ /* 8-bit only!! */
+ //logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TER - Timer Event Register for timer %d)\n", pc, offset*2,data,mem_mask, which);
+ timer.write_ter(data, mem_mask, which);
+ break;
+
+ case m68307TIMER_WRR: /* 0x5 (0x12a / 0x13a) */
+ if (which==0)
+ {
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (WRR - Watchdog Reference Register)\n", pc, offset*2,data,mem_mask);
+ }
+ else
+ {
logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", pc, offset*2,data,mem_mask);
- break;
+ }
+ break;
+
+ case m68307TIMER_WCR: /* 0x6 (0x12c / 0x13c) */
+ if (which==0)
+ {
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (WRR - Watchdog Counter Register)\n", pc, offset*2,data,mem_mask);
+ }
+ else
+ {
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", pc, offset*2,data,mem_mask);
+ }
+ break;
- }
+ case m68307TIMER_XXX: /* 0x7 (0x12e / 0x13e) */
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", pc, offset*2,data,mem_mask);
+ break;
}
}
-TIMER_CALLBACK_MEMBER(m68307_timer::timer0_callback )
+TIMER_CALLBACK_MEMBER(m68307_cpu_device::m68307_timer::timer0_callback )
{
- m68307cpu_device* m68k = (m68307cpu_device *)ptr;
- m68307_single_timer* tptr = &m68k->m68307TIMER->singletimer[0];
+ m68307_cpu_device* m68k = (m68307_cpu_device *)ptr;
+ single_timer* tptr = &m68k->m68307TIMER->singletimer[0];
tptr->regs[m68307TIMER_TMR] |= 0x2;
m68k->timer0_interrupt();
@@ -110,10 +110,10 @@ TIMER_CALLBACK_MEMBER(m68307_timer::timer0_callback )
tptr->mametimer->adjust(m68k->cycles_to_attotime(20000));
}
-TIMER_CALLBACK_MEMBER(m68307_timer::timer1_callback )
+TIMER_CALLBACK_MEMBER(m68307_cpu_device::m68307_timer::timer1_callback )
{
- m68307cpu_device* m68k = (m68307cpu_device *)ptr;
- m68307_single_timer* tptr = &m68k->m68307TIMER->singletimer[1];
+ m68307_cpu_device* m68k = (m68307_cpu_device *)ptr;
+ single_timer* tptr = &m68k->m68307TIMER->singletimer[1];
tptr->regs[m68307TIMER_TMR] |= 0x2;
m68k->timer1_interrupt();
@@ -122,16 +122,16 @@ TIMER_CALLBACK_MEMBER(m68307_timer::timer1_callback )
}
-TIMER_CALLBACK_MEMBER(m68307_timer::wd_timer_callback )
+TIMER_CALLBACK_MEMBER(m68307_cpu_device::m68307_timer::wd_timer_callback )
{
printf("wd timer\n");
}
-void m68307_timer::init(m68307cpu_device *device)
+void m68307_cpu_device::m68307_timer::init(m68307_cpu_device *device)
{
parent = device;
- m68307_single_timer* tptr;
+ single_timer* tptr;
tptr = &singletimer[0];
tptr->mametimer = device->machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m68307_timer::timer0_callback),this), parent);
@@ -142,7 +142,7 @@ void m68307_timer::init(m68307cpu_device *device)
wd_mametimer = device->machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m68307_timer::wd_timer_callback),this), parent);
}
-uint16_t m68307_timer::read_tcn(uint16_t mem_mask, int which)
+uint16_t m68307_cpu_device::m68307_timer::read_tcn(uint16_t mem_mask, int which)
{
// we should return the current timer value by
// calculating what it should be based on the time
@@ -150,18 +150,18 @@ uint16_t m68307_timer::read_tcn(uint16_t mem_mask, int which)
return 0x3a98;
}
-void m68307_timer::write_ter(uint16_t data, uint16_t mem_mask, int which)
+void m68307_cpu_device::m68307_timer::write_ter(uint16_t data, uint16_t mem_mask, int which)
{
assert(which >= 0 && which < ARRAY_LENGTH(singletimer));
- m68307_single_timer* tptr = &singletimer[which];
+ single_timer* tptr = &singletimer[which];
if (data & 0x2) tptr->regs[m68307TIMER_TMR] &= ~0x2;
}
-void m68307_timer::write_tmr(uint16_t data, uint16_t mem_mask, int which)
+void m68307_cpu_device::m68307_timer::write_tmr(uint16_t data, uint16_t mem_mask, int which)
{
- m68307cpu_device* m68k = parent;
+ m68307_cpu_device* m68k = parent;
assert(which >= 0 && which < ARRAY_LENGTH(singletimer));
- m68307_single_timer* tptr = &singletimer[which];
+ single_timer* tptr = &singletimer[which];
COMBINE_DATA(&tptr->regs[m68307TIMER_TMR]);
@@ -208,21 +208,21 @@ void m68307_timer::write_tmr(uint16_t data, uint16_t mem_mask, int which)
}
-void m68307_timer::write_trr(uint16_t data, uint16_t mem_mask, int which)
+void m68307_cpu_device::m68307_timer::write_trr(uint16_t data, uint16_t mem_mask, int which)
{
assert(which >= 0 && which < ARRAY_LENGTH(singletimer));
- m68307_single_timer* tptr = &singletimer[which];
+ single_timer* tptr = &singletimer[which];
COMBINE_DATA(&tptr->regs[m68307TIMER_TRR]);
}
-void m68307_timer::reset(void)
+void m68307_cpu_device::m68307_timer::reset()
{
for (auto & elem : singletimer)
{
- m68307_single_timer* tptr = &elem;
+ single_timer* tptr = &elem;
tptr->regs[m68307TIMER_TMR] = 0x0000;
tptr->regs[m68307TIMER_TRR] = 0xffff;
@@ -237,6 +237,4 @@ void m68307_timer::reset(void)
}
wd_mametimer->adjust(attotime::never);
-
-
}
diff --git a/src/devices/machine/68307tmu.h b/src/devices/machine/68307tmu.h
index 8ecdfa8a86f..25b782fcacb 100644
--- a/src/devices/machine/68307tmu.h
+++ b/src/devices/machine/68307tmu.h
@@ -1,45 +1,40 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
+#ifndef MAME_MACHINE_68307TMU_H
+#define MAME_MACHINE_68307TMU_H
-#include "cpu/m68000/m68000.h"
+#pragma once
-class m68307cpu_device;
+#include "68307.h"
-#define m68307TIMER_TMR (0x0)
-#define m68307TIMER_TRR (0x1)
-#define m68307TIMER_TCR (0x2)
-#define m68307TIMER_TCN (0x3)
-#define m68307TIMER_TER (0x4)
-#define m68307TIMER_WRR (0x5)
-#define m68307TIMER_WCR (0x6)
-#define m68307TIMER_XXX (0x7)
-
-struct m68307_single_timer
+class m68307_cpu_device::m68307_timer
{
- uint16_t regs[0x8];
- bool enabled;
- emu_timer *mametimer;
-};
+public:
+ struct single_timer
+ {
+ uint16_t regs[0x8];
+ bool enabled;
+ emu_timer *mametimer;
+ };
-class m68307_timer
-{
- public:
- m68307_single_timer singletimer[2];
+ single_timer singletimer[2];
emu_timer *wd_mametimer;
- m68307cpu_device *parent;
+ m68307_cpu_device *parent;
void write_tmr(uint16_t data, uint16_t mem_mask, int which);
void write_trr(uint16_t data, uint16_t mem_mask, int which);
void write_ter(uint16_t data, uint16_t mem_mask, int which);
uint16_t read_tcn(uint16_t mem_mask, int which);
- void init(m68307cpu_device *device);
- void reset(void);
+ void init(m68307_cpu_device *device);
+ void reset();
TIMER_CALLBACK_MEMBER(timer0_callback);
TIMER_CALLBACK_MEMBER(timer1_callback);
TIMER_CALLBACK_MEMBER(wd_timer_callback);
};
+
+#endif // MAME_MACHINE_68307TMU_H
diff --git a/src/devices/machine/68340.cpp b/src/devices/machine/68340.cpp
index 36d42b869fa..3dc8f2e5c83 100644
--- a/src/devices/machine/68340.cpp
+++ b/src/devices/machine/68340.cpp
@@ -5,24 +5,22 @@
#include "emu.h"
#include "68340.h"
-const device_type M68340 = device_creator<m68340cpu_device>;
+DEFINE_DEVICE_TYPE(M68340, m68340_cpu_device, "mc68340", "MC68340")
-int m68340_calc_cs(m68340cpu_device *m68k, offs_t address)
+int m68340_cpu_device::calc_cs(offs_t address) const
{
- m68340_sim* sim = m68k->m68340SIM;
-
- if ( !(sim->m_ba[0] & 1) ) return 1;
+ if ( !(m68340SIM->m_ba[0] & 1) ) return 1;
for (int i=0;i<4;i++)
{
- if (sim->m_ba[i] & 1)
+ if (m68340SIM->m_ba[i] & 1)
{
- int mask = ((sim->m_am[i]&0xffffff00) | 0xff);
- int base = sim->m_ba[i] & 0xffffff00;
- int fcmask = (sim->m_am[i] & 0xf0);
- int fcbase = (sim->m_ba[i] & 0xf0) & ~(sim->m_am[i] & 0xf0);
- int fc = m68k->mmu_tmp_fc;
+ int mask = ((m68340SIM->m_am[i]&0xffffff00) | 0xff);
+ int base = m68340SIM->m_ba[i] & 0xffffff00;
+ int fcmask = (m68340SIM->m_am[i] & 0xf0);
+ int fcbase = (m68340SIM->m_ba[i] & 0xf0) & ~(m68340SIM->m_am[i] & 0xf0);
+ int fc = mmu_tmp_fc;
if ((address & ~mask) == base && ((fc << 4) & ~fcmask ) == fcbase ) return i+1;
}
@@ -33,61 +31,58 @@ int m68340_calc_cs(m68340cpu_device *m68k, offs_t address)
-uint16_t m68340cpu_device::get_cs(offs_t address)
+uint16_t m68340_cpu_device::get_cs(offs_t address)
{
- m68340_currentcs = m68340_calc_cs(this, address);
+ m_currentcs = calc_cs(address);
- return m68340_currentcs;
+ return m_currentcs;
}
/* 68340 specifics - MOVE */
-READ32_MEMBER( m68340cpu_device::m68340_internal_base_r )
+READ32_MEMBER( m68340_cpu_device::m68340_internal_base_r )
{
- m68340cpu_device *m68k = this;
int pc = space.device().safe_pc();
logerror("%08x m68340_internal_base_r %08x, (%08x)\n", pc, offset*4,mem_mask);
- return m68k->m68340_base;
+ return m68340_base;
}
-WRITE32_MEMBER( m68340cpu_device::m68340_internal_base_w )
+WRITE32_MEMBER( m68340_cpu_device::m68340_internal_base_w )
{
- m68340cpu_device *m68k = this;
-
int pc = space.device().safe_pc();
logerror("%08x m68340_internal_base_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
// other conditions?
- if (m68k->dfc==0x7)
+ if (dfc==0x7)
{
// unmap old modules
- if (m68k->m68340_base&1)
+ if (m68340_base&1)
{
- int base = m68k->m68340_base & 0xfffff000;
+ int base = m68340_base & 0xfffff000;
- m68k->internal->unmap_readwrite(base + 0x000, base + 0x05f);
- m68k->internal->unmap_readwrite(base + 0x600, base + 0x67f);
- m68k->internal->unmap_readwrite(base + 0x700, base + 0x723);
- m68k->internal->unmap_readwrite(base + 0x780, base + 0x7bf);
+ internal->unmap_readwrite(base + 0x000, base + 0x05f);
+ internal->unmap_readwrite(base + 0x600, base + 0x67f);
+ internal->unmap_readwrite(base + 0x700, base + 0x723);
+ internal->unmap_readwrite(base + 0x780, base + 0x7bf);
}
- COMBINE_DATA(&m68k->m68340_base);
+ COMBINE_DATA(&m68340_base);
logerror("%08x m68340_internal_base_w %08x, %08x (%08x) (m68340_base write)\n", pc, offset*4,data,mem_mask);
// map new modules
- if (m68k->m68340_base&1)
+ if (m68340_base&1)
{
- int base = m68k->m68340_base & 0xfffff000;
+ int base = m68340_base & 0xfffff000;
- m68k->internal->install_readwrite_handler(base + 0x000, base + 0x03f, read16_delegate(FUNC(m68340cpu_device::m68340_internal_sim_r),this), write16_delegate(FUNC(m68340cpu_device::m68340_internal_sim_w),this),0xffffffff);
- m68k->internal->install_readwrite_handler(base + 0x010, base + 0x01f, read8_delegate(FUNC(m68340cpu_device::m68340_internal_sim_ports_r),this),write8_delegate(FUNC(m68340cpu_device::m68340_internal_sim_ports_w),this),0xffffffff);
- m68k->internal->install_readwrite_handler(base + 0x040, base + 0x05f, read32_delegate(FUNC(m68340cpu_device::m68340_internal_sim_cs_r),this), write32_delegate(FUNC(m68340cpu_device::m68340_internal_sim_cs_w),this));
- m68k->internal->install_readwrite_handler(base + 0x600, base + 0x67f, read32_delegate(FUNC(m68340cpu_device::m68340_internal_timer_r),this), write32_delegate(FUNC(m68340cpu_device::m68340_internal_timer_w),this));
- m68k->internal->install_readwrite_handler(base + 0x700, base + 0x723, read32_delegate(FUNC(m68340cpu_device::m68340_internal_serial_r),this), write32_delegate(FUNC(m68340cpu_device::m68340_internal_serial_w),this));
- m68k->internal->install_readwrite_handler(base + 0x780, base + 0x7bf, read32_delegate(FUNC(m68340cpu_device::m68340_internal_dma_r),this), write32_delegate(FUNC(m68340cpu_device::m68340_internal_dma_w),this));
+ internal->install_readwrite_handler(base + 0x000, base + 0x03f, read16_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_r),this), write16_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_w),this),0xffffffff);
+ internal->install_readwrite_handler(base + 0x010, base + 0x01f, read8_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_ports_r),this),write8_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_ports_w),this),0xffffffff);
+ internal->install_readwrite_handler(base + 0x040, base + 0x05f, read32_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_cs_r),this), write32_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_cs_w),this));
+ internal->install_readwrite_handler(base + 0x600, base + 0x67f, read32_delegate(FUNC(m68340_cpu_device::m68340_internal_timer_r),this), write32_delegate(FUNC(m68340_cpu_device::m68340_internal_timer_w),this));
+ internal->install_readwrite_handler(base + 0x700, base + 0x723, read32_delegate(FUNC(m68340_cpu_device::m68340_internal_serial_r),this), write32_delegate(FUNC(m68340_cpu_device::m68340_internal_serial_w),this));
+ internal->install_readwrite_handler(base + 0x780, base + 0x7bf, read32_delegate(FUNC(m68340_cpu_device::m68340_internal_dma_r),this), write32_delegate(FUNC(m68340_cpu_device::m68340_internal_dma_w),this));
}
@@ -102,7 +97,7 @@ WRITE32_MEMBER( m68340cpu_device::m68340_internal_base_w )
}
-static ADDRESS_MAP_START( m68340_internal_map, AS_PROGRAM, 32, m68340cpu_device )
+static ADDRESS_MAP_START( m68340_internal_map, AS_PROGRAM, 32, m68340_cpu_device )
AM_RANGE(0x0003ff00, 0x0003ff03) AM_READWRITE( m68340_internal_base_r, m68340_internal_base_w)
ADDRESS_MAP_END
@@ -110,8 +105,8 @@ ADDRESS_MAP_END
-m68340cpu_device::m68340cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : fscpu32_device(mconfig, "MC68340", tag, owner, clock, M68340, 32,32, ADDRESS_MAP_NAME(m68340_internal_map), "mc68340", __FILE__)
+m68340_cpu_device::m68340_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : fscpu32_device(mconfig, tag, owner, clock, M68340, 32,32, ADDRESS_MAP_NAME(m68340_internal_map))
{
m68340SIM = nullptr;
m68340DMA = nullptr;
@@ -125,13 +120,13 @@ m68340cpu_device::m68340cpu_device(const machine_config &mconfig, const char *ta
-void m68340cpu_device::device_reset()
+void m68340_cpu_device::device_reset()
{
fscpu32_device::device_reset();
}
-void m68340cpu_device::device_start()
+void m68340_cpu_device::device_start()
{
fscpu32_device::device_start();
diff --git a/src/devices/machine/68340.h b/src/devices/machine/68340.h
index 350021100a3..3c9b2ef96a4 100644
--- a/src/devices/machine/68340.h
+++ b/src/devices/machine/68340.h
@@ -1,11 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/* 68340 */
-
+#ifndef MAME_MACHINE_68340_H
+#define MAME_MACHINE_68340_H
#pragma once
-#ifndef __M68340_H__
-#define __M68340_H__
+
#include "cpu/m68000/m68000.h"
@@ -15,25 +15,10 @@
#include "68340tmu.h"
-class m68340cpu_device : public fscpu32_device
+class m68340_cpu_device : public fscpu32_device
{
public:
- m68340cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-
- int m68340_currentcs;
-
- /* 68340 peripheral modules */
- m68340_sim* m68340SIM;
- m68340_dma* m68340DMA;
- m68340_serial* m68340SERIAL;
- m68340_timer* m68340TIMER;
-
- uint32_t m68340_base;
-
- uint16_t m_avr;
- uint16_t m_picr;
- uint16_t m_pitr;
+ m68340_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
uint16_t get_cs(offs_t address);
@@ -52,17 +37,33 @@ public:
READ32_MEMBER( m68340_internal_timer_r );
WRITE32_MEMBER( m68340_internal_timer_w );
- emu_timer *m_irq_timer;
- TIMER_CALLBACK_MEMBER(periodic_interrupt_timer_callback);
- void start_68340_sim(void);
- void do_timer_irq(void);
-
protected:
virtual void device_start() override;
virtual void device_reset() override;
+ TIMER_CALLBACK_MEMBER(periodic_interrupt_timer_callback);
+ void start_68340_sim();
+ void do_timer_irq();
+
+ int calc_cs(offs_t address) const;
+
+ int m_currentcs;
+
+ /* 68340 peripheral modules */
+ m68340_sim* m68340SIM;
+ m68340_dma* m68340DMA;
+ m68340_serial* m68340SERIAL;
+ m68340_timer* m68340TIMER;
+
+ uint32_t m68340_base;
+
+ uint16_t m_avr;
+ uint16_t m_picr;
+ uint16_t m_pitr;
+
+ emu_timer *m_irq_timer;
};
-extern const device_type M68340;
+DECLARE_DEVICE_TYPE(M68340, m68340_cpu_device)
-#endif
+#endif // MAME_MACHINE_68340_H
diff --git a/src/devices/machine/68340dma.cpp b/src/devices/machine/68340dma.cpp
index 84f17f6c1cb..e37e573e5e6 100644
--- a/src/devices/machine/68340dma.cpp
+++ b/src/devices/machine/68340dma.cpp
@@ -6,34 +6,26 @@
#include "68340.h"
-READ32_MEMBER( m68340cpu_device::m68340_internal_dma_r )
+READ32_MEMBER( m68340_cpu_device::m68340_internal_dma_r )
{
- m68340cpu_device *m68k = this;
- m68340_dma* dma = m68k->m68340DMA;
- assert(dma != nullptr);
+ assert(m68340DMA);
+ //m68340_dma &dma = *m68340DMA;
- if (dma)
- {
- int pc = space.device().safe_pc();
- logerror("%08x m68340_internal_dma_r %08x, (%08x)\n", pc, offset*4,mem_mask);
- }
+ int pc = space.device().safe_pc();
+ logerror("%08x m68340_internal_dma_r %08x, (%08x)\n", pc, offset*4,mem_mask);
return 0x00000000;
}
-WRITE32_MEMBER( m68340cpu_device::m68340_internal_dma_w )
+WRITE32_MEMBER( m68340_cpu_device::m68340_internal_dma_w )
{
- m68340cpu_device *m68k = this;
- m68340_dma* dma = m68k->m68340DMA;
- assert(dma != nullptr);
-
- if (dma)
- {
- int pc = space.device().safe_pc();
- logerror("%08x m68340_internal_dma_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
- }
+ assert(m68340DMA);
+ //m68340_dma &dma = *m68340DMA;
+
+ int pc = space.device().safe_pc();
+ logerror("%08x m68340_internal_dma_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
}
-void m68340_dma::reset(void)
+void m68340_dma::reset()
{
}
diff --git a/src/devices/machine/68340dma.h b/src/devices/machine/68340dma.h
index 56d8228fa2d..3a92b4e9a49 100644
--- a/src/devices/machine/68340dma.h
+++ b/src/devices/machine/68340dma.h
@@ -1,10 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
+#ifndef MAME_MACHINE_68340DMA_H
+#define MAME_MACHINE_68340DMA_H
+
+#pragma once
-#include "cpu/m68000/m68000.h"
class m68340_dma
{
- public:
- void reset(void);
+public:
+ void reset();
};
+
+#endif // MAME_MACHINE_68340DMA_H
diff --git a/src/devices/machine/68340ser.cpp b/src/devices/machine/68340ser.cpp
index 230b6c7a71b..8a26975cd87 100644
--- a/src/devices/machine/68340ser.cpp
+++ b/src/devices/machine/68340ser.cpp
@@ -6,35 +6,26 @@
#include "68340.h"
-READ32_MEMBER( m68340cpu_device::m68340_internal_serial_r )
+READ32_MEMBER( m68340_cpu_device::m68340_internal_serial_r )
{
- m68340cpu_device *m68k = this;
- m68340_serial* serial = m68k->m68340SERIAL;
- assert(serial != nullptr);
+ assert(m68340SERIAL);
+ //m68340_serial &serial = *m68340SERIAL;
- if (serial)
- {
- int pc = space.device().safe_pc();
- logerror("%08x m68340_internal_serial_r %08x, (%08x)\n", pc, offset*4,mem_mask);
- }
+ int pc = space.device().safe_pc();
+ logerror("%08x m68340_internal_serial_r %08x, (%08x)\n", pc, offset*4,mem_mask);
return 0x00000000;
}
-WRITE32_MEMBER( m68340cpu_device::m68340_internal_serial_w )
+WRITE32_MEMBER( m68340_cpu_device::m68340_internal_serial_w )
{
- m68340cpu_device *m68k = this;
- m68340_serial* serial = m68k->m68340SERIAL;
- assert(serial != nullptr);
-
- if (serial)
- {
- int pc = space.device().safe_pc();
- logerror("%08x m68340_internal_serial_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
- }
+ assert(m68340SERIAL);
+ //m68340_serial &serial = *m68340SERIAL;
+ int pc = space.device().safe_pc();
+ logerror("%08x m68340_internal_serial_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
}
-void m68340_serial::reset(void)
+void m68340_serial::reset()
{
}
diff --git a/src/devices/machine/68340ser.h b/src/devices/machine/68340ser.h
index 0fda812ff0a..c5fcd028bdd 100644
--- a/src/devices/machine/68340ser.h
+++ b/src/devices/machine/68340ser.h
@@ -1,10 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
+#ifndef MAME_MACHINE_68340SER_H
+#define MAME_MACHINE_68340SER_H
+
+#pragma once
-#include "cpu/m68000/m68000.h"
class m68340_serial
{
- public:
- void reset(void);
+public:
+ void reset();
};
+
+#endif // MAME_MACHINE_68340SER_H
diff --git a/src/devices/machine/68340sim.cpp b/src/devices/machine/68340sim.cpp
index f1d346e880b..fda96a762b1 100644
--- a/src/devices/machine/68340sim.cpp
+++ b/src/devices/machine/68340sim.cpp
@@ -6,310 +6,319 @@
#include "68340.h"
-
-READ16_MEMBER( m68340cpu_device::m68340_internal_sim_r )
+#define m68340SIM_MCR (0x00)
+// (0x02)
+#define m68340SIM_SYNCR (0x04)
+#define m68340SIM_AVR_RSR (0x06)
+// (0x08)
+// (0x0a)
+// (0x0c)
+// (0x0e)
+#define m68340SIM_PORTA (0x11)
+#define m68340SIM_DDRA (0x13)
+#define m68340SIM_PPRA1 (0x15)
+#define m68340SIM_PPRA2 (0x17)
+#define m68340SIM_PORTB (0x19)
+#define m68340SIM_PORTB1 (0x1b)
+#define m68340SIM_DDRB (0x1d)
+#define m68340SIM_PPARB (0x1f)
+#define m68340SIM_SWIV_SYPCR (0x20)
+#define m68340SIM_PICR (0x22)
+#define m68340SIM_PITR (0x24)
+#define m68340SIM_SWSR (0x26)
+// (0x28)
+// (0x2a)
+// (0x2c)
+// (0x2e)
+// (0x30)
+// (0x32)
+// (0x34)
+// (0x36)
+// (0x38)
+// (0x3a)
+// (0x3c)
+// (0x3e)
+#define m68340SIM_AM_CS0 (0x40)
+#define m68340SIM_BA_CS0 (0x44)
+#define m68340SIM_AM_CS1 (0x48)
+#define m68340SIM_BA_CS1 (0x4c)
+#define m68340SIM_AM_CS2 (0x50)
+#define m68340SIM_BA_CS2 (0x54)
+#define m68340SIM_AM_CS3 (0x58)
+#define m68340SIM_BA_CS3 (0x5c)
+
+
+
+READ16_MEMBER( m68340_cpu_device::m68340_internal_sim_r )
{
- m68340cpu_device *m68k = this;
- m68340_sim* sim = m68k->m68340SIM;
- assert(sim != nullptr);
-
- if (sim)
- {
- int pc = space.device().safe_pc();
-
- switch (offset<<1)
- {
- case m68340SIM_MCR:
- logerror("%08x m68340_internal_sim_r %04x, (%04x) (MCR - Module Configuration Register)\n", pc, offset*2,mem_mask);
- return space.machine().rand();
+ assert(m68340SIM);
+ //m68340_sim &sim = *m68340SIM;
- case m68340SIM_SYNCR:
- logerror("%08x m68340_internal_sim_r %04x, (%04x) (SYNCR - Clock Synthesizer Register)\n", pc, offset*2,mem_mask);
- return space.machine().rand();
+ int pc = space.device().safe_pc();
- case m68340SIM_AVR_RSR:
- logerror("%08x m68340_internal_sim_r %04x, (%04x) (AVR, RSR - Auto Vector Register, Reset Status Register)\n", pc, offset*2,mem_mask);
- return space.machine().rand();
+ switch (offset<<1)
+ {
+ case m68340SIM_MCR:
+ logerror("%08x m68340_internal_sim_r %04x, (%04x) (MCR - Module Configuration Register)\n", pc, offset*2,mem_mask);
+ return space.machine().rand();
- case m68340SIM_SWIV_SYPCR:
- logerror("%08x m68340_internal_sim_r %04x, (%04x) (SWIV_SYPCR - Software Interrupt Vector, System Protection Control Register)\n", pc, offset*2,mem_mask);
- return space.machine().rand();
+ case m68340SIM_SYNCR:
+ logerror("%08x m68340_internal_sim_r %04x, (%04x) (SYNCR - Clock Synthesizer Register)\n", pc, offset*2,mem_mask);
+ return space.machine().rand();
- case m68340SIM_PICR:
- logerror("%08x m68340_internal_sim_r %04x, (%04x) (PICR - Periodic Interrupt Control Register)\n", pc, offset*2,mem_mask);
- return space.machine().rand();
+ case m68340SIM_AVR_RSR:
+ logerror("%08x m68340_internal_sim_r %04x, (%04x) (AVR, RSR - Auto Vector Register, Reset Status Register)\n", pc, offset*2,mem_mask);
+ return space.machine().rand();
- case m68340SIM_PITR:
- logerror("%08x m68340_internal_sim_r %04x, (%04x) (PITR - Periodic Interrupt Timer Register)\n", pc, offset*2,mem_mask);
- return space.machine().rand();
+ case m68340SIM_SWIV_SYPCR:
+ logerror("%08x m68340_internal_sim_r %04x, (%04x) (SWIV_SYPCR - Software Interrupt Vector, System Protection Control Register)\n", pc, offset*2,mem_mask);
+ return space.machine().rand();
- case m68340SIM_SWSR:
- logerror("%08x m68340_internal_sim_r %04x, (%04x) (SWSR - Software Service)\n", pc, offset*2,mem_mask);
- return space.machine().rand();
+ case m68340SIM_PICR:
+ logerror("%08x m68340_internal_sim_r %04x, (%04x) (PICR - Periodic Interrupt Control Register)\n", pc, offset*2,mem_mask);
+ return space.machine().rand();
- default:
- logerror("%08x m68340_internal_sim_r %04x, (%04x)\n", pc, offset*2,mem_mask);
+ case m68340SIM_PITR:
+ logerror("%08x m68340_internal_sim_r %04x, (%04x) (PITR - Periodic Interrupt Timer Register)\n", pc, offset*2,mem_mask);
+ return space.machine().rand();
+ case m68340SIM_SWSR:
+ logerror("%08x m68340_internal_sim_r %04x, (%04x) (SWSR - Software Service)\n", pc, offset*2,mem_mask);
+ return space.machine().rand();
- }
+ default:
+ logerror("%08x m68340_internal_sim_r %04x, (%04x)\n", pc, offset*2,mem_mask);
}
return 0x0000;
}
-READ8_MEMBER( m68340cpu_device::m68340_internal_sim_ports_r )
+READ8_MEMBER( m68340_cpu_device::m68340_internal_sim_ports_r )
{
offset += 0x10;
- m68340cpu_device *m68k = this;
- m68340_sim* sim = m68k->m68340SIM;
- assert(sim != nullptr);
+ assert(m68340SIM);
+ //m68340_sim &sim = *m68340SIM;
- if (sim)
- {
- int pc = space.device().safe_pc();
+ int pc = space.device().safe_pc();
- switch (offset)
- {
- case m68340SIM_PORTA:
- logerror("%08x m68340_internal_sim_r %04x (PORTA - Port A Data)\n", pc, offset);
- return space.machine().rand();
-
- case m68340SIM_DDRA:
- logerror("%08x m68340_internal_sim_r %04x (DDRA - Port A Data Direction)\n", pc, offset);
- return space.machine().rand();
+ switch (offset)
+ {
+ case m68340SIM_PORTA:
+ logerror("%08x m68340_internal_sim_r %04x (PORTA - Port A Data)\n", pc, offset);
+ return space.machine().rand();
- case m68340SIM_PPRA1:
- logerror("%08x m68340_internal_sim_r %04x (PPRA1 - Port A Pin Assignment 1)\n", pc, offset);
- return space.machine().rand();
+ case m68340SIM_DDRA:
+ logerror("%08x m68340_internal_sim_r %04x (DDRA - Port A Data Direction)\n", pc, offset);
+ return space.machine().rand();
- case m68340SIM_PPRA2:
- logerror("%08x m68340_internal_sim_r %04x (PPRA2 - Port A Pin Assignment 2)\n", pc, offset);
- return space.machine().rand();
+ case m68340SIM_PPRA1:
+ logerror("%08x m68340_internal_sim_r %04x (PPRA1 - Port A Pin Assignment 1)\n", pc, offset);
+ return space.machine().rand();
- case m68340SIM_PORTB:
- logerror("%08x m68340_internal_sim_r %04x (PORTB - Port B Data 0)\n", pc, offset);
- return space.machine().rand();
+ case m68340SIM_PPRA2:
+ logerror("%08x m68340_internal_sim_r %04x (PPRA2 - Port A Pin Assignment 2)\n", pc, offset);
+ return space.machine().rand();
- case m68340SIM_PORTB1:
- logerror("%08x m68340_internal_sim_r %04x (PORTB1 - Port B Data 1)\n", pc, offset);
- return space.machine().rand();
+ case m68340SIM_PORTB:
+ logerror("%08x m68340_internal_sim_r %04x (PORTB - Port B Data 0)\n", pc, offset);
+ return space.machine().rand();
- case m68340SIM_DDRB:
- logerror("%08x m68340_internal_sim_r %04x (DDR - Port B Data Direction)\n", pc, offset);
- return space.machine().rand();
+ case m68340SIM_PORTB1:
+ logerror("%08x m68340_internal_sim_r %04x (PORTB1 - Port B Data 1)\n", pc, offset);
+ return space.machine().rand();
- case m68340SIM_PPARB:
- logerror("%08x m68340_internal_sim_r %04x (PPARB - Port B Pin Assignment)\n", pc, offset);
- return space.machine().rand();
+ case m68340SIM_DDRB:
+ logerror("%08x m68340_internal_sim_r %04x (DDR - Port B Data Direction)\n", pc, offset);
+ return space.machine().rand();
- default:
- logerror("%08x m68340_internal_sim_r %04x (ILLEGAL?)\n", pc, offset);
- return space.machine().rand();
+ case m68340SIM_PPARB:
+ logerror("%08x m68340_internal_sim_r %04x (PPARB - Port B Pin Assignment)\n", pc, offset);
+ return space.machine().rand();
- }
+ default:
+ logerror("%08x m68340_internal_sim_r %04x (ILLEGAL?)\n", pc, offset);
+ return space.machine().rand();
}
-
- return 0x00;
}
-READ32_MEMBER( m68340cpu_device::m68340_internal_sim_cs_r )
+READ32_MEMBER( m68340_cpu_device::m68340_internal_sim_cs_r )
{
offset += m68340SIM_AM_CS0>>2;
- m68340cpu_device *m68k = this;
- m68340_sim* sim = m68k->m68340SIM;
- assert(sim != nullptr);
+ assert(m68340SIM);
+ m68340_sim &sim = *m68340SIM;
- if (sim)
- {
- int pc = space.device().safe_pc();
-
- switch (offset<<2)
- {
- case m68340SIM_AM_CS0: return sim->m_am[0];
- case m68340SIM_BA_CS0: return sim->m_ba[0];
- case m68340SIM_AM_CS1: return sim->m_am[1];
- case m68340SIM_BA_CS1: return sim->m_ba[1];
- case m68340SIM_AM_CS2: return sim->m_am[2];
- case m68340SIM_BA_CS2: return sim->m_ba[2];
- case m68340SIM_AM_CS3: return sim->m_am[3];
- case m68340SIM_BA_CS3: return sim->m_ba[3];
-
- default:
- logerror("%08x m68340_internal_sim_r %08x, (%08x)\n", pc, offset*4,mem_mask);
+ int pc = space.device().safe_pc();
- }
+ switch (offset<<2)
+ {
+ case m68340SIM_AM_CS0: return sim.m_am[0];
+ case m68340SIM_BA_CS0: return sim.m_ba[0];
+ case m68340SIM_AM_CS1: return sim.m_am[1];
+ case m68340SIM_BA_CS1: return sim.m_ba[1];
+ case m68340SIM_AM_CS2: return sim.m_am[2];
+ case m68340SIM_BA_CS2: return sim.m_ba[2];
+ case m68340SIM_AM_CS3: return sim.m_am[3];
+ case m68340SIM_BA_CS3: return sim.m_ba[3];
+
+ default:
+ logerror("%08x m68340_internal_sim_r %08x, (%08x)\n", pc, offset*4,mem_mask);
}
return 0x00000000;
}
-WRITE16_MEMBER( m68340cpu_device::m68340_internal_sim_w )
+WRITE16_MEMBER( m68340_cpu_device::m68340_internal_sim_w )
{
- m68340cpu_device *m68k = this;
- m68340_sim* sim = m68k->m68340SIM;
- assert(sim != nullptr);
+ assert(m68340SIM);
+ //m68340_sim &sim = *m68340SIM;
- if (sim)
- {
- int pc = space.device().safe_pc();
+ int pc = space.device().safe_pc();
- switch (offset<<1)
- {
- case m68340SIM_MCR:
- logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (MCR - Module Configuration Register)\n", pc, offset*2,data,mem_mask);
- break;
+ switch (offset<<1)
+ {
+ case m68340SIM_MCR:
+ logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (MCR - Module Configuration Register)\n", pc, offset*2,data,mem_mask);
+ break;
- case m68340SIM_SYNCR:
- logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (SYNCR - Clock Synthesizer Register)\n", pc, offset*2,data,mem_mask);
- break;
+ case m68340SIM_SYNCR:
+ logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (SYNCR - Clock Synthesizer Register)\n", pc, offset*2,data,mem_mask);
+ break;
- case m68340SIM_AVR_RSR:
- logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (AVR, RSR - Auto Vector Register, Reset Status Register)\n", pc, offset*2,data,mem_mask);
- COMBINE_DATA(&m_avr);
- break;
+ case m68340SIM_AVR_RSR:
+ logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (AVR, RSR - Auto Vector Register, Reset Status Register)\n", pc, offset*2,data,mem_mask);
+ COMBINE_DATA(&m_avr);
+ break;
- case m68340SIM_SWIV_SYPCR:
- logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (SWIV_SYPCR - Software Interrupt Vector, System Protection Control Register)\n", pc, offset*2,data,mem_mask);
- break;
+ case m68340SIM_SWIV_SYPCR:
+ logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (SWIV_SYPCR - Software Interrupt Vector, System Protection Control Register)\n", pc, offset*2,data,mem_mask);
+ break;
- case m68340SIM_PICR:
- logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (PICR - Periodic Interrupt Control Register)\n", pc, offset*2,data,mem_mask);
- COMBINE_DATA(&m_picr);
- break;
+ case m68340SIM_PICR:
+ logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (PICR - Periodic Interrupt Control Register)\n", pc, offset*2,data,mem_mask);
+ COMBINE_DATA(&m_picr);
+ break;
- case m68340SIM_PITR:
- logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (PITR - Periodic Interrupt Timer Register)\n", pc, offset*2,data,mem_mask);
- COMBINE_DATA(&m_pitr);
- if (m_pitr !=0 ) // hack
- {
- //logerror("timer set\n");
- m_irq_timer->adjust(cycles_to_attotime(20000)); // hack
- }
+ case m68340SIM_PITR:
+ logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (PITR - Periodic Interrupt Timer Register)\n", pc, offset*2,data,mem_mask);
+ COMBINE_DATA(&m_pitr);
+ if (m_pitr !=0 ) // hack
+ {
+ //logerror("timer set\n");
+ m_irq_timer->adjust(cycles_to_attotime(20000)); // hack
+ }
- break;
+ break;
- case m68340SIM_SWSR:
- // basically watchdog, you must write an alternating pattern of 0x55 / 0xaa to keep the watchdog from resetting the system
- //logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (SWSR - Software Service)\n", pc, offset*2,data,mem_mask);
- break;
+ case m68340SIM_SWSR:
+ // basically watchdog, you must write an alternating pattern of 0x55 / 0xaa to keep the watchdog from resetting the system
+ //logerror("%08x m68340_internal_sim_w %04x, %04x (%04x) (SWSR - Software Service)\n", pc, offset*2,data,mem_mask);
+ break;
- default:
- logerror("%08x m68340_internal_sim_w %04x, %04x (%04x)\n", pc, offset*2,data,mem_mask);
+ default:
+ logerror("%08x m68340_internal_sim_w %04x, %04x (%04x)\n", pc, offset*2,data,mem_mask);
- }
}
}
-WRITE8_MEMBER( m68340cpu_device::m68340_internal_sim_ports_w )
+WRITE8_MEMBER( m68340_cpu_device::m68340_internal_sim_ports_w )
{
offset += 0x10;
- m68340cpu_device *m68k = this;
- m68340_sim* sim = m68k->m68340SIM;
- assert(sim != nullptr);
-
- if (sim)
- {
- int pc = space.device().safe_pc();
+ assert(m68340SIM);
+ //m68340_sim &sim = *m68340SIM;
- switch (offset)
- {
- case m68340SIM_PORTA:
- logerror("%08x m68340_internal_sim_w %04x, %02x (PORTA - Port A Data)\n", pc, offset,data);
- break;
+ int pc = space.device().safe_pc();
- case m68340SIM_DDRA:
- logerror("%08x m68340_internal_sim_w %04x, %02x (DDRA - Port A Data Direction)\n", pc, offset,data);
- break;
+ switch (offset)
+ {
+ case m68340SIM_PORTA:
+ logerror("%08x m68340_internal_sim_w %04x, %02x (PORTA - Port A Data)\n", pc, offset,data);
+ break;
- case m68340SIM_PPRA1:
- logerror("%08x m68340_internal_sim_w %04x, %02x (PPRA1 - Port A Pin Assignment 1)\n", pc, offset,data);
- break;
+ case m68340SIM_DDRA:
+ logerror("%08x m68340_internal_sim_w %04x, %02x (DDRA - Port A Data Direction)\n", pc, offset,data);
+ break;
- case m68340SIM_PPRA2:
- logerror("%08x m68340_internal_sim_w %04x, %02x (PPRA2 - Port A Pin Assignment 2)\n", pc, offset,data);
- break;
+ case m68340SIM_PPRA1:
+ logerror("%08x m68340_internal_sim_w %04x, %02x (PPRA1 - Port A Pin Assignment 1)\n", pc, offset,data);
+ break;
- case m68340SIM_PORTB:
- logerror("%08x m68340_internal_sim_w %04x, %02x (PORTB - Port B Data)\n", pc, offset,data);
- break;
+ case m68340SIM_PPRA2:
+ logerror("%08x m68340_internal_sim_w %04x, %02x (PPRA2 - Port A Pin Assignment 2)\n", pc, offset,data);
+ break;
- case m68340SIM_PORTB1:
- logerror("%08x m68340_internal_sim_w %04x, %02x (PORTB1 - Port B Data - mirror)\n", pc, offset,data);
- break;
+ case m68340SIM_PORTB:
+ logerror("%08x m68340_internal_sim_w %04x, %02x (PORTB - Port B Data)\n", pc, offset,data);
+ break;
- case m68340SIM_DDRB:
- logerror("%08x m68340_internal_sim_w %04x, %02x (DDR - Port B Data Direction)\n", pc, offset,data);
- break;
+ case m68340SIM_PORTB1:
+ logerror("%08x m68340_internal_sim_w %04x, %02x (PORTB1 - Port B Data - mirror)\n", pc, offset,data);
+ break;
- case m68340SIM_PPARB:
- logerror("%08x m68340_internal_sim_w %04x, %02x (PPARB - Port B Pin Assignment)\n", pc, offset,data);
- break;
+ case m68340SIM_DDRB:
+ logerror("%08x m68340_internal_sim_w %04x, %02x (DDR - Port B Data Direction)\n", pc, offset,data);
+ break;
- default:
- logerror("%08x m68340_internal_sim_w %04x, %02x (ILLEGAL?)\n", pc, offset,data);
- break;
+ case m68340SIM_PPARB:
+ logerror("%08x m68340_internal_sim_w %04x, %02x (PPARB - Port B Pin Assignment)\n", pc, offset,data);
+ break;
- }
+ default:
+ logerror("%08x m68340_internal_sim_w %04x, %02x (ILLEGAL?)\n", pc, offset,data);
+ break;
}
}
-WRITE32_MEMBER( m68340cpu_device::m68340_internal_sim_cs_w )
+WRITE32_MEMBER( m68340_cpu_device::m68340_internal_sim_cs_w )
{
offset += m68340SIM_AM_CS0>>2;
- m68340cpu_device *m68k = this;
- m68340_sim* sim = m68k->m68340SIM;
- assert(sim != nullptr);
-
- if (sim)
- {
- int pc = space.device().safe_pc();
+ assert(m68340SIM);
+ m68340_sim &sim = *m68340SIM;
- switch (offset<<2)
- {
- case m68340SIM_AM_CS0:
- COMBINE_DATA(&sim->m_am[0]);
- break;
+ int pc = space.device().safe_pc();
- case m68340SIM_BA_CS0:
- COMBINE_DATA(&sim->m_ba[0]);
- break;
+ switch (offset<<2)
+ {
+ case m68340SIM_AM_CS0:
+ COMBINE_DATA(&sim.m_am[0]);
+ break;
- case m68340SIM_AM_CS1:
- COMBINE_DATA(&sim->m_am[1]);
- break;
+ case m68340SIM_BA_CS0:
+ COMBINE_DATA(&sim.m_ba[0]);
+ break;
- case m68340SIM_BA_CS1:
- COMBINE_DATA(&sim->m_ba[1]);
- break;
+ case m68340SIM_AM_CS1:
+ COMBINE_DATA(&sim.m_am[1]);
+ break;
- case m68340SIM_AM_CS2:
- COMBINE_DATA(&sim->m_am[2]);
- break;
+ case m68340SIM_BA_CS1:
+ COMBINE_DATA(&sim.m_ba[1]);
+ break;
- case m68340SIM_BA_CS2:
- COMBINE_DATA(&sim->m_ba[2]);
- break;
+ case m68340SIM_AM_CS2:
+ COMBINE_DATA(&sim.m_am[2]);
+ break;
- case m68340SIM_AM_CS3:
- COMBINE_DATA(&sim->m_am[3]);
- break;
+ case m68340SIM_BA_CS2:
+ COMBINE_DATA(&sim.m_ba[2]);
+ break;
- case m68340SIM_BA_CS3:
- COMBINE_DATA(&sim->m_ba[3]);
- break;
+ case m68340SIM_AM_CS3:
+ COMBINE_DATA(&sim.m_am[3]);
+ break;
- default:
- logerror("%08x m68340_internal_sim_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
- break;
+ case m68340SIM_BA_CS3:
+ COMBINE_DATA(&sim.m_ba[3]);
+ break;
- }
+ default:
+ logerror("%08x m68340_internal_sim_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
+ break;
}
-
}
-void m68340cpu_device::do_timer_irq(void)
+void m68340_cpu_device::do_timer_irq()
{
//logerror("do_timer_irq\n");
int timer_irq_level = (m_picr & 0x0700)>>8;
@@ -333,17 +342,17 @@ void m68340cpu_device::do_timer_irq(void)
}
}
-TIMER_CALLBACK_MEMBER(m68340cpu_device::periodic_interrupt_timer_callback)
+TIMER_CALLBACK_MEMBER(m68340_cpu_device::periodic_interrupt_timer_callback)
{
do_timer_irq();
m_irq_timer->adjust(cycles_to_attotime(20000)); // hack
}
-void m68340cpu_device::start_68340_sim(void)
+void m68340_cpu_device::start_68340_sim()
{
- m_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m68340cpu_device::periodic_interrupt_timer_callback),this));
+ m_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m68340_cpu_device::periodic_interrupt_timer_callback),this));
}
-void m68340_sim::reset(void)
+void m68340_sim::reset()
{
}
diff --git a/src/devices/machine/68340sim.h b/src/devices/machine/68340sim.h
index 821de60b319..203930d0466 100644
--- a/src/devices/machine/68340sim.h
+++ b/src/devices/machine/68340sim.h
@@ -1,60 +1,18 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
+#ifndef MAME_MACHINE_68340SIM_H
+#define MAME_MACHINE_68340SIM_H
-#include "cpu/m68000/m68000.h"
-
-#define m68340SIM_MCR (0x00)
-// (0x02)
-#define m68340SIM_SYNCR (0x04)
-#define m68340SIM_AVR_RSR (0x06)
-// (0x08)
-// (0x0a)
-// (0x0c)
-// (0x0e)
-#define m68340SIM_PORTA (0x11)
-#define m68340SIM_DDRA (0x13)
-#define m68340SIM_PPRA1 (0x15)
-#define m68340SIM_PPRA2 (0x17)
-#define m68340SIM_PORTB (0x19)
-#define m68340SIM_PORTB1 (0x1b)
-#define m68340SIM_DDRB (0x1d)
-#define m68340SIM_PPARB (0x1f)
-#define m68340SIM_SWIV_SYPCR (0x20)
-#define m68340SIM_PICR (0x22)
-#define m68340SIM_PITR (0x24)
-#define m68340SIM_SWSR (0x26)
-// (0x28)
-// (0x2a)
-// (0x2c)
-// (0x2e)
-// (0x30)
-// (0x32)
-// (0x34)
-// (0x36)
-// (0x38)
-// (0x3a)
-// (0x3c)
-// (0x3e)
-#define m68340SIM_AM_CS0 (0x40)
-#define m68340SIM_BA_CS0 (0x44)
-#define m68340SIM_AM_CS1 (0x48)
-#define m68340SIM_BA_CS1 (0x4c)
-#define m68340SIM_AM_CS2 (0x50)
-#define m68340SIM_BA_CS2 (0x54)
-#define m68340SIM_AM_CS3 (0x58)
-#define m68340SIM_BA_CS3 (0x5c)
-
-
-
-
+#pragma once
class m68340_sim
{
- public:
-
+public:
uint32_t m_am[4];
uint32_t m_ba[4];
- void reset(void);
+ void reset();
};
+
+#endif // MAME_MACHINE_68340SIM_H
diff --git a/src/devices/machine/68340tmu.cpp b/src/devices/machine/68340tmu.cpp
index faffb9d1181..92014401a34 100644
--- a/src/devices/machine/68340tmu.cpp
+++ b/src/devices/machine/68340tmu.cpp
@@ -6,34 +6,26 @@
#include "68340.h"
-READ32_MEMBER( m68340cpu_device::m68340_internal_timer_r )
+READ32_MEMBER( m68340_cpu_device::m68340_internal_timer_r )
{
- m68340cpu_device *m68k = this;
- m68340_timer* timer = m68k->m68340TIMER;
- assert(timer != nullptr);
+ assert(m68340TIMER);
+ //m68340_timer &timer = *m68340TIMER;
- if (timer)
- {
- int pc = space.device().safe_pc();
- logerror("%08x m68340_internal_timer_r %08x, (%08x)\n", pc, offset*4,mem_mask);
- }
+ int pc = space.device().safe_pc();
+ logerror("%08x m68340_internal_timer_r %08x, (%08x)\n", pc, offset*4,mem_mask);
return 0x00000000;
}
-WRITE32_MEMBER( m68340cpu_device::m68340_internal_timer_w )
+WRITE32_MEMBER( m68340_cpu_device::m68340_internal_timer_w )
{
- m68340cpu_device *m68k = this;
- m68340_timer* timer = m68k->m68340TIMER;
- assert(timer != nullptr);
-
- if (timer)
- {
- int pc = space.device().safe_pc();
- logerror("%08x m68340_internal_timer_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
- }
+ assert(m68340TIMER);
+ //m68340_timer &timer = *m68340TIMER;
+
+ int pc = space.device().safe_pc();
+ logerror("%08x m68340_internal_timer_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
}
-void m68340_timer::reset(void)
+void m68340_timer::reset()
{
}
diff --git a/src/devices/machine/68340tmu.h b/src/devices/machine/68340tmu.h
index a892e2792d8..911a079c520 100644
--- a/src/devices/machine/68340tmu.h
+++ b/src/devices/machine/68340tmu.h
@@ -1,10 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
-#include "cpu/m68000/m68000.h"
+#ifndef MAME_MACHINE_68340TMU_H
+#define MAME_MACHINE_68340TMU_H
+
+#pragma once
class m68340_timer
{
- public:
- void reset(void);
+public:
+ void reset();
};
+
+#endif // MAME_MACHINE_68340TMU_H
diff --git a/src/devices/machine/6840ptm.cpp b/src/devices/machine/6840ptm.cpp
index 883821cb039..8921c50201c 100644
--- a/src/devices/machine/6840ptm.cpp
+++ b/src/devices/machine/6840ptm.cpp
@@ -38,9 +38,9 @@
#include "emu.h"
#include "6840ptm.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-#define PTMVERBOSE 0
-#define PLOG(x) do { if (PTMVERBOSE) logerror x; } while (0)
/***************************************************************************
LOCAL VARIABLES
@@ -63,18 +63,18 @@ const char *const ptm6840_device::opmode[] =
***************************************************************************/
// device type definition
-const device_type PTM6840 = device_creator<ptm6840_device>;
+DEFINE_DEVICE_TYPE(PTM6840, ptm6840_device, "ptm6840", "MC6840 PTM")
//-------------------------------------------------
// ptm6840_device - constructor
//-------------------------------------------------
ptm6840_device::ptm6840_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PTM6840, "6840 PTM", tag, owner, clock, "ptm6840", __FILE__),
- m_out_cb{*this, *this, *this},
- m_irq_cb(*this)
+ : device_t(mconfig, PTM6840, tag, owner, clock)
+ , m_external_clock{ 0.0, 0.0, 0.0 }
+ , m_out_cb{*this, *this, *this}
+ , m_irq_cb(*this)
{
- m_external_clock[0] = m_external_clock[1] = m_external_clock[2] = 0.0;
}
//-------------------------------------------------
@@ -300,7 +300,7 @@ uint16_t ptm6840_device::compute_counter( int counter ) const
// If there's no timer, return the count
if (!m_enabled[counter])
{
- PLOG(("MC6840 #%s: read counter(%d): %d\n", tag(), counter, m_counter[counter]));
+ LOG("MC6840: read counter(%d): %d\n", counter, m_counter[counter]);
return m_counter[counter];
}
@@ -308,12 +308,12 @@ uint16_t ptm6840_device::compute_counter( int counter ) const
if (m_control_reg[counter] & INTERNAL_CLK_EN)
{
clk = static_cast<double>(clock());
- PLOG(("MC6840 #%s: %d internal clock freq %f \n", tag(), counter, clk));
+ LOG("MC6840: %d internal clock freq %f \n", counter, clk);
}
else
{
clk = m_external_clock[counter];
- PLOG(("MC6840 #%s: %d external clock freq %f \n", tag(), counter, clk));
+ LOG("MC6840: %d external clock freq %f \n", counter, clk);
}
// See how many are left
int remaining = (m_timer[counter]->remaining() * clk).as_double();
@@ -326,7 +326,7 @@ uint16_t ptm6840_device::compute_counter( int counter ) const
int lsb = remaining % divisor;
remaining = (msb << 8) | lsb;
}
- PLOG(("MC6840 #%s: read counter(%d): %d\n", tag(), counter, remaining));
+ LOG("MC6840: read counter(%d): %d\n", counter, remaining);
return remaining;
}
@@ -351,12 +351,12 @@ void ptm6840_device::reload_count(int idx)
if (m_control_reg[idx] & INTERNAL_CLK_EN)
{
clk = static_cast<double> (clock());
- PLOG(("MC6840 #%s: %d internal clock freq %f \n", tag(), idx, clk));
+ LOG("MC6840: %d internal clock freq %f \n", idx, clk);
}
else
{
clk = m_external_clock[idx];
- PLOG(("MC6840 #%s: %d external clock freq %f \n", tag(), idx, clk));
+ LOG("MC6840: %d external clock freq %f \n", idx, clk);
}
// Determine the number of clock periods before we expire
@@ -379,7 +379,7 @@ void ptm6840_device::reload_count(int idx)
}
// Set the timer
- PLOG(("MC6840 #%s: reload_count(%d): clock = %f count = %d\n", tag(), idx, clk, count));
+ LOG("MC6840: reload_count(%d): clock = %f count = %d\n", idx, clk, count);
attotime duration = attotime::from_hz(clk) * count;
if (idx == 2)
@@ -387,7 +387,7 @@ void ptm6840_device::reload_count(int idx)
duration *= m_t3_divisor;
}
- PLOG(("MC6840 #%s: reload_count(%d): output = %f\n", tag(), idx, duration.as_double()));
+ LOG("MC6840: reload_count(%d): output = %f\n", idx, duration.as_double());
#if 0
if (!(m_control_reg[idx] & INTERNAL_CLK_EN))
@@ -427,7 +427,7 @@ READ8_MEMBER( ptm6840_device::read )
case PTM_6840_STATUS:
{
- PLOG(("%s: MC6840 #%s: Status read = %04X\n", machine().describe_context(), tag(), m_status_reg));
+ LOG("%s: MC6840: Status read = %04X\n", machine().describe_context(), m_status_reg);
m_status_read_since_int |= m_status_reg & 0x07;
val = m_status_reg;
break;
@@ -449,7 +449,7 @@ READ8_MEMBER( ptm6840_device::read )
m_lsb_buffer = result & 0xff;
- PLOG(("%s: MC6840 #%s: Counter %d read = %04X\n", machine().describe_context(), tag(), idx, result >> 8));
+ LOG("%s: MC6840: Counter %d read = %04X\n", machine().describe_context(), idx, result >> 8);
val = result >> 8;
break;
}
@@ -490,10 +490,10 @@ WRITE8_MEMBER( ptm6840_device::write )
m_mode[idx] = (data >> 3) & 0x07;
m_control_reg[idx] = data;
- PLOG(("MC6840 #%s : Control register %d selected\n", tag(), idx));
- PLOG(("operation mode = %s\n", opmode[ m_mode[idx] ]));
- PLOG(("value = %04X\n", m_control_reg[idx]));
- PLOG(("t3divisor = %d\n", m_t3_divisor));
+ LOG("MC6840: Control register %d selected\n", idx);
+ LOG("operation mode = %s\n", opmode[m_mode[idx]]);
+ LOG("value = %04X\n", m_control_reg[idx]);
+ LOG("t3divisor = %d\n", m_t3_divisor);
if (diffs & INTERRUPT_EN)
update_interrupts();
@@ -510,7 +510,7 @@ WRITE8_MEMBER( ptm6840_device::write )
// Holding reset down
if (data & RESET_TIMERS)
{
- PLOG(("MC6840 #%s : Timer reset\n", tag()));
+ LOG("MC6840: Timer reset\n");
for (int i = 0; i < 3; i++)
{
m_timer[i]->enable(false);
@@ -542,7 +542,7 @@ WRITE8_MEMBER( ptm6840_device::write )
case PTM_6840_MSBBUF2:
case PTM_6840_MSBBUF3:
{
- PLOG(("MC6840 #%s msbbuf%d = %02X\n", tag(), offset / 2, data));
+ LOG("MC6840 msbbuf%d = %02X\n", offset / 2, data);
m_msb_buffer = data;
break;
}
@@ -564,7 +564,7 @@ WRITE8_MEMBER( ptm6840_device::write )
reload_count(idx);
}
- PLOG(("%s:MC6840 #%s: Counter %d latch = %04X\n", machine().describe_context(), tag(), idx, m_latch[idx]));
+ LOG("%s:MC6840: Counter %d latch = %04X\n", machine().describe_context(), idx, m_latch[idx]);
break;
}
}
@@ -577,7 +577,7 @@ WRITE8_MEMBER( ptm6840_device::write )
void ptm6840_device::timeout(int idx)
{
- PLOG(("**ptm6840 %s t%d timeout**\n", tag(), idx));
+ LOG("**ptm6840 t%d timeout**\n", idx);
// Set the interrupt flag
m_status_reg |= (1 << idx);
@@ -591,7 +591,7 @@ void ptm6840_device::timeout(int idx)
case 0:
case 2:
m_output[idx] = m_output[idx] ^ 1;
- PLOG(("**ptm6840 %s t%d output %d **\n", tag(), idx, m_output[idx]));
+ LOG("**ptm6840 t%d output %d **\n", idx, m_output[idx]);
m_out_cb[idx](m_output[idx]);
break;
@@ -600,7 +600,7 @@ void ptm6840_device::timeout(int idx)
if (!m_fired[idx])
{
m_output[idx] = 1;
- PLOG(("**ptm6840 %s t%d output %d **\n", tag(), idx, m_output[idx]));
+ LOG("**ptm6840 t%d output %d **\n", idx, m_output[idx]);
m_out_cb[idx](m_output[idx]);
diff --git a/src/devices/machine/6840ptm.h b/src/devices/machine/6840ptm.h
index 0ee38b0be4f..832f511179b 100644
--- a/src/devices/machine/6840ptm.h
+++ b/src/devices/machine/6840ptm.h
@@ -8,11 +8,10 @@
***************************************************************************/
-#pragma once
-
-#ifndef __6840PTM_H__
-#define __6840PTM_H__
+#ifndef MAME_MACHINE_6840PTM_H
+#define MAME_MACHINE_6840PTM_H
+#pragma once
@@ -48,8 +47,8 @@ public:
ptm6840_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_external_clocks(device_t &device, double clock0, double clock1, double clock2) { downcast<ptm6840_device &>(device).m_external_clock[0] = clock0; downcast<ptm6840_device &>(device).m_external_clock[1] = clock1; downcast<ptm6840_device &>(device).m_external_clock[2] = clock2; }
- template<class _Object> static devcb_base &set_out_callback(device_t &device, int index, _Object object) { return downcast<ptm6840_device &>(device).m_out_cb[index].set_callback(object); }
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<ptm6840_device &>(device).m_irq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_callback(device_t &device, int index, Object &&cb) { return downcast<ptm6840_device &>(device).m_out_cb[index].set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<ptm6840_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
int status(int clock) const { return m_enabled[clock]; } // get whether timer is enabled
int irq_state() const { return m_irq; } // get IRQ state
@@ -151,7 +150,6 @@ private:
// device type definition
-extern const device_type PTM6840;
-
+DECLARE_DEVICE_TYPE(PTM6840, ptm6840_device)
-#endif /* __6840PTM_H__ */
+#endif // MAME_MACHINE_6840PTM_H
diff --git a/src/devices/machine/6850acia.cpp b/src/devices/machine/6850acia.cpp
index 567a0af6e9f..64624699e9b 100644
--- a/src/devices/machine/6850acia.cpp
+++ b/src/devices/machine/6850acia.cpp
@@ -58,60 +58,38 @@ const int acia6850_device::transmitter_control[4][3] =
***************************************************************************/
// device type definition
-const device_type ACIA6850 = device_creator<acia6850_device>;
-
-template class device_finder<acia6850_device, false>;
-template class device_finder<acia6850_device, true>;
+DEFINE_DEVICE_TYPE(ACIA6850, acia6850_device, "acia6850", "MC6850 ACIA")
//-------------------------------------------------
// acia6850_device - constructor
//-------------------------------------------------
acia6850_device::acia6850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ACIA6850, "6850 ACIA", tag, owner, clock, "acia6850", __FILE__),
- m_txd_handler(*this),
- m_rts_handler(*this),
- m_irq_handler(*this),
- m_status(SR_TDRE),
- m_tdr(0),
- m_first_master_reset(true),
- m_dcd_irq_pending(false),
- m_overrun_pending(false),
- m_divide(0),
- m_rts(0),
- m_dcd(0),
- m_irq(0),
- m_txc(0),
- m_txd(0),
- m_tx_counter(0),
- m_tx_irq_enable(false),
- m_rxc(0),
- m_rxd(1),
- m_rx_irq_enable(false)
+ : acia6850_device(mconfig, ACIA6850, tag, owner, clock)
{
}
-acia6850_device::acia6850_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_txd_handler(*this),
- m_rts_handler(*this),
- m_irq_handler(*this),
- m_status(SR_TDRE),
- m_tdr(0),
- m_first_master_reset(true),
- m_dcd_irq_pending(false),
- m_overrun_pending(false),
- m_divide(0),
- m_rts(0),
- m_dcd(0),
- m_irq(0),
- m_txc(0),
- m_txd(0),
- m_tx_counter(0),
- m_tx_irq_enable(false),
- m_rxc(0),
- m_rxd(1),
- m_rx_irq_enable(false)
+acia6850_device::acia6850_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_txd_handler(*this)
+ , m_rts_handler(*this)
+ , m_irq_handler(*this)
+ , m_status(SR_TDRE)
+ , m_tdr(0)
+ , m_first_master_reset(true)
+ , m_dcd_irq_pending(false)
+ , m_overrun_pending(false)
+ , m_divide(0)
+ , m_rts(0)
+ , m_dcd(0)
+ , m_irq(0)
+ , m_txc(0)
+ , m_txd(0)
+ , m_tx_counter(0)
+ , m_tx_irq_enable(false)
+ , m_rxc(0)
+ , m_rxd(1)
+ , m_rx_irq_enable(false)
{
}
diff --git a/src/devices/machine/6850acia.h b/src/devices/machine/6850acia.h
index ebf7594aeec..8ec75cf5e6e 100644
--- a/src/devices/machine/6850acia.h
+++ b/src/devices/machine/6850acia.h
@@ -8,10 +8,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_6850ACIA_H
+#define MAME_MACHINE_6850ACIA_H
-#ifndef __ACIA6850_H__
-#define __ACIA6850_H__
+#pragma once
#define MCFG_ACIA6850_TXD_HANDLER(_devcb) \
@@ -30,9 +30,9 @@ public:
acia6850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast<acia6850_device &>(device).m_txd_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rts_handler(device_t &device, _Object object) { return downcast<acia6850_device &>(device).m_rts_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<acia6850_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<acia6850_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<acia6850_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<acia6850_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( control_w );
DECLARE_READ8_MEMBER( status_r );
@@ -46,7 +46,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( write_txc );
protected:
- acia6850_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ acia6850_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -140,9 +140,6 @@ private:
};
// device type definition
-extern const device_type ACIA6850;
-
-extern template class device_finder<acia6850_device, false>;
-extern template class device_finder<acia6850_device, true>;
+DECLARE_DEVICE_TYPE(ACIA6850, acia6850_device)
-#endif /* __ACIA6850_H__ */
+#endif // MAME_MACHINE_6850ACIA_H
diff --git a/src/devices/machine/68561mpcc.cpp b/src/devices/machine/68561mpcc.cpp
index b783e436758..92f45df9e0e 100644
--- a/src/devices/machine/68561mpcc.cpp
+++ b/src/devices/machine/68561mpcc.cpp
@@ -86,18 +86,18 @@ FEATURES
// DEVICE DEFINITIONS
//**************************************************************************
// device type definition
-const device_type MPCC = device_creator<mpcc_device>;
-const device_type MPCC68560 = device_creator<mpcc68560_device>;
-const device_type MPCC68560A = device_creator<mpcc68560A_device>;
-const device_type MPCC68561 = device_creator<mpcc68561_device>;
-const device_type MPCC68561A = device_creator<mpcc68561A_device>;
+DEFINE_DEVICE_TYPE(MPCC, mpcc_device, "mpcc", "Rockwell MPCC")
+DEFINE_DEVICE_TYPE(MPCC68560, mpcc68560_device, "mpcc68560", "MPCC 68560")
+DEFINE_DEVICE_TYPE(MPCC68560A, mpcc68560a_device, "mpcc68560a", "MPCC 68560A")
+DEFINE_DEVICE_TYPE(MPCC68561, mpcc68561_device, "mpcc68561", "MPCC 68561")
+DEFINE_DEVICE_TYPE(MPCC68561A, mpcc68561a_device, "mpcc68561a", "MPCC 68561A")
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
-mpcc_device::mpcc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+mpcc_device::mpcc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock),
device_serial_interface(mconfig, *this),
m_irq(CLEAR_LINE),
m_variant(variant),
@@ -141,27 +141,27 @@ mpcc_device::mpcc_device(const machine_config &mconfig, device_type type, const
}
mpcc_device::mpcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mpcc_device(mconfig, MPCC, "Rockwell MPCC", tag, owner, clock, TYPE_MPCC, "mpcc", __FILE__)
+ : mpcc_device(mconfig, MPCC, tag, owner, clock, TYPE_MPCC)
{
}
mpcc68560_device::mpcc68560_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mpcc_device(mconfig, MPCC68560, "MPCC 68560", tag, owner, clock, TYPE_MPCC68560, "mpcc68560", __FILE__)
+ : mpcc_device(mconfig, MPCC68560, tag, owner, clock, TYPE_MPCC68560)
{
}
-mpcc68560A_device::mpcc68560A_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mpcc_device(mconfig, MPCC68560A, "MPCC 68560A", tag, owner, clock, TYPE_MPCC68560A, "mpcc68560a", __FILE__)
+mpcc68560a_device::mpcc68560a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : mpcc_device(mconfig, MPCC68560A, tag, owner, clock, TYPE_MPCC68560A)
{
}
mpcc68561_device::mpcc68561_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mpcc_device(mconfig, MPCC68561, "MPCC 68561", tag, owner, clock, TYPE_MPCC68561, "mpcc68561", __FILE__)
+ : mpcc_device(mconfig, MPCC68561, tag, owner, clock, TYPE_MPCC68561)
{
}
-mpcc68561A_device::mpcc68561A_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mpcc_device(mconfig, MPCC68561A, "MPCC 68561A", tag, owner, clock, TYPE_MPCC68561A, "mpcc68561a", __FILE__)
+mpcc68561a_device::mpcc68561a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : mpcc_device(mconfig, MPCC68561A, tag, owner, clock, TYPE_MPCC68561A)
{
}
diff --git a/src/devices/machine/68561mpcc.h b/src/devices/machine/68561mpcc.h
index f9832be6c11..031d60bdef4 100644
--- a/src/devices/machine/68561mpcc.h
+++ b/src/devices/machine/68561mpcc.h
@@ -35,8 +35,8 @@
***************************************************************************/
-#ifndef MPCC68561_H
-#define MPCC68561_H
+#ifndef MAME_MACHINE_68561MPCC_H
+#define MAME_MACHINE_68561MPCC_H
/* Variant ADD macros - use the right one to enable the right feature set! */
@@ -89,21 +89,19 @@
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class mpcc_device : public device_t,
- public device_serial_interface
+class mpcc_device : public device_t, public device_serial_interface
{
public:
// construction/destruction
- mpcc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
mpcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_txd_callback(device_t &device, _Object object) { return downcast<mpcc_device &>(device).m_out_txd_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtr_callback(device_t &device, _Object object) { return downcast<mpcc_device &>(device).m_out_dtr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rts_callback(device_t &device, _Object object) { return downcast<mpcc_device &>(device).m_out_rts_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtxc_callback(device_t &device, _Object object) { return downcast<mpcc_device &>(device).m_out_rtxc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_trxc_callback(device_t &device, _Object object) { return downcast<mpcc_device &>(device).m_out_trxc_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_txd_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_txd_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtxc_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_rtxc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_trxc_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_trxc_cb.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<mpcc_device &>(device).m_out_int_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<mpcc_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
static void configure_clocks(device_t &device, int rxc, int txc)
{
@@ -127,6 +125,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( txc_w ) {} // { m_chanA->txc_w(state); }
protected:
+ mpcc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -197,10 +197,9 @@ protected:
TYPE_MPCC68560A = 0x004,
TYPE_MPCC68561 = 0x008,
TYPE_MPCC68561A = 0x010,
+ SET_TYPE_A = TYPE_MPCC68560A | TYPE_MPCC68561A
};
-#define SET_TYPE_A ( mpcc_device::TYPE_MPCC68560A | mpcc_device::TYPE_MPCC68561A )
-
// State variables
uint32_t m_irq;
uint32_t m_variant;
@@ -454,16 +453,16 @@ protected:
};
+class mpcc68560_device : public mpcc_device { public: mpcc68560_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); };
+class mpcc68560a_device : public mpcc_device { public: mpcc68560a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); };
+class mpcc68561_device : public mpcc_device { public: mpcc68561_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); };
+class mpcc68561a_device : public mpcc_device { public: mpcc68561a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); };
+
// device type definition
-extern const device_type MPCC;
-extern const device_type MPCC68560;
-extern const device_type MPCC68560A;
-extern const device_type MPCC68561;
-extern const device_type MPCC68561A;
-
-class mpcc68560_device : public mpcc_device { public : mpcc68560_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); };
-class mpcc68560A_device : public mpcc_device { public : mpcc68560A_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); };
-class mpcc68561_device : public mpcc_device { public : mpcc68561_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); };
-class mpcc68561A_device : public mpcc_device { public : mpcc68561A_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); };
-
-#endif // MPCC68561_H
+DECLARE_DEVICE_TYPE(MPCC, mpcc_device)
+DECLARE_DEVICE_TYPE(MPCC68560, mpcc68560_device)
+DECLARE_DEVICE_TYPE(MPCC68560A, mpcc68560a_device)
+DECLARE_DEVICE_TYPE(MPCC68561, mpcc68561_device)
+DECLARE_DEVICE_TYPE(MPCC68561A, mpcc68561a_device)
+
+#endif // MAME_MACHINE_68561MPCC_H
diff --git a/src/devices/machine/7200fifo.cpp b/src/devices/machine/7200fifo.cpp
index ff2c9205f91..05ba0f686d4 100644
--- a/src/devices/machine/7200fifo.cpp
+++ b/src/devices/machine/7200fifo.cpp
@@ -14,14 +14,14 @@
#include "machine/7200fifo.h"
-const device_type FIFO7200 = device_creator<fifo7200_device>;
+DEFINE_DEVICE_TYPE(FIFO7200, fifo7200_device, "fifo7200", "IDT7200 FIFO")
//-------------------------------------------------
// fifo7200_device - constructor
//-------------------------------------------------
fifo7200_device::fifo7200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, FIFO7200, "IDT7200 FIFO", tag, owner, clock, "fifo7200", __FILE__),
+ : device_t(mconfig, FIFO7200, tag, owner, clock),
m_ram_size(0), m_read_ptr(0), m_write_ptr(0), m_ef(0), m_ff(0), m_hf(0),
m_ef_handler(*this),
m_ff_handler(*this),
diff --git a/src/devices/machine/7200fifo.h b/src/devices/machine/7200fifo.h
index c1ebf2d36e5..b9d2a01009c 100644
--- a/src/devices/machine/7200fifo.h
+++ b/src/devices/machine/7200fifo.h
@@ -45,10 +45,10 @@ The following chips are functionally equivalent and pin-compatible.
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_7200FIFO_H
+#define MAME_MACHINE_7200FIFO_H
-#ifndef _7200FIFO_H
-#define _7200FIFO_H
+#pragma once
@@ -83,9 +83,9 @@ public:
fifo7200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_ef_handler(device_t &device, _Object object) { return downcast<fifo7200_device &>(device).m_ef_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ff_handler(device_t &device, _Object object) { return downcast<fifo7200_device &>(device).m_ff_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_hf_handler(device_t &device, _Object object) { return downcast<fifo7200_device &>(device).m_hf_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ef_handler(device_t &device, Object &&cb) { return downcast<fifo7200_device &>(device).m_ef_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ff_handler(device_t &device, Object &&cb) { return downcast<fifo7200_device &>(device).m_ff_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hf_handler(device_t &device, Object &&cb) { return downcast<fifo7200_device &>(device).m_hf_handler.set_callback(std::forward<Object>(cb)); }
static void set_ram_size(device_t &device, int size) { downcast<fifo7200_device &>(device).m_ram_size = size; }
DECLARE_READ_LINE_MEMBER( ef_r ) { return !m_ef; } // _EF
@@ -125,7 +125,6 @@ private:
};
// device type definition
-extern const device_type FIFO7200;
-
+DECLARE_DEVICE_TYPE(FIFO7200, fifo7200_device)
-#endif /* _7200FIFO_H */
+#endif // MAME_MACHINE_7200FIFO_H
diff --git a/src/devices/machine/7400.cpp b/src/devices/machine/7400.cpp
index fa189e91a7d..595ce09ac32 100644
--- a/src/devices/machine/7400.cpp
+++ b/src/devices/machine/7400.cpp
@@ -9,10 +9,10 @@
#include "emu.h"
#include "7400.h"
-const device_type TTL7400 = device_creator<ttl7400_device>;
+DEFINE_DEVICE_TYPE(TTL7400, ttl7400_device, "7400", "7400 Quad 2-Input NAND Gate")
ttl7400_device::ttl7400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TTL7400, "7400 Quad 2-Input NAND Gate", tag, owner, clock, "7400", __FILE__)
+ : device_t(mconfig, TTL7400, tag, owner, clock)
, m_y1_func(*this)
, m_y2_func(*this)
, m_y3_func(*this)
diff --git a/src/devices/machine/7400.h b/src/devices/machine/7400.h
index 69ddaa2685a..a202a85d466 100644
--- a/src/devices/machine/7400.h
+++ b/src/devices/machine/7400.h
@@ -28,10 +28,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_7400_H
+#define MAME_MACHINE_7400_H
-#ifndef TTL7400_H
-#define TTL7400_H
+#pragma once
#define MCFG_7400_Y1_CB(_devcb) \
@@ -56,10 +56,10 @@ public:
ttl7400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_y1_cb(device_t &device, _Object object) { return downcast<ttl7400_device &>(device).m_y1_func.set_callback(object); }
- template<class _Object> static devcb_base &set_y2_cb(device_t &device, _Object object) { return downcast<ttl7400_device &>(device).m_y2_func.set_callback(object); }
- template<class _Object> static devcb_base &set_y3_cb(device_t &device, _Object object) { return downcast<ttl7400_device &>(device).m_y3_func.set_callback(object); }
- template<class _Object> static devcb_base &set_y4_cb(device_t &device, _Object object) { return downcast<ttl7400_device &>(device).m_y4_func.set_callback(object); }
+ template <class Object> static devcb_base &set_y1_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_y2_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_y3_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_y4_cb(device_t &device, Object &&cb) { return downcast<ttl7400_device &>(device).m_y4_func.set_callback(std::forward<Object>(cb)); }
// public interfaces
DECLARE_WRITE_LINE_MEMBER( a1_w );
@@ -104,7 +104,6 @@ private:
};
// device type definition
-extern const device_type TTL7400;
-
+DECLARE_DEVICE_TYPE(TTL7400, ttl7400_device)
-#endif /* TTL7400_H */
+#endif // MAME_MACHINE_7400_H
diff --git a/src/devices/machine/7404.cpp b/src/devices/machine/7404.cpp
index 09251088c87..1c056c4ccc0 100644
--- a/src/devices/machine/7404.cpp
+++ b/src/devices/machine/7404.cpp
@@ -9,10 +9,10 @@
#include "emu.h"
#include "7404.h"
-const device_type TTL7404 = device_creator<ttl7404_device>;
+DEFINE_DEVICE_TYPE(TTL7404, ttl7404_device, "7404", "5/7404 Hex Inverters")
ttl7404_device::ttl7404_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TTL7404, "5/7404 Hex Inverters", tag, owner, clock, "7404", __FILE__)
+ : device_t(mconfig, TTL7404, tag, owner, clock)
, m_y1_func(*this)
, m_y2_func(*this)
, m_y3_func(*this)
diff --git a/src/devices/machine/7404.h b/src/devices/machine/7404.h
index f7192b802e9..b2be5e5182c 100644
--- a/src/devices/machine/7404.h
+++ b/src/devices/machine/7404.h
@@ -55,10 +55,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_7404_H
+#define MAME_MACHINE_7404_H
-#ifndef TTL7404_H
-#define TTL7404_H
+#pragma once
#define MCFG_7404_Y1_CB(_devcb) \
@@ -89,12 +89,12 @@ public:
ttl7404_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_y1_cb(device_t &device, _Object object) { return downcast<ttl7404_device &>(device).m_y1_func.set_callback(object); }
- template<class _Object> static devcb_base &set_y2_cb(device_t &device, _Object object) { return downcast<ttl7404_device &>(device).m_y2_func.set_callback(object); }
- template<class _Object> static devcb_base &set_y3_cb(device_t &device, _Object object) { return downcast<ttl7404_device &>(device).m_y3_func.set_callback(object); }
- template<class _Object> static devcb_base &set_y4_cb(device_t &device, _Object object) { return downcast<ttl7404_device &>(device).m_y4_func.set_callback(object); }
- template<class _Object> static devcb_base &set_y5_cb(device_t &device, _Object object) { return downcast<ttl7404_device &>(device).m_y5_func.set_callback(object); }
- template<class _Object> static devcb_base &set_y6_cb(device_t &device, _Object object) { return downcast<ttl7404_device &>(device).m_y6_func.set_callback(object); }
+ template <class Object> static devcb_base &set_y1_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_y2_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_y3_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_y4_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y4_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_y5_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y5_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_y6_cb(device_t &device, Object &&cb) { return downcast<ttl7404_device &>(device).m_y6_func.set_callback(std::forward<Object>(cb)); }
// public interfaces
DECLARE_WRITE_LINE_MEMBER( a1_w );
@@ -139,7 +139,6 @@ private:
};
// device type definition
-extern const device_type TTL7404;
-
+DECLARE_DEVICE_TYPE(TTL7404, ttl7404_device)
-#endif /* TTL7404_H */
+#endif // MAME_MACHINE_7404_H
diff --git a/src/devices/machine/74123.cpp b/src/devices/machine/74123.cpp
index 7fde031e7aa..5efb34ec085 100644
--- a/src/devices/machine/74123.cpp
+++ b/src/devices/machine/74123.cpp
@@ -12,9 +12,8 @@
#include "machine/74123.h"
#include "machine/rescap.h"
-
-#define LOG (0)
-
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
@@ -22,14 +21,15 @@
//**************************************************************************
// device type definition
-const device_type TTL74123 = device_creator<ttl74123_device>;
+DEFINE_DEVICE_TYPE(TTL74123, ttl74123_device, "ttl74123", "74123 TTL")
//-------------------------------------------------
// ttl74123_device - constructor
//-------------------------------------------------
ttl74123_device::ttl74123_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TTL74123, "74123 TTL", tag, owner, clock, "ttl74123", __FILE__), m_timer(nullptr),
+ : device_t(mconfig, TTL74123, tag, owner, clock),
+ m_timer(nullptr),
m_connection_type(TTL74123_NOT_GROUNDED_NO_DIODE),
m_res(1.0),
m_cap(1.0),
@@ -135,7 +135,7 @@ void ttl74123_device::set_output()
machine().scheduler().timer_set( attotime::zero, timer_expired_delegate(FUNC(ttl74123_device::output_callback ),this), output);
- if (LOG) logerror("74123 %s: Output: %d\n", tag(), output);
+ LOG("74123: Output: %d\n", output);
}
@@ -167,11 +167,11 @@ void ttl74123_device::start_pulse()
{
m_timer->adjust(duration);
- if (LOG) logerror("74123 %s: Retriggering pulse. Duration: %f\n", tag(), duration.as_double());
+ LOG("74123: Retriggering pulse. Duration: %f\n", duration.as_double());
}
else
{
- if (LOG) logerror("74123 %s: Retriggering failed.\n", tag());
+ LOG("74123: Retriggering failed.\n");
}
}
else
@@ -181,7 +181,7 @@ void ttl74123_device::start_pulse()
set_output();
- if (LOG) logerror("74123 %s: Starting pulse. Duration: %f\n", tag(), duration.as_double());
+ LOG("74123: Starting pulse. Duration: %f\n", duration.as_double());
}
}
@@ -233,7 +233,7 @@ WRITE8_MEMBER( ttl74123_device::clear_w)
{
m_timer->adjust(attotime::zero);
- if (LOG) logerror("74123 #%s: Cleared\n", tag() );
+ LOG("74123: Cleared\n");
}
m_clear = data;
}
diff --git a/src/devices/machine/74123.h b/src/devices/machine/74123.h
index 6019369e05a..0da73384cef 100644
--- a/src/devices/machine/74123.h
+++ b/src/devices/machine/74123.h
@@ -45,10 +45,10 @@
*****************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_74123_H
+#define MAME_MACHINE_74123_H
-#ifndef __TTL74123_H__
-#define __TTL74123_H__
+#pragma once
@@ -103,7 +103,7 @@ public:
static void set_a_pin_value(device_t &device, int value) { downcast<ttl74123_device &>(device).m_a = value; }
static void set_b_pin_value(device_t &device, int value) { downcast<ttl74123_device &>(device).m_b = value; }
static void set_clear_pin_value(device_t &device, int value) { downcast<ttl74123_device &>(device).m_clear = value; }
- template<class _Object> static devcb_base &set_output_changed_callback(device_t &device, _Object object) { return downcast<ttl74123_device &>(device).m_output_changed_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_output_changed_callback(device_t &device, Object &&cb) { return downcast<ttl74123_device &>(device).m_output_changed_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(a_w);
DECLARE_WRITE8_MEMBER(b_w);
@@ -121,7 +121,6 @@ protected:
TIMER_CALLBACK_MEMBER( clear_callback );
private:
-
int timer_running();
void start_pulse();
void set_output();
@@ -139,6 +138,6 @@ private:
// device type definition
-extern const device_type TTL74123;
+DECLARE_DEVICE_TYPE(TTL74123, ttl74123_device)
-#endif
+#endif // MAME_MACHINE_74123_H
diff --git a/src/devices/machine/74145.cpp b/src/devices/machine/74145.cpp
index 4f6b3e2a7be..e6fdd674f97 100644
--- a/src/devices/machine/74145.cpp
+++ b/src/devices/machine/74145.cpp
@@ -50,7 +50,7 @@
#include "coreutil.h"
-const device_type TTL74145 = device_creator<ttl74145_device>;
+DEFINE_DEVICE_TYPE(TTL74145, ttl74145_device, "ttl74145", "TTL74145")
/***************************************************************************
DEVICE INTERFACE
@@ -60,7 +60,7 @@ const device_type TTL74145 = device_creator<ttl74145_device>;
//-------------------------------------------------
ttl74145_device::ttl74145_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TTL74145, "TTL74145", tag, owner, clock, "ttl74145", __FILE__)
+ : device_t(mconfig, TTL74145, tag, owner, clock)
, m_output_line_0_cb(*this)
, m_output_line_1_cb(*this)
, m_output_line_2_cb(*this)
diff --git a/src/devices/machine/74145.h b/src/devices/machine/74145.h
index 8f44de45bb1..d7747b66707 100644
--- a/src/devices/machine/74145.h
+++ b/src/devices/machine/74145.h
@@ -8,8 +8,11 @@
***************************************************************************/
-#ifndef __TTL74145_H__
-#define __TTL74145_H__
+#ifndef MAME_MACHINE_74145_H
+#define MAME_MACHINE_74145_H
+
+#pragma once
+
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -56,19 +59,20 @@ public:
// construction/destruction
ttl74145_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_output_line_0_callback(device_t &device, _Object object) { return downcast<ttl74145_device &>(device).m_output_line_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_line_1_callback(device_t &device, _Object object) { return downcast<ttl74145_device &>(device).m_output_line_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_line_2_callback(device_t &device, _Object object) { return downcast<ttl74145_device &>(device).m_output_line_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_line_3_callback(device_t &device, _Object object) { return downcast<ttl74145_device &>(device).m_output_line_3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_line_4_callback(device_t &device, _Object object) { return downcast<ttl74145_device &>(device).m_output_line_4_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_line_5_callback(device_t &device, _Object object) { return downcast<ttl74145_device &>(device).m_output_line_5_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_line_6_callback(device_t &device, _Object object) { return downcast<ttl74145_device &>(device).m_output_line_6_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_line_7_callback(device_t &device, _Object object) { return downcast<ttl74145_device &>(device).m_output_line_7_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_line_8_callback(device_t &device, _Object object) { return downcast<ttl74145_device &>(device).m_output_line_8_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_line_9_callback(device_t &device, _Object object) { return downcast<ttl74145_device &>(device).m_output_line_9_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_output_line_0_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_line_1_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_line_2_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_line_3_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_line_4_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_line_5_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_line_6_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_6_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_line_7_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_7_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_line_8_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_8_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_line_9_callback(device_t &device, Object &&cb) { return downcast<ttl74145_device &>(device).m_output_line_9_cb.set_callback(std::forward<Object>(cb)); }
uint16_t read();
void write(uint8_t data);
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -91,6 +95,6 @@ private:
};
// device type definition
-extern const device_type TTL74145;
+DECLARE_DEVICE_TYPE(TTL74145, ttl74145_device)
-#endif /* TTL74145 */
+#endif // MAME_MACHINE_74145_H
diff --git a/src/devices/machine/74148.cpp b/src/devices/machine/74148.cpp
index 79a74f16a40..1b8033bc297 100644
--- a/src/devices/machine/74148.cpp
+++ b/src/devices/machine/74148.cpp
@@ -44,17 +44,18 @@
#include "machine/74148.h"
-const device_type TTL74148 = device_creator<ttl74148_device>;
+DEFINE_DEVICE_TYPE(TTL74148, ttl74148_device, "74148", "74148 TTL")
+
ttl74148_device::ttl74148_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TTL74148, "74148 TTL", tag, owner, clock, "74148", __FILE__),
- m_enable_input(0),
- m_output(0),
- m_output_valid(0),
- m_enable_output(0),
- m_last_output(0),
- m_last_output_valid(0),
- m_last_enable_output(0)
+ : device_t(mconfig, TTL74148, tag, owner, clock)
+ , m_enable_input(0)
+ , m_output(0)
+ , m_output_valid(0)
+ , m_enable_output(0)
+ , m_last_output(0)
+ , m_last_output_valid(0)
+ , m_last_enable_output(0)
{
for (auto & elem : m_input_lines)
elem = 0;
diff --git a/src/devices/machine/74148.h b/src/devices/machine/74148.h
index c7301e11588..a3f70b703a1 100644
--- a/src/devices/machine/74148.h
+++ b/src/devices/machine/74148.h
@@ -40,8 +40,10 @@
*****************************************************************************/
-#ifndef TTL74148_H
-#define TTL74148_H
+#ifndef MAME_DEVICES_MACHINE_74148_H
+#define MAME_DEVICES_MACHINE_74148_H
+
+#pragma once
typedef device_delegate<void (void)> ttl74148_output_delegate;
@@ -89,11 +91,11 @@ private:
int m_last_enable_output;
};
-extern const device_type TTL74148;
+DECLARE_DEVICE_TYPE(TTL74148, ttl74148_device)
#define MCFG_74148_OUTPUT_CB(_class, _method) \
ttl74148_device::set_output_callback(*device, ttl74148_output_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-#endif
+#endif // MAME_DEVICES_MACHINE_74148_H
diff --git a/src/devices/machine/74153.cpp b/src/devices/machine/74153.cpp
index 143a5b07fea..427432fc9cc 100644
--- a/src/devices/machine/74153.cpp
+++ b/src/devices/machine/74153.cpp
@@ -7,15 +7,16 @@
***************************************************************************/
#include "emu.h"
-#include <algorithm>
#include "74153.h"
+#include <algorithm>
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type TTL153 = device_creator<ttl153_device>;
+DEFINE_DEVICE_TYPE(TTL153, ttl153_device, "ttl153", "SN54/74153")
//**************************************************************************
@@ -27,7 +28,7 @@ const device_type TTL153 = device_creator<ttl153_device>;
//-------------------------------------------------
ttl153_device::ttl153_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, TTL153, "SN54/74153", tag, owner, clock, "ttl153", __FILE__),
+ device_t(mconfig, TTL153, tag, owner, clock),
m_za_cb(*this),
m_zb_cb(*this),
m_s{ false, false },
diff --git a/src/devices/machine/74153.h b/src/devices/machine/74153.h
index 63ed5abcf2e..508b4e2b158 100644
--- a/src/devices/machine/74153.h
+++ b/src/devices/machine/74153.h
@@ -18,11 +18,11 @@
***************************************************************************/
-#pragma once
-
#ifndef MAME_DEVICES_MACHINE_74153_H
#define MAME_DEVICES_MACHINE_74153_H
+#pragma once
+
//**************************************************************************
@@ -50,11 +50,11 @@ public:
ttl153_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- template<class _Object> static devcb_base &set_za_callback(device_t &device, _Object object)
- { return downcast<ttl153_device &>(device).m_za_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_za_callback(device_t &device, Object &&cb)
+ { return downcast<ttl153_device &>(device).m_za_cb.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_zb_callback(device_t &device, _Object object)
- { return downcast<ttl153_device &>(device).m_zb_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_zb_callback(device_t &device, Object &&cb)
+ { return downcast<ttl153_device &>(device).m_zb_cb.set_callback(std::forward<Object>(cb)); }
// select
DECLARE_WRITE_LINE_MEMBER(s0_w);
@@ -93,6 +93,6 @@ private:
};
// device type definition
-extern const device_type TTL153;
+DECLARE_DEVICE_TYPE(TTL153, ttl153_device)
#endif // MAME_DEVICES_MACHINE_74153_H
diff --git a/src/devices/machine/74157.cpp b/src/devices/machine/74157.cpp
index b68dc1472e6..7320c97ba91 100644
--- a/src/devices/machine/74157.cpp
+++ b/src/devices/machine/74157.cpp
@@ -20,19 +20,19 @@
// 74LS157 DEVICE
//**************************************************************************
-const device_type LS157 = device_creator<ls157_device>;
+DEFINE_DEVICE_TYPE(LS157, ls157_device, "74ls157", "74LS157 Quad 2-to-1 Multiplexer")
//-------------------------------------------------
// ls157_device - constructor
//-------------------------------------------------
ls157_device::ls157_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ls157_device(mconfig, LS157, "74LS157 Quad 2-to-1 Multiplexer", tag, owner, clock, "74ls157", __FILE__)
+ : ls157_device(mconfig, LS157, tag, owner, clock)
{
}
-ls157_device::ls157_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ls157_device::ls157_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_out_cb(*this)
{
m_a = 0;
@@ -211,9 +211,9 @@ void ls157_device::update_output()
// 74HCT157 DEVICE
//**************************************************************************
-const device_type HCT157 = device_creator<hct157_device>;
+DEFINE_DEVICE_TYPE(HCT157, hct157_device, "74hct157", "74HCT157 Quad 2-to-1 Multiplexer")
hct157_device::hct157_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ls157_device(mconfig, HCT157, "74HCT157 Quad 2-to-1 Multiplexer", tag, owner, clock, "74hct157", __FILE__)
+ : ls157_device(mconfig, HCT157, tag, owner, clock)
{
}
diff --git a/src/devices/machine/74157.h b/src/devices/machine/74157.h
index d88ca452133..fa1150036f5 100644
--- a/src/devices/machine/74157.h
+++ b/src/devices/machine/74157.h
@@ -18,10 +18,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_74157_H
+#define MAME_MACHINE_74157_H
-#ifndef DEVICES_MACHINE_74157_H
-#define DEVICES_MACHINE_74157_H
+#pragma once
@@ -44,10 +44,9 @@ class ls157_device : public device_t
public:
// construction/destruction
ls157_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- ls157_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);
// static configuration
- template<class _Object> static devcb_base &set_out_callback(device_t &device, _Object object) { return downcast<ls157_device &>(device).m_out_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_callback(device_t &device, Object &&cb) { return downcast<ls157_device &>(device).m_out_cb.set_callback(std::forward<Object>(cb)); }
// data writes
DECLARE_WRITE8_MEMBER(a_w);
@@ -66,6 +65,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(strobe_w);
protected:
+ ls157_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
// device-level overrides
virtual void device_start() override;
@@ -96,8 +97,7 @@ public:
//**************************************************************************
// device type definition
-extern const device_type LS157;
-extern const device_type HCT157;
-
+DECLARE_DEVICE_TYPE(LS157, ls157_device)
+DECLARE_DEVICE_TYPE(HCT157, hct157_device)
-#endif
+#endif // MAME_MACHINE_74157_H
diff --git a/src/devices/machine/74161.cpp b/src/devices/machine/74161.cpp
index 2c81cdfcb1a..a866052d83d 100644
--- a/src/devices/machine/74161.cpp
+++ b/src/devices/machine/74161.cpp
@@ -9,13 +9,13 @@
#include "emu.h"
#include "74161.h"
-const device_type TTL74160 = device_creator<ttl74160_device>;
-const device_type TTL74161 = device_creator<ttl74161_device>;
-const device_type TTL74162 = device_creator<ttl74162_device>;
-const device_type TTL74163 = device_creator<ttl74163_device>;
+DEFINE_DEVICE_TYPE(TTL74160, ttl74160_device, "ttl74160", "54/74160 Decade Counter")
+DEFINE_DEVICE_TYPE(TTL74161, ttl74161_device, "ttl74161", "54/74161 Binary Counter")
+DEFINE_DEVICE_TYPE(TTL74162, ttl74162_device, "ttl74162", "54/74162 Decade Counter")
+DEFINE_DEVICE_TYPE(TTL74163, ttl74163_device, "ttl74163", "54/74163 Binary Counter")
-ttl7416x_device::ttl7416x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, bool synchronous_reset, uint8_t limit)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+ttl7416x_device::ttl7416x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool synchronous_reset, uint8_t limit)
+ : device_t(mconfig, type, tag, owner, clock)
, m_qa_func(*this)
, m_qb_func(*this)
, m_qc_func(*this)
@@ -36,22 +36,22 @@ ttl7416x_device::ttl7416x_device(const machine_config &mconfig, device_type type
}
ttl74160_device::ttl74160_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ttl7416x_device(mconfig, TTL74160, "54/74160 Decade Counter", tag, owner, clock, "ttl74160", false, 10)
+ : ttl7416x_device(mconfig, TTL74160, tag, owner, clock, false, 10)
{
}
ttl74161_device::ttl74161_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ttl7416x_device(mconfig, TTL74160, "54/74160 Decade Counter", tag, owner, clock, "ttl74160", false, 16)
+ : ttl7416x_device(mconfig, TTL74161, tag, owner, clock, false, 16)
{
}
ttl74162_device::ttl74162_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ttl7416x_device(mconfig, TTL74160, "54/74160 Decade Counter", tag, owner, clock, "ttl74160", true, 10)
+ : ttl7416x_device(mconfig, TTL74162, tag, owner, clock, true, 10)
{
}
ttl74163_device::ttl74163_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ttl7416x_device(mconfig, TTL74160, "54/74160 Decade Counter", tag, owner, clock, "ttl74160", true, 16)
+ : ttl7416x_device(mconfig, TTL74163, tag, owner, clock, true, 16)
{
}
diff --git a/src/devices/machine/74161.h b/src/devices/machine/74161.h
index da975c09205..f73be684edc 100644
--- a/src/devices/machine/74161.h
+++ b/src/devices/machine/74161.h
@@ -52,10 +52,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_74161_H
+#define MAME_MACHINE_74161_H
-#ifndef TTL74161_H
-#define TTL74161_H
+#pragma once
#define MCFG_7416x_QA_CB(_devcb) \
@@ -91,16 +91,13 @@
class ttl7416x_device : public device_t
{
public:
- // construction/destruction
- ttl7416x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, bool synchronous_reset, uint8_t limit);
-
// static configuration helpers
- template<class _Object> static devcb_base &set_qa_cb(device_t &device, _Object object) { return downcast<ttl7416x_device &>(device).m_qa_func.set_callback(object); }
- template<class _Object> static devcb_base &set_qb_cb(device_t &device, _Object object) { return downcast<ttl7416x_device &>(device).m_qb_func.set_callback(object); }
- template<class _Object> static devcb_base &set_qc_cb(device_t &device, _Object object) { return downcast<ttl7416x_device &>(device).m_qc_func.set_callback(object); }
- template<class _Object> static devcb_base &set_qd_cb(device_t &device, _Object object) { return downcast<ttl7416x_device &>(device).m_qd_func.set_callback(object); }
- template<class _Object> static devcb_base &set_output_cb(device_t &device, _Object object) { return downcast<ttl7416x_device &>(device).m_output_func.set_callback(object); }
- template<class _Object> static devcb_base &set_tc_cb(device_t &device, _Object object) { return downcast<ttl7416x_device &>(device).m_tc_func.set_callback(object); }
+ template <class Object> static devcb_base &set_qa_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qa_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_qb_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qb_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_qc_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qc_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_qd_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_qd_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_output_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_tc_cb(device_t &device, Object &&cb) { return downcast<ttl7416x_device &>(device).m_tc_func.set_callback(std::forward<Object>(cb)); }
// public interfaces
DECLARE_WRITE_LINE_MEMBER( clear_w );
@@ -118,6 +115,9 @@ public:
DECLARE_READ_LINE_MEMBER( tc_r );
protected:
+ // construction/destruction
+ ttl7416x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool synchronous_reset, uint8_t limit);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -176,10 +176,9 @@ public:
};
// device type definition
-extern const device_type TTL74160;
-extern const device_type TTL74161;
-extern const device_type TTL74162;
-extern const device_type TTL74163;
-
+DECLARE_DEVICE_TYPE(TTL74160, ttl74160_device)
+DECLARE_DEVICE_TYPE(TTL74161, ttl74161_device)
+DECLARE_DEVICE_TYPE(TTL74162, ttl74162_device)
+DECLARE_DEVICE_TYPE(TTL74163, ttl74163_device)
-#endif /* TTL74161_H */
+#endif // MAME_MACHINE_74161_H
diff --git a/src/devices/machine/74175.cpp b/src/devices/machine/74175.cpp
index 7c8135f4450..28d3152dbeb 100644
--- a/src/devices/machine/74175.cpp
+++ b/src/devices/machine/74175.cpp
@@ -9,11 +9,11 @@
#include "emu.h"
#include "74175.h"
-const device_type TTL74174 = device_creator<ttl74174_device>;
-const device_type TTL74175 = device_creator<ttl74175_device>;
+DEFINE_DEVICE_TYPE(TTL74174, ttl74174_device, "ttl74174", "54/74174 Hex D Flip-Flops with Clear")
+DEFINE_DEVICE_TYPE(TTL74175, ttl74175_device, "ttl74175", "54/74175 Quad D Flip-Flops with Clear")
-ttl741745_device::ttl741745_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+ttl741745_device::ttl741745_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_q1_func(*this)
, m_q2_func(*this)
, m_q3_func(*this)
@@ -32,7 +32,7 @@ ttl741745_device::ttl741745_device(const machine_config &mconfig, device_type ty
}
ttl74174_device::ttl74174_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ttl741745_device(mconfig, TTL74174, "54/74174 Hex D Flip-Flops with Clear", tag, owner, clock, "ttl74174")
+ : ttl741745_device(mconfig, TTL74174, tag, owner, clock)
, m_q5_func(*this)
, m_q6_func(*this)
, m_d5(0)
@@ -43,7 +43,7 @@ ttl74174_device::ttl74174_device(const machine_config &mconfig, const char *tag,
}
ttl74175_device::ttl74175_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ttl741745_device(mconfig, TTL74175, "54/74175 Quad D Flip-Flops with Clear", tag, owner, clock, "ttl74175")
+ : ttl741745_device(mconfig, TTL74175, tag, owner, clock)
, m_not_q1_func(*this)
, m_not_q2_func(*this)
, m_not_q3_func(*this)
diff --git a/src/devices/machine/74175.h b/src/devices/machine/74175.h
index c22aa05747f..a5f019c3298 100644
--- a/src/devices/machine/74175.h
+++ b/src/devices/machine/74175.h
@@ -42,10 +42,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_74175_H
+#define MAME_MACHINE_74175_H
-#ifndef TTL74175_H
-#define TTL74175_H
+#pragma once
#define MCFG_74174_Q1_CB(_devcb) \
@@ -99,12 +99,10 @@
class ttl741745_device : public device_t
{
public:
- ttl741745_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
-
- template<class _Object> static devcb_base &set_q1_cb(device_t &device, _Object object) { return downcast<ttl741745_device &>(device).m_q1_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q2_cb(device_t &device, _Object object) { return downcast<ttl741745_device &>(device).m_q2_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q3_cb(device_t &device, _Object object) { return downcast<ttl741745_device &>(device).m_q3_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q4_cb(device_t &device, _Object object) { return downcast<ttl741745_device &>(device).m_q4_func.set_callback(object); }
+ template <class Object> static devcb_base &set_q1_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q2_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q3_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q4_cb(device_t &device, Object &&cb) { return downcast<ttl741745_device &>(device).m_q4_func.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( clear_w );
DECLARE_WRITE_LINE_MEMBER( d1_w );
@@ -116,6 +114,8 @@ public:
uint8_t q_w();
protected:
+ ttl741745_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -146,8 +146,8 @@ class ttl74174_device : public ttl741745_device
public:
ttl74174_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_q5_cb(device_t &device, _Object object) { return downcast<ttl74174_device &>(device).m_q5_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q6_cb(device_t &device, _Object object) { return downcast<ttl74174_device &>(device).m_q6_func.set_callback(object); }
+ template <class Object> static devcb_base &set_q5_cb(device_t &device, Object &&cb) { return downcast<ttl74174_device &>(device).m_q5_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q6_cb(device_t &device, Object &&cb) { return downcast<ttl74174_device &>(device).m_q6_func.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( d5_w );
DECLARE_WRITE_LINE_MEMBER( d6_w );
@@ -174,10 +174,10 @@ class ttl74175_device : public ttl741745_device
public:
ttl74175_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_not_q1_cb(device_t &device, _Object object) { return downcast<ttl74175_device &>(device).m_not_q1_func.set_callback(object); }
- template<class _Object> static devcb_base &set_not_q2_cb(device_t &device, _Object object) { return downcast<ttl74175_device &>(device).m_not_q2_func.set_callback(object); }
- template<class _Object> static devcb_base &set_not_q3_cb(device_t &device, _Object object) { return downcast<ttl74175_device &>(device).m_not_q3_func.set_callback(object); }
- template<class _Object> static devcb_base &set_not_q4_cb(device_t &device, _Object object) { return downcast<ttl74175_device &>(device).m_not_q4_func.set_callback(object); }
+ template <class Object> static devcb_base &set_not_q1_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_not_q2_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_not_q3_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_not_q4_cb(device_t &device, Object &&cb) { return downcast<ttl74175_device &>(device).m_not_q4_func.set_callback(std::forward<Object>(cb)); }
protected:
virtual void device_start() override;
@@ -197,8 +197,7 @@ private:
};
// device type definition
-extern const device_type TTL74174;
-extern const device_type TTL74175;
-
+DECLARE_DEVICE_TYPE(TTL74174, ttl74174_device)
+DECLARE_DEVICE_TYPE(TTL74175, ttl74175_device)
-#endif /* TTL74175_H */
+#endif // MAME_MACHINE_74175_H
diff --git a/src/devices/machine/74181.cpp b/src/devices/machine/74181.cpp
index bcd2b8db332..66901510b32 100644
--- a/src/devices/machine/74181.cpp
+++ b/src/devices/machine/74181.cpp
@@ -16,7 +16,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type TTL74181 = device_creator<ttl74181_device>;
+DEFINE_DEVICE_TYPE(TTL74181, ttl74181_device, "ttl74181", "74181 TTL")
//**************************************************************************
@@ -28,7 +28,7 @@ const device_type TTL74181 = device_creator<ttl74181_device>;
//-------------------------------------------------
ttl74181_device::ttl74181_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, TTL74181, "74181 TTL", tag, owner, clock, "ttl74181", __FILE__),
+ device_t(mconfig, TTL74181, tag, owner, clock),
m_a(0),
m_b(0),
m_s(0),
diff --git a/src/devices/machine/74181.h b/src/devices/machine/74181.h
index b6aed4bb0c2..67ba714eacf 100644
--- a/src/devices/machine/74181.h
+++ b/src/devices/machine/74181.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_74181_H
+#define MAME_MACHINE_74181_H
-#ifndef __74181_H__
-#define __74181_H__
+#pragma once
@@ -73,7 +73,6 @@ private:
// device type definition
-extern const device_type TTL74181;
-
+DECLARE_DEVICE_TYPE(TTL74181, ttl74181_device)
-#endif /* __74181_H__ */
+#endif // MAME_MACHINE_74181_H
diff --git a/src/devices/machine/7474.cpp b/src/devices/machine/7474.cpp
index 69178d9f57c..ea2f315c72f 100644
--- a/src/devices/machine/7474.cpp
+++ b/src/devices/machine/7474.cpp
@@ -49,14 +49,14 @@
//**************************************************************************
// device type definition
-const device_type TTL7474 = device_creator<ttl7474_device>;
+DEFINE_DEVICE_TYPE(TTL7474, ttl7474_device, "7474", "7474 TTL")
//-------------------------------------------------
// ttl7474_device - constructor
//-------------------------------------------------
ttl7474_device::ttl7474_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TTL7474, "7474 TTL", tag, owner, clock, "7474", __FILE__),
+ : device_t(mconfig, TTL7474, tag, owner, clock),
m_output_func(*this),
m_comp_output_func(*this)
{
diff --git a/src/devices/machine/7474.h b/src/devices/machine/7474.h
index a58fc46c854..3b0b604958d 100644
--- a/src/devices/machine/7474.h
+++ b/src/devices/machine/7474.h
@@ -39,10 +39,10 @@
*****************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_TTL7474_H
+#define MAME_MACHINE_TTL7474_H
-#ifndef __TTL7474_H__
-#define __TTL7474_H__
+#pragma once
@@ -71,8 +71,8 @@ public:
ttl7474_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_output_cb(device_t &device, _Object object) { return downcast<ttl7474_device &>(device).m_output_func.set_callback(object); }
- template<class _Object> static devcb_base &set_comp_output_cb(device_t &device, _Object object) { return downcast<ttl7474_device &>(device).m_comp_output_func.set_callback(object); }
+ template <class Object> static devcb_base &set_output_cb(device_t &device, Object &&cb) { return downcast<ttl7474_device &>(device).m_output_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_comp_output_cb(device_t &device, Object &&cb) { return downcast<ttl7474_device &>(device).m_comp_output_func.set_callback(std::forward<Object>(cb)); }
// public interfaces
DECLARE_WRITE_LINE_MEMBER( clear_w );
@@ -88,6 +88,7 @@ protected:
virtual void device_reset() override;
virtual void device_post_load() override { }
virtual void device_clock_changed() override { }
+
private:
// callbacks
devcb_write_line m_output_func;
@@ -114,7 +115,6 @@ private:
// device type definition
-extern const device_type TTL7474;
-
+DECLARE_DEVICE_TYPE(TTL7474, ttl7474_device)
-#endif /* __TTL7474_H__ */
+#endif // MAME_MACHINE_TTL7474_H
diff --git a/src/devices/machine/8042kbdc.cpp b/src/devices/machine/8042kbdc.cpp
index 8c7d4b70dcd..98b1161b902 100644
--- a/src/devices/machine/8042kbdc.cpp
+++ b/src/devices/machine/8042kbdc.cpp
@@ -191,14 +191,14 @@
#define LOG_KEYBOARD 0
#define LOG_ACCESSES 0
-const device_type KBDC8042 = device_creator<kbdc8042_device>;
+DEFINE_DEVICE_TYPE(KBDC8042, kbdc8042_device, "kbdc8042", "8042 Keyboard Controller")
//-------------------------------------------------
// kbdc8042_device - constructor
//-------------------------------------------------
kbdc8042_device::kbdc8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, KBDC8042, "8042 Keyboard Controller", tag, owner, clock, "kbdc8042", __FILE__)
+ : device_t(mconfig, KBDC8042, tag, owner, clock)
, m_keyboard_dev(*this, "at_keyboard")
, m_system_reset_cb(*this)
, m_gate_a20_cb(*this)
diff --git a/src/devices/machine/8042kbdc.h b/src/devices/machine/8042kbdc.h
index 491672dd3e7..52bad435551 100644
--- a/src/devices/machine/8042kbdc.h
+++ b/src/devices/machine/8042kbdc.h
@@ -9,24 +9,19 @@
**********************************************************************/
-#ifndef KBDC8042_H
-#define KBDC8042_H
+#ifndef MAME_MACHINE_8042KBDC_H
+#define MAME_MACHINE_8042KBDC_H
-#include "machine/pckeybrd.h"
+#pragma once
-enum kbdc8042_type_t
-{
- KBDC8042_STANDARD,
- KBDC8042_PS2, /* another timing of integrated controller */
- KBDC8042_AT386 /* hack for at386 driver */
-};
+#include "machine/pckeybrd.h"
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_KBDC8042_KEYBOARD_TYPE(_kbdt) \
- kbdc8042_device::set_keyboard_type(*device, _kbdt);
+ kbdc8042_device::set_keyboard_type(*device, kbdc8042_device::_kbdt);
#define MCFG_KBDC8042_SYSTEM_RESET_CB(_devcb) \
devcb = &kbdc8042_device::set_system_reset_callback(*device, DEVCB_##_devcb);
@@ -52,17 +47,24 @@ enum kbdc8042_type_t
class kbdc8042_device : public device_t
{
public:
+ enum kbdc8042_type_t
+ {
+ KBDC8042_STANDARD,
+ KBDC8042_PS2, /* another timing of integrated controller */
+ KBDC8042_AT386 /* hack for at386 driver */
+ };
+
// construction/destruction
kbdc8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual machine_config_constructor device_mconfig_additions() const override;
static void set_keyboard_type(device_t &device, kbdc8042_type_t keybtype) { downcast<kbdc8042_device &>(device).m_keybtype = keybtype; }
- template<class _Object> static devcb_base &set_system_reset_callback(device_t &device, _Object object) { return downcast<kbdc8042_device &>(device).m_system_reset_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_gate_a20_callback(device_t &device, _Object object) { return downcast<kbdc8042_device &>(device).m_gate_a20_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_input_buffer_full_callback(device_t &device, _Object object) { return downcast<kbdc8042_device &>(device).m_input_buffer_full_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_buffer_empty_callback(device_t &device, _Object object) { return downcast<kbdc8042_device &>(device).m_output_buffer_empty_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_speaker_callback(device_t &device, _Object object) { return downcast<kbdc8042_device &>(device).m_speaker_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_system_reset_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_system_reset_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gate_a20_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_gate_a20_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_input_buffer_full_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_buffer_empty_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_speaker_callback(device_t &device, Object &&cb) { return downcast<kbdc8042_device &>(device).m_speaker_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( data_w );
@@ -120,6 +122,6 @@ protected:
// device type definition
extern const device_type KBDC8042;
+DECLARE_DEVICE_TYPE(KBDC8042, kbdc8042_device)
-
-#endif /* KBDC8042_H */
+#endif // MAME_MACHINE_8042KBDC_H
diff --git a/src/devices/machine/82s129.cpp b/src/devices/machine/82s129.cpp
index b705bd6e29e..afa31ad1fda 100644
--- a/src/devices/machine/82s129.cpp
+++ b/src/devices/machine/82s129.cpp
@@ -11,11 +11,11 @@
const uint32_t prom82s129_base_device::PROM_SIZE = 256;
-const device_type PROM82S126 = device_creator<prom82s126_device>;
-const device_type PROM82S129 = device_creator<prom82s129_device>;
+DEFINE_DEVICE_TYPE(PROM82S126, prom82s126_device, "82s126", "82S126 1K-bit bipolar PROM")
+DEFINE_DEVICE_TYPE(PROM82S129, prom82s129_device, "82s129", "82S129 1K-bit bipolar PROM")
-prom82s129_base_device::prom82s129_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+prom82s129_base_device::prom82s129_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_region(*this, DEVICE_SELF)
, m_out_func(*this)
, m_o1_func(*this)
@@ -30,12 +30,12 @@ prom82s129_base_device::prom82s129_base_device(const machine_config &mconfig, de
}
prom82s126_device::prom82s126_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : prom82s129_base_device(mconfig, PROM82S126, "82S126 1K-bit TTL bipolar PROM", tag, owner, clock, "82s126")
+ : prom82s129_base_device(mconfig, PROM82S126, tag, owner, clock)
{
}
prom82s129_device::prom82s129_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : prom82s129_base_device(mconfig, PROM82S126, "82S129 1K-bit TTL bipolar PROM", tag, owner, clock, "82s129")
+ : prom82s129_base_device(mconfig, PROM82S129, tag, owner, clock)
{
}
diff --git a/src/devices/machine/82s129.h b/src/devices/machine/82s129.h
index 604645b9c2d..568a3a5b0d4 100644
--- a/src/devices/machine/82s129.h
+++ b/src/devices/machine/82s129.h
@@ -40,10 +40,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_82S129_H
+#define MAME_MACHINE_82S129_H
-#ifndef PROM82S129_H
-#define PROM82S129_H
+#pragma once
#define MCFG_82S126_OUTPUT_CB(_devcb) \
@@ -85,15 +85,12 @@
class prom82s129_base_device : public device_t
{
public:
- // construction/destruction
- prom82s129_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
-
// static configuration helpers
- template<class _Object> static devcb_base &set_out_cb(device_t &device, _Object object) { return downcast<prom82s129_base_device &>(device).m_out_func.set_callback(object); }
- template<class _Object> static devcb_base &set_o1_cb(device_t &device, _Object object) { return downcast<prom82s129_base_device &>(device).m_o1_func.set_callback(object); }
- template<class _Object> static devcb_base &set_o2_cb(device_t &device, _Object object) { return downcast<prom82s129_base_device &>(device).m_o2_func.set_callback(object); }
- template<class _Object> static devcb_base &set_o3_cb(device_t &device, _Object object) { return downcast<prom82s129_base_device &>(device).m_o3_func.set_callback(object); }
- template<class _Object> static devcb_base &set_o4_cb(device_t &device, _Object object) { return downcast<prom82s129_base_device &>(device).m_o4_func.set_callback(object); }
+ template <class Object> static devcb_base &set_out_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_out_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_o1_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_o2_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_o3_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_o4_cb(device_t &device, Object &&cb) { return downcast<prom82s129_base_device &>(device).m_o4_func.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( ce1_w );
DECLARE_WRITE_LINE_MEMBER( ce2_w );
@@ -117,6 +114,9 @@ public:
uint8_t get_output() const { return m_out; }
protected:
+ // construction/destruction
+ prom82s129_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -164,5 +164,7 @@ public:
// device type definition
extern const device_type PROM82S126;
extern const device_type PROM82S129;
+DECLARE_DEVICE_TYPE(PROM82S126, prom82s126_device)
+DECLARE_DEVICE_TYPE(PROM82S129, prom82s129_device)
-#endif /* PROM82S129_H */
+#endif // MAME_MACHINE_82S129_H
diff --git a/src/devices/machine/8364_paula.cpp b/src/devices/machine/8364_paula.cpp
index da535b75627..594b95e96f0 100644
--- a/src/devices/machine/8364_paula.cpp
+++ b/src/devices/machine/8364_paula.cpp
@@ -9,20 +9,15 @@
#include "emu.h"
#include "8364_paula.h"
-
-//**************************************************************************
-// CONSTANTS / MACROS
-//**************************************************************************
-
-#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PAULA_8364 = device_creator<paula_8364_device>;
+DEFINE_DEVICE_TYPE(PAULA_8364, paula_8364_device, "paula_8364", "8364 Paula")
//*************************************************************************
@@ -34,7 +29,7 @@ const device_type PAULA_8364 = device_creator<paula_8364_device>;
//-------------------------------------------------
paula_8364_device::paula_8364_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PAULA_8364, "8364 Paula", tag, owner, clock, "paula_8364", __FILE__),
+ : device_t(mconfig, PAULA_8364, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_mem_r(*this), m_int_w(*this),
m_dmacon(0), m_adkcon(0),
@@ -160,7 +155,7 @@ void paula_8364_device::dma_reload(audio_channel *chan)
chan->curlength = chan->len;
chan->irq_timer->adjust(attotime::from_hz(15750), chan->index); // clock() / 227
- LOG(("dma_reload(%d): offs=%05X len=%04X\n", chan->index, chan->curlocation, chan->curlength));
+ LOG("dma_reload(%d): offs=%05X len=%04X\n", chan->index, chan->curlocation, chan->curlength);
}
//-------------------------------------------------
diff --git a/src/devices/machine/8364_paula.h b/src/devices/machine/8364_paula.h
index 4dbd041c93f..8e20b6f813a 100644
--- a/src/devices/machine/8364_paula.h
+++ b/src/devices/machine/8364_paula.h
@@ -37,10 +37,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_8364_PAULA_H
+#define MAME_MACHINE_8364_PAULA_H
-#ifndef MAME_DEVICES_MACHINE_8364_PAULA_H
-#define MAME_DEVICES_MACHINE_8364_PAULA_H
+#pragma once
@@ -65,14 +65,13 @@ class paula_8364_device : public device_t, public device_sound_interface
{
public:
paula_8364_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~paula_8364_device() {}
// configuration
- template<class _Object> static devcb_base &set_mem_r_callback(device_t &device, _Object object)
- { return downcast<paula_8364_device &>(device).m_mem_r.set_callback(object); }
+ template <class Object> static devcb_base &set_mem_r_callback(device_t &device, Object &&cb)
+ { return downcast<paula_8364_device &>(device).m_mem_r.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_int_w_callback(device_t &device, _Object object)
- { return downcast<paula_8364_device &>(device).m_int_w.set_callback(object); }
+ template <class Object> static devcb_base &set_int_w_callback(device_t &device, Object &&cb)
+ { return downcast<paula_8364_device &>(device).m_int_w.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER(reg_r);
DECLARE_WRITE16_MEMBER(reg_w);
@@ -128,7 +127,7 @@ private:
REG_AUD3DAT = 0xda/2
};
- static const int CLOCK_DIVIDER = 16;
+ static constexpr int CLOCK_DIVIDER = 16;
struct audio_channel
{
@@ -166,6 +165,6 @@ private:
};
// device type definition
-extern const device_type PAULA_8364;
+DECLARE_DEVICE_TYPE(PAULA_8364, paula_8364_device)
#endif // MAME_DEVICES_MACHINE_8364_PAULA_H
diff --git a/src/devices/machine/8530scc.cpp b/src/devices/machine/8530scc.cpp
index 7e042049e7c..465fd609fc7 100644
--- a/src/devices/machine/8530scc.cpp
+++ b/src/devices/machine/8530scc.cpp
@@ -12,7 +12,7 @@
#include "emu.h"
#include "8530scc.h"
-const device_type SCC8530 = device_creator<scc8530_t>;
+DEFINE_DEVICE_TYPE(SCC8530, scc8530_t, "scc8530l", "Zilog 8530 SCC (legacy)")
/***************************************************************************
@@ -26,7 +26,8 @@ const device_type SCC8530 = device_creator<scc8530_t>;
***************************************************************************/
scc8530_t::scc8530_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SCC8530, "Zilog 8530 SCC (Legacy)", tag, owner, clock, "scc8530l", __FILE__), mode(0), reg(0), status(0), IRQV(0), MasterIRQEnable(0), lastIRQStat(0), IRQType(),
+ device_t(mconfig, SCC8530, tag, owner, clock),
+ mode(0), reg(0), status(0), IRQV(0), MasterIRQEnable(0), lastIRQStat(0), IRQType(),
intrq_cb(*this)
{
}
diff --git a/src/devices/machine/8530scc.h b/src/devices/machine/8530scc.h
index a13f102d1ac..7a8a5cf107e 100644
--- a/src/devices/machine/8530scc.h
+++ b/src/devices/machine/8530scc.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef __8530SCC_H__
-#define __8530SCC_H__
+#ifndef MAME_MACHINE_8530SCC_H
+#define MAME_MACHINE_8530SCC_H
#define MCFG_Z8530_INTRQ_CALLBACK(_write) \
devcb = &scc8530_t::set_intrq_wr_callback(*device, DEVCB_##_write);
@@ -31,7 +31,7 @@ public:
scc8530_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<scc8530_t &>(device).intrq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<scc8530_t &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); }
uint8_t get_reg_a(int reg);
uint8_t get_reg_b(int reg);
@@ -101,6 +101,6 @@ private:
MACROS
***************************************************************************/
-extern const device_type SCC8530;
+DECLARE_DEVICE_TYPE(SCC8530, scc8530_t)
-#endif /* __8530SCC_H__ */
+#endif // MAME_MACHINE_8530SCC_H
diff --git a/src/devices/machine/aakart.cpp b/src/devices/machine/aakart.cpp
index 6608ba32a3c..09924675a9d 100644
--- a/src/devices/machine/aakart.cpp
+++ b/src/devices/machine/aakart.cpp
@@ -19,7 +19,7 @@ TODO:
//**************************************************************************
// device type definition
-const device_type AAKART = device_creator<aakart_device>;
+DEFINE_DEVICE_TYPE(AAKART, aakart_device, "aakart", "Acorn Archimedes KART")
#define HRST 0xff
#define RAK1 0xfe
@@ -40,9 +40,11 @@ const device_type AAKART = device_creator<aakart_device>;
//-------------------------------------------------
aakart_device::aakart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AAKART, "AAKART", tag, owner, clock, "aakart", __FILE__), m_rxtimer(nullptr), m_txtimer(nullptr), m_mousetimer(nullptr), m_keybtimer(nullptr),
+ : device_t(mconfig, AAKART, tag, owner, clock), m_rxtimer(nullptr),
+ m_txtimer(nullptr), m_mousetimer(nullptr), m_keybtimer(nullptr),
m_out_tx_cb(*this),
- m_out_rx_cb(*this), m_tx_latch(0), m_rx(0), m_new_command(0), m_status(0), m_mouse_enable(0), m_keyb_enable(0)
+ m_out_rx_cb(*this),
+ m_tx_latch(0), m_rx(0), m_new_command(0), m_status(0), m_mouse_enable(0), m_keyb_enable(0)
{
}
diff --git a/src/devices/machine/aakart.h b/src/devices/machine/aakart.h
index 43972200b21..7d5ba02eecf 100644
--- a/src/devices/machine/aakart.h
+++ b/src/devices/machine/aakart.h
@@ -6,10 +6,10 @@ Acorn Archimedes KART interface
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_AAKART_H
+#define MAME_MACHINE_AAKART_H
-#ifndef __AAKARTDEV_H__
-#define __AAKARTDEV_H__
+#pragma once
@@ -24,15 +24,6 @@ Acorn Archimedes KART interface
devcb = &aakart_device::set_out_rx_callback(*device, DEVCB_##_devcb);
-enum{
- STATUS_NORMAL = 0,
- STATUS_KEYUP,
- STATUS_KEYDOWN,
- STATUS_MOUSE,
- STATUS_HRST,
- STATUS_UNDEFINED
-};
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -45,8 +36,8 @@ public:
// construction/destruction
aakart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_tx_callback(device_t &device, _Object object) { return downcast<aakart_device &>(device).m_out_tx_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rx_callback(device_t &device, _Object object) { return downcast<aakart_device &>(device).m_out_rx_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_tx_callback(device_t &device, Object &&cb) { return downcast<aakart_device &>(device).m_out_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rx_callback(device_t &device, Object &&cb) { return downcast<aakart_device &>(device).m_out_rx_cb.set_callback(std::forward<Object>(cb)); }
// I/O operations
DECLARE_WRITE8_MEMBER( write );
@@ -63,6 +54,15 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ enum {
+ STATUS_NORMAL = 0,
+ STATUS_KEYUP,
+ STATUS_KEYDOWN,
+ STATUS_MOUSE,
+ STATUS_HRST,
+ STATUS_UNDEFINED
+ };
+
static const device_timer_id RX_TIMER = 1;
static const device_timer_id TX_TIMER = 2;
static const device_timer_id MOUSE_TIMER = 3;
@@ -87,14 +87,6 @@ private:
// device type definition
-extern const device_type AAKART;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(AAKART, aakart_device)
-#endif
+#endif // MAME_MACHINE_AAKART_H
diff --git a/src/devices/machine/adc0808.cpp b/src/devices/machine/adc0808.cpp
index acc5704662d..d279850f32e 100644
--- a/src/devices/machine/adc0808.cpp
+++ b/src/devices/machine/adc0808.cpp
@@ -21,21 +21,22 @@
//**************************************************************************
// device type definition
-const device_type ADC0808 = device_creator<adc0808_device>;
+DEFINE_DEVICE_TYPE(ADC0808, adc0808_device, "adc0808", "ADC0808")
//-------------------------------------------------
// adc0808_device - constructor
//-------------------------------------------------
adc0808_device::adc0808_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ADC0808, "ADC0808", tag, owner, clock, "adc0808", __FILE__),
+ : device_t(mconfig, ADC0808, tag, owner, clock),
m_out_eoc_cb(*this),
m_address(0),
m_start(0),
m_eoc(0),
m_next_eoc(0), m_sar(0),
m_cycle(0),
- m_bit(0), m_cycle_timer(nullptr)
+ m_bit(0),
+ m_cycle_timer(nullptr)
{
}
diff --git a/src/devices/machine/adc0808.h b/src/devices/machine/adc0808.h
index 78aea540e05..1a63e78c184 100644
--- a/src/devices/machine/adc0808.h
+++ b/src/devices/machine/adc0808.h
@@ -23,10 +23,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_ADC0808_H
+#define MAME_MACHINE_ADC0808_H
-#ifndef __ADC0808__
-#define __ADC0808__
+#pragma once
@@ -36,7 +36,6 @@
// ======================> adc0808_analog_read
-typedef device_delegate<double ()> adc0808_analog_read_delegate;
#define ADC0808_ANALOG_READ_CB(name) double name()
@@ -44,54 +43,56 @@ typedef device_delegate<double ()> adc0808_analog_read_delegate;
devcb = &adc0808_device::set_out_eoc_callback(*device, DEVCB_##_devcb);
#define MCFG_ADC0808_IN_VREF_POS_CB(_class, _method) \
- adc0808_device::set_in_vref_pos_callback(*device, adc0808_analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc0808_device::set_in_vref_pos_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ADC0808_IN_VREF_NEG_CB(_class, _method) \
- adc0808_device::set_in_vref_neg_callback(*device, adc0808_analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc0808_device::set_in_vref_neg_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ADC0808_IN_IN_0_CB(_class, _method) \
- adc0808_device::set_in_in_0_callback(*device, adc0808_analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc0808_device::set_in_in_0_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ADC0808_IN_IN_1_CB(_class, _method) \
- adc0808_device::set_in_in_1_callback(*device, adc0808_analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc0808_device::set_in_in_1_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ADC0808_IN_IN_2_CB(_class, _method) \
- adc0808_device::set_in_in_2_callback(*device, adc0808_analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc0808_device::set_in_in_2_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ADC0808_IN_IN_3_CB(_class, _method) \
- adc0808_device::set_in_in_3_callback(*device, adc0808_analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc0808_device::set_in_in_3_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ADC0808_IN_IN_4_CB(_class, _method) \
- adc0808_device::set_in_in_4_callback(*device, adc0808_analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc0808_device::set_in_in_4_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ADC0808_IN_IN_5_CB(_class, _method) \
- adc0808_device::set_in_in_5_callback(*device, adc0808_analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc0808_device::set_in_in_5_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ADC0808_IN_IN_6_CB(_class, _method) \
- adc0808_device::set_in_in_6_callback(*device, adc0808_analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc0808_device::set_in_in_6_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ADC0808_IN_IN_7_CB(_class, _method) \
- adc0808_device::set_in_in_7_callback(*device, adc0808_analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc0808_device::set_in_in_7_callback(*device, adc0808_device::analog_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
// ======================> adc0808_device
class adc0808_device : public device_t
{
public:
+ typedef device_delegate<double ()> analog_read_delegate;
+
// construction/destruction
adc0808_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_eoc_callback(device_t &device, _Object object) { return downcast<adc0808_device &>(device).m_out_eoc_cb.set_callback(object); }
- static void set_in_vref_pos_callback(device_t &device, adc0808_analog_read_delegate callback) { downcast<adc0808_device &>(device).m_in_vref_pos_cb = callback; }
- static void set_in_vref_neg_callback(device_t &device, adc0808_analog_read_delegate callback) { downcast<adc0808_device &>(device).m_in_vref_neg_cb = callback; }
- static void set_in_in_0_callback(device_t &device, adc0808_analog_read_delegate callback) { downcast<adc0808_device &>(device).m_in_in_0_cb = callback; }
- static void set_in_in_1_callback(device_t &device, adc0808_analog_read_delegate callback) { downcast<adc0808_device &>(device).m_in_in_1_cb = callback; }
- static void set_in_in_2_callback(device_t &device, adc0808_analog_read_delegate callback) { downcast<adc0808_device &>(device).m_in_in_2_cb = callback; }
- static void set_in_in_3_callback(device_t &device, adc0808_analog_read_delegate callback) { downcast<adc0808_device &>(device).m_in_in_3_cb = callback; }
- static void set_in_in_4_callback(device_t &device, adc0808_analog_read_delegate callback) { downcast<adc0808_device &>(device).m_in_in_4_cb = callback; }
- static void set_in_in_5_callback(device_t &device, adc0808_analog_read_delegate callback) { downcast<adc0808_device &>(device).m_in_in_5_cb = callback; }
- static void set_in_in_6_callback(device_t &device, adc0808_analog_read_delegate callback) { downcast<adc0808_device &>(device).m_in_in_6_cb = callback; }
- static void set_in_in_7_callback(device_t &device, adc0808_analog_read_delegate callback) { downcast<adc0808_device &>(device).m_in_in_7_cb = callback; }
+ template <class Object> static devcb_base &set_out_eoc_callback(device_t &device, Object &&cb) { return downcast<adc0808_device &>(device).m_out_eoc_cb.set_callback(std::forward<Object>(cb)); }
+ static void set_in_vref_pos_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_vref_pos_cb = std::move(cb); }
+ static void set_in_vref_neg_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_vref_neg_cb = std::move(cb); }
+ static void set_in_in_0_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_0_cb = std::move(cb); }
+ static void set_in_in_1_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_1_cb = std::move(cb); }
+ static void set_in_in_2_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_2_cb = std::move(cb); }
+ static void set_in_in_3_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_3_cb = std::move(cb); }
+ static void set_in_in_4_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_4_cb = std::move(cb); }
+ static void set_in_in_5_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_5_cb = std::move(cb); }
+ static void set_in_in_6_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_6_cb = std::move(cb); }
+ static void set_in_in_7_callback(device_t &device, analog_read_delegate &&cb) { downcast<adc0808_device &>(device).m_in_in_7_cb = std::move(cb); }
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( ale_w );
@@ -104,17 +105,17 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
- devcb_write_line m_out_eoc_cb;
- adc0808_analog_read_delegate m_in_vref_pos_cb;
- adc0808_analog_read_delegate m_in_vref_neg_cb;
- adc0808_analog_read_delegate m_in_in_0_cb;
- adc0808_analog_read_delegate m_in_in_1_cb;
- adc0808_analog_read_delegate m_in_in_2_cb;
- adc0808_analog_read_delegate m_in_in_3_cb;
- adc0808_analog_read_delegate m_in_in_4_cb;
- adc0808_analog_read_delegate m_in_in_5_cb;
- adc0808_analog_read_delegate m_in_in_6_cb;
- adc0808_analog_read_delegate m_in_in_7_cb;
+ devcb_write_line m_out_eoc_cb;
+ analog_read_delegate m_in_vref_pos_cb;
+ analog_read_delegate m_in_vref_neg_cb;
+ analog_read_delegate m_in_in_0_cb;
+ analog_read_delegate m_in_in_1_cb;
+ analog_read_delegate m_in_in_2_cb;
+ analog_read_delegate m_in_in_3_cb;
+ analog_read_delegate m_in_in_4_cb;
+ analog_read_delegate m_in_in_5_cb;
+ analog_read_delegate m_in_in_6_cb;
+ analog_read_delegate m_in_in_7_cb;
int m_address; // analog channel address
int m_start; // start conversion pin
@@ -132,8 +133,6 @@ private:
// device type definition
-extern const device_type ADC0808;
-
-
+DECLARE_DEVICE_TYPE(ADC0808, adc0808_device)
-#endif
+#endif // MAME_MACHINE_ADC0808_H
diff --git a/src/devices/machine/adc083x.cpp b/src/devices/machine/adc083x.cpp
index d1666967f78..317e2dbb18a 100644
--- a/src/devices/machine/adc083x.cpp
+++ b/src/devices/machine/adc083x.cpp
@@ -46,13 +46,14 @@ enum
TYPE DEFINITIONS
***************************************************************************/
-const device_type ADC0831 = device_creator<adc0831_device>;
-const device_type ADC0832 = device_creator<adc0832_device>;
-const device_type ADC0834 = device_creator<adc0834_device>;
-const device_type ADC0838 = device_creator<adc0838_device>;
-
-adc083x_device::adc083x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+DEFINE_DEVICE_TYPE(ADC0831, adc0831_device, "adc0831", "ADC0831")
+DEFINE_DEVICE_TYPE(ADC0832, adc0832_device, "adc0832", "ADC0832")
+DEFINE_DEVICE_TYPE(ADC0834, adc0834_device, "adc0834", "ADC0834")
+DEFINE_DEVICE_TYPE(ADC0838, adc0838_device, "adc0838", "ADC0838")
+
+adc083x_device::adc083x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t mux_bits)
+ : device_t(mconfig, type, tag, owner, clock),
+ m_mux_bits(mux_bits),
m_cs(0),
m_clk(0),
m_di(0),
@@ -69,27 +70,23 @@ adc083x_device::adc083x_device(const machine_config &mconfig, device_type type,
}
adc0831_device::adc0831_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adc083x_device(mconfig, ADC0831, "ADC0831", tag, owner, clock, "adc0831", __FILE__)
+ : adc083x_device(mconfig, ADC0831, tag, owner, clock, 0)
{
- m_mux_bits = 0;
}
adc0832_device::adc0832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adc083x_device(mconfig, ADC0832, "ADC0832", tag, owner, clock, "adc0832", __FILE__)
+ : adc083x_device(mconfig, ADC0832, tag, owner, clock, 2)
{
- m_mux_bits = 2;
}
adc0834_device::adc0834_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adc083x_device(mconfig, ADC0834, "ADC0834", tag, owner, clock, "adc0834", __FILE__)
+ : adc083x_device(mconfig, ADC0834, tag, owner, clock, 3)
{
- m_mux_bits = 3;
}
adc0838_device::adc0838_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adc083x_device(mconfig, ADC0838, "ADC0838", tag, owner, clock, "adc0838", __FILE__)
+ : adc083x_device(mconfig, ADC0838, tag, owner, clock, 4)
{
- m_mux_bits = 4;
}
/*-------------------------------------------------
@@ -117,7 +114,6 @@ void adc083x_device::device_start()
save_item( NAME(m_state) );
save_item( NAME(m_bit) );
save_item( NAME(m_output) );
- save_item( NAME(m_mux_bits) );
}
/*-------------------------------------------------
diff --git a/src/devices/machine/adc083x.h b/src/devices/machine/adc083x.h
index dd26370bf3f..5af0e02cbb5 100644
--- a/src/devices/machine/adc083x.h
+++ b/src/devices/machine/adc083x.h
@@ -8,19 +8,20 @@
***************************************************************************/
-#ifndef __ADC083X_H__
-#define __ADC083X_H__
+#ifndef MAME_MACHINE_ADC083X_H
+#define MAME_MACHINE_ADC083X_H
+
+#pragma once
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-typedef device_delegate<double (uint8_t input)> adc083x_input_delegate;
#define ADC083X_INPUT_CB(name) double name(uint8_t input)
#define MCFG_ADC083X_INPUT_CB(_class, _method) \
- adc083x_device::set_input_callback(*device, adc083x_input_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc083x_device::set_input_callback(*device, adc083x_device::input_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
/***************************************************************************
CONSTANTS
@@ -45,10 +46,10 @@ typedef device_delegate<double (uint8_t input)> adc083x_input_delegate;
class adc083x_device : public device_t
{
public:
- adc083x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ typedef device_delegate<double (uint8_t input)> input_delegate;
// static configuration helpers
- static void set_input_callback(device_t &device, adc083x_input_delegate input_callback) { downcast<adc083x_device &>(device).m_input_callback = input_callback; }
+ static void set_input_callback(device_t &device, input_delegate &&cb) { downcast<adc083x_device &>(device).m_input_callback = std::move(cb); }
DECLARE_WRITE_LINE_MEMBER( cs_write );
DECLARE_WRITE_LINE_MEMBER( clk_write );
@@ -58,10 +59,12 @@ public:
DECLARE_READ_LINE_MEMBER( do_read );
protected:
+ adc083x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t mux_bits);
+
// device-level overrides
virtual void device_start() override;
- int32_t m_mux_bits;
+ const int32_t m_mux_bits;
private:
uint8_t conversion();
@@ -83,17 +86,16 @@ private:
int32_t m_bit;
int32_t m_output;
- adc083x_input_delegate m_input_callback;
+ input_delegate m_input_callback;
};
+
class adc0831_device : public adc083x_device
{
public:
adc0831_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type ADC0831;
-
class adc0832_device : public adc083x_device
{
@@ -101,8 +103,6 @@ public:
adc0832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type ADC0832;
-
class adc0834_device : public adc083x_device
{
@@ -110,8 +110,6 @@ public:
adc0834_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type ADC0834;
-
class adc0838_device : public adc083x_device
{
@@ -119,7 +117,10 @@ public:
adc0838_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type ADC0838;
+DECLARE_DEVICE_TYPE(ADC0831, adc0831_device)
+DECLARE_DEVICE_TYPE(ADC0832, adc0832_device)
+DECLARE_DEVICE_TYPE(ADC0834, adc0834_device)
+DECLARE_DEVICE_TYPE(ADC0838, adc0838_device)
-#endif /* __ADC083X_H__ */
+#endif // MAME_MACHINE_ADC083X_H
diff --git a/src/devices/machine/adc1038.cpp b/src/devices/machine/adc1038.cpp
index 66f65878b65..409090bba4d 100644
--- a/src/devices/machine/adc1038.cpp
+++ b/src/devices/machine/adc1038.cpp
@@ -13,10 +13,11 @@
#include "adc1038.h"
-const device_type ADC1038 = device_creator<adc1038_device>;
+DEFINE_DEVICE_TYPE(ADC1038, adc1038_device, "adc1038", "ADC1038")
adc1038_device::adc1038_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ADC1038, "ADC1038", tag, owner, clock, "adc1038", __FILE__), m_cycle(0), m_clk(0), m_adr(0), m_data_in(0), m_data_out(0), m_adc_data(0), m_sars(0),
+ : device_t(mconfig, ADC1038, tag, owner, clock),
+ m_cycle(0), m_clk(0), m_adr(0), m_data_in(0), m_data_out(0), m_adc_data(0), m_sars(0),
m_gticlub_hack(0)
{
}
diff --git a/src/devices/machine/adc1038.h b/src/devices/machine/adc1038.h
index f3b74bd0290..32787e36181 100644
--- a/src/devices/machine/adc1038.h
+++ b/src/devices/machine/adc1038.h
@@ -9,14 +9,16 @@
***************************************************************************/
-#ifndef __ADC1038_H__
-#define __ADC1038_H__
+#ifndef MAME_MACHINE_ADC1038_H
+#define MAME_MACHINE_ADC1038_H
+
+#pragma once
+
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-typedef device_delegate<int (int input)> adc1038_input_delegate;
#define ADC1038_INPUT_CB(name) int name(int input)
/***************************************************************************
@@ -26,10 +28,11 @@ typedef device_delegate<int (int input)> adc1038_input_delegate;
class adc1038_device : public device_t
{
public:
+ typedef device_delegate<int (int input)> input_delegate;
+
adc1038_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~adc1038_device() {}
- static void set_input_callback(device_t &device, adc1038_input_delegate callback) { downcast<adc1038_device &>(device).m_input_cb = callback; }
+ static void set_input_callback(device_t &device, input_delegate &&callback) { downcast<adc1038_device &>(device).m_input_cb = std::move(callback); }
static void set_gti_club_hack(device_t &device, int hack) { downcast<adc1038_device &>(device).m_gticlub_hack = hack; }
DECLARE_READ_LINE_MEMBER( do_read );
@@ -53,17 +56,16 @@ private:
int m_sars;
int m_gticlub_hack;
- adc1038_input_delegate m_input_cb;
+ input_delegate m_input_cb;
};
-extern const device_type ADC1038;
+DECLARE_DEVICE_TYPE(ADC1038, adc1038_device)
#define MCFG_ADC1038_INPUT_CB(_class, _method) \
- adc1038_device::set_input_callback(*device, adc1038_input_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc1038_device::set_input_callback(*device, adc1038_device::input_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_ADC1038_GTIHACK(_hack) \
adc1038_device::set_gti_club_hack(*device, _hack);
-
-#endif /* __ADC1038_H__ */
+#endif // MAME_MACHINE_ADC1038_H
diff --git a/src/devices/machine/adc1213x.cpp b/src/devices/machine/adc1213x.cpp
index d3c39ba036e..889162bcd3a 100644
--- a/src/devices/machine/adc1213x.cpp
+++ b/src/devices/machine/adc1213x.cpp
@@ -34,30 +34,29 @@
-const device_type ADC12130 = device_creator<adc12130_device>;
+DEFINE_DEVICE_TYPE(ADC12130, adc12130_device, "adc12130", "ADC12130")
+DEFINE_DEVICE_TYPE(ADC12132, adc12132_device, "adc12132", "ADC12132")
+DEFINE_DEVICE_TYPE(ADC12138, adc12138_device, "adc12138", "ADC12138")
+
adc12130_device::adc12130_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adc12138_device(mconfig, ADC12130, "ADC12130", tag, owner, clock, "adc12130", __FILE__)
+ : adc12138_device(mconfig, ADC12130, tag, owner, clock)
{
}
-const device_type ADC12132 = device_creator<adc12132_device>;
-
adc12132_device::adc12132_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : adc12138_device(mconfig, ADC12132, "ADC12132", tag, owner, clock, "adc12132", __FILE__)
+ : adc12138_device(mconfig, ADC12132, tag, owner, clock)
{
}
-const device_type ADC12138 = device_creator<adc12138_device>;
-
adc12138_device::adc12138_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ADC12138, "ADC12138", tag, owner, clock, "adc12138", __FILE__)
+ : adc12138_device(mconfig, ADC12138, tag, owner, clock)
{
}
-adc12138_device::adc12138_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+adc12138_device::adc12138_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/adc1213x.h b/src/devices/machine/adc1213x.h
index 56251fdae91..9f2eb7552fd 100644
--- a/src/devices/machine/adc1213x.h
+++ b/src/devices/machine/adc1213x.h
@@ -9,15 +9,16 @@
***************************************************************************/
-#ifndef __ADC1213X_H__
-#define __ADC1213X_H__
+#ifndef MAME_MACHINE_ADC1213X_H
+#define MAME_MACHINE_ADC1213X_H
+
+#pragma once
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-typedef device_delegate<double (uint8_t input)> adc1213x_ipt_convert_delegate;
#define ADC12138_IPT_CONVERT_CB(name) double name(uint8_t input)
/***************************************************************************
@@ -27,11 +28,11 @@ typedef device_delegate<double (uint8_t input)> adc1213x_ipt_convert_delegate;
class adc12138_device : public device_t
{
public:
+ typedef device_delegate<double (uint8_t input)> ipt_convert_delegate;
+
adc12138_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- adc12138_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- ~adc12138_device() {}
- static void set_ipt_convert_callback(device_t &device, adc1213x_ipt_convert_delegate callback) { downcast<adc12138_device &>(device).m_ipt_read_cb = callback; }
+ static void set_ipt_convert_callback(device_t &device, ipt_convert_delegate &&cb) { downcast<adc12138_device &>(device).m_ipt_read_cb = std::move(cb); }
DECLARE_WRITE8_MEMBER( di_w );
DECLARE_WRITE8_MEMBER( cs_w );
@@ -41,13 +42,15 @@ public:
DECLARE_READ8_MEMBER( eoc_r );
protected:
+ adc12138_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
void convert(int channel, int bits16, int lsbfirst);
- adc1213x_ipt_convert_delegate m_ipt_read_cb;
+ ipt_convert_delegate m_ipt_read_cb;
private:
// internal state
@@ -64,7 +67,6 @@ private:
int m_end_conv;
};
-extern const device_type ADC12138;
class adc12130_device : public adc12138_device
{
@@ -72,7 +74,6 @@ public:
adc12130_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type ADC12130;
class adc12132_device : public adc12138_device
{
@@ -80,10 +81,13 @@ public:
adc12132_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type ADC12132;
+
+DECLARE_DEVICE_TYPE(ADC12138, adc12138_device)
+DECLARE_DEVICE_TYPE(ADC12130, adc12130_device)
+DECLARE_DEVICE_TYPE(ADC12132, adc12132_device)
#define MCFG_ADC1213X_IPT_CONVERT_CB(_class, _method) \
- adc12138_device::set_ipt_convert_callback(*device, adc1213x_ipt_convert_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ adc12138_device::set_ipt_convert_callback(*device, adc12138_device::ipt_convert_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-#endif /* __ADC1213X_H__ */
+#endif // MAME_MACHINE_ADC1213X_H
diff --git a/src/devices/machine/aicartc.cpp b/src/devices/machine/aicartc.cpp
index 864c9e5ced9..c6d5beb5a45 100644
--- a/src/devices/machine/aicartc.cpp
+++ b/src/devices/machine/aicartc.cpp
@@ -19,7 +19,7 @@
//**************************************************************************
// device type definition
-const device_type AICARTC = device_creator<aicartc_device>;
+DEFINE_DEVICE_TYPE(AICARTC, aicartc_device, "aicartc", "AICA RTC")
//**************************************************************************
@@ -31,8 +31,10 @@ const device_type AICARTC = device_creator<aicartc_device>;
//-------------------------------------------------
aicartc_device::aicartc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AICARTC, "AICA RTC", tag, owner, clock, "aicartc", __FILE__),
- device_rtc_interface(mconfig, *this), m_rtc_reg_lo(0), m_rtc_reg_hi(0), m_rtc_tick(0), m_we(0), m_clock_timer(nullptr)
+ : device_t(mconfig, AICARTC, tag, owner, clock)
+ , device_rtc_interface(mconfig, *this)
+ , m_rtc_reg_lo(0), m_rtc_reg_hi(0), m_rtc_tick(0), m_we(0)
+ , m_clock_timer(nullptr)
{
}
diff --git a/src/devices/machine/aicartc.h b/src/devices/machine/aicartc.h
index ba06de45db2..757c0a58c1d 100644
--- a/src/devices/machine/aicartc.h
+++ b/src/devices/machine/aicartc.h
@@ -1,16 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Angelo Salese
-/***************************************************************************
-
-Template for skeleton device
-
-***************************************************************************/
+#ifndef MAME_MACHINE_AICARTC_H
+#define MAME_MACHINE_AICARTC_H
#pragma once
-#ifndef __AICARTCDEV_H__
-#define __AICARTCDEV_H__
-
#include "dirtc.h"
@@ -27,8 +21,7 @@ Template for skeleton device
// ======================> aicartc_device
-class aicartc_device : public device_t,
- public device_rtc_interface
+class aicartc_device : public device_t, public device_rtc_interface
{
public:
// construction/destruction
@@ -60,14 +53,6 @@ private:
// device type definition
-extern const device_type AICARTC;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(AICARTC, aicartc_device)
-#endif
+#endif // MAME_MACHINE_AICARTC_H
diff --git a/src/devices/machine/akiko.cpp b/src/devices/machine/akiko.cpp
index e464f70431f..95887f648f1 100644
--- a/src/devices/machine/akiko.cpp
+++ b/src/devices/machine/akiko.cpp
@@ -31,7 +31,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type AKIKO = device_creator<akiko_device>;
+DEFINE_DEVICE_TYPE(AKIKO, akiko_device, "akiko", "CBM AKIKO")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -56,7 +56,7 @@ machine_config_constructor akiko_device::device_mconfig_additions() const
//-------------------------------------------------
akiko_device::akiko_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AKIKO, "CBM AKIKO", tag, owner, clock, "akiko", __FILE__),
+ : device_t(mconfig, AKIKO, tag, owner, clock),
m_c2p_input_index(0),
m_c2p_output_index(0),
m_i2c_scl_out(0),
diff --git a/src/devices/machine/akiko.h b/src/devices/machine/akiko.h
index 23a33cd38c9..692f8c66154 100644
--- a/src/devices/machine/akiko.h
+++ b/src/devices/machine/akiko.h
@@ -12,10 +12,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_AKIKO_H
+#define MAME_MACHINE_AKIKO_H
-#ifndef __AKIKO_H__
-#define __AKIKO_H__
+#pragma once
#include "cdrom.h"
#include "sound/cdda.h"
@@ -57,26 +57,25 @@ class akiko_device : public device_t
{
public:
akiko_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~akiko_device() {}
// callbacks
- template<class _Object> static devcb_base &set_mem_r_callback(device_t &device, _Object object)
- { return downcast<akiko_device &>(device).m_mem_r.set_callback(object); }
+ template <class Object> static devcb_base &set_mem_r_callback(device_t &device, Object &&cb)
+ { return downcast<akiko_device &>(device).m_mem_r.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_mem_w_callback(device_t &device, _Object object)
- { return downcast<akiko_device &>(device).m_mem_w.set_callback(object); }
+ template <class Object> static devcb_base &set_mem_w_callback(device_t &device, Object &&cb)
+ { return downcast<akiko_device &>(device).m_mem_w.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_int_w_callback(device_t &device, _Object object)
- { return downcast<akiko_device &>(device).m_int_w.set_callback(object); }
+ template <class Object> static devcb_base &set_int_w_callback(device_t &device, Object &&cb)
+ { return downcast<akiko_device &>(device).m_int_w.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_scl_handler(device_t &device, _Object object)
- { return downcast<akiko_device &>(device).m_scl_w.set_callback(object); }
+ template <class Object> static devcb_base &set_scl_handler(device_t &device, Object &&cb)
+ { return downcast<akiko_device &>(device).m_scl_w.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_sda_read_handler(device_t &device, _Object object)
- { return downcast<akiko_device &>(device).m_sda_r.set_callback(object); }
+ template <class Object> static devcb_base &set_sda_read_handler(device_t &device, Object &&cb)
+ { return downcast<akiko_device &>(device).m_sda_r.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_sda_write_handler(device_t &device, _Object object)
- { return downcast<akiko_device &>(device).m_sda_w.set_callback(object); }
+ template <class Object> static devcb_base &set_sda_write_handler(device_t &device, Object &&cb)
+ { return downcast<akiko_device &>(device).m_sda_w.set_callback(std::forward<Object>(cb)); }
DECLARE_READ32_MEMBER( read );
DECLARE_WRITE32_MEMBER( write );
@@ -90,7 +89,7 @@ protected:
private:
// 1X CDROM sector time in msec (300KBps)
- static const int CD_SECTOR_TIME = (1000/((150*1024)/2048));
+ static constexpr int CD_SECTOR_TIME = (1000/((150*1024)/2048));
// chunky to planar converter
uint32_t m_c2p_input_buffer[8];
@@ -164,6 +163,6 @@ private:
};
// device type definition
-extern const device_type AKIKO;
+DECLARE_DEVICE_TYPE(AKIKO, akiko_device)
-#endif
+#endif // MAME_MACHINE_AKIKO_H
diff --git a/src/devices/machine/am2847.cpp b/src/devices/machine/am2847.cpp
index 93c288c6b68..7e7992a2e85 100644
--- a/src/devices/machine/am2847.cpp
+++ b/src/devices/machine/am2847.cpp
@@ -9,12 +9,12 @@
#include "emu.h"
#include "am2847.h"
-const device_type AM2847 = device_creator<am2847_device>;
-const device_type AM2849 = device_creator<am2849_device>;
-const device_type TMS3409 = device_creator<tms3409_device>;
+DEFINE_DEVICE_TYPE(AM2847, am2847_device, "am2847", "AMD Am2847 80-bit Static Shift Register")
+DEFINE_DEVICE_TYPE(AM2849, am2849_device, "am2849", "AMD Am2849 96-bit Static Shift Register")
+DEFINE_DEVICE_TYPE(TMS3409, tms3409_device, "tms3409", "TI TMS3409 80-bit Static Shift Register")
-am2847_base_device::am2847_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, size_t size)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+am2847_base_device::am2847_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, size_t size)
+ : device_t(mconfig, type, tag, owner, clock)
, m_in(0)
, m_out(0)
, m_rc(0)
@@ -24,17 +24,17 @@ am2847_base_device::am2847_base_device(const machine_config &mconfig, device_typ
}
am2847_device::am2847_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : am2847_base_device(mconfig, AM2847, "AMD Am2847 80-bit Static Shift Register", tag, owner, clock, "am2847", 5)
+ : am2847_base_device(mconfig, AM2847, tag, owner, clock, 5)
{
}
am2849_device::am2849_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : am2847_base_device(mconfig, AM2849, "AMD Am2849 96-bit Static Shift Register", tag, owner, clock, "am2847", 6)
+ : am2847_base_device(mconfig, AM2849, tag, owner, clock, 6)
{
}
tms3409_device::tms3409_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : am2847_base_device(mconfig, TMS3409, "TI TMS3409 80-bit Static Shift Register", tag, owner, clock, "am2847", 5)
+ : am2847_base_device(mconfig, TMS3409, tag, owner, clock, 5)
{
}
diff --git a/src/devices/machine/am2847.h b/src/devices/machine/am2847.h
index 0e70d2bf37f..88d63342d8f 100644
--- a/src/devices/machine/am2847.h
+++ b/src/devices/machine/am2847.h
@@ -40,10 +40,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_AM2847_H
+#define MAME_MACHINE_AM2847_H
-#ifndef AM2847_H
-#define AM2847_H
+#pragma once
#define MCFG_AM2847_ADD(_tag) \
@@ -58,8 +58,6 @@
class am2847_base_device : public device_t
{
public:
- am2847_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, size_t size);
-
DECLARE_WRITE_LINE_MEMBER( in_a_w );
DECLARE_WRITE_LINE_MEMBER( in_b_w );
DECLARE_WRITE_LINE_MEMBER( in_c_w );
@@ -77,6 +75,8 @@ public:
uint8_t out_r() const { return m_out; }
protected:
+ am2847_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, size_t size);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -126,8 +126,8 @@ public:
};
// device type definition
-extern const device_type AM2847;
-extern const device_type AM2849;
-extern const device_type TMS3409;
+DECLARE_DEVICE_TYPE(AM2847, am2847_device)
+DECLARE_DEVICE_TYPE(AM2849, am2849_device)
+DECLARE_DEVICE_TYPE(TMS3409, tms3409_device)
-#endif // AM2847_H
+#endif // MAME_MACHINE_AM2847_H
diff --git a/src/devices/machine/am53cf96.cpp b/src/devices/machine/am53cf96.cpp
index d2770b383ce..edd2ca72fee 100644
--- a/src/devices/machine/am53cf96.cpp
+++ b/src/devices/machine/am53cf96.cpp
@@ -18,7 +18,7 @@
READ8_MEMBER( am53cf96_device::read )
{
int rv;
- static const int states[] = { 0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 0 };
+ static constexpr int states[] = { 0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 0 };
if (offset == REG_STATUS)
{
@@ -147,7 +147,7 @@ WRITE8_MEMBER( am53cf96_device::write )
}
am53cf96_device::am53cf96_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- legacy_scsi_host_adapter(mconfig, AM53CF96, "53CF96 SCSI", tag, owner, clock, "am53cf96", __FILE__),
+ legacy_scsi_host_adapter(mconfig, AM53CF96, tag, owner, clock),
m_irq_handler(*this)
{
}
@@ -191,4 +191,4 @@ void am53cf96_device::dma_write_data(int bytes, uint8_t *pData)
write_data(pData, bytes);
}
-const device_type AM53CF96 = device_creator<am53cf96_device>;
+DEFINE_DEVICE_TYPE(AM53CF96, am53cf96_device, "am53cf96", "AMD 53CF96 SCSI")
diff --git a/src/devices/machine/am53cf96.h b/src/devices/machine/am53cf96.h
index ec2697bab5b..f269ec34384 100644
--- a/src/devices/machine/am53cf96.h
+++ b/src/devices/machine/am53cf96.h
@@ -5,8 +5,8 @@
*
*/
-#ifndef _AM53CF96_H_
-#define _AM53CF96_H_
+#ifndef MAME_MACHINE_AM53CF96_H
+#define MAME_MACHINE_AM53CF96_H
#pragma once
@@ -15,28 +15,6 @@
#define MCFG_AM53CF96_IRQ_HANDLER(_devcb) \
devcb = &am53cf96_device::set_irq_handler(*device, DEVCB_##_devcb);
-// 53CF96 register set
-enum
-{
- REG_XFERCNTLOW = 0, // read = current xfer count lo byte, write = set xfer count lo byte
- REG_XFERCNTMID, // read = current xfer count mid byte, write = set xfer count mid byte
- REG_FIFO, // read/write = FIFO
- REG_COMMAND, // read/write = command
-
- REG_STATUS, // read = status, write = destination SCSI ID (4)
- REG_IRQSTATE, // read = IRQ status, write = timeout (5)
- REG_INTSTATE, // read = internal state, write = sync xfer period (6)
- REG_FIFOSTATE, // read = FIFO status, write = sync offset
- REG_CTRL1, // read/write = control 1
- REG_CLOCKFCTR, // clock factor (write only)
- REG_TESTMODE, // test mode (write only)
- REG_CTRL2, // read/write = control 2
- REG_CTRL3, // read/write = control 3
- REG_CTRL4, // read/write = control 4
- REG_XFERCNTHI, // read = current xfer count hi byte, write = set xfer count hi byte
- REG_DATAALIGN // data alignment (write only)
-};
-
class am53cf96_device : public legacy_scsi_host_adapter
{
public:
@@ -44,7 +22,7 @@ public:
am53cf96_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<am53cf96_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<am53cf96_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -53,12 +31,34 @@ public:
void dma_write_data(int bytes, uint8_t *pData);
protected:
+ // 53CF96 register set
+ enum
+ {
+ REG_XFERCNTLOW = 0, // read = current xfer count lo byte, write = set xfer count lo byte
+ REG_XFERCNTMID, // read = current xfer count mid byte, write = set xfer count mid byte
+ REG_FIFO, // read/write = FIFO
+ REG_COMMAND, // read/write = command
+
+ REG_STATUS, // read = status, write = destination SCSI ID (4)
+ REG_IRQSTATE, // read = IRQ status, write = timeout (5)
+ REG_INTSTATE, // read = internal state, write = sync xfer period (6)
+ REG_FIFOSTATE, // read = FIFO status, write = sync offset
+ REG_CTRL1, // read/write = control 1
+ REG_CLOCKFCTR, // clock factor (write only)
+ REG_TESTMODE, // test mode (write only)
+ REG_CTRL2, // read/write = control 2
+ REG_CTRL3, // read/write = control 3
+ REG_CTRL4, // read/write = control 4
+ REG_XFERCNTHI, // read = current xfer count hi byte, write = set xfer count hi byte
+ REG_DATAALIGN // data alignment (write only)
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
- static const device_timer_id TIMER_TRANSFER = 0;
+ static constexpr device_timer_id TIMER_TRANSFER = 0;
uint8_t scsi_regs[32];
uint8_t fifo[16];
@@ -71,6 +71,6 @@ private:
};
// device type definition
-extern const device_type AM53CF96;
+DECLARE_DEVICE_TYPE(AM53CF96, am53cf96_device)
-#endif
+#endif // MAME_MACHINE_AM53CF96_H
diff --git a/src/devices/machine/am9517a.cpp b/src/devices/machine/am9517a.cpp
index b29fdf7b13a..b39ab007252 100644
--- a/src/devices/machine/am9517a.cpp
+++ b/src/devices/machine/am9517a.cpp
@@ -42,23 +42,24 @@
#include "emu.h"
#include "am9517a.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type AM9517A = device_creator<am9517a_device>;
-const device_type V53_DMAU = device_creator<upd71071_v53_device>;
-const device_type PCXPORT_DMAC = device_creator<pcxport_dmac_device>;
+DEFINE_DEVICE_TYPE(AM9517A, am9517a_device, "am9517a", "AM9517A")
+DEFINE_DEVICE_TYPE(V53_DMAU, upd71071_v53_device, "v53_dmau", "V53 DMAU")
+DEFINE_DEVICE_TYPE(PCXPORT_DMAC, pcxport_dmac_device, "pcx_dmac", "PC Transporter DMAC")
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
enum
{
@@ -133,7 +134,7 @@ enum
inline void am9517a_device::dma_request(int channel, int state)
{
- if (LOG) logerror("AM9517A '%s' Channel %u DMA Request: %u\n", tag(), channel, state);
+ LOG("AM9517A Channel %u DMA Request: %u\n", channel, state);
if (state ^ COMMAND_DREQ_ACTIVE_LOW)
{
@@ -190,50 +191,10 @@ inline void am9517a_device::set_dack()
{
for (int channel = 0; channel < 4; channel++)
{
- if (channel == 0)
- {
- if ((channel == m_current_channel) && !COMMAND_MEM_TO_MEM)
- {
- m_out_dack_0_cb(COMMAND_DACK_ACTIVE_HIGH);
- }
- else
- {
- m_out_dack_0_cb(!COMMAND_DACK_ACTIVE_HIGH);
- }
- }
- else if (channel == 1)
- {
- if ((channel == m_current_channel) && !COMMAND_MEM_TO_MEM)
- {
- m_out_dack_1_cb(COMMAND_DACK_ACTIVE_HIGH);
- }
- else
- {
- m_out_dack_1_cb(!COMMAND_DACK_ACTIVE_HIGH);
- }
- }
- else if (channel == 2)
- {
- if ((channel == m_current_channel) && !COMMAND_MEM_TO_MEM)
- {
- m_out_dack_2_cb(COMMAND_DACK_ACTIVE_HIGH);
- }
- else
- {
- m_out_dack_2_cb(!COMMAND_DACK_ACTIVE_HIGH);
- }
- }
- else if (channel == 3)
- {
- if ((channel == m_current_channel) && !COMMAND_MEM_TO_MEM)
- {
- m_out_dack_3_cb(COMMAND_DACK_ACTIVE_HIGH);
- }
- else
- {
- m_out_dack_3_cb(!COMMAND_DACK_ACTIVE_HIGH);
- }
- }
+ if ((channel == m_current_channel) && !COMMAND_MEM_TO_MEM)
+ m_out_dack_cb[channel](COMMAND_DACK_ACTIVE_HIGH);
+ else
+ m_out_dack_cb[channel](!COMMAND_DACK_ACTIVE_HIGH);
}
}
@@ -282,21 +243,7 @@ inline void am9517a_device::dma_read()
{
case MODE_TRANSFER_VERIFY:
case MODE_TRANSFER_WRITE:
- switch(m_current_channel)
- {
- case 0:
- m_temp = m_in_ior_0_cb(offset);
- break;
- case 1:
- m_temp = m_in_ior_1_cb(offset);
- break;
- case 2:
- m_temp = m_in_ior_2_cb(offset);
- break;
- case 3:
- m_temp = m_in_ior_3_cb(offset);
- break;
- }
+ m_temp = m_in_ior_cb[m_current_channel](offset);
break;
case MODE_TRANSFER_READ:
@@ -316,33 +263,20 @@ inline void am9517a_device::dma_write()
switch (MODE_TRANSFER_MASK)
{
- case MODE_TRANSFER_VERIFY: {
- uint8_t v1 = m_in_memr_cb(offset);
- if(0 && m_temp != v1)
- logerror("%s: verify error %02x vs. %02x\n", tag(), m_temp, v1);
+ case MODE_TRANSFER_VERIFY:
+ {
+ uint8_t v1 = m_in_memr_cb(offset);
+ if(0 && m_temp != v1)
+ logerror("verify error %02x vs. %02x\n", m_temp, v1);
+ }
break;
- }
case MODE_TRANSFER_WRITE:
m_out_memw_cb(offset, m_temp);
break;
case MODE_TRANSFER_READ:
- switch(m_current_channel)
- {
- case 0:
- m_out_iow_0_cb(offset, m_temp);
- break;
- case 1:
- m_out_iow_1_cb(offset, m_temp);
- break;
- case 2:
- m_out_iow_2_cb(offset, m_temp);
- break;
- case 3:
- m_out_iow_3_cb(offset, m_temp);
- break;
- }
+ m_out_iow_cb[m_current_channel](offset, m_temp);
break;
}
}
@@ -473,8 +407,8 @@ void am9517a_device::end_of_process()
//-------------------------------------------------
-am9517a_device::am9517a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+am9517a_device::am9517a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_execute_interface(mconfig, *this),
m_icount(0),
m_hack(0),
@@ -484,56 +418,25 @@ am9517a_device::am9517a_device(const machine_config &mconfig, device_type type,
m_out_eop_cb(*this),
m_in_memr_cb(*this),
m_out_memw_cb(*this),
- m_in_ior_0_cb(*this),
- m_in_ior_1_cb(*this),
- m_in_ior_2_cb(*this),
- m_in_ior_3_cb(*this),
- m_out_iow_0_cb(*this),
- m_out_iow_1_cb(*this),
- m_out_iow_2_cb(*this),
- m_out_iow_3_cb(*this),
- m_out_dack_0_cb(*this),
- m_out_dack_1_cb(*this),
- m_out_dack_2_cb(*this),
- m_out_dack_3_cb(*this)
+ m_in_ior_cb{ { *this }, { *this }, { *this }, { *this } },
+ m_out_iow_cb{ { *this }, { *this }, { *this }, { *this } },
+ m_out_dack_cb{ { *this }, { *this }, { *this }, { *this } }
{
}
am9517a_device::am9517a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AM9517A, "AM9517A", tag, owner, clock, "am9517a", __FILE__),
- device_execute_interface(mconfig, *this),
- m_icount(0),
- m_hack(0),
- m_ready(1),
- m_command(0),
- m_out_hreq_cb(*this),
- m_out_eop_cb(*this),
- m_in_memr_cb(*this),
- m_out_memw_cb(*this),
- m_in_ior_0_cb(*this),
- m_in_ior_1_cb(*this),
- m_in_ior_2_cb(*this),
- m_in_ior_3_cb(*this),
- m_out_iow_0_cb(*this),
- m_out_iow_1_cb(*this),
- m_out_iow_2_cb(*this),
- m_out_iow_3_cb(*this),
- m_out_dack_0_cb(*this),
- m_out_dack_1_cb(*this),
- m_out_dack_2_cb(*this),
- m_out_dack_3_cb(*this)
-
+ : am9517a_device(mconfig, AM9517A, tag, owner, clock)
{
}
upd71071_v53_device::upd71071_v53_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : am9517a_device(mconfig, V53_DMAU, "V53 DMAU", tag, owner, clock, "v53_dmau")
+ : am9517a_device(mconfig, V53_DMAU, tag, owner, clock)
{
}
pcxport_dmac_device::pcxport_dmac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : am9517a_device(mconfig, PCXPORT_DMAC, "PC Transporter DMAC", tag, owner, clock, "pcx_dmac")
+ : am9517a_device(mconfig, PCXPORT_DMAC, tag, owner, clock)
{
}
@@ -551,20 +454,14 @@ void am9517a_device::device_start()
m_out_eop_cb.resolve_safe();
m_in_memr_cb.resolve_safe(0);
m_out_memw_cb.resolve_safe();
- m_in_ior_0_cb.resolve_safe(0);
- m_in_ior_1_cb.resolve_safe(0);
- m_in_ior_2_cb.resolve_safe(0);
- m_in_ior_3_cb.resolve_safe(0);
- m_out_iow_0_cb.resolve_safe();
- m_out_iow_1_cb.resolve_safe();
- m_out_iow_2_cb.resolve_safe();
- m_out_iow_3_cb.resolve_safe();
- m_out_dack_0_cb.resolve_safe();
- m_out_dack_1_cb.resolve_safe();
- m_out_dack_2_cb.resolve_safe();
- m_out_dack_3_cb.resolve_safe();
-
- for (auto & elem : m_channel)
+ for(auto &cb : m_in_ior_cb)
+ cb.resolve_safe(0);
+ for(auto &cb : m_out_iow_cb)
+ cb.resolve_safe();
+ for(auto &cb : m_out_dack_cb)
+ cb.resolve_safe();
+
+ for(auto &elem : m_channel)
{
elem.m_address = 0;
elem.m_count = 0;
@@ -894,7 +791,7 @@ WRITE8_MEMBER( am9517a_device::write )
m_channel[channel].m_address = (m_channel[channel].m_address & 0xff00) | data;
}
- if (LOG) logerror("AM9517A '%s' Channel %u Base Address: %04x\n", tag(), channel, m_channel[channel].m_base_address);
+ LOG("AM9517A Channel %u Base Address: %04x\n", channel, m_channel[channel].m_base_address);
break;
case REGISTER_WORD_COUNT:
@@ -909,7 +806,7 @@ WRITE8_MEMBER( am9517a_device::write )
m_channel[channel].m_count = (m_channel[channel].m_count & 0xff00) | data;
}
- if (LOG) logerror("AM9517A '%s' Channel %u Base Word Count: %04x\n", tag(), channel, m_channel[channel].m_base_count);
+ LOG("AM9517A Channel %u Base Word Count: %04x\n", channel, m_channel[channel].m_base_count);
break;
}
@@ -922,7 +819,7 @@ WRITE8_MEMBER( am9517a_device::write )
case REGISTER_COMMAND:
m_command = data;
- if (LOG) logerror("AM9517A '%s' Command Register: %02x\n", tag(), m_command);
+ LOG("AM9517A Command Register: %02x\n", m_command);
break;
case REGISTER_REQUEST:
@@ -942,7 +839,7 @@ WRITE8_MEMBER( am9517a_device::write )
m_request &= ~(1 << (channel + 4));
}
- if (LOG) logerror("AM9517A '%s' Request Register: %01x\n", tag(), m_request);
+ LOG("AM9517A Request Register: %01x\n", m_request);
}
break;
@@ -959,7 +856,7 @@ WRITE8_MEMBER( am9517a_device::write )
m_mask &= ~(1 << channel);
}
- if (LOG) logerror("AM9517A '%s' Mask Register: %01x\n", tag(), m_mask);
+ LOG("AM9517A Mask Register: %01x\n", m_mask);
}
break;
@@ -972,24 +869,24 @@ WRITE8_MEMBER( am9517a_device::write )
// clear terminal count
m_status &= ~(1 << channel);
- if (LOG) logerror("AM9517A '%s' Channel %u Mode: %02x\n", tag(), channel, data & 0xfc);
+ LOG("AM9517A Channel %u Mode: %02x\n", channel, data & 0xfc);
}
break;
case REGISTER_BYTE_POINTER:
- if (LOG) logerror("AM9517A '%s' Clear Byte Pointer Flip-Flop\n", tag());
+ LOG("AM9517A Clear Byte Pointer Flip-Flop\n");
m_msb = 0;
break;
case REGISTER_MASTER_CLEAR:
- if (LOG) logerror("AM9517A '%s' Master Clear\n", tag());
+ LOG("AM9517A Master Clear\n");
device_reset();
break;
case REGISTER_CLEAR_MASK:
- if (LOG) logerror("AM9517A '%s' Clear Mask Register\n", tag());
+ LOG("AM9517A Clear Mask Register\n");
m_mask = 0;
break;
@@ -997,7 +894,7 @@ WRITE8_MEMBER( am9517a_device::write )
case REGISTER_MASK:
m_mask = data & 0x0f;
- if (LOG) logerror("AM9517A '%s' Mask Register: %01x\n", tag(), m_mask);
+ LOG("AM9517A Mask Register: %01x\n", m_mask);
break;
}
}
@@ -1011,7 +908,7 @@ WRITE8_MEMBER( am9517a_device::write )
WRITE_LINE_MEMBER( am9517a_device::hack_w )
{
- if (LOG) logerror("AM9517A '%s' Hold Acknowledge: %u\n", tag(), state);
+ LOG("AM9517A Hold Acknowledge: %u\n", state);
m_hack = state;
trigger(1);
@@ -1024,7 +921,7 @@ WRITE_LINE_MEMBER( am9517a_device::hack_w )
WRITE_LINE_MEMBER( am9517a_device::ready_w )
{
- if (LOG) logerror("AM9517A '%s' Ready: %u\n", tag(), state);
+ LOG("AM9517A Ready: %u\n", state);
m_ready = state;
}
@@ -1036,7 +933,7 @@ WRITE_LINE_MEMBER( am9517a_device::ready_w )
WRITE_LINE_MEMBER( am9517a_device::eop_w )
{
- if (LOG) logerror("AM9517A '%s' End of Process: %u\n", tag(), state);
+ LOG("AM9517A End of Process: %u\n", state);
}
@@ -1109,7 +1006,7 @@ READ8_MEMBER(upd71071_v53_device::read)
uint8_t ret = 0;
int channel = m_selected_channel;
- if (LOG) logerror("DMA: read from register %02x\n",offset);
+ LOG("DMA: read from register %02x\n",offset);
switch (offset)
{
diff --git a/src/devices/machine/am9517a.h b/src/devices/machine/am9517a.h
index 955467fbfba..7e92a5ed38e 100644
--- a/src/devices/machine/am9517a.h
+++ b/src/devices/machine/am9517a.h
@@ -29,10 +29,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_AM9517_H
+#define MAME_MACHINE_AM9517_H
-#ifndef __AM9517A__
-#define __AM9517A__
+#pragma once
@@ -49,29 +49,17 @@ class am9517a_device : public device_t,
public:
// construction/destruction
- am9517a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
am9517a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_hreq_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_hreq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_eop_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_eop_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_in_memr_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_in_memr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_memw_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_memw_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_hreq_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_hreq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_eop_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_eop_cb.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_in_ior_0_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_in_ior_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ior_1_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_in_ior_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ior_2_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_in_ior_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ior_3_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_in_ior_3_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_memr_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_in_memr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_memw_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_memw_cb.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_out_iow_0_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_iow_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iow_1_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_iow_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iow_2_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_iow_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iow_3_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_iow_3_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_out_dack_0_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_dack_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_1_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_dack_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_2_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_dack_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_3_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_dack_3_cb.set_callback(object); }
+ template <unsigned C, class Object> static devcb_base &set_in_ior_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_in_ior_cb[C].set_callback(std::forward<Object>(cb)); }
+ template <unsigned C, class Object> static devcb_base &set_out_iow_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_iow_cb[C].set_callback(std::forward<Object>(cb)); }
+ template <unsigned C, class Object> static devcb_base &set_out_dack_callback(device_t &device, Object &&cb) { return downcast<am9517a_device &>(device).m_out_dack_cb[C].set_callback(std::forward<Object>(cb)); }
virtual DECLARE_READ8_MEMBER( read );
virtual DECLARE_WRITE8_MEMBER( write );
@@ -86,6 +74,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( dreq3_w );
protected:
+ am9517a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -137,23 +127,9 @@ private:
devcb_read8 m_in_memr_cb;
devcb_write8 m_out_memw_cb;
- devcb_read8 m_in_ior_0_cb;
- devcb_read8 m_in_ior_1_cb;
- devcb_read8 m_in_ior_2_cb;
- devcb_read8 m_in_ior_3_cb;
- devcb_write8 m_out_iow_0_cb;
- devcb_write8 m_out_iow_1_cb;
- devcb_write8 m_out_iow_2_cb;
- devcb_write8 m_out_iow_3_cb;
- devcb_write_line m_out_dack_0_cb;
- devcb_write_line m_out_dack_1_cb;
- devcb_write_line m_out_dack_2_cb;
- devcb_write_line m_out_dack_3_cb;
-
-
-
-
-
+ devcb_read8 m_in_ior_cb[4];
+ devcb_write8 m_out_iow_cb[4];
+ devcb_write_line m_out_dack_cb[4];
};
@@ -193,9 +169,9 @@ protected:
// device type definition
-extern const device_type AM9517A;
-extern const device_type V53_DMAU;
-extern const device_type PCXPORT_DMAC;
+DECLARE_DEVICE_TYPE(AM9517A, am9517a_device)
+DECLARE_DEVICE_TYPE(V53_DMAU, upd71071_v53_device)
+DECLARE_DEVICE_TYPE(PCXPORT_DMAC, pcxport_dmac_device)
/***************************************************************************
@@ -215,40 +191,40 @@ extern const device_type PCXPORT_DMAC;
devcb = &am9517a_device::set_out_memw_callback(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_0_CB(_devcb) \
- devcb = &am9517a_device::set_in_ior_0_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_in_ior_callback<0>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_1_CB(_devcb) \
- devcb = &am9517a_device::set_in_ior_1_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_in_ior_callback<1>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_2_CB(_devcb) \
- devcb = &am9517a_device::set_in_ior_2_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_in_ior_callback<2>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_IN_IOR_3_CB(_devcb) \
- devcb = &am9517a_device::set_in_ior_3_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_in_ior_callback<3>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_0_CB(_devcb) \
- devcb = &am9517a_device::set_out_iow_0_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_out_iow_callback<0>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_1_CB(_devcb) \
- devcb = &am9517a_device::set_out_iow_1_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_out_iow_callback<1>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_2_CB(_devcb) \
- devcb = &am9517a_device::set_out_iow_2_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_out_iow_callback<2>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_IOW_3_CB(_devcb) \
- devcb = &am9517a_device::set_out_iow_3_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_out_iow_callback<3>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_0_CB(_devcb) \
- devcb = &am9517a_device::set_out_dack_0_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_out_dack_callback<0>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_1_CB(_devcb) \
- devcb = &am9517a_device::set_out_dack_1_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_out_dack_callback<1>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_2_CB(_devcb) \
- devcb = &am9517a_device::set_out_dack_2_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_out_dack_callback<2>(*device, DEVCB_##_devcb);
#define MCFG_AM9517A_OUT_DACK_3_CB(_devcb) \
- devcb = &am9517a_device::set_out_dack_3_callback(*device, DEVCB_##_devcb);
+ devcb = &am9517a_device::set_out_dack_callback<3>(*device, DEVCB_##_devcb);
#define MCFG_I8237_OUT_HREQ_CB MCFG_AM9517A_OUT_HREQ_CB
#define MCFG_I8237_OUT_EOP_CB MCFG_AM9517A_OUT_EOP_CB
@@ -267,4 +243,4 @@ extern const device_type PCXPORT_DMAC;
#define MCFG_I8237_OUT_DACK_2_CB MCFG_AM9517A_OUT_DACK_2_CB
#define MCFG_I8237_OUT_DACK_3_CB MCFG_AM9517A_OUT_DACK_3_CB
-#endif
+#endif // MAME_MACHINE_AM9517_H
diff --git a/src/devices/machine/amigafdc.cpp b/src/devices/machine/amigafdc.cpp
index 188221d0052..8f8fc47c337 100644
--- a/src/devices/machine/amigafdc.cpp
+++ b/src/devices/machine/amigafdc.cpp
@@ -12,19 +12,20 @@
#include "formats/ami_dsk.h"
#include "amigafdc.h"
-const device_type AMIGA_FDC = device_creator<amiga_fdc>;
+DEFINE_DEVICE_TYPE(AMIGA_FDC, amiga_fdc_device, "amiga_fdc", "Amiga FDC")
-FLOPPY_FORMATS_MEMBER( amiga_fdc::floppy_formats )
+FLOPPY_FORMATS_MEMBER( amiga_fdc_device::floppy_formats )
FLOPPY_ADF_FORMAT
FLOPPY_FORMATS_END
-amiga_fdc::amiga_fdc(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, AMIGA_FDC, "Amiga FDC", tag, owner, clock, "amiga_fdc", __FILE__),
- m_write_index(*this), floppy(nullptr), t_gen(nullptr), dsklen(0), pre_dsklen(0), dsksync(0), dskbyt(0), adkcon(0), dmacon(0), dskpt(0), dma_value(0), dma_state(0)
+amiga_fdc_device::amiga_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, AMIGA_FDC, tag, owner, clock),
+ m_write_index(*this),
+ floppy(nullptr), t_gen(nullptr), dsklen(0), pre_dsklen(0), dsksync(0), dskbyt(0), adkcon(0), dmacon(0), dskpt(0), dma_value(0), dma_state(0)
{
}
-void amiga_fdc::device_start()
+void amiga_fdc_device::device_start()
{
m_write_index.resolve_safe();
@@ -43,7 +44,7 @@ void amiga_fdc::device_start()
}
-void amiga_fdc::device_reset()
+void amiga_fdc_device::device_reset()
{
floppy = nullptr;
dsklen = 0x4000;
@@ -59,7 +60,7 @@ void amiga_fdc::device_reset()
live_abort();
}
-void amiga_fdc::dma_done()
+void amiga_fdc_device::dma_done()
{
amiga_state *state = machine().driver_data<amiga_state>();
if(dskbyt & 0x2000) {
@@ -71,7 +72,7 @@ void amiga_fdc::dma_done()
state->custom_chip_w(REG_INTREQ, INTENA_SETCLR | INTENA_DSKBLK);
}
-void amiga_fdc::dma_write(uint16_t value)
+void amiga_fdc_device::dma_write(uint16_t value)
{
amiga_state *state = machine().driver_data<amiga_state>();
state->chip_ram_w(dskpt, value);
@@ -85,7 +86,7 @@ void amiga_fdc::dma_write(uint16_t value)
dma_done();
}
-uint16_t amiga_fdc::dma_read()
+uint16_t amiga_fdc_device::dma_read()
{
amiga_state *state = machine().driver_data<amiga_state>();
uint16_t res = state->chip_ram_r(dskpt);
@@ -102,7 +103,7 @@ uint16_t amiga_fdc::dma_read()
return res;
}
-void amiga_fdc::live_start()
+void amiga_fdc_device::live_start()
{
cur_live.tm = machine().time();
cur_live.state = RUNNING;
@@ -116,25 +117,25 @@ void amiga_fdc::live_start()
live_run();
}
-void amiga_fdc::checkpoint()
+void amiga_fdc_device::checkpoint()
{
cur_live.pll.commit(floppy, cur_live.tm);
checkpoint_live = cur_live;
}
-void amiga_fdc::rollback()
+void amiga_fdc_device::rollback()
{
cur_live = checkpoint_live;
}
-void amiga_fdc::live_delay(int state)
+void amiga_fdc_device::live_delay(int state)
{
cur_live.next_state = state;
if(cur_live.tm != machine().time())
t_gen->adjust(cur_live.tm - machine().time());
}
-void amiga_fdc::live_sync()
+void amiga_fdc_device::live_sync()
{
if(!cur_live.tm.is_never()) {
if(cur_live.tm > machine().time()) {
@@ -159,7 +160,7 @@ void amiga_fdc::live_sync()
}
}
-void amiga_fdc::live_abort()
+void amiga_fdc_device::live_abort()
{
if(!cur_live.tm.is_never() && cur_live.tm > machine().time()) {
rollback();
@@ -172,7 +173,7 @@ void amiga_fdc::live_abort()
cur_live.next_state = -1;
}
-void amiga_fdc::live_run(const attotime &limit)
+void amiga_fdc_device::live_run(const attotime &limit)
{
amiga_state *state = machine().driver_data<amiga_state>();
@@ -199,7 +200,7 @@ void amiga_fdc::live_run(const attotime &limit)
}
if(cur_live.bit_counter > 8)
- fatalerror("amiga_fdc::live_run - cur_live.bit_counter > 8\n");
+ fatalerror("amiga_fdc_device::live_run - cur_live.bit_counter > 8\n");
if(cur_live.bit_counter == 8) {
live_delay(RUNNING_SYNCPOINT);
@@ -222,7 +223,7 @@ void amiga_fdc::live_run(const attotime &limit)
return;
cur_live.bit_counter++;
if(cur_live.bit_counter > 8)
- fatalerror("amiga_fdc::live_run - cur_live.bit_counter > 8\n");
+ fatalerror("amiga_fdc_device::live_run - cur_live.bit_counter > 8\n");
if(cur_live.bit_counter == 8) {
live_delay(RUNNING_SYNCPOINT);
@@ -284,7 +285,7 @@ void amiga_fdc::live_run(const attotime &limit)
}
} else {
if(cur_live.bit_counter != 8)
- fatalerror("amiga_fdc::live_run - cur_live.bit_counter != 8\n");
+ fatalerror("amiga_fdc_device::live_run - cur_live.bit_counter != 8\n");
cur_live.bit_counter = 0;
switch(dma_state) {
@@ -311,12 +312,12 @@ void amiga_fdc::live_run(const attotime &limit)
}
}
-bool amiga_fdc::dma_enabled()
+bool amiga_fdc_device::dma_enabled()
{
return (dsklen & 0x8000) && ((dmacon & 0x0210) == 0x0210);
}
-void amiga_fdc::dma_check()
+void amiga_fdc_device::dma_check()
{
bool was_writing = dskbyt & 0x2000;
dskbyt &= 0x9fff;
@@ -347,19 +348,19 @@ void amiga_fdc::dma_check()
}
-void amiga_fdc::adkcon_set(uint16_t data)
+void amiga_fdc_device::adkcon_set(uint16_t data)
{
live_sync();
adkcon = data;
live_run();
}
-uint16_t amiga_fdc::adkcon_r(void)
+uint16_t amiga_fdc_device::adkcon_r(void)
{
return adkcon;
}
-void amiga_fdc::dsklen_w(uint16_t data)
+void amiga_fdc_device::dsklen_w(uint16_t data)
{
live_sync();
if(!(data & 0x8000) || (data == pre_dsklen)) {
@@ -371,38 +372,38 @@ void amiga_fdc::dsklen_w(uint16_t data)
live_run();
}
-void amiga_fdc::dskpth_w(uint16_t data)
+void amiga_fdc_device::dskpth_w(uint16_t data)
{
live_sync();
dskpt = (dskpt & 0xffff) | (data << 16);
live_run();
}
-void amiga_fdc::dskptl_w(uint16_t data)
+void amiga_fdc_device::dskptl_w(uint16_t data)
{
live_sync();
dskpt = (dskpt & 0xffff0000) | data;
live_run();
}
-uint16_t amiga_fdc::dskpth_r()
+uint16_t amiga_fdc_device::dskpth_r()
{
return dskpt >> 16;
}
-uint16_t amiga_fdc::dskptl_r()
+uint16_t amiga_fdc_device::dskptl_r()
{
return dskpt;
}
-void amiga_fdc::dsksync_w(uint16_t data)
+void amiga_fdc_device::dsksync_w(uint16_t data)
{
live_sync();
dsksync = data;
live_run();
}
-void amiga_fdc::dmacon_set(uint16_t data)
+void amiga_fdc_device::dmacon_set(uint16_t data)
{
live_sync();
dmacon = data;
@@ -410,20 +411,20 @@ void amiga_fdc::dmacon_set(uint16_t data)
live_run();
}
-uint16_t amiga_fdc::dskbytr_r()
+uint16_t amiga_fdc_device::dskbytr_r()
{
uint16_t res = dskbyt;
dskbyt &= 0x7fff;
return res;
}
-void amiga_fdc::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void amiga_fdc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
live_sync();
live_run();
}
-void amiga_fdc::setup_leds()
+void amiga_fdc_device::setup_leds()
{
if(floppy) {
int drive =
@@ -442,7 +443,7 @@ void amiga_fdc::setup_leds()
}
}
-WRITE8_MEMBER( amiga_fdc::ciaaprb_w )
+WRITE8_MEMBER( amiga_fdc_device::ciaaprb_w )
{
floppy_image_device *old_floppy = floppy;
@@ -463,7 +464,7 @@ WRITE8_MEMBER( amiga_fdc::ciaaprb_w )
if(old_floppy)
old_floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb());
if(floppy)
- floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&amiga_fdc::index_callback, this));
+ floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&amiga_fdc_device::index_callback, this));
}
if(floppy) {
@@ -484,7 +485,7 @@ WRITE8_MEMBER( amiga_fdc::ciaaprb_w )
live_run();
}
-uint8_t amiga_fdc::ciaapra_r()
+uint8_t amiga_fdc_device::ciaapra_r()
{
uint8_t ret = 0x3c;
if(floppy) {
@@ -501,19 +502,19 @@ uint8_t amiga_fdc::ciaapra_r()
return ret;
}
-void amiga_fdc::index_callback(floppy_image_device *floppy, int state)
+void amiga_fdc_device::index_callback(floppy_image_device *floppy, int state)
{
/* Issue a index pulse when a disk revolution completes */
m_write_index(!state);
}
-void amiga_fdc::pll_t::set_clock(const attotime &period)
+void amiga_fdc_device::pll_t::set_clock(const attotime &period)
{
for(int i=0; i<38; i++)
delays[i] = period*(i+1);
}
-void amiga_fdc::pll_t::reset(const attotime &when)
+void amiga_fdc_device::pll_t::reset(const attotime &when)
{
counter = 0;
increment = 146;
@@ -527,7 +528,7 @@ void amiga_fdc::pll_t::reset(const attotime &when)
freq_sub = 0x00;
}
-int amiga_fdc::pll_t::get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
+int amiga_fdc_device::pll_t::get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
attotime when = floppy ? floppy->get_next_transition(ctime) : attotime::never;
@@ -601,19 +602,19 @@ int amiga_fdc::pll_t::get_next_bit(attotime &tm, floppy_image_device *floppy, co
return bit;
}
-void amiga_fdc::pll_t::start_writing(const attotime & tm)
+void amiga_fdc_device::pll_t::start_writing(const attotime & tm)
{
write_start_time = tm;
write_position = 0;
}
-void amiga_fdc::pll_t::stop_writing(floppy_image_device *floppy, const attotime &tm)
+void amiga_fdc_device::pll_t::stop_writing(floppy_image_device *floppy, const attotime &tm)
{
commit(floppy, tm);
write_start_time = attotime::never;
}
-bool amiga_fdc::pll_t::write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
+bool amiga_fdc_device::pll_t::write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
if(write_start_time.is_never()) {
write_start_time = ctime;
@@ -644,7 +645,7 @@ bool amiga_fdc::pll_t::write_next_bit(bool bit, attotime &tm, floppy_image_devic
}
-void amiga_fdc::pll_t::commit(floppy_image_device *floppy, const attotime &tm)
+void amiga_fdc_device::pll_t::commit(floppy_image_device *floppy, const attotime &tm)
{
if(write_start_time.is_never() || tm == write_start_time)
return;
diff --git a/src/devices/machine/amigafdc.h b/src/devices/machine/amigafdc.h
index 0d3846301df..b0e18debc69 100644
--- a/src/devices/machine/amigafdc.h
+++ b/src/devices/machine/amigafdc.h
@@ -1,18 +1,20 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef AMIGAFDC_H
-#define AMIGAFDC_H
+#ifndef MAME_MACHINE_AMIGAFDC_H
+#define MAME_MACHINE_AMIGAFDC_H
+
+#pragma once
#include "imagedev/floppy.h"
#define MCFG_AMIGA_FDC_INDEX_CALLBACK(_write) \
- devcb = &amiga_fdc::set_index_wr_callback(*device, DEVCB_##_write);
+ devcb = &amiga_fdc_device::set_index_wr_callback(*device, DEVCB_##_write);
-class amiga_fdc : public device_t {
+class amiga_fdc_device : public device_t {
public:
- amiga_fdc(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ amiga_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_index_wr_callback(device_t &device, _Object object) { return downcast<amiga_fdc &>(device).m_write_index.set_callback(object); }
+ template <class Object> static devcb_base &set_index_wr_callback(device_t &device, Object &&cb) { return downcast<amiga_fdc_device &>(device).m_write_index.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(ciaaprb_w);
@@ -115,6 +117,6 @@ private:
void live_run(const attotime &limit = attotime::never);
};
-extern const device_type AMIGA_FDC;
+DECLARE_DEVICE_TYPE(AMIGA_FDC, amiga_fdc_device)
-#endif /* AMIGAFDC_H */
+#endif // MAME_MACHINE_AMIGAFDC_H
diff --git a/src/devices/machine/appldriv.cpp b/src/devices/machine/appldriv.cpp
index ef6a46dfb6d..1d207a9ab0b 100644
--- a/src/devices/machine/appldriv.cpp
+++ b/src/devices/machine/appldriv.cpp
@@ -24,7 +24,7 @@ static inline apple525_floppy_image_device *get_device(device_t *device)
assert(device != nullptr);
assert(device->type() == FLOPPY_APPLE);
- return (apple525_floppy_image_device *) downcast<apple525_floppy_image_device *>(device);
+ return downcast<apple525_floppy_image_device *>(device);
}
static int apple525_enable_mask = 1;
@@ -56,7 +56,7 @@ device_t *apple525_get_device_by_type(device_t *device, int ftype, int drive)
return nullptr;
}
-void apple525_set_enable_lines(device_t *device,int enable_mask)
+void apple525_set_enable_lines(device_t *device, int enable_mask)
{
apple525_enable_mask = enable_mask;
}
@@ -291,14 +291,14 @@ int apple525_read_status(device_t *device)
}
// device type definition
-const device_type FLOPPY_APPLE = device_creator<apple525_floppy_image_device>;
+DEFINE_DEVICE_TYPE(FLOPPY_APPLE, apple525_floppy_image_device, "floppy_apple", "Apple Disk II")
//-------------------------------------------------
// apple525_floppy_image_device - constructor
//-------------------------------------------------
apple525_floppy_image_device::apple525_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : legacy_floppy_image_device(mconfig, FLOPPY_APPLE, "Apple Disk II", tag, owner, clock, "floppy_apple", __FILE__)
+ : legacy_floppy_image_device(mconfig, FLOPPY_APPLE, tag, owner, clock)
{
}
diff --git a/src/devices/machine/appldriv.h b/src/devices/machine/appldriv.h
index acb85020189..3765705f625 100644
--- a/src/devices/machine/appldriv.h
+++ b/src/devices/machine/appldriv.h
@@ -8,21 +8,23 @@
*********************************************************************/
-#ifndef APPLDRIV_H
-#define APPLDRIV_H
+#ifndef MAME_MACHINE_APPLDRIV_H
+#define MAME_MACHINE_APPLDRIV_H
+
+#pragma once
#include "imagedev/flopdrv.h"
#include "formats/ap2_dsk.h"
-void apple525_set_lines(device_t *device,uint8_t lines);
-void apple525_set_enable_lines(device_t *device,int enable_mask);
+void apple525_set_lines(device_t *device, uint8_t lines);
+void apple525_set_enable_lines(device_t *device, int enable_mask);
uint8_t apple525_read_data(device_t *device);
-void apple525_write_data(device_t *device,uint8_t data);
+void apple525_write_data(device_t *device, uint8_t data);
int apple525_read_status(device_t *device);
int apple525_get_count(running_machine &machine);
-class apple525_floppy_image_device : public legacy_floppy_image_device
+class apple525_floppy_image_device : public legacy_floppy_image_device
{
public:
// construction/destruction
@@ -30,7 +32,7 @@ public:
virtual image_init_result call_load() override;
virtual void call_unload() override;
- void set_params(int dividend, int divisor) { m_dividend = dividend; m_divisor = divisor;}
+ void set_params(int dividend, int divisor) { m_dividend = dividend; m_divisor = divisor; }
int get_dividend() { return m_dividend; }
int get_divisor() { return m_divisor; }
@@ -53,7 +55,7 @@ private:
};
// device type definition
-extern const device_type FLOPPY_APPLE;
+DECLARE_DEVICE_TYPE(FLOPPY_APPLE, apple525_floppy_image_device)
#define MCFG_LEGACY_FLOPPY_APPLE_PARAMS(_dividend,_divisor) \
downcast<apple525_floppy_image_device *>(device)->set_params(_dividend,_divisor);
@@ -84,4 +86,4 @@ extern const device_type FLOPPY_APPLE;
MCFG_DEVICE_REMOVE(FLOPPY_0) \
MCFG_DEVICE_REMOVE(FLOPPY_1)
-#endif /* APPLDRIV_H */
+#endif // MAME_MACHINE_APPLDRIV_H
diff --git a/src/devices/machine/applefdc.cpp b/src/devices/machine/applefdc.cpp
index 6d9d10fbd13..681dcc525ed 100644
--- a/src/devices/machine/applefdc.cpp
+++ b/src/devices/machine/applefdc.cpp
@@ -106,8 +106,8 @@ enum
// ctor
//-------------------------------------------------
-applefdc_base_device::applefdc_base_device(applefdc_base_device::applefdc_t fdc_type, const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+applefdc_base_device::applefdc_base_device(applefdc_base_device::applefdc_t fdc_type, const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
m_type(fdc_type),
m_interface(nullptr)
{
@@ -565,10 +565,10 @@ uint8_t applefdc_base_device::get_lines()
APPLE FDC - Used on Apple II
***************************************************************************/
-const device_type APPLEFDC = device_creator<applefdc_device>;
+DEFINE_DEVICE_TYPE(APPLEFDC, applefdc_device, "apple_fdc", "Apple FDC")
applefdc_device::applefdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : applefdc_base_device(APPLEFDC_APPLE2, mconfig, APPLEFDC, "Apple FDC", tag, owner, clock, "apple_fdc", __FILE__)
+ : applefdc_base_device(APPLEFDC_APPLE2, mconfig, APPLEFDC, tag, owner, clock)
{
}
@@ -578,9 +578,9 @@ applefdc_device::applefdc_device(const machine_config &mconfig, const char *tag,
IWM - Used on early Macs
***************************************************************************/
-const device_type IWM = device_creator<iwm_device>;
+DEFINE_DEVICE_TYPE(IWM, iwm_device, "iwm", "Apple IWM (Integrated Woz Machine)")
iwm_device::iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : applefdc_base_device(APPLEFDC_IWM, mconfig, IWM, "Apple IWM (Integrated Woz Machine)", tag, owner, clock, "iwm", __FILE__)
+ : applefdc_base_device(APPLEFDC_IWM, mconfig, IWM, tag, owner, clock)
{
}
diff --git a/src/devices/machine/applefdc.h b/src/devices/machine/applefdc.h
index dd0e1279b08..f6f9f05fcf9 100644
--- a/src/devices/machine/applefdc.h
+++ b/src/devices/machine/applefdc.h
@@ -14,9 +14,10 @@
*********************************************************************/
-#ifndef __APPLEFDC_H__
-#define __APPLEFDC_H__
+#ifndef MAME_MACHINE_APPLEFDC_H
+#define MAME_MACHINE_APPLEFDC_H
+#pragma once
@@ -29,9 +30,8 @@
#define APPLEFDC_PH2 0x04
#define APPLEFDC_PH3 0x08
-extern const device_type APPLEFDC;
-extern const device_type IWM;
-extern const device_type SWIM;
+DECLARE_DEVICE_TYPE(APPLEFDC, applefdc_device)
+DECLARE_DEVICE_TYPE(IWM, iwm_device)
@@ -83,7 +83,7 @@ protected:
};
// constructor
- applefdc_base_device(applefdc_t fdc_type, const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ applefdc_base_device(applefdc_t fdc_type, const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -166,4 +166,4 @@ public:
MCFG_APPLEFDC_CONFIG(_intrf)
-#endif /* __APPLEFDC_H__ */
+#endif // MAME_MACHINE_APPLEFDC_H
diff --git a/src/devices/machine/at28c16.cpp b/src/devices/machine/at28c16.cpp
index 1ee69769c6f..06188c190be 100644
--- a/src/devices/machine/at28c16.cpp
+++ b/src/devices/machine/at28c16.cpp
@@ -33,20 +33,20 @@ ADDRESS_MAP_END
//**************************************************************************
// device type definition
-const device_type AT28C16 = device_creator<at28c16_device>;
+DEFINE_DEVICE_TYPE(AT28C16, at28c16_device, "at28c16", "AT28C16 2Kx8 EEPROM")
//-------------------------------------------------
// at28c16_device - constructor
//-------------------------------------------------
-at28c16_device::at28c16_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : device_t(mconfig, AT28C16, "AT28C16", tag, owner, clock, "at28c16", __FILE__),
+at28c16_device::at28c16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, AT28C16, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_nvram_interface(mconfig, *this),
- m_space_config("at28c16", ENDIANNESS_BIG, 8, 12, 0, *ADDRESS_MAP_NAME( at28c16_map8 )),
- m_a9_12v( 0 ),
- m_oe_12v( 0 ),
- m_last_write( -1 ),
+ m_space_config("at28c16", ENDIANNESS_BIG, 8, 12, 0, *ADDRESS_MAP_NAME(at28c16_map8)),
+ m_a9_12v(0),
+ m_oe_12v(0),
+ m_last_write(-1),
m_default_data(*this, DEVICE_SELF, AT28C16_DATA_BYTES)
{
}
@@ -57,9 +57,9 @@ at28c16_device::at28c16_device( const machine_config &mconfig, const char *tag,
// any address spaces owned by this device
//-------------------------------------------------
-const address_space_config *at28c16_device::memory_space_config( address_spacenum spacenum ) const
+const address_space_config *at28c16_device::memory_space_config(address_spacenum spacenum) const
{
- return ( spacenum == 0 ) ? &m_space_config : nullptr;
+ return (spacenum == AS_0) ? &m_space_config : nullptr;
}
diff --git a/src/devices/machine/at28c16.h b/src/devices/machine/at28c16.h
index 1d985e5d680..1339a7ce85c 100644
--- a/src/devices/machine/at28c16.h
+++ b/src/devices/machine/at28c16.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_AT28C16_H
+#define MAME_MACHINE_AT28C16_H
-#ifndef __AT28C16_H__
-#define __AT28C16_H__
+#pragma once
//**************************************************************************
@@ -35,7 +35,7 @@ class at28c16_device :
{
public:
// construction/destruction
- at28c16_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock );
+ at28c16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// I/O operations
DECLARE_WRITE8_MEMBER( write );
@@ -49,12 +49,12 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config( address_spacenum spacenum = AS_0 ) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
// device_nvram_interface overrides
virtual void nvram_default() override;
- virtual void nvram_read( emu_file &file ) override;
- virtual void nvram_write( emu_file &file ) override;
+ virtual void nvram_read(emu_file &file) override;
+ virtual void nvram_write(emu_file &file) override;
// internal state
address_space_config m_space_config;
@@ -68,5 +68,6 @@ protected:
// device type definition
extern const device_type AT28C16;
+DECLARE_DEVICE_TYPE(AT28C16, at28c16_device)
-#endif
+#endif // MAME_MACHINE_AT28C16_H
diff --git a/src/devices/machine/at29x.cpp b/src/devices/machine/at29x.cpp
index 2c56a1c45c2..5ca0735649d 100644
--- a/src/devices/machine/at29x.cpp
+++ b/src/devices/machine/at29x.cpp
@@ -55,13 +55,13 @@ enum
Constructor for all variants
*/
-at29x_device::at29x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+at29x_device::at29x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int memory_size, int device_id, int sector_size)
+ : device_t(mconfig, type, tag, owner, clock),
device_nvram_interface(mconfig, *this),
- m_memory_size(0), // bytes
+ m_memory_size(memory_size), // bytes
m_word_width(8),
- m_device_id(0),
- m_sector_size(0),
+ m_device_id(device_id),
+ m_sector_size(sector_size),
m_cycle_time(10), // ms
m_boot_block_size(16*1024),
m_version(0)
@@ -72,33 +72,24 @@ at29x_device::at29x_device(const machine_config &mconfig, device_type type, cons
Constructor for AT29C020
*/
at29c020_device::at29c020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : at29x_device(mconfig, AT29C020, "ATMEL 29C020 256K x 8 FEEPROM", tag, owner, clock, "at29c020", __FILE__)
+ : at29x_device(mconfig, AT29C020, tag, owner, clock, 256*1024, 0xda, 256)
{
- m_memory_size = 256*1024;
- m_device_id = 0xda;
- m_sector_size = 256;
}
/*
Constructor for AT29C040
*/
at29c040_device::at29c040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : at29x_device(mconfig, AT29C040, "ATMEL 29C040 512K x 8 FEEPROM", tag, owner, clock, "at29c040", __FILE__)
+ : at29x_device(mconfig, AT29C040, tag, owner, clock, 512*1024, 0x5b, 512)
{
- m_memory_size = 512*1024;
- m_device_id = 0x5b;
- m_sector_size = 512;
}
/*
Constructor for AT29C040A
*/
at29c040a_device::at29c040a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : at29x_device(mconfig, AT29C040A, "ATMEL 29C040A 512K x 8 FEEPROM", tag, owner, clock, "at29c040a", __FILE__)
+ : at29x_device(mconfig, AT29C040A, tag, owner, clock, 512*1024, 0xa4, 256)
{
- m_memory_size = 512*1024;
- m_device_id = 0xa4;
- m_sector_size = 256;
}
@@ -478,7 +469,7 @@ WRITE8_MEMBER( at29x_device::write )
}
}
-void at29x_device::device_start(void)
+void at29x_device::device_start()
{
m_programming_buffer = std::make_unique<uint8_t[]>(m_sector_size);
m_eememory = std::make_unique<uint8_t[]>(m_memory_size+2);
@@ -521,6 +512,6 @@ void at29x_device::device_reset(void)
m_programming_last_offset = 0;
}
-const device_type AT29C020 = device_creator<at29c020_device>;
-const device_type AT29C040 = device_creator<at29c040_device>;
-const device_type AT29C040A = device_creator<at29c040a_device>;
+DEFINE_DEVICE_TYPE(AT29C020, at29c020_device, "at29c020", "ATMEL 29C020 256Kx8 FEEPROM")
+DEFINE_DEVICE_TYPE(AT29C040, at29c040_device, "at29c040", "ATMEL 29C040 512Kx8 FEEPROM")
+DEFINE_DEVICE_TYPE(AT29C040A, at29c040a_device, "at29c040a", "ATMEL 29C040A 512Kx8 FEEPROM")
diff --git a/src/devices/machine/at29x.h b/src/devices/machine/at29x.h
index da9b1d8b3e1..bb7711458bf 100644
--- a/src/devices/machine/at29x.h
+++ b/src/devices/machine/at29x.h
@@ -7,37 +7,25 @@
August 2015
*/
-#ifndef __AT29X__
-#define __AT29X__
+#ifndef MAME_MACHINE_AT29X_H
+#define MAME_MACHINE_AT29X_H
+#pragma once
-extern const device_type AT29C020;
-extern const device_type AT29C040;
-extern const device_type AT29C040A;
-enum s_cmd_t
-{
- CMD_0 = 0,
- CMD_1,
- CMD_2
-};
-
-enum s_pgm_t
-{
- PGM_0 = 0,
- PGM_1,
- PGM_2,
- PGM_3
-};
+DECLARE_DEVICE_TYPE(AT29C020, at29c020_device)
+DECLARE_DEVICE_TYPE(AT29C040, at29c040_device)
+DECLARE_DEVICE_TYPE(AT29C040A, at29c040a_device)
class at29x_device : public device_t, public device_nvram_interface
{
public:
- at29x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
protected:
+ at29x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int memory_size, int device_id, int sector_size);
+
virtual void device_start(void) override;
virtual void device_reset(void) override;
virtual void device_stop(void) override;
@@ -49,10 +37,10 @@ protected:
int get_sector_number(offs_t address) { return address / m_sector_size; }
- int m_memory_size; // bytes
+ const int m_memory_size; // bytes
int m_word_width;
- int m_device_id;
- int m_sector_size;
+ const int m_device_id;
+ const int m_sector_size;
int m_cycle_time; // ms
int m_boot_block_size;
int m_version;
@@ -60,6 +48,21 @@ protected:
int m_sector_mask;
private:
+ enum s_cmd_t
+ {
+ CMD_0 = 0,
+ CMD_1,
+ CMD_2
+ };
+
+ enum s_pgm_t
+ {
+ PGM_0 = 0,
+ PGM_1,
+ PGM_2,
+ PGM_3
+ };
+
void sync_flags(void);
std::unique_ptr<uint8_t[]> m_eememory;
@@ -112,4 +115,4 @@ public:
#define MCFG_AT29C040A_ADD(_tag ) \
MCFG_DEVICE_ADD(_tag, AT29C040A, 0)
-#endif
+#endif // MAME_MACHINE_AT29X_H
diff --git a/src/devices/machine/at45dbxx.cpp b/src/devices/machine/at45dbxx.cpp
index e1b44c4ee0e..74fc06b4413 100644
--- a/src/devices/machine/at45dbxx.cpp
+++ b/src/devices/machine/at45dbxx.cpp
@@ -33,9 +33,9 @@
//**************************************************************************
// device type definition
-const device_type AT45DB041 = device_creator<at45db041_device>;
-const device_type AT45DB081 = device_creator<at45db081_device>;
-const device_type AT45DB161 = device_creator<at45db161_device>;
+DEFINE_DEVICE_TYPE(AT45DB041, at45db041_device, "at45db041", "AT45DB041")
+DEFINE_DEVICE_TYPE(AT45DB081, at45db081_device, "at45db081", "AT45DB081")
+DEFINE_DEVICE_TYPE(AT45DB161, at45db161_device, "at45db161", "AT45DB161")
//**************************************************************************
@@ -47,29 +47,27 @@ const device_type AT45DB161 = device_creator<at45db161_device>;
//-------------------------------------------------
at45db041_device::at45db041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AT45DB041, "AT45DB041", tag, owner, clock, "at45db041", __FILE__),
- device_nvram_interface(mconfig, *this),
- write_so(*this)
+ : at45db041_device(mconfig, AT45DB041, tag, owner, clock)
{
}
-at45db041_device::at45db041_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_nvram_interface(mconfig, *this),
- write_so(*this)
+at45db041_device::at45db041_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_nvram_interface(mconfig, *this)
+ , write_so(*this)
{
}
at45db081_device::at45db081_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : at45db041_device(mconfig, AT45DB081, "AT45DB081", tag, owner, clock, "at45db081", __FILE__)
+ : at45db041_device(mconfig, AT45DB081, tag, owner, clock)
{
}
at45db161_device::at45db161_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : at45db041_device(mconfig, AT45DB161, "AT45DB161", tag, owner, clock, "at45db161", __FILE__)
+ : at45db041_device(mconfig, AT45DB161, tag, owner, clock)
{
}
diff --git a/src/devices/machine/at45dbxx.h b/src/devices/machine/at45dbxx.h
index 058672d457d..2c26916d2e5 100644
--- a/src/devices/machine/at45dbxx.h
+++ b/src/devices/machine/at45dbxx.h
@@ -12,9 +12,10 @@
*/
-#ifndef _AT45DBXX_H_
-#define _AT45DBXX_H_
+#ifndef MAME_MACHINE_AT45DBXX_H
+#define MAME_MACHINE_AT45DBXX_H
+#pragma once
//**************************************************************************
@@ -41,7 +42,6 @@ class at45db041_device : public device_t,
{
public:
at45db041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- at45db041_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
DECLARE_WRITE_LINE_MEMBER(cs_w);
DECLARE_WRITE_LINE_MEMBER(sck_w);
@@ -50,10 +50,11 @@ public:
uint8_t *get_ptr() { return &m_data[0]; }
- template<class _Object> static devcb_base &set_so_cb(device_t &device, _Object object) { return downcast<at45db041_device &>(device).write_so.set_callback(object); }
- devcb_write_line write_so;
+ template <class Object> static devcb_base &set_so_cb(device_t &device, Object &&cb) { return downcast<at45db041_device &>(device).write_so.set_callback(std::forward<Object>(cb)); }
protected:
+ at45db041_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -63,7 +64,6 @@ protected:
virtual void nvram_read(emu_file &file) override;
virtual void nvram_write(emu_file &file) override;
-protected:
virtual int num_pages() const { return 2048; }
virtual int page_size() const { return 264; }
virtual uint8_t device_id() const { return 0x18; }
@@ -74,6 +74,8 @@ protected:
virtual uint32_t flash_get_byte_addr();
void write_byte(uint8_t data);
+ devcb_write_line write_so;
+
// internal state
std::vector<uint8_t> m_data;
uint32_t m_size;
@@ -144,8 +146,8 @@ protected:
// device type definition
-extern const device_type AT45DB041;
-extern const device_type AT45DB081;
-extern const device_type AT45DB161;
+DECLARE_DEVICE_TYPE(AT45DB041, at45db041_device)
+DECLARE_DEVICE_TYPE(AT45DB081, at45db081_device)
+DECLARE_DEVICE_TYPE(AT45DB161, at45db161_device)
-#endif
+#endif // MAME_MACHINE_AT45DBXX_H
diff --git a/src/devices/machine/at_keybc.cpp b/src/devices/machine/at_keybc.cpp
index 2f2b528cb6e..eb43d0003ad 100644
--- a/src/devices/machine/at_keybc.cpp
+++ b/src/devices/machine/at_keybc.cpp
@@ -8,14 +8,13 @@
#include "emu.h"
#include "at_keybc.h"
-#include "cpu/mcs48/mcs48.h"
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
-const device_type AT_KEYBOARD_CONTROLLER = device_creator<at_keyboard_controller_device>;
+DEFINE_DEVICE_TYPE(AT_KEYBOARD_CONTROLLER, at_keyboard_controller_device, "at_keybc", "AT Keyboard Controller")
static INPUT_PORTS_START( at_keybc )
PORT_START("DSW")
@@ -55,7 +54,7 @@ ROM_END
//-------------------------------------------------
at_keyboard_controller_device::at_keyboard_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AT_KEYBOARD_CONTROLLER, "AT Keyboard Controller", tag, owner, clock, "at_keybc", __FILE__),
+ : device_t(mconfig, AT_KEYBOARD_CONTROLLER, tag, owner, clock),
m_cpu(nullptr),
m_system_reset_cb(*this),
m_gate_a20_cb(*this),
diff --git a/src/devices/machine/at_keybc.h b/src/devices/machine/at_keybc.h
index 7827517c4b5..7775a836755 100644
--- a/src/devices/machine/at_keybc.h
+++ b/src/devices/machine/at_keybc.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_AT_KEYBC_H
+#define MAME_MACHINE_AT_KEYBC_H
-#ifndef __AT_KEYBC_H__
-#define __AT_KEYBC_H__
+#pragma once
#include "cpu/mcs48/mcs48.h"
@@ -48,12 +48,12 @@ public:
// construction/destruction
at_keyboard_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_system_reset_callback(device_t &device, _Object object) { return downcast<at_keyboard_controller_device &>(device).m_system_reset_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_gate_a20_callback(device_t &device, _Object object) { return downcast<at_keyboard_controller_device &>(device).m_gate_a20_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_input_buffer_full_callback(device_t &device, _Object object) { return downcast<at_keyboard_controller_device &>(device).m_input_buffer_full_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_output_buffer_empty_callback(device_t &device, _Object object) { return downcast<at_keyboard_controller_device &>(device).m_output_buffer_empty_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_keyboard_clock_callback(device_t &device, _Object object) { return downcast<at_keyboard_controller_device &>(device).m_keyboard_clock_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_keyboard_data_callback(device_t &device, _Object object) { return downcast<at_keyboard_controller_device &>(device).m_keyboard_data_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_system_reset_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_system_reset_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gate_a20_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_gate_a20_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_input_buffer_full_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_output_buffer_empty_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_keyboard_clock_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_keyboard_clock_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_keyboard_data_callback(device_t &device, Object &&cb) { return downcast<at_keyboard_controller_device &>(device).m_keyboard_data_cb.set_callback(std::forward<Object>(cb)); }
// internal 8042 interface
DECLARE_READ_LINE_MEMBER( t0_r );
@@ -101,7 +101,6 @@ private:
// device type definition
-extern const device_type AT_KEYBOARD_CONTROLLER;
-
+DECLARE_DEVICE_TYPE(AT_KEYBOARD_CONTROLLER, at_keyboard_controller_device)
-#endif /* __AT_KEYBC__ */
+#endif // MAME_MACHINE_AT_KEYBC_H
diff --git a/src/devices/machine/atadev.cpp b/src/devices/machine/atadev.cpp
index f2f5686c690..03cae8a67ed 100644
--- a/src/devices/machine/atadev.cpp
+++ b/src/devices/machine/atadev.cpp
@@ -10,10 +10,11 @@
#include "atadev.h"
//-------------------------------------------------
-// ata_device_interface - constructor
+// device_ata_interface - constructor
//-------------------------------------------------
-ata_device_interface::ata_device_interface(const machine_config &mconfig, device_t &device) :
+device_ata_interface::device_ata_interface(const machine_config &mconfig, device_t &device) :
+ device_slot_card_interface(mconfig, device),
m_irq_handler(device),
m_dmarq_handler(device),
m_dasp_handler(device),
diff --git a/src/devices/machine/atadev.h b/src/devices/machine/atadev.h
index 8115a6e4dc1..6bd8bc7fde0 100644
--- a/src/devices/machine/atadev.h
+++ b/src/devices/machine/atadev.h
@@ -8,19 +8,21 @@
***************************************************************************/
+#ifndef MAME_MACHINE_ATADEV_H
+#define MAME_MACHINE_ATADEV_H
+
#pragma once
-#ifndef __ATADEV_H__
-#define __ATADEV_H__
+// ======================> device_ata_interface
-// ======================> ata_device_interface
+class ata_interface_device;
-class ata_device_interface
+class device_ata_interface : public device_slot_card_interface
{
+ friend class ata_interface_device;
public:
- ata_device_interface(const machine_config &mconfig, device_t &device);
- virtual ~ata_device_interface() {}
+ device_ata_interface(const machine_config &mconfig, device_t &device);
virtual uint16_t read_dma() = 0;
virtual DECLARE_READ16_MEMBER(read_cs0) = 0;
@@ -34,10 +36,11 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER(write_dasp) = 0;
virtual DECLARE_WRITE_LINE_MEMBER(write_pdiag) = 0;
+protected:
devcb_write_line m_irq_handler;
devcb_write_line m_dmarq_handler;
devcb_write_line m_dasp_handler;
devcb_write_line m_pdiag_handler;
};
-#endif
+#endif // MAME_MACHINE_ATADEV_H
diff --git a/src/devices/machine/ataflash.cpp b/src/devices/machine/ataflash.cpp
index a8e67c06fd5..f3aff7df8c3 100644
--- a/src/devices/machine/ataflash.cpp
+++ b/src/devices/machine/ataflash.cpp
@@ -3,15 +3,15 @@
#include "emu.h"
#include "ataflash.h"
-const device_type ATA_FLASH_PCCARD = device_creator<ata_flash_pccard_device>;
+DEFINE_DEVICE_TYPE(ATA_FLASH_PCCARD, ata_flash_pccard_device, "ataflash", "ATA Flash PC Card")
ata_flash_pccard_device::ata_flash_pccard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- ide_hdd_device(mconfig, ATA_FLASH_PCCARD, "ATA Flash PCCARD", tag, owner, clock, "ataflash", __FILE__)
+ ata_flash_pccard_device(mconfig, ATA_FLASH_PCCARD, tag, owner, clock)
{
}
-ata_flash_pccard_device::ata_flash_pccard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : ide_hdd_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ata_flash_pccard_device::ata_flash_pccard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : ide_hdd_device(mconfig, type, tag, owner, clock)
{
}
@@ -117,10 +117,10 @@ attotime ata_flash_pccard_device::seek_time()
}
-const device_type TAITO_PCCARD1 = device_creator<taito_pccard1_device>;
+DEFINE_DEVICE_TYPE(TAITO_PCCARD1, taito_pccard1_device, "taito_pccard1", "Taito PC Card (Type 1)")
taito_pccard1_device::taito_pccard1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- ata_flash_pccard_device(mconfig, TAITO_PCCARD1, "Taito PC-CARD (Type 1)", tag, owner, clock, "taito_pccard1", __FILE__),
+ ata_flash_pccard_device(mconfig, TAITO_PCCARD1, tag, owner, clock),
m_locked(0)
{
}
@@ -208,10 +208,10 @@ bool taito_pccard1_device::is_ready()
return m_locked == 0;
}
-const device_type TAITO_PCCARD2 = device_creator<taito_pccard2_device>;
+DEFINE_DEVICE_TYPE(TAITO_PCCARD2, taito_pccard2_device, "taito_pccard2", "Taito PC Card (Type 2)")
taito_pccard2_device::taito_pccard2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- ata_flash_pccard_device(mconfig, TAITO_PCCARD2, "Taito PC-CARD (Type 2)", tag, owner, clock, "taito_pccard2", __FILE__),
+ ata_flash_pccard_device(mconfig, TAITO_PCCARD2, tag, owner, clock),
m_locked(false)
{
}
@@ -307,10 +307,10 @@ bool taito_pccard2_device::is_ready()
return !m_locked;
}
-const device_type TAITO_COMPACT_FLASH = device_creator<taito_compact_flash_device>;
+DEFINE_DEVICE_TYPE(TAITO_COMPACT_FLASH, taito_compact_flash_device, "taito_cf", "Taito Compact Flash")
taito_compact_flash_device::taito_compact_flash_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- ata_flash_pccard_device(mconfig, TAITO_COMPACT_FLASH, "Taito Compact Flash", tag, owner, clock, "taito_cf", __FILE__),
+ ata_flash_pccard_device(mconfig, TAITO_COMPACT_FLASH, tag, owner, clock),
m_locked(false)
{
}
diff --git a/src/devices/machine/ataflash.h b/src/devices/machine/ataflash.h
index 55e46ff1c1c..ecf610ae4a3 100644
--- a/src/devices/machine/ataflash.h
+++ b/src/devices/machine/ataflash.h
@@ -1,21 +1,20 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#pragma once
+#ifndef MAME_MACHINE_ATAFLASH_H
+#define MAME_MACHINE_ATAFLASH_H
-#ifndef __ATAFLASH_H__
-#define __ATAFLASH_H__
+#pragma once
#include "pccard.h"
#include "machine/idehd.h"
extern const device_type ATA_FLASH_PCCARD;
+DECLARE_DEVICE_TYPE(ATA_FLASH_PCCARD, ata_flash_pccard_device)
-class ata_flash_pccard_device : public ide_hdd_device,
- public pccard_interface
+class ata_flash_pccard_device : public ide_hdd_device, public pccard_interface
{
public:
ata_flash_pccard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ata_flash_pccard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual DECLARE_READ16_MEMBER(read_memory) override;
virtual DECLARE_WRITE16_MEMBER(write_memory) override;
@@ -23,6 +22,8 @@ public:
virtual DECLARE_WRITE16_MEMBER(write_reg) override;
protected:
+ ata_flash_pccard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_reset() override;
@@ -35,7 +36,7 @@ private:
uint8_t m_pin_replacement;
};
-extern const device_type TAITO_PCCARD1;
+DECLARE_DEVICE_TYPE(TAITO_PCCARD1, taito_pccard1_device)
class taito_pccard1_device : public ata_flash_pccard_device
{
@@ -56,7 +57,7 @@ private:
uint16_t m_locked;
};
-extern const device_type TAITO_PCCARD2;
+DECLARE_DEVICE_TYPE(TAITO_PCCARD2, taito_pccard2_device)
class taito_pccard2_device : public ata_flash_pccard_device
{
@@ -78,7 +79,7 @@ private:
bool m_locked;
};
-extern const device_type TAITO_COMPACT_FLASH;
+DECLARE_DEVICE_TYPE(TAITO_COMPACT_FLASH, taito_compact_flash_device)
class taito_compact_flash_device : public ata_flash_pccard_device
{
@@ -91,11 +92,11 @@ protected:
virtual void process_command() override;
virtual bool is_ready() override;
- static const int IDE_COMMAND_TAITO_COMPACT_FLASH_UNLOCK = 0x0f;
+ static constexpr int IDE_COMMAND_TAITO_COMPACT_FLASH_UNLOCK = 0x0f;
private:
uint8_t m_key[5];
bool m_locked;
};
-#endif
+#endif // MAME_MACHINE_ATAFLASH_H
diff --git a/src/devices/machine/atahle.cpp b/src/devices/machine/atahle.cpp
index ad94f6a4f69..b93826e35de 100644
--- a/src/devices/machine/atahle.cpp
+++ b/src/devices/machine/atahle.cpp
@@ -40,10 +40,9 @@ enum
#define DEVICE1_PDIAG_TIME (attotime::from_msec(2))
#define DIAGNOSTIC_TIME (attotime::from_msec(2))
-ata_hle_device::ata_hle_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- ata_device_interface(mconfig, *this),
- device_slot_card_interface(mconfig, *this),
+ata_hle_device::ata_hle_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
+ device_ata_interface(mconfig, *this),
m_buffer_offset(0),
m_buffer_size(0),
m_error(0),
diff --git a/src/devices/machine/atahle.h b/src/devices/machine/atahle.h
index dfa39af8da5..d8a676e562c 100644
--- a/src/devices/machine/atahle.h
+++ b/src/devices/machine/atahle.h
@@ -8,16 +8,14 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_ATAHLE_H
+#define MAME_MACHINE_ATAHLE_H
-#ifndef __ATAHLE_H__
-#define __ATAHLE_H__
+#pragma once
#include "atadev.h"
-class ata_hle_device : public device_t,
- public ata_device_interface,
- public device_slot_card_interface
+class ata_hle_device : public device_t, public device_ata_interface
{
public:
virtual uint16_t read_dma() override;
@@ -33,7 +31,7 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER(write_pdiag) override;
protected:
- ata_hle_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ ata_hle_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_reset() override;
@@ -218,4 +216,4 @@ private:
emu_timer *m_buffer_empty_timer;
};
-#endif
+#endif // MAME_MACHINE_ATAHLE_H
diff --git a/src/devices/machine/ataintf.cpp b/src/devices/machine/ataintf.cpp
index 09ca1a04e8d..df3e127dd52 100644
--- a/src/devices/machine/ataintf.cpp
+++ b/src/devices/machine/ataintf.cpp
@@ -10,9 +10,12 @@
#include "emu.h"
#include "ataintf.h"
-#include "debugger.h"
-#include "idehd.h"
+
#include "atapicdr.h"
+#include "idehd.h"
+
+#include "debugger.h"
+
void ata_interface_device::set_irq(int state)
{
@@ -71,7 +74,7 @@ WRITE_LINE_MEMBER( ata_interface_device::dasp1_write_line )
{
m_dasp[1] = state;
- ata_device_interface *dev = m_slot[0]->dev();
+ device_ata_interface *dev = m_slot[0]->dev();
if (dev != nullptr)
dev->write_dasp(state);
@@ -110,7 +113,7 @@ WRITE_LINE_MEMBER( ata_interface_device::pdiag1_write_line )
{
m_pdiag[1] = state;
- ata_device_interface *dev = m_slot[0]->dev();
+ device_ata_interface *dev = m_slot[0]->dev();
if (dev != nullptr)
dev->write_pdiag(state);
}
@@ -207,21 +210,18 @@ SLOT_INTERFACE_START(ata_devices)
SLOT_INTERFACE("cdrom", ATAPI_CDROM)
SLOT_INTERFACE_END
-ata_interface_device::ata_interface_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ata_interface_device::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),
m_irq_handler(*this),
m_dmarq_handler(*this),
m_dasp_handler(*this){
}
-const device_type ATA_INTERFACE = device_creator<ata_interface_device>;
+DEFINE_DEVICE_TYPE(ATA_INTERFACE, ata_interface_device, "ata_interface", "ATA Interface")
ata_interface_device::ata_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ATA_INTERFACE, "ATA Interface", tag, owner, clock, "ata_interface", __FILE__),
- m_irq_handler(*this),
- m_dmarq_handler(*this),
- m_dasp_handler(*this)
+ ata_interface_device(mconfig, ATA_INTERFACE, tag, owner, clock)
{
}
@@ -246,7 +246,7 @@ void ata_interface_device::device_start()
m_dasp[i] = 0;
m_pdiag[i] = 0;
- ata_device_interface *dev = m_slot[i]->dev();
+ device_ata_interface *dev = m_slot[i]->dev();
if (dev != nullptr)
{
if (i == 0)
@@ -290,14 +290,14 @@ machine_config_constructor ata_interface_device::device_mconfig_additions() cons
//**************************************************************************
// device type definition
-const device_type ATA_SLOT = device_creator<ata_slot_device>;
+DEFINE_DEVICE_TYPE(ATA_SLOT, ata_slot_device, "ata_slot", "ATA Connector")
//-------------------------------------------------
// ata_slot_device - constructor
//-------------------------------------------------
ata_slot_device::ata_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ATA_SLOT, "ATA Connector", tag, owner, clock, "ata_slot", __FILE__),
+ : device_t(mconfig, ATA_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_dev(nullptr)
{
@@ -311,7 +311,7 @@ ata_slot_device::ata_slot_device(const machine_config &mconfig, const char *tag,
void ata_slot_device::device_config_complete()
{
- m_dev = dynamic_cast<ata_device_interface *>(get_card_device());
+ m_dev = dynamic_cast<device_ata_interface *>(get_card_device());
}
//-------------------------------------------------
diff --git a/src/devices/machine/ataintf.h b/src/devices/machine/ataintf.h
index 018796414ff..2d8533810e5 100644
--- a/src/devices/machine/ataintf.h
+++ b/src/devices/machine/ataintf.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_ATAINTF_H
+#define MAME_MACHINE_ATAINTF_H
-#ifndef __ATAINTF_H__
-#define __ATAINTF_H__
+#pragma once
#include "atadev.h"
@@ -28,18 +28,19 @@ public:
// construction/destruction
ata_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ata_device_interface *dev() { return m_dev; }
+ device_ata_interface *dev() { return m_dev; }
+
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_config_complete() override;
private:
- ata_device_interface *m_dev;
+ device_ata_interface *m_dev;
};
// device type definition
-extern const device_type ATA_SLOT;
+DECLARE_DEVICE_TYPE(ATA_SLOT, ata_slot_device)
/***************************************************************************
TYPE DEFINITIONS
@@ -78,12 +79,12 @@ class ata_interface_device : public device_t
{
public:
ata_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ata_interface_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ata_interface_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_dmarq_handler(device_t &device, _Object object) { return downcast<ata_interface_device &>(device).m_dmarq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_dasp_handler(device_t &device, _Object object) { return downcast<ata_interface_device &>(device).m_dasp_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ata_interface_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dmarq_handler(device_t &device, Object &&cb) { return downcast<ata_interface_device &>(device).m_dmarq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dasp_handler(device_t &device, Object &&cb) { return downcast<ata_interface_device &>(device).m_dasp_handler.set_callback(std::forward<Object>(cb)); }
+
uint16_t read_dma();
virtual DECLARE_READ16_MEMBER(read_cs0);
virtual DECLARE_READ16_MEMBER(read_cs1);
@@ -94,6 +95,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(write_dmack);
protected:
+ ata_interface_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -124,6 +127,6 @@ private:
devcb_write_line m_dasp_handler;
};
-extern const device_type ATA_INTERFACE;
+DECLARE_DEVICE_TYPE(ATA_INTERFACE, ata_interface_device)
-#endif /* __ATAINTF_H__ */
+#endif // MAME_MACHINE_ATAINTF_H
diff --git a/src/devices/machine/atapicdr.cpp b/src/devices/machine/atapicdr.cpp
index a7aa4449517..bee622ed4c1 100644
--- a/src/devices/machine/atapicdr.cpp
+++ b/src/devices/machine/atapicdr.cpp
@@ -8,21 +8,21 @@
#define T10MMC_GET_EVENT_STATUS_NOTIFICATION 0x4a
// device type definition
-const device_type ATAPI_CDROM = device_creator<atapi_cdrom_device>;
-const device_type ATAPI_FIXED_CDROM = device_creator<atapi_fixed_cdrom_device>;
+DEFINE_DEVICE_TYPE(ATAPI_CDROM, atapi_cdrom_device, "cdrom", "ATAPI CD-ROM")
+DEFINE_DEVICE_TYPE(ATAPI_FIXED_CDROM, atapi_fixed_cdrom_device, "cdrom_fixed", "ATAPI fixed CD-ROM")
atapi_cdrom_device::atapi_cdrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- atapi_hle_device(mconfig, ATAPI_CDROM, "ATAPI CDROM", tag, owner, clock, "cdrom", __FILE__)
+ atapi_cdrom_device(mconfig, ATAPI_CDROM, tag, owner, clock)
{
}
-atapi_cdrom_device::atapi_cdrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- atapi_hle_device(mconfig, type, name, tag, owner, clock, shortname, source)
+atapi_cdrom_device::atapi_cdrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ atapi_hle_device(mconfig, type, tag, owner, clock)
{
}
atapi_fixed_cdrom_device::atapi_fixed_cdrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- atapi_cdrom_device(mconfig, ATAPI_FIXED_CDROM, "ATAPI fixed CDROM", tag, owner, clock, "cdrom_fixed", __FILE__)
+ atapi_cdrom_device(mconfig, ATAPI_FIXED_CDROM, tag, owner, clock)
{
}
diff --git a/src/devices/machine/atapicdr.h b/src/devices/machine/atapicdr.h
index 1105506c84f..778197a2f24 100644
--- a/src/devices/machine/atapicdr.h
+++ b/src/devices/machine/atapicdr.h
@@ -8,24 +8,24 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_ATAPICDR_H
+#define MAME_MACHINE_ATAPICDR_H
-#ifndef __ATAPICDR_H__
-#define __ATAPICDR_H__
+#pragma once
#include "atapihle.h"
#include "t10mmc.h"
-class atapi_cdrom_device : public atapi_hle_device,
- public t10mmc
+class atapi_cdrom_device : public atapi_hle_device, public t10mmc
{
public:
atapi_cdrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- atapi_cdrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source);
uint16_t *identify_device_buffer() { return m_identify_buffer; }
protected:
+ atapi_cdrom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -42,12 +42,13 @@ class atapi_fixed_cdrom_device : public atapi_cdrom_device
{
public:
atapi_fixed_cdrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
protected:
virtual void device_reset() override;
};
// device type definition
-extern const device_type ATAPI_CDROM;
-extern const device_type ATAPI_FIXED_CDROM;
+DECLARE_DEVICE_TYPE(ATAPI_CDROM, atapi_cdrom_device)
+DECLARE_DEVICE_TYPE(ATAPI_FIXED_CDROM, atapi_fixed_cdrom_device)
-#endif
+#endif // MAME_MACHINE_ATAPICDR_H
diff --git a/src/devices/machine/atapihle.cpp b/src/devices/machine/atapihle.cpp
index 24d2c901f74..8bbc779ea23 100644
--- a/src/devices/machine/atapihle.cpp
+++ b/src/devices/machine/atapihle.cpp
@@ -3,8 +3,8 @@
#include "emu.h"
#include "atapihle.h"
-atapi_hle_device::atapi_hle_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source)
- : ata_hle_device(mconfig, type, name, tag, owner, clock, shortname, source),
+atapi_hle_device::atapi_hle_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : ata_hle_device(mconfig, type, tag, owner, clock),
m_packet(0),
m_data_size(0)
{
diff --git a/src/devices/machine/atapihle.h b/src/devices/machine/atapihle.h
index 2e44816a2ca..d01447e5830 100644
--- a/src/devices/machine/atapihle.h
+++ b/src/devices/machine/atapihle.h
@@ -8,20 +8,17 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_ATAPIHLE_H
+#define MAME_MACHINE_ATAPIHLE_H
-#ifndef __ATAPIHLE_H__
-#define __ATAPIHLE_H__
+#pragma once
#include "atahle.h"
#include "t10spc.h"
-class atapi_hle_device : public ata_hle_device,
- public virtual t10spc
+class atapi_hle_device : public ata_hle_device, public virtual t10spc
{
public:
- atapi_hle_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source);
-
enum atapi_features_flag_t
{
ATAPI_FEATURES_FLAG_DMA = 0x01,
@@ -50,6 +47,8 @@ public:
};
protected:
+ atapi_hle_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -72,7 +71,7 @@ private:
int m_packet;
int m_data_size;
- static const int ATAPI_BUFFER_LENGTH = 0xf800;
+ static constexpr int ATAPI_BUFFER_LENGTH = 0xf800;
};
-#endif
+#endif // MAME_MACHINE_ATAPIHLE_H
diff --git a/src/devices/machine/autoconfig.h b/src/devices/machine/autoconfig.h
index a5c4279153e..409f21b4eb9 100644
--- a/src/devices/machine/autoconfig.h
+++ b/src/devices/machine/autoconfig.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_AUTOCONFIG_H
+#define MAME_MACHINE_AUTOCONFIG_H
-#ifndef __AUTOCONFIG_H__
-#define __AUTOCONFIG_H__
+#pragma once
class amiga_autoconfig
@@ -70,4 +70,4 @@ private:
uint16_t m_cfg[0x40];
};
-#endif // __AUTOCONFIG_H__
+#endif // MAME_MACHINE_AUTOCONFIG_H
diff --git a/src/devices/machine/ay31015.cpp b/src/devices/machine/ay31015.cpp
index 74b61bef1cf..aba1e284156 100644
--- a/src/devices/machine/ay31015.cpp
+++ b/src/devices/machine/ay31015.cpp
@@ -94,11 +94,11 @@ Start bit (low), Bit 0, Bit 1... highest bit, Parity bit (if enabled), 1-2 stop
-const device_type AY31015 = device_creator<ay31015_device>;
-const device_type AY51013 = device_creator<ay51013_device>;
+DEFINE_DEVICE_TYPE(AY31015, ay31015_device, "ay31015", "AY-3-1015")
+DEFINE_DEVICE_TYPE(AY51013, ay51013_device, "ay51013", "AY-5-1013")
-ay31015_device::ay31015_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ay31015_device::ay31015_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
m_control_reg(0),
m_status_reg(0),
m_second_stop_bit(0),
@@ -126,12 +126,12 @@ ay31015_device::ay31015_device(const machine_config &mconfig, device_type type,
}
ay31015_device::ay31015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay31015_device(mconfig, AY31015, "AY-3-1015", tag, owner, clock, "ay31015", __FILE__)
+ : ay31015_device(mconfig, AY31015, tag, owner, clock)
{
}
ay51013_device::ay51013_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay31015_device(mconfig, AY51013, "AY-5-1013", tag, owner, clock, "ay51013", __FILE__)
+ : ay31015_device(mconfig, AY51013, tag, owner, clock)
{
}
diff --git a/src/devices/machine/ay31015.h b/src/devices/machine/ay31015.h
index a58e4379208..d7211e9a1f0 100644
--- a/src/devices/machine/ay31015.h
+++ b/src/devices/machine/ay31015.h
@@ -6,8 +6,10 @@
*/
-#ifndef __AY31015_H_
-#define __AY31015_H_
+#ifndef MAME_MACHINE_AY31015_H
+#define MAME_MACHINE_AY31015_H
+
+#pragma once
/***************************************************************************
TYPE DEFINITIONS
@@ -45,31 +47,27 @@ enum ay31015_output_pin_t
DEVICE INTERFACE
***************************************************************************/
-enum state_t
-{
- IDLE,
- START_BIT,
- PROCESSING,
- PARITY_BIT,
- FIRST_STOP_BIT,
- SECOND_STOP_BIT,
- PREP_TIME
-};
-
-ALLOW_SAVE_TYPE(state_t);
-
class ay31015_device : public device_t
{
public:
+ enum state_t
+ {
+ IDLE,
+ START_BIT,
+ PROCESSING,
+ PARITY_BIT,
+ FIRST_STOP_BIT,
+ SECOND_STOP_BIT,
+ PREP_TIME
+ };
+
ay31015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ay31015_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- ~ay31015_device() {}
static void set_tx_clock(device_t &device, double tx_clock) { downcast<ay31015_device &>(device).m_tx_clock = tx_clock; }
static void set_rx_clock(device_t &device, double rx_clock) { downcast<ay31015_device &>(device).m_rx_clock = rx_clock; }
- template<class _Object> static devcb_base &set_read_si_callback(device_t &device, _Object object) { return downcast<ay31015_device &>(device).m_read_si_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_write_so_callback(device_t &device, _Object object) { return downcast<ay31015_device &>(device).m_write_so_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_status_changed_callback(device_t &device, _Object object) { return downcast<ay31015_device &>(device).m_status_changed_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_read_si_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_read_si_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_so_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_write_so_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_status_changed_callback(device_t &device, Object &&cb) { return downcast<ay31015_device &>(device).m_status_changed_cb.set_callback(std::forward<Object>(cb)); }
/* Set an input pin */
void set_input_pin( ay31015_input_pin_t pin, int data );
@@ -95,8 +93,10 @@ public:
void tx_process();
protected:
- static const device_timer_id TIMER_RX = 0;
- static const device_timer_id TIMER_TX = 1;
+ static constexpr device_timer_id TIMER_RX = 0;
+ static constexpr device_timer_id TIMER_TX = 1;
+
+ ay31015_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -154,8 +154,10 @@ protected:
};
-extern const device_type AY31015; // For AY-3-1014A, AY-3-1015(D) and HD6402 variants
-extern const device_type AY51013; // For AY-3-1014, AY-5-1013 and AY-6-1013 variants
+ALLOW_SAVE_TYPE(ay31015_device::state_t);
+
+DECLARE_DEVICE_TYPE(AY31015, ay31015_device) // For AY-3-1014A, AY-3-1015(D) and HD6402 variants
+DECLARE_DEVICE_TYPE(AY51013, ay51013_device) // For AY-3-1014, AY-5-1013 and AY-6-1013 variants
@@ -195,4 +197,4 @@ extern const device_type AY51013; // For AY-3-1014, AY-5-1013 and AY-6-1013 va
#define MCFG_AY51013_STATUS_CHANGED_CB(_devcb) \
devcb = &ay51013_device::set_status_changed_callback(*device, DEVCB_##_devcb);
-#endif
+#endif // MAME_MACHINE_AY31015_H
diff --git a/src/devices/machine/bankdev.cpp b/src/devices/machine/bankdev.cpp
index 8197f502c79..50000e8942f 100644
--- a/src/devices/machine/bankdev.cpp
+++ b/src/devices/machine/bankdev.cpp
@@ -4,10 +4,10 @@
#include "bankdev.h"
// device type definition
-const device_type ADDRESS_MAP_BANK = device_creator<address_map_bank_device>;
+DEFINE_DEVICE_TYPE(ADDRESS_MAP_BANK, address_map_bank_device, "address_map_bank", "Address Map Bank")
address_map_bank_device::address_map_bank_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : device_t(mconfig, ADDRESS_MAP_BANK, "Address Map Bank", tag, owner, clock, "address_map_bank", __FILE__),
+ : device_t(mconfig, ADDRESS_MAP_BANK, tag, owner, clock),
device_memory_interface(mconfig, *this),
m_endianness(ENDIANNESS_NATIVE),
m_databus_width(0),
diff --git a/src/devices/machine/bankdev.h b/src/devices/machine/bankdev.h
index ce692c8b319..5fb049fd3af 100644
--- a/src/devices/machine/bankdev.h
+++ b/src/devices/machine/bankdev.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#pragma once
+#ifndef MAME_DEVICES_MACHINE_BANKDEV_H
+#define MAME_DEVICES_MACHINE_BANKDEV_H
-#ifndef __BANKDEV_H__
-#define __BANKDEV_H__
+#pragma once
#define MCFG_ADDRESS_MAP_BANK_ENDIANNESS(_endianness) \
@@ -24,7 +24,7 @@ class address_map_bank_device :
{
public:
// construction/destruction
- address_map_bank_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock );
+ address_map_bank_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
static void set_endianness(device_t &device, endianness_t endianness) { downcast<address_map_bank_device &>(device).m_endianness = endianness; }
@@ -69,6 +69,6 @@ private:
// device type definition
-extern const device_type ADDRESS_MAP_BANK;
+DECLARE_DEVICE_TYPE(ADDRESS_MAP_BANK, address_map_bank_device)
-#endif
+#endif // MAME_DEVICES_MACHINE_BANKDEV_H
diff --git a/src/devices/machine/bcreader.cpp b/src/devices/machine/bcreader.cpp
index 55cca371322..a94c488583c 100644
--- a/src/devices/machine/bcreader.cpp
+++ b/src/devices/machine/bcreader.cpp
@@ -53,14 +53,14 @@
#include "bcreader.h"
// device type definition
-const device_type BARCODE_READER = device_creator<barcode_reader_device>;
+DEFINE_DEVICE_TYPE(BARCODE_READER, barcode_reader_device, "bcreader", "Barcode Reader")
//-------------------------------------------------
// barcode_reader_device - constructor
//-------------------------------------------------
barcode_reader_device::barcode_reader_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, BARCODE_READER, "Barcode Reader", tag, owner, clock, "bcreader", __FILE__)
+ : device_t(mconfig, BARCODE_READER, tag, owner, clock)
, m_byte_length(0)
, m_pixel_length(0)
, m_byte_count(0)
diff --git a/src/devices/machine/bcreader.h b/src/devices/machine/bcreader.h
index 3be7c2d6d9d..b687c19363b 100644
--- a/src/devices/machine/bcreader.h
+++ b/src/devices/machine/bcreader.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef __BCREADER_H_
-#define __BCREADER_H_
+#ifndef MAME_DEVICES_MACHINE_BCREADER_H
+#define MAME_DEVICES_MACHINE_BCREADER_H
#define MCFG_BARCODE_READER_ADD( _tag ) \
MCFG_DEVICE_ADD( _tag, BARCODE_READER, 0 )
@@ -51,10 +51,10 @@ protected:
// device type definition
-extern const device_type BARCODE_READER;
+DECLARE_DEVICE_TYPE(BARCODE_READER, barcode_reader_device)
// device type iterator
typedef device_type_iterator<barcode_reader_device> barcode_reader_device_iterator;
-#endif
+#endif // MAME_DEVICES_MACHINE_BCREADER_H
diff --git a/src/devices/machine/buffer.cpp b/src/devices/machine/buffer.cpp
index b5d0839af5e..b1a93df8fb7 100644
--- a/src/devices/machine/buffer.cpp
+++ b/src/devices/machine/buffer.cpp
@@ -3,11 +3,11 @@
#include "emu.h"
#include "buffer.h"
-const device_type INPUT_BUFFER = device_creator<input_buffer_device>;
+DEFINE_DEVICE_TYPE(INPUT_BUFFER, input_buffer_device, "input_buffer", "Input Buffer")
input_buffer_device::input_buffer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, INPUT_BUFFER, "Input Buffer", tag, owner, clock, "input_buffer", __FILE__),
- m_input_data(0xff)
+ : device_t(mconfig, INPUT_BUFFER, tag, owner, clock)
+ , m_input_data(0xff)
{
}
diff --git a/src/devices/machine/buffer.h b/src/devices/machine/buffer.h
index 812f9f89f78..7f5724ad48b 100644
--- a/src/devices/machine/buffer.h
+++ b/src/devices/machine/buffer.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef __BUFFER_H__
-#define __BUFFER_H__
+#ifndef MAME_DEVICES_MACHINE_BUFFER_H
+#define MAME_DEVICES_MACHINE_BUFFER_H
class input_buffer_device : public device_t
{
@@ -26,6 +26,6 @@ protected:
uint8_t m_input_data;
};
-extern const device_type INPUT_BUFFER;
+DECLARE_DEVICE_TYPE(INPUT_BUFFER, input_buffer_device)
-#endif
+#endif // MAME_DEVICES_MACHINE_BUFFER_H
diff --git a/src/devices/machine/cdp1852.cpp b/src/devices/machine/cdp1852.cpp
index 422d3ff5fe2..b6dbb80410e 100644
--- a/src/devices/machine/cdp1852.cpp
+++ b/src/devices/machine/cdp1852.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CDP1852 = device_creator<cdp1852_device>;
+DEFINE_DEVICE_TYPE(CDP1852, cdp1852_device, "cdp1852", "RCA CDP1852 I/O")
@@ -40,11 +40,12 @@ enum
//-------------------------------------------------
cdp1852_device::cdp1852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CDP1852, "CDP1852 I/O", tag, owner, clock, "cdp1852", __FILE__),
+ device_t(mconfig, CDP1852, tag, owner, clock),
m_read_mode(*this),
m_write_sr(*this),
m_read_data(*this),
- m_write_data(*this), m_new_data(0), m_data(0), m_next_data(0), m_sr(0), m_next_sr(0), m_scan_timer(nullptr)
+ m_write_data(*this),
+ m_new_data(0), m_data(0), m_next_data(0), m_sr(0), m_next_sr(0), m_scan_timer(nullptr)
{
}
diff --git a/src/devices/machine/cdp1852.h b/src/devices/machine/cdp1852.h
index 61ab5092001..d017aaa2482 100644
--- a/src/devices/machine/cdp1852.h
+++ b/src/devices/machine/cdp1852.h
@@ -21,10 +21,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_CDP1852_H
+#define MAME_MACHINE_CDP1852_H
-#ifndef __CDP1852__
-#define __CDP1852__
+#pragma once
@@ -53,16 +53,16 @@
// ======================> cdp1852_device
-class cdp1852_device : public device_t
+class cdp1852_device : public device_t
{
public:
// construction/destruction
cdp1852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_mode_rd_callback(device_t &device, _Object object) { return downcast<cdp1852_device &>(device).m_read_mode.set_callback(object); }
- template<class _Object> static devcb_base &set_sr_wr_callback(device_t &device, _Object object) { return downcast<cdp1852_device &>(device).m_write_sr.set_callback(object); }
- template<class _Object> static devcb_base &set_data_rd_callback(device_t &device, _Object object) { return downcast<cdp1852_device &>(device).m_read_data.set_callback(object); }
- template<class _Object> static devcb_base &set_data_wr_callback(device_t &device, _Object object) { return downcast<cdp1852_device &>(device).m_write_data.set_callback(object); }
+ template <class Object> static devcb_base &set_mode_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_read_mode.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sr_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_write_sr.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_read_data.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1852_device &>(device).m_write_data.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -94,8 +94,6 @@ private:
// device type definition
-extern const device_type CDP1852;
-
-
+DECLARE_DEVICE_TYPE(CDP1852, cdp1852_device)
-#endif
+#endif // MAME_MACHINE_CDP1852_H
diff --git a/src/devices/machine/cdp1871.cpp b/src/devices/machine/cdp1871.cpp
index 586597ce41b..600c1e6ee3c 100644
--- a/src/devices/machine/cdp1871.cpp
+++ b/src/devices/machine/cdp1871.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CDP1871 = device_creator<cdp1871_device>;
+DEFINE_DEVICE_TYPE(CDP1871, cdp1871_device, "cdp1871", "RCA CDP1871 Keyboard Encoder")
@@ -97,7 +97,7 @@ const uint8_t cdp1871_device::key_codes[4][11][8] =
//-------------------------------------------------
cdp1871_device::cdp1871_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CDP1871, "RCA CDP1871", tag, owner, clock, "cdp1871", __FILE__),
+ device_t(mconfig, CDP1871, tag, owner, clock),
m_read_d1(*this),
m_read_d2(*this),
m_read_d3(*this),
diff --git a/src/devices/machine/cdp1871.h b/src/devices/machine/cdp1871.h
index eb939aa92e9..b83ca6d3166 100644
--- a/src/devices/machine/cdp1871.h
+++ b/src/devices/machine/cdp1871.h
@@ -29,10 +29,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_CDP1871_H
+#define MAME_MACHINE_CDP1871_H
-#ifndef __CDP1871__
-#define __CDP1871__
+#pragma once
@@ -94,19 +94,19 @@ public:
// construction/destruction
cdp1871_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_d1_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d1.set_callback(object); }
- template<class _Object> static devcb_base &set_d2_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d2.set_callback(object); }
- template<class _Object> static devcb_base &set_d3_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d3.set_callback(object); }
- template<class _Object> static devcb_base &set_d4_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d4.set_callback(object); }
- template<class _Object> static devcb_base &set_d5_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d5.set_callback(object); }
- template<class _Object> static devcb_base &set_d6_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d6.set_callback(object); }
- template<class _Object> static devcb_base &set_d7_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d7.set_callback(object); }
- template<class _Object> static devcb_base &set_d8_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d8.set_callback(object); }
- template<class _Object> static devcb_base &set_d9_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d9.set_callback(object); }
- template<class _Object> static devcb_base &set_d10_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d10.set_callback(object); }
- template<class _Object> static devcb_base &set_d11_rd_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_read_d11.set_callback(object); }
- template<class _Object> static devcb_base &set_da_wr_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_write_da.set_callback(object); }
- template<class _Object> static devcb_base &set_rpt_wr_callback(device_t &device, _Object object) { return downcast<cdp1871_device &>(device).m_write_rpt.set_callback(object); }
+ template <class Object> static devcb_base &set_d1_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d2_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d3_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d4_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d5_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d5.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d6_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d6.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d7_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d7.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d8_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d8.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d9_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d9.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d10_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d10.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d11_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_read_d11.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_da_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_write_da.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rpt_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1871_device &>(device).m_write_rpt.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
@@ -164,8 +164,6 @@ private:
// device type definition
-extern const device_type CDP1871;
-
-
+DECLARE_DEVICE_TYPE(CDP1871, cdp1871_device)
-#endif
+#endif // MAME_MACHINE_CDP1871_H
diff --git a/src/devices/machine/cdp1879.cpp b/src/devices/machine/cdp1879.cpp
index c7a566848e8..c42a6120b4d 100644
--- a/src/devices/machine/cdp1879.cpp
+++ b/src/devices/machine/cdp1879.cpp
@@ -15,14 +15,14 @@
//**************************************************************************
// device type definition
-const device_type CDP1879 = device_creator<cdp1879_device>;
+DEFINE_DEVICE_TYPE(CDP1879, cdp1879_device, "cdp1879", "RCA CDP1879 RTC")
//-------------------------------------------------
// cdp1879_device - constructor
//-------------------------------------------------
cdp1879_device::cdp1879_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CDP1879, "RCA CDP1879", tag, owner, clock, "cdp1879", __FILE__),
+ : device_t(mconfig, CDP1879, tag, owner, clock),
device_rtc_interface(mconfig, *this),
m_irq_w(*this)
{
diff --git a/src/devices/machine/cdp1879.h b/src/devices/machine/cdp1879.h
index 1a5a68389b7..bd87a228b65 100644
--- a/src/devices/machine/cdp1879.h
+++ b/src/devices/machine/cdp1879.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_CDP1879_H
+#define MAME_MACHINE_CDP1879_H
-#ifndef __CDP1879_H__
-#define __CDP1879_H__
+#pragma once
#include "dirtc.h"
@@ -79,6 +79,6 @@ private:
};
// device type definition
-extern const device_type CDP1879;
+DECLARE_DEVICE_TYPE(CDP1879, cdp1879_device)
-#endif
+#endif // MAME_MACHINE_CDP1879_H
diff --git a/src/devices/machine/clock.cpp b/src/devices/machine/clock.cpp
index c1e291300db..927a0aecbf5 100644
--- a/src/devices/machine/clock.cpp
+++ b/src/devices/machine/clock.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "clock.h"
-const device_type CLOCK = device_creator<clock_device>;
+DEFINE_DEVICE_TYPE(CLOCK, clock_device, "clock", "Clock")
clock_device::clock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CLOCK, "Clock", tag, owner, clock, "clock", __FILE__),
+ : device_t(mconfig, CLOCK, tag, owner, clock),
m_signal(0),
m_timer(nullptr),
m_signal_handler(*this)
diff --git a/src/devices/machine/clock.h b/src/devices/machine/clock.h
index 0f11c6b1173..3d361cd0d75 100644
--- a/src/devices/machine/clock.h
+++ b/src/devices/machine/clock.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef __CLOCK_H__
-#define __CLOCK_H__
+#ifndef MAME_MACHINE_CLOCK_H
+#define MAME_MACHINE_CLOCK_H
#pragma once
@@ -17,7 +17,7 @@ class clock_device : public device_t
public:
clock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_signal_handler(device_t &device, _Object object) { return downcast<clock_device &>(device).m_signal_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_signal_handler(device_t &device, Object &&cb) { return downcast<clock_device &>(device).m_signal_handler.set_callback(std::forward<Object>(cb)); }
protected:
virtual void device_start() override;
@@ -34,6 +34,6 @@ private:
devcb_write_line m_signal_handler;
};
-extern const device_type CLOCK;
+DECLARE_DEVICE_TYPE(CLOCK, clock_device)
-#endif
+#endif // MAME_MACHINE_CLOCK_H
diff --git a/src/devices/machine/com8116.cpp b/src/devices/machine/com8116.cpp
index db1fa072f14..cbc10280125 100644
--- a/src/devices/machine/com8116.cpp
+++ b/src/devices/machine/com8116.cpp
@@ -9,13 +9,8 @@
#include "emu.h"
#include "com8116.h"
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
@@ -24,7 +19,7 @@
//**************************************************************************
// device type definition
-const device_type COM8116 = device_creator<com8116_device>;
+DEFINE_DEVICE_TYPE(COM8116, com8116_device, "com8116", "COM8116 Dual BRG")
// Parts with T after the number do not have an internal oscillator and require an external clock source
// The SMC/COM 5xxx parts are all dual 5v/12v parts, while the 8xxx parts are 5v only
@@ -89,7 +84,7 @@ const int com8116_device::divisors_16X_4_9152MHz_SY2661_2[] =
//-------------------------------------------------
com8116_device::com8116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, COM8116, "COM8116", tag, owner, clock, "com8116", __FILE__),
+ device_t(mconfig, COM8116, tag, owner, clock),
m_fx4_handler(*this),
m_fr_handler(*this),
m_ft_handler(*this)
@@ -171,7 +166,7 @@ void com8116_device::str_w(uint8_t data)
int fr_divider = data & 0x0f;
int fr_clock = clock() / m_fr_divisors[fr_divider];
- if (LOG) logerror("COM8116 '%s' Receiver Divisor Select %01x: %u (%u Hz)\n", tag(), data & 0x0f, m_fr_divisors[fr_divider], fr_clock);
+ LOG("COM8116 Receiver Divisor Select %01x: %u (%u Hz)\n", data & 0x0f, m_fr_divisors[fr_divider], fr_clock);
m_fr_timer->adjust(attotime::from_nsec(3500), 0, attotime::from_hz(fr_clock * 2));
}
@@ -191,7 +186,7 @@ void com8116_device::stt_w(uint8_t data)
int ft_divider = data & 0x0f;
int ft_clock = clock() / m_ft_divisors[ft_divider];
- if (LOG) logerror("COM8116 '%s' Transmitter Divisor Select %01x: %u (%u Hz)\n", tag(), data & 0x0f, m_ft_divisors[ft_divider], ft_clock);
+ LOG("COM8116 Transmitter Divisor Select %01x: %u (%u Hz)\n", data & 0x0f, m_ft_divisors[ft_divider], ft_clock);
m_ft_timer->adjust(attotime::from_nsec(3500), 0, attotime::from_hz(ft_clock * 2));
}
diff --git a/src/devices/machine/com8116.h b/src/devices/machine/com8116.h
index 4cd3feddb8f..7d06cc3426d 100644
--- a/src/devices/machine/com8116.h
+++ b/src/devices/machine/com8116.h
@@ -21,10 +21,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_COM8116_H
+#define MAME_MACHINE_COM8116_H
-#ifndef __COM8116__
-#define __COM8116__
+#pragma once
@@ -55,15 +55,16 @@ public:
// construction/destruction
com8116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_fx4_handler(device_t &device, _Object object) { return downcast<com8116_device &>(device).m_fx4_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_fr_handler(device_t &device, _Object object) { return downcast<com8116_device &>(device).m_fr_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ft_handler(device_t &device, _Object object) { return downcast<com8116_device &>(device).m_ft_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_fx4_handler(device_t &device, Object &&cb) { return downcast<com8116_device &>(device).m_fx4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_fr_handler(device_t &device, Object &&cb) { return downcast<com8116_device &>(device).m_fr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ft_handler(device_t &device, Object &&cb) { return downcast<com8116_device &>(device).m_ft_handler.set_callback(std::forward<Object>(cb)); }
void str_w(uint8_t data);
DECLARE_WRITE8_MEMBER( str_w );
void stt_w(uint8_t data);
DECLARE_WRITE8_MEMBER( stt_w );
+protected:
static const int divisors_16X_5_0688MHz[];
static const int divisors_16X_6_01835MHz[];
static const int divisors_16X_4_9152MHz[];
@@ -74,7 +75,6 @@ public:
static const int divisors_16X_4_9152MHz_SY2661_1[];
static const int divisors_16X_4_9152MHz_SY2661_2[];
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -107,6 +107,6 @@ private:
// device type definition
-extern const device_type COM8116;
+DECLARE_DEVICE_TYPE(COM8116, com8116_device)
-#endif
+#endif // MAME_MACHINE_COM8116_H
diff --git a/src/devices/machine/corvushd.cpp b/src/devices/machine/corvushd.cpp
index fa64568ce37..38ae9a45e82 100644
--- a/src/devices/machine/corvushd.cpp
+++ b/src/devices/machine/corvushd.cpp
@@ -65,15 +65,166 @@
//
#include "emu.h"
-#include "imagedev/harddriv.h"
#include "machine/corvushd.h"
-#include <ctype.h>
-const device_type CORVUS_HDC = device_creator<corvus_hdc_t>;
-
-corvus_hdc_t::corvus_hdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CORVUS_HDC, "Corvus Flat Cable HDC", tag, owner, clock, "corvus_hdc", __FILE__),
+//
+// Controller Commands
+//
+
+// Read/Write Commands
+
+#define READ_SECTOR_256 0x02
+#define WRITE_SECTOR_256 0x03
+#define READ_CHUNK_128 0x12
+#define READ_CHUNK_256 0x22
+#define READ_CHUNK_512 0x32
+#define WRITE_CHUNK_128 0x13
+#define WRITE_CHUNK_256 0x23
+#define WRITE_CHUNK_512 0x33
+
+// Semaphore Commands
+
+#define SEMAPHORE_LOCK_CODE 0x0b
+#define SEMAPHORE_LOCK_MOD 0x01
+#define SEMAPHORE_UNLOCK_CODE 0x0b
+#define SEMAPHORE_UNLOCK_MOD 0x11
+#define SEMAPHORE_INIT_CODE 0x1a
+#define SEMAPHORE_INIT_MOD 0x10
+#define SEMAPHORE_STATUS_CODE 0x1a
+#define SEMAPHORE_STATUS_MOD 0x41
+
+// Pipe Commands
+
+#define PIPE_READ_CODE 0x1a
+#define PIPE_READ_MOD 0x20
+#define PIPE_WRITE_CODE 0x1a
+#define PIPE_WRITE_MOD 0x21
+#define PIPE_CLOSE_CODE 0x1a
+#define PIPE_CLOSE_MOD 0x40
+#define PIPE_STATUS_CODE 0x1a
+#define PIPE_STATUS_MOD 0x41
+#define PIPE_OPEN_WRITE_CODE 0x1b
+#define PIPE_OPEN_WRITE_MOD 0x80
+#define PIPE_AREA_INIT_CODE 0x1b
+#define PIPE_AREA_INIT_MOD 0xa0
+#define PIPE_OPEN_READ_CODE 0x1b
+#define PIPE_OPEN_READ_MOD 0xc0
+
+// Active User Table Commands
+
+#define ADDACTIVE_CODE 0x34
+#define ADDACTIVE_MOD 0x03
+#define DELACTIVEUSR_REVBH_CODE 0x34
+#define DELACTIVEUSR_REVBH_MOD 0x00
+#define DELACTIVENUM_OMNI_CODE 0x34
+#define DELACTIVENUM_OMNI_MOD 0x00
+#define DELACTIVEUSR_OMNI_CODE 0x34
+#define DELACTIVEUSR_OMNI_MOD 0x31
+#define FINDACTIVE_CODE 0x34
+#define FINDACTIVE_MOD 0x05
+#define READTEMPBLOCK 0xc4
+#define WRITETEMPBLOCK 0xb4
+
+// Miscellaneous Commands
+
+#define BOOT 0x14
+#define READ_BOOT_BLOCK 0x44
+#define GET_DRIVE_PARAMETERS 0x10
+#define PARK_HEADS_REVH 0x11
+#define PARK_HEADS_OMNI 0x80
+#define ECHO 0xf4
+
+// Put drive in Prep Mode
+
+#define PREP_MODE_SELECT 0x11
+
+// Prep Mode Commands
+
+#define PREP_RESET_DRIVE 0x00
+#define PREP_FORMAT_DRIVE 0x01
+#define PREP_FILL_DRIVE_OMNI 0x81
+#define PREP_VERIFY 0x07
+#define PREP_READ_FIRMWARE 0x32
+#define PREP_WRITE_FIRMWARE 0x33
+
+//
+// Controller Status Codes
+//
+
+// Disk status codes
+
+#define STAT_SUCCESS 0x00
+
+#define STAT_HEADER_FAULT 0x00
+#define STAT_SEEK_TIMEOUT 0x01
+#define STAT_SEEK_FAULT 0x02
+#define STAT_SEEK_ERROR 0x03
+#define STAT_HEADER_CRC_ERROR 0x04
+#define STAT_REZERO_FAULT 0x05
+#define STAT_REZERO_TIMEOUT 0x06
+#define STAT_DRIVE_NOT_ONLINE 0x07
+#define STAT_WRITE_FAULT 0x08
+#define STAT_NOT_USED 0x09
+#define STAT_READ_DATA_FAULT 0x0a
+#define STAT_DATA_CRC_ERROR 0x0b
+#define STAT_SECTOR_LOCATE_ERR 0x0c
+#define STAT_WRITE_PROTECTED 0x0d
+#define STAT_ILL_SECTOR_ADDRESS 0x0e
+#define STAT_ILL_CMD_OP_CODE 0x0f
+#define STAT_DRIVE_NOT_ACK 0x10
+#define STAT_ACK_STUCK_ACTIVE 0x11
+#define STAT_TIMEOUT 0x12
+#define STAT_FAULT 0x13
+#define STAT_CRC 0x14
+#define STAT_SEEK 0x15
+#define STAT_VERIFICATION 0x16
+#define STAT_SPEED_ERROR 0x17
+#define STAT_ILL_ADDRESS 0x18
+#define STAT_RW_FAULT_ERROR 0x19
+#define STAT_SERVO_ERROR 0x1a
+#define STAT_GUARD_BAND 0x1b
+#define STAT_PLO_ERROR 0x1c
+#define STAT_RW_UNSAFE 0x1d
+
+// Disk status modifiers (added to status code)
+
+#define STAT_RECOVERABLE_ERR 0x20
+#define STAT_VERIFY_ERR 0x40
+#define STAT_FATAL_ERR 0x80
+
+// Semaphore status codes
+
+#define SEM_PRIOR_STATE_NOT_SET 0x00
+#define SEM_PRIOR_STATE_SET 0x80
+#define SEM_TABLE_FULL 0xfd
+#define SEM_DISK_ERROR 0xfe
+
+// Pipe Status codes
+
+#define PIPE_REQ_SUCCESSFUL 0x00
+#define PIPE_EMPTY_PIPE_READ 0x08
+#define PIPE_NOT_OPEN 0x09
+#define PIPE_WRITE_TO_FULL_PIPE 0x0a
+#define PIPE_OPEN_OPEN_PIPE 0x0b
+#define PIPE_PIPE_NOT_EXIST 0x0c
+#define PIPE_NO_ROOM_FOR_NEW 0x0d
+#define PIPE_ILLEGAL_COMMAND 0x0e
+#define PIPE_AREA_NOT_INIT 0x0f
+
+// Pipe State codes
+
+#define PIPE_OPEN_WRITE_EMPTY 0x01
+#define PIPE_OPEN_READ_EMPTY 0x02
+#define PIPE_NOT_OPEN_FULL 0x80
+#define PIPE_OPEN_WRITE_FULL 0x81
+#define PIPE_OPEN_READ_FULL 0x82
+
+
+DEFINE_DEVICE_TYPE(CORVUS_HDC, corvus_hdc_device, "corvus_hdc", "Corvus Flat Cable HDC")
+
+corvus_hdc_device::corvus_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, CORVUS_HDC, tag, owner, clock),
m_status(0),
m_prep_mode(false),
m_prep_drv(0),
@@ -120,7 +271,7 @@ corvus_hdc_t::corvus_hdc_t(const machine_config &mconfig, const char *tag, devic
// Returns:
// nada
//
-void corvus_hdc_t::dump_buffer(uint8_t *buffer, uint16_t length) {
+void corvus_hdc_device::dump_buffer(uint8_t *buffer, uint16_t length) {
uint16_t offset;
char ascii_dump[16];
@@ -160,7 +311,7 @@ void corvus_hdc_t::dump_buffer(uint8_t *buffer, uint16_t length) {
// Returns:
// Whether the command was invalid or not (true = invalid command)
//
-bool corvus_hdc_t::parse_hdc_command(uint8_t data) {
+bool corvus_hdc_device::parse_hdc_command(uint8_t data) {
m_awaiting_modifier = false; // This is the case by definition
LOG(("parse_hdc_command: Called with data: 0x%2.2x, Prep mode is: %d\n", data, m_prep_mode));
@@ -266,7 +417,7 @@ bool corvus_hdc_t::parse_hdc_command(uint8_t data) {
// Returns:
// status: Command status
//
-uint8_t corvus_hdc_t::corvus_write_sector(uint8_t drv, uint32_t sector, uint8_t *buffer, int len) {
+uint8_t corvus_hdc_device::corvus_write_sector(uint8_t drv, uint32_t sector, uint8_t *buffer, int len) {
hard_disk_file
*disk; // Structures for interface to CHD routines
uint8_t tbuffer[512]; // Buffer to hold an entire sector
@@ -324,7 +475,7 @@ uint8_t corvus_hdc_t::corvus_write_sector(uint8_t drv, uint32_t sector, uint8_t
// Returns:
// status: Corvus status
//
-uint8_t corvus_hdc_t::corvus_write_logical_sector(dadr_t *dadr, uint8_t *buffer, int len) {
+uint8_t corvus_hdc_device::corvus_write_logical_sector(dadr_t *dadr, uint8_t *buffer, int len) {
uint8_t status; // Status returned from Physical Sector read
uint8_t drv; // Corvus drive id (1..15)
uint32_t sector; // Sector number on drive
@@ -374,7 +525,7 @@ uint8_t corvus_hdc_t::corvus_write_logical_sector(dadr_t *dadr, uint8_t *buffer,
// Returns:
// status: Corvus status
//
-uint8_t corvus_hdc_t::corvus_read_sector(uint8_t drv, uint32_t sector, uint8_t *buffer, int len) {
+uint8_t corvus_hdc_device::corvus_read_sector(uint8_t drv, uint32_t sector, uint8_t *buffer, int len) {
hard_disk_file
*disk; // Structures for interface to CHD routines
uint8_t tbuffer[512]; // Buffer to store full sector results in
@@ -421,7 +572,7 @@ uint8_t corvus_hdc_t::corvus_read_sector(uint8_t drv, uint32_t sector, uint8_t *
// Returns:
// status: Corvus status
//
-uint8_t corvus_hdc_t::corvus_read_logical_sector(dadr_t *dadr, uint8_t *buffer, int len) {
+uint8_t corvus_hdc_device::corvus_read_logical_sector(dadr_t *dadr, uint8_t *buffer, int len) {
uint8_t status; // Status returned from Physical Sector read
uint8_t drv; // Corvus drive id (1..15)
uint32_t sector; // Sector number on drive
@@ -472,7 +623,7 @@ uint8_t corvus_hdc_t::corvus_read_logical_sector(dadr_t *dadr, uint8_t *buffer,
// Side-effects:
// Fills in the semaphore result code
//
-uint8_t corvus_hdc_t::corvus_lock_semaphore(uint8_t *name) {
+uint8_t corvus_hdc_device::corvus_lock_semaphore(uint8_t *name) {
semaphore_table_block_t
semaphore_table;
uint8_t offset = 0;
@@ -547,7 +698,7 @@ uint8_t corvus_hdc_t::corvus_lock_semaphore(uint8_t *name) {
// Side-effects:
// Fills in the semaphore result code
//
-uint8_t corvus_hdc_t::corvus_unlock_semaphore(uint8_t *name) {
+uint8_t corvus_hdc_device::corvus_unlock_semaphore(uint8_t *name) {
semaphore_table_block_t
semaphore_table;
uint8_t offset = 0;
@@ -612,7 +763,7 @@ uint8_t corvus_hdc_t::corvus_unlock_semaphore(uint8_t *name) {
// Disk status
//
//
-uint8_t corvus_hdc_t::corvus_init_semaphore_table() {
+uint8_t corvus_hdc_device::corvus_init_semaphore_table() {
semaphore_table_block_t
semaphore_table;
uint8_t status;
@@ -641,7 +792,7 @@ uint8_t corvus_hdc_t::corvus_init_semaphore_table() {
// Returns:
// Status of command
//
-uint8_t corvus_hdc_t::corvus_get_drive_parameters(uint8_t drv) {
+uint8_t corvus_hdc_device::corvus_get_drive_parameters(uint8_t drv) {
uint16_t capacity; // Number of usable 512-byte blocks
uint16_t raw_capacity; // Number of actual 512-byte blocks
union {
@@ -755,7 +906,7 @@ uint8_t corvus_hdc_t::corvus_get_drive_parameters(uint8_t drv) {
// Returns:
// status: Status of read operation
//
-uint8_t corvus_hdc_t::corvus_read_boot_block(uint8_t block) {
+uint8_t corvus_hdc_device::corvus_read_boot_block(uint8_t block) {
LOG(("corvus_read_boot_block: Reading boot block: %d\n", block));
return corvus_read_sector(1, 25 + block, m_buffer.read_512_response.data, 512);
@@ -792,7 +943,7 @@ uint8_t corvus_hdc_t::corvus_read_boot_block(uint8_t block) {
// Returns:
// Status of command
//
-uint8_t corvus_hdc_t::corvus_enter_prep_mode(uint8_t drv, uint8_t *prep_block) {
+uint8_t corvus_hdc_device::corvus_enter_prep_mode(uint8_t drv, uint8_t *prep_block) {
// on rev b/h drives, sending the "put drive into prep mode"
// command when already in prep mode is an error.
if (m_prep_mode) {
@@ -824,7 +975,7 @@ uint8_t corvus_hdc_t::corvus_enter_prep_mode(uint8_t drv, uint8_t *prep_block) {
// Returns:
// Status of command (always success)
//
-uint8_t corvus_hdc_t::corvus_exit_prep_mode() {
+uint8_t corvus_hdc_device::corvus_exit_prep_mode() {
LOG(("corvus_exit_prep_mode: Prep mode exited\n"));
m_prep_mode = false;
m_prep_drv = 0;
@@ -845,7 +996,7 @@ uint8_t corvus_hdc_t::corvus_exit_prep_mode() {
// Returns:
// Status of command
//
-uint8_t corvus_hdc_t::corvus_read_firmware_block(uint8_t head, uint8_t sector) {
+uint8_t corvus_hdc_device::corvus_read_firmware_block(uint8_t head, uint8_t sector) {
uint16_t relative_sector; // Relative sector on drive for Physical Read
uint8_t status;
@@ -873,7 +1024,7 @@ uint8_t corvus_hdc_t::corvus_read_firmware_block(uint8_t head, uint8_t sector) {
// Returns:
// Status of command
//
-uint8_t corvus_hdc_t::corvus_write_firmware_block(uint8_t head, uint8_t sector, uint8_t *buffer) {
+uint8_t corvus_hdc_device::corvus_write_firmware_block(uint8_t head, uint8_t sector, uint8_t *buffer) {
uint16_t relative_sector; // Relative sector on drive for Physical Write
uint8_t status;
@@ -899,7 +1050,7 @@ uint8_t corvus_hdc_t::corvus_write_firmware_block(uint8_t head, uint8_t sector,
// Returns:
// Status of command
//
-uint8_t corvus_hdc_t::corvus_format_drive(uint8_t *pattern, uint16_t len) {
+uint8_t corvus_hdc_device::corvus_format_drive(uint8_t *pattern, uint16_t len) {
uint32_t sector;
uint32_t max_sector;
uint8_t status = 0;
@@ -946,7 +1097,7 @@ uint8_t corvus_hdc_t::corvus_format_drive(uint8_t *pattern, uint16_t len) {
// Returns:
// hard_disk_file object
//
-hard_disk_file *corvus_hdc_t::corvus_hdc_file(int drv) {
+hard_disk_file *corvus_hdc_device::corvus_hdc_file(int drv) {
static const char *const tags[] = {
"harddisk1", "harddisk2", "harddisk3", "harddisk4"
};
@@ -991,7 +1142,7 @@ hard_disk_file *corvus_hdc_t::corvus_hdc_file(int drv) {
// Returns:
// Nothing
//
-void corvus_hdc_t::corvus_process_command_packet(bool invalid_command_flag) {
+void corvus_hdc_device::corvus_process_command_packet(bool invalid_command_flag) {
if (VERBOSE_RESPONSES)
{
LOG(("corvus_hdc_data_w: Complete packet received. Dump follows:\n"));
@@ -1166,7 +1317,7 @@ void corvus_hdc_t::corvus_process_command_packet(bool invalid_command_flag) {
// Returns:
// Nothing
//
-void corvus_hdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void corvus_hdc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
int function = param;
@@ -1224,7 +1375,7 @@ void corvus_hdc_t::device_timer(emu_timer &timer, device_timer_id id, int param,
// Returns:
// nullptr if there's no file to attach to
//
-void corvus_hdc_t::device_start() {
+void corvus_hdc_device::device_start() {
m_status &= ~(CONTROLLER_DIRECTION | CONTROLLER_BUSY); // Host-to-controller mode, Idle (awaiting command from Host mode)
m_prep_mode = false; // We're not in Prep Mode
m_offset = 0; // Buffer is empty
@@ -1351,7 +1502,7 @@ void corvus_hdc_t::device_start() {
// Returns:
// Value in the controller status register
//
-READ8_MEMBER ( corvus_hdc_t::status_r ) {
+READ8_MEMBER ( corvus_hdc_device::status_r ) {
return m_status;
}
@@ -1370,7 +1521,7 @@ READ8_MEMBER ( corvus_hdc_t::status_r ) {
// Returns:
// Value in the controller data register
//
-READ8_MEMBER ( corvus_hdc_t::read ) {
+READ8_MEMBER ( corvus_hdc_device::read ) {
uint8_t result;
if((m_status & CONTROLLER_DIRECTION) == 0) { // Check to see if we're in Controller-to-Host mode
@@ -1418,7 +1569,7 @@ READ8_MEMBER ( corvus_hdc_t::read ) {
// Returns:
// Nothing
//
-WRITE8_MEMBER ( corvus_hdc_t::write ) {
+WRITE8_MEMBER ( corvus_hdc_device::write ) {
//
// Received a byte -- check to see if we should really respond
//
diff --git a/src/devices/machine/corvushd.h b/src/devices/machine/corvushd.h
index 129cbfcf3e9..22a8c4a1f10 100644
--- a/src/devices/machine/corvushd.h
+++ b/src/devices/machine/corvushd.h
@@ -12,176 +12,23 @@
*
****************************************************************************/
-#ifndef CORVUSHD_H_
-#define CORVUSHD_H_
+#ifndef MAME_MACHINE_CORVUSHD_H
+#define MAME_MACHINE_CORVUSHD_H
+
+#pragma once
#include "imagedev/harddriv.h"
#include <ctype.h>
-//
-// Controller Commands
-//
-
-// Read/Write Commands
-
-#define READ_SECTOR_256 0x02
-#define WRITE_SECTOR_256 0x03
-#define READ_CHUNK_128 0x12
-#define READ_CHUNK_256 0x22
-#define READ_CHUNK_512 0x32
-#define WRITE_CHUNK_128 0x13
-#define WRITE_CHUNK_256 0x23
-#define WRITE_CHUNK_512 0x33
-
-// Semaphore Commands
-
-#define SEMAPHORE_LOCK_CODE 0x0b
-#define SEMAPHORE_LOCK_MOD 0x01
-#define SEMAPHORE_UNLOCK_CODE 0x0b
-#define SEMAPHORE_UNLOCK_MOD 0x11
-#define SEMAPHORE_INIT_CODE 0x1a
-#define SEMAPHORE_INIT_MOD 0x10
-#define SEMAPHORE_STATUS_CODE 0x1a
-#define SEMAPHORE_STATUS_MOD 0x41
-
-// Pipe Commands
-
-#define PIPE_READ_CODE 0x1a
-#define PIPE_READ_MOD 0x20
-#define PIPE_WRITE_CODE 0x1a
-#define PIPE_WRITE_MOD 0x21
-#define PIPE_CLOSE_CODE 0x1a
-#define PIPE_CLOSE_MOD 0x40
-#define PIPE_STATUS_CODE 0x1a
-#define PIPE_STATUS_MOD 0x41
-#define PIPE_OPEN_WRITE_CODE 0x1b
-#define PIPE_OPEN_WRITE_MOD 0x80
-#define PIPE_AREA_INIT_CODE 0x1b
-#define PIPE_AREA_INIT_MOD 0xa0
-#define PIPE_OPEN_READ_CODE 0x1b
-#define PIPE_OPEN_READ_MOD 0xc0
-
-// Active User Table Commands
-
-#define ADDACTIVE_CODE 0x34
-#define ADDACTIVE_MOD 0x03
-#define DELACTIVEUSR_REVBH_CODE 0x34
-#define DELACTIVEUSR_REVBH_MOD 0x00
-#define DELACTIVENUM_OMNI_CODE 0x34
-#define DELACTIVENUM_OMNI_MOD 0x00
-#define DELACTIVEUSR_OMNI_CODE 0x34
-#define DELACTIVEUSR_OMNI_MOD 0x31
-#define FINDACTIVE_CODE 0x34
-#define FINDACTIVE_MOD 0x05
-#define READTEMPBLOCK 0xc4
-#define WRITETEMPBLOCK 0xb4
-
-// Miscellaneous Commands
-
-#define BOOT 0x14
-#define READ_BOOT_BLOCK 0x44
-#define GET_DRIVE_PARAMETERS 0x10
-#define PARK_HEADS_REVH 0x11
-#define PARK_HEADS_OMNI 0x80
-#define ECHO 0xf4
-
-// Put drive in Prep Mode
-
-#define PREP_MODE_SELECT 0x11
-
-// Prep Mode Commands
-
-#define PREP_RESET_DRIVE 0x00
-#define PREP_FORMAT_DRIVE 0x01
-#define PREP_FILL_DRIVE_OMNI 0x81
-#define PREP_VERIFY 0x07
-#define PREP_READ_FIRMWARE 0x32
-#define PREP_WRITE_FIRMWARE 0x33
-
-//
-// Controller Status Codes
-//
-
-// Disk status codes
-
-#define STAT_SUCCESS 0x00
-
-#define STAT_HEADER_FAULT 0x00
-#define STAT_SEEK_TIMEOUT 0x01
-#define STAT_SEEK_FAULT 0x02
-#define STAT_SEEK_ERROR 0x03
-#define STAT_HEADER_CRC_ERROR 0x04
-#define STAT_REZERO_FAULT 0x05
-#define STAT_REZERO_TIMEOUT 0x06
-#define STAT_DRIVE_NOT_ONLINE 0x07
-#define STAT_WRITE_FAULT 0x08
-#define STAT_NOT_USED 0x09
-#define STAT_READ_DATA_FAULT 0x0a
-#define STAT_DATA_CRC_ERROR 0x0b
-#define STAT_SECTOR_LOCATE_ERR 0x0c
-#define STAT_WRITE_PROTECTED 0x0d
-#define STAT_ILL_SECTOR_ADDRESS 0x0e
-#define STAT_ILL_CMD_OP_CODE 0x0f
-#define STAT_DRIVE_NOT_ACK 0x10
-#define STAT_ACK_STUCK_ACTIVE 0x11
-#define STAT_TIMEOUT 0x12
-#define STAT_FAULT 0x13
-#define STAT_CRC 0x14
-#define STAT_SEEK 0x15
-#define STAT_VERIFICATION 0x16
-#define STAT_SPEED_ERROR 0x17
-#define STAT_ILL_ADDRESS 0x18
-#define STAT_RW_FAULT_ERROR 0x19
-#define STAT_SERVO_ERROR 0x1a
-#define STAT_GUARD_BAND 0x1b
-#define STAT_PLO_ERROR 0x1c
-#define STAT_RW_UNSAFE 0x1d
-
-// Disk status modifiers (added to status code)
-
-#define STAT_RECOVERABLE_ERR 0x20
-#define STAT_VERIFY_ERR 0x40
-#define STAT_FATAL_ERR 0x80
-
-// Semaphore status codes
-
-#define SEM_PRIOR_STATE_NOT_SET 0x00
-#define SEM_PRIOR_STATE_SET 0x80
-#define SEM_TABLE_FULL 0xfd
-#define SEM_DISK_ERROR 0xfe
-
-// Pipe Status codes
-
-#define PIPE_REQ_SUCCESSFUL 0x00
-#define PIPE_EMPTY_PIPE_READ 0x08
-#define PIPE_NOT_OPEN 0x09
-#define PIPE_WRITE_TO_FULL_PIPE 0x0a
-#define PIPE_OPEN_OPEN_PIPE 0x0b
-#define PIPE_PIPE_NOT_EXIST 0x0c
-#define PIPE_NO_ROOM_FOR_NEW 0x0d
-#define PIPE_ILLEGAL_COMMAND 0x0e
-#define PIPE_AREA_NOT_INIT 0x0f
-
-// Pipe State codes
-
-#define PIPE_OPEN_WRITE_EMPTY 0x01
-#define PIPE_OPEN_READ_EMPTY 0x02
-#define PIPE_NOT_OPEN_FULL 0x80
-#define PIPE_OPEN_WRITE_FULL 0x81
-#define PIPE_OPEN_READ_FULL 0x82
-
-// Status Register Bits
-
-#define CONTROLLER_BUSY 0x80 // Set = Busy, Clear = Ready
-#define CONTROLLER_DIRECTION 0x40 // Set = Controller->Host, Clear = Host->Controller
-
-#define MAX_COMMAND_SIZE 4096 // The maximum size of a command packet (the controller only has 5K of RAM...)
-
-class corvus_hdc_t : public device_t
+class corvus_hdc_device : public device_t
{
public:
+ // Status Register Bits
+ static constexpr uint8_t CONTROLLER_BUSY = 0x80; // Set = Busy, Clear = Ready
+ static constexpr uint8_t CONTROLLER_DIRECTION = 0x40; // Set = Controller->Host, Clear = Host->Controller
+
// construction/destruction
- corvus_hdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ corvus_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -193,6 +40,8 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ static constexpr unsigned MAX_COMMAND_SIZE = 4096; // The maximum size of a command packet (the controller only has 5K of RAM...)
+
enum
{
TIMER_TIMEOUT,
@@ -526,4 +375,4 @@ private:
// device type definition
extern const device_type CORVUS_HDC;
-#endif /* CORVUSHD_H_ */
+#endif // MAME_MACHINE_CORVUSHD_H
diff --git a/src/devices/machine/cr511b.cpp b/src/devices/machine/cr511b.cpp
index 11b084a3b7b..ef5b39b13b4 100644
--- a/src/devices/machine/cr511b.cpp
+++ b/src/devices/machine/cr511b.cpp
@@ -17,7 +17,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CR511B = device_creator<cr511b_device>;
+DEFINE_DEVICE_TYPE(CR511B, cr511b_device, "cr511b", "CR-511-B CD-ROM drive")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -47,7 +47,7 @@ machine_config_constructor cr511b_device::device_mconfig_additions() const
//-------------------------------------------------
cr511b_device::cr511b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CR511B, "CR-511-B CD-ROM drive", tag, owner, clock, "cr511b", __FILE__),
+ device_t(mconfig, CR511B, tag, owner, clock),
m_cdrom(*this, "cdrom"),
m_cdda(*this, "cdda"),
m_stch_handler(*this),
diff --git a/src/devices/machine/cr511b.h b/src/devices/machine/cr511b.h
index 90119d70b82..546dcf51266 100644
--- a/src/devices/machine/cr511b.h
+++ b/src/devices/machine/cr511b.h
@@ -30,10 +30,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_CR511B_H
+#define MAME_MACHINE_CR511B_H
-#ifndef __CR511B_H__
-#define __CR511B_H__
+#pragma once
#include "imagedev/chd_cd.h"
#include "sound/cdda.h"
@@ -77,23 +77,23 @@ public:
cr511b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template<class _Object> static devcb_base &set_stch_handler(device_t &device, _Object object)
- { return downcast<cr511b_device &>(device).m_stch_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_stch_handler(device_t &device, Object &&cb)
+ { return downcast<cr511b_device &>(device).m_stch_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_sten_handler(device_t &device, _Object object)
- { return downcast<cr511b_device &>(device).m_sten_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_sten_handler(device_t &device, Object &&cb)
+ { return downcast<cr511b_device &>(device).m_sten_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_drq_handler(device_t &device, _Object object)
- { return downcast<cr511b_device &>(device).m_drq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb)
+ { return downcast<cr511b_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_dten_handler(device_t &device, _Object object)
- { return downcast<cr511b_device &>(device).m_dten_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_dten_handler(device_t &device, Object &&cb)
+ { return downcast<cr511b_device &>(device).m_dten_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_scor_handler(device_t &device, _Object object)
- { return downcast<cr511b_device &>(device).m_scor_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_scor_handler(device_t &device, Object &&cb)
+ { return downcast<cr511b_device &>(device).m_scor_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_xaen_handler(device_t &device, _Object object)
- { return downcast<cr511b_device &>(device).m_xaen_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_xaen_handler(device_t &device, Object &&cb)
+ { return downcast<cr511b_device &>(device).m_xaen_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER ( write );
@@ -144,6 +144,6 @@ private:
};
// device type definition
-extern const device_type CR511B;
+DECLARE_DEVICE_TYPE(CR511B, cr511b_device)
-#endif
+#endif // MAME_MACHINE_CR511B_H
diff --git a/src/devices/machine/cr589.cpp b/src/devices/machine/cr589.cpp
index 99f90c257ce..6142f75ee7a 100644
--- a/src/devices/machine/cr589.cpp
+++ b/src/devices/machine/cr589.cpp
@@ -4,8 +4,8 @@
#include "cr589.h"
-static const int identity_offset = 0x3ab;
-static const char download_identity[] = "MATSHITA CD98Q4 DOWNLOADGS0N";
+static constexpr int identity_offset = 0x3ab;
+static constexpr char download_identity[] = "MATSHITA CD98Q4 DOWNLOADGS0N";
//-------------------------------------------------
// nvram_default - called to initialize NVRAM to
@@ -138,10 +138,10 @@ void matsushita_cr589_device::WriteData( uint8_t *data, int dataLength )
}
// device type definition
-const device_type CR589 = device_creator<matsushita_cr589_device>;
+DEFINE_DEVICE_TYPE(CR589, matsushita_cr589_device, "cr589", "Matsushita CR589 CD-ROM Drive")
matsushita_cr589_device::matsushita_cr589_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- atapi_cdrom_device(mconfig, CR589, "Matsushita CR589 CD-ROM Drive", tag, owner, clock, "cr589", __FILE__),
+ atapi_cdrom_device(mconfig, CR589, tag, owner, clock),
device_nvram_interface(mconfig, *this)
{
}
diff --git a/src/devices/machine/cr589.h b/src/devices/machine/cr589.h
index b35537b305b..8d94d5739b9 100644
--- a/src/devices/machine/cr589.h
+++ b/src/devices/machine/cr589.h
@@ -8,13 +8,12 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_CR589_H
+#define MAME_MACHINE_CR589_H
-#ifndef __CR589_H__
-#define __CR589_H__
+#pragma once
#include "atapicdr.h"
-#include "t10mmc.h"
class matsushita_cr589_device : public atapi_cdrom_device,
public device_nvram_interface
@@ -45,6 +44,6 @@ private:
};
// device type definition
-extern const device_type CR589;
+DECLARE_DEVICE_TYPE(CR589, matsushita_cr589_device)
-#endif
+#endif // MAME_MACHINE_CR589_H
diff --git a/src/devices/machine/cs4031.cpp b/src/devices/machine/cs4031.cpp
index 40cbb94ddbb..84b331c05bd 100644
--- a/src/devices/machine/cs4031.cpp
+++ b/src/devices/machine/cs4031.cpp
@@ -26,27 +26,32 @@
***************************************************************************/
#include "emu.h"
-#include "machine/ram.h"
#include "machine/cs4031.h"
+#include "machine/ram.h"
-//**************************************************************************
-// MACROS/CONSTANTS
-//**************************************************************************
+#define LOG_GENERAL (1U << 0)
+#define LOG_REGISTER (1U << 1)
+#define LOG_MEMORY (1U << 2)
+#define LOG_IO (1U << 3)
+#define LOG_KEYBOARD (1U << 4)
+
+#define VERBOSE (LOG_REGISTER | LOG_MEMORY | LOG_IO /*| LOG_KEYBOARD*/)
+#include "logmacro.h"
-#define LOG_REGISTER 1
-#define LOG_MEMORY 1
-#define LOG_IO 1
-#define LOG_KEYBOARD 0
+#define LOGREGISTER(...) LOGMASKED(LOG_REGISTER, __VA_ARGS__)
+#define LOGMEMORY(...) LOGMASKED(LOG_MEMORY, __VA_ARGS__)
+#define LOGIO(...) LOGMASKED(LOG_IO, __VA_ARGS__)
+#define LOGKEYBOARD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__)
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CS4031 = device_creator<cs4031_device>;
+DEFINE_DEVICE_TYPE(CS4031, cs4031_device, "cs4031", "CS4031")
-const char* cs4031_device::m_register_names[] =
+const char* const cs4031_device::m_register_names[] =
{
/* 00 */ "RESERVED",
/* 01 */ "DMA WAIT STATE CONTROL",
@@ -155,7 +160,7 @@ machine_config_constructor cs4031_device::device_mconfig_additions() const
//-------------------------------------------------
cs4031_device::cs4031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CS4031, "CS4031", tag, owner, clock, "cs4031", __FILE__),
+ device_t(mconfig, CS4031, tag, owner, clock),
m_read_ior(*this),
m_write_iow(*this),
m_write_tc(*this),
@@ -458,8 +463,7 @@ WRITE_LINE_MEMBER( cs4031_device::rtc_irq_w )
WRITE_LINE_MEMBER( cs4031_device::iochck_w )
{
- if (LOG_IO)
- logerror("cs4031_device::iochck_w: %u\n", state);
+ LOGIO("cs4031_device::iochck_w: %u\n", state);
if (BIT(m_portb, 3) == 0)
{
@@ -508,8 +512,7 @@ READ8_MEMBER( cs4031_device::config_data_r )
if (m_address_valid)
{
- if (LOG_REGISTER)
- logerror("cs4031_device: read %s = %02x\n", m_register_names[m_address], m_registers[m_address]);
+ LOGREGISTER("cs4031_device: read %s = %02x\n", m_register_names[m_address], m_registers[m_address]);
result = m_registers[m_address];
}
@@ -524,8 +527,7 @@ WRITE8_MEMBER( cs4031_device::config_data_w )
{
if (m_address_valid)
{
- if (LOG_REGISTER)
- logerror("cs4031_device: write %s = %02x\n", m_register_names[m_address], data);
+ LOGREGISTER("cs4031_device: write %s = %02x\n", m_register_names[m_address], data);
// update register with new data
m_registers[m_address] = data;
@@ -589,32 +591,28 @@ void cs4031_device::update_read_region(int index, const char *region, offs_t sta
{
if (!BIT(m_registers[SHADOW_READ], index) && BIT(m_registers[ROMCS], index))
{
- if (LOG_MEMORY)
- logerror("ROM read from %x to %x\n", start, end);
+ LOGMEMORY("ROM read from %x to %x\n", start, end);
m_space->install_read_bank(start, end, region);
machine().root_device().membank(region)->set_base(m_bios + start);
}
else if (!BIT(m_registers[SHADOW_READ], index) && !BIT(m_registers[ROMCS], index))
{
- if (LOG_MEMORY)
- logerror("ISA read from %x to %x\n", start, end);
+ LOGMEMORY("ISA read from %x to %x\n", start, end);
m_space->install_read_bank(start, end, region);
machine().root_device().membank(region)->set_base(m_isa + start - 0xc0000);
}
else if (BIT(m_registers[SHADOW_READ], index))
{
- if (LOG_MEMORY)
- logerror("RAM read from %x to %x\n", start, end);
+ LOGMEMORY("RAM read from %x to %x\n", start, end);
m_space->install_read_bank(start, end, region);
machine().root_device().membank(region)->set_base(m_ram + start);
}
else
{
- if (LOG_MEMORY)
- logerror("NOP read from %x to %x\n", start, end);
+ LOGMEMORY("NOP read from %x to %x\n", start, end);
m_space->nop_read(start, end);
}
@@ -624,32 +622,28 @@ void cs4031_device::update_write_region(int index, const char *region, offs_t st
{
if (!BIT(m_registers[SHADOW_WRITE], index) && BIT(m_registers[ROMCS], index) && BIT(m_registers[ROMCS], 7))
{
- if (LOG_MEMORY)
- logerror("ROM write from %x to %x\n", start, end);
+ LOGMEMORY("ROM write from %x to %x\n", start, end);
m_space->install_write_bank(start, end, region);
machine().root_device().membank(region)->set_base(m_bios + start);
}
else if (!BIT(m_registers[SHADOW_WRITE], index) && !BIT(m_registers[ROMCS], index))
{
- if (LOG_MEMORY)
- logerror("ISA write from %x to %x\n", start, end);
+ LOGMEMORY("ISA write from %x to %x\n", start, end);
m_space->install_write_bank(start, end, region);
machine().root_device().membank(region)->set_base(m_isa + start - 0xc0000);
}
else if (BIT(m_registers[SHADOW_WRITE], index))
{
- if (LOG_MEMORY)
- logerror("RAM write from %x to %x\n", start, end);
+ LOGMEMORY("RAM write from %x to %x\n", start, end);
m_space->install_write_bank(start, end, region);
machine().root_device().membank(region)->set_base(m_ram + start);
}
else
{
- if (LOG_MEMORY)
- logerror("NOP write from %x to %x\n", start, end);
+ LOGMEMORY("NOP write from %x to %x\n", start, end);
m_space->nop_write(start, end);
}
@@ -724,8 +718,7 @@ void cs4031_device::keyboard_gatea20(int state)
READ8_MEMBER( cs4031_device::keyb_status_r )
{
- if (LOG_KEYBOARD)
- logerror("cs4031_device::keyb_status_r\n");
+ LOGKEYBOARD("cs4031_device::keyb_status_r\n");
return m_keybc->status_r(space, 0);
}
@@ -739,8 +732,7 @@ WRITE8_MEMBER( cs4031_device::keyb_command_blocked_w )
WRITE8_MEMBER( cs4031_device::keyb_command_w )
{
- if (LOG_KEYBOARD)
- logerror("cs4031_device::keyb_command_w: %02x\n", data);
+ LOGKEYBOARD("cs4031_device::keyb_command_w: %02x\n", data);
m_keybc_d1_written = false;
@@ -811,16 +803,14 @@ WRITE8_MEMBER( cs4031_device::keyb_command_w )
READ8_MEMBER( cs4031_device::keyb_data_r )
{
- if (LOG_KEYBOARD)
- logerror("cs4031_device::keyb_data_r\n");
+ LOGKEYBOARD("cs4031_device::keyb_data_r\n");
return m_keybc->data_r(space, 0);
}
WRITE8_MEMBER( cs4031_device::keyb_data_w )
{
- if (LOG_KEYBOARD)
- logerror("cs4031_device::keyb_data_w: %02x\n", data);
+ LOGKEYBOARD("cs4031_device::keyb_data_w: %02x\n", data);
// data is blocked only for d1 command
if (BIT(m_registers[SOFT_RESET_AND_GATEA20], 7) && m_keybc_d1_written)
@@ -838,16 +828,14 @@ WRITE8_MEMBER( cs4031_device::keyb_data_w )
WRITE_LINE_MEMBER( cs4031_device::gatea20_w )
{
- if (LOG_KEYBOARD)
- logerror("cs4031_device::gatea20_w: %u\n", state);
+ LOGKEYBOARD("cs4031_device::gatea20_w: %u\n", state);
keyboard_gatea20(state);
}
WRITE_LINE_MEMBER( cs4031_device::kbrst_w )
{
- if (LOG_KEYBOARD)
- logerror("cs4031_device::kbrst_w: %u\n", state);
+ LOGKEYBOARD("cs4031_device::kbrst_w: %u\n", state);
// convert to active low signal (gets inverted in at_keybc.c)
state = (state == ASSERT_LINE ? 0 : 1);
@@ -875,8 +863,7 @@ WRITE_LINE_MEMBER( cs4031_device::kbrst_w )
*/
WRITE8_MEMBER( cs4031_device::sysctrl_w )
{
- if (LOG_IO)
- logerror("cs4031_device::sysctrl_w: %u\n", data);
+ LOGIO("cs4031_device::sysctrl_w: %u\n", data);
fast_gatea20(BIT(data, 1));
@@ -897,8 +884,7 @@ READ8_MEMBER( cs4031_device::sysctrl_r )
result |= m_cpureset << 0;
result |= m_fast_gatea20 << 1;
- if (LOG_IO)
- logerror("cs4031_device::sysctrl_r: %u\n", result);
+ LOGIO("cs4031_device::sysctrl_r: %u\n", result);
return result;
}
diff --git a/src/devices/machine/cs4031.h b/src/devices/machine/cs4031.h
index d57d14e0a0a..f3b43961c46 100644
--- a/src/devices/machine/cs4031.h
+++ b/src/devices/machine/cs4031.h
@@ -20,10 +20,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_CS4031_H
+#define MAME_MACHINE_CS4031_H
-#ifndef __CS4031_H__
-#define __CS4031_H__
+#pragma once
#include "machine/am9517a.h"
#include "machine/pic8259.h"
@@ -87,15 +87,15 @@ public:
virtual machine_config_constructor device_mconfig_additions() const override;
// callbacks
- template<class _ior> devcb_base &set_ior_callback(_ior ior) { return m_read_ior.set_callback(ior); }
- template<class _iow> devcb_base &set_iow_callback(_iow iow) { return m_write_iow.set_callback(iow); }
- template<class _tc> devcb_base &set_tc_callback(_tc tc) { return m_write_tc.set_callback(tc); }
- template<class _hold> devcb_base &set_hold_callback(_hold hold) { return m_write_hold.set_callback(hold); }
- template<class _cpureset> devcb_base &set_cpureset_callback(_cpureset cpureset) { return m_write_cpureset.set_callback(cpureset); }
- template<class _nmi> devcb_base &set_nmi_callback(_nmi nmi) { return m_write_nmi.set_callback(nmi); }
- template<class _intr> devcb_base &set_intr_callback(_intr intr) { return m_write_intr.set_callback(intr); }
- template<class _a20m> devcb_base &set_a20m_callback(_a20m a20m) { return m_write_a20m.set_callback(a20m); }
- template<class _spkr> devcb_base &set_spkr_callback(_spkr spkr) { return m_write_spkr.set_callback(spkr); }
+ template <class Obj> devcb_base &set_ior_callback(Obj &&ior) { return m_read_ior.set_callback(std::forward<Obj>(ior)); }
+ template <class Obj> devcb_base &set_iow_callback(Obj &&iow) { return m_write_iow.set_callback(std::forward<Obj>(iow)); }
+ template <class Obj> devcb_base &set_tc_callback(Obj &&tc) { return m_write_tc.set_callback(std::forward<Obj>(tc)); }
+ template <class Obj> devcb_base &set_hold_callback(Obj &&hold) { return m_write_hold.set_callback(std::forward<Obj>(hold)); }
+ template <class Obj> devcb_base &set_cpureset_callback(Obj &&cpureset) { return m_write_cpureset.set_callback(std::forward<Obj>(cpureset)); }
+ template <class Obj> devcb_base &set_nmi_callback(Obj &&nmi) { return m_write_nmi.set_callback(std::forward<Obj>(nmi)); }
+ template <class Obj> devcb_base &set_intr_callback(Obj &&intr) { return m_write_intr.set_callback(std::forward<Obj>(intr)); }
+ template <class Obj> devcb_base &set_a20m_callback(Obj &&a20m) { return m_write_a20m.set_callback(std::forward<Obj>(a20m)); }
+ template <class Obj> devcb_base &set_spkr_callback(Obj &&spkr) { return m_write_spkr.set_callback(std::forward<Obj>(spkr)); }
// not really public
DECLARE_READ8_MEMBER( dma_read_byte );
@@ -107,9 +107,9 @@ public:
DECLARE_READ8_MEMBER( dma1_ior1_r ) { return m_read_ior(1); }
DECLARE_READ8_MEMBER( dma1_ior2_r ) { return m_read_ior(2); }
DECLARE_READ8_MEMBER( dma1_ior3_r ) { return m_read_ior(3); }
- DECLARE_READ8_MEMBER( dma2_ior1_r ) { uint16_t result = m_read_ior(5); m_dma_high_byte = result >> 8; return result; }
- DECLARE_READ8_MEMBER( dma2_ior2_r ) { uint16_t result = m_read_ior(6); m_dma_high_byte = result >> 8; return result; }
- DECLARE_READ8_MEMBER( dma2_ior3_r ) { uint16_t result = m_read_ior(7); m_dma_high_byte = result >> 8; return result; }
+ DECLARE_READ8_MEMBER( dma2_ior1_r ) { uint16_t const result = m_read_ior(5); m_dma_high_byte = result >> 8; return result; }
+ DECLARE_READ8_MEMBER( dma2_ior2_r ) { uint16_t const result = m_read_ior(6); m_dma_high_byte = result >> 8; return result; }
+ DECLARE_READ8_MEMBER( dma2_ior3_r ) { uint16_t const result = m_read_ior(7); m_dma_high_byte = result >> 8; return result; }
DECLARE_WRITE8_MEMBER( dma1_iow0_w ) { m_write_iow(0, data, 0xffff); }
DECLARE_WRITE8_MEMBER( dma1_iow1_w ) { m_write_iow(1, data, 0xffff); }
DECLARE_WRITE8_MEMBER( dma1_iow2_w ) { m_write_iow(2, data, 0xffff); }
@@ -260,7 +260,7 @@ private:
bool m_keybc_data_blocked;
// chipset configuration
- static const char* m_register_names[];
+ static const char* const m_register_names[];
static const float m_dma_clock_divider[];
enum
@@ -283,7 +283,6 @@ private:
// device type definition
-extern const device_type CS4031;
-
+DECLARE_DEVICE_TYPE(CS4031, cs4031_device)
-#endif /* __CS4031_H__ */
+#endif // MAME_MACHINE_CS4031_H
diff --git a/src/devices/machine/cs8221.cpp b/src/devices/machine/cs8221.cpp
index bc94f1e19af..61676abad65 100644
--- a/src/devices/machine/cs8221.cpp
+++ b/src/devices/machine/cs8221.cpp
@@ -16,18 +16,21 @@
***************************************************************************/
#include "emu.h"
-#include "machine/ram.h"
#include "machine/cs8221.h"
+#include "machine/ram.h"
+#define LOG_GENERAL (1U << 0)
+#define LOG_REGISTER (1U << 1)
+#define LOG_MEMORY (1U << 2)
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
+#define VERBOSE (LOG_REGISTER | LOG_MEMORY)
+#include "logmacro.h"
+
+#define LOGREGISTER(...) LOGMASKED(LOG_REGISTER, __VA_ARGS__)
+#define LOGMEMORY(...) LOGMASKED(LOG_MEMORY, __VA_ARGS__)
-#define LOG_REGISTER 1
-#define LOG_MEMORY 1
-const device_type CS8221 = device_creator<cs8221_device>;
+DEFINE_DEVICE_TYPE(CS8221, cs8221_device, "cs8221", "CS8221 NEAT")
static const char *const register_names[] =
@@ -59,7 +62,7 @@ static const char *const register_names[] =
//-------------------------------------------------
cs8221_device::cs8221_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CS8221, "CS8221", tag, owner, clock, "cs8221", __FILE__),
+ : device_t(mconfig, CS8221, tag, owner, clock),
m_address(0),
m_address_valid(false)
{
@@ -122,8 +125,7 @@ READ8_MEMBER( cs8221_device::data_r )
if (m_address_valid)
{
- if (LOG_REGISTER)
- logerror("cs8221_device: read %s = %02x\n", register_names[m_address & 0x0f], m_registers[m_address & 0x0f]);
+ LOGREGISTER("cs8221_device: read %s = %02x\n", register_names[m_address & 0x0f], m_registers[m_address & 0x0f]);
result = m_registers[m_address & 0x0f];
}
@@ -138,8 +140,7 @@ WRITE8_MEMBER( cs8221_device::data_w )
{
if (m_address_valid)
{
- if (LOG_REGISTER)
- logerror("cs8221_device: write %s = %02x\n", register_names[m_address & 0x0f], data);
+ LOGREGISTER("cs8221_device: write %s = %02x\n", register_names[m_address & 0x0f], data);
// update register with new data
m_registers[m_address & 0x0f] = data;
diff --git a/src/devices/machine/cs8221.h b/src/devices/machine/cs8221.h
index 7ec94963eec..3354ebfdeef 100644
--- a/src/devices/machine/cs8221.h
+++ b/src/devices/machine/cs8221.h
@@ -15,10 +15,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_CS8221_H
+#define MAME_MACHINE_CS8221_H
-#ifndef __CS8221_H__
-#define __CS8221_H__
+#pragma once
@@ -82,7 +82,6 @@ private:
// device type definition
-extern const device_type CS8221;
-
+DECLARE_DEVICE_TYPE(CS8221, cs8221_device)
-#endif /* __CS8221_H__ */
+#endif // MAME_MACHINE_CS8221_H
diff --git a/src/devices/machine/cxd1095.cpp b/src/devices/machine/cxd1095.cpp
index 5aaf3a14ad3..bb39a440bed 100644
--- a/src/devices/machine/cxd1095.cpp
+++ b/src/devices/machine/cxd1095.cpp
@@ -23,7 +23,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type CXD1095 = device_creator<cxd1095_device>;
+DEFINE_DEVICE_TYPE(CXD1095, cxd1095_device, "cxd1095", "CXD1095 I/O Expander")
//**************************************************************************
// DEVICE DEFINITION
@@ -34,9 +34,9 @@ const device_type CXD1095 = device_creator<cxd1095_device>;
//-------------------------------------------------
cxd1095_device::cxd1095_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : device_t(mconfig, CXD1095, "CXD1095 I/O Expander", tag, owner, clock, "cxd1095", __FILE__),
- m_input_cb{{*this}, {*this}, {*this}, {*this}, {*this}},
- m_output_cb{{*this}, {*this}, {*this}, {*this}, {*this}}
+ : device_t(mconfig, CXD1095, tag, owner, clock)
+ , m_input_cb{{*this}, {*this}, {*this}, {*this}, {*this}}
+ , m_output_cb{{*this}, {*this}, {*this}, {*this}, {*this}}
{
}
diff --git a/src/devices/machine/cxd1095.h b/src/devices/machine/cxd1095.h
index 2fce5fced2a..10405d8fd93 100644
--- a/src/devices/machine/cxd1095.h
+++ b/src/devices/machine/cxd1095.h
@@ -39,10 +39,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_CXD1095_H
+#define MAME_MACHINE_CXD1095_H
-#ifndef DEVICES_MACHINE_CXD1095_H
-#define DEVICES_MACHINE_CXD1095_H
+#pragma once
//**************************************************************************
// CONFIGURATION MACROS
@@ -83,13 +83,13 @@ public:
cxd1095_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// static configuration
- template<class Object>
+ template <class Object>
static devcb_base &set_input_cb(device_t &device, int p, Object &&obj)
{
assert(p >= 0 && p < 5);
return downcast<cxd1095_device &>(device).m_input_cb[p].set_callback(std::forward<Object>(obj));
}
- template<class Object>
+ template <class Object>
static devcb_base &set_output_cb(device_t &device, int p, Object &&obj)
{
assert(p >= 0 && p < 5);
@@ -116,6 +116,6 @@ private:
};
// device type definition
-extern const device_type CXD1095;
+DECLARE_DEVICE_TYPE(CXD1095, cxd1095_device)
-#endif
+#endif // MAME_MACHINE_CXD1095_H
diff --git a/src/devices/machine/diablo_hd.cpp b/src/devices/machine/diablo_hd.cpp
index c49ce231005..a31d309bf2b 100644
--- a/src/devices/machine/diablo_hd.cpp
+++ b/src/devices/machine/diablo_hd.cpp
@@ -58,11 +58,16 @@
* </PRE>
*/
+#ifndef DIABLO_DEBUG
+#define DIABLO_DEBUG 1 //!< set to 1 to enable debug log output
+#endif
+
+#define LOG_DRIVE(...) do { if (DIABLO_DEBUG) logprintf(__VA_ARGS__); } while (0)
+
+
diablo_hd_device::diablo_hd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, DIABLO_HD, "Diablo Disk", tag, owner, clock, "diablo_hd", __FILE__),
-#if DIABLO_DEBUG
+ device_t(mconfig, DIABLO_HD, tag, owner, clock),
m_log_level(8),
-#endif
m_diablo31(true),
m_unit(0),
m_packs(1),
@@ -111,20 +116,18 @@ diablo_hd_device::~diablo_hd_device()
{
}
-#if DIABLO_DEBUG
template <typename Format, typename... Params>
void diablo_hd_device::logprintf(int level, Format &&fmt, Params &&... args)
{
if (level <= m_log_level)
logerror(std::forward<Format>(fmt), std::forward<Params>(args)...);
}
-#endif
void diablo_hd_device::set_sector_callback(void *cookie, void (*callback)(void *, int))
{
if (m_sector_callback_cookie == cookie && m_sector_callback == callback)
return;
- LOG_DRIVE((0,"[DHD%u] cookie=%p callback=%p\n", m_unit, cookie, (void *)callback));
+ LOG_DRIVE(0,"[DHD%u] cookie=%p callback=%p\n", m_unit, cookie, (void *)callback);
m_sector_callback_cookie = cookie;
m_sector_callback = callback;
}
@@ -277,22 +280,22 @@ void diablo_hd_device::read_sector()
{
/* If there's no drive, just reset the page number */
if (!m_image) {
- LOG_DRIVE((0,"[DHD%u] CHS:%03d/%d/%02d => no image\n", m_unit, m_cylinder, m_head, m_sector));
+ LOG_DRIVE(0,"[DHD%u] CHS:%03d/%d/%02d => no image\n", m_unit, m_cylinder, m_head, m_sector);
m_page = -1;
return;
}
if (m_cylinder < 0 || m_cylinder >= m_cylinders) {
- LOG_DRIVE((0,"[DHD%u] CHS:%03d/%d/%02d => invalid cylinder\n", m_unit, m_cylinder, m_head, m_sector));
+ LOG_DRIVE(0,"[DHD%u] CHS:%03d/%d/%02d => invalid cylinder\n", m_unit, m_cylinder, m_head, m_sector);
m_page = -1;
return;
}
if (m_head < 0 || m_head >= DIABLO_HEADS) {
- LOG_DRIVE((0,"[DHD%u] CHS:%03d/%d/%02d => invalid head\n", m_unit, m_cylinder, m_head, m_sector));
+ LOG_DRIVE(0,"[DHD%u] CHS:%03d/%d/%02d => invalid head\n", m_unit, m_cylinder, m_head, m_sector);
m_page = -1;
return;
}
if (m_sector < 0 || m_sector >= DIABLO_SPT) {
- LOG_DRIVE((0,"[DHD%u] CHS:%03d/%d/%02d => invalid sector\n", m_unit, m_cylinder, m_head, m_sector));
+ LOG_DRIVE(0,"[DHD%u] CHS:%03d/%d/%02d => invalid sector\n", m_unit, m_cylinder, m_head, m_sector);
m_page = -1;
return;
}
@@ -301,7 +304,7 @@ void diablo_hd_device::read_sector()
// already have the sector image?
if (m_cache[m_page]) {
- LOG_DRIVE((9,"[DHD%u] CHS:%03d/%d/%02d => page:%d is cached\n", m_unit, m_cylinder, m_head, m_sector, m_page));
+ LOG_DRIVE(9,"[DHD%u] CHS:%03d/%d/%02d => page:%d is cached\n", m_unit, m_cylinder, m_head, m_sector, m_page);
return;
}
@@ -310,13 +313,13 @@ void diablo_hd_device::read_sector()
m_cache[m_page] = std::make_unique<uint8_t[]>(sizeof(diablo_sector_t));
// and read the page from the hard_disk image
if (hard_disk_read(m_disk, m_page, m_cache[m_page].get())) {
- LOG_DRIVE((2,"[DHD%u] CHS:%03d/%d/%02d => page:%d loaded\n", m_unit, m_cylinder, m_head, m_sector, m_page));
+ LOG_DRIVE(2,"[DHD%u] CHS:%03d/%d/%02d => page:%d loaded\n", m_unit, m_cylinder, m_head, m_sector, m_page);
} else {
- LOG_DRIVE((0,"[DHD%u] CHS:%03d/%d/%02d => page:%d read failed\n", m_unit, m_cylinder, m_head, m_sector, m_page));
+ LOG_DRIVE(0,"[DHD%u] CHS:%03d/%d/%02d => page:%d read failed\n", m_unit, m_cylinder, m_head, m_sector, m_page);
m_cache[m_page] = nullptr;
}
} else {
- LOG_DRIVE((2,"[DHD%u] no disk\n", m_unit));
+ LOG_DRIVE(2,"[DHD%u] no disk\n", m_unit);
}
}
@@ -435,7 +438,7 @@ uint32_t* diablo_hd_device::expand_sector()
/* allocate a sector buffer */
if (!m_cache[m_page]) {
- LOG_DRIVE((0,"[DHD%u] no image for page #%d\n", m_unit, m_page));
+ LOG_DRIVE(0,"[DHD%u] no image for page #%d\n", m_unit, m_page);
return nullptr;
}
diablo_sector_t *s = reinterpret_cast<diablo_sector_t *>(m_cache[m_page].get());
@@ -482,26 +485,26 @@ uint32_t* diablo_hd_device::expand_sector()
}
m_bits[m_page] = bits;
- LOG_DRIVE((0,"[DHD%u] CHS:%03d/%d/%02d #%5d bits\n", m_unit, m_cylinder, m_head, m_sector, dst));
-#if DIABLO_DEBUG
- dump_record(s->pageno, 0, sizeof(s->pageno), "pageno", 0);
- dump_record(s->header, 0, sizeof(s->header), "header", 0);
- dump_record(s->label, 0, sizeof(s->label), "label", 0);
- dump_record(s->data, 0, sizeof(s->data), "data", 1);
-#endif
+ LOG_DRIVE(0,"[DHD%u] CHS:%03d/%d/%02d #%5d bits\n", m_unit, m_cylinder, m_head, m_sector, dst);
+ if (DIABLO_DEBUG)
+ {
+ dump_record(s->pageno, 0, sizeof(s->pageno), "pageno", 0);
+ dump_record(s->header, 0, sizeof(s->header), "header", 0);
+ dump_record(s->label, 0, sizeof(s->label), "label", 0);
+ dump_record(s->data, 0, sizeof(s->data), "data", 1);
+ }
return bits;
}
-#if DIABLO_DEBUG
void diablo_hd_device::dump_ascii(uint8_t *src, size_t size)
{
size_t offs;
- LOG_DRIVE((0," ["));
+ LOG_DRIVE(0," [");
for (offs = 0; offs < size; offs++) {
- char ch = (char)src[offs ^ 1];
- LOG_DRIVE((0, "%c", ch < 32 || ch > 126 ? '.' : ch));
+ char ch = char(src[offs ^ 1]);
+ LOG_DRIVE(0, "%c", ch < 32 || ch > 126 ? '.' : ch);
}
- LOG_DRIVE((0,"]\n"));
+ LOG_DRIVE(0,"]\n");
}
@@ -515,15 +518,15 @@ void diablo_hd_device::dump_ascii(uint8_t *src, size_t size)
size_t diablo_hd_device::dump_record(uint8_t *src, size_t addr, size_t size, const char *name, int cr)
{
size_t offs;
- LOG_DRIVE((0,"%s:", name));
+ LOG_DRIVE(0,"%s:", name);
for (offs = 0; offs < size; offs += 2) {
int word = src[offs] + 256 * src[offs + 1];
if (offs % 16) {
- LOG_DRIVE((0," %06o", word));
+ LOG_DRIVE(0," %06o", word);
} else {
if (offs > 0)
dump_ascii(&src[offs-16], 16);
- LOG_DRIVE((0,"\t%05o: %06o", (addr + offs) / 2, word));
+ LOG_DRIVE(0,"\t%05o: %06o", (addr + offs) / 2, word);
}
}
if (offs % 16) {
@@ -532,11 +535,10 @@ size_t diablo_hd_device::dump_record(uint8_t *src, size_t addr, size_t size, con
dump_ascii(&src[offs-16], 16);
}
if (cr) {
- LOG_DRIVE((0,"\n"));
+ LOG_DRIVE(0,"\n");
}
return size;
}
-#endif
/**
* @brief find a sync bit in an array of clock and data bits
@@ -570,7 +572,7 @@ size_t diablo_hd_device::squeeze_sync(uint32_t *bits, size_t src, size_t size)
}
}
/* return if no sync found within size*32 clock and data bits */
- LOG_DRIVE((0,"[DHD%u] no sync within %d words\n", m_unit, size));
+ LOG_DRIVE(0,"[DHD%u] no sync within %d words\n", m_unit, size);
return src;
}
@@ -605,7 +607,7 @@ size_t diablo_hd_device::squeeze_unsync(uint32_t *bits, size_t src, size_t size)
}
}
/* return if no sync found within size*32 clock and data bits */
- LOG_DRIVE((0,"[DHD%u] no unsync within %d words\n", m_unit, size));
+ LOG_DRIVE(0,"[DHD%u] no unsync within %d words\n", m_unit, size);
return src;
}
@@ -678,8 +680,8 @@ void diablo_hd_device::squeeze_sector()
int cksum_header, cksum_label, cksum_data;
if (m_rdfirst >= 0) {
- LOG_DRIVE((0, "[DHD%u] READ CHS:%03d/%d/%02d bit#%d ... bit#%d\n",
- m_unit, m_cylinder, m_head, m_sector, m_rdfirst, m_rdlast));
+ LOG_DRIVE(0, "[DHD%u] READ CHS:%03d/%d/%02d bit#%d ... bit#%d\n",
+ m_unit, m_cylinder, m_head, m_sector, m_rdfirst, m_rdlast);
}
m_rdfirst = -1;
m_rdlast = -1;
@@ -699,25 +701,25 @@ void diablo_hd_device::squeeze_sector()
}
if (m_wrfirst >= 0) {
- LOG_DRIVE((0, "[DHD%u] WRITE CHS:%03d/%d/%02d bit#%d ... bit#%d\n",
- m_unit, m_cylinder, m_head, m_sector, m_wrfirst, m_wrlast));
+ LOG_DRIVE(0, "[DHD%u] WRITE CHS:%03d/%d/%02d bit#%d ... bit#%d\n",
+ m_unit, m_cylinder, m_head, m_sector, m_wrfirst, m_wrlast);
}
m_wrfirst = -1;
m_wrlast = -1;
if (m_page < 0 || m_page >= m_pages) {
- LOG_DRIVE((0,"[DHD%u] page not set\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] page not set\n", m_unit);
return;
}
if (!m_cache[m_page]) {
- LOG_DRIVE((0,"[DHD%u] no image\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] no image\n", m_unit);
return;
}
/* no bits to write? */
if (!m_bits[m_page]) {
- LOG_DRIVE((0,"[DHD%u] no bits\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] no bits\n", m_unit);
return;
}
uint32_t *bits = m_bits[m_page];
@@ -731,34 +733,31 @@ void diablo_hd_device::squeeze_sector()
src = MFRRDL * 32;
src = squeeze_unsync(bits, src, 40); // skip first words and garbage until 0 bits are coming in
src = squeeze_sync(bits, src, 40); // sync on header preamble
- LOG_DRIVE((0,"[DHD%u] header sync bit #%5d\n", m_unit, src));
+ LOG_DRIVE(0,"[DHD%u] header sync bit #%5d\n", m_unit, src);
src = squeeze_record(bits, src, s->header, sizeof(s->header));
- LOG_DRIVE((0,"[DHD%u] header CRC bit #%5d\n", m_unit, src));
+ LOG_DRIVE(0,"[DHD%u] header CRC bit #%5d\n", m_unit, src);
src = squeeze_cksum(bits, src, &cksum_header);
-#if DIABLO_DEBUG
- dump_record(s->header, 0, sizeof(s->header), "header", 0);
-#endif
+ if (DIABLO_DEBUG)
+ dump_record(s->header, 0, sizeof(s->header), "header", 0);
src = squeeze_unsync(bits, src, 40); // skip garbage until 0 bits are coming in
src = squeeze_sync(bits, src, 40); // sync on label preamble
- LOG_DRIVE((0,"[DHD%u] label sync bit #%5d\n", m_unit, src));
+ LOG_DRIVE(0,"[DHD%u] label sync bit #%5d\n", m_unit, src);
src = squeeze_record(bits, src, s->label, sizeof(s->label));
- LOG_DRIVE((0,"[DHD%u] label CRC bit #%5d\n", m_unit, src));
+ LOG_DRIVE(0,"[DHD%u] label CRC bit #%5d\n", m_unit, src);
src = squeeze_cksum(bits, src, &cksum_label);
-#if DIABLO_DEBUG
- dump_record(s->label, 0, sizeof(s->label), "label", 0);
-#endif
+ if (DIABLO_DEBUG)
+ dump_record(s->label, 0, sizeof(s->label), "label", 0);
src = squeeze_unsync(bits, src, 40); // skip garbage until 0 bits are coming in
src = squeeze_sync(bits, src, 40); // sync on data preamble
- LOG_DRIVE((0,"[DHD%u] data sync bit #%5d\n", m_unit, src));
+ LOG_DRIVE(0,"[DHD%u] data sync bit #%5d\n", m_unit, src);
src = squeeze_record(bits, src, s->data, sizeof(s->data));
- LOG_DRIVE((0,"[DHD%u] data CRC bit #%5d\n", m_unit, src));
+ LOG_DRIVE(0,"[DHD%u] data CRC bit #%5d\n", m_unit, src);
src = squeeze_cksum(bits, src, &cksum_data);
-#if DIABLO_DEBUG
- dump_record(s->data, 0, sizeof(s->data), "data", 1);
-#endif
- LOG_DRIVE((0,"[DHD%u] postamble bit #%5d\n", m_unit, src));
+ if (DIABLO_DEBUG)
+ dump_record(s->data, 0, sizeof(s->data), "data", 1);
+ LOG_DRIVE(0,"[DHD%u] postamble bit #%5d\n", m_unit, src);
/* The checksum start value always seems to be 0521 */
cksum_header ^= cksum(s->header, sizeof(s->header), 0521);
@@ -766,19 +765,17 @@ void diablo_hd_device::squeeze_sector()
cksum_data ^= cksum(s->data, sizeof(s->data), 0521);
if (cksum_header || cksum_label || cksum_data) {
-#if DIABLO_DEBUG
- LOG_DRIVE((0,"[DHD%u] cksum check - header:%06o label:%06o data:%06o\n", m_unit, cksum_header, cksum_label, cksum_data));
-#endif
+ LOG_DRIVE(0,"[DHD%u] cksum check - header:%06o label:%06o data:%06o\n", m_unit, cksum_header, cksum_label, cksum_data);
}
auto_free(machine(), m_bits[m_page]);
m_bits[m_page] = nullptr;
if (m_disk) {
if (!hard_disk_write(m_disk, m_page, m_cache[m_page].get())) {
- LOG_DRIVE((0,"[DHD%u] write failed for page #%d\n", m_unit, m_page));
+ LOG_DRIVE(0,"[DHD%u] write failed for page #%d\n", m_unit, m_page);
}
} else {
- LOG_DRIVE((2,"[DHD%u] no disk\n", m_unit));
+ LOG_DRIVE(2,"[DHD%u] no disk\n", m_unit);
}
}
@@ -984,14 +981,14 @@ void diablo_hd_device::select(int unit)
m_s_r_w_0 = 0; // and can take seek/read/write commands
m_addx_acknowledge_0 = 0; // assert address acknowledge (?)
m_log_addx_interlock_0 = 1; // deassert log address interlock (?)
- LOG_DRIVE((1,"[DHD%u] select unit:%d ready\n", m_unit, unit));
+ LOG_DRIVE(1,"[DHD%u] select unit:%d ready\n", m_unit, unit);
read_sector();
} else {
m_ready_0 = 1; // it is not ready (?)
m_s_r_w_0 = 1; // can't take seek/read/write commands (?)
m_addx_acknowledge_0 = 0; // assert address acknowledge (?)
m_log_addx_interlock_0 = 1; // deassert log address interlock (?)
- LOG_DRIVE((1,"[DHD%u] select unit:%d not ready (no image)\n", m_unit, unit));
+ LOG_DRIVE(1,"[DHD%u] select unit:%d not ready (no image)\n", m_unit, unit);
}
}
@@ -1003,7 +1000,7 @@ void diablo_hd_device::set_head(int head)
{
if ((head & DIABLO_HEAD_MASK) != m_head) {
m_head = head & DIABLO_HEAD_MASK;
- LOG_DRIVE((0,"[DHD%u] select head:%d\n", m_unit, m_head));
+ LOG_DRIVE(0,"[DHD%u] select head:%d\n", m_unit, m_head);
}
}
@@ -1019,7 +1016,7 @@ void diablo_hd_device::set_cylinder(int cylinder)
{
if ((cylinder & DIABLO_CYLINDER_MASK) != m_seekto) {
m_seekto = cylinder & DIABLO_CYLINDER_MASK;
- LOG_DRIVE((0,"[DHD%u] seek to cylinder:%d\n", m_unit, m_seekto));
+ LOG_DRIVE(0,"[DHD%u] seek to cylinder:%d\n", m_unit, m_seekto);
}
}
@@ -1036,7 +1033,7 @@ void diablo_hd_device::set_restore(int restore)
{
if ((restore & 1) != m_restore) {
m_restore = restore & 1;
- LOG_DRIVE((0,"[DHD%u] restore:%d\n", m_unit, m_restore));
+ LOG_DRIVE(0,"[DHD%u] restore:%d\n", m_unit, m_restore);
}
}
@@ -1052,7 +1049,7 @@ void diablo_hd_device::set_strobe(int strobe)
{
int seekto = m_restore ? 0 : m_seekto;
if (strobe) {
- LOG_DRIVE((1,"[DHD%u] STROBE end of interlock\n", m_unit));
+ LOG_DRIVE(1,"[DHD%u] STROBE end of interlock\n", m_unit);
// deassert the log address interlock
m_log_addx_interlock_0 = 1;
return;
@@ -1062,7 +1059,7 @@ void diablo_hd_device::set_strobe(int strobe)
m_log_addx_interlock_0 = 0;
if (seekto == m_cylinder) {
- LOG_DRIVE((1,"[DHD%u] STROBE to cylinder %d acknowledge\n", m_unit, seekto));
+ LOG_DRIVE(1,"[DHD%u] STROBE to cylinder %d acknowledge\n", m_unit, seekto);
m_addx_acknowledge_0 = 0; // address acknowledge, if cylinder is reached
m_seek_incomplete_0 = 1; // reset seek incomplete
return;
@@ -1087,7 +1084,7 @@ void diablo_hd_device::set_strobe(int strobe)
}
}
if (complete) {
- LOG_DRIVE((1,"[DHD%u] STROBE to cylinder %d (now %d) - interlock\n", m_unit, seekto, m_cylinder));
+ LOG_DRIVE(1,"[DHD%u] STROBE to cylinder %d (now %d) - interlock\n", m_unit, seekto, m_cylinder);
m_addx_acknowledge_0 = 1; // deassert address acknowledge signal
m_seek_incomplete_0 = 1; // deassert seek incomplete signal
read_sector();
@@ -1095,7 +1092,7 @@ void diablo_hd_device::set_strobe(int strobe)
m_log_addx_interlock_0 = 0; // deassert the log address interlock signal
m_seek_incomplete_0 = 1; // deassert seek incomplete signal
m_addx_acknowledge_0 = 0; // assert address acknowledge signal
- LOG_DRIVE((1,"[DHD%u] STROBE to cylinder %d incomplete\n", m_unit, seekto));
+ LOG_DRIVE(1,"[DHD%u] STROBE to cylinder %d incomplete\n", m_unit, seekto);
}
}
@@ -1146,30 +1143,30 @@ void diablo_hd_device::set_rdgate(int gate)
void diablo_hd_device::wr_data(int index, int wrdata)
{
if (m_wrgate_0) {
- LOG_DRIVE((0,"[DHD%u] index=%d wrgate not asserted\n", m_unit, index));
+ LOG_DRIVE(0,"[DHD%u] index=%d wrgate not asserted\n", m_unit, index);
return; // write gate is not asserted (active 0)
}
if (index < 0 || index >= bits_per_sector()) {
- LOG_DRIVE((0,"[DHD%u] index=%d out of range\n", m_unit, index));
+ LOG_DRIVE(0,"[DHD%u] index=%d out of range\n", m_unit, index);
return; // don't write before or beyond the sector
}
if (-1 == m_page) {
- LOG_DRIVE((0,"[DHD%u] invalid page\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] invalid page\n", m_unit);
return; // invalid page
}
uint32_t *bits = expand_sector();
if (!bits) {
- LOG_DRIVE((0,"[DHD%u] no bits\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] no bits\n", m_unit);
return; // invalid unit
}
if (-1 == m_wrfirst)
m_wrfirst = index;
- LOG_DRIVE((9,"[DHD%u] CHS:%03d/%d/%02d index #%d bit:%d\n", m_unit, m_cylinder, m_head, m_sector, index, wrdata));
+ LOG_DRIVE(9,"[DHD%u] CHS:%03d/%d/%02d index #%d bit:%d\n", m_unit, m_cylinder, m_head, m_sector, index, wrdata);
if (index < GUARD_ZONE_BITS) {
/* don't write in the guard zone (?) */
@@ -1193,28 +1190,28 @@ int diablo_hd_device::rd_data(int index)
int bit = 0;
if (m_rdgate_0) {
- LOG_DRIVE((1,"[DHD%u] index=%d rdgate not asserted\n", m_unit, index));
+ LOG_DRIVE(1,"[DHD%u] index=%d rdgate not asserted\n", m_unit, index);
return 0; // read gate is not asserted (active 0)
}
if (index < 0 || index >= bits_per_sector()) {
- LOG_DRIVE((0,"[DHD%u] index=%d out of range\n", m_unit, index));
+ LOG_DRIVE(0,"[DHD%u] index=%d out of range\n", m_unit, index);
return 1; // don't read before or beyond the sector
}
if (0 == m_sector_mark_0) {
- LOG_DRIVE((0,"[DHD%u] read while sector mark is asserted\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] read while sector mark is asserted\n", m_unit);
return 1; // no data while sector mark is asserted
}
if (-1 == m_page) {
- LOG_DRIVE((0,"[DHD%u] invalid page\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] invalid page\n", m_unit);
return 1; // invalid unit
}
uint32_t *bits = expand_sector();
if (!bits) {
- LOG_DRIVE((0,"[DHD%u] no bits\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] no bits\n", m_unit);
return 1; // invalid page
}
@@ -1222,7 +1219,7 @@ int diablo_hd_device::rd_data(int index)
m_rdfirst = index;
RDBIT(bits,index,bit);
- LOG_DRIVE((9,"[DHD%u] CHS:%03d/%d/%02d index #%d bit:%d\n", m_unit, m_cylinder, m_head, m_sector, index, bit));
+ LOG_DRIVE(9,"[DHD%u] CHS:%03d/%d/%02d index #%d bit:%d\n", m_unit, m_cylinder, m_head, m_sector, index, bit);
m_rdlast = index;
return bit;
}
@@ -1241,23 +1238,23 @@ int diablo_hd_device::rd_clock(int index)
int clk = 0;
if (index < 0 || index >= bits_per_sector()) {
- LOG_DRIVE((0,"[DHD%u] index out of range (%d)\n", m_unit, index));
+ LOG_DRIVE(0,"[DHD%u] index out of range (%d)\n", m_unit, index);
return 1; // don't read before or beyond the sector
}
if (0 == m_sector_mark_0) {
- LOG_DRIVE((0,"[DHD%u] read while sector mark is asserted\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] read while sector mark is asserted\n", m_unit);
return 1; // no clock while sector mark is low (?)
}
if (-1 == m_page) {
- LOG_DRIVE((0,"[DHD%u] invalid page\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] invalid page\n", m_unit);
return 1; // invalid page
}
uint32_t *bits = expand_sector();
if (!bits) {
- LOG_DRIVE((0,"[DHD%u] no bits\n", m_unit));
+ LOG_DRIVE(0,"[DHD%u] no bits\n", m_unit);
return 1; // invalid unit
}
@@ -1272,7 +1269,7 @@ int diablo_hd_device::rd_clock(int index)
} else {
clk = 0;
}
- LOG_DRIVE((9,"[DHD%u] CHS:%03d/%d/%02d index #%d clk:%d\n", m_unit, m_cylinder, m_head, m_sector, index, clk));
+ LOG_DRIVE(9,"[DHD%u] CHS:%03d/%d/%02d index #%d clk:%d\n", m_unit, m_cylinder, m_head, m_sector, index, clk);
m_rdlast = index;
return clk ^ 1;
}
@@ -1283,7 +1280,7 @@ int diablo_hd_device::rd_clock(int index)
*/
void diablo_hd_device::sector_mark_1()
{
- LOG_DRIVE((9,"[DHD%u] CHS:%03d/%d/%02d sector_mark_0=1\n", m_unit, m_cylinder, m_head, m_sector));
+ LOG_DRIVE(9,"[DHD%u] CHS:%03d/%d/%02d sector_mark_0=1\n", m_unit, m_cylinder, m_head, m_sector);
m_sector_mark_0 = 1; // deassert sector mark (set to 1)
}
@@ -1297,7 +1294,7 @@ void diablo_hd_device::sector_mark_1()
*/
void diablo_hd_device::sector_mark_0()
{
- LOG_DRIVE((9,"[DHD%u] CHS:%03d/%d/%02d sector_mark_0=0\n", m_unit, m_cylinder, m_head, m_sector));
+ LOG_DRIVE(9,"[DHD%u] CHS:%03d/%d/%02d sector_mark_0=0\n", m_unit, m_cylinder, m_head, m_sector);
// HACK: deassert wrgate
// m_wrgate_0 = 1;
@@ -1362,13 +1359,13 @@ void diablo_hd_device::device_reset()
m_cylinders = 2 * DIABLO_CYLINDERS;
m_pages = 2 * DIABLO_PAGES;
}
- LOG_DRIVE((0,"[DHD%u] m_handle : %p\n", m_unit, m_handle));
- LOG_DRIVE((0,"[DHD%u] m_disk : %p\n", m_unit, m_disk));
- LOG_DRIVE((0,"[DHD%u] rotation time : %.0fns\n", m_unit, m_rotation_time.as_double() * ATTOSECONDS_PER_NANOSECOND));
- LOG_DRIVE((0,"[DHD%u] sector time : %.0fns\n", m_unit, m_sector_time.as_double() * ATTOSECONDS_PER_NANOSECOND));
- LOG_DRIVE((0,"[DHD%u] sector mark 0 time : %.0fns\n", m_unit, m_sector_mark_0_time.as_double() * ATTOSECONDS_PER_NANOSECOND));
- LOG_DRIVE((0,"[DHD%u] sector mark 1 time : %.0fns\n", m_unit, m_sector_mark_1_time.as_double() * ATTOSECONDS_PER_NANOSECOND));
- LOG_DRIVE((0,"[DHD%u] bit time : %.0fns\n", m_unit, m_bit_time.as_double() * ATTOSECONDS_PER_NANOSECOND));
+ LOG_DRIVE(0,"[DHD%u] m_handle : %p\n", m_unit, m_handle);
+ LOG_DRIVE(0,"[DHD%u] m_disk : %p\n", m_unit, m_disk);
+ LOG_DRIVE(0,"[DHD%u] rotation time : %.0fns\n", m_unit, m_rotation_time.as_double() * ATTOSECONDS_PER_NANOSECOND);
+ LOG_DRIVE(0,"[DHD%u] sector time : %.0fns\n", m_unit, m_sector_time.as_double() * ATTOSECONDS_PER_NANOSECOND);
+ LOG_DRIVE(0,"[DHD%u] sector mark 0 time : %.0fns\n", m_unit, m_sector_mark_0_time.as_double() * ATTOSECONDS_PER_NANOSECOND);
+ LOG_DRIVE(0,"[DHD%u] sector mark 1 time : %.0fns\n", m_unit, m_sector_mark_1_time.as_double() * ATTOSECONDS_PER_NANOSECOND);
+ LOG_DRIVE(0,"[DHD%u] bit time : %.0fns\n", m_unit, m_bit_time.as_double() * ATTOSECONDS_PER_NANOSECOND);
m_s_r_w_0 = 1; // deassert seek/read/write ready
m_ready_0 = 1; // deassert drive ready
@@ -1418,7 +1415,7 @@ void diablo_hd_device::device_reset()
*/
void diablo_hd_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- LOG_DRIVE((9,"[DHD%u] TIMER id=%d param=%d ptr=%p @%.0fns\n", m_unit, id, param, ptr, timer.elapsed().as_double() * ATTOSECONDS_PER_NANOSECOND));
+ LOG_DRIVE(9,"[DHD%u] TIMER id=%d param=%d ptr=%p @%.0fns\n", m_unit, id, param, ptr, timer.elapsed().as_double() * ATTOSECONDS_PER_NANOSECOND);
if (!m_disk)
return;
@@ -1454,4 +1451,4 @@ machine_config_constructor diablo_hd_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME( diablo_drive );
}
-const device_type DIABLO_HD = device_creator<diablo_hd_device>;
+DEFINE_DEVICE_TYPE(DIABLO_HD, diablo_hd_device, "diablo_hd", "Diablo Disk")
diff --git a/src/devices/machine/diablo_hd.h b/src/devices/machine/diablo_hd.h
index 4f2fc5da1b5..f39063b3426 100644
--- a/src/devices/machine/diablo_hd.h
+++ b/src/devices/machine/diablo_hd.h
@@ -4,14 +4,12 @@
* DIABLO31 and DIABLO44 hard drive support
**********************************************************/
-#if !defined(_DIABLO_HD_DEVICE_)
-#define _DIABLO_HD_DEVICE_
+#ifndef MAME_MACHINE_DIABLO_HD_H
+#define MAME_MACHINE_DIABLO_HD_H
-#include "imagedev/diablo.h"
+#pragma once
-#ifndef DIABLO_DEBUG
-#define DIABLO_DEBUG 1 //!< set to 1 to enable debug log output
-#endif
+#include "imagedev/diablo.h"
#define DIABLO_HD_0 "diablo0"
#define DIABLO_HD_1 "diablo1"
@@ -73,14 +71,9 @@ protected:
virtual machine_config_constructor device_mconfig_additions() const override;
private:
-#if DIABLO_DEBUG
- int m_log_level;
template <typename Format, typename... Params> void logprintf(int level, Format &&fmt, Params &&... args);
-# define LOG_DRIVE(x) logprintf x
-#else
-# define LOG_DRIVE(x)
-#endif
+ int m_log_level;
bool m_diablo31; //!< true, if this is a DIABLO31 drive
int m_unit; //!< drive unit number (0 or 1)
char m_description[32]; //!< description of the drive(s)
@@ -141,13 +134,11 @@ private:
//! expand a sector into an array of clock and data bits
uint32_t* expand_sector();
-#if DIABLO_DEBUG
//! dump a number of words as ASCII characters
void dump_ascii(uint8_t *src, size_t size);
//! dump a record's contents
size_t dump_record(uint8_t *src, size_t addr, size_t size, const char *name, int cr);
-#endif
//! find a sync bit in an array of clock and data bits
size_t squeeze_sync(uint32_t *bits, size_t src, size_t size);
diff --git a/src/devices/machine/dm9334.cpp b/src/devices/machine/dm9334.cpp
index 5a673f7cf24..b4693ad7545 100644
--- a/src/devices/machine/dm9334.cpp
+++ b/src/devices/machine/dm9334.cpp
@@ -9,10 +9,10 @@
#include "emu.h"
#include "dm9334.h"
-const device_type DM9334 = device_creator<dm9334_device>;
+DEFINE_DEVICE_TYPE(DM9334, dm9334_device, "dm9934", "NS [DM]9934 8-bit Addressable Latch")
dm9334_device::dm9334_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DM9334, "National Semiconductor 9334/DM9334 8-Bit Addressable Latch", tag, owner, clock, "dm9334", __FILE__)
+ : device_t(mconfig, DM9334, tag, owner, clock)
, m_out_func(*this)
, m_q0_func(*this)
, m_q1_func(*this)
diff --git a/src/devices/machine/dm9334.h b/src/devices/machine/dm9334.h
index 708aa89c782..cc71862e686 100644
--- a/src/devices/machine/dm9334.h
+++ b/src/devices/machine/dm9334.h
@@ -65,10 +65,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_DM9334_H
+#define MAME_MACHINE_DM9334_H
-#ifndef DM9334_H
-#define DM9334_H
+#pragma once
#define MCFG_DM9334_OUTPUT_CB(_devcb) \
@@ -108,15 +108,15 @@ public:
dm9334_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_out_cb(device_t &device, _Object object) { return downcast<dm9334_device &>(device).m_out_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q0_cb(device_t &device, _Object object) { return downcast<dm9334_device &>(device).m_q0_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q1_cb(device_t &device, _Object object) { return downcast<dm9334_device &>(device).m_q1_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q2_cb(device_t &device, _Object object) { return downcast<dm9334_device &>(device).m_q2_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q3_cb(device_t &device, _Object object) { return downcast<dm9334_device &>(device).m_q3_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q4_cb(device_t &device, _Object object) { return downcast<dm9334_device &>(device).m_q4_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q5_cb(device_t &device, _Object object) { return downcast<dm9334_device &>(device).m_q5_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q6_cb(device_t &device, _Object object) { return downcast<dm9334_device &>(device).m_q6_func.set_callback(object); }
- template<class _Object> static devcb_base &set_q7_cb(device_t &device, _Object object) { return downcast<dm9334_device &>(device).m_q7_func.set_callback(object); }
+ template <class Object> static devcb_base &set_out_cb(device_t &device, Object &&cb) { return downcast<dm9334_device &>(device).m_out_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q0_cb(device_t &device, Object &&cb) { return downcast<dm9334_device &>(device).m_q0_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q1_cb(device_t &device, Object &&cb) { return downcast<dm9334_device &>(device).m_q1_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q2_cb(device_t &device, Object &&cb) { return downcast<dm9334_device &>(device).m_q2_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q3_cb(device_t &device, Object &&cb) { return downcast<dm9334_device &>(device).m_q3_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q4_cb(device_t &device, Object &&cb) { return downcast<dm9334_device &>(device).m_q4_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q5_cb(device_t &device, Object &&cb) { return downcast<dm9334_device &>(device).m_q5_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q6_cb(device_t &device, Object &&cb) { return downcast<dm9334_device &>(device).m_q6_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_q7_cb(device_t &device, Object &&cb) { return downcast<dm9334_device &>(device).m_q7_func.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( e_w );
DECLARE_WRITE_LINE_MEMBER( c_w );
@@ -177,7 +177,6 @@ private:
};
// device type definition
-extern const device_type DM9334;
-
+DECLARE_DEVICE_TYPE(DM9334, dm9334_device)
-#endif /* DM9334_H */
+#endif // MAME_MACHINE_DM9334_H
diff --git a/src/devices/machine/dmac.cpp b/src/devices/machine/dmac.cpp
index cd0911f9995..88762d95237 100644
--- a/src/devices/machine/dmac.cpp
+++ b/src/devices/machine/dmac.cpp
@@ -15,19 +15,15 @@ BOARDS:
#include "emu.h"
#include "dmac.h"
-
-//**************************************************************************
-// CONSTANTS / MACROS
-//**************************************************************************
-
#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type DMAC = device_creator<dmac_device>;
+DEFINE_DEVICE_TYPE(AMIGA_DMAC, amiga_dmac_device, "amiga_dmac", "Amiga DMAC DMA Controller")
//**************************************************************************
@@ -35,11 +31,11 @@ const device_type DMAC = device_creator<dmac_device>;
//**************************************************************************
//-------------------------------------------------
-// dmac_device - constructor
+// amiga_dmac_device - constructor
//-------------------------------------------------
-dmac_device::dmac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, DMAC, "DMAC DMA Controller", tag, owner, clock, "dmac", __FILE__),
+amiga_dmac_device::amiga_dmac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, AMIGA_DMAC, tag, owner, clock),
amiga_autoconfig(),
m_cfgout_handler(*this),
m_int_handler(*this),
@@ -66,7 +62,7 @@ dmac_device::dmac_device(const machine_config &mconfig, const char *tag, device_
// device_start - device-specific startup
//-------------------------------------------------
-void dmac_device::device_start()
+void amiga_dmac_device::device_start()
{
// resolve callbacks
m_cfgout_handler.resolve_safe();
@@ -82,21 +78,19 @@ void dmac_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void dmac_device::device_reset()
+void amiga_dmac_device::device_reset()
{
// fifo empty
m_istr |= ISTR_FE_FLG;
}
-void dmac_device::autoconfig_base_address(offs_t address)
+void amiga_dmac_device::autoconfig_base_address(offs_t address)
{
- if (VERBOSE)
- logerror("%s('%s'): autoconfig_base_address received: 0x%06x\n", shortname(), basetag(), address);
+ LOG("%s('%s'): autoconfig_base_address received: 0x%06x\n", shortname(), basetag(), address);
if (!m_configured && m_ram_size > 0)
{
- if (VERBOSE)
- logerror("-> installing ram (%d bytes)\n", m_ram_size);
+ LOG("-> installing ram (%d bytes)\n", m_ram_size);
// install access to the ram space
if (address)
@@ -115,13 +109,12 @@ void dmac_device::autoconfig_base_address(offs_t address)
}
else
{
- if (VERBOSE)
- logerror("-> installing dmac\n");
+ LOG("-> installing dmac\n");
// internal dmac registers
m_space->install_readwrite_handler(address, address + 0xff,
- read16_delegate(FUNC(dmac_device::register_read), this),
- write16_delegate(FUNC(dmac_device::register_write), this), 0xffff);
+ read16_delegate(FUNC(amiga_dmac_device::register_read), this),
+ write16_delegate(FUNC(amiga_dmac_device::register_write), this), 0xffff);
// install access to the rom space
if (m_rom)
@@ -138,7 +131,7 @@ void dmac_device::autoconfig_base_address(offs_t address)
}
}
-void dmac_device::check_interrupts()
+void amiga_dmac_device::check_interrupts()
{
// interrupts enabled?
if (m_cntr & CNTR_INTEN)
@@ -156,14 +149,14 @@ void dmac_device::check_interrupts()
m_int_handler((m_istr & ISTR_INT_P) ? 1 : 0);
}
-void dmac_device::stop_dma()
+void amiga_dmac_device::stop_dma()
{
m_dma_active = false;
m_istr &= ~ISTR_E_INT;
check_interrupts();
}
-void dmac_device::start_dma()
+void amiga_dmac_device::start_dma()
{
m_dma_active = true;
}
@@ -173,7 +166,7 @@ void dmac_device::start_dma()
// IMPLEMENTATION
//**************************************************************************
-READ16_MEMBER( dmac_device::register_read )
+READ16_MEMBER( amiga_dmac_device::register_read )
{
uint16_t data = 0xffff;
@@ -190,16 +183,14 @@ READ16_MEMBER( dmac_device::register_read )
m_istr &= ~0x0f;
check_interrupts();
- if (VERBOSE)
- logerror("%s('%s'): read istr %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): read istr %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
break;
case 0x21:
data = m_cntr;
- if (VERBOSE)
- logerror("%s('%s'): read cntr %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): read cntr %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
break;
@@ -207,8 +198,7 @@ READ16_MEMBER( dmac_device::register_read )
case 0x49:
data = m_scsi_read_handler(offset);
- if (VERBOSE)
- logerror("%s('%s'): read scsi register @ %02x %04x [mask = %04x]\n", shortname(), basetag(), offset, data, mem_mask);
+ LOG("%s('%s'): read scsi register @ %02x %04x [mask = %04x]\n", shortname(), basetag(), offset, data, mem_mask);
break;
@@ -216,28 +206,24 @@ READ16_MEMBER( dmac_device::register_read )
case 0x51:
case 0x52:
case 0x53:
- if (VERBOSE)
- logerror("%s('%s'): read xt register @ %02x %04x [mask = %04x]\n", shortname(), basetag(), offset, data, mem_mask);
+ LOG("%s('%s'): read xt register @ %02x %04x [mask = %04x]\n", shortname(), basetag(), offset, data, mem_mask);
break;
case 0x70:
- if (VERBOSE)
- logerror("%s('%s'): read dma start strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): read dma start strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
start_dma();
break;
case 0x71:
- if (VERBOSE)
- logerror("%s('%s'): read dma stop strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): read dma stop strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
stop_dma();
break;
case 0x72:
- if (VERBOSE)
- logerror("%s('%s'): read clear irq strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): read clear irq strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
// clear all interrupts
m_istr &= ~ISTR_INT_MASK;
@@ -245,73 +231,64 @@ READ16_MEMBER( dmac_device::register_read )
break;
case 0x74:
- if (VERBOSE)
- logerror("%s('%s'): read flush fifo strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): read flush fifo strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
m_istr |= ISTR_FE_FLG;
break;
default:
- if (VERBOSE)
- logerror("%s('%s'): register_read %04x @ %02x [mask = %04x]\n", shortname(), basetag(), data, offset, mem_mask);
+ LOG("%s('%s'): register_read %04x @ %02x [mask = %04x]\n", shortname(), basetag(), data, offset, mem_mask);
}
return data;
}
-WRITE16_MEMBER( dmac_device::register_write )
+WRITE16_MEMBER( amiga_dmac_device::register_write )
{
switch (offset)
{
case 0x21:
- if (VERBOSE)
- logerror("%s('%s'): write cntr %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): write cntr %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
m_cntr = data;
check_interrupts();
break;
case 0x40:
- if (VERBOSE)
- logerror("%s('%s'): write wtc hi %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): write wtc hi %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
m_wtc &= 0x0000ffff;
m_wtc |= ((uint32_t) data) << 16;
break;
case 0x41:
- if (VERBOSE)
- logerror("%s('%s'): write wtc lo %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): write wtc lo %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
m_wtc &= 0xffff0000;
m_wtc |= data;
break;
case 0x42:
- if (VERBOSE)
- logerror("%s('%s'): write acr hi %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): write acr hi %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
m_acr &= 0x0000ffff;
m_acr |= ((uint32_t) data) << 16;
break;
case 0x43:
- if (VERBOSE)
- logerror("%s('%s'): write acr lo %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): write acr lo %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
m_acr &= 0xffff0000;
m_acr |= data;
break;
case 0x47:
- if (VERBOSE)
- logerror("%s('%s'): write dawr %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): write dawr %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
break;
case 0x48:
case 0x49:
- if (VERBOSE)
- logerror("%s('%s'): write scsi register @ %02x %04x [mask = %04x]\n", shortname(), basetag(), offset, data, mem_mask);
+ LOG("%s('%s'): write scsi register @ %02x %04x [mask = %04x]\n", shortname(), basetag(), offset, data, mem_mask);
m_scsi_write_handler(offset, data, 0xff);
break;
@@ -320,27 +297,23 @@ WRITE16_MEMBER( dmac_device::register_write )
case 0x51:
case 0x52:
case 0x53:
- if (VERBOSE)
- logerror("%s('%s'): write xt register @ %02x %04x [mask = %04x]\n", shortname(), basetag(), offset, data, mem_mask);
+ LOG("%s('%s'): write xt register @ %02x %04x [mask = %04x]\n", shortname(), basetag(), offset, data, mem_mask);
break;
case 0x70:
- if (VERBOSE)
- logerror("%s('%s'): write dma start strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): write dma start strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
start_dma();
break;
case 0x71:
- if (VERBOSE)
- logerror("%s('%s'): write dma stop strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): write dma stop strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
stop_dma();
break;
case 0x72:
- if (VERBOSE)
- logerror("%s('%s'): write clear irq strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): write clear irq strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
// clear all interrupts
m_istr &= ~ISTR_INT_MASK;
@@ -348,23 +321,20 @@ WRITE16_MEMBER( dmac_device::register_write )
break;
case 0x74:
- if (VERBOSE)
- logerror("%s('%s'): write flush fifo strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
+ LOG("%s('%s'): write flush fifo strobe %04x [mask = %04x]\n", shortname(), basetag(), data, mem_mask);
m_istr |= ISTR_FE_FLG;
break;
default:
- if (VERBOSE)
- logerror("%s('%s'): write %04x @ %02x [mask = %04x]\n", shortname(), basetag(), data, offset, mem_mask);
+ LOG("%s('%s'): write %04x @ %02x [mask = %04x]\n", shortname(), basetag(), data, offset, mem_mask);
}
}
// this signal tells us to expose our autoconfig values
-WRITE_LINE_MEMBER( dmac_device::configin_w )
+WRITE_LINE_MEMBER( amiga_dmac_device::configin_w )
{
- if (VERBOSE)
- logerror("%s('%s'): configin_w (%d)\n", shortname(), basetag(), state);
+ LOG("%s('%s'): configin_w (%d)\n", shortname(), basetag(), state);
if (state == 0 && !m_configured)
{
@@ -417,10 +387,9 @@ WRITE_LINE_MEMBER( dmac_device::configin_w )
}
// this sets the ram size depending on the line voltage
-WRITE_LINE_MEMBER( dmac_device::ramsz_w )
+WRITE_LINE_MEMBER( amiga_dmac_device::ramsz_w )
{
- if (VERBOSE)
- logerror("%s('%s'): ramsz_w (%d)\n", shortname(), basetag(), state);
+ LOG("%s('%s'): ramsz_w (%d)\n", shortname(), basetag(), state);
switch (state)
{
@@ -432,10 +401,9 @@ WRITE_LINE_MEMBER( dmac_device::ramsz_w )
}
// reset the device
-WRITE_LINE_MEMBER( dmac_device::rst_w )
+WRITE_LINE_MEMBER( amiga_dmac_device::rst_w )
{
- if (VERBOSE)
- logerror("%s('%s'): rst_w (%d)\n", shortname(), basetag(), state);
+ LOG("%s('%s'): rst_w (%d)\n", shortname(), basetag(), state);
if (m_rst == 1 && state == 0)
device_reset();
@@ -444,10 +412,9 @@ WRITE_LINE_MEMBER( dmac_device::rst_w )
}
// external interrupt
-WRITE_LINE_MEMBER( dmac_device::intx_w )
+WRITE_LINE_MEMBER( amiga_dmac_device::intx_w )
{
- if (VERBOSE)
- logerror("%s('%s'): intx_w (%d)\n", shortname(), basetag(), state);
+ LOG("%s('%s'): intx_w (%d)\n", shortname(), basetag(), state);
if (state)
m_istr |= ISTR_INTS;
@@ -458,10 +425,9 @@ WRITE_LINE_MEMBER( dmac_device::intx_w )
}
// data request
-WRITE_LINE_MEMBER( dmac_device::xdreq_w )
+WRITE_LINE_MEMBER( amiga_dmac_device::xdreq_w )
{
- if (VERBOSE)
- logerror("%s('%s'): xdreq_w (%d)\n", shortname(), basetag(), state);
+ LOG("%s('%s'): xdreq_w (%d)\n", shortname(), basetag(), state);
if (m_dma_active)
{
diff --git a/src/devices/machine/dmac.h b/src/devices/machine/dmac.h
index 464d7c37ed5..f9f06e3d85c 100644
--- a/src/devices/machine/dmac.h
+++ b/src/devices/machine/dmac.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_DMAC_H
+#define MAME_MACHINE_DMAC_H
-#ifndef __DMAC_H__
-#define __DMAC_H__
+#pragma once
#include "autoconfig.h"
@@ -21,66 +21,66 @@
//**************************************************************************
#define MCFG_DMAC_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, DMAC, _clock)
+ MCFG_DEVICE_ADD(_tag, AMIGA_DMAC, _clock)
#define MCFG_DMAC_CFGOUT_HANDLER(_devcb) \
- devcb = &dmac_device::set_cfgout_handler(*device, DEVCB_##_devcb);
+ devcb = &amiga_dmac_device::set_cfgout_handler(*device, DEVCB_##_devcb);
#define MCFG_DMAC_INT_HANDLER(_devcb) \
- devcb = &dmac_device::set_int_handler(*device, DEVCB_##_devcb);
+ devcb = &amiga_dmac_device::set_int_handler(*device, DEVCB_##_devcb);
#define MCFG_DMAC_XDACK_HANDLER(_devcb) \
- devcb = &dmac_device::set_xdack_handler(*device, DEVCB_##_devcb);
+ devcb = &amiga_dmac_device::set_xdack_handler(*device, DEVCB_##_devcb);
#define MCFG_DMAC_SCSI_READ_HANDLER(_devcb) \
- devcb = &dmac_device::set_scsi_read_handler(*device, DEVCB_##_devcb);
+ devcb = &amiga_dmac_device::set_scsi_read_handler(*device, DEVCB_##_devcb);
#define MCFG_DMAC_SCSI_WRITE_HANDLER(_devcb) \
- devcb = &dmac_device::set_scsi_write_handler(*device, DEVCB_##_devcb);
+ devcb = &amiga_dmac_device::set_scsi_write_handler(*device, DEVCB_##_devcb);
#define MCFG_DMAC_IO_READ_HANDLER(_devcb) \
- devcb = &dmac_device::set_io_read_handler(*device, DEVCB_##_devcb);
+ devcb = &amiga_dmac_device::set_io_read_handler(*device, DEVCB_##_devcb);
#define MCFG_DMAC_IO_WRITE_HANDLER(_devcb) \
- devcb = &dmac_device::set_io_write_handler(*device, DEVCB_##_devcb);
+ devcb = &amiga_dmac_device::set_io_write_handler(*device, DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> dmac_device
+// ======================> amiga_dmac_device
-class dmac_device : public device_t, public amiga_autoconfig
+class amiga_dmac_device : public device_t, public amiga_autoconfig
{
public:
// construction/destruction
- dmac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ amiga_dmac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template<class _Object> static devcb_base &set_cfgout_handler(device_t &device, _Object object)
- { return downcast<dmac_device &>(device).m_cfgout_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_cfgout_handler(device_t &device, Object &&cb)
+ { return downcast<amiga_dmac_device &>(device).m_cfgout_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_int_handler(device_t &device, _Object object)
- { return downcast<dmac_device &>(device).m_int_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
+ { return downcast<amiga_dmac_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_xdack_handler(device_t &device, _Object object)
- { return downcast<dmac_device &>(device).m_xdack_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_xdack_handler(device_t &device, Object &&cb)
+ { return downcast<amiga_dmac_device &>(device).m_xdack_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_scsi_read_handler(device_t &device, _Object object)
- { return downcast<dmac_device &>(device).m_scsi_read_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_scsi_read_handler(device_t &device, Object &&cb)
+ { return downcast<amiga_dmac_device &>(device).m_scsi_read_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_scsi_write_handler(device_t &device, _Object object)
- { return downcast<dmac_device &>(device).m_scsi_write_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_scsi_write_handler(device_t &device, Object &&cb)
+ { return downcast<amiga_dmac_device &>(device).m_scsi_write_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_io_read_handler(device_t &device, _Object object)
- { return downcast<dmac_device &>(device).m_io_read_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_io_read_handler(device_t &device, Object &&cb)
+ { return downcast<amiga_dmac_device &>(device).m_io_read_handler.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_io_write_handler(device_t &device, _Object object)
- { return downcast<dmac_device &>(device).m_io_write_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_io_write_handler(device_t &device, Object &&cb)
+ { return downcast<amiga_dmac_device &>(device).m_io_write_handler.set_callback(std::forward<Object>(cb)); }
- void set_address_space(address_space *space) { m_space = space; };
- void set_rom(uint8_t *rom) { m_rom = rom; };
- void set_ram(uint8_t *ram) { m_ram = ram; };
+ void set_address_space(address_space *space) { m_space = space; }
+ void set_rom(uint8_t *rom) { m_rom = rom; }
+ void set_ram(uint8_t *ram) { m_ram = ram; }
// input lines
DECLARE_WRITE_LINE_MEMBER( configin_w );
@@ -102,7 +102,6 @@ protected:
virtual void autoconfig_base_address(offs_t address) override;
private:
-
// control register flags
enum
{
@@ -127,7 +126,7 @@ private:
ISTR_FE_FLG = 0x001 // fifo-empty flag
};
- static const int ISTR_INT_MASK = 0x1ec;
+ static constexpr int ISTR_INT_MASK = 0x1ec;
// callbacks
devcb_write_line m_cfgout_handler;
@@ -164,7 +163,6 @@ private:
// device type definition
-extern const device_type DMAC;
-
+DECLARE_DEVICE_TYPE(AMIGA_DMAC, amiga_dmac_device)
-#endif /* __DMAC_H__ */
+#endif // MAME_MACHINE_DMAC_H
diff --git a/src/devices/machine/dp8390.cpp b/src/devices/machine/dp8390.cpp
index 6057260da34..a77034461f7 100644
--- a/src/devices/machine/dp8390.cpp
+++ b/src/devices/machine/dp8390.cpp
@@ -6,26 +6,30 @@
#define DP8390_BYTE_ORDER(w) ((m_regs.dcr & 3) == 3 ? ((data << 8) | (data >> 8)) : data)
#define LOOPBACK (!(m_regs.dcr & 8) && (m_regs.tcr & 6))
-const device_type DP8390D = device_creator<dp8390d_device>;
-const device_type RTL8019A = device_creator<rtl8019a_device>;
+DEFINE_DEVICE_TYPE(DP8390D, dp8390d_device, "dp8390d", "DP8390D")
+DEFINE_DEVICE_TYPE(RTL8019A, rtl8019a_device, "rtl8019a", "RTL8019A")
dp8390d_device::dp8390d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dp8390_device(mconfig, DP8390D, "DP8390D", tag, owner, clock, 10.0f, "dp8390d", __FILE__) {
- m_type = TYPE_DP8390D;
+ : dp8390_device(mconfig, DP8390D, tag, owner, clock, TYPE::DP8390D, 10.0f)
+{
}
rtl8019a_device::rtl8019a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dp8390_device(mconfig, RTL8019A, "RTL8019A", tag, owner, clock, 10.0f, "rtl8019a", __FILE__) {
- m_type = TYPE_RTL8019A;
+ : dp8390_device(mconfig, RTL8019A, tag, owner, clock, TYPE::RTL8019A, 10.0f)
+{
}
-dp8390_device::dp8390_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, float bandwidth, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_network_interface(mconfig, *this, bandwidth), m_type(0),
- m_irq_cb(*this),
- m_breq_cb(*this),
- m_mem_read_cb(*this),
- m_mem_write_cb(*this), m_reset(0), m_cs(false), m_rdma_active(0)
+dp8390_device::dp8390_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, TYPE variant, float bandwidth)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_network_interface(mconfig, *this, bandwidth)
+ , m_variant(variant)
+ , m_irq_cb(*this)
+ , m_breq_cb(*this)
+ , m_mem_read_cb(*this)
+ , m_mem_write_cb(*this)
+ , m_reset(0)
+ , m_cs(false)
+ , m_rdma_active(0)
{
}
@@ -296,7 +300,7 @@ READ16_MEMBER(dp8390_device::dp8390_r) {
data = m_regs.cr;
break;
default:
- if(m_type == TYPE_RTL8019A) {
+ if(m_variant == TYPE::RTL8019A) {
switch((offset & 0x0f)|(m_regs.cr & 0xc0)) {
case 0x0a:
data = 'P';
@@ -464,7 +468,7 @@ WRITE16_MEMBER(dp8390_device::dp8390_w) {
set_cr(data);
break;
default:
- if(m_type == TYPE_RTL8019A) {
+ if(m_variant == TYPE::RTL8019A) {
switch((offset & 0x0f)|(m_regs.cr & 0xc0)) {
// XXX: rest of the regs
default:
diff --git a/src/devices/machine/dp8390.h b/src/devices/machine/dp8390.h
index 04a4dcea137..b7794e43903 100644
--- a/src/devices/machine/dp8390.h
+++ b/src/devices/machine/dp8390.h
@@ -1,8 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef _DP8390_H_
-#define _DP8390_H_
+#ifndef MAME_MACHINE_DP8390_H
+#define MAME_MACHINE_DP8390_H
+#pragma once
// device stuff
@@ -32,17 +33,13 @@
devcb = &rtl8019a_device::set_mem_write_callback(*device, DEVCB_##_devcb);
-class dp8390_device : public device_t,
- public device_network_interface
+class dp8390_device : public device_t, public device_network_interface
{
public:
- // construction/destruction
- dp8390_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, float bandwidth, const char *shortname, const char *source);
-
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<dp8390_device &>(device).m_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_breq_callback(device_t &device, _Object object) { return downcast<dp8390_device &>(device).m_breq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_mem_read_callback(device_t &device, _Object object) { return downcast<dp8390_device &>(device).m_mem_read_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_mem_write_callback(device_t &device, _Object object) { return downcast<dp8390_device &>(device).m_mem_write_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_breq_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_breq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_mem_read_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_mem_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_mem_write_callback(device_t &device, Object &&cb) { return downcast<dp8390_device &>(device).m_mem_write_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE16_MEMBER( dp8390_w );
DECLARE_READ16_MEMBER( dp8390_r );
@@ -51,16 +48,19 @@ public:
void recv_cb(uint8_t *buf, int len) override;
protected:
+ enum class TYPE {
+ DP8390D,
+ RTL8019A
+ };
+
+ // construction/destruction
+ dp8390_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, TYPE varian, float bandwidth);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- int m_type;
-
- enum {
- TYPE_DP8390D = 0,
- TYPE_RTL8019A
- };
+ TYPE const m_variant;
private:
devcb_write_line m_irq_cb;
@@ -139,7 +139,7 @@ public:
};
// device type definition
-extern const device_type DP8390D;
-extern const device_type RTL8019A;
+DECLARE_DEVICE_TYPE(DP8390D, dp8390d_device)
+DECLARE_DEVICE_TYPE(RTL8019A, rtl8019a_device)
-#endif
+#endif // MAME_MACHINE_DP8390_H
diff --git a/src/devices/machine/ds1204.cpp b/src/devices/machine/ds1204.cpp
index 8e326ab451f..17ff81b8c0b 100644
--- a/src/devices/machine/ds1204.cpp
+++ b/src/devices/machine/ds1204.cpp
@@ -7,10 +7,12 @@
*
*/
-#include <stdio.h>
#include "emu.h"
#include "ds1204.h"
+#include <stdio.h>
+
+
#define VERBOSE_LEVEL ( 0 )
inline void ATTR_PRINTF( 3, 4 ) ds1204_device::verboselog( int n_level, const char *s_fmt, ... )
@@ -27,10 +29,10 @@ inline void ATTR_PRINTF( 3, 4 ) ds1204_device::verboselog( int n_level, const ch
}
// device type definition
-const device_type DS1204 = device_creator<ds1204_device>;
+DEFINE_DEVICE_TYPE(DS1204, ds1204_device, "ds1204", "DS1204")
ds1204_device::ds1204_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : device_t( mconfig, DS1204, "DS1204", tag, owner, clock, "ds1204", __FILE__ ),
+ : device_t(mconfig, DS1204, tag, owner, clock),
device_nvram_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
m_rst( 0 ),
diff --git a/src/devices/machine/ds1204.h b/src/devices/machine/ds1204.h
index 7c083ea0f39..03d29262d54 100644
--- a/src/devices/machine/ds1204.h
+++ b/src/devices/machine/ds1204.h
@@ -7,17 +7,16 @@
*
*/
-#pragma once
+#ifndef MAME_MACHINE_DS1204_H
+#define MAME_MACHINE_DS1204_H
-#ifndef __DS1204_H__
-#define __DS1204_H__
+#pragma once
#define MCFG_DS1204_ADD( _tag ) \
MCFG_DEVICE_ADD( _tag, DS1204, 0 )
-class ds1204_device : public device_t,
- public device_nvram_interface
+class ds1204_device : public device_t, public device_nvram_interface
{
public:
// construction/destruction
@@ -89,6 +88,6 @@ private:
// device type definition
-extern const device_type DS1204;
+DECLARE_DEVICE_TYPE(DS1204, ds1204_device)
-#endif
+#endif // MAME_MACHINE_DS1204_H
diff --git a/src/devices/machine/ds1205.cpp b/src/devices/machine/ds1205.cpp
index 400046c3406..3dca4c8de2f 100644
--- a/src/devices/machine/ds1205.cpp
+++ b/src/devices/machine/ds1205.cpp
@@ -7,10 +7,12 @@
*
*/
-#include <stdio.h>
#include "emu.h"
#include "ds1205.h"
+#include <stdio.h>
+
+
#define VERBOSE_LEVEL ( 0 )
inline void ATTR_PRINTF( 3, 4 ) ds1205_device::verboselog( int n_level, const char *s_fmt, ... )
@@ -27,10 +29,10 @@ inline void ATTR_PRINTF( 3, 4 ) ds1205_device::verboselog( int n_level, const ch
}
// device type definition
-const device_type DS1205 = device_creator<ds1205_device>;
+DEFINE_DEVICE_TYPE(DS1205, ds1205_device, "ds1205", "DS1205")
ds1205_device::ds1205_device( const machine_config &mconfig, const char *tag, device_t *owner, u32 clock )
- : device_t( mconfig, DS1205, "DS1205", tag, owner, clock, "ds1205", __FILE__ ),
+ : device_t(mconfig, DS1205, tag, owner, clock),
device_nvram_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
m_rst( 0 ),
diff --git a/src/devices/machine/ds1205.h b/src/devices/machine/ds1205.h
index 8856d5d2567..92941c87090 100644
--- a/src/devices/machine/ds1205.h
+++ b/src/devices/machine/ds1205.h
@@ -7,17 +7,16 @@
*
*/
-#pragma once
+#ifndef MAME_MACHINE_DS1205_H
+#define MAME_MACHINE_DS1205_H
-#ifndef __DS1205_H__
-#define __DS1205_H__
+#pragma once
#define MCFG_DS1205_ADD( _tag ) \
MCFG_DEVICE_ADD( _tag, DS1205, 0 )
-class ds1205_device : public device_t,
- public device_nvram_interface
+class ds1205_device : public device_t, public device_nvram_interface
{
public:
// construction/destruction
@@ -95,6 +94,6 @@ private:
// device type definition
-extern const device_type DS1205;
+DECLARE_DEVICE_TYPE(DS1205, ds1205_device)
-#endif
+#endif // MAME_MACHINE_DS1205_H
diff --git a/src/devices/machine/ds128x.cpp b/src/devices/machine/ds128x.cpp
index 88b40ac3d9c..7c824aba638 100644
--- a/src/devices/machine/ds128x.cpp
+++ b/src/devices/machine/ds128x.cpp
@@ -5,13 +5,13 @@
/// TODO: Only DV2/DV1/DV0 == 0/1/0 is supported as the chip only has a 15 stage divider and not 22.
-const device_type DS12885 = device_creator<ds12885_device>;
+DEFINE_DEVICE_TYPE(DS12885, ds12885_device, "ds12885", "DS12885 RTC/NVRAM")
//-------------------------------------------------
// ds12885_device - constructor
//-------------------------------------------------
ds12885_device::ds12885_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc146818_device(mconfig, DS12885, "DS12885", tag, owner, clock, "ds12885", __FILE__)
+ : mc146818_device(mconfig, DS12885, tag, owner, clock)
{
}
diff --git a/src/devices/machine/ds128x.h b/src/devices/machine/ds128x.h
index feb10b84ecd..e74227e58b1 100644
--- a/src/devices/machine/ds128x.h
+++ b/src/devices/machine/ds128x.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef __DS128X_H__
-#define __DS128X_H__
+#ifndef MAME_MACHINE_DS128X_H
+#define MAME_MACHINE_DS128X_H
#include "mc146818.h"
@@ -21,6 +21,6 @@ protected:
};
// device type definition
-extern const device_type DS12885;
+DECLARE_DEVICE_TYPE(DS12885, ds12885_device)
-#endif
+#endif // MAME_MACHINE_DS128X_H
diff --git a/src/devices/machine/ds1302.cpp b/src/devices/machine/ds1302.cpp
index 8050523f65a..c74faa2113a 100644
--- a/src/devices/machine/ds1302.cpp
+++ b/src/devices/machine/ds1302.cpp
@@ -18,15 +18,14 @@
#include "emu.h"
#include "ds1302.h"
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
#define RAM_SIZE 0x1f // 31 bytes
@@ -66,7 +65,7 @@ enum
//**************************************************************************
// device type definition
-const device_type DS1302 = device_creator<ds1302_device>;
+DEFINE_DEVICE_TYPE(DS1302, ds1302_device, "ds1302", "DS1302 Timekeeper")
//-------------------------------------------------
@@ -74,7 +73,7 @@ const device_type DS1302 = device_creator<ds1302_device>;
//-------------------------------------------------
ds1302_device::ds1302_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DS1302, "DS1302", tag, owner, clock, "ds1302", __FILE__),
+ : device_t(mconfig, DS1302, tag, owner, clock),
device_rtc_interface(mconfig, *this),
device_nvram_interface(mconfig, *this)
{
@@ -190,7 +189,7 @@ void ds1302_device::rtc_clock_updated(int year, int month, int day, int day_of_w
WRITE_LINE_MEMBER( ds1302_device::ce_w )
{
- if (LOG) logerror("DS1302 '%s' CE: %u\n", tag(), state);
+ LOG("DS1302 CE: %u\n", state);
if (!state && m_ce)
{
@@ -223,26 +222,26 @@ void ds1302_device::load_shift_register()
{
m_data = m_ram[m_addr];
- if (LOG) logerror("DS1302 '%s' Read RAM %u:%02x\n", tag(), m_addr, m_data);
+ LOG("DS1302 Read RAM %u:%02x\n", m_addr, m_data);
}
else
{
m_data = m_user[m_addr];
- if (LOG) logerror("DS1302 '%s' Read Clock %u:%02x\n", tag(), m_addr, m_data);
+ LOG("DS1302 Read Clock %u:%02x\n", m_addr, m_data);
}
}
else
{
if (COMMAND_RAM)
{
- if (LOG) logerror("DS1302 '%s' Write RAM %u:%02x\n", tag(), m_addr, m_data);
+ LOG("DS1302 Write RAM %u:%02x\n", m_addr, m_data);
m_ram[m_addr] = m_data;
}
else if (m_addr < 9)
{
- if (LOG) logerror("DS1302 '%s' Write Clock %u:%02x\n", tag(), m_addr, m_data);
+ LOG("DS1302 Write Clock %u:%02x\n", m_addr, m_data);
m_reg[m_addr] = m_data;
}
@@ -265,7 +264,7 @@ void ds1302_device::input_bit()
if (m_bits == 8)
{
- if (LOG) logerror("DS1302 '%s' Command: %02x\n", tag(), m_cmd);
+ LOG("DS1302 Command: %02x\n", m_cmd);
m_bits = 0;
m_addr = (m_cmd >> 1) & 0x1f;
@@ -302,7 +301,7 @@ void ds1302_device::input_bit()
if (m_bits == 8)
{
- if (LOG) logerror("DS1302 '%s' Data: %02x\n", tag(), m_data);
+ LOG("DS1302 Data: %02x\n", m_data);
m_bits = 0;
@@ -373,7 +372,7 @@ void ds1302_device::output_bit()
WRITE_LINE_MEMBER( ds1302_device::sclk_w )
{
- if (LOG) logerror("DS1302 '%s' CLK: %u\n", tag(), state);
+ LOG("DS1302 CLK: %u\n", state);
if (!m_ce) return;
@@ -396,7 +395,7 @@ WRITE_LINE_MEMBER( ds1302_device::sclk_w )
WRITE_LINE_MEMBER( ds1302_device::io_w )
{
- if (LOG) logerror("DS1302 '%s' I/O: %u\n", tag(), state);
+ LOG("DS1302 I/O: %u\n", state);
m_io = state;
}
diff --git a/src/devices/machine/ds1302.h b/src/devices/machine/ds1302.h
index 9bc0f5c23b1..9d12f2498b1 100644
--- a/src/devices/machine/ds1302.h
+++ b/src/devices/machine/ds1302.h
@@ -13,10 +13,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_DS1302_H
+#define MAME_MACHINE_DS1302_H
-#ifndef __DS1302_H__
-#define __DS1302_H__
+#pragma once
#include "dirtc.h"
@@ -89,8 +89,6 @@ private:
// device type definition
-extern const device_type DS1302;
-
-
+DECLARE_DEVICE_TYPE(DS1302, ds1302_device)
-#endif
+#endif // MAME_MACHINE_DS1302_H
diff --git a/src/devices/machine/ds1315.cpp b/src/devices/machine/ds1315.cpp
index 6056f4e075e..7be26b1a19e 100644
--- a/src/devices/machine/ds1315.cpp
+++ b/src/devices/machine/ds1315.cpp
@@ -26,10 +26,10 @@
#include "coreutil.h"
-const device_type DS1315 = device_creator<ds1315_device>;
+DEFINE_DEVICE_TYPE(DS1315, ds1315_device, "ds1315", "Dallas DS1315 Phantom Time Chip")
ds1315_device::ds1315_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DS1315, "Dallas Semiconductor DS1315", tag, owner, clock, "ds1315", __FILE__), m_mode(), m_count(0)
+ : device_t(mconfig, DS1315, tag, owner, clock), m_mode(), m_count(0)
{
}
diff --git a/src/devices/machine/ds1315.h b/src/devices/machine/ds1315.h
index 6897bfc0091..4e45a1e5ca2 100644
--- a/src/devices/machine/ds1315.h
+++ b/src/devices/machine/ds1315.h
@@ -10,8 +10,10 @@
*********************************************************************/
-#ifndef __DS1315_H__
-#define __DS1315_H__
+#ifndef MAME_MACHINE_DS1315_H
+#define MAME_MACHINE_DS1315_H
+
+#pragma once
@@ -19,17 +21,15 @@
MACROS
***************************************************************************/
-enum ds1315_mode_t
-{
- DS_SEEK_MATCHING,
- DS_CALENDAR_IO
-};
-
-ALLOW_SAVE_TYPE(ds1315_mode_t);
-
class ds1315_device : public device_t
{
public:
+ enum mode_t
+ {
+ DS_SEEK_MATCHING,
+ DS_CALENDAR_IO
+ };
+
ds1315_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~ds1315_device() {}
@@ -48,7 +48,7 @@ protected:
private:
// internal state
- ds1315_mode_t m_mode;
+ mode_t m_mode;
void fill_raw_data();
void input_raw_data();
@@ -57,7 +57,9 @@ private:
uint8_t m_raw_data[8*8];
};
-extern const device_type DS1315;
+ALLOW_SAVE_TYPE(ds1315_device::mode_t);
+
+DECLARE_DEVICE_TYPE(DS1315, ds1315_device)
/***************************************************************************
DEVICE CONFIGURATION MACROS
@@ -67,4 +69,4 @@ extern const device_type DS1315;
MCFG_DEVICE_ADD(_tag, DS1315, 0)
-#endif /* __DS1315_H__ */
+#endif // MAME_MACHINE_DS1315_H
diff --git a/src/devices/machine/ds1386.cpp b/src/devices/machine/ds1386.cpp
index 74c5d14fdf5..82c8fd55882 100644
--- a/src/devices/machine/ds1386.cpp
+++ b/src/devices/machine/ds1386.cpp
@@ -27,11 +27,11 @@
#define HOURS_12_24 (0x40)
#define HOURS_AM_PM (0x20)
-const device_type DS1386_8K = device_creator<ds1386_8k_device>;
-const device_type DS1386_32K = device_creator<ds1386_32k_device>;
+DEFINE_DEVICE_TYPE(DS1386_8K, ds1386_8k_device, "ds1386_8k", "DS1386 RAMified Watchdog Timekeeper (8K)")
+DEFINE_DEVICE_TYPE(DS1386_32K, ds1386_32k_device, "ds1386_32k", "DS1386 RAMified Watchdog Timekeeper (32K)")
-ds1386_device::ds1386_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, size_t size)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+ds1386_device::ds1386_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, size_t size)
+ : device_t(mconfig, type, tag, owner, clock)
, device_nvram_interface(mconfig, *this)
, m_tod_alarm(0)
, m_watchdog_alarm(0)
@@ -61,12 +61,12 @@ ds1386_device::ds1386_device(const machine_config &mconfig, device_type type, co
}
ds1386_8k_device::ds1386_8k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ds1386_device(mconfig, DS1386_8K, "DS1386-8K", tag, owner, clock, "ds1386_8k", 8192)
+ : ds1386_device(mconfig, DS1386_8K, tag, owner, clock, 8*1024)
{
}
ds1386_32k_device::ds1386_32k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ds1386_device(mconfig, DS1386_32K, "DS1386-32K", tag, owner, clock, "ds1386_32k", 32768)
+ : ds1386_device(mconfig, DS1386_32K, tag, owner, clock, 32*1024)
{
}
diff --git a/src/devices/machine/ds1386.h b/src/devices/machine/ds1386.h
index e7d0b6aaea6..12f2ad11016 100644
--- a/src/devices/machine/ds1386.h
+++ b/src/devices/machine/ds1386.h
@@ -51,10 +51,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_DS1386_H
+#define MAME_MACHINE_DS1386_H
-#ifndef DS1386_H
-#define DS1386_H
+#pragma once
// handlers
@@ -80,8 +80,6 @@ class ds1386_device : public device_t,
public device_nvram_interface
{
public:
- ds1386_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, size_t size);
-
DECLARE_WRITE8_MEMBER( data_w );
DECLARE_READ8_MEMBER( data_r );
@@ -89,9 +87,9 @@ public:
DECLARE_WRITE_LINE_MEMBER( oe_w );
DECLARE_WRITE_LINE_MEMBER( we_w );
- template<class _Object> static devcb_base &set_inta_cb(device_t &device, _Object object) { return downcast<ds1386_device &>(device).m_inta_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_intb_cb(device_t &device, _Object object) { return downcast<ds1386_device &>(device).m_intb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_sqw_cb(device_t &device, _Object object) { return downcast<ds1386_device &>(device).m_sqw_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_inta_cb(device_t &device, Object &&cb) { return downcast<ds1386_device &>(device).m_inta_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_intb_cb(device_t &device, Object &&cb) { return downcast<ds1386_device &>(device).m_intb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sqw_cb(device_t &device, Object &&cb) { return downcast<ds1386_device &>(device).m_sqw_cb.set_callback(std::forward<Object>(cb)); }
protected:
enum
@@ -122,6 +120,8 @@ protected:
ALARM_PER_MINUTE = 0x7
};
+ ds1386_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, size_t size);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -132,11 +132,11 @@ protected:
virtual void nvram_read(emu_file &file) override;
virtual void nvram_write(emu_file &file) override;
- static const device_timer_id CLOCK_TIMER = 0;
- static const device_timer_id SQUAREWAVE_TIMER = 1;
- static const device_timer_id WATCHDOG_TIMER = 2;
- static const device_timer_id INTA_TIMER = 3;
- static const device_timer_id INTB_TIMER = 4;
+ static constexpr device_timer_id CLOCK_TIMER = 0;
+ static constexpr device_timer_id SQUAREWAVE_TIMER = 1;
+ static constexpr device_timer_id WATCHDOG_TIMER = 2;
+ static constexpr device_timer_id INTA_TIMER = 3;
+ static constexpr device_timer_id INTB_TIMER = 4;
protected:
void safe_inta_cb(int state);
@@ -203,7 +203,7 @@ public:
};
// device type definition
-extern const device_type DS1386_8K;
-extern const device_type DS1386_32K;
+DECLARE_DEVICE_TYPE(DS1386_8K, ds1386_8k_device)
+DECLARE_DEVICE_TYPE(DS1386_32K, ds1386_32k_device)
-#endif
+#endif // MAME_MACHINE_DS1386_H
diff --git a/src/devices/machine/ds2401.cpp b/src/devices/machine/ds2401.cpp
index c0a6b4bce00..bb1a3064dad 100644
--- a/src/devices/machine/ds2401.cpp
+++ b/src/devices/machine/ds2401.cpp
@@ -27,10 +27,12 @@ inline void ds2401_device::verboselog(int n_level, const char *s_fmt, ...)
}
// device type definition
-const device_type DS2401 = device_creator<ds2401_device>;
+DEFINE_DEVICE_TYPE(DS2401, ds2401_device, "ds2401", "DS2401 Silicon Serial Number")
ds2401_device::ds2401_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DS2401, "DS2401", tag, owner, clock, "ds2401", __FILE__), m_state(0), m_bit(0), m_shift(0), m_byte(0), m_rx(false), m_tx(false), m_timer_main(nullptr), m_timer_reset(nullptr)
+ : device_t(mconfig, DS2401, tag, owner, clock)
+ , m_state(0), m_bit(0), m_shift(0), m_byte(0), m_rx(false), m_tx(false)
+ , m_timer_main(nullptr), m_timer_reset(nullptr)
{
}
diff --git a/src/devices/machine/ds2401.h b/src/devices/machine/ds2401.h
index d67c17221ac..44f8d1485a1 100644
--- a/src/devices/machine/ds2401.h
+++ b/src/devices/machine/ds2401.h
@@ -8,8 +8,10 @@
*
*/
-#ifndef __DS2401_H__
-#define __DS2401_H__
+#ifndef MAME_MACHINE_DS2401_H
+#define MAME_MACHINE_DS2401_H
+
+#pragma once
#define MCFG_DS2401_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, DS2401, 0)
@@ -66,6 +68,6 @@ private:
// device type definition
-extern const device_type DS2401;
+DECLARE_DEVICE_TYPE(DS2401, ds2401_device)
-#endif
+#endif // MAME_MACHINE_DS2401_H
diff --git a/src/devices/machine/ds2404.cpp b/src/devices/machine/ds2404.cpp
index 7d1dbfcf103..081107d1651 100644
--- a/src/devices/machine/ds2404.cpp
+++ b/src/devices/machine/ds2404.cpp
@@ -18,14 +18,14 @@
//**************************************************************************
// device type definition
-const device_type DS2404 = device_creator<ds2404_device>;
+DEFINE_DEVICE_TYPE(DS2404, ds2404_device, "ds2404", "DS2404")
//-------------------------------------------------
// ds2404_device - constructor
//-------------------------------------------------
ds2404_device::ds2404_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DS2404, "DS2404", tag, owner, clock, "ds2404", __FILE__),
+ : device_t(mconfig, DS2404, tag, owner, clock),
device_nvram_interface(mconfig, *this), m_tick_timer(nullptr), m_ref_year(0), m_ref_month(0), m_ref_day(0),
m_address(0),
m_offset(0),
diff --git a/src/devices/machine/ds2404.h b/src/devices/machine/ds2404.h
index 237aeae176f..97d2914e9c4 100644
--- a/src/devices/machine/ds2404.h
+++ b/src/devices/machine/ds2404.h
@@ -8,10 +8,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_DS2404_H
+#define MAME_MACHINE_DS2404_H
-#ifndef __DS2404_H__
-#define __DS2404_H__
+#pragma once
@@ -43,8 +43,7 @@
// ======================> ds2404_device
-class ds2404_device : public device_t,
- public device_nvram_interface
+class ds2404_device : public device_t, public device_nvram_interface
{
public:
// construction/destruction
@@ -80,7 +79,6 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
-
void ds2404_rom_cmd(uint8_t cmd);
void ds2404_cmd(uint8_t cmd);
@@ -122,7 +120,6 @@ private:
// device type definition
-extern const device_type DS2404;
-
+DECLARE_DEVICE_TYPE(DS2404, ds2404_device)
-#endif /* __DS2404_H__ */
+#endif // MAME_MACHINE_DS2404_H
diff --git a/src/devices/machine/ds75160a.cpp b/src/devices/machine/ds75160a.cpp
index 1accfc2ace2..d698fedca4a 100644
--- a/src/devices/machine/ds75160a.cpp
+++ b/src/devices/machine/ds75160a.cpp
@@ -15,7 +15,7 @@
// DEVICE TYPE DEFINITIONS
//**************************************************************************
-const device_type DS75160A = device_creator<ds75160a_device>;
+DEFINE_DEVICE_TYPE(DS75160A, ds75160a_device, "ds75160a", "DS75160A GPIB Transceiver")
@@ -28,7 +28,7 @@ const device_type DS75160A = device_creator<ds75160a_device>;
//-------------------------------------------------
ds75160a_device::ds75160a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DS75160A, "DS75160A", tag, owner, clock, "ds75160a", __FILE__),
+ : device_t(mconfig, DS75160A, tag, owner, clock),
m_read(*this),
m_write(*this),
m_data(0xff),
diff --git a/src/devices/machine/ds75160a.h b/src/devices/machine/ds75160a.h
index 82caff1dd20..85ee2727809 100644
--- a/src/devices/machine/ds75160a.h
+++ b/src/devices/machine/ds75160a.h
@@ -19,10 +19,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_DS75160A_H
+#define MAME_MACHINE_DS75160A_H
-#ifndef __DS75160A__
-#define __DS75160A__
+#pragma once
@@ -49,9 +49,9 @@ public:
// construction/destruction
ds75160a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _read, class _write> void set_callbacks(_read rd, _write wr) {
- m_read.set_callback(rd);
- m_write.set_callback(wr);
+ template <class Read, class Write> void set_callbacks(Read &&rd, Write &&wr) {
+ m_read.set_callback(std::forward<Read>(rd));
+ m_write.set_callback(std::forward<Write>(wr));
}
DECLARE_READ8_MEMBER( read );
@@ -76,8 +76,6 @@ private:
// device type definition
-extern const device_type DS75160A;
-
-
+DECLARE_DEVICE_TYPE(DS75160A, ds75160a_device)
-#endif
+#endif // MAME_MACHINE_DS75160A_H
diff --git a/src/devices/machine/ds75161a.cpp b/src/devices/machine/ds75161a.cpp
index 5c35c4717e2..9d75d6b65a0 100644
--- a/src/devices/machine/ds75161a.cpp
+++ b/src/devices/machine/ds75161a.cpp
@@ -15,7 +15,7 @@
// DEVICE TYPE DEFINITIONS
//**************************************************************************
-const device_type DS75161A = device_creator<ds75161a_device>;
+DEFINE_DEVICE_TYPE(DS75161A, ds75161a_device, "ds75161a", "DS75161A GPIB Transceiver")
@@ -28,7 +28,7 @@ const device_type DS75161A = device_creator<ds75161a_device>;
//-------------------------------------------------
ds75161a_device::ds75161a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DS75161A, "DS75161A", tag, owner, clock, "ds75161a", __FILE__),
+ : device_t(mconfig, DS75161A, tag, owner, clock),
m_in_ren_cb(*this),
m_in_ifc_cb(*this),
m_in_ndac_cb(*this),
diff --git a/src/devices/machine/ds75161a.h b/src/devices/machine/ds75161a.h
index 1cbc8564694..7a51ef8a81f 100644
--- a/src/devices/machine/ds75161a.h
+++ b/src/devices/machine/ds75161a.h
@@ -19,10 +19,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_DS75161A_H
+#define MAME_MACHINE_DS75161A_H
-#ifndef __DS75161A__
-#define __DS75161A__
+#pragma once
@@ -91,22 +91,22 @@ public:
// construction/destruction
ds75161a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_in_ren_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_ren_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ifc_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_ifc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ndac_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_ndac_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_nrfd_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_nrfd_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_dav_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_dav_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_eoi_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_eoi_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_atn_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_atn_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_srq_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_srq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_ren_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_ren_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_ifc_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_ifc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_ndac_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_ndac_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_nrfd_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_nrfd_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dav_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_dav_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_eoi_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_eoi_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_atn_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_atn_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_srq_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_srq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_ren_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_ren_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_ifc_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_ifc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_ndac_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_ndac_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_nrfd_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_nrfd_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_dav_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_dav_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_eoi_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_eoi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_atn_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_atn_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_srq_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_in_srq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_ren_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_ren_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_ifc_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_ifc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_ndac_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_ndac_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_nrfd_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_nrfd_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dav_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_dav_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_eoi_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_eoi_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_atn_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_atn_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_srq_callback(device_t &device, Object &&cb) { return downcast<ds75161a_device &>(device).m_out_srq_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( te_w );
DECLARE_WRITE_LINE_MEMBER( dc_w );
@@ -169,8 +169,6 @@ private:
// device type definition
-extern const device_type DS75161A;
-
-
+DECLARE_DEVICE_TYPE(DS75161A, ds75161a_device)
-#endif
+#endif // MAME_MACHINE_DS75161A_H
diff --git a/src/devices/machine/e0516.cpp b/src/devices/machine/e0516.cpp
index d4b83533e5f..a5d029afe27 100644
--- a/src/devices/machine/e0516.cpp
+++ b/src/devices/machine/e0516.cpp
@@ -32,15 +32,17 @@ enum
//**************************************************************************
// device type definition
-const device_type E0516 = device_creator<e0516_device>;
+DEFINE_DEVICE_TYPE(E0516, e0516_device, "e0516", "E05-16 RTC")
//-------------------------------------------------
// e0516_device - constructor
//-------------------------------------------------
e0516_device::e0516_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, E0516, "E05-16", tag, owner, clock, "e0516", __FILE__),
- device_rtc_interface(mconfig, *this), m_cs(0), m_clk(0), m_data_latch(0), m_reg_latch(0), m_read_write(0), m_state(0), m_bits(0), m_dio(0), m_timer(nullptr)
+ : device_t(mconfig, E0516, tag, owner, clock)
+ , device_rtc_interface(mconfig, *this)
+ , m_cs(0), m_clk(0), m_data_latch(0), m_reg_latch(0), m_read_write(0), m_state(0), m_bits(0), m_dio(0)
+ , m_timer(nullptr)
{
}
diff --git a/src/devices/machine/e0516.h b/src/devices/machine/e0516.h
index 6760fd7f06c..46f97315f65 100644
--- a/src/devices/machine/e0516.h
+++ b/src/devices/machine/e0516.h
@@ -17,10 +17,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_E0516_H
+#define MAME_MACHINE_E0516_H
-#ifndef __E0516__
-#define __E0516__
+#pragma once
#include "dirtc.h"
@@ -41,8 +41,7 @@
// ======================> e0516_device
-class e0516_device : public device_t,
- public device_rtc_interface
+class e0516_device : public device_t, public device_rtc_interface
{
public:
// construction/destruction
@@ -77,8 +76,6 @@ private:
// device type definition
-extern const device_type E0516;
-
-
+DECLARE_DEVICE_TYPE(E0516, e0516_device)
-#endif
+#endif // MAME_MACHINE_E0516_H
diff --git a/src/devices/machine/e05a03.cpp b/src/devices/machine/e05a03.cpp
index b7c5d66bee2..e20e1b94cb6 100644
--- a/src/devices/machine/e05a03.cpp
+++ b/src/devices/machine/e05a03.cpp
@@ -14,10 +14,10 @@
DEVICE INTERFACE
*****************************************************************************/
-const device_type E05A03 = device_creator<e05a03_device>;
+DEFINE_DEVICE_TYPE(E05A03, e05a03_device, "e05a03", "Epson E05A03 Gate Array")
e05a03_device::e05a03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, E05A03, "E05A03", tag, owner, clock, "e05a03", __FILE__),
+ : device_t(mconfig, E05A03, tag, owner, clock),
m_write_nlq_lp(*this),
m_write_pe_lp(*this),
m_write_reso(*this),
diff --git a/src/devices/machine/e05a03.h b/src/devices/machine/e05a03.h
index 07f84299143..5e8fbd28e92 100644
--- a/src/devices/machine/e05a03.h
+++ b/src/devices/machine/e05a03.h
@@ -6,8 +6,10 @@
***************************************************************************/
-#ifndef __E05A03_H__
-#define __E05A03_H__
+#ifndef MAME_MACHINE_E05A03_H
+#define MAME_MACHINE_E05A03_H
+
+#pragma once
/***************************************************************************
DEVICE CONFIGURATION MACROS
@@ -37,13 +39,12 @@ class e05a03_device : public device_t
{
public:
e05a03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~e05a03_device() {}
- template<class _Object> static devcb_base &set_nlq_lp_wr_callback(device_t &device, _Object object) { return downcast<e05a03_device &>(device).m_write_nlq_lp.set_callback(object); }
- template<class _Object> static devcb_base &set_pe_lp_wr_callback(device_t &device, _Object object) { return downcast<e05a03_device &>(device).m_write_pe_lp.set_callback(object); }
- template<class _Object> static devcb_base &set_reso_wr_callback(device_t &device, _Object object) { return downcast<e05a03_device &>(device).m_write_reso.set_callback(object); }
- template<class _Object> static devcb_base &set_pe_wr_callback(device_t &device, _Object object) { return downcast<e05a03_device &>(device).m_write_pe.set_callback(object); }
- template<class _Object> static devcb_base &set_data_rd_callback(device_t &device, _Object object) { return downcast<e05a03_device &>(device).m_read_data.set_callback(object); }
+ template <class Object> static devcb_base &set_nlq_lp_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_nlq_lp.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pe_lp_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_pe_lp.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_reso_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_reso.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pe_wr_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_write_pe.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data_rd_callback(device_t &device, Object &&cb) { return downcast<e05a03_device &>(device).m_read_data.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( read );
@@ -93,7 +94,6 @@ private:
uint8_t m_cr_motor;
};
-extern const device_type E05A03;
-
+DECLARE_DEVICE_TYPE(E05A03, e05a03_device)
-#endif /* __E05A03_H__ */
+#endif // MAME_MACHINE_E05A03_H
diff --git a/src/devices/machine/e05a30.cpp b/src/devices/machine/e05a30.cpp
index 5ff64619ffa..a9b59f41d02 100644
--- a/src/devices/machine/e05a30.cpp
+++ b/src/devices/machine/e05a30.cpp
@@ -8,22 +8,18 @@
#include "emu.h"
#include "e05a30.h"
-//#define E05A30DEBUG
-#ifdef E05A30DEBUG
-#define LOG(...) fprintf(stderr, __VA_ARGS__)
-#else
-#define LOG(...)
-#endif
+//#define VERBOSE 1
+#include "logmacro.h"
/*****************************************************************************
DEVICE INTERFACE
*****************************************************************************/
-const device_type E05A30 = device_creator<e05a30_device>;
+DEFINE_DEVICE_TYPE(E05A30, e05a30_device, "e05a30", "Epson E05A30 Gate Array")
e05a30_device::e05a30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, E05A30, "E05A30", tag, owner, clock, "e05a30", __FILE__),
+ : device_t(mconfig, E05A30, tag, owner, clock),
m_write_printhead(*this),
m_write_pf_stepper(*this),
m_write_cr_stepper(*this),
diff --git a/src/devices/machine/e05a30.h b/src/devices/machine/e05a30.h
index f5f396f63fd..66ec9c92ed0 100644
--- a/src/devices/machine/e05a30.h
+++ b/src/devices/machine/e05a30.h
@@ -5,8 +5,8 @@
*
*/
-#ifndef __E05A30_H__
-#define __E05A30_H__
+#ifndef MAME_MACHINE_E05A30_H
+#define MAME_MACHINE_E05A30_H
/***************************************************************************
DEVICE CONFIGURATION MACROS
@@ -47,17 +47,16 @@ class e05a30_device : public device_t
{
public:
e05a30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~e05a30_device() {}
-
- template<class _Object> static devcb_base &set_printhead_wr_callback(device_t &device, _Object object) { return downcast<e05a30_device &>(device).m_write_printhead.set_callback(object); }
- template<class _Object> static devcb_base &set_pf_stepper_wr_callback(device_t &device, _Object object) { return downcast<e05a30_device &>(device).m_write_pf_stepper.set_callback(object); }
- template<class _Object> static devcb_base &set_cr_stepper_wr_callback(device_t &device, _Object object) { return downcast<e05a30_device &>(device).m_write_cr_stepper.set_callback(object); }
- template<class _Object> static devcb_base &set_ready_wr_callback(device_t &device, _Object object) { return downcast<e05a30_device &>(device).m_write_ready.set_callback(object); }
- template<class _Object> static devcb_base &set_centronics_ack_wr_callback(device_t &device, _Object object) { return downcast<e05a30_device &>(device).m_write_centronics_ack.set_callback(object); }
- template<class _Object> static devcb_base &set_centronics_busy_wr_callback(device_t &device, _Object object) { return downcast<e05a30_device &>(device).m_write_centronics_busy.set_callback(object); }
- template<class _Object> static devcb_base &set_centronics_perror_wr_callback(device_t &device, _Object object) { return downcast<e05a30_device &>(device).m_write_centronics_perror.set_callback(object); }
- template<class _Object> static devcb_base &set_centronics_fault_wr_callback(device_t &device, _Object object) { return downcast<e05a30_device &>(device).m_write_centronics_fault.set_callback(object); }
- template<class _Object> static devcb_base &set_centronics_select_wr_callback(device_t &device, _Object object) { return downcast<e05a30_device &>(device).m_write_centronics_select.set_callback(object); }
+
+ template <class Object> static devcb_base &set_printhead_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_printhead.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pf_stepper_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_pf_stepper.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cr_stepper_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_cr_stepper.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_ready.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_centronics_ack_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_ack.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_centronics_busy_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_busy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_centronics_perror_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_perror.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_centronics_fault_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_fault.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_centronics_select_wr_callback(device_t &device, Object &&cb) { return downcast<e05a30_device &>(device).m_write_centronics_select.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( read );
@@ -110,6 +109,6 @@ private:
uint8_t m_centronics_data_latched;
};
-extern const device_type E05A30;
+DECLARE_DEVICE_TYPE(E05A30, e05a30_device)
-#endif /* __E05A30_H__ */
+#endif // MAME_MACHINE_E05A30_H
diff --git a/src/devices/machine/eeprom.cpp b/src/devices/machine/eeprom.cpp
index f737e7a5c03..48bed1af960 100644
--- a/src/devices/machine/eeprom.cpp
+++ b/src/devices/machine/eeprom.cpp
@@ -11,14 +11,8 @@
#include "emu.h"
#include "machine/eeprom.h"
-
-
-//**************************************************************************
-// DEBUGGING
-//**************************************************************************
-
-#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
@@ -29,8 +23,8 @@
// eeprom_base_device - constructor
//-------------------------------------------------
-eeprom_base_device::eeprom_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file)
- : device_t(mconfig, devtype, name, tag, owner, 0, shortname, file),
+eeprom_base_device::eeprom_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner)
+ : device_t(mconfig, devtype, tag, owner, 0),
device_nvram_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
m_cells(0),
diff --git a/src/devices/machine/eeprom.h b/src/devices/machine/eeprom.h
index e386d5f42cf..2c2fb68f7d1 100644
--- a/src/devices/machine/eeprom.h
+++ b/src/devices/machine/eeprom.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_EEPROM_H
+#define MAME_MACHINE_EEPROM_H
-#ifndef __EEPROM_H__
-#define __EEPROM_H__
+#pragma once
@@ -46,10 +46,6 @@
class eeprom_base_device : public device_t,
public device_nvram_interface
{
-protected:
- // construction/destruction
- eeprom_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file);
-
public:
// timing constants
enum timing_type
@@ -83,6 +79,9 @@ public:
void internal_write(offs_t address, uint32_t data);
protected:
+ // construction/destruction
+ eeprom_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner);
+
// device-level overrides
virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_start() override;
@@ -111,5 +110,4 @@ protected:
attotime m_completion_time;
};
-
-#endif
+#endif // MAME_MACHINE_EEPROM_H
diff --git a/src/devices/machine/eeprompar.cpp b/src/devices/machine/eeprompar.cpp
index 46b721d2983..5e63b320add 100644
--- a/src/devices/machine/eeprompar.cpp
+++ b/src/devices/machine/eeprompar.cpp
@@ -51,8 +51,8 @@
// eeprom_parallel_base_device - constructor
//-------------------------------------------------
-eeprom_parallel_base_device::eeprom_parallel_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file)
- : eeprom_base_device(mconfig, devtype, name, tag, owner, shortname, file)
+eeprom_parallel_base_device::eeprom_parallel_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner)
+ : eeprom_base_device(mconfig, devtype, tag, owner)
{
}
@@ -88,8 +88,8 @@ void eeprom_parallel_base_device::device_reset()
// eeprom_parallel_28xx_device - constructor
//-------------------------------------------------
-eeprom_parallel_28xx_device::eeprom_parallel_28xx_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file)
- : eeprom_parallel_base_device(mconfig, devtype, name, tag, owner, shortname, file)
+eeprom_parallel_28xx_device::eeprom_parallel_28xx_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner)
+ : eeprom_parallel_base_device(mconfig, devtype, tag, owner)
{
}
@@ -117,11 +117,12 @@ READ8_MEMBER(eeprom_parallel_28xx_device::read)
// macro for defining a new device class
#define DEFINE_PARALLEL_EEPROM_DEVICE(_baseclass, _lowercase, _uppercase, _bits, _cells) \
eeprom_parallel_##_lowercase##_device::eeprom_parallel_##_lowercase##_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) \
- : eeprom_parallel_##_baseclass##_device(mconfig, EEPROM_PARALLEL_##_uppercase, "Parallel EEPROM " #_uppercase " (" #_cells "x" #_bits ")", tag, owner, #_lowercase, __FILE__) \
+ : eeprom_parallel_##_baseclass##_device(mconfig, EEPROM_PARALLEL_##_uppercase, tag, owner) \
{ \
static_set_size(*this, _cells, _bits); \
} \
-const device_type EEPROM_PARALLEL_##_uppercase = device_creator<eeprom_parallel_##_lowercase##_device>;
+DEFINE_DEVICE_TYPE(EEPROM_PARALLEL_##_uppercase, eeprom_parallel_##_lowercase##_device, #_lowercase, "Parallel EEPROM " #_uppercase " (" #_cells "x" #_bits ")")
+
// standard 28XX class of 8-bit EEPROMs
DEFINE_PARALLEL_EEPROM_DEVICE(28xx, 2804, 2804, 8, 512)
DEFINE_PARALLEL_EEPROM_DEVICE(28xx, 2816, 2816, 8, 2048)
diff --git a/src/devices/machine/eeprompar.h b/src/devices/machine/eeprompar.h
index e70f22c062b..a440780a009 100644
--- a/src/devices/machine/eeprompar.h
+++ b/src/devices/machine/eeprompar.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_EEPROMPAR_H
+#define MAME_MACHINE_EEPROMPAR_H
-#ifndef __EEPROMPAR_H__
-#define __EEPROMPAR_H__
+#pragma once
#include "eeprom.h"
@@ -51,9 +51,8 @@ class eeprom_parallel_base_device : public eeprom_base_device
{
protected:
// construction/destruction
- eeprom_parallel_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file);
+ eeprom_parallel_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner);
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -65,15 +64,15 @@ protected:
class eeprom_parallel_28xx_device : public eeprom_parallel_base_device
{
-protected:
- // construction/destruction
- eeprom_parallel_28xx_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file);
-
public:
// read/write data lines - for now we cheat and ignore the control lines, assuming
// they are handled reasonably
DECLARE_WRITE8_MEMBER(write);
DECLARE_READ8_MEMBER(read);
+
+protected:
+ // construction/destruction
+ eeprom_parallel_28xx_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner);
};
@@ -89,7 +88,8 @@ class eeprom_parallel_##_lowercase##_device : public eeprom_parallel_##_baseclas
public: \
eeprom_parallel_##_lowercase##_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); \
}; \
-extern const device_type EEPROM_PARALLEL_##_uppercase;
+DECLARE_DEVICE_TYPE(EEPROM_PARALLEL_##_uppercase, eeprom_parallel_##_lowercase_device)
+
// standard 28XX class of 8-bit EEPROMs
DECLARE_PARALLEL_EEPROM_DEVICE(28xx, 2804, 2804)
DECLARE_PARALLEL_EEPROM_DEVICE(28xx, 2816, 2816)
@@ -100,4 +100,4 @@ DECLARE_PARALLEL_EEPROM_DEVICE(28xx, 28010, 28010)
DECLARE_PARALLEL_EEPROM_DEVICE(28xx, 28020, 28020)
DECLARE_PARALLEL_EEPROM_DEVICE(28xx, 28040, 28040)
-#endif
+#endif // MAME_MACHINE_EEPROMPAR_H
diff --git a/src/devices/machine/eepromser.cpp b/src/devices/machine/eepromser.cpp
index d950bf0d0ec..74d51e980f3 100644
--- a/src/devices/machine/eepromser.cpp
+++ b/src/devices/machine/eepromser.cpp
@@ -118,11 +118,11 @@
#define VERBOSE_PRINTF 0
#define VERBOSE_LOGERROR 0
-#define LOG0(x) do { if (VERBOSE_PRINTF >= 1) printf x; logerror x; } while (0)
-#define LOG1(x) do { if (VERBOSE_PRINTF >= 1) printf x; if (VERBOSE_LOGERROR >= 1) logerror x; } while (0)
-#define LOG2(x) do { if (VERBOSE_PRINTF >= 2) printf x; if (VERBOSE_LOGERROR >= 2) logerror x; } while (0)
-#define LOG3(x) do { if (VERBOSE_PRINTF >= 3) printf x; if (VERBOSE_LOGERROR >= 3) logerror x; } while (0)
-#define LOG4(x) do { if (VERBOSE_PRINTF >= 4) printf x; if (VERBOSE_LOGERROR >= 4) logerror x; } while (0)
+#define LOG0(...) do { if (VERBOSE_PRINTF >= 1) printf(__VA_ARGS__); logerror(__VA_ARGS__); } while (0)
+#define LOG1(...) do { if (VERBOSE_PRINTF >= 1) printf(__VA_ARGS__); if (VERBOSE_LOGERROR >= 1) logerror(__VA_ARGS__); } while (0)
+#define LOG2(...) do { if (VERBOSE_PRINTF >= 2) printf(__VA_ARGS__); if (VERBOSE_LOGERROR >= 2) logerror(__VA_ARGS__); } while (0)
+#define LOG3(...) do { if (VERBOSE_PRINTF >= 3) printf(__VA_ARGS__); if (VERBOSE_LOGERROR >= 3) logerror(__VA_ARGS__); } while (0)
+#define LOG4(...) do { if (VERBOSE_PRINTF >= 4) printf(__VA_ARGS__); if (VERBOSE_LOGERROR >= 4) logerror(__VA_ARGS__); } while (0)
@@ -143,8 +143,8 @@ ALLOW_SAVE_TYPE(eeprom_serial_base_device::eeprom_state);
// eeprom_serial_base_device - constructor
//-------------------------------------------------
-eeprom_serial_base_device::eeprom_serial_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file)
- : eeprom_base_device(mconfig, devtype, name, tag, owner, shortname, file),
+eeprom_serial_base_device::eeprom_serial_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner)
+ : eeprom_base_device(mconfig, devtype, tag, owner),
m_command_address_bits(0),
m_streaming_enabled(false),
m_output_on_falling_clock_enabled(false),
@@ -264,7 +264,7 @@ void eeprom_serial_base_device::base_cs_write(int state)
return;
// set the new state
- LOG4((" cs_write(%d)\n", state));
+ LOG4(" cs_write(%d)\n", state);
m_cs_state = state;
// remember the rising edge time so we don't process CLK signals at the same time
@@ -287,7 +287,7 @@ void eeprom_serial_base_device::base_clk_write(int state)
return;
// set the new state
- LOG4((" clk_write(%d)\n", state));
+ LOG4(" clk_write(%d)\n", state);
m_clk_state = state;
handle_event((m_clk_state == ASSERT_LINE) ? EVENT_CLK_RISING_EDGE : EVENT_CLK_FALLING_EDGE);
}
@@ -301,8 +301,8 @@ void eeprom_serial_base_device::base_clk_write(int state)
void eeprom_serial_base_device::base_di_write(int state)
{
if (state != 0 && state != 1)
- LOG0(("EEPROM: Unexpected data at input 0x%X treated as %d\n", state, state & 1));
- LOG3((" di_write(%d)\n", state));
+ LOG0("EEPROM: Unexpected data at input 0x%X treated as %d\n", state, state & 1);
+ LOG3(" di_write(%d)\n", state);
m_di_state = state & 1;
}
@@ -318,7 +318,7 @@ int eeprom_serial_base_device::base_do_read()
// to send back a 1 value; the only exception is if reading data and the current output
// bit is a 0
int result = (m_state == STATE_READING_DATA && ((m_shift_register & 0x80000000) == 0)) ? CLEAR_LINE : ASSERT_LINE;
- LOG3((" do_read(%d)\n", result));
+ LOG3(" do_read(%d)\n", result);
return result;
}
@@ -332,7 +332,7 @@ int eeprom_serial_base_device::base_ready_read()
{
// ready by default, except during long operations
int result = ready() ? ASSERT_LINE : CLEAR_LINE;
- LOG3((" ready_read(%d)\n", result));
+ LOG3(" ready_read(%d)\n", result);
return result;
}
@@ -363,7 +363,7 @@ void eeprom_serial_base_device::set_state(eeprom_state newstate)
for (int index = 0; index < ARRAY_LENGTH(s_state_names); index++)
if (s_state_names[index].state == newstate)
newstate_string = s_state_names[index].string;
- LOG2(("New state: %s\n", newstate_string));
+ LOG2("New state: %s\n", newstate_string);
#endif
// switch to the new state
@@ -380,20 +380,20 @@ void eeprom_serial_base_device::handle_event(eeprom_event event)
{
#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0)
// for debugging purposes
- if ((event & EVENT_CS_RISING_EDGE) != 0) LOG2(("Event: CS rising\n"));
- if ((event & EVENT_CS_FALLING_EDGE) != 0) LOG2(("Event: CS falling\n"));
+ if ((event & EVENT_CS_RISING_EDGE) != 0) LOG2("Event: CS rising\n");
+ if ((event & EVENT_CS_FALLING_EDGE) != 0) LOG2("Event: CS falling\n");
if ((event & EVENT_CLK_RISING_EDGE) != 0)
{
if (m_state == STATE_WAIT_FOR_COMMAND || m_state == STATE_WAIT_FOR_DATA)
- LOG2(("Event: CLK rising (%d, DI=%d)\n", m_bits_accum + 1, m_di_state));
+ LOG2("Event: CLK rising (%d, DI=%d)\n", m_bits_accum + 1, m_di_state);
else if (m_state == STATE_READING_DATA)
- LOG2(("Event: CLK rising (%d, DO=%d)\n", m_bits_accum + 1, (m_shift_register >> 30) & 1));
+ LOG2("Event: CLK rising (%d, DO=%d)\n", m_bits_accum + 1, (m_shift_register >> 30) & 1);
else if (m_state == STATE_WAIT_FOR_START_BIT)
- LOG2(("Event: CLK rising (%d)\n", m_di_state));
+ LOG2("Event: CLK rising (%d)\n", m_di_state);
else
- LOG2(("Event: CLK rising\n"));
+ LOG2("Event: CLK rising\n");
}
- if ((event & EVENT_CLK_FALLING_EDGE) != 0) LOG4(("Event: CLK falling\n"));
+ if ((event & EVENT_CLK_FALLING_EDGE) != 0) LOG4("Event: CLK falling\n");
#endif
// switch off the current state
@@ -448,13 +448,13 @@ void eeprom_serial_base_device::handle_event(eeprom_event event)
{
set_state(STATE_IN_RESET);
if (m_streaming_enabled)
- LOG1((" (%d cells read)\n", m_bits_accum / m_data_bits));
+ LOG1(" (%d cells read)\n", m_bits_accum / m_data_bits);
if (!m_streaming_enabled && m_bits_accum > m_data_bits + 1)
- LOG0(("EEPROM: Overclocked read by %d bits\n", m_bits_accum - m_data_bits));
+ LOG0("EEPROM: Overclocked read by %d bits\n", m_bits_accum - m_data_bits);
else if (m_streaming_enabled && m_bits_accum > m_data_bits + 1 && m_bits_accum % m_data_bits > 2)
- LOG0(("EEPROM: Overclocked read by %d bits\n", m_bits_accum % m_data_bits));
+ LOG0("EEPROM: Overclocked read by %d bits\n", m_bits_accum % m_data_bits);
else if (m_bits_accum < m_data_bits)
- LOG0(("EEPROM: CS deasserted in READING_DATA after %d bits\n", m_bits_accum));
+ LOG0("EEPROM: CS deasserted in READING_DATA after %d bits\n", m_bits_accum);
}
break;
@@ -469,7 +469,7 @@ void eeprom_serial_base_device::handle_event(eeprom_event event)
else if (event == EVENT_CS_FALLING_EDGE)
{
set_state(STATE_IN_RESET);
- LOG0(("EEPROM: CS deasserted in STATE_WAIT_FOR_DATA after %d bits\n", m_bits_accum));
+ LOG0("EEPROM: CS deasserted in STATE_WAIT_FOR_DATA after %d bits\n", m_bits_accum);
}
break;
@@ -510,7 +510,7 @@ void eeprom_serial_base_device::execute_command()
for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++)
if (s_command_names[index].command == m_command)
command_string = s_command_names[index].string;
- LOG1((command_string, m_address));
+ LOG1(command_string, m_address);
#endif
// each command advances differently
@@ -535,7 +535,7 @@ void eeprom_serial_base_device::execute_command()
case COMMAND_ERASE:
if (m_locked)
{
- LOG0(("EEPROM: Attempt to erase while locked\n"));
+ LOG0("EEPROM: Attempt to erase while locked\n");
set_state(STATE_IN_RESET);
break;
}
@@ -559,7 +559,7 @@ void eeprom_serial_base_device::execute_command()
case COMMAND_ERASEALL:
if (m_locked)
{
- LOG0(("EEPROM: Attempt to erase all while locked\n"));
+ LOG0("EEPROM: Attempt to erase all while locked\n");
set_state(STATE_IN_RESET);
break;
}
@@ -591,7 +591,7 @@ void eeprom_serial_base_device::execute_write_command()
for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++)
if (s_command_names[index].command == m_command)
command_string = s_command_names[index].string;
- LOG1((command_string, m_address, m_shift_register));
+ LOG1(command_string, m_address, m_shift_register);
#endif
// each command advances differently
@@ -601,7 +601,7 @@ void eeprom_serial_base_device::execute_write_command()
case COMMAND_WRITE:
if (m_locked)
{
- LOG0(("EEPROM: Attempt to write to address 0x%X while locked\n", m_address));
+ LOG0("EEPROM: Attempt to write to address 0x%X while locked\n", m_address);
set_state(STATE_IN_RESET);
break;
}
@@ -614,7 +614,7 @@ void eeprom_serial_base_device::execute_write_command()
case COMMAND_WRITEALL:
if (m_locked)
{
- LOG0(("EEPROM: Attempt to write all while locked\n"));
+ LOG0("EEPROM: Attempt to write all while locked\n");
set_state(STATE_IN_RESET);
break;
}
@@ -637,8 +637,8 @@ void eeprom_serial_base_device::execute_write_command()
// eeprom_serial_93cxx_device - constructor
//-------------------------------------------------
-eeprom_serial_93cxx_device::eeprom_serial_93cxx_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file)
- : eeprom_serial_base_device(mconfig, devtype, name, tag, owner, shortname, file)
+eeprom_serial_93cxx_device::eeprom_serial_93cxx_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner)
+ : eeprom_serial_base_device(mconfig, devtype, tag, owner)
{
}
@@ -675,7 +675,7 @@ void eeprom_serial_93cxx_device::parse_command_and_address()
// warn about out-of-range addresses
if (m_address >= (1 << m_address_bits))
- LOG0(("EEPROM: out-of-range address 0x%X provided (maximum should be 0x%X)\n", m_address, (1 << m_address_bits) - 1));
+ LOG0("EEPROM: out-of-range address 0x%X provided (maximum should be 0x%X)\n", m_address, (1 << m_address_bits) - 1);
}
@@ -704,8 +704,8 @@ WRITE_LINE_MEMBER(eeprom_serial_93cxx_device::di_write) { base_di_write(state);
// eeprom_serial_er5911_device - constructor
//-------------------------------------------------
-eeprom_serial_er5911_device::eeprom_serial_er5911_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file)
- : eeprom_serial_base_device(mconfig, devtype, name, tag, owner, shortname, file)
+eeprom_serial_er5911_device::eeprom_serial_er5911_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner)
+ : eeprom_serial_base_device(mconfig, devtype, tag, owner)
{
}
@@ -742,7 +742,7 @@ void eeprom_serial_er5911_device::parse_command_and_address()
// warn about out-of-range addresses
if (m_address >= (1 << m_address_bits))
- LOG0(("EEPROM: out-of-range address 0x%X provided (maximum should be 0x%X)\n", m_address, (1 << m_address_bits) - 1));
+ LOG0("EEPROM: out-of-range address 0x%X provided (maximum should be 0x%X)\n", m_address, (1 << m_address_bits) - 1);
}
@@ -772,8 +772,8 @@ WRITE_LINE_MEMBER(eeprom_serial_er5911_device::di_write) { base_di_write(state);
// eeprom_serial_x24c44_device - constructor
//-------------------------------------------------
-eeprom_serial_x24c44_device::eeprom_serial_x24c44_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file)
- : eeprom_serial_base_device(mconfig, devtype, name, tag, owner, shortname, file)
+eeprom_serial_x24c44_device::eeprom_serial_x24c44_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner)
+ : eeprom_serial_base_device(mconfig, devtype, tag, owner)
{
}
@@ -819,7 +819,7 @@ void eeprom_serial_x24c44_device::device_start()
void eeprom_serial_x24c44_device::copy_eeprom_to_ram(){
uint16_t i=0;
- LOG1(("EEPROM TO RAM COPY!!!\n"));
+ LOG1("EEPROM TO RAM COPY!!!\n");
for (i=0;i<16;i++){
m_ram_data[i]=read(i);
}
@@ -831,13 +831,13 @@ void eeprom_serial_x24c44_device::copy_eeprom_to_ram(){
void eeprom_serial_x24c44_device::copy_ram_to_eeprom(){
uint16_t i=0;
if (m_store_latch){
- LOG1(("RAM TO EEPROM COPY\n"));
+ LOG1("RAM TO EEPROM COPY\n");
for (i=0;i<16;i++){
write(i, m_ram_data[i]);
}
m_store_latch=0;
}else{
- LOG0(("Store command with store latch not set!\n"));
+ LOG0("Store command with store latch not set!\n");
}
}
@@ -872,7 +872,7 @@ void eeprom_serial_x24c44_device::execute_command()
for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++)
if (s_command_names[index].command == m_command)
command_string = s_command_names[index].string;
- LOG1((command_string, m_address));
+ LOG1(command_string, m_address);
#endif
// each command advances differently
@@ -925,20 +925,20 @@ void eeprom_serial_x24c44_device::handle_event(eeprom_event event)
//uint32_t tmp=0;
#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0)
// for debugging purposes
- if ((event & EVENT_CS_RISING_EDGE) != 0) LOG2(("Event: CS rising\n"));
- if ((event & EVENT_CS_FALLING_EDGE) != 0) LOG2(("Event: CS falling\n"));
+ if ((event & EVENT_CS_RISING_EDGE) != 0) LOG2("Event: CS rising\n");
+ if ((event & EVENT_CS_FALLING_EDGE) != 0) LOG2("Event: CS falling\n");
if ((event & EVENT_CLK_RISING_EDGE) != 0)
{
if (m_state == STATE_WAIT_FOR_COMMAND || m_state == STATE_WAIT_FOR_DATA)
- LOG2(("Event: CLK rising (%d, DI=%d)\n", m_bits_accum + 1, m_di_state));
+ LOG2("Event: CLK rising (%d, DI=%d)\n", m_bits_accum + 1, m_di_state);
else if (m_state == STATE_READING_DATA)
- LOG2(("Event: CLK rising (%d, DO=%d)\n", m_bits_accum + 1, (m_shift_register >> 30) & 1));
+ LOG2("Event: CLK rising (%d, DO=%d)\n", m_bits_accum + 1, (m_shift_register >> 30) & 1);
else if (m_state == STATE_WAIT_FOR_START_BIT)
- LOG2(("Event: CLK rising (%d)\n", m_di_state));
+ LOG2("Event: CLK rising (%d)\n", m_di_state);
else
- LOG2(("Event: CLK rising\n"));
+ LOG2("Event: CLK rising\n");
}
- if ((event & EVENT_CLK_FALLING_EDGE) != 0) LOG4(("Event: CLK falling\n"));
+ if ((event & EVENT_CLK_FALLING_EDGE) != 0) LOG4("Event: CLK falling\n");
#endif
// switch off the current state
@@ -1005,9 +1005,10 @@ void eeprom_serial_x24c44_device::handle_event(eeprom_event event)
m_shift_register=m_shift_register<<16;
- LOG1(("read from RAM addr %02X data(from ram) %04X ,m_shift_register vale %04X \n",m_address,m_ram_data[m_address],m_shift_register));
- }
- else{
+ LOG1("read from RAM addr %02X data(from ram) %04X ,m_shift_register vale %04X \n",m_address,m_ram_data[m_address],m_shift_register);
+ }
+ else
+ {
m_shift_register = (m_shift_register << 1) | 1;
}
@@ -1017,13 +1018,13 @@ void eeprom_serial_x24c44_device::handle_event(eeprom_event event)
set_state(STATE_IN_RESET);
m_reading=0;
if (m_streaming_enabled)
- LOG1((" (%d cells read)\n", m_bits_accum / m_data_bits));
+ LOG1(" (%d cells read)\n", m_bits_accum / m_data_bits);
if (!m_streaming_enabled && m_bits_accum > m_data_bits + 1)
- LOG1(("EEPROM: Overclocked read by %d bits\n", m_bits_accum - m_data_bits));
+ LOG1("EEPROM: Overclocked read by %d bits\n", m_bits_accum - m_data_bits);
else if (m_streaming_enabled && m_bits_accum > m_data_bits + 1 && m_bits_accum % m_data_bits > 2)
- LOG1(("EEPROM: Overclocked read by %d bits\n", m_bits_accum % m_data_bits));
+ LOG1("EEPROM: Overclocked read by %d bits\n", m_bits_accum % m_data_bits);
else if (m_bits_accum < m_data_bits)
- LOG1(("EEPROM: CS deasserted in READING_DATA after %d bits\n", m_bits_accum));
+ LOG1("EEPROM: CS deasserted in READING_DATA after %d bits\n", m_bits_accum);
}
break;
@@ -1032,19 +1033,20 @@ void eeprom_serial_x24c44_device::handle_event(eeprom_event event)
if (event == EVENT_CLK_RISING_EDGE)
{
m_shift_register = (m_shift_register << 1) | m_di_state;
- if (++m_bits_accum == m_data_bits){
- //m_shift_register=BITSWAP16(m_shift_register, 0, 1, 2, 3, 4, 5,6,7, 8, 9,10,11,12,13,14,15);
- //m_shift_register=BITSWAP16(m_shift_register, 7, 6, 5, 4, 3, 2,1,0,15,14,13,12,11,10, 9, 8);
- m_shift_register=BITSWAP16(m_shift_register,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
- m_ram_data[m_address]=m_shift_register;
+ if (++m_bits_accum == m_data_bits)
+ {
+ //m_shift_register=BITSWAP16(m_shift_register, 0, 1, 2, 3, 4, 5,6,7, 8, 9,10,11,12,13,14,15);
+ //m_shift_register=BITSWAP16(m_shift_register, 7, 6, 5, 4, 3, 2,1,0,15,14,13,12,11,10, 9, 8);
+ m_shift_register=BITSWAP16(m_shift_register,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
+ m_ram_data[m_address]=m_shift_register;
- LOG1(("write to RAM addr=%02X data=%04X\n",m_address,m_shift_register));
+ LOG1("write to RAM addr=%02X data=%04X\n",m_address,m_shift_register);
}
}
else if (event == EVENT_CS_FALLING_EDGE)
{
set_state(STATE_IN_RESET);
- LOG1(("EEPROM: CS deasserted in STATE_WAIT_FOR_DATA after %d bits\n", m_bits_accum));
+ LOG1("EEPROM: CS deasserted in STATE_WAIT_FOR_DATA after %d bits\n", m_bits_accum);
}
break;
@@ -1072,48 +1074,53 @@ void eeprom_serial_x24c44_device::parse_command_and_address()
m_address = (m_command_address_accum >> 3) & 0x0f;
- LOG1(("EEPROM: command= %04X, address %02X\n", m_command_address_accum& 0x07, m_address));
+ LOG1("EEPROM: command= %04X, address %02X\n", m_command_address_accum& 0x07, m_address);
switch (m_command_address_accum & 0x07)
{
case 0: //reset write enable latch
- LOG0(("Lock eeprom\n"));
- m_command = COMMAND_LOCK; break;
+ LOG0("Lock eeprom\n");
+ m_command = COMMAND_LOCK;
+ break;
case 3: //write data into ram
- LOG0(("Write to ram\n"));
- m_command = COMMAND_WRITE; break;
+ LOG0("Write to ram\n");
+ m_command = COMMAND_WRITE;
+ break;
case 4: //set write enable latch
- LOG0(("Unlock eeprom\n"));
- m_command = COMMAND_UNLOCK; break;
+ LOG0("Unlock eeprom\n");
+ m_command = COMMAND_UNLOCK;
+ break;
case 1: //store ram data in eeprom
- LOG0(("copy ram to eeprom\n"));
- m_command = COMMAND_COPY_RAM_TO_EEPROM; break;
+ LOG0("copy ram to eeprom\n");
+ m_command = COMMAND_COPY_RAM_TO_EEPROM;
+ break;
case 5: //reload eeprom data into ram
- LOG0(("copy eeprom to ram\n"));
- m_command = COMMAND_COPY_EEPROM_TO_RAM; break;
+ LOG0("copy eeprom to ram\n");
+ m_command = COMMAND_COPY_EEPROM_TO_RAM;
+ break;
case 2: //reserved (Sleep on x2444)
m_command = COMMAND_INVALID;
- break;
-
+ break;
}
}
void eeprom_serial_x24c44_device::parse_command_and_address_2_bit()
{
- if ((m_command_address_accum & 0x03) == 0x03){
+ if ((m_command_address_accum & 0x03) == 0x03)
+ {
m_command = COMMAND_READ;
m_address = ((m_command_address_accum >> 2) & 0x0f);
m_shift_register = 0;
set_state(STATE_READING_DATA);
- LOG1(("parse command_and_address_2_bit found a read command\n"));
+ LOG1("parse command_and_address_2_bit found a read command\n");
m_reading=1;
m_bits_accum=0;
}
// warn about out-of-range addresses
if (m_address >= (1 << m_address_bits))
- LOG1(("EEPROM: out-of-range address 0x%X provided (maximum should be 0x%X)\n", m_address, (1 << m_address_bits) - 1));
+ LOG1("EEPROM: out-of-range address 0x%X provided (maximum should be 0x%X)\n", m_address, (1 << m_address_bits) - 1);
}
@@ -1140,12 +1147,13 @@ WRITE_LINE_MEMBER(eeprom_serial_x24c44_device::di_write) { base_di_write(state);
// macro for defining a new device class
#define DEFINE_SERIAL_EEPROM_DEVICE(_baseclass, _lowercase, _uppercase, _bits, _cells, _addrbits) \
eeprom_serial_##_lowercase##_##_bits##bit_device::eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) \
- : eeprom_serial_##_baseclass##_device(mconfig, EEPROM_SERIAL_##_uppercase##_##_bits##BIT, "Serial EEPROM " #_uppercase " (" #_cells "x" #_bits ")", tag, owner, #_lowercase "_" #_bits, __FILE__) \
+ : eeprom_serial_##_baseclass##_device(mconfig, EEPROM_SERIAL_##_uppercase##_##_bits##BIT, tag, owner) \
{ \
static_set_size(*this, _cells, _bits); \
static_set_address_bits(*this, _addrbits); \
} \
-const device_type EEPROM_SERIAL_##_uppercase##_##_bits##BIT = device_creator<eeprom_serial_##_lowercase##_##_bits##bit_device>;
+DEFINE_DEVICE_TYPE(EEPROM_SERIAL_##_uppercase##_##_bits##BIT, eeprom_serial_##_lowercase##_##_bits##bit_device, #_lowercase "_" #_bits, "Serial EEPROM " #_uppercase " (" #_cells "x" #_bits ")")
+
// standard 93CX6 class of 16-bit EEPROMs
DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c06, 93C06, 16, 16, 6)
DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 16, 64, 6)
diff --git a/src/devices/machine/eepromser.h b/src/devices/machine/eepromser.h
index 04b1d5e35c7..c82e36729a7 100644
--- a/src/devices/machine/eepromser.h
+++ b/src/devices/machine/eepromser.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_EEPROMSER_H
+#define MAME_MACHINE_EEPROMSER_H
-#ifndef __EEPROMSER_H__
-#define __EEPROMSER_H__
+#pragma once
#include "eeprom.h"
@@ -102,10 +102,6 @@
class eeprom_serial_base_device : public eeprom_base_device
{
-protected:
- // construction/destruction
- eeprom_serial_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file);
-
public:
// inline configuration helpers
static void static_set_address_bits(device_t &device, int addrbits);
@@ -113,6 +109,9 @@ public:
static void static_enable_output_on_falling_clock(device_t &device);
protected:
+ // construction/destruction
+ eeprom_serial_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -197,10 +196,6 @@ protected:
class eeprom_serial_93cxx_device : public eeprom_serial_base_device
{
-protected:
- // construction/destruction
- eeprom_serial_93cxx_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file);
-
public:
// read handlers
DECLARE_READ_LINE_MEMBER(do_read); // combined DO+READY/BUSY
@@ -211,6 +206,9 @@ public:
DECLARE_WRITE_LINE_MEMBER(di_write); // DI
protected:
+ // construction/destruction
+ eeprom_serial_93cxx_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner);
+
// subclass overrides
virtual void parse_command_and_address() override;
};
@@ -220,10 +218,6 @@ protected:
class eeprom_serial_er5911_device : public eeprom_serial_base_device
{
-protected:
- // construction/destruction
- eeprom_serial_er5911_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file);
-
public:
// read handlers
DECLARE_READ_LINE_MEMBER(do_read); // DO
@@ -235,6 +229,9 @@ public:
DECLARE_WRITE_LINE_MEMBER(di_write); // DI
protected:
+ // construction/destruction
+ eeprom_serial_er5911_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner);
+
// subclass overrides
virtual void parse_command_and_address() override;
};
@@ -246,10 +243,6 @@ class eeprom_serial_x24c44_device : public eeprom_serial_base_device
{
//async recall not implemented
//async store not implemented
-protected:
- // construction/destruction
- eeprom_serial_x24c44_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file);
-
public:
// read handlers
DECLARE_READ_LINE_MEMBER(do_read); // DO
@@ -260,6 +253,9 @@ public:
DECLARE_WRITE_LINE_MEMBER(di_write); // DI
protected:
+ // construction/destruction
+ eeprom_serial_x24c44_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner);
+
// subclass overrides
virtual void parse_command_and_address() override;
void handle_event(eeprom_event event) override;
@@ -287,7 +283,8 @@ class eeprom_serial_##_lowercase##_##_bits##bit_device : public eeprom_serial_##
public: \
eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); \
}; \
-extern const device_type EEPROM_SERIAL_##_uppercase##_##_bits##BIT;
+DECLARE_DEVICE_TYPE(EEPROM_SERIAL_##_uppercase##_##_bits##BIT, eeprom_serial_##_lowercase##_##_bits##bit_device)
+
// standard 93CX6 class of 16-bit EEPROMs
DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c06, 93C06, 16)
DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 16)
@@ -319,4 +316,5 @@ DECLARE_SERIAL_EEPROM_DEVICE(93cxx, s29390, S29390, 16)
// X24c44 8 bit 32byte ram/eeprom combo
DECLARE_SERIAL_EEPROM_DEVICE(x24c44, x24c44, X24C44, 16)
-#endif
+
+#endif // MAME_MACHINE_EEPROMSER_H
diff --git a/src/devices/machine/er2055.cpp b/src/devices/machine/er2055.cpp
index aee6839a658..4504a7e07c9 100644
--- a/src/devices/machine/er2055.cpp
+++ b/src/devices/machine/er2055.cpp
@@ -17,7 +17,7 @@
//**************************************************************************
// device type definition
-const device_type ER2055 = device_creator<er2055_device>;
+DEFINE_DEVICE_TYPE(ER2055, er2055_device, "er2055", "ER2055 EAROM")
static ADDRESS_MAP_START( er2055_map, AS_PROGRAM, 8, er2055_device )
AM_RANGE(0x0000, 0x003f) AM_RAM
@@ -34,7 +34,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
er2055_device::er2055_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ER2055, "ER2055 EAROM", tag, owner, clock, "er2055", __FILE__),
+ : device_t(mconfig, ER2055, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_nvram_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
diff --git a/src/devices/machine/er2055.h b/src/devices/machine/er2055.h
index c5796c1bb27..6dae6d1d424 100644
--- a/src/devices/machine/er2055.h
+++ b/src/devices/machine/er2055.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_ER2055_H
+#define MAME_MACHINE_ER2055_H
-#ifndef __ER2055_H__
-#define __ER2055_H__
+#pragma once
@@ -79,7 +79,6 @@ protected:
// device type definition
-extern const device_type ER2055;
-
+DECLARE_DEVICE_TYPE(ER2055, er2055_device)
-#endif
+#endif // MAME_MACHINE_ER2055_H
diff --git a/src/devices/machine/f3853.cpp b/src/devices/machine/f3853.cpp
index 512a783c2f2..5f2c512402a 100644
--- a/src/devices/machine/f3853.cpp
+++ b/src/devices/machine/f3853.cpp
@@ -25,13 +25,6 @@
#include "emu.h"
#include "f3853.h"
-/***************************************************************************
- MACROS
-***************************************************************************/
-
-#define INTERRUPT_VECTOR(external) ( external ? m_low | ( m_high << 8 ) | 0x80 \
-: ( m_low | ( m_high << 8 ) ) & ~0x80 )
-
/***************************************************************************
@@ -43,14 +36,14 @@
//**************************************************************************
// device type definition
-const device_type F3853 = device_creator<f3853_device>;
+DEFINE_DEVICE_TYPE(F3853, f3853_device, "f3853_device", "F3853")
//-------------------------------------------------
// f3853_device - constructor
//-------------------------------------------------
f3853_device::f3853_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, F3853, "F3853", tag, owner, clock, "f3853", __FILE__)
+ : device_t(mconfig, F3853, tag, owner, clock)
{
}
@@ -113,9 +106,9 @@ void f3853_device::set_interrupt_request_line()
return;
if (m_external_enable && !m_priority_line)
- m_interrupt_req_cb(INTERRUPT_VECTOR(true), true);
+ m_interrupt_req_cb(external_interrupt_vector(), true);
else if (m_timer_enable && !m_priority_line && m_request_flipflop)
- m_interrupt_req_cb(INTERRUPT_VECTOR(false), true);
+ m_interrupt_req_cb(timer_interrupt_vector(), true);
else
m_interrupt_req_cb(0, false);
}
diff --git a/src/devices/machine/f3853.h b/src/devices/machine/f3853.h
index 214ce7255fc..05c0f213699 100644
--- a/src/devices/machine/f3853.h
+++ b/src/devices/machine/f3853.h
@@ -33,10 +33,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_F3853_H
+#define MAME_MACHINE_F3853_H
-#ifndef __F3853_H__
-#define __F3853_H__
+#pragma once
//**************************************************************************
@@ -44,14 +44,12 @@
//**************************************************************************
#define MCFG_F3853_EXT_INPUT_CB(_class, _method) \
- f3853_device::set_interrupt_req_callback(*device, f3853_interrupt_req_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ f3853_device::set_interrupt_req_callback(*device, f3853_device::interrupt_req_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-typedef device_delegate<void (uint16_t addr, int level)> f3853_interrupt_req_delegate;
-
#define F3853_INTERRUPT_REQ_CB(_name) void _name(uint16_t addr, int level)
@@ -60,10 +58,12 @@ typedef device_delegate<void (uint16_t addr, int level)> f3853_interrupt_req_del
class f3853_device : public device_t
{
public:
+ typedef device_delegate<void (uint16_t addr, int level)> interrupt_req_delegate;
+
// construction/destruction
f3853_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_interrupt_req_callback(device_t &device, f3853_interrupt_req_delegate callback) { downcast<f3853_device &>(device).m_interrupt_req_cb = callback; }
+ static void set_interrupt_req_callback(device_t &device, interrupt_req_delegate &&callback) { downcast<f3853_device &>(device).m_interrupt_req_cb = std::move(callback); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -72,18 +72,23 @@ public:
void set_priority_in_line(int level);
TIMER_CALLBACK_MEMBER(timer_callback);
+
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override { }
virtual void device_clock_changed() override { }
+
private:
+ uint16_t interrupt_vector() const { return m_low | (uint16_t(m_high) << 8); }
+ uint16_t timer_interrupt_vector() const { return interrupt_vector() & ~uint16_t(0x0080); }
+ uint16_t external_interrupt_vector() const { return interrupt_vector() | uint16_t(0x0080); }
void set_interrupt_request_line();
void timer_start(uint8_t value);
- f3853_interrupt_req_delegate m_interrupt_req_cb;
+ interrupt_req_delegate m_interrupt_req_cb;
uint8_t m_high;
uint8_t m_low; // Bit 7 is set to 0 for timer interrupts, 1 for external interrupts
int32_t m_external_enable;
@@ -101,6 +106,6 @@ private:
// device type definition
-extern const device_type F3853;
+DECLARE_DEVICE_TYPE(F3853, f3853_device)
-#endif /* __F3853_H__ */
+#endif // MAME_MACHINE_F3853_H
diff --git a/src/devices/machine/fdc37c665gt.cpp b/src/devices/machine/fdc37c665gt.cpp
index d4151a98b9d..a2d3c0c88d7 100644
--- a/src/devices/machine/fdc37c665gt.cpp
+++ b/src/devices/machine/fdc37c665gt.cpp
@@ -4,7 +4,7 @@
#include "fdc37c665gt.h"
fdc37c665gt_device::fdc37c665gt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, FDC37C665GT, "FDC37C665GT", tag, owner, clock, "fdc37c665gt", __FILE__),
+ device_t(mconfig, FDC37C665GT, tag, owner, clock),
m_uart1(*this, "uart1"),
m_uart2(*this, "uart2")
{
@@ -59,4 +59,4 @@ machine_config_constructor fdc37c665gt_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME(fdc37c665gt);
}
-const device_type FDC37C665GT = device_creator<fdc37c665gt_device>;
+DEFINE_DEVICE_TYPE(FDC37C665GT, fdc37c665gt_device, "fdc37c665gt", "FDC37C665GT")
diff --git a/src/devices/machine/fdc37c665gt.h b/src/devices/machine/fdc37c665gt.h
index 094cc45db75..21ef762f8b8 100644
--- a/src/devices/machine/fdc37c665gt.h
+++ b/src/devices/machine/fdc37c665gt.h
@@ -5,8 +5,8 @@
*
*/
-#ifndef _FDC37C665GT_H_
-#define _FDC37C665GT_H_
+#ifndef MAME_MACHINE_FDC37C665GT_H
+#define MAME_MACHINE_FDC37C665GT_H
#pragma once
@@ -32,6 +32,6 @@ private:
};
// device type definition
-extern const device_type FDC37C665GT;
+DECLARE_DEVICE_TYPE(FDC37C665GT, fdc37c665gt_device)
-#endif
+#endif // MAME_MACHINE_FDC37C665GT_H
diff --git a/src/devices/machine/fdc_pll.h b/src/devices/machine/fdc_pll.h
index 87244f405dc..f99be2000a9 100644
--- a/src/devices/machine/fdc_pll.h
+++ b/src/devices/machine/fdc_pll.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef __FDC_PLL_H__
-#define __FDC_PLL_H__
+#ifndef MAME_MACHINE_FDC_PLL_H
+#define MAME_MACHINE_FDC_PLL_H
+
+#pragma once
/*
* Generic pll class for floppy controllers with analog plls
@@ -20,9 +22,9 @@ public:
void set_clock(const attotime &period);
void reset(const attotime &when);
- void read_reset(const attotime &when);
+ void read_reset(const attotime &when);
int get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit);
- int feed_read_data(attotime &tm, const attotime& edge, const attotime &limit);
+ int feed_read_data(attotime &tm, const attotime& edge, const attotime &limit);
bool write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit);
void start_writing(const attotime &tm);
void commit(floppy_image_device *floppy, const attotime &tm);
@@ -31,4 +33,4 @@ public:
std::string tts(attotime tm);
};
-#endif
+#endif // MAME_MACHINE_FDC_PLL_H
diff --git a/src/devices/machine/fga002.cpp b/src/devices/machine/fga002.cpp
index 3fcef596746..50ae32bfe0e 100644
--- a/src/devices/machine/fga002.cpp
+++ b/src/devices/machine/fga002.cpp
@@ -31,6 +31,9 @@
* external hardware. It is expressly forbidden to change register bits, except those defined for the user.
*
*/
+#include "emu.h"
+#include "fga002.h"
+
//#define LOG_GENERAL (1U << 0)
#define LOG_SETUP (1U << 1)
#define LOG_READ (1U << 2)
@@ -41,8 +44,6 @@
//#define VERBOSE (LOG_GENERAL | LOG_SETUP)
//#define LOG_OUTPUT_FUNC printf
-
-#include "emu.h"
#include "logmacro.h"
#define LOGSETUP(...) LOGMASKED(LOG_SETUP, __VA_ARGS__)
@@ -58,13 +59,12 @@
#define FUNCNAME __PRETTY_FUNCTION__
#endif
-#include "fga002.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
// device type definition
-const device_type FGA002 = device_creator<fga002_device>;
+DEFINE_DEVICE_TYPE(FGA002, fga002_device, "fga002", "Force FGA-002")
//**************************************************************************
// LIVE DEVICE
@@ -74,30 +74,22 @@ const device_type FGA002 = device_creator<fga002_device>;
// fga002_device - constructor
//-------------------------------------------------
-fga002_device::fga002_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+fga002_device::fga002_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_out_int_cb(*this)
, m_liack4_cb(*this)
, m_liack5_cb(*this)
, m_liack6_cb(*this)
, m_liack7_cb(*this)
- , m_irq_level((uint8_t)0)
+ , m_irq_level(uint8_t(0))
{
for (auto & elem : m_int_state)
elem = 0;
}
fga002_device::fga002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, FGA002, "FGA-002", tag, owner, clock, "fga002", __FILE__)
- , m_out_int_cb(*this)
- , m_liack4_cb(*this)
- , m_liack5_cb(*this)
- , m_liack6_cb(*this)
- , m_liack7_cb(*this)
- , m_irq_level((uint8_t)0)
+ : fga002_device(mconfig, FGA002, tag, owner, clock)
{
- for (auto & elem : m_int_state)
- elem = 0;
}
void fga002_device::device_start()
@@ -217,7 +209,7 @@ void fga002_device::device_timer (emu_timer &timer, device_timer_id id, int32_t
*/
// TODO: Add more intrrupts sources in priority order, 18 in total.
-const fga_irq_t fga002_device::m_irq_sources[] = {
+const fga002_device::fga_irq_t fga002_device::s_irq_sources[] = {
{INT_LOCAL0, FGA_ISLOCAL0, FGA_ICRLOCAL0 },
{INT_LOCAL1, FGA_ISLOCAL1, FGA_ICRLOCAL1 },
{INT_LOCAL2, FGA_ISLOCAL2, FGA_ICRLOCAL2 },
@@ -273,7 +265,7 @@ IRQ_CALLBACK_MEMBER(fga002_device::iack)
LOGLVL("\n LEVEL %d\n", level);
// Find first interrupt on this level to acknowledge
LOGLVL("Vec Status[val] Control[val]\n");
- for (auto & elem : m_irq_sources)
+ for (auto & elem : s_irq_sources)
{
LOGLVL(" %02x %02x[%02x] %02x[%02x]\n",
elem.vector,
diff --git a/src/devices/machine/fga002.h b/src/devices/machine/fga002.h
index 31e5b29371e..2be2e889ec6 100644
--- a/src/devices/machine/fga002.h
+++ b/src/devices/machine/fga002.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edstrom
-#ifndef __FGA002_H__
-#define __FGA002_H__
+#ifndef MAME_MACHINE_FGA002_H
+#define MAME_MACHINE_FGA002_H
-#include "cpu/m68000/m68000.h" // The FGA002 is designed for the 68K interrupt PL0-PL2 signalling, however used on Sparc and x86 boards too
+#include "cpu/m68000/m68000.h" // The FGA002 is designed for the 68K interrupt PL0-PL2 signalling, however used on SPARC and x86 boards too
#define MCFG_FGA002_ADD(_tag, _clock) MCFG_DEVICE_ADD(_tag, FGA002, _clock)
@@ -23,13 +23,6 @@
#define MCFG_FGA002_OUT_LIACK7_CB(_devcb) \
devcb = &fga002_device::set_liack7_callback(*device, DEVCB_##_devcb);
-// type for array of mapping of FGA registers that assembles an IRQ source
-typedef struct {
- int vector;
- int status;
- int control;
-} fga_irq_t;
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -41,7 +34,6 @@ class fga002_device : public device_t
{
public:
// construction/destruction
- fga002_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
fga002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE8_MEMBER (write);
@@ -61,16 +53,25 @@ class fga002_device : public device_t
int acknowledge();
int get_irq_level();
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<fga002_device &>(device).m_out_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_liack4_callback(device_t &device, _Object object) { return downcast<fga002_device &>(device).m_liack4_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_liack5_callback(device_t &device, _Object object) { return downcast<fga002_device &>(device).m_liack5_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_liack6_callback(device_t &device, _Object object) { return downcast<fga002_device &>(device).m_liack6_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_liack7_callback(device_t &device, _Object object) { return downcast<fga002_device &>(device).m_liack7_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_liack4_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack4_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_liack5_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_liack6_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack6_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_liack7_callback(device_t &device, Object &&cb) { return downcast<fga002_device &>(device).m_liack7_cb.set_callback(std::forward<Object>(cb)); }
+
+ protected:
+ // type for array of mapping of FGA registers that assembles an IRQ source
+ typedef struct {
+ int vector;
+ int status;
+ int control;
+ } fga_irq_t;
// interrupt sources in prio order if on same interrupt level. TODO: Add all sources
- const static fga_irq_t m_irq_sources[];
+ const static fga_irq_t s_irq_sources[];
+
+ fga002_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -80,7 +81,7 @@ class fga002_device : public device_t
virtual int z80daisy_irq_ack() override;
virtual void z80daisy_irq_reti() override;
#endif
- virtual void device_timer (emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
devcb_write_line m_out_int_cb;
devcb_read8 m_liack4_cb;
@@ -333,5 +334,6 @@ class fga002_device : public device_t
// device type definition
-extern const device_type FGA002;
-#endif // __FGA002_H__
+DECLARE_DEVICE_TYPE(FGA002, fga002_device)
+
+#endif // MAME_MACHINE_FGA002_H
diff --git a/src/devices/machine/gayle.cpp b/src/devices/machine/gayle.cpp
index 58cdc33ede3..c0369cddc4f 100644
--- a/src/devices/machine/gayle.cpp
+++ b/src/devices/machine/gayle.cpp
@@ -23,7 +23,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type GAYLE = device_creator<gayle_device>;
+DEFINE_DEVICE_TYPE(GAYLE, gayle_device, "gayle", "Amiga GAYLE")
//**************************************************************************
@@ -35,7 +35,7 @@ const device_type GAYLE = device_creator<gayle_device>;
//-------------------------------------------------
gayle_device::gayle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, GAYLE, "GAYLE", tag, owner, clock, "gayle", __FILE__),
+ device_t(mconfig, GAYLE, tag, owner, clock),
m_int2_w(*this),
m_cs0_read(*this),
m_cs0_write(*this),
diff --git a/src/devices/machine/gayle.h b/src/devices/machine/gayle.h
index 391477a0b89..07158185e96 100644
--- a/src/devices/machine/gayle.h
+++ b/src/devices/machine/gayle.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_GAYLE_H
+#define MAME_MACHINE_GAYLE_H
-#ifndef __GAYLE_H__
-#define __GAYLE_H__
+#pragma once
@@ -52,20 +52,20 @@ public:
gayle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template<class _Object> static devcb_base &set_int2_handler(device_t &device, _Object object)
- { return downcast<gayle_device &>(device).m_int2_w.set_callback(object); }
+ template <class Object> static devcb_base &set_int2_handler(device_t &device, Object &&cb)
+ { return downcast<gayle_device &>(device).m_int2_w.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_cs0_read_handler(device_t &device, _Object object)
- { return downcast<gayle_device &>(device).m_cs0_read.set_callback(object); }
+ template <class Object> static devcb_base &set_cs0_read_handler(device_t &device, Object &&cb)
+ { return downcast<gayle_device &>(device).m_cs0_read.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_cs0_write_handler(device_t &device, _Object object)
- { return downcast<gayle_device &>(device).m_cs0_write.set_callback(object); }
+ template <class Object> static devcb_base &set_cs0_write_handler(device_t &device, Object &&cb)
+ { return downcast<gayle_device &>(device).m_cs0_write.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_cs1_read_handler(device_t &device, _Object object)
- { return downcast<gayle_device &>(device).m_cs1_read.set_callback(object); }
+ template <class Object> static devcb_base &set_cs1_read_handler(device_t &device, Object &&cb)
+ { return downcast<gayle_device &>(device).m_cs1_read.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_cs1_write_handler(device_t &device, _Object object)
- { return downcast<gayle_device &>(device).m_cs1_write.set_callback(object); }
+ template <class Object> static devcb_base &set_cs1_write_handler(device_t &device, Object &&cb)
+ { return downcast<gayle_device &>(device).m_cs1_write.set_callback(std::forward<Object>(cb)); }
// interface
DECLARE_WRITE_LINE_MEMBER( ide_interrupt_w );
@@ -104,6 +104,6 @@ private:
};
// device type definition
-extern const device_type GAYLE;
+DECLARE_DEVICE_TYPE(GAYLE, gayle_device)
-#endif
+#endif // MAME_MACHINE_GAYLE_H
diff --git a/src/devices/machine/gen_latch.cpp b/src/devices/machine/gen_latch.cpp
index 1cf2841a6fa..ca348dfebfd 100644
--- a/src/devices/machine/gen_latch.cpp
+++ b/src/devices/machine/gen_latch.cpp
@@ -14,18 +14,8 @@
// DEVICE TYPE DEFINITIONS
//**************************************************************************
-const device_type GENERIC_LATCH_8 = device_creator<generic_latch_8_device>;
-const device_type GENERIC_LATCH_16 = device_creator<generic_latch_16_device>;
-
-
-//**************************************************************************
-// TEMPALTE INSTANTIATIONS
-//**************************************************************************
-
-template class device_finder<generic_latch_8_device, false>;
-template class device_finder<generic_latch_8_device, true>;
-template class device_finder<generic_latch_16_device, false>;
-template class device_finder<generic_latch_16_device, true>;
+DEFINE_DEVICE_TYPE(GENERIC_LATCH_8, generic_latch_8_device, "generic_latch_8", "Generic 8-bit latch")
+DEFINE_DEVICE_TYPE(GENERIC_LATCH_16, generic_latch_16_device, "generic_latch_16", "Generic 16-bit latch")
//**************************************************************************
@@ -36,8 +26,8 @@ template class device_finder<generic_latch_16_device, true>;
// generic_latch_base_device - constructor
//-------------------------------------------------
-generic_latch_base_device::generic_latch_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+generic_latch_base_device::generic_latch_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) :
+ device_t(mconfig, type, tag, owner, clock),
m_latch_written(false),
m_data_pending_cb(*this)
{
@@ -91,7 +81,7 @@ void generic_latch_base_device::set_latch_written(bool latch_written)
//-------------------------------------------------
generic_latch_8_device::generic_latch_8_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
- generic_latch_base_device(mconfig, GENERIC_LATCH_8, "Generic 8-bit latch", tag, owner, clock, "generic_latch_8", __FILE__),
+ generic_latch_base_device(mconfig, GENERIC_LATCH_8, tag, owner, clock),
m_latched_value(0)
{
}
@@ -161,7 +151,7 @@ void generic_latch_8_device::device_start()
//-------------------------------------------------
generic_latch_16_device::generic_latch_16_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
- generic_latch_base_device(mconfig, GENERIC_LATCH_16, "Generic 16-bit latch", tag, owner, clock, "generic_latch_16", __FILE__),
+ generic_latch_base_device(mconfig, GENERIC_LATCH_16, tag, owner, clock),
m_latched_value(0)
{
}
diff --git a/src/devices/machine/gen_latch.h b/src/devices/machine/gen_latch.h
index e1fc2dd57f6..464801a68d2 100644
--- a/src/devices/machine/gen_latch.h
+++ b/src/devices/machine/gen_latch.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_GEN_LATCH_H
+#define MAME_MACHINE_GEN_LATCH_H
-#ifndef MAME_DEVICES_MACHINE_GEN_LATCH_H
-#define MAME_DEVICES_MACHINE_GEN_LATCH_H
+#pragma once
@@ -17,8 +17,8 @@
// DEVICE TYPE DECLARATIONS
//**************************************************************************
-extern const device_type GENERIC_LATCH_8;
-extern const device_type GENERIC_LATCH_16;
+DECLARE_DEVICE_TYPE(GENERIC_LATCH_8, generic_latch_8_device)
+DECLARE_DEVICE_TYPE(GENERIC_LATCH_16, generic_latch_16_device)
//**************************************************************************
@@ -45,11 +45,12 @@ class generic_latch_base_device : public device_t
{
protected:
// construction/destruction
- generic_latch_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);
+ generic_latch_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
public:
// static configuration
- template<class _Object> static devcb_base &set_data_pending_callback(device_t &device, _Object object) { return downcast<generic_latch_base_device &>(device).m_data_pending_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_data_pending_callback(device_t &device, Object &&cb)
+ { return downcast<generic_latch_base_device &>(device).m_data_pending_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ_LINE_MEMBER(pending_r);
@@ -90,7 +91,7 @@ protected:
void sync_callback(void *ptr, s32 param);
private:
- u8 m_latched_value;
+ u8 m_latched_value;
};
@@ -118,17 +119,8 @@ protected:
void sync_callback(void *ptr, s32 param);
private:
- u16 m_latched_value;
+ u16 m_latched_value;
};
-//**************************************************************************
-// TEMPALTE INSTANTIATIONS
-//**************************************************************************
-
-extern template class device_finder<generic_latch_8_device, false>;
-extern template class device_finder<generic_latch_8_device, true>;
-extern template class device_finder<generic_latch_16_device, false>;
-extern template class device_finder<generic_latch_16_device, true>;
-
-#endif // MAME_DEVICES_MACHINE_GEN_LATCH_H
+#endif // MAME_MACHINE_GEN_LATCH_H
diff --git a/src/devices/machine/genpc.cpp b/src/devices/machine/genpc.cpp
index 87a9d7eeea2..b6a301248bc 100644
--- a/src/devices/machine/genpc.cpp
+++ b/src/devices/machine/genpc.cpp
@@ -389,7 +389,7 @@ WRITE8_MEMBER( ibm5160_mb_device::nmi_enable_w )
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IBM5160_MOTHERBOARD = device_creator<ibm5160_mb_device>;
+DEFINE_DEVICE_TYPE(IBM5160_MOTHERBOARD, ibm5160_mb_device, "ibm5160_mb", "IBM 5160 motherboard")
//**************************************************************************
// DEVICE CONFIGURATION
@@ -511,20 +511,17 @@ void ibm5160_mb_device::static_set_cputag(device_t &device, const char *tag)
//-------------------------------------------------
ibm5160_mb_device::ibm5160_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ibm5160_mb_device(mconfig, IBM5160_MOTHERBOARD, "IBM5160_MOTHERBOARD", tag, owner, clock, "ibm5160_mb", __FILE__)
+ : ibm5160_mb_device(mconfig, IBM5160_MOTHERBOARD, tag, owner, clock)
{
}
ibm5160_mb_device::ibm5160_mb_device(
const machine_config &mconfig,
device_type type,
- const char *name,
const char *tag,
device_t *owner,
- uint32_t clock,
- const char *shortname,
- const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_maincpu(*owner, "maincpu")
, m_pic8259(*this, "pic8259")
, m_dma8237(*this, "dma8237")
@@ -589,7 +586,7 @@ void ibm5160_mb_device::device_reset()
// GLOBAL VARIABLES
//**************************************************************************
-const device_type IBM5150_MOTHERBOARD = device_creator<ibm5150_mb_device>;
+DEFINE_DEVICE_TYPE(IBM5150_MOTHERBOARD, ibm5150_mb_device, "ibm5150_mb", "IBM 5150 motherboard")
//**************************************************************************
// DEVICE CONFIGURATION
@@ -628,12 +625,12 @@ machine_config_constructor ibm5150_mb_device::device_mconfig_additions() const
//-------------------------------------------------
ibm5150_mb_device::ibm5150_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ibm5150_mb_device(mconfig, IBM5150_MOTHERBOARD, "IBM5150_MOTHERBOARD", tag, owner, clock, "ibm5150_mb", __FILE__)
+ : ibm5150_mb_device(mconfig, IBM5150_MOTHERBOARD, tag, owner, clock)
{
}
-ibm5150_mb_device::ibm5150_mb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : ibm5160_mb_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ibm5150_mb_device::ibm5150_mb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : ibm5160_mb_device(mconfig, type, tag, owner, clock)
, m_cassette(*this, "cassette")
{
}
@@ -776,7 +773,7 @@ WRITE8_MEMBER( ibm5150_mb_device::pc_ppi_portb_w )
// GLOBAL VARIABLES
//**************************************************************************
-const device_type EC1841_MOTHERBOARD = device_creator<ec1841_mb_device>;
+DEFINE_DEVICE_TYPE(EC1841_MOTHERBOARD, ec1841_mb_device, "ec1841_mb", "EC-1840 motherboard")
static MACHINE_CONFIG_FRAGMENT( ec1841_mb_config )
MCFG_FRAGMENT_ADD(ibm5160_mb_config)
@@ -848,7 +845,7 @@ ioport_constructor ec1841_mb_device::device_input_ports() const
//-------------------------------------------------
ec1841_mb_device::ec1841_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ibm5160_mb_device(mconfig, EC1841_MOTHERBOARD, "EC1841_MOTHERBOARD", tag, owner, clock, "ec1841_mb", __FILE__)
+ : ibm5160_mb_device(mconfig, EC1841_MOTHERBOARD, tag, owner, clock)
{
}
@@ -898,12 +895,12 @@ READ8_MEMBER ( ec1841_mb_device::pc_ppi_portc_r )
}
pc_noppi_mb_device::pc_noppi_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pc_noppi_mb_device(mconfig, PCNOPPI_MOTHERBOARD, "PCNOPPI_MOTHERBOARD", tag, owner, clock, "pcnoppi_mb", __FILE__)
+ : pc_noppi_mb_device(mconfig, PCNOPPI_MOTHERBOARD, tag, owner, clock)
{
}
-pc_noppi_mb_device::pc_noppi_mb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : ibm5160_mb_device(mconfig, type, name, tag, owner, clock, shortname, source)
+pc_noppi_mb_device::pc_noppi_mb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : ibm5160_mb_device(mconfig, type, tag, owner, clock)
{
}
@@ -944,4 +941,4 @@ DEVICE_ADDRESS_MAP_START( map, 8, pc_noppi_mb_device )
AM_RANGE(0x00a0, 0x00a1) AM_WRITE(nmi_enable_w)
ADDRESS_MAP_END
-const device_type PCNOPPI_MOTHERBOARD = device_creator<pc_noppi_mb_device>;
+DEFINE_DEVICE_TYPE(PCNOPPI_MOTHERBOARD, pc_noppi_mb_device, "pcnoppi_mb", "PCNOPPI_MOTHERBOARD")
diff --git a/src/devices/machine/genpc.h b/src/devices/machine/genpc.h
index 65462fcdbe7..e9dc7beed67 100644
--- a/src/devices/machine/genpc.h
+++ b/src/devices/machine/genpc.h
@@ -6,8 +6,8 @@
*
****************************************************************************/
-#ifndef MAME_DEVICES_MACHINE_GENPC_H
-#define MAME_DEVICES_MACHINE_GENPC_H
+#ifndef MAME_MACHINE_GENPC_H
+#define MAME_MACHINE_GENPC_H
#include "imagedev/cassette.h"
#include "machine/am9517a.h"
@@ -42,7 +42,7 @@ public:
DECLARE_ADDRESS_MAP(map, 8);
protected:
- ibm5160_mb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ ibm5160_mb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -120,7 +120,7 @@ private:
// device type definition
-extern const device_type IBM5160_MOTHERBOARD;
+DECLARE_DEVICE_TYPE(IBM5160_MOTHERBOARD, ibm5160_mb_device)
#define MCFG_IBM5150_MOTHERBOARD_ADD(_tag, _cputag) \
@@ -140,7 +140,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
protected:
- ibm5150_mb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ ibm5150_mb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
@@ -153,7 +153,7 @@ public:
// device type definition
-extern const device_type IBM5150_MOTHERBOARD;
+DECLARE_DEVICE_TYPE(IBM5150_MOTHERBOARD, ibm5150_mb_device)
#define MCFG_EC1841_MOTHERBOARD_ADD(_tag, _cputag) \
@@ -178,7 +178,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
};
-extern const device_type EC1841_MOTHERBOARD;
+DECLARE_DEVICE_TYPE(EC1841_MOTHERBOARD, ec1841_mb_device)
#define MCFG_PCNOPPI_MOTHERBOARD_ADD(_tag, _cputag) \
MCFG_DEVICE_ADD(_tag, PCNOPPI_MOTHERBOARD, 0) \
@@ -194,12 +194,12 @@ public:
DECLARE_ADDRESS_MAP(map, 8);
protected:
- pc_noppi_mb_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ pc_noppi_mb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
};
-extern const device_type PCNOPPI_MOTHERBOARD;
+DECLARE_DEVICE_TYPE(PCNOPPI_MOTHERBOARD, pc_noppi_mb_device)
-#endif // MAME_DEVICES_MACHINE_GENPC_H
+#endif // MAME_MACHINE_GENPC_H
diff --git a/src/devices/machine/gt64xxx.cpp b/src/devices/machine/gt64xxx.cpp
index fb511e4a1ee..b163a9ef99f 100644
--- a/src/devices/machine/gt64xxx.cpp
+++ b/src/devices/machine/gt64xxx.cpp
@@ -3,17 +3,151 @@
#include "emu.h"
#include "gt64xxx.h"
+#define LOG_GENERAL (1U << 0)
+#define LOG_GALILEO (1U << 1)
+#define LOG_TIMERS (1U << 2)
+#define LOG_DMA (1U << 3)
+#define LOG_PCI (1U << 4)
+
+//#define VERBOSE (LOG_GENERAL | LOG_GALILEO | LOG_TIMERS | LOG_DMA | LOG_PCI)
+#include "logmacro.h"
+
+#define LOGGALILEO(...) LOGMASKED(LOG_GALILEO, __VA_ARGS__)
+#define LOGTIMERS(...) LOGMASKED(LOG_TIMERS, __VA_ARGS__)
+#define LOGDMA(...) LOGMASKED(LOG_DMA, __VA_ARGS__)
+#define LOGPCI(...) LOGMASKED(LOG_PCI, __VA_ARGS__)
+
+
/*************************************
*
- * Debugging constants
+ * Galileo constants
*
*************************************/
-#define LOG_GALILEO (0)
-#define LOG_TIMERS (0)
-#define LOG_DMA (0)
-#define LOG_PCI (0)
-const device_type GT64XXX = device_creator<gt64xxx_device>;
+#define TIMER_PERIOD attotime::from_hz(m_clock)
+#define PCI_BUS_CLOCK 33000000
+// Number of dma words to transfer at a time, real hardware configurable between 8-32
+#define DMA_BURST_SIZE 32
+#define DMA_TIMER_PERIOD attotime::from_hz(PCI_BUS_CLOCK / 48)
+
+/* Galileo registers - 0x000-0x3ff */
+#define GREG_CPU_CONFIG (0x000/4)
+#define GREG_RAS_1_0_LO (0x008/4)
+#define GREG_RAS_1_0_HI (0x010/4)
+#define GREG_RAS_3_2_LO (0x018/4)
+#define GREG_RAS_3_2_HI (0x020/4)
+#define GREG_CS_2_0_LO (0x028/4)
+#define GREG_CS_2_0_HI (0x030/4)
+#define GREG_CS_3_BOOT_LO (0x038/4)
+#define GREG_CS_3_BOOT_HI (0x040/4)
+#define GREG_PCI_IO_LO (0x048/4)
+#define GREG_PCI_IO_HI (0x050/4)
+#define GREG_PCI_MEM0_LO (0x058/4)
+#define GREG_PCI_MEM0_HI (0x060/4)
+#define GREG_INTERNAL_SPACE (0x068/4)
+#define GREG_BUSERR_LO (0x070/4)
+#define GREG_BUSERR_HI (0x078/4)
+// GT-64111 only
+#define GREG_PCI_MEM1_LO (0x080/4)
+#define GREG_PCI_MEM1_HI (0x088/4)
+
+/* Galileo registers - 0x400-0x7ff */
+#define GREG_RAS0_LO (0x400/4)
+#define GREG_RAS0_HI (0x404/4)
+#define GREG_RAS1_LO (0x408/4)
+#define GREG_RAS1_HI (0x40c/4)
+#define GREG_RAS2_LO (0x410/4)
+#define GREG_RAS2_HI (0x414/4)
+#define GREG_RAS3_LO (0x418/4)
+#define GREG_RAS3_HI (0x41c/4)
+#define GREG_CS0_LO (0x420/4)
+#define GREG_CS0_HI (0x424/4)
+#define GREG_CS1_LO (0x428/4)
+#define GREG_CS1_HI (0x42c/4)
+#define GREG_CS2_LO (0x430/4)
+#define GREG_CS2_HI (0x434/4)
+#define GREG_CS3_LO (0x438/4)
+#define GREG_CS3_HI (0x43c/4)
+#define GREG_CSBOOT_LO (0x440/4)
+#define GREG_CSBOOT_HI (0x444/4)
+#define GREG_DRAM_CONFIG (0x448/4)
+#define GREG_DRAM_BANK0 (0x44c/4)
+#define GREG_DRAM_BANK1 (0x450/4)
+#define GREG_DRAM_BANK2 (0x454/4)
+#define GREG_DRAM_BANK3 (0x458/4)
+#define GREG_DEVICE_BANK0 (0x45c/4)
+#define GREG_DEVICE_BANK1 (0x460/4)
+#define GREG_DEVICE_BANK2 (0x464/4)
+#define GREG_DEVICE_BANK3 (0x468/4)
+#define GREG_DEVICE_BOOT (0x46c/4)
+#define GREG_ADDRESS_ERROR (0x470/4)
+
+/* Galileo registers - 0x800-0xbff */
+#define GREG_DMA0_COUNT (0x800/4)
+#define GREG_DMA1_COUNT (0x804/4)
+#define GREG_DMA2_COUNT (0x808/4)
+#define GREG_DMA3_COUNT (0x80c/4)
+#define GREG_DMA0_SOURCE (0x810/4)
+#define GREG_DMA1_SOURCE (0x814/4)
+#define GREG_DMA2_SOURCE (0x818/4)
+#define GREG_DMA3_SOURCE (0x81c/4)
+#define GREG_DMA0_DEST (0x820/4)
+#define GREG_DMA1_DEST (0x824/4)
+#define GREG_DMA2_DEST (0x828/4)
+#define GREG_DMA3_DEST (0x82c/4)
+#define GREG_DMA0_NEXT (0x830/4)
+#define GREG_DMA1_NEXT (0x834/4)
+#define GREG_DMA2_NEXT (0x838/4)
+#define GREG_DMA3_NEXT (0x83c/4)
+#define GREG_DMA0_CONTROL (0x840/4)
+#define GREG_DMA1_CONTROL (0x844/4)
+#define GREG_DMA2_CONTROL (0x848/4)
+#define GREG_DMA3_CONTROL (0x84c/4)
+#define GREG_TIMER0_COUNT (0x850/4)
+#define GREG_TIMER1_COUNT (0x854/4)
+#define GREG_TIMER2_COUNT (0x858/4)
+#define GREG_TIMER3_COUNT (0x85c/4)
+#define GREG_DMA_ARBITER (0x860/4)
+#define GREG_TIMER_CONTROL (0x864/4)
+
+/* Galileo registers - 0xc00-0xfff */
+#define GREG_PCI_COMMAND (0xc00/4)
+#define GREG_PCI_TIMEOUT (0xc04/4)
+#define GREG_PCI_RAS_1_0 (0xc08/4)
+#define GREG_PCI_RAS_3_2 (0xc0c/4)
+#define GREG_PCI_CS_2_0 (0xc10/4)
+#define GREG_PCI_CS_3_BOOT (0xc14/4)
+#define GREG_INT_STATE (0xc18/4)
+#define GREG_INT_MASK (0xc1c/4)
+#define GREG_PCI_INT_MASK (0xc24/4)
+#define GREG_CONFIG_ADDRESS (0xcf8/4)
+#define GREG_CONFIG_DATA (0xcfc/4)
+
+/* Galileo interrupts */
+#define GINT_SUMMARY_SHIFT (0)
+#define GINT_MEMOUT_SHIFT (1)
+#define GINT_DMAOUT_SHIFT (2)
+#define GINT_CPUOUT_SHIFT (3)
+#define GINT_DMA0COMP_SHIFT (4)
+#define GINT_DMA1COMP_SHIFT (5)
+#define GINT_DMA2COMP_SHIFT (6)
+#define GINT_DMA3COMP_SHIFT (7)
+#define GINT_T0EXP_SHIFT (8)
+#define GINT_T1EXP_SHIFT (9)
+#define GINT_T2EXP_SHIFT (10)
+#define GINT_T3EXP_SHIFT (11)
+#define GINT_MASRDERR_SHIFT (12)
+#define GINT_SLVWRERR_SHIFT (13)
+#define GINT_MASWRERR_SHIFT (14)
+#define GINT_SLVRDERR_SHIFT (15)
+#define GINT_ADDRERR_SHIFT (16)
+#define GINT_MEMERR_SHIFT (17)
+#define GINT_MASABORT_SHIFT (18)
+#define GINT_TARABORT_SHIFT (19)
+#define GINT_RETRYCTR_SHIFT (20)
+
+
+DEFINE_DEVICE_TYPE(GT64XXX, gt64xxx_device, "gt64xxx", "Galileo GT-64XXX System Controller")
DEVICE_ADDRESS_MAP_START(config_map, 32, gt64xxx_device)
AM_INHERIT_FROM(pci_device::config_map)
@@ -28,7 +162,7 @@ DEVICE_ADDRESS_MAP_START(empty, 32, gt64xxx_device)
ADDRESS_MAP_END
gt64xxx_device::gt64xxx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_host_device(mconfig, GT64XXX, "Galileo GT-64XXX System Controller", tag, owner, clock, "gt64xxx", __FILE__),
+ : pci_host_device(mconfig, GT64XXX, tag, owner, clock),
m_be(0), m_autoconfig(0), m_irq_num(-1),
m_mem_config("memory_space", ENDIANNESS_LITTLE, 32, 32),
m_io_config("io_space", ENDIANNESS_LITTLE, 32, 32),
@@ -82,15 +216,13 @@ void gt64xxx_device::device_start()
m_cpu_space->install_rom (0x1fc00000, 0x1fc00000 + romSize - 1, m_romRegion->base());
// ROM MIPS DRC
m_cpu->add_fastram(0x1fc00000, 0x1fc00000 + romSize - 1, true, m_romRegion->base());
- if (LOG_GALILEO)
- logerror("%s: gt64xxx_device::device_start ROM Mapped size: 0x%08X start: 0x1fc00000 end: %08X\n", tag(), romSize, 0x1fc00000 + romSize - 1);
+ LOGGALILEO("gt64xxx_device::device_start ROM Mapped size: 0x%08X start: 0x1fc00000 end: %08X\n", romSize, 0x1fc00000 + romSize - 1);
// Update region address is based on seattle driver
if (m_updateRegion) {
romSize = m_updateRegion->bytes();
m_cpu_space->install_rom(0x1fd00000, 0x1fd00000 + romSize - 1, m_updateRegion->base());
- if (LOG_GALILEO)
- logerror("%s: gt64xxx_device::device_start UPDATE Mapped size: 0x%08X start: 0x1fd00000 end: %08X\n", tag(), romSize, 0x1fd00000 + romSize - 1);
+ LOGGALILEO("gt64xxx_device::device_start UPDATE Mapped size: 0x%08X start: 0x1fd00000 end: %08X\n", romSize, 0x1fd00000 + romSize - 1);
}
/* allocate timers for the galileo */
@@ -203,8 +335,7 @@ void gt64xxx_device::map_cpu_space()
winStart = m_reg[GREG_INTERNAL_SPACE]<<21;
winEnd = winStart + sizeof(m_reg) - 1;
m_cpu_space->install_device(winStart, winEnd, *static_cast<gt64xxx_device *>(this), &gt64xxx_device::cpu_map);
- if (1 || LOG_GALILEO)
- logerror("%s: map_cpu_space cpu_reg start: %08X end: %08X\n", tag(), winStart, winEnd);
+ logerror("map_cpu_space cpu_reg start: %08X end: %08X\n", winStart, winEnd);
// RAS[0:3]
for (int ramIndex = 0; ramIndex < 4; ++ramIndex)
@@ -220,8 +351,7 @@ void gt64xxx_device::map_cpu_space()
m_cpu_space->install_ram(winStart, winEnd, m_ram[ramIndex].data());
//m_cpu->add_fastram(winStart, m_ram[ramIndex].size() * sizeof(m_ram[ramIndex][0]), false, &m_ram[ramIndex][0]);
//m_cpu->add_fastram(winStart, m_ram[ramIndex].size() * sizeof(uint32_t), false, m_ram[ramIndex].data());
- if (1 || LOG_GALILEO)
- logerror("%s: map_cpu_space ras[%i] start: %08X end: %08X\n", tag(), ramIndex, winStart, winEnd);
+ logerror("map_cpu_space ras[%i] start: %08X end: %08X\n", ramIndex, winStart, winEnd);
//printf("%s: map_cpu_space ras[%i] start: %08X end: %08X size: %08X\n", tag(), ramIndex, winStart, winEnd, winEnd-winStart+1);
}
@@ -231,8 +361,7 @@ void gt64xxx_device::map_cpu_space()
winStart = (m_reg[GREG_CS_2_0_LO + 0x10 / 4 * (csIndex / 3)] << 21) | (m_reg[GREG_CS0_LO + 0x8 / 4 * csIndex] << 20);
winEnd = (m_reg[GREG_CS_2_0_LO + 0x10 / 4 * (csIndex / 3)] << 21) | (m_reg[GREG_CS0_HI + 0x8 / 4 * csIndex] << 20) | 0xfffff;
m_cpu_space->install_device_delegate(winStart, winEnd, *m_cs_devices[csIndex], m_cs_maps[csIndex]);
- if (1 || LOG_GALILEO)
- logerror("%s: map_cpu_space cs[%i] start: %08X end: %08X\n", tag(), csIndex, winStart, winEnd);
+ logerror("map_cpu_space cs[%i] start: %08X end: %08X\n", csIndex, winStart, winEnd);
}
// PCI IO Window
@@ -240,24 +369,21 @@ void gt64xxx_device::map_cpu_space()
winEnd = (m_reg[GREG_PCI_IO_LO]<<21) | (m_reg[GREG_PCI_IO_HI]<<21) | 0x1fffff;
m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::master_io_r), this));
m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::master_io_w), this));
- if (1 || LOG_GALILEO)
- logerror("%s: map_cpu_space pci_io start: %08X end: %08X\n", tag(), winStart, winEnd);
+ logerror("map_cpu_space pci_io start: %08X end: %08X\n", winStart, winEnd);
// PCI MEM0 Window
winStart = m_reg[GREG_PCI_MEM0_LO]<<21;
winEnd = (m_reg[GREG_PCI_MEM0_LO]<<21) | (m_reg[GREG_PCI_MEM0_HI]<<21) | 0x1fffff;
m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::master_mem0_r), this));
m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::master_mem0_w), this));
- if (1 || LOG_GALILEO)
- logerror("%s: map_cpu_space pci_mem0 start: %08X end: %08X\n", tag(), winStart, winEnd);
+ logerror("map_cpu_space pci_mem0 start: %08X end: %08X\n", winStart, winEnd);
// PCI MEM1 Window
winStart = m_reg[GREG_PCI_MEM1_LO]<<21;
winEnd = (m_reg[GREG_PCI_MEM1_LO]<<21) | (m_reg[GREG_PCI_MEM1_HI]<<21) | 0x1fffff;
m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::master_mem1_r), this));
m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::master_mem1_w), this));
- if (1 || LOG_GALILEO)
- logerror("%s: map_cpu_space pci_mem1 start: %08X end: %08X\n", tag(), winStart, winEnd);
+ logerror("map_cpu_space pci_mem1 start: %08X end: %08X\n", winStart, winEnd);
// Setup the address mapping table for DMA lookups
for (size_t index = 0; index < proc_addr_bank::ADDR_NUM; ++index)
@@ -300,8 +426,7 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win
winSize = winEnd - winStart + 1;
memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_0_r), this));
memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_0_w), this));
- if (LOG_GALILEO)
- logerror("%s: map_extra RAS0 start=%08X end=%08X size=%08X\n", tag(), winStart, winEnd, winSize);
+ LOGGALILEO("map_extra RAS0 start=%08X end=%08X size=%08X\n", winStart, winEnd, winSize);
// RAS1
ramIndex = 1;
@@ -310,8 +435,7 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win
winSize = winEnd - winStart + 1;
memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_1_r), this));
memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_1_w), this));
- if (LOG_GALILEO)
- logerror("%s: map_extra RAS1 start=%08X end=%08X size=%08X\n", tag(), winStart, winEnd, winSize);
+ LOGGALILEO("map_extra RAS1 start=%08X end=%08X size=%08X\n", winStart, winEnd, winSize);
// RAS2
ramIndex = 2;
@@ -320,8 +444,7 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win
winSize = winEnd - winStart + 1;
memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_2_r), this));
memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_2_w), this));
- if (LOG_GALILEO)
- logerror("%s: map_extra RAS2 start=%08X end=%08X size=%08X\n", tag(), winStart, winEnd, winSize);
+ LOGGALILEO("map_extra RAS2 start=%08X end=%08X size=%08X\n", winStart, winEnd, winSize);
// RAS3
ramIndex = 3;
@@ -330,8 +453,7 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win
winSize = winEnd - winStart + 1;
memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_3_r), this));
memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_3_w), this));
- if (LOG_GALILEO)
- logerror("%s: map_extra RAS3 start=%08X end=%08X size=%08X\n", tag(), winStart, winEnd, winSize);
+ LOGGALILEO("map_extra RAS3 start=%08X end=%08X size=%08X\n", winStart, winEnd, winSize);
}
void gt64xxx_device::reset_all_mappings()
@@ -352,8 +474,7 @@ WRITE_LINE_MEMBER(gt64xxx_device::pci_stall)
this->space(AS_DATA).write_dword((m_reg[GREG_PCI_MEM0_LO] << 21) | (m_cpu_stalled_offset * 4), m_cpu_stalled_data, m_cpu_stalled_mem_mask);
/* resume CPU execution */
machine().scheduler().trigger(45678);
- if (LOG_GALILEO)
- logerror("Resuming CPU on PCI Stall offset=0x%08X data=0x%08X\n", m_cpu_stalled_offset * 4, m_cpu_stalled_data);
+ LOGGALILEO("Resuming CPU on PCI Stall offset=0x%08X data=0x%08X\n", m_cpu_stalled_offset * 4, m_cpu_stalled_data);
}
}
@@ -365,21 +486,18 @@ WRITE_LINE_MEMBER(gt64xxx_device::pci_stall)
READ32_MEMBER (gt64xxx_device::pci_config_r)
{
uint32_t result = 0;
- if (LOG_GALILEO)
- logerror("%06X:galileo pci_config_r from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
+ LOGGALILEO("%06X:galileo pci_config_r from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
return result;
}
WRITE32_MEMBER (gt64xxx_device::pci_config_w)
{
- if (LOG_GALILEO)
- logerror("%06X:galileo pci_config_w to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
+ LOGGALILEO("%06X:galileo pci_config_w to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
}
// PCI Master Window 0
READ32_MEMBER (gt64xxx_device::master_mem0_r)
{
uint32_t result = this->space(AS_DATA).read_dword((m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), mem_mask);
- if (LOG_PCI)
- logerror("%06X:galileo pci mem0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), result, mem_mask);
+ LOGPCI("%06X:galileo pci mem0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), result, mem_mask);
return result;
}
WRITE32_MEMBER (gt64xxx_device::master_mem0_w)
@@ -392,107 +510,95 @@ WRITE32_MEMBER (gt64xxx_device::master_mem0_w)
m_cpu_stalled_mem_mask = mem_mask;
// Stall cpu until trigger
m_cpu_space->device().execute().spin_until_trigger(45678);
- if (LOG_GALILEO || LOG_PCI)
- logerror("%08X:Stalling CPU on PCI Stall\n", m_cpu_space->device().safe_pc());
+ LOGMASKED(LOG_GALILEO | LOG_PCI, "%08X:Stalling CPU on PCI Stall\n", m_cpu_space->device().safe_pc());
return;
}
this->space(AS_DATA).write_dword((m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), data, mem_mask);
- if (LOG_PCI)
- logerror("%06X:galileo pci mem0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), data, mem_mask);
+ LOGPCI("%06X:galileo pci mem0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), data, mem_mask);
}
// PCI Master Window 1
READ32_MEMBER (gt64xxx_device::master_mem1_r)
{
uint32_t result = this->space(AS_DATA).read_dword((m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), mem_mask);
- if (LOG_PCI)
- logerror("%06X:galileo pci mem1 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), result, mem_mask);
+ LOGPCI("%06X:galileo pci mem1 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), result, mem_mask);
return result;
}
WRITE32_MEMBER (gt64xxx_device::master_mem1_w)
{
this->space(AS_DATA).write_dword((m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), data, mem_mask);
- if (LOG_PCI)
- logerror("%06X:galileo pci mem1 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), data, mem_mask);
+ LOGPCI("%06X:galileo pci mem1 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), data, mem_mask);
}
// PCI Master IO
READ32_MEMBER (gt64xxx_device::master_io_r)
{
uint32_t result = this->space(AS_IO).read_dword((m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), mem_mask);
- if (LOG_PCI && m_prev_addr != offset) {
+ if (m_prev_addr != offset) {
m_prev_addr = offset;
- logerror("%06X:galileo pci io read from offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), result, mem_mask);
+ LOGPCI("%06X:galileo pci io read from offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), result, mem_mask);
}
return result;
}
WRITE32_MEMBER (gt64xxx_device::master_io_w)
{
this->space(AS_IO).write_dword((m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), data, mem_mask);
- if (LOG_PCI && m_prev_addr != offset) {
+ if (m_prev_addr != offset) {
m_prev_addr = offset;
- logerror("%06X:galileo pci io write to offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), data, mem_mask);
+ LOGPCI("%06X:galileo pci io write to offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), data, mem_mask);
}
}
READ32_MEMBER(gt64xxx_device::ras_0_r)
{
uint32_t result = m_ram[0][offset];
- if (LOG_PCI)
- logerror("%06X:galileo ras_0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, result, mem_mask);
+ LOGPCI("%06X:galileo ras_0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, result, mem_mask);
return result;
}
WRITE32_MEMBER(gt64xxx_device::ras_0_w)
{
COMBINE_DATA(&m_ram[0][offset]);
- if (LOG_PCI)
- logerror("%06X:galileo ras_0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, data, mem_mask);
+ LOGPCI("%06X:galileo ras_0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, data, mem_mask);
}
READ32_MEMBER(gt64xxx_device::ras_1_r)
{
uint32_t result = m_ram[1][offset];
- if (LOG_PCI)
- logerror("%06X:galileo ras_0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, result, mem_mask);
+ LOGPCI("%06X:galileo ras_0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, result, mem_mask);
return result;
}
WRITE32_MEMBER(gt64xxx_device::ras_1_w)
{
COMBINE_DATA(&m_ram[1][offset]);
- if (LOG_PCI)
- logerror("%06X:galileo ras_0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, data, mem_mask);
+ LOGPCI("%06X:galileo ras_0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, data, mem_mask);
}
READ32_MEMBER(gt64xxx_device::ras_2_r)
{
uint32_t result = m_ram[2][offset];
- if (LOG_PCI)
- logerror("%06X:galileo ras_0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, result, mem_mask);
+ LOGPCI("%06X:galileo ras_0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, result, mem_mask);
return result;
}
WRITE32_MEMBER(gt64xxx_device::ras_2_w)
{
COMBINE_DATA(&m_ram[2][offset]);
- if (LOG_PCI)
- logerror("%06X:galileo ras_0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, data, mem_mask);
+ LOGPCI("%06X:galileo ras_0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, data, mem_mask);
}
READ32_MEMBER(gt64xxx_device::ras_3_r)
{
uint32_t result = m_ram[3][offset];
- if (LOG_PCI)
- logerror("%06X:galileo ras_0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, result, mem_mask);
+ LOGPCI("%06X:galileo ras_0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, result, mem_mask);
return result;
}
WRITE32_MEMBER(gt64xxx_device::ras_3_w)
{
COMBINE_DATA(&m_ram[3][offset]);
- if (LOG_PCI)
- logerror("%06X:galileo ras_0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, data, mem_mask);
+ LOGPCI("%06X:galileo ras_0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), offset * 4, data, mem_mask);
}
@@ -522,8 +628,7 @@ READ32_MEMBER (gt64xxx_device::cpu_if_r)
/* eat some time for those which poll this register */
//space.device().execute().eat_cycles(100);
- if (LOG_TIMERS)
- logerror("%08X:hires_timer_r = %08X\n", space.device().safe_pc(), result);
+ LOGTIMERS("%08X:hires_timer_r = %08X\n", space.device().safe_pc(), result);
break;
}
@@ -537,8 +642,7 @@ READ32_MEMBER (gt64xxx_device::cpu_if_r)
case GREG_CONFIG_DATA:
result = config_data_r(space, offset);
- if (LOG_GALILEO)
- logerror("%08X:Galileo GREG_CONFIG_DATA read from offset %03X = %08X\n", space.device().safe_pc(), offset*4, result);
+ LOGGALILEO("%08X:Galileo GREG_CONFIG_DATA read from offset %03X = %08X\n", space.device().safe_pc(), offset*4, result);
break;
case GREG_CONFIG_ADDRESS:
@@ -548,13 +652,11 @@ READ32_MEMBER (gt64xxx_device::cpu_if_r)
case GREG_INT_STATE:
case GREG_INT_MASK:
case GREG_TIMER_CONTROL:
-// if (LOG_GALILEO)
-// logerror("%08X:Galileo read from offset %03X = %08X\n", space.device().safe_pc(), offset*4, result);
+// LOGGALILEO("%08X:Galileo read from offset %03X = %08X\n", space.device().safe_pc(), offset*4, result);
break;
default:
- if (LOG_GALILEO)
- logerror("%08X:Galileo read from offset %03X = %08X\n", space.device().safe_pc(), offset*4, result);
+ LOGGALILEO("%08X:Galileo read from offset %03X = %08X\n", space.device().safe_pc(), offset*4, result);
break;
}
@@ -594,8 +696,7 @@ WRITE32_MEMBER(gt64xxx_device::cpu_if_w)
case GREG_CS3_HI:
map_cpu_space();
remap_cb();
- if (LOG_GALILEO)
- logerror("%08X:Galileo Memory Map data write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
+ LOGGALILEO("%08X:Galileo Memory Map data write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
break;
case GREG_DMA0_CONTROL:
@@ -622,11 +723,9 @@ WRITE32_MEMBER(gt64xxx_device::cpu_if_w)
m_dma_timer->adjust(attotime::zero, 0, DMA_TIMER_PERIOD);
m_dma_active |= (1<< which);
//perform_dma(space, which);
- if (LOG_DMA)
- logerror("%08X:Galileo starting DMA Chan %i\n", space.device().safe_pc(), which);
+ LOGDMA("%08X:Galileo starting DMA Chan %i\n", space.device().safe_pc(), which);
}
- if (LOG_GALILEO)
- logerror("%08X:Galileo write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset * 4, data, mem_mask);
+ LOGGALILEO("%08X:Galileo write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset * 4, data, mem_mask);
break;
}
@@ -642,8 +741,7 @@ WRITE32_MEMBER(gt64xxx_device::cpu_if_w)
data &= 0xffffff;
if (!timer->active)
timer->count = data;
- if (LOG_TIMERS)
- logerror("%08X:timer/counter %d count = %08X [start=%08X]\n", space.device().safe_pc(), offset % 4, data, timer->count);
+ LOGTIMERS("%08X:timer/counter %d count = %08X [start=%08X]\n", space.device().safe_pc(), offset % 4, data, timer->count);
break;
}
@@ -651,8 +749,7 @@ WRITE32_MEMBER(gt64xxx_device::cpu_if_w)
{
int which, mask;
- if (LOG_TIMERS)
- logerror("%08X:timer/counter control = %08X\n", space.device().safe_pc(), data);
+ LOGTIMERS("%08X:timer/counter control = %08X\n", space.device().safe_pc(), data);
for (which = 0, mask = 0x01; which < 4; which++, mask <<= 2)
{
galileo_timer *timer = &m_timer[which];
@@ -666,8 +763,7 @@ WRITE32_MEMBER(gt64xxx_device::cpu_if_w)
timer->count &= 0xffffff;
}
timer->timer->adjust(TIMER_PERIOD * timer->count, which);
- if (LOG_TIMERS)
- logerror("Adjusted timer to fire in %f secs\n", (TIMER_PERIOD * timer->count).as_double());
+ LOGTIMERS("Adjusted timer to fire in %f secs\n", (TIMER_PERIOD * timer->count).as_double());
}
else if (timer->active && !(data & mask))
{
@@ -675,24 +771,21 @@ WRITE32_MEMBER(gt64xxx_device::cpu_if_w)
timer->active = 0;
timer->count = (timer->count > elapsed) ? (timer->count - elapsed) : 0;
timer->timer->adjust(attotime::never, which);
- if (LOG_TIMERS)
- logerror("Disabled timer\n");
+ LOGTIMERS("Disabled timer\n");
}
}
break;
}
case GREG_INT_STATE:
- if (LOG_GALILEO)
- logerror("%08X:Galileo write to IRQ clear = %08X & %08X\n", offset*4, data, mem_mask);
+ LOGGALILEO("%08X:Galileo write to IRQ clear = %08X & %08X\n", offset*4, data, mem_mask);
m_reg[offset] = oldata & data;
update_irqs();
break;
case GREG_CONFIG_DATA:
pci_host_device::config_data_w(space, offset, data);
- if (LOG_GALILEO)
- logerror("%08X:Galileo PCI config data write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
+ LOGGALILEO("%08X:Galileo PCI config data write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
break;
case GREG_CONFIG_ADDRESS:
@@ -718,8 +811,7 @@ WRITE32_MEMBER(gt64xxx_device::cpu_if_w)
modData = data;
}
pci_host_device::config_address_w(space, offset, modData);
- if (LOG_GALILEO)
- logerror("%08X:Galileo PCI config address write to offset %03X = %08X & %08X origData = %08X\n", space.device().safe_pc(), offset*4, modData, mem_mask, data);
+ LOGGALILEO("%08X:Galileo PCI config address write to offset %03X = %08X & %08X origData = %08X\n", space.device().safe_pc(), offset*4, modData, mem_mask, data);
break;
case GREG_DMA0_COUNT: case GREG_DMA1_COUNT: case GREG_DMA2_COUNT: case GREG_DMA3_COUNT:
@@ -727,13 +819,11 @@ WRITE32_MEMBER(gt64xxx_device::cpu_if_w)
case GREG_DMA0_DEST: case GREG_DMA1_DEST: case GREG_DMA2_DEST: case GREG_DMA3_DEST:
case GREG_DMA0_NEXT: case GREG_DMA1_NEXT: case GREG_DMA2_NEXT: case GREG_DMA3_NEXT:
case GREG_INT_MASK:
- if (LOG_GALILEO)
- logerror("%08X:Galileo write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
+ LOGGALILEO("%08X:Galileo write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
break;
default:
- if (LOG_GALILEO)
- logerror("%08X:Galileo write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
+ LOGGALILEO("%08X:Galileo write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
break;
}
}
@@ -754,8 +844,7 @@ void gt64xxx_device::update_irqs()
if (m_irq_num != -1)
m_cpu->set_input_line(m_irq_num, state);
- if (1 && LOG_GALILEO)
- logerror("Galileo IRQ %s irqNum: %i state = %08X mask = %08X\n", (state == ASSERT_LINE) ? "asserted" : "cleared", m_irq_num, m_reg[GREG_INT_STATE], m_reg[GREG_INT_MASK]);
+ LOGGALILEO("Galileo IRQ %s irqNum: %i state = %08X mask = %08X\n", (state == ASSERT_LINE) ? "asserted" : "cleared", m_irq_num, m_reg[GREG_INT_STATE], m_reg[GREG_INT_MASK]);
}
@@ -764,8 +853,7 @@ TIMER_CALLBACK_MEMBER(gt64xxx_device::timer_callback)
int which = param;
galileo_timer *timer = &m_timer[which];
- if (LOG_TIMERS)
- logerror("timer %d fired\n", which);
+ LOGTIMERS("timer %d fired\n", which);
/* copy the start value from the registers */
timer->count = m_reg[GREG_TIMER0_COUNT + which];
@@ -883,16 +971,15 @@ TIMER_CALLBACK_MEMBER (gt64xxx_device::perform_dma)
case 2: dstinc = 0; break;
}
- if (LOG_DMA)
- logerror("Performing DMA%d: src=%08X dst=%08X bytes=%04X sinc=%d dinc=%d\n", which, srcaddr, dstaddr, bytesleft, srcinc, dstinc);
+ LOGDMA("Performing DMA%d: src=%08X dst=%08X bytes=%04X sinc=%d dinc=%d\n", which, srcaddr, dstaddr, bytesleft, srcinc, dstinc);
int burstCount = 0;
/* standard transfer */
while (bytesleft > 0 && burstCount < DMA_BURST_SIZE)
{
- if (m_pci_stall_state) {
- if (LOG_DMA && m_retry_count<4)
- logerror("%08X:Stalling DMA on voodoo retry_count: %i\n", m_cpu_space->device().safe_pc(), m_retry_count);
+ if (m_pci_stall_state)
+ {
+ if (m_retry_count<4) LOGDMA("%08X:Stalling DMA on voodoo retry_count: %i\n", m_cpu_space->device().safe_pc(), m_retry_count);
// Save info
m_reg[GREG_DMA0_SOURCE + which] = srcaddr;
m_reg[GREG_DMA0_DEST + which] = dstaddr;
@@ -900,14 +987,16 @@ TIMER_CALLBACK_MEMBER (gt64xxx_device::perform_dma)
m_retry_count++;
uint32_t configRetryCount = (m_reg[GREG_PCI_TIMEOUT] >> 16) & 0xff;
- if (m_retry_count >= configRetryCount && configRetryCount > 0) {
+ if (m_retry_count >= configRetryCount && configRetryCount > 0)
+ {
logerror("gt64xxx_device::perform_dma Error! Too many PCI retries. DMA%d: src=%08X dst=%08X bytes=%04X sinc=%d dinc=%d\n", which, srcaddr, dstaddr, bytesleft, srcinc, dstinc);
// Signal error and abort DMA
m_dma_active &= ~(1 << which);
m_retry_count = 0;
return;
}
- else {
+ else
+ {
// Come back later
return;
}
diff --git a/src/devices/machine/gt64xxx.h b/src/devices/machine/gt64xxx.h
index cf6cbf20ea3..192672b8c3a 100644
--- a/src/devices/machine/gt64xxx.h
+++ b/src/devices/machine/gt64xxx.h
@@ -6,8 +6,8 @@
// Need PCI to be able to have a target delay (pci bus stall) a dma transfer
// Configurable byte swapping on cpu and pci busses.
-#ifndef GT64XXX_H
-#define GT64XXX_H
+#ifndef MAME_MACHINE_GT64XXX_H
+#define MAME_MACHINE_GT64XXX_H
#include "pci.h"
#include "cpu/mips/mips3.h"
@@ -48,153 +48,10 @@
downcast<gt64xxx_device *>(device)->set_simm1_size(_size);
/*************************************
- *
- * Galileo constants
- *
- *************************************/
-
-#define TIMER_PERIOD attotime::from_hz(m_clock)
-#define PCI_BUS_CLOCK 33000000
-// Number of dma words to transfer at a time, real hardware configurable between 8-32
-#define DMA_BURST_SIZE 32
-#define DMA_TIMER_PERIOD attotime::from_hz(PCI_BUS_CLOCK / 48)
-
-/* Galileo registers - 0x000-0x3ff */
-#define GREG_CPU_CONFIG (0x000/4)
-#define GREG_RAS_1_0_LO (0x008/4)
-#define GREG_RAS_1_0_HI (0x010/4)
-#define GREG_RAS_3_2_LO (0x018/4)
-#define GREG_RAS_3_2_HI (0x020/4)
-#define GREG_CS_2_0_LO (0x028/4)
-#define GREG_CS_2_0_HI (0x030/4)
-#define GREG_CS_3_BOOT_LO (0x038/4)
-#define GREG_CS_3_BOOT_HI (0x040/4)
-#define GREG_PCI_IO_LO (0x048/4)
-#define GREG_PCI_IO_HI (0x050/4)
-#define GREG_PCI_MEM0_LO (0x058/4)
-#define GREG_PCI_MEM0_HI (0x060/4)
-#define GREG_INTERNAL_SPACE (0x068/4)
-#define GREG_BUSERR_LO (0x070/4)
-#define GREG_BUSERR_HI (0x078/4)
-// GT-64111 only
-#define GREG_PCI_MEM1_LO (0x080/4)
-#define GREG_PCI_MEM1_HI (0x088/4)
-
-/* Galileo registers - 0x400-0x7ff */
-#define GREG_RAS0_LO (0x400/4)
-#define GREG_RAS0_HI (0x404/4)
-#define GREG_RAS1_LO (0x408/4)
-#define GREG_RAS1_HI (0x40c/4)
-#define GREG_RAS2_LO (0x410/4)
-#define GREG_RAS2_HI (0x414/4)
-#define GREG_RAS3_LO (0x418/4)
-#define GREG_RAS3_HI (0x41c/4)
-#define GREG_CS0_LO (0x420/4)
-#define GREG_CS0_HI (0x424/4)
-#define GREG_CS1_LO (0x428/4)
-#define GREG_CS1_HI (0x42c/4)
-#define GREG_CS2_LO (0x430/4)
-#define GREG_CS2_HI (0x434/4)
-#define GREG_CS3_LO (0x438/4)
-#define GREG_CS3_HI (0x43c/4)
-#define GREG_CSBOOT_LO (0x440/4)
-#define GREG_CSBOOT_HI (0x444/4)
-#define GREG_DRAM_CONFIG (0x448/4)
-#define GREG_DRAM_BANK0 (0x44c/4)
-#define GREG_DRAM_BANK1 (0x450/4)
-#define GREG_DRAM_BANK2 (0x454/4)
-#define GREG_DRAM_BANK3 (0x458/4)
-#define GREG_DEVICE_BANK0 (0x45c/4)
-#define GREG_DEVICE_BANK1 (0x460/4)
-#define GREG_DEVICE_BANK2 (0x464/4)
-#define GREG_DEVICE_BANK3 (0x468/4)
-#define GREG_DEVICE_BOOT (0x46c/4)
-#define GREG_ADDRESS_ERROR (0x470/4)
-
-/* Galileo registers - 0x800-0xbff */
-#define GREG_DMA0_COUNT (0x800/4)
-#define GREG_DMA1_COUNT (0x804/4)
-#define GREG_DMA2_COUNT (0x808/4)
-#define GREG_DMA3_COUNT (0x80c/4)
-#define GREG_DMA0_SOURCE (0x810/4)
-#define GREG_DMA1_SOURCE (0x814/4)
-#define GREG_DMA2_SOURCE (0x818/4)
-#define GREG_DMA3_SOURCE (0x81c/4)
-#define GREG_DMA0_DEST (0x820/4)
-#define GREG_DMA1_DEST (0x824/4)
-#define GREG_DMA2_DEST (0x828/4)
-#define GREG_DMA3_DEST (0x82c/4)
-#define GREG_DMA0_NEXT (0x830/4)
-#define GREG_DMA1_NEXT (0x834/4)
-#define GREG_DMA2_NEXT (0x838/4)
-#define GREG_DMA3_NEXT (0x83c/4)
-#define GREG_DMA0_CONTROL (0x840/4)
-#define GREG_DMA1_CONTROL (0x844/4)
-#define GREG_DMA2_CONTROL (0x848/4)
-#define GREG_DMA3_CONTROL (0x84c/4)
-#define GREG_TIMER0_COUNT (0x850/4)
-#define GREG_TIMER1_COUNT (0x854/4)
-#define GREG_TIMER2_COUNT (0x858/4)
-#define GREG_TIMER3_COUNT (0x85c/4)
-#define GREG_DMA_ARBITER (0x860/4)
-#define GREG_TIMER_CONTROL (0x864/4)
-
-/* Galileo registers - 0xc00-0xfff */
-#define GREG_PCI_COMMAND (0xc00/4)
-#define GREG_PCI_TIMEOUT (0xc04/4)
-#define GREG_PCI_RAS_1_0 (0xc08/4)
-#define GREG_PCI_RAS_3_2 (0xc0c/4)
-#define GREG_PCI_CS_2_0 (0xc10/4)
-#define GREG_PCI_CS_3_BOOT (0xc14/4)
-#define GREG_INT_STATE (0xc18/4)
-#define GREG_INT_MASK (0xc1c/4)
-#define GREG_PCI_INT_MASK (0xc24/4)
-#define GREG_CONFIG_ADDRESS (0xcf8/4)
-#define GREG_CONFIG_DATA (0xcfc/4)
-
-/* Galileo interrupts */
-#define GINT_SUMMARY_SHIFT (0)
-#define GINT_MEMOUT_SHIFT (1)
-#define GINT_DMAOUT_SHIFT (2)
-#define GINT_CPUOUT_SHIFT (3)
-#define GINT_DMA0COMP_SHIFT (4)
-#define GINT_DMA1COMP_SHIFT (5)
-#define GINT_DMA2COMP_SHIFT (6)
-#define GINT_DMA3COMP_SHIFT (7)
-#define GINT_T0EXP_SHIFT (8)
-#define GINT_T1EXP_SHIFT (9)
-#define GINT_T2EXP_SHIFT (10)
-#define GINT_T3EXP_SHIFT (11)
-#define GINT_MASRDERR_SHIFT (12)
-#define GINT_SLVWRERR_SHIFT (13)
-#define GINT_MASWRERR_SHIFT (14)
-#define GINT_SLVRDERR_SHIFT (15)
-#define GINT_ADDRERR_SHIFT (16)
-#define GINT_MEMERR_SHIFT (17)
-#define GINT_MASABORT_SHIFT (18)
-#define GINT_TARABORT_SHIFT (19)
-#define GINT_RETRYCTR_SHIFT (20)
-
-/*************************************
* Structures
*************************************/
class gt64xxx_device : public pci_host_device {
public:
- struct galileo_timer
- {
- emu_timer * timer;
- uint32_t count;
- uint8_t active;
- };
-
- struct galileo_addr_map
- {
- uint32_t low_addr;
- uint32_t high_addr;
- address_space* space;
- galileo_addr_map() : low_addr(0xffffffff), high_addr(0x0) {}
- };
-
gt64xxx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void reset_all_mappings() override;
@@ -246,7 +103,8 @@ public:
enum proc_addr_bank {ADDR_RAS1_0, ADDR_RAS3_2, ADDR_CS2_0, ADDR_CS3_BCS, ADDR_PCI_IO, ADDR_PCI_MEM0, ADDR_PCI_MEM1, ADDR_NUM};
void set_map(int id, const address_map_delegate &map, device_t *device);
- void postload(void);
+ void postload();
+
protected:
address_space *m_cpu_space;
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
@@ -255,6 +113,21 @@ protected:
private:
+ struct galileo_timer
+ {
+ emu_timer * timer;
+ uint32_t count;
+ uint8_t active;
+ };
+
+ struct galileo_addr_map
+ {
+ uint32_t low_addr;
+ uint32_t high_addr;
+ address_space* space;
+ galileo_addr_map() : low_addr(0xffffffff), high_addr(0x0) {}
+ };
+
mips3_device *m_cpu;
const char *cpu_tag;
uint32_t m_clock;
@@ -305,9 +178,8 @@ private:
int dma_fetch_next(address_space &space, int which);
TIMER_CALLBACK_MEMBER(perform_dma);
address_space* dma_decode_address(uint32_t &addr);
-
};
-extern const device_type GT64XXX;
+DECLARE_DEVICE_TYPE(GT64XXX, gt64xxx_device)
-#endif
+#endif // MAME_MACHINE_GT64XXX_H
diff --git a/src/devices/machine/hd63450.cpp b/src/devices/machine/hd63450.cpp
index 2185103a484..9ff3e0ad107 100644
--- a/src/devices/machine/hd63450.cpp
+++ b/src/devices/machine/hd63450.cpp
@@ -9,10 +9,10 @@
#include "emu.h"
#include "hd63450.h"
-const device_type HD63450 = device_creator<hd63450_device>;
+DEFINE_DEVICE_TYPE(HD63450, hd63450_device, "hd63450", "Hitachi HD63450 DMA Controller")
hd63450_device::hd63450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HD63450, "Hitachi HD63450", tag, owner, clock, "hd63450", __FILE__),
+ : device_t(mconfig, HD63450, tag, owner, clock),
m_dma_end(*this),
m_dma_error(*this),
m_dma_read_0(*this),
@@ -27,15 +27,15 @@ hd63450_device::hd63450_device(const machine_config &mconfig, const char *tag, d
m_cpu(nullptr)
{
for (int i = 0; i < 4; i++)
- {
- memset(&m_reg[i], 0, sizeof(m_reg[i]));
- m_timer[i] = nullptr;
- m_in_progress[i] = 0;
- m_transfer_size[i] = 0;
- m_halted[i] = 0;
- m_our_clock[i] = attotime::zero;
- m_burst_clock[i] = attotime::zero;
- }
+ {
+ memset(&m_reg[i], 0, sizeof(m_reg[i]));
+ m_timer[i] = nullptr;
+ m_in_progress[i] = 0;
+ m_transfer_size[i] = 0;
+ m_halted[i] = 0;
+ m_our_clock[i] = attotime::zero;
+ m_burst_clock[i] = attotime::zero;
+ }
}
//-------------------------------------------------
diff --git a/src/devices/machine/hd63450.h b/src/devices/machine/hd63450.h
index e620173836b..2e525cabf70 100644
--- a/src/devices/machine/hd63450.h
+++ b/src/devices/machine/hd63450.h
@@ -3,8 +3,9 @@
/*
Hitachi HD63450 DMA Controller
*/
-#ifndef HD63450_H
-#define HD63450_H
+#ifndef MAME_MACHINE_HD63450_H
+#define MAME_MACHINE_HD63450_H
+
#pragma once
@@ -48,44 +49,21 @@
#define MCFG_HD63450_BURST_CLOCKS(_clk1, _clk2, _clk3, _clk4) \
hd63450_device::set_burst_clocks(*device, _clk1, _clk2, _clk3, _clk4);
-struct hd63450_regs
-{ // offsets in bytes
- unsigned char csr; // [00] Channel status register (R/W)
- unsigned char cer; // [01] Channel error register (R)
- unsigned char dcr; // [04] Device control register (R/W)
- unsigned char ocr; // [05] Operation control register (R/W)
- unsigned char scr; // [06] Sequence control register (R/W)
- unsigned char ccr; // [07] Channel control register (R/W)
- unsigned short mtc; // [0a,0b] Memory Transfer Counter (R/W)
- unsigned long mar; // [0c-0f] Memory Address Register (R/W)
- unsigned long dar; // [14-17] Device Address Register (R/W)
- unsigned short btc; // [1a,1b] Base Transfer Counter (R/W)
- unsigned long bar; // [1c-1f] Base Address Register (R/W)
- unsigned char niv; // [25] Normal Interrupt Vector (R/W)
- unsigned char eiv; // [27] Error Interrupt Vector (R/W)
- unsigned char mfc; // [29] Memory Function Code (R/W)
- unsigned char cpr; // [2d] Channel Priority Register (R/W)
- unsigned char dfc; // [31] Device Function Code (R/W)
- unsigned char bfc; // [39] Base Function Code (R/W)
- unsigned char gcr; // [3f] General Control Register (R/W)
-};
-
class hd63450_device : public device_t
{
public:
hd63450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~hd63450_device() {}
-
- template<class _Object> static devcb_base &set_dma_end_callback(device_t &device, _Object object) { return downcast<hd63450_device &>(device).m_dma_end.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_error_callback(device_t &device, _Object object) { return downcast<hd63450_device &>(device).m_dma_error.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_read_0_callback(device_t &device, _Object object) { return downcast<hd63450_device &>(device).m_dma_read_0.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_read_1_callback(device_t &device, _Object object) { return downcast<hd63450_device &>(device).m_dma_read_1.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_read_2_callback(device_t &device, _Object object) { return downcast<hd63450_device &>(device).m_dma_read_2.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_read_3_callback(device_t &device, _Object object) { return downcast<hd63450_device &>(device).m_dma_read_3.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_write_0_callback(device_t &device, _Object object) { return downcast<hd63450_device &>(device).m_dma_write_0.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_write_1_callback(device_t &device, _Object object) { return downcast<hd63450_device &>(device).m_dma_write_1.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_write_2_callback(device_t &device, _Object object) { return downcast<hd63450_device &>(device).m_dma_write_2.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_write_3_callback(device_t &device, _Object object) { return downcast<hd63450_device &>(device).m_dma_write_3.set_callback(object); }
+
+ template <class Object> static devcb_base &set_dma_end_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_end.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_error_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_error.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_read_0_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_read_1_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_read_2_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_read_3_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_read_3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_write_0_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_0.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_write_1_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_write_2_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_write_3_callback(device_t &device, Object &&cb) { return downcast<hd63450_device &>(device).m_dma_write_3.set_callback(std::forward<Object>(cb)); }
static void set_cpu_tag(device_t &device, const char *tag) { downcast<hd63450_device &>(device).m_cpu_tag = tag; }
static void set_our_clocks(device_t &device, const attotime &clk1, const attotime &clk2, const attotime &clk3, const attotime &clk4)
@@ -123,6 +101,28 @@ protected:
virtual void device_reset() override;
private:
+ struct hd63450_regs
+ { // offsets in bytes
+ unsigned char csr; // [00] Channel status register (R/W)
+ unsigned char cer; // [01] Channel error register (R)
+ unsigned char dcr; // [04] Device control register (R/W)
+ unsigned char ocr; // [05] Operation control register (R/W)
+ unsigned char scr; // [06] Sequence control register (R/W)
+ unsigned char ccr; // [07] Channel control register (R/W)
+ unsigned short mtc; // [0a,0b] Memory Transfer Counter (R/W)
+ unsigned long mar; // [0c-0f] Memory Address Register (R/W)
+ unsigned long dar; // [14-17] Device Address Register (R/W)
+ unsigned short btc; // [1a,1b] Base Transfer Counter (R/W)
+ unsigned long bar; // [1c-1f] Base Address Register (R/W)
+ unsigned char niv; // [25] Normal Interrupt Vector (R/W)
+ unsigned char eiv; // [27] Error Interrupt Vector (R/W)
+ unsigned char mfc; // [29] Memory Function Code (R/W)
+ unsigned char cpr; // [2d] Channel Priority Register (R/W)
+ unsigned char dfc; // [31] Device Function Code (R/W)
+ unsigned char bfc; // [39] Base Function Code (R/W)
+ unsigned char gcr; // [3f] General Control Register (R/W)
+ };
+
devcb_write8 m_dma_end;
devcb_write8 m_dma_error;
devcb_read8 m_dma_read_0;
@@ -154,5 +154,6 @@ private:
void dma_transfer_start(int channel);
};
-extern const device_type HD63450;
-#endif // HD63450_H
+DECLARE_DEVICE_TYPE(HD63450, hd63450_device)
+
+#endif // MAME_MACHINE_HD63450_H
diff --git a/src/devices/machine/hd64610.cpp b/src/devices/machine/hd64610.cpp
index 885f0ae8b3c..0da686e7bf0 100644
--- a/src/devices/machine/hd64610.cpp
+++ b/src/devices/machine/hd64610.cpp
@@ -18,17 +18,18 @@
#include "hd64610.h"
#include "coreutil.h"
+#define VERBOSE 1
+#include "logmacro.h"
+
// device type definition
-const device_type HD64610 = device_creator<hd64610_device>;
+DEFINE_DEVICE_TYPE(HD64610, hd64610_device, "hd64610", "Hitachi HD64610 RTC")
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 1
-
// internal registers
enum
{
@@ -87,7 +88,7 @@ inline void hd64610_device::set_irq_line()
if (m_irq_out != irq_out)
{
- if (LOG) logerror("HD64610 '%s' IRQ %u\n", tag(), irq_out);
+ LOG("HD64610 IRQ %u\n", irq_out);
m_out_irq_cb(irq_out);
m_irq_out = irq_out;
@@ -152,7 +153,7 @@ inline void hd64610_device::check_alarm()
//-------------------------------------------------
hd64610_device::hd64610_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HD64610, "HD64610", tag, owner, clock, "hd64610", __FILE__),
+ : device_t(mconfig, HD64610, tag, owner, clock),
device_rtc_interface(mconfig, *this),
device_nvram_interface(mconfig, *this),
m_out_irq_cb(*this),
@@ -289,7 +290,7 @@ READ8_MEMBER( hd64610_device::read )
{
uint8_t data = m_regs[offset & 0x0f];
- if (LOG) logerror("HD64610 '%s' Register %u Read %02x\n", tag(), offset, data);
+ LOG("HD64610 Register %u Read %02x\n", offset, data);
return data;
}
@@ -313,17 +314,17 @@ WRITE8_MEMBER( hd64610_device::write )
if ((data & CRA_CF) == 0)
{
- if (LOG) logerror("HD64610 '%s' clear carry flag\n", tag());
+ LOG("HD64610 clear carry flag\n");
m_regs[REG_CRA] &= 0x7f;
}
if ((data & CRA_AF) == 0)
{
- if (LOG) logerror("HD64610 '%s' clear alarm flag\n", tag());
+ LOG("HD64610 clear alarm flag\n");
m_regs[REG_CRA] &= 0xfe;
}
- if (LOG) logerror("HD64610 '%s' set alarm IRQ %d\n", tag(), BIT(data, 3));
- if (LOG) logerror("HD64610 '%s' set carry IRQ %d\n", tag(), BIT(data, 4));
+ LOG("HD64610 set alarm IRQ %d\n", BIT(data, 3));
+ LOG("HD64610 set carry IRQ %d\n", BIT(data, 4));
break;
case REG_CRB:
@@ -331,7 +332,7 @@ WRITE8_MEMBER( hd64610_device::write )
if (data & CRB_ADJ)
{
- if (LOG) logerror("HD64610 '%s' 30-sec adjustament\n", tag());
+ LOG("HD64610 30-sec adjustament\n");
adjust_seconds();
m_regs[REG_64HZ] = 0;
@@ -340,18 +341,18 @@ WRITE8_MEMBER( hd64610_device::write )
if (data & CRB_RESET)
{
- if (LOG) logerror("HD64610 '%s' CRB reset\n", tag());
+ LOG("HD64610 CRB reset\n");
m_regs[REG_64HZ] = 0;
m_regs[REG_CRB] &= ~CRB_RESET;
}
- if (LOG) logerror("HD64610 '%s' set timer %d\n", tag(), BIT(data, 0));
+ LOG("HD64610 set timer %d\n", BIT(data, 0));
break;
default:
m_regs[offset & 0x0f] = data & REG_WRITE_MASK[offset & 0x0f];
- if (LOG) logerror("HD64610 '%s' Register %u Write %02x\n", tag(), offset & 0x0f, data);
+ LOG("HD64610 Register %u Write %02x\n", offset & 0x0f, data);
break;
}
}
diff --git a/src/devices/machine/hd64610.h b/src/devices/machine/hd64610.h
index fd3fd4dec38..edaa7a70c16 100644
--- a/src/devices/machine/hd64610.h
+++ b/src/devices/machine/hd64610.h
@@ -21,10 +21,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_HD64610_H
+#define MAME_MACHINE_HD64610_H
-#ifndef __HD64610__
-#define __HD64610__
+#pragma once
#include "dirtc.h"
@@ -55,8 +55,8 @@ public:
// construction/destruction
hd64610_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<hd64610_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_1hz_callback(device_t &device, _Object object) { return downcast<hd64610_device &>(device).m_out_1hz_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<hd64610_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_1hz_callback(device_t &device, Object &&cb) { return downcast<hd64610_device &>(device).m_out_1hz_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -98,7 +98,6 @@ private:
// device type definition
-extern const device_type HD64610;
-
+DECLARE_DEVICE_TYPE(HD64610, hd64610_device)
-#endif
+#endif // MAME_MACHINE_HD64610_H
diff --git a/src/devices/machine/hdc92x4.cpp b/src/devices/machine/hdc92x4.cpp
index d125846bc49..a14b8f231a1 100644
--- a/src/devices/machine/hdc92x4.cpp
+++ b/src/devices/machine/hdc92x4.cpp
@@ -468,8 +468,9 @@ const hdc92x4_device::cmddef hdc92x4_device::s_command[] =
/*
Standard constructor for the base class and the two variants
*/
-hdc92x4_device::hdc92x4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+hdc92x4_device::hdc92x4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_hdc9234)
+ : device_t(mconfig, type, tag, owner, clock),
+ m_is_hdc9234(is_hdc9234),
m_out_intrq(*this),
m_out_dmarq(*this),
m_out_dip(*this),
@@ -481,15 +482,13 @@ hdc92x4_device::hdc92x4_device(const machine_config &mconfig, device_type type,
}
hdc9224_device::hdc9224_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hdc92x4_device(mconfig, HDC9224, "SMC HDC9224 Universal Disk Controller", tag, owner, clock, "hdc9224", __FILE__)
+ : hdc92x4_device(mconfig, HDC9224, tag, owner, clock, false)
{
- m_is_hdc9234 = false;
}
hdc9234_device::hdc9234_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hdc92x4_device(mconfig, HDC9234, "SMC HDC9234 Universal Disk Controller", tag, owner, clock, "hdc9234", __FILE__)
+ : hdc92x4_device(mconfig, HDC9234, tag, owner, clock, true)
{
- m_is_hdc9234 = true;
}
@@ -515,7 +514,7 @@ bool hdc92x4_device::fm_mode()
*/
bool hdc92x4_device::on_track00()
{
- return (m_register_r[DRIVE_STATUS] & HDC_DS_TRK00)!=0;
+ return (m_register_r[DRIVE_STATUS] & DS_TRK00)!=0;
}
/*
@@ -523,7 +522,7 @@ bool hdc92x4_device::on_track00()
*/
bool hdc92x4_device::seek_complete()
{
- return (m_register_r[DRIVE_STATUS] & HDC_DS_SKCOM)!=0;
+ return (m_register_r[DRIVE_STATUS] & DS_SKCOM)!=0;
}
/*
@@ -531,7 +530,7 @@ bool hdc92x4_device::seek_complete()
*/
bool hdc92x4_device::index_hole()
{
- return (m_register_r[DRIVE_STATUS] & HDC_DS_INDEX)!=0;
+ return (m_register_r[DRIVE_STATUS] & DS_INDEX)!=0;
}
/*
@@ -539,7 +538,7 @@ bool hdc92x4_device::index_hole()
*/
bool hdc92x4_device::drive_ready()
{
- return (m_register_r[DRIVE_STATUS] & HDC_DS_READY)!=0;
+ return (m_register_r[DRIVE_STATUS] & DS_READY)!=0;
}
/*
@@ -4503,10 +4502,10 @@ void hdc92x4_device::auxbus_in(uint8_t data)
if (TRACE_AUXBUS) logerror("Got value %02x via auxbus: ecc=%d index=%d seek_comp=%d tr00=%d user=%d writeprot=%d ready=%d fault=%d\n",
tag(), data,
- (data&HDC_DS_ECCERR)? 1:0, (data&HDC_DS_INDEX)? 1:0,
- (data&HDC_DS_SKCOM)? 1:0, (data&HDC_DS_TRK00)? 1:0,
- (data&HDC_DS_UDEF)? 1:0, (data&HDC_DS_WRPROT)? 1:0,
- (data&HDC_DS_READY)? 1:0, (data&HDC_DS_WRFAULT)? 1:0);
+ (data&DS_ECCERR)? 1:0, (data&DS_INDEX)? 1:0,
+ (data&DS_SKCOM)? 1:0, (data&DS_TRK00)? 1:0,
+ (data&DS_UDEF)? 1:0, (data&DS_WRPROT)? 1:0,
+ (data&DS_READY)? 1:0, (data&DS_WRFAULT)? 1:0);
bool previndex = index_hole();
bool prevready = drive_ready();
@@ -4650,8 +4649,8 @@ void hdc92x4_device::auxbus_out()
if (m_output1 != m_output1_old || m_output2 != m_output2_old)
{
// Only propagate changes
- m_out_auxbus((offs_t)HDC_OUTPUT_1, m_output1);
- m_out_auxbus((offs_t)HDC_OUTPUT_2, m_output2);
+ m_out_auxbus((offs_t)OUTPUT_1, m_output1);
+ m_out_auxbus((offs_t)OUTPUT_2, m_output2);
m_output1_old = m_output1;
m_output2_old = m_output2;
}
@@ -4660,9 +4659,9 @@ void hdc92x4_device::auxbus_out()
void hdc92x4_device::dma_address_out(uint8_t addrub, uint8_t addrhb, uint8_t addrlb)
{
if (TRACE_DMA) logerror("Setting DMA address %06x\n", (addrub<<16 | addrhb<<8 | addrlb)&0xffffff);
- m_out_auxbus((offs_t)HDC_OUTPUT_DMA_ADDR, addrub);
- m_out_auxbus((offs_t)HDC_OUTPUT_DMA_ADDR, addrhb);
- m_out_auxbus((offs_t)HDC_OUTPUT_DMA_ADDR, addrlb);
+ m_out_auxbus((offs_t)OUTPUT_DMA_ADDR, addrub);
+ m_out_auxbus((offs_t)OUTPUT_DMA_ADDR, addrhb);
+ m_out_auxbus((offs_t)OUTPUT_DMA_ADDR, addrlb);
}
/*
@@ -4827,5 +4826,5 @@ void hdc92x4_device::device_reset()
m_out_dmarq(CLEAR_LINE);
}
-const device_type HDC9224 = device_creator<hdc9224_device>;
-const device_type HDC9234 = device_creator<hdc9234_device>;
+DEFINE_DEVICE_TYPE(HDC9224, hdc9224_device, "hdc9224", "SMC HDC9224 Universal Disk Controller")
+DEFINE_DEVICE_TYPE(HDC9234, hdc9234_device, "hdc9234", "SMC HDC9234 Universal Disk Controller")
diff --git a/src/devices/machine/hdc92x4.h b/src/devices/machine/hdc92x4.h
index 2d70708ad0f..eab12974226 100644
--- a/src/devices/machine/hdc92x4.h
+++ b/src/devices/machine/hdc92x4.h
@@ -4,42 +4,15 @@
HDC9224 / HDC9234 Hard and Floppy Disk Controller
For details see hdc92x4.c
*/
-#ifndef __HDC92X4_H__
-#define __HDC92X4_H__
+#ifndef MAME_MACHINE_HDC92X4_H
+#define MAME_MACHINE_HDC92X4_H
#include "imagedev/floppy.h"
#include "imagedev/mfmhd.h"
#include "fdc_pll.h"
-extern const device_type HDC9224;
-extern const device_type HDC9234;
-
-/*
- Enumeration of the latches outside of the controller
-*/
-enum
-{
- HDC_INPUT_STATUS = 0x00,
- HDC_OUTPUT_DMA_ADDR = 0x01,
- HDC_OUTPUT_1 = 0x02,
- HDC_OUTPUT_2 = 0x03
-};
-
-
-/*
- Definition of bits in the Disk-Status register
-*/
-enum
-{
- HDC_DS_ECCERR = 0x80, // ECC error
- HDC_DS_INDEX = 0x40, // index hole
- HDC_DS_SKCOM = 0x20, // seek complete
- HDC_DS_TRK00 = 0x10, // track 0
- HDC_DS_UDEF = 0x08, // user-defined
- HDC_DS_WRPROT = 0x04, // write-protected
- HDC_DS_READY = 0x02, // drive ready bit
- HDC_DS_WRFAULT = 0x01 // write fault
-};
+DECLARE_DEVICE_TYPE(HDC9224, hdc9224_device)
+DECLARE_DEVICE_TYPE(HDC9234, hdc9234_device)
//===================================================================
@@ -78,7 +51,32 @@ enum
class hdc92x4_device : public device_t
{
public:
- hdc92x4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ /*
+ Enumeration of the latches outside of the controller
+ */
+ enum
+ {
+ INPUT_STATUS = 0x00,
+ OUTPUT_DMA_ADDR = 0x01,
+ OUTPUT_1 = 0x02,
+ OUTPUT_2 = 0x03
+ };
+
+
+ /*
+ Definition of bits in the Disk-Status register
+ */
+ enum
+ {
+ DS_ECCERR = 0x80, // ECC error
+ DS_INDEX = 0x40, // index hole
+ DS_SKCOM = 0x20, // seek complete
+ DS_TRK00 = 0x10, // track 0
+ DS_UDEF = 0x08, // user-defined
+ DS_WRPROT = 0x04, // write-protected
+ DS_READY = 0x02, // drive ready bit
+ DS_WRFAULT = 0x01 // write fault
+ };
// Accessors from the CPU side
DECLARE_READ8_MEMBER( read );
@@ -87,12 +85,12 @@ public:
DECLARE_WRITE_LINE_MEMBER( dmaack );
// Callbacks
- template<class _Object> static devcb_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_out_intrq.set_callback(object); }
- template<class _Object> static devcb_base &set_dmarq_wr_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_out_dmarq.set_callback(object); }
- template<class _Object> static devcb_base &set_dip_wr_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_out_dip.set_callback(object); }
- template<class _Object> static devcb_base &set_auxbus_wr_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_out_auxbus.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_rd_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_in_dma.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_wr_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_out_dma.set_callback(object); }
+ template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_intrq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dmarq_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_dmarq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dip_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_dip.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_auxbus_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_auxbus.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_rd_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_in_dma.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<hdc92x4_device &>(device).m_out_dma.set_callback(std::forward<Object>(cb)); }
// auxbus_in is intended to read events from the drives
// In the real chip the status is polled; to avoid unnecessary load
@@ -114,10 +112,12 @@ public:
void connect_hard_drive(mfm_harddisk_device *harddisk);
protected:
+ hdc92x4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_hdc9234);
+
void device_start() override;
void device_reset() override;
- bool m_is_hdc9234;
+ const bool m_is_hdc9234;
devcb_write_line m_out_intrq; // INT line
devcb_write_line m_out_dmarq; // DMA request line
@@ -506,4 +506,4 @@ protected:
int header_length() override;
};
-#endif
+#endif // MAME_MACHINE_HDC92X4_H
diff --git a/src/devices/machine/hp_taco.cpp b/src/devices/machine/hp_taco.cpp
index 15424990900..359df5bd023 100644
--- a/src/devices/machine/hp_taco.cpp
+++ b/src/devices/machine/hp_taco.cpp
@@ -154,9 +154,9 @@
// Timers
enum {
- TAPE_TMR_ID,
- HOLE_TMR_ID,
- TIMEOUT_TMR_ID
+ TAPE_TMR_ID,
+ HOLE_TMR_ID,
+ TIMEOUT_TMR_ID
};
// Constants
@@ -210,38 +210,38 @@ enum {
// Commands
enum {
- CMD_INDTA_INGAP, // 00: scan for data first then for gap (see also cmd 10)
- CMD_UNK_01, // 01: unknown
- CMD_FINAL_GAP, // 02: write final gap
- CMD_INIT_WRITE, // 03: write words for tape formatting
- CMD_STOP, // 04: stop
- CMD_UNK_05, // 05: unknown
- CMD_SET_TRACK, // 06: set A/B track
- CMD_UNK_07, // 07: unknown
- CMD_UNK_08, // 08: unknown
- CMD_UNK_09, // 09: unknown
- CMD_MOVE, // 0a: move tape
- CMD_UNK_0b, // 0b: unknown
- CMD_INGAP_MOVE, // 0c: scan for gap then move a bit further (used to gain some margin when inverting tape movement)
- CMD_UNK_0d, // 0d: unknown
- CMD_CLEAR, // 0e: clear errors/unlatch status bits
- CMD_UNK_0f, // 0f: unknown
- CMD_NOT_INDTA, // 10: scan for end of data (at the moment it's the same as cmd 00)
- CMD_UNK_11, // 11: unknown
- CMD_UNK_12, // 12: unknown
- CMD_UNK_13, // 13: unknown
- CMD_UNK_14, // 14: unknown
- CMD_UNK_15, // 15: unknown
- CMD_WRITE_IRG, // 16: write inter-record gap
- CMD_UNK_17, // 17: unknown
- CMD_SCAN_RECORDS, // 18: scan records (count IRGs)
- CMD_RECORD_WRITE, // 19: write record words
- CMD_MOVE_INDTA, // 1a: move then scan for data
- CMD_UNK_1b, // 1b: unknown (for now it seems harmless to handle it as NOP)
- CMD_MOVE_INGAP, // 1c: move tape a given distance then scan for gap (as cmd 0c but in reverse order)
- CMD_START_READ, // 1d: start record reading
- CMD_DELTA_MOVE_IRG, // 1e: move tape a given distance, detect gaps in parallel
- CMD_END_READ // 1f: stop reading
+ CMD_INDTA_INGAP, // 00: scan for data first then for gap (see also cmd 10)
+ CMD_UNK_01, // 01: unknown
+ CMD_FINAL_GAP, // 02: write final gap
+ CMD_INIT_WRITE, // 03: write words for tape formatting
+ CMD_STOP, // 04: stop
+ CMD_UNK_05, // 05: unknown
+ CMD_SET_TRACK, // 06: set A/B track
+ CMD_UNK_07, // 07: unknown
+ CMD_UNK_08, // 08: unknown
+ CMD_UNK_09, // 09: unknown
+ CMD_MOVE, // 0a: move tape
+ CMD_UNK_0b, // 0b: unknown
+ CMD_INGAP_MOVE, // 0c: scan for gap then move a bit further (used to gain some margin when inverting tape movement)
+ CMD_UNK_0d, // 0d: unknown
+ CMD_CLEAR, // 0e: clear errors/unlatch status bits
+ CMD_UNK_0f, // 0f: unknown
+ CMD_NOT_INDTA, // 10: scan for end of data (at the moment it's the same as cmd 00)
+ CMD_UNK_11, // 11: unknown
+ CMD_UNK_12, // 12: unknown
+ CMD_UNK_13, // 13: unknown
+ CMD_UNK_14, // 14: unknown
+ CMD_UNK_15, // 15: unknown
+ CMD_WRITE_IRG, // 16: write inter-record gap
+ CMD_UNK_17, // 17: unknown
+ CMD_SCAN_RECORDS, // 18: scan records (count IRGs)
+ CMD_RECORD_WRITE, // 19: write record words
+ CMD_MOVE_INDTA, // 1a: move then scan for data
+ CMD_UNK_1b, // 1b: unknown (for now it seems harmless to handle it as NOP)
+ CMD_MOVE_INGAP, // 1c: move tape a given distance then scan for gap (as cmd 0c but in reverse order)
+ CMD_START_READ, // 1d: start record reading
+ CMD_DELTA_MOVE_IRG, // 1e: move tape a given distance, detect gaps in parallel
+ CMD_END_READ // 1f: stop reading
};
// Bits of status register
@@ -267,7 +267,7 @@ enum {
// |<-----24"----->|<---12"--->|<---12"--->|<-----24"----->|
// O O O O
//
-static const hp_taco_device::tape_pos_t tape_holes[] = {
+const hp_taco_device::tape_pos_t hp_taco_device::tape_holes[] = {
(hp_taco_device::tape_pos_t)(23.891 * ONE_INCH_POS), // 24 - 0.218 / 2
(hp_taco_device::tape_pos_t)(24.109 * ONE_INCH_POS), // 24 + 0.218 / 2
(hp_taco_device::tape_pos_t)(35.891 * ONE_INCH_POS), // 36 - 0.218 / 2
@@ -282,11 +282,11 @@ static const hp_taco_device::tape_pos_t tape_holes[] = {
};
// Device type definition
-const device_type HP_TACO = device_creator<hp_taco_device>;
+DEFINE_DEVICE_TYPE(HP_TACO, hp_taco_device, "hp_taco", "HP TACO")
// Constructors
-hp_taco_device::hp_taco_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+hp_taco_device::hp_taco_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_image_interface(mconfig , *this),
m_irq_handler(*this),
m_flg_handler(*this),
@@ -297,14 +297,8 @@ hp_taco_device::hp_taco_device(const machine_config &mconfig, device_type type,
}
hp_taco_device::hp_taco_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HP_TACO, "HP TACO", tag, owner, clock, "hp_taco", __FILE__),
- device_image_interface(mconfig , *this),
- m_irq_handler(*this),
- m_flg_handler(*this),
- m_sts_handler(*this),
- m_image_dirty(false)
+ : hp_taco_device(mconfig, HP_TACO, tag, owner, clock)
{
- clear_state();
}
WRITE16_MEMBER(hp_taco_device::reg_w)
diff --git a/src/devices/machine/hp_taco.h b/src/devices/machine/hp_taco.h
index a1941a4381b..c0536eabb9c 100644
--- a/src/devices/machine/hp_taco.h
+++ b/src/devices/machine/hp_taco.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __HP_TACO_H__
-#define __HP_TACO_H__
+#ifndef MAME_MACHINE_HP_TACO_H
+#define MAME_MACHINE_HP_TACO_H
+
+#pragma once
#include <map>
@@ -27,13 +29,12 @@ class hp_taco_device : public device_t ,
{
public:
// construction/destruction
- hp_taco_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
hp_taco_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<hp_taco_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_flg_handler(device_t &device, _Object object) { return downcast<hp_taco_device &>(device).m_flg_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_sts_handler(device_t &device, _Object object) { return downcast<hp_taco_device &>(device).m_sts_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<hp_taco_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_flg_handler(device_t &device, Object &&cb) { return downcast<hp_taco_device &>(device).m_flg_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sts_handler(device_t &device, Object &&cb) { return downcast<hp_taco_device &>(device).m_sts_handler.set_callback(std::forward<Object>(cb)); }
// Register read/write
DECLARE_WRITE16_MEMBER(reg_w);
@@ -56,14 +57,18 @@ public:
virtual bool is_reset_on_load() const override { return false; }
virtual const char *file_extensions() const override;
+protected:
// Tape position, 1 unit = 1 inch / (968 * 1024)
typedef int32_t tape_pos_t;
// Words stored on tape
typedef uint16_t tape_word_t;
-protected:
- // device-level overrides
+ static const tape_pos_t tape_holes[];
+
+ hp_taco_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
virtual void device_start() override;
virtual void device_stop() override;
virtual void device_reset() override;
@@ -71,7 +76,7 @@ protected:
private:
// Storage of tracks: mapping from a tape position to word stored there
- typedef std::map<tape_pos_t , tape_word_t> tape_track_t;
+ typedef std::map<tape_pos_t, tape_word_t> tape_track_t;
devcb_write_line m_irq_handler;
devcb_write_line m_flg_handler;
@@ -96,13 +101,13 @@ private:
// Command FSM state
typedef enum {
- CMD_IDLE,
- CMD_INVERTING,
- CMD_PH0,
- CMD_PH1,
- CMD_PH2,
- CMD_END,
- CMD_STOPPING
+ CMD_IDLE,
+ CMD_INVERTING,
+ CMD_PH0,
+ CMD_PH1,
+ CMD_PH2,
+ CMD_END,
+ CMD_STOPPING
} cmd_state_t;
cmd_state_t m_cmd_state;
@@ -132,9 +137,9 @@ private:
tape_pos_t m_gap_detect_start;
typedef enum {
- ADV_NO_MORE_DATA,
- ADV_CONT_DATA,
- ADV_DISCONT_DATA
+ ADV_NO_MORE_DATA,
+ ADV_CONT_DATA,
+ ADV_DISCONT_DATA
} adv_res_t;
void clear_state(void);
@@ -185,6 +190,6 @@ private:
};
// device type definition
-extern const device_type HP_TACO;
+DECLARE_DEVICE_TYPE(HP_TACO, hp_taco_device)
-#endif /* __HP_TACO_H__ */
+#endif // MAME_MACHINE_HP_TACO_H
diff --git a/src/devices/machine/i2cmem.cpp b/src/devices/machine/i2cmem.cpp
index e04fbd5f845..1e8c2c181a2 100644
--- a/src/devices/machine/i2cmem.cpp
+++ b/src/devices/machine/i2cmem.cpp
@@ -49,7 +49,7 @@ static inline void ATTR_PRINTF( 3, 4 ) verboselog( device_t *device, int n_level
va_start( v, s_fmt );
vsprintf( buf, s_fmt, v );
va_end( v );
- device->logerror( "%s: I2CMEM(%s) %s", device->machine().describe_context( ), device->tag(), buf );
+ device->logerror( "%s: I2CMEM %s", device->machine().describe_context(), buf );
}
}
@@ -58,7 +58,7 @@ static inline void ATTR_PRINTF( 3, 4 ) verboselog( device_t *device, int n_level
//**************************************************************************
// device type definition
-const device_type I2CMEM = device_creator<i2cmem_device>;
+DEFINE_DEVICE_TYPE(I2CMEM, i2cmem_device, "i2cmem", "I2C Memory")
//**************************************************************************
@@ -70,8 +70,8 @@ const device_type I2CMEM = device_creator<i2cmem_device>;
//-------------------------------------------------
i2cmem_device::i2cmem_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : device_t(mconfig, I2CMEM, "I2C Memory", tag, owner, clock, "i2cmem", __FILE__),
- device_nvram_interface(mconfig, *this),
+ : device_t(mconfig, I2CMEM, tag, owner, clock),
+ device_nvram_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
m_slave_address( I2CMEM_SLAVE_ADDRESS ),
m_page_size( 0 ),
diff --git a/src/devices/machine/i2cmem.h b/src/devices/machine/i2cmem.h
index e739e7c963f..b0061f2759b 100644
--- a/src/devices/machine/i2cmem.h
+++ b/src/devices/machine/i2cmem.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_I2CMEM_H
+#define MAME_MACHINE_I2CMEM_H
-#ifndef __I2CMEM_H__
-#define __I2CMEM_H__
+#pragma once
/***************************************************************************
@@ -148,6 +148,6 @@ protected:
// device type definition
-extern const device_type I2CMEM;
+DECLARE_DEVICE_TYPE(I2CMEM, i2cmem_device)
-#endif /* __I2CMEM_H__ */
+#endif // MAME_MACHINE_I2CMEM_H
diff --git a/src/devices/machine/i6300esb.cpp b/src/devices/machine/i6300esb.cpp
index 6879a02aeb3..7865c54b225 100644
--- a/src/devices/machine/i6300esb.cpp
+++ b/src/devices/machine/i6300esb.cpp
@@ -3,14 +3,14 @@
#include "emu.h"
#include "i6300esb.h"
-const device_type I6300ESB_WATCHDOG = device_creator<i6300esb_watchdog_device>;
-const device_type I6300ESB_LPC = device_creator<i6300esb_lpc_device>;
+DEFINE_DEVICE_TYPE(I6300ESB_WATCHDOG, i6300esb_watchdog_device, "i6300esb_watchdog", "i6300ESB southbridge watchdog")
+DEFINE_DEVICE_TYPE(I6300ESB_LPC, i6300esb_lpc_device, "i6300esb_lpc", "i6300ESB southbridge ISA/LPC bridge")
DEVICE_ADDRESS_MAP_START(map, 32, i6300esb_watchdog_device)
ADDRESS_MAP_END
i6300esb_watchdog_device::i6300esb_watchdog_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, I6300ESB_WATCHDOG, "i6300ESB southbridge watchdog", tag, owner, clock, "i6300esb_watchdog", __FILE__)
+ : pci_device(mconfig, I6300ESB_WATCHDOG, tag, owner, clock)
{
}
@@ -90,7 +90,7 @@ ADDRESS_MAP_END
i6300esb_lpc_device::i6300esb_lpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, I6300ESB_LPC, "i6300ESB southbridge ISA/LPC bridge", tag, owner, clock, "i6300esb_lpc", __FILE__),
+ : pci_device(mconfig, I6300ESB_LPC, tag, owner, clock),
acpi(*this, "acpi"),
rtc (*this, "rtc"),
pit (*this, "pit"),
diff --git a/src/devices/machine/i6300esb.h b/src/devices/machine/i6300esb.h
index 0472f8e75e3..86dc542a897 100644
--- a/src/devices/machine/i6300esb.h
+++ b/src/devices/machine/i6300esb.h
@@ -2,8 +2,8 @@
// copyright-holders:Olivier Galibert
// Intel i6300ESB southbridge
-#ifndef I6300ESB_H
-#define I6300ESB_H
+#ifndef MAME_MACHINE_I6300ESB_H
+#define MAME_MACHINE_I6300ESB_H
#include "pci.h"
#include "lpc-acpi.h"
@@ -155,7 +155,7 @@ private:
DECLARE_ADDRESS_MAP(map, 32);
};
-extern const device_type I6300ESB_LPC;
-extern const device_type I6300ESB_WATCHDOG;
+DECLARE_DEVICE_TYPE(I6300ESB_LPC, i6300esb_lpc_device)
+DECLARE_DEVICE_TYPE(I6300ESB_WATCHDOG, i6300esb_watchdog_device)
-#endif
+#endif // MAME_MACHINE_I6300ESB_H
diff --git a/src/devices/machine/i80130.cpp b/src/devices/machine/i80130.cpp
index fb11dc8480d..51942404173 100644
--- a/src/devices/machine/i80130.cpp
+++ b/src/devices/machine/i80130.cpp
@@ -16,7 +16,7 @@
//**************************************************************************
// device type definition
-const device_type I80130 = device_creator<i80130_device>;
+DEFINE_DEVICE_TYPE(I80130, i80130_device, "i80130", "I80130")
DEVICE_ADDRESS_MAP_START( rom_map, 16, i80130_device )
@@ -132,7 +132,7 @@ machine_config_constructor i80130_device::device_mconfig_additions() const
//-------------------------------------------------
i80130_device::i80130_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I80130, "I80130", tag, owner, clock, "i80130", __FILE__),
+ : device_t(mconfig, I80130, tag, owner, clock),
m_pic(*this, "pic"),
m_pit(*this, "pit"),
m_write_irq(*this),
diff --git a/src/devices/machine/i80130.h b/src/devices/machine/i80130.h
index f27bcf179ab..a2306fe0b1f 100644
--- a/src/devices/machine/i80130.h
+++ b/src/devices/machine/i80130.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_I80130_H
+#define MAME_MACHINE_I80130_H
-#ifndef __I80130__
-#define __I80130__
+#pragma once
#include "machine/pic8259.h"
#include "machine/pit8253.h"
@@ -52,12 +52,12 @@ public:
// construction/destruction
i80130_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<i80130_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_ack_wr_callback(device_t &device, _Object object) { return downcast<i80130_device &>(device).m_write_ack.set_callback(object); }
- template<class _Object> static devcb_base &set_lir_wr_callback(device_t &device, _Object object) { return downcast<i80130_device &>(device).m_write_lir.set_callback(object); }
- template<class _Object> static devcb_base &set_systick_wr_callback(device_t &device, _Object object) { return downcast<i80130_device &>(device).m_write_systick.set_callback(object); }
- template<class _Object> static devcb_base &set_delay_wr_callback(device_t &device, _Object object) { return downcast<i80130_device &>(device).m_write_delay.set_callback(object); }
- template<class _Object> static devcb_base &set_baud_wr_callback(device_t &device, _Object object) { return downcast<i80130_device &>(device).m_write_baud.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ack_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_ack.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_lir_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_lir.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_systick_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_systick.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_delay_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_delay.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_baud_wr_callback(device_t &device, Object &&cb) { return downcast<i80130_device &>(device).m_write_baud.set_callback(std::forward<Object>(cb)); }
virtual DECLARE_ADDRESS_MAP(rom_map, 16);
virtual DECLARE_ADDRESS_MAP(io_map, 16);
@@ -103,8 +103,6 @@ protected:
// device type definition
-extern const device_type I80130;
-
-
+DECLARE_DEVICE_TYPE(I80130, i80130_device)
-#endif
+#endif // MAME_MACHINE_I80130_H
diff --git a/src/devices/machine/i8155.cpp b/src/devices/machine/i8155.cpp
index 62f012f201f..c1bc13f3568 100644
--- a/src/devices/machine/i8155.cpp
+++ b/src/devices/machine/i8155.cpp
@@ -19,7 +19,7 @@
// device type definitions
-const device_type I8155 = device_creator<i8155_device>;
+DEFINE_DEVICE_TYPE(I8155, i8155_device, "i8155", "Intel 8155 RIOT")
const device_type I8156 = I8155;
@@ -203,7 +203,7 @@ inline void i8155_device::write_port(int port, uint8_t data)
//-------------------------------------------------
i8155_device::i8155_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I8155, "8155 RIOT", tag, owner, clock, "i8155", __FILE__),
+ : device_t(mconfig, I8155, tag, owner, clock),
device_memory_interface(mconfig, *this),
m_in_pa_cb(*this),
m_in_pb_cb(*this),
diff --git a/src/devices/machine/i8155.h b/src/devices/machine/i8155.h
index 026f5cb9a81..09bcb1d93b5 100644
--- a/src/devices/machine/i8155.h
+++ b/src/devices/machine/i8155.h
@@ -30,10 +30,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_I8155_H
+#define MAME_MACHINE_I8155_H
-#ifndef __I8155__
-#define __I8155__
+#pragma once
@@ -76,13 +76,13 @@ public:
// construction/destruction
i8155_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<i8155_device &>(device).m_in_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<i8155_device &>(device).m_in_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pc_callback(device_t &device, _Object object) { return downcast<i8155_device &>(device).m_in_pc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<i8155_device &>(device).m_out_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<i8155_device &>(device).m_out_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pc_callback(device_t &device, _Object object) { return downcast<i8155_device &>(device).m_out_pc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_to_callback(device_t &device, _Object object) { return downcast<i8155_device &>(device).m_out_to_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pc_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_in_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pc_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_to_callback(device_t &device, Object &&cb) { return downcast<i8155_device &>(device).m_out_to_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( io_r );
DECLARE_WRITE8_MEMBER( io_w );
@@ -100,7 +100,7 @@ protected:
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
inline uint8_t get_timer_mode();
inline void timer_output();
@@ -145,7 +145,7 @@ private:
// device type definition
-extern const device_type I8155;
+DECLARE_DEVICE_TYPE(I8155, i8155_device)
extern const device_type I8156;
diff --git a/src/devices/machine/i8212.cpp b/src/devices/machine/i8212.cpp
index 7d59c5c09ad..83e08566e96 100644
--- a/src/devices/machine/i8212.cpp
+++ b/src/devices/machine/i8212.cpp
@@ -9,13 +9,8 @@
#include "emu.h"
#include "i8212.h"
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
@@ -24,18 +19,18 @@
//**************************************************************************
// device type definition
-const device_type I8212 = device_creator<i8212_device>;
+DEFINE_DEVICE_TYPE(I8212, i8212_device, "i8212", "Intel 8212 I/O")
//-------------------------------------------------
// i8212_device - constructor
//-------------------------------------------------
i8212_device::i8212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, I8212, "I8212", tag, owner, clock, "i8212", __FILE__),
+ device_t(mconfig, I8212, tag, owner, clock),
m_write_irq(*this),
m_read_di(*this),
m_write_do(*this),
- m_md(I8212_MODE_INPUT),
+ m_md(MODE_INPUT),
m_stb(0), m_data(0)
{
}
@@ -67,7 +62,7 @@ void i8212_device::device_reset()
{
m_data = 0;
- if (m_md == I8212_MODE_OUTPUT)
+ if (m_md == MODE_OUTPUT)
{
// output data
m_write_do((offs_t)0, m_data);
@@ -84,7 +79,7 @@ READ8_MEMBER( i8212_device::read )
// clear interrupt line
m_write_irq(CLEAR_LINE);
- if (LOG) logerror("I8212 '%s' INT: %u\n", tag(), CLEAR_LINE);
+ LOG("I8212 INT: %u\n", CLEAR_LINE);
return m_data;
}
@@ -110,7 +105,7 @@ WRITE8_MEMBER( i8212_device::write )
WRITE_LINE_MEMBER( i8212_device::md_w )
{
- if (LOG) logerror("I8212 '%s' Mode: %s\n", tag(), state ? "output" : "input");
+ LOG("I8212 Mode: %s\n", state ? "output" : "input");
m_md = state;
}
@@ -122,9 +117,9 @@ WRITE_LINE_MEMBER( i8212_device::md_w )
WRITE_LINE_MEMBER( i8212_device::stb_w )
{
- if (LOG) logerror("I8212 '%s' STB: %u\n", tag(), state);
+ LOG("I8212 STB: %u\n", state);
- if (m_md == I8212_MODE_INPUT)
+ if (m_md == MODE_INPUT)
{
if (m_stb && !state)
{
@@ -134,7 +129,7 @@ WRITE_LINE_MEMBER( i8212_device::stb_w )
// assert interrupt line
m_write_irq(ASSERT_LINE);
- if (LOG) logerror("I8212 '%s' INT: %u\n", tag(), ASSERT_LINE);
+ LOG("I8212 INT: %u\n", ASSERT_LINE);
}
}
diff --git a/src/devices/machine/i8212.h b/src/devices/machine/i8212.h
index 04de97b0cf5..6bac3c1aea4 100644
--- a/src/devices/machine/i8212.h
+++ b/src/devices/machine/i8212.h
@@ -21,23 +21,11 @@
**********************************************************************/
-#pragma once
-
-#ifndef __I8212__
-#define __I8212__
-
-
+#ifndef MAME_MACHINE_I8212_H
+#define MAME_MACHINE_I8212_H
+#pragma once
-///*************************************************************************
-// MACROS / CONSTANTS
-///*************************************************************************
-
-enum
-{
- I8212_MODE_INPUT = 0,
- I8212_MODE_OUTPUT
-};
@@ -62,15 +50,15 @@ enum
// ======================> i8212_device
-class i8212_device : public device_t
+class i8212_device : public device_t
{
public:
// construction/destruction
i8212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<i8212_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_di_rd_callback(device_t &device, _Object object) { return downcast<i8212_device &>(device).m_read_di.set_callback(object); }
- template<class _Object> static devcb_base &set_do_wr_callback(device_t &device, _Object object) { return downcast<i8212_device &>(device).m_write_do.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_di_rd_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_read_di.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_do_wr_callback(device_t &device, Object &&cb) { return downcast<i8212_device &>(device).m_write_do.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -84,6 +72,12 @@ protected:
virtual void device_reset() override;
private:
+ enum
+ {
+ MODE_INPUT = 0,
+ MODE_OUTPUT
+ };
+
devcb_write_line m_write_irq;
devcb_read8 m_read_di;
devcb_write8 m_write_do;
@@ -95,8 +89,6 @@ private:
// device type definition
-extern const device_type I8212;
-
-
+DECLARE_DEVICE_TYPE(I8212, i8212_device)
-#endif
+#endif // MAME_MACHINE_I8212_H
diff --git a/src/devices/machine/i8214.cpp b/src/devices/machine/i8214.cpp
index a1f0977baca..ce6077717b5 100644
--- a/src/devices/machine/i8214.cpp
+++ b/src/devices/machine/i8214.cpp
@@ -9,17 +9,12 @@
#include "emu.h"
#include "i8214.h"
+//#define VERBOSE 1
+#include "logmacro.h"
// device type definition
-const device_type I8214 = device_creator<i8214_device>;
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+DEFINE_DEVICE_TYPE(I8214, i8214_device, "i8214", "Intel 8214 PIC")
@@ -33,7 +28,7 @@ const device_type I8214 = device_creator<i8214_device>;
void i8214_device::trigger_interrupt(int level)
{
- if (LOG) logerror("I8214 '%s' Interrupt Level %u\n", tag(), level);
+ LOG("I8214 Interrupt Level %u\n", level);
m_a = level;
@@ -87,7 +82,7 @@ void i8214_device::check_interrupt()
//-------------------------------------------------
i8214_device::i8214_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I8214, "I8214", tag, owner, clock, "i8214", __FILE__)
+ : device_t(mconfig, I8214, tag, owner, clock)
, m_write_irq(*this)
, m_write_enlg(*this)
, m_inte(0)
@@ -133,7 +128,7 @@ uint8_t i8214_device::a_r()
{
uint8_t a = m_a & 0x07;
- if (LOG) logerror("I8214 '%s' A: %01x\n", tag(), a);
+ LOG("I8214 A: %01x\n", a);
return a;
}
@@ -147,7 +142,7 @@ void i8214_device::b_w(uint8_t data)
{
m_current_status = data & 0x07;
- if (LOG) logerror("I8214 '%s' B: %01x\n", tag(), m_current_status);
+ LOG("I8214 B: %01x\n", m_current_status);
// enable interrupts
m_int_dis = 0;
@@ -166,7 +161,7 @@ void i8214_device::b_w(uint8_t data)
void i8214_device::r_w(int line, int state)
{
- if (LOG) logerror("I8214 '%s' R%d: %d\n", tag(), line, state);
+ LOG("I8214 R%d: %d\n", line, state);
m_r &= ~(1 << line);
m_r |= (state << line);
@@ -181,7 +176,7 @@ void i8214_device::r_w(int line, int state)
WRITE_LINE_MEMBER( i8214_device::sgs_w )
{
- if (LOG) logerror("I8214 '%s' SGS: %u\n", tag(), state);
+ LOG("I8214 SGS: %u\n", state);
m_sgs = state;
@@ -195,7 +190,7 @@ WRITE_LINE_MEMBER( i8214_device::sgs_w )
WRITE_LINE_MEMBER( i8214_device::etlg_w )
{
- if (LOG) logerror("I8214 '%s' ETLG: %u\n", tag(), state);
+ LOG("I8214 ETLG: %u\n", state);
m_etlg = state;
}
@@ -207,7 +202,7 @@ WRITE_LINE_MEMBER( i8214_device::etlg_w )
WRITE_LINE_MEMBER( i8214_device::inte_w )
{
- if (LOG) logerror("I8214 '%s' INTE: %u\n", tag(), state);
+ LOG("I8214 INTE: %u\n", state);
m_inte = state;
}
diff --git a/src/devices/machine/i8214.h b/src/devices/machine/i8214.h
index 7b0be60bab1..fb6acdaa843 100644
--- a/src/devices/machine/i8214.h
+++ b/src/devices/machine/i8214.h
@@ -21,11 +21,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __I8214__
-#define __I8214__
+#ifndef MAME_MACHINE_I8214_H
+#define MAME_MACHINE_I8214_H
+#pragma once
@@ -47,14 +46,14 @@
// ======================> i8214_device
-class i8214_device : public device_t
+class i8214_device : public device_t
{
public:
// construction/destruction
i8214_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<i8214_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_enlg_wr_callback(device_t &device, _Object object) { return downcast<i8214_device &>(device).m_write_enlg.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<i8214_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_enlg_wr_callback(device_t &device, Object &&cb) { return downcast<i8214_device &>(device).m_write_enlg.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( sgs_w );
DECLARE_WRITE_LINE_MEMBER( etlg_w );
@@ -87,8 +86,6 @@ private:
// device type definition
-extern const device_type I8214;
-
-
+DECLARE_DEVICE_TYPE(I8214, i8214_device)
-#endif
+#endif // MAME_MACHINE_I8214_H
diff --git a/src/devices/machine/i82371sb.cpp b/src/devices/machine/i82371sb.cpp
index d9dbf235c71..2205a5a116e 100644
--- a/src/devices/machine/i82371sb.cpp
+++ b/src/devices/machine/i82371sb.cpp
@@ -12,7 +12,7 @@
#include "speaker.h"
-const device_type I82371SB_ISA = device_creator<i82371sb_isa_device>;
+DEFINE_DEVICE_TYPE(I82371SB_ISA, i82371sb_isa_device, "i82371sb_isa", "Intel 82371 southbridge ISA bridge")
DEVICE_ADDRESS_MAP_START(config_map, 32, i82371sb_isa_device)
AM_RANGE(0x4c, 0x4f) AM_READWRITE8 (iort_r, iort_w, 0x000000ff)
@@ -168,7 +168,7 @@ machine_config_constructor i82371sb_isa_device::device_mconfig_additions() const
i82371sb_isa_device::i82371sb_isa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, I82371SB_ISA, "i82371sb southbridge ISA bridge", tag, owner, clock, "i82371sb_isa", __FILE__),
+ : pci_device(mconfig, I82371SB_ISA, tag, owner, clock),
m_boot_state_hook(*this),
m_maincpu(*this, ":maincpu"),
m_pic8259_master(*this, "pic8259_master"),
diff --git a/src/devices/machine/i82371sb.h b/src/devices/machine/i82371sb.h
index a64343e232d..330379a1757 100644
--- a/src/devices/machine/i82371sb.h
+++ b/src/devices/machine/i82371sb.h
@@ -2,8 +2,10 @@
// copyright-holders:Olivier Galibert
// Intel i82371sb southbridge (PIIX3)
-#ifndef I82371SB_H
-#define I82371SB_H
+#ifndef MAME_MACHINE_I82371SB_H
+#define MAME_MACHINE_I82371SB_H
+
+#pragma once
#include "pci.h"
@@ -35,7 +37,7 @@ class i82371sb_isa_device : public pci_device {
public:
i82371sb_isa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_boot_state_hook(device_t &device, _Object object) { return downcast<i82371sb_isa_device &>(device).m_boot_state_hook.set_callback(object); }
+ template <class Object> static devcb_base &set_boot_state_hook(device_t &device, Object &&cb) { return downcast<i82371sb_isa_device &>(device).m_boot_state_hook.set_callback(std::forward<Object>(cb)); }
virtual void reset_all_mappings() override;
virtual void map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
@@ -178,6 +180,6 @@ private:
optional_memory_region m_vga_region;
};
-extern const device_type I82371SB_ISA;
+DECLARE_DEVICE_TYPE(I82371SB_ISA, i82371sb_isa_device)
-#endif
+#endif // MAME_MACHINE_I82371SB_H
diff --git a/src/devices/machine/i8243.cpp b/src/devices/machine/i8243.cpp
index 6218f3fa919..5a387b55705 100644
--- a/src/devices/machine/i8243.cpp
+++ b/src/devices/machine/i8243.cpp
@@ -17,16 +17,17 @@
//**************************************************************************
// device type definition
-const device_type I8243 = device_creator<i8243_device>;
+DEFINE_DEVICE_TYPE(I8243, i8243_device, "i8243", "Intel 8243 I/O Expander")
//-------------------------------------------------
// i8243_device - constructor
//-------------------------------------------------
i8243_device::i8243_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I8243, "8243 I/O Expander", tag, owner, clock, "i8243", __FILE__), m_p2out(0), m_p2(0), m_opcode(0), m_prog(0),
- m_readhandler(*this),
- m_writehandler(*this)
+ : device_t(mconfig, I8243, tag, owner, clock)
+ , m_p2out(0), m_p2(0), m_opcode(0), m_prog(0)
+ , m_readhandler(*this)
+ , m_writehandler(*this)
{
}
diff --git a/src/devices/machine/i8243.h b/src/devices/machine/i8243.h
index fbbf27d5eb9..e2dd1968050 100644
--- a/src/devices/machine/i8243.h
+++ b/src/devices/machine/i8243.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_I8243_H
+#define MAME_MACHINE_I8243_H
-#ifndef __I8243_H__
-#define __I8243_H__
+#pragma once
@@ -41,8 +41,8 @@ public:
i8243_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_read_handler(device_t &device, _Object object) { return downcast<i8243_device &>(device).m_readhandler.set_callback(object); }
- template<class _Object> static devcb_base &set_write_handler(device_t &device, _Object object) { return downcast<i8243_device &>(device).m_writehandler.set_callback(object); }
+ template <class Object> static devcb_base &set_read_handler(device_t &device, Object &&cb) { return downcast<i8243_device &>(device).m_readhandler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_handler(device_t &device, Object &&cb) { return downcast<i8243_device &>(device).m_writehandler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(p2_r);
DECLARE_WRITE8_MEMBER(p2_w);
@@ -70,6 +70,6 @@ private:
// device type definition
-extern const device_type I8243;
+DECLARE_DEVICE_TYPE(I8243, i8243_device)
-#endif /* __I8243_H__ */
+#endif /* __I8243_H__ */
diff --git a/src/devices/machine/i82439hx.cpp b/src/devices/machine/i82439hx.cpp
index 7417d3df291..63e42618276 100644
--- a/src/devices/machine/i82439hx.cpp
+++ b/src/devices/machine/i82439hx.cpp
@@ -3,7 +3,7 @@
#include "emu.h"
#include "i82439hx.h"
-const device_type I82439HX = device_creator<i82439hx_host_device>;
+DEFINE_DEVICE_TYPE(I82439HX, i82439hx_host_device, "i82439hx", "Intel 82439HX northbridge")
DEVICE_ADDRESS_MAP_START(config_map, 32, i82439hx_host_device)
AM_RANGE(0x50, 0x53) AM_READWRITE8(pcon_r, pcon_w, 0x000000ff)
@@ -25,7 +25,7 @@ DEVICE_ADDRESS_MAP_START(config_map, 32, i82439hx_host_device)
ADDRESS_MAP_END
i82439hx_host_device::i82439hx_host_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_host_device(mconfig, I82439HX, "i82439hx northbridge", tag, owner, clock, "i82439hx", __FILE__)
+ : pci_host_device(mconfig, I82439HX, tag, owner, clock)
{
}
diff --git a/src/devices/machine/i82439hx.h b/src/devices/machine/i82439hx.h
index 061c5e7de62..9df05ab4b0b 100644
--- a/src/devices/machine/i82439hx.h
+++ b/src/devices/machine/i82439hx.h
@@ -2,8 +2,10 @@
// copyright-holders:Olivier Galibert
// Intel i82439hx northbridge (440hx)
-#ifndef I82439HX_H
-#define I82439HX_H
+#ifndef MAME_MACHINE_I82439HX_H
+#define MAME_MACHINE_I82439HX_H
+
+#pragma once
#include "pci.h"
@@ -67,6 +69,6 @@ private:
uint8_t drt, drat, smram, errcmd, errsts, errsyn;
};
-extern const device_type I82439HX;
+DECLARE_DEVICE_TYPE(I82439HX, i82439hx_host_device)
-#endif
+#endif // MAME_MACHINE_I82439HX_H
diff --git a/src/devices/machine/i82439tx.cpp b/src/devices/machine/i82439tx.cpp
index 32bc5095790..d3d0f880778 100644
--- a/src/devices/machine/i82439tx.cpp
+++ b/src/devices/machine/i82439tx.cpp
@@ -3,7 +3,7 @@
#include "emu.h"
#include "i82439tx.h"
-const device_type I82439TX_NEW = device_creator<i82439tx_host_device>;
+DEFINE_DEVICE_TYPE(I82439TX_NEW, i82439tx_host_device, "i82439tx_new", "Intel 82439TX northbridge")
DEVICE_ADDRESS_MAP_START(config_map, 32, i82439tx_host_device)
AM_RANGE(0x50, 0x53) AM_READWRITE8(pcon_r, pcon_w, 0x000000ff)
@@ -25,7 +25,7 @@ DEVICE_ADDRESS_MAP_START(config_map, 32, i82439tx_host_device)
ADDRESS_MAP_END
i82439tx_host_device::i82439tx_host_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_host_device(mconfig, I82439TX_NEW, "i82439tx northbridge", tag, owner, clock, "i82439tx_new", __FILE__)
+ : pci_host_device(mconfig, I82439TX_NEW, tag, owner, clock)
{
}
diff --git a/src/devices/machine/i82439tx.h b/src/devices/machine/i82439tx.h
index 3a6068ce3f2..77245d80048 100644
--- a/src/devices/machine/i82439tx.h
+++ b/src/devices/machine/i82439tx.h
@@ -2,8 +2,10 @@
// copyright-holders:Olivier Galibert
// Intel i82439hx northbridge (440hx)
-#ifndef I82439TX_H
-#define I82439TX_H
+#ifndef MAME_MACHINE_I82439TX_H
+#define MAME_MACHINE_I82439TX_H
+
+#pragma once
#include "pci.h"
@@ -67,6 +69,6 @@ private:
uint8_t drt, drat, smram, errcmd, errsts, errsyn;
};
-extern const device_type I82439TX_NEW;
+DECLARE_DEVICE_TYPE(I82439TX_NEW, i82439tx_host_device)
-#endif
+#endif // MAME_MACHINE_I82439TX_H
diff --git a/src/devices/machine/i8251.cpp b/src/devices/machine/i8251.cpp
index a1ffd64cc90..38ebcd7122e 100644
--- a/src/devices/machine/i8251.cpp
+++ b/src/devices/machine/i8251.cpp
@@ -17,26 +17,16 @@
#include "emu.h"
#include "i8251.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-/***************************************************************************
- MACROS
-***************************************************************************/
-
-#define VERBOSE 0
-
-#define LOG(...) do { if (VERBOSE) logerror(__VA_ARGS__); } while (0)
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type I8251 = device_creator<i8251_device>;
-const device_type V53_SCU = device_creator<v53_scu_device>;
-
-template class device_finder<i8251_device, false>;
-template class device_finder<i8251_device, true>;
-template class device_finder<v53_scu_device, false>;
-template class device_finder<v53_scu_device, true>;
+DEFINE_DEVICE_TYPE(I8251, i8251_device, "i8251", "Intel 8251 USART")
+DEFINE_DEVICE_TYPE(V53_SCU, v53_scu_device, "v63_scu", "NEC V53 SCU")
//-------------------------------------------------
@@ -46,13 +36,10 @@ template class device_finder<v53_scu_device, true>;
i8251_device::i8251_device(
const machine_config &mconfig,
device_type type,
- const char *name,
const char *tag,
device_t *owner,
- uint32_t clock,
- const char *shortname,
- const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_serial_interface(mconfig, *this),
m_txd_handler(*this),
m_dtr_handler(*this),
@@ -70,12 +57,12 @@ i8251_device::i8251_device(
}
i8251_device::i8251_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8251_device(mconfig, I8251, "8251 USART", tag, owner, clock, "i8251", __FILE__)
+ : i8251_device(mconfig, I8251, tag, owner, clock)
{
}
v53_scu_device::v53_scu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8251_device(mconfig, V53_SCU, "V53 SCU", tag, owner, clock, "v53_scu", __FILE__)
+ : i8251_device(mconfig, V53_SCU, tag, owner, clock)
{
}
diff --git a/src/devices/machine/i8251.h b/src/devices/machine/i8251.h
index cf966ac2693..896cf99833e 100644
--- a/src/devices/machine/i8251.h
+++ b/src/devices/machine/i8251.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef MAME_DEVICES_MACHINE_I8251_H
-#define MAME_DEVICES_MACHINE_I8251_H
+#ifndef MAME_MACHINE_I8251_H
+#define MAME_MACHINE_I8251_H
+
+#pragma once
//**************************************************************************
@@ -45,13 +47,13 @@ public:
i8251_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast<i8251_device &>(device).m_txd_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_dtr_handler(device_t &device, _Object object) { return downcast<i8251_device &>(device).m_dtr_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rts_handler(device_t &device, _Object object) { return downcast<i8251_device &>(device).m_rts_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rxrdy_handler(device_t &device, _Object object) { return downcast<i8251_device &>(device).m_rxrdy_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_txrdy_handler(device_t &device, _Object object) { return downcast<i8251_device &>(device).m_txrdy_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_txempty_handler(device_t &device, _Object object) { return downcast<i8251_device &>(device).m_txempty_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_syndet_handler(device_t &device, _Object object) { return downcast<i8251_device &>(device).m_syndet_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rxrdy_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_rxrdy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_txrdy_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_txrdy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_txempty_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_txempty_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_syndet_handler(device_t &device, Object &&cb) { return downcast<i8251_device &>(device).m_syndet_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(data_r);
DECLARE_WRITE8_MEMBER(data_w);
@@ -82,12 +84,9 @@ protected:
i8251_device(
const machine_config &mconfig,
device_type type,
- const char *name,
const char *tag,
device_t *owner,
- uint32_t clock,
- const char *shortname,
- const char *source);
+ uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -165,13 +164,7 @@ public:
// device type definition
-extern const device_type I8251;
-extern const device_type V53_SCU;
-
-extern template class device_finder<i8251_device, false>;
-extern template class device_finder<i8251_device, true>;
-extern template class device_finder<v53_scu_device, false>;
-extern template class device_finder<v53_scu_device, true>;
-
+DECLARE_DEVICE_TYPE(I8251, i8251_device)
+DECLARE_DEVICE_TYPE(V53_SCU, v53_scu_device)
-#endif // MAME_DEVICES_MACHINE_I8251_H
+#endif // MAME_MACHINE_I8251_H
diff --git a/src/devices/machine/i82541.cpp b/src/devices/machine/i82541.cpp
index 6ddd492aae9..f93b2b3690d 100644
--- a/src/devices/machine/i82541.cpp
+++ b/src/devices/machine/i82541.cpp
@@ -3,7 +3,7 @@
#include "emu.h"
#include "i82541.h"
-const device_type I82541 = device_creator<i82541_device>;
+DEFINE_DEVICE_TYPE(I82541, i82541_device, "i82541_device", "Intel 82541 Ethernet controller")
DEVICE_ADDRESS_MAP_START(registers_map, 32, i82541_device)
ADDRESS_MAP_END
@@ -15,7 +15,7 @@ DEVICE_ADDRESS_MAP_START(registers_io_map, 32, i82541_device)
ADDRESS_MAP_END
i82541_device::i82541_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, I82541, "I82541 ethernet controller", tag, owner, clock, "i82541", __FILE__)
+ : pci_device(mconfig, I82541, tag, owner, clock)
{
}
diff --git a/src/devices/machine/i82541.h b/src/devices/machine/i82541.h
index 2f94b773f7e..2ff0fb8cf3b 100644
--- a/src/devices/machine/i82541.h
+++ b/src/devices/machine/i82541.h
@@ -2,8 +2,8 @@
// copyright-holders:Olivier Galibert
// Intel I82541 ethernet controller
-#ifndef I82541_H
-#define I82541_H
+#ifndef MAME_MACHINE_I82541_H
+#define MAME_MACHINE_I82541_H
#include "pci.h"
@@ -24,6 +24,6 @@ private:
DECLARE_ADDRESS_MAP(registers_io_map, 32);
};
-extern const device_type I82541;
+DECLARE_DEVICE_TYPE(I82541, i82541_device)
-#endif
+#endif // MAME_MACHINE_I82541_H
diff --git a/src/devices/machine/i8255.cpp b/src/devices/machine/i8255.cpp
index d5da10ecf78..bbe98df89e2 100644
--- a/src/devices/machine/i8255.cpp
+++ b/src/devices/machine/i8255.cpp
@@ -9,15 +9,15 @@
#include "emu.h"
#include "i8255.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
enum
{
PORT_A = 0,
@@ -63,7 +63,7 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type I8255 = device_creator<i8255_device>;
+DEFINE_DEVICE_TYPE(I8255, i8255_device, "i8255", "Intel 8255 PPI")
const device_type I8255A = I8255;
@@ -105,7 +105,7 @@ inline void i8255_device::check_interrupt(int port)
inline void i8255_device::set_ibf(int port, int state)
{
- if (LOG) logerror("I8255 '%s' Port %c IBF: %u\n", tag(), 'A' + port, state);
+ LOG("I8255 Port %c IBF: %u\n", 'A' + port, state);
m_ibf[port] = state;
@@ -119,7 +119,7 @@ inline void i8255_device::set_ibf(int port, int state)
inline void i8255_device::set_obf(int port, int state)
{
- if (LOG) logerror("I8255 '%s' Port %c OBF: %u\n", tag(), 'A' + port, state);
+ LOG("I8255 Port %c OBF: %u\n", 'A' + port, state);
m_obf[port] = state;
@@ -133,7 +133,7 @@ inline void i8255_device::set_obf(int port, int state)
inline void i8255_device::set_inte(int port, int state)
{
- if (LOG) logerror("I8255 '%s' Port %c INTE: %u\n", tag(), 'A' + port, state);
+ LOG("I8255 Port %c INTE: %u\n", 'A' + port, state);
m_inte[port] = state;
@@ -147,7 +147,7 @@ inline void i8255_device::set_inte(int port, int state)
inline void i8255_device::set_inte1(int state)
{
- if (LOG) logerror("I8255 '%s' Port A INTE1: %u\n", tag(), state);
+ LOG("I8255 Port A INTE1: %u\n", state);
m_inte1 = state;
@@ -161,7 +161,7 @@ inline void i8255_device::set_inte1(int state)
inline void i8255_device::set_inte2(int state)
{
- if (LOG) logerror("I8255 '%s' Port A INTE2: %u\n", tag(), state);
+ LOG("I8255 Port A INTE2: %u\n", state);
m_inte2 = state;
@@ -175,7 +175,7 @@ inline void i8255_device::set_inte2(int state)
inline void i8255_device::set_intr(int port, int state)
{
- if (LOG) logerror("I8255 '%s' Port %c INTR: %u\n", tag(), 'A' + port, state);
+ LOG("I8255 Port %c INTR: %u\n", 'A' + port, state);
m_intr[port] = state;
@@ -259,7 +259,7 @@ inline int i8255_device::port_c_upper_mode()
//-------------------------------------------------
i8255_device::i8255_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I8255, "8255 PPI", tag, owner, clock, "i8255", __FILE__),
+ : device_t(mconfig, I8255, tag, owner, clock),
m_in_pa_cb(*this),
m_in_pb_cb(*this),
m_in_pc_cb(*this),
@@ -659,15 +659,12 @@ void i8255_device::set_mode(uint8_t data)
m_out_pa_cb((offs_t)0, 0xff);
}
- if (LOG)
- {
- logerror("I8255 '%s' Group A Mode: %u\n", tag(), group_mode(GROUP_A));
- logerror("I8255 '%s' Port A Mode: %s\n", tag(), (port_mode(PORT_A) == MODE_OUTPUT) ? "output" : "input");
- logerror("I8255 '%s' Port C Upper Mode: %s\n", tag(), (port_c_upper_mode() == MODE_OUTPUT) ? "output" : "input");
- logerror("I8255 '%s' Group B Mode: %u\n", tag(), group_mode(GROUP_B));
- logerror("I8255 '%s' Port B Mode: %s\n", tag(), (port_mode(PORT_B) == MODE_OUTPUT) ? "output" : "input");
- logerror("I8255 '%s' Port C Lower Mode: %s\n", tag(), (port_c_lower_mode() == MODE_OUTPUT) ? "output" : "input");
- }
+ LOG("I8255 Group A Mode: %u\n", group_mode(GROUP_A));
+ LOG("I8255 Port A Mode: %s\n", (port_mode(PORT_A) == MODE_OUTPUT) ? "output" : "input");
+ LOG("I8255 Port C Upper Mode: %s\n", (port_c_upper_mode() == MODE_OUTPUT) ? "output" : "input");
+ LOG("I8255 Group B Mode: %u\n", group_mode(GROUP_B));
+ LOG("I8255 Port B Mode: %s\n", (port_mode(PORT_B) == MODE_OUTPUT) ? "output" : "input");
+ LOG("I8255 Port C Lower Mode: %s\n", (port_c_lower_mode() == MODE_OUTPUT) ? "output" : "input");
// group B
m_output[PORT_B] = 0;
@@ -778,7 +775,7 @@ READ8_MEMBER( i8255_device::read )
case MODE_1: data = read_mode1(PORT_A); break;
case MODE_2: data = read_mode2(); break;
}
- if (LOG) logerror("I8255 '%s' Port A Read: %02x\n", tag(), data);
+ LOG("I8255 Port A Read: %02x\n", data);
break;
case PORT_B:
@@ -787,17 +784,17 @@ READ8_MEMBER( i8255_device::read )
case MODE_0: data = read_mode0(PORT_B); break;
case MODE_1: data = read_mode1(PORT_B); break;
}
- if (LOG) logerror("I8255 '%s' Port B Read: %02x\n", tag(), data);
+ LOG("I8255 Port B Read: %02x\n", data);
break;
case PORT_C:
data = read_pc();
- if (LOG) logerror("I8255 '%s' Port C Read: %02x\n", tag(), data);
+ LOG("I8255 Port C Read: %02x\n", data);
break;
case CONTROL:
data = m_control;
- if (LOG) logerror("I8255 '%s' Mode Control Word Read: %02x\n", tag(), data);
+ LOG("I8255 Mode Control Word Read: %02x\n", data);
break;
}
@@ -814,7 +811,7 @@ WRITE8_MEMBER( i8255_device::write )
switch (offset & 0x03)
{
case PORT_A:
- if (LOG) logerror("I8255 '%s' Port A Write: %02x\n", tag(), data);
+ LOG("I8255 Port A Write: %02x\n", data);
switch (group_mode(GROUP_A))
{
@@ -825,7 +822,7 @@ WRITE8_MEMBER( i8255_device::write )
break;
case PORT_B:
- if (LOG) logerror("I8255 '%s' Port B Write: %02x\n", tag(), data);
+ LOG("I8255 Port B Write: %02x\n", data);
switch (group_mode(GROUP_B))
{
@@ -835,7 +832,7 @@ WRITE8_MEMBER( i8255_device::write )
break;
case PORT_C:
- if (LOG) logerror("I8255 '%s' Port C Write: %02x\n", tag(), data);
+ LOG("I8255 Port C Write: %02x\n", data);
m_output[PORT_C] = data;
output_pc();
@@ -844,7 +841,7 @@ WRITE8_MEMBER( i8255_device::write )
case CONTROL:
if (data & CONTROL_MODE_SET)
{
- if (LOG) logerror("I8255 '%s' Mode Control Word: %02x\n", tag(), data);
+ LOG("I8255 Mode Control Word: %02x\n", data);
set_mode(data);
}
@@ -853,7 +850,7 @@ WRITE8_MEMBER( i8255_device::write )
int bit = (data >> 1) & 0x07;
int state = BIT(data, 0);
- if (LOG) logerror("I8255 '%s' %s Port C Bit %u\n", tag(), state ? "Set" : "Reset", bit);
+ LOG("I8255 %s Port C Bit %u\n", state ? "Set" : "Reset", bit);
set_pc_bit(bit, state);
}
@@ -929,7 +926,7 @@ WRITE_LINE_MEMBER( i8255_device::pc2_w )
// port B acknowledge
if (!m_obf[PORT_B] && !state)
{
- if (LOG) logerror("I8255 '%s' Port B Acknowledge\n", tag());
+ LOG("I8255 Port B Acknowledge\n");
// clear output buffer flag
set_obf(PORT_B, 1);
@@ -940,7 +937,7 @@ WRITE_LINE_MEMBER( i8255_device::pc2_w )
// port B strobe
if (!m_ibf[PORT_B] && !state)
{
- if (LOG) logerror("I8255 '%s' Port B Strobe\n", tag());
+ LOG("I8255 Port B Strobe\n");
// read port into latch
m_input[PORT_B] = m_in_pb_cb(0);
@@ -964,7 +961,7 @@ WRITE_LINE_MEMBER( i8255_device::pc4_w )
// port A strobe
if (!m_ibf[PORT_A] && !state)
{
- if (LOG) logerror("I8255 '%s' Port A Strobe\n", tag());
+ LOG("I8255 Port A Strobe\n");
// read port into latch
m_input[PORT_A] = m_in_pa_cb(0);
@@ -987,7 +984,7 @@ WRITE_LINE_MEMBER( i8255_device::pc6_w )
// port A acknowledge
if (!m_obf[PORT_A] && !state)
{
- if (LOG) logerror("I8255 '%s' Port A Acknowledge\n", tag());
+ LOG("I8255 Port A Acknowledge\n");
// clear output buffer flag
set_obf(PORT_A, 1);
diff --git a/src/devices/machine/i8255.h b/src/devices/machine/i8255.h
index 2677a2f54a3..eaee5119233 100644
--- a/src/devices/machine/i8255.h
+++ b/src/devices/machine/i8255.h
@@ -29,10 +29,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_I8255_H
+#define MAME_MACHINE_I8255_H
-#ifndef __I8255__
-#define __I8255__
+#pragma once
//**************************************************************************
@@ -63,18 +63,18 @@
// ======================> i8255_device
-class i8255_device : public device_t
+class i8255_device : public device_t
{
public:
// construction/destruction
i8255_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<i8255_device &>(device).m_in_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<i8255_device &>(device).m_in_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pc_callback(device_t &device, _Object object) { return downcast<i8255_device &>(device).m_in_pc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<i8255_device &>(device).m_out_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<i8255_device &>(device).m_out_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pc_callback(device_t &device, _Object object) { return downcast<i8255_device &>(device).m_out_pc_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pc_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_in_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pc_callback(device_t &device, Object &&cb) { return downcast<i8255_device &>(device).m_out_pc_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -140,8 +140,7 @@ private:
// device type definition
-extern const device_type I8255;
+DECLARE_DEVICE_TYPE(I8255, i8255_device)
extern const device_type I8255A;
-
-#endif
+#endif // MAME_MACHINE_I8255_H
diff --git a/src/devices/machine/i8257.cpp b/src/devices/machine/i8257.cpp
index a36b670ddc1..229492aa65f 100644
--- a/src/devices/machine/i8257.cpp
+++ b/src/devices/machine/i8257.cpp
@@ -9,13 +9,15 @@
#include "emu.h"
#include "i8257.h"
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type I8257 = device_creator<i8257_device>;
+DEFINE_DEVICE_TYPE(I8257, i8257_device, "i8257", "Intel 8257 DMA Controller")
@@ -23,9 +25,6 @@ const device_type I8257 = device_creator<i8257_device>;
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
enum
{
REGISTER_ADDRESS = 0,
@@ -69,16 +68,13 @@ enum
inline void i8257_device::dma_request(int channel, int state)
{
- if (LOG) logerror("I8257 '%s' Channel %u DMA Request: %u\n", tag(), channel, state);
+ LOG("I8257 Channel %u DMA Request: %u\n", channel, state);
if (state)
- {
m_request |= 1 << channel;
- }
else
- {
- m_request &= ~(1 << channel);
- }
+ m_request &= ~(1 << channel);
+
trigger(1);
}
@@ -87,9 +83,9 @@ inline void i8257_device::dma_request(int channel, int state)
// is_request_active -
//-------------------------------------------------
-inline bool i8257_device::is_request_active(int channel)
+inline bool i8257_device::is_request_active(int channel) const
{
- return (BIT(m_request, channel) && MODE_CHAN_ENABLE(channel)) ? true : false;
+ return BIT(m_request, channel) && MODE_CHAN_ENABLE(channel);
}
//-------------------------------------------------
@@ -184,7 +180,7 @@ inline void i8257_device::dma_write()
case MODE_TRANSFER_VERIFY: {
uint8_t v1 = m_in_memr_cb(offset);
if(0 && m_temp != v1)
- logerror("%s: verify error %02x vs. %02x\n", tag(), m_temp, v1);
+ logerror("verify error %02x vs. %02x\n", m_temp, v1);
break;
}
@@ -259,7 +255,7 @@ inline void i8257_device::advance()
//-------------------------------------------------
i8257_device::i8257_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I8257, "Intel 8257", tag, owner, clock, "i8257", __FILE__),
+ : device_t(mconfig, I8257, tag, owner, clock),
device_execute_interface(mconfig, *this),
m_icount(0),
m_reverse_rw(0),
@@ -598,7 +594,7 @@ WRITE8_MEMBER( i8257_device::write )
{
m_transfer_mode = data;
- if (LOG) logerror("I8257 '%s' Command Register: %02x\n", tag(), m_transfer_mode);
+ LOG("I8257 Command Register: %02x\n", m_transfer_mode);
}
trigger(1);
}
@@ -610,7 +606,7 @@ WRITE8_MEMBER( i8257_device::write )
WRITE_LINE_MEMBER( i8257_device::hlda_w )
{
- if (LOG) logerror("I8257 '%s' Hold Acknowledge: %u\n", tag(), state);
+ LOG("I8257 Hold Acknowledge: %u\n", state);
m_hack = state;
trigger(1);
@@ -623,7 +619,7 @@ WRITE_LINE_MEMBER( i8257_device::hlda_w )
WRITE_LINE_MEMBER( i8257_device::ready_w )
{
- if (LOG) logerror("I8257 '%s' Ready: %u\n", tag(), state);
+ LOG("I8257 Ready: %u\n", state);
m_ready = state;
}
diff --git a/src/devices/machine/i8257.h b/src/devices/machine/i8257.h
index a060852c7a2..c482fe0fe05 100644
--- a/src/devices/machine/i8257.h
+++ b/src/devices/machine/i8257.h
@@ -29,10 +29,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_I8257_H
+#define MAME_MACHINE_I8257_H
-#ifndef __I8257__
-#define __I8257__
+#pragma once
@@ -113,28 +113,29 @@ public:
DECLARE_WRITE_LINE_MEMBER( dreq2_w );
DECLARE_WRITE_LINE_MEMBER( dreq3_w );
- template<class _Object> static devcb_base &set_out_hrq_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_hrq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_tc_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_tc_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_hrq_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_hrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_tc_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_tc_cb.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_in_memr_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_memr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_memw_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_memw_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_memr_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_in_memr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_memw_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_memw_cb.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_in_ior_0_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ior_1_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ior_2_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ior_3_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_3_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_ior_0_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_in_ior_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_ior_1_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_in_ior_1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_ior_2_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_in_ior_2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_ior_3_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_in_ior_3_cb.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_out_iow_0_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iow_1_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iow_2_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iow_3_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_3_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_iow_0_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_iow_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_iow_1_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_iow_1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_iow_2_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_iow_2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_iow_3_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_iow_3_cb.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_out_dack_0_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_dack_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_1_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_dack_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_2_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_dack_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_3_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_dack_3_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_dack_0_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_dack_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dack_1_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_dack_1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dack_2_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_dack_2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dack_3_callback(device_t &device, Object &&cb) { return downcast<i8257_device &>(device).m_out_dack_3_cb.set_callback(std::forward<Object>(cb)); }
static void static_set_reverse_rw_mode(device_t &device, bool flag) { downcast<i8257_device &>(device).m_reverse_rw = flag; }
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -145,7 +146,7 @@ protected:
private:
inline void dma_request(int channel, int state);
- inline bool is_request_active(int channel);
+ inline bool is_request_active(int channel) const;
inline void set_hreq(int state);
inline void set_dack();
inline void dma_read();
@@ -199,8 +200,6 @@ private:
// device type definition
-extern const device_type I8257;
-
-
+DECLARE_DEVICE_TYPE(I8257, i8257_device)
-#endif
+#endif // MAME_MACHINE_I8257_H
diff --git a/src/devices/machine/i8271.cpp b/src/devices/machine/i8271.cpp
index 8a2509050c0..2146d5e6909 100644
--- a/src/devices/machine/i8271.cpp
+++ b/src/devices/machine/i8271.cpp
@@ -4,10 +4,10 @@
#include "emu.h"
#include "i8271.h"
-const device_type I8271 = device_creator<i8271_device>;
+DEFINE_DEVICE_TYPE(I8271, i8271_device, "i8271", "Intel 8271 FDC")
i8271_device::i8271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I8271, "Intel 8271", tag, owner, clock, "i8271", __FILE__), ready_connected(false), mode(0), main_phase(0),
+ : device_t(mconfig, I8271, tag, owner, clock), ready_connected(false), mode(0), main_phase(0),
intrq_cb(*this),
drq_cb(*this),
hdl_cb(*this),
diff --git a/src/devices/machine/i8271.h b/src/devices/machine/i8271.h
index 077fb772d69..f51c0f1e769 100644
--- a/src/devices/machine/i8271.h
+++ b/src/devices/machine/i8271.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl,Olivier Galibert
-#ifndef I8271N_H_
-#define I8271N_H_
+#ifndef MAME_MACHINE_I8271_H
+#define MAME_MACHINE_I8271_H
+
+#pragma once
#include "imagedev/floppy.h"
#include "fdc_pll.h"
@@ -26,12 +28,11 @@ class i8271_device : public device_t
{
public:
i8271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~i8271_device() {}
- template<class _Object> static devcb_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).intrq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).drq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_hdl_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).hdl_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_opt_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).opt_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).drq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hdl_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).hdl_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_opt_wr_callback(device_t &device, Object &&cb) { return downcast<i8271_device &>(device).opt_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER (sr_r);
DECLARE_READ8_MEMBER (rr_r);
@@ -289,6 +290,6 @@ private:
bool get_input(uint8_t *data);
};
-extern const device_type I8271;
+DECLARE_DEVICE_TYPE(I8271, i8271_device)
-#endif
+#endif // MAME_MACHINE_I8271_H
diff --git a/src/devices/machine/i8279.cpp b/src/devices/machine/i8279.cpp
index d279219c8d9..6e20cb291a4 100644
--- a/src/devices/machine/i8279.cpp
+++ b/src/devices/machine/i8279.cpp
@@ -77,21 +77,22 @@ that uses this feature.
#include "emu.h"
#include "i8279.h"
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
// device type definition
-const device_type I8279 = device_creator<i8279_device>;
+DEFINE_DEVICE_TYPE(I8279, i8279_device, "i8279", "Intel 8279 KDC")
//-------------------------------------------------
// i8279_device - constructor
//-------------------------------------------------
i8279_device::i8279_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I8279, "8279 KDC", tag, owner, clock, "i8279", __FILE__),
+ : device_t(mconfig, I8279, tag, owner, clock),
m_out_irq_cb(*this),
m_out_sl_cb(*this),
m_out_disp_cb(*this),
@@ -458,7 +459,7 @@ WRITE8_MEMBER( i8279_device::cmd_w )
switch (cmd)
{
case 0:
- if (LOG) logerror("I8279 '%s' kb mode %x, display mode %x\n", tag(), data & 7, (data>>3) & 3);
+ LOG("I8279 kb mode %x, display mode %x\n", data & 7, (data>>3) & 3);
break;
case 1:
if (data > 1)
@@ -473,7 +474,7 @@ WRITE8_MEMBER( i8279_device::cmd_w )
{
m_autoinc = BIT(data, 4);
m_s_ram_ptr = data & 7;
- if (LOG) logerror("I8279 '%s' selct sensor row %x, AI %d\n", tag(), m_s_ram_ptr, m_autoinc);
+ LOG("I8279 selct sensor row %x, AI %d\n", m_s_ram_ptr, m_autoinc);
}
break;
case 3:
@@ -486,7 +487,7 @@ WRITE8_MEMBER( i8279_device::cmd_w )
m_autoinc = BIT(data, 4);
break;
case 6:
- if (LOG) logerror("I8279 '%s' clear cmd %x\n", tag(), data);
+ LOG("I8279 clear cmd %x\n", data);
clear_display();
break;
}
diff --git a/src/devices/machine/i8279.h b/src/devices/machine/i8279.h
index 8528a81af15..458c9732b8d 100644
--- a/src/devices/machine/i8279.h
+++ b/src/devices/machine/i8279.h
@@ -30,10 +30,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_I8279_H
+#define MAME_MACHINE_I8279_H
-#ifndef __I8279__
-#define __I8279__
+#pragma once
@@ -75,13 +75,13 @@ public:
// construction/destruction
i8279_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<i8279_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_sl_callback(device_t &device, _Object object) { return downcast<i8279_device &>(device).m_out_sl_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_disp_callback(device_t &device, _Object object) { return downcast<i8279_device &>(device).m_out_disp_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_bd_callback(device_t &device, _Object object) { return downcast<i8279_device &>(device).m_out_bd_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_rl_callback(device_t &device, _Object object) { return downcast<i8279_device &>(device).m_in_rl_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_shift_callback(device_t &device, _Object object) { return downcast<i8279_device &>(device).m_in_shift_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ctrl_callback(device_t &device, _Object object) { return downcast<i8279_device &>(device).m_in_ctrl_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_sl_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_sl_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_disp_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_disp_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_bd_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_out_bd_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_rl_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_in_rl_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_shift_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_in_shift_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_ctrl_callback(device_t &device, Object &&cb) { return downcast<i8279_device &>(device).m_in_ctrl_cb.set_callback(std::forward<Object>(cb)); }
// read & write handlers
DECLARE_READ8_MEMBER(read);
@@ -137,8 +137,6 @@ private:
// device type definition
-extern const device_type I8279;
-
-
+DECLARE_DEVICE_TYPE(I8279, i8279_device)
-#endif
+#endif // MAME_MACHINE_I8279_H
diff --git a/src/devices/machine/i82875p.cpp b/src/devices/machine/i82875p.cpp
index 21e7850ccf7..84b17df1aad 100644
--- a/src/devices/machine/i82875p.cpp
+++ b/src/devices/machine/i82875p.cpp
@@ -3,9 +3,9 @@
#include "emu.h"
#include "i82875p.h"
-const device_type I82875P_HOST = device_creator<i82875p_host_device>;
-const device_type I82875P_AGP = device_creator<i82875p_agp_device>;
-const device_type I82875P_OVERFLOW = device_creator<i82875p_overflow_device>;
+DEFINE_DEVICE_TYPE(I82875P_HOST, i82875p_host_device, "i82875p_host", "Intel 82875P Northbridge")
+DEFINE_DEVICE_TYPE(I82875P_AGP, i82875p_agp_device, "i82875p_agp", "Intel 82875P AGP Bridge")
+DEFINE_DEVICE_TYPE(I82875P_OVERFLOW, i82875p_overflow_device, "i82875p_overflow", "Intel 82875P Configuration Overflow")
DEVICE_ADDRESS_MAP_START(agp_translation_map, 32, i82875p_host_device)
ADDRESS_MAP_END
@@ -43,7 +43,7 @@ DEVICE_ADDRESS_MAP_START(config_map, 32, i82875p_host_device)
ADDRESS_MAP_END
i82875p_host_device::i82875p_host_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_host_device(mconfig, I82875P_HOST, "I82875P Northbridge", tag, owner, clock, "i82875p_host", __FILE__)
+ : pci_host_device(mconfig, I82875P_HOST, tag, owner, clock)
{
}
@@ -428,7 +428,7 @@ void i82875p_host_device::map_extra(uint64_t memory_window_start, uint64_t memor
i82875p_agp_device::i82875p_agp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : agp_bridge_device(mconfig, I82875P_AGP, "I82875P AGP Bridge", tag, owner, clock, "i82875p_agp", __FILE__)
+ : agp_bridge_device(mconfig, I82875P_AGP, tag, owner, clock)
{
}
@@ -451,7 +451,7 @@ ADDRESS_MAP_END
i82875p_overflow_device::i82875p_overflow_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, I82875P_OVERFLOW, "I82875P Configuration Overflow", tag, owner, clock, "i82875p_overflow", __FILE__)
+ : pci_device(mconfig, I82875P_OVERFLOW, tag, owner, clock)
{
}
diff --git a/src/devices/machine/i82875p.h b/src/devices/machine/i82875p.h
index 2d40094c2da..9b212aa1cb1 100644
--- a/src/devices/machine/i82875p.h
+++ b/src/devices/machine/i82875p.h
@@ -2,8 +2,10 @@
// copyright-holders:Olivier Galibert
// Intel i82875p northbridge
-#ifndef I82875P_H
-#define I82875P_H
+#ifndef MAME_MACHINE_I82875P_H
+#define MAME_MACHINE_I82875P_H
+
+#pragma once
#include "pci.h"
@@ -120,7 +122,6 @@ public:
DECLARE_WRITE32_MEMBER(dram_controller_mode_w);
protected:
-
virtual void device_start() override;
virtual void device_reset() override;
@@ -131,9 +132,8 @@ private:
uint32_t dram_timing, dram_controller_mode;
};
-extern const device_type I82875P_HOST;
-extern const device_type I82875P_AGP;
-extern const device_type I82875P_OVERFLOW;
-
+DECLARE_DEVICE_TYPE(I82875P_HOST, i82875p_host_device)
+DECLARE_DEVICE_TYPE(I82875P_AGP, i82875p_agp_device)
+DECLARE_DEVICE_TYPE(I82875P_OVERFLOW, i82875p_overflow_device)
-#endif
+#endif // MAME_MACHINE_I82875P_H
diff --git a/src/devices/machine/i8355.cpp b/src/devices/machine/i8355.cpp
index 614ad84eaa1..917f46ea8b1 100644
--- a/src/devices/machine/i8355.cpp
+++ b/src/devices/machine/i8355.cpp
@@ -9,14 +9,14 @@
#include "emu.h"
#include "i8355.h"
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
enum
{
REGISTER_PORT_A = 0,
@@ -39,7 +39,7 @@ enum
//**************************************************************************
// device type definition
-const device_type I8355 = device_creator<i8355_device>;
+DEFINE_DEVICE_TYPE(I8355, i8355_device, "i8355", "Intel 8355")
@@ -57,8 +57,8 @@ inline uint8_t i8355_device::read_port(int port)
if (m_ddr[port] != 0xff)
{
- if (port == 0) {data |= m_in_pa_cb(0) & ~m_ddr[port];}
- else { data |= m_in_pb_cb(0) & ~m_ddr[port];}
+ if (port == 0) { data |= m_in_pa_cb(0) & ~m_ddr[port]; }
+ else { data |= m_in_pb_cb(0) & ~m_ddr[port]; }
}
return data;
@@ -88,7 +88,7 @@ inline void i8355_device::write_port(int port, uint8_t data)
//-------------------------------------------------
i8355_device::i8355_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I8355, "Intel 8355", tag, owner, clock, "i8355", __FILE__),
+ : device_t(mconfig, I8355, tag, owner, clock),
m_in_pa_cb(*this),
m_out_pa_cb(*this),
m_in_pb_cb(*this),
@@ -166,14 +166,14 @@ WRITE8_MEMBER( i8355_device::io_w )
{
case REGISTER_PORT_A:
case REGISTER_PORT_B:
- if (LOG) logerror("I8355 '%s' Port %c Write %02x\n", tag(), 'A' + port, data);
+ LOG("I8355 Port %c Write %02x\n", 'A' + port, data);
write_port(port, data);
break;
case REGISTER_PORT_A_DDR:
case REGISTER_PORT_B_DDR:
- if (LOG) logerror("I8355 '%s' Port %c DDR: %02x\n", tag(), 'A' + port, data);
+ LOG("I8355 Port %c DDR: %02x\n", 'A' + port, data);
m_ddr[port] = data;
write_port(port, data);
diff --git a/src/devices/machine/i8355.h b/src/devices/machine/i8355.h
index 7ea6074dc9a..58ea5b4b9d3 100644
--- a/src/devices/machine/i8355.h
+++ b/src/devices/machine/i8355.h
@@ -29,10 +29,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_I8355_H
+#define MAME_MACHINE_I8355_H
-#ifndef __I8355__
-#define __I8355__
+#pragma once
@@ -73,10 +73,10 @@ public:
// construction/destruction
i8355_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<i8355_device &>(device).m_in_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<i8355_device &>(device).m_out_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<i8355_device &>(device).m_in_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<i8355_device &>(device).m_out_pb_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<i8355_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( io_r );
DECLARE_WRITE8_MEMBER( io_w );
@@ -108,8 +108,6 @@ private:
// device type definition
-extern const device_type I8355;
-
-
+DECLARE_DEVICE_TYPE(I8355, i8355_device)
-#endif
+#endif // MAME_MACHINE_I8355_H
diff --git a/src/devices/machine/idectrl.cpp b/src/devices/machine/idectrl.cpp
index 8619cd9cfb4..0d9c164f9a7 100644
--- a/src/devices/machine/idectrl.cpp
+++ b/src/devices/machine/idectrl.cpp
@@ -16,30 +16,33 @@
DEBUGGING
***************************************************************************/
-#define VERBOSE 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
/***************************************************************************
CONSTANTS
***************************************************************************/
-const device_type IDE_CONTROLLER = device_creator<ide_controller_device>;
+DEFINE_DEVICE_TYPE(IDE_CONTROLLER, ide_controller_device, "idectrl", "IDE Controller (16-bit)")
ide_controller_device::ide_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- ata_interface_device(mconfig, IDE_CONTROLLER, "IDE Controller", tag, owner, clock, "ide_controller", __FILE__)
+ ide_controller_device(mconfig, IDE_CONTROLLER, tag, owner, clock)
{
}
-ide_controller_device::ide_controller_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- ata_interface_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ide_controller_device::ide_controller_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ ata_interface_device(mconfig, type, tag, owner, clock)
{
}
READ16_MEMBER( ide_controller_device::read_cs0 )
{
- if (mem_mask == 0xffff && offset == 1 ){ offset = 0; popmessage( "requires ide_controller_32_device" ); }
+ if (mem_mask == 0xffff && offset == 1)
+ {
+ offset = 0;
+ popmessage( "requires ide_controller_32_device" );
+ }
if (mem_mask == 0xff00)
{
return ata_interface_device::read_cs0(space, (offset * 2) + 1, 0xff) << 8;
@@ -88,15 +91,15 @@ WRITE16_MEMBER( ide_controller_device::write_cs1 )
}
-const device_type IDE_CONTROLLER_32 = device_creator<ide_controller_32_device>;
+DEFINE_DEVICE_TYPE(IDE_CONTROLLER_32, ide_controller_32_device, "idectrl32", "IDE Controller (32-bit)")
ide_controller_32_device::ide_controller_32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- ide_controller_device(mconfig, IDE_CONTROLLER_32, "IDE Controller (32 bit)", tag, owner, clock, "ide_controller32", __FILE__)
+ ide_controller_32_device(mconfig, IDE_CONTROLLER_32, tag, owner, clock)
{
}
-ide_controller_32_device::ide_controller_32_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- ide_controller_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ide_controller_32_device::ide_controller_32_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ ide_controller_device(mconfig, type, tag, owner, clock)
{
}
@@ -167,10 +170,10 @@ WRITE32_MEMBER(ide_controller_32_device::write_cs1)
#define IDE_BUSMASTER_STATUS_ERROR 0x02
#define IDE_BUSMASTER_STATUS_IRQ 0x04
-const device_type BUS_MASTER_IDE_CONTROLLER = device_creator<bus_master_ide_controller_device>;
+DEFINE_DEVICE_TYPE(BUS_MASTER_IDE_CONTROLLER, bus_master_ide_controller_device, "idectrl32bm", "Bus Master IDE Controller")
bus_master_ide_controller_device::bus_master_ide_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- ide_controller_32_device(mconfig, BUS_MASTER_IDE_CONTROLLER, "Bus Master IDE Controller", tag, owner, clock, "bus_master_ide_controller", __FILE__),
+ ide_controller_32_device(mconfig, BUS_MASTER_IDE_CONTROLLER, tag, owner, clock),
m_dma_address(0),
m_dma_bytes_left(0),
m_dma_descriptor(0),
@@ -242,7 +245,7 @@ void bus_master_ide_controller_device::set_dmarq(int state)
READ32_MEMBER( bus_master_ide_controller_device::bmdma_r )
{
- LOG(("%s:ide_bus_master32_r(%d, %08x)\n", machine().describe_context(), offset, mem_mask));
+ LOG("%s:ide_bus_master32_r(%d, %08x)\n", machine().describe_context(), offset, mem_mask);
switch( offset )
{
@@ -268,7 +271,7 @@ READ32_MEMBER( bus_master_ide_controller_device::bmdma_r )
WRITE32_MEMBER( bus_master_ide_controller_device::bmdma_w )
{
- LOG(("%s:ide_bus_master32_w(%d, %08x, %08X)\n", machine().describe_context(), offset, mem_mask, data));
+ LOG("%s:ide_bus_master32_w(%d, %08x, %08X)\n", machine().describe_context(), offset, mem_mask, data);
switch( offset )
{
@@ -300,7 +303,7 @@ WRITE32_MEMBER( bus_master_ide_controller_device::bmdma_w )
{
m_bus_master_status &= ~IDE_BUSMASTER_STATUS_ACTIVE;
- LOG(("DMA Aborted!\n"));
+ LOG("DMA Aborted!\n");
}
}
}
@@ -355,7 +358,7 @@ void bus_master_ide_controller_device::execute_dma()
if (m_dma_bytes_left == 0)
m_dma_bytes_left = 0x10000;
-// LOG(("New DMA descriptor: address = %08X bytes = %04X last = %d\n", m_dma_address, m_dma_bytes_left, m_dma_last_buffer));
+// LOG("New DMA descriptor: address = %08X bytes = %04X last = %d\n", m_dma_address, m_dma_bytes_left, m_dma_last_buffer);
}
if (m_bus_master_command & 8)
@@ -385,7 +388,7 @@ void bus_master_ide_controller_device::execute_dma()
if (m_dmarq)
{
- LOG(("DMA Out of buffer space!\n"));
+ LOG("DMA Out of buffer space!\n");
}
}
}
diff --git a/src/devices/machine/idectrl.h b/src/devices/machine/idectrl.h
index 3ecb1c3bf39..5de3af587ea 100644
--- a/src/devices/machine/idectrl.h
+++ b/src/devices/machine/idectrl.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_IDECTRL_H
+#define MAME_MACHINE_IDECTRL_H
-#ifndef __IDECTRL_H__
-#define __IDECTRL_H__
+#pragma once
#include "ataintf.h"
@@ -20,47 +20,51 @@
***************************************************************************/
#define MCFG_IDE_CONTROLLER_ADD(_tag, _slot_intf, _master, _slave, _fixed) \
- MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER, 0) \
- MCFG_DEVICE_MODIFY(_tag ":0") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
- MCFG_DEVICE_MODIFY(_tag ":1") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
- MCFG_DEVICE_MODIFY(_tag)
+ MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER, 0) \
+ MCFG_DEVICE_MODIFY(_tag ":0") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag ":1") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag)
class ide_controller_device : public ata_interface_device
{
public:
ide_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ide_controller_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual DECLARE_READ16_MEMBER(read_cs0) override;
virtual DECLARE_READ16_MEMBER(read_cs1) override;
virtual DECLARE_WRITE16_MEMBER(write_cs0) override;
virtual DECLARE_WRITE16_MEMBER(write_cs1) override;
+
+protected:
+ ide_controller_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type IDE_CONTROLLER;
+DECLARE_DEVICE_TYPE(IDE_CONTROLLER, ide_controller_device)
#define MCFG_IDE_CONTROLLER_32_ADD(_tag, _slot_intf, _master, _slave, _fixed) \
- MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER_32, 0) \
- MCFG_DEVICE_MODIFY(_tag ":0") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
- MCFG_DEVICE_MODIFY(_tag ":1") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
- MCFG_DEVICE_MODIFY(_tag)
+ MCFG_DEVICE_ADD(_tag, IDE_CONTROLLER_32, 0) \
+ MCFG_DEVICE_MODIFY(_tag ":0") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag ":1") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag)
class ide_controller_32_device : public ide_controller_device
{
public:
ide_controller_32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ide_controller_32_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual DECLARE_READ32_MEMBER(read_cs0);
virtual DECLARE_READ32_MEMBER(read_cs1);
virtual DECLARE_WRITE32_MEMBER(write_cs0);
virtual DECLARE_WRITE32_MEMBER(write_cs1);
+protected:
+ ide_controller_32_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
private:
using ide_controller_device::read_cs0;
using ide_controller_device::read_cs1;
@@ -68,25 +72,25 @@ private:
using ide_controller_device::write_cs1;
};
-extern const device_type IDE_CONTROLLER_32;
+DECLARE_DEVICE_TYPE(IDE_CONTROLLER_32, ide_controller_32_device)
#define MCFG_BUS_MASTER_IDE_CONTROLLER_ADD(_tag, _slot_intf, _master, _slave, _fixed) \
- MCFG_DEVICE_ADD(_tag, BUS_MASTER_IDE_CONTROLLER, 0) \
- MCFG_DEVICE_MODIFY(_tag ":0") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
- MCFG_DEVICE_MODIFY(_tag ":1") \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
- MCFG_DEVICE_MODIFY(_tag)
+ MCFG_DEVICE_ADD(_tag, BUS_MASTER_IDE_CONTROLLER, 0) \
+ MCFG_DEVICE_MODIFY(_tag ":0") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _master, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag ":1") \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
+ MCFG_DEVICE_MODIFY(_tag)
#define MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE(bmcpu, bmspace) \
- bus_master_ide_controller_device::set_bus_master_space(*device, bmcpu, bmspace);
+ bus_master_ide_controller_device::set_bus_master_space(*device, bmcpu, bmspace);
class bus_master_ide_controller_device : public ide_controller_32_device
{
public:
bus_master_ide_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void set_bus_master_space(device_t &device, const char *bmcpu, uint32_t bmspace) {bus_master_ide_controller_device &ide = downcast<bus_master_ide_controller_device &>(device); ide.m_bmcpu = bmcpu; ide.m_bmspace = bmspace; }
+ static void set_bus_master_space(device_t &device, const char *bmcpu, uint32_t bmspace) { bus_master_ide_controller_device &ide = downcast<bus_master_ide_controller_device &>(device); ide.m_bmcpu = bmcpu; ide.m_bmspace = bmspace; }
DECLARE_READ32_MEMBER( bmdma_r );
DECLARE_WRITE32_MEMBER( bmdma_w );
@@ -116,6 +120,6 @@ private:
int m_dmarq;
};
-extern const device_type BUS_MASTER_IDE_CONTROLLER;
+DECLARE_DEVICE_TYPE(BUS_MASTER_IDE_CONTROLLER, bus_master_ide_controller_device)
-#endif /* __IDECTRL_H__ */
+#endif // MAME_MACHINE_IDECTRL_H
diff --git a/src/devices/machine/idehd.cpp b/src/devices/machine/idehd.cpp
index e5637dade4c..032b85bc6e8 100644
--- a/src/devices/machine/idehd.cpp
+++ b/src/devices/machine/idehd.cpp
@@ -20,8 +20,8 @@
#define TIME_FULL_STROKE_SEEK (attotime::from_usec(13000))
#define TIME_AVERAGE_ROTATIONAL_LATENCY (attotime::from_usec(1300))
-ata_mass_storage_device::ata_mass_storage_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source)
- : ata_hle_device(mconfig, type, name, tag, owner, clock, shortname, source),
+ata_mass_storage_device::ata_mass_storage_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : ata_hle_device(mconfig, type, tag, owner, clock),
m_can_identify_device(0),
m_num_cylinders(0),
m_num_sectors(0),
@@ -774,20 +774,19 @@ void ata_mass_storage_device::process_command()
//**************************************************************************
// device type definition
-const device_type IDE_HARDDISK = device_creator<ide_hdd_device>;
+DEFINE_DEVICE_TYPE(IDE_HARDDISK, ide_hdd_device, "idehd", "IDE Hard Disk")
//-------------------------------------------------
// ide_hdd_device - constructor
//-------------------------------------------------
ide_hdd_device::ide_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ata_mass_storage_device(mconfig, IDE_HARDDISK, "IDE Hard Disk", tag, owner, clock, "hdd", __FILE__),
- m_image(*this, "image")
+ : ide_hdd_device(mconfig, IDE_HARDDISK, tag, owner, clock)
{
}
-ide_hdd_device::ide_hdd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : ata_mass_storage_device(mconfig, type, name, tag, owner, clock, shortname, source),
+ide_hdd_device::ide_hdd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : ata_mass_storage_device(mconfig, type, tag, owner, clock),
m_image(*this, "image")
{
}
diff --git a/src/devices/machine/idehd.h b/src/devices/machine/idehd.h
index f979d25285b..c227d671642 100644
--- a/src/devices/machine/idehd.h
+++ b/src/devices/machine/idehd.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_IDEHD_H
+#define MAME_MACHINE_IDEHD_H
-#ifndef __IDEHD_H__
-#define __IDEHD_H__
+#pragma once
#include "atahle.h"
#include "harddisk.h"
@@ -20,8 +20,6 @@
class ata_mass_storage_device : public ata_hle_device
{
public:
- ata_mass_storage_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source);
-
uint16_t *identify_device_buffer() { return m_identify_buffer; }
void set_master_password(const uint8_t *password)
@@ -37,6 +35,8 @@ public:
}
protected:
+ ata_mass_storage_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual int read_sector(uint32_t lba, void *buffer) = 0;
@@ -88,9 +88,10 @@ class ide_hdd_device : public ata_mass_storage_device
public:
// construction/destruction
ide_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ide_hdd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
protected:
+ ide_hdd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -98,8 +99,8 @@ protected:
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual int read_sector(uint32_t lba, void *buffer) override { if (m_disk == nullptr) return 0; return hard_disk_read(m_disk, lba, buffer); }
- virtual int write_sector(uint32_t lba, const void *buffer) override { if (m_disk == nullptr) return 0; return hard_disk_write(m_disk, lba, buffer); }
+ virtual int read_sector(uint32_t lba, void *buffer) override { return !m_disk ? 0 : hard_disk_read(m_disk, lba, buffer); }
+ virtual int write_sector(uint32_t lba, const void *buffer) override { return !m_disk ? 0 : hard_disk_write(m_disk, lba, buffer); }
virtual uint8_t calculate_status() override;
chd_file *m_handle;
@@ -117,6 +118,6 @@ private:
};
// device type definition
-extern const device_type IDE_HARDDISK;
+DECLARE_DEVICE_TYPE(IDE_HARDDISK, ide_hdd_device)
-#endif
+#endif // MAME_MACHINE_IDEHD_H
diff --git a/src/devices/machine/ie15.cpp b/src/devices/machine/ie15.cpp
index 438ffb1712b..1d45b25db94 100644
--- a/src/devices/machine/ie15.cpp
+++ b/src/devices/machine/ie15.cpp
@@ -11,7 +11,9 @@
****************************************************************************/
+#include "emu.h"
#include "machine/ie15.h"
+
#include "ie15.lh"
@@ -28,8 +30,8 @@
} while (0)
-ie15_device::ie15_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ie15_device::ie15_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_serial_interface(mconfig, *this)
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "video")
@@ -43,7 +45,7 @@ ie15_device::ie15_device(const machine_config &mconfig, device_type type, const
}
ie15_device::ie15_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ie15_device(mconfig, IE15, "IE15", tag, owner, clock, "ie15_device", __FILE__)
+ : ie15_device(mconfig, IE15, tag, owner, clock)
{
}
@@ -168,38 +170,38 @@ READ8_MEMBER(ie15_device::kb_ready_r)
WRITE8_MEMBER(ie15_device::kb_ready_w)
{
DBG_LOG(2, "keyboard", ("clear ready\n"));
- m_kb_flag = IE_TRUE | IE_KB_ACK;
+ m_kb_flag = IE_TRUE | ie15_keyboard_device::IE_KB_ACK;
}
// active high; active = interpret controls, inactive = display controls
READ8_MEMBER(ie15_device::kb_s_red_r)
{
- return m_io_keyboard->read() & IE_KB_RED ? IE_TRUE : 0;
+ return m_io_keyboard->read() & ie15_keyboard_device::IE_KB_RED ? IE_TRUE : 0;
}
// active high; active = setup mode
READ8_MEMBER(ie15_device::kb_s_sdv_r)
{
- return m_kb_control & IE_KB_SDV ? IE_TRUE : 0;
+ return m_kb_control & ie15_keyboard_device::IE_KB_SDV ? IE_TRUE : 0;
}
// active high; active = keypress detected on aux keypad
READ8_MEMBER(ie15_device::kb_s_dk_r)
{
- return m_kb_control & IE_KB_DK ? IE_TRUE : 0;
+ return m_kb_control & ie15_keyboard_device::IE_KB_DK ? IE_TRUE : 0;
}
// active low; active = full duplex, inactive = half duplex
READ8_MEMBER(ie15_device::kb_s_dupl_r)
{
- return m_io_keyboard->read() & IE_KB_DUP ? IE_TRUE : 0;
+ return m_io_keyboard->read() & ie15_keyboard_device::IE_KB_DUP ? IE_TRUE : 0;
}
// active high; active = on-line, inactive = local editing
READ8_MEMBER(ie15_device::kb_s_lin_r)
{
- return m_io_keyboard->read() & IE_KB_LIN ? IE_TRUE : 0;
+ return m_io_keyboard->read() & ie15_keyboard_device::IE_KB_LIN ? IE_TRUE : 0;
}
/* serial port */
@@ -362,15 +364,15 @@ ADDRESS_MAP_END
/* Input ports */
INPUT_PORTS_START( ie15 )
PORT_START("io_keyboard")
- PORT_DIPNAME(IE_KB_RED, IE_KB_RED, "RED (Interpret controls)")
+ PORT_DIPNAME(ie15_keyboard_device::IE_KB_RED, ie15_keyboard_device::IE_KB_RED, "RED (Interpret controls)")
PORT_DIPSETTING(0x00, "Off")
- PORT_DIPSETTING(IE_KB_RED, "On")
- PORT_DIPNAME(IE_KB_DUP, IE_KB_DUP, "DUP (Full duplex)")
+ PORT_DIPSETTING(ie15_keyboard_device::IE_KB_RED, "On")
+ PORT_DIPNAME(ie15_keyboard_device::IE_KB_DUP, ie15_keyboard_device::IE_KB_DUP, "DUP (Full duplex)")
PORT_DIPSETTING(0x00, "Off")
- PORT_DIPSETTING(IE_KB_DUP, "On")
- PORT_DIPNAME(IE_KB_LIN, IE_KB_LIN, "LIN (Online)")
+ PORT_DIPSETTING(ie15_keyboard_device::IE_KB_DUP, "On")
+ PORT_DIPNAME(ie15_keyboard_device::IE_KB_LIN, ie15_keyboard_device::IE_KB_LIN, "LIN (Online)")
PORT_DIPSETTING(0x00, "Off")
- PORT_DIPSETTING(IE_KB_LIN, "On")
+ PORT_DIPSETTING(ie15_keyboard_device::IE_KB_LIN, "On")
INPUT_PORTS_END
WRITE16_MEMBER( ie15_device::kbd_put )
@@ -451,7 +453,7 @@ void ie15_device::draw_scanline(uint32_t *p, uint16_t offset, uint8_t scanline)
uint8_t ra = scanline % 8;
uint32_t ra_high = 0x200 | ra;
bool blink((m_screen->frame_number() % 10) > 4);
- bool red(m_io_keyboard->read() & IE_KB_RED);
+ bool red(m_io_keyboard->read() & ie15_keyboard_device::IE_KB_RED);
bool blink_red_line25 = blink && red && m_video.line25;
bool cursor_blank = scanline > 7 && (!m_video.cursor || blink);
@@ -496,12 +498,12 @@ void ie15_device::update_leds()
uint8_t data = m_io_keyboard->read();
machine().output().set_value("lat_led", m_kb_ruslat ^ 1);
- machine().output().set_value("nr_led", BIT(m_kb_control, IE_KB_NR_BIT) ^ 1);
- machine().output().set_value("pch_led", BIT(data, IE_KB_PCH_BIT) ^ 1);
- machine().output().set_value("dup_led", BIT(data, IE_KB_DUP_BIT) ^ 1);
- machine().output().set_value("lin_led", BIT(data, IE_KB_LIN_BIT) ^ 1);
- machine().output().set_value("red_led", BIT(data, IE_KB_RED_BIT) ^ 1);
- machine().output().set_value("sdv_led", BIT(m_kb_control, IE_KB_SDV_BIT) ^ 1);
+ machine().output().set_value("nr_led", BIT(m_kb_control, ie15_keyboard_device::IE_KB_NR_BIT) ^ 1);
+ machine().output().set_value("pch_led", BIT(data, ie15_keyboard_device::IE_KB_PCH_BIT) ^ 1);
+ machine().output().set_value("dup_led", BIT(data, ie15_keyboard_device::IE_KB_DUP_BIT) ^ 1);
+ machine().output().set_value("lin_led", BIT(data, ie15_keyboard_device::IE_KB_LIN_BIT) ^ 1);
+ machine().output().set_value("red_led", BIT(data, ie15_keyboard_device::IE_KB_RED_BIT) ^ 1);
+ machine().output().set_value("sdv_led", BIT(m_kb_control, ie15_keyboard_device::IE_KB_SDV_BIT) ^ 1);
machine().output().set_value("prd_led", 1); // XXX
}
@@ -628,4 +630,4 @@ const tiny_rom_entry *ie15_device::device_rom_region() const
return ROM_NAME(ie15);
}
-const device_type IE15 = device_creator<ie15_device>;
+DEFINE_DEVICE_TYPE(IE15, ie15_device, "ie15_device", "IE15")
diff --git a/src/devices/machine/ie15.h b/src/devices/machine/ie15.h
index 55615004418..5c82ac45c3f 100644
--- a/src/devices/machine/ie15.h
+++ b/src/devices/machine/ie15.h
@@ -1,10 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Sergey Svishchev
-#ifndef MAME_MACHINE_IE15_H_
-#define MAME_MACHINE_IE15_H_
+#ifndef MAME_MACHINE_IE15_H
+#define MAME_MACHINE_IE15_H
-#include "emu.h"
+#pragma once
#include "bus/rs232/rs232.h"
#include "cpu/ie15/ie15.h"
@@ -36,7 +36,6 @@ INPUT_PORTS_EXTERN(ie15);
class ie15_device : public device_t, public device_serial_interface
{
public:
- ie15_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
ie15_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE8_MEMBER(write) { term_write(data); }
@@ -48,6 +47,8 @@ public:
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
+ ie15_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -128,6 +129,6 @@ private:
required_ioport m_io_keyboard;
};
-extern const device_type IE15;
+DECLARE_DEVICE_TYPE(IE15, ie15_device)
-#endif /* MAME_MACHINE_IE15_H_ */
+#endif // MAME_MACHINE_IE15_H
diff --git a/src/devices/machine/ie15_kbd.cpp b/src/devices/machine/ie15_kbd.cpp
index 8dbc7abf64f..33624fa8a98 100644
--- a/src/devices/machine/ie15_kbd.cpp
+++ b/src/devices/machine/ie15_kbd.cpp
@@ -14,9 +14,10 @@
IMPLEMENTATION
***************************************************************************/
+DEFINE_DEVICE_TYPE(IE15_KEYBOARD, ie15_keyboard_device, "ie15kbd", "15WWW-97-006 Keyboard")
-ie15_keyboard_device::ie15_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ie15_keyboard_device::ie15_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_io_kbd(*this, "TERM_LINE%u", 0)
, m_io_kbdc(*this, "TERM_LINEC")
, m_keyboard_cb(*this)
@@ -24,10 +25,7 @@ ie15_keyboard_device::ie15_keyboard_device(const machine_config &mconfig, device
}
ie15_keyboard_device::ie15_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IE15_KEYBOARD, "15WWW-97-006 Keyboard", tag, owner, clock, "ie15_keyboard", __FILE__)
- , m_io_kbd(*this, "TERM_LINE%u", 0)
- , m_io_kbdc(*this, "TERM_LINEC")
- , m_keyboard_cb(*this)
+ : ie15_keyboard_device(mconfig, IE15_KEYBOARD, tag, owner, clock)
{
}
@@ -299,5 +297,3 @@ ioport_constructor ie15_keyboard_device::device_input_ports() const
{
return INPUT_PORTS_NAME(ie15_keyboard);
}
-
-const device_type IE15_KEYBOARD = device_creator<ie15_keyboard_device>;
diff --git a/src/devices/machine/ie15_kbd.h b/src/devices/machine/ie15_kbd.h
index d2dbb3709a9..0e4eda30a39 100644
--- a/src/devices/machine/ie15_kbd.h
+++ b/src/devices/machine/ie15_kbd.h
@@ -1,29 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Sergey Svishchev
-#ifndef __IE15_KEYBOARD_H__
-#define __IE15_KEYBOARD_H__
+#ifndef MAME_MACHINE_IE15_KBD_H
+#define MAME_MACHINE_IE15_KBD_H
-
-#define IE_KB_ACK 1
-
-#define IE_KB_RED 0x01
-#define IE_KB_SDV 0x02
-#define IE_KB_DUP 0x08
-#define IE_KB_LIN 0x10
-#define IE_KB_DK 0x20
-#define IE_KB_PCH 0x40
-#define IE_KB_NR 0x80
-
-#define IE_KB_RED_BIT 0
-#define IE_KB_SDV_BIT 1
-#define IE_KB_DUP_BIT 3
-#define IE_KB_LIN_BIT 4
-#define IE_KB_DK_BIT 5
-#define IE_KB_PCH_BIT 6
-#define IE_KB_NR_BIT 7
-
-#define IE_KB_SI 0x0f
-#define IE_KB_SO 0x0e
+#pragma once
/***************************************************************************
@@ -37,27 +17,53 @@
FUNCTION PROTOTYPES
***************************************************************************/
-class ie15_keyboard_device :
- public device_t
+class ie15_keyboard_device : public device_t
{
public:
- ie15_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ enum
+ {
+ IE_KB_ACK = 1,
+
+ IE_KB_RED = 0x01,
+ IE_KB_SDV = 0x02,
+ IE_KB_DUP = 0x08,
+ IE_KB_LIN = 0x10,
+ IE_KB_DK = 0x20,
+ IE_KB_PCH = 0x40,
+ IE_KB_NR = 0x80,
+
+ IE_KB_RED_BIT = 0,
+ IE_KB_SDV_BIT = 1,
+ IE_KB_DUP_BIT = 3,
+ IE_KB_LIN_BIT = 4,
+ IE_KB_DK_BIT = 5,
+ IE_KB_PCH_BIT = 6,
+ IE_KB_NR_BIT = 7,
+
+ IE_KB_SI = 0x0f,
+ IE_KB_SO = 0x0e
+ };
+
+
ie15_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_keyboard_callback(device_t &device, _Object object) { return downcast<ie15_keyboard_device &>(device).m_keyboard_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_keyboard_callback(device_t &device, Object &&cb) { return downcast<ie15_keyboard_device &>(device).m_keyboard_cb.set_callback(std::forward<Object>(cb)); }
virtual ioport_constructor device_input_ports() const override;
virtual machine_config_constructor device_mconfig_additions() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
- required_ioport_array<4> m_io_kbd;
- required_ioport m_io_kbdc;
+ ie15_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual void send_key(uint16_t code) { m_keyboard_cb((offs_t)0, code); }
+ virtual void send_key(uint16_t code) { m_keyboard_cb(offs_t(0), code); }
+
+ required_ioport_array<4> m_io_kbd;
+ required_ioport m_io_kbdc;
+
emu_timer *m_timer;
private:
@@ -71,6 +77,6 @@ private:
devcb_write16 m_keyboard_cb;
};
-extern const device_type IE15_KEYBOARD;
+DECLARE_DEVICE_TYPE(IE15_KEYBOARD, ie15_keyboard_device)
-#endif /* __IE15_KEYBOARD_H__ */
+#endif // MAME_MACHINE_IE15_KBD_H
diff --git a/src/devices/machine/im6402.cpp b/src/devices/machine/im6402.cpp
index df2c5b809b1..ea76e9d0f21 100644
--- a/src/devices/machine/im6402.cpp
+++ b/src/devices/machine/im6402.cpp
@@ -9,21 +9,15 @@
#include "emu.h"
#include "im6402.h"
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type IM6402 = device_creator<im6402_device>;
-
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+DEFINE_DEVICE_TYPE(IM6402, im6402_device, "im6402", "Intersil IM6402 USART")
@@ -77,7 +71,7 @@ inline void im6402_device::set_tre(int state)
//-------------------------------------------------
im6402_device::im6402_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, IM6402, "Intersil IM6402", tag, owner, clock, "im6402", __FILE__),
+ device_t(mconfig, IM6402, tag, owner, clock),
device_serial_interface(mconfig, *this),
m_write_tro(*this),
m_write_dr(*this),
@@ -185,7 +179,7 @@ void im6402_device::tra_complete()
{
if (!m_tbre)
{
- if (LOG) logerror("IM6402 '%s' Transmit Data %02x\n", tag(), m_tbr);
+ LOG("IM6402 Transmit Data %02x\n", m_tbr);
transmit_register_setup(m_tbr);
@@ -213,7 +207,7 @@ void im6402_device::rcv_complete()
receive_register_extract();
m_rbr = get_received_char();
- if (LOG) logerror("IM6402 '%s' Receive Data %02x\n", tag(), m_rbr);
+ LOG("IM6402 Receive Data %02x\n", m_rbr);
if (m_dr)
{
@@ -230,13 +224,13 @@ void im6402_device::rcv_complete()
WRITE8_MEMBER( im6402_device::write )
{
- if (LOG) logerror("IM6402 '%s' Transmit Buffer Register %02x\n", tag(), data);
+ LOG("IM6402 Transmit Buffer Register %02x\n", data);
m_tbr = data;
if (is_transmit_register_empty())
{
- if (LOG) logerror("IM6402 '%s' Transmit Data %02x\n", tag(), m_tbr);
+ LOG("IM6402 Transmit Data %02x\n", m_tbr);
transmit_register_setup(m_tbr);
@@ -330,7 +324,7 @@ WRITE_LINE_MEMBER( im6402_device::crl_w )
{
if (state)
{
- if (LOG) logerror("IM6402 '%s' Control Register Load\n", tag());
+ LOG("IM6402 Control Register Load\n");
int data_bit_count = 5 + ((m_cls2 << 1) | m_cls1);
stop_bits_t stop_bits = (m_sbs ? ((data_bit_count == 5) ? STOP_BITS_1_5 : STOP_BITS_2) : STOP_BITS_1);
@@ -354,7 +348,7 @@ WRITE_LINE_MEMBER( im6402_device::crl_w )
WRITE_LINE_MEMBER( im6402_device::pi_w )
{
- if (LOG) logerror("IM6402 '%s' Parity Inhibit %u\n", tag(), state);
+ LOG("IM6402 Parity Inhibit %u\n", state);
m_pi = state;
}
@@ -366,7 +360,7 @@ WRITE_LINE_MEMBER( im6402_device::pi_w )
WRITE_LINE_MEMBER( im6402_device::sbs_w )
{
- if (LOG) logerror("IM6402 '%s' Stop Bit Select %u\n", tag(), state);
+ LOG("IM6402 Stop Bit Select %u\n", state);
m_sbs = state;
}
@@ -378,7 +372,7 @@ WRITE_LINE_MEMBER( im6402_device::sbs_w )
WRITE_LINE_MEMBER( im6402_device::cls1_w )
{
- if (LOG) logerror("IM6402 '%s' Character Length Select 1 %u\n", tag(), state);
+ LOG("IM6402 Character Length Select 1 %u\n", state);
m_cls1 = state;
}
@@ -390,7 +384,7 @@ WRITE_LINE_MEMBER( im6402_device::cls1_w )
WRITE_LINE_MEMBER( im6402_device::cls2_w )
{
- if (LOG) logerror("IM6402 '%s' Character Length Select 2 %u\n", tag(), state);
+ LOG("IM6402 Character Length Select 2 %u\n", state);
m_cls2 = state;
}
@@ -402,7 +396,7 @@ WRITE_LINE_MEMBER( im6402_device::cls2_w )
WRITE_LINE_MEMBER( im6402_device::epe_w )
{
- if (LOG) logerror("IM6402 '%s' Even Parity Enable %u\n", tag(), state);
+ LOG("IM6402 Even Parity Enable %u\n", state);
m_epe = state;
}
diff --git a/src/devices/machine/im6402.h b/src/devices/machine/im6402.h
index 211ff99394c..2edf9cbcdfd 100644
--- a/src/devices/machine/im6402.h
+++ b/src/devices/machine/im6402.h
@@ -36,10 +36,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_IM6402_H
+#define MAME_MACHINE_IM6402_H
-#ifndef __IM6402__
-#define __IM6402__
+#pragma once
@@ -73,8 +73,7 @@
// ======================> im6402_device
-class im6402_device : public device_t,
- public device_serial_interface
+class im6402_device : public device_t, public device_serial_interface
{
public:
// construction/destruction
@@ -82,10 +81,10 @@ public:
static void set_rrc(device_t &device, int rrc) { downcast<im6402_device &>(device).m_rrc = rrc; }
static void set_trc(device_t &device, int trc) { downcast<im6402_device &>(device).m_trc = trc; }
- template<class _Object> static devcb_base &set_tro_wr_callback(device_t &device, _Object object) { return downcast<im6402_device &>(device).m_write_tro.set_callback(object); }
- template<class _Object> static devcb_base &set_dr_wr_callback(device_t &device, _Object object) { return downcast<im6402_device &>(device).m_write_dr.set_callback(object); }
- template<class _Object> static devcb_base &set_tbre_wr_callback(device_t &device, _Object object) { return downcast<im6402_device &>(device).m_write_tbre.set_callback(object); }
- template<class _Object> static devcb_base &set_tre_wr_callback(device_t &device, _Object object) { return downcast<im6402_device &>(device).m_write_tre.set_callback(object); }
+ template <class Object> static devcb_base &set_tro_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_tro.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dr_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_dr.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_tbre_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_tbre.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_tre_wr_callback(device_t &device, Object &&cb) { return downcast<im6402_device &>(device).m_write_tre.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read ) { return m_rbr; }
DECLARE_WRITE8_MEMBER( write );
@@ -162,8 +161,6 @@ private:
// device type definition
-extern const device_type IM6402;
-
-
+DECLARE_DEVICE_TYPE(IM6402, im6402_device)
-#endif
+#endif // MAME_MACHINE_IM6402_H
diff --git a/src/devices/machine/input_merger.cpp b/src/devices/machine/input_merger.cpp
index e77e24f794b..834795f948b 100644
--- a/src/devices/machine/input_merger.cpp
+++ b/src/devices/machine/input_merger.cpp
@@ -20,8 +20,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type INPUT_MERGER_ACTIVE_HIGH = device_creator<input_merger_active_high_device>;
-const device_type INPUT_MERGER_ACTIVE_LOW = device_creator<input_merger_active_low_device>;
+DEFINE_DEVICE_TYPE(INPUT_MERGER_ACTIVE_HIGH, input_merger_active_high_device, "ipt_merger_hi", "Input Merger (active high)")
+DEFINE_DEVICE_TYPE(INPUT_MERGER_ACTIVE_LOW, input_merger_active_low_device, "ipt_merger_lo", "Input Merger (active low)")
//**************************************************************************
@@ -32,9 +32,8 @@ const device_type INPUT_MERGER_ACTIVE_LOW = device_creator<input_merger_active_l
// input_merger_device - constructor
//-------------------------------------------------
-input_merger_device::input_merger_device(machine_config const &mconfig, device_type type,
- char const *name, char const *tag, device_t *owner, uint32_t clock, char const *shortname, char const *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+input_merger_device::input_merger_device(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
m_output_handler(*this)
{
}
@@ -66,7 +65,7 @@ void input_merger_device::device_start()
//-------------------------------------------------
input_merger_active_high_device::input_merger_active_high_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
- : input_merger_device(mconfig, INPUT_MERGER_ACTIVE_HIGH, "Input Merger (Active High)", tag, owner, clock, "input_merger_hi", __FILE__)
+ : input_merger_device(mconfig, INPUT_MERGER_ACTIVE_HIGH, tag, owner, clock)
{
}
@@ -99,7 +98,7 @@ void input_merger_active_high_device::update_state()
//-------------------------------------------------
input_merger_active_low_device::input_merger_active_low_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
- : input_merger_device(mconfig, INPUT_MERGER_ACTIVE_LOW, "Input Merger (Active Low)", tag, owner, clock, "input_merger_lo", __FILE__)
+ : input_merger_device(mconfig, INPUT_MERGER_ACTIVE_LOW, tag, owner, clock)
{
}
diff --git a/src/devices/machine/input_merger.h b/src/devices/machine/input_merger.h
index 325f1c77328..0d5cb6801e2 100644
--- a/src/devices/machine/input_merger.h
+++ b/src/devices/machine/input_merger.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_INPUT_MERGER_H
+#define MAME_MACHINE_INPUT_MERGER_H
-#ifndef __INPUT_MERGER_H__
-#define __INPUT_MERGER_H__
+#pragma once
@@ -40,22 +40,22 @@ class input_merger_device : public device_t
{
public:
// callback
- template<class _Object> static devcb_base &set_output_handler(device_t &device, _Object object)
- { return downcast<input_merger_device &>(device).m_output_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_output_handler(device_t &device, Object &&cb)
+ { return downcast<input_merger_device &>(device).m_output_handler.set_callback(std::forward<Object>(cb)); }
// input lines
- DECLARE_WRITE_LINE_MEMBER( in0_w ) { m_state[0] = state; update_state(); };
- DECLARE_WRITE_LINE_MEMBER( in1_w ) { m_state[1] = state; update_state(); };
- DECLARE_WRITE_LINE_MEMBER( in2_w ) { m_state[2] = state; update_state(); };
- DECLARE_WRITE_LINE_MEMBER( in3_w ) { m_state[3] = state; update_state(); };
- DECLARE_WRITE_LINE_MEMBER( in4_w ) { m_state[4] = state; update_state(); };
- DECLARE_WRITE_LINE_MEMBER( in5_w ) { m_state[5] = state; update_state(); };
- DECLARE_WRITE_LINE_MEMBER( in6_w ) { m_state[6] = state; update_state(); };
- DECLARE_WRITE_LINE_MEMBER( in7_w ) { m_state[7] = state; update_state(); };
+ DECLARE_WRITE_LINE_MEMBER( in0_w ) { if (bool(state) != m_state[0]) { m_state[0] = state; update_state(); } }
+ DECLARE_WRITE_LINE_MEMBER( in1_w ) { if (bool(state) != m_state[1]) { m_state[1] = state; update_state(); } }
+ DECLARE_WRITE_LINE_MEMBER( in2_w ) { if (bool(state) != m_state[2]) { m_state[2] = state; update_state(); } }
+ DECLARE_WRITE_LINE_MEMBER( in3_w ) { if (bool(state) != m_state[3]) { m_state[3] = state; update_state(); } }
+ DECLARE_WRITE_LINE_MEMBER( in4_w ) { if (bool(state) != m_state[4]) { m_state[4] = state; update_state(); } }
+ DECLARE_WRITE_LINE_MEMBER( in5_w ) { if (bool(state) != m_state[5]) { m_state[5] = state; update_state(); } }
+ DECLARE_WRITE_LINE_MEMBER( in6_w ) { if (bool(state) != m_state[6]) { m_state[6] = state; update_state(); } }
+ DECLARE_WRITE_LINE_MEMBER( in7_w ) { if (bool(state) != m_state[7]) { m_state[7] = state; update_state(); } }
protected:
// constructor/destructor
- input_merger_device(machine_config const &mconfig, device_type type, char const *name, char const *tag, device_t *owner, uint32_t clock, char const *shortname, char const *source);
+ input_merger_device(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, uint32_t clock);
virtual ~input_merger_device() override;
// device-level overrides
@@ -99,8 +99,7 @@ protected:
// device type definition
-extern const device_type INPUT_MERGER_ACTIVE_HIGH;
-extern const device_type INPUT_MERGER_ACTIVE_LOW;
-
+DECLARE_DEVICE_TYPE(INPUT_MERGER_ACTIVE_HIGH, input_merger_active_high_device)
+DECLARE_DEVICE_TYPE(INPUT_MERGER_ACTIVE_LOW, input_merger_active_low_device)
-#endif /* __INPUT_MERGER_H__ */
+#endif // MAME_MACHINE_INPUT_MERGER_H
diff --git a/src/devices/machine/ins8154.cpp b/src/devices/machine/ins8154.cpp
index 7d58a299a27..8a134000f3f 100644
--- a/src/devices/machine/ins8154.cpp
+++ b/src/devices/machine/ins8154.cpp
@@ -13,13 +13,14 @@
#include "emu.h"
#include "ins8154.h"
+#define VERBOSE 1
+#include "logmacro.h"
+
/***************************************************************************
CONSTANTS
***************************************************************************/
-#define VERBOSE 1
-
/* Mode Definition Register */
enum
{
@@ -36,19 +37,20 @@ enum
//**************************************************************************
// device type definition
-const device_type INS8154 = device_creator<ins8154_device>;
+DEFINE_DEVICE_TYPE(INS8154, ins8154_device, "ins8154", "INS8154 RAM I/O")
//-------------------------------------------------
// ins8154_device - constructor
//-------------------------------------------------
ins8154_device::ins8154_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, INS8154, "INS8154 RAM I/O", tag, owner, clock, "ins8154", __FILE__),
- m_in_a_cb(*this),
- m_out_a_cb(*this),
- m_in_b_cb(*this),
- m_out_b_cb(*this),
- m_out_irq_cb(*this), m_in_a(0), m_in_b(0), m_out_a(0), m_out_b(0), m_mdr(0), m_odra(0), m_odrb(0)
+ : device_t(mconfig, INS8154, tag, owner, clock)
+ , m_in_a_cb(*this)
+ , m_out_a_cb(*this)
+ , m_in_b_cb(*this)
+ , m_out_b_cb(*this)
+ , m_out_irq_cb(*this)
+ , m_in_a(0), m_in_b(0), m_out_a(0), m_out_b(0), m_mdr(0), m_odra(0), m_odrb(0)
{
}
@@ -98,46 +100,35 @@ READ8_MEMBER(ins8154_device::ins8154_r)
if (offset > 0x24)
{
- if (VERBOSE)
- {
- logerror("%s: INS8154 '%s' Read from invalid offset %02x!\n", machine().describe_context(), tag(), offset);
- }
+ LOG("%s: INS8154 Read from invalid offset %02x!\n", machine().describe_context(), offset);
return 0xff;
}
switch (offset)
{
case 0x20:
- if(!m_in_a_cb.isnull())
- {
+ if (!m_in_a_cb.isnull())
val = m_in_a_cb(0);
- }
m_in_a = val;
break;
case 0x21:
- if(!m_in_b_cb.isnull())
- {
+ if (!m_in_b_cb.isnull())
val = m_in_b_cb(0);
- }
m_in_b = val;
break;
default:
if (offset < 0x08)
{
- if(!m_in_a_cb.isnull())
- {
+ if (!m_in_a_cb.isnull())
val = (m_in_a_cb(0) << (8 - offset)) & 0x80;
- }
m_in_a = val;
}
else
{
- if(!m_in_b_cb.isnull())
- {
+ if (!m_in_b_cb.isnull())
val = (m_in_b_cb(0) << (8 - (offset >> 4))) & 0x80;
- }
m_in_b = val;
}
break;
@@ -152,9 +143,7 @@ WRITE8_MEMBER(ins8154_device::ins8154_porta_w)
/* Test if any pins are set as outputs */
if (m_odra)
- {
- m_out_a_cb((offs_t)0, (data & m_odra) | (m_odra ^ 0xff));
- }
+ m_out_a_cb(offs_t(0), (data & m_odra) | (m_odra ^ 0xff));
}
WRITE8_MEMBER(ins8154_device::ins8154_portb_w)
@@ -163,19 +152,14 @@ WRITE8_MEMBER(ins8154_device::ins8154_portb_w)
/* Test if any pins are set as outputs */
if (m_odrb)
- {
- m_out_b_cb((offs_t)0, (data & m_odrb) | (m_odrb ^ 0xff));
- }
+ m_out_b_cb(offs_t(0), (data & m_odrb) | (m_odrb ^ 0xff));
}
WRITE8_MEMBER(ins8154_device::ins8154_w)
{
if (offset > 0x24)
{
- if (VERBOSE)
- {
- logerror("%s: INS8154 '%s' Write %02x to invalid offset %02x!\n", machine().describe_context(), tag(), data, offset);
- }
+ LOG("%s: INS8154 Write %02x to invalid offset %02x!\n", machine().describe_context(), data, offset);
return;
}
@@ -190,29 +174,17 @@ WRITE8_MEMBER(ins8154_device::ins8154_w)
break;
case 0x22:
- if (VERBOSE)
- {
- logerror("%s: INS8154 '%s' ODRA set to %02x\n", machine().describe_context(), tag(), data);
- }
-
+ LOG("%s: INS8154 ODRA set to %02x\n", machine().describe_context(), data);
m_odra = data;
break;
case 0x23:
- if (VERBOSE)
- {
- logerror("%s: INS8154 '%s' ODRB set to %02x\n", machine().describe_context(), tag(), data);
- }
-
+ LOG("%s: INS8154 ODRB set to %02x\n", machine().describe_context(), data);
m_odrb = data;
break;
case 0x24:
- if (VERBOSE)
- {
- logerror("%s: INS8154 '%s' MDR set to %02x\n", machine().describe_context(), tag(), data);
- }
-
+ LOG("%s: INS8154 MDR set to %02x\n", machine().describe_context(), data);
m_mdr = data;
break;
@@ -221,27 +193,18 @@ WRITE8_MEMBER(ins8154_device::ins8154_w)
{
/* Set bit */
if (offset < 0x08)
- {
ins8154_porta_w(space, 0, m_out_a |= offset & 0x07);
- }
else
- {
ins8154_portb_w(space, 0, m_out_b |= (offset >> 4) & 0x07);
- }
}
else
{
/* Clear bit */
if (offset < 0x08)
- {
ins8154_porta_w(space, 0, m_out_a & ~(offset & 0x07));
- }
else
- {
ins8154_portb_w(space, 0, m_out_b & ~((offset >> 4) & 0x07));
- }
}
-
break;
}
}
diff --git a/src/devices/machine/ins8154.h b/src/devices/machine/ins8154.h
index 41341dcf084..b87ff329675 100644
--- a/src/devices/machine/ins8154.h
+++ b/src/devices/machine/ins8154.h
@@ -30,10 +30,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_INS8154_H
+#define MAME_MACHINE_INS8154_H
-#ifndef __INS8154_H__
-#define __INS8154_H__
+#pragma once
@@ -69,11 +69,11 @@ public:
// construction/destruction
ins8154_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_in_a_callback(device_t &device, _Object object) { return downcast<ins8154_device &>(device).m_in_a_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_a_callback(device_t &device, _Object object) { return downcast<ins8154_device &>(device).m_out_a_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_b_callback(device_t &device, _Object object) { return downcast<ins8154_device &>(device).m_in_b_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_b_callback(device_t &device, _Object object) { return downcast<ins8154_device &>(device).m_out_b_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<ins8154_device &>(device).m_out_irq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_a_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_in_a_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_a_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_out_a_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_b_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_in_b_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_b_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_out_b_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<ins8154_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( ins8154_r );
DECLARE_WRITE8_MEMBER( ins8154_w );
@@ -109,6 +109,6 @@ private:
// device type definition
-extern const device_type INS8154;
+DECLARE_DEVICE_TYPE(INS8154, ins8154_device)
-#endif /* __INS8154_H__ */
+#endif // MAME_MACHINE_INS8154_H
diff --git a/src/devices/machine/ins8250.cpp b/src/devices/machine/ins8250.cpp
index 5ebebc9f0b9..8ec7a17a12b 100644
--- a/src/devices/machine/ins8250.cpp
+++ b/src/devices/machine/ins8250.cpp
@@ -87,49 +87,47 @@ History:
#include "emu.h"
#include "machine/ins8250.h"
-const device_type INS8250 = device_creator<ins8250_device>;
-const device_type NS16450 = device_creator<ns16450_device>;
-const device_type NS16550 = device_creator<ns16550_device>;
-const device_type PC16552D = device_creator<pc16552_device>;
-
-ins8250_uart_device::ins8250_uart_device(const machine_config &mconfig, device_type type, const char* name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
- device_serial_interface(mconfig, *this),
- m_out_tx_cb(*this),
- m_out_dtr_cb(*this),
- m_out_rts_cb(*this),
- m_out_int_cb(*this),
- m_out_out1_cb(*this),
- m_out_out2_cb(*this),
- m_rxd(1),
- m_dcd(1),
- m_dsr(1),
- m_ri(1),
- m_cts(1)
+DEFINE_DEVICE_TYPE(INS8250, ins8250_device, "ins8250", "National Semiconductor INS8250 UART")
+DEFINE_DEVICE_TYPE(NS16450, ns16450_device, "ns16450", "National Semiconductor NS16450 UART")
+DEFINE_DEVICE_TYPE(NS16550, ns16550_device, "ns16550", "National Semiconductor NS16550 UART")
+DEFINE_DEVICE_TYPE(PC16552D, pc16552_device, "pc16552d", "National Semiconductor PC16552D UART")
+
+ins8250_uart_device::ins8250_uart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, dev_type device_type)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_serial_interface(mconfig, *this)
+ , m_device_type(device_type)
+ , m_out_tx_cb(*this)
+ , m_out_dtr_cb(*this)
+ , m_out_rts_cb(*this)
+ , m_out_int_cb(*this)
+ , m_out_out1_cb(*this)
+ , m_out_out2_cb(*this)
+ , m_rxd(1)
+ , m_dcd(1)
+ , m_dsr(1)
+ , m_ri(1)
+ , m_cts(1)
{
m_regs.ier = 0;
}
ins8250_device::ins8250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ins8250_uart_device(mconfig, INS8250, "National Semiconductor INS8250", tag, owner, clock, "ins8250")
+ : ins8250_uart_device(mconfig, INS8250, tag, owner, clock, dev_type::INS8250)
{
- m_device_type = TYPE_INS8250;
}
ns16450_device::ns16450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ins8250_uart_device(mconfig, NS16450, "National Semiconductor NS16450", tag, owner, clock, "ns16450")
+ : ins8250_uart_device(mconfig, NS16450, tag, owner, clock, dev_type::NS16450)
{
- m_device_type = TYPE_NS16450;
}
ns16550_device::ns16550_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ins8250_uart_device(mconfig, NS16550, "National Semiconductor NS16550", tag, owner, clock, "ns16550")
+ : ins8250_uart_device(mconfig, NS16550, tag, owner, clock, dev_type::NS16550)
{
- m_device_type = TYPE_NS16550;
}
-pc16552_device::pc16552_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PC16552D, "National Semiconductor PC16552D", tag, owner, clock, "pc16552d", __FILE__)
+pc16552_device::pc16552_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, PC16552D, tag, owner, clock)
{
}
@@ -221,7 +219,7 @@ WRITE8_MEMBER( ins8250_uart_device::ins8250_w )
{
m_regs.thr = data;
m_regs.lsr &= ~0x20;
- if((m_device_type >= TYPE_NS16550) && (m_regs.fcr & 1))
+ if((m_device_type >= dev_type::NS16550) && (m_regs.fcr & 1))
push_tx(data);
clear_int(COM_INT_PENDING_TRANSMITTER_HOLDING_REGISTER_EMPTY);
if(m_regs.lsr & 0x40)
@@ -356,7 +354,7 @@ READ8_MEMBER( ins8250_uart_device::ins8250_r )
data = (m_regs.dl & 0xff);
else
{
- if((m_device_type >= TYPE_NS16550) && (m_regs.fcr & 1))
+ if((m_device_type >= dev_type::NS16550) && (m_regs.fcr & 1))
m_regs.rbr = pop_rx();
else
{
diff --git a/src/devices/machine/ins8250.h b/src/devices/machine/ins8250.h
index 4682412b19d..f10293a75f4 100644
--- a/src/devices/machine/ins8250.h
+++ b/src/devices/machine/ins8250.h
@@ -6,8 +6,10 @@
**********************************************************************/
-#ifndef __INS8250_H_
-#define __INS8250_H_
+#ifndef MAME_MACHINE_INS8250_H
+#define MAME_MACHINE_INS8250_H
+
+#pragma once
/***************************************************************************
@@ -18,14 +20,12 @@ class ins8250_uart_device : public device_t,
public device_serial_interface
{
public:
- ins8250_uart_device(const machine_config &mconfig, device_type type, const char* name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
-
- template<class _Object> static devcb_base &set_out_tx_callback(device_t &device, _Object object) { return downcast<ins8250_uart_device &>(device).m_out_tx_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtr_callback(device_t &device, _Object object) { return downcast<ins8250_uart_device &>(device).m_out_dtr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rts_callback(device_t &device, _Object object) { return downcast<ins8250_uart_device &>(device).m_out_rts_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<ins8250_uart_device &>(device).m_out_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_out1_callback(device_t &device, _Object object) { return downcast<ins8250_uart_device &>(device).m_out_out1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_out2_callback(device_t &device, _Object object) { return downcast<ins8250_uart_device &>(device).m_out_out2_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_tx_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_out1_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_out1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_out2_callback(device_t &device, Object &&cb) { return downcast<ins8250_uart_device &>(device).m_out_out2_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( ins8250_w );
DECLARE_READ8_MEMBER( ins8250_r );
@@ -36,6 +36,16 @@ public:
DECLARE_WRITE_LINE_MEMBER( rx_w );
protected:
+ enum class dev_type {
+ INS8250,
+ INS8250A,
+ NS16450,
+ NS16550,
+ NS16550A
+ };
+
+ ins8250_uart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, dev_type device_type);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void rcv_complete() override;
@@ -43,21 +53,14 @@ protected:
virtual void tra_callback() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual void set_fcr(uint8_t data) {}
- virtual void push_tx(uint8_t data) {}
+ virtual void set_fcr(uint8_t data) { }
+ virtual void push_tx(uint8_t data) { }
virtual uint8_t pop_rx() { return 0; }
void trigger_int(int flag);
void clear_int(int flag);
- enum {
- TYPE_INS8250 = 0,
- TYPE_INS8250A,
- TYPE_NS16450,
- TYPE_NS16550,
- TYPE_NS16550A
- };
- int m_device_type;
+ const dev_type m_device_type;
struct {
uint8_t thr; /* 0 -W transmitter holding register */
uint8_t rbr; /* 0 R- receiver buffer register */
@@ -143,10 +146,11 @@ private:
ns16550_device *m_chan1;
};
-extern const device_type PC16552D;
-extern const device_type INS8250;
-extern const device_type NS16450;
-extern const device_type NS16550;
+DECLARE_DEVICE_TYPE(PC16552D, pc16552_device)
+DECLARE_DEVICE_TYPE(INS8250, ins8250_device)
+DECLARE_DEVICE_TYPE(NS16450, ns16450_device)
+DECLARE_DEVICE_TYPE(NS16550, ns16550_device)
+
/***************************************************************************
DEVICE CONFIGURATION MACROS
@@ -170,4 +174,4 @@ extern const device_type NS16550;
#define MCFG_INS8250_OUT_OUT2_CB(_devcb) \
devcb = &ins8250_uart_device::set_out_out2_callback(*device, DEVCB_##_devcb);
-#endif
+#endif // MAME_MACHINE_INS8250_H
diff --git a/src/devices/machine/intelfsh.cpp b/src/devices/machine/intelfsh.cpp
index 959c1591883..83e88b42dd7 100644
--- a/src/devices/machine/intelfsh.cpp
+++ b/src/devices/machine/intelfsh.cpp
@@ -78,40 +78,40 @@ enum
//**************************************************************************
// device type definition
-const device_type INTEL_28F016S5 = device_creator<intel_28f016s5_device>;
-const device_type SHARP_LH28F016S = device_creator<sharp_lh28f016s_device>;
-const device_type SHARP_LH28F016S_16BIT = device_creator<sharp_lh28f016s_16bit_device>;
-const device_type ATMEL_29C010 = device_creator<atmel_29c010_device>;
-const device_type AMD_29F010 = device_creator<amd_29f010_device>;
-const device_type AMD_29F040 = device_creator<amd_29f040_device>;
-const device_type AMD_29F080 = device_creator<amd_29f080_device>;
-const device_type AMD_29F400T = device_creator<amd_29f400t_device>;
-const device_type AMD_29F800T = device_creator<amd_29f800t_device>;
-const device_type AMD_29LV200T = device_creator<amd_29lv200t_device>;
-const device_type FUJITSU_29F160T = device_creator<fujitsu_29f160t_device>;
-const device_type FUJITSU_29F016A = device_creator<fujitsu_29f016a_device>;
-const device_type FUJITSU_29DL16X = device_creator<fujitsu_29dl16x_device>;
-const device_type INTEL_E28F400B = device_creator<intel_e28f400b_device>;
-const device_type MACRONIX_29L001MC = device_creator<macronix_29l001mc_device>;
-const device_type MACRONIX_29LV160TMC = device_creator<macronix_29lv160tmc_device>;
-const device_type TMS_29F040 = device_creator<tms_29f040_device>;
-
-const device_type PANASONIC_MN63F805MNP = device_creator<panasonic_mn63f805mnp_device>;
-const device_type SANYO_LE26FV10N1TS = device_creator<sanyo_le26fv10n1ts_device>;
-const device_type SST_28SF040 = device_creator<sst_28sf040_device>;
-const device_type SST_39VF020 = device_creator<sst_39vf020_device>;
-
-const device_type SHARP_LH28F400 = device_creator<sharp_lh28f400_device>;
-const device_type INTEL_E28F008SA = device_creator<intel_e28f008sa_device>;
-const device_type INTEL_TE28F160 = device_creator<intel_te28f160_device>;
-const device_type INTEL_TE28F320 = device_creator<intel_te28f320_device>;
-const device_type SHARP_UNK128MBIT = device_creator<sharp_unk128mbit_device>;
-const device_type INTEL_28F320J3D = device_creator<intel_28f320j3d_device>;
-const device_type INTEL_28F320J5 = device_creator<intel_28f320j5_device>;
-
-const device_type SST_39VF400A = device_creator<sst_39vf400a_device>;
-
-const device_type ATMEL_49F4096 = device_creator<atmel_49f4096_device>;
+DEFINE_DEVICE_TYPE(INTEL_28F016S5, intel_28f016s5_device, "intel_28f016s5", "Intel 28F016S5 Flash")
+DEFINE_DEVICE_TYPE(SHARP_LH28F016S, sharp_lh28f016s_device, "sharp_lh28f016s", "Sharp LH28F016S Flash")
+DEFINE_DEVICE_TYPE(SHARP_LH28F016S_16BIT, sharp_lh28f016s_16bit_device, "sharp_lh28f016s_16bit", "Sharp LH28F016S Flash (16-bit)")
+DEFINE_DEVICE_TYPE(ATMEL_29C010, atmel_29c010_device, "atmel_29c010", "Atmel 29C010 Flash")
+DEFINE_DEVICE_TYPE(AMD_29F010, amd_29f010_device, "amd_29f010", "AMD 29F010 Flash")
+DEFINE_DEVICE_TYPE(AMD_29F040, amd_29f040_device, "amd_29f040", "AMD 29F040 Flash")
+DEFINE_DEVICE_TYPE(AMD_29F080, amd_29f080_device, "amd_29f080", "AMD 29F080 Flash")
+DEFINE_DEVICE_TYPE(AMD_29F400T, amd_29f400t_device, "amd_29f400t", "AMD 29F400T Flash")
+DEFINE_DEVICE_TYPE(AMD_29F800T, amd_29f800t_device, "amd_29f800t", "AMD 29F800T Flash")
+DEFINE_DEVICE_TYPE(AMD_29LV200T, amd_29lv200t_device, "amd_29lv200t", "AMD 29LV200T Flash")
+DEFINE_DEVICE_TYPE(FUJITSU_29F160T, fujitsu_29f160t_device, "fujitsu_29f160t", "Fujitsu 29F160T Flash")
+DEFINE_DEVICE_TYPE(FUJITSU_29F016A, fujitsu_29f016a_device, "fujitsu_29f016a", "Fujitsu 29F016A Flash")
+DEFINE_DEVICE_TYPE(FUJITSU_29DL16X, fujitsu_29dl16x_device, "fujitsu_29dl16x", "Fujitsu 29DL16X Flash")
+DEFINE_DEVICE_TYPE(INTEL_E28F400B, intel_e28f400b_device, "intel_e28f400b", "Intel E28F400B Flash")
+DEFINE_DEVICE_TYPE(MACRONIX_29L001MC, macronix_29l001mc_device, "macronix_29l001mc", "Macronix 29L001MC Flash")
+DEFINE_DEVICE_TYPE(MACRONIX_29LV160TMC, macronix_29lv160tmc_device, "macronix_29lv160tmc", "Macronix 29LV160TMC Flash")
+DEFINE_DEVICE_TYPE(TMS_29F040, tms_29f040_device, "tms_29f040", "Texas Instruments 29F040 Flash")
+
+DEFINE_DEVICE_TYPE(PANASONIC_MN63F805MNP, panasonic_mn63f805mnp_device, "panasonic_mn63f805mnp", "Panasonic MN63F805MNP Flash")
+DEFINE_DEVICE_TYPE(SANYO_LE26FV10N1TS, sanyo_le26fv10n1ts_device, "sanyo_le26fv10n1ts", "Sanyo LE26FV10N1TS Flash")
+DEFINE_DEVICE_TYPE(SST_28SF040, sst_28sf040_device, "sst_28sf040", "SST 28SF040 Flash")
+DEFINE_DEVICE_TYPE(SST_39VF020, sst_39vf020_device, "sst_39vf020", "SST 39VF020 Flash")
+
+DEFINE_DEVICE_TYPE(SHARP_LH28F400, sharp_lh28f400_device, "sharp_lh28f400", "Sharp LH28F400 Flash")
+DEFINE_DEVICE_TYPE(INTEL_E28F008SA, intel_e28f008sa_device, "intel_e28f008sa", "Intel E28F008SA Flash")
+DEFINE_DEVICE_TYPE(INTEL_TE28F160, intel_te28f160_device, "intel_te28f160", "Intel TE28F160 Flash")
+DEFINE_DEVICE_TYPE(INTEL_TE28F320, intel_te28f320_device, "intel_te28f320", "Intel TE28F320 Flash")
+DEFINE_DEVICE_TYPE(SHARP_UNK128MBIT, sharp_unk128mbit_device, "sharp_unk128mbit", "Sharp Unknown 128Mbit Flash")
+DEFINE_DEVICE_TYPE(INTEL_28F320J3D, intel_28f320j3d_device, "intel_28f320j3d", "Intel 28F320J3D Flash")
+DEFINE_DEVICE_TYPE(INTEL_28F320J5, intel_28f320j5_device, "intel_28f320j5", "Intel 28F320J5 Flash")
+
+DEFINE_DEVICE_TYPE(SST_39VF400A, sst_39vf400a_device, "atmel_49f4096", "Atmel AT49F4096 Flash")
+
+DEFINE_DEVICE_TYPE(ATMEL_49F4096, atmel_49f4096_device, "sst_39vf400a", "SST 39VF400A Flash")
//**************************************************************************
@@ -122,8 +122,8 @@ const device_type ATMEL_49F4096 = device_creator<atmel_49f4096_device>;
// intelfsh_device - constructor
//-------------------------------------------------
-intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock),
device_nvram_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
m_type(variant),
@@ -341,104 +341,104 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
break;
}
-intelfsh8_device::intelfsh8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : intelfsh_device(mconfig, type, name, tag, owner, clock, variant, shortname, source) { }
+intelfsh8_device::intelfsh8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : intelfsh_device(mconfig, type, tag, owner, clock, variant) { }
-intelfsh16_device::intelfsh16_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : intelfsh_device(mconfig, type, name, tag, owner, clock, variant, shortname, source) { }
+intelfsh16_device::intelfsh16_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : intelfsh_device(mconfig, type, tag, owner, clock, variant) { }
intel_28f016s5_device::intel_28f016s5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, INTEL_28F016S5, "Intel 28F016S5 Flash", tag, owner, clock, FLASH_INTEL_28F016S5, "intel_28f016s5", __FILE__) { }
+ : intelfsh8_device(mconfig, INTEL_28F016S5, tag, owner, clock, FLASH_INTEL_28F016S5) { }
fujitsu_29f160t_device::fujitsu_29f160t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, FUJITSU_29F160T, "Fujitsu 29F160 Flash", tag, owner, clock, FLASH_FUJITSU_29F160T, "fujitsu_29f160t", __FILE__) { }
+ : intelfsh8_device(mconfig, FUJITSU_29F160T, tag, owner, clock, FLASH_FUJITSU_29F160T) { }
fujitsu_29f016a_device::fujitsu_29f016a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, FUJITSU_29F016A, "Fujitsu 29F016A Flash", tag, owner, clock, FLASH_FUJITSU_29F016A, "fujitsu_29f016a", __FILE__) { }
+ : intelfsh8_device(mconfig, FUJITSU_29F016A, tag, owner, clock, FLASH_FUJITSU_29F016A) { }
fujitsu_29dl16x_device::fujitsu_29dl16x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, FUJITSU_29DL16X, "Fujitsu 29DL16X Flash", tag, owner, clock, FLASH_FUJITSU_29DL16X, "fujitsu_29dl16x", __FILE__) { }
+ : intelfsh8_device(mconfig, FUJITSU_29DL16X, tag, owner, clock, FLASH_FUJITSU_29DL16X) { }
sharp_lh28f016s_device::sharp_lh28f016s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, SHARP_LH28F016S, "Sharp LH28F016S Flash", tag, owner, clock, FLASH_SHARP_LH28F016S, "sharp_lh28f016s", __FILE__) { }
+ : intelfsh8_device(mconfig, SHARP_LH28F016S, tag, owner, clock, FLASH_SHARP_LH28F016S) { }
sharp_lh28f016s_16bit_device::sharp_lh28f016s_16bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh16_device(mconfig, SHARP_LH28F016S_16BIT, "Sharp LH28F016S Flash (16-bit)", tag, owner, clock, FLASH_SHARP_LH28F016S_16BIT, "sharp_lh28f016s_16bit", __FILE__) { }
+ : intelfsh16_device(mconfig, SHARP_LH28F016S_16BIT, tag, owner, clock, FLASH_SHARP_LH28F016S_16BIT) { }
atmel_29c010_device::atmel_29c010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, ATMEL_29C010, "Atmel 29C010 Flash", tag, owner, clock, FLASH_ATMEL_29C010, "atmel_29c010", __FILE__) { }
+ : intelfsh8_device(mconfig, ATMEL_29C010, tag, owner, clock, FLASH_ATMEL_29C010) { }
atmel_49f4096_device::atmel_49f4096_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh16_device(mconfig, ATMEL_49F4096, "Atmel AT49F4096 Flash", tag, owner, clock, FLASH_ATMEL_49F4096, "atmel_49f4096", __FILE__) { }
+ : intelfsh16_device(mconfig, ATMEL_49F4096, tag, owner, clock, FLASH_ATMEL_49F4096) { }
amd_29f010_device::amd_29f010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, AMD_29F010, "AMD 29F010 Flash", tag, owner, clock, FLASH_AMD_29F010, "amd_29f010", __FILE__) { }
+ : intelfsh8_device(mconfig, AMD_29F010, tag, owner, clock, FLASH_AMD_29F010) { }
amd_29f040_device::amd_29f040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, AMD_29F040, "AMD 29F040 Flash", tag, owner, clock, FLASH_AMD_29F040, "amd_29f040", __FILE__) { }
+ : intelfsh8_device(mconfig, AMD_29F040, tag, owner, clock, FLASH_AMD_29F040) { }
amd_29f080_device::amd_29f080_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, AMD_29F080, "AMD 29F080 Flash", tag, owner, clock, FLASH_AMD_29F080, "amd_29f080", __FILE__) { }
+ : intelfsh8_device(mconfig, AMD_29F080, tag, owner, clock, FLASH_AMD_29F080) { }
amd_29f400t_device::amd_29f400t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, AMD_29F400T, "AMD 29F400 Flash", tag, owner, clock, FLASH_AMD_29F400T, "amd_29f400t", __FILE__) { }
+ : intelfsh8_device(mconfig, AMD_29F400T, tag, owner, clock, FLASH_AMD_29F400T) { }
amd_29f800t_device::amd_29f800t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, AMD_29F800T, "AMD 29F800 Flash", tag, owner, clock, FLASH_AMD_29F800T, "amd_29f800t", __FILE__) { }
+ : intelfsh8_device(mconfig, AMD_29F800T, tag, owner, clock, FLASH_AMD_29F800T) { }
amd_29lv200t_device::amd_29lv200t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, AMD_29LV200T, "AMD 29LV200T Flash", tag, owner, clock, FLASH_AMD_29LV200T, "amd_29lv200t", __FILE__) { }
+ : intelfsh8_device(mconfig, AMD_29LV200T, tag, owner, clock, FLASH_AMD_29LV200T) { }
intel_e28f008sa_device::intel_e28f008sa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, INTEL_E28F008SA, "Intel E28F008SA Flash", tag, owner, clock, FLASH_INTEL_E28F008SA, "intel_e28f008sa", __FILE__) { }
+ : intelfsh8_device(mconfig, INTEL_E28F008SA, tag, owner, clock, FLASH_INTEL_E28F008SA) { }
macronix_29l001mc_device::macronix_29l001mc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, MACRONIX_29L001MC, "Macronix 29L001MC Flash", tag, owner, clock, FLASH_MACRONIX_29L001MC, "macronix_29l001mc", __FILE__) { }
+ : intelfsh8_device(mconfig, MACRONIX_29L001MC, tag, owner, clock, FLASH_MACRONIX_29L001MC) { }
macronix_29lv160tmc_device::macronix_29lv160tmc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, MACRONIX_29LV160TMC, "Macronix 29LV160TMC Flash", tag, owner, clock, FLASH_MACRONIX_29LV160TMC, "macronix_29lv160tmc", __FILE__) { }
+ : intelfsh8_device(mconfig, MACRONIX_29LV160TMC, tag, owner, clock, FLASH_MACRONIX_29LV160TMC) { }
panasonic_mn63f805mnp_device::panasonic_mn63f805mnp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, PANASONIC_MN63F805MNP, "Panasonic MN63F805MNP Flash", tag, owner, clock, FLASH_PANASONIC_MN63F805MNP, "panasonic_mn63f805mnp", __FILE__) { }
+ : intelfsh8_device(mconfig, PANASONIC_MN63F805MNP, tag, owner, clock, FLASH_PANASONIC_MN63F805MNP) { }
sanyo_le26fv10n1ts_device::sanyo_le26fv10n1ts_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, SANYO_LE26FV10N1TS, "Sanyo LE26FV10N1TS Flash", tag, owner, clock, FLASH_SANYO_LE26FV10N1TS, "sanyo_le26fv10n1ts", __FILE__) { }
+ : intelfsh8_device(mconfig, SANYO_LE26FV10N1TS, tag, owner, clock, FLASH_SANYO_LE26FV10N1TS) { }
sst_28sf040_device::sst_28sf040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, SST_28SF040, "SST 28SF040 Flash", tag, owner, clock, FLASH_SST_28SF040, "sst_28sf040", __FILE__) { }
+ : intelfsh8_device(mconfig, SST_28SF040, tag, owner, clock, FLASH_SST_28SF040) { }
sst_39vf020_device::sst_39vf020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, SST_39VF020, "SST 39VF020 Flash", tag, owner, clock, FLASH_SST_39VF020, "sst_39vf020", __FILE__) { }
+ : intelfsh8_device(mconfig, SST_39VF020, tag, owner, clock, FLASH_SST_39VF020) { }
sharp_lh28f400_device::sharp_lh28f400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh16_device(mconfig, SHARP_LH28F400, "Sharp LH28F400 Flash", tag, owner, clock, FLASH_SHARP_LH28F400, "sharp_lh28f400", __FILE__) { }
+ : intelfsh16_device(mconfig, SHARP_LH28F400, tag, owner, clock, FLASH_SHARP_LH28F400) { }
intel_te28f160_device::intel_te28f160_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh16_device(mconfig, INTEL_TE28F160, "Intel TE28F160 Flash", tag, owner, clock, FLASH_INTEL_TE28F160, "intel_te28f160", __FILE__) { }
+ : intelfsh16_device(mconfig, INTEL_TE28F160, tag, owner, clock, FLASH_INTEL_TE28F160) { }
intel_te28f320_device::intel_te28f320_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh16_device(mconfig, INTEL_TE28F320, "Intel TE28F320 Flash", tag, owner, clock, FLASH_INTEL_TE28F320, "intel_te28f320", __FILE__) { }
+ : intelfsh16_device(mconfig, INTEL_TE28F320, tag, owner, clock, FLASH_INTEL_TE28F320) { }
intel_e28f400b_device::intel_e28f400b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh16_device(mconfig, INTEL_E28F400B, "Intel E28F400B Flash", tag, owner, clock, FLASH_INTEL_E28F400B, "intel_e28f400b", __FILE__) { }
+ : intelfsh16_device(mconfig, INTEL_E28F400B, tag, owner, clock, FLASH_INTEL_E28F400B) { }
sharp_unk128mbit_device::sharp_unk128mbit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh16_device(mconfig, SHARP_UNK128MBIT, "Sharp Unknown 128Mbit Flash", tag, owner, clock, FLASH_SHARP_UNK128MBIT, "sharp_unk128mbit", __FILE__) { }
+ : intelfsh16_device(mconfig, SHARP_UNK128MBIT, tag, owner, clock, FLASH_SHARP_UNK128MBIT) { }
intel_28f320j3d_device::intel_28f320j3d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh16_device(mconfig, INTEL_28F320J3D, "Intel 28F320J3D Flash", tag, owner, clock, FLASH_INTEL_28F320J3D, "intel_28f320j3d", __FILE__) { }
+ : intelfsh16_device(mconfig, INTEL_28F320J3D, tag, owner, clock, FLASH_INTEL_28F320J3D) { }
intel_28f320j5_device::intel_28f320j5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh16_device(mconfig, INTEL_28F320J5, "Intel 28F320J3D_a Flash", tag, owner, clock, FLASH_INTEL_28F320J5, "intel_28f320j5", __FILE__) { }
+ : intelfsh16_device(mconfig, INTEL_28F320J5, tag, owner, clock, FLASH_INTEL_28F320J5) { }
sst_39vf400a_device::sst_39vf400a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh16_device(mconfig, SST_39VF400A, "SST 39VF400A Flash", tag, owner, clock, FLASH_SST_39VF400A, "sst_39vf400a", __FILE__) { }
+ : intelfsh16_device(mconfig, SST_39VF400A, tag, owner, clock, FLASH_SST_39VF400A) { }
tms_29f040_device::tms_29f040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : intelfsh8_device(mconfig, TMS_29F040, "Texas Instruments 29F040 Flash", tag, owner, clock, FLASH_TMS_29F040, "tms_29f040", __FILE__) { }
+ : intelfsh8_device(mconfig, TMS_29F040, tag, owner, clock, FLASH_TMS_29F040) { }
//-------------------------------------------------
// device_start - device-specific startup
diff --git a/src/devices/machine/intelfsh.h b/src/devices/machine/intelfsh.h
index ee47240b27a..f4e143a8450 100644
--- a/src/devices/machine/intelfsh.h
+++ b/src/devices/machine/intelfsh.h
@@ -4,8 +4,10 @@
Intel Flash ROM emulation
*/
-#ifndef _INTELFLASH_H_
-#define _INTELFLASH_H_
+#ifndef MAME_MACHINE_INTELFSH_H
+#define MAME_MACHINE_INTELFSH_H
+
+#pragma once
//**************************************************************************
@@ -156,9 +158,8 @@ public:
protected:
// construction/destruction
- intelfsh_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
+ intelfsh_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -202,10 +203,6 @@ protected:
class intelfsh8_device : public intelfsh_device
{
-protected:
- // construction/destruction
- intelfsh8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
-
public:
// public interface
uint8_t read(offs_t offset) { return read_full(offset); }
@@ -215,6 +212,10 @@ public:
uint8_t read_raw(offs_t offset) { return m_data[offset]; }
void write_raw(offs_t offset, uint8_t data) { m_data[offset] = data; }
+
+protected:
+ // construction/destruction
+ intelfsh8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
};
@@ -222,10 +223,6 @@ public:
class intelfsh16_device : public intelfsh_device
{
-protected:
- // construction/destruction
- intelfsh16_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
-
public:
// public interface
uint16_t read(offs_t offset) { return read_full(offset); }
@@ -235,6 +232,10 @@ public:
uint16_t read_raw(offs_t offset) { return m_data[offset*2] | (m_data[offset*2+1] << 8); }
void write_raw(offs_t offset, uint16_t data) { m_data[offset*2] = data; m_data[offset*2+1] = data >> 8; }
+
+protected:
+ // construction/destruction
+ intelfsh16_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
};
@@ -424,37 +425,37 @@ public:
// device type definition
-extern const device_type INTEL_28F016S5;
-extern const device_type SHARP_LH28F016S;
-extern const device_type SHARP_LH28F016S_16BIT;
-extern const device_type ATMEL_29C010;
-extern const device_type AMD_29F010;
-extern const device_type AMD_29F040;
-extern const device_type AMD_29F080;
-extern const device_type AMD_29F400T;
-extern const device_type AMD_29F800T;
-extern const device_type AMD_29LV200T;
-extern const device_type FUJITSU_29F160T;
-extern const device_type FUJITSU_29F016A;
-extern const device_type FUJITSU_29DL16X;
-extern const device_type INTEL_E28F400B;
-extern const device_type MACRONIX_29L001MC;
-extern const device_type MACRONIX_29LV160TMC;
-extern const device_type TMS_29F040;
-
-extern const device_type PANASONIC_MN63F805MNP;
-extern const device_type SANYO_LE26FV10N1TS;
-extern const device_type SST_28SF040;
-extern const device_type SST_39VF020;
-
-extern const device_type SHARP_LH28F400;
-extern const device_type INTEL_E28F008SA;
-extern const device_type INTEL_TE28F160;
-extern const device_type INTEL_TE28F320;
-extern const device_type SHARP_UNK128MBIT;
-extern const device_type INTEL_28F320J3D;
-extern const device_type INTEL_28F320J5;
-extern const device_type SST_39VF400A;
-extern const device_type ATMEL_49F4096;
-
-#endif
+DECLARE_DEVICE_TYPE(INTEL_28F016S5, intel_28f016s5_device)
+DECLARE_DEVICE_TYPE(SHARP_LH28F016S, sharp_lh28f016s_device)
+DECLARE_DEVICE_TYPE(SHARP_LH28F016S_16BIT, sharp_lh28f016s_16bit_device)
+DECLARE_DEVICE_TYPE(ATMEL_29C010, atmel_29c010_device)
+DECLARE_DEVICE_TYPE(AMD_29F010, amd_29f010_device)
+DECLARE_DEVICE_TYPE(AMD_29F040, amd_29f040_device)
+DECLARE_DEVICE_TYPE(AMD_29F080, amd_29f080_device)
+DECLARE_DEVICE_TYPE(AMD_29F400T, amd_29f400t_device)
+DECLARE_DEVICE_TYPE(AMD_29F800T, amd_29f800t_device)
+DECLARE_DEVICE_TYPE(AMD_29LV200T, amd_29lv200t_device)
+DECLARE_DEVICE_TYPE(FUJITSU_29F160T, fujitsu_29f160t_device)
+DECLARE_DEVICE_TYPE(FUJITSU_29F016A, fujitsu_29f016a_device)
+DECLARE_DEVICE_TYPE(FUJITSU_29DL16X, fujitsu_29dl16x_device)
+DECLARE_DEVICE_TYPE(INTEL_E28F400B, intel_e28f400b_device)
+DECLARE_DEVICE_TYPE(MACRONIX_29L001MC, macronix_29l001mc)
+DECLARE_DEVICE_TYPE(MACRONIX_29LV160TMC, macronix_29lv160tmc_device)
+DECLARE_DEVICE_TYPE(TMS_29F040, tms_29f040_device)
+
+DECLARE_DEVICE_TYPE(PANASONIC_MN63F805MNP, panasonic_mn63f805mnp_device)
+DECLARE_DEVICE_TYPE(SANYO_LE26FV10N1TS, sanyo_le26fv10n1ts_device)
+DECLARE_DEVICE_TYPE(SST_28SF040, sst_28sf040_device)
+DECLARE_DEVICE_TYPE(SST_39VF020, sst_39vf020_device)
+
+DECLARE_DEVICE_TYPE(SHARP_LH28F400, sharp_lh28f400_device)
+DECLARE_DEVICE_TYPE(INTEL_E28F008SA, intel_e28f008sa_device)
+DECLARE_DEVICE_TYPE(INTEL_TE28F160, intel_te28f160_device)
+DECLARE_DEVICE_TYPE(INTEL_TE28F320, intel_te28f320_device)
+DECLARE_DEVICE_TYPE(SHARP_UNK128MBIT, sharp_unk128mbit_device)
+DECLARE_DEVICE_TYPE(INTEL_28F320J3D, intel_28f320j3d_device)
+DECLARE_DEVICE_TYPE(INTEL_28F320J5, intel_28f320j5_device)
+DECLARE_DEVICE_TYPE(SST_39VF400A, sst_39vf400a_device)
+DECLARE_DEVICE_TYPE(ATMEL_49F4096, atmel_49f4096_device)
+
+#endif // MAME_MACHINE_INTELFSH_H
diff --git a/src/devices/machine/jvsdev.cpp b/src/devices/machine/jvsdev.cpp
index 4aed4127180..f248e40d71d 100644
--- a/src/devices/machine/jvsdev.cpp
+++ b/src/devices/machine/jvsdev.cpp
@@ -10,8 +10,8 @@ void jvs_device::static_set_jvs_host_tag(device_t &device, const char *jvs_host_
jvsdev.jvs_host_tag = jvs_host_tag;
}
-jvs_device::jvs_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source), jvs_outputs(0), jvs_address(0), jvs_reset_counter(0)
+jvs_device::jvs_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), jvs_outputs(0), jvs_address(0), jvs_reset_counter(0)
{
jvs_host_tag = nullptr;
next_device = nullptr;
diff --git a/src/devices/machine/jvsdev.h b/src/devices/machine/jvsdev.h
index bb5f7a92f7b..6fc47cf739a 100644
--- a/src/devices/machine/jvsdev.h
+++ b/src/devices/machine/jvsdev.h
@@ -1,18 +1,20 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef __JVSDEV_H__
-#define __JVSDEV_H__
+#ifndef MAME_MACHINE_JVSDEV_H
+#define MAME_MACHINE_JVSDEV_H
+
+#pragma once
#define MCFG_JVS_DEVICE_ADD(_tag, _type, _host) \
MCFG_DEVICE_ADD(_tag, _type, 0) \
jvs_device::static_set_jvs_host_tag(*device, _host);
+
class jvs_host;
class jvs_device : public device_t
{
public:
- jvs_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
static void static_set_jvs_host_tag(device_t &device, const char *jvs_host_tag);
void chain(jvs_device *dev);
@@ -24,6 +26,8 @@ protected:
void handle_output(ioport_port *port, uint8_t id, uint8_t val);
+ jvs_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -50,4 +54,4 @@ private:
int handle_message(const uint8_t *send_buffer, uint32_t send_size, uint8_t *&recv_buffer);
};
-#endif
+#endif // MAME_MACHINE_JVSDEV_H
diff --git a/src/devices/machine/jvshost.cpp b/src/devices/machine/jvshost.cpp
index 96cf564c646..1f720b4fa00 100644
--- a/src/devices/machine/jvshost.cpp
+++ b/src/devices/machine/jvshost.cpp
@@ -29,8 +29,8 @@ void jvs_host::device_reset()
memset(recv_buffer, 0, sizeof(recv_buffer));
}
-jvs_host::jvs_host(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source), send_size(0), recv_size(0), recv_is_encoded(false)
+jvs_host::jvs_host(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock), send_size(0), recv_size(0), recv_is_encoded(false)
{
first_device = nullptr;
}
diff --git a/src/devices/machine/jvshost.h b/src/devices/machine/jvshost.h
index b8a0c049ddd..c0f8429a1a3 100644
--- a/src/devices/machine/jvshost.h
+++ b/src/devices/machine/jvshost.h
@@ -1,23 +1,24 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef __JVSHOST_H__
-#define __JVSHOST_H__
+#ifndef MAME_MACHINE_JVSHOST_H
+#define MAME_MACHINE_JVSHOST_H
+
+#pragma once
class jvs_device;
class jvs_host : public device_t {
public:
- jvs_host(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
void add_device(jvs_device *dev);
protected:
+ jvs_host(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-
void push(uint8_t val);
void commit_raw();
void commit_encoded();
@@ -43,4 +44,4 @@ private:
void decode(uint8_t *buffer, uint32_t &size);
};
-#endif
+#endif // MAME_MACHINE_JVSHOST_H
diff --git a/src/devices/machine/k033906.cpp b/src/devices/machine/k033906.cpp
index 6e0fc522895..4942e7339f1 100644
--- a/src/devices/machine/k033906.cpp
+++ b/src/devices/machine/k033906.cpp
@@ -15,14 +15,14 @@
//**************************************************************************
// device type definition
-const device_type K033906 = device_creator<k033906_device>;
+DEFINE_DEVICE_TYPE(K033906, k033906_device, "k033906", "K033906 PCI bridge")
//-------------------------------------------------
// k033906_device - constructor
//-------------------------------------------------
k033906_device::k033906_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, K033906, "K033906 PCI bridge", tag, owner, clock, "k033906", __FILE__)
+ : device_t(mconfig, K033906, tag, owner, clock)
, m_reg_set(0)
, m_voodoo(*this, finder_base::DUMMY_TAG)
{
diff --git a/src/devices/machine/k033906.h b/src/devices/machine/k033906.h
index 2b13ad77143..c8dea1471b4 100644
--- a/src/devices/machine/k033906.h
+++ b/src/devices/machine/k033906.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_K033906_H
+#define MAME_MACHINE_K033906_H
-#ifndef __K033906_H__
-#define __K033906_H__
+#pragma once
#include "video/voodoo.h"
@@ -48,7 +48,6 @@ protected:
virtual void device_clock_changed() override { }
private:
-
uint32_t reg_r(int reg);
void reg_w(int reg, uint32_t data);
@@ -64,6 +63,6 @@ private:
// device type definition
-extern const device_type K033906;
+DECLARE_DEVICE_TYPE(K033906, k033906_device)
-#endif /* __K033906_H__ */
+#endif // MAME_MACHINE_K033906_H
diff --git a/src/devices/machine/k053252.cpp b/src/devices/machine/k053252.cpp
index 34bfd769c98..f4ef1d3280d 100644
--- a/src/devices/machine/k053252.cpp
+++ b/src/devices/machine/k053252.cpp
@@ -63,10 +63,10 @@ TODO:
#include "k053252.h"
-const device_type K053252 = device_creator<k053252_device>;
+DEFINE_DEVICE_TYPE(K053252, k053252_device, "k053252", "K053252 Timing/Interrupt Controller")
k053252_device::k053252_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, K053252, "K053252 Timing/Interrupt", tag, owner, clock, "k053252", __FILE__)
+ : device_t(mconfig, K053252, tag, owner, clock)
, device_video_interface(mconfig, *this)
, m_int1_en_cb(*this)
, m_int2_en_cb(*this)
diff --git a/src/devices/machine/k053252.h b/src/devices/machine/k053252.h
index fe60980b395..de2426114f6 100644
--- a/src/devices/machine/k053252.h
+++ b/src/devices/machine/k053252.h
@@ -2,8 +2,8 @@
// copyright-holders:Angelo Salese
/** Konami 053252 **/
/* CRT and interrupt control unit */
-#ifndef MAME_DEVICES_MACHINE_K053252_H
-#define MAME_DEVICES_MACHINE_K053252_H
+#ifndef MAME_MACHINE_K053252_H
+#define MAME_MACHINE_K053252_H
#pragma once
@@ -49,10 +49,8 @@ public:
void res_change();
-
static void static_set_slave_screen(device_t &device, const char *tag);
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -76,10 +74,8 @@ protected:
int m_offsy;
optional_device<screen_device> m_slave_screen;
-
};
-extern const device_type K053252;
-
+DECLARE_DEVICE_TYPE(K053252, k053252_device)
-#endif // MAME_DEVICES_MACHINE_K053252_H
+#endif // MAME_MACHINE_K053252_H
diff --git a/src/devices/machine/k054321.cpp b/src/devices/machine/k054321.cpp
index 66b30b03d17..d5a2bc58a7a 100644
--- a/src/devices/machine/k054321.cpp
+++ b/src/devices/machine/k054321.cpp
@@ -35,7 +35,7 @@
#include <math.h>
-const device_type K054321 = device_creator<k054321_device>;
+DEFINE_DEVICE_TYPE(K054321, k054321_device, "k054321", "K054321 Maincpu-Soundcpu interface")
DEVICE_ADDRESS_MAP_START(main_map, 8, k054321_device)
AM_RANGE(0x0, 0x0) AM_WRITE(active_w)
@@ -55,7 +55,7 @@ DEVICE_ADDRESS_MAP_START(sound_map, 8, k054321_device)
ADDRESS_MAP_END
k054321_device::k054321_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, K054321, "K053421 Maincpu-Soundcpu interface", tag, owner, clock, "k054321", __FILE__),
+ : device_t(mconfig, K054321, tag, owner, clock),
m_left(*this, finder_base::DUMMY_TAG),
m_right(*this, finder_base::DUMMY_TAG)
{
diff --git a/src/devices/machine/k054321.h b/src/devices/machine/k054321.h
index aca3974e0ae..04c377781e1 100644
--- a/src/devices/machine/k054321.h
+++ b/src/devices/machine/k054321.h
@@ -1,10 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#pragma once
+#ifndef MAME_MACHINE_K054321_H
+#define MAME_MACHINE_K054321_H
-#ifndef MAME_K054321_H
-#define MAME_K054321_H
+#pragma once
#define MCFG_K054321_ADD(_tag, _left, _right) \
MCFG_DEVICE_ADD(_tag, K054321, 0) \
@@ -49,6 +49,6 @@ private:
void propagate_volume();
};
-extern const device_type K054321;
+DECLARE_DEVICE_TYPE(K054321, k054321_device)
-#endif
+#endif // MAME_MACHINE_K054321_H
diff --git a/src/devices/machine/k056230.cpp b/src/devices/machine/k056230.cpp
index 11d47320f2d..dfbdbc41d69 100644
--- a/src/devices/machine/k056230.cpp
+++ b/src/devices/machine/k056230.cpp
@@ -15,14 +15,14 @@
//**************************************************************************
// device type definition
-const device_type K056230 = device_creator<k056230_device>;
+DEFINE_DEVICE_TYPE(K056230, k056230_device, "k056230", "K056230 LANC")
//-------------------------------------------------
// k056230_device - constructor
//-------------------------------------------------
k056230_device::k056230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, K056230, "K056230 LANC", tag, owner, clock, "k056230", __FILE__)
+ : device_t(mconfig, K056230, tag, owner, clock)
, m_is_thunderh(0)
, m_cpu(*this, finder_base::DUMMY_TAG)
{
diff --git a/src/devices/machine/k056230.h b/src/devices/machine/k056230.h
index b118c5abaae..9a6e4bbd061 100644
--- a/src/devices/machine/k056230.h
+++ b/src/devices/machine/k056230.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_K056230_H
+#define MAME_MACHINE_K056230_H
-#ifndef __K056230_H__
-#define __K056230_H__
+#pragma once
@@ -31,7 +31,7 @@
// ======================> k056230_device
-class k056230_device : public device_t
+class k056230_device : public device_t
{
public:
// construction/destruction
@@ -65,6 +65,6 @@ private:
// device type definition
-extern const device_type K056230;
+DECLARE_DEVICE_TYPE(K056230, k056230_device)
-#endif /* __K056230_H__ */
+#endif // MAME_MACHINE_K056230_H
diff --git a/src/devices/machine/kb3600.cpp b/src/devices/machine/kb3600.cpp
index a3ade5080de..5400d8ac1a8 100644
--- a/src/devices/machine/kb3600.cpp
+++ b/src/devices/machine/kb3600.cpp
@@ -18,13 +18,8 @@
#include "emu.h"
#include "kb3600.h"
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
@@ -33,7 +28,7 @@
//**************************************************************************
// devices
-const device_type AY3600 = device_creator<ay3600_device>;
+DEFINE_DEVICE_TYPE(AY3600, ay3600_device, "ay3600", "AY-5-3600 Keyboard Encoder")
//**************************************************************************
// LIVE DEVICE
@@ -44,7 +39,7 @@ const device_type AY3600 = device_creator<ay3600_device>;
//-------------------------------------------------
ay3600_device::ay3600_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AY3600, "AY-5-3600", tag, owner, clock, "ay3600", __FILE__),
+ : device_t(mconfig, AY3600, tag, owner, clock),
m_read_x0(*this),
m_read_x1(*this),
m_read_x2(*this),
diff --git a/src/devices/machine/kb3600.h b/src/devices/machine/kb3600.h
index 01033b9dfa7..50a4095b516 100644
--- a/src/devices/machine/kb3600.h
+++ b/src/devices/machine/kb3600.h
@@ -51,10 +51,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_KB3600_H
+#define MAME_MACHINE_KB3600_H
-#ifndef __AY3600__
-#define __AY3600__
+#pragma once
@@ -96,7 +96,7 @@
// ======================> ay3600_device
-class ay3600_device : public device_t
+class ay3600_device : public device_t
{
public:
// construction/destruction
@@ -105,23 +105,19 @@ public:
// public interface
uint16_t b_r();
- template<class _Object> static devcb_base &set_x0_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x0.set_callback(rd); }
- template<class _Object> static devcb_base &set_x1_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x1.set_callback(rd); }
- template<class _Object> static devcb_base &set_x2_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x2.set_callback(rd); }
- template<class _Object> static devcb_base &set_x3_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x3.set_callback(rd); }
- template<class _Object> static devcb_base &set_x4_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x4.set_callback(rd); }
- template<class _Object> static devcb_base &set_x5_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x5.set_callback(rd); }
- template<class _Object> static devcb_base &set_x6_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x6.set_callback(rd); }
- template<class _Object> static devcb_base &set_x7_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x7.set_callback(rd); }
- template<class _Object> static devcb_base &set_x8_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x8.set_callback(rd); }
- template<class _Object> static devcb_base &set_shift_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_shift.set_callback(rd); }
- template<class _Object> static devcb_base &set_control_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_control.set_callback(rd); }
- template<class _Object> static devcb_base &set_data_ready_cb(device_t &device, _Object wr) { return downcast<ay3600_device &>(device).m_write_data_ready.set_callback(wr); }
- template<class _Object> static devcb_base &set_ako_cb(device_t &device, _Object wr) { return downcast<ay3600_device &>(device).m_write_ako.set_callback(wr); }
-
- devcb_read16 m_read_x0, m_read_x1, m_read_x2, m_read_x3, m_read_x4, m_read_x5, m_read_x6, m_read_x7, m_read_x8;
- devcb_read_line m_read_shift, m_read_control;
- devcb_write_line m_write_data_ready, m_write_ako;
+ template <class Object> static devcb_base &set_x0_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x0.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_x1_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x1.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_x2_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x2.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_x3_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x3.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_x4_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x4.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_x5_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x5.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_x6_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x6.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_x7_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x7.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_x8_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_x8.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_shift_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_shift.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_control_cb(device_t &device, Object &&rd) { return downcast<ay3600_device &>(device).m_read_control.set_callback(std::forward<Object>(rd)); }
+ template <class Object> static devcb_base &set_data_ready_cb(device_t &device, Object &&wr) { return downcast<ay3600_device &>(device).m_write_data_ready.set_callback(std::forward<Object>(wr)); }
+ template <class Object> static devcb_base &set_ako_cb(device_t &device, Object &&wr) { return downcast<ay3600_device &>(device).m_write_ako.set_callback(std::forward<Object>(wr)); }
protected:
// device-level overrides
@@ -129,8 +125,12 @@ protected:
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ devcb_read16 m_read_x0, m_read_x1, m_read_x2, m_read_x3, m_read_x4, m_read_x5, m_read_x6, m_read_x7, m_read_x8;
+ devcb_read_line m_read_shift, m_read_control;
+ devcb_write_line m_write_data_ready, m_write_ako;
+
private:
- static const int MAX_KEYS_DOWN = 4;
+ static constexpr int MAX_KEYS_DOWN = 4;
int m_b; // output buffer
int m_ako; // any key down
@@ -143,8 +143,6 @@ private:
// device type definition
-extern const device_type AY3600;
-
-
+DECLARE_DEVICE_TYPE(AY3600, ay3600_device)
-#endif
+#endif // MAME_MACHINE_KB3600_H
diff --git a/src/devices/machine/keyboard.cpp b/src/devices/machine/keyboard.cpp
index 2e9fa529424..ef45c8d5580 100644
--- a/src/devices/machine/keyboard.cpp
+++ b/src/devices/machine/keyboard.cpp
@@ -30,7 +30,7 @@ WRITE8_MEMBER( xxx_state::kbd_put )
namespace {
-uint8_t const TRANSLATION_TABLE[][2][4][16] = {
+u8 const TRANSLATION_TABLE[][2][4][16] = {
{
{ // ANSI
{ '`', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 0x08U, 0x7fU, 0x1bU },
@@ -234,7 +234,7 @@ INPUT_PORTS_END
DEVICE TYPE GLOBALS
***************************************************************************/
-device_type const GENERIC_KEYBOARD = device_creator<generic_keyboard_device>;
+DEFINE_DEVICE_TYPE(GENERIC_KEYBOARD, generic_keyboard_device, "generic_keyboard", "Generic Keyboard")
@@ -245,24 +245,21 @@ device_type const GENERIC_KEYBOARD = device_creator<generic_keyboard_device>;
generic_keyboard_device::generic_keyboard_device(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ u32 clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_matrix_keyboard_interface(mconfig, *this, "GENKBD_ROW0", "GENKBD_ROW1", "GENKBD_ROW2", "GENKBD_ROW3")
, m_config(*this, "GENKBD_CFG")
, m_modifiers(*this, "GENKBD_MOD")
, m_last_modifiers(0U)
- , m_keyboard_cb(*this)
+ , m_keyboard_cb()
{
}
-generic_keyboard_device::generic_keyboard_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
- : generic_keyboard_device(mconfig, GENERIC_KEYBOARD, "Generic Keyboard", tag, owner, clock, "generic_keyboard", __FILE__)
+generic_keyboard_device::generic_keyboard_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock)
+ : generic_keyboard_device(mconfig, GENERIC_KEYBOARD, tag, owner, clock)
{
}
@@ -275,7 +272,7 @@ ioport_constructor generic_keyboard_device::device_input_ports() const
void generic_keyboard_device::device_start()
{
- m_keyboard_cb.resolve_safe();
+ m_keyboard_cb.bind_relative_to(*owner());
save_item(NAME(m_last_modifiers));
}
@@ -297,40 +294,40 @@ void generic_keyboard_device::device_timer(emu_timer &timer, device_timer_id id,
}
-void generic_keyboard_device::key_make(uint8_t row, uint8_t column)
+void generic_keyboard_device::key_make(u8 row, u8 column)
{
send_translated((row << 4) | column);
typematic_start(row, column, typematic_delay(), typematic_period());
}
-void generic_keyboard_device::key_repeat(uint8_t row, uint8_t column)
+void generic_keyboard_device::key_repeat(u8 row, u8 column)
{
send_translated((row << 4) | column);
}
-void generic_keyboard_device::send_key(uint8_t code)
+void generic_keyboard_device::send_key(u8 code)
{
- m_keyboard_cb(offs_t(0), code);
+ m_keyboard_cb(code);
}
-bool generic_keyboard_device::translate(uint8_t code, uint8_t &translated) const
+bool generic_keyboard_device::translate(u8 code, u8 &translated) const
{
unsigned const row((code >> 4) & 0x03U);
unsigned const col((code >> 0) & 0x0fU);
unsigned const layout(m_config->read() & 0x0001U);
- uint16_t const modifiers(m_modifiers->read());
+ u16 const modifiers(m_modifiers->read());
bool const shift(bool(modifiers & 0x02U) != (bool(modifiers & 0x04U) && CAPS_TABLE[row][col]));
bool const ctrl(modifiers & 0x01U);
bool const meta(modifiers & 0x08U);
unsigned const map(ctrl ? 2U : shift ? 1U : 0U);
- uint8_t const result(TRANSLATION_TABLE[map][layout][row][col]);
- if (result == uint8_t(~0U))
+ u8 const result(TRANSLATION_TABLE[map][layout][row][col]);
+ if (result == u8(~0U))
{
return false;
}
@@ -342,9 +339,9 @@ bool generic_keyboard_device::translate(uint8_t code, uint8_t &translated) const
}
-void generic_keyboard_device::will_scan_row(uint8_t row)
+void generic_keyboard_device::will_scan_row(u8 row)
{
- uint16_t const modifiers(m_modifiers->read());
+ u16 const modifiers(m_modifiers->read());
if (modifiers != m_last_modifiers)
typematic_restart(typematic_delay(), typematic_period());
@@ -352,9 +349,9 @@ void generic_keyboard_device::will_scan_row(uint8_t row)
}
-void generic_keyboard_device::send_translated(uint8_t code)
+void generic_keyboard_device::send_translated(u8 code)
{
- uint8_t translated;
+ u8 translated;
if (translate(code, translated))
send_key(translated);
}
diff --git a/src/devices/machine/keyboard.h b/src/devices/machine/keyboard.h
index 42a2d964ad7..eab27c13edb 100644
--- a/src/devices/machine/keyboard.h
+++ b/src/devices/machine/keyboard.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
-#ifndef MAME_DEVICES_MACHINE_KEYBOARD_H
-#define MAME_DEVICES_MACHINE_KEYBOARD_H
+#ifndef MAME_MACHINE_KEYBOARD_H
+#define MAME_MACHINE_KEYBOARD_H
#pragma once
@@ -10,8 +10,11 @@
DEVICE CONFIGURATION MACROS
***************************************************************************/
+#define KEYBOARDCB_PUT(cls, fnc) generic_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), DEVICE_SELF, ((cls *)nullptr))
+#define KEYBOARDCB_DEVPUT(tag, cls, fnc) generic_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), (tag), ((cls *)nullptr))
+
#define MCFG_GENERIC_KEYBOARD_CB(cb) \
- devcb = &generic_keyboard_device::set_keyboard_callback(*device, DEVCB_##cb);
+ generic_keyboard_device::set_keyboard_callback(*device, (KEYBOARDCB_##cb));
@@ -19,7 +22,7 @@
DEVICE TYPE GLOBALS
***************************************************************************/
-extern const device_type GENERIC_KEYBOARD;
+DECLARE_DEVICE_TYPE(GENERIC_KEYBOARD, generic_keyboard_device)
@@ -50,15 +53,15 @@ protected:
void stop_processing();
void reset_key_state();
- void typematic_start(uint8_t row, uint8_t column, attotime const &delay, attotime const &interval);
+ void typematic_start(u8 row, u8 column, attotime const &delay, attotime const &interval);
void typematic_restart(attotime const &delay, attotime const &interval);
void typematic_stop();
- bool typematic_is(uint8_t row, uint8_t column) const { return (m_typematic_row == row) && (m_typematic_column == column); }
+ bool typematic_is(u8 row, u8 column) const { return (m_typematic_row == row) && (m_typematic_column == column); }
- virtual void key_make(uint8_t row, uint8_t column) = 0;
- virtual void key_repeat(uint8_t row, uint8_t column);
- virtual void key_break(uint8_t row, uint8_t column);
- virtual void will_scan_row(uint8_t row);
+ virtual void key_make(u8 row, u8 column) = 0;
+ virtual void key_repeat(u8 row, u8 column);
+ virtual void key_break(u8 row, u8 column);
+ virtual void will_scan_row(u8 row);
bool are_all_keys_up();
@@ -75,57 +78,56 @@ private:
emu_timer *m_typematic_timer;
required_ioport m_key_rows[ROW_COUNT];
ioport_value m_key_states[ROW_COUNT];
- uint8_t m_next_row;
- uint8_t m_processing;
- uint8_t m_typematic_row;
- uint8_t m_typematic_column;
+ u8 m_next_row;
+ u8 m_processing;
+ u8 m_typematic_row;
+ u8 m_typematic_column;
};
class generic_keyboard_device : public device_t, protected device_matrix_keyboard_interface<4U>
{
public:
- generic_keyboard_device(
- const machine_config &mconfig,
- device_type type,
- char const *name,
- char const *tag,
- device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source);
+ typedef device_delegate<void (u8 character)> output_delegate;
+
generic_keyboard_device(
const machine_config &mconfig,
const char *tag,
device_t *owner,
- uint32_t clock);
+ u32 clock);
- template <class Object> static devcb_base &set_keyboard_callback(device_t &device, Object object) { return downcast<generic_keyboard_device &>(device).m_keyboard_cb.set_callback(object); }
+ template <class Object> static void set_keyboard_callback(device_t &device, Object &&cb) { downcast<generic_keyboard_device &>(device).m_keyboard_cb = std::forward<Object>(cb); }
virtual ioport_constructor device_input_ports() const override;
protected:
+ generic_keyboard_device(
+ const machine_config &mconfig,
+ device_type type,
+ char const *tag,
+ device_t *owner,
+ u32 clock);
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual void key_make(uint8_t row, uint8_t column) override;
- virtual void key_repeat(uint8_t row, uint8_t column) override;
- virtual void send_key(uint8_t code);
- virtual bool translate(uint8_t code, uint8_t &translated) const;
+ virtual void key_make(u8 row, u8 column) override;
+ virtual void key_repeat(u8 row, u8 column) override;
+ virtual void send_key(u8 code);
+ virtual bool translate(u8 code, u8 &translated) const;
required_ioport m_config;
required_ioport m_modifiers;
private:
- virtual void will_scan_row(uint8_t row) override;
+ virtual void will_scan_row(u8 row) override;
void typematic();
- void send_translated(uint8_t code);
+ void send_translated(u8 code);
attotime typematic_delay() const;
attotime typematic_period() const;
- uint16_t m_last_modifiers;
- devcb_write8 m_keyboard_cb;
+ u16 m_last_modifiers;
+ output_delegate m_keyboard_cb;
};
-#endif // MAME_DEVICES_MACHINE_KEYBOARD_H
+#endif // MAME_MACHINE_KEYBOARD_H
diff --git a/src/devices/machine/keyboard.ipp b/src/devices/machine/keyboard.ipp
index 28681ba024d..eda221d946e 100644
--- a/src/devices/machine/keyboard.ipp
+++ b/src/devices/machine/keyboard.ipp
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
-#ifndef MAME_DEVICES_MACHINE_KEYBOARD_IPP
-#define MAME_DEVICES_MACHINE_KEYBOARD_IPP
+#ifndef MAME_MACHINE_KEYBOARD_IPP
+#define MAME_MACHINE_KEYBOARD_IPP
#pragma once
@@ -176,4 +176,4 @@ bool device_matrix_keyboard_interface<ROW_COUNT>::are_all_keys_up()
[] (ioport_value a, auto const &b) { return a | b->read(); });
}
-#endif // MAME_DEVICES_MACHINE_KEYBOARD_IPP
+#endif // MAME_MACHINE_KEYBOARD_IPP
diff --git a/src/devices/machine/kr2376.cpp b/src/devices/machine/kr2376.cpp
index fc68a848b0f..8d082180f72 100644
--- a/src/devices/machine/kr2376.cpp
+++ b/src/devices/machine/kr2376.cpp
@@ -64,10 +64,10 @@ static const uint8_t KR2376_KEY_CODES[3][8][11] =
};
-const device_type KR2376 = device_creator<kr2376_device>;
+DEFINE_DEVICE_TYPE(KR2376, kr2376_device, "kr2376", "SMC KR2376 Keyboard Encoder")
kr2376_device::kr2376_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, KR2376, "SMC KR2376", tag, owner, clock, "kr2376", __FILE__),
+ : device_t(mconfig, KR2376, tag, owner, clock),
m_write_strobe(*this)
{
}
@@ -110,7 +110,7 @@ void kr2376_device::device_start()
/*-------------------------------------------------
set_input_pin - set an input pin
-------------------------------------------------*/
-void kr2376_device::set_input_pin( kr2376_input_pin_t pin, int data )
+void kr2376_device::set_input_pin( input_pin_t pin, int data )
{
data = data ? 1 : 0;
switch ( pin )
@@ -126,7 +126,7 @@ void kr2376_device::set_input_pin( kr2376_input_pin_t pin, int data )
/*-------------------------------------------------
get_output_pin - get the status of an output pin
-------------------------------------------------*/
-int kr2376_device::get_output_pin( kr2376_output_pin_t pin )
+int kr2376_device::get_output_pin( output_pin_t pin )
{
return m_pins[pin];
}
diff --git a/src/devices/machine/kr2376.h b/src/devices/machine/kr2376.h
index d73ccfa4f58..6206e82ba2c 100644
--- a/src/devices/machine/kr2376.h
+++ b/src/devices/machine/kr2376.h
@@ -29,44 +29,45 @@
**********************************************************************/
-#ifndef __KR2376__
-#define __KR2376__
+#ifndef MAME_MACHINE_KR2376_H
+#define MAME_MACHINE_KR2376_H
+
+#pragma once
#define MCFG_KR2376_STROBE_CALLBACK(_write) \
devcb = &kr2376_device::set_strobe_wr_callback(*device, DEVCB_##_write);
-/*
- * Input pins
- */
-enum kr2376_input_pin_t
-{
- KR2376_DSII=20, /* DSII - Pin 20 - Data & Strobe Invert Input */
- KR2376_PII=6 /* PII - Pin 6 - Parity Invert Input */
-};
-
-enum kr2376_output_pin_t
-{
- KR2376_SO=16, /* SO - Pin 16 - Strobe Output */
- KR2376_PO=7 /* PO - Pin 7 - Parity Output */
-};
-
class kr2376_device : public device_t
{
public:
+ /*
+ * Input pins
+ */
+ enum input_pin_t
+ {
+ KR2376_DSII=20, /* DSII - Pin 20 - Data & Strobe Invert Input */
+ KR2376_PII=6 /* PII - Pin 6 - Parity Invert Input */
+ };
+
+ enum output_pin_t
+ {
+ KR2376_SO=16, /* SO - Pin 16 - Strobe Output */
+ KR2376_PO=7 /* PO - Pin 7 - Parity Output */
+ };
+
kr2376_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~kr2376_device() {}
- template<class _Object> static devcb_base &set_strobe_wr_callback(device_t &device, _Object object) { return downcast<kr2376_device &>(device).m_write_strobe.set_callback(object); }
+ template <class Object> static devcb_base &set_strobe_wr_callback(device_t &device, Object &&cb) { return downcast<kr2376_device &>(device).m_write_strobe.set_callback(std::forward<Object>(cb)); }
/* keyboard data */
DECLARE_READ8_MEMBER( data_r );
/* Set an input pin */
- void set_input_pin( kr2376_input_pin_t pin, int data );
+ void set_input_pin( input_pin_t pin, int data );
/* Get an output pin */
- int get_output_pin( kr2376_output_pin_t pin );
+ int get_output_pin( output_pin_t pin );
protected:
// device-level overrides
@@ -101,6 +102,6 @@ private:
void detect_keypress();
};
-extern const device_type KR2376;
+DECLARE_DEVICE_TYPE(KR2376, kr2376_device)
-#endif
+#endif // MAME_MACHINE_KR2376_H
diff --git a/src/devices/machine/laserdsc.cpp b/src/devices/machine/laserdsc.cpp
index b090b23dd04..49227fa13cc 100644
--- a/src/devices/machine/laserdsc.cpp
+++ b/src/devices/machine/laserdsc.cpp
@@ -57,8 +57,8 @@ const uint32_t VIRTUAL_LEAD_OUT_TRACKS = LEAD_OUT_MIN_SIZE_IN_UM * 1000 / NOMINA
// laserdisc_device - constructor
//-------------------------------------------------
-laserdisc_device::laserdisc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+laserdisc_device::laserdisc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_overwidth(0),
@@ -212,9 +212,9 @@ uint32_t laserdisc_device::screen_update(screen_device &screen, bitmap_rgb32 &bi
// delegate
//-------------------------------------------------
-void laserdisc_device::static_set_get_disc(device_t &device, laserdisc_get_disc_delegate callback)
+void laserdisc_device::static_set_get_disc(device_t &device, get_disc_delegate &&callback)
{
- downcast<laserdisc_device &>(device).m_getdisc_callback = callback;
+ downcast<laserdisc_device &>(device).m_getdisc_callback = std::move(callback);
}
@@ -223,9 +223,9 @@ void laserdisc_device::static_set_get_disc(device_t &device, laserdisc_get_disc_
// delegate
//-------------------------------------------------
-void laserdisc_device::static_set_audio(device_t &device, laserdisc_audio_delegate callback)
+void laserdisc_device::static_set_audio(device_t &device, audio_delegate &&callback)
{
- downcast<laserdisc_device &>(device).m_audio_callback = callback;
+ downcast<laserdisc_device &>(device).m_audio_callback = std::move(callback);
}
@@ -233,24 +233,24 @@ void laserdisc_device::static_set_audio(device_t &device, laserdisc_audio_delega
// static_set_overlay - set the overlay parameters
//-------------------------------------------------
-void laserdisc_device::static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_ind16_delegate update)
+void laserdisc_device::static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_ind16_delegate &&update)
{
laserdisc_device &ld = downcast<laserdisc_device &>(device);
ld.m_overwidth = width;
ld.m_overheight = height;
ld.m_overclip.set(0, width - 1, 0, height - 1);
- ld.m_overupdate_ind16 = update;
+ ld.m_overupdate_ind16 = std::move(update);
ld.m_overupdate_rgb32 = screen_update_rgb32_delegate();
}
-void laserdisc_device::static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_rgb32_delegate update)
+void laserdisc_device::static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_rgb32_delegate &&update)
{
laserdisc_device &ld = downcast<laserdisc_device &>(device);
ld.m_overwidth = width;
ld.m_overheight = height;
ld.m_overclip.set(0, width - 1, 0, height - 1);
ld.m_overupdate_ind16 = screen_update_ind16_delegate();
- ld.m_overupdate_rgb32 = update;
+ ld.m_overupdate_rgb32 = std::move(update);
}
diff --git a/src/devices/machine/laserdsc.h b/src/devices/machine/laserdsc.h
index 6065fda25ba..85b5a197a08 100644
--- a/src/devices/machine/laserdsc.h
+++ b/src/devices/machine/laserdsc.h
@@ -8,10 +8,10 @@
*************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_LASERDSC_H
+#define MAME_MACHINE_LASERDSC_H
-#ifndef MAME_DEVICES_MACHINE_LASERDSC_H
-#define MAME_DEVICES_MACHINE_LASERDSC_H
+#pragma once
#include "screen.h"
#include "vbiparse.h"
@@ -111,14 +111,6 @@ enum laserdisc_field_code
// TYPE DEFINITIONS
//**************************************************************************
-// forward declarations
-class laserdisc_device;
-
-// delegates
-typedef delegate<chd_file *(laserdisc_device &device)> laserdisc_get_disc_delegate;
-typedef delegate<void (laserdisc_device &device, int samplerate, int samples, const int16_t *ch0, const int16_t *ch1)> laserdisc_audio_delegate;
-
-
// ======================> laserdisc_overlay_config
// overlay configuration
@@ -141,10 +133,16 @@ class laserdisc_device : public device_t,
{
protected:
// construction/destruction
- laserdisc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual ~laserdisc_device();
public:
+ // delegates
+ typedef delegate<chd_file *(laserdisc_device &device)> get_disc_delegate;
+ typedef delegate<void (laserdisc_device &device, int samplerate, int samples, const int16_t *ch0, const int16_t *ch1)> audio_delegate;
+
+
+ laserdisc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// reset line control
// core control and status
@@ -165,10 +163,10 @@ public:
void set_overlay_config(const laserdisc_overlay_config &config) { static_cast<laserdisc_overlay_config &>(*this) = config; }
// static configuration helpers
- static void static_set_get_disc(device_t &device, laserdisc_get_disc_delegate callback);
- static void static_set_audio(device_t &device, laserdisc_audio_delegate callback);
- static void static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_ind16_delegate update);
- static void static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_rgb32_delegate update);
+ static void static_set_get_disc(device_t &device, get_disc_delegate &&callback);
+ static void static_set_audio(device_t &device, audio_delegate &&callback);
+ static void static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_ind16_delegate &&update);
+ static void static_set_overlay(device_t &device, uint32_t width, uint32_t height, screen_update_rgb32_delegate &&update);
static void static_set_overlay_clip(device_t &device, int32_t minx, int32_t maxx, int32_t miny, int32_t maxy);
static void static_set_overlay_position(device_t &device, float posx, float posy);
static void static_set_overlay_scale(device_t &device, float scalex, float scaley);
@@ -291,8 +289,8 @@ private:
void config_save(config_type cfg_type, util::xml::data_node *parentnode);
// configuration
- laserdisc_get_disc_delegate m_getdisc_callback;
- laserdisc_audio_delegate m_audio_callback; // audio streaming callback
+ get_disc_delegate m_getdisc_callback;
+ audio_delegate m_audio_callback; // audio streaming callback
laserdisc_overlay_config m_orig_config; // original overlay configuration
uint32_t m_overwidth; // overlay screen width
uint32_t m_overheight; // overlay screen height
@@ -412,5 +410,4 @@ inline int laserdisc_device::chapter_from_metadata(const vbi_metadata &metadata)
return CHAPTER_NOT_PRESENT;
}
-
-#endif // MAME_DEVICES_MACHINE_LASERDSC_H
+#endif // MAME_MACHINE_LASERDSC_H
diff --git a/src/devices/machine/latch.cpp b/src/devices/machine/latch.cpp
index 6cf14e413ea..320febdb1ff 100644
--- a/src/devices/machine/latch.cpp
+++ b/src/devices/machine/latch.cpp
@@ -3,40 +3,19 @@
#include "emu.h"
#include "latch.h"
-const device_type OUTPUT_LATCH = device_creator<output_latch_device>;
+DEFINE_DEVICE_TYPE(OUTPUT_LATCH, output_latch_device, "output_latch", "Output Latch")
output_latch_device::output_latch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, OUTPUT_LATCH, "Output Latch", tag, owner, clock, "output_latch", __FILE__),
- m_resolved(false),
- m_bit0(-1),
- m_bit1(-1),
- m_bit2(-1),
- m_bit3(-1),
- m_bit4(-1),
- m_bit5(-1),
- m_bit6(-1),
- m_bit7(-1),
- m_bit0_handler(*this),
- m_bit1_handler(*this),
- m_bit2_handler(*this),
- m_bit3_handler(*this),
- m_bit4_handler(*this),
- m_bit5_handler(*this),
- m_bit6_handler(*this),
- m_bit7_handler(*this)
+ : device_t(mconfig, OUTPUT_LATCH, tag, owner, clock)
+ , m_bit_handlers{ { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this } }
+ , m_bits{ -1, -1, -1, -1, -1, -1, -1, -1 }
+ , m_resolved(false)
{
}
void output_latch_device::device_start()
{
- save_item(NAME(m_bit0));
- save_item(NAME(m_bit1));
- save_item(NAME(m_bit2));
- save_item(NAME(m_bit3));
- save_item(NAME(m_bit4));
- save_item(NAME(m_bit5));
- save_item(NAME(m_bit6));
- save_item(NAME(m_bit7));
+ save_item(NAME(m_bits));
}
void output_latch_device::write(uint8_t data)
@@ -44,79 +23,20 @@ void output_latch_device::write(uint8_t data)
if (!m_resolved)
{
// HACK: move to device_config_complete() when devcb supports that
- m_bit0_handler.resolve_safe();
- m_bit1_handler.resolve_safe();
- m_bit2_handler.resolve_safe();
- m_bit3_handler.resolve_safe();
- m_bit4_handler.resolve_safe();
- m_bit5_handler.resolve_safe();
- m_bit6_handler.resolve_safe();
- m_bit7_handler.resolve_safe();
+ for (devcb_write_line &handler : m_bit_handlers)
+ handler.resolve_safe();
m_resolved = true;
}
- int bit0 = (data >> 0) & 1;
- if (m_bit0 != bit0)
+ for (unsigned i = 0; 8 > i; ++i)
{
- m_bit0 = bit0;
- if (!m_bit0_handler.isnull())
- m_bit0_handler(bit0);
- }
-
- int bit1 = (data >> 1) & 1;
- if (m_bit1 != bit1)
- {
- m_bit1 = bit1;
- if (!m_bit1_handler.isnull())
- m_bit1_handler(bit1);
- }
-
- int bit2 = (data >> 2) & 1;
- if (m_bit2 != bit2)
- {
- m_bit2 = bit2;
- if (!m_bit2_handler.isnull())
- m_bit2_handler(bit2);
- }
-
- int bit3 = (data >> 3) & 1;
- if (m_bit3 != bit3)
- {
- m_bit3 = bit3;
- if (!m_bit3_handler.isnull())
- m_bit3_handler(bit3);
- }
-
- int bit4 = (data >> 4) & 1;
- if (m_bit4 != bit4)
- {
- m_bit4 = bit4;
- if (!m_bit4_handler.isnull())
- m_bit4_handler(bit4);
- }
-
- int bit5 = (data >> 5) & 1;
- if (m_bit5 != bit5)
- {
- m_bit5 = bit5;
- if (!m_bit5_handler.isnull())
- m_bit5_handler(bit5);
- }
-
- int bit6 = (data >> 6) & 1;
- if (m_bit6 != bit6)
- {
- m_bit6 = bit6;
- if (!m_bit6_handler.isnull())
- m_bit6_handler(bit6);
- }
-
- int bit7 = (data >> 7) & 1;
- if (m_bit7 != bit7)
- {
- m_bit7 = bit7;
- if (!m_bit7_handler.isnull())
- m_bit7_handler(bit7);
+ int const bit = BIT(data, i);
+ if (bit != m_bits[i])
+ {
+ m_bits[i] = bit;
+ if (!m_bit_handlers[i].isnull())
+ m_bit_handlers[i](bit);
+ }
}
}
diff --git a/src/devices/machine/latch.h b/src/devices/machine/latch.h
index d4e49ed838b..8c93a40f8b0 100644
--- a/src/devices/machine/latch.h
+++ b/src/devices/machine/latch.h
@@ -1,45 +1,42 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef __LATCH_H__
-#define __LATCH_H__
+#ifndef MAME_MACHINE_LATCH_H
+#define MAME_MACHINE_LATCH_H
+
+#pragma once
+
#define MCFG_OUTPUT_LATCH_BIT0_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit0_handler(*device, DEVCB_##_devcb);
+ devcb = &output_latch_device::set_bit_handler<0>(*device, DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT1_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit1_handler(*device, DEVCB_##_devcb);
+ devcb = &output_latch_device::set_bit_handler<1>(*device, DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT2_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit2_handler(*device, DEVCB_##_devcb);
+ devcb = &output_latch_device::set_bit_handler<2>(*device, DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT3_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit3_handler(*device, DEVCB_##_devcb);
+ devcb = &output_latch_device::set_bit_handler<3>(*device, DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT4_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit4_handler(*device, DEVCB_##_devcb);
+ devcb = &output_latch_device::set_bit_handler<4>(*device, DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT5_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit5_handler(*device, DEVCB_##_devcb);
+ devcb = &output_latch_device::set_bit_handler<5>(*device, DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT6_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit6_handler(*device, DEVCB_##_devcb);
+ devcb = &output_latch_device::set_bit_handler<6>(*device, DEVCB_##_devcb);
#define MCFG_OUTPUT_LATCH_BIT7_HANDLER(_devcb) \
- devcb = &output_latch_device::set_bit7_handler(*device, DEVCB_##_devcb);
+ devcb = &output_latch_device::set_bit_handler<7>(*device, DEVCB_##_devcb);
class output_latch_device : public device_t
{
public:
output_latch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_bit0_handler(device_t &device, _Object object) { return downcast<output_latch_device &>(device).m_bit0_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_bit1_handler(device_t &device, _Object object) { return downcast<output_latch_device &>(device).m_bit1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_bit2_handler(device_t &device, _Object object) { return downcast<output_latch_device &>(device).m_bit2_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_bit3_handler(device_t &device, _Object object) { return downcast<output_latch_device &>(device).m_bit3_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_bit4_handler(device_t &device, _Object object) { return downcast<output_latch_device &>(device).m_bit4_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_bit5_handler(device_t &device, _Object object) { return downcast<output_latch_device &>(device).m_bit5_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_bit6_handler(device_t &device, _Object object) { return downcast<output_latch_device &>(device).m_bit6_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_bit7_handler(device_t &device, _Object object) { return downcast<output_latch_device &>(device).m_bit7_handler.set_callback(object); }
+ template <unsigned Bit, class Object> static devcb_base &set_bit_handler(device_t &device, Object &&cb)
+ { return downcast<output_latch_device &>(device).m_bit_handlers[Bit].set_callback(std::forward<Object>(cb)); }
void write(uint8_t data);
DECLARE_WRITE8_MEMBER(write) { write(data); }
@@ -48,27 +45,13 @@ protected:
virtual void device_start() override;
private:
- bool m_resolved;
+ devcb_write_line m_bit_handlers[8];
- int m_bit0;
- int m_bit1;
- int m_bit2;
- int m_bit3;
- int m_bit4;
- int m_bit5;
- int m_bit6;
- int m_bit7;
-
- devcb_write_line m_bit0_handler;
- devcb_write_line m_bit1_handler;
- devcb_write_line m_bit2_handler;
- devcb_write_line m_bit3_handler;
- devcb_write_line m_bit4_handler;
- devcb_write_line m_bit5_handler;
- devcb_write_line m_bit6_handler;
- devcb_write_line m_bit7_handler;
+ int m_bits[8];
+
+ bool m_resolved;
};
-extern const device_type OUTPUT_LATCH;
+DECLARE_DEVICE_TYPE(OUTPUT_LATCH, output_latch_device)
-#endif
+#endif // MAME_MACHINE_LATCH_H
diff --git a/src/devices/machine/latch8.cpp b/src/devices/machine/latch8.cpp
index 3c12ea10129..7b10bed2df6 100644
--- a/src/devices/machine/latch8.cpp
+++ b/src/devices/machine/latch8.cpp
@@ -73,27 +73,6 @@ WRITE8_MEMBER( latch8_device::reset_w )
m_value = 0;
}
-/* read bit x */
-/* return (latch >> x) & 0x01 */
-
-READ_LINE_MEMBER(latch8_device::bit0_r) { return BIT(m_value, 0); }
-READ_LINE_MEMBER(latch8_device::bit1_r) { return BIT(m_value, 1); }
-READ_LINE_MEMBER(latch8_device::bit2_r) { return BIT(m_value, 2); }
-READ_LINE_MEMBER(latch8_device::bit3_r) { return BIT(m_value, 3); }
-READ_LINE_MEMBER(latch8_device::bit4_r) { return BIT(m_value, 4); }
-READ_LINE_MEMBER(latch8_device::bit5_r) { return BIT(m_value, 5); }
-READ_LINE_MEMBER(latch8_device::bit6_r) { return BIT(m_value, 6); }
-READ_LINE_MEMBER(latch8_device::bit7_r) { return BIT(m_value, 7); }
-
-READ_LINE_MEMBER(latch8_device::bit0_q_r) { return BIT(m_value, 0) ^ 1; }
-READ_LINE_MEMBER(latch8_device::bit1_q_r) { return BIT(m_value, 1) ^ 1; }
-READ_LINE_MEMBER(latch8_device::bit2_q_r) { return BIT(m_value, 2) ^ 1; }
-READ_LINE_MEMBER(latch8_device::bit3_q_r) { return BIT(m_value, 3) ^ 1; }
-READ_LINE_MEMBER(latch8_device::bit4_q_r) { return BIT(m_value, 4) ^ 1; }
-READ_LINE_MEMBER(latch8_device::bit5_q_r) { return BIT(m_value, 5) ^ 1; }
-READ_LINE_MEMBER(latch8_device::bit6_q_r) { return BIT(m_value, 6) ^ 1; }
-READ_LINE_MEMBER(latch8_device::bit7_q_r) { return BIT(m_value, 7) ^ 1; }
-
/* write bit x from data into bit determined by offset */
/* latch = (latch & ~(1<<offset)) | (((data >> x) & 0x01) << offset) */
@@ -120,18 +99,18 @@ WRITE8_MEMBER( latch8_device::bit5_w ) { bitx_w(5, offset, data); }
WRITE8_MEMBER( latch8_device::bit6_w ) { bitx_w(6, offset, data); }
WRITE8_MEMBER( latch8_device::bit7_w ) { bitx_w(7, offset, data); }
-const device_type LATCH8 = device_creator<latch8_device>;
+DEFINE_DEVICE_TYPE(LATCH8, latch8_device, "latch8", "8-bit latch")
latch8_device::latch8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, LATCH8, "8 bit latch", tag, owner, clock, "latch8", __FILE__),
- m_value(0),
- m_has_write(0),
- m_has_read(0),
- m_maskout(0),
- m_xorvalue(0),
- m_nosync(0),
- m_write_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}},
- m_read_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}}
+ : device_t(mconfig, LATCH8, tag, owner, clock)
+ , m_value(0)
+ , m_has_write(0)
+ , m_has_read(0)
+ , m_maskout(0)
+ , m_xorvalue(0)
+ , m_nosync(0)
+ , m_write_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}}
+ , m_read_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}}
{
}
diff --git a/src/devices/machine/latch8.h b/src/devices/machine/latch8.h
index fbaa5ebfaca..6acb1b54903 100644
--- a/src/devices/machine/latch8.h
+++ b/src/devices/machine/latch8.h
@@ -13,8 +13,8 @@
**********************************************************************/
-#ifndef __LATCH8_H_
-#define __LATCH8_H_
+#ifndef MAME_MACHINE_LATCH8_H
+#define MAME_MACHINE_LATCH8_H
#include "sound/discrete.h"
@@ -41,26 +41,26 @@ public:
/* read bit x */
/* return (latch >> x) & 0x01 */
- DECLARE_READ_LINE_MEMBER( bit0_r );
- DECLARE_READ_LINE_MEMBER( bit1_r );
- DECLARE_READ_LINE_MEMBER( bit2_r );
- DECLARE_READ_LINE_MEMBER( bit3_r );
- DECLARE_READ_LINE_MEMBER( bit4_r );
- DECLARE_READ_LINE_MEMBER( bit5_r );
- DECLARE_READ_LINE_MEMBER( bit6_r );
- DECLARE_READ_LINE_MEMBER( bit7_r );
+ DECLARE_READ_LINE_MEMBER( bit0_r ) { return BIT(m_value, 0); }
+ DECLARE_READ_LINE_MEMBER( bit1_r ) { return BIT(m_value, 1); }
+ DECLARE_READ_LINE_MEMBER( bit2_r ) { return BIT(m_value, 2); }
+ DECLARE_READ_LINE_MEMBER( bit3_r ) { return BIT(m_value, 3); }
+ DECLARE_READ_LINE_MEMBER( bit4_r ) { return BIT(m_value, 4); }
+ DECLARE_READ_LINE_MEMBER( bit5_r ) { return BIT(m_value, 5); }
+ DECLARE_READ_LINE_MEMBER( bit6_r ) { return BIT(m_value, 6); }
+ DECLARE_READ_LINE_MEMBER( bit7_r ) { return BIT(m_value, 7); }
/* read inverted bit x */
/* return (latch >> x) & 0x01 */
- DECLARE_READ_LINE_MEMBER( bit0_q_r );
- DECLARE_READ_LINE_MEMBER( bit1_q_r );
- DECLARE_READ_LINE_MEMBER( bit2_q_r );
- DECLARE_READ_LINE_MEMBER( bit3_q_r );
- DECLARE_READ_LINE_MEMBER( bit4_q_r );
- DECLARE_READ_LINE_MEMBER( bit5_q_r );
- DECLARE_READ_LINE_MEMBER( bit6_q_r );
- DECLARE_READ_LINE_MEMBER( bit7_q_r );
+ DECLARE_READ_LINE_MEMBER( bit0_q_r ) { return BIT(m_value, 0) ^ 1; }
+ DECLARE_READ_LINE_MEMBER( bit1_q_r ) { return BIT(m_value, 1) ^ 1; }
+ DECLARE_READ_LINE_MEMBER( bit2_q_r ) { return BIT(m_value, 2) ^ 1; }
+ DECLARE_READ_LINE_MEMBER( bit3_q_r ) { return BIT(m_value, 3) ^ 1; }
+ DECLARE_READ_LINE_MEMBER( bit4_q_r ) { return BIT(m_value, 4) ^ 1; }
+ DECLARE_READ_LINE_MEMBER( bit5_q_r ) { return BIT(m_value, 5) ^ 1; }
+ DECLARE_READ_LINE_MEMBER( bit6_q_r ) { return BIT(m_value, 6) ^ 1; }
+ DECLARE_READ_LINE_MEMBER( bit7_q_r ) { return BIT(m_value, 7) ^ 1; }
/* write bit x from data into bit determined by offset */
/* latch = (latch & ~(1<<offset)) | (((data >> x) & 0x01) << offset) */
@@ -78,9 +78,9 @@ public:
static void set_xorvalue(device_t &device, uint32_t xorvalue) { downcast<latch8_device &>(device).m_xorvalue = xorvalue; }
static void set_nosync(device_t &device, uint32_t nosync) { downcast<latch8_device &>(device).m_nosync = nosync; }
- template<class _Object> static devcb_base &set_write_cb(device_t &device, int i, _Object object) { return downcast<latch8_device &>(device).m_write_cb[i].set_callback(object); }
+ template <unsigned N, class Object> static devcb_base &set_write_cb(device_t &device, Object &&cb) { return downcast<latch8_device &>(device).m_write_cb[N].set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_read_cb(device_t &device, int i, _Object object) { return downcast<latch8_device &>(device).m_read_cb[i].set_callback(object); }
+ template <unsigned N, class Object> static devcb_base &set_read_cb(device_t &device, Object &&cb) { return downcast<latch8_device &>(device).m_read_cb[N].set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
@@ -107,7 +107,8 @@ private:
devcb_read_line m_read_cb[8];
};
-extern const device_type LATCH8;
+DECLARE_DEVICE_TYPE(LATCH8, latch8_device)
+
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
@@ -130,53 +131,53 @@ extern const device_type LATCH8;
/* Write bit to discrete node */
#define MCFG_LATCH8_WRITE_0(_devcb) \
- devcb = &latch8_device::set_write_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &latch8_device::set_write_cb<0>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_1(_devcb) \
- devcb = &latch8_device::set_write_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &latch8_device::set_write_cb<1>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_2(_devcb) \
- devcb = &latch8_device::set_write_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &latch8_device::set_write_cb<2>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_3(_devcb) \
- devcb = &latch8_device::set_write_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &latch8_device::set_write_cb<3>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_4(_devcb) \
- devcb = &latch8_device::set_write_cb(*device, 4, DEVCB_##_devcb);
+ devcb = &latch8_device::set_write_cb<4>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_5(_devcb) \
- devcb = &latch8_device::set_write_cb(*device, 5, DEVCB_##_devcb);
+ devcb = &latch8_device::set_write_cb<5>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_6(_devcb) \
- devcb = &latch8_device::set_write_cb(*device, 6, DEVCB_##_devcb);
+ devcb = &latch8_device::set_write_cb<6>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_WRITE_7(_devcb) \
- devcb = &latch8_device::set_write_cb(*device, 7, DEVCB_##_devcb);
+ devcb = &latch8_device::set_write_cb<7>(*device, DEVCB_##_devcb);
/* Upon read, replace bits by reading from another device handler */
#define MCFG_LATCH8_READ_0(_devcb) \
- devcb = &latch8_device::set_read_cb(*device, 0, DEVCB_##_devcb);
+ devcb = &latch8_device::set_read_cb<0>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_READ_1(_devcb) \
- devcb = &latch8_device::set_read_cb(*device, 1, DEVCB_##_devcb);
+ devcb = &latch8_device::set_read_cb<1>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_READ_2(_devcb) \
- devcb = &latch8_device::set_read_cb(*device, 2, DEVCB_##_devcb);
+ devcb = &latch8_device::set_read_cb<2>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_READ_3(_devcb) \
- devcb = &latch8_device::set_read_cb(*device, 3, DEVCB_##_devcb);
+ devcb = &latch8_device::set_read_cb<3>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_READ_4(_devcb) \
- devcb = &latch8_device::set_read_cb(*device, 4, DEVCB_##_devcb);
+ devcb = &latch8_device::set_read_cb<4>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_READ_5(_devcb) \
- devcb = &latch8_device::set_read_cb(*device, 5, DEVCB_##_devcb);
+ devcb = &latch8_device::set_read_cb<5>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_READ_6(_devcb) \
- devcb = &latch8_device::set_read_cb(*device, 6, DEVCB_##_devcb);
+ devcb = &latch8_device::set_read_cb<6>(*device, DEVCB_##_devcb);
#define MCFG_LATCH8_READ_7(_devcb) \
- devcb = &latch8_device::set_read_cb(*device, 7, DEVCB_##_devcb);
+ devcb = &latch8_device::set_read_cb<7>(*device, DEVCB_##_devcb);
-#endif /* __LATCH8_H_ */
+#endif // MAME_MACHINE_LATCH8_H
diff --git a/src/devices/machine/lc89510.cpp b/src/devices/machine/lc89510.cpp
index c1cbb62b2e6..649dc01ea8d 100644
--- a/src/devices/machine/lc89510.cpp
+++ b/src/devices/machine/lc89510.cpp
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/* LC89510 CD Controller
- based off old NeoCD emulator code, adapted to SegaCD, needs reworking to work with NeoCD again
+ completely empty placeholder - should be populated or removed
*/
@@ -9,10 +9,10 @@
#include "emu.h"
#include "lc89510.h"
-const device_type LC89510 = device_creator<lc89510_device>;
+DEFINE_DEVICE_TYPE(LC89510, lc89510_device, "lc89510", "LC89510 CD Controller")
lc89510_device::lc89510_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, LC89510, "lc89510_device", tag, owner, clock, "lc89510", __FILE__)
+ : device_t(mconfig, LC89510, tag, owner, clock)
{
}
diff --git a/src/devices/machine/lc89510.h b/src/devices/machine/lc89510.h
index a254a40928b..4282654136c 100644
--- a/src/devices/machine/lc89510.h
+++ b/src/devices/machine/lc89510.h
@@ -1,19 +1,21 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
+#ifndef MAME_MACHINE_LC89510_H
+#define MAME_MACHINE_LC89510_H
-
+#pragma once
class lc89510_device : public device_t
{
public:
lc89510_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-
protected:
virtual void device_start() override;
virtual void device_reset() override;
};
-extern const device_type LC89510;
+DECLARE_DEVICE_TYPE(LC89510, lc89510_device)
+
+#endif // MAME_MACHINE_LC89510_H
diff --git a/src/devices/machine/ldp1000.cpp b/src/devices/machine/ldp1000.cpp
index 42bd30443dd..ace30f6fc9a 100644
--- a/src/devices/machine/ldp1000.cpp
+++ b/src/devices/machine/ldp1000.cpp
@@ -27,7 +27,7 @@ ROM_END
//**************************************************************************
// device type definition
-const device_type SONY_LDP1000 = device_creator<sony_ldp1000_device>;
+DEFINE_DEVICE_TYPE(SONY_LDP1000, sony_ldp1000_device, "ldp1000", "Sony LDP-1000")
//**************************************************************************
@@ -35,11 +35,11 @@ const device_type SONY_LDP1000 = device_creator<sony_ldp1000_device>;
//**************************************************************************
//-------------------------------------------------
-// ldp1000_device - constructor
+// sony_ldp1000_device - constructor
//-------------------------------------------------
sony_ldp1000_device::sony_ldp1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : laserdisc_device(mconfig, SONY_LDP1000, "Sony LDP-1000", tag, owner, clock, "ldp1000", __FILE__)
+ : laserdisc_device(mconfig, SONY_LDP1000, tag, owner, clock)
{
}
diff --git a/src/devices/machine/ldp1000.h b/src/devices/machine/ldp1000.h
index e5fc53f0d7e..a3655853a37 100644
--- a/src/devices/machine/ldp1000.h
+++ b/src/devices/machine/ldp1000.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_LDP1000_H
+#define MAME_MACHINE_LDP1000_H
-#ifndef __LDP1000DEV_H__
-#define __LDP1000DEV_H__
+#pragma once
#include "laserdsc.h"
@@ -27,6 +27,7 @@
// device type definition
extern const device_type SONY_LDP1000;
+DECLARE_DEVICE_TYPE(SONY_LDP1000, sony_ldp1000_device)
// ======================> sony_ldp1000_device
@@ -82,15 +83,4 @@ private:
};
-
-
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
-
-#endif
+#endif // MAME_MACHINE_LDP1000_H
diff --git a/src/devices/machine/ldp1450.cpp b/src/devices/machine/ldp1450.cpp
index 2e07e47b061..c8c4051629b 100644
--- a/src/devices/machine/ldp1450.cpp
+++ b/src/devices/machine/ldp1450.cpp
@@ -34,7 +34,7 @@ ROM_END
//**************************************************************************
// device type definition
-const device_type SONY_LDP1450 = device_creator<sony_ldp1450_device>;
+DEFINE_DEVICE_TYPE(SONY_LDP1450, sony_ldp1450_device, "ldp1450", "Sony LDP-1450")
//**************************************************************************
@@ -42,11 +42,11 @@ const device_type SONY_LDP1450 = device_creator<sony_ldp1450_device>;
//**************************************************************************
//-------------------------------------------------
-// ldp1450_device - constructor
+// sony_ldp1450_device - constructor
//-------------------------------------------------
sony_ldp1450_device::sony_ldp1450_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : laserdisc_device(mconfig, SONY_LDP1450, "Sony LDP-1450", tag, owner, clock, "ldp1450", __FILE__)
+ : laserdisc_device(mconfig, SONY_LDP1450, tag, owner, clock)
{
}
diff --git a/src/devices/machine/ldp1450.h b/src/devices/machine/ldp1450.h
index efeefcfa044..43aa866d0b3 100644
--- a/src/devices/machine/ldp1450.h
+++ b/src/devices/machine/ldp1450.h
@@ -1,14 +1,15 @@
// license:BSD-3-Clause
+// copyright-holders:Angelo Salese
/***************************************************************************
Sony LDP-1450 laserdisc emulation.
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_LDP1450_H
+#define MAME_MACHINE_LDP1450_H
-#ifndef __LDP1450DEV_H__
-#define __LDP1450DEV_H__
+#pragma once
#include "laserdsc.h"
@@ -25,7 +26,7 @@
//**************************************************************************
// device type definition
-extern const device_type SONY_LDP1450;
+DECLARE_DEVICE_TYPE(SONY_LDP1450, sony_ldp1450_device)
// ======================> sony_ldp1450_device
@@ -90,15 +91,4 @@ private:
};
-
-
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
-
-#endif
+#endif // MAME_MACHINE_LDP1450_H
diff --git a/src/devices/machine/ldpr8210.cpp b/src/devices/machine/ldpr8210.cpp
index 438eef981ee..d3a2feb4293 100644
--- a/src/devices/machine/ldpr8210.cpp
+++ b/src/devices/machine/ldpr8210.cpp
@@ -68,8 +68,8 @@
//**************************************************************************
// devices
-const device_type PIONEER_PR8210 = device_creator<pioneer_pr8210_device>;
-const device_type SIMUTREK_SPECIAL = device_creator<simutrek_special_device>;
+DEFINE_DEVICE_TYPE(PIONEER_PR8210, pioneer_pr8210_device, "pr8210", "Pioneer PR-8210")
+DEFINE_DEVICE_TYPE(SIMUTREK_SPECIAL, simutrek_special_device, "simutrek", "Simutrek Modified PR-8210")
// bitmaps for the characters
@@ -180,23 +180,12 @@ ROM_END
//-------------------------------------------------
pioneer_pr8210_device::pioneer_pr8210_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : laserdisc_device(mconfig, PIONEER_PR8210, "Pioneer PR-8210", tag, owner, clock, "pr8210", __FILE__),
- m_control(0),
- m_lastcommand(0),
- m_accumulator(0),
- m_lastcommandtime(attotime::zero),
- m_lastbittime(attotime::zero),
- m_firstbittime(attotime::zero),
- m_i8049_cpu(*this, "pr8210"),
- m_slowtrg(attotime::zero),
- m_vsync(false),
- m_i8049_port1(0),
- m_i8049_port2(0)
+ : pioneer_pr8210_device(mconfig, PIONEER_PR8210, tag, owner, clock)
{
}
-pioneer_pr8210_device::pioneer_pr8210_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : laserdisc_device(mconfig, type, name, tag, owner, clock, shortname, source),
+pioneer_pr8210_device::pioneer_pr8210_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : laserdisc_device(mconfig, type, tag, owner, clock),
m_control(0),
m_lastcommand(0),
m_accumulator(0),
@@ -891,7 +880,7 @@ ROM_END
//-------------------------------------------------
simutrek_special_device::simutrek_special_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pioneer_pr8210_device(mconfig, SIMUTREK_SPECIAL, "Simutrek Modified PR-8210", tag, owner, clock, "simutrek", __FILE__),
+ : pioneer_pr8210_device(mconfig, SIMUTREK_SPECIAL, tag, owner, clock),
m_i8748_cpu(*this, "simutrek"),
m_audio_squelch(0),
m_data(0),
diff --git a/src/devices/machine/ldpr8210.h b/src/devices/machine/ldpr8210.h
index 0f56d7e144c..9df357decaf 100644
--- a/src/devices/machine/ldpr8210.h
+++ b/src/devices/machine/ldpr8210.h
@@ -8,10 +8,10 @@
*************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_LDPR8210_H
+#define MAME_MACHINE_LDPR8210_H
-#ifndef __LDPR8210_H__
-#define __LDPR8210_H__
+#pragma once
#include "laserdsc.h"
#include "cpu/mcs48/mcs48.h"
@@ -32,8 +32,8 @@
//**************************************************************************
// device type definition
-extern const device_type PIONEER_PR8210;
-extern const device_type SIMUTREK_SPECIAL;
+DECLARE_DEVICE_TYPE(PIONEER_PR8210, pioneer_pr8210_device)
+DECLARE_DEVICE_TYPE(SIMUTREK_SPECIAL, simutrek_special_device)
@@ -41,22 +41,6 @@ extern const device_type SIMUTREK_SPECIAL;
// TYPE DEFINITIONS
//**************************************************************************
-// pioneer PIA subclass
-class pioneer_pia
-{
-public:
- uint8_t frame[7]; // (20-26) 7 characters for the chapter/frame
- uint8_t text[17]; // (20-30) 17 characters for the display
- uint8_t control; // (40) control lines
- uint8_t latchdisplay; // flag: set if the display was latched
- uint8_t portb; // (60) port B value (LEDs)
- uint8_t display; // (80) display enable
- uint8_t porta; // (A0) port A value (from serial decoder)
- uint8_t vbi1; // (C0) VBI decoding state 1
- uint8_t vbi2; // (E0) VBI decoding state 2
-};
-
-
// ======================> pioneer_pr8210_device
// base pr8210 class
@@ -65,7 +49,6 @@ class pioneer_pr8210_device : public laserdisc_device
public:
// construction/destruction
pioneer_pr8210_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- pioneer_pr8210_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// input and output
void control_w(uint8_t data);
@@ -79,6 +62,8 @@ protected:
TID_FIRST_SUBCLASS_TIMER
};
+ pioneer_pr8210_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -110,6 +95,21 @@ public:
DECLARE_READ_LINE_MEMBER( i8049_t1_r );
protected:
+ // pioneer PIA subclass
+ class pioneer_pia
+ {
+ public:
+ uint8_t frame[7]; // (20-26) 7 characters for the chapter/frame
+ uint8_t text[17]; // (20-30) 17 characters for the display
+ uint8_t control; // (40) control lines
+ uint8_t latchdisplay; // flag: set if the display was latched
+ uint8_t portb; // (60) port B value (LEDs)
+ uint8_t display; // (80) display enable
+ uint8_t porta; // (A0) port A value (from serial decoder)
+ uint8_t vbi1; // (C0) VBI decoding state 1
+ uint8_t vbi2; // (E0) VBI decoding state 2
+ };
+
// internal overlay helpers
void overlay_draw_group(bitmap_yuy16 &bitmap, const uint8_t *text, int count, float xstart);
void overlay_erase(bitmap_yuy16 &bitmap, float xstart, float xend);
@@ -189,5 +189,4 @@ protected:
uint8_t m_controlthis; // latched value for our control over the current pair of fields
};
-
-#endif
+#endif // MAME_MACHINE_LDPR8210_H
diff --git a/src/devices/machine/ldstub.cpp b/src/devices/machine/ldstub.cpp
index 219df8ec3d3..9d3dab58ce3 100644
--- a/src/devices/machine/ldstub.cpp
+++ b/src/devices/machine/ldstub.cpp
@@ -17,5 +17,17 @@
//**************************************************************************
// device type definition
-const device_type PIONEER_PR7820 = device_creator<pioneer_pr7820_device>;
-const device_type PHILLIPS_22VP932 = device_creator<phillips_22vp932_device>;
+DEFINE_DEVICE_TYPE(PIONEER_PR7820, pioneer_pr7820_device, "pr7820", "Pioneer PR-7820")
+DEFINE_DEVICE_TYPE(PHILLIPS_22VP932, phillips_22vp932_device, "22vp932", "Phillips 22VP932")
+
+
+pioneer_pr7820_device::pioneer_pr7820_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : laserdisc_device(mconfig, PIONEER_PR7820, tag, owner, clock)
+{
+}
+
+
+phillips_22vp932_device::phillips_22vp932_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : laserdisc_device(mconfig, PHILLIPS_22VP932, tag, owner, clock)
+{
+}
diff --git a/src/devices/machine/ldstub.h b/src/devices/machine/ldstub.h
index 41d638f42ae..4bf463b897d 100644
--- a/src/devices/machine/ldstub.h
+++ b/src/devices/machine/ldstub.h
@@ -8,10 +8,10 @@
*************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_LDSTUB_H
+#define MAME_MACHINE_LDSTUB_H
-#ifndef __LDSTUB_H__
-#define __LDSTUB_H__
+#pragma once
#include "laserdsc.h"
@@ -31,8 +31,8 @@
//**************************************************************************
// device type definition
-extern const device_type PIONEER_PR7820;
-extern const device_type PHILLIPS_22VP932;
+DECLARE_DEVICE_TYPE(PIONEER_PR7820, pioneer_pr7820_device)
+DECLARE_DEVICE_TYPE(PHILLIPS_22VP932, phillips_22vp932_device)
@@ -46,8 +46,7 @@ class pioneer_pr7820_device : public laserdisc_device
{
public:
// construction/destruction
- pioneer_pr7820_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : laserdisc_device(mconfig, PIONEER_PR7820, "Pioneer PR-7820", tag, owner, clock, "pr7820", __FILE__) { }
+ pioneer_pr7820_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// input/output
uint8_t data_available_r() { return CLEAR_LINE; }
@@ -70,8 +69,7 @@ class phillips_22vp932_device : public laserdisc_device
{
public:
// construction/destruction
- phillips_22vp932_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : laserdisc_device(mconfig, PHILLIPS_22VP932, "Phillips 22VP932", tag, owner, clock, "22vp932", __FILE__) { }
+ phillips_22vp932_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// input/output
uint8_t data_r() { return 0; }
@@ -86,4 +84,4 @@ protected:
};
-#endif
+#endif // MAME_MACHINE_LDSTUB_H
diff --git a/src/devices/machine/ldv1000.cpp b/src/devices/machine/ldv1000.cpp
index 47ffb93c5c4..54a2348f30f 100644
--- a/src/devices/machine/ldv1000.cpp
+++ b/src/devices/machine/ldv1000.cpp
@@ -52,7 +52,7 @@
//**************************************************************************
// devices
-const device_type PIONEER_LDV1000 = device_creator<pioneer_ldv1000_device>;
+DEFINE_DEVICE_TYPE(PIONEER_LDV1000, pioneer_ldv1000_device, "ldv1000", "Pioneer LD-V1000")
@@ -122,7 +122,7 @@ ROM_END
//-------------------------------------------------
pioneer_ldv1000_device::pioneer_ldv1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : laserdisc_device(mconfig, PIONEER_LDV1000, "Pioneer LD-V1000", tag, owner, clock, "ldv1000", __FILE__),
+ : laserdisc_device(mconfig, PIONEER_LDV1000, tag, owner, clock),
m_z80_cpu(*this, "ldv1000"),
m_z80_ctc(*this, "ldvctc"),
m_multitimer(nullptr),
diff --git a/src/devices/machine/ldv1000.h b/src/devices/machine/ldv1000.h
index a8cadf1f9a8..58e9fa296c4 100644
--- a/src/devices/machine/ldv1000.h
+++ b/src/devices/machine/ldv1000.h
@@ -8,10 +8,10 @@
*************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_LDV1000_H
+#define MAME_MACHINE_LDV1000_H
-#ifndef __LDV1000_H__
-#define __LDV1000_H__
+#pragma once
#include "laserdsc.h"
#include "cpu/z80/z80.h"
@@ -36,7 +36,7 @@
//**************************************************************************
// device type definition
-extern const device_type PIONEER_LDV1000;
+DECLARE_DEVICE_TYPE(PIONEER_LDV1000, pioneer_ldv1000_device)
@@ -53,7 +53,7 @@ public:
// construction/destruction
pioneer_ldv1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _cmd_strobe_cb> devcb_base &set_command_strobe_callback(_cmd_strobe_cb latch) { return m_command_strobe_cb.set_callback(latch); }
+ template <class cmd_strobe_cb> devcb_base &set_command_strobe_callback(cmd_strobe_cb &&latch) { return m_command_strobe_cb.set_callback(std::forward<cmd_strobe_cb>(latch)); }
// input and output
void data_w(uint8_t data);
@@ -132,5 +132,4 @@ protected:
};
-
-#endif
+#endif // MAME_MACHINE_LDV1000_H
diff --git a/src/devices/machine/ldvp931.cpp b/src/devices/machine/ldvp931.cpp
index 37943efe405..4d3e5758201 100644
--- a/src/devices/machine/ldvp931.cpp
+++ b/src/devices/machine/ldvp931.cpp
@@ -45,7 +45,7 @@
//**************************************************************************
// devices
-const device_type PHILLIPS_22VP931 = device_creator<phillips_22vp931_device>;
+DEFINE_DEVICE_TYPE(PHILLIPS_22VP931, phillips_22vp931_device, "22vp931", "Phillips 22VP931")
@@ -89,7 +89,7 @@ ROM_END
//-------------------------------------------------
phillips_22vp931_device::phillips_22vp931_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : laserdisc_device(mconfig, PHILLIPS_22VP931, "Phillips 22VP931", tag, owner, clock, "22vp931", __FILE__),
+ : laserdisc_device(mconfig, PHILLIPS_22VP931, tag, owner, clock),
m_i8049_cpu(*this, "vp931"),
m_tracktimer(nullptr),
m_i8049_out0(0),
diff --git a/src/devices/machine/ldvp931.h b/src/devices/machine/ldvp931.h
index 963b6e70cb6..5136818ceeb 100644
--- a/src/devices/machine/ldvp931.h
+++ b/src/devices/machine/ldvp931.h
@@ -8,10 +8,10 @@
*************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_LDVP931_H
+#define MAME_MACHINE_LDVP931_H
-#ifndef __LDVP931_H__
-#define __LDVP931_H__
+#pragma once
#include "laserdsc.h"
#include "cpu/mcs48/mcs48.h"
@@ -30,7 +30,7 @@
//**************************************************************************
// device type definition
-extern const device_type PHILLIPS_22VP931;
+DECLARE_DEVICE_TYPE(PHILLIPS_22VP931, phillips_22vp931_device)
@@ -134,5 +134,4 @@ protected:
int16_t m_advanced; // number of frames advanced
};
-
-#endif
+#endif // MAME_MACHINE_LDVP931_H
diff --git a/src/devices/machine/legscsi.cpp b/src/devices/machine/legscsi.cpp
index 03b73b09ec9..c379c797f73 100644
--- a/src/devices/machine/legscsi.cpp
+++ b/src/devices/machine/legscsi.cpp
@@ -3,8 +3,8 @@
#include "emu.h"
#include "legscsi.h"
-legacy_scsi_host_adapter::legacy_scsi_host_adapter(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+legacy_scsi_host_adapter::legacy_scsi_host_adapter(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_selected(0)
, m_scsi_port(*this, finder_base::DUMMY_TAG)
{
@@ -49,7 +49,7 @@ void legacy_scsi_host_adapter::send_command(uint8_t *data, int bytes)
}
else
{
- logerror("%s: send_command unknown SCSI id %d\n", tag(), m_selected);
+ logerror("send_command unknown SCSI id %d\n", m_selected);
}
}
@@ -64,7 +64,7 @@ int legacy_scsi_host_adapter::get_length(void)
}
else
{
- logerror("%s: get_length unknown SCSI id %d\n", tag(), m_selected);
+ logerror("get_length unknown SCSI id %d\n", m_selected);
return 0;
}
}
@@ -80,7 +80,7 @@ int legacy_scsi_host_adapter::get_phase(void)
}
else
{
- logerror("%s: get_phase unknown SCSI id %d\n", tag(), m_selected);
+ logerror("get_phase unknown SCSI id %d\n", m_selected);
return 0;
}
}
@@ -94,7 +94,7 @@ void legacy_scsi_host_adapter::read_data(uint8_t *data, int bytes)
}
else
{
- logerror("%s: read_data unknown SCSI id %d\n", tag(), m_selected);
+ logerror("read_data unknown SCSI id %d\n", m_selected);
}
}
@@ -107,7 +107,7 @@ void legacy_scsi_host_adapter::write_data(uint8_t *data, int bytes)
}
else
{
- logerror("%s: write_data unknown SCSI id %d\n", tag(), m_selected);
+ logerror("write_data unknown SCSI id %d\n", m_selected);
}
}
@@ -126,17 +126,17 @@ uint8_t legacy_scsi_host_adapter::get_status()
}
else
{
- logerror("%s: get_status unknown SCSI id %d\n", tag(), m_selected);
+ logerror("get_status unknown SCSI id %d\n", m_selected);
return 0;
}
}
scsihle_device *legacy_scsi_host_adapter::get_device(int id)
{
- // steal scsi devices from bus
+ // steal SCSI devices from bus
for (device_t &device : m_scsi_port->subdevices())
{
- SCSI_PORT_SLOT_device *slot = dynamic_cast<SCSI_PORT_SLOT_device *>(&device);
+ scsi_port_slot_device *slot = dynamic_cast<scsi_port_slot_device *>(&device);
if (slot != nullptr)
{
scsihle_device *scsidev = dynamic_cast<scsihle_device *>(slot->dev());
diff --git a/src/devices/machine/legscsi.h b/src/devices/machine/legscsi.h
index 09384c8585d..cf6482f0067 100644
--- a/src/devices/machine/legscsi.h
+++ b/src/devices/machine/legscsi.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#ifndef _LEGSCSI_H_
-#define _LEGSCSI_H_
+#ifndef MAME_MACHINE_LEGSCSI_H
+#define MAME_MACHINE_LEGSCSI_H
#pragma once
@@ -13,11 +13,11 @@
class legacy_scsi_host_adapter : public device_t
{
public:
- legacy_scsi_host_adapter(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
static void set_scsi_port(device_t &device, const char *tag) { downcast<legacy_scsi_host_adapter &>(device).m_scsi_port.set_tag(tag); }
protected:
+ legacy_scsi_host_adapter(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
void reset_bus();
@@ -33,7 +33,7 @@ private:
int m_selected;
scsihle_device *get_device(int id);
- required_device<SCSI_PORT_DEVICE> m_scsi_port;
+ required_device<scsi_port_device> m_scsi_port;
};
-#endif
+#endif // MAME_MACHINE_LEGSCSI_H
diff --git a/src/devices/machine/lh5810.cpp b/src/devices/machine/lh5810.cpp
index 590037aa940..8e427ab3bcf 100644
--- a/src/devices/machine/lh5810.cpp
+++ b/src/devices/machine/lh5810.cpp
@@ -13,11 +13,32 @@
#include "emu.h"
#include "lh5810.h"
+//*************************************************************************
+// MACROS / CONSTANTS
+//*************************************************************************
+
+enum
+{
+ LH5810_RESET = 4,
+ LH5810_U,
+ LH5810_L,
+ LH5820_F,
+ LH5810_OPC,
+ LH5810_G,
+ LH5810_MSK,
+ LH5810_IF,
+ LH5810_DDA,
+ LH5810_DDB,
+ LH5810_OPA,
+ LH5810_OPB
+};
+
+
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
-const device_type LH5810 = device_creator<lh5810_device>;
+DEFINE_DEVICE_TYPE(LH5810, lh5810_device, "lh5810", "LH5810 I/O Port")
//**************************************************************************
// LIVE DEVICE
@@ -28,13 +49,14 @@ const device_type LH5810 = device_creator<lh5810_device>;
//-------------------------------------------------
lh5810_device::lh5810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, LH5810, "LH5810", tag, owner, clock, "lh5810", __FILE__),
- m_porta_r_cb(*this),
- m_porta_w_cb(*this),
- m_portb_r_cb(*this),
- m_portb_w_cb(*this),
- m_portc_w_cb(*this),
- m_out_int_cb(*this), m_irq(0)
+ : device_t(mconfig, LH5810, tag, owner, clock)
+ , m_porta_r_cb(*this)
+ , m_porta_w_cb(*this)
+ , m_portb_r_cb(*this)
+ , m_portb_w_cb(*this)
+ , m_portc_w_cb(*this)
+ , m_out_int_cb(*this)
+ , m_irq(0)
{
}
diff --git a/src/devices/machine/lh5810.h b/src/devices/machine/lh5810.h
index ffb4fd4ccbe..8e105a01f2e 100644
--- a/src/devices/machine/lh5810.h
+++ b/src/devices/machine/lh5810.h
@@ -6,31 +6,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __LH5810__
-#define __LH5810__
-
+#ifndef MAME_MACHINE_LH5810_H
+#define MAME_MACHINE_LH5810_H
-//*************************************************************************
-// MACROS / CONSTANTS
-//*************************************************************************
-
-enum
-{
- LH5810_RESET = 4,
- LH5810_U,
- LH5810_L,
- LH5820_F,
- LH5810_OPC,
- LH5810_G,
- LH5810_MSK,
- LH5810_IF,
- LH5810_DDA,
- LH5810_DDB,
- LH5810_OPA,
- LH5810_OPB
-};
+#pragma once
//*************************************************************************
@@ -63,18 +42,18 @@ enum
// ======================> lh5810_device
-class lh5810_device : public device_t
+class lh5810_device : public device_t
{
public:
// construction/destruction
lh5810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_porta_r_callback(device_t &device, _Object object) { return downcast<lh5810_device &>(device).m_porta_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_porta_w_callback(device_t &device, _Object object) { return downcast<lh5810_device &>(device).m_porta_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_portb_r_callback(device_t &device, _Object object) { return downcast<lh5810_device &>(device).m_portb_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_portb_w_callback(device_t &device, _Object object) { return downcast<lh5810_device &>(device).m_portb_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_portc_w_callback(device_t &device, _Object object) { return downcast<lh5810_device &>(device).m_portc_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<lh5810_device &>(device).m_out_int_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_porta_r_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_porta_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_porta_w_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_porta_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portb_r_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_portb_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portb_w_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_portb_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portc_w_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_portc_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<lh5810_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( data_w );
@@ -100,6 +79,6 @@ private:
// device type definition
-extern const device_type LH5810;
+DECLARE_DEVICE_TYPE(LH5810, lh5810_device)
-#endif
+#endif // MAME_MACHINE_LH5810_H
diff --git a/src/devices/machine/linflash.cpp b/src/devices/machine/linflash.cpp
index a068997240c..3943adf515c 100644
--- a/src/devices/machine/linflash.cpp
+++ b/src/devices/machine/linflash.cpp
@@ -3,10 +3,16 @@
#include "emu.h"
#include "linflash.h"
-linear_flash_pccard_device::linear_flash_pccard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+DEFINE_DEVICE_TYPE(LINEAR_FLASH_PCCARD_16MB, linear_flash_pccard_16mb_device, "linearflash16mb", "Linear Flash PC Card (16MB)")
+DEFINE_DEVICE_TYPE(LINEAR_FLASH_PCCARD_32MB, linear_flash_pccard_32mb_device, "linearflash32mb", "Linear Flash PC Card (32MB)")
+DEFINE_DEVICE_TYPE(LINEAR_FLASH_PCCARD_64MB, linear_flash_pccard_64mb_device, "linearflash64mb", "Linear Flash PC Card (64MB)")
+
+
+linear_flash_pccard_device::linear_flash_pccard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_memory_interface(mconfig, *this),
- device_slot_card_interface(mconfig, *this), m_space(nullptr)
+ device_slot_card_interface(mconfig, *this),
+ m_space(nullptr)
{
}
@@ -15,9 +21,9 @@ void linear_flash_pccard_device::device_start()
m_space = &space(AS_0);
}
-const address_space_config *linear_flash_pccard_device::memory_space_config( address_spacenum spacenum ) const
+const address_space_config *linear_flash_pccard_device::memory_space_config(address_spacenum spacenum) const
{
- return ( spacenum == AS_0 ) ? &m_space_config : nullptr;
+ return (spacenum == AS_0) ? &m_space_config : nullptr;
}
READ16_MEMBER( linear_flash_pccard_device::read_memory )
@@ -34,8 +40,6 @@ WRITE16_MEMBER( linear_flash_pccard_device::write_memory )
}
-const device_type LINEAR_FLASH_PCCARD_16MB = device_creator<linear_flash_pccard_16mb_device>;
-
static ADDRESS_MAP_START(linear_flash_pccard_16mb, AS_0, 16, linear_flash_pccard_16mb_device)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1l", intelfsh8_device, read, write, 0x00ff)
@@ -49,7 +53,7 @@ static ADDRESS_MAP_START(linear_flash_pccard_16mb, AS_0, 16, linear_flash_pccard
ADDRESS_MAP_END
linear_flash_pccard_16mb_device::linear_flash_pccard_16mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- linear_flash_pccard_device(mconfig, LINEAR_FLASH_PCCARD_16MB, "Linear Flash PCCARD (16MB)", tag, owner, clock, "linearflash16mb", __FILE__)
+ linear_flash_pccard_device(mconfig, LINEAR_FLASH_PCCARD_16MB, tag, owner, clock)
{
m_space_config = address_space_config("memory", ENDIANNESS_LITTLE, 16, 26, 0, *ADDRESS_MAP_NAME( linear_flash_pccard_16mb ) );
}
@@ -71,8 +75,6 @@ machine_config_constructor linear_flash_pccard_16mb_device::device_mconfig_addit
}
-const device_type LINEAR_FLASH_PCCARD_32MB = device_creator<linear_flash_pccard_32mb_device>;
-
static ADDRESS_MAP_START(linear_flash_pccard_32mb, AS_0, 16, linear_flash_pccard_32mb_device)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1l", intelfsh8_device, read, write, 0x00ff)
@@ -94,7 +96,7 @@ static ADDRESS_MAP_START(linear_flash_pccard_32mb, AS_0, 16, linear_flash_pccard
ADDRESS_MAP_END
linear_flash_pccard_32mb_device::linear_flash_pccard_32mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- linear_flash_pccard_device(mconfig, LINEAR_FLASH_PCCARD_32MB, "Linear Flash PCCARD (32MB)", tag, owner, clock, "linearflash32mb", __FILE__)
+ linear_flash_pccard_device(mconfig, LINEAR_FLASH_PCCARD_32MB, tag, owner, clock)
{
m_space_config = address_space_config("memory", ENDIANNESS_LITTLE, 16, 26, 0, *ADDRESS_MAP_NAME( linear_flash_pccard_32mb ) );
}
@@ -124,8 +126,6 @@ machine_config_constructor linear_flash_pccard_32mb_device::device_mconfig_addit
}
-const device_type LINEAR_FLASH_PCCARD_64MB = device_creator<linear_flash_pccard_64mb_device>;
-
static ADDRESS_MAP_START(linear_flash_pccard_64mb, AS_0, 16, linear_flash_pccard_64mb_device)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1l", intelfsh8_device, read, write, 0x00ff)
@@ -163,7 +163,7 @@ static ADDRESS_MAP_START(linear_flash_pccard_64mb, AS_0, 16, linear_flash_pccard
ADDRESS_MAP_END
linear_flash_pccard_64mb_device::linear_flash_pccard_64mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- linear_flash_pccard_device(mconfig, LINEAR_FLASH_PCCARD_64MB, "Linear Flash PCCARD (64MB)", tag, owner, clock, "linearflash64mb", __FILE__)
+ linear_flash_pccard_device(mconfig, LINEAR_FLASH_PCCARD_64MB, tag, owner, clock)
{
m_space_config = address_space_config("memory", ENDIANNESS_LITTLE, 16, 26, 0, *ADDRESS_MAP_NAME( linear_flash_pccard_64mb ) );
}
diff --git a/src/devices/machine/linflash.h b/src/devices/machine/linflash.h
index 10428bb7df5..f6d58a33f93 100644
--- a/src/devices/machine/linflash.h
+++ b/src/devices/machine/linflash.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#pragma once
+#ifndef MAME_MACHINE_LINFLASH_H
+#define MAME_MACHINE_LINFLASH_H
-#ifndef __LINFLASH_H__
-#define __LINFLASH_H__
+#pragma once
#include "intelfsh.h"
#include "machine/pccard.h"
@@ -18,21 +18,19 @@ public:
virtual DECLARE_WRITE16_MEMBER(write_memory) override;
protected:
- linear_flash_pccard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source);
+ linear_flash_pccard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config( address_spacenum spacenum = AS_0 ) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
address_space_config m_space_config;
address_space *m_space;
};
-extern const device_type LINEAR_FLASH_PCCARD_16MB;
-
class linear_flash_pccard_16mb_device : public linear_flash_pccard_device
{
public:
@@ -44,8 +42,6 @@ protected:
};
-extern const device_type LINEAR_FLASH_PCCARD_32MB;
-
class linear_flash_pccard_32mb_device : public linear_flash_pccard_device
{
public:
@@ -56,7 +52,6 @@ protected:
virtual machine_config_constructor device_mconfig_additions() const override;
};
-extern const device_type LINEAR_FLASH_PCCARD_64MB;
class linear_flash_pccard_64mb_device : public linear_flash_pccard_device
{
@@ -68,4 +63,9 @@ protected:
virtual machine_config_constructor device_mconfig_additions() const override;
};
-#endif
+
+DECLARE_DEVICE_TYPE(LINEAR_FLASH_PCCARD_16MB, linear_flash_pccard_16mb_device)
+DECLARE_DEVICE_TYPE(LINEAR_FLASH_PCCARD_32MB, linear_flash_pccard_32mb_device)
+DECLARE_DEVICE_TYPE(LINEAR_FLASH_PCCARD_64MB, linear_flash_pccard_64mb_device)
+
+#endif // MAME_MACHINE_LINFLASH_H
diff --git a/src/devices/machine/lpc-acpi.cpp b/src/devices/machine/lpc-acpi.cpp
index 0b18a7fe15b..3d584c72cdd 100644
--- a/src/devices/machine/lpc-acpi.cpp
+++ b/src/devices/machine/lpc-acpi.cpp
@@ -3,7 +3,7 @@
#include "emu.h"
#include "lpc-acpi.h"
-const device_type LPC_ACPI = device_creator<lpc_acpi_device>;
+DEFINE_DEVICE_TYPE(LPC_ACPI, lpc_acpi_device, "lpc_acpi", "LPC ACPI")
DEVICE_ADDRESS_MAP_START(map, 32, lpc_acpi_device)
AM_RANGE(0x00, 0x03) AM_READWRITE16(pm1_sts_r, pm1_sts_w, 0x0000ffff)
@@ -38,7 +38,7 @@ DEVICE_ADDRESS_MAP_START(map, 32, lpc_acpi_device)
ADDRESS_MAP_END
lpc_acpi_device::lpc_acpi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : lpc_device(mconfig, LPC_ACPI, "LPC ACPI", tag, owner, clock, "lpc_acpi", __FILE__)
+ : lpc_device(mconfig, LPC_ACPI, tag, owner, clock)
{
}
diff --git a/src/devices/machine/lpc-acpi.h b/src/devices/machine/lpc-acpi.h
index 68badc4c337..0159f974517 100644
--- a/src/devices/machine/lpc-acpi.h
+++ b/src/devices/machine/lpc-acpi.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef LPC_ACPI_H
-#define LPC_ACPI_H
+#ifndef MAME_MACHINE_LPC_ACPI_H
+#define MAME_MACHINE_LPC_ACPI_H
+
+#pragma once
#include "lpc.h"
@@ -83,6 +85,6 @@ private:
DECLARE_ADDRESS_MAP(map, 32);
};
-extern const device_type LPC_ACPI;
+DECLARE_DEVICE_TYPE(LPC_ACPI, lpc_acpi_device)
-#endif
+#endif // MAME_MACHINE_LPC_ACPI_H
diff --git a/src/devices/machine/lpc-pit.cpp b/src/devices/machine/lpc-pit.cpp
index 803c7fd0aee..dea817513bf 100644
--- a/src/devices/machine/lpc-pit.cpp
+++ b/src/devices/machine/lpc-pit.cpp
@@ -3,7 +3,7 @@
#include "emu.h"
#include "lpc-pit.h"
-const device_type LPC_PIT = device_creator<lpc_pit_device>;
+DEFINE_DEVICE_TYPE(LPC_PIT, lpc_pit_device, "lpc_pit", "LPC PIT")
DEVICE_ADDRESS_MAP_START(map, 32, lpc_pit_device)
AM_RANGE(0x40, 0x43) AM_READWRITE8(status_r, access_w, 0x00ffffff)
@@ -13,7 +13,7 @@ DEVICE_ADDRESS_MAP_START(map, 32, lpc_pit_device)
ADDRESS_MAP_END
lpc_pit_device::lpc_pit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : lpc_device(mconfig, LPC_PIT, "LPC PIT", tag, owner, clock, "lpc_pit", __FILE__)
+ : lpc_device(mconfig, LPC_PIT, tag, owner, clock)
{
}
diff --git a/src/devices/machine/lpc-pit.h b/src/devices/machine/lpc-pit.h
index 25fad7f05d2..fd0046d1d7c 100644
--- a/src/devices/machine/lpc-pit.h
+++ b/src/devices/machine/lpc-pit.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef LPC_PIT_H
-#define LPC_PIT_H
+#ifndef MAME_MACHINE_LPC_PIT_H
+#define MAME_MACHINE_LPC_PIT_H
+
+#pragma once
#include "lpc.h"
@@ -27,6 +29,6 @@ private:
DECLARE_ADDRESS_MAP(map, 32);
};
-extern const device_type LPC_PIT;
+DECLARE_DEVICE_TYPE(LPC_PIT, lpc_pit_device)
-#endif
+#endif // MAME_MACHINE_LPC_PIT_H
diff --git a/src/devices/machine/lpc-rtc.cpp b/src/devices/machine/lpc-rtc.cpp
index 65c49650e0c..ff9c942b50e 100644
--- a/src/devices/machine/lpc-rtc.cpp
+++ b/src/devices/machine/lpc-rtc.cpp
@@ -3,7 +3,7 @@
#include "emu.h"
#include "lpc-rtc.h"
-const device_type LPC_RTC = device_creator<lpc_rtc_device>;
+DEFINE_DEVICE_TYPE(LPC_RTC, lpc_rtc_device, "lpc_rpc", "LPC RTC")
DEVICE_ADDRESS_MAP_START(map, 32, lpc_rtc_device)
AM_RANGE(0x70, 0x77) AM_READWRITE8(index_r, index_w, 0x00ff00ff)
@@ -16,7 +16,7 @@ DEVICE_ADDRESS_MAP_START(extmap, 32, lpc_rtc_device)
ADDRESS_MAP_END
lpc_rtc_device::lpc_rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : lpc_device(mconfig, LPC_RTC, "LPC RTC", tag, owner, clock, "lpc_rtc", __FILE__), cur_index(0), cur_extindex(0)
+ : lpc_device(mconfig, LPC_RTC, tag, owner, clock), cur_index(0), cur_extindex(0)
{
}
diff --git a/src/devices/machine/lpc-rtc.h b/src/devices/machine/lpc-rtc.h
index c4c1c611867..2d00084dbd2 100644
--- a/src/devices/machine/lpc-rtc.h
+++ b/src/devices/machine/lpc-rtc.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef LPC_RTC_H
-#define LPC_RTC_H
+#ifndef MAME_MACHINE_LPC_RTC_H
+#define MAME_MACHINE_LPC_RTC_H
+
+#pragma once
#include "lpc.h"
@@ -39,6 +41,6 @@ private:
uint8_t ram[256];
};
-extern const device_type LPC_RTC;
+DECLARE_DEVICE_TYPE(LPC_RTC, lpc_rtc_device)
-#endif
+#endif // MAME_MACHINE_LPC_RTC_H
diff --git a/src/devices/machine/lpc.cpp b/src/devices/machine/lpc.cpp
deleted file mode 100644
index b1903fb6cfc..00000000000
--- a/src/devices/machine/lpc.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Olivier Galibert
-#include "emu.h"
-#include "lpc.h"
-
-lpc_device::lpc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source)
-{
-}
diff --git a/src/devices/machine/lpc.h b/src/devices/machine/lpc.h
index 5f1c80ee8a2..5c673f751fc 100644
--- a/src/devices/machine/lpc.h
+++ b/src/devices/machine/lpc.h
@@ -1,15 +1,18 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef LPC_H
-#define LPC_H
+#ifndef MAME_MACHINE_LPC_H
+#define MAME_MACHINE_LPC_H
+
+#pragma once
class lpc_device : public device_t {
public:
- lpc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
virtual void map_device(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) = 0;
+
+protected:
+ using device_t::device_t;
};
-#endif
+#endif // MAME_MACHINE_LPC_H
diff --git a/src/devices/machine/lpci.cpp b/src/devices/machine/lpci.cpp
index ac94da1be17..9f5ad8dff88 100644
--- a/src/devices/machine/lpci.cpp
+++ b/src/devices/machine/lpci.cpp
@@ -74,13 +74,15 @@
#include "emu.h"
#include "machine/lpci.h"
-#define LOG_PCI 0
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PCI_BUS_LEGACY = device_creator<pci_bus_legacy_device>;
+DEFINE_DEVICE_TYPE(PCI_BUS_LEGACY, pci_bus_legacy_device, "pci_bus_legacy", "PCI Bus Legacy")
//**************************************************************************
// LIVE DEVICE
@@ -90,8 +92,8 @@ const device_type PCI_BUS_LEGACY = device_creator<pci_bus_legacy_device>;
// pci_bus_legacy_device - constructor
//-------------------------------------------------
pci_bus_legacy_device::pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PCI_BUS_LEGACY, "PCI Bus Legacy", tag, owner, clock, "pci_bus_legacy", __FILE__),
- m_father(nullptr)
+ device_t(mconfig, PCI_BUS_LEGACY, tag, owner, clock),
+ m_father(nullptr)
{
for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) {
m_devtag[i]= nullptr;
@@ -132,8 +134,7 @@ READ32_MEMBER( pci_bus_legacy_device::read )
break;
}
- if (LOG_PCI)
- logerror("read('%s'): offset=%d result=0x%08X\n", tag(), offset, result);
+ LOG("read('%s'): offset=%d result=0x%08X\n", tag(), offset, result);
return result;
}
@@ -164,8 +165,7 @@ WRITE32_MEMBER( pci_bus_legacy_device::write )
{
offset %= 2;
- if (LOG_PCI)
- logerror("write('%s'): offset=%d data=0x%08X\n", tag(), offset, data);
+ LOG("write('%s'): offset=%d data=0x%08X\n", tag(), offset, data);
switch (offset)
{
@@ -185,8 +185,7 @@ WRITE32_MEMBER( pci_bus_legacy_device::write )
}
else
m_devicenum = -1;
- if (LOG_PCI)
- logerror(" bus:%d device:%d\n", busnum, devicenum);
+ LOG(" bus:%d device:%d\n", busnum, devicenum);
}
break;
@@ -200,8 +199,7 @@ WRITE32_MEMBER( pci_bus_legacy_device::write )
int reg = (m_address >> 0) & 0xfc;
(*write)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, data, mem_mask);
}
- if (LOG_PCI)
- logerror(" function:%d register:%d\n", (m_address >> 8) & 0x07, (m_address >> 0) & 0xfc);
+ LOG(" function:%d register:%d\n", (m_address >> 8) & 0x07, (m_address >> 0) & 0xfc);
}
break;
}
diff --git a/src/devices/machine/lpci.h b/src/devices/machine/lpci.h
index b53b3fe1ae0..06ed6090e51 100644
--- a/src/devices/machine/lpci.h
+++ b/src/devices/machine/lpci.h
@@ -8,8 +8,10 @@
***************************************************************************/
-#ifndef LPCI_H
-#define LPCI_H
+#ifndef MAME_MACHINE_LPCI_H
+#define MAME_MACHINE_LPCI_H
+
+#pragma once
//**************************************************************************
// TYPE DEFINITIONS
@@ -64,7 +66,7 @@ private:
};
// device type definition
-extern const device_type PCI_BUS_LEGACY;
+DECLARE_DEVICE_TYPE(PCI_BUS_LEGACY, pci_bus_legacy_device)
/***************************************************************************
@@ -80,4 +82,4 @@ extern const device_type PCI_BUS_LEGACY;
downcast<pci_bus_legacy_device *>(device)->set_father(_father_tag);
-#endif /* PCI_H */
+#endif // MAME_MACHINE_LPCI_H
diff --git a/src/devices/machine/m6m80011ap.cpp b/src/devices/machine/m6m80011ap.cpp
index 9fedabf18a9..79d7073c331 100644
--- a/src/devices/machine/m6m80011ap.cpp
+++ b/src/devices/machine/m6m80011ap.cpp
@@ -1,10 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Angelo Salese
-/***************************************************************************
-
-Template for skeleton device
-
-***************************************************************************/
#include "emu.h"
#include "machine/m6m80011ap.h"
@@ -16,7 +11,7 @@ Template for skeleton device
//**************************************************************************
// device type definition
-const device_type M6M80011AP = device_creator<m6m80011ap_device>;
+DEFINE_DEVICE_TYPE(M6M80011AP, m6m80011ap_device, "m6m80011ap", "M6M80011AP EEPROM")
//**************************************************************************
@@ -28,8 +23,9 @@ const device_type M6M80011AP = device_creator<m6m80011ap_device>;
//-------------------------------------------------
m6m80011ap_device::m6m80011ap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, M6M80011AP, "M6M80011AP EEPROM", tag, owner, clock, "m6m80011ap", __FILE__),
- device_nvram_interface(mconfig, *this), m_latch(0), m_reset_line(0), m_cmd_stream_pos(0), m_current_cmd(0), m_read_latch(0), m_current_addr(0), m_eeprom_we(0), m_eeprom_state()
+ : device_t(mconfig, M6M80011AP, tag, owner, clock)
+ , device_nvram_interface(mconfig, *this)
+ , m_latch(0), m_reset_line(0), m_cmd_stream_pos(0), m_current_cmd(0), m_read_latch(0), m_current_addr(0), m_eeprom_we(0), m_eeprom_state()
{
}
diff --git a/src/devices/machine/m6m80011ap.h b/src/devices/machine/m6m80011ap.h
index cbd2e185669..0f30ccb3505 100644
--- a/src/devices/machine/m6m80011ap.h
+++ b/src/devices/machine/m6m80011ap.h
@@ -1,16 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Angelo Salese
-/***************************************************************************
-
-Template for skeleton device
-
-***************************************************************************/
+#ifndef MAME_MACHINE_M6M80011AP_H
+#define MAME_MACHINE_M6M80011AP_H
#pragma once
-#ifndef __M6M80011APDEV_H__
-#define __M6M80011APDEV_H__
-
//**************************************************************************
@@ -25,17 +19,6 @@ Template for skeleton device
// TYPE DEFINITIONS
//**************************************************************************
-enum eeprom_cmd_t
-{
- EEPROM_GET_CMD = 0,
- EEPROM_READ,
- EEPROM_WRITE,
- EEPROM_WRITE_ENABLE,
- EEPROM_WRITE_DISABLE,
- EEPROM_STATUS_OUTPUT
-};
-
-
// ======================> m6m80011ap_device
class m6m80011ap_device : public device_t,
@@ -63,6 +46,16 @@ protected:
virtual void nvram_write(emu_file &file) override;
private:
+ enum eeprom_cmd_t
+ {
+ EEPROM_GET_CMD = 0,
+ EEPROM_READ,
+ EEPROM_WRITE,
+ EEPROM_WRITE_ENABLE,
+ EEPROM_WRITE_DISABLE,
+ EEPROM_STATUS_OUTPUT
+ };
+
uint8_t m_latch;
uint8_t m_reset_line;
uint8_t m_cmd_stream_pos;
@@ -73,19 +66,10 @@ private:
eeprom_cmd_t m_eeprom_state;
uint16_t m_eeprom_data[0x80];
-
};
// device type definition
-extern const device_type M6M80011AP;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(M6M80011AP, m6m80011ap_device)
-#endif
+#endif // MAME_MACHINE_M6M80011AP_H
diff --git a/src/devices/machine/mb14241.cpp b/src/devices/machine/mb14241.cpp
index c341fe8679e..604944bcb11 100644
--- a/src/devices/machine/mb14241.cpp
+++ b/src/devices/machine/mb14241.cpp
@@ -15,10 +15,10 @@
//-------------------------------------------------
-const device_type MB14241 = device_creator<mb14241_device>;
+DEFINE_DEVICE_TYPE(MB14241, mb14241_device, "mb14241", "MB14241 Data Shifter")
mb14241_device::mb14241_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MB14241, "MB14241 Data Shifter", tag, owner, clock, "mb14241", __FILE__), m_shift_data(0), m_shift_count(0)
+ : device_t(mconfig, MB14241, tag, owner, clock), m_shift_data(0), m_shift_count(0)
{
}
diff --git a/src/devices/machine/mb14241.h b/src/devices/machine/mb14241.h
index c3dbd0d55ed..30ffce71424 100644
--- a/src/devices/machine/mb14241.h
+++ b/src/devices/machine/mb14241.h
@@ -6,8 +6,10 @@
*****************************************************************************/
-#ifndef __MB14241_H__
-#define __MB14241_H__
+#ifndef MAME_MACHINE_MB14241_H
+#define MAME_MACHINE_MB14241_H
+
+#pragma once
class mb14241_device : public device_t
@@ -15,8 +17,8 @@ class mb14241_device : public device_t
public:
mb14241_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_WRITE8_MEMBER ( shift_count_w );
- DECLARE_WRITE8_MEMBER ( shift_data_w );
+ DECLARE_WRITE8_MEMBER( shift_count_w );
+ DECLARE_WRITE8_MEMBER( shift_data_w );
DECLARE_READ8_MEMBER( shift_result_r );
protected:
@@ -31,7 +33,7 @@ private:
uint8_t m_shift_count; /* 3 bits */
};
-extern const device_type MB14241;
+DECLARE_DEVICE_TYPE(MB14241, mb14241_device)
/***************************************************************************
@@ -41,4 +43,4 @@ extern const device_type MB14241;
#define MCFG_MB14241_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, MB14241, 0)
-#endif /* __MB14241_H__ */
+#endif // MAME_MACHINE_MB14241_H
diff --git a/src/devices/machine/mb3773.cpp b/src/devices/machine/mb3773.cpp
index d57e3edd0ca..bdae170315c 100644
--- a/src/devices/machine/mb3773.cpp
+++ b/src/devices/machine/mb3773.cpp
@@ -23,14 +23,14 @@
//**************************************************************************
// device type definition
-const device_type MB3773 = device_creator<mb3773_device>;
+DEFINE_DEVICE_TYPE(MB3773, mb3773_device, "mb3773", "MB3773 Power Supply Monitor")
//-------------------------------------------------
// mb3773_device - constructor
//-------------------------------------------------
mb3773_device::mb3773_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : device_t(mconfig, MB3773, "MB3773 Power Supply Monitor", tag, owner, clock, "mb3773", __FILE__), m_watchdog_timer(nullptr), m_ck(0)
+ : device_t(mconfig, MB3773, tag, owner, clock), m_watchdog_timer(nullptr), m_ck(0)
{
}
diff --git a/src/devices/machine/mb3773.h b/src/devices/machine/mb3773.h
index 85142cdaf2b..21dbb8fa548 100644
--- a/src/devices/machine/mb3773.h
+++ b/src/devices/machine/mb3773.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MB3773_H
+#define MAME_MACHINE_MB3773_H
-#ifndef __MB3773_H__
-#define __MB3773_H__
+#pragma once
//**************************************************************************
@@ -24,8 +24,7 @@
// ======================> mb3773_device
-class mb3773_device :
- public device_t
+class mb3773_device : public device_t
{
public:
// construction/destruction
@@ -51,6 +50,6 @@ private:
// device type definition
-extern const device_type MB3773;
+DECLARE_DEVICE_TYPE(MB3773, mb3773_device)
-#endif
+#endif // MAME_MACHINE_MB3773_H
diff --git a/src/devices/machine/mb8421.cpp b/src/devices/machine/mb8421.cpp
index 43e095cdbea..29ef6664d3d 100644
--- a/src/devices/machine/mb8421.cpp
+++ b/src/devices/machine/mb8421.cpp
@@ -15,14 +15,14 @@
#include "machine/mb8421.h"
-const device_type MB8421 = device_creator<mb8421_device>;
+DEFINE_DEVICE_TYPE(MB8421, mb8421_device, "mb8421", "MB8421 DPSRAM")
//-------------------------------------------------
// mb8421_device - constructor
//-------------------------------------------------
mb8421_device::mb8421_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MB8421, "MB8421 DPSRAM", tag, owner, clock, "mb8421", __FILE__),
+ : device_t(mconfig, MB8421, tag, owner, clock),
m_intl_handler(*this),
m_intr_handler(*this)
{
diff --git a/src/devices/machine/mb8421.h b/src/devices/machine/mb8421.h
index 693d614cfe2..6d5b5e027d8 100644
--- a/src/devices/machine/mb8421.h
+++ b/src/devices/machine/mb8421.h
@@ -7,10 +7,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MB8421_H
+#define MAME_MACHINE_MB8421_H
-#ifndef _MB8421_H
-#define _MB8421_H
+#pragma once
@@ -40,8 +40,8 @@ public:
mb8421_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_intl_handler(device_t &device, _Object object) { return downcast<mb8421_device &>(device).m_intl_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_intr_handler(device_t &device, _Object object) { return downcast<mb8421_device &>(device).m_intr_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_intl_handler(device_t &device, Object &&cb) { return downcast<mb8421_device &>(device).m_intl_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_intr_handler(device_t &device, Object &&cb) { return downcast<mb8421_device &>(device).m_intr_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ_LINE_MEMBER( busy_r ) { return 0; } // _BUSY pin - not emulated
uint8_t peek(offs_t offset) { return m_ram[offset & 0x7ff]; }
@@ -65,6 +65,6 @@ private:
// device type definition
extern const device_type MB8421;
+DECLARE_DEVICE_TYPE(MB8421, mb8421_device)
-
-#endif /* _MB8421_H */
+#endif // MAME_MACHINE_MB8421_H
diff --git a/src/devices/machine/mb87078.cpp b/src/devices/machine/mb87078.cpp
index cab6460f412..4213dcb269a 100644
--- a/src/devices/machine/mb87078.cpp
+++ b/src/devices/machine/mb87078.cpp
@@ -102,10 +102,10 @@ static const int mb87078_gain_percent[66] = {
DEVICE INTERFACE
*****************************************************************************/
-const device_type MB87078 = device_creator<mb87078_device>;
+DEFINE_DEVICE_TYPE(MB87078, mb87078_device, "mb87078", "MB87078 Volume Controller")
mb87078_device::mb87078_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MB87078, "MB87078 Volume Controller", tag, owner, clock, "mb87078", __FILE__),
+ : device_t(mconfig, MB87078, tag, owner, clock),
m_channel_latch(0),
m_reset_comp(0),
m_gain_changed_cb(*this)
diff --git a/src/devices/machine/mb87078.h b/src/devices/machine/mb87078.h
index 0192b86db25..a82225ebc23 100644
--- a/src/devices/machine/mb87078.h
+++ b/src/devices/machine/mb87078.h
@@ -7,8 +7,10 @@
*****************************************************************************/
-#ifndef __MB87078_H__
-#define __MB87078_H__
+#ifndef MAME_MACHINE_MB87078_H
+#define MAME_MACHINE_MB87078_H
+
+#pragma once
/***************************************************************************
@@ -26,20 +28,17 @@ class mb87078_device : public device_t
{
public:
mb87078_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~mb87078_device() {}
- template<class _Object> static devcb_base &set_gain_changed_callback(device_t &device, _Object object) { return downcast<mb87078_device &>(device).m_gain_changed_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_gain_changed_callback(device_t &device, Object &&cb) { return downcast<mb87078_device &>(device).m_gain_changed_cb.set_callback(std::forward<Object>(cb)); }
void data_w(int data, int dsel);
void reset_comp_w(int level);
-
/* gain_decibel_r will return 'channel' gain on the device.
Returned value represents channel gain expressed in decibels,
Range from 0 to -32.0 (or -256.0 for -infinity) */
float gain_decibel_r(int channel);
-
/* gain_percent_r will return 'channel' gain on the device.
Returned value represents channel gain expressed in percents of maximum volume.
Range from 100 to 0. (100 = 0dB; 50 = -6dB; 0 = -infinity)
@@ -63,6 +62,6 @@ private:
devcb_write8 m_gain_changed_cb;
};
-extern const device_type MB87078;
+DECLARE_DEVICE_TYPE(MB87078, mb87078_device)
-#endif /* __MB87078_H__ */
+#endif // MAME_MACHINE_MB87078_H
diff --git a/src/devices/machine/mb8795.cpp b/src/devices/machine/mb8795.cpp
index bf3aadba660..0b25871359a 100644
--- a/src/devices/machine/mb8795.cpp
+++ b/src/devices/machine/mb8795.cpp
@@ -4,7 +4,7 @@
#include "emu.h"
#include "mb8795.h"
-const device_type MB8795 = device_creator<mb8795_device>;
+DEFINE_DEVICE_TYPE(MB8795, mb8795_device, "mb8795", "Fujitsu MB8795")
DEVICE_ADDRESS_MAP_START(map, 8, mb8795_device)
AM_RANGE(0x0, 0x0) AM_READWRITE(txstat_r, txstat_w)
@@ -19,9 +19,11 @@ DEVICE_ADDRESS_MAP_START(map, 8, mb8795_device)
ADDRESS_MAP_END
mb8795_device::mb8795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MB8795, "Fujitsu MB8795", tag, owner, clock, "mb8795", __FILE__),
- device_network_interface(mconfig, *this, 10), txstat(0), txmask(0), rxstat(0), rxmask(0), txmode(0), rxmode(0), txlen(0), rxlen(0), txcount(0), drq_tx(false),
- drq_rx(false), irq_tx(false), irq_rx(false), timer_tx(nullptr), timer_rx(nullptr),
+ device_t(mconfig, MB8795, tag, owner, clock),
+ device_network_interface(mconfig, *this, 10),
+ txstat(0), txmask(0), rxstat(0), rxmask(0), txmode(0), rxmode(0), txlen(0), rxlen(0), txcount(0),
+ drq_tx(false), drq_rx(false), irq_tx(false), irq_rx(false),
+ timer_tx(nullptr), timer_rx(nullptr),
irq_tx_cb(*this),
irq_rx_cb(*this),
drq_tx_cb(*this),
diff --git a/src/devices/machine/mb8795.h b/src/devices/machine/mb8795.h
index dede6ff48bf..9120a20716b 100644
--- a/src/devices/machine/mb8795.h
+++ b/src/devices/machine/mb8795.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef MB8795_H
-#define MB8795_H
+#ifndef MAME_MACHINE_MB8795_H
+#define MAME_MACHINE_MB8795_H
#define MCFG_MB8795_ADD(_tag, _tx_irq, _rx_irq, _tx_drq, _rx_drq) \
MCFG_DEVICE_ADD(_tag, MB8795, 0) \
@@ -26,10 +26,10 @@ class mb8795_device : public device_t,
public:
mb8795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_tx_irq_wr_callback(device_t &device, _Object object) { return downcast<mb8795_device &>(device).irq_tx_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_rx_irq_wr_callback(device_t &device, _Object object) { return downcast<mb8795_device &>(device).irq_rx_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_tx_drq_wr_callback(device_t &device, _Object object) { return downcast<mb8795_device &>(device).drq_tx_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_rx_drq_wr_callback(device_t &device, _Object object) { return downcast<mb8795_device &>(device).drq_rx_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_tx_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).irq_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rx_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).irq_rx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_tx_drq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).drq_tx_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rx_drq_wr_callback(device_t &device, Object &&cb) { return downcast<mb8795_device &>(device).drq_rx_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_ADDRESS_MAP(map, 8);
@@ -120,5 +120,6 @@ private:
};
extern const device_type MB8795;
+DECLARE_DEVICE_TYPE(MB8795, mb8795_device)
-#endif
+#endif // MAME_MACHINE_MB8795_H
diff --git a/src/devices/machine/mb89352.cpp b/src/devices/machine/mb89352.cpp
index ad27bae81e0..fdc245bd07a 100644
--- a/src/devices/machine/mb89352.cpp
+++ b/src/devices/machine/mb89352.cpp
@@ -104,11 +104,50 @@
#include "emu.h"
#include "mb89352.h"
+// SCSI lines readable via PSNS register (reg 5)
+#define MB89352_LINE_REQ 0x80
+#define MB89352_LINE_ACK 0x40
+#define MB89352_LINE_ATN 0x20
+#define MB89352_LINE_SEL 0x10
+#define MB89352_LINE_BSY 0x08
+#define MB89352_LINE_MSG 0x04
+#define MB89352_LINE_CD 0x02
+#define MB89352_LINE_IO 0x01
+
+// INTS bits
+#define INTS_RESET 0x01
+#define INTS_HARD_ERROR 0x02
+#define INTS_TIMEOUT 0x04
+#define INTS_SERVICE_REQUIRED 0x08
+#define INTS_COMMAND_COMPLETE 0x10
+#define INTS_DISCONNECTED 0x20
+#define INTS_RESELECTION 0x40
+#define INTS_SELECTION 0x80
+
+// SSTS status bits
+#define SSTS_DREG_EMPTY 0x01
+#define SSTS_DREG_FULL 0x02
+#define SSTS_TC_ZERO 0x04
+#define SSTS_SCSI_RST 0x08
+#define SSTS_XFER_IN_PROGRESS 0x10
+#define SSTS_SPC_BSY 0x20
+#define SSTS_TARG_CONNECTED 0x40
+#define SSTS_INIT_CONNECTED 0x80
+
+// SERR error status bits
+#define SERR_OFFSET 0x01
+#define SERR_SHORT_XFR 0x02
+#define SERR_PHASE_ERR 0x04
+#define SERR_TC_PAR 0x08
+#define SERR_SPC_PAR 0x40
+#define SERR_SCSI_PAR 0x80
+
+
/*
* Device config
*/
-const device_type MB89352A = device_creator<mb89352_device>;
+DEFINE_DEVICE_TYPE(MB89352A, mb89352_device, "mb89352", "Fujitsu MB89352A")
/*
@@ -116,7 +155,7 @@ const device_type MB89352A = device_creator<mb89352_device>;
*/
mb89352_device::mb89352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- legacy_scsi_host_adapter(mconfig, MB89352A, "MB89352A", tag, owner, clock, "mb89352", __FILE__),
+ legacy_scsi_host_adapter(mconfig, MB89352A, tag, owner, clock),
m_irq_cb(*this),
m_drq_cb(*this)
{
diff --git a/src/devices/machine/mb89352.h b/src/devices/machine/mb89352.h
index 26cfd272c80..8a520281241 100644
--- a/src/devices/machine/mb89352.h
+++ b/src/devices/machine/mb89352.h
@@ -6,50 +6,11 @@
* Created on: 16/01/2011
*/
-#ifndef MB89352_H_
-#define MB89352_H_
+#ifndef MAME_MACHINE_MB89352_H
+#define MAME_MACHINE_MB89352_H
#include "legscsi.h"
-// SCSI lines readable via PSNS register (reg 5)
-#define MB89352_LINE_REQ 0x80
-#define MB89352_LINE_ACK 0x40
-#define MB89352_LINE_ATN 0x20
-#define MB89352_LINE_SEL 0x10
-#define MB89352_LINE_BSY 0x08
-#define MB89352_LINE_MSG 0x04
-#define MB89352_LINE_CD 0x02
-#define MB89352_LINE_IO 0x01
-
-// INTS bits
-#define INTS_RESET 0x01
-#define INTS_HARD_ERROR 0x02
-#define INTS_TIMEOUT 0x04
-#define INTS_SERVICE_REQUIRED 0x08
-#define INTS_COMMAND_COMPLETE 0x10
-#define INTS_DISCONNECTED 0x20
-#define INTS_RESELECTION 0x40
-#define INTS_SELECTION 0x80
-
-// SSTS status bits
-#define SSTS_DREG_EMPTY 0x01
-#define SSTS_DREG_FULL 0x02
-#define SSTS_TC_ZERO 0x04
-#define SSTS_SCSI_RST 0x08
-#define SSTS_XFER_IN_PROGRESS 0x10
-#define SSTS_SPC_BSY 0x20
-#define SSTS_TARG_CONNECTED 0x40
-#define SSTS_INIT_CONNECTED 0x80
-
-// SERR error status bits
-#define SERR_OFFSET 0x01
-#define SERR_SHORT_XFR 0x02
-#define SERR_PHASE_ERR 0x04
-#define SERR_TC_PAR 0x08
-#define SERR_SPC_PAR 0x40
-#define SERR_SCSI_PAR 0x80
-
-
#define MCFG_MB89352A_IRQ_CB(_devcb) \
devcb = &mb89352_device::set_irq_callback(*device, DEVCB_##_devcb);
@@ -62,8 +23,8 @@ public:
// construction/destruction
mb89352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<mb89352_device &>(device).m_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_callback(device_t &device, _Object object) { return downcast<mb89352_device &>(device).m_drq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<mb89352_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast<mb89352_device &>(device).m_drq_cb.set_callback(std::forward<Object>(cb)); }
// any publically accessible interfaces needed for runtime
DECLARE_READ8_MEMBER( mb89352_r );
@@ -113,6 +74,6 @@ private:
emu_timer* m_transfer_timer;
};
-extern const device_type MB89352A;
+DECLARE_DEVICE_TYPE(MB89352A, mb89352_device)
-#endif /* MB89352_H_ */
+#endif // MAME_MACHINE_MB89352_H
diff --git a/src/devices/machine/mb89363b.cpp b/src/devices/machine/mb89363b.cpp
index 1f854473f21..0e946a7acb8 100644
--- a/src/devices/machine/mb89363b.cpp
+++ b/src/devices/machine/mb89363b.cpp
@@ -80,12 +80,11 @@
#include "machine/mb89363b.h"
-
-const device_type MB89363B = device_creator<mb89363b_device>;
+DEFINE_DEVICE_TYPE(MB89363B, mb89363b_device, "mb89363b", "Fujitsu MB89363B I/O")
mb89363b_device::mb89363b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MB89363B, "MB89363 I/O", tag, owner, clock, "mb89363b", __FILE__),
+ : device_t(mconfig, MB89363B, tag, owner, clock),
m_i8255_a(*this, "i8255_a"),
m_i8255_b(*this, "i8255_b"),
m_in_a_pa_cb(*this),
diff --git a/src/devices/machine/mb89363b.h b/src/devices/machine/mb89363b.h
index cc880a4cead..c5f4191db95 100644
--- a/src/devices/machine/mb89363b.h
+++ b/src/devices/machine/mb89363b.h
@@ -7,16 +7,16 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MB89363B_H
+#define MAME_MACHINE_MB89363B_H
-#ifndef __MB89363B__
-#define __MB89363B__
+#pragma once
#include "machine/i8255.h"
-extern const device_type MB89363B;
+DECLARE_DEVICE_TYPE(MB89363B, mb89363b_device)
#define MCFG_MB89363B_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, MB89363B, 0)
@@ -85,32 +85,28 @@ public:
DECLARE_WRITE8_MEMBER(i8255_b_port_c_w);
- template<class _Object> static devcb_base &set_in_a_pa_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_in_a_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_a_pb_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_in_a_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_a_pc_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_in_a_pc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_a_pa_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_out_a_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_a_pb_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_out_a_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_a_pc_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_out_a_pc_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_in_b_pa_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_in_b_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_b_pb_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_in_b_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_b_pc_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_in_b_pc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_b_pa_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_out_b_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_b_pb_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_out_b_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_b_pc_callback(device_t &device, _Object object) { return downcast<mb89363b_device &>(device).m_out_b_pc_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_a_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_a_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_a_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_a_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_a_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_a_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_a_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_a_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_a_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_a_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_a_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_a_pc_cb.set_callback(std::forward<Object>(cb)); }
-
- required_device<i8255_device> m_i8255_a;
- required_device<i8255_device> m_i8255_b;
+ template <class Object> static devcb_base &set_in_b_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_b_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_b_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_b_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_b_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_in_b_pc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_b_pa_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_b_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_b_pb_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_b_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_b_pc_callback(device_t &device, Object &&cb) { return downcast<mb89363b_device &>(device).m_out_b_pc_cb.set_callback(std::forward<Object>(cb)); }
protected:
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void device_start() override;
virtual void device_reset() override;
-
-
private:
+ required_device<i8255_device> m_i8255_a;
+ required_device<i8255_device> m_i8255_b;
devcb_read8 m_in_a_pa_cb;
devcb_read8 m_in_a_pb_cb;
@@ -127,8 +123,6 @@ private:
devcb_write8 m_out_b_pa_cb;
devcb_write8 m_out_b_pb_cb;
devcb_write8 m_out_b_pc_cb;
-
-
};
-#endif
+#endif // MAME_MACHINE_MB89363B_H
diff --git a/src/devices/machine/mb89371.cpp b/src/devices/machine/mb89371.cpp
index 90bc2097df8..9c9a0d0e34a 100644
--- a/src/devices/machine/mb89371.cpp
+++ b/src/devices/machine/mb89371.cpp
@@ -11,10 +11,10 @@
#include "emu.h"
#include "mb89371.h"
-const device_type MB89371 = device_creator<mb89371_device>;
+DEFINE_DEVICE_TYPE(MB89371, mb89371_device, "mb89371", "MB89371 Dual Serial UART")
mb89371_device::mb89371_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : device_t(mconfig, MB89371, "MB89371 Dual Serial UART", tag, owner, clock, "mb89371", __FILE__)
+ : device_t(mconfig, MB89371, tag, owner, clock)
{
}
@@ -24,9 +24,11 @@ void mb89371_device::device_start()
WRITE8_MEMBER(mb89371_device::write)
{
+ logerror("MB89371 unimplemented write @%X = %02X & %02X\n", offset, data, mem_mask);
}
READ8_MEMBER(mb89371_device::read)
{
+ logerror("MB89371 unimplemented read @%X & %02X\n", offset, mem_mask);
return 0xff;
}
diff --git a/src/devices/machine/mb89371.h b/src/devices/machine/mb89371.h
index 3093590d51b..413492ee765 100644
--- a/src/devices/machine/mb89371.h
+++ b/src/devices/machine/mb89371.h
@@ -8,8 +8,10 @@
*
*/
-#ifndef __MB89371_H__
-#define __MB89371_H__
+#ifndef MAME_MACHINE_MB89371_H
+#define MAME_MACHINE_MB89371_H
+
+#pragma once
class mb89371_device : public device_t
@@ -22,13 +24,12 @@ public:
DECLARE_READ8_MEMBER( read );
protected:
-
// device-level overrides
virtual void device_start() override;
};
// device type definition
-extern const device_type MB89371;
+DECLARE_DEVICE_TYPE(MB89371, mb89371_device)
-#endif
+#endif // MAME_MACHINE_MB89371_H
diff --git a/src/devices/machine/mc146818.cpp b/src/devices/machine/mc146818.cpp
index a6ebb615a5b..c55935b3184 100644
--- a/src/devices/machine/mc146818.cpp
+++ b/src/devices/machine/mc146818.cpp
@@ -15,40 +15,25 @@
#include "coreutil.h"
#include "machine/mc146818.h"
-
-//**************************************************************************
-// DEBUGGING
-//**************************************************************************
-
-#define LOG_MC146818 0
+//#define VERBOSE 1
+#include "logmacro.h"
// device type definition
-const device_type MC146818 = device_creator<mc146818_device>;
+DEFINE_DEVICE_TYPE(MC146818, mc146818_device, "mc146818", "MC146818 RTC")
//-------------------------------------------------
// mc146818_device - constructor
//-------------------------------------------------
mc146818_device::mc146818_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC146818, "MC146818 RTC", tag, owner, clock, "mc146818", __FILE__),
- device_nvram_interface(mconfig, *this),
- m_region(*this, DEVICE_SELF),
- m_index(0),
- m_last_refresh(attotime::zero), m_clock_timer(nullptr), m_periodic_timer(nullptr),
- m_write_irq(*this),
- m_century_index(-1),
- m_epoch(0),
- m_use_utc(false),
- m_binary(false),
- m_hour(false),
- m_binyear(false)
+ : mc146818_device(mconfig, MC146818, tag, owner, clock)
{
}
-mc146818_device::mc146818_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+mc146818_device::mc146818_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_nvram_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
m_index(0),
@@ -556,8 +541,7 @@ READ8_MEMBER( mc146818_device::read )
break;
}
- if (LOG_MC146818)
- logerror("mc146818_port_r(): index=0x%02x data=0x%02x\n", m_index, data);
+ LOG("mc146818_port_r(): index=0x%02x data=0x%02x\n", m_index, data);
return data;
}
@@ -569,8 +553,7 @@ READ8_MEMBER( mc146818_device::read )
WRITE8_MEMBER( mc146818_device::write )
{
- if (LOG_MC146818)
- logerror("mc146818_port_w(): index=0x%02x data=0x%02x\n", m_index, data);
+ LOG("mc146818_port_w(): index=0x%02x data=0x%02x\n", m_index, data);
switch (offset)
{
diff --git a/src/devices/machine/mc146818.h b/src/devices/machine/mc146818.h
index 70ff8c46e49..408f9f717d8 100644
--- a/src/devices/machine/mc146818.h
+++ b/src/devices/machine/mc146818.h
@@ -11,8 +11,10 @@
*********************************************************************/
-#ifndef __MC146818_H__
-#define __MC146818_H__
+#ifndef MAME_MACHINE_MC146818_H
+#define MAME_MACHINE_MC146818_H
+
+#pragma once
//**************************************************************************
@@ -57,10 +59,9 @@ class mc146818_device : public device_t,
public:
// construction/destruction
mc146818_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- mc146818_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// callbacks
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<mc146818_device &>(device).m_write_irq.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<mc146818_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
void set_century_index(int century_index) { m_century_index = century_index; }
void set_use_utc(bool use_utc) { m_use_utc = use_utc; }
void set_binary(bool binary) { m_binary = binary; }
@@ -73,6 +74,8 @@ public:
DECLARE_WRITE8_MEMBER( write );
protected:
+ mc146818_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -83,8 +86,8 @@ protected:
virtual void nvram_read(emu_file &file) override;
virtual void nvram_write(emu_file &file) override;
- static const unsigned char ALARM_DONTCARE = 0xc0;
- static const unsigned char HOURS_PM = 0x80;
+ static constexpr unsigned char ALARM_DONTCARE = 0xc0;
+ static constexpr unsigned char HOURS_PM = 0x80;
virtual int data_size() { return 64; }
@@ -188,7 +191,6 @@ private:
// device type definition
-extern const device_type MC146818;
-
+DECLARE_DEVICE_TYPE(MC146818, mc146818_device)
-#endif /* __MC146818_H__ */
+#endif // MAME_MACHINE_MC146818_H
diff --git a/src/devices/machine/mc2661.cpp b/src/devices/machine/mc2661.cpp
index 8f79893aadd..fa750d47e77 100644
--- a/src/devices/machine/mc2661.cpp
+++ b/src/devices/machine/mc2661.cpp
@@ -9,13 +9,16 @@
#include "emu.h"
#include "mc2661.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MC2661 = device_creator<mc2661_device>;
+DEFINE_DEVICE_TYPE(MC2661, mc2661_device, "mc2661", "MC2661")
@@ -23,9 +26,6 @@ const device_type MC2661 = device_creator<mc2661_device>;
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
uint32_t baud_rates[16] =
{
50, 75, 110, 135 /*134.5*/, 150, 300, 600, 1200, 1800, 2000, 2400, 3600, 4800, 7200, 9600, 19200
@@ -96,7 +96,7 @@ enum
//-------------------------------------------------
mc2661_device::mc2661_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MC2661, "MC2661", tag, owner, clock, "mc2661", __FILE__),
+ device_t(mconfig, MC2661, tag, owner, clock),
device_serial_interface(mconfig, *this),
m_write_txd(*this),
m_write_rxrdy(*this),
@@ -265,7 +265,7 @@ WRITE8_MEMBER( mc2661_device::write )
switch (offset & 0x03)
{
case REGISTER_HOLDING:
- if (LOG) logerror("MC2661 '%s' Transmit Holding Register: %02x\n", tag(), data);
+ LOG("MC2661 Transmit Holding Register: %02x\n", data);
m_thr = data;
if(COMMAND_TXEN)
@@ -284,7 +284,7 @@ WRITE8_MEMBER( mc2661_device::write )
break;
case REGISTER_SYNC:
- if (LOG) logerror("MC2661 '%s' Sync Register %u: %02x\n", tag(), m_sync_index + 1, data);
+ LOG("MC2661 Sync Register %u: %02x\n", m_sync_index + 1, data);
m_sync[m_sync_index] = data;
@@ -293,7 +293,7 @@ WRITE8_MEMBER( mc2661_device::write )
break;
case REGISTER_MODE:
- if (LOG) logerror("MC2661 '%s' Mode Register %u: %02x\n", tag(), m_mode_index + 1, data);
+ LOG("MC2661 Mode Register %u: %02x\n", m_mode_index + 1, data);
m_mr[m_mode_index] = data;
@@ -384,7 +384,7 @@ WRITE8_MEMBER( mc2661_device::write )
break;
case REGISTER_COMMAND:
- if (LOG) logerror("MC2661 '%s' Command Register: %02x\n", tag(), data);
+ LOG("MC2661 Command Register: %02x\n", data);
m_cr = data & 0xef;
@@ -432,7 +432,7 @@ WRITE8_MEMBER( mc2661_device::write )
WRITE_LINE_MEMBER( mc2661_device::dsr_w )
{
- if (LOG) logerror("MC2661 '%s' Data Set Ready: %u\n", tag(), state);
+ LOG("MC2661 Data Set Ready: %u\n", state);
if (state)
{
@@ -451,7 +451,7 @@ WRITE_LINE_MEMBER( mc2661_device::dsr_w )
WRITE_LINE_MEMBER( mc2661_device::dcd_w )
{
- if (LOG) logerror("MC2661 '%s' Data Carrier Detect: %u\n", tag(), state);
+ LOG("MC2661 Data Carrier Detect: %u\n", state);
if (state)
{
@@ -470,7 +470,7 @@ WRITE_LINE_MEMBER( mc2661_device::dcd_w )
WRITE_LINE_MEMBER( mc2661_device::cts_w )
{
- if (LOG) logerror("MC2661 '%s' Clear to Send: %u\n", tag(), state);
+ LOG("MC2661 Clear to Send: %u\n", state);
}
diff --git a/src/devices/machine/mc2661.h b/src/devices/machine/mc2661.h
index 695dd4b0ef3..96baf6f822f 100644
--- a/src/devices/machine/mc2661.h
+++ b/src/devices/machine/mc2661.h
@@ -23,10 +23,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MC2661_H
+#define MAME_MACHINE_MC2661_H
-#ifndef __MC2661__
-#define __MC2661__
+#pragma once
@@ -83,14 +83,14 @@ public:
static void static_set_rxc(device_t &device, int clock) { downcast<mc2661_device &>(device).m_rxc = clock; }
static void static_set_txc(device_t &device, int clock) { downcast<mc2661_device &>(device).m_txc = clock; }
- template<class _Object> static devcb_base &set_txd_callback(device_t &device, _Object object) { return downcast<mc2661_device &>(device).m_write_txd.set_callback(object); }
- template<class _Object> static devcb_base &set_rxrdy_callback(device_t &device, _Object object) { return downcast<mc2661_device &>(device).m_write_rxrdy.set_callback(object); }
- template<class _Object> static devcb_base &set_txrdy_callback(device_t &device, _Object object) { return downcast<mc2661_device &>(device).m_write_txrdy.set_callback(object); }
- template<class _Object> static devcb_base &set_rts_callback(device_t &device, _Object object) { return downcast<mc2661_device &>(device).m_write_rts.set_callback(object); }
- template<class _Object> static devcb_base &set_dtr_callback(device_t &device, _Object object) { return downcast<mc2661_device &>(device).m_write_dtr.set_callback(object); }
- template<class _Object> static devcb_base &set_txemt_dschg_callback(device_t &device, _Object object) { return downcast<mc2661_device &>(device).m_write_txemt_dschg.set_callback(object); }
- template<class _Object> static devcb_base &set_bkdet_callback(device_t &device, _Object object) { return downcast<mc2661_device &>(device).m_write_bkdet.set_callback(object); }
- template<class _Object> static devcb_base &set_xsync_callback(device_t &device, _Object object) { return downcast<mc2661_device &>(device).m_write_xsync.set_callback(object); }
+ template <class Object> static devcb_base &set_txd_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_txd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rxrdy_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_rxrdy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_txrdy_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_txrdy.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rts_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_rts.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dtr_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_dtr.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_txemt_dschg_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_txemt_dschg.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_bkdet_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_bkdet.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_xsync_callback(device_t &device, Object &&cb) { return downcast<mc2661_device &>(device).m_write_xsync.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -141,8 +141,6 @@ private:
// device type definition
-extern const device_type MC2661;
-
-
+DECLARE_DEVICE_TYPE(MC2661, mc2661_device)
-#endif
+#endif // MAME_MACHINE_MC2661_H
diff --git a/src/devices/machine/mc68328.cpp b/src/devices/machine/mc68328.cpp
index 6b548a62a00..96d91ccb175 100644
--- a/src/devices/machine/mc68328.cpp
+++ b/src/devices/machine/mc68328.cpp
@@ -9,10 +9,329 @@
**********************************************************************/
#include "emu.h"
-#include "cpu/m68000/m68000.h"
#include "machine/mc68328.h"
+#include "cpu/m68000/m68000.h"
#include "machine/ram.h"
+
+#define SCR_BETO 0x80
+#define SCR_WPV 0x40
+#define SCR_PRV 0x20
+#define SCR_BETEN 0x10
+#define SCR_SO 0x08
+#define SCR_DMAP 0x04
+#define SCR_WDTH8 0x01
+
+#define ICR_POL6 0x0100
+#define ICR_POL3 0x0200
+#define ICR_POL2 0x0400
+#define ICR_POL1 0x0800
+#define ICR_ET6 0x1000
+#define ICR_ET3 0x2000
+#define ICR_ET2 0x4000
+#define ICR_ET1 0x8000
+
+#define INT_SPIM 0x000001
+#define INT_TIMER2 0x000002
+#define INT_UART 0x000004
+#define INT_WDT 0x000008
+#define INT_RTC 0x000010
+#define INT_RESERVED 0x000020
+#define INT_KB 0x000040
+#define INT_PWM 0x000080
+#define INT_INT0 0x000100
+#define INT_INT1 0x000200
+#define INT_INT2 0x000400
+#define INT_INT3 0x000800
+#define INT_INT4 0x001000
+#define INT_INT5 0x002000
+#define INT_INT6 0x004000
+#define INT_INT7 0x008000
+#define INT_KBDINTS 0x00ff00
+#define INT_IRQ1 0x010000
+#define INT_IRQ2 0x020000
+#define INT_IRQ3 0x040000
+#define INT_IRQ6 0x080000
+#define INT_PEN 0x100000
+#define INT_SPIS 0x200000
+#define INT_TIMER1 0x400000
+#define INT_IRQ7 0x800000
+
+#define INT_M68K_LINE1 (INT_IRQ1)
+#define INT_M68K_LINE2 (INT_IRQ2)
+#define INT_M68K_LINE3 (INT_IRQ3)
+#define INT_M68K_LINE4 (INT_INT0 | INT_INT1 | INT_INT2 | INT_INT3 | INT_INT4 | INT_INT5 | INT_INT6 | INT_INT7 | \
+ INT_PWM | INT_KB | INT_RTC | INT_WDT | INT_UART | INT_TIMER2 | INT_SPIM)
+#define INT_M68K_LINE5 (INT_PEN)
+#define INT_M68K_LINE6 (INT_IRQ6 | INT_TIMER1 | INT_SPIS)
+#define INT_M68K_LINE7 (INT_IRQ7)
+#define INT_M68K_LINE67 (INT_M68K_LINE6 | INT_M68K_LINE7)
+#define INT_M68K_LINE567 (INT_M68K_LINE5 | INT_M68K_LINE6 | INT_M68K_LINE7)
+#define INT_M68K_LINE4567 (INT_M68K_LINE4 | INT_M68K_LINE5 | INT_M68K_LINE6 | INT_M68K_LINE7)
+#define INT_M68K_LINE34567 (INT_M68K_LINE3 | INT_M68K_LINE4 | INT_M68K_LINE5 | INT_M68K_LINE6 | INT_M68K_LINE7)
+#define INT_M68K_LINE234567 (INT_M68K_LINE2 | INT_M68K_LINE3 | INT_M68K_LINE4 | INT_M68K_LINE5 | INT_M68K_LINE6 | INT_M68K_LINE7)
+
+#define INT_IRQ1_SHIFT 0x000001
+#define INT_IRQ2_SHIFT 0x000002
+#define INT_IRQ3_SHIFT 0x000004
+#define INT_IRQ6_SHIFT 0x000008
+#define INT_PEN_SHIFT 0x000010
+#define INT_SPIS_SHIFT 0x000020
+#define INT_TIMER1_SHIFT 0x000040
+#define INT_IRQ7_SHIFT 0x000080
+
+#define INT_ACTIVE 1
+#define INT_INACTIVE 0
+
+#define GRPBASE_BASE_ADDR 0xfff0
+#define GRPBASE_VALID 0x0001
+
+#define GRPMASK_BASE_MASK 0xfff0
+
+#define CSAB_COMPARE 0xff000000
+#define CSAB_BSW 0x00010000
+#define CSAB_MASK 0x0000ff00
+#define CSAB_RO 0x00000008
+#define CSAB_WAIT 0x00000007
+
+#define CSCD_COMPARE 0xfff00000
+#define CSCD_BSW 0x00010000
+#define CSCD_MASK 0x0000fff0
+#define CSCD_RO 0x00000008
+#define CSCD_WAIT 0x00000007
+
+#define PLLCR_PIXCLK_SEL 0x3800
+#define PLLCR_PIXCLK_SEL_DIV2 0x0000
+#define PLLCR_PIXCLK_SEL_DIV4 0x0800
+#define PLLCR_PIXCLK_SEL_DIV8 0x1000
+#define PLLCR_PIXCLK_SEL_DIV16 0x1800
+#define PLLCR_PIXCLK_SEL_DIV1_0 0x2000
+#define PLLCR_PIXCLK_SEL_DIV1_1 0x2800
+#define PLLCR_PIXCLK_SEL_DIV1_2 0x3000
+#define PLLCR_PIXCLK_SEL_DIV1_3 0x3800
+#define PLLCR_SYSCLK_SEL 0x0700
+#define PLLCR_SYSCLK_SEL_DIV2 0x0000
+#define PLLCR_SYSCLK_SEL_DIV4 0x0100
+#define PLLCR_SYSCLK_SEL_DIV8 0x0200
+#define PLLCR_SYSCLK_SEL_DIV16 0x0300
+#define PLLCR_SYSCLK_SEL_DIV1_0 0x0400
+#define PLLCR_SYSCLK_SEL_DIV1_1 0x0500
+#define PLLCR_SYSCLK_SEL_DIV1_2 0x0600
+#define PLLCR_SYSCLK_SEL_DIV1_3 0x0700
+#define PLLCR_CLKEN 0x0010
+#define PLLCR_DISPLL 0x0008
+
+#define PLLFSR_CLK32 0x8000
+#define PLLFSR_PROT 0x4000
+#define PLLFSR_QCNT 0x0f00
+#define PLLFSR_PCNT 0x00ff
+
+#define PCTLR_PC_EN 0x80
+#define PCTLR_STOP 0x40
+#define PCTLR_WIDTH 0x1f
+
+#define CXP_CC 0xc000
+#define CXP_CC_XLU 0x0000
+#define CXP_CC_BLACK 0x4000
+#define CXP_CC_INVERSE 0x8000
+#define CXP_CC_INVALID 0xc000
+#define CXP_MASK 0x03ff
+
+#define CYP_MASK 0x01ff
+
+#define CWCH_CW 0x1f00
+#define CWCH_CH 0x001f
+
+#define BLKC_BKEN 0x80
+#define BLKC_BD 0x7f
+
+#define LPICF_PBSIZ 0x06
+#define LPICF_PBSIZ_1 0x00
+#define LPICF_PBSIZ_2 0x02
+#define LPICF_PBSIZ_4 0x04
+#define LPICF_PBSIZ_INVALID 0x06
+
+#define LPOLCF_LCKPOL 0x08
+#define LPOLCF_FLMPOL 0x04
+#define LPOLCF_LPPOL 0x02
+#define LPOLCF_PIXPOL 0x01
+
+#define LACDRC_MASK 0x0f
+
+#define LPXCD_MASK 0x3f
+
+#define LCKCON_LCDC_EN 0x80
+#define LCKCON_LCDON 0x80
+#define LCKCON_DMA16 0x40
+#define LCKCON_WS 0x30
+#define LCKCON_WS_1 0x00
+#define LCKCON_WS_2 0x10
+#define LCKCON_WS_3 0x20
+#define LCKCON_WS_4 0x30
+#define LCKCON_DWIDTH 0x02
+#define LCKCON_PCDS 0x01
+
+#define LBAR_MASK 0x7f
+
+#define LPOSR_BOS 0x08
+#define LPOSR_POS 0x07
+
+#define LFRCM_XMOD 0xf0
+#define LFRCM_YMOD 0x0f
+
+#define LGPMR_PAL1 0x7000
+#define LGPMR_PAL0 0x0700
+#define LGPMR_PAL3 0x0070
+#define LGPMR_PAL2 0x0007
+
+#define RTCHMSR_HOURS 0x1f000000
+#define RTCHMSR_MINUTES 0x003f0000
+#define RTCHMSR_SECONDS 0x0000003f
+
+#define RTCCTL_38_4 0x0020
+#define RTCCTL_ENABLE 0x0080
+
+#define RTCINT_STOPWATCH 0x0001
+#define RTCINT_MINUTE 0x0002
+#define RTCINT_ALARM 0x0004
+#define RTCINT_DAY 0x0008
+#define RTCINT_SECOND 0x0010
+
+#define RTCSTPWTCH_MASK 0x003f
+
+#define TCTL_TEN 0x0001
+#define TCTL_TEN_ENABLE 0x0001
+#define TCTL_CLKSOURCE 0x000e
+#define TCTL_CLKSOURCE_STOP 0x0000
+#define TCTL_CLKSOURCE_SYSCLK 0x0002
+#define TCTL_CLKSOURCE_SYSCLK16 0x0004
+#define TCTL_CLKSOURCE_TIN 0x0006
+#define TCTL_CLKSOURCE_32KHZ4 0x0008
+#define TCTL_CLKSOURCE_32KHZ5 0x000a
+#define TCTL_CLKSOURCE_32KHZ6 0x000c
+#define TCTL_CLKSOURCE_32KHZ7 0x000e
+#define TCTL_IRQEN 0x0010
+#define TCTL_IRQEN_ENABLE 0x0010
+#define TCTL_OM 0x0020
+#define TCTL_OM_ACTIVELOW 0x0000
+#define TCTL_OM_TOGGLE 0x0020
+#define TCTL_CAPTURE 0x00c0
+#define TCTL_CAPTURE_NOINT 0x0000
+#define TCTL_CAPTURE_RISING 0x0040
+#define TCTL_CAPTURE_FALLING 0x0080
+#define TCTL_CAPTURE_BOTH 0x00c0
+#define TCTL_FRR 0x0100
+#define TCTL_FRR_RESTART 0x0000
+#define TCTL_FRR_FREERUN 0x0100
+
+#define TSTAT_COMP 0x0001
+#define TSTAT_CAPT 0x0002
+
+#define WCTLR_WDRST 0x0008
+#define WCTLR_LOCK 0x0004
+#define WCTLR_FI 0x0002
+#define WCTLR_WDEN 0x0001
+
+#define USTCNT_UART_EN 0x8000
+#define USTCNT_RX_EN 0x4000
+#define USTCNT_TX_EN 0x2000
+#define USTCNT_RX_CLK_CONT 0x1000
+#define USTCNT_PARITY_EN 0x0800
+#define USTCNT_ODD_EVEN 0x0400
+#define USTCNT_STOP_BITS 0x0200
+#define USTCNT_8_7 0x0100
+#define USTCNT_GPIO_DELTA_EN 0x0080
+#define USTCNT_CTS_DELTA_EN 0x0040
+#define USTCNT_RX_FULL_EN 0x0020
+#define USTCNT_RX_HALF_EN 0x0010
+#define USTCNT_RX_RDY_EN 0x0008
+#define USTCNT_TX_EMPTY_EN 0x0004
+#define USTCNT_TX_HALF_EN 0x0002
+#define USTCNT_TX_AVAIL_EN 0x0001
+
+#define UBAUD_GPIO_DELTA 0x8000
+#define UBAUD_GPIO 0x4000
+#define UBAUD_GPIO_DIR 0x2000
+#define UBAUD_GPIO_SRC 0x1000
+#define UBAUD_BAUD_SRC 0x0800
+#define UBAUD_DIVIDE 0x0700
+#define UBAUD_DIVIDE_1 0x0000
+#define UBAUD_DIVIDE_2 0x0100
+#define UBAUD_DIVIDE_4 0x0200
+#define UBAUD_DIVIDE_8 0x0300
+#define UBAUD_DIVIDE_16 0x0400
+#define UBAUD_DIVIDE_32 0x0500
+#define UBAUD_DIVIDE_64 0x0600
+#define UBAUD_DIVIDE_128 0x0700
+#define UBAUD_PRESCALER 0x00ff
+
+#define URX_FIFO_FULL 0x8000
+#define URX_FIFO_HALF 0x4000
+#define URX_DATA_READY 0x2000
+#define URX_OVRUN 0x0800
+#define URX_FRAME_ERROR 0x0400
+#define URX_BREAK 0x0200
+#define URX_PARITY_ERROR 0x0100
+
+#define UTX_FIFO_EMPTY 0x8000
+#define UTX_FIFO_HALF 0x4000
+#define UTX_TX_AVAIL 0x2000
+#define UTX_SEND_BREAK 0x1000
+#define UTX_IGNORE_CTS 0x0800
+#define UTX_CTS_STATUS 0x0200
+#define UTX_CTS_DELTA 0x0100
+
+#define UMISC_CLK_SRC 0x4000
+#define UMISC_FORCE_PERR 0x2000
+#define UMISC_LOOP 0x1000
+#define UMISC_RTS_CONT 0x0080
+#define UMISC_RTS 0x0040
+#define UMISC_IRDA_ENABLE 0x0020
+#define UMISC_IRDA_LOOP 0x0010
+
+#define SPIS_SPIS_IRQ 0x8000
+#define SPIS_IRQEN 0x4000
+#define SPIS_ENPOL 0x2000
+#define SPIS_DATA_RDY 0x1000
+#define SPIS_OVRWR 0x0800
+#define SPIS_PHA 0x0400
+#define SPIS_POL 0x0200
+#define SPIS_SPISEN 0x0100
+
+#define SPIM_CLOCK_COUNT 0x000f
+#define SPIM_POL 0x0010
+#define SPIM_POL_HIGH 0x0000
+#define SPIM_POL_LOW 0x0010
+#define SPIM_PHA 0x0020
+#define SPIM_PHA_NORMAL 0x0000
+#define SPIM_PHA_OPPOSITE 0x0020
+#define SPIM_IRQEN 0x0040
+#define SPIM_SPIMIRQ 0x0080
+#define SPIM_XCH 0x0100
+#define SPIM_XCH_IDLE 0x0000
+#define SPIM_XCH_INIT 0x0100
+#define SPIM_SPMEN 0x0200
+#define SPIM_SPMEN_DISABLE 0x0000
+#define SPIM_SPMEN_ENABLE 0x0200
+#define SPIM_RATE 0xe000
+#define SPIM_RATE_4 0x0000
+#define SPIM_RATE_8 0x2000
+#define SPIM_RATE_16 0x4000
+#define SPIM_RATE_32 0x6000
+#define SPIM_RATE_64 0x8000
+#define SPIM_RATE_128 0xa000
+#define SPIM_RATE_256 0xc000
+#define SPIM_RATE_512 0xe000
+
+#define PWMC_PWMIRQ 0x8000
+#define PWMC_IRQEN 0x4000
+#define PWMC_LOAD 0x0100
+#define PWMC_PIN 0x0080
+#define PWMC_POL 0x0040
+#define PWMC_PWMEN 0x0010
+#define PWMC_CLKSEL 0x0007
+
+
#define VERBOSE_LEVEL (0)
static inline void ATTR_PRINTF(3,4) verboselog(device_t &device, int n_level, const char *s_fmt, ...)
@@ -28,36 +347,37 @@ static inline void ATTR_PRINTF(3,4) verboselog(device_t &device, int n_level, co
}
}
-const device_type MC68328 = device_creator<mc68328_device>;
+DEFINE_DEVICE_TYPE(MC68328, mc68328_device, "mc68328", "MC68328 DragonBall Integrated Processor")
mc68328_device::mc68328_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC68328, "MC68328 (DragonBall) Integrated Processor", tag, owner, clock, "mc68328", __FILE__), m_rtc(nullptr), m_pwm(nullptr),
- m_out_port_a_cb(*this),
- m_out_port_b_cb(*this),
- m_out_port_c_cb(*this),
- m_out_port_d_cb(*this),
- m_out_port_e_cb(*this),
- m_out_port_f_cb(*this),
- m_out_port_g_cb(*this),
- m_out_port_j_cb(*this),
- m_out_port_k_cb(*this),
- m_out_port_m_cb(*this),
- m_in_port_a_cb(*this),
- m_in_port_b_cb(*this),
- m_in_port_c_cb(*this),
- m_in_port_d_cb(*this),
- m_in_port_e_cb(*this),
- m_in_port_f_cb(*this),
- m_in_port_g_cb(*this),
- m_in_port_j_cb(*this),
- m_in_port_k_cb(*this),
- m_in_port_m_cb(*this),
- m_out_pwm_cb(*this),
- m_out_spim_cb(*this),
- m_in_spim_cb(*this),
- m_spim_xch_trigger_cb(*this),
- m_cpu(*this, finder_base::DUMMY_TAG)
+ : device_t(mconfig, MC68328, tag, owner, clock)
+ , m_rtc(nullptr), m_pwm(nullptr)
+ , m_out_port_a_cb(*this)
+ , m_out_port_b_cb(*this)
+ , m_out_port_c_cb(*this)
+ , m_out_port_d_cb(*this)
+ , m_out_port_e_cb(*this)
+ , m_out_port_f_cb(*this)
+ , m_out_port_g_cb(*this)
+ , m_out_port_j_cb(*this)
+ , m_out_port_k_cb(*this)
+ , m_out_port_m_cb(*this)
+ , m_in_port_a_cb(*this)
+ , m_in_port_b_cb(*this)
+ , m_in_port_c_cb(*this)
+ , m_in_port_d_cb(*this)
+ , m_in_port_e_cb(*this)
+ , m_in_port_f_cb(*this)
+ , m_in_port_g_cb(*this)
+ , m_in_port_j_cb(*this)
+ , m_in_port_k_cb(*this)
+ , m_in_port_m_cb(*this)
+ , m_out_pwm_cb(*this)
+ , m_out_spim_cb(*this)
+ , m_in_spim_cb(*this)
+ , m_spim_xch_trigger_cb(*this)
+ , m_cpu(*this, finder_base::DUMMY_TAG)
{
}
diff --git a/src/devices/machine/mc68328.h b/src/devices/machine/mc68328.h
index ac58dff85c8..4b4892a64d3 100644
--- a/src/devices/machine/mc68328.h
+++ b/src/devices/machine/mc68328.h
@@ -88,552 +88,40 @@
*****************************************************************************************************************/
-#ifndef __MC68328_H__
-#define __MC68328_H__
-
-
-#define SCR_BETO 0x80
-#define SCR_WPV 0x40
-#define SCR_PRV 0x20
-#define SCR_BETEN 0x10
-#define SCR_SO 0x08
-#define SCR_DMAP 0x04
-#define SCR_WDTH8 0x01
-
-#define ICR_POL6 0x0100
-#define ICR_POL3 0x0200
-#define ICR_POL2 0x0400
-#define ICR_POL1 0x0800
-#define ICR_ET6 0x1000
-#define ICR_ET3 0x2000
-#define ICR_ET2 0x4000
-#define ICR_ET1 0x8000
-
-#define INT_SPIM 0x000001
-#define INT_TIMER2 0x000002
-#define INT_UART 0x000004
-#define INT_WDT 0x000008
-#define INT_RTC 0x000010
-#define INT_RESERVED 0x000020
-#define INT_KB 0x000040
-#define INT_PWM 0x000080
-#define INT_INT0 0x000100
-#define INT_INT1 0x000200
-#define INT_INT2 0x000400
-#define INT_INT3 0x000800
-#define INT_INT4 0x001000
-#define INT_INT5 0x002000
-#define INT_INT6 0x004000
-#define INT_INT7 0x008000
-#define INT_KBDINTS 0x00ff00
-#define INT_IRQ1 0x010000
-#define INT_IRQ2 0x020000
-#define INT_IRQ3 0x040000
-#define INT_IRQ6 0x080000
-#define INT_PEN 0x100000
-#define INT_SPIS 0x200000
-#define INT_TIMER1 0x400000
-#define INT_IRQ7 0x800000
-
-#define INT_M68K_LINE1 (INT_IRQ1)
-#define INT_M68K_LINE2 (INT_IRQ2)
-#define INT_M68K_LINE3 (INT_IRQ3)
-#define INT_M68K_LINE4 (INT_INT0 | INT_INT1 | INT_INT2 | INT_INT3 | INT_INT4 | INT_INT5 | INT_INT6 | INT_INT7 | \
- INT_PWM | INT_KB | INT_RTC | INT_WDT | INT_UART | INT_TIMER2 | INT_SPIM)
-#define INT_M68K_LINE5 (INT_PEN)
-#define INT_M68K_LINE6 (INT_IRQ6 | INT_TIMER1 | INT_SPIS)
-#define INT_M68K_LINE7 (INT_IRQ7)
-#define INT_M68K_LINE67 (INT_M68K_LINE6 | INT_M68K_LINE7)
-#define INT_M68K_LINE567 (INT_M68K_LINE5 | INT_M68K_LINE6 | INT_M68K_LINE7)
-#define INT_M68K_LINE4567 (INT_M68K_LINE4 | INT_M68K_LINE5 | INT_M68K_LINE6 | INT_M68K_LINE7)
-#define INT_M68K_LINE34567 (INT_M68K_LINE3 | INT_M68K_LINE4 | INT_M68K_LINE5 | INT_M68K_LINE6 | INT_M68K_LINE7)
-#define INT_M68K_LINE234567 (INT_M68K_LINE2 | INT_M68K_LINE3 | INT_M68K_LINE4 | INT_M68K_LINE5 | INT_M68K_LINE6 | INT_M68K_LINE7)
-
-#define INT_IRQ1_SHIFT 0x000001
-#define INT_IRQ2_SHIFT 0x000002
-#define INT_IRQ3_SHIFT 0x000004
-#define INT_IRQ6_SHIFT 0x000008
-#define INT_PEN_SHIFT 0x000010
-#define INT_SPIS_SHIFT 0x000020
-#define INT_TIMER1_SHIFT 0x000040
-#define INT_IRQ7_SHIFT 0x000080
-
-#define INT_ACTIVE 1
-#define INT_INACTIVE 0
-
-#define GRPBASE_BASE_ADDR 0xfff0
-#define GRPBASE_VALID 0x0001
-
-#define GRPMASK_BASE_MASK 0xfff0
-
-#define CSAB_COMPARE 0xff000000
-#define CSAB_BSW 0x00010000
-#define CSAB_MASK 0x0000ff00
-#define CSAB_RO 0x00000008
-#define CSAB_WAIT 0x00000007
-
-#define CSCD_COMPARE 0xfff00000
-#define CSCD_BSW 0x00010000
-#define CSCD_MASK 0x0000fff0
-#define CSCD_RO 0x00000008
-#define CSCD_WAIT 0x00000007
-
-#define PLLCR_PIXCLK_SEL 0x3800
-#define PLLCR_PIXCLK_SEL_DIV2 0x0000
-#define PLLCR_PIXCLK_SEL_DIV4 0x0800
-#define PLLCR_PIXCLK_SEL_DIV8 0x1000
-#define PLLCR_PIXCLK_SEL_DIV16 0x1800
-#define PLLCR_PIXCLK_SEL_DIV1_0 0x2000
-#define PLLCR_PIXCLK_SEL_DIV1_1 0x2800
-#define PLLCR_PIXCLK_SEL_DIV1_2 0x3000
-#define PLLCR_PIXCLK_SEL_DIV1_3 0x3800
-#define PLLCR_SYSCLK_SEL 0x0700
-#define PLLCR_SYSCLK_SEL_DIV2 0x0000
-#define PLLCR_SYSCLK_SEL_DIV4 0x0100
-#define PLLCR_SYSCLK_SEL_DIV8 0x0200
-#define PLLCR_SYSCLK_SEL_DIV16 0x0300
-#define PLLCR_SYSCLK_SEL_DIV1_0 0x0400
-#define PLLCR_SYSCLK_SEL_DIV1_1 0x0500
-#define PLLCR_SYSCLK_SEL_DIV1_2 0x0600
-#define PLLCR_SYSCLK_SEL_DIV1_3 0x0700
-#define PLLCR_CLKEN 0x0010
-#define PLLCR_DISPLL 0x0008
-
-#define PLLFSR_CLK32 0x8000
-#define PLLFSR_PROT 0x4000
-#define PLLFSR_QCNT 0x0f00
-#define PLLFSR_PCNT 0x00ff
-
-#define PCTLR_PC_EN 0x80
-#define PCTLR_STOP 0x40
-#define PCTLR_WIDTH 0x1f
-
-#define CXP_CC 0xc000
-#define CXP_CC_XLU 0x0000
-#define CXP_CC_BLACK 0x4000
-#define CXP_CC_INVERSE 0x8000
-#define CXP_CC_INVALID 0xc000
-#define CXP_MASK 0x03ff
-
-#define CYP_MASK 0x01ff
-
-#define CWCH_CW 0x1f00
-#define CWCH_CH 0x001f
-
-#define BLKC_BKEN 0x80
-#define BLKC_BD 0x7f
-
-#define LPICF_PBSIZ 0x06
-#define LPICF_PBSIZ_1 0x00
-#define LPICF_PBSIZ_2 0x02
-#define LPICF_PBSIZ_4 0x04
-#define LPICF_PBSIZ_INVALID 0x06
-
-#define LPOLCF_LCKPOL 0x08
-#define LPOLCF_FLMPOL 0x04
-#define LPOLCF_LPPOL 0x02
-#define LPOLCF_PIXPOL 0x01
-
-#define LACDRC_MASK 0x0f
-
-#define LPXCD_MASK 0x3f
-
-#define LCKCON_LCDC_EN 0x80
-#define LCKCON_LCDON 0x80
-#define LCKCON_DMA16 0x40
-#define LCKCON_WS 0x30
-#define LCKCON_WS_1 0x00
-#define LCKCON_WS_2 0x10
-#define LCKCON_WS_3 0x20
-#define LCKCON_WS_4 0x30
-#define LCKCON_DWIDTH 0x02
-#define LCKCON_PCDS 0x01
-
-#define LBAR_MASK 0x7f
-
-#define LPOSR_BOS 0x08
-#define LPOSR_POS 0x07
-
-#define LFRCM_XMOD 0xf0
-#define LFRCM_YMOD 0x0f
-
-#define LGPMR_PAL1 0x7000
-#define LGPMR_PAL0 0x0700
-#define LGPMR_PAL3 0x0070
-#define LGPMR_PAL2 0x0007
-
-#define RTCHMSR_HOURS 0x1f000000
-#define RTCHMSR_MINUTES 0x003f0000
-#define RTCHMSR_SECONDS 0x0000003f
-
-#define RTCCTL_38_4 0x0020
-#define RTCCTL_ENABLE 0x0080
-
-#define RTCINT_STOPWATCH 0x0001
-#define RTCINT_MINUTE 0x0002
-#define RTCINT_ALARM 0x0004
-#define RTCINT_DAY 0x0008
-#define RTCINT_SECOND 0x0010
-
-#define RTCSTPWTCH_MASK 0x003f
-
-#define TCTL_TEN 0x0001
-#define TCTL_TEN_ENABLE 0x0001
-#define TCTL_CLKSOURCE 0x000e
-#define TCTL_CLKSOURCE_STOP 0x0000
-#define TCTL_CLKSOURCE_SYSCLK 0x0002
-#define TCTL_CLKSOURCE_SYSCLK16 0x0004
-#define TCTL_CLKSOURCE_TIN 0x0006
-#define TCTL_CLKSOURCE_32KHZ4 0x0008
-#define TCTL_CLKSOURCE_32KHZ5 0x000a
-#define TCTL_CLKSOURCE_32KHZ6 0x000c
-#define TCTL_CLKSOURCE_32KHZ7 0x000e
-#define TCTL_IRQEN 0x0010
-#define TCTL_IRQEN_ENABLE 0x0010
-#define TCTL_OM 0x0020
-#define TCTL_OM_ACTIVELOW 0x0000
-#define TCTL_OM_TOGGLE 0x0020
-#define TCTL_CAPTURE 0x00c0
-#define TCTL_CAPTURE_NOINT 0x0000
-#define TCTL_CAPTURE_RISING 0x0040
-#define TCTL_CAPTURE_FALLING 0x0080
-#define TCTL_CAPTURE_BOTH 0x00c0
-#define TCTL_FRR 0x0100
-#define TCTL_FRR_RESTART 0x0000
-#define TCTL_FRR_FREERUN 0x0100
-
-#define TSTAT_COMP 0x0001
-#define TSTAT_CAPT 0x0002
-
-#define WCTLR_WDRST 0x0008
-#define WCTLR_LOCK 0x0004
-#define WCTLR_FI 0x0002
-#define WCTLR_WDEN 0x0001
-
-#define USTCNT_UART_EN 0x8000
-#define USTCNT_RX_EN 0x4000
-#define USTCNT_TX_EN 0x2000
-#define USTCNT_RX_CLK_CONT 0x1000
-#define USTCNT_PARITY_EN 0x0800
-#define USTCNT_ODD_EVEN 0x0400
-#define USTCNT_STOP_BITS 0x0200
-#define USTCNT_8_7 0x0100
-#define USTCNT_GPIO_DELTA_EN 0x0080
-#define USTCNT_CTS_DELTA_EN 0x0040
-#define USTCNT_RX_FULL_EN 0x0020
-#define USTCNT_RX_HALF_EN 0x0010
-#define USTCNT_RX_RDY_EN 0x0008
-#define USTCNT_TX_EMPTY_EN 0x0004
-#define USTCNT_TX_HALF_EN 0x0002
-#define USTCNT_TX_AVAIL_EN 0x0001
-
-#define UBAUD_GPIO_DELTA 0x8000
-#define UBAUD_GPIO 0x4000
-#define UBAUD_GPIO_DIR 0x2000
-#define UBAUD_GPIO_SRC 0x1000
-#define UBAUD_BAUD_SRC 0x0800
-#define UBAUD_DIVIDE 0x0700
-#define UBAUD_DIVIDE_1 0x0000
-#define UBAUD_DIVIDE_2 0x0100
-#define UBAUD_DIVIDE_4 0x0200
-#define UBAUD_DIVIDE_8 0x0300
-#define UBAUD_DIVIDE_16 0x0400
-#define UBAUD_DIVIDE_32 0x0500
-#define UBAUD_DIVIDE_64 0x0600
-#define UBAUD_DIVIDE_128 0x0700
-#define UBAUD_PRESCALER 0x00ff
-
-#define URX_FIFO_FULL 0x8000
-#define URX_FIFO_HALF 0x4000
-#define URX_DATA_READY 0x2000
-#define URX_OVRUN 0x0800
-#define URX_FRAME_ERROR 0x0400
-#define URX_BREAK 0x0200
-#define URX_PARITY_ERROR 0x0100
-
-#define UTX_FIFO_EMPTY 0x8000
-#define UTX_FIFO_HALF 0x4000
-#define UTX_TX_AVAIL 0x2000
-#define UTX_SEND_BREAK 0x1000
-#define UTX_IGNORE_CTS 0x0800
-#define UTX_CTS_STATUS 0x0200
-#define UTX_CTS_DELTA 0x0100
-
-#define UMISC_CLK_SRC 0x4000
-#define UMISC_FORCE_PERR 0x2000
-#define UMISC_LOOP 0x1000
-#define UMISC_RTS_CONT 0x0080
-#define UMISC_RTS 0x0040
-#define UMISC_IRDA_ENABLE 0x0020
-#define UMISC_IRDA_LOOP 0x0010
-
-#define SPIS_SPIS_IRQ 0x8000
-#define SPIS_IRQEN 0x4000
-#define SPIS_ENPOL 0x2000
-#define SPIS_DATA_RDY 0x1000
-#define SPIS_OVRWR 0x0800
-#define SPIS_PHA 0x0400
-#define SPIS_POL 0x0200
-#define SPIS_SPISEN 0x0100
-
-#define SPIM_CLOCK_COUNT 0x000f
-#define SPIM_POL 0x0010
-#define SPIM_POL_HIGH 0x0000
-#define SPIM_POL_LOW 0x0010
-#define SPIM_PHA 0x0020
-#define SPIM_PHA_NORMAL 0x0000
-#define SPIM_PHA_OPPOSITE 0x0020
-#define SPIM_IRQEN 0x0040
-#define SPIM_SPIMIRQ 0x0080
-#define SPIM_XCH 0x0100
-#define SPIM_XCH_IDLE 0x0000
-#define SPIM_XCH_INIT 0x0100
-#define SPIM_SPMEN 0x0200
-#define SPIM_SPMEN_DISABLE 0x0000
-#define SPIM_SPMEN_ENABLE 0x0200
-#define SPIM_RATE 0xe000
-#define SPIM_RATE_4 0x0000
-#define SPIM_RATE_8 0x2000
-#define SPIM_RATE_16 0x4000
-#define SPIM_RATE_32 0x6000
-#define SPIM_RATE_64 0x8000
-#define SPIM_RATE_128 0xa000
-#define SPIM_RATE_256 0xc000
-#define SPIM_RATE_512 0xe000
-
-#define PWMC_PWMIRQ 0x8000
-#define PWMC_IRQEN 0x4000
-#define PWMC_LOAD 0x0100
-#define PWMC_PIN 0x0080
-#define PWMC_POL 0x0040
-#define PWMC_PWMEN 0x0010
-#define PWMC_CLKSEL 0x0007
-
-struct mc68328_regs_t
-{
- // $(FF)FFF000
- uint8_t scr; // System Control Register
- uint8_t unused0[255];
-
- // $(FF)FFF100
- uint16_t grpbasea; // Chip Select Group A Base Register
- uint16_t grpbaseb; // Chip Select Group B Base Register
- uint16_t grpbasec; // Chip Select Group C Base Register
- uint16_t grpbased; // Chip Select Group D Base Register
- uint16_t grpmaska; // Chip Select Group A Mask Register
- uint16_t grpmaskb; // Chip Select Group B Mask Register
- uint16_t grpmaskc; // Chip Select Group C Mask Register
- uint16_t grpmaskd; // Chip Select Group D Mask Register
- uint32_t csa0; // Group A Chip Select 0 Register
- uint32_t csa1; // Group A Chip Select 1 Register
- uint32_t csa2; // Group A Chip Select 2 Register
- uint32_t csa3; // Group A Chip Select 3 Register
- uint32_t csb0; // Group B Chip Select 0 Register
- uint32_t csb1; // Group B Chip Select 1 Register
- uint32_t csb2; // Group B Chip Select 2 Register
- uint32_t csb3; // Group B Chip Select 3 Register
- uint32_t csc0; // Group C Chip Select 0 Register
- uint32_t csc1; // Group C Chip Select 1 Register
- uint32_t csc2; // Group C Chip Select 2 Register
- uint32_t csc3; // Group C Chip Select 3 Register
- uint32_t csd0; // Group D Chip Select 0 Register
- uint32_t csd1; // Group D Chip Select 1 Register
- uint32_t csd2; // Group D Chip Select 2 Register
- uint32_t csd3; // Group D Chip Select 3 Register
- uint8_t unused1[176];
-
- // $(FF)FFF200
- uint16_t pllcr; // PLL Control Register
- uint16_t pllfsr; // PLL Frequency Select Register
- uint8_t pad2[3];
- uint8_t pctlr; // Power Control Register
- uint8_t unused3[248];
-
- // $(FF)FFF300
- uint8_t ivr; // Interrupt Vector Register
- uint8_t unused4[1];
- uint16_t icr; // Interrupt Control Register
- uint32_t imr; // Interrupt Mask Register
- uint32_t iwr; // Interrupt Wakeup Enable Register
- uint32_t isr; // Interrupt Status Register
- uint32_t ipr; // Interrupt Pending Register
- uint8_t unused5[236];
-
- // $(FF)FFF400
- uint8_t padir; // Port A Direction Register
- uint8_t padata; // Port A Data Register
- uint8_t unused6[1];
- uint8_t pasel; // Port A Select Register
- uint8_t unused7[4];
-
- uint8_t pbdir; // Port B Direction Register
- uint8_t pbdata; // Port B Data Register
- uint8_t unused8[1];
- uint8_t pbsel; // Port B Select Register
- uint8_t unused9[4];
-
- uint8_t pcdir; // Port C Direction Register
- uint8_t pcdata; // Port C Data Register
- uint8_t unused10[1];
- uint8_t pcsel; // Port C Select Register
- uint8_t unused11[4];
-
- uint8_t pddir; // Port D Direction Register
- uint8_t pddata; // Port D Data Register
- uint8_t pdpuen; // Port D Pullup Enable Register
- uint8_t unused12[1];
- uint8_t pdpol; // Port D Polarity Register
- uint8_t pdirqen; // Port D IRQ Enable Register
- uint8_t pddataedge; // Port D Data Edge Level
- uint8_t pdirqedge; // Port D IRQ Edge Register
-
- uint8_t pedir; // Port E Direction Register
- uint8_t pedata; // Port E Data Register
- uint8_t pepuen; // Port E Pullup Enable Register
- uint8_t pesel; // Port E Select Register
- uint8_t unused14[4];
-
- uint8_t pfdir; // Port F Direction Register
- uint8_t pfdata; // Port F Data Register
- uint8_t pfpuen; // Port F Pullup Enable Register
- uint8_t pfsel; // Port F Select Register
- uint8_t unused15[4];
-
- uint8_t pgdir; // Port G Direction Register
- uint8_t pgdata; // Port G Data Register
- uint8_t pgpuen; // Port G Pullup Enable Register
- uint8_t pgsel; // Port G Select Register
- uint8_t unused16[4];
-
- uint8_t pjdir; // Port J Direction Register
- uint8_t pjdata; // Port J Data Register
- uint8_t unused17[1];
- uint8_t pjsel; // Port J Select Register
- uint8_t unused18[4];
- uint8_t pkdir; // Port K Direction Register
- uint8_t pkdata; // Port K Data Register
- uint8_t pkpuen; // Port K Pullup Enable Register
- uint8_t pksel; // Port K Select Register
- uint8_t unused19[4];
-
- uint8_t pmdir; // Port M Direction Register
- uint8_t pmdata; // Port M Data Register
- uint8_t pmpuen; // Port M Pullup Enable Register
- uint8_t pmsel; // Port M Select Register
- uint8_t unused20[180];
-
- // $(FF)FFF500
- uint16_t pwmc; // PWM Control Register
- uint16_t pwmp; // PWM Period Register
- uint16_t pwmw; // PWM Width Register
- uint16_t pwmcnt; // PWN Counter
- uint8_t unused21[248];
-
- // $(FF)FFF600
- uint16_t tctl[2]; // Timer Control Register
- uint16_t tprer[2]; // Timer Prescaler Register
- uint16_t tcmp[2]; // Timer Compare Register
- uint16_t tcr[2]; // Timer Capture Register
- uint16_t tcn[2]; // Timer Counter
- uint16_t tstat[2]; // Timer Status
- uint16_t wctlr; // Watchdog Control Register
- uint16_t wcmpr; // Watchdog Compare Register
- uint16_t wcn; // Watchdog Counter
- uint8_t tclear[2]; // Timer Clearable Status
- uint8_t unused22[224];
-
- // $(FF)FFF700
- uint16_t spisr; // SPIS Register
- uint8_t unused23[254];
-
- // $(FF)FFF800
- uint16_t spimdata; // SPIM Data Register
- uint16_t spimcont; // SPIM Control/Status Register
- uint8_t unused24[252];
-
- // $(FF)FFF900
- uint16_t ustcnt; // UART Status/Control Register
- uint16_t ubaud; // UART Baud Control Register
- uint16_t urx; // UART RX Register
- uint16_t utx; // UART TX Register
- uint16_t umisc; // UART Misc Register
- uint8_t unused25[246];
-
- // $(FF)FFFA00
- uint32_t lssa; // Screen Starting Address Register
- uint8_t unused26[1];
- uint8_t lvpw; // Virtual Page Width Register
- uint8_t unused27[2];
- uint16_t lxmax; // Screen Width Register
- uint16_t lymax; // Screen Height Register
- uint8_t unused28[12];
- uint16_t lcxp; // Cursor X Position
- uint16_t lcyp; // Cursor Y Position
- uint16_t lcwch; // Cursor Width & Height Register
- uint8_t unused29[1];
- uint8_t lblkc; // Blink Control Register
- uint8_t lpicf; // Panel Interface Config Register
- uint8_t lpolcf; // Polarity Config Register
- uint8_t unused30[1];
- uint8_t lacdrc; // ACD (M) Rate Control Register
- uint8_t unused31[1];
- uint8_t lpxcd; // Pixel Clock Divider Register
- uint8_t unused32[1];
- uint8_t lckcon; // Clocking Control Register
- uint8_t unused33[1];
- uint8_t llbar; // Last Buffer Address Register
- uint8_t unused34[1];
- uint8_t lotcr; // Octet Terminal Count Register
- uint8_t unused35[1];
- uint8_t lposr; // Panning Offset Register
- uint8_t unused36[3];
- uint8_t lfrcm; // Frame Rate Control Modulation Register
- uint16_t lgpmr; // Gray Palette Mapping Register
- uint8_t unused37[204];
-
- // $(FF)FFFB00
- uint32_t hmsr; // RTC Hours Minutes Seconds Register
- uint32_t alarm; // RTC Alarm Register
- uint8_t unused38[4];
- uint16_t rtcctl; // RTC Control Register
- uint16_t rtcisr; // RTC Interrupt Status Register
- uint16_t rtcienr; // RTC Interrupt Enable Register
- uint16_t stpwtch; // Stopwatch Minutes
- uint8_t unused42[1260];
-};
+#ifndef MAME_MACHINE_MC68328_H
+#define MAME_MACHINE_MC68328_H
class mc68328_device : public device_t
{
public:
mc68328_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~mc68328_device() {}
static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<mc68328_device &>(device).m_cpu.set_tag(tag); }
- template<class _Object> static devcb_base &set_out_port_a_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_port_a_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_port_b_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_port_b_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_port_c_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_port_c_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_port_d_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_port_d_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_port_e_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_port_e_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_port_f_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_port_f_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_port_g_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_port_g_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_port_j_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_port_j_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_port_k_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_port_k_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_port_m_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_port_m_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_a_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_port_a_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_b_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_port_b_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_c_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_port_c_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_d_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_port_d_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_e_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_port_e_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_f_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_port_f_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_g_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_port_g_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_j_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_port_j_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_k_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_port_k_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_m_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_port_m_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pwm_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_pwm_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_spim_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_out_spim_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_spim_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_in_spim_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_spim_xch_trigger_callback(device_t &device, _Object object) { return downcast<mc68328_device &>(device).m_spim_xch_trigger_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_port_a_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_a_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_port_b_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_b_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_port_c_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_c_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_port_d_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_d_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_port_e_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_e_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_port_f_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_f_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_port_g_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_g_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_port_j_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_j_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_port_k_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_k_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_port_m_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_port_m_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_a_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_a_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_b_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_b_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_c_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_c_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_d_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_d_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_e_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_e_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_f_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_f_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_g_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_g_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_j_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_j_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_k_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_k_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_m_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_port_m_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pwm_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_pwm_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_spim_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_out_spim_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_spim_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_in_spim_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_spim_xch_trigger_callback(device_t &device, Object &&cb) { return downcast<mc68328_device &>(device).m_spim_xch_trigger_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE16_MEMBER(write);
@@ -649,6 +137,199 @@ protected:
virtual void device_reset() override;
private:
+ struct mc68328_regs_t
+ {
+ // $(FF)FFF000
+ uint8_t scr; // System Control Register
+ uint8_t unused0[255];
+
+ // $(FF)FFF100
+ uint16_t grpbasea; // Chip Select Group A Base Register
+ uint16_t grpbaseb; // Chip Select Group B Base Register
+ uint16_t grpbasec; // Chip Select Group C Base Register
+ uint16_t grpbased; // Chip Select Group D Base Register
+ uint16_t grpmaska; // Chip Select Group A Mask Register
+ uint16_t grpmaskb; // Chip Select Group B Mask Register
+ uint16_t grpmaskc; // Chip Select Group C Mask Register
+ uint16_t grpmaskd; // Chip Select Group D Mask Register
+ uint32_t csa0; // Group A Chip Select 0 Register
+ uint32_t csa1; // Group A Chip Select 1 Register
+ uint32_t csa2; // Group A Chip Select 2 Register
+ uint32_t csa3; // Group A Chip Select 3 Register
+ uint32_t csb0; // Group B Chip Select 0 Register
+ uint32_t csb1; // Group B Chip Select 1 Register
+ uint32_t csb2; // Group B Chip Select 2 Register
+ uint32_t csb3; // Group B Chip Select 3 Register
+ uint32_t csc0; // Group C Chip Select 0 Register
+ uint32_t csc1; // Group C Chip Select 1 Register
+ uint32_t csc2; // Group C Chip Select 2 Register
+ uint32_t csc3; // Group C Chip Select 3 Register
+ uint32_t csd0; // Group D Chip Select 0 Register
+ uint32_t csd1; // Group D Chip Select 1 Register
+ uint32_t csd2; // Group D Chip Select 2 Register
+ uint32_t csd3; // Group D Chip Select 3 Register
+ uint8_t unused1[176];
+
+ // $(FF)FFF200
+ uint16_t pllcr; // PLL Control Register
+ uint16_t pllfsr; // PLL Frequency Select Register
+ uint8_t pad2[3];
+ uint8_t pctlr; // Power Control Register
+ uint8_t unused3[248];
+
+ // $(FF)FFF300
+ uint8_t ivr; // Interrupt Vector Register
+ uint8_t unused4[1];
+ uint16_t icr; // Interrupt Control Register
+ uint32_t imr; // Interrupt Mask Register
+ uint32_t iwr; // Interrupt Wakeup Enable Register
+ uint32_t isr; // Interrupt Status Register
+ uint32_t ipr; // Interrupt Pending Register
+ uint8_t unused5[236];
+
+ // $(FF)FFF400
+ uint8_t padir; // Port A Direction Register
+ uint8_t padata; // Port A Data Register
+ uint8_t unused6[1];
+ uint8_t pasel; // Port A Select Register
+ uint8_t unused7[4];
+
+ uint8_t pbdir; // Port B Direction Register
+ uint8_t pbdata; // Port B Data Register
+ uint8_t unused8[1];
+ uint8_t pbsel; // Port B Select Register
+ uint8_t unused9[4];
+
+ uint8_t pcdir; // Port C Direction Register
+ uint8_t pcdata; // Port C Data Register
+ uint8_t unused10[1];
+ uint8_t pcsel; // Port C Select Register
+ uint8_t unused11[4];
+
+ uint8_t pddir; // Port D Direction Register
+ uint8_t pddata; // Port D Data Register
+ uint8_t pdpuen; // Port D Pullup Enable Register
+ uint8_t unused12[1];
+ uint8_t pdpol; // Port D Polarity Register
+ uint8_t pdirqen; // Port D IRQ Enable Register
+ uint8_t pddataedge; // Port D Data Edge Level
+ uint8_t pdirqedge; // Port D IRQ Edge Register
+
+ uint8_t pedir; // Port E Direction Register
+ uint8_t pedata; // Port E Data Register
+ uint8_t pepuen; // Port E Pullup Enable Register
+ uint8_t pesel; // Port E Select Register
+ uint8_t unused14[4];
+
+ uint8_t pfdir; // Port F Direction Register
+ uint8_t pfdata; // Port F Data Register
+ uint8_t pfpuen; // Port F Pullup Enable Register
+ uint8_t pfsel; // Port F Select Register
+ uint8_t unused15[4];
+
+ uint8_t pgdir; // Port G Direction Register
+ uint8_t pgdata; // Port G Data Register
+ uint8_t pgpuen; // Port G Pullup Enable Register
+ uint8_t pgsel; // Port G Select Register
+ uint8_t unused16[4];
+
+ uint8_t pjdir; // Port J Direction Register
+ uint8_t pjdata; // Port J Data Register
+ uint8_t unused17[1];
+ uint8_t pjsel; // Port J Select Register
+ uint8_t unused18[4];
+ uint8_t pkdir; // Port K Direction Register
+ uint8_t pkdata; // Port K Data Register
+ uint8_t pkpuen; // Port K Pullup Enable Register
+ uint8_t pksel; // Port K Select Register
+ uint8_t unused19[4];
+
+ uint8_t pmdir; // Port M Direction Register
+ uint8_t pmdata; // Port M Data Register
+ uint8_t pmpuen; // Port M Pullup Enable Register
+ uint8_t pmsel; // Port M Select Register
+ uint8_t unused20[180];
+
+ // $(FF)FFF500
+ uint16_t pwmc; // PWM Control Register
+ uint16_t pwmp; // PWM Period Register
+ uint16_t pwmw; // PWM Width Register
+ uint16_t pwmcnt; // PWN Counter
+ uint8_t unused21[248];
+
+ // $(FF)FFF600
+ uint16_t tctl[2]; // Timer Control Register
+ uint16_t tprer[2]; // Timer Prescaler Register
+ uint16_t tcmp[2]; // Timer Compare Register
+ uint16_t tcr[2]; // Timer Capture Register
+ uint16_t tcn[2]; // Timer Counter
+ uint16_t tstat[2]; // Timer Status
+ uint16_t wctlr; // Watchdog Control Register
+ uint16_t wcmpr; // Watchdog Compare Register
+ uint16_t wcn; // Watchdog Counter
+ uint8_t tclear[2]; // Timer Clearable Status
+ uint8_t unused22[224];
+
+ // $(FF)FFF700
+ uint16_t spisr; // SPIS Register
+ uint8_t unused23[254];
+
+ // $(FF)FFF800
+ uint16_t spimdata; // SPIM Data Register
+ uint16_t spimcont; // SPIM Control/Status Register
+ uint8_t unused24[252];
+
+ // $(FF)FFF900
+ uint16_t ustcnt; // UART Status/Control Register
+ uint16_t ubaud; // UART Baud Control Register
+ uint16_t urx; // UART RX Register
+ uint16_t utx; // UART TX Register
+ uint16_t umisc; // UART Misc Register
+ uint8_t unused25[246];
+
+ // $(FF)FFFA00
+ uint32_t lssa; // Screen Starting Address Register
+ uint8_t unused26[1];
+ uint8_t lvpw; // Virtual Page Width Register
+ uint8_t unused27[2];
+ uint16_t lxmax; // Screen Width Register
+ uint16_t lymax; // Screen Height Register
+ uint8_t unused28[12];
+ uint16_t lcxp; // Cursor X Position
+ uint16_t lcyp; // Cursor Y Position
+ uint16_t lcwch; // Cursor Width & Height Register
+ uint8_t unused29[1];
+ uint8_t lblkc; // Blink Control Register
+ uint8_t lpicf; // Panel Interface Config Register
+ uint8_t lpolcf; // Polarity Config Register
+ uint8_t unused30[1];
+ uint8_t lacdrc; // ACD (M) Rate Control Register
+ uint8_t unused31[1];
+ uint8_t lpxcd; // Pixel Clock Divider Register
+ uint8_t unused32[1];
+ uint8_t lckcon; // Clocking Control Register
+ uint8_t unused33[1];
+ uint8_t llbar; // Last Buffer Address Register
+ uint8_t unused34[1];
+ uint8_t lotcr; // Octet Terminal Count Register
+ uint8_t unused35[1];
+ uint8_t lposr; // Panning Offset Register
+ uint8_t unused36[3];
+ uint8_t lfrcm; // Frame Rate Control Modulation Register
+ uint16_t lgpmr; // Gray Palette Mapping Register
+ uint8_t unused37[204];
+
+ // $(FF)FFFB00
+ uint32_t hmsr; // RTC Hours Minutes Seconds Register
+ uint32_t alarm; // RTC Alarm Register
+ uint8_t unused38[4];
+ uint16_t rtcctl; // RTC Control Register
+ uint16_t rtcisr; // RTC Interrupt Status Register
+ uint16_t rtcienr; // RTC Interrupt Enable Register
+ uint16_t stpwtch; // Stopwatch Minutes
+ uint8_t unused42[1260];
+ };
+
// internal state
void set_interrupt_line(uint32_t line, uint32_t active);
void poll_port_d_interrupts();
@@ -702,7 +383,7 @@ private:
};
-extern const device_type MC68328;
+DECLARE_DEVICE_TYPE(MC68328, mc68328_device)
#define MCFG_MC68328_CPU(_tag) \
mc68328_device::static_set_cpu_tag(*device, "^" _tag);
@@ -780,4 +461,4 @@ extern const device_type MC68328;
devcb = &mc68328_device::set_spim_xch_trigger_callback(*device, DEVCB_##_devcb);
-#endif
+#endif // MAME_MACHINE_MC68328_H
diff --git a/src/devices/machine/mc6843.cpp b/src/devices/machine/mc6843.cpp
index 64b09f2de8d..af3c6cb9f46 100644
--- a/src/devices/machine/mc6843.cpp
+++ b/src/devices/machine/mc6843.cpp
@@ -35,10 +35,11 @@
#include "emu.h"
#include "mc6843.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-/******************* parameters ******************/
-#define VERBOSE 0
+/******************* parameters ******************/
/* macro-command numbers */
#define CMD_STZ 0x2 /* seek track zero */
@@ -65,17 +66,12 @@ static const char *const mc6843_cmd[16] =
};
-/******************* utility function and macros ********************/
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
-
-
-const device_type MC6843 = device_creator<mc6843_device>;
+DEFINE_DEVICE_TYPE(MC6843, mc6843_device, "mc5843", "Motorola MC6843 FDC")
mc6843_device::mc6843_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC6843, "MC6843 floppy controller", tag, owner, clock, "mc6843", __FILE__),
+ : device_t(mconfig, MC6843, tag, owner, clock),
m_write_irq(*this),
m_CTAR(0),
m_CMR(0),
@@ -232,7 +228,7 @@ void mc6843_device::status_update( )
}
m_write_irq( irq );
- LOG(( "status_update: irq=%i (CMR=%02X, ISR=%02X)\n", irq, m_CMR, m_ISR ));
+ LOG( "status_update: irq=%i (CMR=%02X, ISR=%02X)\n", irq, m_CMR, m_ISR );
}
@@ -275,7 +271,7 @@ void mc6843_device::finish_STZ( )
img->floppy_drive_seek( -1 );
}
- LOG(( "%f mc6843_finish_STZ: actual=%i\n", machine().time().as_double(), img->floppy_drive_get_current_track() ));
+ LOG( "%f mc6843_finish_STZ: actual=%i\n", machine().time().as_double(), img->floppy_drive_get_current_track() );
/* update state */
m_CTAR = 0;
@@ -297,7 +293,7 @@ void mc6843_device::finish_SEK( )
// TODO: not sure how CTAR bit 7 is handled here, but this is the safest approach for now
img->floppy_drive_seek( m_GCR - (m_CTAR & 0x7F) );
- LOG(( "%f mc6843_finish_SEK: from %i to %i (actual=%i)\n", machine().time().as_double(), (m_CTAR & 0x7F), m_GCR, img->floppy_drive_get_current_track() ));
+ LOG( "%f mc6843_finish_SEK: from %i to %i (actual=%i)\n", machine().time().as_double(), (m_CTAR & 0x7F), m_GCR, img->floppy_drive_get_current_track() );
/* update state */
m_CTAR = m_GCR;
@@ -318,7 +314,7 @@ int mc6843_device::address_search( chrn_id* id )
if ( ( ! img->floppy_drive_get_next_id( m_side, id ) ) || ( id->flags & ID_FLAG_CRC_ERROR_IN_ID_FIELD ) || ( id->N != 0 ) )
{
/* read address error */
- LOG(( "%f mc6843_address_search: get_next_id failed\n", machine().time().as_double() ));
+ LOG( "%f mc6843_address_search: get_next_id failed\n", machine().time().as_double() );
m_STRB |= 0x0a; /* set CRC error & Sector Address Undetected */
cmd_end( );
return 0;
@@ -327,7 +323,7 @@ int mc6843_device::address_search( chrn_id* id )
if ( id->C != m_LTAR )
{
/* track mismatch */
- LOG(( "%f mc6843_address_search: track mismatch: logical=%i real=%i\n", machine().time().as_double(), m_LTAR, id->C ));
+ LOG( "%f mc6843_address_search: track mismatch: logical=%i real=%i\n", machine().time().as_double(), m_LTAR, id->C );
m_data[0] = id->C; /* make the track number available to the CPU */
m_STRA |= 0x20; /* set Track Not Equal */
cmd_end( );
@@ -337,7 +333,7 @@ int mc6843_device::address_search( chrn_id* id )
if ( id->R == m_SAR )
{
/* found! */
- LOG(( "%f mc6843_address_search: sector %i found on track %i\n", machine().time().as_double(), id->R, id->C ));
+ LOG( "%f mc6843_address_search: sector %i found on track %i\n", machine().time().as_double(), id->R, id->C );
if ( ! (m_CMR & 0x20) )
{
m_ISR |= 0x04; /* if no DMA, set Status Sense */
@@ -351,7 +347,7 @@ int mc6843_device::address_search( chrn_id* id )
if ( r >= 4 )
{
/* time-out after 3 full revolutions */
- LOG(( "%f mc6843_address_search: no sector %i found after 3 revolutions\n", machine().time().as_double(), m_SAR ));
+ LOG( "%f mc6843_address_search: no sector %i found after 3 revolutions\n", machine().time().as_double(), m_SAR );
m_STRB |= 0x08; /* set Sector Address Undetected */
cmd_end( );
return 0;
@@ -372,7 +368,7 @@ int mc6843_device::address_search_read( chrn_id* id )
if ( id->flags & ID_FLAG_CRC_ERROR_IN_DATA_FIELD )
{
- LOG(( "%f mc6843_address_search_read: data CRC error\n", machine().time().as_double() ));
+ LOG( "%f mc6843_address_search_read: data CRC error\n", machine().time().as_double() );
m_STRB |= 0x06; /* set CRC error & Data Mark Undetected */
cmd_end( );
return 0;
@@ -380,7 +376,7 @@ int mc6843_device::address_search_read( chrn_id* id )
if ( id->flags & ID_FLAG_DELETED_DATA )
{
- LOG(( "%f mc6843_address_search_read: deleted data\n", machine().time().as_double() ));
+ LOG( "%f mc6843_address_search_read: deleted data\n", machine().time().as_double() );
m_STRA |= 0x02; /* set Delete Data Mark Detected */
}
@@ -449,7 +445,7 @@ void mc6843_device::device_timer(emu_timer &timer, device_timer_id id, int param
{
int cmd = m_CMR & 0x0f;
- LOG(( "%f mc6843_cont: timer called for cmd=%s(%i)\n", machine().time().as_double(), mc6843_cmd[cmd], cmd ));
+ LOG( "%f mc6843_cont: timer called for cmd=%s(%i)\n", machine().time().as_double(), mc6843_cmd[cmd], cmd );
m_timer_cont->adjust( attotime::never );
@@ -487,10 +483,10 @@ READ8_MEMBER( mc6843_device::read )
{
int cmd = m_CMR & 0x0f;
- LOG(( "%f %s mc6843_r: data input cmd=%s(%i), pos=%i/%i, GCR=%i, ",
+ LOG( "%f %s mc6843_r: data input cmd=%s(%i), pos=%i/%i, GCR=%i, ",
machine().time().as_double(), machine().describe_context(),
mc6843_cmd[cmd], cmd, m_data_idx,
- m_data_size, m_GCR ));
+ m_data_size, m_GCR );
if ( cmd == CMD_SSR || cmd == CMD_MSR )
{
@@ -544,24 +540,24 @@ READ8_MEMBER( mc6843_device::read )
logerror( "%s mc6843 read in unsupported command mode %i\n", machine().describe_context(), cmd );
}
- LOG(( "data=%02X\n", data ));
+ LOG( "data=%02X\n", data );
break;
}
case 1: /* Current-Track Address Register (CTAR) */
data = m_CTAR;
- LOG(( "%f %s mc6843_r: read CTAR %i (actual=%i)\n",
+ LOG( "%f %s mc6843_r: read CTAR %i (actual=%i)\n",
machine().time().as_double(), machine().describe_context(), data,
- floppy_image()->floppy_drive_get_current_track()));
+ floppy_image()->floppy_drive_get_current_track());
break;
case 2: /* Interrupt Status Register (ISR) */
data = m_ISR;
- LOG(( "%f %s mc6843_r: read ISR %02X: cmd=%scomplete settle=%scomplete sense-rq=%i STRB=%i\n",
+ LOG( "%f %s mc6843_r: read ISR %02X: cmd=%scomplete settle=%scomplete sense-rq=%i STRB=%i\n",
machine().time().as_double(), machine().describe_context(), data,
(data & 1) ? "" : "not-" , (data & 2) ? "" : "not-",
- (data >> 2) & 1, (data >> 3) & 1 ));
+ (data >> 2) & 1, (data >> 3) & 1 );
/* reset */
m_ISR &= 8; /* keep STRB */
@@ -584,19 +580,19 @@ READ8_MEMBER( mc6843_device::read )
m_STRA |= 0x40;
data = m_STRA;
- LOG(( "%f %s mc6843_r: read STRA %02X: data-rq=%i del-dta=%i ready=%i t0=%i wp=%i trk-dif=%i idx=%i busy=%i\n",
+ LOG( "%f %s mc6843_r: read STRA %02X: data-rq=%i del-dta=%i ready=%i t0=%i wp=%i trk-dif=%i idx=%i busy=%i\n",
machine().time().as_double(), machine().describe_context(), data,
data & 1, (data >> 1) & 1, (data >> 2) & 1, (data >> 3) & 1,
- (data >> 4) & 1, (data >> 5) & 1, (data >> 6) & 1, (data >> 7) & 1 ));
+ (data >> 4) & 1, (data >> 5) & 1, (data >> 6) & 1, (data >> 7) & 1 );
break;
}
case 4: /* Status Register B (STRB) */
data = m_STRB;
- LOG(( "%f %s mc6843_r: read STRB %02X: data-err=%i CRC-err=%i dta--mrk-err=%i sect-mrk-err=%i seek-err=%i fi=%i wr-err=%i hard-err=%i\n",
+ LOG( "%f %s mc6843_r: read STRB %02X: data-err=%i CRC-err=%i dta--mrk-err=%i sect-mrk-err=%i seek-err=%i fi=%i wr-err=%i hard-err=%i\n",
machine().time().as_double(), machine().describe_context(), data,
data & 1, (data >> 1) & 1, (data >> 2) & 1, (data >> 3) & 1,
- (data >> 4) & 1, (data >> 5) & 1, (data >> 6) & 1, (data >> 7) & 1 ));
+ (data >> 4) & 1, (data >> 5) & 1, (data >> 6) & 1, (data >> 7) & 1 );
/* (partial) reset */
m_STRB &= ~0xfb;
@@ -605,9 +601,9 @@ READ8_MEMBER( mc6843_device::read )
case 7: /* Logical-Track Address Register (LTAR) */
data = m_LTAR;
- LOG(( "%f %s mc6843_r: read LTAR %i (actual=%i)\n",
+ LOG( "%f %s mc6843_r: read LTAR %i (actual=%i)\n",
machine().time().as_double(), machine().describe_context(), data,
- floppy_image()->floppy_drive_get_current_track()));
+ floppy_image()->floppy_drive_get_current_track());
break;
default:
@@ -625,10 +621,10 @@ WRITE8_MEMBER( mc6843_device::write )
int cmd = m_CMR & 0x0f;
int FWF = (m_CMR >> 4) & 1;
- LOG(( "%f %s mc6843_w: data output cmd=%s(%i), pos=%i/%i, GCR=%i, data=%02X\n",
+ LOG( "%f %s mc6843_w: data output cmd=%s(%i), pos=%i/%i, GCR=%i, data=%02X\n",
machine().time().as_double(), machine().describe_context(),
mc6843_cmd[cmd], cmd, m_data_idx,
- m_data_size, m_GCR, data ));
+ m_data_size, m_GCR, data );
if ( cmd == CMD_SSW || cmd == CMD_MSW || cmd == CMD_SWD )
{
@@ -643,7 +639,7 @@ WRITE8_MEMBER( mc6843_device::write )
/* end of sector write */
legacy_floppy_image_device* img = floppy_image( );
- LOG(( "%f %s mc6843_w: write sector %i\n", machine().time().as_double(), machine().describe_context(), m_data_id ));
+ LOG( "%f %s mc6843_w: write sector %i\n", machine().time().as_double(), machine().describe_context(), m_data_id );
img->floppy_drive_write_sector_data(
m_side, m_data_id,
@@ -707,7 +703,7 @@ WRITE8_MEMBER( mc6843_device::write )
uint8_t track = m_data[1];
uint8_t sector = m_data[3];
uint8_t filler = 0xe5; /* standard Thomson filler */
- LOG(( "%f %s mc6843_w: address id detected track=%i sector=%i\n", machine().time().as_double(), machine().describe_context(), track, sector));
+ LOG( "%f %s mc6843_w: address id detected track=%i sector=%i\n", machine().time().as_double(), machine().describe_context(), track, sector);
img->floppy_drive_format_sector( m_side, sector, track, 0, sector, 0, filler );
}
else
@@ -736,19 +732,19 @@ WRITE8_MEMBER( mc6843_device::write )
case 1: /* Current-Track Address Register (CTAR) */
m_CTAR = data;
- LOG(( "%f %s mc6843_w: set CTAR to %i %02X (actual=%i) \n",
+ LOG( "%f %s mc6843_w: set CTAR to %i %02X (actual=%i) \n",
machine().time().as_double(), machine().describe_context(), m_CTAR, data,
- floppy_image()->floppy_drive_get_current_track()));
+ floppy_image()->floppy_drive_get_current_track());
break;
case 2: /* Command Register (CMR) */
{
int cmd = data & 15;
- LOG(( "%f %s mc6843_w: set CMR to $%02X: cmd=%s(%i) FWF=%i DMA=%i ISR3-intr=%i fun-intr=%i\n",
+ LOG( "%f %s mc6843_w: set CMR to $%02X: cmd=%s(%i) FWF=%i DMA=%i ISR3-intr=%i fun-intr=%i\n",
machine().time().as_double(), machine().describe_context(),
data, mc6843_cmd[cmd], cmd, (data >> 4) & 1, (data >> 5) & 1,
- (data >> 6) & 1, (data >> 7) & 1 ));
+ (data >> 6) & 1, (data >> 7) & 1 );
/* sanitize state */
m_STRA &= ~0x81; /* clear Busy & Data Transfer Request */
@@ -792,33 +788,33 @@ WRITE8_MEMBER( mc6843_device::write )
m_SUR = data;
/* assume CLK freq = 1MHz (IBM 3740 compatibility) */
- LOG(( "%f %s mc6843_w: set SUR to $%02X: head settling time=%fms, track-to-track seek time=%f\n",
+ LOG( "%f %s mc6843_w: set SUR to $%02X: head settling time=%fms, track-to-track seek time=%f\n",
machine().time().as_double(), machine().describe_context(),
- data, 4.096 * (data & 15), 1.024 * ((data >> 4) & 15) ));
+ data, 4.096 * (data & 15), 1.024 * ((data >> 4) & 15) );
break;
case 4: /* Sector Address Register (SAR) */
m_SAR = data & 0x1f;
- LOG(( "%f %s mc6843_w: set SAR to %i (%02X)\n", machine().time().as_double(), machine().describe_context(), m_SAR, data ));
+ LOG( "%f %s mc6843_w: set SAR to %i (%02X)\n", machine().time().as_double(), machine().describe_context(), m_SAR, data );
break;
case 5: /* General Count Register (GCR) */
m_GCR = data & 0x7f;
- LOG(( "%f %s mc6843_w: set GCR to %i (%02X)\n", machine().time().as_double(), machine().describe_context(), m_GCR, data ));
+ LOG( "%f %s mc6843_w: set GCR to %i (%02X)\n", machine().time().as_double(), machine().describe_context(), m_GCR, data );
break;
case 6: /* CRC Control Register (CCR) */
m_CCR = data & 3;
- LOG(( "%f %s mc6843_w: set CCR to %02X: CRC=%s shift=%i\n",
+ LOG( "%f %s mc6843_w: set CCR to %02X: CRC=%s shift=%i\n",
machine().time().as_double(), machine().describe_context(), data,
- (data & 1) ? "enabled" : "disabled", (data >> 1) & 1 ));
+ (data & 1) ? "enabled" : "disabled", (data >> 1) & 1 );
break;
case 7: /* Logical-Track Address Register (LTAR) */
m_LTAR = data & 0x7f;
- LOG(( "%f %s mc6843_w: set LTAR to %i %02X (actual=%i)\n",
+ LOG( "%f %s mc6843_w: set LTAR to %i %02X (actual=%i)\n",
machine().time().as_double(), machine().describe_context(), m_LTAR, data,
- floppy_image()->floppy_drive_get_current_track()));
+ floppy_image()->floppy_drive_get_current_track());
break;
default:
diff --git a/src/devices/machine/mc6843.h b/src/devices/machine/mc6843.h
index 73b21140f1a..820ac1aec93 100644
--- a/src/devices/machine/mc6843.h
+++ b/src/devices/machine/mc6843.h
@@ -8,8 +8,10 @@
**********************************************************************/
-#ifndef MC6843_H
-#define MC6843_H
+#ifndef MAME_MACHINE_MC6843_H
+#define MAME_MACHINE_MC6843_H
+
+#pragma once
#include "imagedev/flopdrv.h"
@@ -20,9 +22,8 @@ class mc6843_device : public device_t
{
public:
mc6843_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~mc6843_device() {}
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<mc6843_device &>(device).m_write_irq.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mc6843_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -83,6 +84,6 @@ private:
};
-extern const device_type MC6843;
+DECLARE_DEVICE_TYPE(MC6843, mc6843_device)
-#endif
+#endif // MAME_MACHINE_MC6843_H
diff --git a/src/devices/machine/mc6846.cpp b/src/devices/machine/mc6846.cpp
index a250c67b15b..2c2c1abb497 100644
--- a/src/devices/machine/mc6846.cpp
+++ b/src/devices/machine/mc6846.cpp
@@ -23,13 +23,12 @@
#include "emu.h"
#include "mc6846.h"
-#define VERBOSE 0
+//#define VERBOSE 1
+#include "logmacro.h"
/******************* utility function and macros ********************/
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
-
#define PORT \
((m_pdr & m_ddr) | \
((!m_in_port_cb.isnull() ? m_in_port_cb( 0 ) : 0) & \
@@ -43,10 +42,10 @@
#define FACTOR ((m_tcr & 4) ? 8 : 1)
-const device_type MC6846 = device_creator<mc6846_device>;
+DEFINE_DEVICE_TYPE(MC6846, mc6846_device, "mc6846", "MC6846 Programmable Timer")
mc6846_device::mc6846_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC6846, "MC6846 Programmable Timer", tag, owner, clock, "mc6846", __FILE__),
+ : device_t(mconfig, MC6846, tag, owner, clock),
m_out_port_cb(*this),
m_out_cp1_cb(*this),
m_out_cp2_cb(*this),
@@ -148,9 +147,9 @@ inline void mc6846_device::update_irq()
cif = 1;
if ( m_old_cif != cif )
{
- LOG (( "%f: mc6846 interrupt %i (time=%i cp1=%i cp2=%i)\n",
+ LOG( "%f: mc6846 interrupt %i (time=%i cp1=%i cp2=%i)\n",
machine().time().as_double(), cif,
- m_csr & 1, (m_csr >> 1 ) & 1, (m_csr >> 2 ) & 1 ));
+ m_csr & 1, (m_csr >> 1 ) & 1, (m_csr >> 2 ) & 1 );
m_old_cif = cif;
}
if ( cif )
@@ -174,7 +173,7 @@ inline void mc6846_device::update_cto()
int cto = CTO;
if ( cto != m_old_cto )
{
- LOG (( "%f: mc6846 CTO set to %i\n", machine().time().as_double(), cto ));
+ LOG( "%f: mc6846 CTO set to %i\n", machine().time().as_double(), cto );
m_old_cto = cto;
}
if ( !m_out_cto_cb.isnull() )
@@ -186,7 +185,7 @@ inline void mc6846_device::update_cto()
inline void mc6846_device::timer_launch()
{
int delay = FACTOR * (m_preset+1);
- LOG (( "%f: mc6846 timer launch called, mode=%i, preset=%i (x%i)\n", machine().time().as_double(), MODE, m_preset, FACTOR ));
+ LOG( "%f: mc6846 timer launch called, mode=%i, preset=%i (x%i)\n", machine().time().as_double(), MODE, m_preset, FACTOR );
if ( ! (m_tcr & 2) )
{
@@ -231,7 +230,7 @@ TIMER_CALLBACK_MEMBER( mc6846_device::timer_expire )
{
int delay = FACTOR * (m_latch+1);
- LOG (( "%f: mc6846 timer expire called, mode=%i, latch=%i (x%i)\n", machine().time().as_double(), MODE, m_latch, FACTOR ));
+ LOG( "%f: mc6846 timer expire called, mode=%i, latch=%i (x%i)\n", machine().time().as_double(), MODE, m_latch, FACTOR );
/* latch => counter */
m_preset = m_latch;
@@ -272,7 +271,7 @@ TIMER_CALLBACK_MEMBER( mc6846_device::timer_expire )
TIMER_CALLBACK_MEMBER( mc6846_device::timer_one_shot )
{
- LOG (( "%f: mc6846 timer one shot called\n", machine().time().as_double() ));
+ LOG( "%f: mc6846 timer one shot called\n", machine().time().as_double() );
/* 1 micro second after one-shot launch, we put cto to high */
m_cto = 1;
@@ -290,25 +289,25 @@ READ8_MEMBER(mc6846_device::read)
{
case 0:
case 4:
- LOG (( "%s %f: mc6846 CSR read $%02X intr=%i (timer=%i, cp1=%i, cp2=%i)\n",
+ LOG( "%s %f: mc6846 CSR read $%02X intr=%i (timer=%i, cp1=%i, cp2=%i)\n",
machine().describe_context(), space.machine().time().as_double(),
m_csr, (m_csr >> 7) & 1,
- m_csr & 1, (m_csr >> 1) & 1, (m_csr >> 2) & 1 ));
+ m_csr & 1, (m_csr >> 1) & 1, (m_csr >> 2) & 1 );
m_csr0_to_be_cleared = m_csr & 1;
m_csr1_to_be_cleared = m_csr & 2;
m_csr2_to_be_cleared = m_csr & 4;
return m_csr;
case 1:
- LOG (( "%s %f: mc6846 PCR read $%02X\n", machine().describe_context(), space.machine().time().as_double(), m_pcr ));
+ LOG( "%s %f: mc6846 PCR read $%02X\n", machine().describe_context(), space.machine().time().as_double(), m_pcr );
return m_pcr;
case 2:
- LOG (( "%s %f: mc6846 DDR read $%02X\n", machine().describe_context(), space.machine().time().as_double(), m_ddr ));
+ LOG( "%s %f: mc6846 DDR read $%02X\n", machine().describe_context(), space.machine().time().as_double(), m_ddr );
return m_ddr;
case 3:
- LOG (( "%s %f: mc6846 PORT read $%02X\n", machine().describe_context(), space.machine().time().as_double(), PORT ));
+ LOG( "%s %f: mc6846 PORT read $%02X\n", machine().describe_context(), space.machine().time().as_double(), PORT );
if ( ! (m_pcr & 0x80) )
{
if ( m_csr1_to_be_cleared )
@@ -322,11 +321,11 @@ READ8_MEMBER(mc6846_device::read)
return PORT;
case 5:
- LOG (( "%s %f: mc6846 TCR read $%02X\n",machine().describe_context(), space.machine().time().as_double(), m_tcr ));
+ LOG( "%s %f: mc6846 TCR read $%02X\n",machine().describe_context(), space.machine().time().as_double(), m_tcr );
return m_tcr;
case 6:
- LOG (( "%s %f: mc6846 COUNTER hi read $%02X\n", machine().describe_context(), space.machine().time().as_double(), counter() >> 8 ));
+ LOG( "%s %f: mc6846 COUNTER hi read $%02X\n", machine().describe_context(), space.machine().time().as_double(), counter() >> 8 );
if ( m_csr0_to_be_cleared )
{
m_csr &= ~1;
@@ -336,7 +335,7 @@ READ8_MEMBER(mc6846_device::read)
return counter() >> 8;
case 7:
- LOG (( "%s %f: mc6846 COUNTER low read $%02X\n", machine().describe_context(), space.machine().time().as_double(), counter() & 0xff ));
+ LOG( "%s %f: mc6846 COUNTER low read $%02X\n", machine().describe_context(), space.machine().time().as_double(), counter() & 0xff );
if ( m_csr0_to_be_cleared )
{
m_csr &= ~1;
@@ -375,9 +374,9 @@ WRITE8_MEMBER(mc6846_device::write)
"latched,neg-edge", "latched,neg-edge,intr",
"latcged,pos-edge", "latcged,pos-edge,intr"
};
- LOG (( "%s %f: mc6846 PCR write $%02X reset=%i cp2=%s cp1=%s\n",
+ LOG( "%s %f: mc6846 PCR write $%02X reset=%i cp2=%s cp1=%s\n",
machine().describe_context(), space.machine().time().as_double(), data,
- (data >> 7) & 1, cp2[ (data >> 3) & 7 ], cp1[ data & 7 ] ));
+ (data >> 7) & 1, cp2[ (data >> 3) & 7 ], cp1[ data & 7 ] );
}
m_pcr = data;
@@ -404,7 +403,7 @@ WRITE8_MEMBER(mc6846_device::write)
break;
case 2:
- LOG (( "%s %f: mc6846 DDR write $%02X\n", machine().describe_context(), space.machine().time().as_double(), data ));
+ LOG( "%s %f: mc6846 DDR write $%02X\n", machine().describe_context(), space.machine().time().as_double(), data );
if ( ! (m_pcr & 0x80) )
{
m_ddr = data;
@@ -414,7 +413,7 @@ WRITE8_MEMBER(mc6846_device::write)
break;
case 3:
- LOG (( "%s %f: mc6846 PORT write $%02X (mask=$%02X)\n", machine().describe_context(), space.machine().time().as_double(), data,m_ddr ));
+ LOG( "%s %f: mc6846 PORT write $%02X (mask=$%02X)\n", machine().describe_context(), space.machine().time().as_double(), data,m_ddr );
if ( ! (m_pcr & 0x80) )
{
m_pdr = data;
@@ -423,12 +422,12 @@ WRITE8_MEMBER(mc6846_device::write)
if ( m_csr1_to_be_cleared && (m_csr & 2) )
{
m_csr &= ~2;
- LOG (( "%s %f: mc6846 CP1 intr reset\n", machine().describe_context(), space.machine().time().as_double() ));
+ LOG( "%s %f: mc6846 CP1 intr reset\n", machine().describe_context(), space.machine().time().as_double() );
}
if ( m_csr2_to_be_cleared && (m_csr & 4) )
{
m_csr &= ~4;
- LOG (( "%s %f: mc6846 CP2 intr reset\n", machine().describe_context(), space.machine().time().as_double() ));
+ LOG( "%s %f: mc6846 CP2 intr reset\n", machine().describe_context(), space.machine().time().as_double() );
}
m_csr1_to_be_cleared = 0;
m_csr2_to_be_cleared = 0;
@@ -443,11 +442,11 @@ WRITE8_MEMBER(mc6846_device::write)
"continuous", "cascaded", "continuous", "one-shot",
"freq-cmp", "freq-cmp", "pulse-cmp", "pulse-cmp"
};
- LOG (( "%s %f: mc6846 TCR write $%02X reset=%i clock=%s scale=%i mode=%s out=%s\n",
+ LOG( "%s %f: mc6846 TCR write $%02X reset=%i clock=%s scale=%i mode=%s out=%s\n",
machine().describe_context(), space.machine().time().as_double(), data,
(data >> 7) & 1, (data & 0x40) ? "extern" : "sys",
(data & 0x40) ? 1 : 8, mode[ (data >> 1) & 7 ],
- (data & 1) ? "enabled" : "0" ));
+ (data & 1) ? "enabled" : "0" );
m_tcr = data;
if ( m_tcr & 1 )
@@ -478,7 +477,7 @@ WRITE8_MEMBER(mc6846_device::write)
case 7:
m_latch = ( ((uint16_t) m_time_MSB) << 8 ) + data;
- LOG (( "%s %f: mc6846 COUNT write %i\n", machine().describe_context(), space.machine().time().as_double(), m_latch ));
+ LOG( "%s %f: mc6846 COUNT write %i\n", machine().describe_context(), space.machine().time().as_double(), m_latch );
if (!(m_tcr & 0x38))
{
/* timer initialization */
@@ -510,7 +509,7 @@ void mc6846_device::set_input_cp1(int data)
if ( data == m_cp1 )
return;
m_cp1 = data;
- LOG (( "%f: mc6846 input CP1 set to %i\n", machine().time().as_double(), data ));
+ LOG( "%f: mc6846 input CP1 set to %i\n", machine().time().as_double(), data );
if (( data && (m_pcr & 2)) || (!data && !(m_pcr & 2)))
{
m_csr |= 2;
@@ -524,7 +523,7 @@ void mc6846_device::set_input_cp2(int data)
if ( data == m_cp2 )
return;
m_cp2 = data;
- LOG (( "%f: mc6846 input CP2 set to %i\n", machine().time().as_double(), data ));
+ LOG( "%f: mc6846 input CP2 set to %i\n", machine().time().as_double(), data );
if (m_pcr & 0x20)
{
if (( data && (m_pcr & 0x10)) || (!data && !(m_pcr & 0x10)))
diff --git a/src/devices/machine/mc6846.h b/src/devices/machine/mc6846.h
index ef8794c1ebc..e35d08f7af8 100644
--- a/src/devices/machine/mc6846.h
+++ b/src/devices/machine/mc6846.h
@@ -8,8 +8,10 @@
**********************************************************************/
-#ifndef MC6846_H
-#define MC6846_H
+#ifndef MAME_MACHINE_MC6846_H
+#define MAME_MACHINE_MC6846_H
+
+#pragma once
#define MCFG_MC6846_OUT_PORT_CB(_devcb) \
@@ -35,14 +37,13 @@ class mc6846_device : public device_t
{
public:
mc6846_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~mc6846_device() {}
- template<class _Object> static devcb_base &set_out_port_callback(device_t &device, _Object object) { return downcast<mc6846_device &>(device).m_out_port_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_cp1_callback(device_t &device, _Object object) { return downcast<mc6846_device &>(device).m_out_cp1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_cp2_callback(device_t &device, _Object object) { return downcast<mc6846_device &>(device).m_out_cp2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_port_callback(device_t &device, _Object object) { return downcast<mc6846_device &>(device).m_in_port_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_cto_callback(device_t &device, _Object object) { return downcast<mc6846_device &>(device).m_out_cto_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<mc6846_device &>(device).m_irq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_port_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_port_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_cp1_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_cp1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_cp2_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_cp2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_port_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_in_port_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_cto_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_out_cto_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<mc6846_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
/* interface to CPU via address/data bus*/
DECLARE_READ8_MEMBER(read);
@@ -120,6 +121,6 @@ private:
TIMER_CALLBACK_MEMBER(timer_one_shot);
};
-extern const device_type MC6846;
+DECLARE_DEVICE_TYPE(MC6846, mc6846_device)
-#endif
+#endif // MAME_MACHINE_MC6846_H
diff --git a/src/devices/machine/mc6852.cpp b/src/devices/machine/mc6852.cpp
index 39291a0ea65..986c6129a26 100644
--- a/src/devices/machine/mc6852.cpp
+++ b/src/devices/machine/mc6852.cpp
@@ -24,20 +24,15 @@
#include "emu.h"
#include "mc6852.h"
-
-//**************************************************************************
-// DEVICE DEFINITIONS
-//**************************************************************************
-
-const device_type MC6852 = device_creator<mc6852_device>;
-
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
-// MACROS / CONSTANTS
+// DEVICE DEFINITIONS
//**************************************************************************
-#define LOG 0
+DEFINE_DEVICE_TYPE(MC6852, mc6852_device, "mc6852", "Motorola MC6852 SSDA")
@@ -50,7 +45,7 @@ const device_type MC6852 = device_creator<mc6852_device>;
//-------------------------------------------------
mc6852_device::mc6852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MC6852, "MC6852", tag, owner, clock, "mc6852", __FILE__),
+ device_t(mconfig, MC6852, tag, owner, clock),
device_serial_interface(mconfig, *this),
m_write_tx_data(*this),
m_write_irq(*this),
@@ -195,7 +190,7 @@ WRITE8_MEMBER( mc6852_device::write )
{
case C1_AC_C2: {
/* control 2 */
- if (LOG) logerror("MC6852 '%s' Control 2 %02x\n", tag(), data);
+ LOG("MC6852 Control 2 %02x\n", data);
m_cr[1] = data;
int data_bit_count = 0;
@@ -220,13 +215,13 @@ WRITE8_MEMBER( mc6852_device::write )
case C1_AC_C3:
/* control 3 */
- if (LOG) logerror("MC6852 '%s' Control 3 %02x\n", tag(), data);
+ LOG("MC6852 Control 3 %02x\n", data);
m_cr[2] = data;
break;
case C1_AC_SYNC:
/* sync code */
- if (LOG) logerror("MC6852 '%s' Sync Code %02x\n", tag(), data);
+ LOG("MC6852 Sync Code %02x\n", data);
m_scr = data;
break;
@@ -234,7 +229,7 @@ WRITE8_MEMBER( mc6852_device::write )
/* transmit data FIFO */
if (m_tx_fifo.size() < 3)
{
- if (LOG) logerror("MC6852 '%s' Transmit FIFO %02x\n", tag(), data);
+ LOG("MC6852 Transmit FIFO %02x\n", data);
m_tx_fifo.push(data);
}
break;
@@ -242,7 +237,7 @@ WRITE8_MEMBER( mc6852_device::write )
}
else
{
- if (LOG) logerror("MC6852 '%s' Control 1 %02x\n", tag(), data);
+ LOG("MC6852 Control 1 %02x\n", data);
/* receiver reset */
if (data & C1_RX_RS)
@@ -253,7 +248,7 @@ WRITE8_MEMBER( mc6852_device::write )
Register is set to ones.
*/
- if (LOG) logerror("MC6852 '%s' Receiver Reset\n", tag());
+ LOG("MC6852 Receiver Reset\n");
m_status &= ~(S_RX_OVRN | S_PE | S_DCD | S_RDA);
m_rsr = 0xff;
@@ -271,18 +266,15 @@ WRITE8_MEMBER( mc6852_device::write )
and inhibits the TDRA status bit (in the one-sync-character
and two-sync-character modes).*/
- if (LOG) logerror("MC6852 '%s' Transmitter Reset\n", tag());
+ LOG("MC6852 Transmitter Reset\n");
m_status &= ~(S_TUF | S_CTS | S_TDRA);
transmit_register_reset();
}
- if (LOG)
- {
- if (data & C1_STRIP_SYNC) logerror("MC6852 '%s' Strip Synchronization Characters\n", tag());
- if (data & C1_CLEAR_SYNC) logerror("MC6852 '%s' Clear Synchronization\n", tag());
- }
+ if (data & C1_STRIP_SYNC) LOG("MC6852 Strip Synchronization Characters\n");
+ if (data & C1_CLEAR_SYNC) LOG("MC6852 Clear Synchronization\n");
m_cr[0] = data;
}
diff --git a/src/devices/machine/mc6852.h b/src/devices/machine/mc6852.h
index 86416b51b79..8f9b7da370a 100644
--- a/src/devices/machine/mc6852.h
+++ b/src/devices/machine/mc6852.h
@@ -21,10 +21,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MC6852_H
+#define MAME_MACHINE_MC6852_H
-#ifndef __MC6852__
-#define __MC6852__
+#pragma once
#include <queue>
@@ -69,10 +69,10 @@ public:
static void set_rx_clock(device_t &device, int clock) { downcast<mc6852_device &>(device).m_rx_clock = clock; }
static void set_tx_clock(device_t &device, int clock) { downcast<mc6852_device &>(device).m_tx_clock = clock; }
- template<class _Object> static devcb_base &set_tx_data_wr_callback(device_t &device, _Object object) { return downcast<mc6852_device &>(device).m_write_tx_data.set_callback(object); }
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<mc6852_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_sm_dtr_wr_callback(device_t &device, _Object object) { return downcast<mc6852_device &>(device).m_write_sm_dtr.set_callback(object); }
- template<class _Object> static devcb_base &set_tuf_wr_callback(device_t &device, _Object object) { return downcast<mc6852_device &>(device).m_write_tuf.set_callback(object); }
+ template <class Object> static devcb_base &set_tx_data_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_tx_data.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sm_dtr_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_sm_dtr.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_tuf_wr_callback(device_t &device, Object &&cb) { return downcast<mc6852_device &>(device).m_write_tuf.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -175,8 +175,6 @@ private:
// device type definition
-extern const device_type MC6852;
-
-
+DECLARE_DEVICE_TYPE(MC6852, mc6852_device)
-#endif
+#endif // MAME_MACHINE_MC6852_H
diff --git a/src/devices/machine/mc6854.cpp b/src/devices/machine/mc6854.cpp
index 1164b35308e..c5789cd0e39 100644
--- a/src/devices/machine/mc6854.cpp
+++ b/src/devices/machine/mc6854.cpp
@@ -34,12 +34,13 @@
#include "emu.h"
#include "mc6854.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-/******************* parameters ******************/
+/******************* parameters ******************/
-#define VERBOSE 0
#define FLAG 0x7e
@@ -47,12 +48,10 @@
#define BIT_LENGTH attotime::from_hz( 500000 )
-
-/******************* utility function and macros ********************/
-
+constexpr unsigned mc6854_device::MAX_FRAME_LENGTH;
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+/******************* utility function and macros ********************/
@@ -165,10 +164,10 @@ static const int word_length[4] = { 5, 6, 7, 8 };
-const device_type MC6854 = device_creator<mc6854_device>;
+DEFINE_DEVICE_TYPE(MC6854, mc6854_device, "mc6854", "Motorola MC6854 ADLC")
mc6854_device::mc6854_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC6854, "MC6854 ADLC", tag, owner, clock, "mc6854", __FILE__),
+ : device_t(mconfig, MC6854, tag, owner, clock),
m_out_irq_cb(*this),
m_out_txd_cb(*this),
m_out_rts_cb(*this),
@@ -191,7 +190,7 @@ mc6854_device::mc6854_device(const machine_config &mconfig, const char *tag, dev
m_flen(0),
m_fpos(0)
{
- for (int i = 0; i < MC6854_FIFO_SIZE; i++)
+ for (int i = 0; i < FIFO_SIZE; i++)
{
m_tfifo[i] = 0;
m_rfifo[i] = 0;
@@ -244,7 +243,7 @@ void mc6854_device::device_start()
void mc6854_device::device_reset()
{
- LOG (( "mc6854 reset\n" ));
+ LOG( "mc6854 reset\n" );
m_cr1 = 0xc0; /* reset condition */
m_cr2 = 0;
m_cr3 = 0;
@@ -309,7 +308,7 @@ void mc6854_device::send_bits( uint32_t data, int len, int zi )
-/* CPU push -> tfifo[0] -> ... -> tfifo[MC6854_FIFO_SIZE-1] -> pop */
+/* CPU push -> tfifo[0] -> ... -> tfifo[FIFO_SIZE-1] -> pop */
void mc6854_device::tfifo_push( uint8_t data )
{
int i;
@@ -318,7 +317,7 @@ void mc6854_device::tfifo_push( uint8_t data )
return;
/* push towards the rightmost free entry */
- for ( i = MC6854_FIFO_SIZE - 1; i >= 0; i-- )
+ for ( i = FIFO_SIZE - 1; i >= 0; i-- )
{
if ( ! ( m_tfifo[ i ] & 0x100 ) )
break;
@@ -332,7 +331,7 @@ void mc6854_device::tfifo_push( uint8_t data )
/* start frame, if needed */
if ( ! m_tstate )
{
- LOG(( "%f mc6854_tfifo_push: start frame\n", machine().time().as_double() ));
+ LOG( "%f mc6854_tfifo_push: start frame\n", machine().time().as_double() );
m_tstate = 2;
send_bits( FLAG, 8, 0 );
}
@@ -345,7 +344,7 @@ void mc6854_device::tfifo_terminate( )
{
/* mark most recently pushed byte as the last one of the frame */
int i;
- for ( i = 0; i < MC6854_FIFO_SIZE; i++ )
+ for ( i = 0; i < FIFO_SIZE; i++ )
{
if ( m_tfifo[ i ] & 0x100 )
{
@@ -360,13 +359,13 @@ void mc6854_device::tfifo_terminate( )
/* call-back to refill the bit-stream from the FIFO */
TIMER_CALLBACK_MEMBER(mc6854_device::tfifo_cb)
{
- int i, data = m_tfifo[ MC6854_FIFO_SIZE - 1 ];
+ int i, data = m_tfifo[ FIFO_SIZE - 1 ];
if ( ! m_tstate )
return;
/* shift FIFO to the right */
- for ( i = MC6854_FIFO_SIZE - 1; i > 0; i-- )
+ for ( i = FIFO_SIZE - 1; i > 0; i-- )
m_tfifo[ i ] = m_tfifo[ i - 1 ];
m_tfifo[ 0 ] = 0;
@@ -381,7 +380,7 @@ TIMER_CALLBACK_MEMBER(mc6854_device::tfifo_cb)
case 2: /* 8-bit address field */
if ( ( data & 1 ) || ( ! AEX ) )
m_tstate = 3;
- LOG(( "%f mc6854_tfifo_cb: address field $%02X\n", machine().time().as_double(), data & 0xff ));
+ LOG( "%f mc6854_tfifo_cb: address field $%02X\n", machine().time().as_double(), data & 0xff );
break;
case 3: /* 8-bit control field */
@@ -391,7 +390,7 @@ TIMER_CALLBACK_MEMBER(mc6854_device::tfifo_cb)
m_tstate = 5;
else
m_tstate = 6;
- LOG(( "%f mc6854_tfifo_cb: control field $%02X\n", machine().time().as_double(), data & 0xff ));
+ LOG( "%f mc6854_tfifo_cb: control field $%02X\n", machine().time().as_double(), data & 0xff );
break;
case 4: /* 8-bit extended control field (optional) */
@@ -399,22 +398,22 @@ TIMER_CALLBACK_MEMBER(mc6854_device::tfifo_cb)
m_tstate = 5;
else
m_tstate = 6;
- LOG(( "%f mc6854_tfifo_cb: control field $%02X\n", machine().time().as_double(), data & 0xff ));
+ LOG( "%f mc6854_tfifo_cb: control field $%02X\n", machine().time().as_double(), data & 0xff );
break;
case 5: /* 8-bit logical control (optional) */
if ( ! ( data & 0x80 ) )
m_tstate = 6;
- LOG(( "%f mc6854_tfifo_cb: logical control field $%02X\n", machine().time().as_double(), data & 0xff ));
+ LOG( "%f mc6854_tfifo_cb: logical control field $%02X\n", machine().time().as_double(), data & 0xff );
break;
case 6: /* variable-length data */
blen = TWL;
- LOG(( "%f mc6854_tfifo_cb: data field $%02X, %i bits\n", machine().time().as_double(), data & 0xff, blen ));
+ LOG( "%f mc6854_tfifo_cb: data field $%02X, %i bits\n", machine().time().as_double(), data & 0xff, blen );
break;
default:
- LOG(( "%f mc6854_tfifo_cb: state=%i\n", machine().time().as_double(), m_tstate));
+ LOG( "%f mc6854_tfifo_cb: state=%i\n", machine().time().as_double(), m_tstate);
}
if ( m_flen < MAX_FRAME_LENGTH )
@@ -439,14 +438,14 @@ TIMER_CALLBACK_MEMBER(mc6854_device::tfifo_cb)
{
int len = m_flen;
- LOG(( "%f mc6854_tfifo_cb: end frame\n", machine().time().as_double() ));
+ LOG( "%f mc6854_tfifo_cb: end frame\n", machine().time().as_double() );
send_bits( 0xdeadbeef, 16, 1 ); /* send check-sum: TODO */
send_bits( FLAG, 8, 0 ); /* send closing flag */
- if ( m_tfifo[ MC6854_FIFO_SIZE - 1 ] & 0x100 )
+ if ( m_tfifo[ FIFO_SIZE - 1 ] & 0x100 )
{
/* re-open frame asap */
- LOG(( "%f mc6854_tfifo_cb: start frame\n", machine().time().as_double() ));
+ LOG( "%f mc6854_tfifo_cb: start frame\n", machine().time().as_double() );
if ( TWOINTER )
send_bits( FLAG, 8, 0 );
}
@@ -490,7 +489,7 @@ void mc6854_device::rfifo_push( uint8_t d )
m_rstate = 3;
else
m_rstate = 2;
- LOG(( "%f mc6854_rfifo_push: address field $%02X\n", machine().time().as_double(), data ));
+ LOG( "%f mc6854_rfifo_push: address field $%02X\n", machine().time().as_double(), data );
data |= 0x400; /* address marker */
break;
@@ -501,7 +500,7 @@ void mc6854_device::rfifo_push( uint8_t d )
m_rstate = 5;
else
m_rstate = 6;
- LOG(( "%f mc6854_rfifo_push: control field $%02X\n", machine().time().as_double(), data ));
+ LOG( "%f mc6854_rfifo_push: control field $%02X\n", machine().time().as_double(), data );
break;
case 4: /* 8-bit extended control field (optional) */
@@ -509,33 +508,33 @@ void mc6854_device::rfifo_push( uint8_t d )
m_rstate = 5;
else
m_rstate = 6;
- LOG(( "%f mc6854_rfifo_push: control field $%02X\n", machine().time().as_double(), data ));
+ LOG( "%f mc6854_rfifo_push: control field $%02X\n", machine().time().as_double(), data );
break;
case 5: /* 8-bit logical control (optional) */
if ( ! ( data & 0x80 ) )
m_rstate = 6;
- LOG(( "%f mc6854_rfifo_push: logical control field $%02X\n", machine().time().as_double(), data ));
+ LOG( "%f mc6854_rfifo_push: logical control field $%02X\n", machine().time().as_double(), data );
break;
case 6: /* variable-length data */
blen = RWL;
data >>= 8 - blen;
- LOG(( "%f mc6854_rfifo_push: data field $%02X, %i bits\n", machine().time().as_double(), data, blen ));
+ LOG( "%f mc6854_rfifo_push: data field $%02X, %i bits\n", machine().time().as_double(), data, blen );
break;
}
/* no further FIFO fill until FV is cleared! */
if ( m_sr2 & FV )
{
- LOG(( "%f mc6854_rfifo_push: field not pushed\n", machine().time().as_double() ));
+ LOG( "%f mc6854_rfifo_push: field not pushed\n", machine().time().as_double() );
return;
}
data |= 0x100; /* entry full marker */
/* push towards the rightmost free entry */
- for ( i = MC6854_FIFO_SIZE - 1; i >= 0; i-- )
+ for ( i = FIFO_SIZE - 1; i >= 0; i-- )
{
if ( ! ( m_rfifo[ i ] & 0x100 ) )
break;
@@ -560,7 +559,7 @@ void mc6854_device::rfifo_terminate( )
{
/* mark most recently pushed byte as the last one of the frame */
int i;
- for ( i = 0; i < MC6854_FIFO_SIZE; i++ )
+ for ( i = 0; i < FIFO_SIZE; i++ )
{
if ( m_rfifo[ i ] & 0x100 )
{
@@ -579,14 +578,14 @@ void mc6854_device::rfifo_terminate( )
/* CPU pops the FIFO */
uint8_t mc6854_device::rfifo_pop( )
{
- int i, data = m_rfifo[ MC6854_FIFO_SIZE - 1 ];
+ int i, data = m_rfifo[ FIFO_SIZE - 1 ];
/* shift FIFO to the right */
- for ( i = MC6854_FIFO_SIZE - 1; i > 0; i -- )
+ for ( i = FIFO_SIZE - 1; i > 0; i -- )
m_rfifo[ i ] = m_rfifo[ i - 1 ];
m_rfifo[ 0 ] = 0;
- if ( m_rfifo[ MC6854_FIFO_SIZE - 1 ] & 0x200 )
+ if ( m_rfifo[ FIFO_SIZE - 1 ] & 0x200 )
{
/* last byte in frame */
m_sr2 |= FV; /* TODO: check CRC & set ERR instead of FV if error*/
@@ -625,7 +624,7 @@ WRITE_LINE_MEMBER( mc6854_device::set_rx )
{
/* only in-frame abort */
m_sr2 |= RABT;
- LOG(( "%f mc6854_receive_bit: abort\n", machine().time().as_double() ));
+ LOG( "%f mc6854_receive_bit: abort\n", machine().time().as_double() );
}
}
else
@@ -655,7 +654,7 @@ WRITE_LINE_MEMBER( mc6854_device::set_rx )
if ( m_rsize >= fieldlen + 24 ) /* last field */
rfifo_push( m_rreg );
rfifo_terminate( );
- LOG(( "%f mc6854_receive_bit: end of frame\n", machine().time().as_double() ));
+ LOG( "%f mc6854_receive_bit: end of frame\n", machine().time().as_double() );
}
m_rones = 0;
m_rstate = 1;
@@ -751,13 +750,13 @@ void mc6854_device::update_sr2( )
{
/* update RDA */
m_sr2 |= RDA2;
- if ( ! (m_rfifo[ MC6854_FIFO_SIZE - 1 ] & 0x100) )
+ if ( ! (m_rfifo[ FIFO_SIZE - 1 ] & 0x100) )
m_sr2 &= ~RDA2;
- else if ( TWOBYTES && ! (m_tfifo[ MC6854_FIFO_SIZE - 2 ] & 0x100) )
+ else if ( TWOBYTES && ! (m_tfifo[ FIFO_SIZE - 2 ] & 0x100) )
m_sr2 &= ~RDA2;
/* update AP */
- if ( m_rfifo[ MC6854_FIFO_SIZE - 1 ] & 0x400 )
+ if ( m_rfifo[ FIFO_SIZE - 1 ] & 0x400 )
m_sr2 |= AP;
else
m_sr2 &= ~AP;
@@ -816,30 +815,30 @@ READ8_MEMBER( mc6854_device::read )
{
case 0: /* status register 1 */
update_sr1( );
- LOG(( "%f %s mc6854_r: get SR1=$%02X (rda=%i,s2rq=%i,fd=%i,cts=%i,tu=%i,tdra=%i,irq=%i)\n",
+ LOG( "%f %s mc6854_r: get SR1=$%02X (rda=%i,s2rq=%i,fd=%i,cts=%i,tu=%i,tdra=%i,irq=%i)\n",
space.machine().time().as_double(), machine().describe_context(), m_sr1,
( m_sr1 & RDA) ? 1 : 0, ( m_sr1 & S2RQ) ? 1 : 0,
( m_sr1 & FD ) ? 1 : 0, ( m_sr1 & CTS ) ? 1 : 0,
( m_sr1 & TU ) ? 1 : 0, ( m_sr1 & TDRA) ? 1 : 0,
- ( m_sr1 & IRQ) ? 1 : 0 ));
+ ( m_sr1 & IRQ) ? 1 : 0 );
return m_sr1;
case 1: /* status register 2 */
update_sr2( );
- LOG(( "%f %s mc6854_r: get SR2=$%02X (ap=%i,fv=%i,ridle=%i,rabt=%i,err=%i,dcd=%i,ovrn=%i,rda2=%i)\n",
+ LOG( "%f %s mc6854_r: get SR2=$%02X (ap=%i,fv=%i,ridle=%i,rabt=%i,err=%i,dcd=%i,ovrn=%i,rda2=%i)\n",
space.machine().time().as_double(), machine().describe_context(), m_sr2,
( m_sr2 & AP ) ? 1 : 0, ( m_sr2 & FV ) ? 1 : 0,
( m_sr2 & RIDLE) ? 1 : 0, ( m_sr2 & RABT) ? 1 : 0,
( m_sr2 & ERR ) ? 1 : 0, ( m_sr2 & DCD ) ? 1 : 0,
- ( m_sr2 & OVRN ) ? 1 : 0, ( m_sr2 & RDA2) ? 1 : 0 ));
+ ( m_sr2 & OVRN ) ? 1 : 0, ( m_sr2 & RDA2) ? 1 : 0 );
return m_sr2;
case 2: /* receiver data register */
case 3:
{
uint8_t data = rfifo_pop( );
- LOG(( "%f %s mc6854_r: get data $%02X\n",
- space.machine().time().as_double(), machine().describe_context(), data ));
+ LOG( "%f %s mc6854_r: get data $%02X\n",
+ space.machine().time().as_double(), machine().describe_context(), data );
return data;
}
@@ -857,13 +856,12 @@ WRITE8_MEMBER( mc6854_device::write )
{
case 0: /* control register 1 */
m_cr1 = data;
- LOG(( "%f %s mc6854_w: set CR1=$%02X (ac=%i,irq=%c%c,%sreset=%c%c)\n",
+ LOG( "%f %s mc6854_w: set CR1=$%02X (ac=%i,irq=%c%c,%sreset=%c%c)\n",
space.machine().time().as_double(), machine().describe_context(), m_cr1,
AC ? 1 : 0,
RIE ? 'r' : '-', TIE ? 't' : '-',
DISCONTINUE ? "discontinue," : "",
- RRESET ? 'r' : '-', TRESET ? 't' : '-'
- ));
+ RRESET ? 'r' : '-', TRESET ? 't' : '-' );
if ( m_cr1 & 0xc )
logerror( "%s mc6854 DMA not handled (CR1=$%02X)\n",
machine().describe_context(), m_cr1 );
@@ -894,12 +892,11 @@ WRITE8_MEMBER( mc6854_device::write )
{
/* control register 3 */
m_cr3 = data;
- LOG(( "%f %s mc6854_w: set CR3=$%02X (lcf=%i,aex=%i,idl=%i,fdse=%i,loop=%i,tst=%i,dtr=%i)\n",
+ LOG( "%f %s mc6854_w: set CR3=$%02X (lcf=%i,aex=%i,idl=%i,fdse=%i,loop=%i,tst=%i,dtr=%i)\n",
space.machine().time().as_double(), machine().describe_context(), m_cr3,
LCF ? (CEX ? 16 : 8) : 0, AEX ? 1 : 0,
IDL0 ? 0 : 1, FDSE ? 1 : 0, LOOP ? 1 : 0,
- TST ? 1 : 0, DTR ? 1 : 0
- ));
+ TST ? 1 : 0, DTR ? 1 : 0 );
if ( LOOP )
logerror( "%s mc6854 loop mode not handled (CR3=$%02X)\n", machine().describe_context(), m_cr3 );
if ( TST )
@@ -912,12 +909,12 @@ WRITE8_MEMBER( mc6854_device::write )
{
/* control register 2 */
m_cr2 = data;
- LOG(( "%f %s mc6854_w: set CR2=$%02X (pse=%i,bytes=%i,fmidle=%i,%s,tlast=%i,clr=%c%c,rts=%i)\n",
+ LOG( "%f %s mc6854_w: set CR2=$%02X (pse=%i,bytes=%i,fmidle=%i,%s,tlast=%i,clr=%c%c,rts=%i)\n",
space.machine().time().as_double(), machine().describe_context(), m_cr2,
PSE ? 1 : 0, TWOBYTES ? 2 : 1, FMIDLE ? 1 : 0,
FCTDRA ? "fc" : "tdra", TLAST ? 1 : 0,
data & 0x20 ? 'r' : '-', data & 0x40 ? 't' : '-',
- RTS ? 1 : 0 ));
+ RTS ? 1 : 0 );
if ( PSE )
logerror( "%s mc6854 status prioritization not handled (CR2=$%02X)\n", machine().describe_context(), m_cr2 );
if ( TLAST )
@@ -943,7 +940,7 @@ WRITE8_MEMBER( mc6854_device::write )
break;
case 2: /* transmitter data: continue data */
- LOG(( "%f %smc6854_w: push data=$%02X\n", space.machine().time().as_double(), machine().describe_context(), data ));
+ LOG( "%f %smc6854_w: push data=$%02X\n", space.machine().time().as_double(), machine().describe_context(), data );
tfifo_push( data );
break;
@@ -952,11 +949,11 @@ WRITE8_MEMBER( mc6854_device::write )
{
/* control register 4 */
m_cr4 = data;
- LOG(( "%f %s mc6854_w: set CR4=$%02X (interframe=%i,tlen=%i,rlen=%i,%s%s)\n", space.machine().time().as_double(), machine().describe_context(), m_cr4,
+ LOG( "%f %s mc6854_w: set CR4=$%02X (interframe=%i,tlen=%i,rlen=%i,%s%s)\n", space.machine().time().as_double(), machine().describe_context(), m_cr4,
TWOINTER ? 2 : 1,
TWL, RWL,
ABT ? ( ABTEX ? "abort-ext," : "abort,") : "",
- NRZ ? "nrz" : "nrzi" ));
+ NRZ ? "nrz" : "nrzi" );
if ( ABT )
{
m_tstate = 0;
@@ -967,7 +964,7 @@ WRITE8_MEMBER( mc6854_device::write )
else
{
/* transmitter data: last data */
- LOG(( "%f %s mc6854_w: push last-data=$%02X\n", space.machine().time().as_double(), machine().describe_context(), data ));
+ LOG( "%f %s mc6854_w: push last-data=$%02X\n", space.machine().time().as_double(), machine().describe_context(), data );
tfifo_push( data );
tfifo_terminate( );
}
diff --git a/src/devices/machine/mc6854.h b/src/devices/machine/mc6854.h
index 9e3e9d64f85..93caf9a5a0a 100644
--- a/src/devices/machine/mc6854.h
+++ b/src/devices/machine/mc6854.h
@@ -8,17 +8,12 @@
**********************************************************************/
-#ifndef MC6854_H
-#define MC6854_H
+#ifndef MAME_MACHINE_MC6854_H
+#define MAME_MACHINE_MC6854_H
+#pragma once
-#define MAX_FRAME_LENGTH 65536
-/* arbitrary value, you may need to enlarge it if you get truncated frames */
-#define MC6854_FIFO_SIZE 3
-/* hardcoded size of the 6854 FIFO (this is a hardware limit) */
-
-typedef device_delegate<void (uint8_t *data, int length)> mc6854_out_frame_delegate;
#define MC6854_OUT_FRAME_CB(name) void name(uint8_t * data, int length)
@@ -29,7 +24,7 @@ typedef device_delegate<void (uint8_t *data, int length)> mc6854_out_frame_deleg
devcb = &mc6854_device::set_out_txd_callback(*device, DEVCB_##_devcb);
#define MCFG_MC6854_OUT_FRAME_CB(_class, _method) \
- mc6854_device::set_out_frame_callback(*device, mc6854_out_frame_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ mc6854_device::set_out_frame_callback(*device, mc6854_device::out_frame_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MC6854_OUT_RTS_CB(_devcb) \
devcb = &mc6854_device::set_out_rts_callback(*device, DEVCB_##_devcb);
@@ -41,14 +36,17 @@ typedef device_delegate<void (uint8_t *data, int length)> mc6854_out_frame_deleg
class mc6854_device : public device_t
{
public:
+ static constexpr unsigned MAX_FRAME_LENGTH = 65536; // arbitrary value, you may need to enlarge it if you get truncated frames
+
+ typedef device_delegate<void (uint8_t *data, int length)> out_frame_delegate;
+
mc6854_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~mc6854_device() {}
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<mc6854_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txd_callback(device_t &device, _Object object) { return downcast<mc6854_device &>(device).m_out_txd_cb.set_callback(object); }
- static void set_out_frame_callback(device_t &device, mc6854_out_frame_delegate callback) { downcast<mc6854_device &>(device).m_out_frame_cb = callback; }
- template<class _Object> static devcb_base &set_out_rts_callback(device_t &device, _Object object) { return downcast<mc6854_device &>(device).m_out_rts_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtr_callback(device_t &device, _Object object) { return downcast<mc6854_device &>(device).m_out_dtr_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_txd_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_txd_cb.set_callback(std::forward<Object>(cb)); }
+ static void set_out_frame_callback(device_t &device, out_frame_delegate &&callback) { downcast<mc6854_device &>(device).m_out_frame_cb = std::move(callback); }
+ template <class Object> static devcb_base &set_out_rts_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtr_callback(device_t &device, Object &&cb) { return downcast<mc6854_device &>(device).m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
/* interface to CPU via address/data bus*/
DECLARE_READ8_MEMBER( read );
@@ -74,6 +72,8 @@ protected:
virtual void device_reset() override;
private:
+ static constexpr unsigned FIFO_SIZE = 3; // hardcoded size of the 6854 FIFO (this is a hardware limit)
+
// internal state
devcb_write_line m_out_irq_cb; /* interrupt request */
@@ -81,7 +81,7 @@ private:
devcb_write_line m_out_txd_cb; /* transmit bit */
/* high-level, frame-based interface */
- mc6854_out_frame_delegate m_out_frame_cb;
+ out_frame_delegate m_out_frame_cb;
/* control lines */
devcb_write_line m_out_rts_cb; /* 1 = transmitting, 0 = idle */
@@ -95,7 +95,7 @@ private:
/* transmit state */
uint8_t m_tstate;
- uint16_t m_tfifo[MC6854_FIFO_SIZE]; /* X x 8-bit FIFO + full & last marker bits */
+ uint16_t m_tfifo[FIFO_SIZE]; /* X x 8-bit FIFO + full & last marker bits */
uint8_t m_tones; /* counter for zero-insertion */
emu_timer *m_ttimer; /* when to ask for more data */
@@ -104,7 +104,7 @@ private:
uint32_t m_rreg; /* shift register */
uint8_t m_rones; /* count '1 bits */
uint8_t m_rsize; /* bits in the shift register */
- uint16_t m_rfifo[MC6854_FIFO_SIZE]; /* X x 8-bit FIFO + full & addr marker bits */
+ uint16_t m_rfifo[FIFO_SIZE]; /* X x 8-bit FIFO + full & addr marker bits */
/* frame-based interface*/
uint8_t m_frame[MAX_FRAME_LENGTH];
@@ -135,7 +135,7 @@ private:
void update_sr1( );
};
-extern const device_type MC6854;
+DECLARE_DEVICE_TYPE(MC6854, mc6854_device)
/* we provide two interfaces:
@@ -158,4 +158,4 @@ extern const device_type MC6854;
full frames are accepted.
*/
-#endif
+#endif // MAME_MACHINE_MC6854_H
diff --git a/src/devices/machine/mc68681.cpp b/src/devices/machine/mc68681.cpp
index cc3c88d4103..482cde20a63 100644
--- a/src/devices/machine/mc68681.cpp
+++ b/src/devices/machine/mc68681.cpp
@@ -14,8 +14,9 @@
#include "emu.h"
#include "mc68681.h"
-#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
+
static const char *const duart68681_reg_read_names[0x10] =
{
@@ -56,9 +57,9 @@ static const int baud_rate_ACR_1[] = { 75, 110, 134, 150, 300, 600, 1200, 2000,
#define CHAND_TAG "chd"
// device type definition
-const device_type MC68681 = device_creator<mc68681_device>;
-const device_type SC28C94 = device_creator<sc28c94_device>;
-const device_type MC68681_CHANNEL = device_creator<mc68681_channel>;
+DEFINE_DEVICE_TYPE(MC68681, mc68681_device, "mc68681", "MC68681 DUART")
+DEFINE_DEVICE_TYPE(SC28C94, sc28c94_device, "sc28c94", "SC28C94 QUART")
+DEFINE_DEVICE_TYPE(MC68681_CHANNEL, mc68681_channel, "mc68681_channel", "MC68681 DUART channel")
MACHINE_CONFIG_FRAGMENT( duart68681 )
MCFG_DEVICE_ADD(CHANA_TAG, MC68681_CHANNEL, 0)
@@ -76,8 +77,8 @@ MACHINE_CONFIG_END
// LIVE DEVICE
//**************************************************************************
-mc68681_base_device::mc68681_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+mc68681_base_device::mc68681_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
m_chanA(*this, CHANA_TAG),
m_chanB(*this, CHANB_TAG),
m_chanC(*this, CHANC_TAG),
@@ -100,12 +101,12 @@ mc68681_base_device::mc68681_base_device(const machine_config &mconfig, device_t
}
mc68681_device::mc68681_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc68681_base_device(mconfig, MC68681, "MC68681 DUART", tag, owner, clock, "mc68681", __FILE__)
+ : mc68681_base_device(mconfig, MC68681, tag, owner, clock)
{
}
sc28c94_device::sc28c94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc68681_base_device(mconfig, SC28C94, "SC28C94 QUART", tag, owner, clock, "sc28c94", __FILE__)
+ : mc68681_base_device(mconfig, SC28C94, tag, owner, clock)
{
}
@@ -198,12 +199,12 @@ void mc68681_base_device::update_interrupts()
*/
if ( (ISR & IMR) != 0 )
{
- LOG(( "68681: Interrupt line active (IMR & ISR = %02X)\n", (ISR & IMR) ));
+ LOG( "68681: Interrupt line active (IMR & ISR = %02X)\n", (ISR & IMR) );
write_irq(ASSERT_LINE);
}
else
{
- LOG(( "68681: Interrupt line not active (IMR & ISR = %02X)\n", ISR & IMR));
+ LOG( "68681: Interrupt line not active (IMR & ISR = %02X)\n", ISR & IMR);
write_irq(CLEAR_LINE);
m_read_vector = false; // clear IACK too
}
@@ -387,7 +388,7 @@ READ8_MEMBER( mc68681_base_device::read )
offset &= 0xf;
- LOG(( "Reading 68681 (%s) reg %x (%s)\n", tag(), offset, duart68681_reg_read_names[offset] ));
+ LOG( "Reading 68681 (%s) reg %x (%s)\n", tag(), offset, duart68681_reg_read_names[offset] );
switch (offset)
{
@@ -477,10 +478,10 @@ READ8_MEMBER( mc68681_base_device::read )
break;
default:
- LOG(( "Reading unhandled 68681 reg %x\n", offset ));
+ LOG( "Reading unhandled 68681 reg %x\n", offset );
break;
}
- LOG(("returned %02x\n", r));
+ LOG("returned %02x\n", r);
return r;
}
@@ -515,7 +516,7 @@ WRITE8_MEMBER( sc28c94_device::write )
WRITE8_MEMBER( mc68681_base_device::write )
{
offset &= 0x0f;
- LOG(( "Writing 68681 (%s) reg %x (%s) with %04x\n", tag(), offset, duart68681_reg_write_names[offset], data ));
+ LOG( "Writing 68681 (%s) reg %x (%s) with %04x\n", tag(), offset, duart68681_reg_write_names[offset], data );
switch(offset)
{
case 0x00: /* MRA */
@@ -746,7 +747,7 @@ int mc68681_base_device::calc_baud(int ch, uint8_t data)
if ((baud_rate == 0) && ((data & 0xf) != 0xd))
{
- LOG(( "Unsupported transmitter clock: channel %d, clock select = %02x\n", ch, data ));
+ LOG( "Unsupported transmitter clock: channel %d, clock select = %02x\n", ch, data );
}
//printf("%s ch %d setting baud to %d\n", tag(), ch, baud_rate);
@@ -766,7 +767,7 @@ void mc68681_base_device::set_ISR_bits(int mask)
// DUART channel class stuff
mc68681_channel::mc68681_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC68681_CHANNEL, "MC68681 DUART CHANNEL", tag, owner, clock, "mc68681_channel", __FILE__),
+ : device_t(mconfig, MC68681_CHANNEL, tag, owner, clock),
device_serial_interface(mconfig, *this),
MR1(0),
MR2(0),
@@ -859,7 +860,7 @@ void mc68681_channel::tra_complete()
{
if (rx_fifo_num >= MC68681_RX_FIFO_SIZE)
{
- LOG(( "68681: FIFO overflow\n" ));
+ LOG( "68681: FIFO overflow\n" );
SR |= STATUS_OVERRUN_ERROR;
}
else
@@ -1013,7 +1014,7 @@ uint8_t mc68681_channel::read_rx_fifo()
if ( rx_fifo_num == 0 )
{
- LOG(( "68681 channel: rx fifo underflow\n" ));
+ LOG( "68681 channel: rx fifo underflow\n" );
update_interrupts();
return 0;
}
@@ -1211,7 +1212,7 @@ void mc68681_channel::write_CR(uint8_t data)
break;
/* TODO: case 6 and case 7 are start break and stop break respectively, which start or stop holding the TxDA or TxDB line low (space) after whatever data is in the buffer finishes transmitting (following the stop bit?), or after two bit-times if no data is being transmitted */
default:
- LOG(( "68681: Unhandled command (%x) in CR%d\n", (data >> 4) & 0x07, m_ch ));
+ LOG( "68681: Unhandled command (%x) in CR%d\n", (data >> 4) & 0x07, m_ch );
break;
}
diff --git a/src/devices/machine/mc68681.h b/src/devices/machine/mc68681.h
index 208a6b9f032..90bc1a4a2d3 100644
--- a/src/devices/machine/mc68681.h
+++ b/src/devices/machine/mc68681.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Mariusz Wojcieszek, R. Belmont
-#ifndef _MC68681_H
-#define _MC68681_H
+#ifndef MAME_MACHINE_MC68681_H
+#define MAME_MACHINE_MC68681_H
+
+#pragma once
#define MCFG_MC68681_ADD(_tag, _clock) \
@@ -109,8 +111,6 @@ class mc68681_base_device : public device_t
friend class mc68681_channel;
public:
- mc68681_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
required_device<mc68681_channel> m_chanA;
required_device<mc68681_channel> m_chanB;
optional_device<mc68681_channel> m_chanC;
@@ -127,16 +127,11 @@ public:
DECLARE_WRITE_LINE_MEMBER( rx_a_w ) { m_chanA->device_serial_interface::rx_w((uint8_t)state); }
DECLARE_WRITE_LINE_MEMBER( rx_b_w ) { m_chanB->device_serial_interface::rx_w((uint8_t)state); }
- template<class _Object> static devcb_base &set_irq_cb(device_t &device, _Object object) { return downcast<mc68681_base_device &>(device).write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_a_tx_cb(device_t &device, _Object object) { return downcast<mc68681_base_device &>(device).write_a_tx.set_callback(object); }
- template<class _Object> static devcb_base &set_b_tx_cb(device_t &device, _Object object) { return downcast<mc68681_base_device &>(device).write_b_tx.set_callback(object); }
- template<class _Object> static devcb_base &set_inport_cb(device_t &device, _Object object) { return downcast<mc68681_base_device &>(device).read_inport.set_callback(object); }
- template<class _Object> static devcb_base &set_outport_cb(device_t &device, _Object object) { return downcast<mc68681_base_device &>(device).write_outport.set_callback(object); }
-
- devcb_write_line write_irq, write_a_tx, write_b_tx, write_c_tx, write_d_tx;
- devcb_read8 read_inport;
- devcb_write8 write_outport;
- int32_t ip3clk, ip4clk, ip5clk, ip6clk;
+ template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast<mc68681_base_device &>(device).write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_a_tx_cb(device_t &device, Object &&cb) { return downcast<mc68681_base_device &>(device).write_a_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_b_tx_cb(device_t &device, Object &&cb) { return downcast<mc68681_base_device &>(device).write_b_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_inport_cb(device_t &device, Object &&cb) { return downcast<mc68681_base_device &>(device).read_inport.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_outport_cb(device_t &device, Object &&cb) { return downcast<mc68681_base_device &>(device).write_outport.set_callback(std::forward<Object>(cb)); }
// new-style push handlers for input port bits
DECLARE_WRITE_LINE_MEMBER( ip0_w );
@@ -147,11 +142,18 @@ public:
DECLARE_WRITE_LINE_MEMBER( ip5_w );
protected:
+ mc68681_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
+ devcb_write_line write_irq, write_a_tx, write_b_tx, write_c_tx, write_d_tx;
+ devcb_read8 read_inport;
+ devcb_write8 write_outport;
+ int32_t ip3clk, ip4clk, ip5clk, ip6clk;
+
private:
TIMER_CALLBACK_MEMBER( duart_timer_callback );
@@ -214,8 +216,8 @@ class sc28c94_device : public mc68681_base_device
public:
sc28c94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_c_tx_cb(device_t &device, _Object object) { return downcast<mc68681_base_device &>(device).write_c_tx.set_callback(object); }
- template<class _Object> static devcb_base &set_d_tx_cb(device_t &device, _Object object) { return downcast<mc68681_base_device &>(device).write_d_tx.set_callback(object); }
+ template <class Object> static devcb_base &set_c_tx_cb(device_t &device, Object &&cb) { return downcast<sc28c94_device &>(device).write_c_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d_tx_cb(device_t &device, Object &&cb) { return downcast<sc28c94_device &>(device).write_d_tx.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( rx_c_w ) { m_chanC->device_serial_interface::rx_w((uint8_t)state); }
DECLARE_WRITE_LINE_MEMBER( rx_d_w ) { m_chanD->device_serial_interface::rx_w((uint8_t)state); }
@@ -229,8 +231,8 @@ protected:
private:
};
-extern const device_type MC68681;
-extern const device_type SC28C94;
-extern const device_type MC68681_CHANNEL;
+DECLARE_DEVICE_TYPE(MC68681, mc68681_device)
+DECLARE_DEVICE_TYPE(SC28C94, sc28c94_device)
+DECLARE_DEVICE_TYPE(MC68681_CHANNEL, mc68681_channel)
-#endif //_N68681_H
+#endif // MAME_MACHINE_MC68681_H
diff --git a/src/devices/machine/mc68901.cpp b/src/devices/machine/mc68901.cpp
index 5239cceb660..d790b4c3020 100644
--- a/src/devices/machine/mc68901.cpp
+++ b/src/devices/machine/mc68901.cpp
@@ -47,18 +47,19 @@
#include "mc68901.h"
#include "cpu/m68000/m68000.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
+
// device type definition
-const device_type MC68901 = device_creator<mc68901_device>;
+DEFINE_DEVICE_TYPE(MC68901, mc68901_device, "mc68901", "Motorola MC68901 MFP")
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
#define AER_GPIP_0 0x01
#define AER_GPIP_1 0x02
@@ -294,11 +295,11 @@ inline void mc68901_device::gpio_input(int bit, int state)
{
if (state == BIT(m_aer, bit))
{
- if (LOG) logerror("MC68901 '%s' Edge Transition Detected on GPIO%u\n", tag(), bit);
+ LOG("MC68901 Edge Transition Detected on GPIO%u\n", bit);
if (m_ier & INT_MASK_GPIO[bit]) // AND interrupt enabled bit is set...
{
- if (LOG) logerror("MC68901 '%s' Interrupt Pending for GPIO%u\n", tag(), bit);
+ LOG("MC68901 Interrupt Pending for GPIO%u\n", bit);
take_interrupt(INT_MASK_GPIO[bit]); // set interrupt pending bit
}
@@ -333,7 +334,7 @@ void mc68901_device::gpio_output()
//-------------------------------------------------
mc68901_device::mc68901_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC68901, "MC68901 MFP", tag, owner, clock, "mc68901", __FILE__),
+ : device_t(mconfig, MC68901, tag, owner, clock),
device_serial_interface(mconfig, *this),
m_timer_clock(0),
m_rx_clock(0),
@@ -596,84 +597,84 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
switch (offset)
{
case REGISTER_GPIP:
- if (LOG) logerror("MC68901 '%s' General Purpose I/O : %x\n", tag(), data);
+ LOG("MC68901 General Purpose I/O : %x\n", data);
m_gpip = data;
gpio_output();
break;
case REGISTER_AER:
- if (LOG) logerror("MC68901 '%s' Active Edge Register : %x\n", tag(), data);
+ LOG("MC68901 Active Edge Register : %x\n", data);
m_aer = data;
break;
case REGISTER_DDR:
- if (LOG) logerror("MC68901 '%s' Data Direction Register : %x\n", tag(), data);
+ LOG("MC68901 Data Direction Register : %x\n", data);
m_ddr = data;
gpio_output();
break;
case REGISTER_IERA:
- if (LOG) logerror("MC68901 '%s' Interrupt Enable Register A : %x\n", tag(), data);
+ LOG("MC68901 Interrupt Enable Register A : %x\n", data);
m_ier = (data << 8) | (m_ier & 0xff);
m_ipr &= m_ier;
check_interrupts();
break;
case REGISTER_IERB:
- if (LOG) logerror("MC68901 '%s' Interrupt Enable Register B : %x\n", tag(), data);
+ LOG("MC68901 Interrupt Enable Register B : %x\n", data);
m_ier = (m_ier & 0xff00) | data;
m_ipr &= m_ier;
check_interrupts();
break;
case REGISTER_IPRA:
- if (LOG) logerror("MC68901 '%s' Interrupt Pending Register A : %x\n", tag(), data);
+ LOG("MC68901 Interrupt Pending Register A : %x\n", data);
m_ipr &= (data << 8) | (m_ipr & 0xff);
check_interrupts();
break;
case REGISTER_IPRB:
- if (LOG) logerror("MC68901 '%s' Interrupt Pending Register B : %x\n", tag(), data);
+ LOG("MC68901 Interrupt Pending Register B : %x\n", data);
m_ipr &= (m_ipr & 0xff00) | data;
check_interrupts();
break;
case REGISTER_ISRA:
- if (LOG) logerror("MC68901 '%s' Interrupt In-Service Register A : %x\n", tag(), data);
+ LOG("MC68901 Interrupt In-Service Register A : %x\n", data);
m_isr &= (data << 8) | (m_isr & 0xff);
break;
case REGISTER_ISRB:
- if (LOG) logerror("MC68901 '%s' Interrupt In-Service Register B : %x\n", tag(), data);
+ LOG("MC68901 Interrupt In-Service Register B : %x\n", data);
m_isr &= (m_isr & 0xff00) | data;
break;
case REGISTER_IMRA:
- if (LOG) logerror("MC68901 '%s' Interrupt Mask Register A : %x\n", tag(), data);
+ LOG("MC68901 Interrupt Mask Register A : %x\n", data);
m_imr = (data << 8) | (m_imr & 0xff);
m_isr &= m_imr;
check_interrupts();
break;
case REGISTER_IMRB:
- if (LOG) logerror("MC68901 '%s' Interrupt Mask Register B : %x\n", tag(), data);
+ LOG("MC68901 Interrupt Mask Register B : %x\n", data);
m_imr = (m_imr & 0xff00) | data;
m_isr &= m_imr;
check_interrupts();
break;
case REGISTER_VR:
- if (LOG) logerror("MC68901 '%s' Interrupt Vector : %x\n", tag(), data & 0xf0);
+ LOG("MC68901 Interrupt Vector : %x\n", data & 0xf0);
m_vr = data & 0xf8;
if (m_vr & VR_S)
{
- if (LOG) logerror("MC68901 '%s' Software End-Of-Interrupt Mode\n", tag());
+ LOG("MC68901 Software End-Of-Interrupt Mode\n");
}
else
{
- if (LOG) logerror("MC68901 '%s' Automatic End-Of-Interrupt Mode\n", tag());
+ LOG("MC68901 Automatic End-Of-Interrupt Mode\n");
m_isr = 0;
}
@@ -685,7 +686,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
switch (m_tacr & 0x0f)
{
case TCR_TIMER_STOPPED:
- if (LOG) logerror("MC68901 '%s' Timer A Stopped\n", tag());
+ LOG("MC68901 Timer A Stopped\n");
m_timer[TIMER_A]->enable(false);
break;
@@ -697,14 +698,14 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
case TCR_TIMER_DELAY_100:
case TCR_TIMER_DELAY_200:
{
- int divisor = PRESCALER[m_tacr & 0x07];
- if (LOG) logerror("MC68901 '%s' Timer A Delay Mode : %u Prescale\n", tag(), divisor);
- m_timer[TIMER_A]->adjust(attotime::from_hz(m_timer_clock / divisor), 0, attotime::from_hz(m_timer_clock / divisor));
+ int divisor = PRESCALER[m_tacr & 0x07];
+ LOG("MC68901 Timer A Delay Mode : %u Prescale\n", divisor);
+ m_timer[TIMER_A]->adjust(attotime::from_hz(m_timer_clock / divisor), 0, attotime::from_hz(m_timer_clock / divisor));
}
break;
case TCR_TIMER_EVENT:
- if (LOG) logerror("MC68901 '%s' Timer A Event Count Mode\n", tag());
+ LOG("MC68901 Timer A Event Count Mode\n");
m_timer[TIMER_A]->enable(false);
break;
@@ -716,17 +717,17 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
case TCR_TIMER_PULSE_100:
case TCR_TIMER_PULSE_200:
{
- int divisor = PRESCALER[m_tacr & 0x07];
- if (LOG) logerror("MC68901 '%s' Timer A Pulse Width Mode : %u Prescale\n", tag(), divisor);
- m_timer[TIMER_A]->adjust(attotime::never, 0, attotime::from_hz(m_timer_clock / divisor));
- m_timer[TIMER_A]->enable(false);
+ int divisor = PRESCALER[m_tacr & 0x07];
+ LOG("MC68901 Timer A Pulse Width Mode : %u Prescale\n", divisor);
+ m_timer[TIMER_A]->adjust(attotime::never, 0, attotime::from_hz(m_timer_clock / divisor));
+ m_timer[TIMER_A]->enable(false);
}
break;
}
if (m_tacr & TCR_TIMER_RESET)
{
- if (LOG) logerror("MC68901 '%s' Timer A Reset\n", tag());
+ LOG("MC68901 Timer A Reset\n");
m_to[TIMER_A] = 0;
@@ -740,7 +741,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
switch (m_tbcr & 0x0f)
{
case TCR_TIMER_STOPPED:
- if (LOG) logerror("MC68901 '%s' Timer B Stopped\n", tag());
+ LOG("MC68901 Timer B Stopped\n");
m_timer[TIMER_B]->enable(false);
break;
@@ -753,13 +754,13 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
case TCR_TIMER_DELAY_200:
{
int divisor = PRESCALER[m_tbcr & 0x07];
- if (LOG) logerror("MC68901 '%s' Timer B Delay Mode : %u Prescale\n", tag(), divisor);
+ LOG("MC68901 Timer B Delay Mode : %u Prescale\n", divisor);
m_timer[TIMER_B]->adjust(attotime::from_hz(m_timer_clock / divisor), 0, attotime::from_hz(m_timer_clock / divisor));
}
break;
case TCR_TIMER_EVENT:
- if (LOG) logerror("MC68901 '%s' Timer B Event Count Mode\n", tag());
+ LOG("MC68901 Timer B Event Count Mode\n");
m_timer[TIMER_B]->enable(false);
break;
@@ -772,7 +773,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
case TCR_TIMER_PULSE_200:
{
int divisor = PRESCALER[m_tbcr & 0x07];
- if (LOG) logerror("MC68901 '%s' Timer B Pulse Width Mode : %u Prescale\n", tag(), DIVISOR);
+ LOG("MC68901 Timer B Pulse Width Mode : %u Prescale\n", DIVISOR);
m_timer[TIMER_B]->adjust(attotime::never, 0, attotime::from_hz(m_timer_clock / divisor));
m_timer[TIMER_B]->enable(false);
}
@@ -781,7 +782,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
if (m_tacr & TCR_TIMER_RESET)
{
- if (LOG) logerror("MC68901 '%s' Timer B Reset\n", tag());
+ LOG("MC68901 Timer B Reset\n");
m_to[TIMER_B] = 0;
@@ -795,7 +796,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
switch (m_tcdcr & 0x07)
{
case TCR_TIMER_STOPPED:
- if (LOG) logerror("MC68901 '%s' Timer D Stopped\n", tag());
+ LOG("MC68901 Timer D Stopped\n");
m_timer[TIMER_D]->enable(false);
break;
@@ -807,9 +808,9 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
case TCR_TIMER_DELAY_100:
case TCR_TIMER_DELAY_200:
{
- int divisor = PRESCALER[m_tcdcr & 0x07];
- if (LOG) logerror("MC68901 '%s' Timer D Delay Mode : %u Prescale\n", tag(), divisor);
- m_timer[TIMER_D]->adjust(attotime::from_hz(m_timer_clock / divisor), 0, attotime::from_hz(m_timer_clock / divisor));
+ int divisor = PRESCALER[m_tcdcr & 0x07];
+ LOG("MC68901 Timer D Delay Mode : %u Prescale\n", divisor);
+ m_timer[TIMER_D]->adjust(attotime::from_hz(m_timer_clock / divisor), 0, attotime::from_hz(m_timer_clock / divisor));
}
break;
}
@@ -817,7 +818,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
switch ((m_tcdcr >> 4) & 0x07)
{
case TCR_TIMER_STOPPED:
- if (LOG) logerror("MC68901 '%s' Timer C Stopped\n", tag());
+ LOG("MC68901 Timer C Stopped\n");
m_timer[TIMER_C]->enable(false);
break;
@@ -829,16 +830,16 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
case TCR_TIMER_DELAY_100:
case TCR_TIMER_DELAY_200:
{
- int divisor = PRESCALER[(m_tcdcr >> 4) & 0x07];
- if (LOG) logerror("MC68901 '%s' Timer C Delay Mode : %u Prescale\n", tag(), divisor);
- m_timer[TIMER_C]->adjust(attotime::from_hz(m_timer_clock / divisor), 0, attotime::from_hz(m_timer_clock / divisor));
+ int divisor = PRESCALER[(m_tcdcr >> 4) & 0x07];
+ LOG("MC68901 Timer C Delay Mode : %u Prescale\n", divisor);
+ m_timer[TIMER_C]->adjust(attotime::from_hz(m_timer_clock / divisor), 0, attotime::from_hz(m_timer_clock / divisor));
}
break;
}
break;
case REGISTER_TADR:
- if (LOG) logerror("MC68901 '%s' Timer A Data Register : %x\n", tag(), data);
+ LOG("MC68901 Timer A Data Register : %x\n", data);
m_tdr[TIMER_A] = data;
@@ -849,7 +850,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
break;
case REGISTER_TBDR:
- if (LOG) logerror("MC68901 '%s' Timer B Data Register : %x\n", tag(), data);
+ LOG("MC68901 Timer B Data Register : %x\n", data);
m_tdr[TIMER_B] = data;
@@ -860,7 +861,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
break;
case REGISTER_TCDR:
- if (LOG) logerror("MC68901 '%s' Timer C Data Register : %x\n", tag(), data);
+ LOG("MC68901 Timer C Data Register : %x\n", data);
m_tdr[TIMER_C] = data;
@@ -871,7 +872,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
break;
case REGISTER_TDDR:
- if (LOG) logerror("MC68901 '%s' Timer D Data Register : %x\n", tag(), data);
+ LOG("MC68901 Timer D Data Register : %x\n", data);
m_tdr[TIMER_D] = data;
@@ -882,7 +883,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
break;
case REGISTER_SCR:
- if (LOG) logerror("MC68901 '%s' Sync Character : %x\n", tag(), data);
+ LOG("MC68901 Sync Character : %x\n", data);
m_scr = data;
break;
@@ -905,25 +906,25 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
{
if (data & UCR_PARITY_EVEN)
{
- if (LOG) logerror("MC68901 '%s' Parity : Even\n", tag());
+ LOG("MC68901 Parity : Even\n");
parity = PARITY_EVEN;
}
else
{
- if (LOG) logerror("MC68901 '%s' Parity : Odd\n", tag());
+ LOG("MC68901 Parity : Odd\n");
parity = PARITY_ODD;
}
}
else
{
- if (LOG) logerror("MC68901 '%s' Parity : Disabled\n", tag());
+ LOG("MC68901 Parity : Disabled\n");
parity = PARITY_NONE;
}
- if (LOG) logerror("MC68901 '%s' Word Length : %u bits\n", tag(), data_bit_count);
+ LOG("MC68901 Word Length : %u bits\n", data_bit_count);
int start_bits;
@@ -935,35 +936,35 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
default:
start_bits = 0;
stop_bits = STOP_BITS_0;
- if (LOG) logerror("MC68901 '%s' Start Bits : 0, Stop Bits : 0, Format : synchronous\n", tag());
+ LOG("MC68901 Start Bits : 0, Stop Bits : 0, Format : synchronous\n");
break;
case UCR_START_STOP_1_1:
start_bits = 1;
stop_bits = STOP_BITS_1;
- if (LOG) logerror("MC68901 '%s' Start Bits : 1, Stop Bits : 1, Format : asynchronous\n", tag());
+ LOG("MC68901 Start Bits : 1, Stop Bits : 1, Format : asynchronous\n");
break;
case UCR_START_STOP_1_15:
start_bits = 1;
stop_bits = STOP_BITS_1_5;
- if (LOG) logerror("MC68901 '%s' Start Bits : 1, Stop Bits : 1.5, Format : asynchronous\n", tag());
+ LOG("MC68901 Start Bits : 1, Stop Bits : 1.5, Format : asynchronous\n");
break;
case UCR_START_STOP_1_2:
start_bits = 1;
stop_bits = STOP_BITS_2;
- if (LOG) logerror("MC68901 '%s' Start Bits : 1, Stop Bits : 2, Format : asynchronous\n", tag());
+ LOG("MC68901 Start Bits : 1, Stop Bits : 2, Format : asynchronous\n");
break;
}
if (data & UCR_CLOCK_DIVIDE_16)
{
- if (LOG) logerror("MC68901 '%s' Rx/Tx Clock Divisor : 16\n", tag());
+ LOG("MC68901 Rx/Tx Clock Divisor : 16\n");
}
else
{
- if (LOG) logerror("MC68901 '%s' Rx/Tx Clock Divisor : 1\n", tag());
+ LOG("MC68901 Rx/Tx Clock Divisor : 1\n");
}
set_data_frame(start_bits, data_bit_count, parity, stop_bits);
@@ -975,24 +976,24 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
case REGISTER_RSR:
if ((data & RSR_RCV_ENABLE) == 0)
{
- if (LOG) logerror("MC68901 '%s' Receiver Disabled\n", tag());
+ LOG("MC68901 Receiver Disabled\n");
m_rsr = 0;
}
else
{
- if (LOG) logerror("MC68901 '%s' Receiver Enabled\n", tag());
+ LOG("MC68901 Receiver Enabled\n");
if (data & RSR_SYNC_STRIP_ENABLE)
{
- if (LOG) logerror("MC68901 '%s' Sync Strip Enabled\n", tag());
+ LOG("MC68901 Sync Strip Enabled\n");
}
else
{
- if (LOG) logerror("MC68901 '%s' Sync Strip Disabled\n", tag());
+ LOG("MC68901 Sync Strip Disabled\n");
}
if (data & RSR_FOUND_SEARCH)
- if (LOG) logerror("MC68901 '%s' Receiver Search Mode Enabled\n", tag());
+ LOG("MC68901 Receiver Search Mode Enabled\n");
m_rsr = data & 0x0b;
}
@@ -1003,7 +1004,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
if ((data & TSR_XMIT_ENABLE) == 0)
{
- if (LOG) logerror("MC68901 '%s' Transmitter Disabled\n", tag());
+ LOG("MC68901 Transmitter Disabled\n");
m_tsr &= ~TSR_UNDERRUN_ERROR;
@@ -1012,40 +1013,40 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
}
else
{
- if (LOG) logerror("MC68901 '%s' Transmitter Enabled\n", tag());
+ LOG("MC68901 Transmitter Enabled\n");
switch (data & 0x06)
{
case TSR_OUTPUT_HI_Z:
- if (LOG) logerror("MC68901 '%s' Transmitter Disabled Output State : Hi-Z\n", tag());
+ LOG("MC68901 Transmitter Disabled Output State : Hi-Z\n");
break;
case TSR_OUTPUT_LOW:
- if (LOG) logerror("MC68901 '%s' Transmitter Disabled Output State : 0\n", tag());
+ LOG("MC68901 Transmitter Disabled Output State : 0\n");
break;
case TSR_OUTPUT_HIGH:
- if (LOG) logerror("MC68901 '%s' Transmitter Disabled Output State : 1\n", tag());
+ LOG("MC68901 Transmitter Disabled Output State : 1\n");
break;
case TSR_OUTPUT_LOOP:
- if (LOG) logerror("MC68901 '%s' Transmitter Disabled Output State : Loop\n", tag());
+ LOG("MC68901 Transmitter Disabled Output State : Loop\n");
break;
}
if (data & TSR_BREAK)
{
- if (LOG) logerror("MC68901 '%s' Transmitter Break Enabled\n", tag());
+ LOG("MC68901 Transmitter Break Enabled\n");
}
else
{
- if (LOG) logerror("MC68901 '%s' Transmitter Break Disabled\n", tag());
+ LOG("MC68901 Transmitter Break Disabled\n");
}
if (data & TSR_AUTO_TURNAROUND)
{
- if (LOG) logerror("MC68901 '%s' Transmitter Auto Turnaround Enabled\n", tag());
+ LOG("MC68901 Transmitter Auto Turnaround Enabled\n");
}
else
{
- if (LOG) logerror("MC68901 '%s' Transmitter Auto Turnaround Disabled\n", tag());
+ LOG("MC68901 Transmitter Auto Turnaround Disabled\n");
}
m_tsr &= ~TSR_END_OF_XMIT;
@@ -1060,7 +1061,7 @@ void mc68901_device::register_w(offs_t offset, uint8_t data)
break;
case REGISTER_UDR:
- if (LOG) logerror("MC68901 '%s' UDR %x\n", tag(), data);
+ LOG("MC68901 UDR %x\n", data);
m_transmit_buffer = data;
m_transmit_pending = 1;
m_tsr &= ~TSR_BUFFER_EMPTY;
diff --git a/src/devices/machine/mc68901.h b/src/devices/machine/mc68901.h
index 56dd83f27aa..b98d2de8e5c 100644
--- a/src/devices/machine/mc68901.h
+++ b/src/devices/machine/mc68901.h
@@ -33,10 +33,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MC68901_H
+#define MAME_MACHINE_MC68901_H
-#ifndef __MC68901__
-#define __MC68901__
+#pragma once
@@ -98,15 +98,15 @@ public:
static void set_timer_clock(device_t &device, int timer_clock) { downcast<mc68901_device &>(device).m_timer_clock = timer_clock; }
static void set_rx_clock(device_t &device, int rx_clock) { downcast<mc68901_device &>(device).m_rx_clock = rx_clock; }
static void set_tx_clock(device_t &device, int tx_clock) { downcast<mc68901_device &>(device).m_tx_clock = tx_clock; }
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<mc68901_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_gpio_callback(device_t &device, _Object object) { return downcast<mc68901_device &>(device).m_out_gpio_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_tao_callback(device_t &device, _Object object) { return downcast<mc68901_device &>(device).m_out_tao_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_tbo_callback(device_t &device, _Object object) { return downcast<mc68901_device &>(device).m_out_tbo_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_tco_callback(device_t &device, _Object object) { return downcast<mc68901_device &>(device).m_out_tco_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_tdo_callback(device_t &device, _Object object) { return downcast<mc68901_device &>(device).m_out_tdo_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_so_callback(device_t &device, _Object object) { return downcast<mc68901_device &>(device).m_out_so_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_rr_callback(device_t &device, _Object object) { return downcast<mc68901_device &>(device).m_out_rr_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_tr_callback(device_t &device, _Object object) { return downcast<mc68901_device &>(device).m_out_tr_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_gpio_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_gpio_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_tao_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tao_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_tbo_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tbo_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_tco_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tco_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_tdo_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tdo_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_so_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_so_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_rr_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_rr_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_tr_callback(device_t &device, Object &&cb) { return downcast<mc68901_device &>(device).m_out_tr_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -303,8 +303,6 @@ private:
// device type definition
-extern const device_type MC68901;
-
-
+DECLARE_DEVICE_TYPE(MC68901, mc68901_device)
-#endif
+#endif // MAME_MACHINE_MC68901_H
diff --git a/src/devices/machine/mccs1850.cpp b/src/devices/machine/mccs1850.cpp
index 0a39b833529..7422565b53f 100644
--- a/src/devices/machine/mccs1850.cpp
+++ b/src/devices/machine/mccs1850.cpp
@@ -18,15 +18,15 @@
#include "emu.h"
#include "mccs1850.h"
+//#define VERBOSE 0
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
#define RAM_SIZE 0x80
@@ -100,7 +100,7 @@ enum
//**************************************************************************
// device type definition
-const device_type MCCS1850 = device_creator<mccs1850_device>;
+DEFINE_DEVICE_TYPE(MCCS1850, mccs1850_device, "mccs1850", "MCCS1850 RTC")
@@ -171,7 +171,7 @@ inline uint8_t mccs1850_device::read_register(offs_t offset)
case REGISTER_TEST_KICK_START_COUNTER:
case REGISTER_TEST_PRESCALE_COUNTER:
case REGISTER_TEST_COUNTER_INCREMENT:
- logerror("MCCS1850 '%s' Unsupported read from test register %02x!\n", tag(), offset);
+ logerror("MCCS1850 Unsupported read from test register %02x!\n", offset);
break;
}
@@ -192,35 +192,35 @@ inline void mccs1850_device::write_register(offs_t offset, uint8_t data)
break;
case REGISTER_CONTROL:
- if (LOG) logerror("MCCS1850 '%s' Counter %s\n", tag(), (data & CONTROL_STR_STP) ? "Start" : "Stop");
+ LOG("MCCS1850 Counter %s\n", (data & CONTROL_STR_STP) ? "Start" : "Stop");
m_clock_timer->enable(data & CONTROL_STR_STP);
if (data & CONTROL_PD)
{
- if (LOG) logerror("MCCS1850 '%s' Power Down\n", tag());
+ LOG("MCCS1850 Power Down\n");
set_pse_line(false);
}
if (data & CONTROL_AR)
{
- if (LOG) logerror("MCCS1850 '%s' Auto Restart\n", tag());
+ LOG("MCCS1850 Auto Restart\n");
}
if (data & CONTROL_AC)
{
- if (LOG) logerror("MCCS1850 '%s' Alarm Clear\n", tag());
+ LOG("MCCS1850 Alarm Clear\n");
m_ram[REGISTER_STATUS] &= ~STATUS_AI;
}
if (data & CONTROL_FTUC)
{
- if (LOG) logerror("MCCS1850 '%s' First Time Up Clear\n", tag());
+ LOG("MCCS1850 First Time Up Clear\n");
m_ram[REGISTER_STATUS] &= ~STATUS_FTU;
}
if (data & CONTROL_RPCD)
{
- if (LOG) logerror("MCCS1850 '%s' Request to Power Down Clear\n", tag());
+ LOG("MCCS1850 Request to Power Down Clear\n");
m_ram[REGISTER_STATUS] &= ~STATUS_RPD;
}
@@ -234,7 +234,7 @@ inline void mccs1850_device::write_register(offs_t offset, uint8_t data)
case REGISTER_TEST_KICK_START_COUNTER:
case REGISTER_TEST_PRESCALE_COUNTER:
case REGISTER_TEST_COUNTER_INCREMENT:
- logerror("MCCS1850 '%s' Unsupported write to test register %02x!\n", tag(), offset);
+ logerror("MCCS1850 Unsupported write to test register %02x!\n", offset);
break;
default:
@@ -281,7 +281,7 @@ inline void mccs1850_device::advance_seconds()
//-------------------------------------------------
mccs1850_device::mccs1850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MCCS1850, "MCCS1850", tag, owner, clock, "mccs1850", __FILE__),
+ device_t(mconfig, MCCS1850, tag, owner, clock),
device_rtc_interface(mconfig, *this),
device_nvram_interface(mconfig, *this),
int_cb(*this),
@@ -446,7 +446,7 @@ WRITE_LINE_MEMBER( mccs1850_device::sck_w )
if (m_bits == 8)
{
- if (LOG) logerror("MCCS1850 '%s' %s Address %02x\n", tag(), BIT(m_address, 7) ? "Write" : "Read", m_address & 0x7f);
+ LOG("MCCS1850 %s Address %02x\n", BIT(m_address, 7) ? "Write" : "Read", m_address & 0x7f);
m_bits = 0;
m_state = STATE_DATA;
@@ -455,7 +455,7 @@ WRITE_LINE_MEMBER( mccs1850_device::sck_w )
{
m_shift = read_register(m_address & 0x7f);
- if (LOG) logerror("MCCS1850 '%s' Data Out %02x\n", tag(), m_shift);
+ LOG("MCCS1850 Data Out %02x\n", m_shift);
}
}
}
@@ -471,7 +471,7 @@ WRITE_LINE_MEMBER( mccs1850_device::sck_w )
if (m_bits == 8)
{
- if (LOG) logerror("MCCS1850 '%s' Data In %02x\n", tag(), m_shift);
+ LOG("MCCS1850 Data In %02x\n", m_shift);
write_register(m_address & 0x7f, m_shift);
@@ -497,7 +497,7 @@ WRITE_LINE_MEMBER( mccs1850_device::sck_w )
m_address++;
m_address &= 0x7f;
m_shift = read_register(m_address & 0x7f);
- if (LOG) logerror("MCCS1850 '%s' Data Out %02x\n", tag(), m_shift);
+ LOG("MCCS1850 Data Out %02x\n", m_shift);
}
}
break;
@@ -576,13 +576,13 @@ WRITE_LINE_MEMBER( mccs1850_device::test_w )
{
if (state)
{
- if (LOG) logerror("MCCS1850 '%s' Test Mode\n", tag());
+ LOG("MCCS1850 Test Mode\n");
m_ram[REGISTER_STATUS] |= STATUS_TM;
}
else
{
- if (LOG) logerror("MCCS1850 '%s' Normal Operation\n", tag());
+ LOG("MCCS1850 Normal Operation\n");
m_ram[REGISTER_STATUS] &= ~STATUS_TM;
}
diff --git a/src/devices/machine/mccs1850.h b/src/devices/machine/mccs1850.h
index ad960b52f4e..e446d2083f3 100644
--- a/src/devices/machine/mccs1850.h
+++ b/src/devices/machine/mccs1850.h
@@ -17,10 +17,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MCCS1850_H
+#define MAME_MACHINE_MCCS1850_H
-#ifndef __MCCS1850__
-#define __MCCS1850__
+#pragma once
#include "dirtc.h"
@@ -55,9 +55,9 @@ public:
// construction/destruction
mccs1850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_int_wr_callback(device_t &device, _Object object) { return downcast<mccs1850_device &>(device).int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pse_wr_callback(device_t &device, _Object object) { return downcast<mccs1850_device &>(device).pse_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nuc_wr_callback(device_t &device, _Object object) { return downcast<mccs1850_device &>(device).nuc_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<mccs1850_device &>(device).int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pse_wr_callback(device_t &device, Object &&cb) { return downcast<mccs1850_device &>(device).pse_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nuc_wr_callback(device_t &device, Object &&cb) { return downcast<mccs1850_device &>(device).nuc_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( ce_w );
DECLARE_WRITE_LINE_MEMBER( sck_w );
@@ -116,8 +116,6 @@ private:
// device type definition
-extern const device_type MCCS1850;
-
-
+DECLARE_DEVICE_TYPE(MCCS1850, mccs1850_device)
-#endif
+#endif // MAME_MACHINE_MCCS1850_H
diff --git a/src/devices/machine/mcf5206e.cpp b/src/devices/machine/mcf5206e.cpp
index c9e18c24cc7..e3b0b669257 100644
--- a/src/devices/machine/mcf5206e.cpp
+++ b/src/devices/machine/mcf5206e.cpp
@@ -822,14 +822,14 @@ WRITE16_MEMBER( mcf5206e_peripheral_device::TCN1_w)
//**************************************************************************
// device type definition
-const device_type MCF5206E_PERIPHERAL = device_creator<mcf5206e_peripheral_device>;
+DEFINE_DEVICE_TYPE(MCF5206E_PERIPHERAL, mcf5206e_peripheral_device, "mcf5206e_peripheral", "MCF5206E Peripheral")
//-------------------------------------------------
// mcf5206e_peripheral_device - constructor
//-------------------------------------------------
mcf5206e_peripheral_device::mcf5206e_peripheral_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MCF5206E_PERIPHERAL, "MCF5206E Peripheral", tag, owner, clock, "mcf5206e_peripheral", __FILE__),
+ : device_t(mconfig, MCF5206E_PERIPHERAL, tag, owner, clock),
device_memory_interface(mconfig, *this),
m_space_config("coldfire_regs", ENDIANNESS_BIG, 32,10, 0, nullptr, *ADDRESS_MAP_NAME(coldfire_regs_map))
diff --git a/src/devices/machine/mcf5206e.h b/src/devices/machine/mcf5206e.h
index 5906d07e81b..b6fbd55a6aa 100644
--- a/src/devices/machine/mcf5206e.h
+++ b/src/devices/machine/mcf5206e.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MCF5206E_H
+#define MAME_MACHINE_MCF5206E_H
-#ifndef __MCF5206E_PERIPHERAL_H__
-#define __MCF5206E_PERIPHERAL_H__
+#pragma once
@@ -27,28 +27,28 @@
// ======================> mcf5206e_peripheral_device
-enum
-{
- ICR1 = 0,
- ICR2,
- ICR3,
- ICR4,
- ICR5,
- ICR6,
- ICR7,
- ICR8,
- ICR9,
- ICR10,
- ICR11,
- ICR12,
- ICR13,
- MAX_ICR
-};
-
class mcf5206e_peripheral_device : public device_t,
public device_memory_interface
{
public:
+ enum
+ {
+ ICR1 = 0,
+ ICR2,
+ ICR3,
+ ICR4,
+ ICR5,
+ ICR6,
+ ICR7,
+ ICR8,
+ ICR9,
+ ICR10,
+ ICR11,
+ ICR12,
+ ICR13,
+ MAX_ICR
+ };
+
// construction/destruction
mcf5206e_peripheral_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -155,25 +155,23 @@ public:
DECLARE_READ8_MEMBER( MBDR_r );
DECLARE_WRITE8_MEMBER( MBDR_w );
-
-
-
- cpu_device* m_cpu;
-
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override { }
virtual void device_clock_changed() override { }
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
- address_space_config m_space_config;
-
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
private:
+ TIMER_CALLBACK_MEMBER(timer1_callback);
void init_regs(bool first_init);
+ cpu_device* m_cpu;
+
+ address_space_config m_space_config;
+
uint8_t m_ICR[MAX_ICR];
uint16_t m_CSAR[8];
@@ -188,7 +186,6 @@ private:
uint16_t m_TRR1;
uint8_t m_TER1;
uint16_t m_TCN1;
- TIMER_CALLBACK_MEMBER(timer1_callback);
uint8_t m_PPDDR;
@@ -202,12 +199,10 @@ private:
uint8_t m_MBDR;
uint32_t m_coldfire_regs[0x400/4];
-
-private:
};
// device type definition
-extern const device_type MCF5206E_PERIPHERAL;
+DECLARE_DEVICE_TYPE(MCF5206E_PERIPHERAL, mcf5206e_peripheral_device)
-#endif /* __MCF5206E_PERIPHERAL_H__ */
+#endif // MAME_MACHINE_MCF5206E_H
diff --git a/src/devices/machine/microtch.cpp b/src/devices/machine/microtch.cpp
index 93c51dc8208..a712b2c7125 100644
--- a/src/devices/machine/microtch.cpp
+++ b/src/devices/machine/microtch.cpp
@@ -14,18 +14,23 @@
#include "emu.h"
#include "microtch.h"
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
-const device_type MICROTOUCH = device_creator<microtouch_device>;
+
+DEFINE_DEVICE_TYPE(MICROTOUCH, microtouch_device, "microtouch", "Microtouch Touchscreen")
microtouch_device::microtouch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MICROTOUCH, "Microtouch Touchscreen", tag, owner, clock, "microtouch", __FILE__),
- device_serial_interface(mconfig, *this), m_rx_buffer_ptr(0), m_tx_buffer_num(0), m_tx_buffer_ptr(0), m_reset_done(0), m_format(0), m_mode(0), m_last_touch_state(0),
+ device_t(mconfig, MICROTOUCH, tag, owner, clock),
+ device_serial_interface(mconfig, *this),
+ m_rx_buffer_ptr(0), m_tx_buffer_num(0), m_tx_buffer_ptr(0), m_reset_done(0), m_format(0), m_mode(0), m_last_touch_state(0),
m_last_x(0), m_last_y(0),
m_out_stx_func(*this),
m_touch(*this, "TOUCH"),
m_touchx(*this, "TOUCH_X"),
- m_touchy(*this, "TOUCH_Y"), m_timer(nullptr), m_output_valid(false), m_output(0)
+ m_touchy(*this, "TOUCH_Y"),
+ m_timer(nullptr),
+ m_output_valid(false), m_output(0)
{
}
@@ -219,12 +224,12 @@ void microtouch_device::rcv_complete()
if (m_rx_buffer_ptr > 0 && (m_rx_buffer[m_rx_buffer_ptr-1] == 0x0d))
{
- if (LOG)
+ if (VERBOSE)
{
char command[16];
memset(command, 0, sizeof(command));
strncpy( command, (const char*)m_rx_buffer + 1, m_rx_buffer_ptr - 2 );
- logerror("Microtouch: received command %s\n", command);
+ LOG("Microtouch: received command %s\n", command);
}
// check command
if ( check_command( "MS", m_rx_buffer_ptr, m_rx_buffer ) )
diff --git a/src/devices/machine/microtch.h b/src/devices/machine/microtch.h
index 0c56c87379f..ecb16e5b622 100644
--- a/src/devices/machine/microtch.h
+++ b/src/devices/machine/microtch.h
@@ -1,8 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Mariusz Wojcieszek
-#ifndef _MICROTOUCH_H
-#define _MICROTOUCH_H
+#ifndef MAME_MACHINE_MICROTCH_H
+#define MAME_MACHINE_MICROTCH_H
+#pragma once
class microtouch_device :
@@ -11,20 +12,22 @@ class microtouch_device :
{
public:
microtouch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &static_set_stx_callback(device_t &device, _Object object) { return downcast<microtouch_device &>(device).m_out_stx_func.set_callback(object); }
+ template <class Object> static devcb_base &static_set_stx_callback(device_t &device, Object &&cb) { return downcast<microtouch_device &>(device).m_out_stx_func.set_callback(std::forward<Object>(cb)); }
virtual ioport_constructor device_input_ports() const override;
DECLARE_WRITE_LINE_MEMBER(rx) { device_serial_interface::rx_w(state); }
DECLARE_INPUT_CHANGED_MEMBER(touch);
typedef delegate<int (int *, int *)> touch_cb;
- static void static_set_touch_callback(device_t &device, touch_cb object) { downcast<microtouch_device &>(device).m_out_touch_cb = object; }
+ static void static_set_touch_callback(device_t &device, touch_cb &&object) { downcast<microtouch_device &>(device).m_out_touch_cb = std::move(object); }
+
protected:
virtual void device_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual void tra_callback() override;
virtual void tra_complete() override;
virtual void rcv_complete() override;
+
private:
int check_command( const char* commandtocheck, int command_len, uint8_t* command_data );
void send_format_table_packet(uint8_t flag, int x, int y);
@@ -37,12 +40,14 @@ private:
FORMAT_TABLET,
FORMAT_DECIMAL
};
+
enum
{
MODE_INACTIVE,
MODE_STREAM,
MODE_POINT
};
+
uint8_t m_rx_buffer[16];
int m_rx_buffer_ptr;
uint8_t m_tx_buffer[16];
@@ -64,7 +69,7 @@ private:
uint8_t m_output;
};
-extern const device_type MICROTOUCH;
+DECLARE_DEVICE_TYPE(MICROTOUCH, microtouch_device)
#define MCFG_MICROTOUCH_ADD(_tag, _clock, _devcb) \
MCFG_DEVICE_ADD(_tag, MICROTOUCH, _clock) \
@@ -73,5 +78,4 @@ extern const device_type MICROTOUCH;
#define MCFG_MICROTOUCH_TOUCH_CB(_class, _touch_cb) \
microtouch_device::static_set_touch_callback(*device, microtouch_device::touch_cb(&_class::_touch_cb, (_class *)owner));
-
-#endif //_MICROTOUCH_H
+#endif // MAME_MACHINE_MICROTCH_H
diff --git a/src/devices/machine/mm5740.cpp b/src/devices/machine/mm5740.cpp
index 2667f8b6a93..c0604af83bc 100644
--- a/src/devices/machine/mm5740.cpp
+++ b/src/devices/machine/mm5740.cpp
@@ -18,7 +18,7 @@
//**************************************************************************
// devices
-const device_type MM5740 = device_creator<mm5740_device>;
+DEFINE_DEVICE_TYPE(MM5740, mm5740_device, "mm5740", "MM5740 Keyboard Encoder")
//**************************************************************************
// DEVICE DEFINITIONS
@@ -44,7 +44,7 @@ const tiny_rom_entry *mm5740_device::device_rom_region() const
//-------------------------------------------------
mm5740_device::mm5740_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MM5740, "MM5740", tag, owner, clock, "mm5740", __FILE__),
+ device_t(mconfig, MM5740, tag, owner, clock),
m_read_x{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}},
m_read_shift(*this),
m_read_control(*this),
diff --git a/src/devices/machine/mm5740.h b/src/devices/machine/mm5740.h
index 2354f5c2e33..4602d9da2e6 100644
--- a/src/devices/machine/mm5740.h
+++ b/src/devices/machine/mm5740.h
@@ -5,27 +5,27 @@
MM5740 Keyboard Encoder emulation
**********************************************************************
- _____ _____
- B3 1 |* \_/ | 40 B4
- Vll 2 | | 39 B9
- Clock 3 | | 38 B2
- X9 4 | | 37 B1
- X8 5 | | 36 B8
- X7 6 | | 35 B7
- X6 7 | | 34 B6
- X5 8 | | 33 B5
- X4 9 | | 32 Vss
- X3 10 | MM5740 | 31 Y9
- X2 11 | | 30 Y8
- X1 12 | | 29 Y7
+ _____ _____
+ B3 1 |* \_/ | 40 B4
+ Vll 2 | | 39 B9
+ Clock 3 | | 38 B2
+ X9 4 | | 37 B1
+ X8 5 | | 36 B8
+ X7 6 | | 35 B7
+ X6 7 | | 34 B6
+ X5 8 | | 33 B5
+ X4 9 | | 32 Vss
+ X3 10 | MM5740 | 31 Y9
+ X2 11 | | 30 Y8
+ X1 12 | | 29 Y7
Data Strobe Output 13 | | 28 Y6
Data Strobe Control 14 | | 27 Y5
- Output Enable 15 | | 26 Y4
- Repeat 16 | | 25 Y3
+ Output Enable 15 | | 26 Y4
+ Repeat 16 | | 25 Y3
Key Bounce Mask 17 | | 24 Y2
- Vgg 18 | | 23 Y1
- Control 19 | | 22 Y0
- Shift Lock I/O 20 |_____________| 21 Shift
+ Vgg 18 | | 23 Y1
+ Control 19 | | 22 Y0
+ Shift Lock I/O 20 |_____________| 21 Shift
Name Pin No. Function
----------------------------------------------------------------------
@@ -73,25 +73,25 @@ Vgg 18 -12V
Support additional internal ROMs
*/
-#pragma once
+#ifndef MAME_MACHINE_MM5740_H
+#define MAME_MACHINE_MM5740_H
-#ifndef MAME_DEVICE_MACHINE_MM5740_H
-#define MAME_DEVICE_MACHINE_MM5740_H
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_MM5740_MATRIX_X1(_cb) devcb = &mm5740_device::set_x_cb(*device, DEVCB_##_cb, 0);
-#define MCFG_MM5740_MATRIX_X2(_cb) devcb = &mm5740_device::set_x_cb(*device, DEVCB_##_cb, 1);
-#define MCFG_MM5740_MATRIX_X3(_cb) devcb = &mm5740_device::set_x_cb(*device, DEVCB_##_cb, 2);
-#define MCFG_MM5740_MATRIX_X4(_cb) devcb = &mm5740_device::set_x_cb(*device, DEVCB_##_cb, 3);
-#define MCFG_MM5740_MATRIX_X5(_cb) devcb = &mm5740_device::set_x_cb(*device, DEVCB_##_cb, 4);
-#define MCFG_MM5740_MATRIX_X6(_cb) devcb = &mm5740_device::set_x_cb(*device, DEVCB_##_cb, 5);
-#define MCFG_MM5740_MATRIX_X7(_cb) devcb = &mm5740_device::set_x_cb(*device, DEVCB_##_cb, 6);
-#define MCFG_MM5740_MATRIX_X8(_cb) devcb = &mm5740_device::set_x_cb(*device, DEVCB_##_cb, 7);
-#define MCFG_MM5740_MATRIX_X9(_cb) devcb = &mm5740_device::set_x_cb(*device, DEVCB_##_cb, 8);
+#define MCFG_MM5740_MATRIX_X1(_cb) devcb = &mm5740_device::set_x_cb<0>(*device, DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X2(_cb) devcb = &mm5740_device::set_x_cb<1>(*device, DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X3(_cb) devcb = &mm5740_device::set_x_cb<2>(*device, DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X4(_cb) devcb = &mm5740_device::set_x_cb<3>(*device, DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X5(_cb) devcb = &mm5740_device::set_x_cb<4>(*device, DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X6(_cb) devcb = &mm5740_device::set_x_cb<5>(*device, DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X7(_cb) devcb = &mm5740_device::set_x_cb<6>(*device, DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X8(_cb) devcb = &mm5740_device::set_x_cb<7>(*device, DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X9(_cb) devcb = &mm5740_device::set_x_cb<8>(*device, DEVCB_##_cb);
#define MCFG_MM5740_SHIFT_CB(_cb) devcb = &mm5740_device::set_shift_cb(*device, DEVCB_##_cb);
#define MCFG_MM5740_CONTROL_CB(_cb) devcb = &mm5740_device::set_control_cb(*device, DEVCB_##_cb);
#define MCFG_MM5740_DATA_READY_CB(_cb) devcb = &mm5740_device::set_data_ready_cb(*device, DEVCB_##_cb);
@@ -102,7 +102,7 @@ Vgg 18 -12V
// ======================> mm5740_device
-class mm5740_device : public device_t
+class mm5740_device : public device_t
{
public:
// construction/destruction
@@ -111,21 +111,21 @@ public:
// public interface
uint16_t b_r();
- template<typename Object> static devcb_base &set_x_cb(device_t &device, Object &&object, uint8_t i)
+ template <unsigned N, typename Object> static devcb_base &set_x_cb(device_t &device, Object &&cb)
{
- assert(i<9); return downcast<mm5740_device &>(device).m_read_x[i].set_callback(std::forward<Object>(object));
+ return downcast<mm5740_device &>(device).m_read_x[N].set_callback(std::forward<Object>(cb));
}
- template<typename Object> static devcb_base &set_shift_cb(device_t &device, Object &&object)
+ template <typename Object> static devcb_base &set_shift_cb(device_t &device, Object &&cb)
{
- return downcast<mm5740_device &>(device).m_read_shift.set_callback(std::forward<Object>(object));
+ return downcast<mm5740_device &>(device).m_read_shift.set_callback(std::forward<Object>(cb));
}
- template<typename Object> static devcb_base &set_control_cb(device_t &device, Object &&object)
+ template <typename Object> static devcb_base &set_control_cb(device_t &device, Object &&cb)
{
- return downcast<mm5740_device &>(device).m_read_control.set_callback(std::forward<Object>(object));
+ return downcast<mm5740_device &>(device).m_read_control.set_callback(std::forward<Object>(cb));
}
- template<typename Object> static devcb_base &set_data_ready_cb(device_t &device, Object &&object)
+ template <typename Object> static devcb_base &set_data_ready_cb(device_t &device, Object &&cb)
{
- return downcast<mm5740_device &>(device).m_write_data_ready.set_callback(std::forward<Object>(object));
+ return downcast<mm5740_device &>(device).m_write_data_ready.set_callback(std::forward<Object>(cb));
}
static uint32_t calc_effective_clock_key_debounce(uint32_t capacitance);
@@ -154,9 +154,6 @@ private:
// device type definition
-extern const device_type MM5740;
-
-
-
-#endif
+DECLARE_DEVICE_TYPE(MM5740, mm5740_device)
+#endif // MAME_MACHINE_MM5740_H
diff --git a/src/devices/machine/mm58167.cpp b/src/devices/machine/mm58167.cpp
index 3ce550b255a..eedfdcd339f 100644
--- a/src/devices/machine/mm58167.cpp
+++ b/src/devices/machine/mm58167.cpp
@@ -17,7 +17,7 @@
//**************************************************************************
// device type definition
-const device_type MM58167 = device_creator<mm58167_device>;
+DEFINE_DEVICE_TYPE(MM58167, mm58167_device, "mm58167", "National Semiconductor MM58167 RTC")
// registers (0-7 are the live data, 8-f are the setting for the compare IRQ)
typedef enum
@@ -53,7 +53,7 @@ typedef enum
//-------------------------------------------------
mm58167_device::mm58167_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MM58167, "National Semiconductor MM58167", tag, owner, clock, "mm58167", __FILE__),
+ : device_t(mconfig, MM58167, tag, owner, clock),
device_rtc_interface(mconfig, *this),
m_irq_w(*this)
{
diff --git a/src/devices/machine/mm58167.h b/src/devices/machine/mm58167.h
index 4fd66b72b92..4d924b291f6 100644
--- a/src/devices/machine/mm58167.h
+++ b/src/devices/machine/mm58167.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MM58167_H
+#define MAME_MACHINE_MM58167_H
-#ifndef __MM58167_H__
-#define __MM58167_H__
+#pragma once
#include "dirtc.h"
@@ -38,7 +38,7 @@ public:
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
- template<class _Object> static devcb_base &set_irq_cb(device_t &device, _Object wr) { return downcast<mm58167_device &>(device).m_irq_w.set_callback(wr); }
+ template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&wr) { return downcast<mm58167_device &>(device).m_irq_w.set_callback(std::forward<Object>(wr)); }
devcb_write_line m_irq_w;
@@ -65,6 +65,6 @@ private:
};
// device type definition
-extern const device_type MM58167;
+DECLARE_DEVICE_TYPE(MM58167, mm58167_device)
-#endif
+#endif // MAME_MACHINE_MM58167_H
diff --git a/src/devices/machine/mm58274c.cpp b/src/devices/machine/mm58274c.cpp
index 491ace25a34..61904923326 100644
--- a/src/devices/machine/mm58274c.cpp
+++ b/src/devices/machine/mm58274c.cpp
@@ -44,13 +44,13 @@ enum
-const device_type MM58274C = device_creator<mm58274c_device>;
+DEFINE_DEVICE_TYPE(MM58274C, mm58274c_device, "mm58274c", "National Semiconductor MM58274C RTC")
mm58274c_device::mm58274c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MM58274C, "National Semiconductor MM58274C", tag, owner, clock, "mm58274c", __FILE__),
- m_mode24(0),
- m_day1(0)
+ : device_t(mconfig, MM58274C, tag, owner, clock)
+ , m_mode24(0)
+ , m_day1(0)
{
}
diff --git a/src/devices/machine/mm58274c.h b/src/devices/machine/mm58274c.h
index 9c8505da49c..716070df2f1 100644
--- a/src/devices/machine/mm58274c.h
+++ b/src/devices/machine/mm58274c.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Raphael Nabet
-#ifndef __MM58274C_H__
-#define __MM58274C_H__
+#ifndef MAME_MACHINE_MM58274C_H
+#define MAME_MACHINE_MM58274C_H
/***************************************************************************
MACROS
@@ -11,7 +11,6 @@ class mm58274c_device : public device_t
{
public:
mm58274c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~mm58274c_device() {}
static void set_mode24(device_t &device, int mode) { downcast<mm58274c_device &>(device).m_mode24 = mode; }
static void set_day1(device_t &device, int day) { downcast<mm58274c_device &>(device).m_day1 = day; }
@@ -64,7 +63,7 @@ private:
emu_timer *m_interrupt_timer;
};
-extern const device_type MM58274C;
+DECLARE_DEVICE_TYPE(MM58274C, mm58274c_device)
/***************************************************************************
@@ -77,5 +76,4 @@ extern const device_type MM58274C;
#define MCFG_MM58274C_DAY1(_day) \
mm58274c_device::set_day1(*device, _day);
-
-#endif
+#endif // MAME_MACHINE_MM58274C_H
diff --git a/src/devices/machine/mm74c922.cpp b/src/devices/machine/mm74c922.cpp
index fbbfd603773..a9f5def8fec 100644
--- a/src/devices/machine/mm74c922.cpp
+++ b/src/devices/machine/mm74c922.cpp
@@ -9,13 +9,8 @@
#include "emu.h"
#include "mm74c922.h"
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 1
+//#define VERBOSE 1
+#include "logmacro.h"
@@ -23,7 +18,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MM74C922 = device_creator<mm74c922_device>;
+DEFINE_DEVICE_TYPE(MM74C922, mm74c922_device, "mm74c922", "MM74C923 16/20-Key Encoder")
const device_type MM74C923 = MM74C922;
@@ -38,7 +33,7 @@ const device_type MM74C923 = MM74C922;
//-------------------------------------------------
mm74c922_device::mm74c922_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MM74C922, "MM74C922", tag, owner, clock, "mm74c922", __FILE__),
+ device_t(mconfig, MM74C922, tag, owner, clock),
m_write_da(*this),
m_read_x1(*this),
m_read_x2(*this),
@@ -104,7 +99,7 @@ void mm74c922_device::device_timer(emu_timer &timer, device_timer_id id, int par
uint8_t mm74c922_device::read()
{
- if (LOG) logerror("MM74C922 '%s' Data Read: %02x\n", tag(), m_data);
+ LOG("MM74C922 Data Read: %02x\n", m_data);
return m_data;
}
@@ -120,7 +115,7 @@ void mm74c922_device::change_output_lines()
{
m_da = m_next_da;
- if (LOG) logerror("MM74C922 '%s' Data Available: %u\n", tag(), m_da);
+ LOG("MM74C922 Data Available: %u\n", m_da);
m_write_da(m_da);
}
@@ -167,7 +162,7 @@ void mm74c922_device::detect_keypress()
m_next_da = 0;
m_data = 0xff; // high-Z
- if (LOG) logerror("MM74C922 '%s' Key Released\n", tag());
+ LOG("MM74C922 Key Released\n");
}
}
else
@@ -183,7 +178,7 @@ void mm74c922_device::detect_keypress()
m_data = (y << 2) | m_x;
- if (LOG) logerror("MM74C922 '%s' Key Depressed: X %u Y %u = %02x\n", tag(), m_x, y, m_data);
+ LOG("MM74C922 Key Depressed: X %u Y %u = %02x\n", m_x, y, m_data);
return;
}
}
diff --git a/src/devices/machine/mm74c922.h b/src/devices/machine/mm74c922.h
index 6d56642ca2c..819731e3710 100644
--- a/src/devices/machine/mm74c922.h
+++ b/src/devices/machine/mm74c922.h
@@ -30,10 +30,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MM74C922_H
+#define MAME_MACHINE_MM74C922_H
-#ifndef __MM74C922__
-#define __MM74C922__
+#pragma once
@@ -83,12 +83,12 @@ public:
static void static_set_cap_osc(device_t &device, double value) { downcast<mm74c922_device &>(device).m_cap_osc = value; }
static void static_set_cap_debounce(device_t &device, double value) { downcast<mm74c922_device &>(device).m_cap_debounce = value; }
- template<class _Object> static devcb_base &set_da_wr_callback(device_t &device, _Object object) { return downcast<mm74c922_device &>(device).m_write_da.set_callback(object); }
- template<class _Object> static devcb_base &set_x1_rd_callback(device_t &device, _Object object) { return downcast<mm74c922_device &>(device).m_read_x1.set_callback(object); }
- template<class _Object> static devcb_base &set_x2_rd_callback(device_t &device, _Object object) { return downcast<mm74c922_device &>(device).m_read_x2.set_callback(object); }
- template<class _Object> static devcb_base &set_x3_rd_callback(device_t &device, _Object object) { return downcast<mm74c922_device &>(device).m_read_x3.set_callback(object); }
- template<class _Object> static devcb_base &set_x4_rd_callback(device_t &device, _Object object) { return downcast<mm74c922_device &>(device).m_read_x4.set_callback(object); }
- template<class _Object> static devcb_base &set_x5_rd_callback(device_t &device, _Object object) { return downcast<mm74c922_device &>(device).m_read_x5.set_callback(object); }
+ template <class Object> static devcb_base &set_da_wr_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_write_da.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_x1_rd_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_read_x1.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_x2_rd_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_read_x2.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_x3_rd_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_read_x3.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_x4_rd_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_read_x4.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_x5_rd_callback(device_t &device, Object &&cb) { return downcast<mm74c922_device &>(device).m_read_x5.set_callback(std::forward<Object>(cb)); }
uint8_t read();
@@ -129,9 +129,7 @@ private:
// device type definition
-extern const device_type MM74C922;
+DECLARE_DEVICE_TYPE(MM74C922, mm74c922_device)
extern const device_type MM74C923;
-
-
-#endif
+#endif // MAME_MACHINE_MM74C922_H
diff --git a/src/devices/machine/mos6526.cpp b/src/devices/machine/mos6526.cpp
index 05aa3b588e8..fd6bb5665bd 100644
--- a/src/devices/machine/mos6526.cpp
+++ b/src/devices/machine/mos6526.cpp
@@ -112,10 +112,10 @@ enum
// DEVICE TYPE DEFINITIONS
//**************************************************************************
-const device_type MOS6526 = device_creator<mos6526_device>;
-const device_type MOS6526A = device_creator<mos6526a_device>;
-const device_type MOS8520 = device_creator<mos8520_device>;
-const device_type MOS5710 = device_creator<mos5710_device>;
+DEFINE_DEVICE_TYPE(MOS6526, mos6526_device, "mos6526", "MOS 6526 CIA")
+DEFINE_DEVICE_TYPE(MOS6526A, mos6526a_device, "mos6526a", "MOS 6526A CIA")
+DEFINE_DEVICE_TYPE(MOS8520, mos8520_device, "mos8520", "MOS 8520 CIA")
+DEFINE_DEVICE_TYPE(MOS5710, mos5710_device, "mos5710", "MOS 5710 CIA")
@@ -587,8 +587,8 @@ inline void mos6526_device::synchronize()
// mos6526_device - constructor
//-------------------------------------------------
-mos6526_device::mos6526_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+mos6526_device::mos6526_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock),
device_execute_interface(mconfig, *this),
m_icount(0),
m_variant(variant),
@@ -605,29 +605,17 @@ mos6526_device::mos6526_device(const machine_config &mconfig, device_type type,
}
mos6526_device::mos6526_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MOS6526, "MOS6526", tag, owner, clock, "mos6526", __FILE__),
- device_execute_interface(mconfig, *this),
- m_icount(0),
- m_variant(TYPE_6526),
- m_tod_clock(0),
- m_write_irq(*this),
- m_write_pc(*this),
- m_write_cnt(*this),
- m_write_sp(*this),
- m_read_pa(*this),
- m_write_pa(*this),
- m_read_pb(*this),
- m_write_pb(*this)
+ : mos6526_device(mconfig, MOS6526, tag, owner, clock, TYPE_6526)
{ }
mos6526a_device::mos6526a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mos6526_device(mconfig, MOS6526A, "MOS6526A", tag, owner, clock, TYPE_6526A, "mos6526a", __FILE__) { }
+ : mos6526_device(mconfig, MOS6526A, tag, owner, clock, TYPE_6526A) { }
mos8520_device::mos8520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mos6526_device(mconfig, MOS8520, "MOS8520", tag, owner, clock, TYPE_8520, "mos8520", __FILE__) { }
+ : mos6526_device(mconfig, MOS8520, tag, owner, clock, TYPE_8520) { }
mos5710_device::mos5710_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mos6526_device(mconfig, MOS5710, "MOS5710", tag, owner, clock, TYPE_5710, "mos5710", __FILE__) { }
+ : mos6526_device(mconfig, MOS5710, tag, owner, clock, TYPE_5710) { }
//-------------------------------------------------
diff --git a/src/devices/machine/mos6526.h b/src/devices/machine/mos6526.h
index f40911ac0ac..a16650d8891 100644
--- a/src/devices/machine/mos6526.h
+++ b/src/devices/machine/mos6526.h
@@ -55,10 +55,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MOS6526_H
+#define MAME_MACHINE_MOS6526_H
-#ifndef __MOS6526__
-#define __MOS6526__
+#pragma once
@@ -107,19 +107,18 @@ class mos6526_device : public device_t,
{
public:
// construction/destruction
- mos6526_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
mos6526_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_tod_clock(device_t &device, int clock) { downcast<mos6526_device &>(device).m_tod_clock = clock; }
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<mos6526_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_cnt_wr_callback(device_t &device, _Object object) { return downcast<mos6526_device &>(device).m_write_cnt.set_callback(object); }
- template<class _Object> static devcb_base &set_sp_wr_callback(device_t &device, _Object object) { return downcast<mos6526_device &>(device).m_write_sp.set_callback(object); }
- template<class _Object> static devcb_base &set_pa_rd_callback(device_t &device, _Object object) { return downcast<mos6526_device &>(device).m_read_pa.set_callback(object); }
- template<class _Object> static devcb_base &set_pa_wr_callback(device_t &device, _Object object) { return downcast<mos6526_device &>(device).m_write_pa.set_callback(object); }
- template<class _Object> static devcb_base &set_pb_rd_callback(device_t &device, _Object object) { return downcast<mos6526_device &>(device).m_read_pb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb_wr_callback(device_t &device, _Object object) { return downcast<mos6526_device &>(device).m_write_pb.set_callback(object); }
- template<class _Object> static devcb_base &set_pc_wr_callback(device_t &device, _Object object) { return downcast<mos6526_device &>(device).m_write_pc.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cnt_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_cnt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sp_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_sp.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pa_rd_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_read_pa.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pa_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_pa.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pb_rd_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_read_pb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pb_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_pb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pc_wr_callback(device_t &device, Object &&cb) { return downcast<mos6526_device &>(device).m_write_pc.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -146,6 +145,8 @@ protected:
TYPE_5710
};
+ mos6526_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -153,7 +154,7 @@ protected:
virtual void execute_run() override;
int m_icount;
- int m_variant;
+ const int m_variant;
int m_tod_clock;
inline void update_interrupt();
@@ -285,11 +286,9 @@ public:
// device type definition
-extern const device_type MOS6526;
-extern const device_type MOS6526A;
-extern const device_type MOS8520;
-extern const device_type MOS5710;
-
-
+DECLARE_DEVICE_TYPE(MOS6526, mos6526_device)
+DECLARE_DEVICE_TYPE(MOS6526A, mos6526a_device)
+DECLARE_DEVICE_TYPE(MOS8520, mos8520_device)
+DECLARE_DEVICE_TYPE(MOS5710, mos5710_device)
-#endif
+#endif // MAME_MACHINE_MOS6526_H
diff --git a/src/devices/machine/mos6529.cpp b/src/devices/machine/mos6529.cpp
index d3e3c5a7764..a1487f13921 100644
--- a/src/devices/machine/mos6529.cpp
+++ b/src/devices/machine/mos6529.cpp
@@ -9,13 +9,8 @@
#include "emu.h"
#include "mos6529.h"
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
@@ -24,7 +19,7 @@
//**************************************************************************
// device type definition
-const device_type MOS6529 = device_creator<mos6529_device>;
+DEFINE_DEVICE_TYPE(MOS6529, mos6529_device, "mos6529", "MOS 6529")
@@ -37,7 +32,7 @@ const device_type MOS6529 = device_creator<mos6529_device>;
//-------------------------------------------------
mos6529_device::mos6529_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MOS6529, "MOS6529", tag, owner, clock, "mos6529", __FILE__),
+ : device_t(mconfig, MOS6529, tag, owner, clock),
m_input(0),
m_p0_handler(*this),
m_p1_handler(*this),
@@ -85,12 +80,12 @@ READ8_MEMBER( mos6529_device::read )
WRITE8_MEMBER( mos6529_device::write )
{
- m_p0_handler((data>>0)&1);
- m_p1_handler((data>>1)&1);
- m_p2_handler((data>>2)&1);
- m_p3_handler((data>>3)&1);
- m_p4_handler((data>>4)&1);
- m_p5_handler((data>>5)&1);
- m_p6_handler((data>>6)&1);
- m_p7_handler((data>>7)&1);
+ m_p0_handler(BIT(data, 0));
+ m_p1_handler(BIT(data, 1));
+ m_p2_handler(BIT(data, 2));
+ m_p3_handler(BIT(data, 3));
+ m_p4_handler(BIT(data, 4));
+ m_p5_handler(BIT(data, 5));
+ m_p6_handler(BIT(data, 6));
+ m_p7_handler(BIT(data, 7));
}
diff --git a/src/devices/machine/mos6529.h b/src/devices/machine/mos6529.h
index c85ee075a15..bc7dc25df96 100644
--- a/src/devices/machine/mos6529.h
+++ b/src/devices/machine/mos6529.h
@@ -19,10 +19,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MOS6529_H
+#define MAME_MACHINE_MOS6529_H
-#ifndef __MOS6529__
-#define __MOS6529__
+#pragma once
@@ -68,14 +68,14 @@ public:
// construction/destruction
mos6529_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_p0_handler(device_t &device, _Object object) { return downcast<mos6529_device &>(device).m_p0_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_p1_handler(device_t &device, _Object object) { return downcast<mos6529_device &>(device).m_p1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_p2_handler(device_t &device, _Object object) { return downcast<mos6529_device &>(device).m_p2_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_p3_handler(device_t &device, _Object object) { return downcast<mos6529_device &>(device).m_p3_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_p4_handler(device_t &device, _Object object) { return downcast<mos6529_device &>(device).m_p4_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_p5_handler(device_t &device, _Object object) { return downcast<mos6529_device &>(device).m_p5_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_p6_handler(device_t &device, _Object object) { return downcast<mos6529_device &>(device).m_p6_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_p7_handler(device_t &device, _Object object) { return downcast<mos6529_device &>(device).m_p7_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_p0_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_p1_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_p2_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_p3_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p3_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_p4_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p4_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_p5_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p5_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_p6_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p6_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_p7_handler(device_t &device, Object &&cb) { return downcast<mos6529_device &>(device).m_p7_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -109,4 +109,4 @@ protected:
// device type definition
extern const device_type MOS6529;
-#endif
+#endif // MAME_MACHINE_MOS6529_H
diff --git a/src/devices/machine/mos6530.cpp b/src/devices/machine/mos6530.cpp
index ce3b0d67b71..fab2f925d70 100644
--- a/src/devices/machine/mos6530.cpp
+++ b/src/devices/machine/mos6530.cpp
@@ -38,10 +38,10 @@ enum
DEVICE INTERFACE
***************************************************************************/
-const device_type MOS6530 = device_creator<mos6530_device>;
+DEFINE_DEVICE_TYPE(MOS6530, mos6530_device, "mos6530", "MOS 6530 RRIOT")
mos6530_device::mos6530_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MOS6530, "MOS6530 RRIOT", tag, owner, clock, "mos6530", __FILE__),
+ : device_t(mconfig, MOS6530, tag, owner, clock),
m_in_pa_cb(*this),
m_out_pa_cb(*this),
m_in_pb_cb(*this),
diff --git a/src/devices/machine/mos6530.h b/src/devices/machine/mos6530.h
index db0bc5a0b4c..a76a756c64a 100644
--- a/src/devices/machine/mos6530.h
+++ b/src/devices/machine/mos6530.h
@@ -29,21 +29,16 @@
**********************************************************************/
-#ifndef __MIOT6530_H__
-#define __MIOT6530_H__
+#ifndef MAME_MACHINE_MOS6530_H
+#define MAME_MACHINE_MOS6530_H
+
+#pragma once
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-struct mos6530_port
-{
- uint8_t m_in;
- uint8_t m_out;
- uint8_t m_ddr;
-};
-
/***************************************************************************
MACROS / CONSTANTS
***************************************************************************/
@@ -52,12 +47,11 @@ class mos6530_device : public device_t
{
public:
mos6530_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~mos6530_device() {}
- template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<mos6530_device &>(device).m_in_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<mos6530_device &>(device).m_out_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<mos6530_device &>(device).m_in_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<mos6530_device &>(device).m_out_pb_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<mos6530_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<mos6530_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<mos6530_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<mos6530_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -75,6 +69,18 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ enum
+ {
+ TIMER_END_CALLBACK
+ };
+
+ struct mos6530_port
+ {
+ uint8_t m_in;
+ uint8_t m_out;
+ uint8_t m_ddr;
+ };
+
// internal state
devcb_read8 m_in_pa_cb;
devcb_write8 m_out_pa_cb;
@@ -98,14 +104,9 @@ private:
void porta_in_set(uint8_t data, uint8_t mask);
void portb_in_set(uint8_t data, uint8_t mask);
-
- enum
- {
- TIMER_END_CALLBACK
- };
};
-extern const device_type MOS6530;
+DECLARE_DEVICE_TYPE(MOS6530, mos6530_device)
#define MCFG_MOS6530_IN_PA_CB(_devcb) \
@@ -120,5 +121,4 @@ extern const device_type MOS6530;
#define MCFG_MOS6530_OUT_PB_CB(_devcb) \
devcb = &mos6530_device::set_out_pb_callback(*device, DEVCB_##_devcb);
-
-#endif
+#endif // MAME_MACHINE_MOS6530_H
diff --git a/src/devices/machine/mos6530n.cpp b/src/devices/machine/mos6530n.cpp
index b2c78917098..ed4cd47a1d5 100644
--- a/src/devices/machine/mos6530n.cpp
+++ b/src/devices/machine/mos6530n.cpp
@@ -10,14 +10,13 @@
#include "emu.h"
#include "mos6530n.h"
+#define LOG_GENERAL (1U << 0)
+#define LOG_TIMER (1U << 1)
+//#define VERBOSE (LOG_GENERAL | LOG_TIMER)
+#include "logmacro.h"
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
-#define LOG_TIMER 0
+#define LOGTIMER(...) LOGMASKED(LOG_TIMER, __VA_ARGS__)
@@ -25,21 +24,21 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MOS6530n = device_creator<mos6530_t>;
-const device_type MOS6532n = device_creator<mos6532_t>;
+DEFINE_DEVICE_TYPE(MOS6530_NEW, mos6530_new_device, "mos6530_new", "MOS 6530 (new)")
+DEFINE_DEVICE_TYPE(MOS6532_NEW, mos6532_new_device, "mos6532_new", "MOS 6532 (new)")
-DEVICE_ADDRESS_MAP_START( rom_map, 8, mos6530_t )
+DEVICE_ADDRESS_MAP_START( rom_map, 8, mos6530_new_device )
ADDRESS_MAP_GLOBAL_MASK(0x3ff)
AM_RANGE(0x000, 0x3ff) AM_READ(rom_r)
ADDRESS_MAP_END
-DEVICE_ADDRESS_MAP_START( ram_map, 8, mos6530_t )
+DEVICE_ADDRESS_MAP_START( ram_map, 8, mos6530_new_device )
ADDRESS_MAP_GLOBAL_MASK(0x3f)
AM_RANGE(0x00, 0x3f) AM_READWRITE(ram_r, ram_w)
ADDRESS_MAP_END
-DEVICE_ADDRESS_MAP_START( io_map, 8, mos6530_t )
+DEVICE_ADDRESS_MAP_START( io_map, 8, mos6530_new_device )
ADDRESS_MAP_GLOBAL_MASK(0xf)
AM_RANGE(0x00, 0x00) AM_MIRROR(0x8) AM_READWRITE(pa_data_r, pa_data_w)
AM_RANGE(0x01, 0x01) AM_MIRROR(0x8) AM_READWRITE(pa_ddr_r, pa_ddr_w)
@@ -52,12 +51,12 @@ DEVICE_ADDRESS_MAP_START( io_map, 8, mos6530_t )
AM_RANGE(0x05, 0x05) AM_MIRROR(0xa) AM_READ(irq_r)
ADDRESS_MAP_END
-DEVICE_ADDRESS_MAP_START( ram_map, 8, mos6532_t )
+DEVICE_ADDRESS_MAP_START( ram_map, 8, mos6532_new_device )
ADDRESS_MAP_GLOBAL_MASK(0x7f)
AM_RANGE(0x00, 0x7f) AM_READWRITE(ram_r, ram_w)
ADDRESS_MAP_END
-DEVICE_ADDRESS_MAP_START( io_map, 8, mos6532_t )
+DEVICE_ADDRESS_MAP_START( io_map, 8, mos6532_new_device )
ADDRESS_MAP_GLOBAL_MASK(0x1f)
AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_READWRITE(pa_data_r, pa_data_w) // SWCHA
AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_READWRITE(pa_ddr_r, pa_ddr_w) // SWACNT
@@ -71,7 +70,7 @@ DEVICE_ADDRESS_MAP_START( io_map, 8, mos6532_t )
AM_RANGE(0x04, 0x07) AM_MIRROR(0x8) AM_WRITE(edge_w)
ADDRESS_MAP_END
-READ8_MEMBER(mos6532_t::io_r)
+READ8_MEMBER(mos6532_new_device::io_r)
{
offset &= 0x1f;
uint8_t ret = 0;
@@ -90,7 +89,7 @@ READ8_MEMBER(mos6532_t::io_r)
return ret;
}
-WRITE8_MEMBER(mos6532_t::io_w)
+WRITE8_MEMBER(mos6532_new_device::io_w)
{
offset &= 0x1f;
@@ -111,50 +110,22 @@ WRITE8_MEMBER(mos6532_t::io_w)
//**************************************************************************
//-------------------------------------------------
-// mos6530_base_t - constructor
+// mos6530_device_base - constructor
//-------------------------------------------------
-mos6530_base_t::mos6530_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+mos6530_device_base::mos6530_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
m_ram(*this, finder_base::DUMMY_TAG),
m_rom(*this, DEVICE_SELF),
m_irq_cb(*this),
- m_in_pa_cb(*this),
- m_out_pa_cb(*this),
- m_in_pb_cb(*this),
- m_out_pb_cb(*this),
- m_in_pa0_cb(*this),
- m_in_pa1_cb(*this),
- m_in_pa2_cb(*this),
- m_in_pa3_cb(*this),
- m_in_pa4_cb(*this),
- m_in_pa5_cb(*this),
- m_in_pa6_cb(*this),
- m_in_pa7_cb(*this),
- m_out_pa0_cb(*this),
- m_out_pa1_cb(*this),
- m_out_pa2_cb(*this),
- m_out_pa3_cb(*this),
- m_out_pa4_cb(*this),
- m_out_pa5_cb(*this),
- m_out_pa6_cb(*this),
- m_out_pa7_cb(*this),
- m_in_pb0_cb(*this),
- m_in_pb1_cb(*this),
- m_in_pb2_cb(*this),
- m_in_pb3_cb(*this),
- m_in_pb4_cb(*this),
- m_in_pb5_cb(*this),
- m_in_pb6_cb(*this),
- m_in_pb7_cb(*this),
- m_out_pb0_cb(*this),
- m_out_pb1_cb(*this),
- m_out_pb2_cb(*this),
- m_out_pb3_cb(*this),
- m_out_pb4_cb(*this),
- m_out_pb5_cb(*this),
- m_out_pb6_cb(*this),
- m_out_pb7_cb(*this),
+ m_in8_pa_cb(*this),
+ m_out8_pa_cb(*this),
+ m_in8_pb_cb(*this),
+ m_out8_pb_cb(*this),
+ m_in_pa_cb{ { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this } },
+ m_out_pa_cb{ { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this } },
+ m_in_pb_cb{ { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this } },
+ m_out_pb_cb{ { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this } },
m_pa_in(0xff),
m_pa_out(0),
m_pa_ddr(0),
@@ -175,65 +146,41 @@ mos6530_base_t::mos6530_base_t(const machine_config &mconfig, device_type type,
//-------------------------------------------------
-// mos6530_t - constructor
+// mos6530_new_device - constructor
//-------------------------------------------------
-mos6530_t::mos6530_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mos6530_base_t(mconfig, MOS6530n, "MOS6530n", tag, owner, clock, "mos6530n", __FILE__) { }
+mos6530_new_device::mos6530_new_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : mos6530_device_base(mconfig, MOS6530_NEW, tag, owner, clock) { }
//-------------------------------------------------
-// mos6532_t - constructor
+// mos6532_new_device - constructor
//-------------------------------------------------
-mos6532_t::mos6532_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mos6530_base_t(mconfig, MOS6532n, "MOS6532n", tag, owner, clock, "mos6532n", __FILE__) { }
+mos6532_new_device::mos6532_new_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : mos6530_device_base(mconfig, MOS6532_NEW, tag, owner, clock) { }
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void mos6530_base_t::device_start()
+void mos6530_device_base::device_start()
{
// resolve callbacks
m_irq_cb.resolve_safe();
- m_in_pa_cb.resolve();
- m_out_pa_cb.resolve();
- m_in_pb_cb.resolve();
- m_out_pb_cb.resolve();
- m_in_pa0_cb.resolve();
- m_in_pa1_cb.resolve();
- m_in_pa2_cb.resolve();
- m_in_pa3_cb.resolve();
- m_in_pa4_cb.resolve();
- m_in_pa5_cb.resolve();
- m_in_pa6_cb.resolve();
- m_in_pa7_cb.resolve();
- m_out_pa0_cb.resolve_safe();
- m_out_pa1_cb.resolve_safe();
- m_out_pa2_cb.resolve_safe();
- m_out_pa3_cb.resolve_safe();
- m_out_pa4_cb.resolve_safe();
- m_out_pa5_cb.resolve_safe();
- m_out_pa6_cb.resolve_safe();
- m_out_pa7_cb.resolve_safe();
- m_in_pb0_cb.resolve();
- m_in_pb1_cb.resolve();
- m_in_pb2_cb.resolve();
- m_in_pb3_cb.resolve();
- m_in_pb4_cb.resolve();
- m_in_pb5_cb.resolve();
- m_in_pb6_cb.resolve();
- m_in_pb7_cb.resolve();
- m_out_pb0_cb.resolve_safe();
- m_out_pb1_cb.resolve_safe();
- m_out_pb2_cb.resolve_safe();
- m_out_pb3_cb.resolve_safe();
- m_out_pb4_cb.resolve_safe();
- m_out_pb5_cb.resolve_safe();
- m_out_pb6_cb.resolve_safe();
- m_out_pb7_cb.resolve_safe();
+ m_in8_pa_cb.resolve();
+ m_out8_pa_cb.resolve();
+ m_in8_pb_cb.resolve();
+ m_out8_pb_cb.resolve();
+ for (auto &cb : m_in_pa_cb)
+ cb.resolve();
+ for (auto &cb : m_out_pa_cb)
+ cb.resolve();
+ for (auto &cb : m_in_pa_cb)
+ cb.resolve();
+ for (auto &cb : m_out_pa_cb)
+ cb.resolve();
// allocate timer
t_gen = timer_alloc(0);
@@ -255,17 +202,17 @@ void mos6530_base_t::device_start()
save_item(NAME(m_timer));
}
-void mos6530_t::device_start()
+void mos6530_new_device::device_start()
{
- mos6530_base_t::device_start();
+ mos6530_device_base::device_start();
// allocate RAM
m_ram.allocate(0x40);
}
-void mos6532_t::device_start()
+void mos6532_new_device::device_start()
{
- mos6530_base_t::device_start();
+ mos6530_device_base::device_start();
// allocate RAM
m_ram.allocate(0x80);
@@ -276,7 +223,7 @@ void mos6532_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void mos6530_base_t::device_reset()
+void mos6530_device_base::device_reset()
{
m_pa_out = 0xff;
m_pa_ddr = 0;
@@ -310,7 +257,7 @@ void mos6530_base_t::device_reset()
// device_timer - handler timer events
//-------------------------------------------------
-void mos6530_base_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void mos6530_device_base::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
live_sync();
live_run();
@@ -321,26 +268,26 @@ void mos6530_base_t::device_timer(emu_timer &timer, device_timer_id id, int para
// update_pa -
//-------------------------------------------------
-void mos6530_base_t::update_pa()
+void mos6530_device_base::update_pa()
{
uint8_t out = m_pa_out;
uint8_t ddr = m_pa_ddr;
uint8_t data = (out & ddr) | (ddr ^ 0xff);
- if (m_out_pa_cb.isnull())
+ if (m_out8_pa_cb.isnull())
{
- m_out_pa0_cb(BIT(data, 0));
- m_out_pa1_cb(BIT(data, 1));
- m_out_pa2_cb(BIT(data, 2));
- m_out_pa3_cb(BIT(data, 3));
- m_out_pa4_cb(BIT(data, 4));
- m_out_pa5_cb(BIT(data, 5));
- m_out_pa6_cb(BIT(data, 6));
- m_out_pa7_cb(BIT(data, 7));
+ m_out_pa_cb[0](BIT(data, 0));
+ m_out_pa_cb[1](BIT(data, 1));
+ m_out_pa_cb[2](BIT(data, 2));
+ m_out_pa_cb[3](BIT(data, 3));
+ m_out_pa_cb[4](BIT(data, 4));
+ m_out_pa_cb[5](BIT(data, 5));
+ m_out_pa_cb[6](BIT(data, 6));
+ m_out_pa_cb[7](BIT(data, 7));
}
else
{
- m_out_pa_cb(data);
+ m_out8_pa_cb(data);
}
}
@@ -349,30 +296,30 @@ void mos6530_base_t::update_pa()
// update_pb -
//-------------------------------------------------
-void mos6530_base_t::update_pb()
+void mos6530_device_base::update_pb()
{
uint8_t out = m_pb_out;
uint8_t ddr = m_pb_ddr;
uint8_t data = (out & ddr) | (ddr ^ 0xff);
- if (m_out_pb_cb.isnull())
+ if (m_out8_pb_cb.isnull())
{
- m_out_pb0_cb(BIT(data, 0));
- m_out_pb1_cb(BIT(data, 1));
- m_out_pb2_cb(BIT(data, 2));
- m_out_pb3_cb(BIT(data, 3));
- m_out_pb4_cb(BIT(data, 4));
- m_out_pb5_cb(BIT(data, 5));
- m_out_pb6_cb(BIT(data, 6));
- m_out_pb7_cb(BIT(data, 7));
+ m_out_pb_cb[0](BIT(data, 0));
+ m_out_pb_cb[1](BIT(data, 1));
+ m_out_pb_cb[2](BIT(data, 2));
+ m_out_pb_cb[3](BIT(data, 3));
+ m_out_pb_cb[4](BIT(data, 4));
+ m_out_pb_cb[5](BIT(data, 5));
+ m_out_pb_cb[6](BIT(data, 6));
+ m_out_pb_cb[7](BIT(data, 7));
}
else
{
- m_out_pb_cb(data);
+ m_out8_pb_cb(data);
}
}
-void mos6530_t::update_pb()
+void mos6530_new_device::update_pb()
{
uint8_t out = m_pb_out;
uint8_t ddr = m_pb_ddr;
@@ -387,20 +334,20 @@ void mos6530_t::update_pb()
}
}
- if (m_out_pb_cb.isnull())
+ if (m_out8_pb_cb.isnull())
{
- m_out_pb0_cb(BIT(data, 0));
- m_out_pb1_cb(BIT(data, 1));
- m_out_pb2_cb(BIT(data, 2));
- m_out_pb3_cb(BIT(data, 3));
- m_out_pb4_cb(BIT(data, 4));
- m_out_pb5_cb(BIT(data, 5));
- m_out_pb6_cb(BIT(data, 6));
- m_out_pb7_cb(BIT(data, 7));
+ m_out_pb_cb[0](BIT(data, 0));
+ m_out_pb_cb[1](BIT(data, 1));
+ m_out_pb_cb[2](BIT(data, 2));
+ m_out_pb_cb[3](BIT(data, 3));
+ m_out_pb_cb[4](BIT(data, 4));
+ m_out_pb_cb[5](BIT(data, 5));
+ m_out_pb_cb[6](BIT(data, 6));
+ m_out_pb_cb[7](BIT(data, 7));
}
else
{
- m_out_pb_cb(data);
+ m_out8_pb_cb(data);
}
}
@@ -409,7 +356,7 @@ void mos6530_t::update_pb()
// update_irq -
//-------------------------------------------------
-void mos6530_base_t::update_irq()
+void mos6530_device_base::update_irq()
{
int state = CLEAR_LINE;
@@ -419,7 +366,7 @@ void mos6530_base_t::update_irq()
m_irq_cb(state);
}
-void mos6530_t::update_irq()
+void mos6530_new_device::update_irq()
{
update_pb();
}
@@ -429,7 +376,7 @@ void mos6530_t::update_irq()
// get_irq_flags -
//-------------------------------------------------
-uint8_t mos6530_base_t::get_irq_flags()
+uint8_t mos6530_device_base::get_irq_flags()
{
uint8_t data = 0;
@@ -439,7 +386,7 @@ uint8_t mos6530_base_t::get_irq_flags()
return data;
}
-uint8_t mos6530_t::get_irq_flags()
+uint8_t mos6530_new_device::get_irq_flags()
{
uint8_t data = 0;
@@ -453,7 +400,7 @@ uint8_t mos6530_t::get_irq_flags()
// edge_detect -
//-------------------------------------------------
-void mos6530_base_t::edge_detect()
+void mos6530_device_base::edge_detect()
{
uint8_t ddr_out = m_pa_ddr;
uint8_t ddr_in = m_pa_ddr ^ 0xff;
@@ -462,7 +409,7 @@ void mos6530_base_t::edge_detect()
if ((m_pa7 ^ state) && (m_pa7_dir ^ state) == 0)
{
- if (LOG) logerror("%s %s '%s' edge-detect IRQ\n", machine().time().as_string(), name(), tag());
+ LOG("%s %s edge-detect IRQ\n", machine().time().as_string(), name());
m_irq_edge = true;
update_irq();
@@ -476,9 +423,9 @@ void mos6530_base_t::edge_detect()
// pa_w -
//-------------------------------------------------
-void mos6530_base_t::pa_w(int bit, int state)
+void mos6530_device_base::pa_w(int bit, int state)
{
- if (LOG) logerror("%s %s %s '%s' Port A Data Bit %u State %u\n", machine().time().as_string(), machine().describe_context(), name(), tag(), bit, state);
+ LOG("%s %s %s Port A Data Bit %u State %u\n", machine().time().as_string(), machine().describe_context(), name(), bit, state);
m_pa_in &= ~(1 << bit);
m_pa_in |= (state << bit);
@@ -491,9 +438,9 @@ void mos6530_base_t::pa_w(int bit, int state)
// pb_w -
//-------------------------------------------------
-void mos6530_base_t::pb_w(int bit, int state)
+void mos6530_device_base::pb_w(int bit, int state)
{
- if (LOG) logerror("%s %s %s '%s' Port B Data Bit %u State %u\n", machine().time().as_string(), machine().describe_context(), name(), tag(), bit, state);
+ LOG("%s %s %s Port B Data Bit %u State %u\n", machine().time().as_string(), machine().describe_context(), name(), bit, state);
m_pb_in &= ~(1 << bit);
m_pb_in |= (state << bit);
@@ -504,24 +451,24 @@ void mos6530_base_t::pb_w(int bit, int state)
// pa_data_r -
//-------------------------------------------------
-READ8_MEMBER( mos6530_base_t::pa_data_r )
+READ8_MEMBER( mos6530_device_base::pa_data_r )
{
uint8_t in = 0;
- if (m_in_pa_cb.isnull())
+ if (m_in8_pa_cb.isnull())
{
- in |= (m_in_pa0_cb.isnull() ? BIT(m_pa_in, 0) : m_in_pa0_cb());
- in |= (m_in_pa1_cb.isnull() ? BIT(m_pa_in, 1) : m_in_pa1_cb()) << 1;
- in |= (m_in_pa2_cb.isnull() ? BIT(m_pa_in, 2) : m_in_pa2_cb()) << 2;
- in |= (m_in_pa3_cb.isnull() ? BIT(m_pa_in, 3) : m_in_pa3_cb()) << 3;
- in |= (m_in_pa4_cb.isnull() ? BIT(m_pa_in, 4) : m_in_pa4_cb()) << 4;
- in |= (m_in_pa5_cb.isnull() ? BIT(m_pa_in, 5) : m_in_pa5_cb()) << 5;
- in |= (m_in_pa6_cb.isnull() ? BIT(m_pa_in, 6) : m_in_pa6_cb()) << 6;
- in |= (m_in_pa7_cb.isnull() ? BIT(m_pa_in, 7) : m_in_pa7_cb()) << 7;
+ in |= (m_in_pa_cb[0].isnull() ? BIT(m_pa_in, 0) : m_in_pa_cb[0]());
+ in |= (m_in_pa_cb[1].isnull() ? BIT(m_pa_in, 1) : m_in_pa_cb[1]()) << 1;
+ in |= (m_in_pa_cb[2].isnull() ? BIT(m_pa_in, 2) : m_in_pa_cb[2]()) << 2;
+ in |= (m_in_pa_cb[3].isnull() ? BIT(m_pa_in, 3) : m_in_pa_cb[3]()) << 3;
+ in |= (m_in_pa_cb[4].isnull() ? BIT(m_pa_in, 4) : m_in_pa_cb[4]()) << 4;
+ in |= (m_in_pa_cb[5].isnull() ? BIT(m_pa_in, 5) : m_in_pa_cb[5]()) << 5;
+ in |= (m_in_pa_cb[6].isnull() ? BIT(m_pa_in, 6) : m_in_pa_cb[6]()) << 6;
+ in |= (m_in_pa_cb[7].isnull() ? BIT(m_pa_in, 7) : m_in_pa_cb[7]()) << 7;
}
else
{
- in = m_in_pa_cb();
+ in = m_in8_pa_cb();
}
uint8_t out = m_pa_out;
@@ -529,7 +476,7 @@ READ8_MEMBER( mos6530_base_t::pa_data_r )
uint8_t ddr_in = m_pa_ddr ^ 0xff;
uint8_t data = (out & ddr_out) | (in & ddr_in);
- if (LOG) logerror("%s %s %s '%s' Port A Data In %02x\n", machine().time().as_string(), machine().describe_context(), name(), tag(), data);
+ LOG("%s %s %s Port A Data In %02x\n", machine().time().as_string(), machine().describe_context(), name(), data);
return data;
}
@@ -539,11 +486,11 @@ READ8_MEMBER( mos6530_base_t::pa_data_r )
// pa_data_w -
//-------------------------------------------------
-WRITE8_MEMBER( mos6530_base_t::pa_data_w )
+WRITE8_MEMBER( mos6530_device_base::pa_data_w )
{
m_pa_out = data;
- if (LOG) logerror("%s %s %s '%s' Port A Data Out %02x\n", machine().time().as_string(), machine().describe_context(), name(), tag(), data);
+ LOG("%s %s %s Port A Data Out %02x\n", machine().time().as_string(), machine().describe_context(), name(), data);
update_pa();
edge_detect();
@@ -554,11 +501,11 @@ WRITE8_MEMBER( mos6530_base_t::pa_data_w )
// pa_ddr_w -
//-------------------------------------------------
-WRITE8_MEMBER( mos6530_base_t::pa_ddr_w )
+WRITE8_MEMBER( mos6530_device_base::pa_ddr_w )
{
m_pa_ddr = data;
- if (LOG) logerror("%s %s %s '%s' Port A DDR %02x\n", machine().time().as_string(), machine().describe_context(), name(), tag(), data);
+ LOG("%s %s %s Port A DDR %02x\n", machine().time().as_string(), machine().describe_context(), name(), data);
update_pa();
edge_detect();
@@ -569,24 +516,24 @@ WRITE8_MEMBER( mos6530_base_t::pa_ddr_w )
// pb_data_r -
//-------------------------------------------------
-READ8_MEMBER( mos6530_base_t::pb_data_r )
+READ8_MEMBER( mos6530_device_base::pb_data_r )
{
uint8_t in = 0;
- if (m_in_pb_cb.isnull())
+ if (m_in8_pa_cb.isnull())
{
- in |= (m_in_pb0_cb.isnull() ? BIT(m_pb_in, 0) : m_in_pb0_cb());
- in |= (m_in_pb1_cb.isnull() ? BIT(m_pb_in, 1) : m_in_pb1_cb()) << 1;
- in |= (m_in_pb2_cb.isnull() ? BIT(m_pb_in, 2) : m_in_pb2_cb()) << 2;
- in |= (m_in_pb3_cb.isnull() ? BIT(m_pb_in, 3) : m_in_pb3_cb()) << 3;
- in |= (m_in_pb4_cb.isnull() ? BIT(m_pb_in, 4) : m_in_pb4_cb()) << 4;
- in |= (m_in_pb5_cb.isnull() ? BIT(m_pb_in, 5) : m_in_pb5_cb()) << 5;
- in |= (m_in_pb6_cb.isnull() ? BIT(m_pb_in, 6) : m_in_pb6_cb()) << 6;
- in |= (m_in_pb7_cb.isnull() ? BIT(m_pb_in, 7) : m_in_pb7_cb()) << 7;
+ in |= (m_in_pa_cb[0].isnull() ? BIT(m_pa_in, 0) : m_in_pa_cb[0]());
+ in |= (m_in_pa_cb[1].isnull() ? BIT(m_pa_in, 1) : m_in_pa_cb[1]()) << 1;
+ in |= (m_in_pa_cb[2].isnull() ? BIT(m_pa_in, 2) : m_in_pa_cb[2]()) << 2;
+ in |= (m_in_pa_cb[3].isnull() ? BIT(m_pa_in, 3) : m_in_pa_cb[3]()) << 3;
+ in |= (m_in_pa_cb[4].isnull() ? BIT(m_pa_in, 4) : m_in_pa_cb[4]()) << 4;
+ in |= (m_in_pa_cb[5].isnull() ? BIT(m_pa_in, 5) : m_in_pa_cb[5]()) << 5;
+ in |= (m_in_pa_cb[6].isnull() ? BIT(m_pa_in, 6) : m_in_pa_cb[6]()) << 6;
+ in |= (m_in_pa_cb[7].isnull() ? BIT(m_pa_in, 7) : m_in_pa_cb[7]()) << 7;
}
else
{
- in = m_in_pb_cb();
+ in = m_in8_pa_cb();
}
uint8_t out = m_pb_out;
@@ -594,7 +541,7 @@ READ8_MEMBER( mos6530_base_t::pb_data_r )
uint8_t ddr_in = m_pb_ddr ^ 0xff;
uint8_t data = (out & ddr_out) | (in & ddr_in);
- if (LOG) logerror("%s %s %s '%s' Port B Data In %02x\n", machine().time().as_string(), machine().describe_context(), name(), tag(), data);
+ LOG("%s %s %s Port B Data In %02x\n", machine().time().as_string(), machine().describe_context(), name(), data);
return data;
}
@@ -604,11 +551,11 @@ READ8_MEMBER( mos6530_base_t::pb_data_r )
// pb_data_w -
//-------------------------------------------------
-WRITE8_MEMBER( mos6530_base_t::pb_data_w )
+WRITE8_MEMBER( mos6530_device_base::pb_data_w )
{
m_pb_out = data;
- if (LOG) logerror("%s %s %s '%s' Port B Data Out %02x\n", machine().time().as_string(), machine().describe_context(), name(), tag(), data);
+ LOG("%s %s %s Port B Data Out %02x\n", machine().time().as_string(), machine().describe_context(), name(), data);
update_pb();
}
@@ -618,11 +565,11 @@ WRITE8_MEMBER( mos6530_base_t::pb_data_w )
// pb_ddr_w -
//-------------------------------------------------
-WRITE8_MEMBER( mos6530_base_t::pb_ddr_w )
+WRITE8_MEMBER( mos6530_device_base::pb_ddr_w )
{
m_pb_ddr = data;
- if (LOG) logerror("%s %s %s '%s' Port B DDR %02x\n", machine().time().as_string(), machine().describe_context(), name(), tag(), data);
+ LOG("%s %s %s Port B DDR %02x\n", machine().time().as_string(), machine().describe_context(), name(), data);
update_pb();
}
@@ -632,7 +579,7 @@ WRITE8_MEMBER( mos6530_base_t::pb_ddr_w )
// timer_r -
//-------------------------------------------------
-READ8_MEMBER( mos6530_base_t::timer_off_r )
+READ8_MEMBER( mos6530_device_base::timer_off_r )
{
if (machine().side_effect_disabled())
return 0;
@@ -640,7 +587,7 @@ READ8_MEMBER( mos6530_base_t::timer_off_r )
return timer_r(false);
}
-READ8_MEMBER( mos6530_base_t::timer_on_r )
+READ8_MEMBER( mos6530_device_base::timer_on_r )
{
if (machine().side_effect_disabled())
return 0;
@@ -648,7 +595,7 @@ READ8_MEMBER( mos6530_base_t::timer_on_r )
return timer_r(true);
}
-uint8_t mos6530_base_t::timer_r(bool ie)
+uint8_t mos6530_device_base::timer_r(bool ie)
{
uint8_t data;
@@ -662,7 +609,7 @@ uint8_t mos6530_base_t::timer_r(bool ie)
data = cur_live.value;
- if (LOG_TIMER) logerror("%s %s %s '%s' Timer read %02x IE %u\n", machine().time().as_string(), machine().describe_context(), name(), tag(), data, m_ie_timer ? 1 : 0);
+ LOGTIMER("%s %s %s Timer read %02x IE %u\n", machine().time().as_string(), machine().describe_context(), name(), data, m_ie_timer ? 1 : 0);
checkpoint();
live_run();
@@ -675,7 +622,7 @@ uint8_t mos6530_base_t::timer_r(bool ie)
// irq_r -
//-------------------------------------------------
-READ8_MEMBER( mos6530_base_t::irq_r )
+READ8_MEMBER( mos6530_device_base::irq_r )
{
uint8_t data = get_irq_flags();
@@ -694,17 +641,17 @@ READ8_MEMBER( mos6530_base_t::irq_r )
// timer_w -
//-------------------------------------------------
-WRITE8_MEMBER( mos6530_base_t::timer_off_w )
+WRITE8_MEMBER( mos6530_device_base::timer_off_w )
{
timer_w(offset, data, false);
}
-WRITE8_MEMBER( mos6530_base_t::timer_on_w )
+WRITE8_MEMBER( mos6530_device_base::timer_on_w )
{
timer_w(offset, data, true);
}
-void mos6530_base_t::timer_w(offs_t offset, uint8_t data, bool ie)
+void mos6530_device_base::timer_w(offs_t offset, uint8_t data, bool ie)
{
live_sync();
@@ -723,7 +670,7 @@ void mos6530_base_t::timer_w(offs_t offset, uint8_t data, bool ie)
}
update_irq();
- if (LOG_TIMER) logerror("%s %s %s '%s' Timer value %02x prescale %u IE %u\n", machine().time().as_string(), machine().describe_context(), name(), tag(), data, m_prescale, m_ie_timer ? 1 : 0);
+ LOGTIMER("%s %s %s Timer value %02x prescale %u IE %u\n", machine().time().as_string(), machine().describe_context(), name(), data, m_prescale, m_ie_timer ? 1 : 0);
checkpoint();
@@ -740,12 +687,12 @@ void mos6530_base_t::timer_w(offs_t offset, uint8_t data, bool ie)
// edge_w -
//-------------------------------------------------
-WRITE8_MEMBER( mos6530_base_t::edge_w )
+WRITE8_MEMBER( mos6530_device_base::edge_w )
{
m_pa7_dir = BIT(data, 0);
m_ie_edge = BIT(data, 1) ? false : true;
- if (LOG) logerror("%s %s %s '%s' %s edge-detect, %s interrupt\n", machine().time().as_string(), machine().describe_context(), name(), tag(), m_pa7_dir ? "positive" : "negative", m_ie_edge ? "enable" : "disable");
+ LOG("%s %s %s %s edge-detect, %s interrupt\n", machine().time().as_string(), machine().describe_context(), name(), m_pa7_dir ? "positive" : "negative", m_ie_edge ? "enable" : "disable");
}
@@ -753,7 +700,7 @@ WRITE8_MEMBER( mos6530_base_t::edge_w )
// live_start -
//-------------------------------------------------
-void mos6530_base_t::live_start()
+void mos6530_device_base::live_start()
{
cur_live.period = attotime::from_ticks(m_prescale, clock());
cur_live.tm = machine().time() + attotime::from_hz(clock());
@@ -767,17 +714,17 @@ void mos6530_base_t::live_start()
live_run();
}
-void mos6530_base_t::checkpoint()
+void mos6530_device_base::checkpoint()
{
checkpoint_live = cur_live;
}
-void mos6530_base_t::rollback()
+void mos6530_device_base::rollback()
{
cur_live = checkpoint_live;
}
-void mos6530_base_t::live_delay(int state)
+void mos6530_device_base::live_delay(int state)
{
cur_live.next_state = state;
if(cur_live.tm != machine().time())
@@ -786,7 +733,7 @@ void mos6530_base_t::live_delay(int state)
live_sync();
}
-void mos6530_base_t::live_sync()
+void mos6530_device_base::live_sync()
{
if(!cur_live.tm.is_never()) {
if(cur_live.tm > machine().time()) {
@@ -806,7 +753,7 @@ void mos6530_base_t::live_sync()
}
}
-void mos6530_base_t::live_abort()
+void mos6530_device_base::live_abort()
{
if(!cur_live.tm.is_never() && cur_live.tm > machine().time()) {
rollback();
@@ -819,7 +766,7 @@ void mos6530_base_t::live_abort()
cur_live.tm_irq = attotime::never;
}
-void mos6530_base_t::live_run(const attotime &limit)
+void mos6530_device_base::live_run(const attotime &limit)
{
if(cur_live.state == IDLE || cur_live.next_state != -1)
return;
@@ -836,7 +783,7 @@ void mos6530_base_t::live_run(const attotime &limit)
live_delay(RUNNING_SYNCPOINT);
return;
} else {
- if (LOG_TIMER) logerror("%s %s '%s' timer %02x\n", cur_live.tm.as_string(), name(), tag(), cur_live.value);
+ LOGTIMER("%s %s timer %02x\n", cur_live.tm.as_string(), name(), cur_live.value);
cur_live.tm += cur_live.period;
}
@@ -844,7 +791,7 @@ void mos6530_base_t::live_run(const attotime &limit)
}
case RUNNING_SYNCPOINT: {
- if (LOG_TIMER) logerror("%s %s '%s' timer %02x interrupt\n", cur_live.tm.as_string(), name(), tag(), cur_live.value);
+ LOGTIMER("%s %s timer %02x interrupt\n", cur_live.tm.as_string(), name(), cur_live.value);
cur_live.tm_irq = cur_live.tm;
m_irq_timer = true;
@@ -864,7 +811,7 @@ void mos6530_base_t::live_run(const attotime &limit)
cur_live.value--;
- if (LOG_TIMER) logerror("%s %s '%s' timer %02x\n", cur_live.tm.as_string(), name(), tag(), cur_live.value);
+ LOGTIMER("%s %s timer %02x\n", cur_live.tm.as_string(), name(), cur_live.value);
if (!cur_live.value) {
cur_live.state = IDLE;
diff --git a/src/devices/machine/mos6530n.h b/src/devices/machine/mos6530n.h
index 721ce0aeac3..d7395de94a8 100644
--- a/src/devices/machine/mos6530n.h
+++ b/src/devices/machine/mos6530n.h
@@ -52,11 +52,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __MOS6530n__
-#define __MOS6530n__
+#ifndef MAME_MACHINE_MOS6530N_H
+#define MAME_MACHINE_MOS6530N_H
+#pragma once
@@ -65,115 +64,115 @@
//**************************************************************************
#define MCFG_MOS6530n_IRQ_CB(_write) \
- devcb = &mos6530_base_t::set_irq_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_irq_wr_callback(*device, DEVCB_##_write);
#define MCFG_MOS6530n_IN_PA_CB(_read) \
- devcb = &mos6530_base_t::set_pa_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pa_rd_callback(*device, DEVCB_##_read);
#define MCFG_MOS6530n_OUT_PA_CB(_write) \
- devcb = &mos6530_base_t::set_pa_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pa_wr_callback(*device, DEVCB_##_write);
#define MCFG_MOS6530n_IN_PB_CB(_read) \
- devcb = &mos6530_base_t::set_pb_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pb_rd_callback(*device, DEVCB_##_read);
#define MCFG_MOS6530n_OUT_PB_CB(_write) \
- devcb = &mos6530_base_t::set_pb_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pb_wr_callback(*device, DEVCB_##_write);
#define MCFG_MOS6530n_IN_PA0_CB(_read) \
- devcb = &mos6530_base_t::set_pa0_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pa_rd_callback<0>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA1_CB(_read) \
- devcb = &mos6530_base_t::set_pa1_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pa_rd_callback<1>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA2_CB(_read) \
- devcb = &mos6530_base_t::set_pa2_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pa_rd_callback<2>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA3_CB(_read) \
- devcb = &mos6530_base_t::set_pa3_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pa_rd_callback<3>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA4_CB(_read) \
- devcb = &mos6530_base_t::set_pa4_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pa_rd_callback<4>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA5_CB(_read) \
- devcb = &mos6530_base_t::set_pa5_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pa_rd_callback<5>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA6_CB(_read) \
- devcb = &mos6530_base_t::set_pa6_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pa_rd_callback<6>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PA7_CB(_read) \
- devcb = &mos6530_base_t::set_pa7_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pa_rd_callback<7>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_OUT_PA0_CB(_write) \
- devcb = &mos6530_base_t::set_pa0_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pa_wr_callback<0>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA1_CB(_write) \
- devcb = &mos6530_base_t::set_pa1_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pa_wr_callback<1>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA2_CB(_write) \
- devcb = &mos6530_base_t::set_pa2_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pa_wr_callback<2>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA3_CB(_write) \
- devcb = &mos6530_base_t::set_pa3_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pa_wr_callback<3>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA4_CB(_write) \
- devcb = &mos6530_base_t::set_pa4_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pa_wr_callback<4>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA5_CB(_write) \
- devcb = &mos6530_base_t::set_pa5_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pa_wr_callback<5>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA6_CB(_write) \
- devcb = &mos6530_base_t::set_pa6_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pa_wr_callback<6>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PA7_CB(_write) \
- devcb = &mos6530_base_t::set_pa7_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pa_wr_callback<7>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_IN_PB0_CB(_read) \
- devcb = &mos6530_base_t::set_pb0_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pb_rd_callback<0>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB1_CB(_read) \
- devcb = &mos6530_base_t::set_pb1_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pb_rd_callback<1>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB2_CB(_read) \
- devcb = &mos6530_base_t::set_pb2_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pb_rd_callback<2>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB3_CB(_read) \
- devcb = &mos6530_base_t::set_pb3_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pb_rd_callback<3>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB4_CB(_read) \
- devcb = &mos6530_base_t::set_pb4_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pb_rd_callback<4>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB5_CB(_read) \
- devcb = &mos6530_base_t::set_pb5_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pb_rd_callback<5>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB6_CB(_read) \
- devcb = &mos6530_base_t::set_pb6_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pb_rd_callback<6>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_IN_PB7_CB(_read) \
- devcb = &mos6530_base_t::set_pb7_rd_callback(*device, DEVCB_##_read);
+ devcb = &mos6530_device_base::set_pb_rd_callback<7>(*device, DEVCB_##_read);
#define MCFG_MOS6530n_OUT_PB0_CB(_write) \
- devcb = &mos6530_base_t::set_pb0_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pb_wr_callback<0>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB1_CB(_write) \
- devcb = &mos6530_base_t::set_pb1_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pb_wr_callback<1>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB2_CB(_write) \
- devcb = &mos6530_base_t::set_pb2_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pb_wr_callback<2>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB3_CB(_write) \
- devcb = &mos6530_base_t::set_pb3_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pb_wr_callback<3>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB4_CB(_write) \
- devcb = &mos6530_base_t::set_pb4_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pb_wr_callback<4>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB5_CB(_write) \
- devcb = &mos6530_base_t::set_pb5_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pb_wr_callback<5>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB6_CB(_write) \
- devcb = &mos6530_base_t::set_pb6_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pb_wr_callback<6>(*device, DEVCB_##_write);
#define MCFG_MOS6530n_OUT_PB7_CB(_write) \
- devcb = &mos6530_base_t::set_pb7_wr_callback(*device, DEVCB_##_write);
+ devcb = &mos6530_device_base::set_pb_wr_callback<7>(*device, DEVCB_##_write);
@@ -181,51 +180,20 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> mos6530_base_t
+// ======================> mos6530_device_base
-class mos6530_base_t : public device_t
+class mos6530_device_base : public device_t
{
public:
- // construction/destruction
- mos6530_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa0_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pa0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa1_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pa1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa2_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pa2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa3_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pa3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa4_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pa4_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa5_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pa5_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa6_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pa6_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa7_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pa7_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa0_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pa0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa1_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pa1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa2_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pa2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa3_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pa3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa4_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pa4_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa5_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pa5_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa6_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pa6_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pa7_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pa7_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb0_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pb0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb1_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pb1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb2_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pb2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb3_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pb3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb4_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pb4_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb5_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pb5_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb6_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pb6_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb7_rd_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_in_pb7_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb0_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pb0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb1_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pb1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb2_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pb2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb3_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pb3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb4_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pb4_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb5_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pb5_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb6_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pb6_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb7_wr_callback(device_t &device, _Object object) { return downcast<mos6530_base_t &>(device).m_out_pb7_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pa_rd_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_in8_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pa_wr_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_out8_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pb_rd_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_in8_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pb_wr_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_out8_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <unsigned N, class Object> static devcb_base &set_pa_rd_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_in_pa_cb[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N, class Object> static devcb_base &set_pa_wr_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_out_pa_cb[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N, class Object> static devcb_base &set_pb_rd_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_in_pb_cb[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N, class Object> static devcb_base &set_pb_wr_callback(device_t &device, Object &&cb) { return downcast<mos6530_device_base &>(device).m_out_pb_cb[N].set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER( pa0_w ) { pa_w(0, state); }
DECLARE_WRITE_LINE_MEMBER( pa1_w ) { pa_w(1, state); }
@@ -246,6 +214,9 @@ public:
DECLARE_WRITE_LINE_MEMBER( pb7_w ) { pb_w(7, state); }
protected:
+ // construction/destruction
+ mos6530_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -289,42 +260,14 @@ protected:
optional_region_ptr<uint8_t> m_rom;
devcb_write_line m_irq_cb;
- devcb_read8 m_in_pa_cb;
- devcb_write8 m_out_pa_cb;
- devcb_read8 m_in_pb_cb;
- devcb_write8 m_out_pb_cb;
- devcb_read_line m_in_pa0_cb;
- devcb_read_line m_in_pa1_cb;
- devcb_read_line m_in_pa2_cb;
- devcb_read_line m_in_pa3_cb;
- devcb_read_line m_in_pa4_cb;
- devcb_read_line m_in_pa5_cb;
- devcb_read_line m_in_pa6_cb;
- devcb_read_line m_in_pa7_cb;
- devcb_write_line m_out_pa0_cb;
- devcb_write_line m_out_pa1_cb;
- devcb_write_line m_out_pa2_cb;
- devcb_write_line m_out_pa3_cb;
- devcb_write_line m_out_pa4_cb;
- devcb_write_line m_out_pa5_cb;
- devcb_write_line m_out_pa6_cb;
- devcb_write_line m_out_pa7_cb;
- devcb_read_line m_in_pb0_cb;
- devcb_read_line m_in_pb1_cb;
- devcb_read_line m_in_pb2_cb;
- devcb_read_line m_in_pb3_cb;
- devcb_read_line m_in_pb4_cb;
- devcb_read_line m_in_pb5_cb;
- devcb_read_line m_in_pb6_cb;
- devcb_read_line m_in_pb7_cb;
- devcb_write_line m_out_pb0_cb;
- devcb_write_line m_out_pb1_cb;
- devcb_write_line m_out_pb2_cb;
- devcb_write_line m_out_pb3_cb;
- devcb_write_line m_out_pb4_cb;
- devcb_write_line m_out_pb5_cb;
- devcb_write_line m_out_pb6_cb;
- devcb_write_line m_out_pb7_cb;
+ devcb_read8 m_in8_pa_cb;
+ devcb_write8 m_out8_pa_cb;
+ devcb_read8 m_in8_pb_cb;
+ devcb_write8 m_out8_pb_cb;
+ devcb_read_line m_in_pa_cb[8];
+ devcb_write_line m_out_pa_cb[8];
+ devcb_read_line m_in_pb_cb[8];
+ devcb_write_line m_out_pb_cb[8];
uint8_t m_pa_in;
uint8_t m_pa_out;
@@ -371,11 +314,11 @@ protected:
};
-class mos6530_t : public mos6530_base_t
+class mos6530_new_device : public mos6530_device_base
{
public:
// construction/destruction
- mos6530_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mos6530_new_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_ADDRESS_MAP(rom_map, 8);
virtual DECLARE_ADDRESS_MAP(ram_map, 8);
@@ -391,11 +334,11 @@ protected:
};
-class mos6532_t : public mos6530_base_t
+class mos6532_new_device : public mos6530_device_base
{
public:
// construction/destruction
- mos6532_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mos6532_new_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_ADDRESS_MAP(ram_map, 8);
virtual DECLARE_ADDRESS_MAP(io_map, 8);
@@ -411,9 +354,7 @@ protected:
// device type definition
-extern const device_type MOS6530n;
-extern const device_type MOS6532n;
-
-
+DECLARE_DEVICE_TYPE(MOS6530_NEW, mos6530_new_device)
+DECLARE_DEVICE_TYPE(MOS6532_NEW, mos6532_new_device)
-#endif
+#endif // MAME_MACHINE_MOS6530N_H
diff --git a/src/devices/machine/mos6551.cpp b/src/devices/machine/mos6551.cpp
index 97f31a39b52..91595615d6c 100644
--- a/src/devices/machine/mos6551.cpp
+++ b/src/devices/machine/mos6551.cpp
@@ -9,12 +9,14 @@
#include "emu.h"
#include "mos6551.h"
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
-const device_type MOS6551 = device_creator<mos6551_device>;
+
+DEFINE_DEVICE_TYPE(MOS6551, mos6551_device, "mos6551", "MOS 6551 ACIA")
mos6551_device::mos6551_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MOS6551, "MOS6551", tag, owner, clock, "mos6551", __FILE__),
+ device_t(mconfig, MOS6551, tag, owner, clock),
m_internal_clock(*this, "clock"),
m_irq_handler(*this),
m_txd_handler(*this),
@@ -552,7 +554,7 @@ WRITE_LINE_MEMBER(mos6551_device::receiver_clock)
{
if (!m_rxd && !m_dtr)
{
- if (LOG) logerror("MOS6551 '%s': RX START BIT\n", tag());
+ LOG("MOS6551: RX START BIT\n");
}
else
{
@@ -574,7 +576,7 @@ WRITE_LINE_MEMBER(mos6551_device::receiver_clock)
{
m_rx_counter = 0;
- if (LOG) logerror("MOS6551 '%s': RX false START BIT\n", tag());
+ LOG("MOS6551: RX false START BIT\n");
}
}
break;
@@ -586,11 +588,11 @@ WRITE_LINE_MEMBER(mos6551_device::receiver_clock)
if (m_rx_bits < m_wordlength)
{
- if (LOG) logerror("MOS6551 '%s': RX DATA BIT %d %d\n", tag(), m_rx_bits, m_rxd);
+ LOG("MOS6551: RX DATA BIT %d %d\n", m_rx_bits, m_rxd);
}
else
{
- if (LOG) logerror("MOS6551 '%s': RX PARITY BIT %x\n", tag(), m_rxd);
+ LOG("MOS6551: RX PARITY BIT %x\n", m_rxd);
}
if (m_rxd)
@@ -615,7 +617,7 @@ WRITE_LINE_MEMBER(mos6551_device::receiver_clock)
{
m_rx_counter = 0;
- if (LOG) logerror("MOS6551 '%s': RX STOP BIT\n", tag());
+ LOG("MOS6551: RX STOP BIT\n");
if (!(m_status & SR_RDRF))
{
@@ -715,11 +717,11 @@ WRITE_LINE_MEMBER(mos6551_device::transmitter_clock)
}
else if (!(m_status & SR_TDRE))
{
- if (LOG) logerror("MOS6551 '%s': TX DATA %x\n", tag(), m_tdr);
+ LOG("MOS6551: TX DATA %x\n", m_tdr);
m_tx_output = OUTPUT_TXD;
- if (LOG) logerror("MOS6551 '%s': TX START BIT\n", tag());
+ LOG("MOS6551: TX START BIT\n");
m_status |= SR_TDRE;
}
@@ -727,7 +729,7 @@ WRITE_LINE_MEMBER(mos6551_device::transmitter_clock)
{
m_tx_output = OUTPUT_BREAK;
- if (LOG) logerror("MOS6551 '%s': TX BREAK START\n", tag());
+ LOG("MOS6551: TX BREAK START\n");
}
else
{
@@ -757,7 +759,7 @@ WRITE_LINE_MEMBER(mos6551_device::transmitter_clock)
if (m_tx_output == OUTPUT_TXD)
{
- if (LOG) logerror("MOS6551 '%s': TX DATA BIT %d %d\n", tag(), m_tx_bits, m_txd);
+ LOG("MOS6551: TX DATA BIT %d %d\n", m_tx_bits, m_txd);
}
}
else if (m_tx_bits == m_wordlength && m_parity != PARITY_NONE)
@@ -783,7 +785,7 @@ WRITE_LINE_MEMBER(mos6551_device::transmitter_clock)
if (m_tx_output == OUTPUT_TXD)
{
- if (LOG) logerror("MOS6551 '%s': TX PARITY BIT %d\n", tag(), m_txd);
+ LOG("MOS6551: TX PARITY BIT %d\n", m_txd);
}
}
else
@@ -794,7 +796,7 @@ WRITE_LINE_MEMBER(mos6551_device::transmitter_clock)
if (m_tx_output == OUTPUT_TXD)
{
- if (LOG) logerror("MOS6551 '%s': TX STOP BIT\n", tag());
+ LOG("MOS6551: TX STOP BIT\n");
}
}
}
@@ -807,7 +809,7 @@ WRITE_LINE_MEMBER(mos6551_device::transmitter_clock)
{
if (!m_brk)
{
- if (LOG) logerror("MOS6551 '%s': TX BREAK END\n", tag());
+ LOG("MOS6551: TX BREAK END\n");
m_tx_counter = 0;
m_tx_state = STATE_STOP;
diff --git a/src/devices/machine/mos6551.h b/src/devices/machine/mos6551.h
index 8ebed24e36f..febcbc3078f 100644
--- a/src/devices/machine/mos6551.h
+++ b/src/devices/machine/mos6551.h
@@ -23,10 +23,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MOS6551_H
+#define MAME_MACHINE_MOS6551_H
-#ifndef __MOS6551__
-#define __MOS6551__
+#pragma once
#include "machine/clock.h"
@@ -54,11 +54,11 @@ public:
mos6551_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_xtal(device_t &device, uint32_t xtal) { downcast<mos6551_device &>(device).set_xtal(xtal); }
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<mos6551_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast<mos6551_device &>(device).m_txd_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rxc_handler(device_t &device, _Object object) { return downcast<mos6551_device &>(device).m_rxc_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_rts_handler(device_t &device, _Object object) { return downcast<mos6551_device &>(device).m_rts_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_dtr_handler(device_t &device, _Object object) { return downcast<mos6551_device &>(device).m_dtr_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<mos6551_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<mos6551_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rxc_handler(device_t &device, Object &&cb) { return downcast<mos6551_device &>(device).m_rxc_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<mos6551_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<mos6551_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -206,6 +206,6 @@ private:
int m_tx_internal_clock;
};
-extern const device_type MOS6551;
+DECLARE_DEVICE_TYPE(MOS6551, mos6551_device)
-#endif
+#endif // MAME_MACHINE_MOS6551_H
diff --git a/src/devices/machine/mos6702.cpp b/src/devices/machine/mos6702.cpp
index 69268f6341e..a5fa3d4c088 100644
--- a/src/devices/machine/mos6702.cpp
+++ b/src/devices/machine/mos6702.cpp
@@ -9,13 +9,8 @@
#include "emu.h"
#include "mos6702.h"
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
@@ -23,7 +18,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MOS6702 = device_creator<mos6702_device>;
+DEFINE_DEVICE_TYPE(MOS6702, mos6702_device, "mos6702", "MOS 6702")
@@ -36,7 +31,7 @@ const device_type MOS6702 = device_creator<mos6702_device>;
//-------------------------------------------------
mos6702_device::mos6702_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MOS6702, "MOS6702", tag, owner, clock, "mos6702", __FILE__)
+ : device_t(mconfig, MOS6702, tag, owner, clock)
{
}
diff --git a/src/devices/machine/mos6702.h b/src/devices/machine/mos6702.h
index 61723e1213c..4e7ef027b6e 100644
--- a/src/devices/machine/mos6702.h
+++ b/src/devices/machine/mos6702.h
@@ -19,11 +19,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __MOS6702__
-#define __MOS6702__
+#ifndef MAME_MACHINE_MOS6702_H
+#define MAME_MACHINE_MOS6702_H
+#pragma once
@@ -31,8 +30,8 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_MOS6702_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, MOS6702, _clock)
+#define MCFG_MOS6702_ADD(tag, clock) \
+ MCFG_DEVICE_ADD(tag, MOS6702, clock)
@@ -58,8 +57,6 @@ protected:
// device type definition
-extern const device_type MOS6702;
-
-
+DECLARE_DEVICE_TYPE(MOS6702, mos6702_device)
-#endif
+#endif // MAME_MACHINE_MOS6702_H
diff --git a/src/devices/machine/mos8706.cpp b/src/devices/machine/mos8706.cpp
index d3127eb4e58..d3f8f42fa10 100644
--- a/src/devices/machine/mos8706.cpp
+++ b/src/devices/machine/mos8706.cpp
@@ -9,13 +9,8 @@
#include "emu.h"
#include "mos8706.h"
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
@@ -24,7 +19,7 @@
//**************************************************************************
// device type definition
-const device_type MOS8706 = device_creator<mos8706_device>;
+DEFINE_DEVICE_TYPE(MOS8706, mos8706_device, "mos8706", "MOS 8706")
@@ -37,7 +32,7 @@ const device_type MOS8706 = device_creator<mos8706_device>;
//-------------------------------------------------
mos8706_device::mos8706_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MOS8706, "MOS8706", tag, owner, clock, "mos8706", __FILE__)
+ : device_t(mconfig, MOS8706, tag, owner, clock)
{
}
diff --git a/src/devices/machine/mos8706.h b/src/devices/machine/mos8706.h
index 9628e130037..36cb6d55d5d 100644
--- a/src/devices/machine/mos8706.h
+++ b/src/devices/machine/mos8706.h
@@ -23,10 +23,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MOS8706_H
+#define MAME_MACHINE_MOS8706_H
-#ifndef __MOS8706__
-#define __MOS8706__
+#pragma once
@@ -35,8 +35,8 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_MOS8706_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD((_tag), MOS8706, _clock)
+#define MCFG_MOS8706_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), MOS8706, (clock))
@@ -62,8 +62,7 @@ protected:
// device type definition
-extern const device_type MOS8706;
-
+DECLARE_DEVICE_TYPE(MOS8706, mos8706_device)
-#endif
+#endif // MAME_MACHINE_MOS8706_H
diff --git a/src/devices/machine/mos8722.cpp b/src/devices/machine/mos8722.cpp
index 1472320cf57..b55d8393a9f 100644
--- a/src/devices/machine/mos8722.cpp
+++ b/src/devices/machine/mos8722.cpp
@@ -9,13 +9,16 @@
#include "emu.h"
#include "mos8722.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MOS8722 = device_creator<mos8722_device>;
+DEFINE_DEVICE_TYPE(MOS8722, mos8722_device, "mos8722", "MOS 8722 MMU")
@@ -23,9 +26,6 @@ const device_type MOS8722 = device_creator<mos8722_device>;
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
#define CR_IO BIT(m_reg[CR], 0)
#define CR_ROM_LO BIT(m_reg[CR], 1)
#define CR_ROM_MID ((m_reg[CR] >> 2) & 0x03)
@@ -70,7 +70,7 @@ static const offs_t RCR_TOP_ADDRESS[4] = { 0xf000, 0xf000, 0xe000, 0xc000 };
//-------------------------------------------------
mos8722_device::mos8722_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MOS8722, "MOS8722", tag, owner, clock, "mos8722", __FILE__),
+ device_t(mconfig, MOS8722, tag, owner, clock),
m_write_z80en(*this),
m_write_fsdir(*this),
m_read_game(*this),
@@ -177,7 +177,7 @@ WRITE8_MEMBER( mos8722_device::write )
if (!CR_IO && offset >= 0xd500 && offset < 0xd50c)
{
- if (LOG) logerror("MOS8722 '%s' Write %01x : %02x\n", tag(), offset & 0x0f, data);
+ LOG("MOS8722 Write %01x : %02x\n", offset & 0x0f, data);
switch (offset & 0x0f)
{
@@ -232,7 +232,7 @@ WRITE8_MEMBER( mos8722_device::write )
}
else if (offset >= 0xff00 && offset < 0xff05)
{
- if (LOG) logerror("MOS8722 '%s' Write %01x : %02x\n", tag(), offset & 0x0f, data);
+ LOG("MOS8722 Write %01x : %02x\n", offset & 0x0f, data);
switch (offset & 0x0f)
{
diff --git a/src/devices/machine/mos8722.h b/src/devices/machine/mos8722.h
index d396877ba02..9f3286e4c30 100644
--- a/src/devices/machine/mos8722.h
+++ b/src/devices/machine/mos8722.h
@@ -33,10 +33,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MOS8722_H
+#define MAME_MACHINE_MOS8722_H
-#ifndef __MOS8722__
-#define __MOS8722__
+#pragma once
@@ -74,11 +74,11 @@ public:
// construction/destruction
mos8722_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_z80en_wr_callback(device_t &device, _Object object) { return downcast<mos8722_device &>(device).m_write_z80en.set_callback(object); }
- template<class _Object> static devcb_base &set_fsdir_wr_callback(device_t &device, _Object object) { return downcast<mos8722_device &>(device).m_write_fsdir.set_callback(object); }
- template<class _Object> static devcb_base &set_game_rd_callback(device_t &device, _Object object) { return downcast<mos8722_device &>(device).m_read_game.set_callback(object); }
- template<class _Object> static devcb_base &set_exrom_rd_callback(device_t &device, _Object object) { return downcast<mos8722_device &>(device).m_read_exrom.set_callback(object); }
- template<class _Object> static devcb_base &set_sense40_rd_callback(device_t &device, _Object object) { return downcast<mos8722_device &>(device).m_read_sense40.set_callback(object); }
+ template <class Object> static devcb_base &set_z80en_wr_callback(device_t &device, Object &&cb) { return downcast<mos8722_device &>(device).m_write_z80en.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_fsdir_wr_callback(device_t &device, Object &&cb) { return downcast<mos8722_device &>(device).m_write_fsdir.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_game_rd_callback(device_t &device, Object &&cb) { return downcast<mos8722_device &>(device).m_read_game.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_exrom_rd_callback(device_t &device, Object &&cb) { return downcast<mos8722_device &>(device).m_read_exrom.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sense40_rd_callback(device_t &device, Object &&cb) { return downcast<mos8722_device &>(device).m_read_sense40.set_callback(std::forward<Object>(cb)); }
uint8_t read(offs_t offset, uint8_t data);
@@ -146,8 +146,6 @@ private:
// device type definition
-extern const device_type MOS8722;
-
-
+DECLARE_DEVICE_TYPE(MOS8722, mos8722_device)
-#endif
+#endif // MAME_MACHINE_MOS8722_H
diff --git a/src/devices/machine/mos8726.cpp b/src/devices/machine/mos8726.cpp
index 39d4f450fa8..f046cf5b294 100644
--- a/src/devices/machine/mos8726.cpp
+++ b/src/devices/machine/mos8726.cpp
@@ -29,7 +29,7 @@
// DEVICE TYPE DEFINITIONS
//**************************************************************************
-const device_type MOS8726 = device_creator<mos8726_device>;
+DEFINE_DEVICE_TYPE(MOS8726, mos8726_device, "mos8726", "MOS 8726 DMA Controller")
@@ -42,11 +42,12 @@ const device_type MOS8726 = device_creator<mos8726_device>;
//-------------------------------------------------
mos8726_device::mos8726_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MOS8726, "MOS8726", tag, owner, clock, "mos8726", __FILE__),
- device_execute_interface(mconfig, *this),
- m_icount(0),
- m_bs(1)
-{ }
+ : device_t(mconfig, MOS8726, tag, owner, clock)
+ , device_execute_interface(mconfig, *this)
+ , m_icount(0)
+ , m_bs(1)
+{
+}
//-------------------------------------------------
diff --git a/src/devices/machine/mos8726.h b/src/devices/machine/mos8726.h
index fbf771a4830..8435bf0f544 100644
--- a/src/devices/machine/mos8726.h
+++ b/src/devices/machine/mos8726.h
@@ -41,10 +41,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MOS8726_H
+#define MAME_MACHINE_MOS8726_H
-#ifndef __MOS8726__
-#define __MOS8726__
+#pragma once
@@ -53,8 +53,8 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_MOS8726_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, MOS8726, 1000000) // dummy clock
+#define MCFG_MOS8726_ADD(tag) \
+ MCFG_DEVICE_ADD((tag), MOS8726, 1000000) // dummy clock
@@ -90,8 +90,6 @@ protected:
// device type definition
-extern const device_type MOS8726;
-
-
+DECLARE_DEVICE_TYPE(MOS8726, mos8726_device)
-#endif
+#endif // MAME_MACHINE_MOS8726_H
diff --git a/src/devices/machine/mpu401.cpp b/src/devices/machine/mpu401.cpp
index cc65d695476..4fc99221f99 100644
--- a/src/devices/machine/mpu401.cpp
+++ b/src/devices/machine/mpu401.cpp
@@ -91,7 +91,7 @@ ROM_END
// GLOBAL VARIABLES
//**************************************************************************
-const device_type MPU401 = device_creator<mpu401_device>;
+DEFINE_DEVICE_TYPE(MPU401, mpu401_device, "mpu401", "Roland MPU-401 I/O box")
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -121,7 +121,7 @@ const tiny_rom_entry *mpu401_device::device_rom_region() const
//-------------------------------------------------
mpu401_device::mpu401_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MPU401, "Roland MPU-401 I/O box", tag, owner, clock, "mpu401", __FILE__),
+ device_t(mconfig, MPU401, tag, owner, clock),
m_ourcpu(*this, M6801_TAG),
write_irq(*this)
{
diff --git a/src/devices/machine/mpu401.h b/src/devices/machine/mpu401.h
index 46f4ed474d0..c73256b5273 100644
--- a/src/devices/machine/mpu401.h
+++ b/src/devices/machine/mpu401.h
@@ -1,18 +1,18 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_MACHINE_MPU401_H
+#define MAME_MACHINE_MPU401_H
-#ifndef __MPU401_H__
-#define __MPU401_H__
+#pragma once
#include "cpu/m6800/m6800.h"
-#define MCFG_MPU401_ADD(_tag, _irqf ) \
- MCFG_DEVICE_ADD(_tag, MPU401, 0) \
- MCFG_IRQ_FUNC(_irqf)
+#define MCFG_MPU401_ADD(tag, irqf) \
+ MCFG_DEVICE_ADD((tag), MPU401, 0) \
+ MCFG_IRQ_FUNC(irqf)
-#define MCFG_IRQ_FUNC(_irqf) \
- devcb = &downcast<mpu401_device *>(device)->set_irqf(DEVCB_##_irqf);
+#define MCFG_IRQ_FUNC(irqf) \
+ devcb = &downcast<mpu401_device *>(device)->set_irqf(DEVCB_##irqf);
//**************************************************************************
// TYPE DEFINITIONS
@@ -29,13 +29,11 @@ public:
required_device<m6801_cpu_device> m_ourcpu;
- template<class _write> devcb_base &set_irqf(_write wr)
+ template <class Write> devcb_base &set_irqf(Write &&wr)
{
- return write_irq.set_callback(wr);
+ return write_irq.set_callback(std::forward<Write>(wr));
}
- devcb_write_line write_irq;
-
DECLARE_READ8_MEMBER(regs_mode2_r);
DECLARE_WRITE8_MEMBER(regs_mode2_w);
DECLARE_READ8_MEMBER(asic_r);
@@ -58,6 +56,8 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ devcb_write_line write_irq;
+
uint8_t m_port2;
uint8_t m_command;
uint8_t m_mpudata;
@@ -66,6 +66,6 @@ private:
};
// device type definition
-extern const device_type MPU401;
+DECLARE_DEVICE_TYPE(MPU401, mpu401_device)
-#endif /* __MPU401_H__ */
+#endif // MAME_MACHINE_MPU401_H
diff --git a/src/devices/machine/msm5832.cpp b/src/devices/machine/msm5832.cpp
index e5db53f3ec8..711de519453 100644
--- a/src/devices/machine/msm5832.cpp
+++ b/src/devices/machine/msm5832.cpp
@@ -21,18 +21,18 @@
#include "emu.h"
#include "msm5832.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
// device type definition
-const device_type MSM5832 = device_creator<msm5832_device>;
+DEFINE_DEVICE_TYPE(MSM5832, msm5832_device, "msm5832", "OKI MSM5832 RTC")
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
// registers
enum
{
@@ -89,7 +89,7 @@ inline void msm5832_device::write_counter(int counter, int value)
//-------------------------------------------------
msm5832_device::msm5832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSM5832, "MSM5832", tag, owner, clock, "msm5832", __FILE__),
+ : device_t(mconfig, MSM5832, tag, owner, clock),
device_rtc_interface(mconfig, *this),
m_hold(0),
m_address(0),
@@ -148,7 +148,7 @@ void msm5832_device::device_timer(emu_timer &timer, device_timer_id id, int para
void msm5832_device::rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second)
{
- if (LOG) logerror("MSM5832 Clock Update: %d.%d.%d %d %d:%d:%d\n", year, month, day, day_of_week, hour, minute, second);
+ LOG("MSM5832 Clock Update: %d.%d.%d %d %d:%d:%d\n", year, month, day, day_of_week, hour, minute, second);
write_counter(REGISTER_Y1, year);
write_counter(REGISTER_MO1, month);
@@ -166,7 +166,7 @@ void msm5832_device::rtc_clock_updated(int year, int month, int day, int day_of_
READ8_MEMBER( msm5832_device::data_r )
{
- if (LOG) logerror("MSM5832 Register Read %01x: %01x\n", m_address, m_data & 0x0f);
+ LOG("MSM5832 Register Read %01x: %01x\n", m_address, m_data & 0x0f);
return m_data & 0x0f;
}
@@ -178,7 +178,7 @@ READ8_MEMBER( msm5832_device::data_r )
WRITE8_MEMBER( msm5832_device::data_w )
{
- if (LOG) logerror("MSM5832 Register Write %01x: %01x\n", m_address, data & 0x0f);
+ LOG("MSM5832 Register Write %01x: %01x\n", m_address, data & 0x0f);
m_data = data & 0x0f;
}
@@ -190,7 +190,7 @@ WRITE8_MEMBER( msm5832_device::data_w )
void msm5832_device::address_w(uint8_t data)
{
- if (LOG) logerror("MSM5832 Address: %01x\n", data & 0x0f);
+ LOG("MSM5832 Address: %01x\n", data & 0x0f);
m_address = data & 0x0f;
@@ -219,7 +219,7 @@ void msm5832_device::address_w(uint8_t data)
WRITE_LINE_MEMBER( msm5832_device::adj_w )
{
- if (LOG) logerror("MSM5832 30 ADJ: %u\n", state);
+ LOG("MSM5832 30 ADJ: %u\n", state);
if (state)
{
@@ -234,7 +234,7 @@ WRITE_LINE_MEMBER( msm5832_device::adj_w )
WRITE_LINE_MEMBER( msm5832_device::test_w )
{
- if (LOG) logerror("MSM5832 TEST: %u\n", state);
+ LOG("MSM5832 TEST: %u\n", state);
}
@@ -244,7 +244,7 @@ WRITE_LINE_MEMBER( msm5832_device::test_w )
WRITE_LINE_MEMBER( msm5832_device::hold_w )
{
- if (LOG) logerror("MSM5832 HOLD: %u\n", state);
+ LOG("MSM5832 HOLD: %u\n", state);
m_hold = state;
}
@@ -256,7 +256,7 @@ WRITE_LINE_MEMBER( msm5832_device::hold_w )
WRITE_LINE_MEMBER( msm5832_device::read_w )
{
- if (LOG) logerror("MSM5832 READ: %u\n", state);
+ LOG("MSM5832 READ: %u\n", state);
m_read = state;
}
@@ -271,7 +271,7 @@ WRITE_LINE_MEMBER( msm5832_device::write_w )
if (m_write == state)
return;
- if (LOG) logerror("MSM5832 WR: %u\n", state);
+ LOG("MSM5832 WR: %u\n", state);
if (m_cs && state)
{
@@ -298,7 +298,7 @@ WRITE_LINE_MEMBER( msm5832_device::write_w )
WRITE_LINE_MEMBER( msm5832_device::cs_w )
{
- if (LOG) logerror("MSM5832 CS: %u\n", state);
+ LOG("MSM5832 CS: %u\n", state);
m_cs = state;
}
diff --git a/src/devices/machine/msm5832.h b/src/devices/machine/msm5832.h
index 3b7627e00db..a7878d11585 100644
--- a/src/devices/machine/msm5832.h
+++ b/src/devices/machine/msm5832.h
@@ -18,10 +18,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MSM5832_H
+#define MAME_MACHINE_MSM5832_H
-#ifndef __MSM5832__
-#define __MSM5832__
+#pragma once
#include "dirtc.h"
@@ -31,8 +31,8 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_MSM5832_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, MSM5832, _clock)
+#define MCFG_MSM5832_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), MSM5832, (clock))
@@ -71,7 +71,7 @@ protected:
virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override;
private:
- static const device_timer_id TIMER_CLOCK = 0;
+ static constexpr device_timer_id TIMER_CLOCK = 0;
inline int read_counter(int counter);
inline void write_counter(int counter, int value);
@@ -93,8 +93,6 @@ private:
// device type definition
-extern const device_type MSM5832;
-
-
+DECLARE_DEVICE_TYPE(MSM5832, msm5832_device)
-#endif
+#endif // MAME_MACHINE_MSM5832_H
diff --git a/src/devices/machine/msm58321.cpp b/src/devices/machine/msm58321.cpp
index ed0ed62d8b9..4750cbf92c7 100644
--- a/src/devices/machine/msm58321.cpp
+++ b/src/devices/machine/msm58321.cpp
@@ -19,18 +19,19 @@
#include "emu.h"
#include "msm58321.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
+
// device type definition
-const device_type MSM58321 = device_creator<msm58321_device>;
+DEFINE_DEVICE_TYPE(MSM58321, msm58321_device, "msm58321", "OKI MSM58321 RTC")
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
// registers
enum
{
@@ -173,7 +174,7 @@ inline void msm58321_device::write_counter(int address, int data)
//-------------------------------------------------
msm58321_device::msm58321_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSM58321, "MSM58321", tag, owner, clock, "msm58321", __FILE__),
+ : device_t(mconfig, MSM58321, tag, owner, clock),
device_rtc_interface(mconfig, *this),
device_nvram_interface(mconfig, *this),
m_year0(0),
@@ -355,7 +356,7 @@ void msm58321_device::update_output()
break;
}
- if (LOG) logerror("MSM58321 '%s' Register Read %s (%01x): %01x\n", tag(), reg_name(m_address), m_address, data & 0x0f);
+ LOG("MSM58321 Register Read %s (%01x): %01x\n", reg_name(m_address), m_address, data & 0x0f);
}
int d0 = (data >> 0) & 1;
@@ -400,7 +401,7 @@ void msm58321_device::update_input()
if (m_address_write)
{
- if (LOG) logerror("MSM58321 '%s' Latch Address %01x\n", tag(), data);
+ LOG("MSM58321 Latch Address %01x\n", data);
// latch address
m_address = data;
@@ -411,7 +412,7 @@ void msm58321_device::update_input()
switch(m_address)
{
case REGISTER_RESET:
- if (LOG) logerror("MSM58321 '%s' Reset\n", tag());
+ LOG("MSM58321 Reset\n");
if (!m_busy)
{
@@ -422,11 +423,11 @@ void msm58321_device::update_input()
case REGISTER_REF0:
case REGISTER_REF1:
- if (LOG) logerror("MSM58321 '%s' Reference Signal\n", tag());
+ LOG("MSM58321 Reference Signal\n");
break;
default:
- if (LOG) logerror("MSM58321 '%s' Register Write %s (%01x): %01x\n", tag(), reg_name(m_address), m_address, data);
+ LOG("MSM58321 Register Write %s (%01x): %01x\n", reg_name(m_address), m_address, data);
switch (m_address)
{
@@ -474,7 +475,7 @@ WRITE_LINE_MEMBER( msm58321_device::cs2_w )
{
if (m_cs2 != state)
{
- if (LOG) logerror("MSM58321 '%s' CS2: %u\n", tag(), state);
+ LOG("MSM58321 CS2: %u\n", state);
m_cs2 = state;
@@ -491,7 +492,7 @@ WRITE_LINE_MEMBER( msm58321_device::write_w )
{
if (m_write != state)
{
- if (LOG) logerror("MSM58321 '%s' WRITE: %u\n", tag(), state);
+ LOG("MSM58321 WRITE: %u\n", state);
m_write = state;
@@ -508,7 +509,7 @@ WRITE_LINE_MEMBER( msm58321_device::read_w )
{
if (m_read != state)
{
- if (LOG) logerror("MSM58321 '%s' READ: %u\n", tag(), state);
+ LOG("MSM58321 READ: %u\n", state);
m_read = state;
@@ -586,7 +587,7 @@ WRITE_LINE_MEMBER( msm58321_device::address_write_w )
{
if (m_address_write != state)
{
- if (LOG) logerror("MSM58321 '%s' ADDRESS WRITE: %u\n", tag(), state);
+ LOG("MSM58321 ADDRESS WRITE: %u\n", state);
m_address_write = state;
@@ -603,7 +604,7 @@ WRITE_LINE_MEMBER( msm58321_device::stop_w )
{
if (m_stop != state)
{
- if (LOG) logerror("MSM58321 '%s' STOP: %u\n", tag(), state);
+ LOG("MSM58321 STOP: %u\n", state);
m_stop = state;
}
@@ -618,7 +619,7 @@ WRITE_LINE_MEMBER( msm58321_device::test_w )
{
if (m_test != state)
{
- if (LOG) logerror("MSM58321 '%s' TEST: %u\n", tag(), state);
+ LOG("MSM58321 TEST: %u\n", state);
m_test = state;
}
@@ -634,7 +635,7 @@ WRITE_LINE_MEMBER( msm58321_device::cs1_w )
{
if (m_cs1 != state)
{
- if (LOG) logerror("MSM58321 '%s' CS1: %u\n", tag(), state);
+ LOG("MSM58321 CS1: %u\n", state);
m_cs1 = state;
diff --git a/src/devices/machine/msm58321.h b/src/devices/machine/msm58321.h
index 30a585be4c6..d76a1e78de4 100644
--- a/src/devices/machine/msm58321.h
+++ b/src/devices/machine/msm58321.h
@@ -31,10 +31,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MSM58321_H
+#define MAME_MACHINE_MSM58321_H
-#ifndef __MSM58321__
-#define __MSM58321__
+#pragma once
#include "dirtc.h"
@@ -76,11 +76,11 @@ public:
msm58321_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_d0_handler(device_t &device, _Object object) { return downcast<msm58321_device &>(device).m_d0_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_d1_handler(device_t &device, _Object object) { return downcast<msm58321_device &>(device).m_d1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_d2_handler(device_t &device, _Object object) { return downcast<msm58321_device &>(device).m_d2_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_d3_handler(device_t &device, _Object object) { return downcast<msm58321_device &>(device).m_d3_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_busy_handler(device_t &device, _Object object) { return downcast<msm58321_device &>(device).m_busy_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_d0_handler(device_t &device, Object &&cb) { return downcast<msm58321_device &>(device).m_d0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d1_handler(device_t &device, Object &&cb) { return downcast<msm58321_device &>(device).m_d1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d2_handler(device_t &device, Object &&cb) { return downcast<msm58321_device &>(device).m_d2_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_d3_handler(device_t &device, Object &&cb) { return downcast<msm58321_device &>(device).m_d3_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_busy_handler(device_t &device, Object &&cb) { return downcast<msm58321_device &>(device).m_busy_handler.set_callback(std::forward<Object>(cb)); }
static void set_year0(device_t &device, int year0) { downcast<msm58321_device &>(device).m_year0 = year0; }
static void set_default_24h(device_t &device, bool default_24h) { downcast<msm58321_device &>(device).m_default_24h = default_24h; }
diff --git a/src/devices/machine/msm6242.cpp b/src/devices/machine/msm6242.cpp
index fec76467966..63742faa087 100644
--- a/src/devices/machine/msm6242.cpp
+++ b/src/devices/machine/msm6242.cpp
@@ -16,6 +16,18 @@
#include "emu.h"
#include "machine/msm6242.h"
+#define LOG_GENERAL (1U << 0)
+#define LOG_UNMAPPED (1U << 1)
+#define LOG_IRQ (1U << 2)
+#define LOG_IRQ_ENABLE (1U << 3)
+
+//#define VERBOSE (LOG_GENERAL | LOG_UNMAPPED | LOG_IRQ | LOG_IRQ_ENABLE)
+#include "logmacro.h"
+
+#define LOGUNMAPPED(...) LOGMASKED(LOG_UNMAPPED, __VA_ARGS__)
+#define LOGIRQ(...) LOGMASKED(LOG_IRQ, __VA_ARGS__)
+#define LOGIRQENABLE(...) LOGMASKED(LOG_IRQ_ENABLE, __VA_ARGS__)
+
//**************************************************************************
// CONSTANTS
@@ -43,10 +55,6 @@ enum
#define TIMER_RTC_CALLBACK 1
-#define LOG_UNMAPPED 0
-#define LOG_IRQ 0
-#define LOG_IRQ_ENABLE 0
-
//**************************************************************************
@@ -54,11 +62,11 @@ enum
//**************************************************************************
// device type definitions
-const device_type MSM6242 = device_creator<msm6242_device>;
-const device_type RTC62421 = device_creator<rtc62421_device>;
-const device_type RTC62423 = device_creator<rtc62423_device>;
-const device_type RTC72421 = device_creator<rtc72421_device>;
-const device_type RTC72423 = device_creator<rtc72423_device>;
+DEFINE_DEVICE_TYPE(MSM6242, msm6242_device, "msm6242", "OKI MSM6242 RTC")
+DEFINE_DEVICE_TYPE(RTC62421, rtc62421_device, "rtc62421", "Epson RTC-62421 RTC")
+DEFINE_DEVICE_TYPE(RTC62423, rtc62423_device, "rtc62423", "Epson RTC-62423 RTC")
+DEFINE_DEVICE_TYPE(RTC72421, rtc72421_device, "rtc72421", "Epson RTC-72421 RTC")
+DEFINE_DEVICE_TYPE(RTC72423, rtc72423_device, "rtc72423", "Epson RTC-72423 RTC")
//**************************************************************************
@@ -70,16 +78,14 @@ const device_type RTC72423 = device_creator<rtc72423_device>;
//-------------------------------------------------
msm6242_device::msm6242_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSM6242, "MSM6242 RTC", tag, owner, clock, "msm6242", __FILE__),
- device_rtc_interface(mconfig, *this),
- m_out_int_handler(*this)
+ : msm6242_device(mconfig, MSM6242, tag, owner, clock)
{
}
-msm6242_device::msm6242_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *filename)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, filename),
- device_rtc_interface(mconfig, *this),
- m_out_int_handler(*this)
+msm6242_device::msm6242_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_rtc_interface(mconfig, *this)
+ , m_out_int_handler(*this)
{
}
@@ -185,8 +191,7 @@ void msm6242_device::irq(uint8_t irq_type)
if (m_irq_flag == 1 && m_irq_type == irq_type)
{
// log if appropriate
- if (LOG_IRQ)
- logerror("%s: MSM6242 logging IRQ #%d\n", machine().describe_context(), (int) irq_type);
+ LOGIRQ("%s: MSM6242 logging IRQ #%u\n", machine().describe_context(), irq_type);
// ...and assert the output line
if (!m_out_int_handler.isnull())
@@ -491,8 +496,7 @@ READ8_MEMBER( msm6242_device::read )
default:
result = 0x00;
- if (LOG_UNMAPPED)
- logerror("%s: MSM6242 unmapped offset %02x read\n", machine().describe_context(), offset);
+ LOGUNMAPPED("%s: MSM6242 unmapped offset %02x read\n", machine().describe_context(), offset);
break;
}
@@ -527,8 +531,7 @@ WRITE8_MEMBER( msm6242_device::write )
m_irq_flag = 1;
m_irq_type = (data & 0xc) >> 2;
- if (LOG_IRQ_ENABLE)
- logerror("%s: MSM6242 enabling irq '%s'\n", machine().describe_context(), irq_type_string(m_irq_type));
+ LOGIRQENABLE("%s: MSM6242 enabling irq '%s'\n", machine().describe_context(), irq_type_string(m_irq_type));
}
else
{
@@ -536,8 +539,7 @@ WRITE8_MEMBER( msm6242_device::write )
if ( !m_out_int_handler.isnull() )
m_out_int_handler( CLEAR_LINE );
- if (LOG_IRQ_ENABLE)
- logerror("%s: MSM6242 disabling irq\n", machine().describe_context());
+ LOGIRQENABLE("%s: MSM6242 disabling irq\n", machine().describe_context());
}
break;
@@ -555,8 +557,7 @@ WRITE8_MEMBER( msm6242_device::write )
break;
default:
- if (LOG_UNMAPPED)
- logerror("%s: MSM6242 unmapped offset %02x written with %02x\n", machine().describe_context(), offset, data);
+ LOGUNMAPPED("%s: MSM6242 unmapped offset %02x written with %02x\n", machine().describe_context(), offset, data);
break;
}
@@ -570,7 +571,7 @@ WRITE8_MEMBER( msm6242_device::write )
//-------------------------------------------------
rtc62421_device::rtc62421_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msm6242_device(mconfig, RTC62421, "RTC-62421", tag, owner, clock, "rtc62421", __FILE__)
+ : msm6242_device(mconfig, RTC62421, tag, owner, clock)
{
}
@@ -580,7 +581,7 @@ rtc62421_device::rtc62421_device(const machine_config &mconfig, const char *tag,
//-------------------------------------------------
rtc62423_device::rtc62423_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msm6242_device(mconfig, RTC62423, "RTC-62423", tag, owner, clock, "rtc62423", __FILE__)
+ : msm6242_device(mconfig, RTC62423, tag, owner, clock)
{
}
@@ -590,7 +591,7 @@ rtc62423_device::rtc62423_device(const machine_config &mconfig, const char *tag,
//-------------------------------------------------
rtc72421_device::rtc72421_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msm6242_device(mconfig, RTC72421, "RTC-72421", tag, owner, clock, "rtc72421", __FILE__)
+ : msm6242_device(mconfig, RTC72421, tag, owner, clock)
{
}
@@ -600,6 +601,6 @@ rtc72421_device::rtc72421_device(const machine_config &mconfig, const char *tag,
//-------------------------------------------------
rtc72423_device::rtc72423_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : msm6242_device(mconfig, RTC72423, "RTC-72423", tag, owner, clock, "rtc72423", __FILE__)
+ : msm6242_device(mconfig, RTC72423, tag, owner, clock)
{
}
diff --git a/src/devices/machine/msm6242.h b/src/devices/machine/msm6242.h
index 89041c264fc..0a1ee9b1863 100644
--- a/src/devices/machine/msm6242.h
+++ b/src/devices/machine/msm6242.h
@@ -32,10 +32,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MSM6242_H
+#define MAME_MACHINE_MSM6242_H
-#ifndef __MSM6242DEV_H__
-#define __MSM6242DEV_H__
+#pragma once
#include "dirtc.h"
@@ -46,21 +46,21 @@
// ======================> msm6242_device
-class msm6242_device : public device_t,
- public device_rtc_interface
+class msm6242_device : public device_t, public device_rtc_interface
{
public:
// construction/destruction
msm6242_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- msm6242_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *filename);
- template<class _Object> static devcb_base &set_out_int_handler(device_t &device, _Object object) { return downcast<msm6242_device &>(device).m_out_int_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_out_int_handler(device_t &device, Object &&cb) { return downcast<msm6242_device &>(device).m_out_int_handler.set_callback(std::forward<Object>(cb)); }
// I/O operations
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( read );
protected:
+ msm6242_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -72,12 +72,12 @@ protected:
virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override;
private:
- static const int RTC_TICKS = ~0;
+ static constexpr int RTC_TICKS = ~0;
- static const uint8_t IRQ_64THSECOND = 0;
- static const uint8_t IRQ_SECOND = 1;
- static const uint8_t IRQ_MINUTE = 2;
- static const uint8_t IRQ_HOUR = 3;
+ static constexpr uint8_t IRQ_64THSECOND = 0;
+ static constexpr uint8_t IRQ_SECOND = 1;
+ static constexpr uint8_t IRQ_MINUTE = 2;
+ static constexpr uint8_t IRQ_HOUR = 3;
// state
uint8_t m_reg[3];
@@ -139,11 +139,11 @@ public:
// device type definition
-extern const device_type MSM6242;
-extern const device_type RTC62421;
-extern const device_type RTC62423;
-extern const device_type RTC72421;
-extern const device_type RTC72423;
+DECLARE_DEVICE_TYPE(MSM6242, msm6242_device)
+DECLARE_DEVICE_TYPE(RTC62421, rtc62421_device)
+DECLARE_DEVICE_TYPE(RTC62423, rtc62423_device)
+DECLARE_DEVICE_TYPE(RTC72421, rtc72421_device)
+DECLARE_DEVICE_TYPE(RTC72423, rtc72423_device)
-#endif /* __MSM6242DEV_H__ */
+#endif // MAME_MACHINE_MSM6242_H
diff --git a/src/devices/machine/msm6253.cpp b/src/devices/machine/msm6253.cpp
index 025e7d0d2d6..3c85f84879e 100644
--- a/src/devices/machine/msm6253.cpp
+++ b/src/devices/machine/msm6253.cpp
@@ -13,7 +13,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type MSM6253 = device_creator<msm6253_device>;
+DEFINE_DEVICE_TYPE(MSM6253, msm6253_device, "msm6253", "OKI MSM6253 A/D Converter")
//**************************************************************************
// DEVICE DEFINITION
@@ -24,14 +24,14 @@ const device_type MSM6253 = device_creator<msm6253_device>;
//-------------------------------------------------
msm6253_device::msm6253_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : device_t(mconfig, MSM6253, "MSM6253 A/D Converter", tag, owner, clock, "msm6253", __FILE__),
- m_analog_ports(*this, {finder_base::DUMMY_TAG, finder_base::DUMMY_TAG, finder_base::DUMMY_TAG, finder_base::DUMMY_TAG}),
- m_shift_register(0)
+ : device_t(mconfig, MSM6253, tag, owner, clock)
+ , m_analog_ports(*this, {finder_base::DUMMY_TAG, finder_base::DUMMY_TAG, finder_base::DUMMY_TAG, finder_base::DUMMY_TAG})
+ , m_shift_register(0)
{
- m_analog_input_cb[0] = analog_port_read_delegate(FUNC(msm6253_device::port_read<0>), this);
- m_analog_input_cb[1] = analog_port_read_delegate(FUNC(msm6253_device::port_read<1>), this);
- m_analog_input_cb[2] = analog_port_read_delegate(FUNC(msm6253_device::port_read<2>), this);
- m_analog_input_cb[3] = analog_port_read_delegate(FUNC(msm6253_device::port_read<3>), this);
+ m_analog_input_cb[0] = port_read_delegate(FUNC(msm6253_device::port_read<0>), this);
+ m_analog_input_cb[1] = port_read_delegate(FUNC(msm6253_device::port_read<1>), this);
+ m_analog_input_cb[2] = port_read_delegate(FUNC(msm6253_device::port_read<2>), this);
+ m_analog_input_cb[3] = port_read_delegate(FUNC(msm6253_device::port_read<3>), this);
}
//-------------------------------------------------
diff --git a/src/devices/machine/msm6253.h b/src/devices/machine/msm6253.h
index 68db51d3045..ce133438b30 100644
--- a/src/devices/machine/msm6253.h
+++ b/src/devices/machine/msm6253.h
@@ -18,10 +18,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_MSM6253_H
+#define MAME_MACHINE_MSM6253_H
-#ifndef DEVICES_MACHINE_MSM6253_H
-#define DEVICES_MACHINE_MSM6253_H
+#pragma once
//**************************************************************************
// CONFIGURATION MACROS
@@ -37,41 +37,41 @@
msm6253_device::static_set_input_tag(*device, 3, "^" _input);
#define MCFG_MSM6253_IN0_ANALOG_READ(_class, _method) \
- msm6253_device::static_set_input_cb(*device, 0, analog_port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ msm6253_device::static_set_input_cb(*device, 0, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MSM6253_IN1_ANALOG_READ(_class, _method) \
- msm6253_device::static_set_input_cb(*device, 1, analog_port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ msm6253_device::static_set_input_cb(*device, 1, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MSM6253_IN2_ANALOG_READ(_class, _method) \
- msm6253_device::static_set_input_cb(*device, 2, analog_port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ msm6253_device::static_set_input_cb(*device, 2, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MSM6253_IN3_ANALOG_READ(_class, _method) \
- msm6253_device::static_set_input_cb(*device, 3, analog_port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ msm6253_device::static_set_input_cb(*device, 3, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MSM6253_IN0_ANALOG_DEVREAD(_tag, _class, _method) \
- msm6253_device::static_set_input_cb(*device, 0, analog_port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
+ msm6253_device::static_set_input_cb(*device, 0, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
#define MCFG_MSM6253_IN1_ANALOG_DEVREAD(_tag, _class, _method) \
- msm6253_device::static_set_input_cb(*device, 1, analog_port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
+ msm6253_device::static_set_input_cb(*device, 1, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
#define MCFG_MSM6253_IN2_ANALOG_DEVREAD(_tag, _class, _method) \
- msm6253_device::static_set_input_cb(*device, 2, analog_port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
+ msm6253_device::static_set_input_cb(*device, 2, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
#define MCFG_MSM6253_IN3_ANALOG_DEVREAD(_tag, _class, _method) \
- msm6253_device::static_set_input_cb(*device, 3, analog_port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
+ msm6253_device::static_set_input_cb(*device, 3, msm6253_device::port_read_delegate(&_class::_method, #_class "::" #_method, _tag));
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<ioport_value ()> analog_port_read_delegate;
-
// ======================> msm6253_device
class msm6253_device : public device_t
{
public:
+ typedef device_delegate<ioport_value ()> port_read_delegate;
+
// construction/destruction
msm6253_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// static configuration
static void static_set_input_tag(device_t &device, int port, const char *tag) { downcast<msm6253_device &>(device).m_analog_ports[port].set_tag(tag); }
- static void static_set_input_cb(device_t &device, int port, analog_port_read_delegate &&cb) { downcast<msm6253_device &>(device).m_analog_input_cb[port] = std::move(cb); }
+ static void static_set_input_cb(device_t &device, int port, port_read_delegate &&cb) { downcast<msm6253_device &>(device).m_analog_input_cb[port] = std::move(cb); }
// write handlers
WRITE8_MEMBER(address_w);
@@ -92,13 +92,13 @@ private:
// input configuration
optional_ioport_array<4> m_analog_ports;
- analog_port_read_delegate m_analog_input_cb[4];
+ port_read_delegate m_analog_input_cb[4];
// private data
u8 m_shift_register;
};
// device type definition
-extern const device_type MSM6253;
+DECLARE_DEVICE_TYPE(MSM6253, msm6253_device)
#endif // DEVICES_MACHINE_MSM6253_H
diff --git a/src/devices/machine/ncr5380.cpp b/src/devices/machine/ncr5380.cpp
index 23e1ab1b821..adc309f6b60 100644
--- a/src/devices/machine/ncr5380.cpp
+++ b/src/devices/machine/ncr5380.cpp
@@ -24,7 +24,9 @@
#include "emu.h"
#include "ncr5380.h"
-#define VERBOSE (0)
+//#define VERBOSE 1
+#include "logmacro.h"
+
static const char *const rnames[] =
{
@@ -72,14 +74,14 @@ static int get_cmd_len(int cbyte)
// LIVE DEVICE
//**************************************************************************
-const device_type NCR5380 = device_creator<ncr5380_device>;
+DEFINE_DEVICE_TYPE(NCR5380, ncr5380_device, "ncr5380", "NCR 5380 SCSI")
//-------------------------------------------------
// ncr5380_device - constructor/destructor
//-------------------------------------------------
ncr5380_device::ncr5380_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- legacy_scsi_host_adapter(mconfig, NCR5380, "5380 SCSI", tag, owner, clock, "ncr5380", __FILE__),
+ legacy_scsi_host_adapter(mconfig, NCR5380, tag, owner, clock),
m_irq_cb(*this)
{
}
@@ -212,8 +214,7 @@ uint8_t ncr5380_device::ncr5380_read_reg(uint32_t offset)
break;
}
- if (VERBOSE)
- logerror("%s NCR5380: read %s (reg %d) = %02x\n", machine().describe_context(), rnames[reg], reg, rv);
+ LOG("%s NCR5380: read %s (reg %d) = %02x\n", machine().describe_context(), rnames[reg], reg, rv);
return rv;
}
@@ -222,8 +223,7 @@ void ncr5380_device::ncr5380_write_reg(uint32_t offset, uint8_t data)
{
int reg = offset & 7;
- if (VERBOSE)
- logerror("%s NCR5380: %02x to %s (reg %d)\n", machine().describe_context(), data, wnames[reg], reg);
+ LOG("%s NCR5380: %02x to %s (reg %d)\n", machine().describe_context(), data, wnames[reg], reg);
switch( reg )
{
@@ -309,14 +309,12 @@ void ncr5380_device::ncr5380_write_reg(uint32_t offset, uint8_t data)
// is the current command complete?
if (get_cmd_len(m_5380_Command[0]) == m_cmd_ptr)
{
- if (VERBOSE)
- logerror("%s NCR5380: Command (to ID %d): %x %x %x %x %x %x %x %x %x %x\n", machine().describe_context(), m_last_id, m_5380_Command[0], m_5380_Command[1], m_5380_Command[2], m_5380_Command[3], m_5380_Command[4], m_5380_Command[5], m_5380_Command[6], m_5380_Command[7], m_5380_Command[8], m_5380_Command[9]);
+ LOG("%s NCR5380: Command (to ID %d): %x %x %x %x %x %x %x %x %x %x\n", machine().describe_context(), m_last_id, m_5380_Command[0], m_5380_Command[1], m_5380_Command[2], m_5380_Command[3], m_5380_Command[4], m_5380_Command[5], m_5380_Command[6], m_5380_Command[7], m_5380_Command[8], m_5380_Command[9]);
send_command(&m_5380_Command[0], 16);
m_d_limit = get_length();
- if (VERBOSE)
- logerror("NCR5380: Command returned %d bytes\n", m_d_limit);
+ LOG("NCR5380: Command returned %d bytes\n", m_d_limit);
m_d_ptr = 0;
@@ -347,14 +345,12 @@ void ncr5380_device::ncr5380_write_reg(uint32_t offset, uint8_t data)
if (select(m_last_id))
{
- if (VERBOSE)
- logerror("NCR5380: Giving the bus for ID %d\n", m_last_id);
+ LOG("NCR5380: Giving the bus for ID %d\n", m_last_id);
m_5380_Registers[R5380_BUSSTATUS] |= 0x40;
}
else
{
- if (VERBOSE)
- logerror("NCR5380: Rejecting the bus for ID %d\n", m_last_id);
+ LOG("NCR5380: Rejecting the bus for ID %d\n", m_last_id);
m_5380_Registers[R5380_BUSSTATUS] &= ~0x40;
}
}
diff --git a/src/devices/machine/ncr5380.h b/src/devices/machine/ncr5380.h
index 7acf34fe4f0..7c1c8d49a03 100644
--- a/src/devices/machine/ncr5380.h
+++ b/src/devices/machine/ncr5380.h
@@ -5,8 +5,10 @@
*
*/
-#ifndef _NCR5380_H_
-#define _NCR5380_H_
+#ifndef MAME_MACHINE_NCR5380_H
+#define MAME_MACHINE_NCR5380_H
+
+#pragma once
#include "legscsi.h"
@@ -43,7 +45,7 @@ public:
// construction/destruction
ncr5380_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<ncr5380_device &>(device).m_irq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<ncr5380_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
// our API
uint8_t ncr5380_read_reg(uint32_t offset);
@@ -65,6 +67,6 @@ private:
};
// device type definition
-extern const device_type NCR5380;
+DECLARE_DEVICE_TYPE(NCR5380, ncr5380_device)
-#endif
+#endif // MAME_MACHINE_NCR5380_H
diff --git a/src/devices/machine/ncr5380n.cpp b/src/devices/machine/ncr5380n.cpp
index fb57669f284..e52f2ff73bc 100644
--- a/src/devices/machine/ncr5380n.cpp
+++ b/src/devices/machine/ncr5380n.cpp
@@ -17,7 +17,7 @@
#include "emu.h"
#include "ncr5380n.h"
-const device_type NCR5380N = device_creator<ncr5380n_device>;
+DEFINE_DEVICE_TYPE(NCR5380N, ncr5380n_device, "ncr5380_new", "NCR 5380 SCSI (new)")
DEVICE_ADDRESS_MAP_START(map, 8, ncr5380n_device)
AM_RANGE(0x0, 0x0) AM_READWRITE(scsidata_r, outdata_w)
@@ -31,11 +31,12 @@ DEVICE_ADDRESS_MAP_START(map, 8, ncr5380n_device)
ADDRESS_MAP_END
ncr5380n_device::ncr5380n_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nscsi_device(mconfig, NCR5380N, "5380 SCSI (new)", tag, owner, clock, "ncr5380_new", __FILE__), tm(nullptr), status(0), istatus(0), m_mode(0),
- m_outdata(0), m_busstatus(0), m_dmalatch(0), m_icommand(0), m_tcommand(0), clock_conv(0), sync_offset(0), sync_period(0), bus_id(0), select_timeout(0),
- seq(0), tcount(0), mode(0), state(0), irq(false), drq(false),
- m_irq_handler(*this),
- m_drq_handler(*this)
+ : nscsi_device(mconfig, NCR5380N, tag, owner, clock)
+ , tm(nullptr), status(0), istatus(0), m_mode(0)
+ , m_outdata(0), m_busstatus(0), m_dmalatch(0), m_icommand(0), m_tcommand(0), clock_conv(0), sync_offset(0), sync_period(0), bus_id(0), select_timeout(0)
+ , seq(0), tcount(0), mode(0), state(0), irq(false), drq(false)
+ , m_irq_handler(*this)
+ , m_drq_handler(*this)
{
}
diff --git a/src/devices/machine/ncr5380n.h b/src/devices/machine/ncr5380n.h
index fdb83159b50..28f7f440925 100644
--- a/src/devices/machine/ncr5380n.h
+++ b/src/devices/machine/ncr5380n.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef NCR5380N_H
-#define NCR5380N_H
+#ifndef MAME_MACHINE_NCR5380N_H
+#define MAME_MACHINE_NCR5380N_H
+
+#pragma once
#include "machine/nscsi_bus.h"
@@ -25,8 +27,8 @@ public:
ncr5380n_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ncr5380n_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_handler(device_t &device, _Object object) { return downcast<ncr5380n_device &>(device).m_drq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ncr5380n_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb) { return downcast<ncr5380n_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_ADDRESS_MAP(map, 8);
@@ -222,6 +224,6 @@ private:
devcb_write_line m_drq_handler;
};
-extern const device_type NCR5380N;
+DECLARE_DEVICE_TYPE(NCR5380N, ncr5380n_device)
-#endif
+#endif // MAME_MACHINE_NCR5380N_H
diff --git a/src/devices/machine/ncr5390.cpp b/src/devices/machine/ncr5390.cpp
index f5fb37be436..729e486856d 100644
--- a/src/devices/machine/ncr5390.cpp
+++ b/src/devices/machine/ncr5390.cpp
@@ -6,7 +6,7 @@
#define DELAY_HACK
-const device_type NCR5390 = device_creator<ncr5390_device>;
+DEFINE_DEVICE_TYPE(NCR5390, ncr5390_device, "ncr5390", "NCR 5390 SCSI")
DEVICE_ADDRESS_MAP_START(map, 8, ncr5390_device)
AM_RANGE(0x0, 0x0) AM_READWRITE(tcount_lo_r, tcount_lo_w)
@@ -22,10 +22,11 @@ DEVICE_ADDRESS_MAP_START(map, 8, ncr5390_device)
ADDRESS_MAP_END
ncr5390_device::ncr5390_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nscsi_device(mconfig, NCR5390, "5390 SCSI", tag, owner, clock, "ncr5390", __FILE__), tm(nullptr), config(0), status(0), istatus(0), clock_conv(0), sync_offset(0), sync_period(0), bus_id(0),
- select_timeout(0), seq(0), tcount(0), mode(0), fifo_pos(0), command_pos(0), state(0), xfr_phase(0), command_length(0), dma_dir(0), irq(false), drq(false),
- m_irq_handler(*this),
- m_drq_handler(*this)
+ : nscsi_device(mconfig, NCR5390, tag, owner, clock)
+ , tm(nullptr), config(0), status(0), istatus(0), clock_conv(0), sync_offset(0), sync_period(0), bus_id(0)
+ , select_timeout(0), seq(0), tcount(0), mode(0), fifo_pos(0), command_pos(0), state(0), xfr_phase(0), command_length(0), dma_dir(0), irq(false), drq(false)
+ , m_irq_handler(*this)
+ , m_drq_handler(*this)
{
}
diff --git a/src/devices/machine/ncr5390.h b/src/devices/machine/ncr5390.h
index 200e1acb57e..018f9fb5098 100644
--- a/src/devices/machine/ncr5390.h
+++ b/src/devices/machine/ncr5390.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef NCR5390_H
-#define NCR5390_H
+#ifndef MAME_MACHINE_NCR5390_H
+#define MAME_MACHINE_NCR5390_H
+
+#pragma once
#include "machine/nscsi_bus.h"
@@ -17,8 +19,8 @@ public:
ncr5390_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ncr5390_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_handler(device_t &device, _Object object) { return downcast<ncr5390_device &>(device).m_drq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ncr5390_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq_handler(device_t &device, Object &&cb) { return downcast<ncr5390_device &>(device).m_drq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_ADDRESS_MAP(map, 8);
@@ -227,6 +229,6 @@ private:
devcb_write_line m_drq_handler;
};
-extern const device_type NCR5390;
+DECLARE_DEVICE_TYPE(NCR5390, ncr5390_device)
-#endif
+#endif // MAME_MACHINE_NCR5390_H
diff --git a/src/devices/machine/ncr539x.cpp b/src/devices/machine/ncr539x.cpp
index ac7cfcd7698..eedc81e2d05 100644
--- a/src/devices/machine/ncr539x.cpp
+++ b/src/devices/machine/ncr539x.cpp
@@ -13,8 +13,14 @@
#include "emu.h"
#include "ncr539x.h"
-#define VERBOSE (0)
-#define VERBOSE_READS (0)
+#define LOG_GENERAL (1U << 0)
+#define LOG_READS (1U << 1)
+
+//#define VERBOSE (LOG_GENERAL | LOG_READS)
+//#define LOG_OUTPUT_FUNC printf
+#include "logmacro.h"
+
+#define LOGREADS(...) LOGMASKED(LOG_READS, __VA_ARGS__)
enum
{
@@ -50,8 +56,6 @@ enum
#define CR2_GENERATE_REGISTER_PARITY 0x02
#define CR2_GENERATE_DATA_PARITY 0x01
-#if VERBOSE
-#if VERBOSE_READS
static const char *rdregs[16] = {
"Transfer count LSB", // 0
"Transfer count MSB", // 1
@@ -70,7 +74,6 @@ static const char *rdregs[16] = {
"Transfer count HSB/Chip ID",
"0xF"
};
-#endif
static const char *wrregs[16] = {
"Start Transfer count LSB",
@@ -90,7 +93,6 @@ static const char *wrregs[16] = {
"Start Transfer count HSB",
"Data Alignment"
};
-#endif
// get the length of a SCSI command based on its command byte type
static int get_cmd_len(int cbyte)
@@ -110,14 +112,14 @@ static int get_cmd_len(int cbyte)
// LIVE DEVICE
//**************************************************************************
-const device_type NCR539X = device_creator<ncr539x_device>;
+DEFINE_DEVICE_TYPE(NCR539X, ncr539x_device, "ncr539x", "NCR/AMD 5394/5396 SCSI")
//-------------------------------------------------
// ncr539x_device - constructor/destructor
//-------------------------------------------------
ncr539x_device::ncr539x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- legacy_scsi_host_adapter(mconfig, NCR539X, "539x SCSI", tag, owner, clock, "ncr539x", __FILE__),
+ legacy_scsi_host_adapter(mconfig, NCR539X, tag, owner, clock),
m_out_irq_cb(*this),
m_out_drq_cb(*this)
{
@@ -199,9 +201,7 @@ void ncr539x_device::device_timer(emu_timer &timer, device_timer_id tid, int par
m_fifo_ptr = 0;
m_selected = true;
- #if VERBOSE
- printf("Selecting w/o ATN, irq_status = %02x, status = %02x!\n", m_irq_status, m_status);
- #endif
+ LOG("Selecting w/o ATN, irq_status = %02x, status = %02x!\n", m_irq_status, m_status);
// if DMA is not enabled, there should already be a command loaded into the FIFO
if (!(m_command & 0x80))
@@ -212,9 +212,7 @@ void ncr539x_device::device_timer(emu_timer &timer, device_timer_id tid, int par
}
else
{
- #if VERBOSE
- printf("Select failed, no device @ ID %d!\n", m_last_id);
- #endif
+ LOG("Select failed, no device @ ID %d!\n", m_last_id);
m_status |= MAIN_STATUS_INTERRUPT;
m_irq_status |= IRQ_STATUS_DISCONNECTED;
}
@@ -230,9 +228,7 @@ void ncr539x_device::device_timer(emu_timer &timer, device_timer_id tid, int par
m_status |= MAIN_STATUS_INTERRUPT | SCSI_PHASE_COMMAND;
m_fifo_ptr = 0;
m_selected = true;
- #if VERBOSE
- printf("Selecting with ATN, irq_status = %02x, status = %02x!\n", m_irq_status, m_status);
- #endif
+ LOG("Selecting with ATN, irq_status = %02x, status = %02x!\n", m_irq_status, m_status);
// if DMA is not enabled, there should already be a command loaded into the FIFO
if (!(m_command & 0x80))
@@ -243,9 +239,7 @@ void ncr539x_device::device_timer(emu_timer &timer, device_timer_id tid, int par
}
else
{
- #if VERBOSE
- printf("Select failed, no device @ ID %d!\n", m_last_id);
- #endif
+ LOG("Select failed, no device @ ID %d!\n", m_last_id);
m_status |= MAIN_STATUS_INTERRUPT;
m_irq_status |= IRQ_STATUS_DISCONNECTED;
}
@@ -253,9 +247,7 @@ void ncr539x_device::device_timer(emu_timer &timer, device_timer_id tid, int par
break;
case 0x11: // initiator command complete
- #if VERBOSE
- printf("Initiator command complete\n");
- #endif
+ LOG("Initiator command complete\n");
m_irq_status = IRQ_STATUS_SERVICE_REQUEST;
m_status &= ~7; // clear phase bits
m_status |= MAIN_STATUS_INTERRUPT | SCSI_PHASE_DATAIN; // go to data in phase (?)
@@ -272,9 +264,7 @@ void ncr539x_device::device_timer(emu_timer &timer, device_timer_id tid, int par
break;
case 0x12: // message accepted
- #if VERBOSE
- printf("Message accepted\n");
- #endif
+ LOG("Message accepted\n");
m_irq_status = IRQ_STATUS_SERVICE_REQUEST;
m_status |= MAIN_STATUS_INTERRUPT;
m_out_irq_cb(ASSERT_LINE);
@@ -294,11 +284,7 @@ READ8_MEMBER( ncr539x_device::read )
{
uint8_t rv = 0;
- #if VERBOSE
- #if VERBOSE_READS
- printf("539x: Read @ %s (%02x) (PC=%x) (status %02x irq_status %02x)\n", rdregs[offset], offset, space.device().safe_pc(), m_status, m_irq_status);
- #endif
- #endif
+ LOGREADS("539x: Read @ %s (%02x) (PC=%x) (status %02x irq_status %02x)\n", rdregs[offset], offset, space.device().safe_pc(), m_status, m_irq_status);
switch (offset)
{
@@ -327,9 +313,7 @@ READ8_MEMBER( ncr539x_device::read )
m_xfer_count--;
update_fifo_internal_state(fifo_bytes);
- #if VERBOSE
- printf("Read %02x from FIFO[%d], FIFO now contains %d bytes (PC=%x, m_buffer_remaining %x)\n", rv, m_fifo_read_ptr-1, fifo_bytes, space.device().safe_pc(), m_buffer_remaining);
- #endif
+ LOG("Read %02x from FIFO[%d], FIFO now contains %d bytes (PC=%x, m_buffer_remaining %x)\n", rv, m_fifo_read_ptr-1, fifo_bytes, space.device().safe_pc(), m_buffer_remaining);
if (fifo_bytes == 0)
{
@@ -348,15 +332,11 @@ READ8_MEMBER( ncr539x_device::read )
m_buffer_remaining -= fifo_fill_size;
m_fifo_ptr = 0;
update_fifo_internal_state(fifo_fill_size);
- #if VERBOSE
- printf("Refreshing FIFO (%x remaining from transfer, %x in buffer, %x in total)\n", m_xfer_count, m_buffer_remaining, m_total_data);
- #endif
+ LOG("Refreshing FIFO (%x remaining from transfer, %x in buffer, %x in total)\n", m_xfer_count, m_buffer_remaining, m_total_data);
}
else
{
- #if VERBOSE
- printf("FIFO empty, asserting service request (buffer_remaining %x)\n", m_buffer_remaining);
- #endif
+ LOG("FIFO empty, asserting service request (buffer_remaining %x)\n", m_buffer_remaining);
m_irq_status = IRQ_STATUS_SERVICE_REQUEST;
m_status &= 0x7; // clear everything but the phase bits
m_status |= MAIN_STATUS_INTERRUPT | MAIN_STATUS_COUNT_TO_ZERO;
@@ -365,9 +345,7 @@ READ8_MEMBER( ncr539x_device::read )
// if no data at all, drop the phase
if ((m_buffer_remaining + m_total_data) == 0)
{
- #if VERBOSE
- printf("Out of data, setting phase STATUS\n");
- #endif
+ LOG("Out of data, setting phase STATUS\n");
m_status &= ~0x7;
m_status |= SCSI_PHASE_STATUS;
}
@@ -436,10 +414,8 @@ READ8_MEMBER( ncr539x_device::read )
WRITE8_MEMBER( ncr539x_device::write )
{
- #if VERBOSE
//if (offset != 2)
- printf("539x: Write %02x @ %s (%02x) (PC=%x)\n", data, wrregs[offset], offset, space.device().safe_pc());
- #endif
+ LOG("539x: Write %02x @ %s (%02x) (PC=%x)\n", data, wrregs[offset], offset, space.device().safe_pc());
switch (offset)
{
@@ -509,9 +485,7 @@ WRITE8_MEMBER( ncr539x_device::write )
int phase;
phase = get_phase();
- #if VERBOSE
- printf("Information transfer: phase %d buffer remaining %x\n", phase, m_buffer_remaining);
- #endif
+ LOG("Information transfer: phase %d buffer remaining %x\n", phase, m_buffer_remaining);
if (phase == SCSI_PHASE_DATAIN) // target -> initiator transfer
{
@@ -525,9 +499,7 @@ WRITE8_MEMBER( ncr539x_device::write )
amtToGet = m_total_data;
}
- #if VERBOSE
- printf("amtToGet = %x\n", amtToGet);
- #endif
+ LOG("amtToGet = %x\n", amtToGet);
if (amtToGet > 0)
{
@@ -554,9 +526,7 @@ WRITE8_MEMBER( ncr539x_device::write )
fifo_fill_size = m_dma_size;
}
- #if VERBOSE
- printf("filling FIFO from buffer[%x] for %x bytes\n", m_buffer_offset, fifo_fill_size);
- #endif
+ LOG("filling FIFO from buffer[%x] for %x bytes\n", m_buffer_offset, fifo_fill_size);
memcpy(m_fifo, &m_buffer[m_buffer_offset], fifo_fill_size);
m_buffer_offset += fifo_fill_size;
@@ -570,9 +540,7 @@ WRITE8_MEMBER( ncr539x_device::write )
m_status |= MAIN_STATUS_COUNT_TO_ZERO;
- #if VERBOSE
- printf("Information transfer: put %02x bytes into FIFO (dma size %x) (buffer remaining %x)\n", m_fifo_internal_state & 0x1f, m_dma_size, m_buffer_remaining);
- #endif
+ LOG("Information transfer: put %02x bytes into FIFO (dma size %x) (buffer remaining %x)\n", m_fifo_internal_state & 0x1f, m_dma_size, m_buffer_remaining);
}
else if (phase == SCSI_PHASE_DATAOUT)
{
@@ -581,9 +549,7 @@ WRITE8_MEMBER( ncr539x_device::write )
{
m_xfer_count = 0x10000;
}
- #if VERBOSE
- printf("dma_size %x, xfer_count %x\n", m_dma_size, m_xfer_count);
- #endif
+ LOG("dma_size %x, xfer_count %x\n", m_dma_size, m_xfer_count);
m_status &= ~MAIN_STATUS_COUNT_TO_ZERO;
m_fifo_ptr = 0;
m_buffer_offset = 0;
@@ -593,9 +559,7 @@ WRITE8_MEMBER( ncr539x_device::write )
break;
case 0x24: // Terminate steps
- #if VERBOSE
- printf("Terminate steps\n");
- #endif
+ LOG("Terminate steps\n");
m_irq_status = IRQ_STATUS_SUCCESS | IRQ_STATUS_DISCONNECTED;
m_status |= MAIN_STATUS_INTERRUPT;
m_out_irq_cb(ASSERT_LINE);
@@ -604,18 +568,14 @@ WRITE8_MEMBER( ncr539x_device::write )
break;
case 0x27: // Disconnect
- #if VERBOSE
- printf("Disconnect\n");
- #endif
+ LOG("Disconnect\n");
m_irq_status = IRQ_STATUS_SUCCESS;
m_status |= MAIN_STATUS_INTERRUPT;
m_out_irq_cb(ASSERT_LINE);
break;
case 0x44: // Enable selection/reselection
- #if VERBOSE
- printf("Enable selection/reselection\n");
- #endif
+ LOG("Enable selection/reselection\n");
m_irq_status = IRQ_STATUS_SUCCESS;
m_status |= MAIN_STATUS_INTERRUPT;
m_out_irq_cb(ASSERT_LINE);
@@ -630,9 +590,7 @@ WRITE8_MEMBER( ncr539x_device::write )
m_status |= MAIN_STATUS_INTERRUPT | SCSI_PHASE_COMMAND;
m_fifo_ptr = 0;
m_selected = true;
- #if VERBOSE
- printf("Reselecting with ATN3, irq_status = %02x, status = %02x!\n", m_irq_status, m_status);
- #endif
+ LOG("Reselecting with ATN3, irq_status = %02x, status = %02x!\n", m_irq_status, m_status);
// if DMA is not enabled, there should already be a command loaded into the FIFO
if (!(m_command & 0x80))
@@ -643,9 +601,7 @@ WRITE8_MEMBER( ncr539x_device::write )
}
else
{
- #if VERBOSE
- printf("Reselect with ATN3 failed, no device @ ID %d!\n", m_last_id);
- #endif
+ LOG("Reselect with ATN3 failed, no device @ ID %d!\n", m_last_id);
m_status |= MAIN_STATUS_INTERRUPT;
m_irq_status |= IRQ_STATUS_DISCONNECTED;
}
@@ -653,9 +609,7 @@ WRITE8_MEMBER( ncr539x_device::write )
break;
default: // other commands are not instantaneous
- #if VERBOSE
- printf("Setting timer for command %02x\n", data);
- #endif
+ LOG("Setting timer for command %02x\n", data);
// 1x commands happen much faster
if ((m_command & 0x70) == 0x10)
{
@@ -733,9 +687,7 @@ void ncr539x_device::exec_fifo()
length = get_length();
phase = get_phase();
- #if VERBOSE
- printf("Command executed (id %d), new phase %d, length %x\n", m_last_id, phase, length);
- #endif
+ LOG("Command executed (id %d), new phase %d, length %x\n", m_last_id, phase, length);
m_buffer_offset = m_buffer_size;
m_buffer_remaining = 0;
@@ -759,9 +711,7 @@ void ncr539x_device::fifo_write(uint8_t data)
if (phase != SCSI_PHASE_DATAOUT)
{
- #if VERBOSE
- printf("539x: Write %02x @ FIFO[%x]\n", data, m_fifo_ptr);
- #endif
+ LOG("539x: Write %02x @ FIFO[%x]\n", data, m_fifo_ptr);
m_fifo[m_fifo_ptr++] = data;
update_fifo_internal_state(m_fifo_ptr);
@@ -775,9 +725,7 @@ void ncr539x_device::fifo_write(uint8_t data)
m_buffer[m_buffer_offset++] = data;
m_xfer_count--;
m_total_data--;
- #if VERBOSE
- printf("539x: Write %02x @ buffer[%x], xfer_count %x, total %x\n", data, m_buffer_offset-1, m_xfer_count, m_total_data);
- #endif
+ LOG("539x: Write %02x @ buffer[%x], xfer_count %x, total %x\n", data, m_buffer_offset-1, m_xfer_count, m_total_data);
// default to flushing our entire buffer
int flush_size = m_buffer_size;
@@ -790,9 +738,7 @@ void ncr539x_device::fifo_write(uint8_t data)
if ((m_buffer_offset == flush_size) || (m_xfer_count == 0))
{
- #if VERBOSE
- printf("Flushing buffer to device, %x bytes left in buffer (%x total)\n", m_xfer_count, m_total_data);
- #endif
+ LOG("Flushing buffer to device, %x bytes left in buffer (%x total)\n", m_xfer_count, m_total_data);
write_data(m_buffer, flush_size);
m_buffer_offset = 0;
@@ -805,9 +751,7 @@ void ncr539x_device::fifo_write(uint8_t data)
if ((m_xfer_count == 0) && (m_total_data == 0))
{
- #if VERBOSE
- printf("End of write, asserting service request\n");
- #endif
+ LOG("End of write, asserting service request\n");
m_buffer_offset = 0;
m_irq_status = IRQ_STATUS_SERVICE_REQUEST;
diff --git a/src/devices/machine/ncr539x.h b/src/devices/machine/ncr539x.h
index 3803a1ca975..56a34e58e85 100644
--- a/src/devices/machine/ncr539x.h
+++ b/src/devices/machine/ncr539x.h
@@ -5,15 +5,12 @@
*
*/
-#ifndef _NCR539x_H_
-#define _NCR539x_H_
+#ifndef MAME_MACHINE_NCR539X_H
+#define MAME_MACHINE_NCR539X_H
-#include "legscsi.h"
+#pragma once
-//// 539x registers
-//enum
-//{
-//};
+#include "legscsi.h"
// device stuff
@@ -29,8 +26,8 @@ public:
// construction/destruction
ncr539x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<ncr539x_device &>(device).m_out_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_drq_callback(device_t &device, _Object object) { return downcast<ncr539x_device &>(device).m_out_drq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<ncr539x_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_drq_callback(device_t &device, Object &&cb) { return downcast<ncr539x_device &>(device).m_out_drq_cb.set_callback(std::forward<Object>(cb)); }
// our API
DECLARE_READ8_MEMBER(read);
@@ -86,5 +83,6 @@ private:
};
// device type definition
-extern const device_type NCR539X;
-#endif
+DECLARE_DEVICE_TYPE(NCR539X, ncr539x_device)
+
+#endif // MAME_MACHINE_NCR539X_H
diff --git a/src/devices/machine/netlist.cpp b/src/devices/machine/netlist.cpp
index 953ad23c72b..5029b6a973c 100644
--- a/src/devices/machine/netlist.cpp
+++ b/src/devices/machine/netlist.cpp
@@ -27,54 +27,76 @@
#include <utility>
-//#define LOG_DEV_CALLS(x) printf x
-#define LOG_DEV_CALLS(x) do { } while (0)
-const device_type NETLIST_CORE = device_creator<netlist_mame_device_t>;
-const device_type NETLIST_CPU = device_creator<netlist_mame_cpu_device_t>;
-const device_type NETLIST_SOUND = device_creator<netlist_mame_sound_device_t>;
+DEFINE_DEVICE_TYPE(NETLIST_CORE, netlist_mame_device, "netlist_core", "Netlist Core Device")
+DEFINE_DEVICE_TYPE(NETLIST_CPU, netlist_mame_cpu_device, "netlist_cpu", "Netlist CPU Device")
+DEFINE_DEVICE_TYPE(NETLIST_SOUND, netlist_mame_sound_device, "netlist_sound", "Netlist Sound Device")
/* subdevices */
-const device_type NETLIST_ANALOG_INPUT = device_creator<netlist_mame_analog_input_t>;
-const device_type NETLIST_INT_INPUT = device_creator<netlist_mame_int_input_t>;
-const device_type NETLIST_RAM_POINTER = device_creator<netlist_ram_pointer_t>;
-const device_type NETLIST_LOGIC_INPUT = device_creator<netlist_mame_logic_input_t>;
-const device_type NETLIST_STREAM_INPUT = device_creator<netlist_mame_stream_input_t>;
+DEFINE_DEVICE_TYPE(NETLIST_ANALOG_INPUT, netlist_mame_analog_input_device, "nl_analog_in", "Netlist Analog Input")
+DEFINE_DEVICE_TYPE(NETLIST_INT_INPUT, netlist_mame_int_input_device, "nl_int_out", "Netlist Integer Output")
+DEFINE_DEVICE_TYPE(NETLIST_RAM_POINTER, netlist_mame_ram_pointer_device, "nl_ram_ptr", "Netlist RAM Pointer")
+DEFINE_DEVICE_TYPE(NETLIST_LOGIC_INPUT, netlist_mame_logic_input_device, "nl_logic_in", "Netlist Logic Input")
+DEFINE_DEVICE_TYPE(NETLIST_STREAM_INPUT, netlist_mame_stream_input_device, "nl_stream_in", "Netlist Stream Input")
+
+DEFINE_DEVICE_TYPE(NETLIST_LOGIC_OUTPUT, netlist_mame_logic_output_device, "nl_logic_out", "Netlist Logic Output")
+DEFINE_DEVICE_TYPE(NETLIST_ANALOG_OUTPUT, netlist_mame_analog_output_device, "nl_analog_out", "Netlist Analog Output")
+DEFINE_DEVICE_TYPE(NETLIST_STREAM_OUTPUT, netlist_mame_stream_output_device, "nl_stream_out", "Netlist Stream Output")
-const device_type NETLIST_LOGIC_OUTPUT = device_creator<netlist_mame_logic_output_t>;
-const device_type NETLIST_ANALOG_OUTPUT = device_creator<netlist_mame_analog_output_t>;
-const device_type NETLIST_STREAM_OUTPUT = device_creator<netlist_mame_stream_output_t>;
// ----------------------------------------------------------------------------------------
// Special netlist extension devices ....
// ----------------------------------------------------------------------------------------
-class netlist_mame_device_t;
-
-class netlist_mame_t : public netlist::netlist_t
+class netlist_mame_device::netlist_mame_t : public netlist::netlist_t
{
public:
- netlist_mame_t(netlist_mame_device_t &parent, const pstring &aname)
- : netlist::netlist_t(aname),
- m_parent(parent)
- {}
- virtual ~netlist_mame_t() { };
+ netlist_mame_t(netlist_mame_device &parent, const pstring &aname)
+ : netlist::netlist_t(aname)
+ , m_parent(parent)
+ {
+ }
+
+ running_machine &machine() { return m_parent.machine(); }
- inline running_machine &machine();
- netlist_mame_device_t &parent() { return m_parent; }
+ netlist_mame_device &parent() { return m_parent; }
protected:
-
- void vlog(const plib::plog_level &l, const pstring &ls) const override;
+ void vlog(const plib::plog_level &l, const pstring &ls) const override
+ {
+ switch (l)
+ {
+ case plib::plog_level::DEBUG:
+ m_parent.logerror("netlist DEBUG: %s\n", ls.c_str());
+ break;
+ case plib::plog_level::INFO:
+ m_parent.logerror("netlist INFO: %s\n", ls.c_str());
+ break;
+ case plib::plog_level::VERBOSE:
+ m_parent.logerror("netlist VERBOSE: %s\n", ls.c_str());
+ break;
+ case plib::plog_level::WARNING:
+ m_parent.logerror("netlist WARNING: %s\n", ls.c_str());
+ break;
+ case plib::plog_level::ERROR:
+ m_parent.logerror("netlist ERROR: %s\n", ls.c_str());
+ break;
+ case plib::plog_level::FATAL:
+ emu_fatalerror error("netlist ERROR: %s\n", ls.c_str());
+ throw error;
+ }
+ }
private:
- netlist_mame_device_t &m_parent;
+ netlist_mame_device &m_parent;
};
+namespace {
+
// ----------------------------------------------------------------------------------------
// analog_callback
// ----------------------------------------------------------------------------------------
@@ -83,12 +105,12 @@ class NETLIB_NAME(analog_callback) : public netlist::device_t
{
public:
NETLIB_NAME(analog_callback)(netlist::netlist_t &anetlist, const pstring &name)
- : device_t(anetlist, name)
- , m_in(*this, "IN")
- , m_cpu_device(nullptr)
- , m_last(*this, "m_last", 0)
+ : device_t(anetlist, name)
+ , m_in(*this, "IN")
+ , m_cpu_device(nullptr)
+ , m_last(*this, "m_last", 0)
{
- m_cpu_device = downcast<netlist_mame_cpu_device_t *>(&downcast<netlist_mame_t &>(netlist()).parent());
+ m_cpu_device = downcast<netlist_mame_cpu_device *>(&downcast<netlist_mame_device::netlist_mame_t &>(netlist()).parent());
}
ATTR_COLD void reset() override
@@ -96,9 +118,9 @@ public:
m_last = 0.0;
}
- ATTR_COLD void register_callback(netlist_analog_output_delegate callback)
+ ATTR_COLD void register_callback(netlist_mame_analog_output_device::output_delegate &&callback)
{
- m_callback = callback;
+ m_callback = std::move(callback);
}
NETLIB_UPDATEI()
@@ -118,8 +140,8 @@ public:
private:
netlist::analog_input_t m_in;
- netlist_analog_output_delegate m_callback;
- netlist_mame_cpu_device_t *m_cpu_device;
+ netlist_mame_analog_output_device::output_delegate m_callback;
+ netlist_mame_cpu_device *m_cpu_device;
netlist::state_var<nl_double> m_last;
};
@@ -136,7 +158,7 @@ public:
, m_cpu_device(nullptr)
, m_last(*this, "m_last", 0)
{
- m_cpu_device = downcast<netlist_mame_cpu_device_t *>(&downcast<netlist_mame_t &>(netlist()).parent());
+ m_cpu_device = downcast<netlist_mame_cpu_device *>(&downcast<netlist_mame_device::netlist_mame_t &>(netlist()).parent());
}
ATTR_COLD void reset() override
@@ -144,9 +166,9 @@ public:
m_last = 0;
}
- ATTR_COLD void register_callback(netlist_logic_output_delegate callback)
+ ATTR_COLD void register_callback(netlist_mame_logic_output_device::output_delegate &&callback)
{
- m_callback = callback;
+ m_callback = std::move(callback);
}
NETLIB_UPDATEI()
@@ -166,12 +188,73 @@ public:
private:
netlist::logic_input_t m_in;
- netlist_logic_output_delegate m_callback;
- netlist_mame_cpu_device_t *m_cpu_device;
+ netlist_mame_logic_output_device::output_delegate m_callback;
+ netlist_mame_cpu_device *m_cpu_device;
netlist::state_var<netlist_sig_t> m_last;
};
// ----------------------------------------------------------------------------------------
+// Extensions to interface netlist with MAME code ....
+// ----------------------------------------------------------------------------------------
+
+class netlist_source_memregion_t : public netlist::source_t
+{
+public:
+ netlist_source_memregion_t(netlist::setup_t &setup, pstring name)
+ : netlist::source_t(setup), m_name(name)
+ {
+ }
+
+ virtual std::unique_ptr<plib::pistream> stream(const pstring &name) override;
+private:
+ pstring m_name;
+};
+
+class netlist_data_memregions_t : public netlist::source_t
+{
+public:
+ netlist_data_memregions_t(netlist::setup_t &setup);
+
+ virtual std::unique_ptr<plib::pistream> stream(const pstring &name) override;
+};
+
+
+// ----------------------------------------------------------------------------------------
+// memregion source support
+// ----------------------------------------------------------------------------------------
+
+std::unique_ptr<plib::pistream> netlist_source_memregion_t::stream(const pstring &name)
+{
+ memory_region *mem = downcast<netlist_mame_device::netlist_mame_t &>(setup().netlist()).machine().root_device().memregion(m_name.c_str());
+ return plib::make_unique_base<plib::pistream, plib::pimemstream>(mem->base(), mem->bytes());
+}
+
+netlist_data_memregions_t::netlist_data_memregions_t(netlist::setup_t &setup)
+ : netlist::source_t(setup, netlist::source_t::DATA)
+{
+}
+
+std::unique_ptr<plib::pistream> netlist_data_memregions_t::stream(const pstring &name)
+{
+ memory_region *mem = downcast<netlist_mame_device::netlist_mame_t &>(setup().netlist()).parent().memregion(name.c_str());
+ //memory_region *mem = downcast<netlist_mame_t &>(setup().netlist()).machine().root_device().memregion(name.c_str());
+ if (mem != nullptr)
+ {
+ return plib::make_unique_base<plib::pistream, plib::pimemstream>(mem->base(), mem->bytes());
+ }
+ else
+ {
+ // This should be the last data provider being called - last resort
+ fatalerror("data named %s not found in device rom regions\n", name.c_str());
+ return std::unique_ptr<plib::pistream>(nullptr);
+ }
+}
+
+} // anonymous namespace
+
+
+
+// ----------------------------------------------------------------------------------------
// sound_out
// ----------------------------------------------------------------------------------------
@@ -332,48 +415,31 @@ private:
int m_num_channel;
};
-// ----------------------------------------------------------------------------------------
-// Extensions to interface netlist with MAME code ....
-// ----------------------------------------------------------------------------------------
-class netlist_source_memregion_t : public netlist::source_t
-{
-public:
- netlist_source_memregion_t(netlist::setup_t &setup, pstring name)
- : netlist::source_t(setup), m_name(name)
- {
- }
+// netlib #defines this and it fights with logmacro.h
+#undef LOG
- virtual std::unique_ptr<plib::pistream> stream(const pstring &name) override;
-private:
- pstring m_name;
-};
+#define LOG_GENERAL (1U << 0)
+#define LOG_DEV_CALLS (1U << 1)
-class netlist_data_memregions_t : public netlist::source_t
-{
-public:
- netlist_data_memregions_t(netlist::setup_t &setup);
+//#define VERBOSE (LOG_GENERAL | LOG_DEV_CALLS)
+//#define LOG_OUTPUT_FUNC printf
+#include "logmacro.h"
- virtual std::unique_ptr<plib::pistream> stream(const pstring &name) override;
-};
+#define LOGDEVCALLS(...) LOGMASKED(LOG_DEV_CALLS, __VA_ARGS__)
-netlist::setup_t &netlist_mame_device_t::setup()
+netlist::setup_t &netlist_mame_device::setup()
{
return m_netlist->setup();
}
-void netlist_mame_device_t::register_memregion_source(netlist::setup_t &setup, const char *name)
+void netlist_mame_device::register_memregion_source(netlist::setup_t &setup, const char *name)
{
setup.register_source(plib::make_unique_base<netlist::source_t, netlist_source_memregion_t>(setup, pstring(name, pstring::UTF8)));
}
-running_machine &netlist_mame_t::machine()
-{
- return m_parent.machine();
-}
-
-void netlist_mame_analog_input_t::write(const double val)
+void netlist_mame_analog_input_device::write(const double val)
{
if (is_sound_device())
{
@@ -387,43 +453,41 @@ void netlist_mame_analog_input_t::write(const double val)
}
}
-
-
-void netlist_mame_int_input_t::write(const uint32_t val)
+void netlist_mame_int_input_device::write(const uint32_t val)
{
const uint32_t v = (val >> m_shift) & m_mask;
if (v != (*m_param)())
synchronize(0, v);
}
-void netlist_mame_logic_input_t::write(const uint32_t val)
+void netlist_mame_logic_input_device::write(const uint32_t val)
{
const uint32_t v = (val >> m_shift) & 1;
if (v != (*m_param)())
synchronize(0, v);
}
-void netlist_mame_int_input_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void netlist_mame_int_input_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
if (is_sound_device())
update_to_current_time();
m_param->setTo(param);
}
-void netlist_mame_logic_input_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void netlist_mame_logic_input_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
if (is_sound_device())
update_to_current_time();
m_param->setTo(param);
}
-void netlist_ram_pointer_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void netlist_mame_ram_pointer_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
m_data = (*m_param)();
}
-void netlist_mame_cpu_device_t::state_string_export(const device_state_entry &entry, std::string &str) const
+void netlist_mame_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
if (entry.index() >= 0)
{
@@ -436,7 +500,7 @@ void netlist_mame_cpu_device_t::state_string_export(const device_state_entry &en
// ----------------------------------------------------------------------------------------
-// netlist_mame_analog_input_t
+// netlist_mame_analog_input_device
// ----------------------------------------------------------------------------------------
void netlist_mame_sub_interface::static_set_mult_offset(device_t &device, const double mult, const double offset)
@@ -447,24 +511,24 @@ void netlist_mame_sub_interface::static_set_mult_offset(device_t &device, const
}
-netlist_mame_analog_input_t::netlist_mame_analog_input_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NETLIST_ANALOG_INPUT, "Netlist Analog Input", tag, owner, clock, "netlist_analog_input", __FILE__),
- netlist_mame_sub_interface(*owner),
- m_param(nullptr),
- m_auto_port(true),
- m_param_name("")
+netlist_mame_analog_input_device::netlist_mame_analog_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NETLIST_ANALOG_INPUT, tag, owner, clock)
+ , netlist_mame_sub_interface(*owner)
+ , m_param(nullptr)
+ , m_auto_port(true)
+ , m_param_name("")
{
}
-void netlist_mame_analog_input_t::static_set_name(device_t &device, const char *param_name)
+void netlist_mame_analog_input_device::static_set_name(device_t &device, const char *param_name)
{
- netlist_mame_analog_input_t &netlist = downcast<netlist_mame_analog_input_t &>(device);
+ netlist_mame_analog_input_device &netlist = downcast<netlist_mame_analog_input_device &>(device);
netlist.m_param_name = param_name;
}
-void netlist_mame_analog_input_t::device_start()
+void netlist_mame_analog_input_device::device_start()
{
- LOG_DEV_CALLS(("start %s\n", tag()));
+ LOGDEVCALLS("start\n");
netlist::param_t *p = this->nl_owner().setup().find_param(pstring(m_param_name, pstring::UTF8));
m_param = dynamic_cast<netlist::param_double_t *>(p);
if (m_param == nullptr)
@@ -481,104 +545,104 @@ void netlist_mame_analog_input_t::device_start()
// ----------------------------------------------------------------------------------------
-// netlist_mame_analog_output_t
+// netlist_mame_analog_output_device
// ----------------------------------------------------------------------------------------
-netlist_mame_analog_output_t::netlist_mame_analog_output_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NETLIST_ANALOG_OUTPUT, "Netlist Analog Output", tag, owner, clock, "netlist_analog_output", __FILE__),
- netlist_mame_sub_interface(*owner),
- m_in("")
+netlist_mame_analog_output_device::netlist_mame_analog_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NETLIST_ANALOG_OUTPUT, tag, owner, clock)
+ , netlist_mame_sub_interface(*owner)
+ , m_in("")
{
}
-void netlist_mame_analog_output_t::static_set_params(device_t &device, const char *in_name, netlist_analog_output_delegate adelegate)
+void netlist_mame_analog_output_device::static_set_params(device_t &device, const char *in_name, output_delegate &&adelegate)
{
- netlist_mame_analog_output_t &mame_output = downcast<netlist_mame_analog_output_t &>(device);
+ netlist_mame_analog_output_device &mame_output = downcast<netlist_mame_analog_output_device &>(device);
mame_output.m_in = in_name;
- mame_output.m_delegate = adelegate;
+ mame_output.m_delegate = std::move(adelegate);
}
-void netlist_mame_analog_output_t::custom_netlist_additions(netlist::setup_t &setup)
+void netlist_mame_analog_output_device::custom_netlist_additions(netlist::setup_t &setup)
{
const pstring pin(m_in, pstring::UTF8);
pstring dname = pstring("OUT_") + pin;
m_delegate.bind_relative_to(owner()->machine().root_device());
plib::owned_ptr<netlist::device_t> dev = plib::owned_ptr<netlist::device_t>::Create<NETLIB_NAME(analog_callback)>(setup.netlist(), setup.build_fqn(dname));
- static_cast<NETLIB_NAME(analog_callback) *>(dev.get())->register_callback(m_delegate);
+ static_cast<NETLIB_NAME(analog_callback) *>(dev.get())->register_callback(std::move(m_delegate));
setup.netlist().register_dev(std::move(dev));
setup.register_link(dname + ".IN", pin);
}
-void netlist_mame_analog_output_t::device_start()
+void netlist_mame_analog_output_device::device_start()
{
- LOG_DEV_CALLS(("start %s\n", tag()));
+ LOGDEVCALLS("start\n");
}
// ----------------------------------------------------------------------------------------
-// netlist_mame_logic_output_t
+// netlist_mame_logic_output_device
// ----------------------------------------------------------------------------------------
-netlist_mame_logic_output_t::netlist_mame_logic_output_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NETLIST_LOGIC_OUTPUT, "Netlist Logic Output", tag, owner, clock, "netlist_logic_output", __FILE__),
- netlist_mame_sub_interface(*owner),
- m_in("")
+netlist_mame_logic_output_device::netlist_mame_logic_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NETLIST_LOGIC_OUTPUT, tag, owner, clock)
+ , netlist_mame_sub_interface(*owner)
+ , m_in("")
{
}
-void netlist_mame_logic_output_t::static_set_params(device_t &device, const char *in_name, netlist_logic_output_delegate adelegate)
+void netlist_mame_logic_output_device::static_set_params(device_t &device, const char *in_name, output_delegate &&adelegate)
{
- netlist_mame_logic_output_t &mame_output = downcast<netlist_mame_logic_output_t &>(device);
+ netlist_mame_logic_output_device &mame_output = downcast<netlist_mame_logic_output_device &>(device);
mame_output.m_in = in_name;
- mame_output.m_delegate = adelegate;
+ mame_output.m_delegate = std::move(adelegate);
}
-void netlist_mame_logic_output_t::custom_netlist_additions(netlist::setup_t &setup)
+void netlist_mame_logic_output_device::custom_netlist_additions(netlist::setup_t &setup)
{
pstring pin(m_in, pstring::UTF8);
pstring dname = "OUT_" + pin;
m_delegate.bind_relative_to(owner()->machine().root_device());
plib::owned_ptr<netlist::device_t> dev = plib::owned_ptr<netlist::device_t>::Create<NETLIB_NAME(logic_callback)>(setup.netlist(), setup.build_fqn(dname));
- static_cast<NETLIB_NAME(logic_callback) *>(dev.get())->register_callback(m_delegate);
+ static_cast<NETLIB_NAME(logic_callback) *>(dev.get())->register_callback(std::move(m_delegate));
setup.netlist().register_dev(std::move(dev));
setup.register_link(dname + ".IN", pin);
}
-void netlist_mame_logic_output_t::device_start()
+void netlist_mame_logic_output_device::device_start()
{
- LOG_DEV_CALLS(("start %s\n", tag()));
+ LOGDEVCALLS("start\n");
}
// ----------------------------------------------------------------------------------------
-// netlist_mame_int_input_t
+// netlist_mame_int_input_device
// ----------------------------------------------------------------------------------------
-netlist_mame_int_input_t::netlist_mame_int_input_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NETLIST_INT_INPUT, "Netlist Integer Input", tag, owner, clock, "netlist_int_input", __FILE__),
- netlist_mame_sub_interface(*owner),
- m_param(nullptr),
- m_mask(0xffffffff),
- m_shift(0),
- m_param_name("")
+netlist_mame_int_input_device::netlist_mame_int_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NETLIST_INT_INPUT, tag, owner, clock)
+ , netlist_mame_sub_interface(*owner)
+ , m_param(nullptr)
+ , m_mask(0xffffffff)
+ , m_shift(0)
+ , m_param_name("")
{
}
-void netlist_mame_int_input_t::static_set_params(device_t &device, const char *param_name, const uint32_t mask, const uint32_t shift)
+void netlist_mame_int_input_device::static_set_params(device_t &device, const char *param_name, const uint32_t mask, const uint32_t shift)
{
- netlist_mame_int_input_t &netlist = downcast<netlist_mame_int_input_t &>(device);
- LOG_DEV_CALLS(("static_set_params %s\n", device.tag()));
+ netlist_mame_int_input_device &netlist = downcast<netlist_mame_int_input_device &>(device);
+ if (LOG_DEV_CALLS) device.logerror("static_set_params\n");
netlist.m_param_name = param_name;
netlist.m_shift = shift;
netlist.m_mask = mask;
}
-void netlist_mame_int_input_t::device_start()
+void netlist_mame_int_input_device::device_start()
{
- LOG_DEV_CALLS(("start %s\n", tag()));
- netlist::param_t *p = downcast<netlist_mame_device_t *>(this->owner())->setup().find_param(pstring(m_param_name, pstring::UTF8));
+ LOGDEVCALLS("start\n");
+ netlist::param_t *p = downcast<netlist_mame_device *>(this->owner())->setup().find_param(pstring(m_param_name, pstring::UTF8));
m_param = dynamic_cast<netlist::param_int_t *>(p);
if (m_param == nullptr)
{
@@ -587,30 +651,30 @@ void netlist_mame_int_input_t::device_start()
}
// ----------------------------------------------------------------------------------------
-// netlist_mame_logic_input_t
+// netlist_mame_logic_input_device
// ----------------------------------------------------------------------------------------
-netlist_mame_logic_input_t::netlist_mame_logic_input_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NETLIST_LOGIC_INPUT, "Netlist Logic Input", tag, owner, clock, "netlist_logic_input", __FILE__),
- netlist_mame_sub_interface(*owner),
- m_param(nullptr),
- m_shift(0),
- m_param_name("")
+netlist_mame_logic_input_device::netlist_mame_logic_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NETLIST_LOGIC_INPUT, tag, owner, clock)
+ , netlist_mame_sub_interface(*owner)
+ , m_param(nullptr)
+ , m_shift(0)
+ , m_param_name("")
{
}
-void netlist_mame_logic_input_t::static_set_params(device_t &device, const char *param_name, const uint32_t shift)
+void netlist_mame_logic_input_device::static_set_params(device_t &device, const char *param_name, const uint32_t shift)
{
- netlist_mame_logic_input_t &netlist = downcast<netlist_mame_logic_input_t &>(device);
- LOG_DEV_CALLS(("static_set_params %s\n", device.tag()));
+ netlist_mame_logic_input_device &netlist = downcast<netlist_mame_logic_input_device &>(device);
+ if (LOG_DEV_CALLS) device.logerror("static_set_params\n");
netlist.m_param_name = param_name;
netlist.m_shift = shift;
}
-void netlist_mame_logic_input_t::device_start()
+void netlist_mame_logic_input_device::device_start()
{
- LOG_DEV_CALLS(("start %s\n", tag()));
- netlist::param_t *p = downcast<netlist_mame_device_t *>(this->owner())->setup().find_param(pstring(m_param_name, pstring::UTF8));
+ LOGDEVCALLS("start\n");
+ netlist::param_t *p = downcast<netlist_mame_device *>(this->owner())->setup().find_param(pstring(m_param_name, pstring::UTF8));
m_param = dynamic_cast<netlist::param_logic_t *>(p);
if (m_param == nullptr)
{
@@ -620,29 +684,29 @@ void netlist_mame_logic_input_t::device_start()
// ----------------------------------------------------------------------------------------
-// netlist_ram_pointer_t
+// netlist_mame_ram_pointer_device
// ----------------------------------------------------------------------------------------
-netlist_ram_pointer_t::netlist_ram_pointer_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NETLIST_RAM_POINTER, "Netlist RAM Pointer", tag, owner, clock, "netlist_ram_pointer", __FILE__)
- , netlist_mame_sub_interface(*owner)
- , m_param(nullptr)
- , m_param_name("")
- , m_data(nullptr)
+netlist_mame_ram_pointer_device::netlist_mame_ram_pointer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NETLIST_RAM_POINTER, tag, owner, clock)
+ , netlist_mame_sub_interface(*owner)
+ , m_param(nullptr)
+ , m_param_name("")
+ , m_data(nullptr)
{
}
-void netlist_ram_pointer_t::static_set_params(device_t &device, const char *param_name)
+void netlist_mame_ram_pointer_device::static_set_params(device_t &device, const char *param_name)
{
- netlist_ram_pointer_t &netlist = downcast<netlist_ram_pointer_t&>(device);
- LOG_DEV_CALLS(("static_set_params %s\n", device.tag()));
+ netlist_mame_ram_pointer_device &netlist = downcast<netlist_mame_ram_pointer_device&>(device);
+ if (LOG_DEV_CALLS) device.logerror("static_set_params\n");
netlist.m_param_name = param_name;
}
-void netlist_ram_pointer_t::device_start()
+void netlist_mame_ram_pointer_device::device_start()
{
- LOG_DEV_CALLS(("start %s\n", tag()));
- netlist::param_t *p = downcast<netlist_mame_device_t *>(this->owner())->setup().find_param(pstring(m_param_name, pstring::UTF8));
+ LOGDEVCALLS("start\n");
+ netlist::param_t *p = downcast<netlist_mame_device *>(this->owner())->setup().find_param(pstring(m_param_name, pstring::UTF8));
m_param = dynamic_cast<netlist::param_ptr_t *>(p);
if (m_param == nullptr)
{
@@ -653,30 +717,30 @@ void netlist_ram_pointer_t::device_start()
}
// ----------------------------------------------------------------------------------------
-// netlist_mame_stream_input_t
+// netlist_mame_stream_input_device
// ----------------------------------------------------------------------------------------
-netlist_mame_stream_input_t::netlist_mame_stream_input_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NETLIST_STREAM_INPUT, "Netlist Stream Input", tag, owner, clock, "netlist_stream_input", __FILE__),
- netlist_mame_sub_interface(*owner),
- m_channel(0),
- m_param_name("")
+netlist_mame_stream_input_device::netlist_mame_stream_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NETLIST_STREAM_INPUT, tag, owner, clock)
+ , netlist_mame_sub_interface(*owner)
+ , m_channel(0)
+ , m_param_name("")
{
}
-void netlist_mame_stream_input_t::static_set_params(device_t &device, int channel, const char *param_name)
+void netlist_mame_stream_input_device::static_set_params(device_t &device, int channel, const char *param_name)
{
- netlist_mame_stream_input_t &netlist = downcast<netlist_mame_stream_input_t &>(device);
+ netlist_mame_stream_input_device &netlist = downcast<netlist_mame_stream_input_device &>(device);
netlist.m_param_name = param_name;
netlist.m_channel = channel;
}
-void netlist_mame_stream_input_t::device_start()
+void netlist_mame_stream_input_device::device_start()
{
- LOG_DEV_CALLS(("start %s\n", tag()));
+ LOGDEVCALLS("start\n");
}
-void netlist_mame_stream_input_t::custom_netlist_additions(netlist::setup_t &setup)
+void netlist_mame_stream_input_device::custom_netlist_additions(netlist::setup_t &setup)
{
if (!setup.device_exists("STREAM_INPUT"))
setup.register_dev("NETDEV_SOUND_IN", "STREAM_INPUT");
@@ -690,30 +754,30 @@ void netlist_mame_stream_input_t::custom_netlist_additions(netlist::setup_t &set
}
// ----------------------------------------------------------------------------------------
-// netlist_mame_stream_output_t
+// netlist_mame_stream_output_device
// ----------------------------------------------------------------------------------------
-netlist_mame_stream_output_t::netlist_mame_stream_output_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NETLIST_STREAM_OUTPUT, "Netlist Stream Output", tag, owner, clock, "netlist_stream_output", __FILE__),
- netlist_mame_sub_interface(*owner),
- m_channel(0),
- m_out_name("")
+netlist_mame_stream_output_device::netlist_mame_stream_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NETLIST_STREAM_OUTPUT, tag, owner, clock)
+ , netlist_mame_sub_interface(*owner)
+ , m_channel(0)
+ , m_out_name("")
{
}
-void netlist_mame_stream_output_t::static_set_params(device_t &device, int channel, const char *out_name)
+void netlist_mame_stream_output_device::static_set_params(device_t &device, int channel, const char *out_name)
{
- netlist_mame_stream_output_t &netlist = downcast<netlist_mame_stream_output_t &>(device);
+ netlist_mame_stream_output_device &netlist = downcast<netlist_mame_stream_output_device &>(device);
netlist.m_out_name = out_name;
netlist.m_channel = channel;
}
-void netlist_mame_stream_output_t::device_start()
+void netlist_mame_stream_output_device::device_start()
{
- LOG_DEV_CALLS(("start %s\n", tag()));
+ LOGDEVCALLS("start\n");
}
-void netlist_mame_stream_output_t::custom_netlist_additions(netlist::setup_t &setup)
+void netlist_mame_stream_output_device::custom_netlist_additions(netlist::setup_t &setup)
{
//NETLIB_NAME(sound_out) *snd_out;
pstring sname = plib::pfmt("STREAM_OUT_{1}")(m_channel);
@@ -729,84 +793,49 @@ void netlist_mame_stream_output_t::custom_netlist_additions(netlist::setup_t &se
// ----------------------------------------------------------------------------------------
-// netlist_mame_t
+// netlist_mame_device
// ----------------------------------------------------------------------------------------
-void netlist_mame_t::vlog(const plib::plog_level &l, const pstring &ls) const
-{
- pstring errstr = ls;
-
- switch (l)
- {
- case plib::plog_level::DEBUG:
- m_parent.logerror("netlist DEBUG: %s\n", errstr.c_str());
- break;
- case plib::plog_level::INFO:
- m_parent.logerror("netlist INFO: %s\n", errstr.c_str());
- break;
- case plib::plog_level::VERBOSE:
- m_parent.logerror("netlist VERBOSE: %s\n", errstr.c_str());
- break;
- case plib::plog_level::WARNING:
- m_parent.logerror("netlist WARNING: %s\n", errstr.c_str());
- break;
- case plib::plog_level::ERROR:
- m_parent.logerror("netlist ERROR: %s\n", errstr.c_str());
- break;
- case plib::plog_level::FATAL:
- emu_fatalerror error("netlist ERROR: %s\n", errstr.c_str());
- throw error;
- }
-}
-
-// ----------------------------------------------------------------------------------------
-// netlist_mame_device_t
-// ----------------------------------------------------------------------------------------
-
-netlist_mame_device_t::netlist_mame_device_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NETLIST_CORE, "Netlist core device", tag, owner, clock, "netlist_core", __FILE__),
- m_icount(0),
- m_old(netlist::netlist_time::zero()),
- m_netlist(nullptr),
- m_setup_func(nullptr)
+netlist_mame_device::netlist_mame_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : netlist_mame_device(mconfig, NETLIST_CORE, tag, owner, clock)
{
}
-netlist_mame_device_t::netlist_mame_device_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *file)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, file),
- m_icount(0),
- m_old(netlist::netlist_time::zero()),
- m_netlist(nullptr),
- m_setup_func(nullptr)
+netlist_mame_device::netlist_mame_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_icount(0)
+ , m_old(netlist::netlist_time::zero())
+ , m_netlist(nullptr)
+ , m_setup_func(nullptr)
{
}
-netlist_mame_device_t::~netlist_mame_device_t()
+netlist_mame_device::~netlist_mame_device()
{
- LOG_DEV_CALLS(("~netlist_mame_device_t\n"));
+ LOGDEVCALLS("~netlist_mame_device\n");
}
-void netlist_mame_device_t::static_set_constructor(device_t &device, void (*setup_func)(netlist::setup_t &))
+void netlist_mame_device::static_set_constructor(device_t &device, void (*setup_func)(netlist::setup_t &))
{
- LOG_DEV_CALLS(("static_set_constructor\n"));
- netlist_mame_device_t &netlist = downcast<netlist_mame_device_t &>(device);
+ if (LOG_DEV_CALLS) device.logerror("static_set_constructor\n");
+ netlist_mame_device &netlist = downcast<netlist_mame_device &>(device);
netlist.m_setup_func = setup_func;
}
-void netlist_mame_device_t::device_config_complete()
+void netlist_mame_device::device_config_complete()
{
- LOG_DEV_CALLS(("device_config_complete %s %s\n", this->mconfig().gamedrv().name, this->tag()));
+ LOGDEVCALLS("device_config_complete %s\n", this->mconfig().gamedrv().name);
}
-void netlist_mame_device_t::device_validity_check(validity_checker &valid) const
+void netlist_mame_device::device_validity_check(validity_checker &valid) const
{
- LOG_DEV_CALLS(("device_validity_check %s\n", this->mconfig().gamedrv().name));
+ LOGDEVCALLS("device_validity_check %s\n", this->mconfig().gamedrv().name);
}
-void netlist_mame_device_t::device_start()
+void netlist_mame_device::device_start()
{
- LOG_DEV_CALLS(("device_start entry %s\n", tag()));
+ LOGDEVCALLS("device_start entry\n");
//printf("clock is %d\n", clock());
@@ -822,7 +851,7 @@ void netlist_mame_device_t::device_start()
netlist_mame_sub_interface *sdev = dynamic_cast<netlist_mame_sub_interface *>(&d);
if( sdev != nullptr )
{
- LOG_DEV_CALLS(("Preparse subdevice %s/%s\n", d.name(), d.shortname()));
+ LOGDEVCALLS("Preparse subdevice %s/%s\n", d.name(), d.shortname());
sdev->pre_parse_action(setup());
}
}
@@ -838,7 +867,7 @@ void netlist_mame_device_t::device_start()
netlist_mame_sub_interface *sdev = dynamic_cast<netlist_mame_sub_interface *>(&d);
if( sdev != nullptr )
{
- LOG_DEV_CALLS(("Found subdevice %s/%s\n", d.name(), d.shortname()));
+ LOGDEVCALLS("Found subdevice %s/%s\n", d.name(), d.shortname());
sdev->custom_netlist_additions(setup());
}
}
@@ -854,53 +883,49 @@ void netlist_mame_device_t::device_start()
m_old = netlist::netlist_time::zero();
m_rem = netlist::netlist_time::zero();
- LOG_DEV_CALLS(("device_start exit %s\n", tag()));
+ LOGDEVCALLS("device_start exit\n");
}
-void netlist_mame_device_t::device_clock_changed()
+void netlist_mame_device::device_clock_changed()
{
m_div = netlist::netlist_time::from_hz(clock());
netlist().log().debug("Setting clock {1} and divisor {2}\n", clock(), m_div.as_double());
}
-void netlist_mame_device_t::device_reset()
+void netlist_mame_device::device_reset()
{
- LOG_DEV_CALLS(("device_reset\n"));
+ LOGDEVCALLS("device_reset\n");
m_old = netlist::netlist_time::zero();
m_rem = netlist::netlist_time::zero();
netlist().reset();
}
-void netlist_mame_device_t::device_stop()
+void netlist_mame_device::device_stop()
{
- LOG_DEV_CALLS(("device_stop\n"));
+ LOGDEVCALLS("device_stop\n");
netlist().stop();
global_free(m_netlist);
m_netlist = nullptr;
}
-ATTR_COLD void netlist_mame_device_t::device_post_load()
+ATTR_COLD void netlist_mame_device::device_post_load()
{
- LOG_DEV_CALLS(("device_post_load\n"));
+ LOGDEVCALLS("device_post_load\n");
netlist().state().post_load();
netlist().rebuild_lists();
}
-ATTR_COLD void netlist_mame_device_t::device_pre_save()
+ATTR_COLD void netlist_mame_device::device_pre_save()
{
- LOG_DEV_CALLS(("device_pre_save\n"));
+ LOGDEVCALLS("device_pre_save\n");
netlist().state().pre_save();
}
-void netlist_mame_device_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
-{
-}
-
-void netlist_mame_device_t::update_time_x()
+void netlist_mame_device::update_time_x()
{
const netlist::netlist_time newt(netlist().time());
const netlist::netlist_time delta(newt - m_old + m_rem);
@@ -910,13 +935,13 @@ void netlist_mame_device_t::update_time_x()
m_icount -= d;
}
-void netlist_mame_device_t::check_mame_abort_slice()
+void netlist_mame_device::check_mame_abort_slice()
{
if (m_icount <= 0)
netlist().abort_current_queue_slice();
}
-ATTR_COLD void netlist_mame_device_t::save_state()
+ATTR_COLD void netlist_mame_device::save_state()
{
for (auto const & s : netlist().state().save_list())
{
@@ -957,24 +982,24 @@ ATTR_COLD void netlist_mame_device_t::save_state()
}
// ----------------------------------------------------------------------------------------
-// netlist_mame_cpu_device_t
+// netlist_mame_cpu_device
// ----------------------------------------------------------------------------------------
-netlist_mame_cpu_device_t::netlist_mame_cpu_device_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : netlist_mame_device_t(mconfig, NETLIST_CPU, "Netlist CPU Device", tag, owner, clock, "netlist_cpu", __FILE__),
- device_execute_interface(mconfig, *this),
- device_state_interface(mconfig, *this),
- device_disasm_interface(mconfig, *this),
- device_memory_interface(mconfig, *this),
- m_program_config("program", ENDIANNESS_LITTLE, 8, 12), // Interface is needed to keep debugger happy
- m_genPC(0)
+netlist_mame_cpu_device::netlist_mame_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : netlist_mame_device(mconfig, NETLIST_CPU, tag, owner, clock)
+ , device_execute_interface(mconfig, *this)
+ , device_state_interface(mconfig, *this)
+ , device_disasm_interface(mconfig, *this)
+ , device_memory_interface(mconfig, *this)
+ , m_program_config("program", ENDIANNESS_LITTLE, 8, 12) // Interface is needed to keep debugger happy
+ , m_genPC(0)
{
}
-void netlist_mame_cpu_device_t::device_start()
+void netlist_mame_cpu_device::device_start()
{
- netlist_mame_device_t::device_start();
+ netlist_mame_device::device_start();
// State support
@@ -999,22 +1024,22 @@ void netlist_mame_cpu_device_t::device_start()
}
-void netlist_mame_cpu_device_t::nl_register_devices()
+void netlist_mame_cpu_device::nl_register_devices()
{
setup().factory().register_device<nld_analog_callback>( "NETDEV_CALLBACK", "nld_analog_callback", "-");
}
-ATTR_COLD uint64_t netlist_mame_cpu_device_t::execute_clocks_to_cycles(uint64_t clocks) const
+ATTR_COLD uint64_t netlist_mame_cpu_device::execute_clocks_to_cycles(uint64_t clocks) const
{
return clocks;
}
-ATTR_COLD uint64_t netlist_mame_cpu_device_t::execute_cycles_to_clocks(uint64_t cycles) const
+ATTR_COLD uint64_t netlist_mame_cpu_device::execute_cycles_to_clocks(uint64_t cycles) const
{
return cycles;
}
-ATTR_COLD offs_t netlist_mame_cpu_device_t::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options)
+ATTR_COLD offs_t netlist_mame_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options)
{
//char tmp[16];
unsigned startpc = pc;
@@ -1031,7 +1056,7 @@ ATTR_COLD offs_t netlist_mame_cpu_device_t::disasm_disassemble(std::ostream &str
return (pc - startpc);
}
-ATTR_HOT void netlist_mame_cpu_device_t::execute_run()
+ATTR_HOT void netlist_mame_cpu_device::execute_run()
{
bool check_debugger = ((device_t::machine().debug_flags & DEBUG_FLAG_ENABLED) != 0);
// debugging
@@ -1055,25 +1080,25 @@ ATTR_HOT void netlist_mame_cpu_device_t::execute_run()
}
// ----------------------------------------------------------------------------------------
-// netlist_mame_sound_device_t
+// netlist_mame_sound_device
// ----------------------------------------------------------------------------------------
-netlist_mame_sound_device_t::netlist_mame_sound_device_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : netlist_mame_device_t(mconfig, NETLIST_SOUND, "Netlist Sound Device", tag, owner, clock, "netlist_sound", __FILE__),
- device_sound_interface(mconfig, *this),
- m_out{nullptr},
- m_in(nullptr),
- m_stream(nullptr),
- m_num_inputs(0),
- m_num_outputs(0)
+netlist_mame_sound_device::netlist_mame_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : netlist_mame_device(mconfig, NETLIST_SOUND, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_out{nullptr}
+ , m_in(nullptr)
+ , m_stream(nullptr)
+ , m_num_inputs(0)
+ , m_num_outputs(0)
{
}
-void netlist_mame_sound_device_t::device_start()
+void netlist_mame_sound_device::device_start()
{
- netlist_mame_device_t::device_start();
+ netlist_mame_device::device_start();
- LOG_DEV_CALLS(("sound device_start %s\n", tag()));
+ LOGDEVCALLS("sound device_start\n");
// Configure outputs
@@ -1118,14 +1143,14 @@ void netlist_mame_sound_device_t::device_start()
}
-void netlist_mame_sound_device_t::nl_register_devices()
+void netlist_mame_sound_device::nl_register_devices()
{
setup().factory().register_device<nld_sound_out>("NETDEV_SOUND_OUT", "nld_sound_out", "+CHAN");
setup().factory().register_device<nld_sound_in>("NETDEV_SOUND_IN", "nld_sound_in", "-");
}
-void netlist_mame_sound_device_t::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
+void netlist_mame_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
for (int i=0; i < m_num_outputs; i++)
{
@@ -1152,35 +1177,3 @@ void netlist_mame_sound_device_t::sound_stream_update(sound_stream &stream, stre
m_out[i]->buffer_reset(cur);
}
}
-
-// ----------------------------------------------------------------------------------------
-// memregion source support
-// ----------------------------------------------------------------------------------------
-
-std::unique_ptr<plib::pistream> netlist_source_memregion_t::stream(const pstring &name)
-{
- memory_region *mem = downcast<netlist_mame_t &>(setup().netlist()).machine().root_device().memregion(m_name.c_str());
- return plib::make_unique_base<plib::pistream, plib::pimemstream>(mem->base(), mem->bytes());
-}
-
-netlist_data_memregions_t::netlist_data_memregions_t(netlist::setup_t &setup)
-: netlist::source_t(setup, netlist::source_t::DATA)
-{
-}
-
-std::unique_ptr<plib::pistream> netlist_data_memregions_t::stream(const pstring &name)
-{
- memory_region *mem = downcast<netlist_mame_t &>(setup().netlist()).parent().memregion(name.c_str());
- //memory_region *mem = downcast<netlist_mame_t &>(setup().netlist()).machine().root_device().memregion(name.c_str());
- if (mem != nullptr)
- {
- return plib::make_unique_base<plib::pistream, plib::pimemstream>(mem->base(), mem->bytes());
- }
- else
- {
- // This should be the last data provider being called - last resort
- fatalerror("data named %s not found in device rom regions\n", name.c_str());
- return std::unique_ptr<plib::pistream>(nullptr);
- }
-}
-
diff --git a/src/devices/machine/netlist.h b/src/devices/machine/netlist.h
index a4e13611e82..55af64ecd8e 100644
--- a/src/devices/machine/netlist.h
+++ b/src/devices/machine/netlist.h
@@ -8,13 +8,13 @@
****************************************************************************/
-#ifndef NETLIST_H
-#define NETLIST_H
-
+#ifndef MAME_MACHINE_NETLIST_H
+#define MAME_MACHINE_NETLIST_H
#include "netlist/nl_time.h"
-class netlist_mame_t;
+class nld_sound_out;
+class nld_sound_in;
namespace netlist {
class setup_t;
@@ -24,63 +24,64 @@ namespace netlist {
class param_ptr_t;
}
+
// MAME specific configuration
#define MCFG_NETLIST_SETUP(_setup) \
- netlist_mame_device_t::static_set_constructor(*device, NETLIST_NAME(_setup));
+ netlist_mame_device::static_set_constructor(*device, NETLIST_NAME(_setup));
#define MCFG_NETLIST_ANALOG_INPUT(_basetag, _tag, _name) \
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_ANALOG_INPUT, 0) \
- netlist_mame_analog_input_t::static_set_name(*device, _name);
+ netlist_mame_analog_input_device::static_set_name(*device, _name);
#define MCFG_NETLIST_ANALOG_MULT_OFFSET(_mult, _offset) \
netlist_mame_sub_interface::static_set_mult_offset(*device, _mult, _offset);
#define MCFG_NETLIST_ANALOG_OUTPUT(_basetag, _tag, _IN, _class, _member, _class_tag) \
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_ANALOG_OUTPUT, 0) \
- netlist_mame_analog_output_t::static_set_params(*device, _IN, \
- netlist_analog_output_delegate(& _class :: _member, \
+ netlist_mame_analog_output_device::static_set_params(*device, _IN, \
+ netlist_mame_analog_output_device::output_delegate(& _class :: _member, \
# _class "::" # _member, _class_tag, (_class *)nullptr) );
#define MCFG_NETLIST_LOGIC_OUTPUT(_basetag, _tag, _IN, _class, _member, _class_tag) \
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_LOGIC_OUTPUT, 0) \
- netlist_mame_logic_output_t::static_set_params(*device, _IN, \
- netlist_logic_output_delegate(& _class :: _member, \
+ netlist_mame_logic_output_device::static_set_params(*device, _IN, \
+ netlist_mame_logic_output_device::output_delegate(& _class :: _member, \
# _class "::" # _member, _class_tag, (_class *)nullptr) );
#define MCFG_NETLIST_LOGIC_INPUT(_basetag, _tag, _name, _shift) \
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_LOGIC_INPUT, 0) \
- netlist_mame_logic_input_t::static_set_params(*device, _name, _shift);
+ netlist_mame_logic_input_device::static_set_params(*device, _name, _shift);
#define MCFG_NETLIST_INT_INPUT(_basetag, _tag, _name, _shift, _mask) \
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_INT_INPUT, 0) \
- netlist_mame_int_input_t::static_set_params(*device, _name, _mask, _shift);
+ netlist_mame_int_input_device::static_set_params(*device, _name, _mask, _shift);
#define MCFG_NETLIST_RAM_POINTER(_basetag, _tag, _name) \
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_RAM_POINTER, 0) \
- netlist_ram_pointer_t::static_set_params(*device, _name ".m_RAM");
+ netlist_mame_ram_pointer_device::static_set_params(*device, _name ".m_RAM");
#define MCFG_NETLIST_STREAM_INPUT(_basetag, _chan, _name) \
MCFG_DEVICE_ADD(_basetag ":cin" # _chan, NETLIST_STREAM_INPUT, 0) \
- netlist_mame_stream_input_t::static_set_params(*device, _chan, _name);
+ netlist_mame_stream_input_device::static_set_params(*device, _chan, _name);
#define MCFG_NETLIST_STREAM_OUTPUT(_basetag, _chan, _name) \
MCFG_DEVICE_ADD(_basetag ":cout" # _chan, NETLIST_STREAM_OUTPUT, 0) \
- netlist_mame_stream_output_t::static_set_params(*device, _chan, _name);
+ netlist_mame_stream_output_device::static_set_params(*device, _chan, _name);
#define NETLIST_LOGIC_PORT_CHANGED(_base, _tag) \
- PORT_CHANGED_MEMBER(_base ":" _tag, netlist_mame_logic_input_t, input_changed, 0)
+ PORT_CHANGED_MEMBER(_base ":" _tag, netlist_mame_logic_input_device, input_changed, 0)
#define NETLIST_INT_PORT_CHANGED(_base, _tag) \
- PORT_CHANGED_MEMBER(_base ":" _tag, netlist_mame_logic_input_t, input_changed, 0)
+ PORT_CHANGED_MEMBER(_base ":" _tag, netlist_mame_logic_input_device, input_changed, 0)
#define NETLIST_ANALOG_PORT_CHANGED(_base, _tag) \
- PORT_CHANGED_MEMBER(_base ":" _tag, netlist_mame_analog_input_t, input_changed, 0)
+ PORT_CHANGED_MEMBER(_base ":" _tag, netlist_mame_analog_input_device, input_changed, 0)
#define MEMREGION_SOURCE(_name) \
- netlist_mame_device_t::register_memregion_source(setup, _name);
+ netlist_mame_device::register_memregion_source(setup, _name);
#define NETDEV_ANALOG_CALLBACK_MEMBER(_name) \
void _name(const double data, const attotime &time)
@@ -91,17 +92,17 @@ namespace netlist {
// ----------------------------------------------------------------------------------------
-// netlist_mame_device_t
+// netlist_mame_device
// ----------------------------------------------------------------------------------------
-class netlist_mame_device_t : public device_t
+class netlist_mame_device : public device_t
{
public:
+ class netlist_mame_t;
// construction/destruction
- netlist_mame_device_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- netlist_mame_device_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *file);
- virtual ~netlist_mame_device_t();
+ netlist_mame_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~netlist_mame_device();
static void static_set_constructor(device_t &device, void (*setup_func)(netlist::setup_t &));
@@ -117,9 +118,10 @@ public:
int m_icount;
protected:
- // Custom to netlist ...
+ netlist_mame_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- virtual void nl_register_devices() { };
+ // Custom to netlist ...
+ virtual void nl_register_devices() { }
// device_t overrides
virtual void device_config_complete() override;
@@ -129,8 +131,6 @@ protected:
virtual void device_reset() override;
virtual void device_post_load() override;
virtual void device_pre_save() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- //virtual void device_debug_setup();
virtual void device_clock_changed() override;
netlist::netlist_time m_div;
@@ -148,36 +148,27 @@ private:
};
// ----------------------------------------------------------------------------------------
-// netlist_mame_cpu_device_t
+// netlist_mame_cpu_device
// ----------------------------------------------------------------------------------------
-class netlist_mame_cpu_device_t : public netlist_mame_device_t,
- public device_execute_interface,
- public device_state_interface,
- public device_disasm_interface,
- public device_memory_interface
+class netlist_mame_cpu_device : public netlist_mame_device,
+ public device_execute_interface,
+ public device_state_interface,
+ public device_disasm_interface,
+ public device_memory_interface
{
public:
-
// construction/destruction
- netlist_mame_cpu_device_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~netlist_mame_cpu_device_t() {}
+ netlist_mame_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
protected:
- // netlist_mame_device_t
+ // netlist_mame_device
virtual void nl_register_devices() override;
// device_t overrides
-
- //virtual void device_config_complete();
virtual void device_start() override;
- //virtual void device_stop();
- //virtual void device_reset();
- //virtual void device_post_load();
- //virtual void device_pre_save();
- //virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
// device_execute_interface overrides
-
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override;
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override;
@@ -189,69 +180,46 @@ protected:
ATTR_COLD virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
// device_memory_interface overrides
-
- address_space_config m_program_config;
-
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override
{
- switch (spacenum)
- {
- case AS_PROGRAM: return &m_program_config;
- case AS_IO: return nullptr;
- default: return nullptr;
- }
+ return (AS_PROGRAM == spacenum) ? &m_program_config : nullptr;
}
// device_state_interface overrides
-
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
-private:
+ address_space_config m_program_config;
+private:
int m_genPC;
-
};
-class nld_sound_out;
-class nld_sound_in;
-
// ----------------------------------------------------------------------------------------
-// netlist_mame_sound_device_t
+// netlist_mame_sound_device
// ----------------------------------------------------------------------------------------
-class netlist_mame_sound_device_t : public netlist_mame_device_t,
- public device_sound_interface
+class netlist_mame_sound_device : public netlist_mame_device,
+ public device_sound_interface
{
public:
-
// construction/destruction
- netlist_mame_sound_device_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~netlist_mame_sound_device_t() {}
+ netlist_mame_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
inline sound_stream *get_stream() { return m_stream; }
// device_sound_interface overrides
-
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
protected:
- // netlist_mame_device_t
+ // netlist_mame_device
virtual void nl_register_devices() override;
// device_t overrides
-
- //virtual void device_config_complete();
virtual void device_start() override;
- //virtual void device_stop();
- //virtual void device_reset();
- //virtual void device_post_load();
- //virtual void device_pre_save();
- //virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
private:
-
- static const int MAX_OUT = 10;
+ static constexpr int MAX_OUT = 10;
nld_sound_out *m_out[MAX_OUT];
nld_sound_in *m_in;
sound_stream *m_stream;
@@ -269,24 +237,20 @@ class netlist_mame_sub_interface
public:
// construction/destruction
netlist_mame_sub_interface(device_t &aowner)
- : m_offset(0.0), m_mult(1.0)
+ : m_offset(0.0), m_mult(1.0)
+ , m_owner(dynamic_cast<netlist_mame_device *>(&aowner))
+ , m_sound(dynamic_cast<netlist_mame_sound_device *>(&aowner))
{
- m_owner = dynamic_cast<netlist_mame_device_t *>(&aowner);
- m_sound = dynamic_cast<netlist_mame_sound_device_t *>(&aowner);
}
- virtual ~netlist_mame_sub_interface() { }
virtual void custom_netlist_additions(netlist::setup_t &setup) { }
virtual void pre_parse_action(netlist::setup_t &setup) { }
- inline netlist_mame_device_t &nl_owner() const { return *m_owner; }
+ inline netlist_mame_device &nl_owner() const { return *m_owner; }
- inline bool is_sound_device() const { return (m_sound != nullptr); }
+ inline bool is_sound_device() const { return bool(m_sound); }
- inline void update_to_current_time()
- {
- m_sound->get_stream()->update();
- }
+ inline void update_to_current_time() { m_sound->get_stream()->update(); }
static void static_set_mult_offset(device_t &device, const double mult, const double offset);
@@ -295,22 +259,20 @@ protected:
double m_mult;
private:
- netlist_mame_device_t *m_owner;
- netlist_mame_sound_device_t *m_sound;
+ netlist_mame_device *const m_owner;
+ netlist_mame_sound_device *const m_sound;
};
// ----------------------------------------------------------------------------------------
-// netlist_mame_analog_input_t
+// netlist_mame_analog_input_device
// ----------------------------------------------------------------------------------------
-class netlist_mame_analog_input_t : public device_t,
- public netlist_mame_sub_interface
+class netlist_mame_analog_input_device : public device_t, public netlist_mame_sub_interface
{
public:
// construction/destruction
- netlist_mame_analog_input_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~netlist_mame_analog_input_t() { }
+ netlist_mame_analog_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_name(device_t &device, const char *param_name);
@@ -319,7 +281,7 @@ public:
inline DECLARE_INPUT_CHANGED_MEMBER(input_changed)
{
if (m_auto_port)
- write(((double) newval - (double) field.minval())/((double) (field.maxval()-field.minval()) ) );
+ write((double(newval) - double(field.minval())) / double(field.maxval() - field.minval()));
else
write(newval);
}
@@ -340,21 +302,18 @@ private:
};
// ----------------------------------------------------------------------------------------
-// netlist_mame_analog_output_t
+// netlist_mame_analog_output_device
// ----------------------------------------------------------------------------------------
-typedef device_delegate<void (const double, const attotime &)> netlist_analog_output_delegate;
-
-class netlist_mame_analog_output_t : public device_t,
- public netlist_mame_sub_interface
+class netlist_mame_analog_output_device : public device_t, public netlist_mame_sub_interface
{
public:
+ typedef device_delegate<void (const double, const attotime &)> output_delegate;
// construction/destruction
- netlist_mame_analog_output_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~netlist_mame_analog_output_t() { }
+ netlist_mame_analog_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_params(device_t &device, const char *in_name, netlist_analog_output_delegate adelegate);
+ static void static_set_params(device_t &device, const char *in_name, output_delegate &&adelegate);
protected:
// device-level overrides
@@ -363,25 +322,22 @@ protected:
private:
const char *m_in;
- netlist_analog_output_delegate m_delegate;
+ output_delegate m_delegate;
};
// ----------------------------------------------------------------------------------------
-// netlist_mame_logic_output_t
+// netlist_mame_logic_output_device
// ----------------------------------------------------------------------------------------
-typedef device_delegate<void(const int, const attotime &)> netlist_logic_output_delegate;
-
-class netlist_mame_logic_output_t : public device_t,
- public netlist_mame_sub_interface
+class netlist_mame_logic_output_device : public device_t, public netlist_mame_sub_interface
{
public:
+ typedef device_delegate<void(const int, const attotime &)> output_delegate;
// construction/destruction
- netlist_mame_logic_output_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~netlist_mame_logic_output_t() { }
+ netlist_mame_logic_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_params(device_t &device, const char *in_name, netlist_logic_output_delegate adelegate);
+ static void static_set_params(device_t &device, const char *in_name, output_delegate &&adelegate);
protected:
// device-level overrides
@@ -390,21 +346,18 @@ protected:
private:
const char *m_in;
- netlist_logic_output_delegate m_delegate;
+ output_delegate m_delegate;
};
// ----------------------------------------------------------------------------------------
-// netlist_mame_int_input_t
+// netlist_mame_int_input_device
// ----------------------------------------------------------------------------------------
-class netlist_mame_int_input_t : public device_t,
- public netlist_mame_sub_interface
+class netlist_mame_int_input_device : public device_t, public netlist_mame_sub_interface
{
public:
-
// construction/destruction
- netlist_mame_int_input_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~netlist_mame_int_input_t() { }
+ netlist_mame_int_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_params(device_t &device, const char *param_name, const uint32_t mask, const uint32_t shift);
@@ -431,17 +384,14 @@ private:
// ----------------------------------------------------------------------------------------
-// netlist_mame_logic_input_t
+// netlist_mame_logic_input_device
// ----------------------------------------------------------------------------------------
-class netlist_mame_logic_input_t : public device_t,
- public netlist_mame_sub_interface
+class netlist_mame_logic_input_device : public device_t, public netlist_mame_sub_interface
{
public:
-
// construction/destruction
- netlist_mame_logic_input_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~netlist_mame_logic_input_t() { }
+ netlist_mame_logic_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_params(device_t &device, const char *param_name, const uint32_t shift);
@@ -466,17 +416,14 @@ private:
};
// ----------------------------------------------------------------------------------------
-// netlist_ram_pointer_t
+// netlist_mame_ram_pointer_device
// ----------------------------------------------------------------------------------------
-class netlist_ram_pointer_t: public device_t,
- public netlist_mame_sub_interface
+class netlist_mame_ram_pointer_device : public device_t, public netlist_mame_sub_interface
{
public:
-
// construction/destruction
- netlist_ram_pointer_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~netlist_ram_pointer_t() { }
+ netlist_mame_ram_pointer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
uint8_t* ptr() const { return m_data; }
@@ -494,17 +441,14 @@ private:
};
// ----------------------------------------------------------------------------------------
-// netlist_mame_stream_input_t
+// netlist_mame_stream_input_device
// ----------------------------------------------------------------------------------------
-class netlist_mame_stream_input_t : public device_t,
- public netlist_mame_sub_interface
+class netlist_mame_stream_input_device : public device_t, public netlist_mame_sub_interface
{
public:
-
// construction/destruction
- netlist_mame_stream_input_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~netlist_mame_stream_input_t() { }
+ netlist_mame_stream_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_params(device_t &device, int channel, const char *param_name);
@@ -518,17 +462,14 @@ private:
};
// ----------------------------------------------------------------------------------------
-// netlist_mame_stream_output_t
+// netlist_mame_stream_output_device
// ----------------------------------------------------------------------------------------
-class netlist_mame_stream_output_t : public device_t,
- public netlist_mame_sub_interface
+class netlist_mame_stream_output_device : public device_t, public netlist_mame_sub_interface
{
public:
-
// construction/destruction
- netlist_mame_stream_output_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual ~netlist_mame_stream_output_t() { }
+ netlist_mame_stream_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_params(device_t &device, int channel, const char *out_name);
@@ -536,6 +477,7 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void custom_netlist_additions(netlist::setup_t &setup) override;
+
private:
uint32_t m_channel;
const char *m_out_name;
@@ -543,17 +485,16 @@ private:
// device type definition
-extern const device_type NETLIST_CORE;
-extern const device_type NETLIST_CPU;
-extern const device_type NETLIST_SOUND;
-extern const device_type NETLIST_ANALOG_INPUT;
-extern const device_type NETLIST_LOGIC_INPUT;
-extern const device_type NETLIST_INT_INPUT;
-extern const device_type NETLIST_RAM_POINTER;
-
-extern const device_type NETLIST_LOGIC_OUTPUT;
-extern const device_type NETLIST_ANALOG_OUTPUT;
-extern const device_type NETLIST_STREAM_INPUT;
-extern const device_type NETLIST_STREAM_OUTPUT;
-
-#endif
+DECLARE_DEVICE_TYPE(NETLIST_CORE, netlist_mame_device)
+DECLARE_DEVICE_TYPE(NETLIST_CPU, netlist_mame_cpu_device)
+DECLARE_DEVICE_TYPE(NETLIST_SOUND, netlist_mame_sound_device)
+DECLARE_DEVICE_TYPE(NETLIST_ANALOG_INPUT, netlist_mame_analog_input_device)
+DECLARE_DEVICE_TYPE(NETLIST_LOGIC_INPUT, netlist_mame_logic_input_device)
+DECLARE_DEVICE_TYPE(NETLIST_INT_INPUT, netlist_mame_int_input_device)
+DECLARE_DEVICE_TYPE(NETLIST_RAM_POINTER, netlist_mame_ram_pointer_device)
+DECLARE_DEVICE_TYPE(NETLIST_LOGIC_OUTPUT, netlist_mame_logic_output_device)
+DECLARE_DEVICE_TYPE(NETLIST_ANALOG_OUTPUT, netlist_mame_analog_output_device)
+DECLARE_DEVICE_TYPE(NETLIST_STREAM_INPUT, netlist_mame_stream_input_device)
+DECLARE_DEVICE_TYPE(NETLIST_STREAM_OUTPUT, netlist_mame_stream_output_device)
+
+#endif // MAME_MACHINE_NETLIST_H
diff --git a/src/devices/machine/nmc9306.cpp b/src/devices/machine/nmc9306.cpp
index 95ebedd10c7..d20e77a398b 100644
--- a/src/devices/machine/nmc9306.cpp
+++ b/src/devices/machine/nmc9306.cpp
@@ -9,14 +9,15 @@
#include "emu.h"
#include "nmc9306.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
#define RAM_SIZE 32
@@ -56,7 +57,7 @@ enum
//**************************************************************************
// device type definition
-const device_type NMC9306 = device_creator<nmc9306_device>;
+DEFINE_DEVICE_TYPE(NMC9306, nmc9306_device, "nmc9306", "NMC9306 EEPROM")
//-------------------------------------------------
// nmc9306_device - constructor
@@ -104,7 +105,7 @@ inline void nmc9306_device::erase(offs_t offset)
//-------------------------------------------------
nmc9306_device::nmc9306_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NMC9306, "NMC9306", tag, owner, clock, "nmc9306", __FILE__),
+ : device_t(mconfig, NMC9306, tag, owner, clock),
device_nvram_interface(mconfig, *this),
m_state(STATE_IDLE),
m_ewen(false)
@@ -189,7 +190,7 @@ WRITE_LINE_MEMBER( nmc9306_device::sk_w )
switch (m_state)
{
case STATE_IDLE:
- if (LOG) logerror("NMC9306 '%s' Idle %u\n", tag(), m_di);
+ LOG("NMC9306 Idle %u\n", m_di);
if (m_di)
{
@@ -200,7 +201,7 @@ WRITE_LINE_MEMBER( nmc9306_device::sk_w )
break;
case STATE_COMMAND:
- if (LOG) logerror("NMC9306 '%s' Command Bit %u\n", tag(), m_di);
+ LOG("NMC9306 Command Bit %u\n", m_di);
m_command <<= 1;
m_command |= m_di;
@@ -214,7 +215,7 @@ WRITE_LINE_MEMBER( nmc9306_device::sk_w )
break;
case STATE_ADDRESS:
- if (LOG) logerror("NMC9306 '%s' Address Bit %u\n", tag(), m_di);
+ LOG("NMC9306 Address Bit %u\n", m_di);
m_address <<= 1;
m_address |= m_di;
@@ -228,21 +229,21 @@ WRITE_LINE_MEMBER( nmc9306_device::sk_w )
switch (m_command & 0x03)
{
case EWDS:
- if (LOG) logerror("NMC9306 '%s' EWDS\n", tag());
+ LOG("NMC9306 EWDS\n");
m_ewen = false;
m_state = STATE_IDLE;
break;
case WRAL:
- if (LOG) logerror("NMC9306 '%s' WRAL\n", tag());
+ LOG("NMC9306 WRAL\n");
break;
case ERAL:
- if (LOG) logerror("NMC9306 '%s' ERAL\n", tag());
+ LOG("NMC9306 ERAL\n");
break;
case EWEN:
- if (LOG) logerror("NMC9306 '%s' EWEN\n", tag());
+ LOG("NMC9306 EWEN\n");
m_ewen = true;
m_state = STATE_IDLE;
break;
@@ -250,18 +251,18 @@ WRITE_LINE_MEMBER( nmc9306_device::sk_w )
break;
case WRITE:
- if (LOG) logerror("NMC9306 '%s' WRITE %u\n", tag(), m_address & 0x0f);
+ LOG("NMC9306 WRITE %u\n", m_address & 0x0f);
m_state = STATE_DATA_IN;
break;
case READ:
- if (LOG) logerror("NMC9306 '%s' READ %u\n", tag(), m_address & 0x0f);
+ LOG("NMC9306 READ %u\n", m_address & 0x0f);
m_data = read(m_address & 0x0f);
m_state = STATE_DATA_OUT;
break;
case ERASE:
- if (LOG) logerror("NMC9306 '%s' ERASE %u\n", tag(), m_address & 0x0f);
+ LOG("NMC9306 ERASE %u\n", m_address & 0x0f);
erase(m_address & 0x0f);
m_state = STATE_ERASE;
break;
@@ -272,7 +273,7 @@ WRITE_LINE_MEMBER( nmc9306_device::sk_w )
break;
case STATE_DATA_IN:
- if (LOG) logerror("NMC9306 '%s' Data Bit IN %u\n", tag(), m_di);
+ LOG("NMC9306 Data Bit IN %u\n", m_di);
m_data <<= 1;
m_data |= m_di;
@@ -287,7 +288,7 @@ WRITE_LINE_MEMBER( nmc9306_device::sk_w )
break;
case STATE_DATA_OUT:
- if (LOG) logerror("NMC9306 '%s' Data Bit OUT %u\n", tag(), m_di);
+ LOG("NMC9306 Data Bit OUT %u\n", m_di);
m_do = BIT(m_data, 15);
m_data <<= 1;
diff --git a/src/devices/machine/nmc9306.h b/src/devices/machine/nmc9306.h
index de929be42ff..097742685aa 100644
--- a/src/devices/machine/nmc9306.h
+++ b/src/devices/machine/nmc9306.h
@@ -13,17 +13,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __NMC9306__
-#define __NMC9306__
-
-
-
+#ifndef MAME_MACHINE_NMC9306_H
+#define MAME_MACHINE_NMC9306_H
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
+#pragma once
@@ -32,8 +25,8 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_NMC9306_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, NMC9306, 0)
+#define MCFG_NMC9306_ADD(tag) \
+ MCFG_DEVICE_ADD((tag), NMC9306, 0)
@@ -86,7 +79,6 @@ private:
// device type definition
-extern const device_type NMC9306;
-
+DECLARE_DEVICE_TYPE(NMC9306, nmc9306_device)
-#endif
+#endif // MAME_MACHINE_NMC9306_H
diff --git a/src/devices/machine/nsc810.cpp b/src/devices/machine/nsc810.cpp
index a5314ecc3ab..bf06c34d9dc 100644
--- a/src/devices/machine/nsc810.cpp
+++ b/src/devices/machine/nsc810.cpp
@@ -15,18 +15,28 @@
#include "emu.h"
#include "nsc810.h"
+#define VERBOSE 1
+#include "logmacro.h"
+
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-#define LOG (1)
-
-const device_type NSC810 = device_creator<nsc810_device>;
+DEFINE_DEVICE_TYPE(NSC810, nsc810_device, "nsc810", "National Semiconductor NSC810 RAM-I/O-Timer")
nsc810_device::nsc810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NSC810, "National Semiconductor NSC810", tag, owner, clock, "nsc810", __FILE__), m_portA_latch(0), m_portB_latch(0), m_portC_latch(0),
- m_ddrA(0), m_ddrB(0), m_ddrC(0), m_mode(0), m_timer0(nullptr), m_timer1(nullptr), m_timer0_mode(0), m_timer1_mode(0), m_timer0_counter(0), m_timer1_counter(0),
- m_timer0_base(0), m_timer1_base(0), m_timer0_running(false), m_timer1_running(false), m_timer0_clock(0), m_timer1_clock(0), m_ramselect(false),
+ device_t(mconfig, NSC810, tag, owner, clock),
+ m_portA_latch(0), m_portB_latch(0), m_portC_latch(0),
+ m_ddrA(0), m_ddrB(0), m_ddrC(0),
+ m_mode(0),
+ m_timer0(nullptr), m_timer1(nullptr),
+ m_timer0_mode(0), m_timer1_mode(0),
+ m_timer0_counter(0), m_timer1_counter(0),
+ m_timer0_base(0), m_timer1_base(0),
+ m_timer0_running(false), m_timer1_running(false),
+ m_timer0_clock(0), m_timer1_clock(0),
+ m_ramselect(false),
m_portA_r(*this),
m_portB_r(*this),
m_portC_r(*this),
@@ -89,7 +99,7 @@ void nsc810_device::device_timer(emu_timer &timer, device_timer_id id, int param
{
m_timer0_out(ASSERT_LINE);
m_timer0_counter = m_timer0_base;
- if(LOG) logerror("NSC810 '%s': Timer 0 output set\n",tag());
+ LOG("NSC810: Timer 0 output set\n");
}
}
break;
@@ -101,7 +111,7 @@ void nsc810_device::device_timer(emu_timer &timer, device_timer_id id, int param
{
m_timer1_out(ASSERT_LINE);
m_timer1_counter = m_timer1_base;
- if(LOG) logerror("NSC810 '%s': Timer 1 output set\n",tag());
+ LOG("NSC810: Timer 1 output set\n");
}
}
break;
@@ -124,17 +134,17 @@ READ8_MEMBER(nsc810_device::read)
case REG_PORTA:
res = m_portA_latch &= m_ddrA;
res |= (m_portA_r() & ~m_ddrA);
- //if(LOG) logerror("NSC810 '%s': Port A data read %02x\n",tag(),res);
+ //LOG("NSC810: Port A data read %02x\n",res);
break;
case REG_PORTB:
res = m_portB_latch &= m_ddrB;
res |= (m_portB_r() & ~m_ddrB);
- //if(LOG) logerror("NSC810 '%s': Port B data read %02x\n",tag(),res);
+ //LOG("NSC810: Port B data read %02x\n",res);
break;
case REG_PORTC:
res = m_portC_latch &= m_ddrC;
res |= (m_portC_r() & ~m_ddrC);
- //if(LOG) logerror("NSC810 '%s': Port C data read %02x\n",tag(),res);
+ //LOG("NSC810: Port C data read %02x\n",res);
break;
case REG_MODE_TIMER0:
res = m_timer0_mode;
@@ -147,7 +157,7 @@ READ8_MEMBER(nsc810_device::read)
if((m_timer0_mode & 0x07) == 0x01 || (m_timer0_mode & 0x07) == 0x02)
{
m_timer0_out(CLEAR_LINE);
- if(LOG) logerror("NSC810 '%s': Timer 0 output reset\n",tag());
+ LOG("NSC810: Timer 0 output reset\n");
}
break;
case REG_TIMER0_HIGH:
@@ -155,7 +165,7 @@ READ8_MEMBER(nsc810_device::read)
if((m_timer0_mode & 0x07) == 0x01 || (m_timer0_mode & 0x07) == 0x02)
{
m_timer0_out(CLEAR_LINE);
- if(LOG) logerror("NSC810 '%s': Timer 0 output reset\n",tag());
+ LOG("NSC810: Timer 0 output reset\n");
}
break;
case REG_TIMER1_LOW:
@@ -163,7 +173,7 @@ READ8_MEMBER(nsc810_device::read)
if((m_timer1_mode & 0x07) == 0x01 || (m_timer1_mode & 0x07) == 0x02)
{
m_timer1_out(0);
- if(LOG) logerror("NSC810 '%s': Timer 1 output reset\n",tag());
+ LOG("NSC810: Timer 1 output reset\n");
}
break;
case REG_TIMER1_HIGH:
@@ -171,11 +181,11 @@ READ8_MEMBER(nsc810_device::read)
if((m_timer1_mode & 0x07) == 0x01 || (m_timer1_mode & 0x07) == 0x02)
{
m_timer1_out(0);
- if(LOG) logerror("NSC810 '%s': Timer 1 output reset\n",tag());
+ LOG("NSC810: Timer 1 output reset\n");
}
break;
default:
- if(LOG) logerror("NSC810 '%s': unused port %02x read\n",tag(),offset);
+ LOG("NSC810: unused port %02x read\n",offset);
}
}
return res;
@@ -197,75 +207,75 @@ WRITE8_MEMBER(nsc810_device::write)
case REG_PORTA:
m_portA_latch = data & ~m_ddrA;
m_portA_w((0xff & ~m_ddrA) | (data & m_ddrA));
- if(LOG) logerror("NSC810 '%s': Port A data write %02x\n",tag(),data);
+ LOG("NSC810: Port A data write %02x\n",data);
break;
case REG_PORTB:
m_portB_latch = data & ~m_ddrB;
m_portB_w((0xff & ~m_ddrB) | (data & m_ddrB));
- if(LOG) logerror("NSC810 '%s': Port B data write %02x\n",tag(),data);
+ LOG("NSC810: Port B data write %02x\n",data);
break;
case REG_PORTC:
m_portC_latch = data & ~m_ddrC;
m_portC_w((0xff & ~m_ddrC) | (data & m_ddrC));
- if(LOG) logerror("NSC810 '%s': Port C data write %02x\n",tag(),data);
+ LOG("NSC810: Port C data write %02x\n",data);
break;
case REG_DDRA:
m_ddrA = data;
- if(LOG) logerror("NSC810 '%s': Port A direction write %02x\n",tag(),data);
+ LOG("NSC810: Port A direction write %02x\n",data);
break;
case REG_DDRB:
m_ddrB = data;
- if(LOG) logerror("NSC810 '%s': Port B direction write %02x\n",tag(),data);
+ LOG("NSC810: Port B direction write %02x\n",data);
break;
case REG_DDRC:
m_ddrC = data;
- if(LOG) logerror("NSC810 '%s': Port C direction write %02x\n",tag(),data);
+ LOG("NSC810: Port C direction write %02x\n",data);
break;
case REG_MODE_DEF:
- if(LOG) logerror("NSC810 '%s': Mode Definition write %02x\n",tag(),data);
+ LOG("NSC810: Mode Definition write %02x\n",data);
break;
case REG_PORTA_BITCLR:
- if(LOG) logerror("NSC810 '%s': Port A bit-clear write %02x\n",tag(),data);
+ LOG("NSC810: Port A bit-clear write %02x\n",data);
break;
case REG_PORTB_BITCLR:
- if(LOG) logerror("NSC810 '%s': Port B bit-clear write %02x\n",tag(),data);
+ LOG("NSC810: Port B bit-clear write %02x\n",data);
break;
case REG_PORTC_BITCLR:
- if(LOG) logerror("NSC810 '%s': Port C bit-clear write %02x\n",tag(),data);
+ LOG("NSC810: Port C bit-clear write %02x\n",data);
break;
case REG_PORTA_BITSET:
- if(LOG) logerror("NSC810 '%s': Port A bit-set write %02x\n",tag(),data);
+ LOG("NSC810: Port A bit-set write %02x\n",data);
break;
case REG_PORTB_BITSET:
- if(LOG) logerror("NSC810 '%s': Port B bit-set write %02x\n",tag(),data);
+ LOG("NSC810: Port B bit-set write %02x\n",data);
break;
case REG_PORTC_BITSET:
- if(LOG) logerror("NSC810 '%s': Port C bit-set write %02x\n",tag(),data);
+ LOG("NSC810: Port C bit-set write %02x\n",data);
break;
case REG_TIMER0_LOW:
m_timer0_base = (m_timer0_base & 0xff00) | data;
m_timer0_counter = (m_timer0_counter & 0xff00) | data;
- if(LOG) logerror("NSC810 '%s': Timer 0 low-byte write %02x (base=%04x)\n",tag(),data,m_timer0_base);
+ LOG("NSC810: Timer 0 low-byte write %02x (base=%04x)\n",data,m_timer0_base);
break;
case REG_TIMER0_HIGH:
m_timer0_base = (m_timer0_base & 0x00ff) | (data << 8);
m_timer0_counter = (m_timer0_counter & 0x00ff) | (data << 8);
- if(LOG) logerror("NSC810 '%s': Timer 0 high-byte write %02x (base=%04x)\n",tag(),data,m_timer0_base);
+ LOG("NSC810: Timer 0 high-byte write %02x (base=%04x)\n",data,m_timer0_base);
break;
case REG_TIMER1_LOW:
m_timer1_base = (m_timer1_base & 0xff00) | data;
m_timer1_counter = (m_timer1_counter & 0xff00) | data;
- if(LOG) logerror("NSC810 '%s': Timer 1 low-byte write %02x (base=%04x)\n",tag(),data,m_timer1_base);
+ LOG("NSC810: Timer 1 low-byte write %02x (base=%04x)\n",data,m_timer1_base);
break;
case REG_TIMER1_HIGH:
m_timer1_base = (m_timer1_base & 0x00ff) | (data << 8);
m_timer1_counter = (m_timer1_counter & 0x00ff) | (data << 8);
- if(LOG) logerror("NSC810 '%s': Timer 1 high-byte write %02x (base=%04x)\n",tag(),data,m_timer1_base);
+ LOG("NSC810: Timer 1 high-byte write %02x (base=%04x)\n",data,m_timer1_base);
break;
case REG_TIMER0_STOP:
m_timer0_running = false;
m_timer0->reset();
- if(LOG) logerror("NSC810 '%s': Timer 0 Stop write %02x\n",tag(),data);
+ LOG("NSC810: Timer 0 Stop write %02x\n",tag(),data);
break;
case REG_TIMER0_START:
if((m_timer0_mode & 0x07) != 0x00 && (m_timer0_mode & 0x07) != 0x07)
@@ -280,12 +290,12 @@ WRITE8_MEMBER(nsc810_device::write)
rate = m_timer0_clock;
m_timer0->adjust(attotime::zero,0,attotime::from_hz(rate));
}
- if(LOG) logerror("NSC810 '%s': Timer 0 Start write %02x\n",tag(),data);
+ LOG("NSC810: Timer 0 Start write %02x\n",data);
break;
case REG_TIMER1_STOP:
m_timer1_running = false;
m_timer1->reset();
- if(LOG) logerror("NSC810 '%s': Timer 1 Stop write %02x\n",tag(),data);
+ LOG("NSC810: Timer 1 Stop write %02x\n",data);
break;
case REG_TIMER1_START:
if((m_timer1_mode & 0x07) != 0x00 && (m_timer1_mode & 0x07) != 0x07)
@@ -298,18 +308,18 @@ WRITE8_MEMBER(nsc810_device::write)
rate = m_timer0_clock;
m_timer1->adjust(attotime::zero,0,attotime::from_hz(rate));
}
- if(LOG) logerror("NSC810 '%s': Timer 1 Start write %02x\n",tag(),data);
+ LOG("NSC810: Timer 1 Start write %02x\n",data);
break;
case REG_MODE_TIMER0:
m_timer0_mode = data;
- if(LOG) logerror("NSC810 '%s': Timer 0 Mode write %02x\n",tag(),data);
+ LOG("NSC810: Timer 0 Mode write %02x\n",data);
break;
case REG_MODE_TIMER1:
m_timer1_mode = data;
- if(LOG) logerror("NSC810 '%s': Timer 1 Mode write %02x\n",tag(),data);
+ LOG("NSC810: Timer 1 Mode write %02x\n",data);
break;
default:
- logerror("NSC810 '%s': Unused register %02x write %02x\n",tag(),offset,data);
+ logerror("NSC810: Unused register %02x write %02x\n",offset,data);
}
}
}
diff --git a/src/devices/machine/nsc810.h b/src/devices/machine/nsc810.h
index 8d3c796ef14..d029e56bced 100644
--- a/src/devices/machine/nsc810.h
+++ b/src/devices/machine/nsc810.h
@@ -6,8 +6,10 @@
* Created on: 10/03/2014
*/
-#ifndef NSC810_H_
-#define NSC810_H_
+#ifndef MAME_MACHINE_NSC810_H
+#define MAME_MACHINE_NSC810_H
+
+#pragma once
class nsc810_device : public device_t
@@ -16,14 +18,14 @@ public:
// construction/destruction
nsc810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_portA_read_callback(device_t &device, _Object object) { return downcast<nsc810_device &>(device).m_portA_r.set_callback(object); }
- template<class _Object> static devcb_base &set_portB_read_callback(device_t &device, _Object object) { return downcast<nsc810_device &>(device).m_portB_r.set_callback(object); }
- template<class _Object> static devcb_base &set_portC_read_callback(device_t &device, _Object object) { return downcast<nsc810_device &>(device).m_portC_r.set_callback(object); }
- template<class _Object> static devcb_base &set_portA_write_callback(device_t &device, _Object object) { return downcast<nsc810_device &>(device).m_portA_w.set_callback(object); }
- template<class _Object> static devcb_base &set_portB_write_callback(device_t &device, _Object object) { return downcast<nsc810_device &>(device).m_portB_w.set_callback(object); }
- template<class _Object> static devcb_base &set_portC_write_callback(device_t &device, _Object object) { return downcast<nsc810_device &>(device).m_portC_w.set_callback(object); }
- template<class _Object> static devcb_base &set_timer0_callback(device_t &device, _Object object) { return downcast<nsc810_device &>(device).m_timer0_out.set_callback(object); }
- template<class _Object> static devcb_base &set_timer1_callback(device_t &device, _Object object) { return downcast<nsc810_device &>(device).m_timer1_out.set_callback(object); }
+ template <class Object> static devcb_base &set_portA_read_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portA_r.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portB_read_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portB_r.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portC_read_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portC_r.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portA_write_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portA_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portB_write_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portB_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_portC_write_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_portC_w.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_timer0_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_timer0_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_timer1_callback(device_t &device, Object &&cb) { return downcast<nsc810_device &>(device).m_timer1_out.set_callback(std::forward<Object>(cb)); }
void set_timer0_clock(uint32_t clk) { m_timer0_clock = clk; }
void set_timer1_clock(uint32_t clk) { m_timer1_clock = clk; }
@@ -67,8 +69,8 @@ private:
devcb_write_line m_timer0_out;
devcb_write_line m_timer1_out;
- static const device_timer_id TIMER0_CLOCK = 0;
- static const device_timer_id TIMER1_CLOCK = 1;
+ static constexpr device_timer_id TIMER0_CLOCK = 0;
+ static constexpr device_timer_id TIMER1_CLOCK = 1;
enum
{
@@ -128,7 +130,6 @@ private:
devcb = &nsc810_device::set_timer1_callback(*device, DEVCB_##_write);
// device type definition
-extern const device_type NSC810;
-
+DECLARE_DEVICE_TYPE(NSC810, nsc810_device)
-#endif /* NSC810_H_ */
+#endif // MAME_MACHINE_NSC810_H
diff --git a/src/devices/machine/nscsi_bus.cpp b/src/devices/machine/nscsi_bus.cpp
index 819290ea904..c2e3426e4b7 100644
--- a/src/devices/machine/nscsi_bus.cpp
+++ b/src/devices/machine/nscsi_bus.cpp
@@ -3,14 +3,15 @@
#include "emu.h"
#include "nscsi_bus.h"
-const device_type NSCSI_BUS = device_creator<nscsi_bus_device>;
-const device_type NSCSI_CONNECTOR = device_creator<nscsi_connector>;
+DEFINE_DEVICE_TYPE(NSCSI_BUS, nscsi_bus_device, "nscsi_bus", "SCSI Bus (new)")
+DEFINE_DEVICE_TYPE(NSCSI_CONNECTOR, nscsi_connector, "nscsi_connector", "SCSI Connector Abstraction (new)")
+
nscsi_bus_device::nscsi_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NSCSI_BUS, "NSCSI Bus", tag, owner, clock, "nscsi_bus", __FILE__), data(0), ctrl(0)
+ device_t(mconfig, NSCSI_BUS, tag, owner, clock), data(0), ctrl(0)
{
devcnt = 0;
- memset(dev, 0, sizeof(dev));
+ std::fill(std::begin(dev), std::end(dev), dev_t{ nullptr, 0, 0, 0 });
}
void nscsi_bus_device::device_start()
@@ -134,7 +135,7 @@ void nscsi_bus_device::device_config_complete()
nscsi_connector::nscsi_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NSCSI_CONNECTOR, "NSCSI Connector Abstraction", tag, owner, clock, "nscsi_connector", __FILE__),
+ device_t(mconfig, NSCSI_CONNECTOR, tag, owner, clock),
device_slot_interface(mconfig, *this)
{
}
@@ -152,8 +153,8 @@ nscsi_device *nscsi_connector::get_device()
return dynamic_cast<nscsi_device *>(get_card_device());
}
-nscsi_device::nscsi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+nscsi_device::nscsi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
device_slot_card_interface(mconfig, *this)
{
scsi_id = scsi_refid = -1;
@@ -176,11 +177,6 @@ void nscsi_device::device_start()
save_item(NAME(scsi_id));
}
-nscsi_full_device::nscsi_full_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- nscsi_device(mconfig, type, name, tag, owner, clock, shortname, source)
-{
-}
-
const char *const nscsi_full_device::command_names[256] = {
/* 00 */ "TEST_UNIT_READY", "REZERO", "?", "REQUEST_SENSE", "FORMAT_UNIT", "?", "?", "REASSIGN_BLOCKS",
diff --git a/src/devices/machine/nscsi_bus.h b/src/devices/machine/nscsi_bus.h
index d4e2faa0323..16a69b22444 100644
--- a/src/devices/machine/nscsi_bus.h
+++ b/src/devices/machine/nscsi_bus.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef __NSCSI_BUS_H__
-#define __NSCSI_BUS_H__
+#ifndef MAME_MACHINE_NSCSI_BUS_H
+#define MAME_MACHINE_NSCSI_BUS_H
+
+#pragma once
#define MCFG_NSCSI_BUS_ADD(_tag) \
@@ -59,8 +61,7 @@ protected:
virtual void device_start() override;
};
-class nscsi_device : public device_t,
- public device_slot_card_interface
+class nscsi_device : public device_t, public device_slot_card_interface
{
public:
// Here because the biggest users are the devices, not the bus
@@ -85,23 +86,22 @@ public:
S_PHASE_MASK = S_MSG|S_CTL|S_INP
};
- nscsi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
void connect_to_bus(nscsi_bus_device *bus, int refid, int default_scsi_id);
virtual void scsi_ctrl_changed();
+
protected:
+ nscsi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+
int scsi_id;
int scsi_refid;
nscsi_bus_device *scsi_bus;
-
- virtual void device_start() override;
};
class nscsi_full_device : public nscsi_device
{
public:
- nscsi_full_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
virtual void scsi_ctrl_changed() override;
protected:
enum { SCSI_TIMER = 100 };
@@ -271,9 +271,7 @@ protected:
SBUF_SENSE
};
- uint8_t scsi_cmdbuf[4096], scsi_sense_buffer[8];
- int scsi_cmdsize;
- uint8_t scsi_identify;
+ using nscsi_device::nscsi_device;
virtual void device_start() override;
virtual void device_reset() override;
@@ -356,6 +354,10 @@ protected:
// Fast negation period (30ns)
virtual attotime scsi_fast_negation_period();
+ uint8_t scsi_cmdbuf[4096], scsi_sense_buffer[8];
+ int scsi_cmdsize;
+ uint8_t scsi_identify;
+
private:
enum {
IDLE
@@ -421,7 +423,7 @@ private:
};
-extern const device_type NSCSI_BUS;
-extern const device_type NSCSI_CONNECTOR;
+DECLARE_DEVICE_TYPE(NSCSI_BUS, nscsi_bus_device)
+DECLARE_DEVICE_TYPE(NSCSI_CONNECTOR, nscsi_connector)
-#endif
+#endif // MAME_MACHINE_NSCSI_BUS_H
diff --git a/src/devices/machine/nscsi_cb.cpp b/src/devices/machine/nscsi_cb.cpp
index 71e83f9a807..0bd3f76af21 100644
--- a/src/devices/machine/nscsi_cb.cpp
+++ b/src/devices/machine/nscsi_cb.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "nscsi_cb.h"
-const device_type NSCSI_CB = device_creator<nscsi_callback_device>;
+DEFINE_DEVICE_TYPE(NSCSI_CB, nscsi_callback_device, "nscsi_cb", "SCSI callback (new)")
nscsi_callback_device::nscsi_callback_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nscsi_device(mconfig, NSCSI_CB, "SCSI callback (new)", tag, owner, clock, "nscsi_cb", __FILE__),
+ : nscsi_device(mconfig, NSCSI_CB, tag, owner, clock),
m_write_rst(*this),
m_write_atn(*this),
m_write_ack(*this),
diff --git a/src/devices/machine/nscsi_cb.h b/src/devices/machine/nscsi_cb.h
index 9b193c6c876..27279e5eb04 100644
--- a/src/devices/machine/nscsi_cb.h
+++ b/src/devices/machine/nscsi_cb.h
@@ -1,10 +1,13 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef NSCSI_CB_H
-#define NSCSI_CB_H
+#ifndef MAME_MACHINE_NSCSI_CB_H
+#define MAME_MACHINE_NSCSI_CB_H
+
+#pragma once
#include "machine/nscsi_bus.h"
+
#define MCFG_NSCSICB_RST_HANDLER(_line) \
devcb = &downcast<nscsi_callback_device *>(device)->set_rst_callback(DEVCB_##_line);
@@ -32,20 +35,21 @@
#define MCFG_NSCSICB_BSY_HANDLER(_line) \
downcast<nscsi_callback_device *>(device)->set_bsy_callback(DEVCB_##_line);
+
class nscsi_callback_device : public nscsi_device
{
public:
nscsi_callback_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _line> devcb_base &set_rst_callback(_line line) { return m_write_rst.set_callback(line); }
- template<class _line> devcb_base &set_atn_callback(_line line) { return m_write_atn.set_callback(line); }
- template<class _line> devcb_base &set_ack_callback(_line line) { return m_write_ack.set_callback(line); }
- template<class _line> devcb_base &set_req_callback(_line line) { return m_write_req.set_callback(line); }
- template<class _line> devcb_base &set_msg_callback(_line line) { return m_write_msg.set_callback(line); }
- template<class _line> devcb_base &set_io_callback(_line line) { return m_write_io.set_callback(line); }
- template<class _line> devcb_base &set_cd_callback(_line line) { return m_write_cd.set_callback(line); }
- template<class _line> devcb_base &set_sel_callback(_line line) { return m_write_sel.set_callback(line); }
- template<class _line> devcb_base &set_bsy_callback(_line line) { return m_write_bsy.set_callback(line); }
+ template <class Line> devcb_base &set_rst_callback(Line &&cb) { return m_write_rst.set_callback(std::forward<Line>(cb)); }
+ template <class Line> devcb_base &set_atn_callback(Line &&cb) { return m_write_atn.set_callback(std::forward<Line>(cb)); }
+ template <class Line> devcb_base &set_ack_callback(Line &&cb) { return m_write_ack.set_callback(std::forward<Line>(cb)); }
+ template <class Line> devcb_base &set_req_callback(Line &&cb) { return m_write_req.set_callback(std::forward<Line>(cb)); }
+ template <class Line> devcb_base &set_msg_callback(Line &&cb) { return m_write_msg.set_callback(std::forward<Line>(cb)); }
+ template <class Line> devcb_base &set_io_callback(Line &&cb) { return m_write_io.set_callback(std::forward<Line>(cb)); }
+ template <class Line> devcb_base &set_cd_callback(Line &&cb) { return m_write_cd.set_callback(std::forward<Line>(cb)); }
+ template <class Line> devcb_base &set_sel_callback(Line &&cb) { return m_write_sel.set_callback(std::forward<Line>(cb)); }
+ template <class Line> devcb_base &set_bsy_callback(Line &&cb) { return m_write_bsy.set_callback(std::forward<Line>(cb)); }
virtual void scsi_ctrl_changed() override;
@@ -91,6 +95,6 @@ protected:
uint32_t m_ctrl;
};
-extern const device_type NSCSI_CB;
+DECLARE_DEVICE_TYPE(NSCSI_CB, nscsi_callback_device)
-#endif
+#endif // MAME_MACHINE_NSCSI_CB_H
diff --git a/src/devices/machine/nscsi_cd.cpp b/src/devices/machine/nscsi_cd.cpp
index 8488907ee64..08559e6e99d 100644
--- a/src/devices/machine/nscsi_cd.cpp
+++ b/src/devices/machine/nscsi_cd.cpp
@@ -4,10 +4,10 @@
#include "machine/nscsi_cd.h"
#include "imagedev/chd_cd.h"
-const device_type NSCSI_CDROM = device_creator<nscsi_cdrom_device>;
+DEFINE_DEVICE_TYPE(NSCSI_CDROM, nscsi_cdrom_device, "scsi_cdrom", "SCSI CD-ROM")
nscsi_cdrom_device::nscsi_cdrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nscsi_full_device(mconfig, NSCSI_CDROM, "SCSI CDROM", tag, owner, clock, "scsi_cdrom", __FILE__), cdrom(nullptr), bytes_per_sector(0), lba(0), cur_lba(0), blocks(0)
+ nscsi_full_device(mconfig, NSCSI_CDROM, tag, owner, clock), cdrom(nullptr), bytes_per_sector(0), lba(0), cur_lba(0), blocks(0)
{
}
diff --git a/src/devices/machine/nscsi_cd.h b/src/devices/machine/nscsi_cd.h
index 1299d9bfd8b..34631b5e246 100644
--- a/src/devices/machine/nscsi_cd.h
+++ b/src/devices/machine/nscsi_cd.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef __NSCSI_CD_H__
-#define __NSCSI_CD_H__
+#ifndef MAME_MACHINE_NSCSI_CD_H
+#define MAME_MACHINE_NSCSI_CD_H
+
+#pragma once
#include "machine/nscsi_bus.h"
#include "cdrom.h"
@@ -28,6 +30,6 @@ private:
void return_no_cd();
};
-extern const device_type NSCSI_CDROM;
+DECLARE_DEVICE_TYPE(NSCSI_CDROM, nscsi_cdrom_device)
-#endif
+#endif // MAME_MACHINE_NSCSI_CD_H
diff --git a/src/devices/machine/nscsi_hd.cpp b/src/devices/machine/nscsi_hd.cpp
index e45f78036d1..10afb96a8a4 100644
--- a/src/devices/machine/nscsi_hd.cpp
+++ b/src/devices/machine/nscsi_hd.cpp
@@ -4,15 +4,15 @@
#include "machine/nscsi_hd.h"
#include "imagedev/harddriv.h"
-const device_type NSCSI_HARDDISK = device_creator<nscsi_harddisk_device>;
+DEFINE_DEVICE_TYPE(NSCSI_HARDDISK, nscsi_harddisk_device, "scsi_harddisk", "SCSI Hard Disk")
nscsi_harddisk_device::nscsi_harddisk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nscsi_full_device(mconfig, NSCSI_HARDDISK, "SCSI HARDDISK", tag, owner, clock, "scsi_harddisk", __FILE__), harddisk(nullptr), lba(0), cur_lba(0), blocks(0), bytes_per_sector(0)
+ nscsi_harddisk_device(mconfig, NSCSI_HARDDISK, tag, owner, clock)
{
}
-nscsi_harddisk_device::nscsi_harddisk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- nscsi_full_device(mconfig, type, name, tag, owner, clock, shortname, source), harddisk(nullptr), lba(0), cur_lba(0), blocks(0), bytes_per_sector(0)
+nscsi_harddisk_device::nscsi_harddisk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ nscsi_full_device(mconfig, type, tag, owner, clock), harddisk(nullptr), lba(0), cur_lba(0), blocks(0), bytes_per_sector(0)
{
}
diff --git a/src/devices/machine/nscsi_hd.h b/src/devices/machine/nscsi_hd.h
index 873f3b80c64..9032fe35c2d 100644
--- a/src/devices/machine/nscsi_hd.h
+++ b/src/devices/machine/nscsi_hd.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef __NSCSI_HD_H__
-#define __NSCSI_HD_H__
+#ifndef MAME_MACHINE_NSCSI_HD_H
+#define MAME_MACHINE_NSCSI_HD_H
+
+#pragma once
#include "machine/nscsi_bus.h"
#include "harddisk.h"
@@ -10,11 +12,12 @@ class nscsi_harddisk_device : public nscsi_full_device
{
public:
nscsi_harddisk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nscsi_harddisk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual machine_config_constructor device_mconfig_additions() const override;
protected:
+ nscsi_harddisk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
@@ -28,6 +31,6 @@ protected:
int bytes_per_sector;
};
-extern const device_type NSCSI_HARDDISK;
+DECLARE_DEVICE_TYPE(NSCSI_HARDDISK, nscsi_harddisk_device)
-#endif
+#endif // MAME_MACHINE_NSCSI_HD_H
diff --git a/src/devices/machine/nscsi_s1410.cpp b/src/devices/machine/nscsi_s1410.cpp
index f35d30976ff..7b39b28a76c 100644
--- a/src/devices/machine/nscsi_s1410.cpp
+++ b/src/devices/machine/nscsi_s1410.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "machine/nscsi_s1410.h"
-const device_type NSCSI_S1410 = device_creator<nscsi_s1410_device>;
+DEFINE_DEVICE_TYPE(NSCSI_S1410, nscsi_s1410_device, "scsi_s1410", "S1410 Hard Disk")
nscsi_s1410_device::nscsi_s1410_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nscsi_harddisk_device(mconfig, NSCSI_S1410, "S1410", tag, owner, clock, "scsi_s1410", __FILE__)
+ nscsi_harddisk_device(mconfig, NSCSI_S1410, tag, owner, clock)
{
}
diff --git a/src/devices/machine/nscsi_s1410.h b/src/devices/machine/nscsi_s1410.h
index 52cb014e7dd..a6234d4c027 100644
--- a/src/devices/machine/nscsi_s1410.h
+++ b/src/devices/machine/nscsi_s1410.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef __NSCSI_S1410_H__
-#define __NSCSI_S1410_H__
+#ifndef MAME_MACHINE_NSCSI_S1410_H
+#define MAME_MACHINE_NSCSI_S1410_H
+
+#pragma once
#include "machine/nscsi_bus.h"
#include "machine/nscsi_hd.h"
@@ -71,6 +73,6 @@ protected:
uint8_t params[8];
};
-extern const device_type NSCSI_S1410;
+DECLARE_DEVICE_TYPE(NSCSI_S1410, nscsi_s1410_device)
-#endif
+#endif // MAME_MACHINE_NSCSI_S1410_H
diff --git a/src/devices/machine/nvram.cpp b/src/devices/machine/nvram.cpp
index d18709234e4..f58c8c1de52 100644
--- a/src/devices/machine/nvram.cpp
+++ b/src/devices/machine/nvram.cpp
@@ -16,14 +16,14 @@
//**************************************************************************
// device type definition
-const device_type NVRAM = device_creator<nvram_device>;
+DEFINE_DEVICE_TYPE(NVRAM, nvram_device, "nvram", "NVRAM")
//-------------------------------------------------
// nvram_device - constructor
//-------------------------------------------------
nvram_device::nvram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NVRAM, "NVRAM", tag, owner, clock, "nvram", __FILE__),
+ : device_t(mconfig, NVRAM, tag, owner, clock),
device_nvram_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
m_default_value(DEFAULT_ALL_1),
@@ -50,11 +50,11 @@ void nvram_device::static_set_default_value(device_t &device, default_value valu
// helper to set a custom callback
//-------------------------------------------------
-void nvram_device::static_set_custom_handler(device_t &device, nvram_init_delegate handler)
+void nvram_device::static_set_custom_handler(device_t &device, init_delegate &&handler)
{
nvram_device &nvram = downcast<nvram_device &>(device);
nvram.m_default_value = DEFAULT_CUSTOM;
- nvram.m_custom_handler = handler;
+ nvram.m_custom_handler = std::move(handler);
}
diff --git a/src/devices/machine/nvram.h b/src/devices/machine/nvram.h
index 30ee2d9088a..2a982b590e1 100644
--- a/src/devices/machine/nvram.h
+++ b/src/devices/machine/nvram.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_NVRAM_H
+#define MAME_MACHINE_NVRAM_H
-#ifndef __NVRAM_H__
-#define __NVRAM_H__
+#pragma once
@@ -33,7 +33,7 @@
nvram_device::static_set_default_value(*device, nvram_device::DEFAULT_NONE);
#define MCFG_NVRAM_ADD_CUSTOM_DRIVER(_tag, _class, _method) \
MCFG_DEVICE_ADD(_tag, NVRAM, 0) \
- nvram_device::static_set_custom_handler(*device, nvram_init_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
+ nvram_device::static_set_custom_handler(*device, nvram_device::init_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
#define MCFG_NVRAM_REPLACE_0FILL(_tag) \
MCFG_DEVICE_REPLACE(_tag, NVRAM, 0) \
@@ -46,26 +46,22 @@
nvram_device::static_set_default_value(*device, nvram_device::DEFAULT_RANDOM);
#define MCFG_NVRAM_REPLACE_CUSTOM_DRIVER(_tag, _class, _method) \
MCFG_DEVICE_REPLACE(_tag, NVRAM, 0) \
- nvram_device::static_set_custom_handler(*device, nvram_init_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
+ nvram_device::static_set_custom_handler(*device, nvram_device::init_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class nvram_device;
-
-
-// custom initialization for default state
-typedef device_delegate<void (nvram_device &, void *, size_t)> nvram_init_delegate;
-
-
// ======================> nvram_device
class nvram_device : public device_t,
public device_nvram_interface
{
public:
+ // custom initialization for default state
+ typedef device_delegate<void (nvram_device &, void *, size_t)> init_delegate;
+
// values
enum default_value
{
@@ -81,7 +77,7 @@ public:
// inline configuration helpers
static void static_set_default_value(device_t &device, default_value value);
- static void static_set_custom_handler(device_t &device, nvram_init_delegate callback);
+ static void static_set_custom_handler(device_t &device, init_delegate &&callback);
// controls
void set_base(void *base, size_t length) { m_base = base; m_length = length; }
@@ -101,7 +97,7 @@ protected:
// configuration state
optional_memory_region m_region;
default_value m_default_value;
- nvram_init_delegate m_custom_handler;
+ init_delegate m_custom_handler;
// runtime state
void * m_base;
@@ -110,7 +106,7 @@ protected:
// device type definition
-extern const device_type NVRAM;
+DECLARE_DEVICE_TYPE(NVRAM, nvram_device)
-#endif
+#endif // MAME_DEVICES_MACHINE_NVRAM_H
diff --git a/src/devices/machine/pc_fdc.cpp b/src/devices/machine/pc_fdc.cpp
index 2698b43e06c..865de92ee86 100644
--- a/src/devices/machine/pc_fdc.cpp
+++ b/src/devices/machine/pc_fdc.cpp
@@ -16,8 +16,8 @@
#include "emu.h"
#include "machine/pc_fdc.h"
-const device_type PC_FDC_XT = device_creator<pc_fdc_xt_device>;
-const device_type PC_FDC_AT = device_creator<pc_fdc_at_device>;
+DEFINE_DEVICE_TYPE(PC_FDC_XT, pc_fdc_xt_device, "pc_fdc_xt", "PC FDC (XT)")
+DEFINE_DEVICE_TYPE(PC_FDC_AT, pc_fdc_at_device, "pc_fdc_at", "PC FDC (AT)")
static MACHINE_CONFIG_FRAGMENT( cfg )
MCFG_UPD765A_ADD("upd765", false, false)
@@ -45,8 +45,8 @@ DEVICE_ADDRESS_MAP_START(map, 8, pc_fdc_at_device)
AM_RANGE(0x7, 0x7) AM_READWRITE(dir_r, ccr_w)
ADDRESS_MAP_END
-pc_fdc_family_device::pc_fdc_family_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- pc_fdc_interface(mconfig, type, name, tag, owner, clock, shortname, source), fdc(*this, "upd765"),
+pc_fdc_family_device::pc_fdc_family_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ pc_fdc_interface(mconfig, type, tag, owner, clock), fdc(*this, "upd765"),
intrq_cb(*this),
drq_cb(*this)
{
@@ -183,10 +183,10 @@ void pc_fdc_family_device::check_drq()
drq_cb(drq);
}
-pc_fdc_xt_device::pc_fdc_xt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : pc_fdc_family_device(mconfig, PC_FDC_XT, "PC FDC XT", tag, owner, clock, "pc_fdc_xt", __FILE__)
+pc_fdc_xt_device::pc_fdc_xt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : pc_fdc_family_device(mconfig, PC_FDC_XT, tag, owner, clock)
{
}
-pc_fdc_at_device::pc_fdc_at_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : pc_fdc_family_device(mconfig, PC_FDC_AT, "PC FDC AT", tag, owner, clock, "pc_fdc_at", __FILE__)
+pc_fdc_at_device::pc_fdc_at_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : pc_fdc_family_device(mconfig, PC_FDC_AT, tag, owner, clock)
{
}
diff --git a/src/devices/machine/pc_fdc.h b/src/devices/machine/pc_fdc.h
index 5c41e5ea62c..a4df81fd23f 100644
--- a/src/devices/machine/pc_fdc.h
+++ b/src/devices/machine/pc_fdc.h
@@ -6,8 +6,10 @@
**********************************************************************/
-#ifndef PC_FDC_H
-#define PC_FDC_H
+#ifndef MAME_MACHINE_PC_FDC_H
+#define MAME_MACHINE_PC_FDC_H
+
+#pragma once
#include "machine/upd765.h"
@@ -25,12 +27,8 @@
class pc_fdc_family_device : public pc_fdc_interface {
public:
- pc_fdc_family_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- template<class _Object> static devcb_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<pc_fdc_family_device &>(device).intrq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<pc_fdc_family_device &>(device).drq_cb.set_callback(object); }
-
- required_device<upd765a_device> fdc;
+ template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<pc_fdc_family_device &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<pc_fdc_family_device &>(device).drq_cb.set_callback(std::forward<Object>(cb)); }
virtual DECLARE_ADDRESS_MAP(map, 8) override;
@@ -46,7 +44,11 @@ public:
DECLARE_WRITE_LINE_MEMBER( irq_w );
DECLARE_WRITE_LINE_MEMBER( drq_w );
+ required_device<upd765a_device> fdc;
+
protected:
+ pc_fdc_family_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
@@ -76,7 +78,7 @@ public:
virtual DECLARE_ADDRESS_MAP(map, 8) override;
};
-extern const device_type PC_FDC_XT;
-extern const device_type PC_FDC_AT;
+DECLARE_DEVICE_TYPE(PC_FDC_XT, pc_fdc_xt_device)
+DECLARE_DEVICE_TYPE(PC_FDC_AT, pc_fdc_at_device)
-#endif /* PC_FDC_H */
+#endif // MAME_MACHINE_PC_FDC_H
diff --git a/src/devices/machine/pc_lpt.cpp b/src/devices/machine/pc_lpt.cpp
index d1676fc1232..cd336275dcd 100644
--- a/src/devices/machine/pc_lpt.cpp
+++ b/src/devices/machine/pc_lpt.cpp
@@ -10,10 +10,10 @@
#include "pc_lpt.h"
-const device_type PC_LPT = device_creator<pc_lpt_device>;
+DEFINE_DEVICE_TYPE(PC_LPT, pc_lpt_device, "pc_lpt", "PC LPT")
pc_lpt_device::pc_lpt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PC_LPT, "PC-LPT", tag, owner, clock, "pc_lpt", __FILE__),
+ : device_t(mconfig, PC_LPT, tag, owner, clock),
m_irq(1),
m_data(0xff), m_control(0),
m_irq_enabled(1),
diff --git a/src/devices/machine/pc_lpt.h b/src/devices/machine/pc_lpt.h
index 3cf812276d9..9dfb4764259 100644
--- a/src/devices/machine/pc_lpt.h
+++ b/src/devices/machine/pc_lpt.h
@@ -6,8 +6,10 @@
***************************************************************************/
-#ifndef __PC_LPT_H__
-#define __PC_LPT_H__
+#ifndef MAME_MACHINE_PC_LPT_H
+#define MAME_MACHINE_PC_LPT_H
+
+#pragma once
#include "bus/centronics/ctronics.h"
@@ -24,7 +26,7 @@ public:
pc_lpt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<pc_lpt_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<pc_lpt_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -82,6 +84,6 @@ private:
required_device<output_latch_device> m_cent_ctrl_out;
};
-extern const device_type PC_LPT;
+DECLARE_DEVICE_TYPE(PC_LPT, pc_lpt_device)
-#endif /* __PC_LPT__ */
+#endif // MAME_MACHINE_PC_LPT_H
diff --git a/src/devices/machine/pccard.cpp b/src/devices/machine/pccard.cpp
index dbbec3ce98f..6f8c177ef4e 100644
--- a/src/devices/machine/pccard.cpp
+++ b/src/devices/machine/pccard.cpp
@@ -25,10 +25,10 @@ WRITE16_MEMBER( pccard_interface::write_reg )
//printf("unhandled register write %08x %04x %04x\n", offset, data, mem_mask);
}
-const device_type PCCARD_SLOT = device_creator<pccard_slot_device>;
+DEFINE_DEVICE_TYPE(PCCARD_SLOT, pccard_slot_device, "pccard", "PC Card Slot")
pccard_slot_device::pccard_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PCCARD_SLOT, "PCCARD SLOT", tag, owner, clock, "pccard", __FILE__),
+ device_t(mconfig, PCCARD_SLOT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_pccard(nullptr)
{
diff --git a/src/devices/machine/pccard.h b/src/devices/machine/pccard.h
index 4e100429bef..9ae0eedf350 100644
--- a/src/devices/machine/pccard.h
+++ b/src/devices/machine/pccard.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#pragma once
+#ifndef MAME_MACHINE_PCCARD_H
+#define MAME_MACHINE_PCCARD_H
-#ifndef __PCCARD_H__
-#define __PCCARD_H__
+#pragma once
class pccard_interface
@@ -17,10 +17,9 @@ public:
virtual ~pccard_interface() {}
};
-extern const device_type PCCARD_SLOT;
+DECLARE_DEVICE_TYPE(PCCARD_SLOT, pccard_slot_device)
-class pccard_slot_device : public device_t,
- public device_slot_interface
+class pccard_slot_device : public device_t, public device_slot_interface
{
public:
pccard_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -39,4 +38,4 @@ private:
pccard_interface *m_pccard;
};
-#endif
+#endif // MAME_MACHINE_PCCARD_H
diff --git a/src/devices/machine/pcf8593.cpp b/src/devices/machine/pcf8593.cpp
index 5acab4ec7dc..331e12ccdbd 100644
--- a/src/devices/machine/pcf8593.cpp
+++ b/src/devices/machine/pcf8593.cpp
@@ -40,7 +40,7 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type PCF8593 = device_creator<pcf8593_device>;
+DEFINE_DEVICE_TYPE(PCF8593, pcf8593_device, "pcf8593", "PCF8593 RTC")
//-------------------------------------------------
@@ -48,9 +48,9 @@ const device_type PCF8593 = device_creator<pcf8593_device>;
//-------------------------------------------------
pcf8593_device::pcf8593_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PCF8593, "PCF8593 RTC", tag, owner, clock, "pcf8593", __FILE__),
- device_rtc_interface(mconfig, *this),
- device_nvram_interface(mconfig, *this)
+ : device_t(mconfig, PCF8593, tag, owner, clock)
+ , device_rtc_interface(mconfig, *this)
+ , device_nvram_interface(mconfig, *this)
{
}
diff --git a/src/devices/machine/pcf8593.h b/src/devices/machine/pcf8593.h
index 1de8b0ddbe2..e1527b6d6ad 100644
--- a/src/devices/machine/pcf8593.h
+++ b/src/devices/machine/pcf8593.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __PCF8593_H__
-#define __PCF8593_H__
+#ifndef MAME_MACHINE_PCF8593_H
+#define MAME_MACHINE_PCF8593_H
+
+#pragma once
#include "dirtc.h"
@@ -74,6 +76,6 @@ private:
};
// device type definition
-extern const device_type PCF8593;
+DECLARE_DEVICE_TYPE(PCF8593, pcf8593_device)
-#endif /* __PCF8593_H__ */
+#endif // MAME_MACHINE_PCF8593_H
diff --git a/src/devices/machine/pci-apic.cpp b/src/devices/machine/pci-apic.cpp
index 26246eb675c..2a7c1a26261 100644
--- a/src/devices/machine/pci-apic.cpp
+++ b/src/devices/machine/pci-apic.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "pci-apic.h"
-const device_type APIC = device_creator<apic_device>;
+DEFINE_DEVICE_TYPE(APIC, apic_device, "apic", "I/O Advanced Programmable Interrupt Controller")
apic_device::apic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, APIC, "I/O Advanced Programmable Interrupt Controller", tag, owner, clock, "apic", __FILE__)
+ : pci_device(mconfig, APIC, tag, owner, clock)
{
}
diff --git a/src/devices/machine/pci-apic.h b/src/devices/machine/pci-apic.h
index 8fffd1deb85..c7bb0b12cdb 100644
--- a/src/devices/machine/pci-apic.h
+++ b/src/devices/machine/pci-apic.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef PCI_APIC_H
-#define PCI_APIC_H
+#ifndef MAME_MACHINE_PCI_APIC_H
+#define MAME_MACHINE_PCI_APIC_H
+
+#pragma once
#include "pci.h"
@@ -17,6 +19,6 @@ protected:
virtual void device_reset() override;
};
-extern const device_type APIC;
+DECLARE_DEVICE_TYPE(APIC, apic_device)
-#endif
+#endif // MAME_MACHINE_PCI_APIC_H
diff --git a/src/devices/machine/pci-ide.cpp b/src/devices/machine/pci-ide.cpp
index e7c97b1b642..9af847777c5 100644
--- a/src/devices/machine/pci-ide.cpp
+++ b/src/devices/machine/pci-ide.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "pci-ide.h"
-const device_type IDE_PCI = device_creator<ide_pci_device>;
+DEFINE_DEVICE_TYPE(IDE_PCI, ide_pci_device, "ide_pci", "PCI IDE interface")
ide_pci_device::ide_pci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, IDE_PCI, "IDE PCI interface", tag, owner, clock, "ide_pci", __FILE__),
+ : pci_device(mconfig, IDE_PCI, tag, owner, clock),
m_ide(*this, "ide"),
m_ide2(*this, "ide2"),
m_irq_num(-1),
diff --git a/src/devices/machine/pci-ide.h b/src/devices/machine/pci-ide.h
index bc736efd517..a258ee2028f 100644
--- a/src/devices/machine/pci-ide.h
+++ b/src/devices/machine/pci-ide.h
@@ -11,8 +11,10 @@ TODO:
Add pci configuration write to PIF byte
***************************************************************************/
-#ifndef PCI_IDE_H
-#define PCI_IDE_H
+#ifndef MAME_MACHINE_PCI_IDE_H
+#define MAME_MACHINE_PCI_IDE_H
+
+#pragma once
#include "pci.h"
#include "idectrl.h"
@@ -43,8 +45,9 @@ public:
DECLARE_READ32_MEMBER(ide2_read_cs1);
DECLARE_WRITE32_MEMBER(ide2_write_cs1);
void set_irq_info(const char *tag, const int irq_num);
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ide_pci_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ide_pci_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
void set_legacy_top(int val) { m_legacy_top = val & 0xfff; };
+
protected:
virtual void device_start() override;
virtual void device_reset() override;
@@ -73,6 +76,6 @@ private:
DECLARE_WRITE32_MEMBER(address_base_w);
};
-extern const device_type IDE_PCI;
+DECLARE_DEVICE_TYPE(IDE_PCI, ide_pci_device)
-#endif
+#endif // MAME_MACHINE_PCI_IDE_H
diff --git a/src/devices/machine/pci-sata.cpp b/src/devices/machine/pci-sata.cpp
index 178bc4b12ce..fa854f08520 100644
--- a/src/devices/machine/pci-sata.cpp
+++ b/src/devices/machine/pci-sata.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "pci-sata.h"
-const device_type SATA = device_creator<sata_device>;
+DEFINE_DEVICE_TYPE(SATA, sata_device, "sata", "SATA AHCI interface")
sata_device::sata_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, SATA, "SATA AHCI interface", tag, owner, clock, "sata", __FILE__)
+ : pci_device(mconfig, SATA, tag, owner, clock)
{
}
diff --git a/src/devices/machine/pci-sata.h b/src/devices/machine/pci-sata.h
index 19dd69e95b3..c4ad5f15aaf 100644
--- a/src/devices/machine/pci-sata.h
+++ b/src/devices/machine/pci-sata.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef PCI_SATA_H
-#define PCI_SATA_H
+#ifndef MAME_MACHINE_PCI_SATA_H
+#define MAME_MACHINE_PCI_SATA_H
+
+#pragma once
#include "pci.h"
@@ -25,6 +27,6 @@ private:
DECLARE_ADDRESS_MAP(ide_command_posting_map, 32);
};
-extern const device_type SATA;
+DECLARE_DEVICE_TYPE(SATA, sata_device)
-#endif
+#endif // MAME_MACHINE_PCI_SATA_H
diff --git a/src/devices/machine/pci-smbus.cpp b/src/devices/machine/pci-smbus.cpp
index 36d9cf1be93..4a1c675b3f5 100644
--- a/src/devices/machine/pci-smbus.cpp
+++ b/src/devices/machine/pci-smbus.cpp
@@ -3,7 +3,7 @@
#include "emu.h"
#include "pci-smbus.h"
-const device_type SMBUS = device_creator<smbus_device>;
+DEFINE_DEVICE_TYPE(SMBUS, smbus_device, "smbus", "SMBus interface")
DEVICE_ADDRESS_MAP_START(map, 32, smbus_device)
AM_RANGE(0x00, 0x03) AM_READWRITE8 (hst_sts_r, hst_sts_w, 0x000000ff)
@@ -28,7 +28,7 @@ DEVICE_ADDRESS_MAP_START(map, 32, smbus_device)
ADDRESS_MAP_END
smbus_device::smbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, SMBUS, "SMBUS interface", tag, owner, clock, "smbus", __FILE__)
+ : pci_device(mconfig, SMBUS, tag, owner, clock)
{
}
diff --git a/src/devices/machine/pci-smbus.h b/src/devices/machine/pci-smbus.h
index 6dac1d711a2..d61e45e2f25 100644
--- a/src/devices/machine/pci-smbus.h
+++ b/src/devices/machine/pci-smbus.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef PCI_SMBUS_H
-#define PCI_SMBUS_H
+#ifndef MAME_MACHINE_PCI_SMBUS_H
+#define MAME_MACHINE_PCI_SMBUS_H
#include "pci.h"
@@ -62,6 +62,6 @@ private:
uint8_t smlink_pin_ctl, smbus_pin_ctl, slv_sts, slv_cmd, notify_daddr, notify_dlow, notify_dhigh;
};
-extern const device_type SMBUS;
+DECLARE_DEVICE_TYPE(SMBUS, smbus_device)
-#endif
+#endif // MAME_MACHINE_PCI_SMBUS_H
diff --git a/src/devices/machine/pci-usb.cpp b/src/devices/machine/pci-usb.cpp
index 1bcdeb0e72a..2a0c8098be1 100644
--- a/src/devices/machine/pci-usb.cpp
+++ b/src/devices/machine/pci-usb.cpp
@@ -3,15 +3,15 @@
#include "emu.h"
#include "pci-usb.h"
-const device_type USB_OHCI = device_creator<usb_ohci_device>;
-const device_type USB_UHCI = device_creator<usb_uhci_device>;
-const device_type USB_EHCI = device_creator<usb_ehci_device>;
+DEFINE_DEVICE_TYPE(USB_OHCI, usb_ohci_device, "usb_ohci", "USB 1.1 OHCI interface")
+DEFINE_DEVICE_TYPE(USB_UHCI, usb_uhci_device, "usb_uhci", "USB 1.1 UHCI interface")
+DEFINE_DEVICE_TYPE(USB_EHCI, usb_ehci_device, "usb_ehci", "USB 2.0 EHCI interface")
DEVICE_ADDRESS_MAP_START(map, 32, usb_ohci_device)
ADDRESS_MAP_END
usb_ohci_device::usb_ohci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, USB_OHCI, "USB 1.1 OHCI interface", tag, owner, clock, "usb_ohci", __FILE__)
+ : pci_device(mconfig, USB_OHCI, tag, owner, clock)
{
}
@@ -30,7 +30,7 @@ DEVICE_ADDRESS_MAP_START(map, 32, usb_uhci_device)
ADDRESS_MAP_END
usb_uhci_device::usb_uhci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, USB_UHCI, "USB 1.1 UHCI interface", tag, owner, clock, "usb_uhci", __FILE__)
+ : pci_device(mconfig, USB_UHCI, tag, owner, clock)
{
}
@@ -49,7 +49,7 @@ DEVICE_ADDRESS_MAP_START(map, 32, usb_ehci_device)
ADDRESS_MAP_END
usb_ehci_device::usb_ehci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, USB_EHCI, "USB 2.0 EHCI interface", tag, owner, clock, "usb_ehci", __FILE__)
+ : pci_device(mconfig, USB_EHCI, tag, owner, clock)
{
}
diff --git a/src/devices/machine/pci-usb.h b/src/devices/machine/pci-usb.h
index 2fc5b3ef396..8eb7d3860ba 100644
--- a/src/devices/machine/pci-usb.h
+++ b/src/devices/machine/pci-usb.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef PCI_USB_H
-#define PCI_USB_H
+#ifndef MAME_MACHINE_PCI_USB_H
+#define MAME_MACHINE_PCI_USB_H
+
+#pragma once
#include "pci.h"
@@ -50,8 +52,8 @@ private:
DECLARE_ADDRESS_MAP(map, 32);
};
-extern const device_type USB_OHCI;
-extern const device_type USB_UHCI;
-extern const device_type USB_EHCI;
+DECLARE_DEVICE_TYPE(USB_OHCI, usb_ohci_device)
+DECLARE_DEVICE_TYPE(USB_UHCI, usb_uhci_device)
+DECLARE_DEVICE_TYPE(USB_EHCI, usb_ehci_device)
-#endif
+#endif // MAME_MACHINE_PCI_USB_H
diff --git a/src/devices/machine/pci.cpp b/src/devices/machine/pci.cpp
index 5edc3890f6d..fec52315a23 100644
--- a/src/devices/machine/pci.cpp
+++ b/src/devices/machine/pci.cpp
@@ -3,8 +3,9 @@
#include "emu.h"
#include "pci.h"
-const device_type PCI_ROOT = device_creator<pci_root_device>;
-const device_type PCI_BRIDGE = device_creator<pci_bridge_device>;
+DEFINE_DEVICE_TYPE(PCI_ROOT, pci_root_device, "pci_root", "PCI virtual root")
+DEFINE_DEVICE_TYPE(PCI_BRIDGE, pci_bridge_device, "pci_bridge", "PCI-PCI Bridge")
+
DEVICE_ADDRESS_MAP_START(config_map, 32, pci_device)
AM_RANGE(0x00, 0x03) AM_READ16 (vendor_r, 0x0000ffff)
@@ -61,9 +62,9 @@ DEVICE_ADDRESS_MAP_START(config_map, 32, pci_bridge_device)
AM_RANGE(0x3c, 0x3f) AM_READWRITE16(bridge_control_r, bridge_control_w, 0xffff0000)
ADDRESS_MAP_END
-pci_device::pci_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_region(*this, DEVICE_SELF)
+pci_device::pci_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_region(*this, DEVICE_SELF)
{
main_id = 0xffffffff;
revision = 0x00;
@@ -413,8 +414,8 @@ void pci_device::set_map_flags(int id, int flags)
remap_cb();
}
-agp_device::agp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : pci_device(mconfig, type, name, tag, owner, clock, shortname, source)
+agp_device::agp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : pci_device(mconfig, type, tag, owner, clock)
{
}
@@ -431,16 +432,14 @@ void agp_device::device_reset()
pci_bridge_device::pci_bridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, PCI_BRIDGE, "PCI-PCI Bridge", tag, owner, clock, "pci_bridge", __FILE__),
- device_memory_interface(mconfig, *this),
- configure_space_config("configuration_space", ENDIANNESS_LITTLE, 32, 20)
+ : pci_bridge_device(mconfig, PCI_BRIDGE, tag, owner, clock)
{
}
-pci_bridge_device::pci_bridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : pci_device(mconfig, type, name, tag, owner, clock, shortname, source),
- device_memory_interface(mconfig, *this),
- configure_space_config("configuration_space", ENDIANNESS_LITTLE, 32, 20)
+pci_bridge_device::pci_bridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : pci_device(mconfig, type, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , configure_space_config("configuration_space", ENDIANNESS_LITTLE, 32, 20)
{
}
@@ -799,8 +798,8 @@ WRITE16_MEMBER(pci_bridge_device::bridge_control_w)
}
-agp_bridge_device::agp_bridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : pci_bridge_device(mconfig, type, name, tag, owner, clock, shortname, source)
+agp_bridge_device::agp_bridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : pci_bridge_device(mconfig, type, tag, owner, clock)
{
}
@@ -822,8 +821,8 @@ DEVICE_ADDRESS_MAP_START(io_configuration_access_map, 32, pci_host_device)
ADDRESS_MAP_END
-pci_host_device::pci_host_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : pci_bridge_device(mconfig, type, name, tag, owner, clock, shortname, source)
+pci_host_device::pci_host_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : pci_bridge_device(mconfig, type, tag, owner, clock)
{
}
@@ -906,7 +905,7 @@ void pci_host_device::root_config_write(uint8_t bus, uint8_t device, uint16_t re
pci_root_device::pci_root_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PCI_ROOT,"PCI virtual root", tag, owner, clock, "pci_root", __FILE__)
+ : device_t(mconfig, PCI_ROOT, tag, owner, clock)
{
}
diff --git a/src/devices/machine/pci.h b/src/devices/machine/pci.h
index a882f93b957..d1f16287043 100644
--- a/src/devices/machine/pci.h
+++ b/src/devices/machine/pci.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef PCI_H
-#define PCI_H
+#ifndef MAME_MACHINE_PCI_H
+#define MAME_MACHINE_PCI_H
+
+#pragma once
#define MCFG_PCI_ROOT_ADD(_tag) \
@@ -29,8 +31,6 @@ public:
mapper_cb remap_cb, remap_config_cb;
- pci_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
void set_ids(uint32_t main_id, uint8_t revision, uint32_t pclass, uint32_t subsystem_id);
void set_multifunction_device(bool enable);
@@ -85,6 +85,8 @@ public:
DECLARE_WRITE8_MEMBER(interrupt_pin_w);
protected:
+ pci_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
optional_memory_region m_region;
enum {
@@ -142,10 +144,9 @@ protected:
};
class agp_device : public pci_device {
-public:
- agp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
protected:
+ agp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
};
@@ -153,7 +154,6 @@ protected:
class pci_bridge_device : public pci_device, public device_memory_interface {
public:
pci_bridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- pci_bridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual void set_remap_cb(mapper_cb _remap_cb) override;
virtual void map_device(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
@@ -200,13 +200,7 @@ public:
DECLARE_WRITE16_MEMBER(bridge_control_w);
protected:
- pci_device *sub_devices[32*8];
- std::vector<pci_device *> all_devices;
- std::vector<pci_bridge_device *> all_bridges;
-
- uint32_t prefetch_baseu, prefetch_limitu;
- uint16_t bridge_control, memory_base, memory_limit, prefetch_base, prefetch_limit, iobaseu, iolimitu;
- uint8_t primary_bus, secondary_bus, subordinate_bus, iobase, iolimit;
+ pci_bridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_reset() override;
@@ -222,15 +216,22 @@ protected:
void propagate_config_write(uint8_t bus, uint8_t device, uint16_t reg, uint32_t data, uint32_t mem_mask);
void config_write(uint8_t bus, uint8_t device, uint16_t reg, uint32_t data, uint32_t mem_mask);
+ pci_device *sub_devices[32*8];
+ std::vector<pci_device *> all_devices;
+ std::vector<pci_bridge_device *> all_bridges;
+
+ uint32_t prefetch_baseu, prefetch_limitu;
+ uint16_t bridge_control, memory_base, memory_limit, prefetch_base, prefetch_limit, iobaseu, iolimitu;
+ uint8_t primary_bus, secondary_bus, subordinate_bus, iobase, iolimit;
+
private:
address_space_config configure_space_config;
};
class agp_bridge_device : public pci_bridge_device {
-public:
- agp_bridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
protected:
+ agp_bridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
};
@@ -239,30 +240,30 @@ class pci_host_device : public pci_bridge_device {
public:
DECLARE_ADDRESS_MAP(io_configuration_access_map, 32);
- pci_host_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
protected:
- address_space *memory_space, *io_space;
+ pci_host_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- uint64_t memory_window_start, memory_window_end, memory_offset;
- uint64_t io_window_start, io_window_end, io_offset;
+ DECLARE_READ32_MEMBER(config_address_r);
+ DECLARE_WRITE32_MEMBER(config_address_w);
+ DECLARE_READ32_MEMBER(config_data_r);
+ DECLARE_WRITE32_MEMBER(config_data_w);
virtual void device_start() override;
virtual void device_reset() override;
virtual device_t *bus_root() override;
- uint32_t config_address;
-
- DECLARE_READ32_MEMBER(config_address_r);
- DECLARE_WRITE32_MEMBER(config_address_w);
- DECLARE_READ32_MEMBER(config_data_r);
- DECLARE_WRITE32_MEMBER(config_data_w);
-
uint32_t root_config_read(uint8_t bus, uint8_t device, uint16_t reg, uint32_t mem_mask);
void root_config_write(uint8_t bus, uint8_t device, uint16_t reg, uint32_t data, uint32_t mem_mask);
void regenerate_mapping();
+
+ address_space *memory_space, *io_space;
+
+ uint64_t memory_window_start, memory_window_end, memory_offset;
+ uint64_t io_window_start, io_window_end, io_offset;
+
+ uint32_t config_address;
};
class pci_root_device : public device_t {
@@ -274,7 +275,7 @@ protected:
virtual void device_reset() override;
};
-extern const device_type PCI_ROOT;
-extern const device_type PCI_BRIDGE;
+DECLARE_DEVICE_TYPE(PCI_ROOT, pci_root_device)
+DECLARE_DEVICE_TYPE(PCI_BRIDGE, pci_bridge_device)
-#endif
+#endif // MAME_MACHINE_PCI_H
diff --git a/src/devices/machine/pci9050.cpp b/src/devices/machine/pci9050.cpp
index 6bfd3fdc983..c2dcf46cea1 100644
--- a/src/devices/machine/pci9050.cpp
+++ b/src/devices/machine/pci9050.cpp
@@ -24,7 +24,7 @@
#include "emu.h"
#include "pci9050.h"
-const device_type PCI9050 = device_creator<pci9050_device>;
+DEFINE_DEVICE_TYPE(PCI9050, pci9050_device, "pci9050", "PLX PCI9050 PCI to Local Bus Bridge")
DEVICE_ADDRESS_MAP_START(map, 32, pci9050_device)
AM_RANGE(0x00, 0x0f) AM_READWRITE(lasrr_r, lasrr_w )
@@ -42,7 +42,7 @@ DEVICE_ADDRESS_MAP_START(empty, 32, pci9050_device)
ADDRESS_MAP_END
pci9050_device::pci9050_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, PCI9050, "PLX PCI9050 PCI to Local Bus Bridge", tag, owner, clock, "pci9050", __FILE__),
+ : pci_device(mconfig, PCI9050, tag, owner, clock),
m_user_input_handler(*this), m_user_output_handler(*this)
{
for(int i=0; i<4; i++) {
diff --git a/src/devices/machine/pci9050.h b/src/devices/machine/pci9050.h
index cb6e07106d9..41b81a4d516 100644
--- a/src/devices/machine/pci9050.h
+++ b/src/devices/machine/pci9050.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef _PCI9050_H
-#define _PCI9050_H
+#ifndef MAME_MACHINE_PCI9050_H
+#define MAME_MACHINE_PCI9050_H
+
+#pragma once
#include "machine/pci.h"
@@ -25,8 +27,7 @@
#define MCFG_PCI9050_USER_OUTPUT_CALLBACK(_read) \
devcb = &pci9050_device::set_user_output_callback(*device, DEVCB_##_read);
-class pci9050_device :
- public pci_device
+class pci9050_device : public pci_device
{
public:
pci9050_device(const machine_config &mconfig, const char *tag, device_t *device, uint32_t clock);
@@ -51,8 +52,8 @@ public:
DECLARE_READ32_MEMBER( cntrl_r );
DECLARE_WRITE32_MEMBER(cntrl_w );
- template<class _Object> static devcb_base &set_user_input_callback(device_t &device, _Object object) { return downcast<pci9050_device &>(device).m_user_input_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_user_output_callback(device_t &device, _Object object) { return downcast<pci9050_device &>(device).m_user_output_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_user_input_callback(device_t &device, Object &&cb) { return downcast<pci9050_device &>(device).m_user_input_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_user_output_callback(device_t &device, Object &&cb) { return downcast<pci9050_device &>(device).m_user_output_handler.set_callback(std::forward<Object>(cb)); }
void set_map(int id, const address_map_delegate &map, device_t *device);
@@ -78,9 +79,8 @@ private:
devcb_read32 m_user_input_handler;
devcb_write32 m_user_output_handler;
-
};
-extern const device_type PCI9050;
+DECLARE_DEVICE_TYPE(PCI9050, pci9050_device)
-#endif
+#endif // MAME_MACHINE_PCI9050_H
diff --git a/src/devices/machine/pckeybrd.cpp b/src/devices/machine/pckeybrd.cpp
index 76ace041e78..2ff9f5c7261 100644
--- a/src/devices/machine/pckeybrd.cpp
+++ b/src/devices/machine/pckeybrd.cpp
@@ -275,43 +275,27 @@ const at_keyboard_device::extended_keyboard_code at_keyboard_device::m_extended_
};
-const device_type PC_KEYB = device_creator<pc_keyboard_device>;
-const device_type AT_KEYB = device_creator<at_keyboard_device>;
+DEFINE_DEVICE_TYPE(PC_KEYB, pc_keyboard_device, "pc_keyb", "PC Keyboard")
+DEFINE_DEVICE_TYPE(AT_KEYB, at_keyboard_device, "at_keyb", "AT Keyboard")
pc_keyboard_device::pc_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PC_KEYB, "PC Keyboard", tag, owner, clock, "pc_keyb", __FILE__),
- m_type(KEYBOARD_TYPE_PC),
- m_ioport_0(*this, ":pc_keyboard_0"),
- m_ioport_1(*this, ":pc_keyboard_1"),
- m_ioport_2(*this, ":pc_keyboard_2"),
- m_ioport_3(*this, ":pc_keyboard_3"),
- m_ioport_4(*this, ":pc_keyboard_4"),
- m_ioport_5(*this, ":pc_keyboard_5"),
- m_ioport_6(*this, ":pc_keyboard_6"),
- m_ioport_7(*this, ":pc_keyboard_7"),
- m_out_keypress_func(*this)
+ pc_keyboard_device(mconfig, PC_KEYB, tag, owner, clock)
{
+ m_type = KEYBOARD_TYPE::PC;
}
-pc_keyboard_device::pc_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_ioport_0(*this, ":pc_keyboard_0"),
- m_ioport_1(*this, ":pc_keyboard_1"),
- m_ioport_2(*this, ":pc_keyboard_2"),
- m_ioport_3(*this, ":pc_keyboard_3"),
- m_ioport_4(*this, ":pc_keyboard_4"),
- m_ioport_5(*this, ":pc_keyboard_5"),
- m_ioport_6(*this, ":pc_keyboard_6"),
- m_ioport_7(*this, ":pc_keyboard_7"),
+pc_keyboard_device::pc_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ m_ioport(*this, ":pc_keyboard_%u", 0),
m_out_keypress_func(*this)
{
}
at_keyboard_device::at_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- pc_keyboard_device(mconfig, AT_KEYB, "AT Keyboard", tag, owner, clock, "at_keyb", __FILE__),
+ pc_keyboard_device(mconfig, AT_KEYB, tag, owner, clock),
m_scan_code_set(1)
{
- m_type = KEYBOARD_TYPE_AT;
+ m_type = KEYBOARD_TYPE::AT;
}
@@ -377,7 +361,7 @@ WRITE_LINE_MEMBER(pc_keyboard_device::enable)
{
if(state && !m_on)
{
- if(m_type == KEYBOARD_TYPE_PC)
+ if(m_type == KEYBOARD_TYPE::PC)
reset();
else
m_keyboard_timer->adjust(attotime::from_msec(5), 0, attotime::from_hz(60));
@@ -525,43 +509,10 @@ void at_keyboard_device::helper(const char *codes)
uint32_t pc_keyboard_device::readport(int port)
{
- uint32_t result = 0;
- switch(port)
- {
- case 0:
- if (m_ioport_0.found())
- result = m_ioport_0->read();
- break;
- case 1:
- if (m_ioport_1.found())
- result = m_ioport_1->read();
- break;
- case 2:
- if (m_ioport_2.found())
- result = m_ioport_2->read();
- break;
- case 3:
- if (m_ioport_3.found())
- result = m_ioport_3->read();
- break;
- case 4:
- if (m_ioport_4.found())
- result = m_ioport_4->read();
- break;
- case 5:
- if (m_ioport_5.found())
- result = m_ioport_5->read();
- break;
- case 6:
- if (m_ioport_6.found())
- result = m_ioport_6->read();
- break;
- case 7:
- if (m_ioport_7.found())
- result = m_ioport_7->read();
- break;
- }
- return result;
+ if ((m_ioport.size() > port) && m_ioport[port].found())
+ return m_ioport[port]->read();
+ else
+ return 0;
}
void pc_keyboard_device::polling(void)
@@ -614,7 +565,7 @@ void pc_keyboard_device::polling(void)
}
}
- if(m_type != KEYBOARD_TYPE_PC)
+ if(m_type != KEYBOARD_TYPE::PC)
{
/* extended scan-codes */
for( i = 0x60; i < 0x70; i++ )
@@ -764,7 +715,7 @@ WRITE8_MEMBER(at_keyboard_device::write)
queue_insert(0xfa);
/* send keyboard code */
- if (m_type == KEYBOARD_TYPE_MF2) {
+ if (m_type == KEYBOARD_TYPE::MF2) {
queue_insert(0xab);
queue_insert(0x41);
}
diff --git a/src/devices/machine/pckeybrd.h b/src/devices/machine/pckeybrd.h
index f7681bba884..419a10acafd 100644
--- a/src/devices/machine/pckeybrd.h
+++ b/src/devices/machine/pckeybrd.h
@@ -11,48 +11,50 @@
**********************************************************************/
-#ifndef PCKEYBRD_H
-#define PCKEYBRD_H
+#ifndef MAME_MACHINE_PCKEYBRD_H
+#define MAME_MACHINE_PCKEYBRD_H
+
+#pragma once
class pc_keyboard_device : public device_t
{
public:
pc_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- pc_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE_LINE_MEMBER(enable);
- template<class _Object> static devcb_base &static_set_keypress_callback(device_t &device, _Object object)
- { return downcast<pc_keyboard_device &>(device).m_out_keypress_func.set_callback(object); }
+ template <class Object> static devcb_base &static_set_keypress_callback(device_t &device, Object &&cb)
+ { return downcast<pc_keyboard_device &>(device).m_out_keypress_func.set_callback(std::forward<Object>(cb)); }
- enum KEYBOARD_TYPE
+ enum class KEYBOARD_TYPE
{
- KEYBOARD_TYPE_PC,
- KEYBOARD_TYPE_AT,
- KEYBOARD_TYPE_MF2
+ PC,
+ AT,
+ MF2
};
-
protected:
+ pc_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
void queue_insert(uint8_t data);
- void clear_buffer(void);
+ void clear_buffer();
int m_numlock;
KEYBOARD_TYPE m_type;
private:
- void polling(void);
+ void polling();
uint32_t readport(int port);
uint8_t unicode_char_to_at_keycode(char32_t ch);
virtual void standard_scancode_insert(int our_code, int pressed);
virtual void extended_scancode_insert(int code, int pressed) { }
- int queue_size(void);
+ int queue_size();
int queue_chars(const char32_t *text, size_t text_len);
bool accept_char(char32_t ch);
bool charqueue_empty();
@@ -66,14 +68,7 @@ private:
uint8_t m_tail;
uint8_t m_make[128];
- optional_ioport m_ioport_0;
- optional_ioport m_ioport_1;
- optional_ioport m_ioport_2;
- optional_ioport m_ioport_3;
- optional_ioport m_ioport_4;
- optional_ioport m_ioport_5;
- optional_ioport m_ioport_6;
- optional_ioport m_ioport_7;
+ optional_ioport_array<8> m_ioport;
devcb_write_line m_out_keypress_func;
emu_timer *m_keyboard_timer;
@@ -87,7 +82,7 @@ public:
DECLARE_WRITE8_MEMBER( write );
static void static_set_type(device_t &device, KEYBOARD_TYPE type, int default_set)
- { downcast<at_keyboard_device &>(device).m_scan_code_set = default_set; downcast<at_keyboard_device &>(device).m_type = type; }
+ { downcast<at_keyboard_device &>(device).m_scan_code_set = default_set; downcast<at_keyboard_device &>(device).m_type = type; }
protected:
virtual void device_reset() override;
@@ -97,7 +92,7 @@ private:
virtual void standard_scancode_insert(int our_code, int pressed) override;
virtual void extended_scancode_insert(int code, int pressed) override;
void helper(const char *codes);
- void clear_buffer_and_acknowledge(void);
+ void clear_buffer_and_acknowledge();
struct extended_keyboard_code
{
@@ -116,8 +111,8 @@ private:
INPUT_PORTS_EXTERN( pc_keyboard );
INPUT_PORTS_EXTERN( at_keyboard );
-extern const device_type PC_KEYB;
-extern const device_type AT_KEYB;
+DECLARE_DEVICE_TYPE(PC_KEYB, pc_keyboard_device)
+DECLARE_DEVICE_TYPE(AT_KEYB, at_keyboard_device)
#define MCFG_PC_KEYB_ADD(_tag, _cb) \
MCFG_DEVICE_ADD(_tag, PC_KEYB, 0) \
@@ -125,7 +120,7 @@ extern const device_type AT_KEYB;
#define MCFG_AT_KEYB_ADD(_tag, _def_set, _cb) \
MCFG_DEVICE_ADD(_tag, AT_KEYB, 0) \
- at_keyboard_device::static_set_type(*device, pc_keyboard_device::KEYBOARD_TYPE_AT, _def_set); \
+ at_keyboard_device::static_set_type(*device, pc_keyboard_device::KEYBOARD_TYPE::AT, _def_set); \
devcb = &pc_keyboard_device::static_set_keypress_callback(*device, DEVCB_##_cb);
#define MCFG_AT_MF2_KEYB_ADD(_tag, _def_set, _cb) \
@@ -133,4 +128,4 @@ extern const device_type AT_KEYB;
at_keyboard_device::static_set_type(*device, pc_keyboard_device::KEYBOARD_TYPE_MF2, _def_set); \
devcb = &pc_keyboard_device::static_set_keypress_callback(*device, DEVCB_##_cb);
-#endif /* PCKEYBRD_H */
+#endif // MAME_MACHINE_PCKEYBRD_H
diff --git a/src/devices/machine/pdc.cpp b/src/devices/machine/pdc.cpp
index f13a810f96a..7653239cd3c 100644
--- a/src/devices/machine/pdc.cpp
+++ b/src/devices/machine/pdc.cpp
@@ -113,7 +113,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PDC = device_creator<pdc_device>;
+DEFINE_DEVICE_TYPE(PDC, pdc_device, "rolm_pdc", "ROLM PDC")
//-------------------------------------------------
// ROM( PDC )
@@ -308,7 +308,7 @@ ioport_constructor pdc_device::device_input_ports() const
//-------------------------------------------------
pdc_device::pdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PDC, "ROLM PDC", tag, owner, clock, "pdc", __FILE__),
+ device_t(mconfig, PDC, tag, owner, clock),
m_pdccpu(*this, Z80_TAG),
m_dma8237(*this, FDCDMA_TAG),
m_fdc(*this, FDC_TAG),
diff --git a/src/devices/machine/pdc.h b/src/devices/machine/pdc.h
index 6d8354f08a9..0de893fcdc7 100644
--- a/src/devices/machine/pdc.h
+++ b/src/devices/machine/pdc.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_PDC_H
+#define MAME_MACHINE_PDC_H
-#ifndef __R9751_PDC_H__
-#define __R9751_PDC_H__
+#pragma once
#include "cpu/z80/z80.h"
#include "machine/upd765.h"
@@ -30,7 +30,7 @@
// ======================> pdc_device
-class pdc_device : public device_t
+class pdc_device : public device_t
{
public:
/* Constructor and Destructor */
@@ -42,8 +42,8 @@ public:
virtual const tiny_rom_entry *device_rom_region() const override;
/* Callbacks */
- template<class _Object> static devcb_base &m68k_r_callback(device_t &device, _Object object) { return downcast<pdc_device &>(device).m_m68k_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &m68k_w_callback(device_t &device, _Object object) { return downcast<pdc_device &>(device).m_m68k_w_cb.set_callback(object); }
+ template <class Object> static devcb_base &m68k_r_callback(device_t &device, Object &&cb) { return downcast<pdc_device &>(device).m_m68k_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &m68k_w_callback(device_t &device, Object &&cb) { return downcast<pdc_device &>(device).m_m68k_w_cb.set_callback(std::forward<Object>(cb)); }
/* Read and Write members */
DECLARE_WRITE_LINE_MEMBER(i8237_hreq_w);
@@ -82,6 +82,7 @@ public:
uint8_t reg_p21;
uint8_t reg_p38;
uint32_t fdd_68k_dma_address; /* FDD <-> m68k DMA read/write address */
+
protected:
/* Device-level overrides */
virtual void device_start() override;
@@ -108,10 +109,12 @@ protected:
/* Device type */
extern const device_type PDC;
+DECLARE_DEVICE_TYPE(PDC, pdc_device)
/* MCFG defines */
#define MCFG_PDC_R_CB(_devcb) \
devcb = &pdc_device::m68k_r_callback(*device, DEVCB_##_devcb);
#define MCFG_PDC_W_CB(_devcb) \
devcb = &pdc_device::m68k_w_callback(*device, DEVCB_##_devcb);
-#endif
+
+#endif // MAME_MACHINE_PDC_H
diff --git a/src/devices/machine/phi.cpp b/src/devices/machine/phi.cpp
index a81c5bd4e4d..42cede7e6d8 100644
--- a/src/devices/machine/phi.cpp
+++ b/src/devices/machine/phi.cpp
@@ -167,11 +167,11 @@ enum {
#define CONTROLLER_ADDR 0x1e // PHI always has this address when it's a controller
// Device type definition
-const device_type PHI = device_creator<phi_device>;
+DEFINE_DEVICE_TYPE(PHI, phi_device, "hp_phi", "HP Processor-to-HPIB Interface")
// Constructors
-phi_device::phi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+phi_device::phi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
m_dio_read_func(*this),
m_dio_write_func(*this),
m_signal_wr_fns{
@@ -189,20 +189,7 @@ phi_device::phi_device(const machine_config &mconfig, device_type type, const ch
}
phi_device::phi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PHI, "HP PHI", tag, owner, clock, "phi", __FILE__),
- m_dio_read_func(*this),
- m_dio_write_func(*this),
- m_signal_wr_fns{
- devcb_write_line(*this),
- devcb_write_line(*this),
- devcb_write_line(*this),
- devcb_write_line(*this),
- devcb_write_line(*this),
- devcb_write_line(*this),
- devcb_write_line(*this),
- devcb_write_line(*this) },
- m_int_write_func(*this),
- m_dmarq_write_func(*this)
+ : phi_device(mconfig, PHI, tag, owner, clock)
{
}
diff --git a/src/devices/machine/phi.h b/src/devices/machine/phi.h
index bd1a0906143..c3b78f1d8a0 100644
--- a/src/devices/machine/phi.h
+++ b/src/devices/machine/phi.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef _PHI_H_
-#define _PHI_H_
+#ifndef MAME_MACHINE_PHI_H
+#define MAME_MACHINE_PHI_H
// Set read and write callbacks to access DIO bus on IEEE-488
#define MCFG_PHI_DIO_READWRITE_CB(_read , _write) \
@@ -49,18 +49,14 @@
#define MCFG_PHI_DMARQ_WRITE_CB(_write) \
phi_device::set_dmarq_write_cb(*device , DEVCB_##_write);
-// Depth of inbound/outbound FIFOs
-#define PHI_FIFO_SIZE 8
-
class phi_device : public device_t
{
public:
// construction/destruction
- phi_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
phi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// See ieee488.h
- typedef enum {
+ enum phi_488_signal_t {
PHI_488_EOI,
PHI_488_DAV,
PHI_488_NRFD,
@@ -70,7 +66,7 @@ public:
PHI_488_ATN,
PHI_488_REN,
PHI_488_SIGNAL_COUNT
- } phi_488_signal_t;
+ };
template<class _Object> static devcb_base& set_dio_read_cb(device_t &device , _Object object)
{ return downcast<phi_device&>(device).m_dio_read_func.set_callback(object); }
@@ -124,12 +120,17 @@ public:
DECLARE_READ8_MEMBER(reg8_r);
protected:
+ phi_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ // Depth of inbound/outbound FIFOs
+ static constexpr unsigned FIFO_SIZE = 8;
+
devcb_read8 m_dio_read_func;
devcb_write8 m_dio_write_func;
devcb_write_line m_signal_wr_fns[ PHI_488_SIGNAL_COUNT ];
@@ -244,8 +245,8 @@ private:
uint16_t m_reg_2nd_id;
uint16_t m_reg_control;
uint16_t m_reg_address;
- util::fifo<uint16_t , PHI_FIFO_SIZE> m_fifo_in;
- util::fifo<uint16_t , PHI_FIFO_SIZE> m_fifo_out;
+ util::fifo<uint16_t , FIFO_SIZE> m_fifo_in;
+ util::fifo<uint16_t , FIFO_SIZE> m_fifo_out;
typedef enum {
NBA_NONE,
@@ -287,6 +288,6 @@ private:
};
// device type definition
-extern const device_type PHI;
+DECLARE_DEVICE_TYPE(PHI, phi_device)
-#endif /* _PHI_H_ */
+#endif // MAME_MACHINE_PHI_H
diff --git a/src/devices/machine/pic8259.cpp b/src/devices/machine/pic8259.cpp
index ecd15713912..266237d4efd 100644
--- a/src/devices/machine/pic8259.cpp
+++ b/src/devices/machine/pic8259.cpp
@@ -16,9 +16,16 @@
#include "emu.h"
#include "machine/pic8259.h"
-#define LOG_ICW 0
-#define LOG_OCW 0
-#define LOG_GENERAL 0
+#define LOG_GENERAL (1U << 0)
+#define LOG_ICW (1U << 1)
+#define LOG_OCW (1U << 2)
+
+//#define VERBOSE (LOG_GENERAL | LOG_ICW | LOG_OCW)
+#include "logmacro.h"
+
+#define LOGICW(...) LOGMASKED(LOG_ICW, __VA_ARGS__)
+#define LOGOCW(...) LOGMASKED(LOG_OCW, __VA_ARGS__)
+
ALLOW_SAVE_TYPE(pic8259_device::pic8259_state_t); // allow save_item on a non-fundamental type
@@ -32,20 +39,14 @@ void pic8259_device::device_timer(emu_timer &timer, device_timer_id id, int para
/* is this IRQ in service and not cascading and sfnm? */
if ((m_isr & mask) && !(m_master && m_cascade && m_nested && (m_slave & mask)))
{
- if (LOG_GENERAL)
- {
- logerror("pic8259_timerproc() %s: PIC IRQ #%d still in service\n", tag(), irq);
- }
+ LOG("pic8259_timerproc(): PIC IRQ #%d still in service\n", irq);
break;
}
/* is this IRQ pending and enabled? */
if ((m_state == STATE_READY) && (m_irr & mask) && !(m_imr & mask))
{
- if (LOG_GENERAL)
- {
- logerror("pic8259_timerproc() %s: PIC triggering IRQ #%d\n", tag(), irq);
- }
+ LOG("pic8259_timerproc(): PIC triggering IRQ #%d\n", irq);
m_out_int_func(1);
return;
}
@@ -64,8 +65,7 @@ void pic8259_device::set_irq_line(int irq, int state)
if (state)
{
/* setting IRQ line */
- if (LOG_GENERAL)
- logerror("pic8259_set_irq_line() %s: PIC set IRQ line #%d\n", tag(), irq);
+ LOG("pic8259_set_irq_line(): PIC set IRQ line #%d\n", irq);
if(m_level_trig_mode || (!m_level_trig_mode && !(m_irq_lines & mask)))
{
@@ -76,10 +76,7 @@ void pic8259_device::set_irq_line(int irq, int state)
else
{
/* clearing IRQ line */
- if (LOG_GENERAL)
- {
- logerror("pic8259_device::set_irq_line() %s: PIC cleared IRQ line #%d\n", tag(), irq);
- }
+ LOG("pic8259_device::set_irq_line(): PIC cleared IRQ line #%d\n", irq);
m_irq_lines &= ~mask;
m_irr &= ~mask;
@@ -97,19 +94,12 @@ uint32_t pic8259_device::acknowledge()
/* is this IRQ pending and enabled? */
if ((m_irr & mask) && !(m_imr & mask))
{
- if (LOG_GENERAL)
- {
- logerror("pic8259_acknowledge() %s: PIC acknowledge IRQ #%d\n", tag(), irq);
- }
+ LOG("pic8259_acknowledge(): PIC acknowledge IRQ #%d\n", irq);
if (!m_level_trig_mode)
- {
m_irr &= ~mask;
- }
if (!m_auto_eoi)
- {
m_isr |= mask;
- }
set_timer();
@@ -134,9 +124,10 @@ uint32_t pic8259_device::acknowledge()
}
}
logerror("Spurious IRQ\n");
- if(m_is_x86)
+ if (m_is_x86)
return m_base + 7;
- return 0xcd0000 + (m_vector_addr_high << 8) + m_vector_addr_low + (7 << (3-m_vector_size));
+ else
+ return 0xcd0000 + (m_vector_addr_high << 8) + m_vector_addr_low + (7 << (3-m_vector_size));
}
@@ -204,10 +195,7 @@ WRITE8_MEMBER( pic8259_device::write )
if (data & 0x10)
{
/* write ICW1 - this pretty much resets the chip */
- if (LOG_ICW)
- {
- logerror("pic8259_device::write() %s: ICW1; data=0x%02X\n", tag(), data);
- }
+ LOGICW("pic8259_device::write(): ICW1; data=0x%02X\n", data);
m_imr = 0x00;
m_isr = 0x00;
@@ -225,10 +213,7 @@ WRITE8_MEMBER( pic8259_device::write )
if ((data & 0x98) == 0x08)
{
/* write OCW3 */
- if (LOG_OCW)
- {
- logerror("pic8259_device::write() %s: OCW3; data=0x%02X\n", tag(), data);
- }
+ LOGOCW("pic8259_device::write(): OCW3; data=0x%02X\n", data);
m_ocw3 = data;
}
@@ -238,10 +223,7 @@ WRITE8_MEMBER( pic8259_device::write )
uint8_t mask = 1 << n;
/* write OCW2 */
- if (LOG_OCW)
- {
- logerror("pic8259_device::write() %s: OCW2; data=0x%02X\n", tag(), data);
- }
+ LOGOCW("pic8259_device::write(): OCW2; data=0x%02X\n", data);
switch (data & 0xe0)
{
@@ -303,10 +285,7 @@ WRITE8_MEMBER( pic8259_device::write )
case STATE_ICW2:
/* write ICW2 */
- if (LOG_ICW)
- {
- logerror("pic8259_device::write() %s: ICW2; data=0x%02X\n", tag(), data);
- }
+ LOGICW("pic8259_device::write(): ICW2; data=0x%02X\n", data);
m_base = data & 0xf8;
m_vector_addr_high = data ;
@@ -322,10 +301,7 @@ WRITE8_MEMBER( pic8259_device::write )
case STATE_ICW3:
/* write ICW3 */
- if (LOG_ICW)
- {
- logerror("pic8259_device::write() %s: ICW3; data=0x%02X\n", tag(), data);
- }
+ LOGICW("pic8259_device::write(): ICW3; data=0x%02X\n", data);
m_slave = data;
m_state = m_icw4_needed ? STATE_ICW4 : STATE_READY;
@@ -333,10 +309,7 @@ WRITE8_MEMBER( pic8259_device::write )
case STATE_ICW4:
/* write ICW4 */
- if (LOG_ICW)
- {
- logerror("pic8259_device::write() %s: ICW4; data=0x%02X\n", tag(), data);
- }
+ LOGICW("pic8259_device::write(): ICW4; data=0x%02X\n", data);
m_nested = (data & 0x10) ? 1 : 0;
m_mode = (data >> 2) & 3;
@@ -347,10 +320,7 @@ WRITE8_MEMBER( pic8259_device::write )
case STATE_READY:
/* write OCW1 - set interrupt mask register */
- if (LOG_OCW)
- {
- logerror("pic8259_device::write(): OCW1; data=0x%02X\n", data);
- }
+ LOGOCW("pic8259_device::write(): OCW1; data=0x%02X\n", data);
//printf("%s %02x\n",m_master ? "master pic8259 mask" : "slave pic8259 mask",data);
m_imr = data;
@@ -428,10 +398,10 @@ void pic8259_device::device_reset()
m_master = m_sp_en_func();
}
-const device_type PIC8259 = device_creator<pic8259_device>;
+DEFINE_DEVICE_TYPE(PIC8259, pic8259_device, "pic8259", "Intel 8259 PIC")
pic8259_device::pic8259_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PIC8259, "8259 PIC", tag, owner, clock, "pit8259", __FILE__)
+ : device_t(mconfig, PIC8259, tag, owner, clock)
, m_out_int_func(*this)
, m_sp_en_func(*this)
, m_read_slave_ack_func(*this)
diff --git a/src/devices/machine/pic8259.h b/src/devices/machine/pic8259.h
index 50f8da14ca8..c3360820edd 100644
--- a/src/devices/machine/pic8259.h
+++ b/src/devices/machine/pic8259.h
@@ -24,8 +24,8 @@
***************************************************************************/
-#ifndef __PIC8259_H__
-#define __PIC8259_H__
+#ifndef MAME_MACHINE_PIC8259_H
+#define MAME_MACHINE_PIC8259_H
/***************************************************************************
@@ -44,9 +44,9 @@ class pic8259_device : public device_t
public:
pic8259_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &static_set_out_int_callback(device_t &device, _Object object) { return downcast<pic8259_device &>(device).m_out_int_func.set_callback(object); }
- template<class _Object> static devcb_base &static_set_sp_en_callback(device_t &device, _Object object) { return downcast<pic8259_device &>(device).m_sp_en_func.set_callback(object); }
- template<class _Object> static devcb_base &static_set_read_slave_ack_callback(device_t &device, _Object object) { return downcast<pic8259_device &>(device).m_read_slave_ack_func.set_callback(object); }
+ template <class Object> static devcb_base &static_set_out_int_callback(device_t &device, Object &&cb) { return downcast<pic8259_device &>(device).m_out_int_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_sp_en_callback(device_t &device, Object &&cb) { return downcast<pic8259_device &>(device).m_sp_en_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_read_slave_ack_callback(device_t &device, Object &&cb) { return downcast<pic8259_device &>(device).m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -64,7 +64,7 @@ public:
IRQ_CALLBACK_MEMBER(inta_cb);
// used by m92.c until we can figure out how to hook it up in a way that doesn't break nbbatman (probably need correct IRQ timing / clears for the sprites IRQs
- int HACK_get_base_vector() { return m_base; }
+ int HACK_get_base_vector() { return m_base; }
protected:
// device-level overrides
@@ -73,7 +73,7 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
- static const device_timer_id TIMER_CHECK_IRQ = 0;
+ static constexpr device_timer_id TIMER_CHECK_IRQ = 0;
inline void set_timer() { timer_set(attotime::zero, TIMER_CHECK_IRQ); }
void set_irq_line(int irq, int state);
@@ -124,6 +124,6 @@ private:
uint8_t m_is_x86;
};
-extern const device_type PIC8259;
+DECLARE_DEVICE_TYPE(PIC8259, pic8259_device)
-#endif /* __PIC8259_H__ */
+#endif // MAME_MACHINE_PIC8259_H
diff --git a/src/devices/machine/pit8253.cpp b/src/devices/machine/pit8253.cpp
index 32cae233483..fdd7fec64e1 100644
--- a/src/devices/machine/pit8253.cpp
+++ b/src/devices/machine/pit8253.cpp
@@ -43,22 +43,17 @@ enum
#define LOG2(msg) do { if (VERBOSE >= 2) logerror msg; } while (0)
-const device_type PIT8253 = device_creator<pit8253_device>;
+DEFINE_DEVICE_TYPE(PIT8253, pit8253_device, "pit8253", "Intel 8253 PIT")
+DEFINE_DEVICE_TYPE(PIT8254, pit8254_device, "pit8254", "Intel 8254 PIT")
pit8253_device::pit8253_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PIT8253, "8253 PIT", tag, owner, clock, "pit8253", __FILE__),
- m_clk0(0),
- m_clk1(0),
- m_clk2(0),
- m_out0_handler(*this),
- m_out1_handler(*this),
- m_out2_handler(*this)
+ pit8253_device(mconfig, PIT8253, tag, owner, clock)
{
}
-pit8253_device::pit8253_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+pit8253_device::pit8253_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
m_clk0(0),
m_clk1(0),
m_clk2(0),
@@ -69,10 +64,8 @@ pit8253_device::pit8253_device(const machine_config &mconfig, device_type type,
}
-const device_type PIT8254 = device_creator<pit8254_device>;
-
pit8254_device::pit8254_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pit8253_device(mconfig, PIT8254, "8254 PIT", tag, owner, clock, "pit8254", __FILE__)
+ : pit8253_device(mconfig, PIT8254, tag, owner, clock)
{
}
diff --git a/src/devices/machine/pit8253.h b/src/devices/machine/pit8253.h
index 568491ed600..6c159efabfd 100644
--- a/src/devices/machine/pit8253.h
+++ b/src/devices/machine/pit8253.h
@@ -25,8 +25,10 @@
***************************************************************************/
-#ifndef __PIT8253_H__
-#define __PIT8253_H__
+#ifndef MAME_MACHINE_PIT8253_H
+#define MAME_MACHINE_PIT8253_H
+
+#pragma once
/***************************************************************************
DEVICE CONFIGURATION MACROS
@@ -55,16 +57,14 @@ class pit8253_device : public device_t
{
public:
pit8253_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- pit8253_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- ~pit8253_device() {}
// static configuration helpers
static void set_clk0(device_t &device, double clk0) { downcast<pit8253_device &>(device).m_clk0 = clk0; }
static void set_clk1(device_t &device, double clk1) { downcast<pit8253_device &>(device).m_clk1 = clk1; }
static void set_clk2(device_t &device, double clk2) { downcast<pit8253_device &>(device).m_clk2 = clk2; }
- template<class _Object> static devcb_base &set_out0_handler(device_t &device, _Object object) { return downcast<pit8253_device &>(device).m_out0_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_out1_handler(device_t &device, _Object object) { return downcast<pit8253_device &>(device).m_out1_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_out2_handler(device_t &device, _Object object) { return downcast<pit8253_device &>(device).m_out2_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_out0_handler(device_t &device, Object &&cb) { return downcast<pit8253_device &>(device).m_out0_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out1_handler(device_t &device, Object &&cb) { return downcast<pit8253_device &>(device).m_out1_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out2_handler(device_t &device, Object &&cb) { return downcast<pit8253_device &>(device).m_out2_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -90,6 +90,8 @@ public:
void set_clockin(int timer, double new_clockin);
protected:
+ pit8253_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -155,7 +157,7 @@ private:
void set_clock_signal(int timerno, int state);
};
-extern const device_type PIT8253;
+DECLARE_DEVICE_TYPE(PIT8253, pit8253_device)
class pit8254_device : public pit8253_device
@@ -167,6 +169,6 @@ protected:
virtual void readback_command(uint8_t data) override;
};
-extern const device_type PIT8254;
+DECLARE_DEVICE_TYPE(PIT8254, pit8254_device)
-#endif /* __PIT8253_H__ */
+#endif // MAME_MACHINE_PIT8253_H
diff --git a/src/devices/machine/pla.cpp b/src/devices/machine/pla.cpp
index 2c9b844b57d..a17335628f5 100644
--- a/src/devices/machine/pla.cpp
+++ b/src/devices/machine/pla.cpp
@@ -12,21 +12,22 @@
#include "plaparse.h"
-const device_type PLA = device_creator<pla_device>;
+DEFINE_DEVICE_TYPE(PLA, pla_device, "pla", "PLA")
//-------------------------------------------------
// pla_device - constructor
//-------------------------------------------------
pla_device::pla_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PLA, "PLA", tag, owner, clock, "pla", __FILE__),
- m_region(*this, DEVICE_SELF),
- m_format(PLA_FMT_JEDBIN),
- m_inputs(0),
- m_outputs(0),
- m_terms(0),
- m_input_mask(0),
- m_xor(0), m_cache_size(0), m_cache2_ptr(0)
+ : device_t(mconfig, PLA, tag, owner, clock)
+ , m_region(*this, DEVICE_SELF)
+ , m_format(FMT::JEDBIN)
+ , m_inputs(0)
+ , m_outputs(0)
+ , m_terms(0)
+ , m_input_mask(0)
+ , m_xor(0)
+ , m_cache_size(0), m_cache2_ptr(0)
{
}
@@ -74,11 +75,11 @@ void pla_device::parse_fusemap()
// read pla file
switch (m_format)
{
- case PLA_FMT_JEDBIN:
+ case FMT::JEDBIN:
result = jedbin_parse(m_region->base(), m_region->bytes(), &jed);
break;
- case PLA_FMT_BERKELEY:
+ case FMT::BERKELEY:
result = pla_parse(m_region->base(), m_region->bytes(), &jed);
break;
}
diff --git a/src/devices/machine/pla.h b/src/devices/machine/pla.h
index 3187d200a00..be998c3184a 100644
--- a/src/devices/machine/pla.h
+++ b/src/devices/machine/pla.h
@@ -6,27 +6,11 @@
**********************************************************************/
-#pragma once
-
-#ifndef __PLA__
-#define __PLA__
-
-
+#ifndef MAME_MACHINE_PLA_H
+#define MAME_MACHINE_PLA_H
+#pragma once
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define MAX_TERMS 512
-#define MAX_CACHE_BITS 20
-#define CACHE2_SIZE 8
-
-enum
-{
- PLA_FMT_JEDBIN = 0,
- PLA_FMT_BERKELEY
-};
@@ -34,17 +18,17 @@ enum
// INTERFACE CONFIGURATION MACROS
///*************************************************************************
-#define MCFG_PLA_ADD(_tag, _inputs, _outputs, _terms) \
- MCFG_DEVICE_ADD(_tag, PLA, 0) \
- pla_device::set_num_inputs(*device, _inputs); \
- pla_device::set_num_outputs(*device, _outputs); \
- pla_device::set_num_terms(*device, _terms);
+#define MCFG_PLA_ADD(tag, inputs, outputs, terms) \
+ MCFG_DEVICE_ADD((tag), PLA, 0) \
+ pla_device::set_num_inputs(*device, (inputs)); \
+ pla_device::set_num_outputs(*device, (outputs)); \
+ pla_device::set_num_terms(*device, (terms));
-#define MCFG_PLA_INPUTMASK(_mask) \
- pla_device::set_inputmask(*device, _mask);
+#define MCFG_PLA_INPUTMASK(mask) \
+ pla_device::set_inputmask(*device, (mask));
-#define MCFG_PLA_FILEFORMAT(_format) \
- pla_device::set_format(*device, _format);
+#define MCFG_PLA_FILEFORMAT(format) \
+ pla_device::set_format(*device, (pla_device::FMT::format));
// macros for known (and used) devices
@@ -67,13 +51,13 @@ enum
F4 13 | | 16 F2
GND 14 |_____________| 15 F3
*/
-#define MCFG_PLS100_ADD(_tag) \
- MCFG_PLA_ADD(_tag, 16, 8, 48)
+#define MCFG_PLS100_ADD(tag) \
+ MCFG_PLA_ADD((tag), 16, 8, 48)
// MOS 8721 PLA
// TODO: actual number of terms is unknown
-#define MCFG_MOS8721_ADD(_tag) \
- MCFG_PLA_ADD(_tag, 27, 18, 379)
+#define MCFG_MOS8721_ADD(tag) \
+ MCFG_PLA_ADD((tag), 27, 18, 379)
@@ -86,6 +70,12 @@ enum
class pla_device : public device_t
{
public:
+ enum class FMT
+ {
+ JEDBIN = 0,
+ BERKELEY
+ };
+
// construction/destruction
pla_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -94,7 +84,7 @@ public:
static void set_num_outputs(device_t &device, uint32_t o) { downcast<pla_device &>(device).m_outputs = o; }
static void set_num_terms(device_t &device, uint32_t t) { downcast<pla_device &>(device).m_terms = t; }
static void set_inputmask(device_t &device, uint32_t mask) { downcast<pla_device &>(device).m_input_mask = mask; } // uint32_t!
- static void set_format(device_t &device, int format) { downcast<pla_device &>(device).m_format = format; }
+ static void set_format(device_t &device, FMT format) { downcast<pla_device &>(device).m_format = format; }
uint32_t inputs() { return m_inputs; }
uint32_t outputs() { return m_outputs; }
@@ -106,11 +96,15 @@ protected:
virtual void device_start() override;
private:
+ static constexpr unsigned MAX_TERMS = 512;
+ static constexpr unsigned MAX_CACHE_BITS = 20;
+ static constexpr unsigned CACHE2_SIZE = 8;
+
void parse_fusemap();
required_memory_region m_region;
- int m_format;
+ FMT m_format;
uint32_t m_inputs;
uint32_t m_outputs;
@@ -132,7 +126,6 @@ private:
// device type definition
-extern const device_type PLA;
-
+DECLARE_DEVICE_TYPE(PLA, pla_device)
-#endif
+#endif // MAME_MACHINE_PLA_H
diff --git a/src/devices/machine/r10696.cpp b/src/devices/machine/r10696.cpp
index f3a353b7ec0..1f6dd022aab 100644
--- a/src/devices/machine/r10696.cpp
+++ b/src/devices/machine/r10696.cpp
@@ -32,12 +32,9 @@
#include "emu.h"
#include "machine/r10696.h"
-#define VERBOSE 1
-#if VERBOSE
-#define LOG(x) logerror x
-#else
-#define LOG(x)
-#endif
+//#define VERBOSE 1
+#include "logmacro.h"
+
/*************************************
*
@@ -45,12 +42,12 @@
*
*************************************/
-const device_type R10696 = device_creator<r10696_device>;
+DEFINE_DEVICE_TYPE(R10696, r10696_device, "r10696", "Rockwell 10696 GPIO")
r10696_device::r10696_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, R10696, "Rockwell 10696", tag, owner, clock, "r10696", __FILE__),
- m_io_a(0), m_io_b(0), m_io_c(0),
- m_iord(*this), m_iowr(*this)
+ : device_t(mconfig, R10696, tag, owner, clock)
+ , m_io_a(0), m_io_b(0), m_io_c(0)
+ , m_iord(*this), m_iowr(*this)
{
}
diff --git a/src/devices/machine/r10696.h b/src/devices/machine/r10696.h
index 16c3cd130bf..ef5d4c8e78f 100644
--- a/src/devices/machine/r10696.h
+++ b/src/devices/machine/r10696.h
@@ -13,8 +13,10 @@
**********************************************************************/
-#ifndef __R10696_H__
-#define __R10696_H__
+#ifndef MAME_MACHINE_R10696_H
+#define MAME_MACHINE_R10696_H
+
+#pragma once
#include "device.h"
@@ -26,20 +28,20 @@
/* Set the read and write group (4-bit; nibble) delegates */
#define MCFG_R10696_IO(_devcb_rd,_devcb_wr) \
- r10696_device::set_iord(*device, DEVCB_##_devcb_rd); \
- r10696_device::set_iowr(*device, DEVCB_##_devcb_wr);
+ r10696_device::set_iord(*device, DEVCB_##_devcb_rd); \
+ r10696_device::set_iowr(*device, DEVCB_##_devcb_wr);
class r10696_device : public device_t
{
public:
r10696_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~r10696_device() {}
DECLARE_READ8_MEMBER ( io_r );
DECLARE_WRITE8_MEMBER( io_w );
- template<class _Object> static devcb_base &set_iord(device_t &device, _Object object) { return downcast<r10696_device &>(device).m_iord.set_callback(object); }
- template<class _Object> static devcb_base &set_iowr(device_t &device, _Object object) { return downcast<r10696_device &>(device).m_iowr.set_callback(object); }
+ template <class Object> static devcb_base &set_iord(device_t &device, Object &&cb) { return downcast<r10696_device &>(device).m_iord.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_iowr(device_t &device, Object &&cb) { return downcast<r10696_device &>(device).m_iowr.set_callback(std::forward<Object>(cb)); }
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -53,6 +55,6 @@ private:
devcb_write8 m_iowr; //!< output line (write, offset = group, data = 4 bits)
};
-extern const device_type R10696;
+DECLARE_DEVICE_TYPE(R10696, r10696_device)
-#endif /* __R10696_H__ */
+#endif // MAME_MACHINE_R10696_H
diff --git a/src/devices/machine/r10788.cpp b/src/devices/machine/r10788.cpp
index 75a486c1915..95b23c9ec9b 100644
--- a/src/devices/machine/r10788.cpp
+++ b/src/devices/machine/r10788.cpp
@@ -39,12 +39,9 @@
#include "emu.h"
#include "machine/r10788.h"
-#define VERBOSE 0
-#if VERBOSE
-#define LOG(x) logerror x
-#else
-#define LOG(x)
-#endif
+//#define VERBOSE 1
+#include "logmacro.h"
+
/*************************************
*
@@ -52,13 +49,13 @@
*
*************************************/
-const device_type R10788 = device_creator<r10788_device>;
+DEFINE_DEVICE_TYPE(R10788, r10788_device, "r10788", "Rockwell 10788 KDC")
r10788_device::r10788_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, R10788, "Rockwell 10788", tag, owner, clock, "r10788", __FILE__),
- m_ktr(0), m_kts(0), m_kla(0), m_klb(0), m_mask_a(15), m_mask_b(15), m_ker(0),
- m_io_counter(0), m_scan_counter(0),
- m_display(*this)
+ : device_t(mconfig, R10788, tag, owner, clock)
+ , m_ktr(0), m_kts(0), m_kla(0), m_klb(0), m_mask_a(15), m_mask_b(15), m_ker(0)
+ , m_io_counter(0), m_scan_counter(0)
+ , m_display(*this)
{
}
@@ -117,11 +114,11 @@ void r10788_device::device_timer(emu_timer &timer, device_timer_id id, int param
case TIMER_DISPLAY:
data = (m_reg[0][m_scan_counter] & m_mask_a) +
16 * (m_reg[1][m_scan_counter] & m_mask_b);
- LOG(("%s: scan counter:%2d data:%02x\n", __FUNCTION__, m_scan_counter, data));
+ LOG("%s: scan counter:%2d data:%02x\n", __FUNCTION__, m_scan_counter, data);
m_display(m_scan_counter, data, 0xff);
break;
default:
- LOG(("%s: invalid timer id:%d\n", __FUNCTION__, id));
+ LOG("%s: invalid timer id:%d\n", __FUNCTION__, id);
}
m_scan_counter = (m_scan_counter + 1) % 16;
}
@@ -144,39 +141,39 @@ WRITE8_MEMBER( r10788_device::io_w )
switch (offset)
{
case KTR: // Transfer Keyboard Return
- LOG(("%s: KTR data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KTR data:%02x\n", __FUNCTION__, data);
m_ktr = data;
break;
case KTS: // Transfer Keyboard Strobe
- LOG(("%s: KTS data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KTS data:%02x\n", __FUNCTION__, data);
m_kts = data;
break;
case KLA: // Load Display Register A
- LOG(("%s: KLA [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
+ LOG("%s: KLA [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data);
m_kla = data;
m_reg[0][m_io_counter] = m_kla;
break;
case KLB: // Load Display Register B
- LOG(("%s: KLB [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
+ LOG("%s: KLB [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data);
m_klb = data;
m_reg[1][m_io_counter] = m_kla;
break;
case KDN: // Turn On Display
- LOG(("%s: KDN data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KDN data:%02x\n", __FUNCTION__, data);
m_mask_a = 15;
m_mask_b = 15;
break;
case KAF: // Turn Off A
- LOG(("%s: KAF data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KAF data:%02x\n", __FUNCTION__, data);
m_mask_a = 0;
m_mask_b &= ~3;
break;
case KBF: // Turn Off B
- LOG(("%s: KBF data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KBF data:%02x\n", __FUNCTION__, data);
m_mask_b &= ~12;
break;
case KER: // Reset Keyboard Error
- LOG(("%s: KER data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KER data:%02x\n", __FUNCTION__, data);
m_ker = 10;
break;
}
@@ -191,35 +188,35 @@ READ8_MEMBER( r10788_device::io_r )
{
case KTR: // Transfer Keyboard Return
data = m_ktr;
- LOG(("%s: KTR data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KTR data:%02x\n", __FUNCTION__, data);
break;
case KTS: // Transfer Keyboard Strobe
data = m_kts;
- LOG(("%s: KTS data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KTS data:%02x\n", __FUNCTION__, data);
break;
case KLA: // Load Display Register A
m_kla = m_reg[0][m_io_counter];
data = m_kla;
- LOG(("%s: KLA [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
+ LOG("%s: KLA [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data);
break;
case KLB: // Load Display Register B
m_klb = m_reg[1][m_io_counter];
data = m_klb;
- LOG(("%s: KLB [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
+ LOG("%s: KLB [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data);
// FIXME: does it automagically increment at KLB write?
m_io_counter = (m_io_counter + 1) % 16;
break;
case KDN: // Turn On Display
- LOG(("%s: KDN data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KDN data:%02x\n", __FUNCTION__, data);
break;
case KAF: // Turn Off A
- LOG(("%s: KAF data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KAF data:%02x\n", __FUNCTION__, data);
break;
case KBF: // Turn Off B
- LOG(("%s: KBF data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KBF data:%02x\n", __FUNCTION__, data);
break;
case KER: // Reset Keyboard Error
- LOG(("%s: KER data:%02x\n", __FUNCTION__, data));
+ LOG("%s: KER data:%02x\n", __FUNCTION__, data);
break;
}
return data;
diff --git a/src/devices/machine/r10788.h b/src/devices/machine/r10788.h
index 0faed89fcd2..43c0b76ca88 100644
--- a/src/devices/machine/r10788.h
+++ b/src/devices/machine/r10788.h
@@ -12,8 +12,10 @@
**********************************************************************/
-#ifndef __R10788_H__
-#define __R10788_H__
+#ifndef MAME_MACHINE_R10788_H
+#define MAME_MACHINE_R10788_H
+
+#pragma once
#include "device.h"
@@ -24,14 +26,13 @@
*************************************/
/* Set the writer used to update a display digit */
-#define MCFG_R10788_UPDATE(_devcb) \
- r10788_device::set_update(*device, DEVCB_##_devcb);
+#define MCFG_R10788_UPDATE(devcb) \
+ r10788_device::set_update(*device, DEVCB_##devcb);
class r10788_device : public device_t
{
public:
r10788_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~r10788_device() {}
enum {
KTR = 0xc, //!< Transfer Keyboard Return
@@ -47,7 +48,8 @@ public:
DECLARE_READ8_MEMBER ( io_r );
DECLARE_WRITE8_MEMBER( io_w );
- template<class _Object> static devcb_base &set_update(device_t &device, _Object object) { return downcast<r10788_device &>(device).m_display.set_callback(object); }
+ template <class Object> static devcb_base &set_update(device_t &device, Object &&cb) { return downcast<r10788_device &>(device).m_display.set_callback(std::forward<Object>(cb)); }
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -71,6 +73,6 @@ private:
emu_timer* m_timer; //!< timer running at clock / 18 / 36
};
-extern const device_type R10788;
+DECLARE_DEVICE_TYPE(R10788, r10788_device)
-#endif /* __R10788_H__ */
+#endif // MAME_MACHINE_R10788_H
diff --git a/src/devices/machine/ra17xx.cpp b/src/devices/machine/ra17xx.cpp
index 6324a70c9d7..d45dec77e91 100644
--- a/src/devices/machine/ra17xx.cpp
+++ b/src/devices/machine/ra17xx.cpp
@@ -40,12 +40,9 @@
#include "emu.h"
#include "machine/ra17xx.h"
-#define VERBOSE 1
-#if VERBOSE
-#define LOG(x) logerror x
-#else
-#define LOG(x)
-#endif
+//#define VERBOSE 1
+#include "logmacro.h"
+
/*************************************
*
@@ -53,14 +50,14 @@
*
*************************************/
-const device_type RA17XX = device_creator<ra17xx_device>;
+DEFINE_DEVICE_TYPE(RA17XX, ra17xx_device, "ra17xx", "Rockwell A17xx")
ra17xx_device::ra17xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RA17XX, "Rockwell A17XX", tag, owner, clock, "ra17xx", __FILE__),
- m_enable(false),
- m_iord(*this),
- m_iowr(*this),
- m_cpu(*this, finder_base::DUMMY_TAG)
+ : device_t(mconfig, RA17XX, tag, owner, clock)
+ , m_enable(false)
+ , m_iord(*this)
+ , m_iowr(*this)
+ , m_cpu(*this, finder_base::DUMMY_TAG)
{
}
diff --git a/src/devices/machine/ra17xx.h b/src/devices/machine/ra17xx.h
index d0d51902d57..a88111a9776 100644
--- a/src/devices/machine/ra17xx.h
+++ b/src/devices/machine/ra17xx.h
@@ -12,8 +12,8 @@
**********************************************************************/
-#ifndef __RA17XX_H__
-#define __RA17XX_H__
+#ifndef MAME_MACHINE_RA17XX_H
+#define MAME_MACHINE_RA17XX_H
#include "device.h"
#include "cpu/pps4/pps4.h"
@@ -24,27 +24,26 @@
*
*************************************/
-/* Set the read line handler */
-#define MCFG_RA17XX_READ(_devcb) \
- ra17xx_device::set_iord(*device, DEVCB_##_devcb);
-/* Set the write line handler */
-#define MCFG_RA17XX_WRITE(_devcb) \
- ra17xx_device::set_iowr(*device, DEVCB_##_devcb);
+// Set the read line handler
+#define MCFG_RA17XX_READ(devcb) \
+ ra17xx_device::set_iord(*device, DEVCB_##devcb);
+// Set the write line handler
+#define MCFG_RA17XX_WRITE(devcb) \
+ ra17xx_device::set_iowr(*device, DEVCB_##devcb);
-#define MCFG_RA17XX_CPU(_tag) \
- ra17xx_device::set_cpu_tag(*device, "^" _tag);
+#define MCFG_RA17XX_CPU(tag) \
+ ra17xx_device::set_cpu_tag(*device, "^" tag);
class ra17xx_device : public device_t
{
public:
ra17xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~ra17xx_device() {}
DECLARE_READ8_MEMBER ( io_r );
DECLARE_WRITE8_MEMBER( io_w );
- template<class _Object> static devcb_base &set_iord(device_t &device, _Object object) { return downcast<ra17xx_device &>(device).m_iord.set_callback(object); }
- template<class _Object> static devcb_base &set_iowr(device_t &device, _Object object) { return downcast<ra17xx_device &>(device).m_iowr.set_callback(object); }
+ template <class Object> static devcb_base &set_iord(device_t &device, Object &&cb) { return downcast<ra17xx_device &>(device).m_iord.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_iowr(device_t &device, Object &&cb) { return downcast<ra17xx_device &>(device).m_iowr.set_callback(std::forward<Object>(cb)); }
static void set_cpu_tag(device_t &device, const char *tag) { downcast<ra17xx_device &>(device).m_cpu.set_tag(tag); }
protected:
@@ -61,6 +60,6 @@ private:
required_device<pps4_device> m_cpu;
};
-extern const device_type RA17XX;
+DECLARE_DEVICE_TYPE(RA17XX, ra17xx_device)
-#endif /* __RA17XX_H__ */
+#endif // MAME_MACHINE_RA17XX_H
diff --git a/src/devices/machine/ram.cpp b/src/devices/machine/ram.cpp
index 49ff027ed0f..a57f144ae0d 100644
--- a/src/devices/machine/ram.cpp
+++ b/src/devices/machine/ram.cpp
@@ -12,8 +12,8 @@
#include <ctype.h>
#include "emu.h"
-#include "emuopts.h"
#include "ram.h"
+#include "emuopts.h"
/*****************************************************************************
@@ -21,17 +21,15 @@
*****************************************************************************/
// device type definition
-const device_type RAM = device_creator<ram_device>;
+DEFINE_DEVICE_TYPE(RAM, ram_device, "ram", "RAM")
-template class device_finder<ram_device, false>;
-template class device_finder<ram_device, true>;
//-------------------------------------------------
// ram_device - constructor
//-------------------------------------------------
ram_device::ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RAM, "RAM", tag, owner, clock, "ram", __FILE__)
+ : device_t(mconfig, RAM, tag, owner, clock)
{
m_size = 0;
m_default_size = nullptr;
diff --git a/src/devices/machine/ram.h b/src/devices/machine/ram.h
index bd464977fa0..e35e9bf51c5 100644
--- a/src/devices/machine/ram.h
+++ b/src/devices/machine/ram.h
@@ -8,8 +8,10 @@
**************************************************************************/
-#ifndef MAME_DEVICES_MACHINE_RAM_H
-#define MAME_DEVICES_MACHINE_RAM_H
+#ifndef MAME_MACHINE_RAM_H
+#define MAME_MACHINE_RAM_H
+
+#pragma once
/***************************************************************************
@@ -47,7 +49,7 @@
TYPE DEFINITIONS
***************************************************************************/
-class ram_device : public device_t
+class ram_device : public device_t
{
public:
// construction/destruction
@@ -68,7 +70,7 @@ public:
// inline configuration helpers
static void static_set_default_size(device_t &device, const char *default_size) { downcast<ram_device &>(device).m_default_size = default_size; }
static void static_set_extra_options(device_t &device, const char *extra_options) { downcast<ram_device &>(device).m_extra_options = extra_options; }
- static void static_set_default_value(device_t &device, uint8_t default_value) { downcast<ram_device &>(device).m_default_value = default_value; }
+ static void static_set_default_value(device_t &device, uint8_t default_value) { downcast<ram_device &>(device).m_default_value = default_value; }
protected:
virtual void device_start(void) override;
@@ -87,12 +89,9 @@ private:
// device type definition
-extern const device_type RAM;
+DECLARE_DEVICE_TYPE(RAM, ram_device)
// device iterator
typedef device_type_iterator<ram_device> ram_device_iterator;
-extern template class device_finder<ram_device, false>;
-extern template class device_finder<ram_device, true>;
-
-#endif // MAME_DEVICES_MACHINE_RAM_H
+#endif // MAME_MACHINE_RAM_H
diff --git a/src/devices/machine/rescap.h b/src/devices/machine/rescap.h
index 23e4b9f4329..851a7c25528 100644
--- a/src/devices/machine/rescap.h
+++ b/src/devices/machine/rescap.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
-#ifndef RC_MACROS_H
-#define RC_MACROS_H
+#ifndef MAME_MACHINE_RESCAP_H
+#define MAME_MACHINE_RESCAP_H
/* Little helpers for magnitude conversions */
#define RES_R(res) ((double)(res))
@@ -26,4 +26,4 @@
#define RES_2_SERIAL(r1,r2) ((r1)+(r2))
-#endif
+#endif // MAME_MACHINE_RESCAP_H
diff --git a/src/devices/machine/rf5c296.cpp b/src/devices/machine/rf5c296.cpp
index dc88babbdb7..7627c0280aa 100644
--- a/src/devices/machine/rf5c296.cpp
+++ b/src/devices/machine/rf5c296.cpp
@@ -5,10 +5,10 @@
// rf5c296 is very inaccurate at that point, it hardcodes the gnet config
-const device_type RF5C296 = device_creator<rf5c296_device>;
+DEFINE_DEVICE_TYPE(RF5C296, rf5c296_device, "rf5c296", "RF5C296 PC Card controller")
rf5c296_device::rf5c296_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RF5C296, "RF5C296 PC Card controller", tag, owner, clock, "rf5c296", __FILE__)
+ : device_t(mconfig, RF5C296, tag, owner, clock)
, m_rf5c296_reg(0)
, m_pccard(nullptr)
, m_pccard_name(nullptr)
diff --git a/src/devices/machine/rf5c296.h b/src/devices/machine/rf5c296.h
index 2f9037b240c..f27644e0269 100644
--- a/src/devices/machine/rf5c296.h
+++ b/src/devices/machine/rf5c296.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:smf
-#pragma once
+#ifndef MAME_MACHINE_RF5C296_H
+#define MAME_MACHINE_RF5C296_H
-#ifndef __RF5C296_H__
-#define __RF5C296_H__
+#pragma once
#include "pccard.h"
@@ -36,6 +36,6 @@ private:
const char *m_pccard_name;
};
-extern const device_type RF5C296;
+DECLARE_DEVICE_TYPE(RF5C296, rf5c296_device)
-#endif
+#endif // MAME_MACHINE_RF5C296_H
diff --git a/src/devices/machine/roc10937.cpp b/src/devices/machine/roc10937.cpp
index 2573e9549b0..05d332106bb 100644
--- a/src/devices/machine/roc10937.cpp
+++ b/src/devices/machine/roc10937.cpp
@@ -125,20 +125,20 @@ static const int roc10937poslut[]=
0//15
};
-rocvfd_t::rocvfd_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+rocvfd_device::rocvfd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock)
{
m_port_val=0;
}
-void rocvfd_t::static_set_value(device_t &device, int val)
+void rocvfd_device::static_set_value(device_t &device, int val)
{
- rocvfd_t &roc = downcast<rocvfd_t &>(device);
+ rocvfd_device &roc = downcast<rocvfd_device &>(device);
roc.m_port_val = val;
}
-void rocvfd_t::device_start()
+void rocvfd_device::device_start()
{
save_item(NAME(m_port_val));
save_item(NAME(m_cursor_pos));
@@ -159,7 +159,7 @@ void rocvfd_t::device_start()
device_reset();
}
-void rocvfd_t::device_reset()
+void rocvfd_device::device_reset()
{
m_cursor_pos = 0;
m_window_size = 16;
@@ -178,19 +178,19 @@ void rocvfd_t::device_reset()
}
///////////////////////////////////////////////////////////////////////////
-uint32_t rocvfd_t::set_display(uint32_t segin)
+uint32_t rocvfd_device::set_display(uint32_t segin)
{
return BITSWAP32(segin, 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,11,9,15,13,12,8,10,14,7,6,5,4,3,2,1,0);
}
///////////////////////////////////////////////////////////////////////////
-void rocvfd_t::device_post_load()
+void rocvfd_device::device_post_load()
{
update_display();
}
-void rocvfd_t::update_display()
+void rocvfd_device::update_display()
{
for (int i =0; i<16; i++)
{
@@ -199,17 +199,17 @@ void rocvfd_t::update_display()
}
}
-WRITE_LINE_MEMBER( rocvfd_t::sclk )
+WRITE_LINE_MEMBER( rocvfd_device::sclk )
{
shift_clock(state);
}
-WRITE_LINE_MEMBER( rocvfd_t::data )
+WRITE_LINE_MEMBER( rocvfd_device::data )
{
m_data = state;
}
-WRITE_LINE_MEMBER( rocvfd_t::por )
+WRITE_LINE_MEMBER( rocvfd_device::por )
{
//If line goes low, reset mode is engaged, until such a time as it goes high again.
if (!state)
@@ -219,7 +219,7 @@ WRITE_LINE_MEMBER( rocvfd_t::por )
}
-void rocvfd_t::shift_clock(int state)
+void rocvfd_device::shift_clock(int state)
{
if (m_sclk != state)
{
@@ -244,39 +244,37 @@ void rocvfd_t::shift_clock(int state)
}
///////////////////////////////////////////////////////////////////////////
-const device_type ROC10937 = device_creator<roc10937_t>;
-
-roc10937_t::roc10937_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : rocvfd_t(mconfig, ROC10937, "Rockwell 10937 VFD controller and compatible", tag, owner, clock, "roc10937", __FILE__)
+DEFINE_DEVICE_TYPE(ROC10937, roc10937_device, "roc10937", "Rockwell 10937 VFD controller") // and compatible
+DEFINE_DEVICE_TYPE(MSC1937, msc1937_device, "msc1937", "OKI MSC1937 VFD controller")
+DEFINE_DEVICE_TYPE(MIC10937, mic10937_device, "mic10937", "Micrel MIC10937 VFD controller")
+DEFINE_DEVICE_TYPE(ROC10957, roc10957_device, "roc10957", "Rockwell 10957 VFD controller") // and compatible
+DEFINE_DEVICE_TYPE(S16LF01, s16lf01_device, "s16lf01", "Samsung 16LF01 Series VFD controller") // and compatible
+
+roc10937_device::roc10937_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : rocvfd_device(mconfig, ROC10937, tag, owner, clock)
{
m_port_val=0;
}
-const device_type MSC1937 = device_creator<msc1937_t>;
-
-msc1937_t::msc1937_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : rocvfd_t(mconfig, MSC1937, "OKI MSC1937 VFD controller", tag, owner, clock, "msc1937", __FILE__)
+msc1937_device::msc1937_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : rocvfd_device(mconfig, MSC1937, tag, owner, clock)
{
m_port_val=0;
}
-const device_type MIC10937 = device_creator<mic10937_t>;
-
-mic10937_t::mic10937_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : rocvfd_t(mconfig, MIC10937, "Micrel MIC10937 VFD controller", tag, owner, clock, "mic10937", __FILE__)
+mic10937_device::mic10937_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : rocvfd_device(mconfig, MIC10937, tag, owner, clock)
{
m_port_val=0;
}
-const device_type S16LF01 = device_creator<s16lf01_t>;
-
-s16lf01_t::s16lf01_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : rocvfd_t(mconfig, S16LF01, "Samsung 16LF01 Series VFD controller and compatible", tag, owner, clock, "s16lf01", __FILE__)
+s16lf01_device::s16lf01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : rocvfd_device(mconfig, S16LF01, tag, owner, clock)
{
m_port_val=0;
}
-void rocvfd_t::write_char(int data)
+void rocvfd_device::write_char(int data)
{
if ( data & 0x80 )
{ // Control data received
@@ -327,15 +325,13 @@ void rocvfd_t::write_char(int data)
}
}
-const device_type ROC10957 = device_creator<roc10957_t>;
-
-roc10957_t::roc10957_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : rocvfd_t(mconfig, ROC10957, "Rockwell 10957 VFD controller and compatible", tag, owner, clock, "roc10957", __FILE__)
+roc10957_device::roc10957_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : rocvfd_device(mconfig, ROC10957, tag, owner, clock)
{
m_port_val=0;
}
-void roc10957_t::write_char(int data)
+void roc10957_device::write_char(int data)
{
if ( data & 0x80 )
{ // Control data received
diff --git a/src/devices/machine/roc10937.h b/src/devices/machine/roc10937.h
index da1b5799438..e0488697d86 100644
--- a/src/devices/machine/roc10937.h
+++ b/src/devices/machine/roc10937.h
@@ -7,64 +7,61 @@
OKI MSC1937 is a clone of this chip, with many others.
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_ROC10937_H
+#define MAME_MACHINE_ROC10937_H
-#ifndef ROC10937_H
-#define ROC10937_H
+#pragma once
#define MCFG_ROC10937_ADD(_tag,_val) \
MCFG_DEVICE_ADD(_tag, ROC10937,60)\
MCFG_ROC10937_PORT(_val)
#define MCFG_ROC10937_PORT(_val) \
- roc10937_t::static_set_value(*device, _val);
+ roc10937_device::static_set_value(*device, _val);
#define MCFG_ROC10937_REMOVE(_tag) \
- MCFG_DEVICE_REMOVE(_tag)
+ MCFG_DEVICE_REMOVE(_tag)
#define MCFG_ROC10957_ADD(_tag,_val) \
MCFG_DEVICE_ADD(_tag, ROC10957,60)\
MCFG_ROC10957_PORT(_val)
#define MCFG_ROC10957_PORT(_val) \
- roc10957_t::static_set_value(*device, _val);
+ roc10957_device::static_set_value(*device, _val);
#define MCFG_ROC10957_REMOVE(_tag) \
- MCFG_DEVICE_REMOVE(_tag)
+ MCFG_DEVICE_REMOVE(_tag)
#define MCFG_MSC1937_ADD(_tag,_val) \
MCFG_DEVICE_ADD(_tag, ROC10937,60)\
MCFG_MSC1937_PORT(_val)
#define MCFG_MSC1937_PORT(_val) \
- MCFG_ROC10937_PORT(_val)
+ MCFG_ROC10937_PORT(_val)
#define MCFG_MSC1937_REMOVE(_tag) \
- MCFG_DEVICE_REMOVE(_tag)
+ MCFG_DEVICE_REMOVE(_tag)
#define MCFG_MIC10937_ADD(_tag,_val) \
MCFG_DEVICE_ADD(_tag, MIC10937,60)\
MCFG_MIC10937_PORT(_val)
#define MCFG_MIC10937_PORT(_val) \
- MCFG_ROC10937_PORT(_val)
+ MCFG_ROC10937_PORT(_val)
#define MCFG_MIC10937_REMOVE(_tag) \
- MCFG_DEVICE_REMOVE(_tag)
+ MCFG_DEVICE_REMOVE(_tag)
#define MCFG_S16LF01_ADD(_tag,_val) \
MCFG_DEVICE_ADD(_tag, S16LF01,60)\
MCFG_S16LF01_PORT(_val)
#define MCFG_S16LF01_PORT(_val) \
- MCFG_ROC10937_PORT(_val)
+ MCFG_ROC10937_PORT(_val)
-class rocvfd_t : public device_t {
+class rocvfd_device : public device_t {
public:
- rocvfd_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// inline configuration helpers
static void static_set_value(device_t &device, int val);
virtual void update_display();
- uint8_t m_port_val;
void shift_clock(int data);
void write_char(int data);
uint32_t set_display(uint32_t segin);
@@ -74,6 +71,9 @@ public:
protected:
+ rocvfd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ uint8_t m_port_val;
int m_cursor_pos;
int m_window_size; // window size
int m_shift_count;
@@ -95,37 +95,38 @@ protected:
};
-class roc10937_t : public rocvfd_t {
+class roc10937_device : public rocvfd_device {
public:
- roc10937_t(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);
};
-class msc1937_t : public rocvfd_t {
+class msc1937_device : public rocvfd_device {
public:
- msc1937_t(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);
};
-class mic10937_t : public rocvfd_t {
+class mic10937_device : public rocvfd_device {
public:
- mic10937_t(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);
};
-class roc10957_t : public rocvfd_t {
+class roc10957_device : public rocvfd_device {
public:
- roc10957_t(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);
void write_char(int data);
};
-class s16lf01_t : public rocvfd_t {
+class s16lf01_device : public rocvfd_device {
public:
- s16lf01_t(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);
};
-extern const device_type ROC10937;
-extern const device_type MSC1937;
-extern const device_type MIC10937;
-extern const device_type ROC10957;
-extern const device_type S16LF01;
-#endif
+DECLARE_DEVICE_TYPE(ROC10937, roc10937_device)
+DECLARE_DEVICE_TYPE(MSC1937, msc1937_device)
+DECLARE_DEVICE_TYPE(MIC10937, mic10937_device)
+DECLARE_DEVICE_TYPE(ROC10957, roc10957_device)
+DECLARE_DEVICE_TYPE(S16LF01, s16lf01_device)
+
+#endif // MAME_MACHINE_ROC10937_H
diff --git a/src/devices/machine/rp5c01.cpp b/src/devices/machine/rp5c01.cpp
index a7b9a3ec067..99eb81ca4df 100644
--- a/src/devices/machine/rp5c01.cpp
+++ b/src/devices/machine/rp5c01.cpp
@@ -21,7 +21,7 @@
// device type definition
-const device_type RP5C01 = device_creator<rp5c01_device>;
+DEFINE_DEVICE_TYPE(RP5C01, rp5c01_device, "rp5c01", "Ricoh RP5C01 RTC")
//**************************************************************************
@@ -169,7 +169,7 @@ inline void rp5c01_device::check_alarm()
//-------------------------------------------------
rp5c01_device::rp5c01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RP5C01, "RP5C01", tag, owner, clock, "rp5c01", __FILE__),
+ : device_t(mconfig, RP5C01, tag, owner, clock),
device_rtc_interface(mconfig, *this),
device_nvram_interface(mconfig, *this),
m_out_alarm_cb(*this),
diff --git a/src/devices/machine/rp5c01.h b/src/devices/machine/rp5c01.h
index c1e9ba5b808..c80d9c48405 100644
--- a/src/devices/machine/rp5c01.h
+++ b/src/devices/machine/rp5c01.h
@@ -18,10 +18,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_RP5C01_H
+#define MAME_MACHINE_RP5C01_H
-#ifndef __RP5C01__
-#define __RP5C01__
+#pragma once
#include "dirtc.h"
@@ -53,7 +53,7 @@ public:
// construction/destruction
rp5c01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_alarm_callback(device_t &device, _Object object) { return downcast<rp5c01_device &>(device).m_out_alarm_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_alarm_callback(device_t &device, Object &&cb) { return downcast<rp5c01_device &>(device).m_out_alarm_cb.set_callback(std::forward<Object>(cb)); }
static void remove_battery(device_t &device) { downcast<rp5c01_device &>(device).m_battery_backed = false; }
DECLARE_READ8_MEMBER( read );
@@ -105,8 +105,6 @@ private:
// device type definition
-extern const device_type RP5C01;
-
-
+DECLARE_DEVICE_TYPE(RP5C01, rp5c01_device)
-#endif
+#endif // MAME_MACHINE_RP5C01_H
diff --git a/src/devices/machine/rp5c15.cpp b/src/devices/machine/rp5c15.cpp
index 4c5d73c044c..7d9b3b9b320 100644
--- a/src/devices/machine/rp5c15.cpp
+++ b/src/devices/machine/rp5c15.cpp
@@ -19,15 +19,15 @@
#include "emu.h"
#include "rp5c15.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
// registers
enum
{
@@ -106,7 +106,7 @@ enum
//**************************************************************************
// devices
-const device_type RP5C15 = device_creator<rp5c15_device>;
+DEFINE_DEVICE_TYPE(RP5C15, rp5c15_device, "rp5c15", "Ricoh RP5C15 RTC")
@@ -126,7 +126,7 @@ inline void rp5c15_device::set_alarm_line()
if (m_alarm != alarm)
{
- if (LOG) logerror("RP5C15 '%s' Alarm %u\n", tag(), alarm);
+ LOG("RP5C15 Alarm %u\n", alarm);
m_out_alarm_cb(alarm);
m_alarm = alarm;
@@ -184,7 +184,7 @@ inline void rp5c15_device::check_alarm()
//-------------------------------------------------
rp5c15_device::rp5c15_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RP5C15, "RP5C15", tag, owner, clock, "rp5c15", __FILE__),
+ : device_t(mconfig, RP5C15, tag, owner, clock),
device_rtc_interface(mconfig, *this),
m_out_alarm_cb(*this),
m_out_clkout_cb(*this),
@@ -314,7 +314,7 @@ READ8_MEMBER( rp5c15_device::read )
break;
}
- if (LOG) logerror("RP5C15 '%s' Register %u Read %02x\n", tag(), offset, data);
+ LOG("RP5C15 Register %u Read %02x\n", offset, data);
return data & 0x0f;
}
@@ -334,16 +334,13 @@ WRITE8_MEMBER( rp5c15_device::write )
case REGISTER_MODE:
m_mode = data;
- if (LOG)
- {
- logerror("RP5C15 '%s' Mode %u\n", tag(), data & MODE_MASK);
- logerror("RP5C15 '%s' Timer %s\n", tag(), (data & MODE_TIMER_EN) ? "enabled" : "disabled");
- logerror("RP5C15 '%s' Alarm %s\n", tag(), (data & MODE_ALARM_EN) ? "enabled" : "disabled");
- }
+ LOG("RP5C15 Mode %u\n", data & MODE_MASK);
+ LOG("RP5C15 Timer %s\n", (data & MODE_TIMER_EN) ? "enabled" : "disabled");
+ LOG("RP5C15 Alarm %s\n", (data & MODE_ALARM_EN) ? "enabled" : "disabled");
break;
case REGISTER_TEST:
- if (LOG) logerror("RP5C15 '%s' Test %u not supported!\n", tag(), data);
+ LOG("RP5C15 Test %u not supported!\n", data);
break;
case REGISTER_RESET:
@@ -358,13 +355,10 @@ WRITE8_MEMBER( rp5c15_device::write )
}
}
- if (LOG)
- {
- if (data & RESET_ALARM) logerror("RP5C15 '%s' Alarm Reset\n", tag());
- if (data & RESET_TIMER) logerror("RP5C15 '%s' Timer Reset not supported!\n", tag());
- logerror("RP5C15 '%s' 16Hz Signal %s\n", tag(), (data & RESET_16_HZ) ? "disabled" : "enabled");
- logerror("RP5C15 '%s' 1Hz Signal %s\n", tag(), (data & RESET_1_HZ) ? "disabled" : "enabled");
- }
+ if (data & RESET_ALARM) LOG("RP5C15 Alarm Reset\n");
+ if (data & RESET_TIMER) LOG("RP5C15 Timer Reset not supported!\n");
+ LOG("RP5C15 16Hz Signal %s\n", (data & RESET_16_HZ) ? "disabled" : "enabled");
+ LOG("RP5C15 1Hz Signal %s\n", (data & RESET_1_HZ) ? "disabled" : "enabled");
break;
default:
@@ -432,7 +426,7 @@ WRITE8_MEMBER( rp5c15_device::write )
break;
}
- if (LOG) logerror("RP5C15 '%s' Register %u Write %02x\n", tag(), offset, data);
+ LOG("RP5C15 Register %u Write %02x\n", offset, data);
break;
}
}
diff --git a/src/devices/machine/rp5c15.h b/src/devices/machine/rp5c15.h
index 32c7a7a74ed..128d2da6d2c 100644
--- a/src/devices/machine/rp5c15.h
+++ b/src/devices/machine/rp5c15.h
@@ -18,10 +18,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_RP5C15_H
+#define MAME_MACHINE_RP5C15_H
-#ifndef __RP5C15__
-#define __RP5C15__
+#pragma once
#include "dirtc.h"
@@ -50,8 +50,8 @@ public:
// construction/destruction
rp5c15_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_alarm_callback(device_t &device, _Object object) { return downcast<rp5c15_device &>(device).m_out_alarm_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_clkout_callback(device_t &device, _Object object) { return downcast<rp5c15_device &>(device).m_out_clkout_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_alarm_callback(device_t &device, Object &&cb) { return downcast<rp5c15_device &>(device).m_out_alarm_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_clkout_callback(device_t &device, Object &&cb) { return downcast<rp5c15_device &>(device).m_out_clkout_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -97,8 +97,6 @@ private:
// device type definition
-extern const device_type RP5C15;
-
-
+DECLARE_DEVICE_TYPE(RP5C15, rp5c15_device)
-#endif
+#endif // MAME_MACHINE_RP5C15_H
diff --git a/src/devices/machine/rp5h01.cpp b/src/devices/machine/rp5h01.cpp
index 2bf8dbdc6ee..21367354256 100644
--- a/src/devices/machine/rp5h01.cpp
+++ b/src/devices/machine/rp5h01.cpp
@@ -30,10 +30,10 @@ uint8_t const rp5h01_device::s_initial_data[0x10] =
// rp5h01_device - constructor
//-------------------------------------------------
-const device_type RP5H01 = device_creator<rp5h01_device>;
+DEFINE_DEVICE_TYPE(RP5H01, rp5h01_device, "rp5h01", "RP5H01 6/7-bit Counter")
rp5h01_device::rp5h01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RP5H01, "RP5H01 6/7-bit Counter", tag, owner, clock, "rp5h01", __FILE__)
+ : device_t(mconfig, RP5H01, tag, owner, clock)
, m_data(nullptr)
, m_rom(*this, DEVICE_SELF, 0x10)
{
diff --git a/src/devices/machine/rp5h01.h b/src/devices/machine/rp5h01.h
index c6c69237415..10110c0ee79 100644
--- a/src/devices/machine/rp5h01.h
+++ b/src/devices/machine/rp5h01.h
@@ -16,20 +16,14 @@
***************************************************************************/
-#ifndef __RP5H01_H__
-#define __RP5H01_H__
+#ifndef MAME_MACHINE_RP5H01_H
+#define MAME_MACHINE_RP5H01_H
/***************************************************************************
PARAMETERS
***************************************************************************/
-/* these also work as the address masks */
-enum {
- COUNTER_MODE_6_BITS = 0x3f,
- COUNTER_MODE_7_BITS = 0x7f
-};
-
/***************************************************************************
MACROS / CONSTANTS
***************************************************************************/
@@ -53,6 +47,12 @@ protected:
virtual void device_reset() override;
private:
+ /* these also work as the address masks */
+ enum {
+ COUNTER_MODE_6_BITS = 0x3f,
+ COUNTER_MODE_7_BITS = 0x7f
+ };
+
static uint8_t const s_initial_data[0x10];
// internal state
@@ -65,7 +65,7 @@ private:
optional_region_ptr<uint8_t> m_rom;
};
-extern const device_type RP5H01;
+DECLARE_DEVICE_TYPE(RP5H01, rp5h01_device)
#define MCFG_RP5H01_ADD(_tag) \
@@ -77,4 +77,4 @@ extern const device_type RP5H01;
* assigned to device.
*/
-#endif /* __RP5H01_H__ */
+#endif // MAME_MACHINE_RP5H01_H
diff --git a/src/devices/machine/rtc4543.cpp b/src/devices/machine/rtc4543.cpp
index 761f1c0246b..ed3b0ee1bcd 100644
--- a/src/devices/machine/rtc4543.cpp
+++ b/src/devices/machine/rtc4543.cpp
@@ -17,12 +17,14 @@
#include "emu.h"
#include "rtc4543.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define VERBOSE 0
-
const char *rtc4543_device::s_reg_names[7] =
{
"second",
@@ -40,7 +42,7 @@ const char *rtc4543_device::s_reg_names[7] =
//**************************************************************************
// device type definition
-const device_type RTC4543 = device_creator<rtc4543_device>;
+DEFINE_DEVICE_TYPE(RTC4543, rtc4543_device, "rtc4543", "Epson R4543 RTC")
//-------------------------------------------------
@@ -48,16 +50,16 @@ const device_type RTC4543 = device_creator<rtc4543_device>;
//-------------------------------------------------
rtc4543_device::rtc4543_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RTC4543, "R4543 RTC", tag, owner, clock, "rtc4543", __FILE__),
- device_rtc_interface(mconfig, *this),
- data_cb(*this), m_ce(0), m_clk(0), m_wr(0), m_data(0), m_curbit(0), m_clock_timer(nullptr)
+ : rtc4543_device(mconfig, RTC4543, tag, owner, clock)
{
}
-rtc4543_device::rtc4543_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *filename)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, filename),
- device_rtc_interface(mconfig, *this),
- data_cb(*this), m_ce(0), m_clk(0), m_wr(0), m_data(0), m_curbit(0), m_clock_timer(nullptr)
+rtc4543_device::rtc4543_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_rtc_interface(mconfig, *this)
+ , data_cb(*this)
+ , m_ce(0), m_clk(0), m_wr(0), m_data(0), m_curbit(0)
+ , m_clock_timer(nullptr)
{
}
@@ -134,12 +136,12 @@ WRITE_LINE_MEMBER( rtc4543_device::ce_w )
{
if (!state && m_ce) // complete transfer
{
- if (VERBOSE) logerror("CE falling edge\n", state);
+ LOG("CE falling edge\n");
ce_falling();
}
else if (state && !m_ce) // start new data transfer
{
- if (VERBOSE) logerror("CE rising edge\n", state);
+ LOG("CE rising edge\n");
ce_rising();
}
@@ -175,8 +177,8 @@ void rtc4543_device::ce_falling()
WRITE_LINE_MEMBER( rtc4543_device::wr_w )
{
- if (VERBOSE && (state != m_wr))
- logerror("WR: %u\n", state);
+ if (state != m_wr)
+ LOG("WR: %u\n", state);
m_wr = state;
}
@@ -194,12 +196,12 @@ WRITE_LINE_MEMBER( rtc4543_device::clk_w )
if (!m_clk && state)
{
clk_rising();
- if (VERBOSE) logerror("CLK rising edge (I/O: %u, bit %d)\n", m_data, bit);
+ LOG("CLK rising edge (I/O: %u, bit %d)\n", m_data, bit);
}
else if (m_clk && !state)
{
clk_falling();
- if (VERBOSE) logerror("CLK falling edge (I/O: %u, bit %d)\n", m_data, bit);
+ LOG("CLK falling edge (I/O: %u, bit %d)\n", m_data, bit);
}
}
@@ -270,13 +272,10 @@ void rtc4543_device::load_bit(int reg)
int bit = m_curbit & 7;
// reload data?
- if (VERBOSE)
- {
- if (bit == 0)
- logerror("RTC sending low digit of %s: %x\n", s_reg_names[reg], m_regs[reg] & 0xf);
- else if (bit == 4)
- logerror("RTC sending high digit of %s: %x\n", s_reg_names[reg], (m_regs[reg] >> 4) & 0xf);
- }
+ if (bit == 0)
+ LOG("RTC sending low digit of %s: %x\n", s_reg_names[reg], m_regs[reg] & 0xf);
+ else if (bit == 4)
+ LOG("RTC sending high digit of %s: %x\n", s_reg_names[reg], (m_regs[reg] >> 4) & 0xf);
// shift data bit
m_data = (m_regs[reg] >> bit) & 1;
@@ -296,13 +295,10 @@ void rtc4543_device::store_bit(int reg)
m_regs[reg] &= ~(1 << bit);
m_regs[reg] |= m_data << bit;
- if (VERBOSE)
- {
- if (bit == 7)
- logerror("RTC received high digit of %s: %X\n", s_reg_names[reg], (m_regs[reg] >> 4) & 0xf);
- else if (bit == 3)
- logerror("RTC received low digit of %s: %X\n", s_reg_names[reg], m_regs[reg] & 0xf);
- }
+ if (bit == 7)
+ LOG("RTC received high digit of %s: %X\n", s_reg_names[reg], (m_regs[reg] >> 4) & 0xf);
+ else if (bit == 3)
+ LOG("RTC received low digit of %s: %X\n", s_reg_names[reg], m_regs[reg] & 0xf);
}
@@ -329,16 +325,16 @@ void rtc4543_device::advance_bit()
void rtc4543_device::update_effective()
{
- if (VERBOSE)
- logerror("RTC updated: %02x.%02x.%02x (%01x) %02x:%02x:%02x\n", m_regs[6], m_regs[5], m_regs[4], m_regs[3], m_regs[2], m_regs[1], m_regs[0]);
- set_time(false,
- bcd_to_integer(m_regs[6]), // year
- bcd_to_integer(m_regs[5]), // month
- bcd_to_integer(m_regs[4]), // day
- (m_regs[3] % 7) + 1, // day of week
- bcd_to_integer(m_regs[2]), // hour
- bcd_to_integer(m_regs[1]), // minute
- bcd_to_integer(m_regs[0])); // second
+ LOG("RTC updated: %02x.%02x.%02x (%01x) %02x:%02x:%02x\n", m_regs[6], m_regs[5], m_regs[4], m_regs[3], m_regs[2], m_regs[1], m_regs[0]);
+ set_time(
+ false,
+ bcd_to_integer(m_regs[6]), // year
+ bcd_to_integer(m_regs[5]), // month
+ bcd_to_integer(m_regs[4]), // day
+ (m_regs[3] % 7) + 1, // day of week
+ bcd_to_integer(m_regs[2]), // hour
+ bcd_to_integer(m_regs[1]), // minute
+ bcd_to_integer(m_regs[0])); // second
}
@@ -347,7 +343,7 @@ void rtc4543_device::update_effective()
//**************************************************************************
// device type definition
-const device_type JRC6355E = device_creator<jrc6355e_device>;
+DEFINE_DEVICE_TYPE(JRC6355E, jrc6355e_device, "jrc6355e", "JRC 6355E RTC")
//-------------------------------------------------
@@ -355,7 +351,7 @@ const device_type JRC6355E = device_creator<jrc6355e_device>;
//-------------------------------------------------
jrc6355e_device::jrc6355e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : rtc4543_device(mconfig, JRC6355E, "JRC 6355E RTC", tag, owner, clock, "jrc6355e", __FILE__)
+ : rtc4543_device(mconfig, JRC6355E, tag, owner, clock)
{
}
diff --git a/src/devices/machine/rtc4543.h b/src/devices/machine/rtc4543.h
index 1e29c9e7d57..fd63705ab91 100644
--- a/src/devices/machine/rtc4543.h
+++ b/src/devices/machine/rtc4543.h
@@ -7,10 +7,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_RTC4543_H
+#define MAME_MACHINE_RTC4543_H
-#ifndef __RTC4543_H__
-#define __RTC4543_H__
+#pragma once
#include "dirtc.h"
@@ -20,14 +20,14 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_RTC4543_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, RTC4543, _clock)
+#define MCFG_RTC4543_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), RTC4543, (clock))
-#define MCFG_RTC4543_DATA_CALLBACK(_devcb) \
- devcb = &rtc4543_device::set_data_cb(*device, DEVCB_##_devcb);
+#define MCFG_RTC4543_DATA_CALLBACK(cb) \
+ devcb = &rtc4543_device::set_data_cb(*device, DEVCB_##cb);
-#define MCFG_JRC6355E_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, JRC6355E, _clock)
+#define MCFG_JRC6355E_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), JRC6355E, (clock))
@@ -45,7 +45,6 @@ class rtc4543_device : public device_t,
public:
// construction/destruction
rtc4543_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- rtc4543_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *filename);
DECLARE_WRITE_LINE_MEMBER( ce_w );
DECLARE_WRITE_LINE_MEMBER( wr_w );
@@ -53,9 +52,11 @@ public:
DECLARE_READ_LINE_MEMBER( data_r );
DECLARE_WRITE_LINE_MEMBER( data_w );
- template<class _Object> static devcb_base &set_data_cb(device_t &device, _Object object) { return downcast<rtc4543_device &>(device).data_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_data_cb(device_t &device, Object &&cb) { return downcast<rtc4543_device &>(device).data_cb.set_callback(std::forward<Object>(cb)); }
protected:
+ rtc4543_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -108,7 +109,7 @@ protected:
// device type definition
-extern const device_type RTC4543;
-extern const device_type JRC6355E;
+DECLARE_DEVICE_TYPE(RTC4543, rtc4543_device)
+DECLARE_DEVICE_TYPE(JRC6355E, jrc6355e_device)
-#endif
+#endif // MAME_MACHINE_RTC4543_H
diff --git a/src/devices/machine/rtc65271.cpp b/src/devices/machine/rtc65271.cpp
index f45091efbc6..f44cc8255fc 100644
--- a/src/devices/machine/rtc65271.cpp
+++ b/src/devices/machine/rtc65271.cpp
@@ -646,16 +646,16 @@ TIMER_CALLBACK_MEMBER(rtc65271_device::rtc_end_update_cb)
}
// device type definition
-const device_type RTC65271 = device_creator<rtc65271_device>;
+DEFINE_DEVICE_TYPE(RTC65271, rtc65271_device, "rtc65271", "Epson RTC-65271 RTC")
//-------------------------------------------------
// rtc65271_device - constructor
//-------------------------------------------------
rtc65271_device::rtc65271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RTC65271, "RTC-65271", tag, owner, clock, "rtc65271", __FILE__),
- device_nvram_interface(mconfig, *this),
- m_interrupt_cb(*this)
+ : device_t(mconfig, RTC65271, tag, owner, clock)
+ , device_nvram_interface(mconfig, *this)
+ , m_interrupt_cb(*this)
{
}
diff --git a/src/devices/machine/rtc65271.h b/src/devices/machine/rtc65271.h
index 961251f53b8..e32c87af8c7 100644
--- a/src/devices/machine/rtc65271.h
+++ b/src/devices/machine/rtc65271.h
@@ -4,15 +4,18 @@
rtc65271.h: include file for rtc65271.c
*/
-#ifndef __RTC65271_H__
-#define __RTC65271_H__
+#ifndef MAME_MACHINE_RTC65271_H
+#define MAME_MACHINE_RTC65271_H
+
+#pragma once
+
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_RTC65271_INTERRUPT_CB(_devcb) \
- devcb = &rtc65271_device::set_interrupt_callback(*device, DEVCB_##_devcb);
+#define MCFG_RTC65271_INTERRUPT_CB(cb) \
+ devcb = &rtc65271_device::set_interrupt_callback(*device, DEVCB_##cb);
// ======================> rtc65271_device
@@ -23,6 +26,14 @@ class rtc65271_device : public device_t,
public:
// construction/destruction
rtc65271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ template <class Object> static devcb_base &set_interrupt_callback(device_t &device, Object &&cb) { return downcast<rtc65271_device &>(device).m_interrupt_cb.set_callback(std::forward<Object>(cb)); }
+
+ DECLARE_READ8_MEMBER( rtc_r );
+ DECLARE_READ8_MEMBER( xram_r );
+ DECLARE_WRITE8_MEMBER( rtc_w );
+ DECLARE_WRITE8_MEMBER( xram_w );
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -30,14 +41,7 @@ protected:
virtual void nvram_default() override;
virtual void nvram_read(emu_file &file) override;
virtual void nvram_write(emu_file &file) override;
-public:
- template<class _Object> static devcb_base &set_interrupt_callback(device_t &device, _Object object) { return downcast<rtc65271_device &>(device).m_interrupt_cb.set_callback(object); }
-
- DECLARE_READ8_MEMBER( rtc_r );
- DECLARE_READ8_MEMBER( xram_r );
- DECLARE_WRITE8_MEMBER( rtc_w );
- DECLARE_WRITE8_MEMBER( xram_w );
private:
uint8_t read(int xramsel, offs_t offset);
void write(int xramsel, offs_t offset, uint8_t data);
@@ -67,6 +71,6 @@ private:
};
// device type definition
-extern const device_type RTC65271;
+DECLARE_DEVICE_TYPE(RTC65271, rtc65271_device)
-#endif
+#endif // MAME_MACHINE_RTC65271_H
diff --git a/src/devices/machine/rtc9701.cpp b/src/devices/machine/rtc9701.cpp
index 7d3b8b5867a..a37e79ed7ba 100644
--- a/src/devices/machine/rtc9701.cpp
+++ b/src/devices/machine/rtc9701.cpp
@@ -15,7 +15,7 @@
#include "machine/rtc9701.h"
-ALLOW_SAVE_TYPE(rtc9701_state_t);
+ALLOW_SAVE_TYPE(rtc9701_device::state_t);
//**************************************************************************
@@ -23,7 +23,7 @@ ALLOW_SAVE_TYPE(rtc9701_state_t);
//**************************************************************************
// device type definition
-const device_type rtc9701 = device_creator<rtc9701_device>;
+DEFINE_DEVICE_TYPE(RTC9701, rtc9701_device, "rtc9701", "Epson RTC-9701-JE RTC/EEPROM")
//**************************************************************************
@@ -35,17 +35,19 @@ const device_type rtc9701 = device_creator<rtc9701_device>;
//-------------------------------------------------
rtc9701_device::rtc9701_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, rtc9701, "RTC-9701", tag, owner, clock, "rtc9701", __FILE__),
- device_nvram_interface(mconfig, *this),
- m_latch(0),
- m_reset_line(CLEAR_LINE),
- m_clock_line(CLEAR_LINE), rtc_state(), cmd_stream_pos(0), current_cmd(0), rtc9701_address_pos(0), rtc9701_current_address(0), rtc9701_current_data(0), rtc9701_data_pos(0)
+ : device_t(mconfig, RTC9701, tag, owner, clock)
+ , device_nvram_interface(mconfig, *this)
+ , m_latch(0)
+ , m_reset_line(CLEAR_LINE)
+ , m_clock_line(CLEAR_LINE)
+ , rtc_state()
+ , cmd_stream_pos(0), current_cmd(0), rtc9701_address_pos(0), rtc9701_current_address(0), rtc9701_current_data(0), rtc9701_data_pos(0)
{
}
TIMER_CALLBACK_MEMBER(rtc9701_device::timer_callback)
{
- static const uint8_t dpm[12] = { 0x31, 0x28, 0x31, 0x30, 0x31, 0x30, 0x31, 0x31, 0x30, 0x31, 0x30, 0x31 };
+ static constexpr uint8_t dpm[12] = { 0x31, 0x28, 0x31, 0x30, 0x31, 0x30, 0x31, 0x31, 0x30, 0x31, 0x30, 0x31 };
int dpm_count;
m_rtc.sec++;
diff --git a/src/devices/machine/rtc9701.h b/src/devices/machine/rtc9701.h
index 450c0c7c789..b0d35929945 100644
--- a/src/devices/machine/rtc9701.h
+++ b/src/devices/machine/rtc9701.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_RTC9701_H
+#define MAME_MACHINE_RTC9701_H
-#ifndef __rtc9701DEV_H__
-#define __rtc9701DEV_H__
+#pragma once
@@ -19,31 +19,14 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_RTC9701_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, rtc9701, XTAL_32_768kHz)
+#define MCFG_RTC9701_ADD(tag) \
+ MCFG_DEVICE_ADD((tag), RTC9701, XTAL_32_768kHz)
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-enum rtc9701_state_t
-{
- RTC9701_CMD_WAIT = 0,
- RTC9701_RTC_READ,
- RTC9701_RTC_WRITE,
- RTC9701_EEPROM_READ,
- RTC9701_EEPROM_WRITE,
- RTC9701_AFTER_WRITE_ENABLE
-
-};
-
-struct rtc_regs_t
-{
- uint8_t sec, min, hour, day, wday, month, year;
-};
-
-
// ======================> rtc9701_device
class rtc9701_device : public device_t,
@@ -62,6 +45,22 @@ public:
TIMER_CALLBACK_MEMBER(timer_callback);
protected:
+ enum state_t
+ {
+ RTC9701_CMD_WAIT = 0,
+ RTC9701_RTC_READ,
+ RTC9701_RTC_WRITE,
+ RTC9701_EEPROM_READ,
+ RTC9701_EEPROM_WRITE,
+ RTC9701_AFTER_WRITE_ENABLE
+
+ };
+
+ struct regs_t
+ {
+ uint8_t sec, min, hour, day, wday, month, year;
+ };
+
// device-level overrides
virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_start() override;
@@ -79,7 +78,7 @@ protected:
int m_clock_line;
- rtc9701_state_t rtc_state;
+ state_t rtc_state;
int cmd_stream_pos;
int current_cmd;
@@ -91,19 +90,11 @@ protected:
uint16_t rtc9701_data[0x100];
- rtc_regs_t m_rtc;
+ regs_t m_rtc;
};
// device type definition
-extern const device_type rtc9701;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(RTC9701, rtc9701_device)
-#endif
+#endif // MAME_MACHINE_RTC9701_H
diff --git a/src/devices/machine/s2636.cpp b/src/devices/machine/s2636.cpp
index df28a4fc8cd..5fda7f586c1 100644
--- a/src/devices/machine/s2636.cpp
+++ b/src/devices/machine/s2636.cpp
@@ -90,7 +90,7 @@
FC2 | |C1 |C2 |C3 |C1 |C2 |C3 | W |
| | color 3 | color 4 | |
| | |
- FC3 | |frm|pos| W | scroe format and position
+ FC3 | |frm|pos| W | score format and position
| | |
FC4 | | - |
FC5 | | - |
@@ -155,10 +155,10 @@ uint16_t const s2636_device::SCORE_FONT[16][5] =
*
*************************************/
-const device_type S2636 = device_creator<s2636_device>;
+DEFINE_DEVICE_TYPE(S2636, s2636_device, "s2636", "Signetics 2636 PVI")
s2636_device::s2636_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, S2636, "Signetics 2636", tag, owner, clock, "s2636", __FILE__)
+ : device_t(mconfig, S2636, tag, owner, clock)
, device_video_interface(mconfig, *this)
, device_sound_interface(mconfig, *this)
, m_divider(1)
diff --git a/src/devices/machine/s2636.h b/src/devices/machine/s2636.h
index 56c0d8f4b4b..507351b5ad9 100644
--- a/src/devices/machine/s2636.h
+++ b/src/devices/machine/s2636.h
@@ -6,8 +6,10 @@
**********************************************************************/
-#ifndef __S2636_H__
-#define __S2636_H__
+#ifndef MAME_MACHINE_S2636_H
+#define MAME_MACHINE_S2636_H
+
+#pragma once
#define S2636_IS_PIXEL_DRAWN(p) (((p) & 0x08) ? true : false)
@@ -20,14 +22,14 @@
*
*************************************/
-#define MCFG_S2636_OFFSETS(_yoffs, _xoffs) \
- s2636_device::set_offsets(*device, _yoffs, _xoffs);
+#define MCFG_S2636_OFFSETS(yoffs, xoffs) \
+ s2636_device::set_offsets(*device, (yoffs), (xoffs));
-#define MCFG_S2636_DIVIDER(_divider) \
- s2636_device::set_divider(*device, _divider);
+#define MCFG_S2636_DIVIDER(divider) \
+ s2636_device::set_divider(*device, (divider));
-#define MCFG_S2623_SET_INTREQ_CALLBACK(_devcb) \
- devcb = &s2636_device::set_intreq_cb(*device, DEVCB_##_devcb);
+#define MCFG_S2623_SET_INTREQ_CALLBACK(cb) \
+ devcb = &s2636_device::set_intreq_cb(*device, DEVCB_##cb);
/*************************************
@@ -42,7 +44,6 @@ class s2636_device : public device_t,
{
public:
s2636_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~s2636_device() {}
static void set_offsets(device_t &device, int y_offset, int x_offset)
{
@@ -57,10 +58,10 @@ public:
dev.m_divider = divider;
}
- template<class _Object> static devcb_base &set_intreq_cb(device_t &device, _Object object)
+ template <class Object> static devcb_base &set_intreq_cb(device_t &device, Object &&cb)
{
s2636_device &dev = downcast<s2636_device &>(device);
- return dev.m_intreq_cb.set_callback(object);
+ return dev.m_intreq_cb.set_callback(std::forward<Object>(cb));
}
// returns a BITMAP_FORMAT_IND16 bitmap the size of the screen
@@ -175,6 +176,6 @@ private:
bool m_sound_lvl;
};
-extern const device_type S2636;
+DECLARE_DEVICE_TYPE(S2636, s2636_device)
-#endif /* __S2636_H__ */
+#endif // MAME_MACHINE_S2636_H
diff --git a/src/devices/machine/s3520cf.cpp b/src/devices/machine/s3520cf.cpp
index d1e0235dcb7..9e5100ed30f 100644
--- a/src/devices/machine/s3520cf.cpp
+++ b/src/devices/machine/s3520cf.cpp
@@ -24,7 +24,7 @@ TODO:
//**************************************************************************
// device type definition
-const device_type S3520CF = device_creator<s3520cf_device>;
+DEFINE_DEVICE_TYPE(S3520CF, s3520cf_device, "s3520cf", "Seiko Epson S-3520CF RTC")
//**************************************************************************
@@ -36,13 +36,14 @@ const device_type S3520CF = device_creator<s3520cf_device>;
//-------------------------------------------------
s3520cf_device::s3520cf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, S3520CF, "S-3520CF RTC", tag, owner, clock, "s3520cf", __FILE__), m_dir(0), m_latch(0), m_reset_line(0), m_read_latch(0), m_current_cmd(0), m_cmd_stream_pos(0), m_rtc_addr(0), m_mode(0), m_sysr(0), m_rtc_state()
+ : device_t(mconfig, S3520CF, tag, owner, clock)
+ , m_dir(0), m_latch(0), m_reset_line(0), m_read_latch(0), m_current_cmd(0), m_cmd_stream_pos(0), m_rtc_addr(0), m_mode(0), m_sysr(0), m_rtc_state()
{
}
TIMER_CALLBACK_MEMBER(s3520cf_device::timer_callback)
{
- static const uint8_t dpm[12] = { 0x31, 0x28, 0x31, 0x30, 0x31, 0x30, 0x31, 0x31, 0x30, 0x31, 0x30, 0x31 };
+ static constexpr uint8_t dpm[12] = { 0x31, 0x28, 0x31, 0x30, 0x31, 0x30, 0x31, 0x31, 0x30, 0x31, 0x30, 0x31 };
int dpm_count;
m_rtc.sec++;
diff --git a/src/devices/machine/s3520cf.h b/src/devices/machine/s3520cf.h
index beeea5d6cf0..168097e0e16 100644
--- a/src/devices/machine/s3520cf.h
+++ b/src/devices/machine/s3520cf.h
@@ -6,10 +6,10 @@ Seiko/Epson S-3520CF
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_S3520CF_H
+#define MAME_MACHINE_S3520CF_H
-#ifndef __S3520CFDEV_H__
-#define __S3520CFDEV_H__
+#pragma once
@@ -17,25 +17,13 @@ Seiko/Epson S-3520CF
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_S3520CF_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, S3520CF, XTAL_32_768kHz)
+#define MCFG_S3520CF_ADD(tag) \
+ MCFG_DEVICE_ADD((tag), S3520CF, XTAL_32_768kHz)
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-enum s3520cf_state_t
-{
- RTC_SET_ADDRESS = 0,
- RTC_SET_DATA
-};
-
-struct rtc_regs_t
-{
- uint8_t sec, min, hour, day, wday, month, year;
-};
-
-
// ======================> s3520cf_device
class s3520cf_device : public device_t
@@ -53,6 +41,17 @@ public:
TIMER_CALLBACK_MEMBER(timer_callback);
protected:
+ enum state_t
+ {
+ RTC_SET_ADDRESS = 0,
+ RTC_SET_DATA
+ };
+
+ struct rtc_regs_t
+ {
+ uint8_t sec, min, hour, day, wday, month, year;
+ };
+
// device-level overrides
virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_start() override;
@@ -69,21 +68,13 @@ protected:
uint8_t m_rtc_addr;
uint8_t m_mode, m_sysr;
- s3520cf_state_t m_rtc_state;
+ state_t m_rtc_state;
rtc_regs_t m_rtc;
};
// device type definition
-extern const device_type S3520CF;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(S3520CF, s3520cf_device)
-#endif
+#endif // MAME_MACHINE_S3520CF_H
diff --git a/src/devices/machine/s3c2400.cpp b/src/devices/machine/s3c2400.cpp
index f844585dc45..c076abbd96d 100644
--- a/src/devices/machine/s3c2400.cpp
+++ b/src/devices/machine/s3c2400.cpp
@@ -16,18 +16,152 @@
#include "screen.h"
+#define S3C24XX_SRCPND (0x00 / 4) // Interrupt Request Status
+#define S3C24XX_INTMOD (0x04 / 4) // Interrupt Mode Control
+#define S3C24XX_INTMSK (0x08 / 4) // Interrupt Mask Control
+#define S3C24XX_PRIORITY (0x0C / 4) // IRQ Priority Control
+#define S3C24XX_INTPND (0x10 / 4) // Interrupt Request Status
+#define S3C24XX_INTOFFSET (0x14 / 4) // Interrupt Request Source Offset
+
+#define S3C24XX_DISRC (0x00 / 4) // DMA Initial Source
+#define S3C24XX_DIDST (0x04 / 4) // DMA Initial Destination
+#define S3C24XX_DCON (0x08 / 4) // DMA Control
+#define S3C24XX_DSTAT (0x0C / 4) // DMA Count
+#define S3C24XX_DCSRC (0x10 / 4) // DMA Current Source Address
+#define S3C24XX_DCDST (0x14 / 4) // DMA Current Destination Address
+#define S3C24XX_DMASKTRIG (0x18 / 4) // DMA Mask Trigger
+
+#define S3C24XX_LOCKTIME (0x00 / 4) // PLL Lock Time Counter
+#define S3C24XX_MPLLCON (0x04 / 4) // MPLL Control
+#define S3C24XX_UPLLCON (0x08 / 4) // UPLL Control
+#define S3C24XX_CLKCON (0x0C / 4) // Clock Generator Control
+#define S3C24XX_CLKSLOW (0x10 / 4) // Slow Clock Control
+#define S3C24XX_CLKDIVN (0x14 / 4) // Clock Divider Control
+
+#define S3C24XX_LCDCON1 (0x00 / 4) // LCD Control 1
+#define S3C24XX_LCDCON2 (0x04 / 4) // LCD Control 2
+#define S3C24XX_LCDCON3 (0x08 / 4) // LCD Control 3
+#define S3C24XX_LCDCON4 (0x0C / 4) // LCD Control 4
+#define S3C24XX_LCDCON5 (0x10 / 4) // LCD Control 5
+#define S3C24XX_LCDSADDR1 (0x14 / 4) // STN/TFT: Frame Buffer Start Address 1
+#define S3C24XX_LCDSADDR2 (0x18 / 4) // STN/TFT: Frame Buffer Start Address 2
+#define S3C24XX_LCDSADDR3 (0x1C / 4) // STN/TFT: Virtual Screen Address Set
+#define S3C24XX_REDLUT (0x20 / 4) // STN: Red Lookup Table
+#define S3C24XX_GREENLUT (0x24 / 4) // STN: Green Lookup Table
+#define S3C24XX_BLUELUT (0x28 / 4) // STN: Blue Lookup Table
+#define S3C24XX_DITHMODE (0x4C / 4) // STN: Dithering Mode
+#define S3C24XX_TPAL (0x50 / 4) // TFT: Temporary Palette
+
+#define S3C24XX_IICCON (0x00 / 4) // IIC Control
+#define S3C24XX_IICSTAT (0x04 / 4) // IIC Status
+#define S3C24XX_IICADD (0x08 / 4) // IIC Address
+#define S3C24XX_IICDS (0x0C / 4) // IIC Data Shift
+
+#define S3C24XX_GPACON (0x00 / 4) // Port A Control
+#define S3C24XX_GPADAT (0x04 / 4) // Port A Data
+#define S3C24XX_GPBCON (0x08 / 4) // Port B Control
+#define S3C24XX_GPBDAT (0x0C / 4) // Port B Data
+#define S3C24XX_GPBUP (0x10 / 4) // Pull-up Control B
+#define S3C24XX_GPCCON (0x14 / 4) // Port C Control
+#define S3C24XX_GPCDAT (0x18 / 4) // Port C Data
+#define S3C24XX_GPCUP (0x1C / 4) // Pull-up Control C
+#define S3C24XX_GPDCON (0x20 / 4) // Port D Control
+#define S3C24XX_GPDDAT (0x24 / 4) // Port D Data
+#define S3C24XX_GPDUP (0x28 / 4) // Pull-up Control D
+#define S3C24XX_GPECON (0x2C / 4) // Port E Control
+#define S3C24XX_GPEDAT (0x30 / 4) // Port E Data
+#define S3C24XX_GPEUP (0x34 / 4) // Pull-up Control E
+#define S3C24XX_GPFCON (0x38 / 4) // Port F Control
+#define S3C24XX_GPFDAT (0x3C / 4) // Port F Data
+#define S3C24XX_GPFUP (0x40 / 4) // Pull-up Control F
+#define S3C24XX_GPGCON (0x44 / 4) // Port G Control
+#define S3C24XX_GPGDAT (0x48 / 4) // Port G Data
+#define S3C24XX_GPGUP (0x4C / 4) // Pull-up Control G
+#define S3C24XX_OPENCR (0x50 / 4) // Open Drain Enable
+#define S3C24XX_MISCCR (0x54 / 4) // Miscellaneous Control
+#define S3C24XX_EXTINT (0x58 / 4) // External Interrupt Control
+
+#define S3C24XX_GPADAT_MASK 0x0003FFFF
+#define S3C24XX_GPBDAT_MASK 0x0000FFFF
+#define S3C24XX_GPCDAT_MASK 0x0000FFFF
+#define S3C24XX_GPDDAT_MASK 0x000007FF
+#define S3C24XX_GPEDAT_MASK 0x00000FFF
+#define S3C24XX_GPFDAT_MASK 0x0000007F
+#define S3C24XX_GPGDAT_MASK 0x000003FF
+
+#define S3C24XX_INT_ADC 31
+#define S3C24XX_INT_RTC 30
+#define S3C24XX_INT_UTXD1 29
+#define S3C24XX_INT_UTXD0 28
+#define S3C24XX_INT_IIC 27
+#define S3C24XX_INT_USBH 26
+#define S3C24XX_INT_USBD 25
+#define S3C24XX_INT_URXD1 24
+#define S3C24XX_INT_URXD0 23
+#define S3C24XX_INT_SPI 22
+#define S3C24XX_INT_MMC 21
+#define S3C24XX_INT_DMA3 20
+#define S3C24XX_INT_DMA2 19
+#define S3C24XX_INT_DMA1 18
+#define S3C24XX_INT_DMA0 17
+#define S3C24XX_INT_RESERVED 16
+#define S3C24XX_INT_UERR 15
+#define S3C24XX_INT_TIMER4 14
+#define S3C24XX_INT_TIMER3 13
+#define S3C24XX_INT_TIMER2 12
+#define S3C24XX_INT_TIMER1 11
+#define S3C24XX_INT_TIMER0 10
+#define S3C24XX_INT_WDT 9
+#define S3C24XX_INT_TICK 8
+#define S3C24XX_INT_EINT7 7
+#define S3C24XX_INT_EINT6 6
+#define S3C24XX_INT_EINT5 5
+#define S3C24XX_INT_EINT4 4
+#define S3C24XX_INT_EINT3 3
+#define S3C24XX_INT_EINT2 2
+#define S3C24XX_INT_EINT1 1
+#define S3C24XX_INT_EINT0 0
+
+#define S3C24XX_BPPMODE_STN_01 0x00
+#define S3C24XX_BPPMODE_STN_02 0x01
+#define S3C24XX_BPPMODE_STN_04 0x02
+#define S3C24XX_BPPMODE_STN_08 0x03
+#define S3C24XX_BPPMODE_STN_12_P 0x04
+#define S3C24XX_BPPMODE_STN_12_U 0x05
+#define S3C24XX_BPPMODE_STN_16 0x06
+#define S3C24XX_BPPMODE_TFT_01 0x08
+#define S3C24XX_BPPMODE_TFT_02 0x09
+#define S3C24XX_BPPMODE_TFT_04 0x0A
+#define S3C24XX_BPPMODE_TFT_08 0x0B
+#define S3C24XX_BPPMODE_TFT_16 0x0C
+#define S3C24XX_BPPMODE_TFT_24 0x0D
+
+#define S3C24XX_PNRMODE_STN_04_DS 0
+#define S3C24XX_PNRMODE_STN_04_SS 1
+#define S3C24XX_PNRMODE_STN_08_SS 2
+#define S3C24XX_PNRMODE_TFT 3
+
+#define S3C24XX_GPIO_PORT_A S3C2400_GPIO_PORT_A
+#define S3C24XX_GPIO_PORT_B S3C2400_GPIO_PORT_B
+#define S3C24XX_GPIO_PORT_C S3C2400_GPIO_PORT_C
+#define S3C24XX_GPIO_PORT_D S3C2400_GPIO_PORT_D
+#define S3C24XX_GPIO_PORT_E S3C2400_GPIO_PORT_E
+#define S3C24XX_GPIO_PORT_F S3C2400_GPIO_PORT_F
+#define S3C24XX_GPIO_PORT_G S3C2400_GPIO_PORT_G
+
+
#define VERBOSE_LEVEL ( 0 )
-static inline void ATTR_PRINTF(3,4) verboselog( device_t &device, int n_level, const char *s_fmt, ...)
+static inline void ATTR_PRINTF(3,4) verboselog(device_t &device, int n_level, const char *s_fmt, ...)
{
if (VERBOSE_LEVEL >= n_level)
{
va_list v;
char buf[32768];
- va_start( v, s_fmt);
+ va_start(v, s_fmt);
vsprintf( buf, s_fmt, v);
- va_end( v);
- device.logerror( "%s: %s", device.machine().describe_context( ), buf);
+ va_end(v);
+ device.logerror("%s: %s", device.machine().describe_context( ), buf);
}
}
@@ -41,22 +175,22 @@ uint32_t s3c2400_device::screen_update(screen_device &screen, bitmap_rgb32 &bitm
return s3c24xx_video_update(screen, bitmap, cliprect);
}
-const device_type S3C2400 = device_creator<s3c2400_device>;
+DEFINE_DEVICE_TYPE(S3C2400, s3c2400_device, "s3c2400", "Samsung S3C2400 SoC")
s3c2400_device::s3c2400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, S3C2400, "Samsung S3C2400", tag, owner, clock, "s3c2400", __FILE__),
- m_palette(*this, finder_base::DUMMY_TAG),
- m_cpu(*this, ":maincpu"),
- m_pin_r_cb(*this),
- m_pin_w_cb(*this),
- m_port_r_cb(*this),
- m_port_w_cb(*this),
- m_scl_w_cb(*this),
- m_sda_r_cb(*this),
- m_sda_w_cb(*this),
- m_data_r_cb(*this),
- m_data_w_cb(*this),
- m_flags(0)
+ : device_t(mconfig, S3C2400, tag, owner, clock)
+ , m_palette(*this, finder_base::DUMMY_TAG)
+ , m_cpu(*this, ":maincpu")
+ , m_pin_r_cb(*this)
+ , m_pin_w_cb(*this)
+ , m_port_r_cb(*this)
+ , m_port_w_cb(*this)
+ , m_scl_w_cb(*this)
+ , m_sda_r_cb(*this)
+ , m_sda_w_cb(*this)
+ , m_data_r_cb(*this)
+ , m_data_w_cb(*this)
+ , m_flags(0)
{
memset(&m_memcon, 0, sizeof(m_memcon));
memset(&m_usbhost, 0, sizeof(m_usbhost));
diff --git a/src/devices/machine/s3c2400.h b/src/devices/machine/s3c2400.h
index c1625d095fc..4c58e4b67dd 100644
--- a/src/devices/machine/s3c2400.h
+++ b/src/devices/machine/s3c2400.h
@@ -6,8 +6,12 @@
*******************************************************************************/
-#ifndef __S3C2400_H__
-#define __S3C2400_H__
+#ifndef MAME_MACHINE_S3C2400_H
+#define MAME_MACHINE_S3C2400_H
+
+#pragma once
+
+#include "s3c24xx.h"
/*******************************************************************************
@@ -16,38 +20,38 @@
#define S3C2400_TAG "s3c2400"
-#define MCFG_S3C2400_PALETTE(_palette_tag) \
- s3c2400_device::static_set_palette_tag(*device, "^" _palette_tag);
+#define MCFG_S3C2400_PALETTE(palette_tag) \
+ s3c2400_device::static_set_palette_tag(*device, ("^" palette_tag));
-#define MCFG_S3C2400_CORE_PIN_R_CB(_devcb) \
- devcb = &s3c2400_device::set_core_pin_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2400_CORE_PIN_R_CB(cb) \
+ devcb = &s3c2400_device::set_core_pin_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2400_CORE_PIN_W_CB(_devcb) \
- devcb = &s3c2400_device::set_core_pin_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2400_CORE_PIN_W_CB(cb) \
+ devcb = &s3c2400_device::set_core_pin_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2400_GPIO_PORT_R_CB(_devcb) \
- devcb = &s3c2400_device::set_gpio_port_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2400_GPIO_PORT_R_CB(cb) \
+ devcb = &s3c2400_device::set_gpio_port_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2400_GPIO_PORT_W_CB(_devcb) \
- devcb = &s3c2400_device::set_gpio_port_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2400_GPIO_PORT_W_CB(cb) \
+ devcb = &s3c2400_device::set_gpio_port_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2400_I2C_SCL_W_CB(_devcb) \
- devcb = &s3c2400_device::set_i2c_scl_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2400_I2C_SCL_W_CB(cb) \
+ devcb = &s3c2400_device::set_i2c_scl_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2400_I2C_SDA_R_CB(_devcb) \
- devcb = &s3c2400_device::set_i2c_sda_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2400_I2C_SDA_R_CB(cb) \
+ devcb = &s3c2400_device::set_i2c_sda_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2400_I2C_SDA_W_CB(_devcb) \
- devcb = &s3c2400_device::set_i2c_sda_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2400_I2C_SDA_W_CB(cb) \
+ devcb = &s3c2400_device::set_i2c_sda_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2400_ADC_DATA_R_CB(_devcb) \
- devcb = &s3c2400_device::set_adc_data_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2400_ADC_DATA_R_CB(cb) \
+ devcb = &s3c2400_device::set_adc_data_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2400_I2S_DATA_W_CB(_devcb) \
- devcb = &s3c2400_device::set_i2s_data_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2400_I2S_DATA_W_CB(cb) \
+ devcb = &s3c2400_device::set_i2s_data_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2400_LCD_FLAGS(_flags) \
- s3c2400_device::set_lcd_flags(*device, _flags);
+#define MCFG_S3C2400_LCD_FLAGS(flags) \
+ s3c2400_device::set_lcd_flags(*device, (flags));
enum
{
@@ -81,13 +85,6 @@ enum
#define S3C24XX_BASE_INT 0x14400000
-#define S3C24XX_SRCPND (0x00 / 4) // Interrupt Request Status
-#define S3C24XX_INTMOD (0x04 / 4) // Interrupt Mode Control
-#define S3C24XX_INTMSK (0x08 / 4) // Interrupt Mask Control
-#define S3C24XX_PRIORITY (0x0C / 4) // IRQ Priority Control
-#define S3C24XX_INTPND (0x10 / 4) // Interrupt Request Status
-#define S3C24XX_INTOFFSET (0x14 / 4) // Interrupt Request Source Offset
-
/* DMA */
#define S3C24XX_BASE_DMA_0 0x14600000
@@ -95,83 +92,24 @@ enum
#define S3C24XX_BASE_DMA_2 0x14600040
#define S3C24XX_BASE_DMA_3 0x14600060
-#define S3C24XX_DISRC (0x00 / 4) // DMA Initial Source
-#define S3C24XX_DIDST (0x04 / 4) // DMA Initial Destination
-#define S3C24XX_DCON (0x08 / 4) // DMA Control
-#define S3C24XX_DSTAT (0x0C / 4) // DMA Count
-#define S3C24XX_DCSRC (0x10 / 4) // DMA Current Source Address
-#define S3C24XX_DCDST (0x14 / 4) // DMA Current Destination Address
-#define S3C24XX_DMASKTRIG (0x18 / 4) // DMA Mask Trigger
-
/* Clock & Power Management */
#define S3C24XX_BASE_CLKPOW 0x14800000
-#define S3C24XX_LOCKTIME (0x00 / 4) // PLL Lock Time Counter
-#define S3C24XX_MPLLCON (0x04 / 4) // MPLL Control
-#define S3C24XX_UPLLCON (0x08 / 4) // UPLL Control
-#define S3C24XX_CLKCON (0x0C / 4) // Clock Generator Control
-#define S3C24XX_CLKSLOW (0x10 / 4) // Slow Clock Control
-#define S3C24XX_CLKDIVN (0x14 / 4) // Clock Divider Control
-
/* LCD Controller */
#define S3C24XX_BASE_LCD 0x14a00000
#define S3C24XX_BASE_LCDPAL 0x14a00400
-#define S3C24XX_LCDCON1 (0x00 / 4) // LCD Control 1
-#define S3C24XX_LCDCON2 (0x04 / 4) // LCD Control 2
-#define S3C24XX_LCDCON3 (0x08 / 4) // LCD Control 3
-#define S3C24XX_LCDCON4 (0x0C / 4) // LCD Control 4
-#define S3C24XX_LCDCON5 (0x10 / 4) // LCD Control 5
-#define S3C24XX_LCDSADDR1 (0x14 / 4) // STN/TFT: Frame Buffer Start Address 1
-#define S3C24XX_LCDSADDR2 (0x18 / 4) // STN/TFT: Frame Buffer Start Address 2
-#define S3C24XX_LCDSADDR3 (0x1C / 4) // STN/TFT: Virtual Screen Address Set
-#define S3C24XX_REDLUT (0x20 / 4) // STN: Red Lookup Table
-#define S3C24XX_GREENLUT (0x24 / 4) // STN: Green Lookup Table
-#define S3C24XX_BLUELUT (0x28 / 4) // STN: Blue Lookup Table
-#define S3C24XX_DITHMODE (0x4C / 4) // STN: Dithering Mode
-#define S3C24XX_TPAL (0x50 / 4) // TFT: Temporary Palette
-
/* UART */
#define S3C24XX_BASE_UART_0 0x15000000
#define S3C24XX_BASE_UART_1 0x15004000
-#define S3C24XX_ULCON (0x00 / 4) // UART Line Control
-#define S3C24XX_UCON (0x04 / 4) // UART Control
-#define S3C24XX_UFCON (0x08 / 4) // UART FIFO Control
-#define S3C24XX_UMCON (0x0C / 4) // UART Modem Control
-#define S3C24XX_UTRSTAT (0x10 / 4) // UART Tx/Rx Status
-#define S3C24XX_UERSTAT (0x14 / 4) // UART Rx Error Status
-#define S3C24XX_UFSTAT (0x18 / 4) // UART FIFO Status
-#define S3C24XX_UMSTAT (0x1C / 4) // UART Modem Status
-#define S3C24XX_UTXH (0x20 / 4) // UART Transmission Hold
-#define S3C24XX_URXH (0x24 / 4) // UART Receive Buffer
-#define S3C24XX_UBRDIV (0x28 / 4) // UART Baud Rate Divisor
-
/* PWM Timer */
#define S3C24XX_BASE_PWM 0x15100000
-#define S3C24XX_TCFG0 (0x00 / 4) // Timer Configuration
-#define S3C24XX_TCFG1 (0x04 / 4) // Timer Configuration
-#define S3C24XX_TCON (0x08 / 4) // Timer Control
-#define S3C24XX_TCNTB0 (0x0C / 4) // Timer Count Buffer 0
-#define S3C24XX_TCMPB0 (0x10 / 4) // Timer Compare Buffer 0
-#define S3C24XX_TCNTO0 (0x14 / 4) // Timer Count Observation 0
-#define S3C24XX_TCNTB1 (0x18 / 4) // Timer Count Buffer 1
-#define S3C24XX_TCMPB1 (0x1C / 4) // Timer Compare Buffer 1
-#define S3C24XX_TCNTO1 (0x20 / 4) // Timer Count Observation 1
-#define S3C24XX_TCNTB2 (0x24 / 4) // Timer Count Buffer 2
-#define S3C24XX_TCMPB2 (0x28 / 4) // Timer Compare Buffer 2
-#define S3C24XX_TCNTO2 (0x2C / 4) // Timer Count Observation 2
-#define S3C24XX_TCNTB3 (0x30 / 4) // Timer Count Buffer 3
-#define S3C24XX_TCMPB3 (0x34 / 4) // Timer Compare Buffer 3
-#define S3C24XX_TCNTO3 (0x38 / 4) // Timer Count Observation 3
-#define S3C24XX_TCNTB4 (0x3C / 4) // Timer Count Buffer 4
-#define S3C24XX_TCNTO4 (0x40 / 4) // Timer Count Observation 4
-
/* USB Device */
#define S3C24XX_BASE_USBDEV 0x15200140
@@ -180,87 +118,22 @@ enum
#define S3C24XX_BASE_WDT 0x15300000
-#define S3C24XX_WTCON (0x00 / 4) // Watchdog Timer Mode
-#define S3C24XX_WTDAT (0x04 / 4) // Watchdog Timer Data
-#define S3C24XX_WTCNT (0x08 / 4) // Watchdog Timer Count
-
/* IIC */
#define S3C24XX_BASE_IIC 0x15400000
-#define S3C24XX_IICCON (0x00 / 4) // IIC Control
-#define S3C24XX_IICSTAT (0x04 / 4) // IIC Status
-#define S3C24XX_IICADD (0x08 / 4) // IIC Address
-#define S3C24XX_IICDS (0x0C / 4) // IIC Data Shift
-
/* IIS */
#define S3C24XX_BASE_IIS 0x15508000
-#define S3C24XX_IISCON (0x00 / 4) // IIS Control
-#define S3C24XX_IISMOD (0x04 / 4) // IIS Mode
-#define S3C24XX_IISPSR (0x08 / 4) // IIS Prescaler
-#define S3C24XX_IISFCON (0x0C / 4) // IIS FIFO Control
-#define S3C24XX_IISFIFO (0x10 / 4) // IIS FIFO Entry
-
/* I/O Port */
#define S3C24XX_BASE_GPIO 0x15600000
-#define S3C24XX_GPACON (0x00 / 4) // Port A Control
-#define S3C24XX_GPADAT (0x04 / 4) // Port A Data
-#define S3C24XX_GPBCON (0x08 / 4) // Port B Control
-#define S3C24XX_GPBDAT (0x0C / 4) // Port B Data
-#define S3C24XX_GPBUP (0x10 / 4) // Pull-up Control B
-#define S3C24XX_GPCCON (0x14 / 4) // Port C Control
-#define S3C24XX_GPCDAT (0x18 / 4) // Port C Data
-#define S3C24XX_GPCUP (0x1C / 4) // Pull-up Control C
-#define S3C24XX_GPDCON (0x20 / 4) // Port D Control
-#define S3C24XX_GPDDAT (0x24 / 4) // Port D Data
-#define S3C24XX_GPDUP (0x28 / 4) // Pull-up Control D
-#define S3C24XX_GPECON (0x2C / 4) // Port E Control
-#define S3C24XX_GPEDAT (0x30 / 4) // Port E Data
-#define S3C24XX_GPEUP (0x34 / 4) // Pull-up Control E
-#define S3C24XX_GPFCON (0x38 / 4) // Port F Control
-#define S3C24XX_GPFDAT (0x3C / 4) // Port F Data
-#define S3C24XX_GPFUP (0x40 / 4) // Pull-up Control F
-#define S3C24XX_GPGCON (0x44 / 4) // Port G Control
-#define S3C24XX_GPGDAT (0x48 / 4) // Port G Data
-#define S3C24XX_GPGUP (0x4C / 4) // Pull-up Control G
-#define S3C24XX_OPENCR (0x50 / 4) // Open Drain Enable
-#define S3C24XX_MISCCR (0x54 / 4) // Miscellaneous Control
-#define S3C24XX_EXTINT (0x58 / 4) // External Interrupt Control
-
-#define S3C24XX_GPADAT_MASK 0x0003FFFF
-#define S3C24XX_GPBDAT_MASK 0x0000FFFF
-#define S3C24XX_GPCDAT_MASK 0x0000FFFF
-#define S3C24XX_GPDDAT_MASK 0x000007FF
-#define S3C24XX_GPEDAT_MASK 0x00000FFF
-#define S3C24XX_GPFDAT_MASK 0x0000007F
-#define S3C24XX_GPGDAT_MASK 0x000003FF
-
/* RTC */
#define S3C24XX_BASE_RTC 0x15700040
-#define S3C24XX_RTCCON (0x00 / 4) // RTC Control
-#define S3C24XX_TICNT (0x04 / 4) // Tick Time count
-#define S3C24XX_RTCALM (0x10 / 4) // RTC Alarm Control
-#define S3C24XX_ALMSEC (0x14 / 4) // Alarm Second
-#define S3C24XX_ALMMIN (0x18 / 4) // Alarm Minute
-#define S3C24XX_ALMHOUR (0x1C / 4) // Alarm Hour
-#define S3C24XX_ALMDAY (0x20 / 4) // Alarm Day
-#define S3C24XX_ALMMON (0x24 / 4) // Alarm Month
-#define S3C24XX_ALMYEAR (0x28 / 4) // Alarm Year
-#define S3C24XX_RTCRST (0x2C / 4) // RTC Round Reset
-#define S3C24XX_BCDSEC (0x30 / 4) // BCD Second
-#define S3C24XX_BCDMIN (0x34 / 4) // BCD Minute
-#define S3C24XX_BCDHOUR (0x38 / 4) // BCD Hour
-#define S3C24XX_BCDDAY (0x3C / 4) // BCD Day
-#define S3C24XX_BCDDOW (0x40 / 4) // BCD Day of Week
-#define S3C24XX_BCDMON (0x44 / 4) // BCD Month
-#define S3C24XX_BCDYEAR (0x48 / 4) // BCD Year
-
/* A/D Converter */
#define S3C24XX_BASE_ADC 0x15800000
@@ -272,84 +145,13 @@ enum
#define S3C24XX_BASE_SPI_0 0x15900000
-#define S3C24XX_SPCON (0x00 / 4) // SPI Control
-#define S3C24XX_SPSTA (0x04 / 4) // SPI Status
-#define S3C24XX_SPPIN (0x08 / 4) // SPI Pin Control
-#define S3C24XX_SPPRE (0x0C / 4) // SPI Baud Rate Prescaler
-#define S3C24XX_SPTDAT (0x10 / 4) // SPI Tx Data
-#define S3C24XX_SPRDAT (0x14 / 4) // SPI Rx Data
-
/* MMC Interface */
#define S3C24XX_BASE_MMC 0x15a00000
/* ... */
-#define S3C24XX_INT_ADC 31
-#define S3C24XX_INT_RTC 30
-#define S3C24XX_INT_UTXD1 29
-#define S3C24XX_INT_UTXD0 28
-#define S3C24XX_INT_IIC 27
-#define S3C24XX_INT_USBH 26
-#define S3C24XX_INT_USBD 25
-#define S3C24XX_INT_URXD1 24
-#define S3C24XX_INT_URXD0 23
-#define S3C24XX_INT_SPI 22
-#define S3C24XX_INT_MMC 21
-#define S3C24XX_INT_DMA3 20
-#define S3C24XX_INT_DMA2 19
-#define S3C24XX_INT_DMA1 18
-#define S3C24XX_INT_DMA0 17
-#define S3C24XX_INT_RESERVED 16
-#define S3C24XX_INT_UERR 15
-#define S3C24XX_INT_TIMER4 14
-#define S3C24XX_INT_TIMER3 13
-#define S3C24XX_INT_TIMER2 12
-#define S3C24XX_INT_TIMER1 11
-#define S3C24XX_INT_TIMER0 10
-#define S3C24XX_INT_WDT 9
-#define S3C24XX_INT_TICK 8
-#define S3C24XX_INT_EINT7 7
-#define S3C24XX_INT_EINT6 6
-#define S3C24XX_INT_EINT5 5
-#define S3C24XX_INT_EINT4 4
-#define S3C24XX_INT_EINT3 3
-#define S3C24XX_INT_EINT2 2
-#define S3C24XX_INT_EINT1 1
-#define S3C24XX_INT_EINT0 0
-
-#define S3C24XX_BPPMODE_STN_01 0x00
-#define S3C24XX_BPPMODE_STN_02 0x01
-#define S3C24XX_BPPMODE_STN_04 0x02
-#define S3C24XX_BPPMODE_STN_08 0x03
-#define S3C24XX_BPPMODE_STN_12_P 0x04
-#define S3C24XX_BPPMODE_STN_12_U 0x05
-#define S3C24XX_BPPMODE_STN_16 0x06
-#define S3C24XX_BPPMODE_TFT_01 0x08
-#define S3C24XX_BPPMODE_TFT_02 0x09
-#define S3C24XX_BPPMODE_TFT_04 0x0A
-#define S3C24XX_BPPMODE_TFT_08 0x0B
-#define S3C24XX_BPPMODE_TFT_16 0x0C
-#define S3C24XX_BPPMODE_TFT_24 0x0D
-
-#define S3C24XX_PNRMODE_STN_04_DS 0
-#define S3C24XX_PNRMODE_STN_04_SS 1
-#define S3C24XX_PNRMODE_STN_08_SS 2
-#define S3C24XX_PNRMODE_TFT 3
-
-#define S3C24XX_GPIO_PORT_A S3C2400_GPIO_PORT_A
-#define S3C24XX_GPIO_PORT_B S3C2400_GPIO_PORT_B
-#define S3C24XX_GPIO_PORT_C S3C2400_GPIO_PORT_C
-#define S3C24XX_GPIO_PORT_D S3C2400_GPIO_PORT_D
-#define S3C24XX_GPIO_PORT_E S3C2400_GPIO_PORT_E
-#define S3C24XX_GPIO_PORT_F S3C2400_GPIO_PORT_F
-#define S3C24XX_GPIO_PORT_G S3C2400_GPIO_PORT_G
-
-#define S3C24XX_UART_COUNT 2
-#define S3C24XX_DMA_COUNT 4
-#define S3C24XX_SPI_COUNT 1
-
-class s3c2400_device : public device_t
+class s3c2400_device : public device_t, protected s3c24xx_peripheral_types
{
public:
s3c2400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -357,24 +159,24 @@ public:
// static configuration
static void static_set_palette_tag(device_t &device, const char *tag);
- template<class _Object> static devcb_base &set_core_pin_r_callback(device_t &device, _Object object) { return downcast<s3c2400_device &>(device).m_pin_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_core_pin_w_callback(device_t &device, _Object object) { return downcast<s3c2400_device &>(device).m_pin_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_gpio_port_r_callback(device_t &device, _Object object) { return downcast<s3c2400_device &>(device).m_port_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_gpio_port_w_callback(device_t &device, _Object object) { return downcast<s3c2400_device &>(device).m_port_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, _Object object) { return downcast<s3c2400_device &>(device).m_scl_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, _Object object) { return downcast<s3c2400_device &>(device).m_sda_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, _Object object) { return downcast<s3c2400_device &>(device).m_sda_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_adc_data_r_callback(device_t &device, _Object object) { return downcast<s3c2400_device &>(device).m_data_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2s_data_w_callback(device_t &device, _Object object) { return downcast<s3c2400_device &>(device).m_data_w_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_core_pin_r_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_pin_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_core_pin_w_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_pin_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gpio_port_r_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_port_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gpio_port_w_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_port_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_scl_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_sda_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_sda_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_adc_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_data_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2s_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c2400_device &>(device).m_data_w_cb.set_callback(std::forward<Object>(cb)); }
static void set_lcd_flags(device_t &device, int flags) { downcast<s3c2400_device &>(device).m_flags = flags; }
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-private:
- // internal state
- required_device<palette_device> m_palette;
-public:
+
+ // FIXME: a bunch of this stuff needs to be public, or used from an internal memory map, but since nothing uses it yet, it's impossible to know what
+ // However, the previous situation where all internal state was public is clearly undesirable
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void s3c24xx_reset();
@@ -428,8 +230,6 @@ public:
void s3c24xx_request_irq(uint32_t int_type);
READ32_MEMBER( s3c24xx_irq_r );
WRITE32_MEMBER( s3c24xx_irq_w );
- void s3c24xx_pwm_reset();
- uint16_t s3c24xx_pwm_calc_observation(int ch);
READ32_MEMBER( s3c24xx_pwm_r );
void s3c24xx_pwm_start(int timer);
void s3c24xx_pwm_stop(int timer);
@@ -461,13 +261,10 @@ public:
uint16_t s3c24xx_gpio_get_mask( uint32_t con, int val);
READ32_MEMBER( s3c24xx_gpio_r );
WRITE32_MEMBER( s3c24xx_gpio_w );
- void s3c24xx_memcon_reset();
READ32_MEMBER( s3c24xx_memcon_r );
WRITE32_MEMBER( s3c24xx_memcon_w );
- void s3c24xx_usb_host_reset();
READ32_MEMBER( s3c24xx_usb_host_r );
WRITE32_MEMBER( s3c24xx_usb_host_w );
- void s3c24xx_uart_reset();
uint32_t s3c24xx_uart_r(uint32_t ch, uint32_t offset);
void s3c24xx_uart_w(uint32_t ch, uint32_t offset, uint32_t data, uint32_t mem_mask);
READ32_MEMBER( s3c24xx_uart_0_r );
@@ -478,8 +275,6 @@ public:
void s3c24xx_usb_device_reset();
READ32_MEMBER( s3c24xx_usb_device_r );
WRITE32_MEMBER( s3c24xx_usb_device_w );
- void s3c24xx_wdt_reset();
- uint16_t s3c24xx_wdt_calc_current_count();
READ32_MEMBER( s3c24xx_wdt_r );
void s3c24xx_wdt_start();
void s3c24xx_wdt_stop();
@@ -500,7 +295,6 @@ public:
READ32_MEMBER( s3c24xx_iic_r );
WRITE32_MEMBER( s3c24xx_iic_w );
TIMER_CALLBACK_MEMBER( s3c24xx_iic_timer_exp );
- void s3c24xx_iis_reset();
inline void iface_i2s_data_w(int ch, uint16_t data);
void s3c24xx_iis_start();
void s3c24xx_iis_stop();
@@ -508,9 +302,7 @@ public:
READ32_MEMBER( s3c24xx_iis_r );
WRITE32_MEMBER( s3c24xx_iis_w );
TIMER_CALLBACK_MEMBER( s3c24xx_iis_timer_exp );
- void s3c24xx_rtc_reset();
READ32_MEMBER( s3c24xx_rtc_r );
- void s3c24xx_rtc_recalc();
WRITE32_MEMBER( s3c24xx_rtc_w );
TIMER_CALLBACK_MEMBER( s3c24xx_rtc_timer_tick_count_exp );
void s3c24xx_rtc_update();
@@ -526,30 +318,23 @@ public:
void s3c24xx_spi_w(uint32_t ch, uint32_t offset, uint32_t data, uint32_t mem_mask);
READ32_MEMBER( s3c24xx_spi_0_r );
WRITE32_MEMBER( s3c24xx_spi_0_w );
- void s3c24xx_mmc_reset();
READ32_MEMBER( s3c24xx_mmc_r );
WRITE32_MEMBER( s3c24xx_mmc_w );
void s3c24xx_device_reset();
void s3c24xx_device_start();
-
void s3c2400_uart_fifo_w(int uart, uint8_t data);
+private:
+ static constexpr unsigned UART_COUNT = 2;
+ static constexpr unsigned DMA_COUNT = 4;
+ static constexpr unsigned SPI_COUNT = 1;
+
/*******************************************************************************
TYPE DEFINITIONS
*******************************************************************************/
- struct s3c24xx_memcon_regs_t
- {
- uint32_t data[0x34/4];
- };
-
- struct s3c24xx_usbhost_regs_t
- {
- uint32_t data[0x5C/4];
- };
-
- struct s3c24xx_irq_regs_t
+ struct irq_regs_t
{
uint32_t srcpnd;
uint32_t intmod;
@@ -559,7 +344,7 @@ public:
uint32_t intoffset;
};
- struct s3c24xx_dma_regs_t
+ struct dma_regs_t
{
uint32_t disrc;
uint32_t didst;
@@ -570,7 +355,7 @@ public:
uint32_t dmasktrig;
};
- struct s3c24xx_clkpow_regs_t
+ struct clkpow_regs_t
{
uint32_t locktime;
uint32_t mpllcon;
@@ -580,7 +365,7 @@ public:
uint32_t clkdivn;
};
- struct s3c24xx_lcd_regs_t
+ struct lcd_regs_t
{
uint32_t lcdcon1;
uint32_t lcdcon2;
@@ -598,60 +383,12 @@ public:
uint32_t tpal;
};
- struct s3c24xx_lcdpal_regs_t
- {
- uint32_t data[0x400/4];
- };
-
- struct s3c24xx_uart_regs_t
- {
- uint32_t ulcon;
- uint32_t ucon;
- uint32_t ufcon;
- uint32_t umcon;
- uint32_t utrstat;
- uint32_t uerstat;
- uint32_t ufstat;
- uint32_t umstat;
- uint32_t utxh;
- uint32_t urxh;
- uint32_t ubrdiv;
- };
-
- struct s3c24xx_pwm_regs_t
- {
- uint32_t tcfg0;
- uint32_t tcfg1;
- uint32_t tcon;
- uint32_t tcntb0;
- uint32_t tcmpb0;
- uint32_t tcnto0;
- uint32_t tcntb1;
- uint32_t tcmpb1;
- uint32_t tcnto1;
- uint32_t tcntb2;
- uint32_t tcmpb2;
- uint32_t tcnto2;
- uint32_t tcntb3;
- uint32_t tcmpb3;
- uint32_t tcnto3;
- uint32_t tcntb4;
- uint32_t tcnto4;
- };
-
- struct s3c24xx_usbdev_regs_t
+ struct usbdev_regs_t
{
uint32_t data[0xBC/4];
};
- struct s3c24xx_wdt_regs_t
- {
- uint32_t wtcon;
- uint32_t wtdat;
- uint32_t wtcnt;
- };
-
- struct s3c24xx_iic_regs_t
+ struct iic_regs_t
{
uint32_t iiccon;
uint32_t iicstat;
@@ -659,16 +396,7 @@ public:
uint32_t iicds;
};
- struct s3c24xx_iis_regs_t
- {
- uint32_t iiscon;
- uint32_t iismod;
- uint32_t iispsr;
- uint32_t iisfcon;
- uint32_t iisfifo;
- };
-
- struct s3c24xx_gpio_regs_t
+ struct gpio_regs_t
{
uint32_t gpacon;
uint32_t gpadat;
@@ -695,79 +423,32 @@ public:
uint32_t extint;
};
- struct s3c24xx_rtc_regs_t
- {
- uint32_t rtccon;
- uint32_t ticnt;
- uint32_t reserved[2];
- uint32_t rtcalm;
- uint32_t almsec;
- uint32_t almmin;
- uint32_t almhour;
- uint32_t almday;
- uint32_t almmon;
- uint32_t almyear;
- uint32_t rtcrst;
- uint32_t bcdsec;
- uint32_t bcdmin;
- uint32_t bcdhour;
- uint32_t bcdday;
- uint32_t bcddow;
- uint32_t bcdmon;
- uint32_t bcdyear;
- };
-
- struct s3c24xx_adc_regs_t
+ struct adc_regs_t
{
uint32_t adccon;
uint32_t adcdat;
};
- struct s3c24xx_spi_regs_t
- {
- uint32_t spcon;
- uint32_t spsta;
- uint32_t sppin;
- uint32_t sppre;
- uint32_t sptdat;
- uint32_t sprdat;
- };
-
- struct s3c24xx_mmc_regs_t
- {
- uint32_t data[0x40/4];
- };
-
- struct s3c24xx_memcon_t
- {
- s3c24xx_memcon_regs_t regs;
- };
-
- struct s3c24xx_usbhost_t
+ struct irq_t
{
- s3c24xx_usbhost_regs_t regs;
- };
-
- struct s3c24xx_irq_t
- {
- s3c24xx_irq_regs_t regs;
+ irq_regs_t regs;
int line_irq, line_fiq;
};
- struct s3c24xx_dma_t
+ struct dma_t
{
- s3c24xx_dma_regs_t regs;
+ dma_regs_t regs;
emu_timer *timer;
};
- struct s3c24xx_clkpow_t
+ struct clkpow_t
{
- s3c24xx_clkpow_regs_t regs;
+ clkpow_regs_t regs;
};
- struct s3c24xx_lcd_t
+ struct lcd_t
{
- s3c24xx_lcd_regs_t regs;
+ lcd_regs_t regs;
emu_timer *timer;
std::unique_ptr<bitmap_rgb32> bitmap[2];
uint32_t vramaddr_cur;
@@ -784,97 +465,49 @@ public:
uint32_t dma_data, dma_bits;
};
- struct s3c24xx_lcdpal_t
- {
- s3c24xx_lcdpal_regs_t regs;
- };
-
- struct s3c24xx_uart_t
+ struct usbdev_t
{
- s3c24xx_uart_regs_t regs;
+ usbdev_regs_t regs;
};
- struct s3c24xx_pwm_t
+ struct iic_t
{
- s3c24xx_pwm_regs_t regs;
- emu_timer *timer[5];
- uint32_t cnt[5];
- uint32_t cmp[5];
- uint32_t freq[5];
- };
-
- struct s3c24xx_usbdev_t
- {
- s3c24xx_usbdev_regs_t regs;
- };
-
- struct s3c24xx_wdt_t
- {
- s3c24xx_wdt_regs_t regs;
- emu_timer *timer;
- };
-
- struct s3c24xx_iic_t
- {
- s3c24xx_iic_regs_t regs;
+ iic_regs_t regs;
emu_timer *timer;
int count;
};
- struct s3c24xx_iis_t
+ struct gpio_t
{
- s3c24xx_iis_regs_t regs;
- emu_timer *timer;
- uint16_t fifo[16/2];
- int fifo_index;
+ gpio_regs_t regs;
};
- struct s3c24xx_gpio_t
+ struct adc_t
{
- s3c24xx_gpio_regs_t regs;
- };
-
- struct s3c24xx_rtc_t
- {
- s3c24xx_rtc_regs_t regs;
- emu_timer *timer_tick_count;
- emu_timer *timer_update;
- };
-
- struct s3c24xx_adc_t
- {
- s3c24xx_adc_regs_t regs;
- };
-
- struct s3c24xx_spi_t
- {
- s3c24xx_spi_regs_t regs;
- };
-
- struct s3c24xx_mmc_t
- {
- s3c24xx_mmc_regs_t regs;
+ adc_regs_t regs;
};
+ // internal state
+ required_device<palette_device> m_palette;
- s3c24xx_memcon_t m_memcon;
- s3c24xx_usbhost_t m_usbhost;
- s3c24xx_irq_t m_irq;
- s3c24xx_dma_t m_dma[S3C24XX_DMA_COUNT];
- s3c24xx_clkpow_t m_clkpow;
- s3c24xx_lcd_t m_lcd;
- s3c24xx_lcdpal_t m_lcdpal;
- s3c24xx_uart_t m_uart[S3C24XX_UART_COUNT];
- s3c24xx_pwm_t m_pwm;
- s3c24xx_usbdev_t m_usbdev;
- s3c24xx_wdt_t m_wdt;
- s3c24xx_iic_t m_iic;
- s3c24xx_iis_t m_iis;
- s3c24xx_gpio_t m_gpio;
- s3c24xx_rtc_t m_rtc;
- s3c24xx_adc_t m_adc;
- s3c24xx_spi_t m_spi[S3C24XX_SPI_COUNT];
- s3c24xx_mmc_t m_mmc;
+ memcon_t m_memcon;
+ usbhost_t m_usbhost;
+ irq_t m_irq;
+ dma_t m_dma[DMA_COUNT];
+ clkpow_t m_clkpow;
+ lcd_t m_lcd;
+ lcdpal_t m_lcdpal;
+ uart_t m_uart[UART_COUNT];
+ pwm_t m_pwm;
+ usbdev_t m_usbdev;
+ wdt_t m_wdt;
+ iic_t m_iic;
+ iis_t m_iis;
+ gpio_t m_gpio;
+ rtc_t m_rtc;
+ adc_t m_adc;
+ spi_t m_spi[SPI_COUNT];
+ mmc_t m_mmc;
required_device<device_t> m_cpu;
devcb_read32 m_pin_r_cb;
devcb_write32 m_pin_w_cb;
@@ -888,7 +521,6 @@ public:
int m_flags;
};
-extern const device_type S3C2400;
-
+DECLARE_DEVICE_TYPE(S3C2400, s3c2400_device)
-#endif
+#endif // MAME_MACHINE_S3C2400_H
diff --git a/src/devices/machine/s3c2410.cpp b/src/devices/machine/s3c2410.cpp
index ff4fbbd060c..175138443ab 100644
--- a/src/devices/machine/s3c2410.cpp
+++ b/src/devices/machine/s3c2410.cpp
@@ -16,18 +16,208 @@
#include "screen.h"
+#define S3C24XX_SRCPND (0x00 / 4) // Interrupt Request Status
+#define S3C24XX_INTMOD (0x04 / 4) // Interrupt Mode Control
+#define S3C24XX_INTMSK (0x08 / 4) // Interrupt Mask Control
+#define S3C24XX_PRIORITY (0x0C / 4) // IRQ Priority Control
+#define S3C24XX_INTPND (0x10 / 4) // Interrupt Request Status
+#define S3C24XX_INTOFFSET (0x14 / 4) // Interrupt Request Source Offset
+#define S3C24XX_SUBSRCPND (0x18 / 4) // Sub Source Pending
+#define S3C24XX_INTSUBMSK (0x1C / 4) // Interrupt Sub Mask
+
+#define S3C24XX_DISRC (0x00 / 4) // DMA Initial Source
+#define S3C24XX_DISRCC (0x04 / 4) // DMA Initial Source Control
+#define S3C24XX_DIDST (0x08 / 4) // DMA Initial Destination
+#define S3C24XX_DIDSTC (0x0C / 4) // DMA Initial Destination Control
+#define S3C24XX_DCON (0x10 / 4) // DMA Control
+#define S3C24XX_DSTAT (0x14 / 4) // DMA Count
+#define S3C24XX_DCSRC (0x18 / 4) // DMA Current Source
+#define S3C24XX_DCDST (0x1C / 4) // DMA Current Destination
+#define S3C24XX_DMASKTRIG (0x20 / 4) // DMA Mask Trigger
+
+#define S3C24XX_LCDCON1 (0x00 / 4) // LCD Control 1
+#define S3C24XX_LCDCON2 (0x04 / 4) // LCD Control 2
+#define S3C24XX_LCDCON3 (0x08 / 4) // LCD Control 3
+#define S3C24XX_LCDCON4 (0x0C / 4) // LCD Control 4
+#define S3C24XX_LCDCON5 (0x10 / 4) // LCD Control 5
+#define S3C24XX_LCDSADDR1 (0x14 / 4) // STN/TFT: Frame Buffer Start Address 1
+#define S3C24XX_LCDSADDR2 (0x18 / 4) // STN/TFT: Frame Buffer Start Address 2
+#define S3C24XX_LCDSADDR3 (0x1C / 4) // STN/TFT: Virtual Screen Address Set
+#define S3C24XX_REDLUT (0x20 / 4) // STN: Red Lookup Table
+#define S3C24XX_GREENLUT (0x24 / 4) // STN: Green Lookup Table
+#define S3C24XX_BLUELUT (0x28 / 4) // STN: Blue Lookup Table
+#define S3C24XX_DITHMODE (0x4C / 4) // STN: Dithering Mode
+#define S3C24XX_TPAL (0x50 / 4) // TFT: Temporary Palette
+#define S3C24XX_LCDINTPND (0x54 / 4) // LCD Interrupt Pending
+#define S3C24XX_LCDSRCPND (0x58 / 4) // LCD Interrupt Source
+#define S3C24XX_LCDINTMSK (0x5C / 4) // LCD Interrupt Mask
+#define S3C24XX_LPCSEL (0x60 / 4) // LPC3600 Control
+
+#define S3C24XX_NFCONF (0x00 / 4) // NAND Flash Configuration
+#define S3C24XX_NFCMD (0x04 / 4) // NAND Flash Command
+#define S3C24XX_NFADDR (0x08 / 4) // NAND Flash Address
+#define S3C24XX_NFDATA (0x0C / 4) // NAND Flash Data
+#define S3C24XX_NFSTAT (0x10 / 4) // NAND Flash Operation Status
+#define S3C24XX_NFECC (0x14 / 4) // NAND Flash ECC
+
+#define S3C24XX_IICCON (0x00 / 4) // IIC Control
+#define S3C24XX_IICSTAT (0x04 / 4) // IIC Status
+#define S3C24XX_IICADD (0x08 / 4) // IIC Address
+#define S3C24XX_IICDS (0x0C / 4) // IIC Data Shift
+
+#define S3C24XX_GPACON (0x00 / 4) // Port A Control
+#define S3C24XX_GPADAT (0x04 / 4) // Port A Data
+#define S3C24XX_GPBCON (0x10 / 4) // Port B Control
+#define S3C24XX_GPBDAT (0x14 / 4) // Port B Data
+#define S3C24XX_GPBUP (0x18 / 4) // Pull-up Control B
+#define S3C24XX_GPCCON (0x20 / 4) // Port C Control
+#define S3C24XX_GPCDAT (0x24 / 4) // Port C Data
+#define S3C24XX_GPCUP (0x28 / 4) // Pull-up Control C
+#define S3C24XX_GPDCON (0x30 / 4) // Port D Control
+#define S3C24XX_GPDDAT (0x34 / 4) // Port D Data
+#define S3C24XX_GPDUP (0x38 / 4) // Pull-up Control D
+#define S3C24XX_GPECON (0x40 / 4) // Port E Control
+#define S3C24XX_GPEDAT (0x44 / 4) // Port E Data
+#define S3C24XX_GPEUP (0x48 / 4) // Pull-up Control E
+#define S3C24XX_GPFCON (0x50 / 4) // Port F Control
+#define S3C24XX_GPFDAT (0x54 / 4) // Port F Data
+#define S3C24XX_GPFUP (0x58 / 4) // Pull-up Control F
+#define S3C24XX_GPGCON (0x60 / 4) // Port G Control
+#define S3C24XX_GPGDAT (0x64 / 4) // Port G Data
+#define S3C24XX_GPGUP (0x68 / 4) // Pull-up Control G
+#define S3C24XX_GPHCON (0x70 / 4) // Port H Control
+#define S3C24XX_GPHDAT (0x74 / 4) // Port H Data
+#define S3C24XX_GPHUP (0x78 / 4) // Pull-up Control H
+#define S3C24XX_MISCCR (0x80 / 4) // Miscellaneous Control
+#define S3C24XX_DCLKCON (0x84 / 4) // DCLK0/1 Control
+#define S3C24XX_EXTINT0 (0x88 / 4) // External Interrupt Control Register 0
+#define S3C24XX_EXTINT1 (0x8C / 4) // External Interrupt Control Register 1
+#define S3C24XX_EXTINT2 (0x90 / 4) // External Interrupt Control Register 2
+#define S3C24XX_EINTFLT0 (0x94 / 4) // Reserved
+#define S3C24XX_EINTFLT1 (0x98 / 4) // Reserved
+#define S3C24XX_EINTFLT2 (0x9C / 4) // External Interrupt Filter Control Register 2
+#define S3C24XX_EINTFLT3 (0xA0 / 4) // External Interrupt Filter Control Register 3
+#define S3C24XX_EINTMASK (0xA4 / 4) // External Interrupt Mask
+#define S3C24XX_EINTPEND (0xA8 / 4) // External Interrupt Pending
+#define S3C24XX_GSTATUS0 (0xAC / 4) // External Pin Status
+#define S3C24XX_GSTATUS1 (0xB0 / 4) // Chip ID
+#define S3C24XX_GSTATUS2 (0xB4 / 4) // Reset Status
+#define S3C24XX_GSTATUS3 (0xB8 / 4) // Inform Register
+#define S3C24XX_GSTATUS4 (0xBC / 4) // Inform Register
+
+#define S3C24XX_GPADAT_MASK 0x007FFFFF
+#define S3C24XX_GPBDAT_MASK 0x000007FF
+#define S3C24XX_GPCDAT_MASK 0x0000FFFF
+#define S3C24XX_GPDDAT_MASK 0x0000FFFF
+#define S3C24XX_GPEDAT_MASK 0x0000FFFF
+#define S3C24XX_GPFDAT_MASK 0x000000FF
+#define S3C24XX_GPGDAT_MASK 0x0000FFFF
+#define S3C24XX_GPHDAT_MASK 0x000007FF
+
+#define S3C24XX_ADCCON (0x00 / 4) // ADC Control
+#define S3C24XX_ADCTSC (0x04 / 4) // ADC Touch Screen Control
+#define S3C24XX_ADCDLY (0x08 / 4) // ADC Start or Interval Delay
+#define S3C24XX_ADCDAT0 (0x0C / 4) // ADC Conversion Data
+#define S3C24XX_ADCDAT1 (0x10 / 4) // ADC Conversion Data
+
+#define S3C24XX_INT_ADC 31
+#define S3C24XX_INT_RTC 30
+#define S3C24XX_INT_SPI1 29
+#define S3C24XX_INT_UART0 28
+#define S3C24XX_INT_IIC 27
+#define S3C24XX_INT_USBH 26
+#define S3C24XX_INT_USBD 25
+#define S3C24XX_INT_24 24
+#define S3C24XX_INT_UART1 23
+#define S3C24XX_INT_SPI0 22
+#define S3C24XX_INT_SDI 21
+#define S3C24XX_INT_DMA3 20
+#define S3C24XX_INT_DMA2 19
+#define S3C24XX_INT_DMA1 18
+#define S3C24XX_INT_DMA0 17
+#define S3C24XX_INT_LCD 16
+#define S3C24XX_INT_UART2 15
+#define S3C24XX_INT_TIMER4 14
+#define S3C24XX_INT_TIMER3 13
+#define S3C24XX_INT_TIMER2 12
+#define S3C24XX_INT_TIMER1 11
+#define S3C24XX_INT_TIMER0 10
+#define S3C24XX_INT_WDT 9
+#define S3C24XX_INT_TICK 8
+#define S3C24XX_INT_BATT_FLT 7
+#define S3C24XX_INT_6 6
+#define S3C24XX_INT_EINT8_23 5
+#define S3C24XX_INT_EINT4_7 4
+#define S3C24XX_INT_EINT3 3
+#define S3C24XX_INT_EINT2 2
+#define S3C24XX_INT_EINT1 1
+#define S3C24XX_INT_EINT0 0
+
+#define S3C24XX_SUBINT_ADC 10
+#define S3C24XX_SUBINT_TC 9
+#define S3C24XX_SUBINT_ERR2 8
+#define S3C24XX_SUBINT_TXD2 7
+#define S3C24XX_SUBINT_RXD2 6
+#define S3C24XX_SUBINT_ERR1 5
+#define S3C24XX_SUBINT_TXD1 4
+#define S3C24XX_SUBINT_RXD1 3
+#define S3C24XX_SUBINT_ERR0 2
+#define S3C24XX_SUBINT_TXD0 1
+#define S3C24XX_SUBINT_RXD0 0
+
+static const uint32_t MAP_SUBINT_TO_INT[11] =
+{
+ S3C24XX_INT_UART0, S3C24XX_INT_UART0, S3C24XX_INT_UART0,
+ S3C24XX_INT_UART1, S3C24XX_INT_UART1, S3C24XX_INT_UART1,
+ S3C24XX_INT_UART2, S3C24XX_INT_UART2, S3C24XX_INT_UART2,
+ S3C24XX_INT_ADC, S3C24XX_INT_ADC
+};
+
+#define S3C24XX_BPPMODE_STN_01 0x00
+#define S3C24XX_BPPMODE_STN_02 0x01
+#define S3C24XX_BPPMODE_STN_04 0x02
+#define S3C24XX_BPPMODE_STN_08 0x03
+#define S3C24XX_BPPMODE_STN_12_P 0x04
+#define S3C24XX_BPPMODE_STN_12_U 0x05
+#define S3C24XX_BPPMODE_STN_16 0x06
+#define S3C24XX_BPPMODE_TFT_01 0x08
+#define S3C24XX_BPPMODE_TFT_02 0x09
+#define S3C24XX_BPPMODE_TFT_04 0x0A
+#define S3C24XX_BPPMODE_TFT_08 0x0B
+#define S3C24XX_BPPMODE_TFT_16 0x0C
+#define S3C24XX_BPPMODE_TFT_24 0x0D
+
+#define S3C24XX_PNRMODE_STN_04_DS 0
+#define S3C24XX_PNRMODE_STN_04_SS 1
+#define S3C24XX_PNRMODE_STN_08_SS 2
+#define S3C24XX_PNRMODE_TFT 3
+
+#define S3C24XX_GPIO_PORT_A S3C2410_GPIO_PORT_A
+#define S3C24XX_GPIO_PORT_B S3C2410_GPIO_PORT_B
+#define S3C24XX_GPIO_PORT_C S3C2410_GPIO_PORT_C
+#define S3C24XX_GPIO_PORT_D S3C2410_GPIO_PORT_D
+#define S3C24XX_GPIO_PORT_E S3C2410_GPIO_PORT_E
+#define S3C24XX_GPIO_PORT_F S3C2410_GPIO_PORT_F
+#define S3C24XX_GPIO_PORT_G S3C2410_GPIO_PORT_G
+#define S3C24XX_GPIO_PORT_H S3C2410_GPIO_PORT_H
+
+#define S3C24XX_CORE_PIN_NCON S3C2410_CORE_PIN_NCON
+#define S3C24XX_CORE_PIN_OM0 S3C2410_CORE_PIN_OM0
+#define S3C24XX_CORE_PIN_OM1 S3C2410_CORE_PIN_OM1
+
+
#define VERBOSE_LEVEL ( 0 )
-static inline void ATTR_PRINTF(3,4) verboselog( device_t &device, int n_level, const char *s_fmt, ...)
+static inline void ATTR_PRINTF(3,4) verboselog(device_t &device, int n_level, const char *s_fmt, ...)
{
if (VERBOSE_LEVEL >= n_level)
{
va_list v;
char buf[32768];
- va_start( v, s_fmt);
- vsprintf( buf, s_fmt, v);
- va_end( v);
- device.logerror( "%s: %s", device.machine().describe_context( ), buf);
+ va_start(v, s_fmt);
+ vsprintf(buf, s_fmt, v);
+ va_end(v);
+ device.logerror("%s: %s", device.machine().describe_context( ), buf);
}
}
@@ -41,26 +231,26 @@ uint32_t s3c2410_device::screen_update(screen_device &screen, bitmap_rgb32 &bitm
return s3c24xx_video_update(screen, bitmap, cliprect);
}
-const device_type S3C2410 = device_creator<s3c2410_device>;
+DEFINE_DEVICE_TYPE(S3C2410, s3c2410_device, "s3c2410", "Samsung S3C2410 SoC")
s3c2410_device::s3c2410_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, S3C2410, "S3C2410 MCU", tag, owner, clock, "s3c2410", __FILE__),
- m_palette(*this, finder_base::DUMMY_TAG),
- m_cpu(*this, ":maincpu"),
- m_pin_r_cb(*this),
- m_pin_w_cb(*this),
- m_port_r_cb(*this),
- m_port_w_cb(*this),
- m_scl_w_cb(*this),
- m_sda_r_cb(*this),
- m_sda_w_cb(*this),
- m_data_r_cb(*this),
- m_data_w_cb(*this),
- m_command_w_cb(*this),
- m_address_w_cb(*this),
- m_nand_data_r_cb(*this),
- m_nand_data_w_cb(*this),
- m_flags(0)
+ : device_t(mconfig, S3C2410, tag, owner, clock)
+ , m_palette(*this, finder_base::DUMMY_TAG)
+ , m_cpu(*this, ":maincpu")
+ , m_pin_r_cb(*this)
+ , m_pin_w_cb(*this)
+ , m_port_r_cb(*this)
+ , m_port_w_cb(*this)
+ , m_scl_w_cb(*this)
+ , m_sda_r_cb(*this)
+ , m_sda_w_cb(*this)
+ , m_data_r_cb(*this)
+ , m_data_w_cb(*this)
+ , m_command_w_cb(*this)
+ , m_address_w_cb(*this)
+ , m_nand_data_r_cb(*this)
+ , m_nand_data_w_cb(*this)
+ , m_flags(0)
{
memset(m_steppingstone, 0, sizeof(m_steppingstone));
memset(&m_memcon, 0, sizeof(m_memcon));
diff --git a/src/devices/machine/s3c2410.h b/src/devices/machine/s3c2410.h
index 3356f4d91fb..eadaf786a37 100644
--- a/src/devices/machine/s3c2410.h
+++ b/src/devices/machine/s3c2410.h
@@ -6,8 +6,12 @@
*******************************************************************************/
-#ifndef __S3C2410_H__
-#define __S3C2410_H__
+#ifndef MAME_MACHINE_S3C2410_H
+#define MAME_MACHINE_S3C2410_H
+
+#pragma once
+
+#include "s3c24xx.h"
/*******************************************************************************
@@ -16,50 +20,50 @@
#define S3C2410_TAG "s3c2410"
-#define MCFG_S3C2410_PALETTE(_palette_tag) \
- s3c2410_device::static_set_palette_tag(*device, "^" _palette_tag);
+#define MCFG_S3C2410_PALETTE(palette_tag) \
+ s3c2410_device::static_set_palette_tag(*device, ("^" palette_tag));
-#define MCFG_S3C2410_CORE_PIN_R_CB(_devcb) \
- devcb = &s3c2410_device::set_core_pin_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_CORE_PIN_R_CB(cb) \
+ devcb = &s3c2410_device::set_core_pin_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_CORE_PIN_W_CB(_devcb) \
- devcb = &s3c2410_device::set_core_pin_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_CORE_PIN_W_CB(cb) \
+ devcb = &s3c2410_device::set_core_pin_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_GPIO_PORT_R_CB(_devcb) \
- devcb = &s3c2410_device::set_gpio_port_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_GPIO_PORT_R_CB(cb) \
+ devcb = &s3c2410_device::set_gpio_port_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_GPIO_PORT_W_CB(_devcb) \
- devcb = &s3c2410_device::set_gpio_port_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_GPIO_PORT_W_CB(cb) \
+ devcb = &s3c2410_device::set_gpio_port_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_I2C_SCL_W_CB(_devcb) \
- devcb = &s3c2410_device::set_i2c_scl_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_I2C_SCL_W_CB(cb) \
+ devcb = &s3c2410_device::set_i2c_scl_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_I2C_SDA_R_CB(_devcb) \
- devcb = &s3c2410_device::set_i2c_sda_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_I2C_SDA_R_CB(cb) \
+ devcb = &s3c2410_device::set_i2c_sda_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_I2C_SDA_W_CB(_devcb) \
- devcb = &s3c2410_device::set_i2c_sda_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_I2C_SDA_W_CB(cb) \
+ devcb = &s3c2410_device::set_i2c_sda_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_ADC_DATA_R_CB(_devcb) \
- devcb = &s3c2410_device::set_adc_data_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_ADC_DATA_R_CB(cb) \
+ devcb = &s3c2410_device::set_adc_data_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_I2S_DATA_W_CB(_devcb) \
- devcb = &s3c2410_device::set_i2s_data_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_I2S_DATA_W_CB(cb) \
+ devcb = &s3c2410_device::set_i2s_data_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_NAND_COMMAND_W_CB(_devcb) \
- devcb = &s3c2410_device::set_nand_command_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_NAND_COMMAND_W_CB(cb) \
+ devcb = &s3c2410_device::set_nand_command_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_NAND_ADDRESS_W_CB(_devcb) \
- devcb = &s3c2410_device::set_nand_address_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_NAND_ADDRESS_W_CB(cb) \
+ devcb = &s3c2410_device::set_nand_address_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_NAND_DATA_R_CB(_devcb) \
- devcb = &s3c2410_device::set_nand_data_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_NAND_DATA_R_CB(cb) \
+ devcb = &s3c2410_device::set_nand_data_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_NAND_DATA_W_CB(_devcb) \
- devcb = &s3c2410_device::set_nand_data_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C2410_NAND_DATA_W_CB(cb) \
+ devcb = &s3c2410_device::set_nand_data_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C2410_LCD_FLAGS(_flags) \
- s3c2410_device::set_lcd_flags(*device, _flags);
+#define MCFG_S3C2410_LCD_FLAGS(flags) \
+ s3c2410_device::set_lcd_flags(*device, (flags));
enum
{
@@ -101,15 +105,6 @@ enum
#define S3C24XX_BASE_INT 0x4A000000
-#define S3C24XX_SRCPND (0x00 / 4) // Interrupt Request Status
-#define S3C24XX_INTMOD (0x04 / 4) // Interrupt Mode Control
-#define S3C24XX_INTMSK (0x08 / 4) // Interrupt Mask Control
-#define S3C24XX_PRIORITY (0x0C / 4) // IRQ Priority Control
-#define S3C24XX_INTPND (0x10 / 4) // Interrupt Request Status
-#define S3C24XX_INTOFFSET (0x14 / 4) // Interrupt Request Source Offset
-#define S3C24XX_SUBSRCPND (0x18 / 4) // Sub Source Pending
-#define S3C24XX_INTSUBMSK (0x1C / 4) // Interrupt Sub Mask
-
/* DMA */
#define S3C24XX_BASE_DMA_0 0x4B000000
@@ -117,16 +112,6 @@ enum
#define S3C24XX_BASE_DMA_2 0x4B000080
#define S3C24XX_BASE_DMA_3 0x4B0000C0
-#define S3C24XX_DISRC (0x00 / 4) // DMA Initial Source
-#define S3C24XX_DISRCC (0x04 / 4) // DMA Initial Source Control
-#define S3C24XX_DIDST (0x08 / 4) // DMA Initial Destination
-#define S3C24XX_DIDSTC (0x0C / 4) // DMA Initial Destination Control
-#define S3C24XX_DCON (0x10 / 4) // DMA Control
-#define S3C24XX_DSTAT (0x14 / 4) // DMA Count
-#define S3C24XX_DCSRC (0x18 / 4) // DMA Current Source
-#define S3C24XX_DCDST (0x1C / 4) // DMA Current Destination
-#define S3C24XX_DMASKTRIG (0x20 / 4) // DMA Mask Trigger
-
/* Clock & Power Management */
#define S3C24XX_BASE_CLKPOW 0x4C000000
@@ -143,75 +128,20 @@ enum
#define S3C24XX_BASE_LCD 0x4D000000
#define S3C24XX_BASE_LCDPAL 0x4D000400
-#define S3C24XX_LCDCON1 (0x00 / 4) // LCD Control 1
-#define S3C24XX_LCDCON2 (0x04 / 4) // LCD Control 2
-#define S3C24XX_LCDCON3 (0x08 / 4) // LCD Control 3
-#define S3C24XX_LCDCON4 (0x0C / 4) // LCD Control 4
-#define S3C24XX_LCDCON5 (0x10 / 4) // LCD Control 5
-#define S3C24XX_LCDSADDR1 (0x14 / 4) // STN/TFT: Frame Buffer Start Address 1
-#define S3C24XX_LCDSADDR2 (0x18 / 4) // STN/TFT: Frame Buffer Start Address 2
-#define S3C24XX_LCDSADDR3 (0x1C / 4) // STN/TFT: Virtual Screen Address Set
-#define S3C24XX_REDLUT (0x20 / 4) // STN: Red Lookup Table
-#define S3C24XX_GREENLUT (0x24 / 4) // STN: Green Lookup Table
-#define S3C24XX_BLUELUT (0x28 / 4) // STN: Blue Lookup Table
-#define S3C24XX_DITHMODE (0x4C / 4) // STN: Dithering Mode
-#define S3C24XX_TPAL (0x50 / 4) // TFT: Temporary Palette
-#define S3C24XX_LCDINTPND (0x54 / 4) // LCD Interrupt Pending
-#define S3C24XX_LCDSRCPND (0x58 / 4) // LCD Interrupt Source
-#define S3C24XX_LCDINTMSK (0x5C / 4) // LCD Interrupt Mask
-#define S3C24XX_LPCSEL (0x60 / 4) // LPC3600 Control
-
/* NAND Flash */
#define S3C24XX_BASE_NAND 0x4E000000
-#define S3C24XX_NFCONF (0x00 / 4) // NAND Flash Configuration
-#define S3C24XX_NFCMD (0x04 / 4) // NAND Flash Command
-#define S3C24XX_NFADDR (0x08 / 4) // NAND Flash Address
-#define S3C24XX_NFDATA (0x0C / 4) // NAND Flash Data
-#define S3C24XX_NFSTAT (0x10 / 4) // NAND Flash Operation Status
-#define S3C24XX_NFECC (0x14 / 4) // NAND Flash ECC
-
/* UART */
#define S3C24XX_BASE_UART_0 0x50000000
#define S3C24XX_BASE_UART_1 0x50004000
#define S3C24XX_BASE_UART_2 0x50008000
-#define S3C24XX_ULCON (0x00 / 4) // UART Line Control
-#define S3C24XX_UCON (0x04 / 4) // UART Control
-#define S3C24XX_UFCON (0x08 / 4) // UART FIFO Control
-#define S3C24XX_UMCON (0x0C / 4) // UART Modem Control
-#define S3C24XX_UTRSTAT (0x10 / 4) // UART Tx/Rx Status
-#define S3C24XX_UERSTAT (0x14 / 4) // UART Rx Error Status
-#define S3C24XX_UFSTAT (0x18 / 4) // UART FIFO Status
-#define S3C24XX_UMSTAT (0x1C / 4) // UART Modem Status
-#define S3C24XX_UTXH (0x20 / 4) // UART Transmission Hold
-#define S3C24XX_URXH (0x24 / 4) // UART Receive Buffer
-#define S3C24XX_UBRDIV (0x28 / 4) // UART Baud Rate Divisor
-
/* PWM Timer */
#define S3C24XX_BASE_PWM 0x51000000
-#define S3C24XX_TCFG0 (0x00 / 4) // Timer Configuration
-#define S3C24XX_TCFG1 (0x04 / 4) // Timer Configuration
-#define S3C24XX_TCON (0x08 / 4) // Timer Control
-#define S3C24XX_TCNTB0 (0x0C / 4) // Timer Count Buffer 0
-#define S3C24XX_TCMPB0 (0x10 / 4) // Timer Compare Buffer 0
-#define S3C24XX_TCNTO0 (0x14 / 4) // Timer Count Observation 0
-#define S3C24XX_TCNTB1 (0x18 / 4) // Timer Count Buffer 1
-#define S3C24XX_TCMPB1 (0x1C / 4) // Timer Compare Buffer 1
-#define S3C24XX_TCNTO1 (0x20 / 4) // Timer Count Observation 1
-#define S3C24XX_TCNTB2 (0x24 / 4) // Timer Count Buffer 2
-#define S3C24XX_TCMPB2 (0x28 / 4) // Timer Compare Buffer 2
-#define S3C24XX_TCNTO2 (0x2C / 4) // Timer Count Observation 2
-#define S3C24XX_TCNTB3 (0x30 / 4) // Timer Count Buffer 3
-#define S3C24XX_TCMPB3 (0x34 / 4) // Timer Compare Buffer 3
-#define S3C24XX_TCNTO3 (0x38 / 4) // Timer Count Observation 3
-#define S3C24XX_TCNTB4 (0x3C / 4) // Timer Count Buffer 4
-#define S3C24XX_TCNTO4 (0x40 / 4) // Timer Count Observation 4
-
/* USB Device */
#define S3C24XX_BASE_USBDEV 0x52000140
@@ -220,222 +150,38 @@ enum
#define S3C24XX_BASE_WDT 0x53000000
-#define S3C24XX_WTCON (0x00 / 4) // Watchdog Timer Mode
-#define S3C24XX_WTDAT (0x04 / 4) // Watchdog Timer Data
-#define S3C24XX_WTCNT (0x08 / 4) // Watchdog Timer Count
-
/* IIC */
#define S3C24XX_BASE_IIC 0x54000000
-#define S3C24XX_IICCON (0x00 / 4) // IIC Control
-#define S3C24XX_IICSTAT (0x04 / 4) // IIC Status
-#define S3C24XX_IICADD (0x08 / 4) // IIC Address
-#define S3C24XX_IICDS (0x0C / 4) // IIC Data Shift
-
/* IIS */
#define S3C24XX_BASE_IIS 0x55000000
-#define S3C24XX_IISCON (0x00 / 4) // IIS Control
-#define S3C24XX_IISMOD (0x04 / 4) // IIS Mode
-#define S3C24XX_IISPSR (0x08 / 4) // IIS Prescaler
-#define S3C24XX_IISFCON (0x0C / 4) // IIS FIFO Control
-#define S3C24XX_IISFIFO (0x10 / 4) // IIS FIFO Entry
-
/* I/O Port */
#define S3C24XX_BASE_GPIO 0x56000000
-#define S3C24XX_GPACON (0x00 / 4) // Port A Control
-#define S3C24XX_GPADAT (0x04 / 4) // Port A Data
-#define S3C24XX_GPBCON (0x10 / 4) // Port B Control
-#define S3C24XX_GPBDAT (0x14 / 4) // Port B Data
-#define S3C24XX_GPBUP (0x18 / 4) // Pull-up Control B
-#define S3C24XX_GPCCON (0x20 / 4) // Port C Control
-#define S3C24XX_GPCDAT (0x24 / 4) // Port C Data
-#define S3C24XX_GPCUP (0x28 / 4) // Pull-up Control C
-#define S3C24XX_GPDCON (0x30 / 4) // Port D Control
-#define S3C24XX_GPDDAT (0x34 / 4) // Port D Data
-#define S3C24XX_GPDUP (0x38 / 4) // Pull-up Control D
-#define S3C24XX_GPECON (0x40 / 4) // Port E Control
-#define S3C24XX_GPEDAT (0x44 / 4) // Port E Data
-#define S3C24XX_GPEUP (0x48 / 4) // Pull-up Control E
-#define S3C24XX_GPFCON (0x50 / 4) // Port F Control
-#define S3C24XX_GPFDAT (0x54 / 4) // Port F Data
-#define S3C24XX_GPFUP (0x58 / 4) // Pull-up Control F
-#define S3C24XX_GPGCON (0x60 / 4) // Port G Control
-#define S3C24XX_GPGDAT (0x64 / 4) // Port G Data
-#define S3C24XX_GPGUP (0x68 / 4) // Pull-up Control G
-#define S3C24XX_GPHCON (0x70 / 4) // Port H Control
-#define S3C24XX_GPHDAT (0x74 / 4) // Port H Data
-#define S3C24XX_GPHUP (0x78 / 4) // Pull-up Control H
-#define S3C24XX_MISCCR (0x80 / 4) // Miscellaneous Control
-#define S3C24XX_DCLKCON (0x84 / 4) // DCLK0/1 Control
-#define S3C24XX_EXTINT0 (0x88 / 4) // External Interrupt Control Register 0
-#define S3C24XX_EXTINT1 (0x8C / 4) // External Interrupt Control Register 1
-#define S3C24XX_EXTINT2 (0x90 / 4) // External Interrupt Control Register 2
-#define S3C24XX_EINTFLT0 (0x94 / 4) // Reserved
-#define S3C24XX_EINTFLT1 (0x98 / 4) // Reserved
-#define S3C24XX_EINTFLT2 (0x9C / 4) // External Interrupt Filter Control Register 2
-#define S3C24XX_EINTFLT3 (0xA0 / 4) // External Interrupt Filter Control Register 3
-#define S3C24XX_EINTMASK (0xA4 / 4) // External Interrupt Mask
-#define S3C24XX_EINTPEND (0xA8 / 4) // External Interrupt Pending
-#define S3C24XX_GSTATUS0 (0xAC / 4) // External Pin Status
-#define S3C24XX_GSTATUS1 (0xB0 / 4) // Chip ID
-#define S3C24XX_GSTATUS2 (0xB4 / 4) // Reset Status
-#define S3C24XX_GSTATUS3 (0xB8 / 4) // Inform Register
-#define S3C24XX_GSTATUS4 (0xBC / 4) // Inform Register
-
-#define S3C24XX_GPADAT_MASK 0x007FFFFF
-#define S3C24XX_GPBDAT_MASK 0x000007FF
-#define S3C24XX_GPCDAT_MASK 0x0000FFFF
-#define S3C24XX_GPDDAT_MASK 0x0000FFFF
-#define S3C24XX_GPEDAT_MASK 0x0000FFFF
-#define S3C24XX_GPFDAT_MASK 0x000000FF
-#define S3C24XX_GPGDAT_MASK 0x0000FFFF
-#define S3C24XX_GPHDAT_MASK 0x000007FF
-
/* RTC */
#define S3C24XX_BASE_RTC 0x57000040
-#define S3C24XX_RTCCON (0x00 / 4) // RTC Control
-#define S3C24XX_TICNT (0x04 / 4) // Tick Time count
-#define S3C24XX_RTCALM (0x10 / 4) // RTC Alarm Control
-#define S3C24XX_ALMSEC (0x14 / 4) // Alarm Second
-#define S3C24XX_ALMMIN (0x18 / 4) // Alarm Minute
-#define S3C24XX_ALMHOUR (0x1C / 4) // Alarm Hour
-#define S3C24XX_ALMDAY (0x20 / 4) // Alarm Day
-#define S3C24XX_ALMMON (0x24 / 4) // Alarm Month
-#define S3C24XX_ALMYEAR (0x28 / 4) // Alarm Year
-#define S3C24XX_RTCRST (0x2C / 4) // RTC Round Reset
-#define S3C24XX_BCDSEC (0x30 / 4) // BCD Second
-#define S3C24XX_BCDMIN (0x34 / 4) // BCD Minute
-#define S3C24XX_BCDHOUR (0x38 / 4) // BCD Hour
-#define S3C24XX_BCDDAY (0x3C / 4) // BCD Day
-#define S3C24XX_BCDDOW (0x40 / 4) // BCD Day of Week
-#define S3C24XX_BCDMON (0x44 / 4) // BCD Month
-#define S3C24XX_BCDYEAR (0x48 / 4) // BCD Year
-
/* A/D Converter */
#define S3C24XX_BASE_ADC 0x58000000
-#define S3C24XX_ADCCON (0x00 / 4) // ADC Control
-#define S3C24XX_ADCTSC (0x04 / 4) // ADC Touch Screen Control
-#define S3C24XX_ADCDLY (0x08 / 4) // ADC Start or Interval Delay
-#define S3C24XX_ADCDAT0 (0x0C / 4) // ADC Conversion Data
-#define S3C24XX_ADCDAT1 (0x10 / 4) // ADC Conversion Data
-
/* SPI */
#define S3C24XX_BASE_SPI_0 0x59000000
#define S3C24XX_BASE_SPI_1 0x59000020
-#define S3C24XX_SPCON (0x00 / 4) // SPI Control
-#define S3C24XX_SPSTA (0x04 / 4) // SPI Status
-#define S3C24XX_SPPIN (0x08 / 4) // SPI Pin Control
-#define S3C24XX_SPPRE (0x0C / 4) // SPI Baud Rate Prescaler
-#define S3C24XX_SPTDAT (0x10 / 4) // SPI Tx Data
-#define S3C24XX_SPRDAT (0x14 / 4) // SPI Rx Data
-
/* SD Interface */
#define S3C24XX_BASE_SDI 0x5A000000
/* ... */
-#define S3C24XX_INT_ADC 31
-#define S3C24XX_INT_RTC 30
-#define S3C24XX_INT_SPI1 29
-#define S3C24XX_INT_UART0 28
-#define S3C24XX_INT_IIC 27
-#define S3C24XX_INT_USBH 26
-#define S3C24XX_INT_USBD 25
-#define S3C24XX_INT_24 24
-#define S3C24XX_INT_UART1 23
-#define S3C24XX_INT_SPI0 22
-#define S3C24XX_INT_SDI 21
-#define S3C24XX_INT_DMA3 20
-#define S3C24XX_INT_DMA2 19
-#define S3C24XX_INT_DMA1 18
-#define S3C24XX_INT_DMA0 17
-#define S3C24XX_INT_LCD 16
-#define S3C24XX_INT_UART2 15
-#define S3C24XX_INT_TIMER4 14
-#define S3C24XX_INT_TIMER3 13
-#define S3C24XX_INT_TIMER2 12
-#define S3C24XX_INT_TIMER1 11
-#define S3C24XX_INT_TIMER0 10
-#define S3C24XX_INT_WDT 9
-#define S3C24XX_INT_TICK 8
-#define S3C24XX_INT_BATT_FLT 7
-#define S3C24XX_INT_6 6
-#define S3C24XX_INT_EINT8_23 5
-#define S3C24XX_INT_EINT4_7 4
-#define S3C24XX_INT_EINT3 3
-#define S3C24XX_INT_EINT2 2
-#define S3C24XX_INT_EINT1 1
-#define S3C24XX_INT_EINT0 0
-
-#define S3C24XX_SUBINT_ADC 10
-#define S3C24XX_SUBINT_TC 9
-#define S3C24XX_SUBINT_ERR2 8
-#define S3C24XX_SUBINT_TXD2 7
-#define S3C24XX_SUBINT_RXD2 6
-#define S3C24XX_SUBINT_ERR1 5
-#define S3C24XX_SUBINT_TXD1 4
-#define S3C24XX_SUBINT_RXD1 3
-#define S3C24XX_SUBINT_ERR0 2
-#define S3C24XX_SUBINT_TXD0 1
-#define S3C24XX_SUBINT_RXD0 0
-
-static const uint32_t MAP_SUBINT_TO_INT[11] =
-{
- S3C24XX_INT_UART0, S3C24XX_INT_UART0, S3C24XX_INT_UART0,
- S3C24XX_INT_UART1, S3C24XX_INT_UART1, S3C24XX_INT_UART1,
- S3C24XX_INT_UART2, S3C24XX_INT_UART2, S3C24XX_INT_UART2,
- S3C24XX_INT_ADC, S3C24XX_INT_ADC
-};
-
-#define S3C24XX_BPPMODE_STN_01 0x00
-#define S3C24XX_BPPMODE_STN_02 0x01
-#define S3C24XX_BPPMODE_STN_04 0x02
-#define S3C24XX_BPPMODE_STN_08 0x03
-#define S3C24XX_BPPMODE_STN_12_P 0x04
-#define S3C24XX_BPPMODE_STN_12_U 0x05
-#define S3C24XX_BPPMODE_STN_16 0x06
-#define S3C24XX_BPPMODE_TFT_01 0x08
-#define S3C24XX_BPPMODE_TFT_02 0x09
-#define S3C24XX_BPPMODE_TFT_04 0x0A
-#define S3C24XX_BPPMODE_TFT_08 0x0B
-#define S3C24XX_BPPMODE_TFT_16 0x0C
-#define S3C24XX_BPPMODE_TFT_24 0x0D
-
-#define S3C24XX_PNRMODE_STN_04_DS 0
-#define S3C24XX_PNRMODE_STN_04_SS 1
-#define S3C24XX_PNRMODE_STN_08_SS 2
-#define S3C24XX_PNRMODE_TFT 3
-
-#define S3C24XX_GPIO_PORT_A S3C2410_GPIO_PORT_A
-#define S3C24XX_GPIO_PORT_B S3C2410_GPIO_PORT_B
-#define S3C24XX_GPIO_PORT_C S3C2410_GPIO_PORT_C
-#define S3C24XX_GPIO_PORT_D S3C2410_GPIO_PORT_D
-#define S3C24XX_GPIO_PORT_E S3C2410_GPIO_PORT_E
-#define S3C24XX_GPIO_PORT_F S3C2410_GPIO_PORT_F
-#define S3C24XX_GPIO_PORT_G S3C2410_GPIO_PORT_G
-#define S3C24XX_GPIO_PORT_H S3C2410_GPIO_PORT_H
-
-#define S3C24XX_CORE_PIN_NCON S3C2410_CORE_PIN_NCON
-#define S3C24XX_CORE_PIN_OM0 S3C2410_CORE_PIN_OM0
-#define S3C24XX_CORE_PIN_OM1 S3C2410_CORE_PIN_OM1
-
-#define S3C24XX_UART_COUNT 3
-#define S3C24XX_DMA_COUNT 4
-#define S3C24XX_SPI_COUNT 2
-
-class s3c2410_device : public device_t
+class s3c2410_device : public device_t, protected s3c24xx_peripheral_types
{
public:
s3c2410_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -443,31 +189,35 @@ public:
// static configuration
static void static_set_palette_tag(device_t &device, const char *tag);
- template<class _Object> static devcb_base &set_core_pin_r_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_pin_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_core_pin_w_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_pin_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_gpio_port_r_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_port_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_gpio_port_w_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_port_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_scl_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_sda_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_sda_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_adc_data_r_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_data_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2s_data_w_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_data_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nand_command_w_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_command_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nand_address_w_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_address_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nand_data_r_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_nand_data_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nand_data_w_callback(device_t &device, _Object object) { return downcast<s3c2410_device &>(device).m_nand_data_w_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_core_pin_r_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_pin_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_core_pin_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_pin_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gpio_port_r_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_port_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gpio_port_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_port_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_scl_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_sda_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_sda_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_adc_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_data_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2s_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_data_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nand_command_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_command_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nand_address_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_address_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nand_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_nand_data_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nand_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c2410_device &>(device).m_nand_data_w_cb.set_callback(std::forward<Object>(cb)); }
static void set_lcd_flags(device_t &device, int flags) { downcast<s3c2410_device &>(device).m_flags = flags; }
DECLARE_WRITE_LINE_MEMBER( frnb_w );
+ READ32_MEMBER( s3c24xx_lcd_r );
+
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ void s3c2410_touch_screen(int state);
+ void s3c2410_request_eint(uint32_t number);
+ void s3c2410_nand_calculate_mecc(uint8_t *data, uint32_t size, uint8_t *mecc);
+
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-private:
- // internal state
- required_device<palette_device> m_palette;
-public:
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void s3c24xx_reset();
inline int iface_core_pin_r(int pin);
@@ -500,7 +250,6 @@ public:
void s3c24xx_video_start();
void bitmap_blend( bitmap_rgb32 &bitmap_dst, bitmap_rgb32 &bitmap_src_1, bitmap_rgb32 &bitmap_src_2);
uint32_t s3c24xx_video_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- READ32_MEMBER( s3c24xx_lcd_r );
int s3c24xx_lcd_configure_tft();
int s3c24xx_lcd_configure_stn();
int s3c24xx_lcd_configure();
@@ -525,8 +274,6 @@ public:
void s3c24xx_request_eint(uint32_t number);
READ32_MEMBER( s3c24xx_irq_r );
WRITE32_MEMBER( s3c24xx_irq_w );
- void s3c24xx_pwm_reset();
- uint16_t s3c24xx_pwm_calc_observation(int ch);
READ32_MEMBER( s3c24xx_pwm_r );
void s3c24xx_pwm_start(int timer);
void s3c24xx_pwm_stop(int timer);
@@ -558,13 +305,10 @@ public:
uint16_t s3c24xx_gpio_get_mask( uint32_t con, int val);
READ32_MEMBER( s3c24xx_gpio_r );
WRITE32_MEMBER( s3c24xx_gpio_w );
- void s3c24xx_memcon_reset();
READ32_MEMBER( s3c24xx_memcon_r );
WRITE32_MEMBER( s3c24xx_memcon_w );
- void s3c24xx_usb_host_reset();
READ32_MEMBER( s3c24xx_usb_host_r );
WRITE32_MEMBER( s3c24xx_usb_host_w );
- void s3c24xx_uart_reset();
uint32_t s3c24xx_uart_r(uint32_t ch, uint32_t offset);
void s3c24xx_uart_w(uint32_t ch, uint32_t offset, uint32_t data, uint32_t mem_mask);
READ32_MEMBER( s3c24xx_uart_0_r );
@@ -577,8 +321,6 @@ public:
void s3c24xx_usb_device_reset();
READ32_MEMBER( s3c24xx_usb_device_r );
WRITE32_MEMBER( s3c24xx_usb_device_w );
- void s3c24xx_wdt_reset();
- uint16_t s3c24xx_wdt_calc_current_count();
READ32_MEMBER( s3c24xx_wdt_r );
void s3c24xx_wdt_start();
void s3c24xx_wdt_stop();
@@ -599,7 +341,6 @@ public:
READ32_MEMBER( s3c24xx_iic_r );
WRITE32_MEMBER( s3c24xx_iic_w );
TIMER_CALLBACK_MEMBER( s3c24xx_iic_timer_exp );
- void s3c24xx_iis_reset();
inline void iface_i2s_data_w(int ch, uint16_t data);
void s3c24xx_iis_start();
void s3c24xx_iis_stop();
@@ -607,9 +348,7 @@ public:
READ32_MEMBER( s3c24xx_iis_r );
WRITE32_MEMBER( s3c24xx_iis_w );
TIMER_CALLBACK_MEMBER( s3c24xx_iis_timer_exp );
- void s3c24xx_rtc_reset();
READ32_MEMBER( s3c24xx_rtc_r );
- void s3c24xx_rtc_recalc();
WRITE32_MEMBER( s3c24xx_rtc_w );
TIMER_CALLBACK_MEMBER( s3c24xx_rtc_timer_tick_count_exp );
void s3c24xx_rtc_update();
@@ -651,25 +390,17 @@ public:
void s3c24xx_device_start();
void s3c2410_uart_fifo_w( int uart, uint8_t data);
- void s3c2410_touch_screen( int state);
- void s3c2410_request_eint( uint32_t number);
- void s3c2410_nand_calculate_mecc( uint8_t *data, uint32_t size, uint8_t *mecc);
+
+private:
+ static constexpr unsigned UART_COUNT = 3;
+ static constexpr unsigned DMA_COUNT = 4;
+ static constexpr unsigned SPI_COUNT = 2;
/*******************************************************************************
TYPE DEFINITIONS
*******************************************************************************/
- struct s3c24xx_memcon_regs_t
- {
- uint32_t data[0x34/4];
- };
-
- struct s3c24xx_usbhost_regs_t
- {
- uint32_t data[0x5C/4];
- };
-
- struct s3c24xx_irq_regs_t
+ struct irq_regs_t
{
uint32_t srcpnd;
uint32_t intmod;
@@ -681,7 +412,7 @@ public:
uint32_t intsubmsk;
};
- struct s3c24xx_dma_regs_t
+ struct dma_regs_t
{
uint32_t disrc;
uint32_t disrcc;
@@ -694,7 +425,7 @@ public:
uint32_t dmasktrig;
};
- struct s3c24xx_clkpow_regs_t
+ struct clkpow_regs_t
{
uint32_t locktime;
uint32_t mpllcon;
@@ -704,7 +435,7 @@ public:
uint32_t clkdivn;
};
- struct s3c24xx_lcd_regs_t
+ struct lcd_regs_t
{
uint32_t lcdcon1;
uint32_t lcdcon2;
@@ -726,12 +457,7 @@ public:
uint32_t lpcsel;
};
- struct s3c24xx_lcdpal_regs_t
- {
- uint32_t data[0x400/4];
- };
-
- struct s3c24xx_nand_regs_t
+ struct nand_regs_t
{
uint32_t nfconf;
uint32_t nfcmd;
@@ -741,55 +467,12 @@ public:
uint32_t nfecc;
};
- struct s3c24xx_uart_regs_t
- {
- uint32_t ulcon;
- uint32_t ucon;
- uint32_t ufcon;
- uint32_t umcon;
- uint32_t utrstat;
- uint32_t uerstat;
- uint32_t ufstat;
- uint32_t umstat;
- uint32_t utxh;
- uint32_t urxh;
- uint32_t ubrdiv;
- };
-
- struct s3c24xx_pwm_regs_t
- {
- uint32_t tcfg0;
- uint32_t tcfg1;
- uint32_t tcon;
- uint32_t tcntb0;
- uint32_t tcmpb0;
- uint32_t tcnto0;
- uint32_t tcntb1;
- uint32_t tcmpb1;
- uint32_t tcnto1;
- uint32_t tcntb2;
- uint32_t tcmpb2;
- uint32_t tcnto2;
- uint32_t tcntb3;
- uint32_t tcmpb3;
- uint32_t tcnto3;
- uint32_t tcntb4;
- uint32_t tcnto4;
- };
-
- struct s3c24xx_usbdev_regs_t
+ struct usbdev_regs_t
{
uint32_t data[0x130/4];
};
- struct s3c24xx_wdt_regs_t
- {
- uint32_t wtcon;
- uint32_t wtdat;
- uint32_t wtcnt;
- };
-
- struct s3c24xx_iic_regs_t
+ struct iic_regs_t
{
uint32_t iiccon;
uint32_t iicstat;
@@ -797,16 +480,7 @@ public:
uint32_t iicds;
};
- struct s3c24xx_iis_regs_t
- {
- uint32_t iiscon;
- uint32_t iismod;
- uint32_t iispsr;
- uint32_t iisfcon;
- uint32_t iisfifo;
- };
-
- struct s3c24xx_gpio_regs_t
+ struct gpio_regs_t
{
uint32_t gpacon;
uint32_t gpadat;
@@ -858,29 +532,7 @@ public:
uint32_t gstatus4;
};
- struct s3c24xx_rtc_regs_t
- {
- uint32_t rtccon;
- uint32_t ticnt;
- uint32_t reserved[2];
- uint32_t rtcalm;
- uint32_t almsec;
- uint32_t almmin;
- uint32_t almhour;
- uint32_t almday;
- uint32_t almmon;
- uint32_t almyear;
- uint32_t rtcrst;
- uint32_t bcdsec;
- uint32_t bcdmin;
- uint32_t bcdhour;
- uint32_t bcdday;
- uint32_t bcddow;
- uint32_t bcdmon;
- uint32_t bcdyear;
- };
-
- struct s3c24xx_adc_regs_t
+ struct adc_regs_t
{
uint32_t adccon;
uint32_t adctsc;
@@ -889,51 +541,27 @@ public:
uint32_t adcdat1;
};
- struct s3c24xx_spi_regs_t
- {
- uint32_t spcon;
- uint32_t spsta;
- uint32_t sppin;
- uint32_t sppre;
- uint32_t sptdat;
- uint32_t sprdat;
- };
-
- struct s3c24xx_sdi_regs_t
- {
- uint32_t data[0x44/4];
- };
-
- struct s3c24xx_memcon_t
- {
- s3c24xx_memcon_regs_t regs;
- };
-
- struct s3c24xx_usbhost_t
- {
- s3c24xx_usbhost_regs_t regs;
- };
- struct s3c24xx_irq_t
+ struct irq_t
{
- s3c24xx_irq_regs_t regs;
+ irq_regs_t regs;
int line_irq, line_fiq;
};
- struct s3c24xx_dma_t
+ struct dma_t
{
- s3c24xx_dma_regs_t regs;
+ dma_regs_t regs;
emu_timer *timer;
};
- struct s3c24xx_clkpow_t
+ struct clkpow_t
{
- s3c24xx_clkpow_regs_t regs;
+ clkpow_regs_t regs;
};
- struct s3c24xx_lcd_t
+ struct lcd_t
{
- s3c24xx_lcd_regs_t regs;
+ lcd_regs_t regs;
emu_timer *timer;
std::unique_ptr<bitmap_rgb32> bitmap[2];
uint32_t vramaddr_cur;
@@ -950,106 +578,58 @@ public:
uint32_t dma_data, dma_bits;
};
- struct s3c24xx_lcdpal_t
- {
- s3c24xx_lcdpal_regs_t regs;
- };
-
- struct s3c24xx_nand_t
+ struct nand_t
{
- s3c24xx_nand_regs_t regs;
+ nand_regs_t regs;
uint8_t mecc[3];
int ecc_pos, data_count;
};
- struct s3c24xx_uart_t
+ struct usbdev_t
{
- s3c24xx_uart_regs_t regs;
+ usbdev_regs_t regs;
};
- struct s3c24xx_pwm_t
+ struct iic_t
{
- s3c24xx_pwm_regs_t regs;
- emu_timer *timer[5];
- uint32_t cnt[5];
- uint32_t cmp[5];
- uint32_t freq[5];
- };
-
- struct s3c24xx_usbdev_t
- {
- s3c24xx_usbdev_regs_t regs;
- };
-
- struct s3c24xx_wdt_t
- {
- s3c24xx_wdt_regs_t regs;
- emu_timer *timer;
- uint32_t freq, cnt;
- };
-
- struct s3c24xx_iic_t
- {
- s3c24xx_iic_regs_t regs;
+ iic_regs_t regs;
emu_timer *timer;
int count;
};
- struct s3c24xx_iis_t
- {
- s3c24xx_iis_regs_t regs;
- emu_timer *timer;
- uint16_t fifo[16/2];
- int fifo_index;
- };
-
- struct s3c24xx_gpio_t
+ struct gpio_t
{
- s3c24xx_gpio_regs_t regs;
+ gpio_regs_t regs;
};
- struct s3c24xx_rtc_t
+ struct adc_t
{
- s3c24xx_rtc_regs_t regs;
- emu_timer *timer_tick_count;
- emu_timer *timer_update;
+ adc_regs_t regs;
};
- struct s3c24xx_adc_t
- {
- s3c24xx_adc_regs_t regs;
- };
-
- struct s3c24xx_spi_t
- {
- s3c24xx_spi_regs_t regs;
- };
-
- struct s3c24xx_sdi_t
- {
- s3c24xx_sdi_regs_t regs;
- };
+ // internal state
+ required_device<palette_device> m_palette;
uint8_t m_steppingstone[4*1024];
- s3c24xx_memcon_t m_memcon;
- s3c24xx_usbhost_t m_usbhost;
- s3c24xx_irq_t m_irq;
- s3c24xx_dma_t m_dma[S3C24XX_DMA_COUNT];
- s3c24xx_clkpow_t m_clkpow;
- s3c24xx_lcd_t m_lcd;
- s3c24xx_lcdpal_t m_lcdpal;
- s3c24xx_nand_t m_nand;
- s3c24xx_uart_t m_uart[S3C24XX_UART_COUNT];
- s3c24xx_pwm_t m_pwm;
- s3c24xx_usbdev_t m_usbdev;
- s3c24xx_wdt_t m_wdt;
- s3c24xx_iic_t m_iic;
- s3c24xx_iis_t m_iis;
- s3c24xx_gpio_t m_gpio;
- s3c24xx_rtc_t m_rtc;
- s3c24xx_adc_t m_adc;
- s3c24xx_spi_t m_spi[S3C24XX_SPI_COUNT];
- s3c24xx_sdi_t m_sdi;
+ memcon_t m_memcon;
+ usbhost_t m_usbhost;
+ irq_t m_irq;
+ dma_t m_dma[DMA_COUNT];
+ clkpow_t m_clkpow;
+ lcd_t m_lcd;
+ lcdpal_t m_lcdpal;
+ nand_t m_nand;
+ uart_t m_uart[UART_COUNT];
+ pwm_t m_pwm;
+ usbdev_t m_usbdev;
+ wdt_t m_wdt;
+ iic_t m_iic;
+ iis_t m_iis;
+ gpio_t m_gpio;
+ rtc_t m_rtc;
+ adc_t m_adc;
+ spi_t m_spi[SPI_COUNT];
+ sdi_t m_sdi;
required_device<device_t> m_cpu;
devcb_read32 m_pin_r_cb;
devcb_write32 m_pin_w_cb;
@@ -1067,7 +647,6 @@ public:
int m_flags;
};
-extern const device_type S3C2410;
-
+DECLARE_DEVICE_TYPE(S3C2410, s3c2410_device)
-#endif
+#endif // MAME_MACHINE_S3C2410_H
diff --git a/src/devices/machine/s3c2440.cpp b/src/devices/machine/s3c2440.cpp
index 43c145bf544..bf707ea50cd 100644
--- a/src/devices/machine/s3c2440.cpp
+++ b/src/devices/machine/s3c2440.cpp
@@ -16,6 +16,211 @@
#include "screen.h"
+#define S3C24XX_SRCPND (0x00 / 4) // Interrupt Request Status
+#define S3C24XX_INTMOD (0x04 / 4) // Interrupt Mode Control
+#define S3C24XX_INTMSK (0x08 / 4) // Interrupt Mask Control
+#define S3C24XX_PRIORITY (0x0C / 4) // IRQ Priority Control
+#define S3C24XX_INTPND (0x10 / 4) // Interrupt Request Status
+#define S3C24XX_INTOFFSET (0x14 / 4) // Interrupt Request Source Offset
+#define S3C24XX_SUBSRCPND (0x18 / 4) // Sub Source Pending
+#define S3C24XX_INTSUBMSK (0x1C / 4) // Interrupt Sub Mask
+
+#define S3C24XX_DISRC (0x00 / 4) // DMA Initial Source
+#define S3C24XX_DISRCC (0x04 / 4) // DMA Initial Source Control
+#define S3C24XX_DIDST (0x08 / 4) // DMA Initial Destination
+#define S3C24XX_DIDSTC (0x0C / 4) // DMA Initial Destination Control
+#define S3C24XX_DCON (0x10 / 4) // DMA Control
+#define S3C24XX_DSTAT (0x14 / 4) // DMA Count
+#define S3C24XX_DCSRC (0x18 / 4) // DMA Current Source
+#define S3C24XX_DCDST (0x1C / 4) // DMA Current Destination
+#define S3C24XX_DMASKTRIG (0x20 / 4) // DMA Mask Trigger
+
+#define S3C24XX_LOCKTIME (0x00 / 4) // PLL Lock Time Counter
+#define S3C24XX_MPLLCON (0x04 / 4) // MPLL Control
+#define S3C24XX_UPLLCON (0x08 / 4) // UPLL Control
+#define S3C24XX_CLKCON (0x0C / 4) // Clock Generator Control
+#define S3C24XX_CLKSLOW (0x10 / 4) // Slow Clock Control
+#define S3C24XX_CLKDIVN (0x14 / 4) // Clock Divider Control
+#define S3C24XX_CAMDIVN (0x18 / 4) // Camera Clock Divider Control
+
+#define S3C24XX_LCDCON1 (0x00 / 4) // LCD Control 1
+#define S3C24XX_LCDCON2 (0x04 / 4) // LCD Control 2
+#define S3C24XX_LCDCON3 (0x08 / 4) // LCD Control 3
+#define S3C24XX_LCDCON4 (0x0C / 4) // LCD Control 4
+#define S3C24XX_LCDCON5 (0x10 / 4) // LCD Control 5
+#define S3C24XX_LCDSADDR1 (0x14 / 4) // STN/TFT: Frame Buffer Start Address 1
+#define S3C24XX_LCDSADDR2 (0x18 / 4) // STN/TFT: Frame Buffer Start Address 2
+#define S3C24XX_LCDSADDR3 (0x1C / 4) // STN/TFT: Virtual Screen Address Set
+#define S3C24XX_REDLUT (0x20 / 4) // STN: Red Lookup Table
+#define S3C24XX_GREENLUT (0x24 / 4) // STN: Green Lookup Table
+#define S3C24XX_BLUELUT (0x28 / 4) // STN: Blue Lookup Table
+#define S3C24XX_DITHMODE (0x4C / 4) // STN: Dithering Mode
+#define S3C24XX_TPAL (0x50 / 4) // TFT: Temporary Palette
+#define S3C24XX_LCDINTPND (0x54 / 4) // LCD Interrupt Pending
+#define S3C24XX_LCDSRCPND (0x58 / 4) // LCD Interrupt Source
+#define S3C24XX_LCDINTMSK (0x5C / 4) // LCD Interrupt Mask
+#define S3C24XX_TCONSEL (0x60 / 4) // TCON (LPC3600/LCC3600) Control
+
+#define S3C24XX_IICCON (0x00 / 4) // IIC Control
+#define S3C24XX_IICSTAT (0x04 / 4) // IIC Status
+#define S3C24XX_IICADD (0x08 / 4) // IIC Address
+#define S3C24XX_IICDS (0x0C / 4) // IIC Data Shift
+#define S3C24XX_IICLC (0x10 / 4) // IIC Multi-Master Line Control
+
+#define S3C24XX_GPACON (0x00 / 4) // Port A Control
+#define S3C24XX_GPADAT (0x04 / 4) // Port A Data
+#define S3C24XX_GPBCON (0x10 / 4) // Port B Control
+#define S3C24XX_GPBDAT (0x14 / 4) // Port B Data
+#define S3C24XX_GPBUP (0x18 / 4) // Pull-up Control B
+#define S3C24XX_GPCCON (0x20 / 4) // Port C Control
+#define S3C24XX_GPCDAT (0x24 / 4) // Port C Data
+#define S3C24XX_GPCUP (0x28 / 4) // Pull-up Control C
+#define S3C24XX_GPDCON (0x30 / 4) // Port D Control
+#define S3C24XX_GPDDAT (0x34 / 4) // Port D Data
+#define S3C24XX_GPDUP (0x38 / 4) // Pull-up Control D
+#define S3C24XX_GPECON (0x40 / 4) // Port E Control
+#define S3C24XX_GPEDAT (0x44 / 4) // Port E Data
+#define S3C24XX_GPEUP (0x48 / 4) // Pull-up Control E
+#define S3C24XX_GPFCON (0x50 / 4) // Port F Control
+#define S3C24XX_GPFDAT (0x54 / 4) // Port F Data
+#define S3C24XX_GPFUP (0x58 / 4) // Pull-up Control F
+#define S3C24XX_GPGCON (0x60 / 4) // Port G Control
+#define S3C24XX_GPGDAT (0x64 / 4) // Port G Data
+#define S3C24XX_GPGUP (0x68 / 4) // Pull-up Control G
+#define S3C24XX_GPHCON (0x70 / 4) // Port H Control
+#define S3C24XX_GPHDAT (0x74 / 4) // Port H Data
+#define S3C24XX_GPHUP (0x78 / 4) // Pull-up Control H
+#define S3C24XX_MISCCR (0x80 / 4) // Miscellaneous Control
+#define S3C24XX_DCLKCON (0x84 / 4) // DCLK0/1 Control
+#define S3C24XX_EXTINT0 (0x88 / 4) // External Interrupt Control Register 0
+#define S3C24XX_EXTINT1 (0x8C / 4) // External Interrupt Control Register 1
+#define S3C24XX_EXTINT2 (0x90 / 4) // External Interrupt Control Register 2
+#define S3C24XX_EINTFLT0 (0x94 / 4) // Reserved
+#define S3C24XX_EINTFLT1 (0x98 / 4) // Reserved
+#define S3C24XX_EINTFLT2 (0x9C / 4) // External Interrupt Filter Control Register 2
+#define S3C24XX_EINTFLT3 (0xA0 / 4) // External Interrupt Filter Control Register 3
+#define S3C24XX_EINTMASK (0xA4 / 4) // External Interrupt Mask
+#define S3C24XX_EINTPEND (0xA8 / 4) // External Interrupt Pending
+#define S3C24XX_GSTATUS0 (0xAC / 4) // External Pin Status
+#define S3C24XX_GSTATUS1 (0xB0 / 4) // Chip ID
+#define S3C24XX_GSTATUS2 (0xB4 / 4) // Reset Status
+#define S3C24XX_GSTATUS3 (0xB8 / 4) // Inform Register
+#define S3C24XX_GSTATUS4 (0xBC / 4) // Inform Register
+#define S3C24XX_MSLCON (0xCC / 4) // Memory Sleep Control Register
+#define S3C24XX_GPJCON (0xD0 / 4) // Port J Control
+#define S3C24XX_GPJDAT (0xD4 / 4) // Port J Data
+#define S3C24XX_GPJUP (0xD8 / 4) // Pull-up Control J
+
+#define S3C24XX_GPADAT_MASK 0x01FFFFFF
+#define S3C24XX_GPBDAT_MASK 0x000007FF
+#define S3C24XX_GPCDAT_MASK 0x0000FFFF
+#define S3C24XX_GPDDAT_MASK 0x0000FFFF
+#define S3C24XX_GPEDAT_MASK 0x0000FFFF
+#define S3C24XX_GPFDAT_MASK 0x000000FF
+#define S3C24XX_GPGDAT_MASK 0x0000FFFF
+#define S3C24XX_GPHDAT_MASK 0x000007FF
+#define S3C24XX_GPJDAT_MASK 0x0000FFFF
+
+#define S3C24XX_ADCCON (0x00 / 4) // ADC Control
+#define S3C24XX_ADCTSC (0x04 / 4) // ADC Touch Screen Control
+#define S3C24XX_ADCDLY (0x08 / 4) // ADC Start or Interval Delay
+#define S3C24XX_ADCDAT0 (0x0C / 4) // ADC Conversion Data
+#define S3C24XX_ADCDAT1 (0x10 / 4) // ADC Conversion Data
+#define S3C24XX_ADCUPDN (0x14 / 4) // Stylus up or down interrupt status
+
+#define S3C24XX_INT_ADC 31
+#define S3C24XX_INT_RTC 30
+#define S3C24XX_INT_SPI1 29
+#define S3C24XX_INT_UART0 28
+#define S3C24XX_INT_IIC 27
+#define S3C24XX_INT_USBH 26
+#define S3C24XX_INT_USBD 25
+#define S3C24XX_INT_NFCON 24
+#define S3C24XX_INT_UART1 23
+#define S3C24XX_INT_SPI0 22
+#define S3C24XX_INT_SDI 21
+#define S3C24XX_INT_DMA3 20
+#define S3C24XX_INT_DMA2 19
+#define S3C24XX_INT_DMA1 18
+#define S3C24XX_INT_DMA0 17
+#define S3C24XX_INT_LCD 16
+#define S3C24XX_INT_UART2 15
+#define S3C24XX_INT_TIMER4 14
+#define S3C24XX_INT_TIMER3 13
+#define S3C24XX_INT_TIMER2 12
+#define S3C24XX_INT_TIMER1 11
+#define S3C24XX_INT_TIMER0 10
+#define S3C24XX_INT_WDT_AC97 9
+#define S3C24XX_INT_TICK 8
+#define S3C24XX_INT_BATT_FLT 7
+#define S3C24XX_INT_CAM 6
+#define S3C24XX_INT_EINT8_23 5
+#define S3C24XX_INT_EINT4_7 4
+#define S3C24XX_INT_EINT3 3
+#define S3C24XX_INT_EINT2 2
+#define S3C24XX_INT_EINT1 1
+#define S3C24XX_INT_EINT0 0
+
+#define S3C24XX_SUBINT_AC97 14
+#define S3C24XX_SUBINT_WDT 13
+#define S3C24XX_SUBINT_CAM_P 12
+#define S3C24XX_SUBINT_CAM_C 11
+#define S3C24XX_SUBINT_ADC 10
+#define S3C24XX_SUBINT_TC 9
+#define S3C24XX_SUBINT_ERR2 8
+#define S3C24XX_SUBINT_TXD2 7
+#define S3C24XX_SUBINT_RXD2 6
+#define S3C24XX_SUBINT_ERR1 5
+#define S3C24XX_SUBINT_TXD1 4
+#define S3C24XX_SUBINT_RXD1 3
+#define S3C24XX_SUBINT_ERR0 2
+#define S3C24XX_SUBINT_TXD0 1
+#define S3C24XX_SUBINT_RXD0 0
+
+static const uint32_t MAP_SUBINT_TO_INT[15] =
+{
+ S3C24XX_INT_UART0, S3C24XX_INT_UART0, S3C24XX_INT_UART0,
+ S3C24XX_INT_UART1, S3C24XX_INT_UART1, S3C24XX_INT_UART1,
+ S3C24XX_INT_UART2, S3C24XX_INT_UART2, S3C24XX_INT_UART2,
+ S3C24XX_INT_ADC, S3C24XX_INT_ADC,
+ S3C24XX_INT_CAM, S3C24XX_INT_CAM,
+ S3C24XX_INT_WDT_AC97, S3C24XX_INT_WDT_AC97
+};
+
+#define S3C24XX_BPPMODE_STN_01 0x00
+#define S3C24XX_BPPMODE_STN_02 0x01
+#define S3C24XX_BPPMODE_STN_04 0x02
+#define S3C24XX_BPPMODE_STN_08 0x03
+#define S3C24XX_BPPMODE_STN_12_P 0x04
+#define S3C24XX_BPPMODE_STN_12_U 0x05
+#define S3C24XX_BPPMODE_STN_16 0x06
+#define S3C24XX_BPPMODE_TFT_01 0x08
+#define S3C24XX_BPPMODE_TFT_02 0x09
+#define S3C24XX_BPPMODE_TFT_04 0x0A
+#define S3C24XX_BPPMODE_TFT_08 0x0B
+#define S3C24XX_BPPMODE_TFT_16 0x0C
+#define S3C24XX_BPPMODE_TFT_24 0x0D
+
+#define S3C24XX_PNRMODE_STN_04_DS 0
+#define S3C24XX_PNRMODE_STN_04_SS 1
+#define S3C24XX_PNRMODE_STN_08_SS 2
+#define S3C24XX_PNRMODE_TFT 3
+
+#define S3C24XX_GPIO_PORT_A S3C2440_GPIO_PORT_A
+#define S3C24XX_GPIO_PORT_B S3C2440_GPIO_PORT_B
+#define S3C24XX_GPIO_PORT_C S3C2440_GPIO_PORT_C
+#define S3C24XX_GPIO_PORT_D S3C2440_GPIO_PORT_D
+#define S3C24XX_GPIO_PORT_E S3C2440_GPIO_PORT_E
+#define S3C24XX_GPIO_PORT_F S3C2440_GPIO_PORT_F
+#define S3C24XX_GPIO_PORT_G S3C2440_GPIO_PORT_G
+#define S3C24XX_GPIO_PORT_H S3C2440_GPIO_PORT_H
+#define S3C24XX_GPIO_PORT_J S3C2440_GPIO_PORT_J
+
+#define S3C24XX_CORE_PIN_NCON S3C2440_CORE_PIN_NCON
+#define S3C24XX_CORE_PIN_OM0 S3C2440_CORE_PIN_OM0
+#define S3C24XX_CORE_PIN_OM1 S3C2440_CORE_PIN_OM1
+
+
#define VERBOSE_LEVEL ( 0 )
static inline void ATTR_PRINTF(3,4) verboselog( device_t &device, int n_level, const char *s_fmt, ...)
@@ -41,26 +246,26 @@ uint32_t s3c2440_device::screen_update(screen_device &screen, bitmap_rgb32 &bitm
return s3c24xx_video_update( screen, bitmap, cliprect);
}
-const device_type S3C2440 = device_creator<s3c2440_device>;
+DEFINE_DEVICE_TYPE(S3C2440, s3c2440_device, "s3c2440", "Samsung S3C2440 SoC")
s3c2440_device::s3c2440_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, S3C2440, "Samsung S3C2440", tag, owner, clock, "s3c2440", __FILE__),
- m_palette(*this, finder_base::DUMMY_TAG),
- m_cpu(*this, ":maincpu"),
- m_pin_r_cb(*this),
- m_pin_w_cb(*this),
- m_port_r_cb(*this),
- m_port_w_cb(*this),
- m_scl_w_cb(*this),
- m_sda_r_cb(*this),
- m_sda_w_cb(*this),
- m_data_r_cb(*this),
- m_data_w_cb(*this),
- m_command_w_cb(*this),
- m_address_w_cb(*this),
- m_nand_data_r_cb(*this),
- m_nand_data_w_cb(*this),
- m_flags(0)
+ : device_t(mconfig, S3C2440, tag, owner, clock)
+ , m_palette(*this, finder_base::DUMMY_TAG)
+ , m_cpu(*this, ":maincpu")
+ , m_pin_r_cb(*this)
+ , m_pin_w_cb(*this)
+ , m_port_r_cb(*this)
+ , m_port_w_cb(*this)
+ , m_scl_w_cb(*this)
+ , m_sda_r_cb(*this)
+ , m_sda_w_cb(*this)
+ , m_data_r_cb(*this)
+ , m_data_w_cb(*this)
+ , m_command_w_cb(*this)
+ , m_address_w_cb(*this)
+ , m_nand_data_r_cb(*this)
+ , m_nand_data_w_cb(*this)
+ , m_flags(0)
{
memset(m_steppingstone, 0, sizeof(m_steppingstone));
memset(&m_memcon, 0, sizeof(m_memcon));
diff --git a/src/devices/machine/s3c2440.h b/src/devices/machine/s3c2440.h
index 584c5f182f2..a90f4e96bed 100644
--- a/src/devices/machine/s3c2440.h
+++ b/src/devices/machine/s3c2440.h
@@ -6,8 +6,12 @@
*******************************************************************************/
-#ifndef __S3C2440_H__
-#define __S3C2440_H__
+#ifndef MAME_MACHINE_S3C2440_H
+#define MAME_MACHINE_S3C2440_H
+
+#pragma once
+
+#include "s3c24xx.h"
/*******************************************************************************
MACROS / CONSTANTS
@@ -100,15 +104,6 @@ enum
#define S3C24XX_BASE_INT 0x4A000000
-#define S3C24XX_SRCPND (0x00 / 4) // Interrupt Request Status
-#define S3C24XX_INTMOD (0x04 / 4) // Interrupt Mode Control
-#define S3C24XX_INTMSK (0x08 / 4) // Interrupt Mask Control
-#define S3C24XX_PRIORITY (0x0C / 4) // IRQ Priority Control
-#define S3C24XX_INTPND (0x10 / 4) // Interrupt Request Status
-#define S3C24XX_INTOFFSET (0x14 / 4) // Interrupt Request Source Offset
-#define S3C24XX_SUBSRCPND (0x18 / 4) // Sub Source Pending
-#define S3C24XX_INTSUBMSK (0x1C / 4) // Interrupt Sub Mask
-
/* DMA */
#define S3C24XX_BASE_DMA_0 0x4B000000
@@ -116,51 +111,15 @@ enum
#define S3C24XX_BASE_DMA_2 0x4B000080
#define S3C24XX_BASE_DMA_3 0x4B0000C0
-#define S3C24XX_DISRC (0x00 / 4) // DMA Initial Source
-#define S3C24XX_DISRCC (0x04 / 4) // DMA Initial Source Control
-#define S3C24XX_DIDST (0x08 / 4) // DMA Initial Destination
-#define S3C24XX_DIDSTC (0x0C / 4) // DMA Initial Destination Control
-#define S3C24XX_DCON (0x10 / 4) // DMA Control
-#define S3C24XX_DSTAT (0x14 / 4) // DMA Count
-#define S3C24XX_DCSRC (0x18 / 4) // DMA Current Source
-#define S3C24XX_DCDST (0x1C / 4) // DMA Current Destination
-#define S3C24XX_DMASKTRIG (0x20 / 4) // DMA Mask Trigger
-
/* Clock & Power Management */
#define S3C24XX_BASE_CLKPOW 0x4C000000
-#define S3C24XX_LOCKTIME (0x00 / 4) // PLL Lock Time Counter
-#define S3C24XX_MPLLCON (0x04 / 4) // MPLL Control
-#define S3C24XX_UPLLCON (0x08 / 4) // UPLL Control
-#define S3C24XX_CLKCON (0x0C / 4) // Clock Generator Control
-#define S3C24XX_CLKSLOW (0x10 / 4) // Slow Clock Control
-#define S3C24XX_CLKDIVN (0x14 / 4) // Clock Divider Control
-#define S3C24XX_CAMDIVN (0x18 / 4) // Camera Clock Divider Control
-
/* LCD Controller */
#define S3C24XX_BASE_LCD 0x4D000000
#define S3C24XX_BASE_LCDPAL 0x4D000400
-#define S3C24XX_LCDCON1 (0x00 / 4) // LCD Control 1
-#define S3C24XX_LCDCON2 (0x04 / 4) // LCD Control 2
-#define S3C24XX_LCDCON3 (0x08 / 4) // LCD Control 3
-#define S3C24XX_LCDCON4 (0x0C / 4) // LCD Control 4
-#define S3C24XX_LCDCON5 (0x10 / 4) // LCD Control 5
-#define S3C24XX_LCDSADDR1 (0x14 / 4) // STN/TFT: Frame Buffer Start Address 1
-#define S3C24XX_LCDSADDR2 (0x18 / 4) // STN/TFT: Frame Buffer Start Address 2
-#define S3C24XX_LCDSADDR3 (0x1C / 4) // STN/TFT: Virtual Screen Address Set
-#define S3C24XX_REDLUT (0x20 / 4) // STN: Red Lookup Table
-#define S3C24XX_GREENLUT (0x24 / 4) // STN: Green Lookup Table
-#define S3C24XX_BLUELUT (0x28 / 4) // STN: Blue Lookup Table
-#define S3C24XX_DITHMODE (0x4C / 4) // STN: Dithering Mode
-#define S3C24XX_TPAL (0x50 / 4) // TFT: Temporary Palette
-#define S3C24XX_LCDINTPND (0x54 / 4) // LCD Interrupt Pending
-#define S3C24XX_LCDSRCPND (0x58 / 4) // LCD Interrupt Source
-#define S3C24XX_LCDINTMSK (0x5C / 4) // LCD Interrupt Mask
-#define S3C24XX_TCONSEL (0x60 / 4) // TCON (LPC3600/LCC3600) Control
-
/* NAND Flash */
#define S3C24XX_BASE_NAND 0x4E000000
@@ -192,40 +151,10 @@ enum
#define S3C24XX_BASE_UART_1 0x50004000
#define S3C24XX_BASE_UART_2 0x50008000
-#define S3C24XX_ULCON (0x00 / 4) // UART Line Control
-#define S3C24XX_UCON (0x04 / 4) // UART Control
-#define S3C24XX_UFCON (0x08 / 4) // UART FIFO Control
-#define S3C24XX_UMCON (0x0C / 4) // UART Modem Control
-#define S3C24XX_UTRSTAT (0x10 / 4) // UART Tx/Rx Status
-#define S3C24XX_UERSTAT (0x14 / 4) // UART Rx Error Status
-#define S3C24XX_UFSTAT (0x18 / 4) // UART FIFO Status
-#define S3C24XX_UMSTAT (0x1C / 4) // UART Modem Status
-#define S3C24XX_UTXH (0x20 / 4) // UART Transmission Hold
-#define S3C24XX_URXH (0x24 / 4) // UART Receive Buffer
-#define S3C24XX_UBRDIV (0x28 / 4) // UART Baud Rate Divisor
-
/* PWM Timer */
#define S3C24XX_BASE_PWM 0x51000000
-#define S3C24XX_TCFG0 (0x00 / 4) // Timer Configuration
-#define S3C24XX_TCFG1 (0x04 / 4) // Timer Configuration
-#define S3C24XX_TCON (0x08 / 4) // Timer Control
-#define S3C24XX_TCNTB0 (0x0C / 4) // Timer Count Buffer 0
-#define S3C24XX_TCMPB0 (0x10 / 4) // Timer Compare Buffer 0
-#define S3C24XX_TCNTO0 (0x14 / 4) // Timer Count Observation 0
-#define S3C24XX_TCNTB1 (0x18 / 4) // Timer Count Buffer 1
-#define S3C24XX_TCMPB1 (0x1C / 4) // Timer Compare Buffer 1
-#define S3C24XX_TCNTO1 (0x20 / 4) // Timer Count Observation 1
-#define S3C24XX_TCNTB2 (0x24 / 4) // Timer Count Buffer 2
-#define S3C24XX_TCMPB2 (0x28 / 4) // Timer Compare Buffer 2
-#define S3C24XX_TCNTO2 (0x2C / 4) // Timer Count Observation 2
-#define S3C24XX_TCNTB3 (0x30 / 4) // Timer Count Buffer 3
-#define S3C24XX_TCMPB3 (0x34 / 4) // Timer Compare Buffer 3
-#define S3C24XX_TCNTO3 (0x38 / 4) // Timer Count Observation 3
-#define S3C24XX_TCNTB4 (0x3C / 4) // Timer Count Buffer 4
-#define S3C24XX_TCNTO4 (0x40 / 4) // Timer Count Observation 4
-
/* USB Device */
#define S3C24XX_BASE_USBDEV 0x52000140
@@ -234,132 +163,31 @@ enum
#define S3C24XX_BASE_WDT 0x53000000
-#define S3C24XX_WTCON (0x00 / 4) // Watchdog Timer Mode
-#define S3C24XX_WTDAT (0x04 / 4) // Watchdog Timer Data
-#define S3C24XX_WTCNT (0x08 / 4) // Watchdog Timer Count
-
/* IIC */
#define S3C24XX_BASE_IIC 0x54000000
-#define S3C24XX_IICCON (0x00 / 4) // IIC Control
-#define S3C24XX_IICSTAT (0x04 / 4) // IIC Status
-#define S3C24XX_IICADD (0x08 / 4) // IIC Address
-#define S3C24XX_IICDS (0x0C / 4) // IIC Data Shift
-#define S3C24XX_IICLC (0x10 / 4) // IIC Multi-Master Line Control
-
/* IIS */
#define S3C24XX_BASE_IIS 0x55000000
-#define S3C24XX_IISCON (0x00 / 4) // IIS Control
-#define S3C24XX_IISMOD (0x04 / 4) // IIS Mode
-#define S3C24XX_IISPSR (0x08 / 4) // IIS Prescaler
-#define S3C24XX_IISFCON (0x0C / 4) // IIS FIFO Control
-#define S3C24XX_IISFIFO (0x10 / 4) // IIS FIFO Entry
-
/* I/O Port */
#define S3C24XX_BASE_GPIO 0x56000000
-#define S3C24XX_GPACON (0x00 / 4) // Port A Control
-#define S3C24XX_GPADAT (0x04 / 4) // Port A Data
-#define S3C24XX_GPBCON (0x10 / 4) // Port B Control
-#define S3C24XX_GPBDAT (0x14 / 4) // Port B Data
-#define S3C24XX_GPBUP (0x18 / 4) // Pull-up Control B
-#define S3C24XX_GPCCON (0x20 / 4) // Port C Control
-#define S3C24XX_GPCDAT (0x24 / 4) // Port C Data
-#define S3C24XX_GPCUP (0x28 / 4) // Pull-up Control C
-#define S3C24XX_GPDCON (0x30 / 4) // Port D Control
-#define S3C24XX_GPDDAT (0x34 / 4) // Port D Data
-#define S3C24XX_GPDUP (0x38 / 4) // Pull-up Control D
-#define S3C24XX_GPECON (0x40 / 4) // Port E Control
-#define S3C24XX_GPEDAT (0x44 / 4) // Port E Data
-#define S3C24XX_GPEUP (0x48 / 4) // Pull-up Control E
-#define S3C24XX_GPFCON (0x50 / 4) // Port F Control
-#define S3C24XX_GPFDAT (0x54 / 4) // Port F Data
-#define S3C24XX_GPFUP (0x58 / 4) // Pull-up Control F
-#define S3C24XX_GPGCON (0x60 / 4) // Port G Control
-#define S3C24XX_GPGDAT (0x64 / 4) // Port G Data
-#define S3C24XX_GPGUP (0x68 / 4) // Pull-up Control G
-#define S3C24XX_GPHCON (0x70 / 4) // Port H Control
-#define S3C24XX_GPHDAT (0x74 / 4) // Port H Data
-#define S3C24XX_GPHUP (0x78 / 4) // Pull-up Control H
-#define S3C24XX_MISCCR (0x80 / 4) // Miscellaneous Control
-#define S3C24XX_DCLKCON (0x84 / 4) // DCLK0/1 Control
-#define S3C24XX_EXTINT0 (0x88 / 4) // External Interrupt Control Register 0
-#define S3C24XX_EXTINT1 (0x8C / 4) // External Interrupt Control Register 1
-#define S3C24XX_EXTINT2 (0x90 / 4) // External Interrupt Control Register 2
-#define S3C24XX_EINTFLT0 (0x94 / 4) // Reserved
-#define S3C24XX_EINTFLT1 (0x98 / 4) // Reserved
-#define S3C24XX_EINTFLT2 (0x9C / 4) // External Interrupt Filter Control Register 2
-#define S3C24XX_EINTFLT3 (0xA0 / 4) // External Interrupt Filter Control Register 3
-#define S3C24XX_EINTMASK (0xA4 / 4) // External Interrupt Mask
-#define S3C24XX_EINTPEND (0xA8 / 4) // External Interrupt Pending
-#define S3C24XX_GSTATUS0 (0xAC / 4) // External Pin Status
-#define S3C24XX_GSTATUS1 (0xB0 / 4) // Chip ID
-#define S3C24XX_GSTATUS2 (0xB4 / 4) // Reset Status
-#define S3C24XX_GSTATUS3 (0xB8 / 4) // Inform Register
-#define S3C24XX_GSTATUS4 (0xBC / 4) // Inform Register
-#define S3C24XX_MSLCON (0xCC / 4) // Memory Sleep Control Register
-#define S3C24XX_GPJCON (0xD0 / 4) // Port J Control
-#define S3C24XX_GPJDAT (0xD4 / 4) // Port J Data
-#define S3C24XX_GPJUP (0xD8 / 4) // Pull-up Control J
-
-#define S3C24XX_GPADAT_MASK 0x01FFFFFF
-#define S3C24XX_GPBDAT_MASK 0x000007FF
-#define S3C24XX_GPCDAT_MASK 0x0000FFFF
-#define S3C24XX_GPDDAT_MASK 0x0000FFFF
-#define S3C24XX_GPEDAT_MASK 0x0000FFFF
-#define S3C24XX_GPFDAT_MASK 0x000000FF
-#define S3C24XX_GPGDAT_MASK 0x0000FFFF
-#define S3C24XX_GPHDAT_MASK 0x000007FF
-#define S3C24XX_GPJDAT_MASK 0x0000FFFF
-
/* RTC */
#define S3C24XX_BASE_RTC 0x57000040
-#define S3C24XX_RTCCON (0x00 / 4) // RTC Control
-#define S3C24XX_TICNT (0x04 / 4) // Tick Time count
-#define S3C24XX_RTCALM (0x10 / 4) // RTC Alarm Control
-#define S3C24XX_ALMSEC (0x14 / 4) // Alarm Second
-#define S3C24XX_ALMMIN (0x18 / 4) // Alarm Minute
-#define S3C24XX_ALMHOUR (0x1C / 4) // Alarm Hour
-#define S3C24XX_ALMDAY (0x20 / 4) // Alarm Day
-#define S3C24XX_ALMMON (0x24 / 4) // Alarm Month
-#define S3C24XX_ALMYEAR (0x28 / 4) // Alarm Year
-#define S3C24XX_BCDSEC (0x30 / 4) // BCD Second
-#define S3C24XX_BCDMIN (0x34 / 4) // BCD Minute
-#define S3C24XX_BCDHOUR (0x38 / 4) // BCD Hour
-#define S3C24XX_BCDDAY (0x3C / 4) // BCD Day
-#define S3C24XX_BCDDOW (0x40 / 4) // BCD Day of Week
-#define S3C24XX_BCDMON (0x44 / 4) // BCD Month
-#define S3C24XX_BCDYEAR (0x48 / 4) // BCD Year
-
/* A/D Converter */
#define S3C24XX_BASE_ADC 0x58000000
-#define S3C24XX_ADCCON (0x00 / 4) // ADC Control
-#define S3C24XX_ADCTSC (0x04 / 4) // ADC Touch Screen Control
-#define S3C24XX_ADCDLY (0x08 / 4) // ADC Start or Interval Delay
-#define S3C24XX_ADCDAT0 (0x0C / 4) // ADC Conversion Data
-#define S3C24XX_ADCDAT1 (0x10 / 4) // ADC Conversion Data
-#define S3C24XX_ADCUPDN (0x14 / 4) // Stylus up or down interrupt status
-
/* SPI */
#define S3C24XX_BASE_SPI_0 0x59000000
#define S3C24XX_BASE_SPI_1 0x59000020
-#define S3C24XX_SPCON (0x00 / 4) // SPI Control
-#define S3C24XX_SPSTA (0x04 / 4) // SPI Status
-#define S3C24XX_SPPIN (0x08 / 4) // SPI Pin Control
-#define S3C24XX_SPPRE (0x0C / 4) // SPI Baud Rate Prescaler
-#define S3C24XX_SPTDAT (0x10 / 4) // SPI Tx Data
-#define S3C24XX_SPRDAT (0x14 / 4) // SPI Rx Data
-
/* SD Interface */
#define S3C24XX_BASE_SDI 0x5A000000
@@ -370,103 +198,7 @@ enum
/* ... */
-#define S3C24XX_INT_ADC 31
-#define S3C24XX_INT_RTC 30
-#define S3C24XX_INT_SPI1 29
-#define S3C24XX_INT_UART0 28
-#define S3C24XX_INT_IIC 27
-#define S3C24XX_INT_USBH 26
-#define S3C24XX_INT_USBD 25
-#define S3C24XX_INT_NFCON 24
-#define S3C24XX_INT_UART1 23
-#define S3C24XX_INT_SPI0 22
-#define S3C24XX_INT_SDI 21
-#define S3C24XX_INT_DMA3 20
-#define S3C24XX_INT_DMA2 19
-#define S3C24XX_INT_DMA1 18
-#define S3C24XX_INT_DMA0 17
-#define S3C24XX_INT_LCD 16
-#define S3C24XX_INT_UART2 15
-#define S3C24XX_INT_TIMER4 14
-#define S3C24XX_INT_TIMER3 13
-#define S3C24XX_INT_TIMER2 12
-#define S3C24XX_INT_TIMER1 11
-#define S3C24XX_INT_TIMER0 10
-#define S3C24XX_INT_WDT_AC97 9
-#define S3C24XX_INT_TICK 8
-#define S3C24XX_INT_BATT_FLT 7
-#define S3C24XX_INT_CAM 6
-#define S3C24XX_INT_EINT8_23 5
-#define S3C24XX_INT_EINT4_7 4
-#define S3C24XX_INT_EINT3 3
-#define S3C24XX_INT_EINT2 2
-#define S3C24XX_INT_EINT1 1
-#define S3C24XX_INT_EINT0 0
-
-#define S3C24XX_SUBINT_AC97 14
-#define S3C24XX_SUBINT_WDT 13
-#define S3C24XX_SUBINT_CAM_P 12
-#define S3C24XX_SUBINT_CAM_C 11
-#define S3C24XX_SUBINT_ADC 10
-#define S3C24XX_SUBINT_TC 9
-#define S3C24XX_SUBINT_ERR2 8
-#define S3C24XX_SUBINT_TXD2 7
-#define S3C24XX_SUBINT_RXD2 6
-#define S3C24XX_SUBINT_ERR1 5
-#define S3C24XX_SUBINT_TXD1 4
-#define S3C24XX_SUBINT_RXD1 3
-#define S3C24XX_SUBINT_ERR0 2
-#define S3C24XX_SUBINT_TXD0 1
-#define S3C24XX_SUBINT_RXD0 0
-
-static const uint32_t MAP_SUBINT_TO_INT[15] =
-{
- S3C24XX_INT_UART0, S3C24XX_INT_UART0, S3C24XX_INT_UART0,
- S3C24XX_INT_UART1, S3C24XX_INT_UART1, S3C24XX_INT_UART1,
- S3C24XX_INT_UART2, S3C24XX_INT_UART2, S3C24XX_INT_UART2,
- S3C24XX_INT_ADC, S3C24XX_INT_ADC,
- S3C24XX_INT_CAM, S3C24XX_INT_CAM,
- S3C24XX_INT_WDT_AC97, S3C24XX_INT_WDT_AC97
-};
-
-#define S3C24XX_BPPMODE_STN_01 0x00
-#define S3C24XX_BPPMODE_STN_02 0x01
-#define S3C24XX_BPPMODE_STN_04 0x02
-#define S3C24XX_BPPMODE_STN_08 0x03
-#define S3C24XX_BPPMODE_STN_12_P 0x04
-#define S3C24XX_BPPMODE_STN_12_U 0x05
-#define S3C24XX_BPPMODE_STN_16 0x06
-#define S3C24XX_BPPMODE_TFT_01 0x08
-#define S3C24XX_BPPMODE_TFT_02 0x09
-#define S3C24XX_BPPMODE_TFT_04 0x0A
-#define S3C24XX_BPPMODE_TFT_08 0x0B
-#define S3C24XX_BPPMODE_TFT_16 0x0C
-#define S3C24XX_BPPMODE_TFT_24 0x0D
-
-#define S3C24XX_PNRMODE_STN_04_DS 0
-#define S3C24XX_PNRMODE_STN_04_SS 1
-#define S3C24XX_PNRMODE_STN_08_SS 2
-#define S3C24XX_PNRMODE_TFT 3
-
-#define S3C24XX_GPIO_PORT_A S3C2440_GPIO_PORT_A
-#define S3C24XX_GPIO_PORT_B S3C2440_GPIO_PORT_B
-#define S3C24XX_GPIO_PORT_C S3C2440_GPIO_PORT_C
-#define S3C24XX_GPIO_PORT_D S3C2440_GPIO_PORT_D
-#define S3C24XX_GPIO_PORT_E S3C2440_GPIO_PORT_E
-#define S3C24XX_GPIO_PORT_F S3C2440_GPIO_PORT_F
-#define S3C24XX_GPIO_PORT_G S3C2440_GPIO_PORT_G
-#define S3C24XX_GPIO_PORT_H S3C2440_GPIO_PORT_H
-#define S3C24XX_GPIO_PORT_J S3C2440_GPIO_PORT_J
-
-#define S3C24XX_CORE_PIN_NCON S3C2440_CORE_PIN_NCON
-#define S3C24XX_CORE_PIN_OM0 S3C2440_CORE_PIN_OM0
-#define S3C24XX_CORE_PIN_OM1 S3C2440_CORE_PIN_OM1
-
-#define S3C24XX_UART_COUNT 3
-#define S3C24XX_DMA_COUNT 4
-#define S3C24XX_SPI_COUNT 2
-
-class s3c2440_device : public device_t
+class s3c2440_device : public device_t, protected s3c24xx_peripheral_types
{
public:
s3c2440_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -474,32 +206,32 @@ public:
// static configuration
static void static_set_palette_tag(device_t &device, const char *tag);
- template<class _Object> static devcb_base &set_core_pin_r_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_pin_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_core_pin_w_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_pin_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_gpio_port_r_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_port_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_gpio_port_w_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_port_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_scl_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_sda_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_sda_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_adc_data_r_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_data_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2s_data_w_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_data_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nand_command_w_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_command_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nand_address_w_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_address_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nand_data_r_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_nand_data_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_nand_data_w_callback(device_t &device, _Object object) { return downcast<s3c2440_device &>(device).m_nand_data_w_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_core_pin_r_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_pin_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_core_pin_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_pin_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gpio_port_r_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_port_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gpio_port_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_port_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_scl_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_sda_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_sda_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_adc_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_data_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2s_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_data_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nand_command_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_command_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nand_address_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_address_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nand_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_nand_data_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_nand_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c2440_device &>(device).m_nand_data_w_cb.set_callback(std::forward<Object>(cb)); }
static void set_lcd_flags(device_t &device, int flags) { downcast<s3c2440_device &>(device).m_flags = flags; }
DECLARE_WRITE_LINE_MEMBER( frnb_w );
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ void s3c2440_touch_screen( int state);
+ void s3c2440_request_eint( uint32_t number);
+
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-private:
- // internal state
- required_device<palette_device> m_palette;
-public:
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void s3c24xx_reset();
inline int iface_core_pin_r(int pin);
@@ -557,8 +289,6 @@ public:
void s3c24xx_request_eint(uint32_t number);
READ32_MEMBER( s3c24xx_irq_r );
WRITE32_MEMBER( s3c24xx_irq_w );
- void s3c24xx_pwm_reset();
- uint16_t s3c24xx_pwm_calc_observation(int ch);
READ32_MEMBER( s3c24xx_pwm_r );
void s3c24xx_pwm_start(int timer);
void s3c24xx_pwm_stop(int timer);
@@ -590,13 +320,10 @@ public:
uint16_t s3c24xx_gpio_get_mask( uint32_t con, int val);
READ32_MEMBER( s3c24xx_gpio_r );
WRITE32_MEMBER( s3c24xx_gpio_w );
- void s3c24xx_memcon_reset();
READ32_MEMBER( s3c24xx_memcon_r );
WRITE32_MEMBER( s3c24xx_memcon_w );
- void s3c24xx_usb_host_reset();
READ32_MEMBER( s3c24xx_usb_host_r );
WRITE32_MEMBER( s3c24xx_usb_host_w );
- void s3c24xx_uart_reset();
uint32_t s3c24xx_uart_r(uint32_t ch, uint32_t offset);
void s3c24xx_uart_w(uint32_t ch, uint32_t offset, uint32_t data, uint32_t mem_mask);
READ32_MEMBER( s3c24xx_uart_0_r );
@@ -609,8 +336,6 @@ public:
void s3c24xx_usb_device_reset();
READ32_MEMBER( s3c24xx_usb_device_r );
WRITE32_MEMBER( s3c24xx_usb_device_w );
- void s3c24xx_wdt_reset();
- uint16_t s3c24xx_wdt_calc_current_count();
READ32_MEMBER( s3c24xx_wdt_r );
void s3c24xx_wdt_start();
void s3c24xx_wdt_stop();
@@ -631,7 +356,6 @@ public:
READ32_MEMBER( s3c24xx_iic_r );
WRITE32_MEMBER( s3c24xx_iic_w );
TIMER_CALLBACK_MEMBER( s3c24xx_iic_timer_exp );
- void s3c24xx_iis_reset();
inline void iface_i2s_data_w(int ch, uint16_t data);
void s3c24xx_iis_start();
void s3c24xx_iis_stop();
@@ -639,9 +363,7 @@ public:
READ32_MEMBER( s3c24xx_iis_r );
WRITE32_MEMBER( s3c24xx_iis_w );
TIMER_CALLBACK_MEMBER( s3c24xx_iis_timer_exp );
- void s3c24xx_rtc_reset();
READ32_MEMBER( s3c24xx_rtc_r );
- void s3c24xx_rtc_recalc();
WRITE32_MEMBER( s3c24xx_rtc_w );
TIMER_CALLBACK_MEMBER( s3c24xx_rtc_timer_tick_count_exp );
void s3c24xx_rtc_update();
@@ -679,38 +401,27 @@ public:
void s3c24xx_nand_init_ecc();
WRITE32_MEMBER( s3c24xx_nand_w );
ATTR_UNUSED WRITE_LINE_MEMBER( s3c24xx_pin_frnb_w );
- void s3c24xx_cam_reset();
READ32_MEMBER( s3c24xx_cam_r );
WRITE32_MEMBER( s3c24xx_cam_w );
- void s3c24xx_ac97_reset();
READ32_MEMBER( s3c24xx_ac97_r );
WRITE32_MEMBER( s3c24xx_ac97_w );
void s3c24xx_nand_auto_boot();
void s3c24xx_device_reset();
void s3c24xx_device_start();
-
void s3c2440_uart_fifo_w( int uart, uint8_t data);
- void s3c2440_touch_screen( int state);
void s3c2440_request_irq( uint32_t int_type);
- void s3c2440_request_eint( uint32_t number);
+private:
+ static constexpr unsigned UART_COUNT = 3;
+ static constexpr unsigned DMA_COUNT = 4;
+ static constexpr unsigned SPI_COUNT = 2;
/*******************************************************************************
TYPE DEFINITIONS
*******************************************************************************/
- struct s3c24xx_memcon_regs_t
- {
- uint32_t data[0x34/4];
- };
-
- struct s3c24xx_usbhost_regs_t
- {
- uint32_t data[0x5C/4];
- };
-
- struct s3c24xx_irq_regs_t
+ struct irq_regs_t
{
uint32_t srcpnd;
uint32_t intmod;
@@ -722,7 +433,7 @@ public:
uint32_t intsubmsk;
};
- struct s3c24xx_dma_regs_t
+ struct dma_regs_t
{
uint32_t disrc;
uint32_t disrcc;
@@ -735,7 +446,7 @@ public:
uint32_t dmasktrig;
};
- struct s3c24xx_clkpow_regs_t
+ struct clkpow_regs_t
{
uint32_t locktime;
uint32_t mpllcon;
@@ -746,7 +457,7 @@ public:
uint32_t camdivn;
};
- struct s3c24xx_lcd_regs_t
+ struct lcd_regs_t
{
uint32_t lcdcon1;
uint32_t lcdcon2;
@@ -768,12 +479,7 @@ public:
uint32_t tconsel;
};
- struct s3c24xx_lcdpal_regs_t
- {
- uint32_t data[0x400/4];
- };
-
- struct s3c24xx_nand_regs_t
+ struct nand_regs_t
{
uint32_t nfconf;
uint32_t nfcont;
@@ -793,60 +499,12 @@ public:
uint32_t nfeblk;
};
- struct s3c24xx_cam_regs_t
- {
- uint32_t data[0xA4/4];
- };
-
- struct s3c24xx_uart_regs_t
- {
- uint32_t ulcon;
- uint32_t ucon;
- uint32_t ufcon;
- uint32_t umcon;
- uint32_t utrstat;
- uint32_t uerstat;
- uint32_t ufstat;
- uint32_t umstat;
- uint32_t utxh;
- uint32_t urxh;
- uint32_t ubrdiv;
- };
-
- struct s3c24xx_pwm_regs_t
- {
- uint32_t tcfg0;
- uint32_t tcfg1;
- uint32_t tcon;
- uint32_t tcntb0;
- uint32_t tcmpb0;
- uint32_t tcnto0;
- uint32_t tcntb1;
- uint32_t tcmpb1;
- uint32_t tcnto1;
- uint32_t tcntb2;
- uint32_t tcmpb2;
- uint32_t tcnto2;
- uint32_t tcntb3;
- uint32_t tcmpb3;
- uint32_t tcnto3;
- uint32_t tcntb4;
- uint32_t tcnto4;
- };
-
- struct s3c24xx_usbdev_regs_t
+ struct usbdev_regs_t
{
uint32_t data[0x130/4];
};
- struct s3c24xx_wdt_regs_t
- {
- uint32_t wtcon;
- uint32_t wtdat;
- uint32_t wtcnt;
- };
-
- struct s3c24xx_iic_regs_t
+ struct iic_regs_t
{
uint32_t iiccon;
uint32_t iicstat;
@@ -855,16 +513,7 @@ public:
uint32_t iiclc;
};
- struct s3c24xx_iis_regs_t
- {
- uint32_t iiscon;
- uint32_t iismod;
- uint32_t iispsr;
- uint32_t iisfcon;
- uint32_t iisfifo;
- };
-
- struct s3c24xx_gpio_regs_t
+ struct gpio_regs_t
{
uint32_t gpacon;
uint32_t gpadat;
@@ -923,29 +572,7 @@ public:
uint32_t gpjup;
};
- struct s3c24xx_rtc_regs_t
- {
- uint32_t rtccon;
- uint32_t ticnt;
- uint32_t reserved[2];
- uint32_t rtcalm;
- uint32_t almsec;
- uint32_t almmin;
- uint32_t almhour;
- uint32_t almday;
- uint32_t almmon;
- uint32_t almyear;
- uint32_t rtcrst;
- uint32_t bcdsec;
- uint32_t bcdmin;
- uint32_t bcdhour;
- uint32_t bcdday;
- uint32_t bcddow;
- uint32_t bcdmon;
- uint32_t bcdyear;
- };
-
- struct s3c24xx_adc_regs_t
+ struct adc_regs_t
{
uint32_t adccon;
uint32_t adctsc;
@@ -955,56 +582,26 @@ public:
uint32_t adcupdn;
};
- struct s3c24xx_spi_regs_t
- {
- uint32_t spcon;
- uint32_t spsta;
- uint32_t sppin;
- uint32_t sppre;
- uint32_t sptdat;
- uint32_t sprdat;
- };
-
- struct s3c24xx_sdi_regs_t
+ struct irq_t
{
- uint32_t data[0x44/4];
- };
-
- struct s3c24xx_ac97_regs_t
- {
- uint32_t data[0x20/4];
- };
-
- struct s3c24xx_memcon_t
- {
- s3c24xx_memcon_regs_t regs;
- };
-
- struct s3c24xx_usbhost_t
- {
- s3c24xx_usbhost_regs_t regs;
- };
-
- struct s3c24xx_irq_t
- {
- s3c24xx_irq_regs_t regs;
+ irq_regs_t regs;
int line_irq, line_fiq;
};
- struct s3c24xx_dma_t
+ struct dma_t
{
- s3c24xx_dma_regs_t regs;
+ dma_regs_t regs;
emu_timer *timer;
};
- struct s3c24xx_clkpow_t
+ struct clkpow_t
{
- s3c24xx_clkpow_regs_t regs;
+ clkpow_regs_t regs;
};
- struct s3c24xx_lcd_t
+ struct lcd_t
{
- s3c24xx_lcd_regs_t regs;
+ lcd_regs_t regs;
emu_timer *timer;
std::unique_ptr<bitmap_rgb32> bitmap[2];
uint32_t vramaddr_cur;
@@ -1021,119 +618,61 @@ public:
uint32_t dma_data, dma_bits;
};
- struct s3c24xx_lcdpal_t
+ struct nand_t
{
- s3c24xx_lcdpal_regs_t regs;
- };
-
- struct s3c24xx_nand_t
- {
- s3c24xx_nand_regs_t regs;
+ nand_regs_t regs;
uint8_t mecc[4];
uint8_t secc[2];
int ecc_pos, data_count;
};
- struct s3c24xx_cam_t
- {
- s3c24xx_cam_regs_t regs;
- };
-
- struct s3c24xx_uart_t
- {
- s3c24xx_uart_regs_t regs;
- };
-
- struct s3c24xx_pwm_t
- {
- s3c24xx_pwm_regs_t regs;
- emu_timer *timer[5];
- uint32_t cnt[5];
- uint32_t cmp[5];
- uint32_t freq[5];
- };
-
- struct s3c24xx_usbdev_t
- {
- s3c24xx_usbdev_regs_t regs;
- };
-
- struct s3c24xx_wdt_t
+ struct usbdev_t
{
- s3c24xx_wdt_regs_t regs;
- emu_timer *timer;
+ usbdev_regs_t regs;
};
- struct s3c24xx_iic_t
+ struct iic_t
{
- s3c24xx_iic_regs_t regs;
+ iic_regs_t regs;
emu_timer *timer;
int count;
};
- struct s3c24xx_iis_t
+ struct gpio_t
{
- s3c24xx_iis_regs_t regs;
- emu_timer *timer;
- uint16_t fifo[16/2];
- int fifo_index;
+ gpio_regs_t regs;
};
- struct s3c24xx_gpio_t
+ struct adc_t
{
- s3c24xx_gpio_regs_t regs;
- };
-
- struct s3c24xx_rtc_t
- {
- s3c24xx_rtc_regs_t regs;
- emu_timer *timer_tick_count;
- emu_timer *timer_update;
- };
-
- struct s3c24xx_adc_t
- {
- s3c24xx_adc_regs_t regs;
- };
-
- struct s3c24xx_spi_t
- {
- s3c24xx_spi_regs_t regs;
- };
-
- struct s3c24xx_sdi_t
- {
- s3c24xx_sdi_regs_t regs;
- };
-
- struct s3c24xx_ac97_t
- {
- s3c24xx_ac97_regs_t regs;
+ adc_regs_t regs;
};
+ // internal state
+ required_device<palette_device> m_palette;
uint8_t m_steppingstone[4*1024];
- s3c24xx_memcon_t m_memcon;
- s3c24xx_usbhost_t m_usbhost;
- s3c24xx_irq_t m_irq;
- s3c24xx_dma_t m_dma[S3C24XX_DMA_COUNT];
- s3c24xx_clkpow_t m_clkpow;
- s3c24xx_lcd_t m_lcd;
- s3c24xx_lcdpal_t m_lcdpal;
- s3c24xx_nand_t m_nand;
- s3c24xx_cam_t m_cam;
- s3c24xx_uart_t m_uart[S3C24XX_UART_COUNT];
- s3c24xx_pwm_t m_pwm;
- s3c24xx_usbdev_t m_usbdev;
- s3c24xx_wdt_t m_wdt;
- s3c24xx_iic_t m_iic;
- s3c24xx_iis_t m_iis;
- s3c24xx_gpio_t m_gpio;
- s3c24xx_rtc_t m_rtc;
- s3c24xx_adc_t m_adc;
- s3c24xx_spi_t m_spi[S3C24XX_SPI_COUNT];
- s3c24xx_sdi_t m_sdi;
- s3c24xx_ac97_t m_ac97;
+ memcon_t m_memcon;
+ usbhost_t m_usbhost;
+ irq_t m_irq;
+ dma_t m_dma[DMA_COUNT];
+ clkpow_t m_clkpow;
+ lcd_t m_lcd;
+ lcdpal_t m_lcdpal;
+ nand_t m_nand;
+ cam_t m_cam;
+ uart_t m_uart[UART_COUNT];
+ pwm_t m_pwm;
+ usbdev_t m_usbdev;
+ wdt_t m_wdt;
+ iic_t m_iic;
+ iis_t m_iis;
+ gpio_t m_gpio;
+ rtc_t m_rtc;
+ adc_t m_adc;
+ spi_t m_spi[SPI_COUNT];
+ sdi_t m_sdi;
+ ac97_t m_ac97;
required_device<device_t> m_cpu;
devcb_read32 m_pin_r_cb;
devcb_write32 m_pin_w_cb;
@@ -1151,7 +690,6 @@ public:
int m_flags;
};
-extern const device_type S3C2440;
-
+DECLARE_DEVICE_TYPE(S3C2440, s3c2440_device)
-#endif
+#endif // MAME_MACHINE_S3C2440_H
diff --git a/src/devices/machine/s3c24xx.cpp b/src/devices/machine/s3c24xx.cpp
new file mode 100644
index 00000000000..40cebd1b643
--- /dev/null
+++ b/src/devices/machine/s3c24xx.cpp
@@ -0,0 +1,190 @@
+// license:BSD-3-Clause
+// copyright-holders:Tim Schuerewegen
+#include "emu.h"
+#include "s3c24xx.h"
+
+#include "coreutil.h"
+
+#include <cstdio>
+#include <cstring>
+
+//#define VERBOSE 1
+#define LOG_OUTPUT_FUNC std::printf
+#include "logmacro.h"
+
+
+void s3c24xx_peripheral_types::usbhost_t::reset()
+{
+ std::memset(&regs, 0, sizeof(regs));
+}
+
+
+void s3c24xx_peripheral_types::memcon_t::reset()
+{
+ std::memset(&regs, 0, sizeof(regs));
+ regs.data[0x04 / 4] = 0x00000700;
+ regs.data[0x08 / 4] = 0x00000700;
+ regs.data[0x0c / 4] = 0x00000700;
+ regs.data[0x10 / 4] = 0x00000700;
+ regs.data[0x14 / 4] = 0x00000700;
+ regs.data[0x18 / 4] = 0x00000700;
+ regs.data[0x1c / 4] = 0x00018008;
+ regs.data[0x20 / 4] = 0x00018008;
+ regs.data[0x24 / 4] = 0x00AC0000;
+}
+
+
+void s3c24xx_peripheral_types::uart_t::reset()
+{
+ std::memset(&regs, 0, sizeof(regs));
+ regs.utrstat = 6;
+}
+
+
+void s3c24xx_peripheral_types::pwm_t::reset()
+{
+ std::memset(&regs, 0, sizeof(regs));
+ for (emu_timer *&tmr : timer)
+ tmr->adjust(attotime::never);
+}
+
+uint16_t s3c24xx_peripheral_types::pwm_t::calc_observation(unsigned ch) const
+{
+ double const timeleft = timer[ch]->remaining().as_double();
+ LOG("timeleft %f freq %d cntb %d cmpb %d\n", timeleft, freq[ch], cnt[ch], cmp[ch]);
+ double const x1 = 1 / (double(freq[ch]) / (cnt[ch] - cmp[ch] + 1));
+ double const x2 = x1 / timeleft;
+ LOG("x1 %f\n", x1);
+ uint32_t cnto = cmp[ch] + ((cnt[ch]- cmp[ch]) / x2);
+ LOG("cnto %u\n", cnto);
+ return cnto;
+}
+
+
+void s3c24xx_peripheral_types::wdt_t::reset()
+{
+ std::memset(&regs, 0, sizeof(regs));
+ regs.wtcon = 0x8021;
+ regs.wtdat = 0x8000;
+ regs.wtcnt = 0x8000;
+ timer->adjust(attotime::never);
+}
+
+uint16_t s3c24xx_peripheral_types::wdt_t::calc_current_count() const
+{
+ double const timeleft = timer->remaining().as_double();
+ LOG("timeleft %f freq %d cnt %d\n", timeleft, freq, cnt);
+ double const x1 = 1 / (double(freq) / cnt);
+ double const x2 = x1 / timeleft;
+ printf("x1 %f\n", x1);
+ uint32_t const res = cnt / x2;
+ printf("cnt %d\n", res);
+ return res;
+}
+
+
+void s3c24xx_peripheral_types::iis_t::reset()
+{
+ std::memset(&regs, 0, sizeof(regs));
+ fifo_index = 0;
+ regs.iiscon = 0x0100;
+ timer->adjust(attotime::never);
+}
+
+
+void s3c24xx_peripheral_types::rtc_t::reset()
+{
+ std::memset(&regs, 0, sizeof(regs));
+ regs.almday = 1;
+ regs.almmon = 1;
+ timer_update->adjust(attotime::never);
+ timer_update->adjust(attotime::from_msec(1000), 0, attotime::from_msec(1000));
+}
+
+void s3c24xx_peripheral_types::rtc_t::recalc()
+{
+ if (BIT(regs.ticnt, 7))
+ {
+ uint32_t const ttc = BITS(regs.ticnt, 6, 0);
+ double const freq = 128.0 / (ttc + 1);
+ LOG("ttc %u freq %f\n", ttc, freq);
+ timer_tick_count->adjust(attotime::from_hz(freq), 0, attotime::from_hz(freq));
+ }
+ else
+ {
+ timer_tick_count->adjust(attotime::never);
+ }
+}
+
+void s3c24xx_peripheral_types::rtc_t::update()
+{
+ // increase second
+ regs.bcdsec = bcd_adjust(regs.bcdsec + 1);
+ if (regs.bcdsec >= 0x60)
+ {
+ regs.bcdsec = 0;
+ // increase minute
+ regs.bcdmin = bcd_adjust(regs.bcdmin + 1);
+ if (regs.bcdmin >= 0x60)
+ {
+ regs.bcdmin = 0;
+ // increase hour
+ regs.bcdhour = bcd_adjust(regs.bcdhour + 1);
+ if (regs.bcdhour >= 0x24)
+ {
+ regs.bcdhour = 0;
+ // increase day-of-week
+ regs.bcddow = (regs.bcddow % 7) + 1;
+ // increase day
+ regs.bcdday = bcd_adjust(regs.bcdday + 1);
+ uint32_t const bcdday_max = dec_2_bcd(gregorian_days_in_month(bcd_2_dec(regs.bcdmon), bcd_2_dec(regs.bcdyear) + 2000));
+ if (regs.bcdday > bcdday_max)
+ {
+ regs.bcdday = 1;
+ // increase month
+ regs.bcdmon = bcd_adjust(regs.bcdmon + 1);
+ if (regs.bcdmon >= 0x12)
+ {
+ regs.bcdmon = 1;
+ // increase year
+ regs.bcdyear = bcd_adjust(regs.bcdyear + 1);
+ if (regs.bcdyear >= 0x100)
+ {
+ regs.bcdyear = 0;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+bool s3c24xx_peripheral_types::rtc_t::check_alarm() const
+{
+ return
+ (regs.rtcalm & 0x40) &&
+ (!(regs.rtcalm & 0x20) || (regs.almyear == regs.bcdyear)) &&
+ (!(regs.rtcalm & 0x10) || (regs.almmon == regs.bcdmon)) &&
+ (!(regs.rtcalm & 0x08) || (regs.almday == regs.bcdday)) &&
+ (!(regs.rtcalm & 0x04) || (regs.almhour == regs.bcdhour)) &&
+ (!(regs.rtcalm & 0x02) || (regs.almmin == regs.bcdmin)) &&
+ (!(regs.rtcalm & 0x01) || (regs.almsec == regs.bcdsec));
+}
+
+
+void s3c24xx_peripheral_types::mmc_t::reset()
+{
+ std::memset(&regs, 0, sizeof(regs));
+}
+
+
+void s3c24xx_peripheral_types::cam_t::reset()
+{
+ std::memset(&regs, 0, sizeof(regs));
+}
+
+
+void s3c24xx_peripheral_types::ac97_t::reset()
+{
+ std::memset(&regs, 0, sizeof(regs));
+}
diff --git a/src/devices/machine/s3c24xx.h b/src/devices/machine/s3c24xx.h
new file mode 100644
index 00000000000..0e165afc5d4
--- /dev/null
+++ b/src/devices/machine/s3c24xx.h
@@ -0,0 +1,309 @@
+// license:BSD-3-Clause
+// copyright-holders:Tim Schuerewegen
+#ifndef MAME_MACHINE_S3C24XX_H
+#define MAME_MACHINE_S3C24XX_H
+
+#pragma once
+
+
+class s3c24xx_peripheral_types // TODO: better name for this
+{
+protected:
+ template <typename A, typename B, typename C> static constexpr auto BITS(A &&x, B &&m, C &&n)
+ {
+ return (x >> n) & ((uint32_t(1) << (m - n + 1)) - 1);
+ }
+
+ template <typename A, typename B, typename C> static constexpr auto CLR_BITS(A &&x, B &&m, C &&n)
+ {
+ return x & ~(((uint32_t(1) << (m - n + 1)) - 1) << n);
+ }
+
+ struct memcon_regs_t
+ {
+ uint32_t data[0x34/4];
+ };
+
+ struct usbhost_regs_t
+ {
+ uint32_t data[0x5c/4];
+ };
+
+ struct lcdpal_regs_t
+ {
+ uint32_t data[0x400/4];
+ };
+
+ struct uart_regs_t
+ {
+ uint32_t ulcon;
+ uint32_t ucon;
+ uint32_t ufcon;
+ uint32_t umcon;
+ uint32_t utrstat;
+ uint32_t uerstat;
+ uint32_t ufstat;
+ uint32_t umstat;
+ uint32_t utxh;
+ uint32_t urxh;
+ uint32_t ubrdiv;
+ };
+
+ struct pwm_regs_t
+ {
+ uint32_t tcfg0;
+ uint32_t tcfg1;
+ uint32_t tcon;
+ uint32_t tcntb0;
+ uint32_t tcmpb0;
+ uint32_t tcnto0;
+ uint32_t tcntb1;
+ uint32_t tcmpb1;
+ uint32_t tcnto1;
+ uint32_t tcntb2;
+ uint32_t tcmpb2;
+ uint32_t tcnto2;
+ uint32_t tcntb3;
+ uint32_t tcmpb3;
+ uint32_t tcnto3;
+ uint32_t tcntb4;
+ uint32_t tcnto4;
+ };
+
+ struct wdt_regs_t
+ {
+ uint32_t wtcon;
+ uint32_t wtdat;
+ uint32_t wtcnt;
+ };
+
+ struct iis_regs_t
+ {
+ uint32_t iiscon;
+ uint32_t iismod;
+ uint32_t iispsr;
+ uint32_t iisfcon;
+ uint32_t iisfifo;
+ };
+
+ struct rtc_regs_t
+ {
+ uint32_t rtccon;
+ uint32_t ticnt;
+ uint32_t reserved[2];
+ uint32_t rtcalm;
+ uint32_t almsec;
+ uint32_t almmin;
+ uint32_t almhour;
+ uint32_t almday;
+ uint32_t almmon;
+ uint32_t almyear;
+ uint32_t rtcrst;
+ uint32_t bcdsec;
+ uint32_t bcdmin;
+ uint32_t bcdhour;
+ uint32_t bcdday;
+ uint32_t bcddow;
+ uint32_t bcdmon;
+ uint32_t bcdyear;
+ };
+
+ struct mmc_regs_t
+ {
+ uint32_t data[0x40/4];
+ };
+
+ struct spi_regs_t
+ {
+ uint32_t spcon;
+ uint32_t spsta;
+ uint32_t sppin;
+ uint32_t sppre;
+ uint32_t sptdat;
+ uint32_t sprdat;
+ };
+
+ struct sdi_regs_t
+ {
+ uint32_t data[0x44/4];
+ };
+
+ struct cam_regs_t
+ {
+ uint32_t data[0xa4/4];
+ };
+
+ struct ac97_regs_t
+ {
+ uint32_t data[0x20/4];
+ };
+
+
+ struct memcon_t
+ {
+ void reset();
+
+ memcon_regs_t regs;
+ };
+
+ struct usbhost_t
+ {
+ void reset();
+
+ usbhost_regs_t regs;
+ };
+
+ struct lcdpal_t
+ {
+ lcdpal_regs_t regs;
+ };
+
+ struct uart_t
+ {
+ static constexpr offs_t ULCON = 0X00 / 4; // UART Line Control
+ static constexpr offs_t UCON = 0X04 / 4; // UART Control
+ static constexpr offs_t UFCON = 0X08 / 4; // UART FIFO Control
+ static constexpr offs_t UMCON = 0X0c / 4; // UART Modem Control
+ static constexpr offs_t UTRSTAT = 0X10 / 4; // UART Tx/Rx Status
+ static constexpr offs_t UERSTAT = 0X14 / 4; // UART Rx Error Status
+ static constexpr offs_t UFSTAT = 0X18 / 4; // UART FIFO Status
+ static constexpr offs_t UMSTAT = 0X1c / 4; // UART Modem Status
+ static constexpr offs_t UTXH = 0X20 / 4; // UART Transmission Hold
+ static constexpr offs_t URXH = 0X24 / 4; // UART Receive Buffer
+ static constexpr offs_t UBRDIV = 0X28 / 4; // UART Baud Rate Divisor
+
+ void reset();
+
+ uart_regs_t regs;
+ };
+
+ struct pwm_t
+ {
+ static constexpr offs_t TCFG0 = 0x00 / 4; // Timer Configuration
+ static constexpr offs_t TCFG1 = 0x04 / 4; // Timer Configuration
+ static constexpr offs_t TCON = 0x08 / 4; // Timer Control
+ static constexpr offs_t TCNTB0 = 0x0c / 4; // Timer Count Buffer 0
+ static constexpr offs_t TCMPB0 = 0x10 / 4; // Timer Compare Buffer 0
+ static constexpr offs_t TCNTO0 = 0x14 / 4; // Timer Count Observation 0
+ static constexpr offs_t TCNTB1 = 0x18 / 4; // Timer Count Buffer 1
+ static constexpr offs_t TCMPB1 = 0x1c / 4; // Timer Compare Buffer 1
+ static constexpr offs_t TCNTO1 = 0x20 / 4; // Timer Count Observation 1
+ static constexpr offs_t TCNTB2 = 0x24 / 4; // Timer Count Buffer 2
+ static constexpr offs_t TCMPB2 = 0x28 / 4; // Timer Compare Buffer 2
+ static constexpr offs_t TCNTO2 = 0x2c / 4; // Timer Count Observation 2
+ static constexpr offs_t TCNTB3 = 0x30 / 4; // Timer Count Buffer 3
+ static constexpr offs_t TCMPB3 = 0x34 / 4; // Timer Compare Buffer 3
+ static constexpr offs_t TCNTO3 = 0x38 / 4; // Timer Count Observation 3
+ static constexpr offs_t TCNTB4 = 0x3c / 4; // Timer Count Buffer 4
+ static constexpr offs_t TCNTO4 = 0x40 / 4; // Timer Count Observation 4
+
+ void reset();
+ uint16_t calc_observation(unsigned ch) const;
+
+ pwm_regs_t regs;
+ emu_timer *timer[5];
+ uint32_t cnt[5];
+ uint32_t cmp[5];
+ uint32_t freq[5];
+ };
+
+ struct wdt_t
+ {
+ static constexpr offs_t WTCON = 0x00 / 4; // Watchdog Timer Mode
+ static constexpr offs_t WTDAT = 0x04 / 4; // Watchdog Timer Data
+ static constexpr offs_t WTCNT = 0x08 / 4; // Watchdog Timer Count
+
+ void reset();
+ uint16_t calc_current_count() const;
+
+ wdt_regs_t regs;
+ emu_timer *timer;
+ uint32_t freq, cnt;
+ };
+
+ struct iis_t
+ {
+ static constexpr offs_t IISCON = 0x00 / 4; // IIS Control
+ static constexpr offs_t IISMOD = 0x04 / 4; // IIS Mode
+ static constexpr offs_t IISPSR = 0x08 / 4; // IIS Prescaler
+ static constexpr offs_t IISFCON = 0x0c / 4; // IIS FIFO Control
+ static constexpr offs_t IISFIFO = 0x10 / 4; // IIS FIFO Entry
+
+ void reset();
+
+ iis_regs_t regs;
+ emu_timer *timer;
+ uint16_t fifo[16/2];
+ int fifo_index;
+ };
+
+ struct rtc_t
+ {
+ static constexpr offs_t RTCCON = 0x00 / 4; // RTC Control
+ static constexpr offs_t TICNT = 0x04 / 4; // Tick Time count
+ static constexpr offs_t RTCALM = 0x10 / 4; // RTC Alarm Control
+ static constexpr offs_t ALMSEC = 0x14 / 4; // Alarm Second
+ static constexpr offs_t ALMMIN = 0x18 / 4; // Alarm Minute
+ static constexpr offs_t ALMHOUR = 0x1c / 4; // Alarm Hour
+ static constexpr offs_t ALMDAY = 0x20 / 4; // Alarm Day
+ static constexpr offs_t ALMMON = 0x24 / 4; // Alarm Month
+ static constexpr offs_t ALMYEAR = 0x28 / 4; // Alarm Year
+ static constexpr offs_t RTCRST = 0x2c / 4; // RTC Round Reset
+ static constexpr offs_t BCDSEC = 0x30 / 4; // BCD Second
+ static constexpr offs_t BCDMIN = 0x34 / 4; // BCD Minute
+ static constexpr offs_t BCDHOUR = 0x38 / 4; // BCD Hour
+ static constexpr offs_t BCDDAY = 0x3c / 4; // BCD Day
+ static constexpr offs_t BCDDOW = 0x40 / 4; // BCD Day of Week
+ static constexpr offs_t BCDMON = 0x44 / 4; // BCD Month
+ static constexpr offs_t BCDYEAR = 0x48 / 4; // BCD Year
+
+ void reset();
+ void recalc();
+ void update();
+ bool check_alarm() const;
+
+ rtc_regs_t regs;
+ emu_timer *timer_tick_count;
+ emu_timer *timer_update;
+ };
+
+ struct mmc_t
+ {
+ void reset();
+
+ mmc_regs_t regs;
+ };
+
+ struct spi_t
+ {
+ static constexpr offs_t SPCON = 0x00 / 4; // SPI Control
+ static constexpr offs_t SPSTA = 0x04 / 4; // SPI Status
+ static constexpr offs_t SPPIN = 0x08 / 4; // SPI Pin Control
+ static constexpr offs_t SPPRE = 0x0c / 4; // SPI Baud Rate Prescaler
+ static constexpr offs_t SPTDAT = 0x10 / 4; // SPI Tx Data
+ static constexpr offs_t SPRDAT = 0x14 / 4; // SPI Rx Data
+
+ spi_regs_t regs;
+ };
+
+ struct sdi_t
+ {
+ sdi_regs_t regs;
+ };
+
+ struct cam_t
+ {
+ void reset();
+
+ cam_regs_t regs;
+ };
+
+ struct ac97_t
+ {
+ void reset();
+
+ ac97_regs_t regs;
+ };
+};
+
+#endif // MAME_MACHINE_S3C24XX_H
diff --git a/src/devices/machine/s3c24xx.hxx b/src/devices/machine/s3c24xx.hxx
index 5481d485f15..2f7d616f702 100644
--- a/src/devices/machine/s3c24xx.hxx
+++ b/src/devices/machine/s3c24xx.hxx
@@ -19,9 +19,6 @@
#define CLOCK_MULTIPLIER 1
-#define BITS(x,m,n) (((x)>>(n))&(((uint32_t)1<<((m)-(n)+1))-1))
-#define CLR_BITS(x,m,n) ((x) & ~((((uint32_t)1 << ((m) - (n) + 1)) - 1) << n))
-
#if defined(DEVICE_S3C2400)
#define S3C24XX_TPAL_GET_TPALEN(x) BIT(x,16)
@@ -109,26 +106,25 @@ int S3C24_CLASS_NAME::iface_core_pin_r(int pin)
void S3C24_CLASS_NAME::s3c24xx_lcd_reset()
{
- s3c24xx_lcd_t *lcd = &m_lcd;
- memset( &lcd->regs, 0, sizeof( lcd->regs));
- #if defined(DEVICE_S3C2410)
- lcd->regs.lcdintmsk = 3;
- lcd->regs.lpcsel = 4;
- #elif defined(DEVICE_S3C2440)
- lcd->regs.lcdintmsk = 3;
- lcd->regs.tconsel = 0x0F84;
- #endif
- lcd->vramaddr_cur = lcd->vramaddr_max = 0;
- lcd->offsize = 0;
- lcd->pagewidth_cur = lcd->pagewidth_max = 0;
- lcd->bppmode = 0;
- lcd->bswp = lcd->hwswp = 0;
- lcd->vpos = lcd->hpos = 0;
- lcd->framerate = 0;
- lcd->tpal = 0;
- lcd->hpos_min = lcd->hpos_max = lcd->vpos_min = lcd->vpos_max = 0;
- lcd->dma_data = lcd->dma_bits = 0;
- lcd->timer->adjust( attotime::never);
+ memset( &m_lcd.regs, 0, sizeof( m_lcd.regs));
+#if defined(DEVICE_S3C2410)
+ m_lcd.regs.lcdintmsk = 3;
+ m_lcd.regs.lpcsel = 4;
+#elif defined(DEVICE_S3C2440)
+ m_lcd.regs.lcdintmsk = 3;
+ m_lcd.regs.tconsel = 0x0F84;
+#endif
+ m_lcd.vramaddr_cur = m_lcd.vramaddr_max = 0;
+ m_lcd.offsize = 0;
+ m_lcd.pagewidth_cur = m_lcd.pagewidth_max = 0;
+ m_lcd.bppmode = 0;
+ m_lcd.bswp = m_lcd.hwswp = 0;
+ m_lcd.vpos = m_lcd.hpos = 0;
+ m_lcd.framerate = 0;
+ m_lcd.tpal = 0;
+ m_lcd.hpos_min = m_lcd.hpos_max = m_lcd.vpos_min = m_lcd.vpos_max = 0;
+ m_lcd.dma_data = m_lcd.dma_bits = 0;
+ m_lcd.timer->adjust(attotime::never);
}
rgb_t S3C24_CLASS_NAME::s3c24xx_get_color_tft_16(uint16_t data)
@@ -691,18 +687,18 @@ TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_lcd_timer_exp )
{
switch (m_lcd.bppmode)
{
- case S3C24XX_BPPMODE_STN_01 : s3c24xx_lcd_render_stn_01(); break;
- case S3C24XX_BPPMODE_STN_02 : s3c24xx_lcd_render_stn_02(); break;
- case S3C24XX_BPPMODE_STN_04 : s3c24xx_lcd_render_stn_04(); break;
- case S3C24XX_BPPMODE_STN_08 : s3c24xx_lcd_render_stn_08(); break;
- case S3C24XX_BPPMODE_STN_12_P : s3c24xx_lcd_render_stn_12_p(); break;
- case S3C24XX_BPPMODE_STN_12_U : s3c24xx_lcd_render_stn_12_u(); break;
- case S3C24XX_BPPMODE_TFT_01 : s3c24xx_lcd_render_tft_01(); break;
- case S3C24XX_BPPMODE_TFT_02 : s3c24xx_lcd_render_tft_02(); break;
- case S3C24XX_BPPMODE_TFT_04 : s3c24xx_lcd_render_tft_04(); break;
- case S3C24XX_BPPMODE_TFT_08 : s3c24xx_lcd_render_tft_08(); break;
- case S3C24XX_BPPMODE_TFT_16 : s3c24xx_lcd_render_tft_16(); break;
- default : verboselog( *this, 0, "s3c24xx_lcd_timer_exp: bppmode %d not supported\n", m_lcd.bppmode); break;
+ case S3C24XX_BPPMODE_STN_01: s3c24xx_lcd_render_stn_01(); break;
+ case S3C24XX_BPPMODE_STN_02: s3c24xx_lcd_render_stn_02(); break;
+ case S3C24XX_BPPMODE_STN_04: s3c24xx_lcd_render_stn_04(); break;
+ case S3C24XX_BPPMODE_STN_08: s3c24xx_lcd_render_stn_08(); break;
+ case S3C24XX_BPPMODE_STN_12_P: s3c24xx_lcd_render_stn_12_p(); break;
+ case S3C24XX_BPPMODE_STN_12_U: s3c24xx_lcd_render_stn_12_u(); break;
+ case S3C24XX_BPPMODE_TFT_01: s3c24xx_lcd_render_tft_01(); break;
+ case S3C24XX_BPPMODE_TFT_02: s3c24xx_lcd_render_tft_02(); break;
+ case S3C24XX_BPPMODE_TFT_04: s3c24xx_lcd_render_tft_04(); break;
+ case S3C24XX_BPPMODE_TFT_08: s3c24xx_lcd_render_tft_08(); break;
+ case S3C24XX_BPPMODE_TFT_16: s3c24xx_lcd_render_tft_16(); break;
+ default: verboselog( *this, 0, "s3c24xx_lcd_timer_exp: bppmode %d not supported\n", m_lcd.bppmode); break;
}
if ((m_lcd.vpos == m_lcd.vpos_min) && (m_lcd.hpos == m_lcd.hpos_min)) break;
}
@@ -730,20 +726,20 @@ void S3C24_CLASS_NAME::bitmap_blend( bitmap_rgb32 &bitmap_dst, bitmap_rgb32 &bit
uint32_t *line2 = &bitmap_dst.pix32(y);
for (int x = 0; x < bitmap_dst.width(); x++)
{
- uint32_t color0 = line0[x];
- uint32_t color1 = line1[x];
- uint16_t r0 = (color0 >> 16) & 0x000000ff;
- uint16_t g0 = (color0 >> 8) & 0x000000ff;
- uint16_t b0 = (color0 >> 0) & 0x000000ff;
- uint16_t r1 = (color1 >> 16) & 0x000000ff;
- uint16_t g1 = (color1 >> 8) & 0x000000ff;
- uint16_t b1 = (color1 >> 0) & 0x000000ff;
- uint8_t r = (uint8_t)((r0 + r1) >> 1);
- uint8_t g = (uint8_t)((g0 + g1) >> 1);
- uint8_t b = (uint8_t)((b0 + b1) >> 1);
- line2[x] = (r << 16) | (g << 8) | b;
- }
+ uint32_t color0 = line0[x];
+ uint32_t color1 = line1[x];
+ uint16_t r0 = (color0 >> 16) & 0x000000ff;
+ uint16_t g0 = (color0 >> 8) & 0x000000ff;
+ uint16_t b0 = (color0 >> 0) & 0x000000ff;
+ uint16_t r1 = (color1 >> 16) & 0x000000ff;
+ uint16_t g1 = (color1 >> 8) & 0x000000ff;
+ uint16_t b1 = (color1 >> 0) & 0x000000ff;
+ uint8_t r = (uint8_t)((r0 + r1) >> 1);
+ uint8_t g = (uint8_t)((g0 + g1) >> 1);
+ uint8_t b = (uint8_t)((b0 + b1) >> 1);
+ line2[x] = (r << 16) | (g << 8) | b;
}
+ }
}
uint32_t S3C24_CLASS_NAME::s3c24xx_video_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
@@ -770,7 +766,7 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_lcd_r )
uint32_t data = ((uint32_t*)&m_lcd.regs)[offset];
switch (offset)
{
- case S3C24XX_LCDCON1 :
+ case S3C24XX_LCDCON1:
{
// make sure line counter is going
uint32_t vpos = machine().first_screen()->vpos();
@@ -779,7 +775,7 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_lcd_r )
data = (data & ~0xFFFC0000) | ((m_lcd.vpos_max - vpos) << 18);
}
break;
- case S3C24XX_LCDCON5 :
+ case S3C24XX_LCDCON5:
{
uint32_t vpos = machine().first_screen()->vpos();
data = data & ~0x00018000;
@@ -861,10 +857,10 @@ int S3C24_CLASS_NAME::s3c24xx_lcd_configure_stn()
verboselog( *this, 3, "LCD - framerate %f\n", framerate);
switch (pnrmode)
{
- case S3C24XX_PNRMODE_STN_04_SS : width = ((hozval + 1) * 4); break;
- case S3C24XX_PNRMODE_STN_04_DS : width = ((hozval + 1) * 4); break;
- case S3C24XX_PNRMODE_STN_08_SS : width = ((hozval + 1) * 8 / 3); break;
- default : width = 0; break;
+ case S3C24XX_PNRMODE_STN_04_SS: width = ((hozval + 1) * 4); break;
+ case S3C24XX_PNRMODE_STN_04_DS: width = ((hozval + 1) * 4); break;
+ case S3C24XX_PNRMODE_STN_08_SS: width = ((hozval + 1) * 8 / 3); break;
+ default: width = 0; break;
}
height = lineval + 1;
m_lcd.framerate = framerate;
@@ -965,25 +961,24 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_lcd_palette_w )
void S3C24_CLASS_NAME::s3c24xx_clkpow_reset()
{
- s3c24xx_clkpow_t *clkpow = &m_clkpow;
- memset( &clkpow->regs, 0, sizeof( clkpow->regs));
- #if defined(DEVICE_S3C2400)
- clkpow->regs.locktime = 0x00FFFFFF;
- clkpow->regs.mpllcon = 0x0005C080;
- clkpow->regs.upllcon = 0x00028080;
- clkpow->regs.clkcon = 0x0000FFF8;
- #elif defined(DEVICE_S3C2410)
- clkpow->regs.locktime = 0x00FFFFFF;
- clkpow->regs.mpllcon = 0x0005C080;
- clkpow->regs.upllcon = 0x00028080;
- clkpow->regs.clkcon = 0x0007FFF0;
- #elif defined(DEVICE_S3C2440)
- clkpow->regs.locktime = 0xFFFFFFFF;
- clkpow->regs.mpllcon = 0x00096030;
- clkpow->regs.upllcon = 0x0004D030;
- clkpow->regs.clkcon = 0x00FFFFF0;
- #endif
- clkpow->regs.clkslow = 4;
+ memset( &m_clkpow.regs, 0, sizeof(m_clkpow.regs));
+#if defined(DEVICE_S3C2400)
+ m_clkpow.regs.locktime = 0x00FFFFFF;
+ m_clkpow.regs.mpllcon = 0x0005C080;
+ m_clkpow.regs.upllcon = 0x00028080;
+ m_clkpow.regs.clkcon = 0x0000FFF8;
+#elif defined(DEVICE_S3C2410)
+ m_clkpow.regs.locktime = 0x00FFFFFF;
+ m_clkpow.regs.mpllcon = 0x0005C080;
+ m_clkpow.regs.upllcon = 0x00028080;
+ m_clkpow.regs.clkcon = 0x0007FFF0;
+#elif defined(DEVICE_S3C2440)
+ m_clkpow.regs.locktime = 0xFFFFFFFF;
+ m_clkpow.regs.mpllcon = 0x00096030;
+ m_clkpow.regs.upllcon = 0x0004D030;
+ m_clkpow.regs.clkcon = 0x00FFFFF0;
+#endif
+ m_clkpow.regs.clkslow = 4;
}
uint32_t S3C24_CLASS_NAME::s3c24xx_get_fclk()
@@ -1020,10 +1015,10 @@ uint32_t S3C24_CLASS_NAME::s3c24xx_get_hclk()
#else
switch (BITS( m_clkpow.regs.clkdivn, 2, 1))
{
- case 0 : return s3c24xx_get_fclk() / 1;
- case 1 : return s3c24xx_get_fclk() / 2;
- case 2 : return s3c24xx_get_fclk() / (4 * (BIT( m_clkpow.regs.camdivn, 9) + 1));
- case 3 : return s3c24xx_get_fclk() / (3 * (BIT( m_clkpow.regs.camdivn, 8) + 1));
+ case 0: return s3c24xx_get_fclk() / 1;
+ case 1: return s3c24xx_get_fclk() / 2;
+ case 2: return s3c24xx_get_fclk() / (4 * (BIT( m_clkpow.regs.camdivn, 9) + 1));
+ case 3: return s3c24xx_get_fclk() / (3 * (BIT( m_clkpow.regs.camdivn, 8) + 1));
}
return 0;
#endif
@@ -1047,17 +1042,13 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_clkpow_w )
COMBINE_DATA(&((uint32_t*)&m_clkpow.regs)[offset]);
switch (offset)
{
- case S3C24XX_MPLLCON :
- {
- verboselog( *this, 5, "CLKPOW - fclk %d hclk %d pclk %d\n", s3c24xx_get_fclk(), s3c24xx_get_hclk(), s3c24xx_get_pclk());
- m_cpu->set_unscaled_clock(s3c24xx_get_fclk() * CLOCK_MULTIPLIER);
- }
+ case S3C24XX_MPLLCON :
+ verboselog( *this, 5, "CLKPOW - fclk %d hclk %d pclk %d\n", s3c24xx_get_fclk(), s3c24xx_get_hclk(), s3c24xx_get_pclk());
+ m_cpu->set_unscaled_clock(s3c24xx_get_fclk() * CLOCK_MULTIPLIER);
break;
- case S3C24XX_CLKSLOW :
- {
- verboselog( *this, 5, "CLKPOW - fclk %d hclk %d pclk %d\n", s3c24xx_get_fclk(), s3c24xx_get_hclk(), s3c24xx_get_pclk());
- m_cpu->set_unscaled_clock(s3c24xx_get_fclk() * CLOCK_MULTIPLIER);
- }
+ case S3C24XX_CLKSLOW :
+ verboselog( *this, 5, "CLKPOW - fclk %d hclk %d pclk %d\n", s3c24xx_get_fclk(), s3c24xx_get_hclk(), s3c24xx_get_pclk());
+ m_cpu->set_unscaled_clock(s3c24xx_get_fclk() * CLOCK_MULTIPLIER);
break;
}
}
@@ -1066,16 +1057,15 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_clkpow_w )
void S3C24_CLASS_NAME::s3c24xx_irq_reset()
{
- s3c24xx_irq_t *irq = &m_irq;
- memset( &irq->regs, 0, sizeof( irq->regs));
- irq->line_irq = irq->line_fiq = CLEAR_LINE;
- irq->regs.intmsk = 0xFFFFFFFF;
- irq->regs.priority = 0x7F;
- #if defined(DEVICE_S3C2410)
- irq->regs.intsubmsk = 0x07FF;
- #elif defined(DEVICE_S3C2440)
- irq->regs.intsubmsk = 0xFFFF;
- #endif
+ memset(&m_irq.regs, 0, sizeof(m_irq.regs));
+ m_irq.line_irq = m_irq.line_fiq = CLEAR_LINE;
+ m_irq.regs.intmsk = 0xFFFFFFFF;
+ m_irq.regs.priority = 0x7F;
+#if defined(DEVICE_S3C2410)
+ m_irq.regs.intsubmsk = 0x07FF;
+#elif defined(DEVICE_S3C2440)
+ m_irq.regs.intsubmsk = 0xFFFF;
+#endif
}
void S3C24_CLASS_NAME::s3c24xx_check_pending_irq()
@@ -1228,36 +1218,26 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_irq_w )
COMBINE_DATA(&((uint32_t*)&m_irq.regs)[offset]);
switch (offset)
{
- case S3C24XX_SRCPND :
- {
- m_irq.regs.srcpnd = (old_value & ~data); // clear only the bit positions of SRCPND corresponding to those set to one in the data
- m_irq.regs.intoffset = 0; // "This bit can be cleared automatically by clearing SRCPND and INTPND."
- s3c24xx_check_pending_irq();
- }
+ case S3C24XX_SRCPND:
+ m_irq.regs.srcpnd = (old_value & ~data); // clear only the bit positions of SRCPND corresponding to those set to one in the data
+ m_irq.regs.intoffset = 0; // "This bit can be cleared automatically by clearing SRCPND and INTPND."
+ s3c24xx_check_pending_irq();
break;
- case S3C24XX_INTMSK :
- {
- s3c24xx_check_pending_irq();
- }
+ case S3C24XX_INTMSK:
+ s3c24xx_check_pending_irq();
break;
- case S3C24XX_INTPND :
- {
- m_irq.regs.intpnd = (old_value & ~data); // clear only the bit positions of INTPND corresponding to those set to one in the data
- m_irq.regs.intoffset = 0; // "This bit can be cleared automatically by clearing SRCPND and INTPND."
- s3c24xx_check_pending_irq();
- }
+ case S3C24XX_INTPND:
+ m_irq.regs.intpnd = (old_value & ~data); // clear only the bit positions of INTPND corresponding to those set to one in the data
+ m_irq.regs.intoffset = 0; // "This bit can be cleared automatically by clearing SRCPND and INTPND."
+ s3c24xx_check_pending_irq();
break;
#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
- case S3C24XX_SUBSRCPND :
- {
- m_irq.regs.subsrcpnd = (old_value & ~data); // clear only the bit positions of SRCPND corresponding to those set to one in the data
- s3c24xx_check_pending_subirq();
- }
+ case S3C24XX_SUBSRCPND :
+ m_irq.regs.subsrcpnd = (old_value & ~data); // clear only the bit positions of SRCPND corresponding to those set to one in the data
+ s3c24xx_check_pending_subirq();
break;
- case S3C24XX_INTSUBMSK :
- {
- s3c24xx_check_pending_subirq();
- }
+ case S3C24XX_INTSUBMSK:
+ s3c24xx_check_pending_subirq();
break;
#endif
}
@@ -1265,59 +1245,25 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_irq_w )
/* PWM Timer */
-void S3C24_CLASS_NAME::s3c24xx_pwm_reset()
-{
- s3c24xx_pwm_t *pwm = &m_pwm;
- memset( &pwm->regs, 0, sizeof( pwm->regs));
- for (int i = 0; i < 5; i++)
- {
- pwm->timer[i]->adjust( attotime::never);
- }
-}
-
-uint16_t S3C24_CLASS_NAME::s3c24xx_pwm_calc_observation(int ch)
-{
- double timeleft, x1, x2;
- uint32_t cnto;
- timeleft = m_pwm.timer[ch]->remaining( ).as_double();
-// printf( "timeleft %f freq %d cntb %d cmpb %d\n", timeleft, m_pwm.freq[ch], m_pwm.cnt[ch], m_pwm.cmp[ch]);
- x1 = 1 / ((double)m_pwm.freq[ch] / (m_pwm.cnt[ch]- m_pwm.cmp[ch] + 1));
- x2 = x1 / timeleft;
-// printf( "x1 %f\n", x1);
- cnto = m_pwm.cmp[ch] + ((m_pwm.cnt[ch]- m_pwm.cmp[ch]) / x2);
-// printf( "cnto %d\n", cnto);
- return cnto;
-}
-
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_pwm_r )
{
uint32_t data = ((uint32_t*)&m_pwm.regs)[offset];
switch (offset)
{
- case S3C24XX_TCNTO0 :
- {
- data = (data & ~0x0000FFFF) | s3c24xx_pwm_calc_observation( 0);
- }
+ case pwm_t::TCNTO0:
+ data = (data & ~0x0000FFFF) | m_pwm.calc_observation(0);
break;
- case S3C24XX_TCNTO1 :
- {
- data = (data & ~0x0000FFFF) | s3c24xx_pwm_calc_observation( 1);
- }
+ case pwm_t::TCNTO1:
+ data = (data & ~0x0000FFFF) | m_pwm.calc_observation(1);
break;
- case S3C24XX_TCNTO2 :
- {
- data = (data & ~0x0000FFFF) | s3c24xx_pwm_calc_observation( 2);
- }
+ case pwm_t::TCNTO2:
+ data = (data & ~0x0000FFFF) | m_pwm.calc_observation(2);
break;
- case S3C24XX_TCNTO3 :
- {
- data = (data & ~0x0000FFFF) | s3c24xx_pwm_calc_observation( 3);
- }
+ case pwm_t::TCNTO3:
+ data = (data & ~0x0000FFFF) | m_pwm.calc_observation(3);
break;
- case S3C24XX_TCNTO4 :
- {
- data = (data & ~0x0000FFFF) | s3c24xx_pwm_calc_observation( 4);
- }
+ case pwm_t::TCNTO4:
+ data = (data & ~0x0000FFFF) | m_pwm.calc_observation(4);
break;
}
verboselog( *this, 9, "(PWM) %08X -> %08X\n", S3C24XX_BASE_PWM + (offset << 2), data);
@@ -1326,9 +1272,9 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_pwm_r )
void S3C24_CLASS_NAME::s3c24xx_pwm_start(int timer)
{
- const int mux_table[] = { 2, 4, 8, 16};
- const int prescaler_shift[] = { 0, 0, 8, 8, 8};
- const int mux_shift[] = { 0, 4, 8, 12, 16};
+ static constexpr int mux_table[] = { 2, 4, 8, 16 };
+ static constexpr int prescaler_shift[] = { 0, 0, 8, 8, 8 };
+ static constexpr int mux_shift[] = { 0, 4, 8, 12, 16 };
uint32_t pclk, prescaler, mux, cnt, cmp, auto_reload;
double freq, hz;
verboselog( *this, 1, "PWM %d start\n", timer);
@@ -1346,45 +1292,33 @@ void S3C24_CLASS_NAME::s3c24xx_pwm_start(int timer)
}
switch (timer)
{
- case 0 :
- {
- cnt = BITS( m_pwm.regs.tcntb0, 15, 0);
- cmp = BITS( m_pwm.regs.tcmpb0, 15, 0);
- auto_reload = BIT( m_pwm.regs.tcon, 3);
- }
+ case 0:
+ cnt = BITS(m_pwm.regs.tcntb0, 15, 0);
+ cmp = BITS(m_pwm.regs.tcmpb0, 15, 0);
+ auto_reload = BIT(m_pwm.regs.tcon, 3);
break;
- case 1 :
- {
- cnt = BITS( m_pwm.regs.tcntb1, 15, 0);
- cmp = BITS( m_pwm.regs.tcmpb1, 15, 0);
- auto_reload = BIT( m_pwm.regs.tcon, 11);
- }
+ case 1:
+ cnt = BITS(m_pwm.regs.tcntb1, 15, 0);
+ cmp = BITS(m_pwm.regs.tcmpb1, 15, 0);
+ auto_reload = BIT(m_pwm.regs.tcon, 11);
break;
- case 2 :
- {
- cnt = BITS( m_pwm.regs.tcntb2, 15, 0);
- cmp = BITS( m_pwm.regs.tcmpb2, 15, 0);
- auto_reload = BIT( m_pwm.regs.tcon, 15);
- }
+ case 2:
+ cnt = BITS(m_pwm.regs.tcntb2, 15, 0);
+ cmp = BITS(m_pwm.regs.tcmpb2, 15, 0);
+ auto_reload = BIT(m_pwm.regs.tcon, 15);
break;
- case 3 :
- {
- cnt = BITS( m_pwm.regs.tcntb3, 15, 0);
- cmp = BITS( m_pwm.regs.tcmpb3, 15, 0);
- auto_reload = BIT( m_pwm.regs.tcon, 19);
- }
+ case 3:
+ cnt = BITS(m_pwm.regs.tcntb3, 15, 0);
+ cmp = BITS(m_pwm.regs.tcmpb3, 15, 0);
+ auto_reload = BIT(m_pwm.regs.tcon, 19);
break;
- case 4 :
- {
- cnt = BITS( m_pwm.regs.tcntb4, 15, 0);
- cmp = 0;
- auto_reload = BIT( m_pwm.regs.tcon, 22);
- }
+ case 4:
+ cnt = BITS(m_pwm.regs.tcntb4, 15, 0);
+ cmp = 0;
+ auto_reload = BIT(m_pwm.regs.tcon, 22);
break;
- default :
- {
- cnt = cmp = auto_reload = 0;
- }
+ default:
+ cnt = cmp = auto_reload = 0;
break;
}
// hz = freq / (cnt - cmp + 1);
@@ -1396,29 +1330,29 @@ void S3C24_CLASS_NAME::s3c24xx_pwm_start(int timer)
{
hz = freq / cnt;
}
- verboselog( *this, 5, "PWM %d - pclk=%d prescaler=%d div=%d freq=%f cnt=%d cmp=%d auto_reload=%d hz=%f\n", timer, pclk, prescaler, mux_table[mux], freq, cnt, cmp, auto_reload, hz);
+ verboselog(*this, 5, "PWM %d - pclk=%d prescaler=%d div=%d freq=%f cnt=%d cmp=%d auto_reload=%d hz=%f\n", timer, pclk, prescaler, mux_table[mux], freq, cnt, cmp, auto_reload, hz);
m_pwm.cnt[timer] = cnt;
m_pwm.cmp[timer] = cmp;
m_pwm.freq[timer] = freq;
if (auto_reload)
{
- m_pwm.timer[timer]->adjust( attotime::from_hz( hz), timer, attotime::from_hz( hz));
+ m_pwm.timer[timer]->adjust(attotime::from_hz( hz), timer, attotime::from_hz(hz));
}
else
{
- m_pwm.timer[timer]->adjust( attotime::from_hz( hz), timer);
+ m_pwm.timer[timer]->adjust(attotime::from_hz(hz), timer);
}
}
void S3C24_CLASS_NAME::s3c24xx_pwm_stop(int timer)
{
- verboselog( *this, 1, "PWM %d stop\n", timer);
- m_pwm.timer[timer]->adjust( attotime::never);
+ verboselog(*this, 1, "PWM %d stop\n", timer);
+ m_pwm.timer[timer]->adjust(attotime::never);
}
void S3C24_CLASS_NAME::s3c24xx_pwm_recalc(int timer)
{
- const int tcon_shift[] = { 0, 8, 12, 16, 20};
+ static constexpr int tcon_shift[] = { 0, 8, 12, 16, 20 };
if (m_pwm.regs.tcon & (1 << tcon_shift[timer]))
{
s3c24xx_pwm_start(timer);
@@ -1431,33 +1365,31 @@ void S3C24_CLASS_NAME::s3c24xx_pwm_recalc(int timer)
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_pwm_w )
{
- uint32_t old_value = ((uint32_t*)&m_pwm.regs)[offset];
+ uint32_t const old_value = ((uint32_t*)&m_pwm.regs)[offset];
verboselog( *this, 9, "(PWM) %08X <- %08X\n", S3C24XX_BASE_PWM + (offset << 2), data);
COMBINE_DATA(&((uint32_t*)&m_pwm.regs)[offset]);
switch (offset)
{
- case S3C24XX_TCON :
+ case pwm_t::TCON:
+ if (BIT(data ^ old_value, 0))
{
- if ((data & (1 << 0)) != (old_value & (1 << 0)))
- {
- s3c24xx_pwm_recalc( 0);
- }
- if ((data & (1 << 8)) != (old_value & (1 << 8)))
- {
- s3c24xx_pwm_recalc( 1);
- }
- if ((data & (1 << 12)) != (old_value & (1 << 12)))
- {
- s3c24xx_pwm_recalc(2);
- }
- if ((data & (1 << 16)) != (old_value & (1 << 16)))
- {
- s3c24xx_pwm_recalc(3);
- }
- if ((data & (1 << 20)) != (old_value & (1 << 20)))
- {
- s3c24xx_pwm_recalc(4);
- }
+ s3c24xx_pwm_recalc(0);
+ }
+ if (BIT(data ^ old_value, 8))
+ {
+ s3c24xx_pwm_recalc(1);
+ }
+ if (BIT(data ^ old_value, 12))
+ {
+ s3c24xx_pwm_recalc(2);
+ }
+ if (BIT(data ^ old_value, 16))
+ {
+ s3c24xx_pwm_recalc(3);
+ }
+ if (BIT(data ^ old_value, 20))
+ {
+ s3c24xx_pwm_recalc(4);
}
break;
}
@@ -1466,9 +1398,9 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_pwm_w )
TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_pwm_timer_exp )
{
int ch = param;
- const int ch_int[] = { S3C24XX_INT_TIMER0, S3C24XX_INT_TIMER1, S3C24XX_INT_TIMER2, S3C24XX_INT_TIMER3, S3C24XX_INT_TIMER4 };
- verboselog( *this, 2, "PWM %d timer callback\n", ch);
- if (BITS( m_pwm.regs.tcfg1, 23, 20) == (ch + 1))
+ static constexpr int ch_int[] = { S3C24XX_INT_TIMER0, S3C24XX_INT_TIMER1, S3C24XX_INT_TIMER2, S3C24XX_INT_TIMER3, S3C24XX_INT_TIMER4 };
+ verboselog(*this, 2, "PWM %d timer callback\n", ch);
+ if (BITS(m_pwm.regs.tcfg1, 23, 20) == (ch + 1))
{
s3c24xx_dma_request_pwm();
}
@@ -1482,44 +1414,43 @@ TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_pwm_timer_exp )
void S3C24_CLASS_NAME::s3c24xx_dma_reset()
{
- for (auto & elem : m_dma)
+ for (dma_t &dma : m_dma)
{
- s3c24xx_dma_t *dma = &elem;
- memset( &dma->regs, 0, sizeof( dma->regs));
- dma->timer->adjust( attotime::never);
+ memset(&dma.regs, 0, sizeof(dma.regs));
+ dma.timer->adjust(attotime::never);
}
}
void S3C24_CLASS_NAME::s3c24xx_dma_reload(int ch)
{
- s3c24xx_dma_regs_t *regs = &m_dma[ch].regs;
- regs->dstat = S3C24XX_DSTAT_SET_CURR_TC( regs->dstat, S3C24XX_DCON_GET_TC( regs->dcon));
- regs->dcsrc = S3C24XX_DCSRC_SET_CURR_SRC( regs->dcsrc, S3C24XX_DISRC_GET_SADDR( regs->disrc));
- regs->dcdst = S3C24XX_DCDST_SET_CURR_DST( regs->dcdst, S3C24XX_DIDST_GET_DADDR( regs->didst));
+ dma_regs_t *regs = &m_dma[ch].regs;
+ regs->dstat = S3C24XX_DSTAT_SET_CURR_TC(regs->dstat, S3C24XX_DCON_GET_TC(regs->dcon));
+ regs->dcsrc = S3C24XX_DCSRC_SET_CURR_SRC(regs->dcsrc, S3C24XX_DISRC_GET_SADDR(regs->disrc));
+ regs->dcdst = S3C24XX_DCDST_SET_CURR_DST(regs->dcdst, S3C24XX_DIDST_GET_DADDR(regs->didst));
}
void S3C24_CLASS_NAME::s3c24xx_dma_trigger(int ch)
{
- s3c24xx_dma_regs_t *regs = &m_dma[ch].regs;
+ dma_regs_t *regs = &m_dma[ch].regs;
uint32_t curr_tc, curr_src, curr_dst;
- address_space &space = m_cpu->memory().space( AS_PROGRAM);
+ address_space &space = m_cpu->memory().space(AS_PROGRAM);
int dsz, inc_src, inc_dst, servmode, tsz;
- const uint32_t ch_int[] = { S3C24XX_INT_DMA0, S3C24XX_INT_DMA1, S3C24XX_INT_DMA2, S3C24XX_INT_DMA3};
- verboselog( *this, 5, "DMA %d trigger\n", ch);
- curr_tc = S3C24XX_DSTAT_GET_CURR_TC( regs->dstat);
- dsz = S3C24XX_DCON_GET_DSZ( regs->dcon);
- curr_src = S3C24XX_DCSRC_GET_CURR_SRC( regs->dcsrc);
- curr_dst = S3C24XX_DCDST_GET_CURR_DST( regs->dcdst);
- servmode = S3C24XX_DCON_GET_SERVMODE( regs->dcon);
- tsz = S3C24XX_DCON_GET_TSZ( regs->dcon);
+ static constexpr uint32_t ch_int[] = { S3C24XX_INT_DMA0, S3C24XX_INT_DMA1, S3C24XX_INT_DMA2, S3C24XX_INT_DMA3 };
+ verboselog(*this, 5, "DMA %d trigger\n", ch);
+ curr_tc = S3C24XX_DSTAT_GET_CURR_TC(regs->dstat);
+ dsz = S3C24XX_DCON_GET_DSZ(regs->dcon);
+ curr_src = S3C24XX_DCSRC_GET_CURR_SRC(regs->dcsrc);
+ curr_dst = S3C24XX_DCDST_GET_CURR_DST(regs->dcdst);
+ servmode = S3C24XX_DCON_GET_SERVMODE(regs->dcon);
+ tsz = S3C24XX_DCON_GET_TSZ(regs->dcon);
#if defined(DEVICE_S3C2400)
- inc_src = BIT( regs->disrc, 29);
- inc_dst = BIT( regs->didst, 29);
+ inc_src = BIT(regs->disrc, 29);
+ inc_dst = BIT(regs->didst, 29);
#else
inc_src = BIT( regs->disrcc, 0);
- inc_dst = BIT( regs->didstc, 0);
+ inc_dst = BIT(regs->didstc, 0);
#endif
- verboselog( *this, 5, "DMA %d - curr_src %08X curr_dst %08X curr_tc %d dsz %d\n", ch, curr_src, curr_dst, curr_tc, dsz);
+ verboselog(*this, 5, "DMA %d - curr_src %08X curr_dst %08X curr_tc %d dsz %d\n", ch, curr_src, curr_dst, curr_tc, dsz);
while (curr_tc > 0)
{
curr_tc--;
@@ -1527,21 +1458,21 @@ void S3C24_CLASS_NAME::s3c24xx_dma_trigger(int ch)
{
switch (dsz)
{
- case 0 : space.write_byte( curr_dst, space.read_byte( curr_src)); break;
- case 1 : space.write_word( curr_dst, space.read_word( curr_src)); break;
- case 2 : space.write_dword( curr_dst, space.read_dword( curr_src)); break;
+ case 0: space.write_byte(curr_dst, space.read_byte( curr_src)); break;
+ case 1: space.write_word(curr_dst, space.read_word( curr_src)); break;
+ case 2: space.write_dword(curr_dst, space.read_dword( curr_src)); break;
}
if (inc_src == 0) curr_src += (1 << dsz);
if (inc_dst == 0) curr_dst += (1 << dsz);
}
if (servmode == 0) break;
}
- regs->dcsrc = S3C24XX_DCSRC_SET_CURR_SRC( regs->dcsrc, curr_src);
- regs->dcdst = S3C24XX_DCDST_SET_CURR_DST( regs->dcdst, curr_dst);
- regs->dstat = S3C24XX_DSTAT_SET_CURR_TC( regs->dstat, curr_tc);
+ regs->dcsrc = S3C24XX_DCSRC_SET_CURR_SRC(regs->dcsrc, curr_src);
+ regs->dcdst = S3C24XX_DCDST_SET_CURR_DST(regs->dcdst, curr_dst);
+ regs->dstat = S3C24XX_DSTAT_SET_CURR_TC(regs->dstat, curr_tc);
if (curr_tc == 0)
{
- if (S3C24XX_DCON_GET_RELOAD( regs->dcon) == 0)
+ if (S3C24XX_DCON_GET_RELOAD(regs->dcon) == 0)
{
s3c24xx_dma_reload(ch);
}
@@ -1549,7 +1480,7 @@ void S3C24_CLASS_NAME::s3c24xx_dma_trigger(int ch)
{
regs->dmasktrig &= ~(1 << 1); // clear on/off
}
- if (S3C24XX_DCON_GET_INT( regs->dcon) != 0)
+ if (S3C24XX_DCON_GET_INT(regs->dcon) != 0)
{
s3c24xx_request_irq(ch_int[ch]);
}
@@ -1558,12 +1489,10 @@ void S3C24_CLASS_NAME::s3c24xx_dma_trigger(int ch)
void S3C24_CLASS_NAME::s3c24xx_dma_request_iis()
{
- s3c24xx_dma_regs_t *regs = &m_dma[2].regs;
+ dma_regs_t *regs = &m_dma[2].regs;
verboselog( *this, 5, "s3c24xx_dma_request_iis\n");
- if ((S3C24XX_DMASKTRIG_GET_ON_OFF( regs->dmasktrig) != 0) && (S3C24XX_DCON_GET_SWHWSEL( regs->dcon) != 0) && (S3C24XX_DCON_GET_HWSRCSEL( regs->dcon) == 0))
- {
+ if ((S3C24XX_DMASKTRIG_GET_ON_OFF(regs->dmasktrig) != 0) && (S3C24XX_DCON_GET_SWHWSEL(regs->dcon) != 0) && (S3C24XX_DCON_GET_HWSRCSEL(regs->dcon) == 0))
s3c24xx_dma_trigger(2);
- }
}
void S3C24_CLASS_NAME::s3c24xx_dma_request_pwm()
@@ -1573,8 +1502,8 @@ void S3C24_CLASS_NAME::s3c24xx_dma_request_pwm()
{
if (i != 1)
{
- s3c24xx_dma_regs_t *regs = &m_dma[i].regs;
- if ((S3C24XX_DMASKTRIG_GET_ON_OFF( regs->dmasktrig) != 0) && (S3C24XX_DCON_GET_SWHWSEL( regs->dcon) != 0) && (S3C24XX_DCON_GET_HWSRCSEL( regs->dcon) == 3))
+ dma_regs_t *regs = &m_dma[i].regs;
+ if ((S3C24XX_DMASKTRIG_GET_ON_OFF(regs->dmasktrig) != 0) && (S3C24XX_DCON_GET_SWHWSEL(regs->dcon) != 0) && (S3C24XX_DCON_GET_HWSRCSEL(regs->dcon) == 3))
{
s3c24xx_dma_trigger(i);
}
@@ -1585,51 +1514,45 @@ void S3C24_CLASS_NAME::s3c24xx_dma_request_pwm()
void S3C24_CLASS_NAME::s3c24xx_dma_start(int ch)
{
uint32_t addr_src, addr_dst, tc;
- s3c24xx_dma_regs_t *regs = &m_dma[ch].regs;
+ dma_regs_t *regs = &m_dma[ch].regs;
uint32_t dsz, tsz, reload;
int inc_src, inc_dst, _int, servmode, swhwsel, hwsrcsel;
- verboselog( *this, 1, "DMA %d start\n", ch);
- addr_src = S3C24XX_DISRC_GET_SADDR( regs->disrc);
- addr_dst = S3C24XX_DIDST_GET_DADDR( regs->didst);
- tc = S3C24XX_DCON_GET_TC( regs->dcon);
- _int = S3C24XX_DCON_GET_INT( regs->dcon);
- servmode = S3C24XX_DCON_GET_SERVMODE( regs->dcon);
- hwsrcsel = S3C24XX_DCON_GET_HWSRCSEL( regs->dcon);
- swhwsel = S3C24XX_DCON_GET_SWHWSEL( regs->dcon);
- reload = S3C24XX_DCON_GET_RELOAD( regs->dcon);
- dsz = S3C24XX_DCON_GET_DSZ( regs->dcon);
- tsz = S3C24XX_DCON_GET_TSZ( regs->dcon);
+ verboselog(*this, 1, "DMA %d start\n", ch);
+ addr_src = S3C24XX_DISRC_GET_SADDR(regs->disrc);
+ addr_dst = S3C24XX_DIDST_GET_DADDR(regs->didst);
+ tc = S3C24XX_DCON_GET_TC(regs->dcon);
+ _int = S3C24XX_DCON_GET_INT(regs->dcon);
+ servmode = S3C24XX_DCON_GET_SERVMODE(regs->dcon);
+ hwsrcsel = S3C24XX_DCON_GET_HWSRCSEL(regs->dcon);
+ swhwsel = S3C24XX_DCON_GET_SWHWSEL(regs->dcon);
+ reload = S3C24XX_DCON_GET_RELOAD(regs->dcon);
+ dsz = S3C24XX_DCON_GET_DSZ(regs->dcon);
+ tsz = S3C24XX_DCON_GET_TSZ(regs->dcon);
#if defined(DEVICE_S3C2400)
- inc_src = BIT( regs->disrc, 29);
- inc_dst = BIT( regs->didst, 29);
+ inc_src = BIT(regs->disrc, 29);
+ inc_dst = BIT(regs->didst, 29);
#else
- inc_src = BIT( regs->disrcc, 0);
- inc_dst = BIT( regs->didstc, 0);
+ inc_src = BIT(regs->disrcc, 0);
+ inc_dst = BIT(regs->didstc, 0);
#endif
- verboselog( *this, 5, "DMA %d - addr_src %08X inc_src %d addr_dst %08X inc_dst %d int %d tsz %d servmode %d hwsrcsel %d swhwsel %d reload %d dsz %d tc %d\n", ch, addr_src, inc_src, addr_dst, inc_dst, _int, tsz, servmode, hwsrcsel, swhwsel, reload, dsz, tc);
- verboselog( *this, 5, "DMA %d - copy %08X bytes from %08X (%s) to %08X (%s)\n", ch, (tc << dsz) << (tsz << 1), addr_src, inc_src ? "fix" : "inc", addr_dst, inc_dst ? "fix" : "inc");
+ verboselog(*this, 5, "DMA %d - addr_src %08X inc_src %d addr_dst %08X inc_dst %d int %d tsz %d servmode %d hwsrcsel %d swhwsel %d reload %d dsz %d tc %d\n", ch, addr_src, inc_src, addr_dst, inc_dst, _int, tsz, servmode, hwsrcsel, swhwsel, reload, dsz, tc);
+ verboselog(*this, 5, "DMA %d - copy %08X bytes from %08X (%s) to %08X (%s)\n", ch, (tc << dsz) << (tsz << 1), addr_src, inc_src ? "fix" : "inc", addr_dst, inc_dst ? "fix" : "inc");
s3c24xx_dma_reload(ch);
if (swhwsel == 0)
- {
s3c24xx_dma_trigger(ch);
- }
}
void S3C24_CLASS_NAME::s3c24xx_dma_stop(int ch)
{
- verboselog( *this, 1, "DMA %d stop\n", ch);
+ verboselog(*this, 1, "DMA %d stop\n", ch);
}
void S3C24_CLASS_NAME::s3c24xx_dma_recalc(int ch)
{
if ((m_dma[ch].regs.dmasktrig & (1 << 1)) != 0)
- {
s3c24xx_dma_start(ch);
- }
else
- {
s3c24xx_dma_stop(ch);
- }
}
uint32_t S3C24_CLASS_NAME::s3c24xx_dma_r(uint32_t ch, uint32_t offset)
@@ -1643,24 +1566,18 @@ void S3C24_CLASS_NAME::s3c24xx_dma_w(uint32_t ch, uint32_t offset, uint32_t data
COMBINE_DATA(&((uint32_t*)&m_dma[ch].regs)[offset]);
switch (offset)
{
- case S3C24XX_DCON :
+ case S3C24XX_DCON :
+#if 0 // is this code necessary ???
+ if (BIT(data, 22)) // reload
{
- #if 0 // is this code necessary ???
- if ((data & (1 << 22)) != 0) // reload
- {
- s3c24xx_dma_regs_t *regs = &m_dma[ch].regs;
- regs->dmasktrig &= ~(1 << 1); // clear on/off
- }
- #endif
+ dma_regs_t *regs = &m_dma[ch].regs;
+ regs->dmasktrig &= ~(1 << 1); // clear on/off
}
+#endif
break;
- case S3C24XX_DMASKTRIG :
- {
- if ((old_value & (1 << 1)) != (data & (1 << 1)))
- {
- s3c24xx_dma_recalc(ch);
- }
- }
+ case S3C24XX_DMASKTRIG :
+ if (BIT(data ^ old_value, 1))
+ s3c24xx_dma_recalc(ch);
break;
}
}
@@ -1668,89 +1585,88 @@ void S3C24_CLASS_NAME::s3c24xx_dma_w(uint32_t ch, uint32_t offset, uint32_t data
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_dma_0_r )
{
uint32_t data = s3c24xx_dma_r( 0, offset);
- verboselog( *this, 9, "(DMA 0) %08X -> %08X\n", S3C24XX_BASE_DMA_0 + (offset << 2), data);
+ verboselog(*this, 9, "(DMA 0) %08X -> %08X\n", S3C24XX_BASE_DMA_0 + (offset << 2), data);
return data;
}
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_dma_1_r )
{
- uint32_t data = s3c24xx_dma_r( 1, offset);
- verboselog( *this, 9, "(DMA 1) %08X -> %08X\n", S3C24XX_BASE_DMA_1 + (offset << 2), data);
+ uint32_t data = s3c24xx_dma_r(1, offset);
+ verboselog(*this, 9, "(DMA 1) %08X -> %08X\n", S3C24XX_BASE_DMA_1 + (offset << 2), data);
return data;
}
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_dma_2_r )
{
uint32_t data = s3c24xx_dma_r( 2, offset);
- verboselog( *this, 9, "(DMA 2) %08X -> %08X\n", S3C24XX_BASE_DMA_2 + (offset << 2), data);
+ verboselog(*this, 9, "(DMA 2) %08X -> %08X\n", S3C24XX_BASE_DMA_2 + (offset << 2), data);
return data;
}
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_dma_3_r )
{
uint32_t data = s3c24xx_dma_r( 3, offset);
- verboselog( *this, 9, "(DMA 3) %08X -> %08X\n", S3C24XX_BASE_DMA_3 + (offset << 2), data);
+ verboselog(*this, 9, "(DMA 3) %08X -> %08X\n", S3C24XX_BASE_DMA_3 + (offset << 2), data);
return data;
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_dma_0_w )
{
- verboselog( *this, 9, "(DMA 0) %08X <- %08X\n", S3C24XX_BASE_DMA_0 + (offset << 2), data);
- s3c24xx_dma_w( 0, offset, data, mem_mask);
+ verboselog(*this, 9, "(DMA 0) %08X <- %08X\n", S3C24XX_BASE_DMA_0 + (offset << 2), data);
+ s3c24xx_dma_w(0, offset, data, mem_mask);
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_dma_1_w )
{
- verboselog( *this, 9, "(DMA 1) %08X <- %08X\n", S3C24XX_BASE_DMA_1 + (offset << 2), data);
- s3c24xx_dma_w( 1, offset, data, mem_mask);
+ verboselog(*this, 9, "(DMA 1) %08X <- %08X\n", S3C24XX_BASE_DMA_1 + (offset << 2), data);
+ s3c24xx_dma_w(1, offset, data, mem_mask);
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_dma_2_w )
{
- verboselog( *this, 9, "(DMA 2) %08X <- %08X\n", S3C24XX_BASE_DMA_2 + (offset << 2), data);
- s3c24xx_dma_w( 2, offset, data, mem_mask);
+ verboselog(*this, 9, "(DMA 2) %08X <- %08X\n", S3C24XX_BASE_DMA_2 + (offset << 2), data);
+ s3c24xx_dma_w(2, offset, data, mem_mask);
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_dma_3_w )
{
- verboselog( *this, 9, "(DMA 3) %08X <- %08X\n", S3C24XX_BASE_DMA_3 + (offset << 2), data);
- s3c24xx_dma_w( 3, offset, data, mem_mask);
+ verboselog(*this, 9, "(DMA 3) %08X <- %08X\n", S3C24XX_BASE_DMA_3 + (offset << 2), data);
+ s3c24xx_dma_w(3, offset, data, mem_mask);
}
TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_dma_timer_exp )
{
int ch = param;
- verboselog( *this, 2, "DMA %d timer callback\n", ch);
+ verboselog(*this, 2, "DMA %d timer callback\n", ch);
}
/* I/O Port */
void S3C24_CLASS_NAME::s3c24xx_gpio_reset()
{
- s3c24xx_gpio_t *gpio = &m_gpio;
- memset( &gpio->regs, 0, sizeof( gpio->regs));
- #if defined(DEVICE_S3C2400)
- gpio->regs.gpacon = 0x0003FFFF;
- gpio->regs.gpbcon = 0xAAAAAAAA;
- gpio->regs.gpdup = 0x0620;
- gpio->regs.gpeup = 0x0003;
- #elif defined(DEVICE_S3C2410)
- gpio->regs.gpacon = 0x007FFFFF;
- gpio->regs.gpgup = 0xF800;
- gpio->regs.misccr = 0x00010330;
- gpio->regs.eintmask = 0x00FFFFF0;
- gpio->regs.gstatus1 = 0x32410002;
- #elif defined(DEVICE_S3C2440)
- gpio->regs.gpacon = 0x00FFFFFF;
- gpio->regs.gpgup = 0xFC00;
- gpio->regs.misccr = 0x00010020;
- gpio->regs.eintmask = 0x000FFFFF;
- gpio->regs.gstatus1 = 0x32440001;
- #endif
- gpio->regs.gpdup = 0xF000;
- #if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
- gpio->regs.gstatus2 = 1 << 0; // Boot is caused by power on reset
- #endif
+ memset(&m_gpio.regs, 0, sizeof(m_gpio.regs));
+#if defined(DEVICE_S3C2400)
+ m_gpio.regs.gpacon = 0x0003FFFF;
+ m_gpio.regs.gpbcon = 0xAAAAAAAA;
+ m_gpio.regs.gpdup = 0x0620;
+ m_gpio.regs.gpeup = 0x0003;
+#elif defined(DEVICE_S3C2410)
+ m_gpio.regs.gpacon = 0x007FFFFF;
+ m_gpio.regs.gpgup = 0xF800;
+ m_gpio.regs.misccr = 0x00010330;
+ m_gpio.regs.eintmask = 0x00FFFFF0;
+ m_gpio.regs.gstatus1 = 0x32410002;
+#elif defined(DEVICE_S3C2440)
+ m_gpio.regs.gpacon = 0x00FFFFFF;
+ m_gpio.regs.gpgup = 0xFC00;
+ m_gpio.regs.misccr = 0x00010020;
+ m_gpio.regs.eintmask = 0x000FFFFF;
+ m_gpio.regs.gstatus1 = 0x32440001;
+#endif
+ m_gpio.regs.gpdup = 0xF000;
+#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
+ m_gpio.regs.gstatus2 = 1 << 0; // Boot is caused by power on reset
+#endif
}
uint32_t S3C24_CLASS_NAME::iface_gpio_port_r(int port, uint32_t mask)
@@ -1782,146 +1698,100 @@ uint16_t S3C24_CLASS_NAME::s3c24xx_gpio_get_mask( uint32_t con, int val)
for (int i = 0; i < 16; i++)
{
if (((con >> (i << 1)) & 3) == val)
- {
mask = mask | (1 << i);
- }
}
return mask;
}
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_gpio_r )
{
- s3c24xx_gpio_t *gpio = &m_gpio;
uint32_t data = ((uint32_t*)&m_gpio.regs)[offset];
switch (offset)
{
- case S3C24XX_GPADAT :
- {
- data = iface_gpio_port_r( S3C24XX_GPIO_PORT_A, 0) & S3C24XX_GPADAT_MASK;
- }
+ case S3C24XX_GPADAT :
+ data = iface_gpio_port_r( S3C24XX_GPIO_PORT_A, 0) & S3C24XX_GPADAT_MASK;
break;
- case S3C24XX_GPBDAT :
- {
- data = iface_gpio_port_r( S3C24XX_GPIO_PORT_B, s3c24xx_gpio_get_mask( gpio->regs.gpbcon, 0) & S3C24XX_GPBDAT_MASK) & S3C24XX_GPBDAT_MASK;
- }
+ case S3C24XX_GPBDAT :
+ data = iface_gpio_port_r( S3C24XX_GPIO_PORT_B, s3c24xx_gpio_get_mask(m_gpio.regs.gpbcon, 0) & S3C24XX_GPBDAT_MASK) & S3C24XX_GPBDAT_MASK;
break;
- case S3C24XX_GPCDAT :
- {
- data = iface_gpio_port_r( S3C24XX_GPIO_PORT_C, s3c24xx_gpio_get_mask( gpio->regs.gpccon, 0) & S3C24XX_GPCDAT_MASK) & S3C24XX_GPCDAT_MASK;
- }
+ case S3C24XX_GPCDAT :
+ data = iface_gpio_port_r( S3C24XX_GPIO_PORT_C, s3c24xx_gpio_get_mask(m_gpio.regs.gpccon, 0) & S3C24XX_GPCDAT_MASK) & S3C24XX_GPCDAT_MASK;
break;
- case S3C24XX_GPDDAT :
- {
- data = iface_gpio_port_r( S3C24XX_GPIO_PORT_D, s3c24xx_gpio_get_mask( gpio->regs.gpdcon, 0) & S3C24XX_GPDDAT_MASK) & S3C24XX_GPDDAT_MASK;
- }
+ case S3C24XX_GPDDAT :
+ data = iface_gpio_port_r( S3C24XX_GPIO_PORT_D, s3c24xx_gpio_get_mask(m_gpio.regs.gpdcon, 0) & S3C24XX_GPDDAT_MASK) & S3C24XX_GPDDAT_MASK;
break;
- case S3C24XX_GPEDAT :
- {
- data = iface_gpio_port_r( S3C24XX_GPIO_PORT_E, s3c24xx_gpio_get_mask( gpio->regs.gpecon, 0) & S3C24XX_GPEDAT_MASK) & S3C24XX_GPEDAT_MASK;
- }
+ case S3C24XX_GPEDAT :
+ data = iface_gpio_port_r( S3C24XX_GPIO_PORT_E, s3c24xx_gpio_get_mask(m_gpio.regs.gpecon, 0) & S3C24XX_GPEDAT_MASK) & S3C24XX_GPEDAT_MASK;
break;
- case S3C24XX_GPFDAT :
- {
- data = iface_gpio_port_r( S3C24XX_GPIO_PORT_F, s3c24xx_gpio_get_mask( gpio->regs.gpfcon, 0) & S3C24XX_GPFDAT_MASK) & S3C24XX_GPFDAT_MASK;
- }
+ case S3C24XX_GPFDAT :
+ data = iface_gpio_port_r( S3C24XX_GPIO_PORT_F, s3c24xx_gpio_get_mask(m_gpio.regs.gpfcon, 0) & S3C24XX_GPFDAT_MASK) & S3C24XX_GPFDAT_MASK;
break;
- case S3C24XX_GPGDAT :
- {
- data = iface_gpio_port_r( S3C24XX_GPIO_PORT_G, s3c24xx_gpio_get_mask( gpio->regs.gpgcon, 0) & S3C24XX_GPGDAT_MASK) & S3C24XX_GPGDAT_MASK;
- }
+ case S3C24XX_GPGDAT :
+ data = iface_gpio_port_r( S3C24XX_GPIO_PORT_G, s3c24xx_gpio_get_mask(m_gpio.regs.gpgcon, 0) & S3C24XX_GPGDAT_MASK) & S3C24XX_GPGDAT_MASK;
break;
#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
- case S3C24XX_GPHDAT :
- {
- data = iface_gpio_port_r( S3C24XX_GPIO_PORT_H, s3c24xx_gpio_get_mask( gpio->regs.gphcon, 0) & S3C24XX_GPHDAT_MASK) & S3C24XX_GPHDAT_MASK;
- }
+ case S3C24XX_GPHDAT :
+ data = iface_gpio_port_r( S3C24XX_GPIO_PORT_H, s3c24xx_gpio_get_mask(m_gpio.regs.gphcon, 0) & S3C24XX_GPHDAT_MASK) & S3C24XX_GPHDAT_MASK;
break;
#endif
#if defined(DEVICE_S3C2440)
- case S3C24XX_GPJDAT :
- {
- data = iface_gpio_port_r( S3C24XX_GPIO_PORT_J, s3c24xx_gpio_get_mask( gpio->regs.gpjcon, 0) & S3C24XX_GPJDAT_MASK) & S3C24XX_GPJDAT_MASK;
- }
+ case S3C24XX_GPJDAT :
+ data = iface_gpio_port_r( S3C24XX_GPIO_PORT_J, s3c24xx_gpio_get_mask(m_gpio.regs.gpjcon, 0) & S3C24XX_GPJDAT_MASK) & S3C24XX_GPJDAT_MASK;
break;
#endif
}
- verboselog( *this, 9, "(GPIO) %08X -> %08X\n", S3C24XX_BASE_GPIO + (offset << 2), data);
+ verboselog(*this, 9, "(GPIO) %08X -> %08X\n", S3C24XX_BASE_GPIO + (offset << 2), data);
return data;
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_gpio_w )
{
- s3c24xx_gpio_t *gpio = &m_gpio;
#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
uint32_t old_value = ((uint32_t*)&m_gpio.regs)[offset];
#endif
- verboselog( *this, 9, "(GPIO) %08X <- %08X\n", S3C24XX_BASE_GPIO + (offset << 2), data);
+ verboselog(*this, 9, "(GPIO) %08X <- %08X\n", S3C24XX_BASE_GPIO + (offset << 2), data);
COMBINE_DATA(&((uint32_t*)&m_gpio.regs)[offset]);
switch (offset)
{
- case S3C24XX_GPADAT :
- {
- iface_gpio_port_w( S3C24XX_GPIO_PORT_A, gpio->regs.gpacon ^ 0xFFFFFFFF, data & S3C24XX_GPADAT_MASK);
- }
+ case S3C24XX_GPADAT:
+ iface_gpio_port_w(S3C24XX_GPIO_PORT_A, m_gpio.regs.gpacon ^ 0xFFFFFFFF, data & S3C24XX_GPADAT_MASK);
break;
- case S3C24XX_GPBDAT :
- {
- iface_gpio_port_w( S3C24XX_GPIO_PORT_B, s3c24xx_gpio_get_mask( gpio->regs.gpbcon, 1) & S3C24XX_GPBDAT_MASK, data & S3C24XX_GPBDAT_MASK);
- }
+ case S3C24XX_GPBDAT:
+ iface_gpio_port_w(S3C24XX_GPIO_PORT_B, s3c24xx_gpio_get_mask(m_gpio.regs.gpbcon, 1) & S3C24XX_GPBDAT_MASK, data & S3C24XX_GPBDAT_MASK);
break;
- case S3C24XX_GPCDAT :
- {
- iface_gpio_port_w( S3C24XX_GPIO_PORT_C, s3c24xx_gpio_get_mask( gpio->regs.gpccon, 1) & S3C24XX_GPCDAT_MASK, data & S3C24XX_GPCDAT_MASK);
- }
+ case S3C24XX_GPCDAT:
+ iface_gpio_port_w(S3C24XX_GPIO_PORT_C, s3c24xx_gpio_get_mask(m_gpio.regs.gpccon, 1) & S3C24XX_GPCDAT_MASK, data & S3C24XX_GPCDAT_MASK);
break;
- case S3C24XX_GPDDAT :
- {
- iface_gpio_port_w( S3C24XX_GPIO_PORT_D, s3c24xx_gpio_get_mask( gpio->regs.gpdcon, 1) & S3C24XX_GPDDAT_MASK, data & S3C24XX_GPDDAT_MASK);
- }
+ case S3C24XX_GPDDAT:
+ iface_gpio_port_w(S3C24XX_GPIO_PORT_D, s3c24xx_gpio_get_mask(m_gpio.regs.gpdcon, 1) & S3C24XX_GPDDAT_MASK, data & S3C24XX_GPDDAT_MASK);
break;
- case S3C24XX_GPEDAT :
- {
- iface_gpio_port_w( S3C24XX_GPIO_PORT_E, s3c24xx_gpio_get_mask( gpio->regs.gpecon, 1) & S3C24XX_GPEDAT_MASK, data & S3C24XX_GPEDAT_MASK);
- }
+ case S3C24XX_GPEDAT:
+ iface_gpio_port_w(S3C24XX_GPIO_PORT_E, s3c24xx_gpio_get_mask(m_gpio.regs.gpecon, 1) & S3C24XX_GPEDAT_MASK, data & S3C24XX_GPEDAT_MASK);
break;
- case S3C24XX_GPFDAT :
- {
- iface_gpio_port_w( S3C24XX_GPIO_PORT_F, s3c24xx_gpio_get_mask( gpio->regs.gpfcon, 1) & S3C24XX_GPFDAT_MASK, data & S3C24XX_GPFDAT_MASK);
- }
+ case S3C24XX_GPFDAT:
+ iface_gpio_port_w(S3C24XX_GPIO_PORT_F, s3c24xx_gpio_get_mask(m_gpio.regs.gpfcon, 1) & S3C24XX_GPFDAT_MASK, data & S3C24XX_GPFDAT_MASK);
break;
- case S3C24XX_GPGDAT :
- {
- iface_gpio_port_w( S3C24XX_GPIO_PORT_G, s3c24xx_gpio_get_mask( gpio->regs.gpgcon, 1) & S3C24XX_GPGDAT_MASK, data & S3C24XX_GPGDAT_MASK);
- }
+ case S3C24XX_GPGDAT:
+ iface_gpio_port_w(S3C24XX_GPIO_PORT_G, s3c24xx_gpio_get_mask(m_gpio.regs.gpgcon, 1) & S3C24XX_GPGDAT_MASK, data & S3C24XX_GPGDAT_MASK);
break;
#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
- case S3C24XX_GPHDAT :
- {
- iface_gpio_port_w( S3C24XX_GPIO_PORT_H, s3c24xx_gpio_get_mask( gpio->regs.gphcon, 1) & S3C24XX_GPHDAT_MASK, data & S3C24XX_GPHDAT_MASK);
- }
+ case S3C24XX_GPHDAT:
+ iface_gpio_port_w(S3C24XX_GPIO_PORT_H, s3c24xx_gpio_get_mask(m_gpio.regs.gphcon, 1) & S3C24XX_GPHDAT_MASK, data & S3C24XX_GPHDAT_MASK);
break;
- case S3C24XX_EINTPEND :
- {
- m_gpio.regs.eintpend = (old_value & ~data);
- s3c24xx_check_pending_eint();
- }
+ case S3C24XX_EINTPEND:
+ m_gpio.regs.eintpend = (old_value & ~data);
+ s3c24xx_check_pending_eint();
break;
- case S3C24XX_EINTMASK :
- {
- s3c24xx_check_pending_eint();
- }
+ case S3C24XX_EINTMASK:
+ s3c24xx_check_pending_eint();
break;
- case S3C24XX_GSTATUS2 :
- {
- m_gpio.regs.gstatus2 = (old_value & ~data) & 7; // "The setting is cleared by writing '1' to this bit"
- }
+ case S3C24XX_GSTATUS2:
+ m_gpio.regs.gstatus2 = (old_value & ~data) & 7; // "The setting is cleared by writing '1' to this bit"
break;
#endif
#if defined(DEVICE_S3C2440)
- case S3C24XX_GPJDAT :
- {
- iface_gpio_port_w( S3C24XX_GPIO_PORT_J, s3c24xx_gpio_get_mask( gpio->regs.gpjcon, 1) & S3C24XX_GPJDAT_MASK, data & S3C24XX_GPJDAT_MASK);
- }
+ case S3C24XX_GPJDAT:
+ iface_gpio_port_w(S3C24XX_GPIO_PORT_J, s3c24xx_gpio_get_mask(m_gpio.regs.gpjcon, 1) & S3C24XX_GPJDAT_MASK, data & S3C24XX_GPJDAT_MASK);
break;
#endif
}
@@ -1929,43 +1799,22 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_gpio_w )
/* Memory Controller */
-void S3C24_CLASS_NAME::s3c24xx_memcon_reset()
-{
- s3c24xx_memcon_t *memcon = &m_memcon;
- memset( &memcon->regs, 0, sizeof( memcon->regs));
- memcon->regs.data[0x04/4] = 0x00000700;
- memcon->regs.data[0x08/4] = 0x00000700;
- memcon->regs.data[0x0C/4] = 0x00000700;
- memcon->regs.data[0x10/4] = 0x00000700;
- memcon->regs.data[0x14/4] = 0x00000700;
- memcon->regs.data[0x18/4] = 0x00000700;
- memcon->regs.data[0x1C/4] = 0x00018008;
- memcon->regs.data[0x20/4] = 0x00018008;
- memcon->regs.data[0x24/4] = 0x00AC0000;
-}
-
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_memcon_r )
{
assert(offset < ARRAY_LENGTH(m_memcon.regs.data));
uint32_t data = m_memcon.regs.data[offset];
- verboselog( *this, 9, "(MEMCON) %08X -> %08X\n", S3C24XX_BASE_MEMCON + (offset << 2), data);
+ verboselog(*this, 9, "(MEMCON) %08X -> %08X\n", S3C24XX_BASE_MEMCON + (offset << 2), data);
return data;
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_memcon_w )
{
- verboselog( *this, 9, "(MEMCON) %08X <- %08X\n", S3C24XX_BASE_MEMCON + (offset << 2), data);
+ verboselog(*this, 9, "(MEMCON) %08X <- %08X\n", S3C24XX_BASE_MEMCON + (offset << 2), data);
COMBINE_DATA(&m_memcon.regs.data[offset]);
}
/* USB Host Controller */
-void S3C24_CLASS_NAME::s3c24xx_usb_host_reset()
-{
- s3c24xx_usbhost_t *usbhost = &m_usbhost;
- memset( &usbhost->regs, 0, sizeof( usbhost->regs));
-}
-
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_usb_host_r )
{
uint32_t data = m_usbhost.regs.data[offset];
@@ -1999,42 +1848,32 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_usb_host_r )
}
break;
}
- verboselog( *this, 9, "(USB H) %08X -> %08X\n", S3C24XX_BASE_USBHOST + (offset << 2), data);
+ verboselog(*this, 9, "(USB H) %08X -> %08X\n", S3C24XX_BASE_USBHOST + (offset << 2), data);
return data;
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_usb_host_w )
{
- verboselog( *this, 9, "(USB H) %08X <- %08X\n", S3C24XX_BASE_USBHOST + (offset << 2), data);
+ verboselog(*this, 9, "(USB H) %08X <- %08X\n", S3C24XX_BASE_USBHOST + (offset << 2), data);
COMBINE_DATA(&m_usbhost.regs.data[offset]);
}
/* UART */
-void S3C24_CLASS_NAME::s3c24xx_uart_reset()
-{
- for (auto & elem : m_uart)
- {
- s3c24xx_uart_t *uart = &elem;
- memset( &uart->regs, 0, sizeof( uart->regs));
- uart->regs.utrstat = 6;
- }
-}
-
uint32_t S3C24_CLASS_NAME::s3c24xx_uart_r(uint32_t ch, uint32_t offset)
{
uint32_t data = ((uint32_t*)&m_uart[ch].regs)[offset];
switch (offset)
{
- case S3C24XX_UTRSTAT :
+ case uart_t::UTRSTAT:
{
data = (data & ~0x00000006) | 0x00000004 | 0x00000002; // [bit 2] Transmitter empty / [bit 1] Transmit buffer empty
}
break;
- case S3C24XX_URXH :
+ case uart_t::URXH:
{
uint8_t rxdata = data & 0xFF;
- verboselog( *this, 5, "UART %d read %02X (%c)\n", ch, rxdata, ((rxdata >= 32) && (rxdata < 128)) ? (char)rxdata : '?');
+ verboselog(*this, 5, "UART %d read %02X (%c)\n", ch, rxdata, ((rxdata >= 32) && (rxdata < 128)) ? (char)rxdata : '?');
m_uart[ch].regs.utrstat &= ~1; // [bit 0] Receive buffer data ready
}
break;
@@ -2047,17 +1886,17 @@ void S3C24_CLASS_NAME::s3c24xx_uart_w(uint32_t ch, uint32_t offset, uint32_t dat
COMBINE_DATA(&((uint32_t*)&m_uart[ch].regs)[offset]);
switch (offset)
{
- case S3C24XX_UFCON :
+ case uart_t::UFCON :
{
m_uart[ch].regs.ufcon &= ~((1 << 2) | (1 << 1)); // bits 1 and 2 are auto-cleared after resetting FIFO
}
break;
- case S3C24XX_UTXH :
+ case uart_t::UTXH :
{
uint8_t txdata = data & 0xFF;
verboselog( *this, 5, "UART %d write %02X (%c)\n", ch, txdata, ((txdata >= 32) && (txdata < 128)) ? (char)txdata : '?');
#ifdef UART_PRINTF
- printf( "%c", ((txdata >= 32) && (txdata < 128)) ? (char)txdata : '?');
+ printf("%c", ((txdata >= 32) && (txdata < 128)) ? (char)txdata : '?');
#endif
}
break;
@@ -2066,14 +1905,14 @@ void S3C24_CLASS_NAME::s3c24xx_uart_w(uint32_t ch, uint32_t offset, uint32_t dat
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_uart_0_r )
{
- uint32_t data = s3c24xx_uart_r( 0, offset);
+ uint32_t data = s3c24xx_uart_r(0, offset);
// verboselog( *this, 9, "(UART 0) %08X -> %08X\n", S3C24XX_BASE_UART_0 + (offset << 2), data);
return data;
}
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_uart_1_r )
{
- uint32_t data = s3c24xx_uart_r( 1, offset);
+ uint32_t data = s3c24xx_uart_r(1, offset);
// verboselog( *this, 9, "(UART 1) %08X -> %08X\n", S3C24XX_BASE_UART_1 + (offset << 2), data);
return data;
}
@@ -2082,7 +1921,7 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_uart_1_r )
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_uart_2_r )
{
- uint32_t data = s3c24xx_uart_r( 2, offset);
+ uint32_t data = s3c24xx_uart_r(2, offset);
// verboselog( *this, 9, "(UART 2) %08X -> %08X\n", S3C24XX_BASE_UART_2 + (offset << 2), data);
return data;
}
@@ -2092,13 +1931,13 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_uart_2_r )
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_uart_0_w )
{
// verboselog( *this, 9, "(UART 0) %08X <- %08X\n", S3C24XX_BASE_UART_0 + (offset << 2), data);
- s3c24xx_uart_w( 0, offset, data, mem_mask);
+ s3c24xx_uart_w(0, offset, data, mem_mask);
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_uart_1_w )
{
// verboselog( *this, 9, "(UART 1) %08X <- %08X\n", S3C24XX_BASE_UART_1 + (offset << 2), data);
- s3c24xx_uart_w( 1, offset, data, mem_mask);
+ s3c24xx_uart_w(1, offset, data, mem_mask);
}
#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
@@ -2106,7 +1945,7 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_uart_1_w )
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_uart_2_w )
{
// verboselog( *this, 9, "(UART 2) %08X <- %08X\n", S3C24XX_BASE_UART_2 + (offset << 2), data);
- s3c24xx_uart_w( 2, offset, data, mem_mask);
+ s3c24xx_uart_w(2, offset, data, mem_mask);
}
#endif
@@ -2122,91 +1961,57 @@ void S3C24_CLASS_NAME::s3c24xx_uart_fifo_w(int uart, uint8_t data)
void S3C24_CLASS_NAME::s3c24xx_usb_device_reset()
{
- s3c24xx_usbdev_t *usbdev = &m_usbdev;
- memset( &usbdev->regs, 0, sizeof( usbdev->regs));
- #if defined(DEVICE_S3C2400)
- usbdev->regs.data[0x0C/4] = 0x033F;
- usbdev->regs.data[0x14/4] = 0x000A;
- usbdev->regs.data[0x24/4] = 0x0001;
- usbdev->regs.data[0x44/4] = 0x0001;
- usbdev->regs.data[0x54/4] = 0x0001;
- usbdev->regs.data[0x64/4] = 0x0001;
- usbdev->regs.data[0x74/4] = 0x0001;
- usbdev->regs.data[0xB8/4] = 0x00FF;
- #elif defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
- usbdev->regs.data[0x1C/4] = 0xFF;
- usbdev->regs.data[0x2C/4] = 0x04;
- usbdev->regs.data[0x40/4] = 0x01;
- usbdev->regs.data[0x48/4] = 0x20;
- #endif
+ memset(&m_usbdev.regs, 0, sizeof(m_usbdev.regs));
+#if defined(DEVICE_S3C2400)
+ m_usbdev.regs.data[0x0C/4] = 0x033F;
+ m_usbdev.regs.data[0x14/4] = 0x000A;
+ m_usbdev.regs.data[0x24/4] = 0x0001;
+ m_usbdev.regs.data[0x44/4] = 0x0001;
+ m_usbdev.regs.data[0x54/4] = 0x0001;
+ m_usbdev.regs.data[0x64/4] = 0x0001;
+ m_usbdev.regs.data[0x74/4] = 0x0001;
+ m_usbdev.regs.data[0xB8/4] = 0x00FF;
+#elif defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
+ m_usbdev.regs.data[0x1C/4] = 0xFF;
+ m_usbdev.regs.data[0x2C/4] = 0x04;
+ m_usbdev.regs.data[0x40/4] = 0x01;
+ m_usbdev.regs.data[0x48/4] = 0x20;
+#endif
}
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_usb_device_r )
{
uint32_t data = m_usbdev.regs.data[offset];
- verboselog( *this, 9, "(USB D) %08X -> %08X\n", S3C24XX_BASE_USBDEV + (offset << 2), data);
+ verboselog(*this, 9, "(USB D) %08X -> %08X\n", S3C24XX_BASE_USBDEV + (offset << 2), data);
return data;
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_usb_device_w )
{
- verboselog( *this, 9, "(USB D) %08X <- %08X\n", S3C24XX_BASE_USBDEV + (offset << 2), data);
+ verboselog(*this, 9, "(USB D) %08X <- %08X\n", S3C24XX_BASE_USBDEV + (offset << 2), data);
COMBINE_DATA(&m_usbdev.regs.data[offset]);
}
/* Watchdog Timer */
-void S3C24_CLASS_NAME::s3c24xx_wdt_reset()
-{
- s3c24xx_wdt_t *wdt = &m_wdt;
- memset( &wdt->regs, 0, sizeof( wdt->regs));
- wdt->regs.wtcon = 0x8021;
- wdt->regs.wtdat = 0x8000;
- wdt->regs.wtcnt = 0x8000;
- wdt->timer->adjust( attotime::never);
-}
-
-#if defined(DEVICE_S3C2410)
-
-uint16_t S3C24_CLASS_NAME::s3c24xx_wdt_calc_current_count()
-{
- double timeleft, x1, x2;
- uint32_t cnt;
- timeleft = m_wdt.timer->remaining( ).as_double();
-// printf( "timeleft %f freq %d cnt %d\n", timeleft, m_wdt.freq, m_wdt.cnt);
- x1 = 1 / ((double)m_wdt.freq / m_wdt.cnt);
- x2 = x1 / timeleft;
-// printf( "x1 %f\n", x1);
- cnt = m_wdt.cnt / x2;
-// printf( "cnt %d\n", cnt);
- return cnt;
-}
-
-#else
-
-uint16_t S3C24_CLASS_NAME::s3c24xx_wdt_calc_current_count()
-{
- return 0;
-}
-
-#endif
-
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_wdt_r )
{
uint32_t data = ((uint32_t*)&m_wdt.regs)[offset];
switch (offset)
{
- case S3C24XX_WTCNT :
+ case wdt_t::WTCNT:
+ // is wdt active?
+ if (BIT(m_wdt.regs.wtcon, 5))
{
- // is wdt active?
- if ((m_wdt.regs.wtcon & (1 << 5)) != 0)
- {
- data = s3c24xx_wdt_calc_current_count();
- }
+#if defined(DEVICE_S3C2410)
+ data = m_wdt.calc_current_count();
+#else
+ data = 0;
+#endif
}
break;
}
- verboselog( *this, 9, "(WDT) %08X -> %08X\n", S3C24XX_BASE_WDT + (offset << 2), data);
+ verboselog(*this, 9, "(WDT) %08X -> %08X\n", S3C24XX_BASE_WDT + (offset << 2), data);
return data;
}
@@ -2214,13 +2019,13 @@ void S3C24_CLASS_NAME::s3c24xx_wdt_start()
{
uint32_t pclk, prescaler, clock;
double freq, hz;
- verboselog( *this, 1, "WDT start\n");
+ verboselog(*this, 1, "WDT start\n");
pclk = s3c24xx_get_pclk();
- prescaler = BITS( m_wdt.regs.wtcon, 15, 8);
- clock = 16 << BITS( m_wdt.regs.wtcon, 4, 3);
+ prescaler = BITS(m_wdt.regs.wtcon, 15, 8);
+ clock = 16 << BITS(m_wdt.regs.wtcon, 4, 3);
freq = (double)pclk / (prescaler + 1) / clock;
hz = freq / m_wdt.regs.wtcnt;
- verboselog( *this, 5, "WDT pclk %d prescaler %d clock %d freq %f hz %f\n", pclk, prescaler, clock, freq, hz);
+ verboselog(*this, 5, "WDT pclk %d prescaler %d clock %d freq %f hz %f\n", pclk, prescaler, clock, freq, hz);
m_wdt.timer->adjust( attotime::from_hz( hz), 0, attotime::from_hz( hz));
#if defined(DEVICE_S3C2410)
m_wdt.freq = freq;
@@ -2231,20 +2036,20 @@ void S3C24_CLASS_NAME::s3c24xx_wdt_start()
void S3C24_CLASS_NAME::s3c24xx_wdt_stop()
{
verboselog( *this, 1, "WDT stop\n");
- m_wdt.regs.wtcnt = s3c24xx_wdt_calc_current_count();
- m_wdt.timer->adjust( attotime::never);
+#if defined(DEVICE_S3C2410)
+ m_wdt.regs.wtcnt = m_wdt.calc_current_count();
+#else
+ m_wdt.regs.wtcnt = 0;
+#endif
+ m_wdt.timer->adjust(attotime::never);
}
void S3C24_CLASS_NAME::s3c24xx_wdt_recalc()
{
- if ((m_wdt.regs.wtcon & (1 << 5)) != 0)
- {
+ if (BIT(m_wdt.regs.wtcon, 5))
s3c24xx_wdt_start();
- }
else
- {
s3c24xx_wdt_stop();
- }
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_wdt_w )
@@ -2254,13 +2059,9 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_wdt_w )
COMBINE_DATA(&((uint32_t*)&m_wdt.regs)[offset]);
switch (offset)
{
- case S3C24XX_WTCON :
- {
- if ((data & (1 << 5)) != (old_value & (1 << 5)))
- {
- s3c24xx_wdt_recalc();
- }
- }
+ case wdt_t::WTCON :
+ if (BIT(data ^ old_value, 5))
+ s3c24xx_wdt_recalc();
break;
}
}
@@ -2268,20 +2069,20 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_wdt_w )
TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_wdt_timer_exp )
{
verboselog( *this, 2, "WDT timer callback\n");
- if ((m_wdt.regs.wtcon & (1 << 2)) != 0)
+ if (BIT(m_wdt.regs.wtcon, 2))
{
#if defined(DEVICE_S3C2400) || defined(DEVICE_S3C2410)
- s3c24xx_request_irq( S3C24XX_INT_WDT);
+ s3c24xx_request_irq(S3C24XX_INT_WDT);
#else
- s3c24xx_request_subirq( S3C24XX_SUBINT_WDT);
+ s3c24xx_request_subirq(S3C24XX_SUBINT_WDT);
#endif
}
- if ((m_wdt.regs.wtcon & (1 << 0)) != 0)
+ if (BIT(m_wdt.regs.wtcon, 0))
{
s3c24xx_reset();
- #if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
+#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
m_gpio.regs.gstatus2 = 1 << 2; // Watchdog reset
- #endif
+#endif
}
}
@@ -2289,129 +2090,122 @@ TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_wdt_timer_exp )
void S3C24_CLASS_NAME::s3c24xx_iic_reset()
{
- s3c24xx_iic_t *iic = &m_iic;
- memset( &iic->regs, 0, sizeof( iic->regs));
- iic->count = 0;
- iic->timer->adjust( attotime::never);
+ memset(&m_iic.regs, 0, sizeof(m_iic.regs));
+ m_iic.count = 0;
+ m_iic.timer->adjust(attotime::never);
}
void S3C24_CLASS_NAME::iface_i2c_scl_w( int state)
{
if (!m_scl_w_cb.isnull())
- {
- (m_scl_w_cb)( state);
- }
+ m_scl_w_cb(state);
}
void S3C24_CLASS_NAME::iface_i2c_sda_w(int state)
{
if (!m_sda_w_cb.isnull())
- {
- (m_sda_w_cb)(state);
- }
+ m_sda_w_cb(state);
}
int S3C24_CLASS_NAME::iface_i2c_sda_r()
{
if (!m_sda_r_cb.isnull())
- {
- return (m_sda_r_cb)();
- }
+ return m_sda_r_cb();
else
- {
- return 0;
- }
+ return 1;
}
void S3C24_CLASS_NAME::i2c_send_start()
{
- verboselog( *this, 5, "i2c_send_start\n");
- iface_i2c_sda_w( 1);
- iface_i2c_scl_w( 1);
- iface_i2c_sda_w( 0);
- iface_i2c_scl_w( 0);
+ // FIXME: this needs to sense busy condition and use realistic timing
+ verboselog(*this, 5, "i2c_send_start\n");
+ iface_i2c_sda_w(1);
+ iface_i2c_scl_w(1);
+ iface_i2c_sda_w(0);
+ iface_i2c_scl_w(0);
}
void S3C24_CLASS_NAME::i2c_send_stop()
{
- verboselog( *this, 5, "i2c_send_stop\n");
- iface_i2c_sda_w( 0);
- iface_i2c_scl_w( 1);
- iface_i2c_sda_w( 1);
- iface_i2c_scl_w( 0);
+ // FIXME: this needs realistic timing
+ verboselog(*this, 5, "i2c_send_stop\n");
+ iface_i2c_sda_w(0);
+ iface_i2c_scl_w(1);
+ iface_i2c_sda_w(1);
+ iface_i2c_scl_w(0);
}
uint8_t S3C24_CLASS_NAME::i2c_receive_byte(int ack)
{
uint8_t data = 0;
- verboselog( *this, 5, "i2c_receive_byte ...\n");
- iface_i2c_sda_w( 1);
+ verboselog(*this, 5, "i2c_receive_byte ...\n");
+ iface_i2c_sda_w(1);
for (int i = 0; i < 8; i++)
{
iface_i2c_scl_w( 1);
data = (data << 1) + (iface_i2c_sda_r() ? 1 : 0);
iface_i2c_scl_w( 0);
}
- verboselog( *this, 5, "recv data %02X\n", data);
- verboselog( *this, 5, "send ack %d\n", ack);
- iface_i2c_sda_w( ack ? 0 : 1);
- iface_i2c_scl_w( 1);
- iface_i2c_scl_w( 0);
+ verboselog(*this, 5, "recv data %02X\n", data);
+ verboselog(*this, 5, "send ack %d\n", ack);
+ iface_i2c_sda_w(ack ? 0 : 1);
+ iface_i2c_scl_w(1);
+ iface_i2c_scl_w(0);
return data;
}
int S3C24_CLASS_NAME::i2c_send_byte(uint8_t data)
{
int ack;
- verboselog( *this, 5, "i2c_send_byte ...\n");
- verboselog( *this, 5, "send data %02X\n", data);
+ verboselog(*this, 5, "i2c_send_byte ...\n");
+ verboselog(*this, 5, "send data %02X\n", data);
for (int i = 0; i < 8; i++)
{
- iface_i2c_sda_w( (data & 0x80) ? 1 : 0);
+ iface_i2c_sda_w((data & 0x80) ? 1 : 0);
data = data << 1;
- iface_i2c_scl_w( 1);
- iface_i2c_scl_w( 0);
+ iface_i2c_scl_w(1);
+ iface_i2c_scl_w(0);
}
- iface_i2c_sda_w( 1); // ack bit
- iface_i2c_scl_w( 1);
+ iface_i2c_sda_w(1); // ack bit
+ iface_i2c_scl_w(1);
ack = iface_i2c_sda_r();
- verboselog( *this, 5, "recv ack %d\n", ack);
- iface_i2c_scl_w( 0);
+ verboselog(*this, 5, "recv ack %d\n", ack);
+ iface_i2c_scl_w(0);
return ack;
}
void S3C24_CLASS_NAME::iic_start()
{
int mode_selection;
- verboselog( *this, 1, "IIC start\n");
+ verboselog(*this, 1, "IIC start\n");
i2c_send_start();
mode_selection = BITS( m_iic.regs.iicstat, 7, 6);
switch (mode_selection)
{
- case 2 : i2c_send_byte( m_iic.regs.iicds | 0x01); break;
- case 3 : i2c_send_byte( m_iic.regs.iicds & 0xFE); break;
+ case 2: i2c_send_byte( m_iic.regs.iicds | 0x01); break;
+ case 3: i2c_send_byte( m_iic.regs.iicds & 0xFE); break;
}
m_iic.timer->adjust( attotime::from_usec( 1));
}
void S3C24_CLASS_NAME::iic_stop()
{
- verboselog( *this, 1, "IIC stop\n");
+ verboselog(*this, 1, "IIC stop\n");
i2c_send_stop();
- m_iic.timer->adjust( attotime::never);
+ m_iic.timer->adjust(attotime::never);
}
void S3C24_CLASS_NAME::iic_resume()
{
int mode_selection;
- verboselog( *this, 1, "IIC resume\n");
- mode_selection = BITS( m_iic.regs.iicstat, 7, 6);
+ verboselog(*this, 1, "IIC resume\n");
+ mode_selection = BITS(m_iic.regs.iicstat, 7, 6);
switch (mode_selection)
{
- case 2 : m_iic.regs.iicds = i2c_receive_byte( BIT( m_iic.regs.iiccon, 7)); break;
- case 3 : i2c_send_byte( m_iic.regs.iicds & 0xFF); break;
+ case 2: m_iic.regs.iicds = i2c_receive_byte(BIT( m_iic.regs.iiccon, 7)); break;
+ case 3: i2c_send_byte( m_iic.regs.iicds & 0xFF); break;
}
- m_iic.timer->adjust( attotime::from_usec( 1));
+ m_iic.timer->adjust(attotime::from_usec(1));
}
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_iic_r )
@@ -2419,28 +2213,26 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_iic_r )
uint32_t data = ((uint32_t*)&m_iic.regs)[offset];
switch (offset)
{
- case S3C24XX_IICSTAT :
- {
- data = data & ~0x0000000F;
- }
+ case S3C24XX_IICSTAT:
+ data = data & ~0x0000000F;
break;
}
- verboselog( *this, 9, "(IIC) %08X -> %08X\n", S3C24XX_BASE_IIC + (offset << 2), data);
+ verboselog(*this, 9, "(IIC) %08X -> %08X\n", S3C24XX_BASE_IIC + (offset << 2), data);
return data;
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_iic_w )
{
uint32_t old_value = ((uint32_t*)&m_iic.regs)[offset];
- verboselog( *this, 9, "(IIC) %08X <- %08X\n", S3C24XX_BASE_IIC + (offset << 2), data);
+ verboselog(*this, 9, "(IIC) %08X <- %08X\n", S3C24XX_BASE_IIC + (offset << 2), data);
COMBINE_DATA(&((uint32_t*)&m_iic.regs)[offset]);
switch (offset)
{
- case S3C24XX_IICCON :
+ case S3C24XX_IICCON:
{
int interrupt_pending_flag;
#if 0
- const int div_table[] = { 16, 512};
+ static constexpr int div_table[] = { 16, 512 };
int enable_interrupt, transmit_clock_value, tx_clock_source_selection
double clock;
transmit_clock_value = (data >> 0) & 0xF;
@@ -2448,14 +2240,14 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_iic_w )
enable_interrupt = (data >> 5) & 1;
clock = (double)s3c24xx_get_pclk() / div_table[tx_clock_source_selection] / (transmit_clock_value + 1);
#endif
- interrupt_pending_flag = BIT( old_value, 4);
+ interrupt_pending_flag = BIT(old_value, 4);
if (interrupt_pending_flag != 0)
{
- interrupt_pending_flag = BIT( data, 4);
+ interrupt_pending_flag = BIT(data, 4);
if (interrupt_pending_flag == 0)
{
int start_stop_condition;
- start_stop_condition = BIT( m_iic.regs.iicstat, 5);
+ start_stop_condition = BIT(m_iic.regs.iicstat, 5);
if (start_stop_condition != 0)
{
if (m_iic.count == 0)
@@ -2476,7 +2268,7 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_iic_w )
}
}
break;
- case S3C24XX_IICSTAT :
+ case S3C24XX_IICSTAT:
{
int interrupt_pending_flag;
m_iic.count = 0;
@@ -2510,9 +2302,9 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_iic_w )
TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_iic_timer_exp )
{
int enable_interrupt;
- verboselog( *this, 2, "IIC timer callback\n");
+ verboselog(*this, 2, "IIC timer callback\n");
m_iic.count++;
- enable_interrupt = BIT( m_iic.regs.iiccon, 5);
+ enable_interrupt = BIT(m_iic.regs.iiccon, 5);
if (enable_interrupt)
{
m_iic.regs.iiccon |= (1 << 4); // [bit 4] interrupt is pending
@@ -2522,21 +2314,10 @@ TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_iic_timer_exp )
/* IIS */
-void S3C24_CLASS_NAME::s3c24xx_iis_reset()
-{
- s3c24xx_iis_t *iis = &m_iis;
- memset( &iis->regs, 0, sizeof( iis->regs));
- iis->fifo_index = 0;
- iis->regs.iiscon = 0x0100;
- iis->timer->adjust( attotime::never);
-}
-
void S3C24_CLASS_NAME::iface_i2s_data_w(int ch, uint16_t data)
{
if (!m_data_w_cb.isnull())
- {
- (m_data_w_cb)( ch, data, 0);
- }
+ (m_data_w_cb)(ch, data, 0);
}
void S3C24_CLASS_NAME::s3c24xx_iis_start()
@@ -2563,14 +2344,10 @@ void S3C24_CLASS_NAME::s3c24xx_iis_stop()
void S3C24_CLASS_NAME::s3c24xx_iis_recalc()
{
- if ((m_iis.regs.iiscon & (1 << 0)) != 0)
- {
+ if (BIT(m_iis.regs.iiscon, 0))
s3c24xx_iis_start();
- }
else
- {
s3c24xx_iis_stop();
- }
}
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_iis_r )
@@ -2579,48 +2356,40 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_iis_r )
#if 0
switch (offset)
{
- case S3C24XX_IISCON :
- {
- data = data & ~1; // hack for mp3 player
- }
+ case iis_t::IISCON :
+ data = data & ~1; // hack for mp3 player
break;
}
#endif
- verboselog( *this, 9, "(IIS) %08X -> %08X\n", S3C24XX_BASE_IIS + (offset << 2), data);
+ verboselog(*this, 9, "(IIS) %08X -> %08X\n", S3C24XX_BASE_IIS + (offset << 2), data);
return data;
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_iis_w )
{
uint32_t old_value = ((uint32_t*)&m_iis.regs)[offset];
- verboselog( *this, 9, "(IIS) %08X <- %08X\n", S3C24XX_BASE_IIS + (offset << 2), data);
+ verboselog(*this, 9, "(IIS) %08X <- %08X\n", S3C24XX_BASE_IIS + (offset << 2), data);
COMBINE_DATA(&((uint32_t*)&m_iis.regs)[offset]);
switch (offset)
{
- case S3C24XX_IISCON :
+ case iis_t::IISCON :
+ if (BIT(data ^ old_value, 0))
+ s3c24xx_iis_recalc();
+ break;
+ case iis_t::IISFIFO :
+ if (ACCESSING_BITS_16_31)
{
- if ((old_value & (1 << 0)) != (data & (1 << 0)))
- {
- s3c24xx_iis_recalc();
- }
+ m_iis.fifo[m_iis.fifo_index++] = BITS(data, 31, 16);
}
- break;
- case S3C24XX_IISFIFO :
+ if (ACCESSING_BITS_0_15)
{
- if (ACCESSING_BITS_16_31)
- {
- m_iis.fifo[m_iis.fifo_index++] = BITS( data, 31, 16);
- }
- if (ACCESSING_BITS_0_15)
- {
- m_iis.fifo[m_iis.fifo_index++] = BITS( data, 15, 0);
- }
- if (m_iis.fifo_index == 2)
- {
- m_iis.fifo_index = 0;
- iface_i2s_data_w( 0, m_iis.fifo[0]);
- iface_i2s_data_w( 1, m_iis.fifo[1]);
- }
+ m_iis.fifo[m_iis.fifo_index++] = BITS(data, 15, 0);
+ }
+ if (m_iis.fifo_index == 2)
+ {
+ m_iis.fifo_index = 0;
+ iface_i2s_data_w(0, m_iis.fifo[0]);
+ iface_i2s_data_w(1, m_iis.fifo[1]);
}
break;
}
@@ -2628,22 +2397,12 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_iis_w )
TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_iis_timer_exp )
{
- verboselog( *this, 2, "IIS timer callback\n");
+ verboselog(*this, 2, "IIS timer callback\n");
s3c24xx_dma_request_iis();
}
/* RTC */
-void S3C24_CLASS_NAME::s3c24xx_rtc_reset()
-{
- s3c24xx_rtc_t *rtc = &m_rtc;
- memset( &rtc->regs, 0, sizeof( rtc->regs));
- rtc->regs.almday = 1;
- rtc->regs.almmon = 1;
- rtc->timer_update->adjust( attotime::never);
- rtc->timer_update->adjust( attotime::from_msec( 1000), 0, attotime::from_msec( 1000));
-}
-
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_rtc_r )
{
uint32_t data = ((uint32_t*)&m_rtc.regs)[offset];
@@ -2651,109 +2410,39 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_rtc_r )
return data;
}
-void S3C24_CLASS_NAME::s3c24xx_rtc_recalc()
-{
- if (m_rtc.regs.ticnt & (1 << 7))
- {
- uint32_t ttc;
- double freq;
- ttc = BITS( m_rtc.regs.ticnt, 6, 0);
- freq = 128 / (ttc + 1);
-// printf( "ttc %d freq %f\n", ttc, freq);
- m_rtc.timer_tick_count->adjust( attotime::from_hz( freq), 0, attotime::from_hz( freq));
- }
- else
- {
- m_rtc.timer_tick_count->adjust( attotime::never);
- }
-}
-
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_rtc_w )
{
verboselog( *this, 9, "(RTC) %08X <- %08X\n", S3C24XX_BASE_RTC + (offset << 2), data);
COMBINE_DATA(&((uint32_t*)&m_rtc.regs)[offset]);
switch (offset)
{
- case S3C24XX_TICNT :
- {
- s3c24xx_rtc_recalc();
- }
+ case rtc_t::TICNT :
+ m_rtc.recalc();
break;
}
}
TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_rtc_timer_tick_count_exp )
{
- verboselog( *this, 2, "RTC timer callback (tick count)\n");
- s3c24xx_request_irq( S3C24XX_INT_TICK);
+ verboselog(*this, 2, "RTC timer callback (tick count)\n");
+ s3c24xx_request_irq(S3C24XX_INT_TICK);
}
void S3C24_CLASS_NAME::s3c24xx_rtc_update()
{
- uint32_t bcdday_max;
- // increase second
- m_rtc.regs.bcdsec = bcd_adjust( m_rtc.regs.bcdsec + 1);
- if (m_rtc.regs.bcdsec >= 0x60)
- {
- m_rtc.regs.bcdsec = 0;
- // increase minute
- m_rtc.regs.bcdmin = bcd_adjust( m_rtc.regs.bcdmin + 1);
- if (m_rtc.regs.bcdmin >= 0x60)
- {
- m_rtc.regs.bcdmin = 0;
- // increase hour
- m_rtc.regs.bcdhour = bcd_adjust( m_rtc.regs.bcdhour + 1);
- if (m_rtc.regs.bcdhour >= 0x24)
- {
- m_rtc.regs.bcdhour = 0;
- // increase day-of-week
- m_rtc.regs.bcddow = (m_rtc.regs.bcddow % 7) + 1;
- // increase day
- m_rtc.regs.bcdday = bcd_adjust( m_rtc.regs.bcdday + 1);
- bcdday_max = dec_2_bcd( gregorian_days_in_month( bcd_2_dec( m_rtc.regs.bcdmon), bcd_2_dec( m_rtc.regs.bcdyear) + 2000));
- if (m_rtc.regs.bcdday > bcdday_max)
- {
- m_rtc.regs.bcdday = 1;
- // increase month
- m_rtc.regs.bcdmon = bcd_adjust( m_rtc.regs.bcdmon + 1);
- if (m_rtc.regs.bcdmon >= 0x12)
- {
- m_rtc.regs.bcdmon = 1;
- // increase year
- m_rtc.regs.bcdyear = bcd_adjust( m_rtc.regs.bcdyear + 1);
- if (m_rtc.regs.bcdyear >= 0x100)
- {
- m_rtc.regs.bcdyear = 0;
- }
- }
- }
- }
- }
- }
+ m_rtc.update();
verboselog( *this, 5, "RTC - %04d/%02d/%02d %02d:%02d:%02d\n", bcd_2_dec( m_rtc.regs.bcdyear) + 2000, bcd_2_dec( m_rtc.regs.bcdmon), bcd_2_dec( m_rtc.regs.bcdday), bcd_2_dec( m_rtc.regs.bcdhour), bcd_2_dec( m_rtc.regs.bcdmin), bcd_2_dec( m_rtc.regs.bcdsec));
}
void S3C24_CLASS_NAME::s3c24xx_rtc_check_alarm()
{
- if (m_rtc.regs.rtcalm & 0x40)
- {
- int isalarm = 1;
- isalarm = isalarm && (((m_rtc.regs.rtcalm & 0x20) == 0) || (m_rtc.regs.almyear == m_rtc.regs.bcdyear));
- isalarm = isalarm && (((m_rtc.regs.rtcalm & 0x10) == 0) || (m_rtc.regs.almmon == m_rtc.regs.bcdmon));
- isalarm = isalarm && (((m_rtc.regs.rtcalm & 0x08) == 0) || (m_rtc.regs.almday == m_rtc.regs.bcdday));
- isalarm = isalarm && (((m_rtc.regs.rtcalm & 0x04) == 0) || (m_rtc.regs.almhour == m_rtc.regs.bcdhour));
- isalarm = isalarm && (((m_rtc.regs.rtcalm & 0x02) == 0) || (m_rtc.regs.almmin == m_rtc.regs.bcdmin));
- isalarm = isalarm && (((m_rtc.regs.rtcalm & 0x01) == 0) || (m_rtc.regs.almsec == m_rtc.regs.bcdsec));
- if (isalarm != 0)
- {
- s3c24xx_request_irq(S3C24XX_INT_RTC);
- }
- }
+ if (m_rtc.check_alarm())
+ s3c24xx_request_irq(S3C24XX_INT_RTC);
}
TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_rtc_timer_update_exp )
{
- verboselog( *this, 2, "RTC timer callback (update)\n");
+ verboselog(*this, 2, "RTC timer callback (update)\n");
s3c24xx_rtc_update();
s3c24xx_rtc_check_alarm();
}
@@ -2762,13 +2451,12 @@ TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_rtc_timer_update_exp )
void S3C24_CLASS_NAME::s3c24xx_adc_reset()
{
- s3c24xx_adc_t *adc = &m_adc;
- memset( &adc->regs, 0, sizeof( adc->regs));
- adc->regs.adccon = 0x3FC4;
- #if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
- adc->regs.adctsc = 0x58;
- adc->regs.adcdly = 0xFF;
- #endif
+ memset(&m_adc.regs, 0, sizeof(m_adc.regs));
+ m_adc.regs.adccon = 0x3FC4;
+#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
+ m_adc.regs.adctsc = 0x58;
+ m_adc.regs.adcdly = 0xFF;
+#endif
}
uint32_t S3C24_CLASS_NAME::iface_adc_data_r(int ch)
@@ -2776,13 +2464,13 @@ uint32_t S3C24_CLASS_NAME::iface_adc_data_r(int ch)
if (!m_data_r_cb.isnull())
{
int offs = ch;
- #if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
- if (BIT( m_adc.regs.adctsc, 2) != 0)
+#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
+ if (BIT(m_adc.regs.adctsc, 2) != 0)
{
offs += 2;
}
- #endif
- return (m_data_r_cb)(offs, 0);
+#endif
+ return m_data_r_cb(offs, 0);
}
else
{
@@ -2796,42 +2484,36 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_adc_r )
switch (offset)
{
#if defined(DEVICE_S3C2400)
- case S3C24XX_ADCDAT :
- {
- data = (data & ~0x3FF) | (iface_adc_data_r( 0) & 0x3FF);
- }
+ case S3C24XX_ADCDAT:
+ data = (data & ~0x3FF) | (iface_adc_data_r(0) & 0x3FF);
break;
#else
- case S3C24XX_ADCDAT0 :
- {
- data = (data & ~0x3FF) | (iface_adc_data_r( 0) & 0x3FF);
- }
+ case S3C24XX_ADCDAT0:
+ data = (data & ~0x3FF) | (iface_adc_data_r(0) & 0x3FF);
break;
- case S3C24XX_ADCDAT1 :
- {
- data = (data & ~0x3FF) | (iface_adc_data_r( 1) & 0x3FF);
- }
+ case S3C24XX_ADCDAT1:
+ data = (data & ~0x3FF) | (iface_adc_data_r(1) & 0x3FF);
break;
#endif
}
- verboselog( *this, 9, "(ADC) %08X -> %08X\n", S3C24XX_BASE_ADC + (offset << 2), data);
+ verboselog(*this, 9, "(ADC) %08X -> %08X\n", S3C24XX_BASE_ADC + (offset << 2), data);
return data;
}
void S3C24_CLASS_NAME::s3c24xx_adc_start()
{
- verboselog( *this, 1, "ADC start\n");
+ verboselog(*this, 1, "ADC start\n");
m_adc.regs.adccon &= ~(1 << 0); // A/D conversion is completed
m_adc.regs.adccon |= (1 << 15); // End of A/D conversion
- #if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
- s3c24xx_request_subirq( S3C24XX_SUBINT_ADC);
- #endif
+#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
+ s3c24xx_request_subirq(S3C24XX_SUBINT_ADC);
+#endif
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_adc_w )
{
uint32_t old_value = ((uint32_t*)&m_adc.regs)[offset];
- verboselog( *this, 9, "(ADC) %08X <- %08X\n", S3C24XX_BASE_ADC + (offset << 2), data);
+ verboselog(*this, 9, "(ADC) %08X <- %08X\n", S3C24XX_BASE_ADC + (offset << 2), data);
COMBINE_DATA(&((uint32_t*)&m_adc.regs)[offset]);
switch (offset)
{
@@ -2861,14 +2543,13 @@ void S3C24_CLASS_NAME::s3c24xx_touch_screen(int state)
void S3C24_CLASS_NAME::s3c24xx_spi_reset()
{
- for (auto & elem : m_spi)
+ for (spi_t &spi : m_spi)
{
- s3c24xx_spi_t *spi = &elem;
- memset( &spi->regs, 0, sizeof( spi->regs));
- spi->regs.spsta = 1;
- #if defined(DEVICE_S3C2400) || defined(DEVICE_S3C2410)
- spi->regs.sppin = 2;
- #endif
+ memset(&spi.regs, 0, sizeof(spi.regs));
+ spi.regs.spsta = 1;
+#if defined(DEVICE_S3C2400) || defined(DEVICE_S3C2410)
+ spi.regs.sppin = 2;
+#endif
}
}
@@ -2877,10 +2558,8 @@ uint32_t S3C24_CLASS_NAME::s3c24xx_spi_r(uint32_t ch, uint32_t offset)
uint32_t data = ((uint32_t*)&m_spi[ch].regs)[offset];
switch (offset)
{
- case S3C24XX_SPSTA :
- {
- data = data | (1 << 0); // [bit 0] Transfer Ready Flag
- }
+ case spi_t::SPSTA :
+ data = data | (1 << 0); // [bit 0] Transfer Ready Flag
break;
}
return data;
@@ -2893,8 +2572,8 @@ void S3C24_CLASS_NAME::s3c24xx_spi_w(uint32_t ch, uint32_t offset, uint32_t data
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_spi_0_r )
{
- uint32_t data = s3c24xx_spi_r( 0, offset);
- verboselog( *this, 9, "(SPI 0) %08X -> %08X\n", S3C24XX_BASE_SPI_0 + (offset << 2), data);
+ uint32_t data = s3c24xx_spi_r(0, offset);
+ verboselog(*this, 9, "(SPI 0) %08X -> %08X\n", S3C24XX_BASE_SPI_0 + (offset << 2), data);
return data;
}
@@ -2902,8 +2581,8 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_spi_0_r )
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_spi_1_r )
{
- uint32_t data = s3c24xx_spi_r( 1, offset);
- verboselog( *this, 9, "(SPI 1) %08X -> %08X\n", S3C24XX_BASE_SPI_1 + (offset << 2), data);
+ uint32_t data = s3c24xx_spi_r(1, offset);
+ verboselog(*this, 9, "(SPI 1) %08X -> %08X\n", S3C24XX_BASE_SPI_1 + (offset << 2), data);
return data;
}
@@ -2929,22 +2608,16 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_spi_1_w )
#if defined(DEVICE_S3C2400)
-void S3C24_CLASS_NAME::s3c24xx_mmc_reset()
-{
- s3c24xx_mmc_t *mmc = &m_mmc;
- memset( &mmc->regs, 0, sizeof( mmc->regs));
-}
-
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_mmc_r )
{
uint32_t data = m_mmc.regs.data[offset];
- verboselog( *this, 9, "(MMC) %08X -> %08X\n", S3C24XX_BASE_MMC + (offset << 2), data);
+ verboselog(*this, 9, "(MMC) %08X -> %08X\n", S3C24XX_BASE_MMC + (offset << 2), data);
return data;
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_mmc_w )
{
- verboselog( *this, 9, "(MMC) %08X <- %08X\n", S3C24XX_BASE_MMC + (offset << 2), data);
+ verboselog(*this, 9, "(MMC) %08X <- %08X\n", S3C24XX_BASE_MMC + (offset << 2), data);
COMBINE_DATA(&m_mmc.regs.data[offset]);
}
@@ -2956,14 +2629,13 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_mmc_w )
void S3C24_CLASS_NAME::s3c24xx_sdi_reset()
{
- s3c24xx_sdi_t *sdi = &m_sdi;
- memset( &sdi->regs, 0, sizeof( sdi->regs));
- #if defined(DEVICE_S3C2410)
- sdi->regs.data[0x24/4] = 0x2000;
- #elif defined(DEVICE_S3C2440)
- sdi->regs.data[0x04/4] = 1;
- sdi->regs.data[0x24/4] = 0x10000;
- #endif
+ memset(&m_sdi.regs, 0, sizeof(m_sdi.regs));
+#if defined(DEVICE_S3C2410)
+ m_sdi.regs.data[0x24/4] = 0x2000;
+#elif defined(DEVICE_S3C2440)
+ m_sdi.regs.data[0x04/4] = 1;
+ m_sdi.regs.data[0x24/4] = 0x10000;
+#endif
}
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_sdi_r )
@@ -2987,19 +2659,18 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_sdi_w )
void S3C24_CLASS_NAME::s3c24xx_nand_reset()
{
- s3c24xx_nand_t *nand = &m_nand;
- memset( &nand->regs, 0, sizeof( nand->regs));
- #if defined(DEVICE_S3C2440)
- nand->regs.nfconf = 0x1000;
- nand->regs.nfcont = 0x0384;
- #endif
+ memset(&m_nand.regs, 0, sizeof(m_nand.regs));
+#if defined(DEVICE_S3C2440)
+ m_nand.regs.nfconf = 0x1000;
+ m_nand.regs.nfcont = 0x0384;
+#endif
}
void S3C24_CLASS_NAME::iface_nand_command_w(uint8_t data)
{
if (!m_command_w_cb.isnull())
{
- (m_command_w_cb)( 0, data, 0xff);
+ m_command_w_cb(0, data, 0xff);
}
}
@@ -3007,31 +2678,25 @@ void S3C24_CLASS_NAME::iface_nand_address_w(uint8_t data)
{
if (!m_address_w_cb.isnull())
{
- (m_address_w_cb)( 0, data, 0xff);
+ m_address_w_cb(0, data, 0xff);
}
}
uint8_t S3C24_CLASS_NAME::iface_nand_data_r()
{
if (!m_nand_data_r_cb.isnull())
- {
- return (m_nand_data_r_cb)( 0, 0xff);
- }
+ return m_nand_data_r_cb(0, 0xff);
else
- {
return 0;
- }
}
void S3C24_CLASS_NAME::iface_nand_data_w(uint8_t data)
{
if (!m_nand_data_w_cb.isnull())
- {
- (m_nand_data_w_cb)(0, data, 0xff);
- }
+ m_nand_data_w_cb(0, data, 0xff);
}
-void S3C24_CLASS_NAME::nand_update_mecc( uint8_t *ecc, int pos, uint8_t data)
+void S3C24_CLASS_NAME::nand_update_mecc(uint8_t *ecc, int pos, uint8_t data)
{
int bit[8];
uint8_t temp;
@@ -3098,40 +2763,41 @@ void S3C24_CLASS_NAME::nand_update_secc( uint8_t *ecc, int pos, uint8_t data)
void S3C24_CLASS_NAME::s3c24xx_nand_update_ecc(uint8_t data)
{
- s3c24xx_nand_t *nand = &m_nand;
uint8_t temp[4];
#if defined(DEVICE_S3C2410)
- temp[0] = nand->mecc[0];
- temp[1] = nand->mecc[1];
- temp[2] = nand->mecc[2];
- nand_update_mecc( nand->mecc, nand->ecc_pos++, data);
- verboselog( *this, 5, "NAND - MECC %03X - %02X %02X %02X -> %02X %02X %02X\n", nand->ecc_pos - 1, temp[0], temp[1], temp[2], nand->mecc[0], nand->mecc[1], nand->mecc[2]);
- if (nand->ecc_pos == 512) nand->ecc_pos = 0;
+ temp[0] = m_nand.mecc[0];
+ temp[1] = m_nand.mecc[1];
+ temp[2] = m_nand.mecc[2];
+ nand_update_mecc(m_nand.mecc, m_nand.ecc_pos++, data);
+ verboselog(*this, 5, "NAND - MECC %03X - %02X %02X %02X -> %02X %02X %02X\n", m_nand.ecc_pos - 1, temp[0], temp[1], temp[2], m_nand.mecc[0], m_nand.mecc[1], m_nand.mecc[2]);
+ if (m_nand.ecc_pos == 512)
+ m_nand.ecc_pos = 0;
#else
- if ((nand->regs.nfcont & (1 << 5)) == 0)
+ if (!BIT(m_nand.regs.nfcont, 5))
{
- temp[0] = nand->mecc[0];
- temp[1] = nand->mecc[1];
- temp[2] = nand->mecc[2];
- temp[3] = nand->mecc[3];
- nand_update_mecc( nand->mecc, nand->ecc_pos++, data);
- verboselog( *this, 5, "NAND - MECC %03X - %02X %02X %02X %02X -> %02X %02X %02X %02X\n", nand->ecc_pos - 1, temp[0], temp[1], temp[2], temp[3], nand->mecc[0], nand->mecc[1], nand->mecc[2], nand->mecc[3]);
- if (nand->ecc_pos == 2048) nand->ecc_pos = 0;
+ temp[0] = m_nand.mecc[0];
+ temp[1] = m_nand.mecc[1];
+ temp[2] = m_nand.mecc[2];
+ temp[3] = m_nand.mecc[3];
+ nand_update_mecc( m_nand.mecc, m_nand.ecc_pos++, data);
+ verboselog( *this, 5, "NAND - MECC %03X - %02X %02X %02X %02X -> %02X %02X %02X %02X\n", m_nand.ecc_pos - 1, temp[0], temp[1], temp[2], temp[3], m_nand.mecc[0], m_nand.mecc[1], m_nand.mecc[2], m_nand.mecc[3]);
+ if (m_nand.ecc_pos == 2048) m_nand.ecc_pos = 0;
}
- if ((nand->regs.nfcont & (1 << 6)) == 0)
+ if (!BIT(m_nand.regs.nfcont, 6))
{
- temp[0] = nand->secc[0];
- temp[1] = nand->secc[1];
- nand_update_secc( nand->secc, nand->ecc_pos++, data);
- verboselog( *this, 5, "NAND - SECC %02X - %02X %02X -> %02X %02X\n", nand->ecc_pos - 1, temp[0], temp[1], nand->secc[0], nand->secc[1]);
- if (nand->ecc_pos == 16) nand->ecc_pos = 0;
+ temp[0] = m_nand.secc[0];
+ temp[1] = m_nand.secc[1];
+ nand_update_secc(m_nand.secc, m_nand.ecc_pos++, data);
+ verboselog( *this, 5, "NAND - SECC %02X - %02X %02X -> %02X %02X\n", m_nand.ecc_pos - 1, temp[0], temp[1], m_nand.secc[0], m_nand.secc[1]);
+ if (m_nand.ecc_pos == 16)
+ m_nand.ecc_pos = 0;
}
#endif
}
void S3C24_CLASS_NAME::s3c24xx_nand_command_w(uint8_t data)
{
- verboselog( *this, 5, "NAND write command %02X\n", data);
+ verboselog(*this, 5, "NAND write command %02X\n", data);
m_nand.data_count = 0;
iface_nand_command_w( data);
}
@@ -3163,50 +2829,38 @@ READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_nand_r )
uint32_t data = ((uint32_t*)&m_nand.regs)[offset];
switch (offset)
{
- case S3C24XX_NFDATA :
- {
- data = 0;
- #if defined(DEVICE_S3C2410)
- data = data | s3c24xx_nand_data_r();
- #elif defined(DEVICE_S3C2440)
- if ((mem_mask & 0x000000FF) != 0) data = data | (s3c24xx_nand_data_r() << 0);
- if ((mem_mask & 0x0000FF00) != 0) data = data | (s3c24xx_nand_data_r() << 8);
- if ((mem_mask & 0x00FF0000) != 0) data = data | (s3c24xx_nand_data_r() << 16);
- if ((mem_mask & 0xFF000000) != 0) data = data | (s3c24xx_nand_data_r() << 24);
- #endif
- }
+ case S3C24XX_NFDATA:
+ data = 0;
+#if defined(DEVICE_S3C2410)
+ data = data | s3c24xx_nand_data_r();
+#elif defined(DEVICE_S3C2440)
+ if ((mem_mask & 0x000000FF) != 0) data = data | (s3c24xx_nand_data_r() << 0);
+ if ((mem_mask & 0x0000FF00) != 0) data = data | (s3c24xx_nand_data_r() << 8);
+ if ((mem_mask & 0x00FF0000) != 0) data = data | (s3c24xx_nand_data_r() << 16);
+ if ((mem_mask & 0xFF000000) != 0) data = data | (s3c24xx_nand_data_r() << 24);
+#endif
break;
#if defined(DEVICE_S3C2410)
- case S3C24XX_NFECC :
- {
- data = ((m_nand.mecc[2] << 16) | (m_nand.mecc[1] << 8) | (m_nand.mecc[0] << 0));
- }
+ case S3C24XX_NFECC :
+ data = ((m_nand.mecc[2] << 16) | (m_nand.mecc[1] << 8) | (m_nand.mecc[0] << 0));
break;
#endif
#if defined(DEVICE_S3C2440)
- case S3C24XX_NFMECC0 :
- {
- data = (m_nand.mecc[3] << 24) | (m_nand.mecc[2] << 16) | (m_nand.mecc[1] << 8) | (m_nand.mecc[0] << 0);
- }
+ case S3C24XX_NFMECC0 :
+ data = (m_nand.mecc[3] << 24) | (m_nand.mecc[2] << 16) | (m_nand.mecc[1] << 8) | (m_nand.mecc[0] << 0);
break;
- case S3C24XX_NFSECC :
- {
- data = (m_nand.secc[1] << 8) | (m_nand.secc[0] << 0);
- }
+ case S3C24XX_NFSECC :
+ data = (m_nand.secc[1] << 8) | (m_nand.secc[0] << 0);
break;
- case S3C24XX_NFESTAT0 :
- {
- data &= ~0x000000F; // no main/spare ECC errors
- }
+ case S3C24XX_NFESTAT0 :
+ data &= ~0x000000F; // no main/spare ECC errors
break;
- case S3C24XX_NFESTAT1 :
- {
- data &= ~0x000000F; // no main/spare ECC errors
- }
+ case S3C24XX_NFESTAT1 :
+ data &= ~0x000000F; // no main/spare ECC errors
break;
#endif
}
- verboselog( *this, 9, "(NAND) %08X -> %08X (%08X)\n", S3C24XX_BASE_NAND + (offset << 2), data, mem_mask);
+ verboselog(*this, 9, "(NAND) %08X -> %08X (%08X)\n", S3C24XX_BASE_NAND + (offset << 2), data, mem_mask);
return data;
}
@@ -3216,11 +2870,11 @@ void S3C24_CLASS_NAME::s3c24xx_nand_init_ecc()
m_nand.mecc[0] = 0xFF;
m_nand.mecc[1] = 0xFF;
m_nand.mecc[2] = 0xFF;
- #if defined(DEVICE_S3C2440)
+#if defined(DEVICE_S3C2440)
m_nand.mecc[3] = 0xFF;
m_nand.secc[0] = 0;
m_nand.secc[1] = 0;
- #endif
+#endif
m_nand.ecc_pos = 0;
}
@@ -3232,57 +2886,39 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_nand_w )
switch (offset)
{
#if defined(DEVICE_S3C2410)
- case S3C24XX_NFCONF :
- {
- if ((data & (1 << 12)) != 0)
- {
- s3c24xx_nand_init_ecc();
- }
- }
+ case S3C24XX_NFCONF:
+ if ((data & (1 << 12)) != 0)
+ s3c24xx_nand_init_ecc();
break;
#endif
#if defined(DEVICE_S3C2440)
- case S3C24XX_NFCONT :
- {
- if ((data & (1 << 4)) != 0)
- {
- s3c24xx_nand_init_ecc();
- }
- }
+ case S3C24XX_NFCONT:
+ if ((data & (1 << 4)) != 0)
+ s3c24xx_nand_init_ecc();
break;
#endif
- case S3C24XX_NFSTAT :
- {
- m_nand.regs.nfstat = (m_nand.regs.nfstat & ~0x03) | (old_value & 0x03); // read-only
+ case S3C24XX_NFSTAT:
+ m_nand.regs.nfstat = (m_nand.regs.nfstat & ~0x03) | (old_value & 0x03); // read-only
#if defined(DEVICE_S3C2440)
- if ((data & (1 << 2)) != 0)
- {
- m_nand.regs.nfstat &= ~(1 << 2); // "RnB_TransDetect, to clear this value write 1"
- }
+ if ((data & (1 << 2)) != 0)
+ m_nand.regs.nfstat &= ~(1 << 2); // "RnB_TransDetect, to clear this value write 1"
#endif
- }
break;
- case S3C24XX_NFCMD :
- {
- s3c24xx_nand_command_w(data);
- }
+ case S3C24XX_NFCMD:
+ s3c24xx_nand_command_w(data);
break;
- case S3C24XX_NFADDR :
- {
- s3c24xx_nand_address_w(data);
- }
+ case S3C24XX_NFADDR:
+ s3c24xx_nand_address_w(data);
break;
- case S3C24XX_NFDATA :
- {
- #if defined(DEVICE_S3C2410)
- s3c24xx_nand_data_w(data & 0xFF);
- #elif defined(DEVICE_S3C2440)
- if ((mem_mask & 0x000000FF) != 0) s3c24xx_nand_data_w((data >> 0) & 0xFF);
- if ((mem_mask & 0x0000FF00) != 0) s3c24xx_nand_data_w((data >> 8) & 0xFF);
- if ((mem_mask & 0x00FF0000) != 0) s3c24xx_nand_data_w((data >> 16) & 0xFF);
- if ((mem_mask & 0xFF000000) != 0) s3c24xx_nand_data_w((data >> 24) & 0xFF);
- #endif
- }
+ case S3C24XX_NFDATA:
+#if defined(DEVICE_S3C2410)
+ s3c24xx_nand_data_w(data & 0xFF);
+#elif defined(DEVICE_S3C2440)
+ if ((mem_mask & 0x000000FF) != 0) s3c24xx_nand_data_w((data >> 0) & 0xFF);
+ if ((mem_mask & 0x0000FF00) != 0) s3c24xx_nand_data_w((data >> 8) & 0xFF);
+ if ((mem_mask & 0x00FF0000) != 0) s3c24xx_nand_data_w((data >> 16) & 0xFF);
+ if ((mem_mask & 0xFF000000) != 0) s3c24xx_nand_data_w((data >> 24) & 0xFF);
+#endif
break;
}
}
@@ -3295,19 +2931,13 @@ ATTR_UNUSED WRITE_LINE_MEMBER( S3C24_CLASS_NAME::s3c24xx_pin_frnb_w )
{
m_nand.regs.nfstat |= (1 << 2);
if (BIT( m_nand.regs.nfcont, 9) != 0)
- {
s3c24xx_request_irq( S3C24XX_INT_NFCON);
- }
}
#endif
if (state == 0)
- {
m_nand.regs.nfstat &= ~(1 << 0);
- }
else
- {
m_nand.regs.nfstat |= (1 << 0);
- }
}
#endif
@@ -3316,22 +2946,16 @@ ATTR_UNUSED WRITE_LINE_MEMBER( S3C24_CLASS_NAME::s3c24xx_pin_frnb_w )
#if defined(DEVICE_S3C2440)
-void S3C24_CLASS_NAME::s3c24xx_cam_reset()
-{
- s3c24xx_cam_t *cam = &m_cam;
- memset( &cam->regs, 0, sizeof( cam->regs));
-}
-
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_cam_r )
{
uint32_t data = m_cam.regs.data[offset];
- verboselog( *this, 9, "(CAM) %08X -> %08X\n", S3C24XX_BASE_CAM + (offset << 2), data);
+ verboselog(*this, 9, "(CAM) %08X -> %08X\n", S3C24XX_BASE_CAM + (offset << 2), data);
return data;
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_cam_w )
{
- verboselog( *this, 9, "(CAM) %08X <- %08X\n", S3C24XX_BASE_CAM + (offset << 2), data);
+ verboselog(*this, 9, "(CAM) %08X <- %08X\n", S3C24XX_BASE_CAM + (offset << 2), data);
COMBINE_DATA(&m_cam.regs.data[offset]);
}
@@ -3341,22 +2965,16 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_cam_w )
#if defined(DEVICE_S3C2440)
-void S3C24_CLASS_NAME::s3c24xx_ac97_reset()
-{
- s3c24xx_ac97_t *ac97 = &m_ac97;
- memset( &ac97->regs, 0, sizeof( ac97->regs));
-}
-
READ32_MEMBER( S3C24_CLASS_NAME::s3c24xx_ac97_r )
{
uint32_t data = m_ac97.regs.data[offset];
- verboselog( *this, 9, "(AC97) %08X -> %08X\n", S3C24XX_BASE_AC97 + (offset << 2), data);
+ verboselog(*this, 9, "(AC97) %08X -> %08X\n", S3C24XX_BASE_AC97 + (offset << 2), data);
return data;
}
WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_ac97_w )
{
- verboselog( *this, 9, "(AC97) %08X <- %08X\n", S3C24XX_BASE_AC97 + (offset << 2), data);
+ verboselog(*this, 9, "(AC97) %08X <- %08X\n", S3C24XX_BASE_AC97 + (offset << 2), data);
COMBINE_DATA(&m_ac97.regs.data[offset]);
}
@@ -3368,24 +2986,20 @@ WRITE32_MEMBER( S3C24_CLASS_NAME::s3c24xx_ac97_w )
void S3C24_CLASS_NAME::s3c24xx_nand_auto_boot()
{
- int om0 = iface_core_pin_r( S3C24XX_CORE_PIN_OM0);
- int om1 = iface_core_pin_r( S3C24XX_CORE_PIN_OM1);
+ int om0 = iface_core_pin_r(S3C24XX_CORE_PIN_OM0);
+ int om1 = iface_core_pin_r(S3C24XX_CORE_PIN_OM1);
if ((om0 == 0) && (om1 == 0))
{
- int ncon = iface_core_pin_r( S3C24XX_CORE_PIN_NCON);
+ int ncon = iface_core_pin_r(S3C24XX_CORE_PIN_NCON);
uint8_t *ptr = m_steppingstone;
int page_size, address_cycle;
- #if defined(DEVICE_S3C2410)
+#if defined(DEVICE_S3C2410)
page_size = 512;
if (ncon == 0)
- {
address_cycle = 3; // byte-page-page
- }
else
- {
address_cycle = 4; // byte-page-page-page
- }
- #elif defined(DEVICE_S3C2440)
+#elif defined(DEVICE_S3C2440)
uint32_t port_g = iface_gpio_port_r( S3C24XX_GPIO_PORT_G, 0);
if (ncon == 0)
{
@@ -3413,28 +3027,28 @@ void S3C24_CLASS_NAME::s3c24xx_nand_auto_boot()
address_cycle = 5; // byte-byte-page-page-page
}
}
- #endif
- iface_nand_command_w( 0xFF);
+#endif
+ iface_nand_command_w(0xFF);
for (int page = 0; page < (4 * 1024) / page_size; page++)
{
- iface_nand_command_w( 0x00);
- iface_nand_address_w( 0x00);
+ iface_nand_command_w(0x00);
+ iface_nand_address_w(0x00);
if (address_cycle > 4)
{
- iface_nand_address_w( 0x00);
+ iface_nand_address_w(0x00);
}
- iface_nand_address_w( (page >> 0) & 0xFF);
- iface_nand_address_w( (page >> 8) & 0xFF);
+ iface_nand_address_w((page >> 0) & 0xFF);
+ iface_nand_address_w((page >> 8) & 0xFF);
if (address_cycle > 3)
{
- iface_nand_address_w( (page >> 16) & 0xFF);
+ iface_nand_address_w((page >> 16) & 0xFF);
}
for (int i = 0; i < page_size; i++)
{
*ptr++ = iface_nand_data_r();
}
}
- iface_nand_command_w( 0xFF);
+ iface_nand_command_w(0xFF);
}
}
@@ -3443,41 +3057,42 @@ void S3C24_CLASS_NAME::s3c24xx_nand_auto_boot()
void S3C24_CLASS_NAME::s3c24xx_device_reset()
{
verboselog( *this, 1, "s3c24xx device reset\n");
- s3c24xx_uart_reset( );
- s3c24xx_pwm_reset();
+ for (uart_t &uart : m_uart)
+ uart.reset();
+ m_pwm.reset();
s3c24xx_dma_reset();
s3c24xx_iic_reset();
- s3c24xx_iis_reset();
+ m_iis.reset();
s3c24xx_lcd_reset();
- s3c24xx_rtc_reset();
- s3c24xx_wdt_reset();
+ m_rtc.reset();
+ m_wdt.reset();
s3c24xx_irq_reset();
s3c24xx_gpio_reset();
- s3c24xx_memcon_reset();
+ m_memcon.reset();
s3c24xx_clkpow_reset();
- s3c24xx_usb_host_reset();
+ m_usbhost.reset();
s3c24xx_usb_device_reset();
s3c24xx_adc_reset();
s3c24xx_spi_reset();
- #if defined(DEVICE_S3C2400)
- s3c24xx_mmc_reset();
- #endif
- #if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
+#if defined(DEVICE_S3C2400)
+ m_mmc.reset();
+#endif
+#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
s3c24xx_sdi_reset();
s3c24xx_nand_reset();
- #endif
- #if defined(DEVICE_S3C2440)
- s3c24xx_cam_reset();
- s3c24xx_ac97_reset();
- #endif
- #if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
+#endif
+#if defined(DEVICE_S3C2440)
+ m_cam.reset();
+ m_ac97.reset();
+#endif
+#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
s3c24xx_nand_auto_boot();
- #endif
+#endif
}
void S3C24_CLASS_NAME::s3c24xx_device_start()
{
- verboselog( *this, 1, "s3c24xx device start\n");
+ verboselog(*this, 1, "s3c24xx device start\n");
m_pin_r_cb.resolve();
m_pin_w_cb.resolve_safe();
m_port_r_cb.resolve();
@@ -3487,34 +3102,30 @@ void S3C24_CLASS_NAME::s3c24xx_device_start()
m_sda_w_cb.resolve();
m_data_r_cb.resolve();
m_data_w_cb.resolve();
- #if !defined(DEVICE_S3C2400)
+#if !defined(DEVICE_S3C2400)
m_command_w_cb.resolve();
m_address_w_cb.resolve();
m_nand_data_r_cb.resolve();
m_nand_data_w_cb.resolve();
- #endif
+#endif
for (int i = 0; i < 5; i++)
- {
- m_pwm.timer[i] = machine().scheduler().timer_alloc(timer_expired_delegate( FUNC(S3C24_CLASS_NAME::s3c24xx_pwm_timer_exp), this));
- }
+ m_pwm.timer[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(S3C24_CLASS_NAME::s3c24xx_pwm_timer_exp), this));
for (auto & elem : m_dma)
- {
- elem.timer = machine().scheduler().timer_alloc(timer_expired_delegate( FUNC(S3C24_CLASS_NAME::s3c24xx_dma_timer_exp), this));
- }
- m_iic.timer = machine().scheduler().timer_alloc(timer_expired_delegate( FUNC(S3C24_CLASS_NAME::s3c24xx_iic_timer_exp), this));
- m_iis.timer = machine().scheduler().timer_alloc(timer_expired_delegate( FUNC(S3C24_CLASS_NAME::s3c24xx_iis_timer_exp), this));
- m_lcd.timer = machine().scheduler().timer_alloc(timer_expired_delegate( FUNC(S3C24_CLASS_NAME::s3c24xx_lcd_timer_exp), this));
- m_rtc.timer_tick_count = machine().scheduler().timer_alloc(timer_expired_delegate( FUNC(S3C24_CLASS_NAME::s3c24xx_rtc_timer_tick_count_exp), this));
- m_rtc.timer_update = machine().scheduler().timer_alloc(timer_expired_delegate( FUNC(S3C24_CLASS_NAME::s3c24xx_rtc_timer_update_exp), this));
- m_wdt.timer = machine().scheduler().timer_alloc(timer_expired_delegate( FUNC(S3C24_CLASS_NAME::s3c24xx_wdt_timer_exp), this));
- #if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
- int om0 = iface_core_pin_r( S3C24XX_CORE_PIN_OM0);
- int om1 = iface_core_pin_r( S3C24XX_CORE_PIN_OM1);
+ elem.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(S3C24_CLASS_NAME::s3c24xx_dma_timer_exp), this));
+ m_iic.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(S3C24_CLASS_NAME::s3c24xx_iic_timer_exp), this));
+ m_iis.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(S3C24_CLASS_NAME::s3c24xx_iis_timer_exp), this));
+ m_lcd.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(S3C24_CLASS_NAME::s3c24xx_lcd_timer_exp), this));
+ m_rtc.timer_tick_count = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(S3C24_CLASS_NAME::s3c24xx_rtc_timer_tick_count_exp), this));
+ m_rtc.timer_update = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(S3C24_CLASS_NAME::s3c24xx_rtc_timer_update_exp), this));
+ m_wdt.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(S3C24_CLASS_NAME::s3c24xx_wdt_timer_exp), this));
+#if defined(DEVICE_S3C2410) || defined(DEVICE_S3C2440)
+ int om0 = iface_core_pin_r(S3C24XX_CORE_PIN_OM0);
+ int om1 = iface_core_pin_r(S3C24XX_CORE_PIN_OM1);
if ((om0 == 0) && (om1 == 0))
{
- address_space &space = m_cpu->memory().space( AS_PROGRAM);
- space.install_ram( 0x00000000, 0x00000fff, m_steppingstone);
- space.install_ram( 0x40000000, 0x40000fff, m_steppingstone);
+ address_space &space = m_cpu->memory().space(AS_PROGRAM);
+ space.install_ram(0x00000000, 0x00000fff, m_steppingstone);
+ space.install_ram(0x40000000, 0x40000fff, m_steppingstone);
}
- #endif
+#endif
}
diff --git a/src/devices/machine/s3c44b0.cpp b/src/devices/machine/s3c44b0.cpp
index ae5f9b0a4f2..eceb1f5c92c 100644
--- a/src/devices/machine/s3c44b0.cpp
+++ b/src/devices/machine/s3c44b0.cpp
@@ -18,6 +18,193 @@
#include "coreutil.h"
+#define S3C44B0_INTCON (0x00 / 4) // Interrupt Control
+#define S3C44B0_INTPND (0x04 / 4) // Interrupt Request Status
+#define S3C44B0_INTMOD (0x08 / 4) // Interrupt Mode Control
+#define S3C44B0_INTMSK (0x0C / 4) // Interrupt Mask Control
+#define S3C44B0_I_PSLV (0x10 / 4)
+#define S3C44B0_I_PMST (0x14 / 4)
+#define S3C44B0_I_CSLV (0x18 / 4)
+#define S3C44B0_I_CMST (0x1C / 4)
+#define S3C44B0_I_ISPR (0x20 / 4)
+#define S3C44B0_I_ISPC (0x24 / 4)
+#define S3C44B0_F_ISPR (0x38 / 4)
+#define S3C44B0_F_ISPC (0x3C / 4)
+
+#define S3C44B0_DCON (0x00 / 4) // DMA Control
+#define S3C44B0_DISRC (0x04 / 4) // DMA Initial Source
+#define S3C44B0_DIDST (0x08 / 4) // DMA Initial Destination
+#define S3C44B0_DICNT (0x0C / 4) // DMA Initial Transfer Count
+#define S3C44B0_DCSRC (0x10 / 4) // DMA Current Source Address
+#define S3C44B0_DCDST (0x14 / 4) // DMA Current Destination Address
+#define S3C44B0_DCCNT (0x18 / 4) // DMA Current Transfer Count
+
+#define S3C44B0_PLLCON (0x00 / 4) // PLL Control
+#define S3C44B0_CLKCON (0x04 / 4) // Clock Generator Control
+#define S3C44B0_CLKSLOW (0x08 / 4) // Slow Clock Control
+#define S3C44B0_LOCKTIME (0x0C / 4) // PLL lock time Counter
+
+#define S3C44B0_LCDCON1 (0x00 / 4) // LCD Control 1
+#define S3C44B0_LCDCON2 (0x04 / 4) // LCD Control 2
+#define S3C44B0_LCDSADDR1 (0x08 / 4) // Frame Buffer Start Address 1
+#define S3C44B0_LCDSADDR2 (0x0C / 4) // Frame Buffer Start Address 2
+#define S3C44B0_LCDSADDR3 (0x10 / 4) // Virtual Screen Address Set
+#define S3C44B0_REDLUT (0x14 / 4) // STN: Red Lookup Table
+#define S3C44B0_GREENLUT (0x18 / 4) // STN: Green Lookup Table
+#define S3C44B0_BLUELUT (0x1C / 4) // STN: Blue Lookup Table
+#define S3C44B0_LCDCON3 (0x40 / 4) // LCD Control 3
+#define S3C44B0_DITHMODE (0x44 / 4) // STN: Dithering Mode
+
+#define S3C44B0_ULCON (0x00 / 4) // UART Line Control
+#define S3C44B0_UCON (0x04 / 4) // UART Control
+#define S3C44B0_UFCON (0x08 / 4) // UART FIFO Control
+#define S3C44B0_UMCON (0x0C / 4) // UART Modem Control
+#define S3C44B0_UTRSTAT (0x10 / 4) // UART Tx/Rx Status
+#define S3C44B0_UERSTAT (0x14 / 4) // UART Rx Error Status
+#define S3C44B0_UFSTAT (0x18 / 4) // UART FIFO Status
+#define S3C44B0_UMSTAT (0x1C / 4) // UART Modem Status
+#define S3C44B0_UTXH (0x20 / 4) // UART Transmission Hold
+#define S3C44B0_URXH (0x24 / 4) // UART Receive Buffer
+#define S3C44B0_UBRDIV (0x28 / 4) // UART Baud Rate Divisor
+
+#define S3C44B0_WTCON (0x00 / 4) // Watchdog Timer Mode
+#define S3C44B0_WTDAT (0x04 / 4) // Watchdog Timer Data
+#define S3C44B0_WTCNT (0x08 / 4) // Watchdog Timer Count
+
+#define S3C44B0_TCFG0 (0x00 / 4) // Timer Configuration
+#define S3C44B0_TCFG1 (0x04 / 4) // Timer Configuration
+#define S3C44B0_TCON (0x08 / 4) // Timer Control
+#define S3C44B0_TCNTB0 (0x0C / 4) // Timer Count Buffer 0
+#define S3C44B0_TCMPB0 (0x10 / 4) // Timer Compare Buffer 0
+#define S3C44B0_TCNTO0 (0x14 / 4) // Timer Count Observation 0
+#define S3C44B0_TCNTB1 (0x18 / 4) // Timer Count Buffer 1
+#define S3C44B0_TCMPB1 (0x1C / 4) // Timer Compare Buffer 1
+#define S3C44B0_TCNTO1 (0x20 / 4) // Timer Count Observation 1
+#define S3C44B0_TCNTB2 (0x24 / 4) // Timer Count Buffer 2
+#define S3C44B0_TCMPB2 (0x28 / 4) // Timer Compare Buffer 2
+#define S3C44B0_TCNTO2 (0x2C / 4) // Timer Count Observation 2
+#define S3C44B0_TCNTB3 (0x30 / 4) // Timer Count Buffer 3
+#define S3C44B0_TCMPB3 (0x34 / 4) // Timer Compare Buffer 3
+#define S3C44B0_TCNTO3 (0x38 / 4) // Timer Count Observation 3
+#define S3C44B0_TCNTB4 (0x3C / 4) // Timer Count Buffer 4
+#define S3C44B0_TCMPB4 (0x40 / 4) // Timer Compare Buffer 4
+#define S3C44B0_TCNTO4 (0x44 / 4) // Timer Count Observation 4
+#define S3C44B0_TCNTB5 (0x48 / 4) // Timer Count Buffer 5
+#define S3C44B0_TCNTO5 (0x4C / 4) // Timer Count Observation 5
+
+#define S3C44B0_IICCON (0x00 / 4) // IIC Control
+#define S3C44B0_IICSTAT (0x04 / 4) // IIC Status
+#define S3C44B0_IICADD (0x08 / 4) // IIC Address
+#define S3C44B0_IICDS (0x0C / 4) // IIC Data Shift
+
+#define S3C44B0_IISCON (0x00 / 4) // IIS Control
+#define S3C44B0_IISMOD (0x04 / 4) // IIS Mode
+#define S3C44B0_IISPSR (0x08 / 4) // IIS Prescaler
+#define S3C44B0_IISFCON (0x0C / 4) // IIS FIFO Control
+#define S3C44B0_IISFIFO (0x10 / 4) // IIS FIFO Entry
+
+#define S3C44B0_GPACON (0x00 / 4) // Port A Control
+#define S3C44B0_GPADAT (0x04 / 4) // Port A Data
+#define S3C44B0_GPBCON (0x08 / 4) // Port B Control
+#define S3C44B0_GPBDAT (0x0C / 4) // Port B Data
+#define S3C44B0_GPCCON (0x10 / 4) // Port C Control
+#define S3C44B0_GPCDAT (0x14 / 4) // Port C Data
+#define S3C44B0_GPCUP (0x18 / 4) // Pull-up Control C
+#define S3C44B0_GPDCON (0x1C / 4) // Port D Control
+#define S3C44B0_GPDDAT (0x20 / 4) // Port D Data
+#define S3C44B0_GPDUP (0x24 / 4) // Pull-up Control D
+#define S3C44B0_GPECON (0x28 / 4) // Port E Control
+#define S3C44B0_GPEDAT (0x2C / 4) // Port E Data
+#define S3C44B0_GPEUP (0x30 / 4) // Pull-up Control E
+#define S3C44B0_GPFCON (0x34 / 4) // Port F Control
+#define S3C44B0_GPFDAT (0x38 / 4) // Port F Data
+#define S3C44B0_GPFUP (0x3C / 4) // Pull-up Control F
+#define S3C44B0_GPGCON (0x40 / 4) // Port G Control
+#define S3C44B0_GPGDAT (0x44 / 4) // Port G Data
+#define S3C44B0_GPGUP (0x48 / 4) // Pull-up Control G
+#define S3C44B0_SPUCR (0x4C / 4) // Special Pull-up
+#define S3C44B0_EXTINT (0x50 / 4) // External Interrupt Control
+#define S3C44B0_EXTINTPND (0x54 / 4) // External Interrupt Pending
+
+#define S3C44B0_GPADAT_MASK 0x000003FF
+#define S3C44B0_GPBDAT_MASK 0x000007FF
+#define S3C44B0_GPCDAT_MASK 0x0000FFFF
+#define S3C44B0_GPDDAT_MASK 0x000000FF
+#define S3C44B0_GPEDAT_MASK 0x000001FF
+#define S3C44B0_GPFDAT_MASK 0x000001FF
+#define S3C44B0_GPGDAT_MASK 0x000000FF
+
+#define S3C44B0_RTCCON (0x00 / 4) // RTC Control
+#define S3C44B0_RTCALM (0x10 / 4) // RTC Alarm Control
+#define S3C44B0_ALMSEC (0x14 / 4) // Alarm Second
+#define S3C44B0_ALMMIN (0x18 / 4) // Alarm Minute
+#define S3C44B0_ALMHOUR (0x1C / 4) // Alarm Hour
+#define S3C44B0_ALMDAY (0x20 / 4) // Alarm Day
+#define S3C44B0_ALMMON (0x24 / 4) // Alarm Month
+#define S3C44B0_ALMYEAR (0x28 / 4) // Alarm Year
+#define S3C44B0_RTCRST (0x2C / 4) // RTC Round Reset
+#define S3C44B0_BCDSEC (0x30 / 4) // BCD Second
+#define S3C44B0_BCDMIN (0x34 / 4) // BCD Minute
+#define S3C44B0_BCDHOUR (0x38 / 4) // BCD Hour
+#define S3C44B0_BCDDAY (0x3C / 4) // BCD Day
+#define S3C44B0_BCDDOW (0x40 / 4) // BCD Day of Week
+#define S3C44B0_BCDMON (0x44 / 4) // BCD Month
+#define S3C44B0_BCDYEAR (0x48 / 4) // BCD Year
+#define S3C44B0_TICNT (0x4C / 4) // Tick Time count
+
+#define S3C44B0_ADCCON (0x00 / 4) // ADC Control
+#define S3C44B0_ADCPSR (0x04 / 4) // ADC Prescaler
+#define S3C44B0_ADCDAT (0x08 / 4) // ADC Data
+
+#define S3C44B0_SYSCFG (0x00 / 4) // System Configuration
+#define S3C44B0_NCACHBE0 (0x04 / 4) // Non Cacheable Area 0
+#define S3C44B0_NCACHBE1 (0x08 / 4) // Non Cacheable Area 1
+
+#define S3C44B0_INT_ADC 0
+#define S3C44B0_INT_RTC 1
+#define S3C44B0_INT_UTXD1 2
+#define S3C44B0_INT_UTXD0 3
+#define S3C44B0_INT_SIO 4
+#define S3C44B0_INT_IIC 5
+#define S3C44B0_INT_URXD1 6
+#define S3C44B0_INT_URXD0 7
+#define S3C44B0_INT_TIMER5 8
+#define S3C44B0_INT_TIMER4 9
+#define S3C44B0_INT_TIMER3 10
+#define S3C44B0_INT_TIMER2 11
+#define S3C44B0_INT_TIMER1 12
+#define S3C44B0_INT_TIMER0 13
+#define S3C44B0_INT_UERR 14
+#define S3C44B0_INT_WDT 15
+#define S3C44B0_INT_BDMA1 16
+#define S3C44B0_INT_BDMA0 17
+#define S3C44B0_INT_ZDMA1 18
+#define S3C44B0_INT_ZDMA0 19
+#define S3C44B0_INT_TICK 20
+#define S3C44B0_INT_EINT4_7 21
+#define S3C44B0_INT_EINT3 22
+#define S3C44B0_INT_EINT2 23
+#define S3C44B0_INT_EINT1 24
+#define S3C44B0_INT_EINT0 25
+
+#define S3C44B0_MODESEL_01 0
+#define S3C44B0_MODESEL_02 1
+#define S3C44B0_MODESEL_04 2
+#define S3C44B0_MODESEL_08 3
+
+#define S3C44B0_PNRMODE_STN_04_DS 0
+#define S3C44B0_PNRMODE_STN_04_SS 1
+#define S3C44B0_PNRMODE_STN_08_SS 2
+
+#define S3C44B0_GPIO_PORT_A S3C44B0_GPIO_PORT_A
+#define S3C44B0_GPIO_PORT_B S3C44B0_GPIO_PORT_B
+#define S3C44B0_GPIO_PORT_C S3C44B0_GPIO_PORT_C
+#define S3C44B0_GPIO_PORT_D S3C44B0_GPIO_PORT_D
+#define S3C44B0_GPIO_PORT_E S3C44B0_GPIO_PORT_E
+#define S3C44B0_GPIO_PORT_F S3C44B0_GPIO_PORT_F
+#define S3C44B0_GPIO_PORT_G S3C44B0_GPIO_PORT_G
+
+
#define VERBOSE_LEVEL ( 0 )
static inline void ATTR_PRINTF(3,4) verboselog( device_t &device, int n_level, const char *s_fmt, ...)
@@ -33,17 +220,18 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t &device, int n_level, c
}
}
-const device_type S3C44B0 = device_creator<s3c44b0_device>;
+DEFINE_DEVICE_TYPE(S3C44B0, s3c44b0_device, "s3c44b0", "Samsung S3C44B0 SoC")
s3c44b0_device::s3c44b0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, S3C44B0, "Samsung S3C44B0", tag, owner, clock, "s3c44b0", __FILE__), m_cpu(nullptr),
- m_port_r_cb(*this),
- m_port_w_cb(*this),
- m_scl_w_cb(*this),
- m_sda_r_cb(*this),
- m_sda_w_cb(*this),
- m_data_r_cb(*this),
- m_data_w_cb(*this)
+ : device_t(mconfig, S3C44B0, tag, owner, clock)
+ , m_cpu(nullptr)
+ , m_port_r_cb(*this)
+ , m_port_w_cb(*this)
+ , m_scl_w_cb(*this)
+ , m_sda_r_cb(*this)
+ , m_sda_w_cb(*this)
+ , m_data_r_cb(*this)
+ , m_data_w_cb(*this)
{
memset(&m_irq, 0, sizeof(s3c44b0_irq_t));
memset(m_zdma, 0, sizeof(s3c44b0_dma_t)*2);
diff --git a/src/devices/machine/s3c44b0.h b/src/devices/machine/s3c44b0.h
index 116aa1843a5..08c4282ad52 100644
--- a/src/devices/machine/s3c44b0.h
+++ b/src/devices/machine/s3c44b0.h
@@ -8,8 +8,10 @@
*******************************************************************************/
-#ifndef __S3C44B0_H__
-#define __S3C44B0_H__
+#ifndef MAME_MACHINE_S3C44B0_H
+#define MAME_MACHINE_S3C44B0_H
+
+#pragma once
/*******************************************************************************
@@ -24,19 +26,6 @@
#define S3C44B0_BASE_INT 0x01E00000
-#define S3C44B0_INTCON (0x00 / 4) // Interrupt Control
-#define S3C44B0_INTPND (0x04 / 4) // Interrupt Request Status
-#define S3C44B0_INTMOD (0x08 / 4) // Interrupt Mode Control
-#define S3C44B0_INTMSK (0x0C / 4) // Interrupt Mask Control
-#define S3C44B0_I_PSLV (0x10 / 4)
-#define S3C44B0_I_PMST (0x14 / 4)
-#define S3C44B0_I_CSLV (0x18 / 4)
-#define S3C44B0_I_CMST (0x1C / 4)
-#define S3C44B0_I_ISPR (0x20 / 4)
-#define S3C44B0_I_ISPC (0x24 / 4)
-#define S3C44B0_F_ISPR (0x38 / 4)
-#define S3C44B0_F_ISPC (0x3C / 4)
-
/* ZDMA & BDMA */
#define S3C44B0_BASE_ZDMA_0 0x01E80000
@@ -44,55 +33,19 @@
#define S3C44B0_BASE_BDMA_0 0x01F80000
#define S3C44B0_BASE_BDMA_1 0x01F80020
-#define S3C44B0_DCON (0x00 / 4) // DMA Control
-#define S3C44B0_DISRC (0x04 / 4) // DMA Initial Source
-#define S3C44B0_DIDST (0x08 / 4) // DMA Initial Destination
-#define S3C44B0_DICNT (0x0C / 4) // DMA Initial Transfer Count
-#define S3C44B0_DCSRC (0x10 / 4) // DMA Current Source Address
-#define S3C44B0_DCDST (0x14 / 4) // DMA Current Destination Address
-#define S3C44B0_DCCNT (0x18 / 4) // DMA Current Transfer Count
-
/* Clock & Power Management */
#define S3C44B0_BASE_CLKPOW 0x01D80000
-#define S3C44B0_PLLCON (0x00 / 4) // PLL Control
-#define S3C44B0_CLKCON (0x04 / 4) // Clock Generator Control
-#define S3C44B0_CLKSLOW (0x08 / 4) // Slow Clock Control
-#define S3C44B0_LOCKTIME (0x0C / 4) // PLL lock time Counter
-
/* LCD Controller */
#define S3C44B0_BASE_LCD 0x01F00000
-#define S3C44B0_LCDCON1 (0x00 / 4) // LCD Control 1
-#define S3C44B0_LCDCON2 (0x04 / 4) // LCD Control 2
-#define S3C44B0_LCDSADDR1 (0x08 / 4) // Frame Buffer Start Address 1
-#define S3C44B0_LCDSADDR2 (0x0C / 4) // Frame Buffer Start Address 2
-#define S3C44B0_LCDSADDR3 (0x10 / 4) // Virtual Screen Address Set
-#define S3C44B0_REDLUT (0x14 / 4) // STN: Red Lookup Table
-#define S3C44B0_GREENLUT (0x18 / 4) // STN: Green Lookup Table
-#define S3C44B0_BLUELUT (0x1C / 4) // STN: Blue Lookup Table
-#define S3C44B0_LCDCON3 (0x40 / 4) // LCD Control 3
-#define S3C44B0_DITHMODE (0x44 / 4) // STN: Dithering Mode
-
/* UART */
#define S3C44B0_BASE_UART_0 0x01D00000
#define S3C44B0_BASE_UART_1 0x01D04000
-#define S3C44B0_ULCON (0x00 / 4) // UART Line Control
-#define S3C44B0_UCON (0x04 / 4) // UART Control
-#define S3C44B0_UFCON (0x08 / 4) // UART FIFO Control
-#define S3C44B0_UMCON (0x0C / 4) // UART Modem Control
-#define S3C44B0_UTRSTAT (0x10 / 4) // UART Tx/Rx Status
-#define S3C44B0_UERSTAT (0x14 / 4) // UART Rx Error Status
-#define S3C44B0_UFSTAT (0x18 / 4) // UART FIFO Status
-#define S3C44B0_UMSTAT (0x1C / 4) // UART Modem Status
-#define S3C44B0_UTXH (0x20 / 4) // UART Transmission Hold
-#define S3C44B0_URXH (0x24 / 4) // UART Receive Buffer
-#define S3C44B0_UBRDIV (0x28 / 4) // UART Baud Rate Divisor
-
/* SIO */
#define S3C44B0_BASE_SIO 0x01D14000
@@ -107,27 +60,6 @@
#define S3C44B0_BASE_PWM 0x01D50000
-#define S3C44B0_TCFG0 (0x00 / 4) // Timer Configuration
-#define S3C44B0_TCFG1 (0x04 / 4) // Timer Configuration
-#define S3C44B0_TCON (0x08 / 4) // Timer Control
-#define S3C44B0_TCNTB0 (0x0C / 4) // Timer Count Buffer 0
-#define S3C44B0_TCMPB0 (0x10 / 4) // Timer Compare Buffer 0
-#define S3C44B0_TCNTO0 (0x14 / 4) // Timer Count Observation 0
-#define S3C44B0_TCNTB1 (0x18 / 4) // Timer Count Buffer 1
-#define S3C44B0_TCMPB1 (0x1C / 4) // Timer Compare Buffer 1
-#define S3C44B0_TCNTO1 (0x20 / 4) // Timer Count Observation 1
-#define S3C44B0_TCNTB2 (0x24 / 4) // Timer Count Buffer 2
-#define S3C44B0_TCMPB2 (0x28 / 4) // Timer Compare Buffer 2
-#define S3C44B0_TCNTO2 (0x2C / 4) // Timer Count Observation 2
-#define S3C44B0_TCNTB3 (0x30 / 4) // Timer Count Buffer 3
-#define S3C44B0_TCMPB3 (0x34 / 4) // Timer Compare Buffer 3
-#define S3C44B0_TCNTO3 (0x38 / 4) // Timer Count Observation 3
-#define S3C44B0_TCNTB4 (0x3C / 4) // Timer Count Buffer 4
-#define S3C44B0_TCMPB4 (0x40 / 4) // Timer Compare Buffer 4
-#define S3C44B0_TCNTO4 (0x44 / 4) // Timer Count Observation 4
-#define S3C44B0_TCNTB5 (0x48 / 4) // Timer Count Buffer 5
-#define S3C44B0_TCNTO5 (0x4C / 4) // Timer Count Observation 5
-
/* USB Device */
#define S3C44B0_BASE_USBDEV 0x15200140
@@ -136,456 +68,37 @@
#define S3C44B0_BASE_WDT 0x01D30000
-#define S3C44B0_WTCON (0x00 / 4) // Watchdog Timer Mode
-#define S3C44B0_WTDAT (0x04 / 4) // Watchdog Timer Data
-#define S3C44B0_WTCNT (0x08 / 4) // Watchdog Timer Count
-
/* IIC */
#define S3C44B0_BASE_IIC 0x01D60000
-#define S3C44B0_IICCON (0x00 / 4) // IIC Control
-#define S3C44B0_IICSTAT (0x04 / 4) // IIC Status
-#define S3C44B0_IICADD (0x08 / 4) // IIC Address
-#define S3C44B0_IICDS (0x0C / 4) // IIC Data Shift
-
/* IIS */
#define S3C44B0_BASE_IIS 0x01D18000
-#define S3C44B0_IISCON (0x00 / 4) // IIS Control
-#define S3C44B0_IISMOD (0x04 / 4) // IIS Mode
-#define S3C44B0_IISPSR (0x08 / 4) // IIS Prescaler
-#define S3C44B0_IISFCON (0x0C / 4) // IIS FIFO Control
-#define S3C44B0_IISFIFO (0x10 / 4) // IIS FIFO Entry
-
/* I/O Port */
#define S3C44B0_BASE_GPIO 0x01D20000
-#define S3C44B0_GPACON (0x00 / 4) // Port A Control
-#define S3C44B0_GPADAT (0x04 / 4) // Port A Data
-#define S3C44B0_GPBCON (0x08 / 4) // Port B Control
-#define S3C44B0_GPBDAT (0x0C / 4) // Port B Data
-#define S3C44B0_GPCCON (0x10 / 4) // Port C Control
-#define S3C44B0_GPCDAT (0x14 / 4) // Port C Data
-#define S3C44B0_GPCUP (0x18 / 4) // Pull-up Control C
-#define S3C44B0_GPDCON (0x1C / 4) // Port D Control
-#define S3C44B0_GPDDAT (0x20 / 4) // Port D Data
-#define S3C44B0_GPDUP (0x24 / 4) // Pull-up Control D
-#define S3C44B0_GPECON (0x28 / 4) // Port E Control
-#define S3C44B0_GPEDAT (0x2C / 4) // Port E Data
-#define S3C44B0_GPEUP (0x30 / 4) // Pull-up Control E
-#define S3C44B0_GPFCON (0x34 / 4) // Port F Control
-#define S3C44B0_GPFDAT (0x38 / 4) // Port F Data
-#define S3C44B0_GPFUP (0x3C / 4) // Pull-up Control F
-#define S3C44B0_GPGCON (0x40 / 4) // Port G Control
-#define S3C44B0_GPGDAT (0x44 / 4) // Port G Data
-#define S3C44B0_GPGUP (0x48 / 4) // Pull-up Control G
-#define S3C44B0_SPUCR (0x4C / 4) // Special Pull-up
-#define S3C44B0_EXTINT (0x50 / 4) // External Interrupt Control
-#define S3C44B0_EXTINTPND (0x54 / 4) // External Interrupt Pending
-
-#define S3C44B0_GPADAT_MASK 0x000003FF
-#define S3C44B0_GPBDAT_MASK 0x000007FF
-#define S3C44B0_GPCDAT_MASK 0x0000FFFF
-#define S3C44B0_GPDDAT_MASK 0x000000FF
-#define S3C44B0_GPEDAT_MASK 0x000001FF
-#define S3C44B0_GPFDAT_MASK 0x000001FF
-#define S3C44B0_GPGDAT_MASK 0x000000FF
-
/* RTC */
#define S3C44B0_BASE_RTC 0x01D70040
-#define S3C44B0_RTCCON (0x00 / 4) // RTC Control
-#define S3C44B0_RTCALM (0x10 / 4) // RTC Alarm Control
-#define S3C44B0_ALMSEC (0x14 / 4) // Alarm Second
-#define S3C44B0_ALMMIN (0x18 / 4) // Alarm Minute
-#define S3C44B0_ALMHOUR (0x1C / 4) // Alarm Hour
-#define S3C44B0_ALMDAY (0x20 / 4) // Alarm Day
-#define S3C44B0_ALMMON (0x24 / 4) // Alarm Month
-#define S3C44B0_ALMYEAR (0x28 / 4) // Alarm Year
-#define S3C44B0_RTCRST (0x2C / 4) // RTC Round Reset
-#define S3C44B0_BCDSEC (0x30 / 4) // BCD Second
-#define S3C44B0_BCDMIN (0x34 / 4) // BCD Minute
-#define S3C44B0_BCDHOUR (0x38 / 4) // BCD Hour
-#define S3C44B0_BCDDAY (0x3C / 4) // BCD Day
-#define S3C44B0_BCDDOW (0x40 / 4) // BCD Day of Week
-#define S3C44B0_BCDMON (0x44 / 4) // BCD Month
-#define S3C44B0_BCDYEAR (0x48 / 4) // BCD Year
-#define S3C44B0_TICNT (0x4C / 4) // Tick Time count
-
/* A/D Converter */
#define S3C44B0_BASE_ADC 0x01D40000
-#define S3C44B0_ADCCON (0x00 / 4) // ADC Control
-#define S3C44B0_ADCPSR (0x04 / 4) // ADC Prescaler
-#define S3C44B0_ADCDAT (0x08 / 4) // ADC Data
-
/* CPU Wrapper */
#define S3C44B0_BASE_CPU_WRAPPER 0x01C00000
-#define S3C44B0_SYSCFG (0x00 / 4) // System Configuration
-#define S3C44B0_NCACHBE0 (0x04 / 4) // Non Cacheable Area 0
-#define S3C44B0_NCACHBE1 (0x08 / 4) // Non Cacheable Area 1
-
/* ... */
-#define S3C44B0_INT_ADC 0
-#define S3C44B0_INT_RTC 1
-#define S3C44B0_INT_UTXD1 2
-#define S3C44B0_INT_UTXD0 3
-#define S3C44B0_INT_SIO 4
-#define S3C44B0_INT_IIC 5
-#define S3C44B0_INT_URXD1 6
-#define S3C44B0_INT_URXD0 7
-#define S3C44B0_INT_TIMER5 8
-#define S3C44B0_INT_TIMER4 9
-#define S3C44B0_INT_TIMER3 10
-#define S3C44B0_INT_TIMER2 11
-#define S3C44B0_INT_TIMER1 12
-#define S3C44B0_INT_TIMER0 13
-#define S3C44B0_INT_UERR 14
-#define S3C44B0_INT_WDT 15
-#define S3C44B0_INT_BDMA1 16
-#define S3C44B0_INT_BDMA0 17
-#define S3C44B0_INT_ZDMA1 18
-#define S3C44B0_INT_ZDMA0 19
-#define S3C44B0_INT_TICK 20
-#define S3C44B0_INT_EINT4_7 21
-#define S3C44B0_INT_EINT3 22
-#define S3C44B0_INT_EINT2 23
-#define S3C44B0_INT_EINT1 24
-#define S3C44B0_INT_EINT0 25
-
-#define S3C44B0_MODESEL_01 0
-#define S3C44B0_MODESEL_02 1
-#define S3C44B0_MODESEL_04 2
-#define S3C44B0_MODESEL_08 3
-
-#define S3C44B0_PNRMODE_STN_04_DS 0
-#define S3C44B0_PNRMODE_STN_04_SS 1
-#define S3C44B0_PNRMODE_STN_08_SS 2
-
-#define S3C44B0_GPIO_PORT_A S3C44B0_GPIO_PORT_A
-#define S3C44B0_GPIO_PORT_B S3C44B0_GPIO_PORT_B
-#define S3C44B0_GPIO_PORT_C S3C44B0_GPIO_PORT_C
-#define S3C44B0_GPIO_PORT_D S3C44B0_GPIO_PORT_D
-#define S3C44B0_GPIO_PORT_E S3C44B0_GPIO_PORT_E
-#define S3C44B0_GPIO_PORT_F S3C44B0_GPIO_PORT_F
-#define S3C44B0_GPIO_PORT_G S3C44B0_GPIO_PORT_G
-
/*******************************************************************************
MACROS / CONSTANTS
*******************************************************************************/
-
-struct s3c44b0_memcon_regs_t
-{
- uint32_t data[0x34/4];
-};
-
-struct s3c44b0_irq_regs_t
-{
- uint32_t intcon;
- uint32_t intpnd;
- uint32_t intmod;
- uint32_t intmsk;
- uint32_t i_pslv;
- uint32_t i_pmst;
- uint32_t i_cslv;
- uint32_t i_cmst;
- uint32_t i_ispr;
- uint32_t i_ispc;
- uint32_t reserved[4];
- uint32_t f_ispr;
- uint32_t f_ispc;
-};
-
-struct s3c44b0_dma_regs_t
-{
- uint32_t dcon;
- uint32_t disrc;
- uint32_t didst;
- uint32_t dicnt;
- uint32_t dcsrc;
- uint32_t dcdst;
- uint32_t dccnt;
-};
-
-struct s3c44b0_clkpow_regs_t
-{
- uint32_t pllcon;
- uint32_t clkcon;
- uint32_t clkslow;
- uint32_t locktime;
-};
-
-struct s3c44b0_lcd_regs_t
-{
- uint32_t lcdcon1;
- uint32_t lcdcon2;
- uint32_t lcdsaddr1;
- uint32_t lcdsaddr2;
- uint32_t lcdsaddr3;
- uint32_t redlut;
- uint32_t greenlut;
- uint32_t bluelut;
- uint32_t reserved[8];
- uint32_t lcdcon3;
- uint32_t dithmode;
-};
-
-struct s3c44b0_uart_regs_t
-{
- uint32_t ulcon;
- uint32_t ucon;
- uint32_t ufcon;
- uint32_t umcon;
- uint32_t utrstat;
- uint32_t uerstat;
- uint32_t ufstat;
- uint32_t umstat;
- uint32_t utxh;
- uint32_t urxh;
- uint32_t ubrdiv;
-};
-
-struct s3c44b0_sio_regs_t
-{
- uint32_t siocon;
- uint32_t siodat;
- uint32_t sbrdr;
- uint32_t itvcnt;
- uint32_t dcntz;
-};
-
-struct s3c44b0_pwm_regs_t
-{
- uint32_t tcfg0;
- uint32_t tcfg1;
- uint32_t tcon;
- uint32_t tcntb0;
- uint32_t tcmpb0;
- uint32_t tcnto0;
- uint32_t tcntb1;
- uint32_t tcmpb1;
- uint32_t tcnto1;
- uint32_t tcntb2;
- uint32_t tcmpb2;
- uint32_t tcnto2;
- uint32_t tcntb3;
- uint32_t tcmpb3;
- uint32_t tcnto3;
- uint32_t tcntb4;
- uint32_t tcmpb4;
- uint32_t tcnto4;
- uint32_t tcntb5;
- uint32_t tcnto5;
-};
-
-struct s3c44b0_wdt_regs_t
-{
- uint32_t wtcon;
- uint32_t wtdat;
- uint32_t wtcnt;
-};
-
-struct s3c44b0_iic_regs_t
-{
- uint32_t iiccon;
- uint32_t iicstat;
- uint32_t iicadd;
- uint32_t iicds;
-};
-
-struct s3c44b0_iis_regs_t
-{
- uint32_t iiscon;
- uint32_t iismod;
- uint32_t iispsr;
- uint32_t iisfcon;
- uint32_t iisfifo;
-};
-
-struct s3c44b0_gpio_regs_t
-{
- uint32_t gpacon;
- uint32_t gpadat;
- uint32_t gpbcon;
- uint32_t gpbdat;
- uint32_t gpccon;
- uint32_t gpcdat;
- uint32_t gpcup;
- uint32_t gpdcon;
- uint32_t gpddat;
- uint32_t gpdup;
- uint32_t gpecon;
- uint32_t gpedat;
- uint32_t gpeup;
- uint32_t gpfcon;
- uint32_t gpfdat;
- uint32_t gpfup;
- uint32_t gpgcon;
- uint32_t gpgdat;
- uint32_t gpgup;
- uint32_t spucr;
- uint32_t extint;
- uint32_t extintpnd;
-};
-
-struct s3c44b0_rtc_regs_t
-{
- uint32_t rtccon;
- uint32_t reserved[3];
- uint32_t rtcalm;
- uint32_t almsec;
- uint32_t almmin;
- uint32_t almhour;
- uint32_t almday;
- uint32_t almmon;
- uint32_t almyear;
- uint32_t rtcrst;
- uint32_t bcdsec;
- uint32_t bcdmin;
- uint32_t bcdhour;
- uint32_t bcdday;
- uint32_t bcddow;
- uint32_t bcdmon;
- uint32_t bcdyear;
- uint32_t ticnt;
-};
-
-struct s3c44b0_adc_regs_t
-{
- uint32_t adccon;
- uint32_t adcpsr;
- uint32_t adcdat;
-};
-
-struct s3c44b0_cpuwrap_regs_t
-{
- uint32_t syscfg;
- uint32_t ncachbe0;
- uint32_t ncachbe1;
-};
-
-struct s3c44b0_memcon_t
-{
- s3c44b0_memcon_regs_t regs;
-};
-
-struct s3c44b0_irq_t
-{
- s3c44b0_irq_regs_t regs;
- int line_irq, line_fiq;
-};
-
-struct s3c44b0_dma_t
-{
- s3c44b0_dma_regs_t regs;
- emu_timer *timer;
-};
-
-struct s3c44b0_clkpow_t
-{
- s3c44b0_clkpow_regs_t regs;
-};
-
-struct rectangle_t
-{
- int x1, y1, x2, y2;
-};
-
-struct s3c44b0_lcd_t
-{
- s3c44b0_lcd_regs_t regs;
- emu_timer *timer;
- std::unique_ptr<uint8_t[]> bitmap;
- uint32_t vramaddr_cur;
- uint32_t vramaddr_max;
- uint32_t offsize;
- uint32_t pagewidth_cur;
- uint32_t pagewidth_max;
- uint32_t modesel;
- uint32_t bswp;
- int vpos, hpos;
- double framerate;
- uint32_t hpos_min, hpos_max, hpos_end, vpos_min, vpos_max, vpos_end;
- attotime frame_time;
- attoseconds_t frame_period, pixeltime, scantime;
-};
-
-struct s3c44b0_uart_t
-{
- s3c44b0_uart_regs_t regs;
- emu_timer *timer;
-};
-
-struct s3c44b0_sio_t
-{
- s3c44b0_sio_regs_t regs;
- emu_timer *timer;
-};
-
-struct s3c44b0_pwm_t
-{
- s3c44b0_pwm_regs_t regs;
- emu_timer *timer[6];
- uint32_t cnt[6];
- uint32_t cmp[6];
- uint32_t freq[6];
-};
-
-struct s3c44b0_wdt_t
-{
- s3c44b0_wdt_regs_t regs;
- emu_timer *timer;
-};
-
-struct s3c44b0_iic_t
-{
- s3c44b0_iic_regs_t regs;
- emu_timer *timer;
- int count;
-};
-
-struct s3c44b0_iis_t
-{
- s3c44b0_iis_regs_t regs;
- emu_timer *timer;
- uint16_t fifo[16/2];
- int fifo_index;
-};
-
-struct s3c44b0_gpio_t
-{
- s3c44b0_gpio_regs_t regs;
-};
-
-struct s3c44b0_rtc_t
-{
- s3c44b0_rtc_regs_t regs;
- emu_timer *timer_tick_count;
- emu_timer *timer_update;
-};
-
-struct s3c44b0_adc_t
-{
- s3c44b0_adc_regs_t regs;
- emu_timer *timer;
-};
-
-struct s3c44b0_cpuwrap_t
-{
- s3c44b0_cpuwrap_regs_t regs;
-};
-
-
enum
{
S3C44B0_GPIO_PORT_A = 0,
@@ -597,19 +110,19 @@ enum
S3C44B0_GPIO_PORT_G
};
+
class s3c44b0_device : public device_t
{
public:
s3c44b0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~s3c44b0_device() {}
- template<class _Object> static devcb_base &set_gpio_port_r_callback(device_t &device, _Object object) { return downcast<s3c44b0_device &>(device).m_port_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_gpio_port_w_callback(device_t &device, _Object object) { return downcast<s3c44b0_device &>(device).m_port_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, _Object object) { return downcast<s3c44b0_device &>(device).m_scl_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, _Object object) { return downcast<s3c44b0_device &>(device).m_sda_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, _Object object) { return downcast<s3c44b0_device &>(device).m_sda_w_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_adc_data_r_callback(device_t &device, _Object object) { return downcast<s3c44b0_device &>(device).m_data_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_i2s_data_w_callback(device_t &device, _Object object) { return downcast<s3c44b0_device &>(device).m_data_w_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_gpio_port_r_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_port_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gpio_port_w_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_port_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_scl_w_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_scl_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_sda_r_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_sda_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2c_sda_w_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_sda_w_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_adc_data_r_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_data_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_i2s_data_w_callback(device_t &device, Object &&cb) { return downcast<s3c44b0_device &>(device).m_data_w_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ32_MEMBER(lcd_r);
DECLARE_READ32_MEMBER(clkpow_r);
@@ -656,6 +169,308 @@ protected:
virtual void device_reset() override;
private:
+ struct s3c44b0_memcon_regs_t
+ {
+ uint32_t data[0x34/4];
+ };
+
+ struct s3c44b0_irq_regs_t
+ {
+ uint32_t intcon;
+ uint32_t intpnd;
+ uint32_t intmod;
+ uint32_t intmsk;
+ uint32_t i_pslv;
+ uint32_t i_pmst;
+ uint32_t i_cslv;
+ uint32_t i_cmst;
+ uint32_t i_ispr;
+ uint32_t i_ispc;
+ uint32_t reserved[4];
+ uint32_t f_ispr;
+ uint32_t f_ispc;
+ };
+
+ struct s3c44b0_dma_regs_t
+ {
+ uint32_t dcon;
+ uint32_t disrc;
+ uint32_t didst;
+ uint32_t dicnt;
+ uint32_t dcsrc;
+ uint32_t dcdst;
+ uint32_t dccnt;
+ };
+
+ struct s3c44b0_clkpow_regs_t
+ {
+ uint32_t pllcon;
+ uint32_t clkcon;
+ uint32_t clkslow;
+ uint32_t locktime;
+ };
+
+ struct s3c44b0_lcd_regs_t
+ {
+ uint32_t lcdcon1;
+ uint32_t lcdcon2;
+ uint32_t lcdsaddr1;
+ uint32_t lcdsaddr2;
+ uint32_t lcdsaddr3;
+ uint32_t redlut;
+ uint32_t greenlut;
+ uint32_t bluelut;
+ uint32_t reserved[8];
+ uint32_t lcdcon3;
+ uint32_t dithmode;
+ };
+
+ struct s3c44b0_uart_regs_t
+ {
+ uint32_t ulcon;
+ uint32_t ucon;
+ uint32_t ufcon;
+ uint32_t umcon;
+ uint32_t utrstat;
+ uint32_t uerstat;
+ uint32_t ufstat;
+ uint32_t umstat;
+ uint32_t utxh;
+ uint32_t urxh;
+ uint32_t ubrdiv;
+ };
+
+ struct s3c44b0_sio_regs_t
+ {
+ uint32_t siocon;
+ uint32_t siodat;
+ uint32_t sbrdr;
+ uint32_t itvcnt;
+ uint32_t dcntz;
+ };
+
+ struct s3c44b0_pwm_regs_t
+ {
+ uint32_t tcfg0;
+ uint32_t tcfg1;
+ uint32_t tcon;
+ uint32_t tcntb0;
+ uint32_t tcmpb0;
+ uint32_t tcnto0;
+ uint32_t tcntb1;
+ uint32_t tcmpb1;
+ uint32_t tcnto1;
+ uint32_t tcntb2;
+ uint32_t tcmpb2;
+ uint32_t tcnto2;
+ uint32_t tcntb3;
+ uint32_t tcmpb3;
+ uint32_t tcnto3;
+ uint32_t tcntb4;
+ uint32_t tcmpb4;
+ uint32_t tcnto4;
+ uint32_t tcntb5;
+ uint32_t tcnto5;
+ };
+
+ struct s3c44b0_wdt_regs_t
+ {
+ uint32_t wtcon;
+ uint32_t wtdat;
+ uint32_t wtcnt;
+ };
+
+ struct s3c44b0_iic_regs_t
+ {
+ uint32_t iiccon;
+ uint32_t iicstat;
+ uint32_t iicadd;
+ uint32_t iicds;
+ };
+
+ struct s3c44b0_iis_regs_t
+ {
+ uint32_t iiscon;
+ uint32_t iismod;
+ uint32_t iispsr;
+ uint32_t iisfcon;
+ uint32_t iisfifo;
+ };
+
+ struct s3c44b0_gpio_regs_t
+ {
+ uint32_t gpacon;
+ uint32_t gpadat;
+ uint32_t gpbcon;
+ uint32_t gpbdat;
+ uint32_t gpccon;
+ uint32_t gpcdat;
+ uint32_t gpcup;
+ uint32_t gpdcon;
+ uint32_t gpddat;
+ uint32_t gpdup;
+ uint32_t gpecon;
+ uint32_t gpedat;
+ uint32_t gpeup;
+ uint32_t gpfcon;
+ uint32_t gpfdat;
+ uint32_t gpfup;
+ uint32_t gpgcon;
+ uint32_t gpgdat;
+ uint32_t gpgup;
+ uint32_t spucr;
+ uint32_t extint;
+ uint32_t extintpnd;
+ };
+
+ struct s3c44b0_rtc_regs_t
+ {
+ uint32_t rtccon;
+ uint32_t reserved[3];
+ uint32_t rtcalm;
+ uint32_t almsec;
+ uint32_t almmin;
+ uint32_t almhour;
+ uint32_t almday;
+ uint32_t almmon;
+ uint32_t almyear;
+ uint32_t rtcrst;
+ uint32_t bcdsec;
+ uint32_t bcdmin;
+ uint32_t bcdhour;
+ uint32_t bcdday;
+ uint32_t bcddow;
+ uint32_t bcdmon;
+ uint32_t bcdyear;
+ uint32_t ticnt;
+ };
+
+ struct s3c44b0_adc_regs_t
+ {
+ uint32_t adccon;
+ uint32_t adcpsr;
+ uint32_t adcdat;
+ };
+
+ struct s3c44b0_cpuwrap_regs_t
+ {
+ uint32_t syscfg;
+ uint32_t ncachbe0;
+ uint32_t ncachbe1;
+ };
+
+ struct s3c44b0_memcon_t
+ {
+ s3c44b0_memcon_regs_t regs;
+ };
+
+ struct s3c44b0_irq_t
+ {
+ s3c44b0_irq_regs_t regs;
+ int line_irq, line_fiq;
+ };
+
+ struct s3c44b0_dma_t
+ {
+ s3c44b0_dma_regs_t regs;
+ emu_timer *timer;
+ };
+
+ struct s3c44b0_clkpow_t
+ {
+ s3c44b0_clkpow_regs_t regs;
+ };
+
+ struct rectangle_t
+ {
+ int x1, y1, x2, y2;
+ };
+
+ struct s3c44b0_lcd_t
+ {
+ s3c44b0_lcd_regs_t regs;
+ emu_timer *timer;
+ std::unique_ptr<uint8_t[]> bitmap;
+ uint32_t vramaddr_cur;
+ uint32_t vramaddr_max;
+ uint32_t offsize;
+ uint32_t pagewidth_cur;
+ uint32_t pagewidth_max;
+ uint32_t modesel;
+ uint32_t bswp;
+ int vpos, hpos;
+ double framerate;
+ uint32_t hpos_min, hpos_max, hpos_end, vpos_min, vpos_max, vpos_end;
+ attotime frame_time;
+ attoseconds_t frame_period, pixeltime, scantime;
+ };
+
+ struct s3c44b0_uart_t
+ {
+ s3c44b0_uart_regs_t regs;
+ emu_timer *timer;
+ };
+
+ struct s3c44b0_sio_t
+ {
+ s3c44b0_sio_regs_t regs;
+ emu_timer *timer;
+ };
+
+ struct s3c44b0_pwm_t
+ {
+ s3c44b0_pwm_regs_t regs;
+ emu_timer *timer[6];
+ uint32_t cnt[6];
+ uint32_t cmp[6];
+ uint32_t freq[6];
+ };
+
+ struct s3c44b0_wdt_t
+ {
+ s3c44b0_wdt_regs_t regs;
+ emu_timer *timer;
+ };
+
+ struct s3c44b0_iic_t
+ {
+ s3c44b0_iic_regs_t regs;
+ emu_timer *timer;
+ int count;
+ };
+
+ struct s3c44b0_iis_t
+ {
+ s3c44b0_iis_regs_t regs;
+ emu_timer *timer;
+ uint16_t fifo[16/2];
+ int fifo_index;
+ };
+
+ struct s3c44b0_gpio_t
+ {
+ s3c44b0_gpio_regs_t regs;
+ };
+
+ struct s3c44b0_rtc_t
+ {
+ s3c44b0_rtc_regs_t regs;
+ emu_timer *timer_tick_count;
+ emu_timer *timer_update;
+ };
+
+ struct s3c44b0_adc_t
+ {
+ s3c44b0_adc_regs_t regs;
+ emu_timer *timer;
+ };
+
+ struct s3c44b0_cpuwrap_t
+ {
+ s3c44b0_cpuwrap_regs_t regs;
+ };
+
+
// internal state
// LCD Controller
rgb_t lcd_get_color_stn_04(uint8_t data);
@@ -786,29 +601,29 @@ private:
void s3c44b0_postload();
};
-extern const device_type S3C44B0;
+DECLARE_DEVICE_TYPE(S3C44B0, s3c44b0_device)
-#define MCFG_S3C44B0_GPIO_PORT_R_CB(_devcb) \
- devcb = &s3c44b0_device::set_gpio_port_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C44B0_GPIO_PORT_R_CB(cb) \
+ devcb = &s3c44b0_device::set_gpio_port_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C44B0_GPIO_PORT_W_CB(_devcb) \
- devcb = &s3c44b0_device::set_gpio_port_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C44B0_GPIO_PORT_W_CB(cb) \
+ devcb = &s3c44b0_device::set_gpio_port_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C44B0_I2C_SCL_W_CB(_devcb) \
- devcb = &s3c44b0_device::set_i2c_scl_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C44B0_I2C_SCL_W_CB(cb) \
+ devcb = &s3c44b0_device::set_i2c_scl_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C44B0_I2C_SDA_R_CB(_devcb) \
- devcb = &s3c44b0_device::set_i2c_sda_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C44B0_I2C_SDA_R_CB(cb) \
+ devcb = &s3c44b0_device::set_i2c_sda_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C44B0_I2C_SDA_W_CB(_devcb) \
- devcb = &s3c44b0_device::set_i2c_sda_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C44B0_I2C_SDA_W_CB(cb) \
+ devcb = &s3c44b0_device::set_i2c_sda_w_callback(*device, DEVCB_##cb);
-#define MCFG_S3C44B0_ADC_DATA_R_CB(_devcb) \
- devcb = &s3c44b0_device::set_adc_data_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C44B0_ADC_DATA_R_CB(cb) \
+ devcb = &s3c44b0_device::set_adc_data_r_callback(*device, DEVCB_##cb);
-#define MCFG_S3C44B0_I2S_DATA_W_CB(_devcb) \
- devcb = &s3c44b0_device::set_i2s_data_w_callback(*device, DEVCB_##_devcb);
+#define MCFG_S3C44B0_I2S_DATA_W_CB(cb) \
+ devcb = &s3c44b0_device::set_i2s_data_w_callback(*device, DEVCB_##cb);
-#endif
+#endif // MAME_MACHINE_S3C44B0_H
diff --git a/src/devices/machine/scnxx562.cpp b/src/devices/machine/scnxx562.cpp
index eb4f782e1b9..c0db91ceb85 100644
--- a/src/devices/machine/scnxx562.cpp
+++ b/src/devices/machine/scnxx562.cpp
@@ -86,19 +86,22 @@ DONE (x) (p=partly) NMOS CMOS
/* Useful temporary debug printout format */
// printf("TAG %lld %s%s Data:%d\n", machine().firstcpu->total_cycles(), __PRETTY_FUNCTION__, m_owner->tag(), data);
-#define VERBOSE 0
-
-#define LOGPRINT(x) { do { if (VERBOSE) logerror x; } while (0); }
-#define LOG(x) {}
-#define LOGR(x) {}
-#define LOGTX(x) {}
-#define LOGRX(x) {}
-#define LOGSETUP(x) {} LOGPRINT(x)
-#define LOGINT(x) {}
-
-#if VERBOSE > 1
-#define logerror printf
-#endif
+#define LOG_GENERAL (1U << 0)
+#define LOG_R (1U << 1)
+#define LOG_TX (1U << 2)
+#define LOG_RX (1U << 3)
+#define LOG_SETUP (1U << 4)
+#define LOG_INT (1U << 5)
+
+//#define VERBOSE (LOG_SETUP)
+//#define LOG_OUTPUT_FUNC printf
+#include "logmacro.h"
+
+#define LOGR(...) LOGMASKED(LOG_R, __VA_ARGS__)
+#define LOGTX(...) LOGMASKED(LOG_TX, __VA_ARGS__)
+#define LOGRX(...) LOGMASKED(LOG_RX, __VA_ARGS__)
+#define LOGSETUP(...) LOGMASKED(LOG_SETUP, __VA_ARGS__)
+#define LOGINT(...) LOGMASKED(LOG_INT, __VA_ARGS__)
#ifdef _MSC_VER
#define FUNCNAME __func__
@@ -115,12 +118,12 @@ DONE (x) (p=partly) NMOS CMOS
// DEVICE DEFINITIONS
//**************************************************************************
// device type definition
-const device_type DUSCC = device_creator<duscc_device>;
-const device_type DUSCC_CHANNEL = device_creator<duscc_channel>;
-const device_type DUSCC26562 = device_creator<duscc26562_device>;
-const device_type DUSCC26C562 = device_creator<duscc26C562_device>;
-const device_type DUSCC68562 = device_creator<duscc68562_device>;
-const device_type DUSCC68C562 = device_creator<duscc68C562_device>;
+DEFINE_DEVICE_TYPE(DUSCC, duscc_device, "dussc", "Philips Dual SSC")
+DEFINE_DEVICE_TYPE(DUSCC_CHANNEL, duscc_channel, "duscc_channel", "Philips Dual SCC Channel")
+DEFINE_DEVICE_TYPE(DUSCC26562, duscc26562_device, "duscc26c562", "Philips SCN26562 Dual SCC")
+DEFINE_DEVICE_TYPE(DUSCC26C562, duscc26c562_device, "duscc26562", "Philips SCN26C562 Dual SCC")
+DEFINE_DEVICE_TYPE(DUSCC68562, duscc68562_device, "duscc68562", "Philips SCN68562 Dual SCC")
+DEFINE_DEVICE_TYPE(DUSCC68C562, duscc68c562_device, "duscc68c562", "Philips SCN68C562 Dual SCC")
//-------------------------------------------------
// device_mconfig_additions -
@@ -142,79 +145,64 @@ machine_config_constructor duscc_device::device_mconfig_additions() const
//-------------------------------------------------
// duscc_device - constructor
//-------------------------------------------------
-duscc_device::duscc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_z80daisy_interface(mconfig, *this),
- m_chanA(*this, CHANA_TAG),
- m_chanB(*this, CHANB_TAG),
+duscc_device::duscc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_z80daisy_interface(mconfig, *this)
+ , m_chanA(*this, CHANA_TAG)
+ , m_chanB(*this, CHANB_TAG)
#if 0
- m_rxca(0),
- m_txca(0),
- m_rxcb(0),
- m_txcb(0),
+ , m_rxca(0),
+ , m_txca(0),
+ , m_rxcb(0),
+ , m_txcb(0),
#endif
- m_out_txda_cb(*this),
- m_out_dtra_cb(*this),
- m_out_rtsa_cb(*this),
- m_out_synca_cb(*this),
- m_out_rtxca_cb(*this),
- m_out_trxca_cb(*this),
- m_out_txdb_cb(*this),
- m_out_dtrb_cb(*this),
- m_out_rtsb_cb(*this),
- m_out_syncb_cb(*this),
- m_out_rtxcb_cb(*this),
- m_out_trxcb_cb(*this),
- m_out_int_cb(*this),
- m_variant(variant),
- m_gsr(0),
- m_ivr(0),
- m_ivrm(0),
- m_icr(0)
+ , m_out_txda_cb(*this)
+ , m_out_dtra_cb(*this)
+ , m_out_rtsa_cb(*this)
+ , m_out_synca_cb(*this)
+ , m_out_rtxca_cb(*this)
+ , m_out_trxca_cb(*this)
+ , m_out_txdb_cb(*this)
+ , m_out_dtrb_cb(*this)
+ , m_out_rtsb_cb(*this)
+ , m_out_syncb_cb(*this)
+ , m_out_rtxcb_cb(*this)
+ , m_out_trxcb_cb(*this)
+ , m_out_int_cb(*this)
+ , m_variant(variant)
+ , m_gsr(0)
+ , m_ivr(0)
+ , m_ivrm(0)
+ , m_icr(0)
{
for (auto & elem : m_int_state)
elem = 0;
}
duscc_device::duscc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DUSCC, "DUSCC", tag, owner, clock, "duscc", __FILE__),
- device_z80daisy_interface(mconfig, *this),
- m_chanA(*this, CHANA_TAG),
- m_chanB(*this, CHANB_TAG),
- m_out_txda_cb(*this),
- m_out_dtra_cb(*this),
- m_out_rtsa_cb(*this),
- m_out_synca_cb(*this),
- m_out_rtxca_cb(*this),
- m_out_trxca_cb(*this),
- m_out_txdb_cb(*this),
- m_out_dtrb_cb(*this),
- m_out_rtsb_cb(*this),
- m_out_syncb_cb(*this),
- m_out_rtxcb_cb(*this),
- m_out_trxcb_cb(*this),
- m_out_int_cb(*this),
- m_variant(TYPE_DUSCC),
- m_gsr(0),
- m_ivr(0),
- m_ivrm(0),
- m_icr(0)
+ : duscc_device(mconfig, DUSCC, tag, owner, clock, TYPE_DUSCC)
{
- for (auto & elem : m_int_state)
- elem = 0;
}
duscc26562_device::duscc26562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : duscc_device(mconfig, DUSCC26562, "DUSCC 26562", tag, owner, clock, TYPE_DUSCC26562, "duscc26562", __FILE__){ }
+ : duscc_device(mconfig, DUSCC26562, tag, owner, clock, TYPE_DUSCC26562)
+{
+}
-duscc26C562_device::duscc26C562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : duscc_device(mconfig, DUSCC26C562, "DUSCC 26C562", tag, owner, clock, TYPE_DUSCC26C562, "duscc26c562", __FILE__){ }
+duscc26c562_device::duscc26c562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : duscc_device(mconfig, DUSCC26C562, tag, owner, clock, TYPE_DUSCC26C562)
+{
+}
duscc68562_device::duscc68562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : duscc_device(mconfig, DUSCC68562, "DUSCC 68562", tag, owner, clock, TYPE_DUSCC68562, "duscc68562", __FILE__){ }
+ : duscc_device(mconfig, DUSCC68562, tag, owner, clock, TYPE_DUSCC68562)
+{
+}
-duscc68C562_device::duscc68C562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : duscc_device(mconfig, DUSCC68C562, "DUSCC 68C562", tag, owner, clock, TYPE_DUSCC68C562, "duscc68c562", __FILE__){ }
+duscc68c562_device::duscc68c562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : duscc_device(mconfig, DUSCC68C562, tag, owner, clock, TYPE_DUSCC68C562)
+{
+}
//-------------------------------------------------
// device_start - device-specific startup
@@ -222,7 +210,7 @@ duscc68C562_device::duscc68C562_device(const machine_config &mconfig, const char
void duscc_device::device_start()
{
- LOG(("%s\n", FUNCNAME));
+ LOG("%s\n", FUNCNAME);
// resolve callbacks
m_out_txda_cb.resolve_safe();
@@ -249,7 +237,7 @@ void duscc_device::device_start()
save_item(NAME(m_ivrm));
// TODO: add serial device and daisy device save states
- LOG((" - DUSCC variant %02x\n", m_variant));
+ LOG(" - DUSCC variant %02x\n", m_variant);
}
@@ -259,7 +247,7 @@ void duscc_device::device_start()
void duscc_device::device_reset()
{
- LOG(("%s %s \n",tag(), FUNCNAME));
+ LOG("%s %s \n",tag(), FUNCNAME);
m_chanA->reset();
m_chanB->reset();
@@ -314,9 +302,9 @@ int duscc_device::z80daisy_irq_state()
{
int state = 0;
- LOGINT(("%s %s A:[%02x][%02x][%02x][%02x] B:[%02x][%02x][%02x][%02x] ",tag(), FUNCNAME,
+ LOGINT("%s %s A:[%02x][%02x][%02x][%02x] B:[%02x][%02x][%02x][%02x] ",tag(), FUNCNAME,
m_int_state[0], m_int_state[1], m_int_state[2], m_int_state[3],
- m_int_state[4], m_int_state[5], m_int_state[6], m_int_state[7]));
+ m_int_state[4], m_int_state[5], m_int_state[6], m_int_state[7]);
// loop over all interrupt sources
for (auto & elem : m_int_state)
@@ -330,7 +318,7 @@ int duscc_device::z80daisy_irq_state()
state |= elem;
}
- LOGINT((" - Interrupt State %02x\n", state));
+ LOGINT(" - Interrupt State %02x\n", state);
return state;
}
@@ -342,7 +330,7 @@ int duscc_device::z80daisy_irq_state()
int duscc_device::z80daisy_irq_ack()
{
- LOGINT(("%s %s()\n",tag(), FUNCNAME));
+ LOGINT("%s %s()\n",tag(), FUNCNAME);
// loop over all interrupt sources
for (auto & elem : m_int_state)
@@ -353,20 +341,20 @@ int duscc_device::z80daisy_irq_ack()
// clear interrupt, switch to the IEO state, and update the IRQs
elem = Z80_DAISY_IEO;
check_interrupts();
- LOGINT((" - Found an INT request, "));
+ LOGINT(" - Found an INT request, ");
if ((m_icr & REG_ICR_VEC_MODE_MASK) == REG_ICR_VEC_MODE_NONE)
{
- LOGINT(("but ICR set to use autovector, returning -1\n"));
+ LOGINT("but ICR set to use autovector, returning -1\n");
return -1;
}
else
{
- LOGINT(("returning IVRM: %02x\n", m_ivrm ));
+ LOGINT("returning IVRM: %02x\n", m_ivrm );
return m_ivrm;
}
}
}
- LOGINT((" - Found NO INT request, returning -1\n"));
+ LOGINT(" - Found NO INT request, returning -1\n");
return -1; // Signal no-vector, same as autovector but caller should know the difference
}
@@ -377,7 +365,7 @@ int duscc_device::z80daisy_irq_ack()
void duscc_device::z80daisy_irq_reti()
{
- LOGINT(("%s %s \n",tag(), FUNCNAME));
+ LOGINT("%s %s \n",tag(), FUNCNAME);
// loop over all interrupt sources
for (auto & elem : m_int_state)
@@ -396,7 +384,7 @@ void duscc_device::z80daisy_irq_reti()
READ8_MEMBER( duscc_device::iack )
{
- LOGINT(("%s %s - returning vector:%02x\n",tag(), FUNCNAME, m_ivrm));
+ LOGINT("%s %s - returning vector:%02x\n",tag(), FUNCNAME, m_ivrm);
int vec = z80daisy_irq_ack();
z80daisy_irq_reti();
return vec;
@@ -404,7 +392,7 @@ READ8_MEMBER( duscc_device::iack )
void duscc_device::check_interrupts()
{
- LOGINT(("%s %s()\n",tag(), FUNCNAME));
+ LOGINT("%s %s()\n",tag(), FUNCNAME);
int state = (z80daisy_irq_state() & Z80_DAISY_INT) ? ASSERT_LINE : CLEAR_LINE;
// "If no interrupt is pending, an H'FF' is output when reading the IVRM."
@@ -423,7 +411,7 @@ void duscc_device::check_interrupts()
void duscc_device::reset_interrupts()
{
- LOGINT(("%s %s\n",tag(), FUNCNAME));
+ LOGINT("%s %s\n",tag(), FUNCNAME);
// reset internal interrupt sources
for (auto & elem : m_int_state)
@@ -452,7 +440,7 @@ uint8_t duscc_device::modify_vector(uint8_t vec, int index, uint8_t src)
1 1 1 Ch B external or C/T status
--------------------------------------------------
*/
- LOGINT(("%s %c %s, vec:%02x src=%02x\n",tag(), 'A' + index, FUNCNAME, vec, src));
+ LOGINT("%s %c %s, vec:%02x src=%02x\n",tag(), 'A' + index, FUNCNAME, vec, src);
// TODO: Prevent modification if no vector has been programmed, even if it is the default vector.
if ((m_icr & REG_ICR_VEC_MOD) != 0) // Affect vector?
@@ -460,18 +448,18 @@ uint8_t duscc_device::modify_vector(uint8_t vec, int index, uint8_t src)
// Modify vector according to "Vector Include Status" bit (REG_ICR_V2V4_MOD)
if ((m_icr & REG_ICR_V2V4_MOD) != 0)
{ // Affect V2-V4
- LOGINT((" - Affect V2-V4 with status"));
+ LOGINT(" - Affect V2-V4 with status");
vec &= 0x07 << 3;
vec |= src << 3;
}
else // Affect V0-V2
{
- LOGINT((" - Affect V0-V2 with status"));
+ LOGINT(" - Affect V0-V2 with status");
vec &= 0x07 << 0;
vec |= src << 0;
}
}
- LOGINT((" - Returning vector %02x\n", vec));
+ LOGINT(" - Returning vector %02x\n", vec);
return vec;
}
@@ -499,13 +487,13 @@ void duscc_device::trigger_interrupt(int index, int state)
uint8_t source = 0;
int priority_level = 0;
- LOGINT(("%s %s:%c %02x \n",FUNCNAME, tag(), 'A' + index, state));
+ LOGINT("%s %s:%c %02x \n",FUNCNAME, tag(), 'A' + index, state);
/* The Interrup Controll Register (ICR) bits, must be set for the correspondning channel */
// ICR Check is probably by the caller but we check again to be sure
if ((m_icr & (index == CHANNEL_A ? REG_ICR_CHA : REG_ICR_CHB)) == 0)
{
- LOGINT(("The Interrupt Control Register [%02x] bit for this channel is not set, blocking attempt to interrupt\n", m_icr));
+ LOGINT("The Interrupt Control Register [%02x] bit for this channel is not set, blocking attempt to interrupt\n", m_icr);
return;
}
@@ -525,7 +513,7 @@ void duscc_device::trigger_interrupt(int index, int state)
// trigger interrupt
m_int_state[priority_level] |= Z80_DAISY_INT;
- LOGINT((" - Interrupt Priority Level %d, caused by Source %02x with vector %02x\n",priority_level, source, m_ivrm ));
+ LOGINT(" - Interrupt Priority Level %d, caused by Source %02x with vector %02x\n",priority_level, source, m_ivrm );
// check for interrupts
check_interrupts();
@@ -552,25 +540,25 @@ WRITE8_MEMBER( duscc_device::write )
// DUSCC CHANNEL
//**************************************************************************
duscc_channel::duscc_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DUSCC_CHANNEL, "DUSCC channel", tag, owner, clock, "duscc_channel", __FILE__),
- device_serial_interface(mconfig, *this),
- m_brg_rx_rate(0),
- m_brg_tx_rate(0),
- m_brg_const(1),
- m_rx_error(0),
- m_rx_clock(0),
- m_rx_first(0),
- m_rx_break(0),
- m_rxd(0),
- m_cts(0),
- m_dcd(0),
- m_tx_data(0),
- m_tx_clock(0),
- m_dtr(0),
- m_rts(0),
- m_sync(0)
-{
- LOG(("%s\n",FUNCNAME));
+ : device_t(mconfig, DUSCC_CHANNEL, tag, owner, clock)
+ , device_serial_interface(mconfig, *this)
+ , m_brg_rx_rate(0)
+ , m_brg_tx_rate(0)
+ , m_brg_const(1)
+ , m_rx_error(0)
+ , m_rx_clock(0)
+ , m_rx_first(0)
+ , m_rx_break(0)
+ , m_rxd(0)
+ , m_cts(0)
+ , m_dcd(0)
+ , m_tx_data(0)
+ , m_tx_clock(0)
+ , m_dtr(0)
+ , m_rts(0)
+ , m_sync(0)
+{
+ LOG("%s\n",FUNCNAME);
// Reset all registers
m_cmr1 = m_cmr2 = m_s1r = m_s2r = m_tpr = m_ttr = m_rpr = m_rtr
@@ -600,17 +588,17 @@ duscc_channel::duscc_channel(const machine_config &mconfig, const char *tag, dev
void duscc_channel::device_start()
{
- LOG(("%s\n", FUNCNAME));
+ LOG("%s\n", FUNCNAME);
m_uart = downcast<duscc_device *>(owner());
m_index = m_uart->get_channel_index(this);
- m_rx_fifo_sz = (m_uart->m_variant & SET_CMOS) ? 16 : 4;
+ m_rx_fifo_sz = (m_uart->m_variant & duscc_device::SET_CMOS) ? 16 : 4;
m_rx_fifo_wp = m_rx_fifo_rp = 0;
- m_tx_fifo_sz = (m_uart->m_variant & SET_CMOS) ? 16 : 4;
+ m_tx_fifo_sz = (m_uart->m_variant & duscc_device::SET_CMOS) ? 16 : 4;
m_tx_fifo_wp = m_tx_fifo_rp = 0;
- m_cid = (m_uart->m_variant & SET_CMOS) ? 0x7f : 0xff; // TODO: support CMOS rev A = 0xbf
+ m_cid = (m_uart->m_variant & duscc_device::SET_CMOS) ? 0x7f : 0xff; // TODO: support CMOS rev A = 0xbf
// Timers
duscc_timer = timer_alloc(TIMER_ID);
@@ -685,7 +673,7 @@ void duscc_channel::device_start()
void duscc_channel::device_reset()
{
- LOG(("%s\n", FUNCNAME));
+ LOG("%s\n", FUNCNAME);
// Reset RS232 emulation
receive_register_reset();
@@ -753,7 +741,7 @@ void duscc_channel::device_timer(emu_timer &timer, device_timer_id id, int param
if ( ( (m_ctcr & REG_CTCR_ZERO_DET_INT) == 1 ) &&
( (m_uart->m_icr & (m_index == duscc_device::CHANNEL_A ? duscc_device::REG_ICR_CHA : duscc_device::REG_ICR_CHB) ) != 0) )
{
- LOG(("Zero Detect Interrupt pending\n"));
+ LOG("Zero Detect Interrupt pending\n");
m_uart->trigger_interrupt(m_index, INT_EXTCTSTAT);
}
@@ -825,11 +813,11 @@ void duscc_channel::device_timer(emu_timer &timer, device_timer_id id, int param
m_uart->m_out_trxcb_cb(m_trxc);
break;
default:
- LOGR(("Unhandled Timer ID passed to device_serial_interface%d\n", id));
+ LOGR("Unhandled Timer ID passed to device_serial_interface%d\n", id);
device_serial_interface::device_timer(timer, id, param, ptr);
break;
}
- // LOG(("%s %d\n", FUNCNAME, id));
+ // LOG("%s %d\n", FUNCNAME, id);
}
/* The DUSCC 16 bit Timer
@@ -874,13 +862,13 @@ void duscc_channel::device_timer(emu_timer &timer, device_timer_id id, int param
*/
uint8_t duscc_channel::do_dusccreg_ctcr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_ctcr));
+ LOG("%s(%02x)\n", FUNCNAME, m_ctcr);
return m_ctcr;
}
void duscc_channel::do_dusccreg_ctcr_w(uint8_t data)
{
- LOG(("%s(%02x) - not supported yet\n", FUNCNAME, data));
+ LOG("%s(%02x) - not supported yet\n", FUNCNAME, data);
m_ctcr = data;
return;
}
@@ -893,14 +881,14 @@ void duscc_channel::do_dusccreg_ctcr_w(uint8_t data)
uint8_t duscc_channel::do_dusccreg_ctprh_r()
{
uint8_t ret = ((m_ctpr >> 8) & 0xff );
- LOG(("%s(%02x)\n", FUNCNAME, ret));
+ LOG("%s(%02x)\n", FUNCNAME, ret);
return ret;
}
void duscc_channel::do_dusccreg_ctprh_w(uint8_t data)
{
- LOG(("%s(%02x)\n", FUNCNAME, data));
+ LOG("%s(%02x)\n", FUNCNAME, data);
m_ctpr &= ~0x0000ff00;
m_ctpr |= ((data << 8) & 0x0000ff00);
return;
@@ -914,13 +902,13 @@ void duscc_channel::do_dusccreg_ctprh_w(uint8_t data)
uint8_t duscc_channel::do_dusccreg_ctprl_r()
{
uint8_t ret = (m_ctpr & 0xff);
- LOG(("%s(%02x)\n", FUNCNAME, ret));
+ LOG("%s(%02x)\n", FUNCNAME, ret);
return ret;
}
void duscc_channel::do_dusccreg_ctprl_w(uint8_t data)
{
- LOG(("%s(%02x)\n", FUNCNAME, data));
+ LOG("%s(%02x)\n", FUNCNAME, data);
m_ctpr &= ~0x000000ff;
m_ctpr |= (data & 0x000000ff);
return;
@@ -935,7 +923,7 @@ void duscc_channel::do_dusccreg_ctprl_w(uint8_t data)
uint8_t duscc_channel::do_dusccreg_cth_r()
{
uint8_t ret = ((m_ct >> 8) & 0xff );
- LOG(("%s(%02x)\n", FUNCNAME, ret));
+ LOG("%s(%02x)\n", FUNCNAME, ret);
return ret;
}
@@ -948,7 +936,7 @@ uint8_t duscc_channel::do_dusccreg_cth_r()
uint8_t duscc_channel::do_dusccreg_ctl_r()
{
uint8_t ret = (m_ct & 0xff);
- LOG(("%s(%02x)\n", FUNCNAME, ret));
+ LOG("%s(%02x)\n", FUNCNAME, ret);
return ret;
}
@@ -962,7 +950,7 @@ void duscc_channel::tra_callback()
{
int db = transmit_register_get_data_bit();
- LOGR((LLFORMAT " %s() \"%s \"Channel %c transmit data bit %d\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, db));
+ LOGR(LLFORMAT " %s() \"%s \"Channel %c transmit data bit %d\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, db);
// transmit data
if (m_index == duscc_device::CHANNEL_A)
@@ -972,7 +960,7 @@ void duscc_channel::tra_callback()
}
else
{
- LOG((LLFORMAT " %s() \"%s \"Channel %c Failed to transmit \n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index));
+ LOG(LLFORMAT " %s() \"%s \"Channel %c Failed to transmit \n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index);
logerror("%s Channel %c Failed to transmit\n", FUNCNAME, 'A' + m_index);
}
}
@@ -1012,7 +1000,7 @@ void duscc_channel::rcv_callback()
{
if (m_rcv == 1)
{
- LOG((LLFORMAT " %s() \"%s \"Channel %c received data bit %d\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_rxd));
+ LOG(LLFORMAT " %s() \"%s \"Channel %c received data bit %d\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_rxd);
receive_register_update_bit(m_rxd);
}
}
@@ -1028,7 +1016,7 @@ void duscc_channel::rcv_complete()
receive_register_extract();
data = get_received_char();
- LOGINT((LLFORMAT " %s() \"%s \"Channel %c Received Data %c\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, data));
+ LOGINT(LLFORMAT " %s() \"%s \"Channel %c Received Data %c\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, data);
receive_data(data);
}
@@ -1062,7 +1050,7 @@ int duscc_channel::get_tx_clock_mode()
void duscc_channel::set_rts(int state)
{
- LOG(("%s(%d) \"%s\": %c \n", FUNCNAME, state, m_owner->tag(), 'A' + m_index));
+ LOG("%s(%d) \"%s\": %c \n", FUNCNAME, state, m_owner->tag(), 'A' + m_index);
if (m_index == duscc_device::CHANNEL_A)
m_uart->m_out_rtsa_cb(state);
else
@@ -1163,61 +1151,61 @@ int duscc_channel::get_tx_word_length()
uint8_t duscc_channel::do_dusccreg_cmr1_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_cmr1));
+ LOG("%s(%02x)\n", FUNCNAME, m_cmr1);
return m_cmr1;
}
uint8_t duscc_channel::do_dusccreg_cmr2_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_cmr2));
+ LOG("%s(%02x)\n", FUNCNAME, m_cmr2);
return m_cmr2;
}
uint8_t duscc_channel::do_dusccreg_s1r_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_s1r));
+ LOG("%s(%02x)\n", FUNCNAME, m_s1r);
return m_s1r;
}
uint8_t duscc_channel::do_dusccreg_s2r_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_s2r));
+ LOG("%s(%02x)\n", FUNCNAME, m_s2r);
return m_s2r;
}
uint8_t duscc_channel::do_dusccreg_tpr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_tpr));
+ LOG("%s(%02x)\n", FUNCNAME, m_tpr);
return m_tpr;
}
uint8_t duscc_channel::do_dusccreg_ttr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_ttr));
+ LOG("%s(%02x)\n", FUNCNAME, m_ttr);
return m_ttr;
}
uint8_t duscc_channel::do_dusccreg_rpr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_rpr));
+ LOG("%s(%02x)\n", FUNCNAME, m_rpr);
return m_rpr;
}
uint8_t duscc_channel::do_dusccreg_rtr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_rtr));
+ LOG("%s(%02x)\n", FUNCNAME, m_rtr);
return m_rtr;
}
uint8_t duscc_channel::do_dusccreg_omr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_omr));
+ LOG("%s(%02x)\n", FUNCNAME, m_omr);
return m_omr;
}
uint8_t duscc_channel::do_dusccreg_pcr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_pcr));
+ LOG("%s(%02x)\n", FUNCNAME, m_pcr);
return m_pcr;
}
@@ -1225,7 +1213,7 @@ uint8_t duscc_channel::do_dusccreg_pcr_r()
register returns the last invoked command (with bits 4 and 5 set to 1). */
uint8_t duscc_channel::do_dusccreg_ccr_r()
{
- LOG(("%s\n", FUNCNAME));
+ LOG("%s\n", FUNCNAME);
return (uint8_t) m_ccr | 1 << 4 | 1 << 5;
}
@@ -1233,8 +1221,8 @@ uint8_t duscc_channel::do_dusccreg_rxfifo_r()
{
uint8_t data = 0;
- LOGINT(("%s\n", FUNCNAME));
- LOGRX((" - RX rp:%d wp:%d sz:%d\n", m_rx_fifo_rp, m_rx_fifo_wp, m_rx_fifo_sz));
+ LOGINT("%s\n", FUNCNAME);
+ LOGRX(" - RX rp:%d wp:%d sz:%d\n", m_rx_fifo_rp, m_rx_fifo_wp, m_rx_fifo_sz);
/* So is there a character in the FIFO? */
if (m_rx_fifo_rp != m_rx_fifo_wp)
@@ -1243,12 +1231,12 @@ uint8_t duscc_channel::do_dusccreg_rxfifo_r()
m_rx_error_fifo[m_rx_fifo_rp] = 0; // Loose the old errors
m_rx_fifo_rp_step();
m_rsr |= (m_rx_error_fifo[m_rx_fifo_rp] & (REG_RSR_CHAR_COMPARE | REG_RSR_FRAMING_ERROR | REG_RSR_PARITY_ERROR)); // Get new errors
- LOGINT((" - RX reading out data:%02x '%c'\n", data, isalnum(data) ? data : ' '));
+ LOGINT(" - RX reading out data:%02x '%c'\n", data, isalnum(data) ? data : ' ');
}
else
{
logerror("- RX FIFO empty despite RxREADY\n");
- LOGINT(("- RX FIFO empty despite RxREADY\n"));
+ LOGINT("- RX FIFO empty despite RxREADY\n");
}
return (uint8_t) data;
@@ -1256,13 +1244,13 @@ uint8_t duscc_channel::do_dusccreg_rxfifo_r()
uint8_t duscc_channel::do_dusccreg_rsr_r()
{
- LOG(("%s: %02x\n", FUNCNAME, m_rsr));
+ LOG("%s: %02x\n", FUNCNAME, m_rsr);
return (uint8_t) m_rsr;
}
uint8_t duscc_channel::do_dusccreg_trsr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_trsr));
+ LOG("%s(%02x)\n", FUNCNAME, m_trsr);
return m_trsr;
}
@@ -1296,21 +1284,21 @@ uint8_t duscc_channel::do_dusccreg_ictsr_r()
uint8_t duscc_channel::do_dusccreg_gsr_r()
{
static uint8_t old_gsr = 0;
- if (m_uart->m_gsr != old_gsr) LOG(("%s <- %02x\n", FUNCNAME, m_uart->m_gsr));
+ if (m_uart->m_gsr != old_gsr) LOG("%s <- %02x\n", FUNCNAME, m_uart->m_gsr);
old_gsr = m_uart->m_gsr;
return m_uart->m_gsr;
}
uint8_t duscc_channel::do_dusccreg_ier_r()
{
- LOGINT(("%s <- %02x\n", FUNCNAME, m_ier));
+ LOGINT("%s <- %02x\n", FUNCNAME, m_ier);
return (uint8_t) m_ier;
}
uint8_t duscc_channel::do_dusccreg_cid_r()
{
- LOG(("%s\n", FUNCNAME));
- if ( m_uart->m_variant != SET_CMOS )
+ LOG("%s\n", FUNCNAME);
+ if ( !(m_uart->m_variant & duscc_device::SET_CMOS) )
{
logerror("Attempt read out CDUSCC register CID on an NDUSCC\n");
return 0;
@@ -1326,76 +1314,76 @@ uint8_t duscc_channel::do_dusccreg_cid_r()
uint8_t duscc_channel::do_dusccreg_ivr_ivrm_r()
{
- LOG(("%s", FUNCNAME));
+ LOG("%s", FUNCNAME);
if ( m_index == duscc_device::CHANNEL_A )
{
- LOG(("(%02x)\n", m_uart->m_ivr));
+ LOG("(%02x)\n", m_uart->m_ivr);
return m_uart->m_ivr; // Interrupt vector as programmed
}
else
{
- LOG((" - IVRM\n"));
+ LOG(" - IVRM\n");
return m_uart->m_ivrm; // Modified Interrupt vector
}
}
uint8_t duscc_channel::do_dusccreg_icr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_uart->m_icr));
+ LOG("%s(%02x)\n", FUNCNAME, m_uart->m_icr);
return m_uart->m_icr;
}
uint8_t duscc_channel::do_dusccreg_mrr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_mrr));
+ LOG("%s(%02x)\n", FUNCNAME, m_mrr);
return m_mrr;
}
uint8_t duscc_channel::do_dusccreg_ier1_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_ier1));
+ LOG("%s(%02x)\n", FUNCNAME, m_ier1);
return m_ier1;
}
uint8_t duscc_channel::do_dusccreg_ier2_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_ier2));
+ LOG("%s(%02x)\n", FUNCNAME, m_ier2);
return m_ier2;
}
uint8_t duscc_channel::do_dusccreg_ier3_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_ier3));
+ LOG("%s(%02x)\n", FUNCNAME, m_ier3);
return m_ier3;
}
uint8_t duscc_channel::do_dusccreg_trcr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_trcr));
+ LOG("%s(%02x)\n", FUNCNAME, m_trcr);
return m_trcr;
}
uint8_t duscc_channel::do_dusccreg_rflr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_rflr));
+ LOG("%s(%02x)\n", FUNCNAME, m_rflr);
return m_rflr;
}
uint8_t duscc_channel::do_dusccreg_ftlr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_ftlr));
+ LOG("%s(%02x)\n", FUNCNAME, m_ftlr);
return m_ftlr;
}
uint8_t duscc_channel::do_dusccreg_trmsr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_trmsr));
+ LOG("%s(%02x)\n", FUNCNAME, m_trmsr);
return m_trmsr;
}
uint8_t duscc_channel::do_dusccreg_telr_r()
{
- LOG(("%s(%02x)\n", FUNCNAME, m_telr));
+ LOG("%s(%02x)\n", FUNCNAME, m_telr);
return m_telr;
}
@@ -1459,10 +1447,10 @@ uint8_t duscc_channel::do_dusccreg_telr_r()
*/
void duscc_channel::do_dusccreg_cmr1_w(uint8_t data)
{
- LOG(("%s(%02x)\n", FUNCNAME, data));
+ LOG("%s(%02x)\n", FUNCNAME, data);
m_cmr1 = data;
- LOG(("- Setting up %s mode\n", (m_cmr1 & REG_CMR1_CPMODE_MASK) == REG_CMR1_CPMODE_ASYNC ? "ASYNC" : "SYNC"));
- LOG(("- Parity: %s\n", ((m_cmr1 & REG_CMR1_PMMODE_MASK) == REG_CMR1_PMMODE_PARITY ? (m_cmr1 & REG_CMR1_PARITY ? "odd" : "even") : "none")));
+ LOG("- Setting up %s mode\n", (m_cmr1 & REG_CMR1_CPMODE_MASK) == REG_CMR1_CPMODE_ASYNC ? "ASYNC" : "SYNC");
+ LOG("- Parity: %s\n", ((m_cmr1 & REG_CMR1_PMMODE_MASK) == REG_CMR1_PMMODE_PARITY ? (m_cmr1 & REG_CMR1_PARITY ? "odd" : "even") : "none"));
return;
}
@@ -1537,9 +1525,9 @@ void duscc_channel::do_dusccreg_cmr1_w(uint8_t data)
*/
void duscc_channel::do_dusccreg_cmr2_w(uint8_t data)
{
- LOG(("%s(%02x)\n", FUNCNAME, data));
+ LOG("%s(%02x)\n", FUNCNAME, data);
m_cmr2 = data;
- LOG(("- Preparing for %s driven transfers\n", (m_cmr2 & REG_CMR2_DTI_MASK) == REG_CMR2_DTI_NODMA ? "polled or interrupt" : "dma"));
+ LOG("- Preparing for %s driven transfers\n", (m_cmr2 & REG_CMR2_DTI_MASK) == REG_CMR2_DTI_NODMA ? "polled or interrupt" : "dma");
return;
}
@@ -1557,7 +1545,7 @@ void duscc_channel::do_dusccreg_cmr2_w(uint8_t data)
*/
void duscc_channel::do_dusccreg_s1r_w(uint8_t data)
{
- LOG(("%s(%02x) - not supported yet\n", FUNCNAME, data));
+ LOG("%s(%02x) - not supported yet\n", FUNCNAME, data);
m_s1r = data;
return;
}
@@ -1571,7 +1559,7 @@ void duscc_channel::do_dusccreg_s1r_w(uint8_t data)
address octets, it contains the partial address used to compare the second received address octet.*/
void duscc_channel::do_dusccreg_s2r_w(uint8_t data)
{
- LOG(("%s(%02x) - not supported yet\n", FUNCNAME, data));
+ LOG("%s(%02x) - not supported yet\n", FUNCNAME, data);
m_s2r = data;
return;
}
@@ -1617,12 +1605,12 @@ void duscc_channel::do_dusccreg_s2r_w(uint8_t data)
*/
void duscc_channel::do_dusccreg_tpr_w(uint8_t data)
{
- LOG(("%s(%02x) Setting up Transmit Parameters\n", FUNCNAME, data));
+ LOG("%s(%02x) Setting up Transmit Parameters\n", FUNCNAME, data);
m_tpr = data;
- LOG(("- RTS %u\n", (m_tpr & REG_TPR_RTS) ? 1 : 0));
- LOG(("- CTS %u\n", (m_tpr & REG_TPR_CTS) ? 1 : 0));
- LOG(("- Stop Bits %s\n", stop_bits_tostring(get_stop_bits())));
- LOG(("- Data Tx bits %u\n", get_tx_word_length()));
+ LOG("- RTS %u\n", (m_tpr & REG_TPR_RTS) ? 1 : 0);
+ LOG("- CTS %u\n", (m_tpr & REG_TPR_CTS) ? 1 : 0);
+ LOG("- Stop Bits %s\n", stop_bits_tostring(get_stop_bits()));
+ LOG("- Data Tx bits %u\n", get_tx_word_length());
update_serial();
return;
@@ -1661,28 +1649,28 @@ void duscc_channel::do_dusccreg_tpr_w(uint8_t data)
*/
void duscc_channel::do_dusccreg_ttr_w(uint8_t data)
{
- LOG(("%s(%02x) Setting up Transmit Timing\n", FUNCNAME, data));
+ LOG("%s(%02x) Setting up Transmit Timing\n", FUNCNAME, data);
m_ttr = data;
- LOG(("- External source: %s\n", (m_ttr & REG_TTR_EXT) ? "TRxC" : "RTxC"));
- LOG(("- Transmit Clock: "));
+ LOG("- External source: %s\n", (m_ttr & REG_TTR_EXT) ? "TRxC" : "RTxC");
+ LOG("- Transmit Clock: ");
switch(m_ttr & REG_TTR_TXCLK_MASK)
{
- case REG_TTR_TXCLK_1XEXT: LOG(("1x External - not implemented\n")); break;
- case REG_TTR_TXCLK_16XEXT: LOG(("16x External - not implemented\n")); break;
- case REG_TTR_TXCLK_DPLL: LOG(("DPLL - not implemented\n")); break;
+ case REG_TTR_TXCLK_1XEXT: LOG("1x External - not implemented\n"); break;
+ case REG_TTR_TXCLK_16XEXT: LOG("16x External - not implemented\n"); break;
+ case REG_TTR_TXCLK_DPLL: LOG("DPLL - not implemented\n"); break;
case REG_TTR_TXCLK_BRG:
- LOG(("BRG\n"));
+ LOG("BRG\n");
m_brg_tx_rate = get_baudrate(m_ttr & REG_TTR_BRG_RATE_MASK);
break;
- case REG_TTR_TXCLK_2X_OTHER: LOG(("2x other channel C/T - not implemented\n")); break;
- case REG_TTR_TXCLK_32X_OTHER: LOG(("32x other channel C/T - not implemented\n")); break;
- case REG_TTR_TXCLK_2X_OWN: LOG(("2x own channel C/T - not implemented\n")); break;
- case REG_TTR_TXCLK_32X_OWN: LOG(("32x own channel C/T - not implemented\n")); break;
- default: LOG(("DUSCC: Wrong programming\n")); break; // Should never happen
+ case REG_TTR_TXCLK_2X_OTHER: LOG("2x other channel C/T - not implemented\n"); break;
+ case REG_TTR_TXCLK_32X_OTHER: LOG("32x other channel C/T - not implemented\n"); break;
+ case REG_TTR_TXCLK_2X_OWN: LOG("2x own channel C/T - not implemented\n"); break;
+ case REG_TTR_TXCLK_32X_OWN: LOG("32x own channel C/T - not implemented\n"); break;
+ default: LOG("DUSCC: Wrong programming\n"); break; // Should never happen
}
- LOG(("- BRG Tx rate %u assuming a 14.7456MHz CLK crystal\n", get_baudrate(m_ttr & REG_TTR_BRG_RATE_MASK)));
+ LOG("- BRG Tx rate %u assuming a 14.7456MHz CLK crystal\n", get_baudrate(m_ttr & REG_TTR_BRG_RATE_MASK));
update_serial();
return;
@@ -1760,12 +1748,12 @@ void duscc_channel::do_dusccreg_ttr_w(uint8_t data)
*/
void duscc_channel::do_dusccreg_rpr_w(uint8_t data)
{
- LOG(("%s(%02x) Setting up Receiver Parameters\n", FUNCNAME, data));
+ LOG("%s(%02x) Setting up Receiver Parameters\n", FUNCNAME, data);
m_rpr = data;
- LOG(("- RTS output %u\n", (m_rpr & REG_RPR_RTS) ? 1 : 0));
- LOG(("- Strip Parity %u\n", (m_rpr & REG_RPR_STRIP_PARITY && get_rx_word_length() < 8) ? 1 : 0));
- LOG(("- DCD/SYNIN input %u\n", (m_rpr & REG_RPR_DCD) ? 1 : 0));
- LOG(("- Data Rx bits %u\n", get_rx_word_length()));
+ LOG("- RTS output %u\n", (m_rpr & REG_RPR_RTS) ? 1 : 0);
+ LOG("- Strip Parity %u\n", (m_rpr & REG_RPR_STRIP_PARITY && get_rx_word_length() < 8) ? 1 : 0);
+ LOG("- DCD/SYNIN input %u\n", (m_rpr & REG_RPR_DCD) ? 1 : 0);
+ LOG("- Data Rx bits %u\n", get_rx_word_length());
update_serial();
return;
@@ -1797,28 +1785,28 @@ void duscc_channel::do_dusccreg_rpr_w(uint8_t data)
void duscc_channel::do_dusccreg_rtr_w(uint8_t data)
{
- LOG(("%s(%02x) Setting up Receiver Timing\n", FUNCNAME, data));
+ LOG("%s(%02x) Setting up Receiver Timing\n", FUNCNAME, data);
m_rtr = data;
- LOG(("- External source: %s\n", (m_rtr & REG_RTR_EXT) ? "TRxC" : "RTxC"));
- LOG(("- Receiver Clock: "));
+ LOG("- External source: %s\n", (m_rtr & REG_RTR_EXT) ? "TRxC" : "RTxC");
+ LOG("- Receiver Clock: ");
switch(m_rtr & REG_RTR_RXCLK_MASK)
{
- case REG_RTR_RXCLK_1XEXT: LOG(("1x External - not implemented\n")); break;
- case REG_RTR_RXCLK_16XEXT: LOG(("16x External - not implemented\n")); break;
+ case REG_RTR_RXCLK_1XEXT: LOG("1x External - not implemented\n"); break;
+ case REG_RTR_RXCLK_16XEXT: LOG("16x External - not implemented\n"); break;
case REG_RTR_RXCLK_BRG:
- LOG(("BRG\n"));
+ LOG("BRG\n");
m_brg_rx_rate = get_baudrate(m_rtr & REG_RTR_BRG_RATE_MASK);
break;
- case REG_RTR_RXCLK_CT: LOG(("C/T of channel - not implemented\n")); break;
- case REG_RTR_RXCLK_DPLL_64X_X1: LOG(("DPLL, source = 64X X1/CLK - not implemented\n")); break;
- case REG_RTR_RXCLK_DPLL_32X_EXT:LOG(("DPLL, source = 32X External - not implemented\n")); break;
- case REG_RTR_RXCLK_DPLL_32X_BRG:LOG(("DPLL, source = 32X BRG - not implemented\n")); break;
- case REG_RTR_RXCLK_DPLL_32X_CT: LOG(("DPLL, source = 32X C/T - not implemented\n")); break;
- default: LOG(("DUSCC: Wrong programming\n")); break; // Should never happen
+ case REG_RTR_RXCLK_CT: LOG("C/T of channel - not implemented\n"); break;
+ case REG_RTR_RXCLK_DPLL_64X_X1: LOG("DPLL, source = 64X X1/CLK - not implemented\n"); break;
+ case REG_RTR_RXCLK_DPLL_32X_EXT:LOG("DPLL, source = 32X External - not implemented\n"); break;
+ case REG_RTR_RXCLK_DPLL_32X_BRG:LOG("DPLL, source = 32X BRG - not implemented\n"); break;
+ case REG_RTR_RXCLK_DPLL_32X_CT: LOG("DPLL, source = 32X C/T - not implemented\n"); break;
+ default: LOG("DUSCC: Wrong programming\n"); break; // Should never happen
}
- LOG(("- BRG Rx rate %u assuming a 14.7456MHz CLK crystal\n", get_baudrate(m_rtr & REG_RTR_BRG_RATE_MASK)));
+ LOG("- BRG Rx rate %u assuming a 14.7456MHz CLK crystal\n", get_baudrate(m_rtr & REG_RTR_BRG_RATE_MASK));
update_serial();
return;
@@ -1863,22 +1851,22 @@ void duscc_channel::do_dusccreg_rtr_w(uint8_t data)
*/
void duscc_channel::do_dusccreg_omr_w(uint8_t data)
{
- LOG(("%s(%02x) Output and Miscellaneous Register\n", FUNCNAME, data));
+ LOG("%s(%02x) Output and Miscellaneous Register\n", FUNCNAME, data);
m_omr = data;
- LOG(("- Tx Residual Character Length is "));
+ LOG("- Tx Residual Character Length is ");
if ((m_omr & REG_OMR_TXRCL_MASK) == REG_OMR_TXRCL_8BIT)
{
- LOG(("determined by TPR[1:0], the Transmitter Parameter Register\n"));
+ LOG("determined by TPR[1:0], the Transmitter Parameter Register\n");
}
else
{
- LOG(("%u bits\n", (((m_omr & REG_OMR_TXRCL_MASK) >> 5) & 0x07) + 1));
+ LOG("%u bits\n", (((m_omr & REG_OMR_TXRCL_MASK) >> 5) & 0x07) + 1);
}
- LOG(("- TxRDY activated by %s\n", m_omr & REG_OMR_TXRDY_ACTIVATED ? "FIFO empty" : "FIFO not full"));
- LOG(("- RxRDY activated by %s\n", m_omr & REG_OMR_RXRDY_ACTIVATED ? "FIFO full" : "FIFO not empty"));
- LOG(("- GP02, if configured as output, is: %u\n", m_omr & REG_OMR_GP02 ? 0 : 1));
- LOG(("- GP01, if configured as output, is: %u\n", m_omr & REG_OMR_GP01 ? 0 : 1));
- LOG(("- RTS, either pin if configured as output, is: %u\n", m_omr & REG_OMR_RTS ? 0 : 1));
+ LOG("- TxRDY activated by %s\n", m_omr & REG_OMR_TXRDY_ACTIVATED ? "FIFO empty" : "FIFO not full");
+ LOG("- RxRDY activated by %s\n", m_omr & REG_OMR_RXRDY_ACTIVATED ? "FIFO full" : "FIFO not empty");
+ LOG("- GP02, if configured as output, is: %u\n", m_omr & REG_OMR_GP02 ? 0 : 1);
+ LOG("- GP01, if configured as output, is: %u\n", m_omr & REG_OMR_GP01 ? 0 : 1);
+ LOG("- RTS, either pin if configured as output, is: %u\n", m_omr & REG_OMR_RTS ? 0 : 1);
return;
}
@@ -1911,34 +1899,34 @@ void duscc_channel::do_dusccreg_omr_w(uint8_t data)
*/
void duscc_channel::do_dusccreg_pcr_w(uint8_t data)
{
- LOG(("%c %s(%02x)\n", 'A' + m_index, FUNCNAME, data));
+ LOG("%c %s(%02x)\n", 'A' + m_index, FUNCNAME, data);
m_pcr = data;
- LOG(("- The X2/IDCN pin is %s\n", m_index == duscc_device::CHANNEL_B ? "ignored for channel B" :
- ((m_pcr & REG_PCR_X2_IDC) ? "crystal input" : "daisy chain interrupt output")));
- LOG(("- The GP02/RTS pin is %s\n", m_pcr & REG_PCR_GP02_RTS ? "RTS" : "GP02"));
- LOG(("- The SYNOUT/RTS pin is %s\n", m_pcr & REG_PCR_SYNOUT_RTS ? "RTS" : "SYNOUT"));
+ LOG("- The X2/IDCN pin is %s\n", m_index == duscc_device::CHANNEL_B ? "ignored for channel B" :
+ ((m_pcr & REG_PCR_X2_IDC) ? "crystal input" : "daisy chain interrupt output"));
+ LOG("- The GP02/RTS pin is %s\n", m_pcr & REG_PCR_GP02_RTS ? "RTS" : "GP02");
+ LOG("- The SYNOUT/RTS pin is %s\n", m_pcr & REG_PCR_SYNOUT_RTS ? "RTS" : "SYNOUT");
- LOG(("- The RTxC pin is "));
+ LOG("- The RTxC pin is ");
switch ( m_pcr & REG_PCR_RTXC_MASK )
{
- case REG_PCR_RTXC_INPUT: LOG(("- an input\n")); break;
- case REG_PCR_RTXC_CNTR_OUT: LOG(("- a counter/timer output\n")); break;
- case REG_PCR_RTXC_TXCLK_OUT:LOG(("- a Tx clock output\n")); break;
- case REG_PCR_RTXC_RXCLK_OUT:LOG(("- a Rx clock output\n")); break;
- default: LOG(("DUSCC: Wrong programming\n")); break; // Should never happen
+ case REG_PCR_RTXC_INPUT: LOG("- an input\n"); break;
+ case REG_PCR_RTXC_CNTR_OUT: LOG("- a counter/timer output\n"); break;
+ case REG_PCR_RTXC_TXCLK_OUT:LOG("- a Tx clock output\n"); break;
+ case REG_PCR_RTXC_RXCLK_OUT:LOG("- a Rx clock output\n"); break;
+ default: LOG("DUSCC: Wrong programming\n"); break; // Should never happen
}
- LOG(("- The TRxC pin is "));
+ LOG("- The TRxC pin is ");
switch( m_pcr & REG_PCR_TRXC_MASK )
{
- case REG_PCR_TRXC_INPUT: LOG(("- an input\n")); break;
- case REG_PCR_TRXC_CRYST_OUT:LOG(("- a crystal/2 output\n")); break;
- case REG_PCR_TRXC_DPLL_OUT: LOG(("- a DPLL output\n")); break;
- case REG_PCR_TRXC_CNTR_OUT: LOG(("- a counter/timer output\n")); break;
- case REG_PCR_TRXC_TXBRG_OUT:LOG(("- a Tx BRG output\n")); break;
- case REG_PCR_TRXC_RXBRG_OUT:LOG(("- a Rx BRG output\n")); break;
- case REG_PCR_TRXC_TXCLK_OUT:LOG(("- a Tx CLK output\n")); break;
- case REG_PCR_TRXC_RXCLK_OUT:LOG(("- a Rx CLK output\n")); break;
- default: LOG(("Wrong programming\n")); break; // Should never happen
+ case REG_PCR_TRXC_INPUT: LOG("- an input\n"); break;
+ case REG_PCR_TRXC_CRYST_OUT:LOG("- a crystal/2 output\n"); break;
+ case REG_PCR_TRXC_DPLL_OUT: LOG("- a DPLL output\n"); break;
+ case REG_PCR_TRXC_CNTR_OUT: LOG("- a counter/timer output\n"); break;
+ case REG_PCR_TRXC_TXBRG_OUT:LOG("- a Tx BRG output\n"); break;
+ case REG_PCR_TRXC_RXBRG_OUT:LOG("- a Rx BRG output\n"); break;
+ case REG_PCR_TRXC_TXCLK_OUT:LOG("- a Tx CLK output\n"); break;
+ case REG_PCR_TRXC_RXCLK_OUT:LOG("- a Rx CLK output\n"); break;
+ default: LOG("Wrong programming\n"); break; // Should never happen
}
return;
@@ -1955,7 +1943,7 @@ void duscc_channel::do_dusccreg_ccr_w(uint8_t data)
int rate;
m_ccr = data;
- LOG(("%c %s(%02x)\n", 'A' + m_index, FUNCNAME, data));
+ LOG("%c %s(%02x)\n", 'A' + m_index, FUNCNAME, data);
switch(m_ccr)
{
// TRANSMITTER COMMANDS
@@ -1965,7 +1953,7 @@ void duscc_channel::do_dusccreg_ccr_w(uint8_t data)
Also clears the transmitter status bits (TRSR[7:4]) and resets the TxRDY
status bit (GSR[I] or GSR[5] for Channels A and B, respectively).
The counter/timer and other registers are not affected*/
- case REG_CCR_RESET_TX: LOGINT(("- Reset Tx\n"));
+ case REG_CCR_RESET_TX: LOGINT("- Reset Tx\n");
set_tra_rate(0);
m_tx_fifo_wp = m_tx_fifo_rp = 0;
m_trsr &= 0x0f;
@@ -1975,7 +1963,7 @@ void duscc_channel::do_dusccreg_ccr_w(uint8_t data)
/* Enable transmitter. Enables transmitter operation, conditioned by the state of
the CTS ENABLE Tx bit, TPR[2]. Has no effect if invoked when the transmitter has
previously been enabled.*/
- case REG_CCR_ENABLE_TX: LOGINT(("- Enable Tx\n"));
+ case REG_CCR_ENABLE_TX: LOGINT("- Enable Tx\n");
m_uart->m_gsr |= (m_index == duscc_device::CHANNEL_A ? REG_GSR_CHAN_A_TXREADY : REG_GSR_CHAN_B_TXREADY);
m_tra = 1;
set_tra_rate(m_brg_tx_rate);
@@ -1986,7 +1974,7 @@ void duscc_channel::do_dusccreg_ccr_w(uint8_t data)
currently in the FIFO, or any loaded subsequently prior to attaining an empty condition,
will be transmitted.
TODO: let all the chararcters be transmitted before shutting down shifter */
- case REG_CCR_DISABLE_TX: LOGINT(("- Disable Tx\n"));
+ case REG_CCR_DISABLE_TX: LOGINT("- Disable Tx\n");
set_tra_rate(0);
m_tra = 0;
m_uart->m_gsr &= ~(m_index == duscc_device::CHANNEL_A ? REG_GSR_CHAN_A_TXREADY : REG_GSR_CHAN_B_TXREADY);
@@ -1998,7 +1986,7 @@ void duscc_channel::do_dusccreg_ccr_w(uint8_t data)
clears the data path, and clears the receiver status (RSR[7:0], TRSR[3:0], and either
GSR[O] or GSR[4] for Channels A and B, respectively). The counter/timer and other
registers are not affected.*/
- case REG_CCR_RESET_RX: LOGINT(("- Reset Rx\n"));
+ case REG_CCR_RESET_RX: LOGINT("- Reset Rx\n");
set_rcv_rate(0);
m_rx_fifo_wp = m_rx_fifo_rp = 0;
m_trsr &= 0xf0;
@@ -2009,14 +1997,14 @@ void duscc_channel::do_dusccreg_ccr_w(uint8_t data)
/* Enable receiver. Causes receiver operation to begin, conditioned by the state of the DCD
ENABLED Rx bit, RPR[2]. Receiver goes into START, SYN, or FLAG search mode depending on
channel protocol mode. Has no effect if invoked when the receiver has previously been enabled.*/
- case REG_CCR_ENABLE_RX: LOGINT(("- Enable Rx\n"));
+ case REG_CCR_ENABLE_RX: LOGINT("- Enable Rx\n");
m_rcv = 1;
set_rcv_rate(m_brg_rx_rate);
break;
/* Disable receiver. Terminates operation of the receiver. Any character currently being assembled
will be lost. Does not affect FIFO or any status.*/
- case REG_CCR_DISABLE_RX: LOGINT(("- Disable Rx\n"));
+ case REG_CCR_DISABLE_RX: LOGINT("- Disable Rx\n");
m_rcv = 0;
m_uart->m_gsr &= ~(m_index == duscc_device::CHANNEL_A ? REG_GSR_CHAN_A_RXREADY : REG_GSR_CHAN_B_RXREADY);
break;
@@ -2024,43 +2012,43 @@ void duscc_channel::do_dusccreg_ccr_w(uint8_t data)
// COUNTER/TIMER COMMANDS
/* Start. Starts the counteritimer and prescaler. */
- case REG_CCR_START_TIMER: LOG(("- Start Counter/Timer\n"));
+ case REG_CCR_START_TIMER: LOG("- Start Counter/Timer\n");
rate = 100; // TODO: calculate correct rate
duscc_timer->adjust(attotime::from_hz(rate), TIMER_ID_RTXC, attotime::from_hz(rate));
break;
/* Stop. Stops the counter/timer and prescaler. Since the command may be asynchronous with the selected clock source,
the counter/timer and/or prescaler may count one or more additional cycles before stopping.. */
- case REG_CCR_STOP_TIMER: LOG(("- Stop Counter/Timer\n"));
+ case REG_CCR_STOP_TIMER: LOG("- Stop Counter/Timer\n");
duscc_timer->adjust(attotime::never);
break;
/* Preset to FFFF. Presets the counter timer to H'FFFF' and the prescaler to its initial value. This command causes the
C/T output to go Low.*/
- case REG_CCR_PRST_FFFF: LOG(("- Preset 0xffff to Counter/Timer\n"));
+ case REG_CCR_PRST_FFFF: LOG("- Preset 0xffff to Counter/Timer\n");
m_ct = 0xffff;
break;
/* Preset from CTPRH/CTPRL. Transfers the current value in the counter/timer preset registers to the counter/timer and
presets the prescaler to its initial value. This command causes the C/T output to go Low. */
- case REG_CCR_PRST_CTPR: LOG(("- Preset CTPR to Counter/Timer\n"));
+ case REG_CCR_PRST_CTPR: LOG("- Preset CTPR to Counter/Timer\n");
m_ct = m_ctpr;
break;
- default: LOG((" - command %02x not implemented yet\n", data));
+ default: LOG(" - command %02x not implemented yet\n", data);
}
return;
}
void duscc_channel::do_dusccreg_txfifo_w(uint8_t data)
{
- LOGTX((" - TX %s(%02x)'%c'\n", FUNCNAME,data, isalnum(data) ? data : ' '));
+ LOGTX(" - TX %s(%02x)'%c'\n", FUNCNAME,data, isalnum(data) ? data : ' ');
/* Tx FIFO is full or...? */
if (m_tx_fifo_wp + 1 == m_tx_fifo_rp || ( (m_tx_fifo_wp + 1 == m_tx_fifo_sz) && (m_tx_fifo_rp == 0) ))
{
logerror("- TX FIFO is full, discarding data\n");
- LOG(("- TX FIFO is full, discarding data\n"));
+ LOG("- TX FIFO is full, discarding data\n");
}
else // ..there is still room
{
@@ -2076,7 +2064,7 @@ void duscc_channel::do_dusccreg_txfifo_w(uint8_t data)
{
if ( is_transmit_register_empty()) // Is the shift register loaded?
{
- LOG(("- Setting up transmitter\n"));
+ LOG("- Setting up transmitter\n");
transmit_register_setup(m_tx_data_fifo[m_tx_fifo_rp]); // Load the shift register, reload is done in tra_complete()
m_tx_fifo_rp_step();
}
@@ -2113,21 +2101,21 @@ void duscc_channel::do_dusccreg_txfifo_w(uint8_t data)
message is received. Asserted status bits can be programmed to generate an interrupt (see Interrupt Enable Register).*/
void duscc_channel::do_dusccreg_rsr_w(uint8_t data)
{
- LOG(("%c %s(%02x)\n", 'A' + m_index, FUNCNAME, data));
+ LOG("%c %s(%02x)\n", 'A' + m_index, FUNCNAME, data);
m_rsr &= ~data; // Clear only bits which are 1:s
return;
}
void duscc_channel::do_dusccreg_trsr_w(uint8_t data)
{
- LOG(("%s: %02x - not supported yet\n", FUNCNAME, data));
+ LOG("%s: %02x - not supported yet\n", FUNCNAME, data);
m_trsr = data;
return;
}
void duscc_channel::do_dusccreg_ictsr_w(uint8_t data)
{
- LOG(("%s: %02x - not supported yet\n", FUNCNAME, data));
+ LOG("%s: %02x - not supported yet\n", FUNCNAME, data);
m_ictsr = data;
return;
}
@@ -2153,7 +2141,7 @@ void duscc_channel::do_dusccreg_ictsr_w(uint8_t data)
receiver' command is invoked.*/
void duscc_channel::do_dusccreg_gsr_w(uint8_t data)
{
- LOG(("%c %s(%02x)\n", 'A' + m_index, FUNCNAME, data));
+ LOG("%c %s(%02x)\n", 'A' + m_index, FUNCNAME, data);
m_uart->m_gsr &= (data & REG_GSR_XXREADY_MASK); // Reset only XXREADY bits, the rest needs to be reset by the source
return; // TODO: Check of the XXREADY source bits should be reset too
}
@@ -2163,15 +2151,15 @@ void duscc_channel::do_dusccreg_gsr_w(uint8_t data)
condition for an interrupt to be generated is that the channel's master interrupt enabled bit, ICR[O] or ICR[1], be asserted.*/
void duscc_channel::do_dusccreg_ier_w(uint8_t data)
{
- LOGINT(("%c %s(%02x)\n", 'A' + m_index, FUNCNAME, data));
- if (REG_IER_DCD_CTS & (data ^ m_ier)) LOGINT(("- DCD/CTS interrups %s\n", (data & REG_IER_DCD_CTS) ? "enabled" : "disabled" ));
- if (REG_IER_TXRDY & (data ^ m_ier)) LOGINT(("- TXRDY interrupts %s\n", (data & REG_IER_TXRDY) ? "enabled" : "disabled" ));
- if (REG_IER_TRSR73 & (data ^ m_ier)) LOGINT(("- TRSR73 interrupts %s\n", (data & REG_IER_TRSR73) ? "enabled" : "disabled" ));
- if (REG_IER_RXRDY & (data ^ m_ier)) LOGINT(("- RXRDY interrupts %s\n", (data & REG_IER_RXRDY) ? "enabled" : "disabled" ));
- if (REG_IER_RSR76 & (data ^ m_ier)) LOGINT(("- RSR76 interrupts %s\n", (data & REG_IER_RSR76) ? "enabled" : "disabled" ));
- if (REG_IER_RSR54 & (data ^ m_ier)) LOGINT(("- RSR54 interrupts %s\n", (data & REG_IER_RSR54) ? "enabled" : "disabled" ));
- if (REG_IER_RSR32 & (data ^ m_ier)) LOGINT(("- RSR32 interrupts %s\n", (data & REG_IER_RSR32) ? "enabled" : "disabled" ));
- if (REG_IER_RSR10 & (data ^ m_ier)) LOGINT(("- RSR10 interrupts %s\n", (data & REG_IER_RSR10) ? "enabled" : "disabled" ));
+ LOGINT("%c %s(%02x)\n", 'A' + m_index, FUNCNAME, data);
+ if (REG_IER_DCD_CTS & (data ^ m_ier)) LOGINT("- DCD/CTS interrups %s\n", (data & REG_IER_DCD_CTS) ? "enabled" : "disabled" );
+ if (REG_IER_TXRDY & (data ^ m_ier)) LOGINT("- TXRDY interrupts %s\n", (data & REG_IER_TXRDY) ? "enabled" : "disabled" );
+ if (REG_IER_TRSR73 & (data ^ m_ier)) LOGINT("- TRSR73 interrupts %s\n", (data & REG_IER_TRSR73) ? "enabled" : "disabled" );
+ if (REG_IER_RXRDY & (data ^ m_ier)) LOGINT("- RXRDY interrupts %s\n", (data & REG_IER_RXRDY) ? "enabled" : "disabled" );
+ if (REG_IER_RSR76 & (data ^ m_ier)) LOGINT("- RSR76 interrupts %s\n", (data & REG_IER_RSR76) ? "enabled" : "disabled" );
+ if (REG_IER_RSR54 & (data ^ m_ier)) LOGINT("- RSR54 interrupts %s\n", (data & REG_IER_RSR54) ? "enabled" : "disabled" );
+ if (REG_IER_RSR32 & (data ^ m_ier)) LOGINT("- RSR32 interrupts %s\n", (data & REG_IER_RSR32) ? "enabled" : "disabled" );
+ if (REG_IER_RSR10 & (data ^ m_ier)) LOGINT("- RSR10 interrupts %s\n", (data & REG_IER_RSR10) ? "enabled" : "disabled" );
m_ier = data;
m_uart->check_interrupts();
return;
@@ -2180,18 +2168,18 @@ void duscc_channel::do_dusccreg_ier_w(uint8_t data)
void duscc_channel::do_dusccreg_ivr_w(uint8_t data)
{
m_uart->m_ivr = data;
- LOG(("%s(%02x)\n", FUNCNAME, data));
+ LOG("%s(%02x)\n", FUNCNAME, data);
return;
}
void duscc_channel::do_dusccreg_icr_w(uint8_t data)
{
m_uart->m_icr = data;
- LOG(("%s(%02x)\n", FUNCNAME, data));
- if (duscc_device::REG_ICR_CHB & (data ^ m_uart->m_icr)) LOG(("- Channel B interrupts %s\n", (data & duscc_device::REG_ICR_CHB) ? "enabled" : "disabled" ));
- if (duscc_device::REG_ICR_CHA & (data ^ m_uart->m_icr)) LOG(("- Channel A interrupts %s\n", (data & duscc_device::REG_ICR_CHA) ? "enabled" : "disabled" ));
- if (duscc_device::REG_ICR_VEC_MOD & (data ^ m_uart->m_icr)) LOG(("- Vector is %s\n", (data & duscc_device::REG_ICR_VEC_MOD) ? "modified" : "unmodified" ));
- if (duscc_device::REG_ICR_V2V4_MOD & (data ^ m_uart->m_icr)) LOG(("- Vector bits %s modified\n", (data & duscc_device::REG_ICR_V2V4_MOD) ? "4:2" : "2:0" ));
+ LOG("%s(%02x)\n", FUNCNAME, data);
+ if (duscc_device::REG_ICR_CHB & (data ^ m_uart->m_icr)) LOG("- Channel B interrupts %s\n", (data & duscc_device::REG_ICR_CHB) ? "enabled" : "disabled" );
+ if (duscc_device::REG_ICR_CHA & (data ^ m_uart->m_icr)) LOG("- Channel A interrupts %s\n", (data & duscc_device::REG_ICR_CHA) ? "enabled" : "disabled" );
+ if (duscc_device::REG_ICR_VEC_MOD & (data ^ m_uart->m_icr)) LOG("- Vector is %s\n", (data & duscc_device::REG_ICR_VEC_MOD) ? "modified" : "unmodified" );
+ if (duscc_device::REG_ICR_V2V4_MOD & (data ^ m_uart->m_icr)) LOG("- Vector bits %s modified\n", (data & duscc_device::REG_ICR_V2V4_MOD) ? "4:2" : "2:0" );
// TODO: LOG the other bits as well
m_uart->m_icr = data;
return;
@@ -2199,8 +2187,8 @@ void duscc_channel::do_dusccreg_icr_w(uint8_t data)
void duscc_channel::do_dusccreg_sea_rea_w(uint8_t data)
{
- LOG(("%s(%02x)\n", FUNCNAME, data));
- if ( m_uart->m_variant != SET_CMOS )
+ LOG("%s(%02x)\n", FUNCNAME, data);
+ if ( !(m_uart->m_variant & duscc_device::SET_CMOS) )
{
logerror("Attempt set/clear the CDUSCC A7 bit on an NDUSCC\n");
m_a7 = 0; // refuse access to CDUSCC registers on an NDUSCC
@@ -2228,8 +2216,8 @@ uint8_t duscc_channel::read(offs_t &offset)
{
uint8_t data = 0;
int reg = (offset | m_a7) & ~0x20; // Add extended rgisters and remove the channel B bit from offset
- LOG(("\"%s\" %s: %c : Register read '%02x' <- [%02x]", m_owner->tag(), FUNCNAME, 'A' + m_index, data, reg ));
- LOGR((" * %c Reg %02x -> %02x \n", 'A' + m_index, reg, data));
+ LOG("\"%s\" %s: %c : Register read '%02x' <- [%02x]", m_owner->tag(), FUNCNAME, 'A' + m_index, data, reg );
+ LOGR(" * %c Reg %02x -> %02x \n", 'A' + m_index, reg, data);
switch (reg)
{
case REG_CMR1: data = do_dusccreg_cmr1_r(); break;
@@ -2266,7 +2254,7 @@ uint8_t duscc_channel::read(offs_t &offset)
logerror("%s: %c : Unsupported RRx register:%02x\n", FUNCNAME, 'A' + m_index, reg);
}
- LOGR(("%s \"%s\": %c : Register R%d read '%02x'\n", FUNCNAME, m_owner->tag(), 'A' + m_index, reg, data));
+ LOGR("%s \"%s\": %c : Register R%d read '%02x'\n", FUNCNAME, m_owner->tag(), 'A' + m_index, reg, data);
return data;
}
@@ -2278,8 +2266,8 @@ void duscc_channel::write(uint8_t data, offs_t &offset)
{
int reg = (offset | m_a7) & ~0x20; // Add extended rgisters and remove the channel B bit from offset
- LOGSETUP((" * %s%c Reg %02x <- %02x \n", m_owner->tag(), 'A' + m_index, reg, data));
- LOG(("\"%s\" %s: %c : Register write '%02x' -> [%02x]", m_owner->tag(), FUNCNAME, 'A' + m_index, data, reg ));
+ LOGSETUP(" * %s%c Reg %02x <- %02x \n", m_owner->tag(), 'A' + m_index, reg, data);
+ LOG("\"%s\" %s: %c : Register write '%02x' -> [%02x]", m_owner->tag(), FUNCNAME, 'A' + m_index, data, reg );
switch (reg)
{
case REG_CMR1: do_dusccreg_cmr1_w(data); break;
@@ -2294,8 +2282,8 @@ void duscc_channel::write(uint8_t data, offs_t &offset)
case REG_CTPRL: do_dusccreg_ctprl_w(data); break;
case REG_CTCR: do_dusccreg_ctcr_w(data); break;
case REG_OMR: do_dusccreg_omr_w(data); break;
-// case REG_CTH: LOG(("REG_CTH \n")); break; // Read only register
-// case REG_CTL: LOG(("REG_CTL \n")); break; // Read only register
+// case REG_CTH: LOG("REG_CTH \n"); break; // Read only register
+// case REG_CTL: LOG("REG_CTL \n"); break; // Read only register
case REG_PCR: do_dusccreg_pcr_w(data); break;
case REG_CCR: do_dusccreg_ccr_w(data); break;
case REG_TXFIFO_0: do_dusccreg_txfifo_w(data); break;
@@ -2310,16 +2298,16 @@ void duscc_channel::write(uint8_t data, offs_t &offset)
case REG_IVR: do_dusccreg_ivr_w(data); break;
case REG_ICR: do_dusccreg_icr_w(data); break;
// CDUSCC Extended registers - requires A7 to be set through REG_SEA
-// case REG_MRR: LOG(("REG_MRR \n")); break;
+// case REG_MRR: LOG("REG_MRR \n"); break;
case REG_SEA: do_dusccreg_sea_rea_w(data); break; /* Also supports REG_REA depending on which channel is written to */
- case REG_IER1: LOG(("REG_IER1\n")); break;
- case REG_IER2: LOG(("REG_IER2\n")); break;
- case REG_IER3: LOG(("REG_IER3\n")); break;
- case REG_TRCR: LOG(("REG_TRCR\n")); break;
- case REG_RFLR: LOG(("REG_RFLR\n")); break;
- case REG_FTLR: LOG(("REG_FTLR\n")); break;
- case REG_TRMSR: LOG(("REG_TRMSR\n")); break;
- case REG_TELR: LOG(("REG_TELR\n")); break;
+ case REG_IER1: LOG("REG_IER1\n"); break;
+ case REG_IER2: LOG("REG_IER2\n"); break;
+ case REG_IER3: LOG("REG_IER3\n"); break;
+ case REG_TRCR: LOG("REG_TRCR\n"); break;
+ case REG_RFLR: LOG("REG_RFLR\n"); break;
+ case REG_FTLR: LOG("REG_FTLR\n"); break;
+ case REG_TRMSR: LOG("REG_TRMSR\n"); break;
+ case REG_TELR: LOG("REG_TELR\n"); break;
default:
logerror("%s: %c : Unsupported WRx register:%02x(%02x)\n", FUNCNAME, 'A' + m_index, reg, data);
@@ -2350,7 +2338,7 @@ void duscc_channel::m_rx_fifo_rp_step()
if (m_rx_fifo_rp == m_rx_fifo_wp)
{
// no more characters available in the FIFO
- LOGINT(("Clear RXRDY in GSR because FIFO is emptied\n"));
+ LOGINT("Clear RXRDY in GSR because FIFO is emptied\n");
m_uart->m_gsr &= ~(m_index == duscc_device::CHANNEL_A ? REG_GSR_CHAN_A_RXREADY : REG_GSR_CHAN_B_RXREADY);
}
}
@@ -2371,7 +2359,7 @@ void duscc_channel::m_tx_fifo_rp_step()
void duscc_channel::receive_data(uint8_t data)
{
- LOG(("\"%s\": %c : Receive Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, data));
+ LOG("\"%s\": %c : Receive Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, data);
if (m_rx_fifo_wp + 1 == m_rx_fifo_rp || ( (m_rx_fifo_wp + 1 == m_rx_fifo_sz) && (m_rx_fifo_rp == 0) ))
{
@@ -2384,7 +2372,7 @@ void duscc_channel::receive_data(uint8_t data)
{
m_rx_data_fifo[m_rx_fifo_wp] = data;
m_rsr &= ~REG_RSR_OVERRUN_ERROR;
- LOGINT((" - Setting RXRDY in GSR for channel %c\n", 'A' + m_index));
+ LOGINT(" - Setting RXRDY in GSR for channel %c\n", 'A' + m_index);
m_uart->m_gsr |= (m_index == duscc_device::CHANNEL_A ? REG_GSR_CHAN_A_RXREADY : REG_GSR_CHAN_B_RXREADY);
m_rx_fifo_wp++;
@@ -2416,7 +2404,7 @@ void duscc_channel::receive_data(uint8_t data)
WRITE_LINE_MEMBER( duscc_channel::cts_w )
{
- LOG(("\"%s\" %s: %c : CTS %u\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state));
+ LOG("\"%s\" %s: %c : CTS %u\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state);
if (m_cts != state)
{
@@ -2446,7 +2434,7 @@ WRITE_LINE_MEMBER( duscc_channel::cts_w )
//-------------------------------------------------
WRITE_LINE_MEMBER( duscc_channel::dcd_w )
{
- LOG(("\"%s\" %s: %c : DCD %u - not implemented\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state));
+ LOG("\"%s\" %s: %c : DCD %u - not implemented\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state);
#if 0
if (m_dcd != state)
@@ -2470,7 +2458,7 @@ WRITE_LINE_MEMBER( duscc_channel::dcd_w )
WRITE_LINE_MEMBER( duscc_channel::ri_w )
{
- LOG(("\"%s\" %s: %c : RI %u - not implemented\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state));
+ LOG("\"%s\" %s: %c : RI %u - not implemented\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state);
#if 0
if (m_ri != state)
{
@@ -2485,7 +2473,7 @@ WRITE_LINE_MEMBER( duscc_channel::ri_w )
//-------------------------------------------------
WRITE_LINE_MEMBER( duscc_channel::sync_w )
{
- LOG(("\"%s\" %s: %c : SYNC %u - not implemented\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state));
+ LOG("\"%s\" %s: %c : SYNC %u - not implemented\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state);
}
//-------------------------------------------------
@@ -2493,7 +2481,7 @@ WRITE_LINE_MEMBER( duscc_channel::sync_w )
//-------------------------------------------------
WRITE_LINE_MEMBER( duscc_channel::rxc_w )
{
- LOG(("\"%s\" %s: %c : RXC %u - not implemented\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state));
+ LOG("\"%s\" %s: %c : RXC %u - not implemented\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state);
}
//-------------------------------------------------
@@ -2501,7 +2489,7 @@ WRITE_LINE_MEMBER( duscc_channel::rxc_w )
//-------------------------------------------------
WRITE_LINE_MEMBER( duscc_channel::txc_w )
{
- LOG(("\"%s\" %s: %c : TXC %u - not implemented\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state));
+ LOG("\"%s\" %s: %c : TXC %u - not implemented\n", m_owner->tag(), FUNCNAME, 'A' + m_index, state);
}
//-------------------------------------------------
@@ -2523,8 +2511,8 @@ void duscc_channel::update_serial()
else
parity = PARITY_NONE;
- LOG((LLFORMAT " %s() \"%s \"Channel %c setting data frame %d+%d%c%d\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, 1,
- data_bit_count, parity == PARITY_NONE ? 'N' : parity == PARITY_EVEN ? 'E' : 'O', (stop_bits + 1) / 2));
+ LOG(LLFORMAT " %s() \"%s \"Channel %c setting data frame %d+%d%c%d\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, 1,
+ data_bit_count, parity == PARITY_NONE ? 'N' : parity == PARITY_EVEN ? 'E' : 'O', (stop_bits + 1) / 2);
set_data_frame(1, data_bit_count, parity, stop_bits);
@@ -2533,27 +2521,27 @@ void duscc_channel::update_serial()
if (m_rxc > 0)
{
set_rcv_rate(m_rxc / clocks);
- LOG((" - Receiver clock: %d mode: %d rate: %d/%xh\n", m_rxc, clocks, m_rxc / clocks, m_rxc / clocks));
+ LOG(" - Receiver clock: %d mode: %d rate: %d/%xh\n", m_rxc, clocks, m_rxc / clocks, m_rxc / clocks);
}
clocks = get_tx_clock_mode();
if (m_txc > 0)
{
set_tra_rate(m_txc / clocks);
- LOG((" - Transmit clock: %d mode: %d rate: %d/%xh\n", m_rxc, clocks, m_rxc / clocks, m_rxc / clocks));
+ LOG(" - Transmit clock: %d mode: %d rate: %d/%xh\n", m_rxc, clocks, m_rxc / clocks, m_rxc / clocks);
}
if (m_brg_rx_rate != 0)
{
if (m_brg_rx_rate == 1) m_brg_rx_rate = 0; // BRG being disabled
set_rcv_rate(m_brg_rx_rate);
- LOG((" - Baud Rate Generator: %d mode: RX:%dx\n", m_brg_rx_rate, get_rx_clock_mode()));
+ LOG(" - Baud Rate Generator: %d mode: RX:%dx\n", m_brg_rx_rate, get_rx_clock_mode());
}
if (m_brg_tx_rate != 0)
{
if (m_brg_tx_rate == 1) m_brg_tx_rate = 0; // BRG being disabled
set_tra_rate(m_brg_tx_rate);
- LOG((" - Baud Rate Generator: %d mode: TX:%dx\n", m_brg_tx_rate, get_tx_clock_mode()));
+ LOG(" - Baud Rate Generator: %d mode: TX:%dx\n", m_brg_tx_rate, get_tx_clock_mode());
}
}
@@ -2562,7 +2550,7 @@ void duscc_channel::update_serial()
//-------------------------------------------------
void duscc_channel::set_dtr(int state)
{
- LOG(("%s(%d)\n", FUNCNAME, state));
+ LOG("%s(%d)\n", FUNCNAME, state);
m_dtr = state;
if (m_index == duscc_device::CHANNEL_A)
diff --git a/src/devices/machine/scnxx562.h b/src/devices/machine/scnxx562.h
index bae0b801594..5be52c6201a 100644
--- a/src/devices/machine/scnxx562.h
+++ b/src/devices/machine/scnxx562.h
@@ -36,8 +36,10 @@
***************************************************************************/
-#ifndef __SCNXX562_H__
-#define __SCNXX562_H__
+#ifndef MAME_MACHINE_SCNXX562_H
+#define MAME_MACHINE_SCNXX562_H
+
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -45,7 +47,7 @@
// DEVICE CONFIGURATION MACROS
//**************************************************************************
-#define LOCAL_BRG 0
+//#define LOCAL_BRG 0 FIXME - what is this for? the name is overly generic and shouldn't be in global namespace
/* Variant ADD macros - use the right one to enable the right feature set! */
#define MCFG_DUSCC26562_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \
@@ -122,25 +124,13 @@
class duscc_device;
-class duscc_channel : public device_t,
- public device_serial_interface
+class duscc_channel : public device_t, public device_serial_interface
{
friend class duscc_device;
public:
duscc_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
- // device_serial_interface overrides
- virtual void tra_callback() override;
- virtual void tra_complete() override;
- virtual void rcv_callback() override;
- virtual void rcv_complete() override;
-
// read register handlers
uint8_t do_dusccreg_cmr1_r();
uint8_t do_dusccreg_cmr2_r();
@@ -229,6 +219,18 @@ public:
DECLARE_WRITE_LINE_MEMBER( txc_w );
DECLARE_WRITE_LINE_MEMBER( sync_w );
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ // device_serial_interface overrides
+ virtual void tra_callback() override;
+ virtual void tra_complete() override;
+ virtual void rcv_callback() override;
+ virtual void rcv_complete() override;
+
int m_rxc;
int m_txc;
int m_tra;
@@ -276,7 +278,6 @@ public:
uint8_t m_trmsr;
uint8_t m_telr;
-protected:
enum // Needs to be 0-3 in unmodified prio level
{
INT_RXREADY = 0,
@@ -598,31 +599,28 @@ protected:
// ======================> duscc_device
-
-class duscc_device : public device_t
- ,public device_z80daisy_interface
+class duscc_device : public device_t, public device_z80daisy_interface
{
friend class duscc_channel;
public:
// construction/destruction
- duscc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
duscc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_txda_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_txda_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtra_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_dtra_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtsa_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_rtsa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_synca_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_synca_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtxca_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_rtxca_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_trxca_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_trxca_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_out_txdb_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_txdb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtrb_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_dtrb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtsb_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_rtsb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_syncb_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_syncb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtxcb_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_rtxcb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_trxcb_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_trxcb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<duscc_device &>(device).m_out_int_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_txda_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_txda_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtra_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_dtra_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtsa_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_synca_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_synca_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtxca_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_rtxca_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_trxca_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_trxca_cb.set_callback(std::forward<Object>(cb)); }
+
+ template <class Object> static devcb_base &set_out_txdb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_txdb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtrb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtsb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_syncb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_syncb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtxcb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_rtxcb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_trxcb_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_trxcb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<duscc_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
static void configure_channels(device_t &device, int rxa, int txa, int rxb, int txb)
{
@@ -665,6 +663,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( syncb_w ) { m_chanB->sync_w(state); }
protected:
+ duscc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -675,7 +675,7 @@ protected:
void reset_interrupts();
uint8_t modify_vector(uint8_t vect, int i, uint8_t src);
void trigger_interrupt(int index, int state);
- int get_channel_index(duscc_channel *ch) { return (ch == m_chanA) ? 0 : 1; }
+ int get_channel_index(duscc_channel *ch) const { return (ch == m_chanA) ? 0 : 1; }
// Variants in the DUSCC family
enum
@@ -685,10 +685,10 @@ protected:
TYPE_DUSCC26C562 = 0x004,
TYPE_DUSCC68562 = 0x008,
TYPE_DUSCC68C562 = 0x010,
- };
-#define SET_NMOS ( duscc_device::TYPE_DUSCC26562 | duscc_device::TYPE_DUSCC68562 )
-#define SET_CMOS ( duscc_device::TYPE_DUSCC26C562 | duscc_device::TYPE_DUSCC68C562 )
+ SET_NMOS = TYPE_DUSCC26562 | TYPE_DUSCC68562,
+ SET_CMOS = TYPE_DUSCC26C562 | TYPE_DUSCC68C562
+ };
enum
{
@@ -748,12 +748,12 @@ protected:
};
// device type definition
-extern const device_type DUSCC;
-extern const device_type DUSCC_CHANNEL;
-extern const device_type DUSCC26562;
-extern const device_type DUSCC26C562;
-extern const device_type DUSCC68562;
-extern const device_type DUSCC68C562;
+DECLARE_DEVICE_TYPE(DUSCC, duscc_device)
+DECLARE_DEVICE_TYPE(DUSCC_CHANNEL, duscc_channel)
+DECLARE_DEVICE_TYPE(DUSCC26562, duscc26562_device)
+DECLARE_DEVICE_TYPE(DUSCC26C562, duscc26c562_device)
+DECLARE_DEVICE_TYPE(DUSCC68562, duscc68562_device)
+DECLARE_DEVICE_TYPE(DUSCC68C562, duscc68C562_device)
class duscc26562_device : public duscc_device
{
@@ -761,10 +761,10 @@ public :
duscc26562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class duscc26C562_device : public duscc_device
+class duscc26c562_device : public duscc_device
{
public :
- duscc26C562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ duscc26c562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class duscc68562_device : public duscc_device
@@ -773,10 +773,10 @@ public :
duscc68562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class duscc68C562_device : public duscc_device
+class duscc68c562_device : public duscc_device
{
public :
- duscc68C562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ duscc68c562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-#endif // __SCNXX562_H__
+#endif // MAME_MACHINE_SCNXX562_H
diff --git a/src/devices/machine/serflash.cpp b/src/devices/machine/serflash.cpp
index 37248396495..a25d27e683c 100644
--- a/src/devices/machine/serflash.cpp
+++ b/src/devices/machine/serflash.cpp
@@ -9,24 +9,28 @@
#include "machine/serflash.h"
-ALLOW_SAVE_TYPE(flash_state_t);
+ALLOW_SAVE_TYPE(serflash_device::flash_state_t);
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
// device type definition
-const device_type SERFLASH = device_creator<serflash_device>;
+DEFINE_DEVICE_TYPE(SERFLASH, serflash_device, "serflash", "Serial Flash")
//-------------------------------------------------
// serflash_device - constructor
//-------------------------------------------------
serflash_device::serflash_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SERFLASH, "Serial Flash", tag, owner, clock, "serflash", __FILE__),
- device_nvram_interface(mconfig, *this),
- m_length(0), m_region(nullptr), m_flash_state(), m_flash_enab(0), m_flash_cmd_seq(0), m_flash_cmd_prev(0), m_flash_addr_seq(0), m_flash_read_seq(0), m_flash_row(0),
- m_flash_col(0), m_flash_page_addr(0), m_flash_page_index(0), m_last_flash_cmd(0), m_flash_addr(0)
+ : device_t(mconfig, SERFLASH, tag, owner, clock)
+ , device_nvram_interface(mconfig, *this)
+ , m_length(0)
+ , m_region(nullptr)
+ , m_flash_state()
+ , m_flash_enab(0)
+ , m_flash_cmd_seq(0), m_flash_cmd_prev(0), m_flash_addr_seq(0), m_flash_read_seq(0)
+ , m_flash_row(0), m_flash_col(0), m_flash_page_addr(0), m_flash_page_index(0), m_last_flash_cmd(0), m_flash_addr(0)
{
}
@@ -38,8 +42,8 @@ serflash_device::serflash_device(const machine_config &mconfig, const char *tag,
void serflash_device::device_start()
{
- m_length = machine().root_device().memregion( tag() )->bytes();
- m_region = machine().root_device().memregion( tag() )->base();
+ m_length = machine().root_device().memregion(tag())->bytes();
+ m_region = machine().root_device().memregion(tag())->base();
m_flashwritemap.resize(m_length / FLASH_PAGE_SIZE);
memset(&m_flashwritemap[0], 0, m_length / FLASH_PAGE_SIZE);
diff --git a/src/devices/machine/serflash.h b/src/devices/machine/serflash.h
index b7df13b6957..b021f50e7c4 100644
--- a/src/devices/machine/serflash.h
+++ b/src/devices/machine/serflash.h
@@ -2,17 +2,10 @@
// copyright-holders:David Haywood, Luca Elia
/* Serial Flash */
-#pragma once
-
-#ifndef __SERFLASH_H__
-#define __SERFLASH_H__
-
-
-#define FLASH_PAGE_SIZE (2048+64)
-
-
-
+#ifndef MAME_MACHINE_SERFLASH_H
+#define MAME_MACHINE_SERFLASH_H
+#pragma once
//**************************************************************************
@@ -20,26 +13,22 @@
//**************************************************************************
#define MCFG_SERFLASH_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SERFLASH, 0)
+ MCFG_DEVICE_ADD(_tag, SERFLASH, 0)
+
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-class serflash_device;
-
-typedef enum { STATE_IDLE = 0, STATE_READ, STATE_READ_ID, STATE_READ_STATUS, STATE_BLOCK_ERASE, STATE_PAGE_PROGRAM } flash_state_t;
-//const char *m_flash_state_name[] = { "IDLE", "READ", "READ_ID", "READ_STATUS", "BLOCK ERASE", "PAGE PROGRAM" };
-
-// custom initialization for default state
-typedef device_delegate<void (serflash_device &, void *, size_t)> serflash_init_delegate;
-
// ======================> serflash_device
-class serflash_device : public device_t,
- public device_nvram_interface
+class serflash_device : public device_t, public device_nvram_interface
{
public:
+ // custom initialization for default state
+ typedef device_delegate<void (serflash_device &, void *, size_t)> init_delegate;
+
// construction/destruction
serflash_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -57,6 +46,10 @@ public:
DECLARE_WRITE8_MEMBER(n3d_flash_addr_w);
protected:
+ static constexpr unsigned FLASH_PAGE_SIZE = 2048+64;
+
+ enum flash_state_t { STATE_IDLE = 0, STATE_READ, STATE_READ_ID, STATE_READ_STATUS, STATE_BLOCK_ERASE, STATE_PAGE_PROGRAM };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -95,14 +88,10 @@ protected:
uint32_t m_flash_addr;
uint8_t m_flash_page_data[FLASH_PAGE_SIZE];
-
-
-
};
// device type definition
-extern const device_type SERFLASH;
-
+DECLARE_DEVICE_TYPE(SERFLASH, serflash_device)
-#endif
+#endif // MAME_MACHINE_SERFLASH_H
diff --git a/src/devices/machine/smartmed.cpp b/src/devices/machine/smartmed.cpp
index eeca71b78f1..7e4153797f6 100644
--- a/src/devices/machine/smartmed.cpp
+++ b/src/devices/machine/smartmed.cpp
@@ -22,7 +22,7 @@
#include "smartmed.h"
-#define MAX_SMARTMEDIA 1
+namespace {
/* machine-independent big-endian 32-bit integer */
struct UINT32BE
@@ -30,13 +30,13 @@ struct UINT32BE
uint8_t bytes[4];
};
-static inline uint32_t get_UINT32BE(UINT32BE word)
+inline uint32_t get_UINT32BE(UINT32BE word)
{
return (word.bytes[0] << 24) | (word.bytes[1] << 16) | (word.bytes[2] << 8) | word.bytes[3];
}
#ifdef UNUSED_FUNCTION
-static inline void set_UINT32BE(UINT32BE *word, uint32_t data)
+inline void set_UINT32BE(UINT32BE *word, uint32_t data)
{
word->bytes[0] = (data >> 24) & 0xff;
word->bytes[1] = (data >> 16) & 0xff;
@@ -69,37 +69,28 @@ enum
header_len = sizeof(SM_disk_image_header)
};
+} // anonymous namespace
-const device_type NAND = device_creator<nand_device>;
+
+DEFINE_DEVICE_TYPE(NAND, nand_device, "nand", "NAND Flash Memory")
nand_device::nand_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NAND, "NAND Flash Memory", tag, owner, clock, "nand", __FILE__),
- m_page_data_size(0),
- m_page_total_size(0),
- m_num_pages(0),
- m_log2_pages_per_block(0),
- m_pagereg(nullptr),
- m_id_len(0),
- m_col_address_cycles(0),
- m_row_address_cycles(0),
- m_sequential_row_read(0),
- m_write_rnb(*this)
+ : nand_device(mconfig, NAND, tag, owner, clock)
{
- memset(m_id, 0, sizeof(m_id));
}
-nand_device::nand_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_page_data_size(0),
- m_page_total_size(0),
- m_num_pages(0),
- m_log2_pages_per_block(0),
- m_pagereg(nullptr),
- m_id_len(0),
- m_col_address_cycles(0),
- m_row_address_cycles(0),
- m_sequential_row_read(0),
- m_write_rnb(*this)
+nand_device::nand_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_page_data_size(0)
+ , m_page_total_size(0)
+ , m_num_pages(0)
+ , m_log2_pages_per_block(0)
+ , m_pagereg(nullptr)
+ , m_id_len(0)
+ , m_col_address_cycles(0)
+ , m_row_address_cycles(0)
+ , m_sequential_row_read(0)
+ , m_write_rnb(*this)
{
memset(m_id, 0, sizeof(m_id));
}
@@ -121,9 +112,9 @@ void nand_device::device_start()
m_mode_3065 = 0;
m_pagereg = std::make_unique<uint8_t[]>(m_page_total_size);
- #ifdef SMARTMEDIA_IMAGE_SAVE
+#ifdef SMARTMEDIA_IMAGE_SAVE
m_image_format = 0;
- #endif
+#endif
m_write_rnb.resolve_safe();
}
@@ -182,9 +173,9 @@ image_init_result smartmedia_image_device::smartmedia_format_1()
}
fread(m_data_ptr, m_page_total_size*m_num_pages);
- #ifdef SMARTMEDIA_IMAGE_SAVE
+#ifdef SMARTMEDIA_IMAGE_SAVE
m_image_format = 1;
- #endif
+#endif
return image_init_result::PASS;
}
@@ -272,9 +263,9 @@ image_init_result smartmedia_image_device::smartmedia_format_2()
fread(m_data_ptr, m_page_total_size*m_num_pages);
- #ifdef SMARTMEDIA_IMAGE_SAVE
+#ifdef SMARTMEDIA_IMAGE_SAVE
m_image_format = 2;
- #endif
+#endif
return image_init_result::PASS;
}
@@ -300,7 +291,7 @@ image_init_result smartmedia_image_device::call_load()
*/
void smartmedia_image_device::call_unload()
{
- #ifdef SMARTMEDIA_IMAGE_SAVE
+#ifdef SMARTMEDIA_IMAGE_SAVE
if (!is_readonly())
{
if (m_image_format == 1)
@@ -329,7 +320,7 @@ void smartmedia_image_device::call_unload()
fwrite( m_data_ptr, m_page_total_size * m_num_pages);
}
}
- #endif
+#endif
m_page_data_size = 0;
m_page_total_size = 0;
@@ -352,9 +343,9 @@ void smartmedia_image_device::call_unload()
m_row_address_cycles = 0;
m_sequential_row_read = 0;
- #ifdef SMARTMEDIA_IMAGE_SAVE
+#ifdef SMARTMEDIA_IMAGE_SAVE
m_image_format = 0;
- #endif
+#endif
return;
}
@@ -777,10 +768,10 @@ void nand_device::device_reset()
}
-const device_type SMARTMEDIA = device_creator<smartmedia_image_device>;
+DEFINE_DEVICE_TYPE(SMARTMEDIA, smartmedia_image_device, "smartmedia", "SmartMedia Flash card")
smartmedia_image_device::smartmedia_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nand_device(mconfig, SMARTMEDIA, "SmartMedia Flash ROM", tag, owner, clock, "smartmedia", __FILE__),
- device_image_interface(mconfig, *this)
+ : nand_device(mconfig, SMARTMEDIA, tag, owner, clock)
+ , device_image_interface(mconfig, *this)
{
}
diff --git a/src/devices/machine/smartmed.h b/src/devices/machine/smartmed.h
index f8efcc2df0b..12f7e8c7539 100644
--- a/src/devices/machine/smartmed.h
+++ b/src/devices/machine/smartmed.h
@@ -4,136 +4,116 @@
smartmed.h: header file for smartmed.c
*/
-#ifndef __SMARTMEDIA_H__
-#define __SMARTMEDIA_H__
+#ifndef MAME_MACHINE_SMARTMEDIA_H
+#define MAME_MACHINE_SMARTMEDIA_H
+
+#pragma once
#include "formats/imageutl.h"
#include "softlist_dev.h"
//#define SMARTMEDIA_IMAGE_SAVE
-#define MCFG_NAND_TYPE(_type) \
- nand_device::set_nand_type(*device, _type);
+#define MCFG_NAND_TYPE(type) \
+ nand_device::set_nand_type(*device, (nand_device::chip::type));
-#define MCFG_NAND_RNB_CALLBACK(_write) \
- devcb = &nand_device::set_rnb_wr_callback(*device, DEVCB_##_write);
+#define MCFG_NAND_RNB_CALLBACK(write) \
+ devcb = &nand_device::set_rnb_wr_callback(*device, DEVCB_##write);
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-enum sm_mode_t
-{
- SM_M_INIT, // initial state
- SM_M_READ, // read page data
- SM_M_PROGRAM, // program page data
- SM_M_ERASE, // erase block data
- SM_M_READSTATUS,// read status
- SM_M_READID, // read ID
- SM_M_30,
- SM_M_RANDOM_DATA_INPUT,
- SM_M_RANDOM_DATA_OUTPUT
-};
-
-enum pointer_sm_mode_t
-{
- SM_PM_A, // accessing first 256-byte half of 512-byte data field
- SM_PM_B, // accessing second 256-byte half of 512-byte data field
- SM_PM_C // accessing spare field
-};
-
-
-// "Sequential Row Read is available only on K9F5608U0D_Y,P,V,F or K9F5608D0D_Y,P"
-enum
-{
- NAND_CHIP_K9F5608U0D = 0, // K9F5608U0D
- NAND_CHIP_K9F5608U0D_J, // K9F5608U0D-Jxxx
- NAND_CHIP_K9F5608U0B, // K9F5608U0B
- NAND_CHIP_K9F1G08U0B, // K9F1G08U0B
- NAND_CHIP_K9LAG08U0M // K9LAG08U0M
-};
-
// ======================> nand_device
class nand_device : public device_t
{
public:
+ // "Sequential Row Read is available only on K9F5608U0D_Y,P,V,F or K9F5608D0D_Y,P"
+ enum class chip
+ {
+ K9F5608U0D = 0, // K9F5608U0D
+ K9F5608U0D_J, // K9F5608U0D-Jxxx
+ K9F5608U0B, // K9F5608U0B
+ K9F1G08U0B, // K9F1G08U0B
+ K9LAG08U0M // K9LAG08U0M
+ };
+
// construction/destruction
nand_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- nand_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- template<class _Object> static devcb_base &set_rnb_wr_callback(device_t &device, _Object object) { return downcast<nand_device &>(device).m_write_rnb.set_callback(object); }
+ template <class Object> static devcb_base &set_rnb_wr_callback(device_t &device, Object &&cb) { return downcast<nand_device &>(device).m_write_rnb.set_callback(std::forward<Object>(cb)); }
- static void set_nand_type(device_t &device, int type)
+ static void set_nand_type(device_t &device, chip type)
{
nand_device &dev = downcast<nand_device &>(device);
switch (type)
{
- case NAND_CHIP_K9F5608U0D:
- dev.m_id_len = 2;
- dev.m_id[0] = 0xec;
- dev.m_id[1] = 0x75;
- dev.m_page_data_size = 512;
- dev.m_page_total_size = 512 + 16;
- dev.m_log2_pages_per_block = compute_log2(32);
- dev.m_num_pages = 32 * 2048;
- dev.m_col_address_cycles = 1;
- dev.m_row_address_cycles = 2;
- dev.m_sequential_row_read = 1;
- break;
- case NAND_CHIP_K9F5608U0D_J:
- case NAND_CHIP_K9F5608U0B:
- dev.m_id_len = 2;
- dev.m_id[0] = 0xec;
- dev.m_id[1] = 0x75;
- dev.m_page_data_size = 512;
- dev.m_page_total_size = 512 + 16;
- dev.m_log2_pages_per_block = compute_log2(32);
- dev.m_num_pages = 32 * 2048;
- dev.m_col_address_cycles = 1;
- dev.m_row_address_cycles = 2;
- dev.m_sequential_row_read = 0;
- break;
- case NAND_CHIP_K9F1G08U0B:
- dev.m_id_len = 5;
- dev.m_id[0] = 0xec;
- dev.m_id[1] = 0xf1;
- dev.m_id[2] = 0x00;
- dev.m_id[3] = 0x95;
- dev.m_id[4] = 0x40;
- dev.m_page_data_size = 2048;
- dev.m_page_total_size = 2048 + 64;
- dev.m_log2_pages_per_block = compute_log2(64);
- dev.m_num_pages = 64 * 1024;
- dev.m_col_address_cycles = 2;
- dev.m_row_address_cycles = 2;
- dev.m_sequential_row_read = 0;
- break;
- case NAND_CHIP_K9LAG08U0M:
- dev.m_id_len = 5;
- dev.m_id[0] = 0xec;
- dev.m_id[1] = 0xd5;
- dev.m_id[2] = 0x55;
- dev.m_id[3] = 0x25;
- dev.m_id[4] = 0x68;
- dev.m_page_data_size = 2048;
- dev.m_page_total_size = 2048 + 64;
- dev.m_log2_pages_per_block = compute_log2(128);
- dev.m_num_pages = 128 * 8192;
- dev.m_col_address_cycles = 2;
- dev.m_row_address_cycles = 3;
- dev.m_sequential_row_read = 0;
- break;
- default:
- printf("Unknown NAND type!\n");
- dev.m_id_len = 0;
- dev.m_page_data_size = 0;
- dev.m_page_total_size = 0;
- dev.m_log2_pages_per_block = 0;
- dev.m_num_pages = 0;
- dev.m_col_address_cycles = 0;
- dev.m_row_address_cycles = 0;
- dev.m_sequential_row_read = 0;
- break;
+ case chip::K9F5608U0D:
+ dev.m_id_len = 2;
+ dev.m_id[0] = 0xec;
+ dev.m_id[1] = 0x75;
+ dev.m_page_data_size = 512;
+ dev.m_page_total_size = 512 + 16;
+ dev.m_log2_pages_per_block = compute_log2(32);
+ dev.m_num_pages = 32 * 2048;
+ dev.m_col_address_cycles = 1;
+ dev.m_row_address_cycles = 2;
+ dev.m_sequential_row_read = 1;
+ break;
+ case chip::K9F5608U0D_J:
+ case chip::K9F5608U0B:
+ dev.m_id_len = 2;
+ dev.m_id[0] = 0xec;
+ dev.m_id[1] = 0x75;
+ dev.m_page_data_size = 512;
+ dev.m_page_total_size = 512 + 16;
+ dev.m_log2_pages_per_block = compute_log2(32);
+ dev.m_num_pages = 32 * 2048;
+ dev.m_col_address_cycles = 1;
+ dev.m_row_address_cycles = 2;
+ dev.m_sequential_row_read = 0;
+ break;
+ case chip::K9F1G08U0B:
+ dev.m_id_len = 5;
+ dev.m_id[0] = 0xec;
+ dev.m_id[1] = 0xf1;
+ dev.m_id[2] = 0x00;
+ dev.m_id[3] = 0x95;
+ dev.m_id[4] = 0x40;
+ dev.m_page_data_size = 2048;
+ dev.m_page_total_size = 2048 + 64;
+ dev.m_log2_pages_per_block = compute_log2(64);
+ dev.m_num_pages = 64 * 1024;
+ dev.m_col_address_cycles = 2;
+ dev.m_row_address_cycles = 2;
+ dev.m_sequential_row_read = 0;
+ break;
+ case chip::K9LAG08U0M:
+ dev.m_id_len = 5;
+ dev.m_id[0] = 0xec;
+ dev.m_id[1] = 0xd5;
+ dev.m_id[2] = 0x55;
+ dev.m_id[3] = 0x25;
+ dev.m_id[4] = 0x68;
+ dev.m_page_data_size = 2048;
+ dev.m_page_total_size = 2048 + 64;
+ dev.m_log2_pages_per_block = compute_log2(128);
+ dev.m_num_pages = 128 * 8192;
+ dev.m_col_address_cycles = 2;
+ dev.m_row_address_cycles = 3;
+ dev.m_sequential_row_read = 0;
+ break;
+ default:
+ printf("Unknown NAND type!\n");
+ dev.m_id_len = 0;
+ dev.m_page_data_size = 0;
+ dev.m_page_total_size = 0;
+ dev.m_log2_pages_per_block = 0;
+ dev.m_num_pages = 0;
+ dev.m_col_address_cycles = 0;
+ dev.m_row_address_cycles = 0;
+ dev.m_sequential_row_read = 0;
+ break;
}
}
@@ -147,7 +127,30 @@ public:
void data_w(uint8_t data);
void set_data_ptr(void *ptr);
+
protected:
+ enum sm_mode_t
+ {
+ SM_M_INIT, // initial state
+ SM_M_READ, // read page data
+ SM_M_PROGRAM, // program page data
+ SM_M_ERASE, // erase block data
+ SM_M_READSTATUS,// read status
+ SM_M_READID, // read ID
+ SM_M_30,
+ SM_M_RANDOM_DATA_INPUT,
+ SM_M_RANDOM_DATA_OUTPUT
+ };
+
+ enum pointer_sm_mode_t
+ {
+ SM_PM_A, // accessing first 256-byte half of 512-byte data field
+ SM_PM_B, // accessing second 256-byte half of 512-byte data field
+ SM_PM_C // accessing spare field
+ };
+
+ nand_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -190,15 +193,14 @@ protected:
devcb_write_line m_write_rnb;
- #ifdef SMARTMEDIA_IMAGE_SAVE
+#ifdef SMARTMEDIA_IMAGE_SAVE
int m_image_format;
- #endif
+#endif
};
-class smartmedia_image_device : public nand_device,
- public device_image_interface
+class smartmedia_image_device : public nand_device, public device_image_interface
{
public:
// construction/destruction
@@ -222,13 +224,12 @@ public:
protected:
image_init_result smartmedia_format_1();
image_init_result smartmedia_format_2();
- int detect_geometry( uint8_t id1, uint8_t id2);
+ int detect_geometry(uint8_t id1, uint8_t id2);
};
// device type definition
-extern const device_type NAND;
-extern const device_type SMARTMEDIA;
-
+DECLARE_DEVICE_TYPE(NAND, nand_device)
+DECLARE_DEVICE_TYPE(SMARTMEDIA, smartmedia_image_device)
-#endif /* __SMARTMEDIA_H__ */
+#endif // MAME_MACHINE_SMARTMEDIA_H
diff --git a/src/devices/machine/smc91c9x.cpp b/src/devices/machine/smc91c9x.cpp
index 1a44d1ad74b..4905581af21 100644
--- a/src/devices/machine/smc91c9x.cpp
+++ b/src/devices/machine/smc91c9x.cpp
@@ -105,9 +105,9 @@ static const char *const ethernet_regname[64] =
DEVICE INTERFACE
***************************************************************************/
-smc91c9x_device::smc91c9x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_irq_handler(*this)
+smc91c9x_device::smc91c9x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_irq_handler(*this)
{
}
@@ -181,18 +181,18 @@ void smc91c9x_device::device_reset()
}
-const device_type SMC91C94 = device_creator<smc91c94_device>;
+DEFINE_DEVICE_TYPE(SMC91C94, smc91c94_device, "smc91c94", "SMC91C94 Ethernet Controller")
smc91c94_device::smc91c94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : smc91c9x_device(mconfig, SMC91C94, "SMC91C94 Ethernet Controller", tag, owner, clock, "smc91c94", __FILE__)
+ : smc91c9x_device(mconfig, SMC91C94, tag, owner, clock)
{
}
-const device_type SMC91C96 = device_creator<smc91c96_device>;
+DEFINE_DEVICE_TYPE(SMC91C96, smc91c96_device, "smc91c96", "SMC91C96 Ethernet Controller")
smc91c96_device::smc91c96_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : smc91c9x_device(mconfig, SMC91C96, "SMC91C96", tag, owner, clock, "smc91c96", __FILE__)
+ : smc91c9x_device(mconfig, SMC91C96, tag, owner, clock)
{
}
diff --git a/src/devices/machine/smc91c9x.h b/src/devices/machine/smc91c9x.h
index f83d7a6a39a..3723049a639 100644
--- a/src/devices/machine/smc91c9x.h
+++ b/src/devices/machine/smc91c9x.h
@@ -8,11 +8,8 @@
**************************************************************************/
-#ifndef __SMC91C9X__
-#define __SMC91C9X__
-
-#define ETHER_BUFFER_SIZE (2048)
-#define ETHER_RX_BUFFERS (4)
+#ifndef MAME_MACHINE_SMC91C9X_H
+#define MAME_MACHINE_SMC91C9X_H
/***************************************************************************
TYPE DEFINITIONS
@@ -21,20 +18,22 @@
class smc91c9x_device : public device_t
{
public:
- smc91c9x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- ~smc91c9x_device() {}
-
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<smc91c9x_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<smc91c9x_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER( read );
DECLARE_WRITE16_MEMBER( write );
protected:
+ smc91c9x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
private:
+ static constexpr unsigned ETHER_BUFFER_SIZE = 2048;
+ static constexpr unsigned ETHER_RX_BUFFERS = 4;
+
// internal state
devcb_write_line m_irq_handler;
@@ -70,31 +69,31 @@ public:
smc91c94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type SMC91C94;
-
class smc91c96_device : public smc91c9x_device
{
public:
smc91c96_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type SMC91C96;
+
+DECLARE_DEVICE_TYPE(SMC91C94, smc91c94_device)
+DECLARE_DEVICE_TYPE(SMC91C96, smc91c96_device)
+
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
-#define MCFG_SMC91C94_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SMC91C94, 0)
-
-#define MCFG_SMC91C94_IRQ_CALLBACK(_write) \
- devcb = &smc91c94_device::set_irq_callback(*device, DEVCB_##_write);
+#define MCFG_SMC91C94_ADD(tag) \
+ MCFG_DEVICE_ADD((tag), SMC91C94, 0)
-#define MCFG_SMC91C96_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SMC91C96, 0)
+#define MCFG_SMC91C94_IRQ_CALLBACK(write) \
+ devcb = &smc91c94_device::set_irq_callback(*device, DEVCB_##write);
-#define MCFG_SMC91C96_IRQ_CALLBACK(_write) \
- devcb = &smc91c96_device::set_irq_callback(*device, DEVCB_##_write);
+#define MCFG_SMC91C96_ADD(tag) \
+ MCFG_DEVICE_ADD((tag), SMC91C96, 0)
+#define MCFG_SMC91C96_IRQ_CALLBACK(write) \
+ devcb = &smc91c96_device::set_irq_callback(*device, DEVCB_##write);
-#endif
+#endif // MAME_MACHINE_SMC91C9X_H
diff --git a/src/devices/machine/sonydriv.cpp b/src/devices/machine/sonydriv.cpp
index 64b09eebe90..c8d95b77672 100644
--- a/src/devices/machine/sonydriv.cpp
+++ b/src/devices/machine/sonydriv.cpp
@@ -33,8 +33,9 @@
*********************************************************************/
#include "emu.h"
-#include "machine/applefdc.h"
#include "sonydriv.h"
+
+#include "machine/applefdc.h"
#include "formats/ap_dsk35.h"
#include "imagedev/flopdrv.h"
@@ -525,14 +526,14 @@ void sony_set_speed(int speed)
}
// device type definition
-const device_type FLOPPY_SONY = device_creator<sonydriv_floppy_image_device>;
+DEFINE_DEVICE_TYPE(FLOPPY_SONY, sonydriv_floppy_image_device, "floppy_sonny", "Floppy Disk [Sony]")
//-------------------------------------------------
// sonydriv_floppy_image_device - constructor
//-------------------------------------------------
sonydriv_floppy_image_device::sonydriv_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : legacy_floppy_image_device(mconfig, FLOPPY_SONY, "Floppy Disk [Sony]", tag, owner, clock, "floppy_sonny", __FILE__)
+ : legacy_floppy_image_device(mconfig, FLOPPY_SONY, tag, owner, clock)
{
}
diff --git a/src/devices/machine/sonydriv.h b/src/devices/machine/sonydriv.h
index b382efd47bf..82404805a16 100644
--- a/src/devices/machine/sonydriv.h
+++ b/src/devices/machine/sonydriv.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef SONYDRIV_H
-#define SONYDRIV_H
+#ifndef MAME_MACHINE_SONYDRIV_H
+#define MAME_MACHINE_SONYDRIV_H
+
+#pragma once
#include "imagedev/flopdrv.h"
@@ -24,29 +26,30 @@ enum
};
#endif
-void sony_set_lines(device_t *device,uint8_t lines);
-void sony_set_enable_lines(device_t *device,int enable_mask);
-void sony_set_sel_line(device_t *device,int sel);
+void sony_set_lines(device_t *device, uint8_t lines);
+void sony_set_enable_lines(device_t *device, int enable_mask);
+void sony_set_sel_line(device_t *device, int sel);
void sony_set_speed(int speed);
uint8_t sony_read_data(device_t *device);
-void sony_write_data(device_t *device,uint8_t data);
+void sony_write_data(device_t *device, uint8_t data);
int sony_read_status(device_t *device);
-class sonydriv_floppy_image_device : public legacy_floppy_image_device
+class sonydriv_floppy_image_device : public legacy_floppy_image_device
{
public:
// construction/destruction
sonydriv_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void call_unload() override;
+
protected:
virtual void device_start() override;
};
// device type definition
-extern const device_type FLOPPY_SONY;
+DECLARE_DEVICE_TYPE(FLOPPY_SONY, sonydriv_floppy_image_device)
#define MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(_config) \
MCFG_DEVICE_ADD(FLOPPY_0, FLOPPY_SONY, 0) \
@@ -66,6 +69,4 @@ extern const device_type FLOPPY_SONY;
MCFG_DEVICE_MODIFY(FLOPPY_1) \
MCFG_LEGACY_FLOPPY_CONFIG(_config)
-
-
-#endif /* SONYDRIV_H */
+#endif // MAME_MACHINE_SONYDRIV_H
diff --git a/src/devices/machine/spchrom.cpp b/src/devices/machine/spchrom.cpp
index 60396aca84e..3cd95b87c2e 100644
--- a/src/devices/machine/spchrom.cpp
+++ b/src/devices/machine/spchrom.cpp
@@ -23,10 +23,10 @@
#define TMS5220_ADDRESS_MASK 0x3FFFFUL /* 18-bit mask for tms5220 address */
// device type definition
-const device_type SPEECHROM = device_creator<speechrom_device>;
+DEFINE_DEVICE_TYPE(SPEECHROM, speechrom_device, "speechrom", "TI Speech ROM")
speechrom_device::speechrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SPEECHROM, "SPEECHROM", tag, owner, clock, "speechrom", __FILE__), m_speechrom_data(nullptr), m_speechROMlen(0),
+ : device_t(mconfig, SPEECHROM, tag, owner, clock), m_speechrom_data(nullptr), m_speechROMlen(0),
m_speechROMaddr(0),
m_load_pointer(0),
m_ROM_bits_count(0),
diff --git a/src/devices/machine/spchrom.h b/src/devices/machine/spchrom.h
index 62a881ad523..f84350da358 100644
--- a/src/devices/machine/spchrom.h
+++ b/src/devices/machine/spchrom.h
@@ -5,8 +5,10 @@
*
*/
-#ifndef __SPCHROMS_H
-#define __SPCHROMS_H
+#ifndef MAME_MACHINE_SPCHROM_H
+#define MAME_MACHINE_SPCHROM_H
+
+#pragma once
class speechrom_device : public device_t
@@ -21,6 +23,7 @@ public:
void read_and_branch();
void set_reverse_bit_order(bool reverse) { m_reverse = reverse; }
+protected:
// device-level overrides
virtual void device_start() override;
@@ -35,6 +38,6 @@ private:
// device type definition
-extern const device_type SPEECHROM;
+DECLARE_DEVICE_TYPE(SPEECHROM, speechrom_device)
-#endif
+#endif // MAME_MACHINE_SPCHROM_H
diff --git a/src/devices/machine/steppers.cpp b/src/devices/machine/steppers.cpp
index 20a33cb27c9..b965fee8e9d 100644
--- a/src/devices/machine/steppers.cpp
+++ b/src/devices/machine/steppers.cpp
@@ -41,14 +41,14 @@
#include "emu.h"
#include "steppers.h"
-const device_type STEPPER = device_creator<stepper_device>;
+DEFINE_DEVICE_TYPE(STEPPER, stepper_device, "stepper", "Stepper Motor")
stepper_device::stepper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, STEPPER, "Stepper Motor", tag, owner, clock, "stepper", __FILE__),
- m_optic_cb(*this)
- {
- m_max_steps=(48*2);
- }
+ : device_t(mconfig, STEPPER, tag, owner, clock)
+ , m_optic_cb(*this)
+{
+ m_max_steps=(48*2);
+}
///////////////////////////////////////////////////////////////////////////
void stepper_device::update_optic()
diff --git a/src/devices/machine/steppers.h b/src/devices/machine/steppers.h
index 2f51c195507..40e675714db 100644
--- a/src/devices/machine/steppers.h
+++ b/src/devices/machine/steppers.h
@@ -12,8 +12,10 @@
///////////////////////////////////////////////////////////////////////////
-#ifndef INC_STEPPERS
-#define INC_STEPPERS
+#ifndef MAME_MACHINE_STEPPERS_H
+#define MAME_MACHINE_STEPPERS_H
+
+#pragma once
#define NOT_A_REEL 0
#define STARPOINT_48STEP_REEL 1 /* STARPOINT RMXXX reel unit */
@@ -95,42 +97,43 @@
#define MCFG_STEPPER_OPTIC_CALLBACK(_write) \
devcb = &stepper_device::set_optic_handler(*device, DEVCB_##_write);
-class stepper_device;
-extern const device_type STEPPER;
+DECLARE_DEVICE_TYPE(STEPPER, stepper_device)
class stepper_device : public device_t
{
public:
stepper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_optic_handler(device_t &device, _Object object) { return downcast<stepper_device &>(device).m_optic_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_optic_handler(device_t &device, Object &&cb) { return downcast<stepper_device &>(device).m_optic_cb.set_callback(std::forward<Object>(cb)); }
static void set_reel_type(device_t &device, uint8_t type)
{
downcast<stepper_device &>(device).m_type = type;
switch ( type )
- { default:
- case STARPOINT_48STEP_REEL: /* STARPOINT RMxxx */
- case BARCREST_48STEP_REEL : /* Barcrest Reel unit */
- case MPU3_48STEP_REEL :
- case GAMESMAN_48STEP_REEL : /* Gamesman GMxxxx */
- case PROJECT_48STEP_REEL :
+ {
+ default:
+ case STARPOINT_48STEP_REEL: /* STARPOINT RMxxx */
+ case BARCREST_48STEP_REEL : /* Barcrest Reel unit */
+ case MPU3_48STEP_REEL :
+ case GAMESMAN_48STEP_REEL : /* Gamesman GMxxxx */
+ case PROJECT_48STEP_REEL :
downcast<stepper_device &>(device).m_max_steps = (48*2);
break;
- case GAMESMAN_100STEP_REEL :
+ case GAMESMAN_100STEP_REEL :
downcast<stepper_device &>(device).m_max_steps = (100*2);
break;
- case STARPOINT_144STEP_DICE :/* STARPOINT 1DCU DICE mechanism */
+ case STARPOINT_144STEP_DICE :/* STARPOINT 1DCU DICE mechanism */
//Dice reels are 48 step motors, but complete three full cycles between opto updates
downcast<stepper_device &>(device).m_max_steps = ((48*3)*2);
break;
- case STARPOINT_200STEP_REEL :
- case GAMESMAN_200STEP_REEL :
- case ECOIN_200STEP_REEL :
+ case STARPOINT_200STEP_REEL :
+ case GAMESMAN_200STEP_REEL :
+ case ECOIN_200STEP_REEL :
downcast<stepper_device &>(device).m_max_steps = (200*2);
break;
}
}
+
static void set_max_steps(device_t &device, int16_t steps) { downcast<stepper_device &>(device).m_max_steps = steps; }
static void set_start_index(device_t &device, int16_t index) { downcast<stepper_device &>(device).m_index_start = index; }
static void set_end_index(device_t &device, int16_t index) { downcast<stepper_device &>(device).m_index_end = index; }
@@ -176,4 +179,4 @@ private:
devcb_write_line m_optic_cb;
};
-#endif
+#endif // MAME_MACHINE_STEPPERS_H
diff --git a/src/devices/machine/strata.cpp b/src/devices/machine/strata.cpp
index 7b729614028..3f32b62739f 100644
--- a/src/devices/machine/strata.cpp
+++ b/src/devices/machine/strata.cpp
@@ -23,7 +23,6 @@
#include "emu.h"
#include "strata.h"
-#define MAX_STRATA 1
#define FEEPROM_SIZE 0x800000 // 64Mbit
#define BLOCK_SIZE 0x020000
@@ -44,11 +43,11 @@
#define SET_BLOCKLOCK(block) (m_blocklock[(block) >> 3] |= 1 << ((block) & 7))
#define CLEAR_BLOCKLOCK(block) (m_blocklock[(block) >> 3] &= ~(1 << ((block) & 7)))
-const device_type STRATAFLASH = device_creator<strataflash_device>;
+DEFINE_DEVICE_TYPE(STRATAFLASH, strataflash_device, "strataflash", "Intel 28F640J5")
strataflash_device::strataflash_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, STRATAFLASH, "Intel 28F640J5", tag, owner, clock, "strataflash", __FILE__),
- device_nvram_interface(mconfig, *this)
+ : device_t(mconfig, STRATAFLASH, tag, owner, clock)
+ , device_nvram_interface(mconfig, *this)
{
}
@@ -179,7 +178,7 @@ void strataflash_device::nvram_write(emu_file &file)
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void strataflash_device::device_start(void)
+void strataflash_device::device_start()
{
m_mode = FM_NORMAL;
m_status = 0x80;
diff --git a/src/devices/machine/strata.h b/src/devices/machine/strata.h
index d3957e610f6..450b0ebd201 100644
--- a/src/devices/machine/strata.h
+++ b/src/devices/machine/strata.h
@@ -1,8 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Raphael Nabet, Michael Zapf
-/*
- strata.h: header file for strata.c
-*/
+#ifndef MAME_MACHINE_STRATA_H
+#define MAME_MACHINE_STRATA_H
+
+#pragma once
+
class strataflash_device : public device_t, public device_nvram_interface
{
@@ -67,7 +69,9 @@ private:
uint8_t* m_prot_regs; // protection registers
};
-extern const device_type STRATAFLASH;
+DECLARE_DEVICE_TYPE(STRATAFLASH, strataflash_device)
#define MCFG_STRATAFLASH_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, STRATAFLASH, 0)
+ MCFG_DEVICE_ADD(_tag, STRATAFLASH, 0)
+
+#endif // MAME_MACHINE_STRATA_H
diff --git a/src/devices/machine/t10mmc.h b/src/devices/machine/t10mmc.h
index a2598380a5f..83d55bb673e 100644
--- a/src/devices/machine/t10mmc.h
+++ b/src/devices/machine/t10mmc.h
@@ -6,8 +6,10 @@ t10mmc.h
***************************************************************************/
-#ifndef _T10MMC_H_
-#define _T10MMC_H_
+#ifndef MAME_MACHINE_T10MMC_H
+#define MAME_MACHINE_T10MMC_H
+
+#pragma once
#include "t10spc.h"
#include "imagedev/chd_cd.h"
@@ -68,4 +70,4 @@ protected:
device_t *m_device;
};
-#endif
+#endif // MAME_MACHINE_T10MMC_H
diff --git a/src/devices/machine/t10sbc.h b/src/devices/machine/t10sbc.h
index 4c3c45c0393..fa0053e74f7 100644
--- a/src/devices/machine/t10sbc.h
+++ b/src/devices/machine/t10sbc.h
@@ -6,8 +6,10 @@ t10sbc.h
***************************************************************************/
-#ifndef _T10SBC_H_
-#define _T10SBC_H_
+#ifndef MAME_MACHINE_T10SBC_H
+#define MAME_MACHINE_T10SBC_H
+
+#pragma once
#include "t10spc.h"
#include "imagedev/harddriv.h"
@@ -39,4 +41,4 @@ protected:
device_t *m_device;
};
-#endif
+#endif // MAME_MACHINE_T10SBC_H
diff --git a/src/devices/machine/t10spc.h b/src/devices/machine/t10spc.h
index bc17b11b4f0..254ce87a4c0 100644
--- a/src/devices/machine/t10spc.h
+++ b/src/devices/machine/t10spc.h
@@ -6,8 +6,10 @@ t10spc.h
***************************************************************************/
-#ifndef _T10SPC_H_
-#define _T10SPC_H_
+#ifndef MAME_MACHINE_T10SPC_H
+#define MAME_MACHINE_T10SPC_H
+
+#pragma once
class t10spc
@@ -17,7 +19,7 @@ public:
{
}
- virtual ~t10spc() {};
+ virtual ~t10spc() { }
virtual void SetDevice( void *device ) = 0;
virtual void GetDevice( void **device ) = 0;
@@ -138,4 +140,4 @@ protected:
#define SCSI_PHASE_BUS_FREE ( 8 )
#define SCSI_PHASE_SELECT ( 9 )
-#endif
+#endif // MAME_MACHINE_T10SPC_H
diff --git a/src/devices/machine/tc009xlvc.cpp b/src/devices/machine/tc009xlvc.cpp
index 10a9387a9c4..d85e1c6be35 100644
--- a/src/devices/machine/tc009xlvc.cpp
+++ b/src/devices/machine/tc009xlvc.cpp
@@ -17,7 +17,7 @@
#include "screen.h"
-const device_type TC0091LVC = device_creator<tc0091lvc_device>;
+DEFINE_DEVICE_TYPE(TC0091LVC, tc0091lvc_device, "tc009xlvc", "Taito TC0091LVC")
READ8_MEMBER(tc0091lvc_device::tc0091lvc_paletteram_r)
@@ -168,7 +168,7 @@ static ADDRESS_MAP_START( tc0091lvc_map8, AS_0, 8, tc0091lvc_device )
ADDRESS_MAP_END
tc0091lvc_device::tc0091lvc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TC0091LVC, "Taito TC0091LVC", tag, owner, clock, "tc0091lvc", __FILE__)
+ : device_t(mconfig, TC0091LVC, tag, owner, clock)
, device_memory_interface(mconfig, *this)
, m_space_config("tc0091lvc", ENDIANNESS_LITTLE, 8,20, 0, nullptr, *ADDRESS_MAP_NAME(tc0091lvc_map8))
, m_gfxdecode(*this, finder_base::DUMMY_TAG)
diff --git a/src/devices/machine/tc009xlvc.h b/src/devices/machine/tc009xlvc.h
index 35c88edfbd5..2a4cb000c27 100644
--- a/src/devices/machine/tc009xlvc.h
+++ b/src/devices/machine/tc009xlvc.h
@@ -6,14 +6,13 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_TL009XLVC_H
+#define MAME_MACHINE_TL009XLVC_H
-#ifndef __ramdacDEV_H__
-#define __ramdacDEV_H__
+#pragma once
-class tc0091lvc_device : public device_t,
- public device_memory_interface
+class tc0091lvc_device : public device_t, public device_memory_interface
{
public:
tc0091lvc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -45,6 +44,15 @@ public:
TILE_GET_INFO_MEMBER(get_bg1_tile_info);
TILE_GET_INFO_MEMBER(get_tx_tile_info);
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof();
+
+protected:
+ virtual void device_start() override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
+
+ void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t global_flip);
+
uint8_t *m_pcg1_ram;
uint8_t *m_pcg2_ram;
uint8_t *m_vram0;
@@ -66,21 +74,14 @@ public:
uint8_t m_pcg_ram[0x10000];
uint8_t m_sprram_buffer[0x400];
- uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t global_flip);
- void screen_eof(void);
-
-protected:
- virtual void device_start() override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
address_space_config m_space_config;
required_device<gfxdecode_device> m_gfxdecode;
};
-extern const device_type TC0091LVC;
+DECLARE_DEVICE_TYPE(TC0091LVC, tc0091lvc_device)
-#define MCFG_TC0091LVC_GFXDECODE(_gfxtag) \
- tc0091lvc_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_TC0091LVC_GFXDECODE(gfxtag) \
+ tc0091lvc_device::static_set_gfxdecode_tag(*device, ("^" gfxtag));
-#endif
+#endif // MAME_MACHINE_TL009XLVC_H
diff --git a/src/devices/machine/terminal.cpp b/src/devices/machine/terminal.cpp
index 5a34a04a304..22ba422aab9 100644
--- a/src/devices/machine/terminal.cpp
+++ b/src/devices/machine/terminal.cpp
@@ -143,49 +143,52 @@ static const uint8_t terminal_font[256*16] =
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
-generic_terminal_device::generic_terminal_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+generic_terminal_device::generic_terminal_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, unsigned w, unsigned h)
+ : device_t(mconfig, type, tag, owner, clock)
, m_palette(*this, "palette")
, m_io_term_conf(*this, "TERM_CONF")
+ , m_width(w)
+ , m_height(h)
+ , m_buffer()
, m_x_pos(0)
, m_framecnt(0)
, m_y_pos(0)
, m_bell_timer(nullptr)
, m_beeper(*this, "beeper")
- , m_keyboard_cb(*this)
+ , m_keyboard_cb()
{
}
generic_terminal_device::generic_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : generic_terminal_device(mconfig, GENERIC_TERMINAL, "Generic Terminal", tag, owner, clock, "generic_terminal", __FILE__)
+ : generic_terminal_device(mconfig, GENERIC_TERMINAL, tag, owner, clock, TERMINAL_WIDTH, TERMINAL_HEIGHT)
{
}
void generic_terminal_device::scroll_line()
{
- memmove(m_buffer,m_buffer+TERMINAL_WIDTH,(TERMINAL_HEIGHT-1)*TERMINAL_WIDTH);
- memset(m_buffer + TERMINAL_WIDTH*(TERMINAL_HEIGHT-1),0x20,TERMINAL_WIDTH);
+ memmove(m_buffer.get(), m_buffer.get() + m_width, (m_height - 1) * m_width);
+ memset(m_buffer.get() + (m_width * (m_height - 1)), 0x20, m_width);
}
void generic_terminal_device::write_char(uint8_t data)
{
- m_buffer[m_y_pos*TERMINAL_WIDTH+m_x_pos] = data;
+ m_buffer[m_y_pos*m_width+m_x_pos] = data;
m_x_pos++;
- if (m_x_pos >= TERMINAL_WIDTH)
+ if (m_x_pos >= m_width)
{
m_x_pos = 0;
m_y_pos++;
- if (m_y_pos >= TERMINAL_HEIGHT)
+ if (m_y_pos >= m_height)
{
scroll_line();
- m_y_pos = TERMINAL_HEIGHT-1;
+ m_y_pos = m_height-1;
}
}
}
void generic_terminal_device::clear()
{
- std::fill(std::begin(m_buffer), std::end(m_buffer), 0x20);
+ std::fill_n(m_buffer.get(), m_width * m_height, 0x20);
m_x_pos = 0;
m_y_pos = 0;
}
@@ -212,7 +215,7 @@ void generic_terminal_device::term_write(uint8_t data)
break;
case 0x09: // horizontal tab
- m_x_pos = (std::min<uint8_t>)((m_x_pos & 0xf8) + 8, TERMINAL_WIDTH - 1);
+ m_x_pos = (std::min<uint8_t>)((m_x_pos & 0xf8) + 8, m_width - 1);
break;
case 0x0d: // carriage return
@@ -221,10 +224,10 @@ void generic_terminal_device::term_write(uint8_t data)
case 0x0a: // linefeed
m_y_pos++;
- if (m_y_pos >= TERMINAL_HEIGHT)
+ if (m_y_pos >= m_height)
{
scroll_line();
- m_y_pos = TERMINAL_HEIGHT - 1;
+ m_y_pos = m_height - 1;
}
if (options & 0x040) m_x_pos = 0;
break;
@@ -251,7 +254,7 @@ void generic_terminal_device::term_write(uint8_t data)
uint32_t generic_terminal_device::update(screen_device &device, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
const uint16_t options = m_io_term_conf->read();
- uint16_t cursor = m_y_pos * TERMINAL_WIDTH + m_x_pos;
+ uint16_t cursor = m_y_pos * m_width + m_x_pos;
uint8_t y,ra,chr,gfx;
uint16_t sy=0,ma=0,x;
@@ -271,13 +274,13 @@ uint32_t generic_terminal_device::update(screen_device &device, bitmap_rgb32 &bi
m_framecnt++;
- for (y = 0; y < TERMINAL_HEIGHT; y++)
+ for (y = 0; y < m_height; y++)
{
for (ra = 0; ra < 10; ra++)
{
uint32_t *p = &bitmap.pix32(sy++);
- for (x = ma; x < ma + TERMINAL_WIDTH; x++)
+ for (x = ma; x < ma + m_width; x++)
{
chr = m_buffer[x];
gfx = terminal_font[(chr<<4) | ra ];
@@ -310,12 +313,12 @@ uint32_t generic_terminal_device::update(screen_device &device, bitmap_rgb32 &bi
*p++ = (BIT( gfx, 0 ))?font_color:0;
}
}
- ma += TERMINAL_WIDTH;
+ ma += m_width;
}
return 0;
}
-WRITE8_MEMBER( generic_terminal_device::kbd_put )
+void generic_terminal_device::kbd_put(u8 data)
{
if (m_io_term_conf->read() & 0x100) term_write(data);
send_key(data);
@@ -329,14 +332,14 @@ static MACHINE_CONFIG_FRAGMENT( generic_terminal )
MCFG_SCREEN_ADD_MONOCHROME(TERMINAL_SCREEN_TAG, RASTER, rgb_t::white())
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(TERMINAL_WIDTH*8, TERMINAL_HEIGHT*10)
- MCFG_SCREEN_VISIBLE_AREA(0, TERMINAL_WIDTH*8-1, 0, TERMINAL_HEIGHT*10-1)
+ MCFG_SCREEN_SIZE(generic_terminal_device::TERMINAL_WIDTH*8, generic_terminal_device::TERMINAL_HEIGHT*10)
+ MCFG_SCREEN_VISIBLE_AREA(0, generic_terminal_device::TERMINAL_WIDTH*8-1, 0, generic_terminal_device::TERMINAL_HEIGHT*10-1)
MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, generic_terminal_device, update)
MCFG_PALETTE_ADD_MONOCHROME("palette")
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(WRITE8(generic_terminal_device, kbd_put))
+ MCFG_GENERIC_KEYBOARD_CB(PUT(generic_terminal_device, kbd_put))
MCFG_SPEAKER_STANDARD_MONO("bell")
MCFG_SOUND_ADD("beeper", BEEP, 2'000)
@@ -350,9 +353,10 @@ machine_config_constructor generic_terminal_device::device_mconfig_additions() c
void generic_terminal_device::device_start()
{
+ m_buffer = std::make_unique<uint8_t []>(m_width * m_height);
m_bell_timer = timer_alloc(BELL_TIMER_ID);
- m_keyboard_cb.resolve_safe();
- save_item(NAME(m_buffer));
+ m_keyboard_cb.bind_relative_to(*owner());
+ save_pointer(NAME(m_buffer.get()), m_width * m_height);
save_item(NAME(m_x_pos));
save_item(NAME(m_framecnt));
save_item(NAME(m_y_pos));
@@ -446,4 +450,4 @@ ioport_constructor generic_terminal_device::device_input_ports() const
return INPUT_PORTS_NAME(generic_terminal);
}
-const device_type GENERIC_TERMINAL = device_creator<generic_terminal_device>;
+DEFINE_DEVICE_TYPE(GENERIC_TERMINAL, generic_terminal_device, "generic_terminal", "Generic Terminal")
diff --git a/src/devices/machine/terminal.h b/src/devices/machine/terminal.h
index 47988d64138..dc430f2a83f 100644
--- a/src/devices/machine/terminal.h
+++ b/src/devices/machine/terminal.h
@@ -1,39 +1,44 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
-#ifndef MAME_DEVICES_TERMINAL_H
-#define MAME_DEVICES_TERMINAL_H
+#ifndef MAME_MACHINE_TERMINAL_H
+#define MAME_MACHINE_TERMINAL_H
+
+#pragma once
#include "machine/keyboard.h"
#include "sound/beep.h"
+
#define TERMINAL_SCREEN_TAG "terminal_screen"
+
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
-#define MCFG_GENERIC_TERMINAL_KEYBOARD_CB(_devcb) \
- devcb = &generic_terminal_device::set_keyboard_callback(*device, DEVCB_##_devcb);
+#define MCFG_GENERIC_TERMINAL_KEYBOARD_CB(cb) \
+ generic_terminal_device::set_keyboard_callback(*device, (KEYBOARDCB_##cb));
+
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
-#define TERMINAL_WIDTH 80
-#define TERMINAL_HEIGHT 24
-
INPUT_PORTS_EXTERN( generic_terminal );
class generic_terminal_device : public device_t
{
public:
- generic_terminal_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ static constexpr unsigned TERMINAL_WIDTH = 80;
+ static constexpr unsigned TERMINAL_HEIGHT = 24;
+
generic_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_keyboard_callback(device_t &device, _Object object) { return downcast<generic_terminal_device &>(device).m_keyboard_cb.set_callback(object); }
+ template <class Object> static void set_keyboard_callback(device_t &device, Object &&cb)
+ { downcast<generic_terminal_device &>(device).m_keyboard_cb = std::forward<Object>(cb); }
DECLARE_WRITE8_MEMBER(write) { term_write(data); }
- DECLARE_WRITE8_MEMBER(kbd_put);
+ void kbd_put(u8 data);
uint32_t update(screen_device &device, bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual ioport_constructor device_input_ports() const override;
@@ -42,16 +47,20 @@ public:
protected:
enum { BELL_TIMER_ID = 20'000 };
+ generic_terminal_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, unsigned w, unsigned h);
+
virtual void term_write(uint8_t data);
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual void send_key(uint8_t code) { m_keyboard_cb((offs_t)0, code); }
+ virtual void send_key(uint8_t code) { m_keyboard_cb(code); }
optional_device<palette_device> m_palette;
required_ioport m_io_term_conf;
- uint8_t m_buffer[TERMINAL_WIDTH * 50]; // make big enough for teleprinter
+ unsigned const m_width;
+ unsigned const m_height;
+ std::unique_ptr<uint8_t []> m_buffer;
uint8_t m_x_pos;
private:
@@ -64,9 +73,9 @@ private:
emu_timer *m_bell_timer;
required_device<beep_device> m_beeper;
- devcb_write8 m_keyboard_cb;
+ generic_keyboard_device::output_delegate m_keyboard_cb;
};
-extern const device_type GENERIC_TERMINAL;
+DECLARE_DEVICE_TYPE(GENERIC_TERMINAL, generic_terminal_device)
-#endif /* MAME_DEVICES_TERMINAL_H */
+#endif // MAME_DEVICES_TERMINAL_H
diff --git a/src/devices/machine/timekpr.cpp b/src/devices/machine/timekpr.cpp
index d63b6984609..4269b3379ea 100644
--- a/src/devices/machine/timekpr.cpp
+++ b/src/devices/machine/timekpr.cpp
@@ -19,12 +19,12 @@
#include "machine/timehelp.h"
// device type definition
-const device_type M48T02 = device_creator<m48t02_device>;
-const device_type M48T35 = device_creator<m48t35_device>;
-const device_type M48T37 = device_creator<m48t37_device>;
-const device_type M48T58 = device_creator<m48t58_device>;
-const device_type MK48T08 = device_creator<mk48t08_device>;
-const device_type MK48T12 = device_creator<mk48t12_device>;
+DEFINE_DEVICE_TYPE(M48T02, m48t02_device, "m48t02", "M48T02 Timekeeper")
+DEFINE_DEVICE_TYPE(M48T35, m48t35_device, "m48t35", "M48T35 Timekeeper")
+DEFINE_DEVICE_TYPE(M48T37, m48t37_device, "m48t37", "M48T37 Timekeeper")
+DEFINE_DEVICE_TYPE(M48T58, m48t58_device, "m48t58", "M48T58 Timekeeper")
+DEFINE_DEVICE_TYPE(MK48T08, mk48t08_device, "mk48t08", "MK48T08 Timekeeper")
+DEFINE_DEVICE_TYPE(MK48T12, mk48t12_device, "mk48t12", "MK48T12 Timekeeper")
/***************************************************************************
@@ -88,8 +88,8 @@ static int counter_from_ram( uint8_t *data, int offset )
// timekeeper_device_config - constructor
//-------------------------------------------------
-timekeeper_device::timekeeper_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int size)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+timekeeper_device::timekeeper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int size)
+ : device_t(mconfig, type, tag, owner, clock)
, device_nvram_interface(mconfig, *this)
, m_default_data(*this, DEVICE_SELF, size)
, m_size(size)
@@ -97,7 +97,7 @@ timekeeper_device::timekeeper_device(const machine_config &mconfig, device_type
}
m48t02_device::m48t02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : timekeeper_device(mconfig, M48T02, "M48T02 Timekeeper", tag, owner, clock, "m48t02", __FILE__, 0x800)
+ : timekeeper_device(mconfig, M48T02, tag, owner, clock, 0x800)
{
m_offset_control = 0x7f8;
m_offset_seconds = 0x7f9;
@@ -112,7 +112,7 @@ m48t02_device::m48t02_device(const machine_config &mconfig, const char *tag, dev
}
m48t35_device::m48t35_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : timekeeper_device(mconfig, M48T35, "M48T35 Timekeeper", tag, owner, clock, "m48t35", __FILE__, 0x8000)
+ : timekeeper_device(mconfig, M48T35, tag, owner, clock, 0x8000)
{
m_offset_control = 0x7ff8;
m_offset_seconds = 0x7ff9;
@@ -127,7 +127,7 @@ m48t35_device::m48t35_device(const machine_config &mconfig, const char *tag, dev
}
m48t37_device::m48t37_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : timekeeper_device(mconfig, M48T37, "M48T37 Timekeeper", tag, owner, clock, "m48t37", __FILE__, 0x8000)
+ : timekeeper_device(mconfig, M48T37, tag, owner, clock, 0x8000)
{
m_offset_control = 0x7ff8;
m_offset_seconds = 0x7ff9;
@@ -142,7 +142,7 @@ m48t37_device::m48t37_device(const machine_config &mconfig, const char *tag, dev
}
m48t58_device::m48t58_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : timekeeper_device(mconfig, M48T58, "M48T58 Timekeeper", tag, owner, clock, "m48t58", __FILE__, 0x2000)
+ : timekeeper_device(mconfig, M48T58, tag, owner, clock, 0x2000)
{
m_offset_control = 0x1ff8;
m_offset_seconds = 0x1ff9;
@@ -157,7 +157,7 @@ m48t58_device::m48t58_device(const machine_config &mconfig, const char *tag, dev
}
mk48t08_device::mk48t08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : timekeeper_device(mconfig, MK48T08, "MK48T08 Timekeeper", tag, owner, clock, "m48t08", __FILE__, 0x2000)
+ : timekeeper_device(mconfig, MK48T08, tag, owner, clock, 0x2000)
{
m_offset_control = 0x1ff8;
m_offset_seconds = 0x1ff9;
@@ -172,7 +172,7 @@ mk48t08_device::mk48t08_device(const machine_config &mconfig, const char *tag, d
}
mk48t12_device::mk48t12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : timekeeper_device(mconfig, MK48T12, "MK48T12 Timekeeper", tag, owner, clock, "m48t12", __FILE__, 0x2000)
+ : timekeeper_device(mconfig, MK48T12, tag, owner, clock, 0x2000)
{
m_offset_control = 0x7f8;
m_offset_seconds = 0x7f9;
diff --git a/src/devices/machine/timekpr.h b/src/devices/machine/timekpr.h
index 87fb03d1771..63e2e3374ce 100644
--- a/src/devices/machine/timekpr.h
+++ b/src/devices/machine/timekpr.h
@@ -14,10 +14,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_TIMEKPR_H
+#define MAME_MACHINE_TIMEKPR_H
-#ifndef __TIMEKPR_H__
-#define __TIMEKPR_H__
+#pragma once
@@ -53,18 +53,16 @@
// ======================> timekeeper_device
-class timekeeper_device : public device_t,
- public device_nvram_interface
+class timekeeper_device : public device_t, public device_nvram_interface
{
-protected:
- // construction/destruction
- timekeeper_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int size);
-
public:
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( read );
protected:
+ // construction/destruction
+ timekeeper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int size);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -94,7 +92,7 @@ private:
optional_region_ptr<uint8_t> m_default_data;
protected:
- int m_size;
+ int const m_size;
int m_offset_control;
int m_offset_seconds;
int m_offset_minutes;
@@ -144,11 +142,11 @@ public:
};
// device type definition
-extern const device_type M48T02;
-extern const device_type M48T35;
-extern const device_type M48T37;
-extern const device_type M48T58;
-extern const device_type MK48T08;
-extern const device_type MK48T12;
-
-#endif // __TIMEKPR_H__
+DECLARE_DEVICE_TYPE(M48T02, m48t02_device)
+DECLARE_DEVICE_TYPE(M48T35, m48t35_device)
+DECLARE_DEVICE_TYPE(M48T37, m48t37_device)
+DECLARE_DEVICE_TYPE(M48T58, m48t58_device)
+DECLARE_DEVICE_TYPE(MK48T08, mk48t08_device)
+DECLARE_DEVICE_TYPE(MK48T12, mk48t12_device)
+
+#endif // MAME_MACHINE_TIMEKPR_H
diff --git a/src/devices/machine/tmc0430.cpp b/src/devices/machine/tmc0430.cpp
index d3adcb1a5b1..70b0c5e539e 100644
--- a/src/devices/machine/tmc0430.cpp
+++ b/src/devices/machine/tmc0430.cpp
@@ -104,7 +104,7 @@
Constructor.
*/
tmc0430_device::tmc0430_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TMC0430, "TMC0430 device (GROM)", tag, owner, clock, "grom", __FILE__),
+ : device_t(mconfig, TMC0430, tag, owner, clock),
m_gromready(*this),
m_current_clock_level(CLEAR_LINE),
m_current_ident(0),
@@ -334,7 +334,7 @@ WRITE8_MEMBER( tmc0430_device::write )
DEVICE FUNCTIONS
***************************************************************************/
-void tmc0430_device::device_start(void)
+void tmc0430_device::device_start()
{
m_gromready.resolve_safe();
save_item(NAME(m_current_clock_level));
@@ -348,7 +348,7 @@ void tmc0430_device::device_start(void)
save_item(NAME(m_buffer));
}
-void tmc0430_device::device_reset(void)
+void tmc0430_device::device_reset()
{
// The memory region must be defined in the owning component
m_memptr = owner()->memregion(m_regionname)->base() + m_offset;
@@ -363,4 +363,4 @@ int tmc0430_device::debug_get_address()
return m_address;
}
-const device_type TMC0430 = device_creator<tmc0430_device>;
+DEFINE_DEVICE_TYPE(TMC0430, tmc0430_device, "grom", "TMC0430 GROM")
diff --git a/src/devices/machine/tmc0430.h b/src/devices/machine/tmc0430.h
index f0ae99b8d06..a090ae7b0a6 100644
--- a/src/devices/machine/tmc0430.h
+++ b/src/devices/machine/tmc0430.h
@@ -10,8 +10,10 @@
February 2012: Rewritten as class
***************************************************************************/
-#ifndef __TMC0430__
-#define __TMC0430__
+#ifndef MAME_MACHINE_TMC0430_H
+#define MAME_MACHINE_TMC0430_H
+
+#pragma once
extern const device_type TMC0430;
@@ -31,7 +33,7 @@ class tmc0430_device : public device_t
public:
tmc0430_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_ready_wr_callback(device_t &device, _Object object) { return downcast<tmc0430_device &>(device).m_gromready.set_callback(object); }
+ template <class Object> static devcb_base &set_ready_wr_callback(device_t &device, Object &&cb) { return downcast<tmc0430_device &>(device).m_gromready.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8Z_MEMBER(readz);
DECLARE_WRITE8_MEMBER(write);
@@ -57,8 +59,8 @@ public:
bool idle() { return (m_phase == 0 && m_current_clock_level==CLEAR_LINE); }
protected:
- void device_start(void) override;
- void device_reset(void) override;
+ void device_start() override;
+ void device_reset() override;
private:
// Ready callback. This line is usually connected to the READY pin of the CPU.
@@ -107,8 +109,8 @@ private:
};
#define MCFG_GROM_ADD(_tag, _ident, _region, _offset, _ready) \
- MCFG_DEVICE_ADD(_tag, TMC0430, 0) \
- tmc0430_device::set_region_and_ident(*device, _region, _offset, _ident); \
- tmc0430_device::set_ready_wr_callback(*device, DEVCB_##_ready);
+ MCFG_DEVICE_ADD(_tag, TMC0430, 0) \
+ tmc0430_device::set_region_and_ident(*device, _region, _offset, _ident); \
+ tmc0430_device::set_ready_wr_callback(*device, DEVCB_##_ready);
-#endif
+#endif // MAME_MACHINE_TMC0430_H
diff --git a/src/devices/machine/tmp68301.cpp b/src/devices/machine/tmp68301.cpp
index 3a4f5e47ebf..3f5b22e8bf7 100644
--- a/src/devices/machine/tmp68301.cpp
+++ b/src/devices/machine/tmp68301.cpp
@@ -19,7 +19,7 @@
#include "emu.h"
#include "machine/tmp68301.h"
-const device_type TMP68301 = device_creator<tmp68301_device>;
+DEFINE_DEVICE_TYPE(TMP68301, tmp68301_device, "tmp68301", "Toshiba TMP68301")
static ADDRESS_MAP_START( tmp68301_regs, AS_0, 16, tmp68301_device )
// AM_RANGE(0x000,0x3ff) AM_RAM
@@ -100,7 +100,7 @@ WRITE16_MEMBER(tmp68301_device::pdr_w)
tmp68301_device::tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TMP68301, "TMP68301", tag, owner, clock, "tmp68301", __FILE__),
+ : device_t(mconfig, TMP68301, tag, owner, clock),
device_memory_interface(mconfig, *this),
m_in_parallel_cb(*this),
m_out_parallel_cb(*this),
diff --git a/src/devices/machine/tmp68301.h b/src/devices/machine/tmp68301.h
index 7d83089e94c..facb06a9e65 100644
--- a/src/devices/machine/tmp68301.h
+++ b/src/devices/machine/tmp68301.h
@@ -1,18 +1,20 @@
// license:BSD-3-Clause
// copyright-holders:Luca Elia
-#ifndef TMP68301_H
-#define TMP68301_H
+#ifndef MAME_MACHINE_TMP68301_H
+#define MAME_MACHINE_TMP68301_H
+
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
/* TODO: serial ports, frequency & hook it up with m68k */
-#define MCFG_TMP68301_IN_PARALLEL_CB(_devcb) \
- devcb = &tmp68301_device::set_in_parallel_callback(*device, DEVCB_##_devcb);
+#define MCFG_TMP68301_IN_PARALLEL_CB(cb) \
+ devcb = &tmp68301_device::set_in_parallel_callback(*device, (DEVCB_##cb));
-#define MCFG_TMP68301_OUT_PARALLEL_CB(_devcb) \
- devcb = &tmp68301_device::set_out_parallel_callback(*device, DEVCB_##_devcb);
+#define MCFG_TMP68301_OUT_PARALLEL_CB(cb) \
+ devcb = &tmp68301_device::set_out_parallel_callback(*device, (DEVCB_##cb));
//**************************************************************************
@@ -26,10 +28,9 @@ class tmp68301_device : public device_t,
{
public:
tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~tmp68301_device() {}
- template<class _Object> static devcb_base &set_in_parallel_callback(device_t &device, _Object object) { return downcast<tmp68301_device &>(device).m_in_parallel_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_parallel_callback(device_t &device, _Object object) { return downcast<tmp68301_device &>(device).m_out_parallel_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_parallel_callback(device_t &device, Object &&cb) { return downcast<tmp68301_device &>(device).m_in_parallel_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_parallel_callback(device_t &device, Object &&cb) { return downcast<tmp68301_device &>(device).m_out_parallel_cb.set_callback(std::forward<Object>(cb)); }
// Hardware Registers
DECLARE_READ16_MEMBER( regs_r );
@@ -52,13 +53,21 @@ public:
DECLARE_WRITE16_MEMBER(pdir_w);
IRQ_CALLBACK_MEMBER(irq_callback);
+
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
private:
+ TIMER_CALLBACK_MEMBER( timer_callback );
+ void update_timer( int i );
+ void update_irq_state();
+
+ inline uint16_t read_word(offs_t address);
+ inline void write_word(offs_t address, uint16_t data);
+
devcb_read16 m_in_parallel_cb;
devcb_write16 m_out_parallel_cb;
@@ -70,21 +79,15 @@ private:
uint16_t m_irq_vector[8];
- TIMER_CALLBACK_MEMBER( timer_callback );
- void update_timer( int i );
- void update_irq_state();
-
uint16_t m_imr;
uint16_t m_iisr;
uint16_t m_scr;
uint16_t m_pdir;
uint16_t m_pdr;
- inline uint16_t read_word(offs_t address);
- inline void write_word(offs_t address, uint16_t data);
const address_space_config m_space_config;
};
-extern const device_type TMP68301;
+DECLARE_DEVICE_TYPE(TMP68301, tmp68301_device)
-#endif
+#endif // MAME_MACHINE_TMP68301_H
diff --git a/src/devices/machine/tms1024.cpp b/src/devices/machine/tms1024.cpp
index c3447a0f5a4..596699cef69 100644
--- a/src/devices/machine/tms1024.cpp
+++ b/src/devices/machine/tms1024.cpp
@@ -17,27 +17,28 @@
#include "machine/tms1024.h"
-const device_type TMS1024 = device_creator<tms1024_device>;
-const device_type TMS1025 = device_creator<tms1025_device>;
+DEFINE_DEVICE_TYPE(TMS1024, tms1024_device, "tms1024", "TMS1024 I/O Expander")
+DEFINE_DEVICE_TYPE(TMS1025, tms1025_device, "tms1025", "TMS1025 I/O Expander")
//-------------------------------------------------
// constructor
//-------------------------------------------------
-tms1024_device::tms1024_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source), m_h(0), m_s(0), m_std(0), m_ms(0),
- m_read_port{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}},
- m_write_port{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}}
+tms1024_device::tms1024_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_h(0), m_s(0), m_std(0), m_ms(0)
+ , m_read_port{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}}
+ , m_write_port{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}}
{
}
tms1024_device::tms1024_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1024_device(mconfig, TMS1024, "TMS1024 I/O Expander", tag, owner, clock, "tms1024", __FILE__)
+ : tms1024_device(mconfig, TMS1024, tag, owner, clock)
{
}
tms1025_device::tms1025_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms1024_device(mconfig, TMS1025, "TMS1025 I/O Expander", tag, owner, clock, "tms1025", __FILE__)
+ : tms1024_device(mconfig, TMS1025, tag, owner, clock)
{
}
@@ -107,8 +108,8 @@ WRITE_LINE_MEMBER(tms1024_device::write_std)
else
{
// reset all ports
- for (int i = TMS1025_PORT1; i <= TMS1025_PORT7; i++)
- (m_write_port[i])((offs_t)(i), 0);
+ for (int i = PORT1; i <= PORT7; i++)
+ (m_write_port[i])(offs_t(i), 0);
}
}
diff --git a/src/devices/machine/tms1024.h b/src/devices/machine/tms1024.h
index 89f6139a786..fec6685c42d 100644
--- a/src/devices/machine/tms1024.h
+++ b/src/devices/machine/tms1024.h
@@ -6,8 +6,10 @@
*/
-#ifndef _TMS1024_H_
-#define _TMS1024_H_
+#ifndef MAME_MACHINE_TMS1024_H
+#define MAME_MACHINE_TMS1024_H
+
+#pragma once
@@ -15,22 +17,10 @@
// 4-bit ports (3210 = DCBA)
// valid ports: 4-7 for TMS1024, 1-7 for TMS1025
-#define MCFG_TMS1025_READ_PORT_CB(X, _devcb) \
- devcb = &tms1024_device::set_read_port_callback(*device, X, DEVCB_##_devcb);
-#define MCFG_TMS1025_WRITE_PORT_CB(X, _devcb) \
- devcb = &tms1024_device::set_write_port_callback(*device, X, DEVCB_##_devcb);
-
-enum
-{
- TMS1025_PORT1 = 0,
- TMS1025_PORT2,
- TMS1025_PORT3,
- TMS1025_PORT4,
- TMS1025_PORT5,
- TMS1025_PORT6,
- TMS1025_PORT7
-};
-
+#define MCFG_TMS1025_READ_PORT_CB(X, cb) \
+ devcb = &tms1024_device::set_read_port_callback<(tms1024_device::X)>(*device, (DEVCB_##cb));
+#define MCFG_TMS1025_WRITE_PORT_CB(X, cb) \
+ devcb = &tms1024_device::set_write_port_callback<(tms1024_device::X)>(*device, (DEVCB_##cb));
// pinout reference
@@ -65,19 +55,27 @@ enum
class tms1024_device : public device_t
{
public:
+ enum
+ {
+ PORT1 = 0,
+ PORT2,
+ PORT3,
+ PORT4,
+ PORT5,
+ PORT6,
+ PORT7
+ };
+
tms1024_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- tms1024_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);
// static configuration helpers
- template<class _Object> static devcb_base &set_read_port_callback(device_t &device, int port, _Object &&object)
+ template <unsigned N, class Object> static devcb_base &set_read_port_callback(device_t &device, Object &&cb)
{
- assert(port >= TMS1025_PORT1 && port <= TMS1025_PORT7);
- return downcast<tms1024_device &>(device).m_read_port[port].set_callback(std::forward<_Object>(object));
+ return downcast<tms1024_device &>(device).m_read_port[N].set_callback(std::forward<Object>(cb));
}
- template<class _Object> static devcb_base &set_write_port_callback(device_t &device, int port, _Object &&object)
+ template <unsigned N, class Object> static devcb_base &set_write_port_callback(device_t &device, Object &&cb)
{
- assert(port >= TMS1025_PORT1 && port <= TMS1025_PORT7);
- return downcast<tms1024_device &>(device).m_write_port[port].set_callback(std::forward<_Object>(object));
+ return downcast<tms1024_device &>(device).m_write_port[N].set_callback(std::forward<Object>(cb));
}
DECLARE_WRITE8_MEMBER(write_h);
@@ -87,6 +85,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(write_ms);
protected:
+ tms1024_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
// device-level overrides
virtual void device_start() override;
@@ -109,8 +109,7 @@ public:
-extern const device_type TMS1024;
-extern const device_type TMS1025;
-
+DECLARE_DEVICE_TYPE(TMS1024, tms1024_device)
+DECLARE_DEVICE_TYPE(TMS1025, tms1025_device)
-#endif /* _TMS1024_H_ */
+#endif // MAME_MACHINE_TMS1024_H
diff --git a/src/devices/machine/tms5501.cpp b/src/devices/machine/tms5501.cpp
index 70e9ab0ebb8..d5c75012e7c 100644
--- a/src/devices/machine/tms5501.cpp
+++ b/src/devices/machine/tms5501.cpp
@@ -27,7 +27,7 @@ const uint8_t tms5501_device::rst_vector[] = { 0xc7, 0xcf, 0xd7, 0xdf, 0xe7, 0xe
//**************************************************************************
// device type definition
-const device_type TMS5501 = device_creator<tms5501_device>;
+DEFINE_DEVICE_TYPE(TMS5501, tms5501_device, "tms5501", "TMS5501 Multifunction I/O")
// I/O address map
@@ -55,7 +55,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
tms5501_device::tms5501_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, TMS5501, "TMS5501", tag, owner, clock, "tms5501", __FILE__),
+ device_t(mconfig, TMS5501, tag, owner, clock),
device_serial_interface(mconfig, *this),
m_write_irq(*this),
m_write_xmt(*this),
diff --git a/src/devices/machine/tms5501.h b/src/devices/machine/tms5501.h
index 746082f07a5..b403b32b43d 100644
--- a/src/devices/machine/tms5501.h
+++ b/src/devices/machine/tms5501.h
@@ -29,10 +29,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_TMS5501_H
+#define MAME_MACHINE_TMS5501_H
-#ifndef __TMS5501__
-#define __TMS5501__
+#pragma once
@@ -68,10 +68,10 @@ public:
// construction/destruction
tms5501_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<tms5501_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_xmt_wr_callback(device_t &device, _Object object) { return downcast<tms5501_device &>(device).m_write_xmt.set_callback(object); }
- template<class _Object> static devcb_base &set_xi_rd_callback(device_t &device, _Object object) { return downcast<tms5501_device &>(device).m_read_xi.set_callback(object); }
- template<class _Object> static devcb_base &set_xo_wr_callback(device_t &device, _Object object) { return downcast<tms5501_device &>(device).m_write_xo.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<tms5501_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_xmt_wr_callback(device_t &device, Object &&cb) { return downcast<tms5501_device &>(device).m_write_xmt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_xi_rd_callback(device_t &device, Object &&cb) { return downcast<tms5501_device &>(device).m_read_xi.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_xo_wr_callback(device_t &device, Object &&cb) { return downcast<tms5501_device &>(device).m_write_xo.set_callback(std::forward<Object>(cb)); }
virtual DECLARE_ADDRESS_MAP(io_map, 8);
@@ -188,7 +188,6 @@ private:
// device type definition
extern const device_type TMS5501;
+DECLARE_DEVICE_TYPE(TMS5501, tms5501_device)
-
-
-#endif
+#endif // MAME_MACHINE_TMS5501_H
diff --git a/src/devices/machine/tms6100.cpp b/src/devices/machine/tms6100.cpp
index 2ffc32d1638..d2fb40cef36 100644
--- a/src/devices/machine/tms6100.cpp
+++ b/src/devices/machine/tms6100.cpp
@@ -26,28 +26,26 @@
// device definitions
-const device_type TMS6100 = device_creator<tms6100_device>;
+DEFINE_DEVICE_TYPE(TMS6100, tms6100_device, "tms6100", "TMS6100 VSM")
+DEFINE_DEVICE_TYPE(M58819, m58819_device, "m58819s", "M68819S")
-tms6100_device::tms6100_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_rom(*this, DEVICE_SELF),
- m_reverse_bits(false),
- m_4bit_mode(false)
+
+tms6100_device::tms6100_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_rom(*this, DEVICE_SELF)
+ , m_reverse_bits(false)
+ , m_4bit_mode(false)
{
}
tms6100_device::tms6100_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : device_t(mconfig, TMS6100, "TMS6100", tag, owner, clock, "tms6100", __FILE__),
- m_rom(*this, DEVICE_SELF),
- m_reverse_bits(false),
- m_4bit_mode(false)
+ : tms6100_device(mconfig, TMS6100, tag, owner, clock)
{
}
-const device_type M58819 = device_creator<m58819_device>;
m58819_device::m58819_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms6100_device(mconfig, M58819, "M58819S", tag, owner, clock, "m58819s", __FILE__)
+ : tms6100_device(mconfig, M58819, tag, owner, clock)
{
}
diff --git a/src/devices/machine/tms6100.h b/src/devices/machine/tms6100.h
index 6e9de083875..ec1f3b9817c 100644
--- a/src/devices/machine/tms6100.h
+++ b/src/devices/machine/tms6100.h
@@ -6,8 +6,10 @@
***********************************************************************************************/
-#ifndef __TMS6100_H__
-#define __TMS6100_H__
+#ifndef MAME_MACHINE_TMS6100_H
+#define MAME_MACHINE_TMS6100_H
+
+#pragma once
@@ -19,7 +21,7 @@
// note: in 4-bit mode, use data_r, otherwise use data_line_r
#define MCFG_TMS6100_4BIT_MODE() \
- tms6100_device::enable_4bit_mode(*device);
+ tms6100_device::enable_4bit_mode(*device);
// pinout reference
@@ -94,7 +96,6 @@ class tms6100_device : public device_t
{
public:
tms6100_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- tms6100_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);
static void enable_4bit_mode(device_t &device) { downcast<tms6100_device &>(device).m_4bit_mode = true; }
@@ -109,6 +110,8 @@ public:
DECLARE_READ_LINE_MEMBER(data_line_r);
protected:
+ tms6100_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
// device-level overrides
virtual void device_start() override;
@@ -147,8 +150,7 @@ protected:
};
-extern const device_type TMS6100;
-extern const device_type M58819;
-
+DECLARE_DEVICE_TYPE(TMS6100, tms6100_device)
+DECLARE_DEVICE_TYPE(M58819, m58819_device)
-#endif /* __TMS6100_H__ */
+#endif // MAME_MACHINE_TMS6100_H
diff --git a/src/devices/machine/tms9901.cpp b/src/devices/machine/tms9901.cpp
index c27d790d375..b0d557b3abf 100644
--- a/src/devices/machine/tms9901.cpp
+++ b/src/devices/machine/tms9901.cpp
@@ -119,40 +119,31 @@ TODO: Tests on a real machine
*****************************************************************************/
-#include <math.h>
#include "emu.h"
-
#include "tms9901.h"
-/*
- Debugging flags.
-*/
-#define TRACE_PINS 0
-#define TRACE_CLOCK 0
-#define TRACE_MODE 0
+#include <math.h>
+
+#define LOG_GENERAL (1U << 0)
+#define LOG_PINS (1U << 1)
+#define LOG_CLOCK (1U << 2)
+#define LOG_MODE (1U << 3)
+
+//#define VERBOSE (LOG_PINS | LOG_CLOCK | LOG_MODE)
+#include "logmacro.h"
+
+#define LOGPINS(...) LOGMASKED(LOG_PINS, __VA_ARGS__)
+#define LOGCLOCK(...) LOGMASKED(LOG_CLOCK, __VA_ARGS__)
+#define LOGMODE(...) LOGMASKED(LOG_MODE, __VA_ARGS__)
+
/*
Constructor
*/
tms9901_device::tms9901_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: device_t(mconfig, TMS9901, "TMS9901 Programmable System Interface", tag, owner, clock, "tms9901", __FILE__),
+: device_t(mconfig, TMS9901, tag, owner, clock),
m_read_block(*this),
- m_write_p0(*this),
- m_write_p1(*this),
- m_write_p2(*this),
- m_write_p3(*this),
- m_write_p4(*this),
- m_write_p5(*this),
- m_write_p6(*this),
- m_write_p7(*this),
- m_write_p8(*this),
- m_write_p9(*this),
- m_write_p10(*this),
- m_write_p11(*this),
- m_write_p12(*this),
- m_write_p13(*this),
- m_write_p14(*this),
- m_write_p15(*this),
+ m_write_p{{*this},{*this},{*this},{*this},{*this},{*this},{*this},{*this},{*this},{*this},{*this},{*this},{*this},{*this},{*this},{*this}},
m_interrupt(*this)
{
}
@@ -160,7 +151,7 @@ tms9901_device::tms9901_device(const machine_config &mconfig, const char *tag, d
/*
should be called after any change to int_state or enabled_ints.
*/
-void tms9901_device::field_interrupts(void)
+void tms9901_device::field_interrupts()
{
int current_ints;
@@ -171,13 +162,13 @@ void tms9901_device::field_interrupts(void)
// if timer is enabled, INT3 pin is overridden by timer
if (m_timer_int_pending)
{
- if (TRACE_CLOCK) logerror("%s: timer fires\n", tag());
- current_ints |= TMS9901_INT3;
+ LOGCLOCK("timer fires\n");
+ current_ints |= INT3;
}
else
{
- if (TRACE_CLOCK) logerror("%s: timer clear\n", tag());
- current_ints &= ~TMS9901_INT3;
+ LOGCLOCK("timer clear\n");
+ current_ints &= ~INT3;
}
}
@@ -241,7 +232,7 @@ void tms9901_device::set_single_int(int pin_number, int state)
/*
load the content of m_clock_register into the decrementer
*/
-void tms9901_device::timer_reload(void)
+void tms9901_device::timer_reload()
{
if (m_clock_register != 0)
{ /* reset clock interval */
@@ -292,7 +283,7 @@ READ8_MEMBER( tms9901_device::read )
// INTx levels that have been signaled via the set_single_int method.
// This may mean that those levels must be latched by the callee.
if (!m_read_block.isnull())
- answer |= m_read_block(TMS9901_CB_INT7);
+ answer |= m_read_block(CB_INT7);
// Remove the bits that are set as outputs (can only be INT7*)
answer &= ~m_pio_direction_mirror;
@@ -300,7 +291,7 @@ READ8_MEMBER( tms9901_device::read )
// Set those bits here
answer |= (m_pio_output_mirror & m_pio_direction_mirror) & 0xFF;
}
- if (TRACE_PINS) logerror("%s: input on lines INT7..CB = %02x\n", tag(), answer);
+ LOGPINS("input on lines INT7..CB = %02x\n", answer);
break;
case 1:
if (m_clock_mode)
@@ -314,13 +305,13 @@ READ8_MEMBER( tms9901_device::read )
{
// See above concerning the INT levels.
if (!m_read_block.isnull())
- answer |= m_read_block(TMS9901_INT8_INT15);
+ answer |= m_read_block(INT8_INT15);
// Remove the bits that are set as outputs (can be any line)
answer &= ~(m_pio_direction_mirror >> 8);
answer |= (m_pio_output_mirror & m_pio_direction_mirror) >> 8;
}
- if (TRACE_PINS) logerror("%s: input on lines INT15..int8_t = %02x\n", tag(), answer);
+ LOGPINS("input on lines INT15..int8_t = %02x\n", answer);
break;
case 2:
/* exit timer mode */
@@ -328,26 +319,26 @@ READ8_MEMBER( tms9901_device::read )
// m_clock_mode = false;
if (!m_read_block.isnull())
- answer = m_read_block(TMS9901_P0_P7);
+ answer = m_read_block(P0_P7);
else
answer = 0;
answer &= ~m_pio_direction;
answer |= (m_pio_output & m_pio_direction) & 0xFF;
- if (TRACE_PINS) logerror("%s: input on lines P7..P0 = %02x\n", tag(), answer);
+ LOGPINS("input on lines P7..P0 = %02x\n", answer);
break;
case 3:
// MZ: see above
// m_clock_mode = false;
if (!m_read_block.isnull())
- answer = m_read_block(TMS9901_P8_P15);
+ answer = m_read_block(P8_P15);
else
answer = 0;
answer &= ~(m_pio_direction >> 8);
answer |= (m_pio_output & m_pio_direction) >> 8;
- if (TRACE_PINS) logerror("%s: input on lines P15..P8 = %02x\n", tag(), answer);
+ LOGPINS("input on lines P15..P8 = %02x\n", answer);
break;
}
@@ -376,7 +367,7 @@ WRITE8_MEMBER ( tms9901_device::write )
if (offset >= 0x10)
{
int pin = offset & 0x0F;
- if (TRACE_PINS) logerror("%s: output on P%d = %d\n", tag(), pin, data);
+ LOGPINS("output on P%d = %d\n", pin, data);
int bit = (1 << pin);
@@ -408,74 +399,21 @@ WRITE8_MEMBER ( tms9901_device::write )
m_pio_output_mirror &= ~mirror_bit;
}
- switch (offset)
- {
- case 0x10:
- if (!m_write_p0.isnull()) m_write_p0(data);
- break;
- case 0x11:
- if (!m_write_p1.isnull()) m_write_p1(data);
- break;
- case 0x12:
- if (!m_write_p2.isnull()) m_write_p2(data);
- break;
- case 0x13:
- if (!m_write_p3.isnull()) m_write_p3(data);
- break;
- case 0x14:
- if (!m_write_p4.isnull()) m_write_p4(data);
- break;
- case 0x15:
- if (!m_write_p5.isnull()) m_write_p5(data);
- break;
- case 0x16:
- if (!m_write_p6.isnull()) m_write_p6(data);
- break;
- case 0x17:
- if (!m_write_p7.isnull()) m_write_p7(data);
- break;
- case 0x18:
- if (!m_write_p8.isnull()) m_write_p8(data);
- break;
- case 0x19:
- if (!m_write_p9.isnull()) m_write_p9(data);
- break;
- case 0x1A:
- if (!m_write_p10.isnull()) m_write_p10(data);
- break;
- case 0x1B:
- if (!m_write_p11.isnull()) m_write_p11(data);
- break;
- case 0x1C:
- if (!m_write_p12.isnull()) m_write_p12(data);
- break;
- case 0x1D:
- if (!m_write_p13.isnull()) m_write_p13(data);
- break;
- case 0x1E:
- if (!m_write_p14.isnull()) m_write_p14(data);
- break;
- case 0x1F:
- if (!m_write_p15.isnull()) m_write_p15(data);
- break;
-
- }
- return;
+ m_write_p[offset - 0x10](data);
}
-
- if (offset == 0)
+ else if (offset == 0)
{
// Write to control bit (CB)
if (data == 0)
{
// Switch to interrupt mode; quit clock mode
m_clock_mode = false;
- if (TRACE_MODE) logerror("%s: int mode\n", tag());
+ LOGMODE("int mode\n");
}
else
{
m_clock_mode = true;
- if (TRACE_MODE) logerror("%s: clock mode\n", tag());
+ LOGMODE("clock mode\n");
// we are switching to clock mode: latch the current value of
// the decrementer register
if (m_clock_register != 0)
@@ -484,73 +422,70 @@ WRITE8_MEMBER ( tms9901_device::write )
m_clock_read_register = 0; /* timer inactive... */
}
}
- else
+ else if (offset == 0x0f)
{
- if (offset == 0x0f)
- {
- if (m_clock_mode)
- { /* in clock mode this is the soft reset bit */
- if (!data)
- { // TMS9901 soft reset (RST2*)
- // Spec: "Writing a 0 to bit 15 while in the clock mode executes a soft reset on the I/O pins.
- // [...] RST2* will program all ports to the input mode"
- m_pio_direction = 0;
- m_pio_direction_mirror = 0;
-
- // "RST1* (power-up reset) will reset all mask bits low."
- // Spec is not clear on whether the mask bits are also reset by RST2*
- // TODO: Check on a real machine. (I'd guess from the text they are not touched)
- m_enabled_ints = 0;
- if (TRACE_MODE) logerror("%s: Soft reset (RST2*)\n", tag());
- }
- }
- else
- { /* modify interrupt enable mask */
- if (data)
- m_enabled_ints |= 0x4000; /* set bit */
- else
- m_enabled_ints &= ~0x4000; /* unset bit */
-
- if (TRACE_PINS) logerror("%s: interrupts = %04x\n", tag(), m_enabled_ints);
- field_interrupts(); /* changed interrupt state */
+ if (m_clock_mode)
+ { /* in clock mode this is the soft reset bit */
+ if (!data)
+ { // TMS9901 soft reset (RST2*)
+ // Spec: "Writing a 0 to bit 15 while in the clock mode executes a soft reset on the I/O pins.
+ // [...] RST2* will program all ports to the input mode"
+ m_pio_direction = 0;
+ m_pio_direction_mirror = 0;
+
+ // "RST1* (power-up reset) will reset all mask bits low."
+ // Spec is not clear on whether the mask bits are also reset by RST2*
+ // TODO: Check on a real machine. (I'd guess from the text they are not touched)
+ m_enabled_ints = 0;
+ LOGMODE("Soft reset (RST2*)\n");
}
}
else
- {
- // write one bit to 9901 (bits 1-14)
- //
- // m_clock_mode==false ? Disable/Enable an interrupt
- // : Bit in clock interval
- //
- // offset is the index of the modified bit of register (-> interrupt number -1)
- if (m_clock_mode)
- { /* modify clock interval */
- int bit = 1 << ((offset & 0x0F) - 1); /* corresponding mask */
-
- if (data)
- m_clock_register |= bit; /* set bit */
- else
- m_clock_register &= ~bit; /* clear bit */
-
- /* reset clock timer (page 8) */
- if (TRACE_CLOCK) logerror("%s: clock register = %04x\n", tag(), m_clock_register);
- timer_reload();
- }
+ { /* modify interrupt enable mask */
+ if (data)
+ m_enabled_ints |= 0x4000; /* set bit */
+ else
+ m_enabled_ints &= ~0x4000; /* unset bit */
+
+ LOGMODE("interrupts = %04x\n", m_enabled_ints);
+ field_interrupts(); /* changed interrupt state */
+ }
+ }
+ else
+ {
+ // write one bit to 9901 (bits 1-14)
+ //
+ // m_clock_mode==false ? Disable/Enable an interrupt
+ // : Bit in clock interval
+ //
+ // offset is the index of the modified bit of register (-> interrupt number -1)
+ if (m_clock_mode)
+ { /* modify clock interval */
+ int bit = 1 << ((offset & 0x0F) - 1); /* corresponding mask */
+
+ if (data)
+ m_clock_register |= bit; /* set bit */
else
- { /* modify interrupt enable mask */
- int bit = 1 << (offset & 0x0F); /* corresponding mask */
+ m_clock_register &= ~bit; /* clear bit */
- if (data)
- m_enabled_ints |= bit; /* set bit */
- else
- m_enabled_ints &= ~bit; /* unset bit */
+ /* reset clock timer (page 8) */
+ LOGCLOCK("clock register = %04x\n", m_clock_register);
+ timer_reload();
+ }
+ else
+ { /* modify interrupt enable mask */
+ int bit = 1 << (offset & 0x0F); /* corresponding mask */
- if (offset == 3)
- m_timer_int_pending = false; /* SBO 3 clears pending timer interrupt (??) */
+ if (data)
+ m_enabled_ints |= bit; /* set bit */
+ else
+ m_enabled_ints &= ~bit; /* unset bit */
- if (TRACE_MODE) logerror("%s: enabled interrupts = %04x\n", tag(), m_enabled_ints);
- field_interrupts(); /* changed interrupt state */
- }
+ if (offset == 3)
+ m_timer_int_pending = false; /* SBO 3 clears pending timer interrupt (??) */
+
+ LOGMODE("enabled interrupts = %04x\n");
+ field_interrupts(); /* changed interrupt state */
}
}
}
@@ -566,7 +501,7 @@ void tms9901_device::device_timer(emu_timer &timer, device_timer_id id, int para
if (id==DECREMENTER) // we have only that one
{
m_decrementer_value--;
- if (TRACE_CLOCK) logerror("%s: decrementer = %d\n", tag(), m_decrementer_value);
+ LOGCLOCK("decrementer = %d\n", m_decrementer_value);
if (m_decrementer_value<=0)
{
m_timer_int_pending = true; // decrementer interrupt requested
@@ -580,7 +515,7 @@ void tms9901_device::device_timer(emu_timer &timer, device_timer_id id, int para
device_stop - device-specific stop
-------------------------------------------------*/
-void tms9901_device::device_stop(void)
+void tms9901_device::device_stop()
{
}
@@ -588,7 +523,7 @@ void tms9901_device::device_stop(void)
device_reset - device-specific reset
-------------------------------------------------*/
-void tms9901_device::device_reset(void)
+void tms9901_device::device_reset()
{
do_reset();
}
@@ -628,29 +563,15 @@ void tms9901_device::do_reset()
device_start - device-specific startup
-------------------------------------------------*/
-void tms9901_device::device_start(void)
+void tms9901_device::device_start()
{
m_decrementer = timer_alloc(DECREMENTER);
m_decrementer->adjust(attotime::from_hz(clock() / 64.), 0, attotime::from_hz(clock() / 64.));
m_decrementer->enable(false);
m_read_block.resolve();
- m_write_p0.resolve();
- m_write_p1.resolve();
- m_write_p2.resolve();
- m_write_p3.resolve();
- m_write_p4.resolve();
- m_write_p5.resolve();
- m_write_p6.resolve();
- m_write_p7.resolve();
- m_write_p8.resolve();
- m_write_p9.resolve();
- m_write_p10.resolve();
- m_write_p11.resolve();
- m_write_p12.resolve();
- m_write_p13.resolve();
- m_write_p14.resolve();
- m_write_p15.resolve();
+ for (auto &cb : m_write_p)
+ cb.resolve_safe();
m_interrupt.resolve();
m_clock_register = 0;
@@ -670,4 +591,4 @@ void tms9901_device::device_start(void)
save_item(NAME(m_clock_read_register));
}
-const device_type TMS9901 = device_creator<tms9901_device>;
+DEFINE_DEVICE_TYPE(TMS9901, tms9901_device, "tms9901", "TMS9901 Programmable System Interface")
diff --git a/src/devices/machine/tms9901.h b/src/devices/machine/tms9901.h
index 1ec5d3287c4..f83e8ad6e22 100644
--- a/src/devices/machine/tms9901.h
+++ b/src/devices/machine/tms9901.h
@@ -12,8 +12,8 @@
*****************************************************************************/
-#ifndef __TMS9901_H__
-#define __TMS9901_H__
+#ifndef MAME_MACHINE_TMS9901_H
+#define MAME_MACHINE_TMS9901_H
extern const device_type TMS9901;
@@ -22,32 +22,6 @@ extern const device_type TMS9901;
MACROS
***************************************************************************/
-// Masks for the interrupts levels available on TMS9901
-
-#define TMS9901_INT1 0x0002
-#define TMS9901_INT2 0x0004
-#define TMS9901_INT3 0x0008 // overridden by the timer interrupt
-#define TMS9901_INT4 0x0010
-#define TMS9901_INT5 0x0020
-#define TMS9901_INT6 0x0040
-#define TMS9901_INT7 0x0080
-#define TMS9901_INT8 0x0100
-#define TMS9901_INT9 0x0200
-#define TMS9901_INTA 0x0400
-#define TMS9901_INTB 0x0800
-#define TMS9901_INTC 0x1000
-#define TMS9901_INTD 0x2000
-#define TMS9901_INTE 0x4000
-#define TMS9901_INTF 0x8000
-
-enum
-{
- TMS9901_CB_INT7 = 0,
- TMS9901_INT8_INT15 = 1,
- TMS9901_P0_P7 = 2,
- TMS9901_P8_P15 = 3
-};
-
/***************************************************************************
CLASS DEFINITION
***************************************************************************/
@@ -55,6 +29,31 @@ enum
class tms9901_device : public device_t
{
public:
+ // Masks for the interrupts levels available on TMS9901
+ static constexpr int INT1 = 0x0002;
+ static constexpr int INT2 = 0x0004;
+ static constexpr int INT3 = 0x0008; // overridden by the timer interrupt
+ static constexpr int INT4 = 0x0010;
+ static constexpr int INT5 = 0x0020;
+ static constexpr int INT6 = 0x0040;
+ static constexpr int INT7 = 0x0080;
+ static constexpr int INT8 = 0x0100;
+ static constexpr int INT9 = 0x0200;
+ static constexpr int INTA = 0x0400;
+ static constexpr int INTB = 0x0800;
+ static constexpr int INTC = 0x1000;
+ static constexpr int INTD = 0x2000;
+ static constexpr int INTE = 0x4000;
+ static constexpr int INTF = 0x8000;
+
+ enum
+ {
+ CB_INT7 = 0,
+ INT8_INT15 = 1,
+ P0_P7 = 2,
+ P8_P15 = 3
+ };
+
tms9901_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void set_single_int(int pin_number, int state);
@@ -64,37 +63,20 @@ public:
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- template<class _Object> static devcb_base &static_set_readblock_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_read_block.set_callback(object); }
-
- template<class _Object> static devcb_base &static_set_p0_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p0.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p1_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p1.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p2_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p2.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p3_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p3.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p4_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p4.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p5_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p5.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p6_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p6.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p7_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p7.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p8_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p8.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p9_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p9.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p10_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p10.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p11_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p11.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p12_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p12.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p13_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p13.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p14_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p14.set_callback(object); }
- template<class _Object> static devcb_base &static_set_p15_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_write_p15.set_callback(object); }
-
- template<class _Object> static devcb_base &static_set_intlevel_callback(device_t &device, _Object object) { return downcast<tms9901_device &>(device).m_interrupt.set_callback(object); }
+ template <class Object> static devcb_base &static_set_readblock_callback(device_t &device, Object &&cb) { return downcast<tms9901_device &>(device).m_read_block.set_callback(std::forward<Object>(cb)); }
+ template <unsigned N, class Object> static devcb_base &static_set_p_callback(device_t &device, Object &&cb) { return downcast<tms9901_device &>(device).m_write_p[N].set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_intlevel_callback(device_t &device, Object &&cb) { return downcast<tms9901_device &>(device).m_interrupt.set_callback(std::forward<Object>(cb)); }
private:
- static const device_timer_id DECREMENTER = 0;
+ static constexpr device_timer_id DECREMENTER = 0;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- void timer_reload(void);
- void field_interrupts(void);
+ void timer_reload();
+ void field_interrupts();
- void device_start(void) override;
- void device_stop(void) override;
- void device_reset(void) override;
+ void device_start() override;
+ void device_stop() override;
+ void device_reset() override;
// Common method for device_reset and rst1_line
void do_reset();
@@ -145,22 +127,7 @@ private:
devcb_read8 m_read_block;
// I/O lines, used for output. When used as inputs, the levels are delivered via the m_read_block
- devcb_write_line m_write_p0;
- devcb_write_line m_write_p1;
- devcb_write_line m_write_p2;
- devcb_write_line m_write_p3;
- devcb_write_line m_write_p4;
- devcb_write_line m_write_p5;
- devcb_write_line m_write_p6;
- devcb_write_line m_write_p7;
- devcb_write_line m_write_p8;
- devcb_write_line m_write_p9;
- devcb_write_line m_write_p10;
- devcb_write_line m_write_p11;
- devcb_write_line m_write_p12;
- devcb_write_line m_write_p13;
- devcb_write_line m_write_p14;
- devcb_write_line m_write_p15;
+ devcb_write_line m_write_p[16];
// The invocation corresponds to the INTREQ signal (with the level passed as data)
// and the address delivers the interrupt level (0-15)
@@ -175,54 +142,54 @@ private:
devcb = &tms9901_device::static_set_readblock_callback( *device, DEVCB_##_read );
#define MCFG_TMS9901_P0_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p0_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<0>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P1_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p1_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<1>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P2_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p2_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<2>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P3_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p3_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<3>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P4_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p4_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<4>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P5_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p5_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<5>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P6_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p6_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<6>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P7_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p7_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<7>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P8_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p8_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<8>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P9_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p9_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<9>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P10_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p10_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<10>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P11_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p11_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<11>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P12_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p12_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<12>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P13_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p13_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<13>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P14_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p14_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<14>( *device, DEVCB_##_write );
#define MCFG_TMS9901_P15_HANDLER( _write ) \
- devcb = &tms9901_device::static_set_p15_callback( *device, DEVCB_##_write );
+ devcb = &tms9901_device::static_set_p_callback<15>( *device, DEVCB_##_write );
#define MCFG_TMS9901_INTLEVEL_HANDLER( _intlevel ) \
devcb = &tms9901_device::static_set_intlevel_callback( *device, DEVCB_##_intlevel );
-#endif /* __TMS9901_H__ */
+#endif // MAME_MACHINE_TMS9901_H
diff --git a/src/devices/machine/tms9902.cpp b/src/devices/machine/tms9902.cpp
index 7e2db622d31..c25ea5eacc1 100644
--- a/src/devices/machine/tms9902.cpp
+++ b/src/devices/machine/tms9902.cpp
@@ -39,15 +39,29 @@
*****************************************************************************/
#include "emu.h"
-#include <math.h>
#include "tms9902.h"
-#define TRACE_LINES 0
-#define TRACE_CRU 0
-#define TRACE_DETAIL 0
-#define TRACE_BUFFER 0
-#define TRACE_ERROR 1
-#define TRACE_SETTING 0
+#include <math.h>
+
+#define LOG_GENERAL (1U << 0)
+#define LOG_LINES (1U << 1)
+#define LOG_CRU (1U << 2)
+#define LOG_DETAIL (1U << 3)
+#define LOG_BUFFER (1U << 4)
+#define LOG_ERROR (1U << 5)
+#define LOG_SETTING (1U << 6)
+
+#define VERBOSE (LOG_ERROR)
+#include "logmacro.h"
+
+#define LOGGENERAL(...) LOGMASKED(LOG_GENERAL, __VA_ARGS__)
+#define LOGLINES(...) LOGMASKED(LOG_LINES, __VA_ARGS__)
+#define LOGCRU(...) LOGMASKED(LOG_CRU, __VA_ARGS__)
+#define LOGDETAIL(...) LOGMASKED(LOG_DETAIL, __VA_ARGS__)
+#define LOGBUFFER(...) LOGMASKED(LOG_BUFFER, __VA_ARGS__)
+#define LOGERROR(...) LOGMASKED(LOG_ERROR, __VA_ARGS__)
+#define LOGSETTING(...) LOGMASKED(LOG_SETTING, __VA_ARGS__)
+
enum
{
@@ -66,11 +80,11 @@ enum
Constructor
*/
tms9902_device::tms9902_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TMS9902, "TMS9902 ACC", tag, owner, clock, "tms9902", __FILE__),
- m_int_cb(*this),
- m_rcv_cb(*this),
- m_xmit_cb(*this),
- m_ctrl_cb(*this)
+ : device_t(mconfig, TMS9902, tag, owner, clock)
+ , m_int_cb(*this)
+ , m_rcv_cb(*this)
+ , m_xmit_cb(*this)
+ , m_ctrl_cb(*this)
{
}
@@ -79,19 +93,19 @@ tms9902_device::tms9902_device(const machine_config &mconfig, const char *tag, d
*/
void tms9902_device::field_interrupts()
{
- bool new_int = (m_DSCH && m_DSCENB)
+ bool const new_int = (m_DSCH && m_DSCENB)
|| (m_RBRL && m_RIENB)
|| (m_XBRE && m_XBIENB)
|| (m_TIMELP && m_TIMENB);
- if (TRACE_DETAIL) logerror("interrupt flags (DSCH = %02x, DSCENB = %02x), (RBRL = %02x, RIENB = %02x), (XBRE = %02x, XBIENB = %02x), (TIMELP = %02x, TIMENB = %02x)\n",
- m_DSCH, m_DSCENB, m_RBRL, m_RIENB, m_XBRE, m_XBIENB, m_TIMELP, m_TIMENB);
+ LOGDETAIL("interrupt flags (DSCH = %02x, DSCENB = %02x), (RBRL = %02x, RIENB = %02x), (XBRE = %02x, XBIENB = %02x), (TIMELP = %02x, TIMENB = %02x)\n",
+ m_DSCH, m_DSCENB, m_RBRL, m_RIENB, m_XBRE, m_XBIENB, m_TIMELP, m_TIMENB);
if (new_int != m_INT)
{
// Only consider edges
m_INT = new_int;
- if (TRACE_LINES) logerror("/INT = %s\n", (m_INT)? "asserted" : "cleared");
- m_int_cb(m_INT? ASSERT_LINE : CLEAR_LINE);
+ LOGLINES("/INT = %s\n", m_INT ? "asserted" : "cleared");
+ m_int_cb(m_INT ? ASSERT_LINE : CLEAR_LINE);
}
}
@@ -106,7 +120,7 @@ void tms9902_device::rcv_cts(line_state state)
// CTSin is an internal register of the TMS9902 with positive logic
m_CTSin = (state==ASSERT_LINE);
- if (TRACE_LINES) logerror("CTS* = %s\n", (state==ASSERT_LINE)? "asserted" : "cleared");
+ LOGLINES("CTS* = %s\n", (state==ASSERT_LINE)? "asserted" : "cleared");
if (m_CTSin != previous)
{
@@ -136,7 +150,7 @@ void tms9902_device::rcv_cts(line_state state)
else
{
m_DSCH = false;
- if (TRACE_LINES) logerror("no change in CTS line, no interrupt.\n");
+ LOGLINES("no change in CTS line, no interrupt.\n");
}
}
@@ -155,7 +169,7 @@ void tms9902_device::set_clock(bool state)
void tms9902_device::rcv_dsr(line_state state)
{
bool previous = m_DSRin;
- if (TRACE_LINES) logerror("DSR* = %s\n", (state==ASSERT_LINE)? "asserted" : "cleared");
+ LOGLINES("DSR* = %s\n", (state==ASSERT_LINE)? "asserted" : "cleared");
m_DSRin = (state==ASSERT_LINE);
if (m_DSRin != previous)
@@ -166,7 +180,7 @@ void tms9902_device::rcv_dsr(line_state state)
else
{
m_DSCH = false;
- if (TRACE_LINES) logerror("no change in DSR line, no interrupt.\n");
+ LOGLINES("no change in DSR line, no interrupt.\n");
}
}
@@ -189,14 +203,14 @@ void tms9902_device::rcv_data(uint8_t data)
// Receive buffer was empty
m_RBRL = true;
m_ROVER = false;
- if (TRACE_BUFFER) logerror("Receive buffer loaded with byte %02x; RIENB=%d\n", data, m_RIENB);
+ LOGBUFFER("Receive buffer loaded with byte %02x; RIENB=%d\n", data, m_RIENB);
field_interrupts();
}
else
{
// Receive buffer was full
m_ROVER = true;
- if (TRACE_ERROR) logerror("Receive buffer still loaded; overflow error\n");
+ LOGERROR("Receive buffer still loaded; overflow error\n");
}
}
@@ -210,7 +224,7 @@ void tms9902_device::rcv_data(uint8_t data)
*/
void tms9902_device::rcv_framing_error()
{
- if (TRACE_ERROR) logerror("Detected framing error\n");
+ LOGERROR("Detected framing error\n");
m_RFER = true;
}
@@ -222,7 +236,7 @@ void tms9902_device::rcv_framing_error()
*/
void tms9902_device::rcv_parity_error()
{
- if (TRACE_ERROR) logerror("Detected parity error\n");
+ LOGERROR("Detected parity error\n");
m_RPER = true;
}
@@ -234,7 +248,7 @@ void tms9902_device::rcv_parity_error()
*/
void tms9902_device::rcv_break(bool value)
{
- if (TRACE_ERROR) logerror("Receive BREAK=%d (no effect)\n", value? 1:0);
+ LOGERROR("Receive BREAK=%d (no effect)\n", value? 1:0);
}
//------------------------------------------------
@@ -297,7 +311,7 @@ void tms9902_device::send_break(bool state)
if (state != m_BRKout)
{
m_BRKout = state;
- if (TRACE_LINES) logerror("Sending BREAK=%d\n", state? 1:0);
+ LOGLINES("Sending BREAK=%d\n", state? 1:0);
// Signal BRK (on/off) to the remote site
m_ctrl_cb((offs_t)(EXCEPT | BRK), state? 1:0);
@@ -329,7 +343,7 @@ double tms9902_device::get_baudpoll()
void tms9902_device::set_receive_data_rate()
{
int value = (m_CLK4M? 0x800 : 0) | (m_RDV8? 0x400 : 0) | m_RDR;
- if (TRACE_SETTING) logerror("receive rate = %04x\n", value);
+ LOGSETTING("receive rate = %04x\n", value);
// Calculate the ratio between receive baud rate and polling frequency
double fint = m_clock_rate / ((m_CLK4M) ? 4.0 : 3.0);
@@ -340,7 +354,7 @@ void tms9902_device::set_receive_data_rate()
// Thus the callback function should add up this value on each poll
// and deliver a data input not before it sums up to 1.
m_baudpoll = (double)(baud / (10*POLLING_FREQ));
- if (TRACE_SETTING) logerror ("baudpoll = %f\n", m_baudpoll);
+ LOGSETTING("baudpoll = %f\n", m_baudpoll);
m_last_config_value = value;
m_ctrl_cb((offs_t)CONFIG, RATERECV);
@@ -353,7 +367,7 @@ void tms9902_device::set_receive_data_rate()
void tms9902_device::set_transmit_data_rate()
{
int value = (m_CLK4M? 0x800 : 0) | (m_XDV8? 0x400 : 0) | m_XDR;
- if (TRACE_SETTING) logerror("set transmit rate = %04x\n", value);
+ LOGSETTING("set transmit rate = %04x\n", value);
m_last_config_value = value;
m_ctrl_cb((offs_t)CONFIG, RATEXMIT);
}
@@ -361,7 +375,7 @@ void tms9902_device::set_transmit_data_rate()
void tms9902_device::set_stop_bits()
{
int value = m_STOPB;
- if (TRACE_SETTING) logerror("set stop bits = %02x\n", value);
+ LOGSETTING("set stop bits = %02x\n", value);
m_last_config_value = value;
m_ctrl_cb((offs_t)CONFIG, STOPBITS);
}
@@ -369,7 +383,7 @@ void tms9902_device::set_stop_bits()
void tms9902_device::set_data_bits()
{
int value = m_RCL;
- if (TRACE_SETTING) logerror("set data bits = %02x\n", value);
+ LOGSETTING("set data bits = %02x\n", value);
m_last_config_value = value;
m_ctrl_cb((offs_t)CONFIG, DATABITS);
}
@@ -377,7 +391,7 @@ void tms9902_device::set_data_bits()
void tms9902_device::set_parity()
{
int value = (m_PENB? 2:0) | (m_ODDP? 1:0);
- if (TRACE_SETTING) logerror("set parity = %02x\n", value);
+ LOGSETTING("set parity = %02x\n", value);
m_last_config_value = value;
m_ctrl_cb((offs_t)CONFIG, PARITY);
}
@@ -386,7 +400,7 @@ void tms9902_device::transmit_line_state()
{
// 00ab cdef = setting line RTS=a, CTS=b, DSR=c, DCD=d, DTR=e, RI=f
// The 9902 only outputs RTS and BRK
- if (TRACE_SETTING) logerror("transmitting line state (only RTS) = %02x\n", (m_RTSout)? 1:0);
+ LOGSETTING("transmitting line state (only RTS) = %02x\n", (m_RTSout)? 1:0);
m_last_config_value = (m_RTSout)? RTS : 0;
m_ctrl_cb((offs_t)(LINES | RTS), RTS);
}
@@ -398,7 +412,7 @@ void tms9902_device::set_rts(line_state state)
if (lstate != m_RTSout)
{
// Signal RTS to the modem
- if (TRACE_SETTING) logerror("Set RTS=%d\n", lstate? 1:0);
+ LOGSETTING("Set RTS=%d\n", lstate? 1:0);
m_RTSout = lstate;
transmit_line_state();
}
@@ -429,7 +443,7 @@ void tms9902_device::initiate_transmit()
field_interrupts();
- if (TRACE_BUFFER) logerror("transmit XSR=%02x, RCL=%02x\n", m_XSR, m_RCL);
+ LOGBUFFER("transmit XSR=%02x, RCL=%02x\n", m_XSR, m_RCL);
m_xmit_cb((offs_t)0, m_XSR & (0xff >> (3-m_RCL)));
@@ -502,11 +516,11 @@ READ8_MEMBER( tms9902_device::cruread )
break;
case 0: // Bits 7-0
- if (TRACE_CRU) logerror("Reading received byte = %02x\n", m_RBR);
+ LOGCRU("Reading received byte = %02x\n", m_RBR);
answer = m_RBR;
break;
}
- if (TRACE_CRU && TRACE_DETAIL) logerror("Reading flag bits %d - %d = %02x\n", ((offset+1)*8-1), offset*8, answer);
+ if (VERBOSE & LOG_DETAIL) LOGCRU("Reading flag bits %d - %d = %02x\n", ((offset+1)*8-1), offset*8, answer);
return answer;
}
@@ -586,7 +600,7 @@ WRITE8_MEMBER( tms9902_device::cruwrite )
data &= 1; /* clear extra bits */
offset &= 0x1F;
- if (TRACE_CRU && TRACE_DETAIL) logerror("Setting bit %d = %02x\n", offset, data);
+ if (VERBOSE & LOG_DETAIL) LOGCRU("Setting bit %d = %02x\n", offset, data);
if (offset <= 10)
{
@@ -750,7 +764,7 @@ WRITE8_MEMBER( tms9902_device::cruwrite )
}
return;
case 17:
- if (TRACE_CRU) logerror("set BRKON=%d; BRK=%d\n", data, m_BRKout? 1:0);
+ LOGCRU("set BRKON=%d; BRK=%d\n", data, m_BRKout? 1:0);
m_BRKON = (data!=0);
if (m_BRKout && data==0)
{
@@ -778,13 +792,13 @@ WRITE8_MEMBER( tms9902_device::cruwrite )
// (the only way to clear the flag!)
m_RIENB = (data!=0);
m_RBRL = false;
- if (TRACE_CRU) logerror("Set RBRL=0, set RIENB=%d\n", data);
+ LOGCRU("Set RBRL=0, set RIENB=%d\n", data);
field_interrupts();
return;
case 19:
/* Transmit Buffer Interrupt Enable */
m_XBIENB = (data!=0);
- if (TRACE_CRU) logerror("set XBIENB=%d\n", data);
+ LOGCRU("set XBIENB=%d\n", data);
field_interrupts();
return;
case 20:
@@ -798,7 +812,7 @@ WRITE8_MEMBER( tms9902_device::cruwrite )
/* Data Set Change Interrupt Enable */
m_DSCENB = (data!=0);
m_DSCH = false;
- if (TRACE_CRU) logerror("set DSCH=0, set DSCENB=%d\n", data);
+ LOGCRU("set DSCH=0, set DSCENB=%d\n", data);
field_interrupts();
return;
case 31:
@@ -853,4 +867,4 @@ void tms9902_device::device_start()
m_sendtimer = timer_alloc(SENDTIMER);
}
-const device_type TMS9902 = device_creator<tms9902_device>;
+DEFINE_DEVICE_TYPE(TMS9902, tms9902_device, "tms9902", "TMS9902 ACC")
diff --git a/src/devices/machine/tms9902.h b/src/devices/machine/tms9902.h
index 238f66bbca7..ecff8ad1ac6 100644
--- a/src/devices/machine/tms9902.h
+++ b/src/devices/machine/tms9902.h
@@ -11,47 +11,49 @@
*****************************************************************************/
-#ifndef __TMS9902_H__
-#define __TMS9902_H__
-
-
-// Serial control protocol values
-#define TYPE_TMS9902 0x01
-
-// Configuration (output only)
-#define CONFIG 0x80
-#define RATERECV 0x70
-#define RATEXMIT 0x60
-#define DATABITS 0x50
-#define STOPBITS 0x40
-#define PARITY 0x30
-
-// Exceptional states (BRK: both directions; FRMERR/PARERR: input only)
-#define EXCEPT 0x40
-#define BRK 0x02
-#define FRMERR 0x04
-#define PARERR 0x06
-
-// Line states (RTS, DTR: output; CTS, DSR, RI, DCD: input)
-#define LINES 0x00
-#define RTS 0x20
-#define CTS 0x10
-#define DSR 0x08
-#define DCD 0x04
-#define DTR 0x02
-#define RI 0x01
-
-extern const device_type TMS9902;
+#ifndef MAME_MACHINE_TMS9902_H
+#define MAME_MACHINE_TMS9902_H
+
+#pragma once
+
+
+DECLARE_DEVICE_TYPE(TMS9902, tms9902_device)
class tms9902_device : public device_t
{
public:
+ // Serial control protocol values
+ static constexpr unsigned TYPE_TMS9902 = 0x01;
+
+ // Configuration (output only)
+ static constexpr unsigned CONFIG = 0x80;
+ static constexpr unsigned RATERECV = 0x70;
+ static constexpr unsigned RATEXMIT = 0x60;
+ static constexpr unsigned DATABITS = 0x50;
+ static constexpr unsigned STOPBITS = 0x40;
+ static constexpr unsigned PARITY = 0x30;
+
+ // Exceptional states (BRK: both directions; FRMERR/PARERR: input only)
+ static constexpr unsigned EXCEPT = 0x40;
+ static constexpr unsigned BRK = 0x02;
+ static constexpr unsigned FRMERR = 0x04;
+ static constexpr unsigned PARERR = 0x06;
+
+ // Line states (RTS, DTR: output; CTS, DSR, RI, DCD: input)
+ static constexpr unsigned LINES = 0x00;
+ static constexpr unsigned RTS = 0x20;
+ static constexpr unsigned CTS = 0x10;
+ static constexpr unsigned DSR = 0x08;
+ static constexpr unsigned DCD = 0x04;
+ static constexpr unsigned DTR = 0x02;
+ static constexpr unsigned RI = 0x01;
+
tms9902_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_int_callback(device_t &device, _Object object) { return downcast<tms9902_device &>(device).m_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_rcv_callback(device_t &device, _Object object) { return downcast<tms9902_device &>(device).m_rcv_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_xmit_callback(device_t &device, _Object object) { return downcast<tms9902_device &>(device).m_xmit_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_ctrl_callback(device_t &device, _Object object) { return downcast<tms9902_device &>(device).m_ctrl_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_int_callback(device_t &device, Object &&cb) { return downcast<tms9902_device &>(device).m_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rcv_callback(device_t &device, Object &&cb) { return downcast<tms9902_device &>(device).m_rcv_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_xmit_callback(device_t &device, Object &&cb) { return downcast<tms9902_device &>(device).m_xmit_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ctrl_callback(device_t &device, Object &&cb) { return downcast<tms9902_device &>(device).m_ctrl_cb.set_callback(std::forward<Object>(cb)); }
void set_clock(bool state);
@@ -187,16 +189,16 @@ private:
DEVICE CONFIGURATION MACROS
***************************************************************************/
-#define MCFG_TMS9902_INT_CB(_devcb) \
- devcb = &tms9902_device::set_int_callback(*device, DEVCB_##_devcb);
+#define MCFG_TMS9902_INT_CB(cb) \
+ devcb = &tms9902_device::set_int_callback(*device, (DEVCB_##cb));
-#define MCFG_TMS9902_RCV_CB(_devcb) \
- devcb = &tms9902_device::set_rcv_callback(*device, DEVCB_##_devcb);
+#define MCFG_TMS9902_RCV_CB(cb) \
+ devcb = &tms9902_device::set_rcv_callback(*device, (DEVCB_##cb));
-#define MCFG_TMS9902_XMIT_CB(_devcb) \
- devcb = &tms9902_device::set_xmit_callback(*device, DEVCB_##_devcb);
+#define MCFG_TMS9902_XMIT_CB(cb) \
+ devcb = &tms9902_device::set_xmit_callback(*device, (DEVCB_##cb));
-#define MCFG_TMS9902_CTRL_CB(_devcb) \
- devcb = &tms9902_device::set_ctrl_callback(*device, DEVCB_##_devcb);
+#define MCFG_TMS9902_CTRL_CB(cb) \
+ devcb = &tms9902_device::set_ctrl_callback(*device, (DEVCB_##cb));
-#endif /* __TMS9902_H__ */
+#endif // MAME_MACHINE_TMS9902_H
diff --git a/src/devices/machine/upd1990a.cpp b/src/devices/machine/upd1990a.cpp
index 7a71e318380..a37840c405f 100644
--- a/src/devices/machine/upd1990a.cpp
+++ b/src/devices/machine/upd1990a.cpp
@@ -17,13 +17,8 @@
#include "emu.h"
#include "upd1990a.h"
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
@@ -32,8 +27,8 @@
//**************************************************************************
// device type definition
-const device_type UPD1990A = device_creator<upd1990a_device>;
-const device_type UPD4990A = device_creator<upd4990a_device>;
+DEFINE_DEVICE_TYPE(UPD1990A, upd1990a_device, "upd1990a", "uPD1990A RTC")
+DEFINE_DEVICE_TYPE(UPD4990A, upd4990a_device, "upd4990a", "uPD4990A RTC")
@@ -45,26 +40,24 @@ const device_type UPD4990A = device_creator<upd4990a_device>;
// upd1990a_device - constructor
//-------------------------------------------------
-upd1990a_device::upd1990a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_rtc_interface(mconfig, *this),
- m_write_data(*this),
- m_write_tp(*this),
- m_variant(variant)
+upd1990a_device::upd1990a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_rtc_interface(mconfig, *this)
+ , m_write_data(*this)
+ , m_write_tp(*this)
+ , m_variant(variant)
{
}
upd1990a_device::upd1990a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, UPD1990A, "uPD1990A", tag, owner, clock, "upd1990a", __FILE__),
- device_rtc_interface(mconfig, *this),
- m_write_data(*this),
- m_write_tp(*this),
- m_variant(TYPE_1990A)
+ : upd1990a_device(mconfig, UPD1990A, tag, owner, clock, TYPE_1990A)
{
}
upd4990a_device::upd4990a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upd1990a_device(mconfig, UPD4990A, "uPD4990A RTC", tag, owner, clock, TYPE_4990A, "upd4990a", __FILE__) { }
+ : upd1990a_device(mconfig, UPD4990A, tag, owner, clock, TYPE_4990A)
+{
+}
bool upd1990a_device::is_serial_mode()
@@ -202,7 +195,7 @@ WRITE_LINE_MEMBER( upd1990a_device::stb_w )
if (!m_cs)
return;
- if (LOG) logerror("uPD1990A '%s' STB %u\n", tag(), state);
+ LOG("uPD1990A STB %u\n", state);
// rising edge
if (!m_stb && state)
@@ -217,7 +210,7 @@ WRITE_LINE_MEMBER( upd1990a_device::stb_w )
m_c = MODE_TEST;
}
- if (LOG) logerror("uPD1990A '%s' Command %x\n", tag(), m_c);
+ LOG("uPD1990A Command %x\n", m_c);
// common functions
if (m_c == MODE_REGISTER_HOLD || (m_c >= MODE_TP_64HZ && m_c < MODE_TEST))
@@ -388,7 +381,7 @@ WRITE_LINE_MEMBER( upd1990a_device::clk_w )
if (!m_cs)
return;
- if (LOG) logerror("uPD1990A '%s' CLK %u\n", tag(), state);
+ LOG("uPD1990A CLK %u\n", state);
// rising edge
if (!m_clk && state)
@@ -433,14 +426,14 @@ WRITE_LINE_MEMBER( upd1990a_device::clk_w )
WRITE_LINE_MEMBER( upd1990a_device::cs_w )
{
// chip select
- if (LOG) logerror("uPD1990A '%s' CS %u\n", tag(), state);
+ LOG("uPD1990A CS %u\n", state);
m_cs = state;
}
WRITE_LINE_MEMBER( upd1990a_device::oe_w )
{
// output enable
- if (LOG) logerror("uPD1990A '%s' OE %u\n", tag(), state);
+ LOG("uPD1990A OE %u\n", state);
int prev_oe = m_oe;
m_oe = state;
@@ -451,26 +444,26 @@ WRITE_LINE_MEMBER( upd1990a_device::oe_w )
WRITE_LINE_MEMBER( upd1990a_device::c0_w )
{
- if (LOG) logerror("uPD1990A '%s' C0 %u\n", tag(), state);
+ LOG("uPD1990A C0 %u\n", state);
m_c_unlatched = (m_c_unlatched & 0x06) | state;
}
WRITE_LINE_MEMBER( upd1990a_device::c1_w )
{
- if (LOG) logerror("uPD1990A '%s' C1 %u\n", tag(), state);
+ LOG("uPD1990A C1 %u\n", state);
m_c_unlatched = (m_c_unlatched & 0x05) | (state << 1);
}
WRITE_LINE_MEMBER( upd1990a_device::c2_w )
{
- if (LOG) logerror("uPD1990A '%s' C2 %u\n", tag(), state);
+ LOG("uPD1990A C2 %u\n", state);
m_c_unlatched = (m_c_unlatched & 0x03) | (state << 2);
}
WRITE_LINE_MEMBER( upd1990a_device::data_in_w )
{
// data input
- if (LOG) logerror("uPD1990A '%s' DATA IN %u\n", tag(), state);
+ LOG("uPD1990A DATA IN %u\n", state);
m_data_in = state;
}
diff --git a/src/devices/machine/upd1990a.h b/src/devices/machine/upd1990a.h
index af901ce798c..a9438b836e9 100644
--- a/src/devices/machine/upd1990a.h
+++ b/src/devices/machine/upd1990a.h
@@ -16,10 +16,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_UPD1990A_H
+#define MAME_MACHINE_UPD1990A_H
-#ifndef __UPD1990A__
-#define __UPD1990A__
+#pragma once
#include "dirtc.h"
@@ -47,16 +47,14 @@
// ======================> upd1990a_device
-class upd1990a_device : public device_t,
- public device_rtc_interface
+class upd1990a_device : public device_t, public device_rtc_interface
{
public:
// construction/destruction
- upd1990a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
upd1990a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _data> void set_data_callback(_data data) { m_write_data.set_callback(data); }
- template<class _tp> void set_tp_callback(_tp tp) { m_write_tp.set_callback(tp); }
+ template <class Object> void set_data_callback(Object &&data) { m_write_data.set_callback(std::forward<Object>(data)); }
+ template <class Object> void set_tp_callback(Object &&tp) { m_write_tp.set_callback(std::forward<Object>(tp)); }
DECLARE_WRITE_LINE_MEMBER( oe_w );
DECLARE_WRITE_LINE_MEMBER( cs_w );
@@ -71,6 +69,8 @@ public:
protected:
// device-level overrides
+ upd1990a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
virtual void device_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -130,7 +130,7 @@ private:
bool m_testmode; // testmode active
- int m_variant;
+ int const m_variant;
// timers
emu_timer *m_timer_clock;
@@ -153,9 +153,7 @@ public:
// device type definitions
-extern const device_type UPD1990A;
-extern const device_type UPD4990A;
-
-
+DECLARE_DEVICE_TYPE(UPD1990A, upd1990a_device)
+DECLARE_DEVICE_TYPE(UPD4990A, upd4990a_device)
-#endif
+#endif // MAME_MACHINE_UPD1990A_H
diff --git a/src/devices/machine/upd4701.cpp b/src/devices/machine/upd4701.cpp
index 9fd7b6de7b7..8b6c161efbf 100644
--- a/src/devices/machine/upd4701.cpp
+++ b/src/devices/machine/upd4701.cpp
@@ -16,11 +16,12 @@
#define MASK_SWITCHES ( 7 )
#define MASK_COUNTER ( 0xfff )
-const device_type UPD4701 = device_creator<upd4701_device>;
+DEFINE_DEVICE_TYPE(UPD4701, upd4701_device, "upd4701", "uPD4701 Encoder")
upd4701_device::upd4701_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, UPD4701, "uPD4701 Encoder", tag, owner, clock, "upd4701", __FILE__), m_cs(0), m_xy(0), m_ul(0), m_resetx(0), m_resety(0), m_latchx(0), m_latchy(0),
- m_startx(0), m_starty(0), m_x(0), m_y(0), m_switches(0), m_latchswitches(0), m_cf(0)
+ : device_t(mconfig, UPD4701, tag, owner, clock)
+ , m_cs(0), m_xy(0), m_ul(0), m_resetx(0), m_resety(0), m_latchx(0), m_latchy(0)
+ , m_startx(0), m_starty(0), m_x(0), m_y(0), m_switches(0), m_latchswitches(0), m_cf(0)
{
}
diff --git a/src/devices/machine/upd4701.h b/src/devices/machine/upd4701.h
index ca9432e6d56..c2959df138b 100644
--- a/src/devices/machine/upd4701.h
+++ b/src/devices/machine/upd4701.h
@@ -8,8 +8,11 @@
***************************************************************************/
-#ifndef __UPD4701_H__
-#define __UPD4701_H__
+#ifndef MAME_MACHINE_UPD4701_H
+#define MAME_MACHINE_UPD4701_H
+
+#pragma once
+
/***************************************************************************
MACROS / CONSTANTS
@@ -57,10 +60,10 @@ private:
int m_cf;
};
-extern const device_type UPD4701;
+DECLARE_DEVICE_TYPE(UPD4701, upd4701_device)
-#define MCFG_UPD4701_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, UPD4701, 0)
+#define MCFG_UPD4701_ADD(tag) \
+ MCFG_DEVICE_ADD((tag), UPD4701, 0)
-#endif /* __UPD4701_H__ */
+#endif // MAME_MACHINE_UPD4701_H
diff --git a/src/devices/machine/upd4992.cpp b/src/devices/machine/upd4992.cpp
index 95e76c5cdc1..a6c81fb9d13 100644
--- a/src/devices/machine/upd4992.cpp
+++ b/src/devices/machine/upd4992.cpp
@@ -22,7 +22,7 @@
//**************************************************************************
// device type definition
-const device_type UPD4992 = device_creator<upd4992_device>;
+DEFINE_DEVICE_TYPE(UPD4992, upd4992_device, "upd4992", "uPD4992 RTC")
//**************************************************************************
@@ -34,8 +34,9 @@ const device_type UPD4992 = device_creator<upd4992_device>;
//-------------------------------------------------
upd4992_device::upd4992_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, UPD4992, "uPD4992 RTC", tag, owner, clock, "upd4992", __FILE__),
- device_rtc_interface(mconfig, *this), m_timer_clock(nullptr)
+ : device_t(mconfig, UPD4992, tag, owner, clock)
+ , device_rtc_interface(mconfig, *this)
+ , m_timer_clock(nullptr)
{
}
diff --git a/src/devices/machine/upd4992.h b/src/devices/machine/upd4992.h
index 9825e02e3ef..433506a5bcf 100644
--- a/src/devices/machine/upd4992.h
+++ b/src/devices/machine/upd4992.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_UPD4992_H
+#define MAME_MACHINE_UPD4992_H
-#ifndef __UPD4992DEV_H__
-#define __UPD4992DEV_H__
+#pragma once
#include "dirtc.h"
@@ -18,8 +18,8 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_UPD4992_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, UPD4992, XTAL_32_768kHz)
+#define MCFG_UPD4992_ADD(tag) \
+ MCFG_DEVICE_ADD((tag), UPD4992, XTAL_32_768kHz)
//**************************************************************************
// TYPE DEFINITIONS
@@ -27,8 +27,7 @@
// ======================> upd4992_device
-class upd4992_device : public device_t,
- public device_rtc_interface
+class upd4992_device : public device_t, public device_rtc_interface
{
public:
// construction/destruction
@@ -61,13 +60,6 @@ private:
// device type definition
extern const device_type UPD4992;
+DECLARE_DEVICE_TYPE(UPD4992, upd4992_device)
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
-
-#endif
+#endif // MAME_MACHINE_UPD4992_H
diff --git a/src/devices/machine/upd7002.cpp b/src/devices/machine/upd7002.cpp
index 17335ddde26..69b9bb262ee 100644
--- a/src/devices/machine/upd7002.cpp
+++ b/src/devices/machine/upd7002.cpp
@@ -16,10 +16,10 @@
/* Device Interface */
-const device_type UPD7002 = device_creator<upd7002_device>;
+DEFINE_DEVICE_TYPE(UPD7002, upd7002_device, "upd7002", "uPD7002 ADC")
upd7002_device::upd7002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, UPD7002, "uPD7002", tag, owner, clock, "upd7002", __FILE__), m_status(0), m_data1(0), m_data0(0), m_digitalvalue(0), m_conversion_counter(0)
+ : device_t(mconfig, UPD7002, tag, owner, clock), m_status(0), m_data1(0), m_data0(0), m_digitalvalue(0), m_conversion_counter(0)
{
}
diff --git a/src/devices/machine/upd7002.h b/src/devices/machine/upd7002.h
index 16a57fcc281..b4ebc801a17 100644
--- a/src/devices/machine/upd7002.h
+++ b/src/devices/machine/upd7002.h
@@ -10,17 +10,17 @@
*
****************************************************************************/
-#ifndef UPD7002_H_
-#define UPD7002_H_
+#ifndef MAME_MACHINE_UPD7002_H
+#define MAME_MACHINE_UPD7002_H
+
+#pragma once
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-typedef device_delegate<int (int channel_number)> upd7002_get_analogue_delegate;
#define UPD7002_GET_ANALOGUE(name) int name(int channel_number)
-typedef device_delegate<void (int data)> upd7002_eoc_delegate;
#define UPD7002_EOC(name) void name(int data)
@@ -31,11 +31,13 @@ typedef device_delegate<void (int data)> upd7002_eoc_delegate;
class upd7002_device : public device_t
{
public:
+ typedef device_delegate<int (int channel_number)> get_analogue_delegate;
+ typedef device_delegate<void (int data)> eoc_delegate;
+
upd7002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~upd7002_device() {}
- static void set_get_analogue_callback(device_t &device, upd7002_get_analogue_delegate callback) { downcast<upd7002_device &>(device).m_get_analogue_cb = callback; }
- static void set_eoc_callback(device_t &device, upd7002_eoc_delegate callback) { downcast<upd7002_device &>(device).m_eoc_cb = callback; }
+ static void set_get_analogue_callback(device_t &device, get_analogue_delegate &&callback) { downcast<upd7002_device &>(device).m_get_analogue_cb = std::move(callback); }
+ static void set_eoc_callback(device_t &device, eoc_delegate &&callback) { downcast<upd7002_device &>(device).m_eoc_cb = std::move(callback); }
DECLARE_READ8_MEMBER(eoc_r);
DECLARE_READ8_MEMBER(read);
@@ -81,8 +83,8 @@ private:
only then at the end of the second conversion will the conversion complete function run */
int m_conversion_counter;
- upd7002_get_analogue_delegate m_get_analogue_cb;
- upd7002_eoc_delegate m_eoc_cb;
+ get_analogue_delegate m_get_analogue_cb;
+ eoc_delegate m_eoc_cb;
enum
{
@@ -90,7 +92,7 @@ private:
};
};
-extern const device_type UPD7002;
+DECLARE_DEVICE_TYPE(UPD7002, upd7002_device)
/***************************************************************************
@@ -98,9 +100,9 @@ extern const device_type UPD7002;
***************************************************************************/
#define MCFG_UPD7002_GET_ANALOGUE_CB(_class, _method) \
- upd7002_device::set_get_analogue_callback(*device, upd7002_get_analogue_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ upd7002_device::set_get_analogue_callback(*device, upd7002_device::get_analogue_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_UPD7002_EOC_CB(_class, _method) \
- upd7002_device::set_eoc_callback(*device, upd7002_eoc_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ upd7002_device::set_eoc_callback(*device, upd7002_device::eoc_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-#endif /* UPD7002_H_ */
+#endif // MAME_MACHINE_UPD7002_H
diff --git a/src/devices/machine/upd71071.cpp b/src/devices/machine/upd71071.cpp
index fadebc5cb83..cbb9b79600b 100644
--- a/src/devices/machine/upd71071.cpp
+++ b/src/devices/machine/upd71071.cpp
@@ -90,26 +90,17 @@
#include "machine/upd71071.h"
-const device_type UPD71071 = device_creator<upd71071_device>;
+DEFINE_DEVICE_TYPE(UPD71071, upd71071_device, "upd71071", "NEC uPD71071 DMA Controller")
upd71071_device::upd71071_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, UPD71071, "NEC uPD71071", tag, owner, clock, "upd71071", __FILE__),
- m_upd_clock(0),
- m_out_hreq_cb(*this),
- m_out_eop_cb(*this),
- m_dma_read_0_cb(*this),
- m_dma_read_1_cb(*this),
- m_dma_read_2_cb(*this),
- m_dma_read_3_cb(*this),
- m_dma_write_0_cb(*this),
- m_dma_write_1_cb(*this),
- m_dma_write_2_cb(*this),
- m_dma_write_3_cb(*this),
- m_out_dack_0_cb(*this),
- m_out_dack_1_cb(*this),
- m_out_dack_2_cb(*this),
- m_out_dack_3_cb(*this),
- m_cpu(*this, finder_base::DUMMY_TAG)
+ : device_t(mconfig, UPD71071, tag, owner, clock)
+ , m_upd_clock(0)
+ , m_out_hreq_cb(*this)
+ , m_out_eop_cb(*this)
+ , m_dma_read_cb{ {*this}, {*this}, {*this}, {*this} }
+ , m_dma_write_cb{ {*this}, {*this}, {*this}, {*this} }
+ , m_out_dack_cb{ {*this}, {*this}, {*this}, {*this} }
+ , m_cpu(*this, finder_base::DUMMY_TAG)
{
}
@@ -121,22 +112,14 @@ void upd71071_device::device_start()
{
m_out_hreq_cb.resolve_safe();
m_out_eop_cb.resolve_safe();
- m_dma_read_0_cb.resolve_safe(0);
- m_dma_read_1_cb.resolve_safe(0);
- m_dma_read_2_cb.resolve_safe(0);
- m_dma_read_3_cb.resolve_safe(0);
- m_dma_write_0_cb.resolve_safe();
- m_dma_write_1_cb.resolve_safe();
- m_dma_write_2_cb.resolve_safe();
- m_dma_write_3_cb.resolve_safe();
- m_out_dack_0_cb.resolve_safe();
- m_out_dack_1_cb.resolve_safe();
- m_out_dack_2_cb.resolve_safe();
- m_out_dack_3_cb.resolve_safe();
- for (auto & elem : m_timer)
- {
- elem = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(upd71071_device::dma_transfer_timer),this));
- }
+ for (auto &cb : m_dma_read_cb)
+ cb.resolve_safe(0);
+ for (auto &cb : m_dma_write_cb)
+ cb.resolve_safe();
+ for (auto &cb : m_out_dack_cb)
+ cb.resolve_safe();
+ for (auto &elem : m_timer)
+ elem = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(upd71071_device::dma_transfer_timer), this));
m_selected_channel = 0;
m_reg.device_control = 0;
@@ -176,104 +159,86 @@ TIMER_CALLBACK_MEMBER(upd71071_device::dma_transfer_timer)
switch (m_reg.mode_control[channel] & 0x0c)
{
- case 0x00: // Verify
+ case 0x00: // Verify
+ break;
+ case 0x04: // I/O -> memory
+ switch (channel)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ if (!m_dma_read_cb[channel].isnull())
+ data = m_dma_read_cb[channel](0);
break;
- case 0x04: // I/O -> memory
- switch (channel)
- {
- case 0:
- if (!m_dma_read_0_cb.isnull())
- data = m_dma_read_0_cb(0);
- break;
- case 1:
- if (!m_dma_read_1_cb.isnull())
- data = m_dma_read_1_cb(0);
- break;
- case 2:
- if (!m_dma_read_2_cb.isnull())
- data = m_dma_read_2_cb(0);
- break;
- case 3:
- if (!m_dma_read_3_cb.isnull())
- data = m_dma_read_3_cb(0);
- break;
- }
+ }
- if (m_cpu)
- {
- address_space& space = m_cpu->space(AS_PROGRAM);
- space.write_byte(m_reg.address_current[channel], data & 0xff);
- }
- else
- {
- printf("upd71071_device: dma_transfer_timer - write to memory, no dest space %02x\n", data & 0xff);
- }
+ if (m_cpu)
+ {
+ address_space& space = m_cpu->space(AS_PROGRAM);
+ space.write_byte(m_reg.address_current[channel], data & 0xff);
+ }
+ else
+ {
+ printf("upd71071_device: dma_transfer_timer - write to memory, no dest space %02x\n", data & 0xff);
+ }
- if (m_reg.mode_control[channel] & 0x20) // Address direction
- m_reg.address_current[channel]--;
- else
- m_reg.address_current[channel]++;
- m_reg.count_current[channel]--;
- if(m_reg.count_current[channel] == 0xffff)
- {
- if (m_reg.mode_control[channel] & 0x10) // auto-initialise
- {
- m_reg.address_current[channel] = m_reg.address_base[channel];
- m_reg.count_current[channel] = m_reg.count_base[channel];
- }
- // TODO: send terminal count
- set_eop(ASSERT_LINE);
- }
- break;
- case 0x08: // memory -> I/O
- if (m_cpu)
- {
- address_space& space = m_cpu->space(AS_PROGRAM);
- data = space.read_byte(m_reg.address_current[channel]);
- }
- else
+ if (m_reg.mode_control[channel] & 0x20) // Address direction
+ m_reg.address_current[channel]--;
+ else
+ m_reg.address_current[channel]++;
+ m_reg.count_current[channel]--;
+ if(m_reg.count_current[channel] == 0xffff)
+ {
+ if (m_reg.mode_control[channel] & 0x10) // auto-initialise
{
- printf("upd71071_device: dma_transfer_timer - read from memory, no src space\n");
- data = 0x00;
+ m_reg.address_current[channel] = m_reg.address_base[channel];
+ m_reg.count_current[channel] = m_reg.count_base[channel];
}
+ // TODO: send terminal count
+ set_eop(ASSERT_LINE);
+ }
+ break;
+ case 0x08: // memory -> I/O
+ if (m_cpu)
+ {
+ address_space& space = m_cpu->space(AS_PROGRAM);
+ data = space.read_byte(m_reg.address_current[channel]);
+ }
+ else
+ {
+ printf("upd71071_device: dma_transfer_timer - read from memory, no src space\n");
+ data = 0x00;
+ }
- switch (channel)
- {
- case 0:
- if (!m_dma_write_0_cb.isnull())
- m_dma_write_0_cb((offs_t)0, data);
- break;
- case 1:
- if (!m_dma_write_1_cb.isnull())
- m_dma_write_1_cb((offs_t)0, data);
- break;
- case 2:
- if (!m_dma_write_2_cb.isnull())
- m_dma_write_2_cb((offs_t)0, data);
- break;
- case 3:
- if (!m_dma_write_3_cb.isnull())
- m_dma_write_3_cb((offs_t)0, data);
- break;
- }
- if (m_reg.mode_control[channel] & 0x20) // Address direction
- m_reg.address_current[channel]--;
- else
- m_reg.address_current[channel]++;
- m_reg.count_current[channel]--;
- if(m_reg.count_current[channel] == 0xffff)
+ switch (channel)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ if (!m_dma_write_cb[channel].isnull())
+ m_dma_write_cb[channel](offs_t(0), data);
+ break;
+ }
+ if (m_reg.mode_control[channel] & 0x20) // Address direction
+ m_reg.address_current[channel]--;
+ else
+ m_reg.address_current[channel]++;
+ m_reg.count_current[channel]--;
+ if(m_reg.count_current[channel] == 0xffff)
+ {
+ if (m_reg.mode_control[channel] & 0x10) // auto-initialise
{
- if (m_reg.mode_control[channel] & 0x10) // auto-initialise
- {
- m_reg.address_current[channel] = m_reg.address_base[channel];
- m_reg.count_current[channel] = m_reg.count_base[channel];
- }
- // TODO: send terminal count
- set_eop(ASSERT_LINE);
+ m_reg.address_current[channel] = m_reg.address_base[channel];
+ m_reg.count_current[channel] = m_reg.count_base[channel];
}
- break;
- case 0x0c: // Invalid
- break;
+ // TODO: send terminal count
+ set_eop(ASSERT_LINE);
+ }
+ break;
+ case 0x0c: // Invalid
+ break;
}
}
@@ -308,21 +273,20 @@ int upd71071_device::dmarq(int state, int channel)
// start transfer
switch (m_reg.mode_control[channel] & 0xc0)
{
- case 0x00: // Demand
- // TODO
- set_eop(CLEAR_LINE);
- m_timer[channel]->adjust(attotime::from_hz(m_upd_clock), channel);
- break;
- case 0x40: // Single
- m_timer[channel]->adjust(attotime::from_hz(m_upd_clock), channel);
- break;
- case 0x80: // Block
- // TODO
- break;
- case 0xc0: // Cascade
- // TODO
- break;
-
+ case 0x00: // Demand
+ // TODO
+ set_eop(CLEAR_LINE);
+ m_timer[channel]->adjust(attotime::from_hz(m_upd_clock), channel);
+ break;
+ case 0x40: // Single
+ m_timer[channel]->adjust(attotime::from_hz(m_upd_clock), channel);
+ break;
+ case 0x80: // Block
+ // TODO
+ break;
+ case 0xc0: // Cascade
+ // TODO
+ break;
}
}
else
@@ -341,72 +305,72 @@ READ8_MEMBER(upd71071_device::read)
logerror("DMA: read from register %02x\n",offset);
switch(offset)
{
- case 0x01: // Channel
- ret = (1 << m_selected_channel);
- if (m_base != 0)
- ret |= 0x10;
- break;
- case 0x02: // Count (low)
- if (m_base != 0)
- ret = m_reg.count_base[m_selected_channel] & 0xff;
- else
- ret = m_reg.count_current[m_selected_channel] & 0xff;
- break;
- case 0x03: // Count (high)
- if (m_base != 0)
- ret = (m_reg.count_base[m_selected_channel] >> 8) & 0xff;
- else
- ret = (m_reg.count_current[m_selected_channel] >> 8) & 0xff;
- break;
- case 0x04: // Address (low)
- if (m_base != 0)
- ret = m_reg.address_base[m_selected_channel] & 0xff;
- else
- ret = m_reg.address_current[m_selected_channel] & 0xff;
- break;
- case 0x05: // Address (mid)
- if (m_base != 0)
- ret = (m_reg.address_base[m_selected_channel] >> 8) & 0xff;
- else
- ret = (m_reg.address_current[m_selected_channel] >> 8) & 0xff;
- break;
- case 0x06: // Address (high)
- if (m_base != 0)
- ret = (m_reg.address_base[m_selected_channel] >> 16) & 0xff;
- else
- ret = (m_reg.address_current[m_selected_channel] >> 16) & 0xff;
- break;
- case 0x07: // Address (highest)
- if (m_base != 0)
- ret = (m_reg.address_base[m_selected_channel] >> 24) & 0xff;
- else
- ret = (m_reg.address_current[m_selected_channel] >> 24) & 0xff;
- break;
- case 0x08: // Device control (low)
- ret = m_reg.device_control & 0xff;
- break;
- case 0x09: // Device control (high)
- ret = (m_reg.device_control >> 8) & 0xff;
- break;
- case 0x0a: // Mode control
- ret = m_reg.mode_control[m_selected_channel];
- break;
- case 0x0b: // Status
- ret = m_reg.status;
- m_reg.status &= ~0x0f; // resets END/TC?
- break;
- case 0x0c: // Temporary (low)
- ret = m_reg.temp_h;
- break;
- case 0x0d: // Temporary (high)
- ret = m_reg.temp_l;
- break;
- case 0x0e: // Request
- ret = m_reg.request;
- break;
- case 0x0f: // Mask
- ret = m_reg.mask;
- break;
+ case 0x01: // Channel
+ ret = (1 << m_selected_channel);
+ if (m_base != 0)
+ ret |= 0x10;
+ break;
+ case 0x02: // Count (low)
+ if (m_base != 0)
+ ret = m_reg.count_base[m_selected_channel] & 0xff;
+ else
+ ret = m_reg.count_current[m_selected_channel] & 0xff;
+ break;
+ case 0x03: // Count (high)
+ if (m_base != 0)
+ ret = (m_reg.count_base[m_selected_channel] >> 8) & 0xff;
+ else
+ ret = (m_reg.count_current[m_selected_channel] >> 8) & 0xff;
+ break;
+ case 0x04: // Address (low)
+ if (m_base != 0)
+ ret = m_reg.address_base[m_selected_channel] & 0xff;
+ else
+ ret = m_reg.address_current[m_selected_channel] & 0xff;
+ break;
+ case 0x05: // Address (mid)
+ if (m_base != 0)
+ ret = (m_reg.address_base[m_selected_channel] >> 8) & 0xff;
+ else
+ ret = (m_reg.address_current[m_selected_channel] >> 8) & 0xff;
+ break;
+ case 0x06: // Address (high)
+ if (m_base != 0)
+ ret = (m_reg.address_base[m_selected_channel] >> 16) & 0xff;
+ else
+ ret = (m_reg.address_current[m_selected_channel] >> 16) & 0xff;
+ break;
+ case 0x07: // Address (highest)
+ if (m_base != 0)
+ ret = (m_reg.address_base[m_selected_channel] >> 24) & 0xff;
+ else
+ ret = (m_reg.address_current[m_selected_channel] >> 24) & 0xff;
+ break;
+ case 0x08: // Device control (low)
+ ret = m_reg.device_control & 0xff;
+ break;
+ case 0x09: // Device control (high)
+ ret = (m_reg.device_control >> 8) & 0xff;
+ break;
+ case 0x0a: // Mode control
+ ret = m_reg.mode_control[m_selected_channel];
+ break;
+ case 0x0b: // Status
+ ret = m_reg.status;
+ m_reg.status &= ~0x0f; // resets END/TC?
+ break;
+ case 0x0c: // Temporary (low)
+ ret = m_reg.temp_h;
+ break;
+ case 0x0d: // Temporary (high)
+ ret = m_reg.temp_l;
+ break;
+ case 0x0e: // Request
+ ret = m_reg.request;
+ break;
+ case 0x0f: // Mask
+ ret = m_reg.mask;
+ break;
}
return ret;
}
@@ -415,86 +379,86 @@ WRITE8_MEMBER(upd71071_device::write)
{
switch (offset)
{
- case 0x00: // Initialise
- // TODO: reset (bit 0)
- m_buswidth = data & 0x02;
- if (data & 0x01)
- soft_reset();
- logerror("DMA: Initialise [%02x]\n",data);
- break;
- case 0x01: // Channel
- m_selected_channel = data & 0x03;
- m_base = data & 0x04;
- logerror("DMA: Channel selected [%02x]\n",data);
- break;
- case 0x02: // Count (low)
- m_reg.count_base[m_selected_channel] =
- (m_reg.count_base[m_selected_channel] & 0xff00) | data;
- if (m_base == 0)
- m_reg.count_current[m_selected_channel] =
- (m_reg.count_current[m_selected_channel] & 0xff00) | data;
- logerror("DMA: Channel %i Counter set [%04x]\n",m_selected_channel,m_reg.count_base[m_selected_channel]);
- break;
- case 0x03: // Count (high)
- m_reg.count_base[m_selected_channel] =
- (m_reg.count_base[m_selected_channel] & 0x00ff) | (data << 8);
- if (m_base == 0)
- m_reg.count_current[m_selected_channel] =
- (m_reg.count_current[m_selected_channel] & 0x00ff) | (data << 8);
- logerror("DMA: Channel %i Counter set [%04x]\n",m_selected_channel,m_reg.count_base[m_selected_channel]);
- break;
- case 0x04: // Address (low)
- m_reg.address_base[m_selected_channel] =
- (m_reg.address_base[m_selected_channel] & 0xffffff00) | data;
- if (m_base == 0)
- m_reg.address_current[m_selected_channel] =
- (m_reg.address_current[m_selected_channel] & 0xffffff00) | data;
- logerror("DMA: Channel %i Address set [%08x]\n",m_selected_channel,m_reg.address_base[m_selected_channel]);
- break;
- case 0x05: // Address (mid)
- m_reg.address_base[m_selected_channel] =
- (m_reg.address_base[m_selected_channel] & 0xffff00ff) | (data << 8);
- if (m_base == 0)
- m_reg.address_current[m_selected_channel] =
- (m_reg.address_current[m_selected_channel] & 0xffff00ff) | (data << 8);
- logerror("DMA: Channel %i Address set [%08x]\n",m_selected_channel,m_reg.address_base[m_selected_channel]);
- break;
- case 0x06: // Address (high)
- m_reg.address_base[m_selected_channel] =
- (m_reg.address_base[m_selected_channel] & 0xff00ffff) | (data << 16);
- if (m_base == 0)
- m_reg.address_current[m_selected_channel] =
- (m_reg.address_current[m_selected_channel] & 0xff00ffff) | (data << 16);
- logerror("DMA: Channel %i Address set [%08x]\n",m_selected_channel,m_reg.address_base[m_selected_channel]);
- break;
- case 0x07: // Address (highest)
- m_reg.address_base[m_selected_channel] =
- (m_reg.address_base[m_selected_channel] & 0x00ffffff) | (data << 24);
- if (m_base == 0)
- m_reg.address_current[m_selected_channel] =
- (m_reg.address_current[m_selected_channel] & 0x00ffffff) | (data << 24);
- logerror("DMA: Channel %i Address set [%08x]\n",m_selected_channel,m_reg.address_base[m_selected_channel]);
- break;
- case 0x08: // Device control (low)
- m_reg.device_control = (m_reg.device_control & 0xff00) | data;
- logerror("DMA: Device control set [%04x]\n",m_reg.device_control);
- break;
- case 0x09: // Device control (high)
- m_reg.device_control = (m_reg.device_control & 0x00ff) | (data << 8);
- logerror("DMA: Device control set [%04x]\n",m_reg.device_control);
- break;
- case 0x0a: // Mode control
- m_reg.mode_control[m_selected_channel] = data;
- logerror("DMA: Channel %i Mode control set [%02x]\n",m_selected_channel,m_reg.mode_control[m_selected_channel]);
- break;
- case 0x0e: // Request
- m_reg.request = data;
- logerror("DMA: Request set [%02x]\n",data);
- break;
- case 0x0f: // Mask
- m_reg.mask = data;
- logerror("DMA: Mask set [%02x]\n",data);
- break;
+ case 0x00: // Initialise
+ // TODO: reset (bit 0)
+ m_buswidth = data & 0x02;
+ if (data & 0x01)
+ soft_reset();
+ logerror("DMA: Initialise [%02x]\n",data);
+ break;
+ case 0x01: // Channel
+ m_selected_channel = data & 0x03;
+ m_base = data & 0x04;
+ logerror("DMA: Channel selected [%02x]\n",data);
+ break;
+ case 0x02: // Count (low)
+ m_reg.count_base[m_selected_channel] =
+ (m_reg.count_base[m_selected_channel] & 0xff00) | data;
+ if (m_base == 0)
+ m_reg.count_current[m_selected_channel] =
+ (m_reg.count_current[m_selected_channel] & 0xff00) | data;
+ logerror("DMA: Channel %i Counter set [%04x]\n",m_selected_channel,m_reg.count_base[m_selected_channel]);
+ break;
+ case 0x03: // Count (high)
+ m_reg.count_base[m_selected_channel] =
+ (m_reg.count_base[m_selected_channel] & 0x00ff) | (data << 8);
+ if (m_base == 0)
+ m_reg.count_current[m_selected_channel] =
+ (m_reg.count_current[m_selected_channel] & 0x00ff) | (data << 8);
+ logerror("DMA: Channel %i Counter set [%04x]\n",m_selected_channel,m_reg.count_base[m_selected_channel]);
+ break;
+ case 0x04: // Address (low)
+ m_reg.address_base[m_selected_channel] =
+ (m_reg.address_base[m_selected_channel] & 0xffffff00) | data;
+ if (m_base == 0)
+ m_reg.address_current[m_selected_channel] =
+ (m_reg.address_current[m_selected_channel] & 0xffffff00) | data;
+ logerror("DMA: Channel %i Address set [%08x]\n",m_selected_channel,m_reg.address_base[m_selected_channel]);
+ break;
+ case 0x05: // Address (mid)
+ m_reg.address_base[m_selected_channel] =
+ (m_reg.address_base[m_selected_channel] & 0xffff00ff) | (data << 8);
+ if (m_base == 0)
+ m_reg.address_current[m_selected_channel] =
+ (m_reg.address_current[m_selected_channel] & 0xffff00ff) | (data << 8);
+ logerror("DMA: Channel %i Address set [%08x]\n",m_selected_channel,m_reg.address_base[m_selected_channel]);
+ break;
+ case 0x06: // Address (high)
+ m_reg.address_base[m_selected_channel] =
+ (m_reg.address_base[m_selected_channel] & 0xff00ffff) | (data << 16);
+ if (m_base == 0)
+ m_reg.address_current[m_selected_channel] =
+ (m_reg.address_current[m_selected_channel] & 0xff00ffff) | (data << 16);
+ logerror("DMA: Channel %i Address set [%08x]\n",m_selected_channel,m_reg.address_base[m_selected_channel]);
+ break;
+ case 0x07: // Address (highest)
+ m_reg.address_base[m_selected_channel] =
+ (m_reg.address_base[m_selected_channel] & 0x00ffffff) | (data << 24);
+ if (m_base == 0)
+ m_reg.address_current[m_selected_channel] =
+ (m_reg.address_current[m_selected_channel] & 0x00ffffff) | (data << 24);
+ logerror("DMA: Channel %i Address set [%08x]\n",m_selected_channel,m_reg.address_base[m_selected_channel]);
+ break;
+ case 0x08: // Device control (low)
+ m_reg.device_control = (m_reg.device_control & 0xff00) | data;
+ logerror("DMA: Device control set [%04x]\n",m_reg.device_control);
+ break;
+ case 0x09: // Device control (high)
+ m_reg.device_control = (m_reg.device_control & 0x00ff) | (data << 8);
+ logerror("DMA: Device control set [%04x]\n",m_reg.device_control);
+ break;
+ case 0x0a: // Mode control
+ m_reg.mode_control[m_selected_channel] = data;
+ logerror("DMA: Channel %i Mode control set [%02x]\n",m_selected_channel,m_reg.mode_control[m_selected_channel]);
+ break;
+ case 0x0e: // Request
+ m_reg.request = data;
+ logerror("DMA: Request set [%02x]\n",data);
+ break;
+ case 0x0f: // Mask
+ m_reg.mask = data;
+ logerror("DMA: Mask set [%02x]\n",data);
+ break;
}
}
diff --git a/src/devices/machine/upd71071.h b/src/devices/machine/upd71071.h
index 4a4b6d1c330..21720d295d6 100644
--- a/src/devices/machine/upd71071.h
+++ b/src/devices/machine/upd71071.h
@@ -1,52 +1,25 @@
// license:BSD-3-Clause
// copyright-holders:Barry Rodewald
-#ifndef __UPD71071_H__
-#define __UPD71071_H__
+#ifndef MAME_MACHINE_UPD71071_H
+#define MAME_MACHINE_UPD71071_H
+#pragma once
-struct upd71071_reg
-{
- uint8_t initialise;
- uint8_t channel;
- uint16_t count_current[4];
- uint16_t count_base[4];
- uint32_t address_current[4];
- uint32_t address_base[4];
- uint16_t device_control;
- uint8_t mode_control[4];
- uint8_t status;
- uint8_t temp_l;
- uint8_t temp_h;
- uint8_t request;
- uint8_t mask;
-};
-
class upd71071_device : public device_t
{
public:
upd71071_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~upd71071_device() {}
static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<upd71071_device &>(device).m_cpu.set_tag(tag); }
static void set_clock(device_t &device, int clock) { downcast<upd71071_device &>(device).m_upd_clock = clock; }
- template<class _Object> static devcb_base &set_out_hreq_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_out_hreq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_eop_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_out_eop_cb.set_callback(object); }
-
- template<class _Object> static devcb_base &set_dma_read_0_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_dma_read_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_read_1_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_dma_read_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_read_2_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_dma_read_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_read_3_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_dma_read_3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_write_0_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_dma_write_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_write_1_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_dma_write_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_write_2_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_dma_write_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_write_3_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_dma_write_3_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_hreq_callback(device_t &device, Object &&cb) { return downcast<upd71071_device &>(device).m_out_hreq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_eop_callback(device_t &device, Object &&cb) { return downcast<upd71071_device &>(device).m_out_eop_cb.set_callback(std::forward<Object>(cb)); }
- template<class _Object> static devcb_base &set_out_dack_0_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_out_dack_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_1_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_out_dack_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_2_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_out_dack_2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dack_3_callback(device_t &device, _Object object) { return downcast<upd71071_device &>(device).m_out_dack_3_cb.set_callback(object); }
+ template <unsigned N, class Object> static devcb_base &set_dma_read_callback(device_t &device, Object &&cb) { return downcast<upd71071_device &>(device).m_dma_read_cb[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N, class Object> static devcb_base &set_dma_write_callback(device_t &device, Object &&cb) { return downcast<upd71071_device &>(device).m_dma_write_cb[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N, class Object> static devcb_base &set_out_dack_callback(device_t &device, Object &&cb) { return downcast<upd71071_device &>(device).m_out_dack_cb[N].set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -60,11 +33,28 @@ protected:
virtual void device_start() override;
private:
- // internal state
+ struct upd71071_reg
+ {
+ uint8_t initialise;
+ uint8_t channel;
+ uint16_t count_current[4];
+ uint16_t count_base[4];
+ uint32_t address_current[4];
+ uint32_t address_base[4];
+ uint16_t device_control;
+ uint8_t mode_control[4];
+ uint8_t status;
+ uint8_t temp_l;
+ uint8_t temp_h;
+ uint8_t request;
+ uint8_t mask;
+ };
+
void soft_reset();
TIMER_CALLBACK_MEMBER(dma_transfer_timer);
- struct upd71071_reg m_reg;
+ // internal state
+ upd71071_reg m_reg;
int m_selected_channel;
int m_buswidth;
int m_dmarq[4];
@@ -75,71 +65,62 @@ private:
int m_upd_clock;
devcb_write_line m_out_hreq_cb;
devcb_write_line m_out_eop_cb;
- devcb_read16 m_dma_read_0_cb;
- devcb_read16 m_dma_read_1_cb;
- devcb_read16 m_dma_read_2_cb;
- devcb_read16 m_dma_read_3_cb;
- devcb_write16 m_dma_write_0_cb;
- devcb_write16 m_dma_write_1_cb;
- devcb_write16 m_dma_write_2_cb;
- devcb_write16 m_dma_write_3_cb;
- devcb_write_line m_out_dack_0_cb;
- devcb_write_line m_out_dack_1_cb;
- devcb_write_line m_out_dack_2_cb;
- devcb_write_line m_out_dack_3_cb;
+ devcb_read16 m_dma_read_cb[4];
+ devcb_write16 m_dma_write_cb[4];
+ devcb_write_line m_out_dack_cb[4];
int m_hreq;
int m_eop;
optional_device<cpu_device> m_cpu;
};
-extern const device_type UPD71071;
+DECLARE_DEVICE_TYPE(UPD71071, upd71071_device)
-#define MCFG_UPD71071_CPU(_tag) \
- upd71071_device::static_set_cpu_tag(*device, "^" _tag);
+#define MCFG_UPD71071_CPU(tag) \
+ upd71071_device::static_set_cpu_tag(*device, ("^" tag));
-#define MCFG_UPD71071_CLOCK(_clk) \
- upd71071_device::set_clock(*device, _clk);
+#define MCFG_UPD71071_CLOCK(clk) \
+ upd71071_device::set_clock(*device, (clk));
-#define MCFG_UPD71071_OUT_HREQ_CB(_devcb) \
- devcb = &upd71071_device::set_out_hreq_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_OUT_HREQ_CB(cb) \
+ devcb = &upd71071_device::set_out_hreq_callback(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_OUT_EOP_CB(_devcb) \
- devcb = &upd71071_device::set_out_eop_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_OUT_EOP_CB(cb) \
+ devcb = &upd71071_device::set_out_eop_callback(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_DMA_READ_0_CB(_devcb) \
- devcb = &upd71071_device::set_dma_read_0_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_DMA_READ_0_CB(cb) \
+ devcb = &upd71071_device::set_dma_read_callback<0>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_DMA_READ_1_CB(_devcb) \
- devcb = &upd71071_device::set_dma_read_1_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_DMA_READ_1_CB(cb) \
+ devcb = &upd71071_device::set_dma_read_callback<1>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_DMA_READ_2_CB(_devcb) \
- devcb = &upd71071_device::set_dma_read_2_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_DMA_READ_2_CB(cb) \
+ devcb = &upd71071_device::set_dma_read_callback<2>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_DMA_READ_3_CB(_devcb) \
- devcb = &upd71071_device::set_dma_read_3_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_DMA_READ_3_CB(cb) \
+ devcb = &upd71071_device::set_dma_read_callback<3>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_DMA_WRITE_0_CB(_devcb) \
- devcb = &upd71071_device::set_dma_write_0_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_DMA_WRITE_0_CB(cb) \
+ devcb = &upd71071_device::set_dma_write_callback<0>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_DMA_WRITE_1_CB(_devcb) \
- devcb = &upd71071_device::set_dma_write_1_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_DMA_WRITE_1_CB(cb) \
+ devcb = &upd71071_device::set_dma_write_callback<1>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_DMA_WRITE_2_CB(_devcb) \
- devcb = &upd71071_device::set_dma_write_2_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_DMA_WRITE_2_CB(cb) \
+ devcb = &upd71071_device::set_dma_write_callback<2>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_DMA_WRITE_3_CB(_devcb) \
- devcb = &upd71071_device::set_dma_write_3_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_DMA_WRITE_3_CB(cb) \
+ devcb = &upd71071_device::set_dma_write_callback<3>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_OUT_DACK_0_CB(_devcb) \
- devcb = &upd71071_device::set_out_dack_0_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_OUT_DACK_0_CB(cb) \
+ devcb = &upd71071_device::set_out_dack_callback<0>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_OUT_DACK_1_CB(_devcb) \
- devcb = &upd71071_device::set_out_dack_1_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_OUT_DACK_1_CB(cb) \
+ devcb = &upd71071_device::set_out_dack_callback<1>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_OUT_DACK_2_CB(_devcb) \
- devcb = &upd71071_device::set_out_dack_2_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_OUT_DACK_2_CB(cb) \
+ devcb = &upd71071_device::set_out_dack_callback<2>(*device, (DEVCB_##cb));
-#define MCFG_UPD71071_OUT_DACK_3_CB(_devcb) \
- devcb = &upd71071_device::set_out_dack_3_callback(*device, DEVCB_##_devcb);
+#define MCFG_UPD71071_OUT_DACK_3_CB(cb) \
+ devcb = &upd71071_device::set_out_dack_callback<3>(*device, (DEVCB_##cb));
-#endif /*UPD71071_H_*/
+#endif // MAME_MACHINE_UPD71071_H
diff --git a/src/devices/machine/upd765.cpp b/src/devices/machine/upd765.cpp
index bbae185d7d6..2884063e27a 100644
--- a/src/devices/machine/upd765.cpp
+++ b/src/devices/machine/upd765.cpp
@@ -7,18 +7,18 @@
#define LOG 0
-const device_type UPD765A = device_creator<upd765a_device>;
-const device_type UPD765B = device_creator<upd765b_device>;
-const device_type I8272A = device_creator<i8272a_device>;
-const device_type UPD72065 = device_creator<upd72065_device>;
-const device_type SMC37C78 = device_creator<smc37c78_device>;
-const device_type N82077AA = device_creator<n82077aa_device>;
-const device_type PC_FDC_SUPERIO = device_creator<pc_fdc_superio_device>;
-const device_type DP8473 = device_creator<dp8473_device>;
-const device_type PC8477A = device_creator<pc8477a_device>;
-const device_type WD37C65C = device_creator<wd37c65c_device>;
-const device_type MCS3201 = device_creator<mcs3201_device>;
-const device_type TC8566AF = device_creator<tc8566af_device>;
+DEFINE_DEVICE_TYPE(UPD765A, upd765a_device, "upd765a", "NEC uPD765A FDC")
+DEFINE_DEVICE_TYPE(UPD765B, upd765b_device, "upd765b", "NEC uPD765B FDC")
+DEFINE_DEVICE_TYPE(I8272A, i8272a_device, "i8272a", "Intel 8272A FDC")
+DEFINE_DEVICE_TYPE(UPD72065, upd72065_device, "upd72065", "NEC uPD72065 FDC")
+DEFINE_DEVICE_TYPE(SMC37C78, smc37c78_device, "smc37c78", "SMC FDC73C78 FDC")
+DEFINE_DEVICE_TYPE(N82077AA, n82077aa_device, "n82077aa", "Intel N82077AA FDC")
+DEFINE_DEVICE_TYPE(PC_FDC_SUPERIO, pc_fdc_superio_device, "pc_fdc_superio", "PC FDC SUPERIO")
+DEFINE_DEVICE_TYPE(DP8473, dp8473_device, "dp8473", "National Semiconductor DP8473 FDC")
+DEFINE_DEVICE_TYPE(PC8477A, pc8477a_device, "pc8477a", "National Semiconductor PC8477A FDC")
+DEFINE_DEVICE_TYPE(WD37C65C, wd37c65c_device, "wd37c65c", "Western Digital WD37C65C FDC")
+DEFINE_DEVICE_TYPE(MCS3201, mcs3201_device, "mcs3201", "Motorola MCS3201 FDC")
+DEFINE_DEVICE_TYPE(TC8566AF, tc8566af_device, "tc8566af", "Toshiba TC8566AF FDC")
DEVICE_ADDRESS_MAP_START(map, 8, upd765a_device)
AM_RANGE(0x0, 0x0) AM_READ(msr_r)
@@ -109,10 +109,10 @@ DEVICE_ADDRESS_MAP_START( map, 8, tc8566af_device )
ADDRESS_MAP_END
-int upd765_family_device::rates[4] = { 500000, 300000, 250000, 1000000 };
+constexpr int upd765_family_device::rates[4];
-upd765_family_device::upd765_family_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- pc_fdc_interface(mconfig, type, name, tag, owner, clock, shortname, source),
+upd765_family_device::upd765_family_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ pc_fdc_interface(mconfig, type, tag, owner, clock),
intrq_cb(*this),
drq_cb(*this),
hdl_cb(*this)
@@ -2419,60 +2419,60 @@ bool upd765_family_device::sector_matches() const
cur_live.idbuf[3] == command[5];
}
-upd765a_device::upd765a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, UPD765A, "UPD765A", tag, owner, clock, "upd765a", __FILE__)
+upd765a_device::upd765a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, UPD765A, tag, owner, clock)
{
dor_reset = 0x0c;
}
-upd765b_device::upd765b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, UPD765B, "UPD765B", tag, owner, clock, "upd765b", __FILE__)
+upd765b_device::upd765b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, UPD765B, tag, owner, clock)
{
dor_reset = 0x0c;
}
-i8272a_device::i8272a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, I8272A, "I8272A", tag, owner, clock, "i8272a", __FILE__)
+i8272a_device::i8272a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, I8272A, tag, owner, clock)
{
dor_reset = 0x0c;
}
-upd72065_device::upd72065_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, UPD72065, "UPD72065", tag, owner, clock, "upd72065", __FILE__)
+upd72065_device::upd72065_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, UPD72065, tag, owner, clock)
{
dor_reset = 0x0c;
}
-smc37c78_device::smc37c78_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, SMC37C78, "SMC37C78", tag, owner, clock, "smc37c78", __FILE__)
+smc37c78_device::smc37c78_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, SMC37C78, tag, owner, clock)
{
ready_connected = false;
select_connected = true;
}
-n82077aa_device::n82077aa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, N82077AA, "N82077AA", tag, owner, clock, "n82077aa", __FILE__)
+n82077aa_device::n82077aa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, N82077AA, tag, owner, clock)
{
ready_connected = false;
select_connected = true;
}
-pc_fdc_superio_device::pc_fdc_superio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, PC_FDC_SUPERIO, "PC FDC SUPERIO", tag, owner, clock, "pc_fdc_superio", __FILE__)
+pc_fdc_superio_device::pc_fdc_superio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, PC_FDC_SUPERIO, tag, owner, clock)
{
ready_polled = false;
ready_connected = false;
select_connected = true;
}
-dp8473_device::dp8473_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, DP8473, "DP8473", tag, owner, clock, "dp8473", __FILE__)
+dp8473_device::dp8473_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, DP8473, tag, owner, clock)
{
ready_polled = false;
ready_connected = false;
select_connected = true;
}
-pc8477a_device::pc8477a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, PC8477A, "PC8477A", tag, owner, clock, "pc8477a", __FILE__)
+pc8477a_device::pc8477a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, PC8477A, tag, owner, clock)
{
ready_polled = true;
ready_connected = false;
select_connected = true;
}
-wd37c65c_device::wd37c65c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, WD37C65C, "WD37C65C", tag, owner, clock, "wd37c65c", __FILE__)
+wd37c65c_device::wd37c65c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, WD37C65C, tag, owner, clock)
{
ready_polled = true;
ready_connected = false;
@@ -2480,7 +2480,7 @@ wd37c65c_device::wd37c65c_device(const machine_config &mconfig, const char *tag,
}
mcs3201_device::mcs3201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- upd765_family_device(mconfig, MCS3201, "Motorola MCS3201", tag, owner, clock, "mcs3201", __FILE__),
+ upd765_family_device(mconfig, MCS3201, tag, owner, clock),
m_input_handler(*this)
{
dor_reset = 0x0c;
@@ -2501,7 +2501,7 @@ READ8_MEMBER( mcs3201_device::input_r )
}
tc8566af_device::tc8566af_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upd765_family_device(mconfig, TC8566AF, "TC8566AF", tag, owner, clock, "tc8566af", __FILE__)
+ : upd765_family_device(mconfig, TC8566AF, tag, owner, clock)
, m_cr1(0)
{
ready_polled = true;
diff --git a/src/devices/machine/upd765.h b/src/devices/machine/upd765.h
index 458d832190c..143419114cd 100644
--- a/src/devices/machine/upd765.h
+++ b/src/devices/machine/upd765.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef __UPD765_F_H__
-#define __UPD765_F_H__
+#ifndef MAME_DEVICES_MACHINE_UPD765_H
+#define MAME_DEVICES_MACHINE_UPD765_H
+
+#pragma once
#include "imagedev/floppy.h"
#include "fdc_pll.h"
@@ -70,12 +72,13 @@
/* Interface required for PC ISA wrapping */
class pc_fdc_interface : public device_t {
+protected:
+ using device_t::device_t;
+
public:
typedef delegate<uint8_t ()> byte_read_cb;
typedef delegate<void (uint8_t)> byte_write_cb;
- pc_fdc_interface(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : device_t(mconfig, type, name, tag, owner, clock, shortname, source) {}
-
/* Note that the address map must cover and handle the whole 0-7
* range. The upd765, while conforming to the rest of the
* interface, is not eligible as a result.
@@ -94,11 +97,9 @@ class upd765_family_device : public pc_fdc_interface {
public:
enum { MODE_AT, MODE_PS2, MODE_M30 };
- upd765_family_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- template<class _Object> static devcb_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<upd765_family_device &>(device).intrq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<upd765_family_device &>(device).drq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_hdl_wr_callback(device_t &device, _Object object) { return downcast<upd765_family_device &>(device).hdl_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<upd765_family_device &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<upd765_family_device &>(device).drq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hdl_wr_callback(device_t &device, Object &&cb) { return downcast<upd765_family_device &>(device).hdl_cb.set_callback(std::forward<Object>(cb)); }
virtual DECLARE_ADDRESS_MAP(map, 8) override = 0;
@@ -140,6 +141,8 @@ public:
void soft_reset();
protected:
+ upd765_family_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -306,7 +309,7 @@ protected:
fdc_pll_t pll;
};
- static int rates[4];
+ static constexpr int rates[4] = { 500000, 300000, 250000, 1000000 };
bool ready_connected, ready_polled, select_connected;
@@ -491,7 +494,7 @@ public:
mcs3201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_input_handler(device_t &device, _Object object) { return downcast<mcs3201_device &>(device).m_input_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_input_handler(device_t &device, Object &&cb) { return downcast<mcs3201_device &>(device).m_input_handler.set_callback(std::forward<Object>(cb)); }
virtual DECLARE_ADDRESS_MAP(map, 8) override;
DECLARE_READ8_MEMBER( input_r );
@@ -518,17 +521,17 @@ private:
uint8_t m_cr1;
};
-extern const device_type UPD765A;
-extern const device_type UPD765B;
-extern const device_type I8272A;
-extern const device_type UPD72065;
-extern const device_type SMC37C78;
-extern const device_type N82077AA;
-extern const device_type PC_FDC_SUPERIO;
-extern const device_type DP8473;
-extern const device_type PC8477A;
-extern const device_type WD37C65C;
-extern const device_type MCS3201;
-extern const device_type TC8566AF;
-
-#endif
+DECLARE_DEVICE_TYPE(UPD765A, upd765a_device)
+DECLARE_DEVICE_TYPE(UPD765B, upd765b_device)
+DECLARE_DEVICE_TYPE(I8272A, i8272a_device)
+DECLARE_DEVICE_TYPE(UPD72065, upd72065_device)
+DECLARE_DEVICE_TYPE(SMC37C78, smc37c78_device)
+DECLARE_DEVICE_TYPE(N82077AA, n82077aa_device)
+DECLARE_DEVICE_TYPE(PC_FDC_SUPERIO, pc_fdc_superio_device)
+DECLARE_DEVICE_TYPE(DP8473, dp8473_device)
+DECLARE_DEVICE_TYPE(PC8477A, pc8477a_device)
+DECLARE_DEVICE_TYPE(WD37C65C, wd37c65c_device)
+DECLARE_DEVICE_TYPE(MCS3201, mcs3201_device)
+DECLARE_DEVICE_TYPE(TC8566AF, tc8566af_device)
+
+#endif // MAME_DEVICES_MACHINE_UPD765_H
diff --git a/src/devices/machine/v3021.cpp b/src/devices/machine/v3021.cpp
index c448ac3a4ea..c405641b72f 100644
--- a/src/devices/machine/v3021.cpp
+++ b/src/devices/machine/v3021.cpp
@@ -22,7 +22,7 @@
//**************************************************************************
// device type definition
-const device_type v3021 = device_creator<v3021_device>;
+DEFINE_DEVICE_TYPE(V3021, v3021_device, "v3021", "V3021 RTC")
//**************************************************************************
@@ -34,13 +34,13 @@ const device_type v3021 = device_creator<v3021_device>;
//-------------------------------------------------
v3021_device::v3021_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, v3021, "V3021 RTC", tag, owner, clock, "v3021", __FILE__), m_cal_mask(0), m_cal_com(0), m_cal_cnt(0), m_cal_val(0)
+ : device_t(mconfig, V3021, tag, owner, clock), m_cal_mask(0), m_cal_com(0), m_cal_cnt(0), m_cal_val(0)
{
}
TIMER_CALLBACK_MEMBER(v3021_device::timer_callback)
{
- static const uint8_t dpm[12] = { 0x31, 0x28, 0x31, 0x30, 0x31, 0x30, 0x31, 0x31, 0x30, 0x31, 0x30, 0x31 };
+ static constexpr uint8_t dpm[12] = { 0x31, 0x28, 0x31, 0x30, 0x31, 0x30, 0x31, 0x31, 0x30, 0x31, 0x30, 0x31 };
int dpm_count;
m_rtc.sec++;
diff --git a/src/devices/machine/v3021.h b/src/devices/machine/v3021.h
index 5a968e30bfb..d7ac0eae603 100644
--- a/src/devices/machine/v3021.h
+++ b/src/devices/machine/v3021.h
@@ -10,10 +10,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_V3021_H
+#define MAME_MACHINE_V3021_H
-#ifndef __v3021DEV_H__
-#define __v3021DEV_H__
+#pragma once
@@ -22,21 +22,15 @@
//**************************************************************************
#define MCFG_V3021_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, v3021, XTAL_32_768kHz)
+ MCFG_DEVICE_ADD(_tag, V3021, XTAL_32_768kHz)
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-struct rtc_regs_t
-{
- uint8_t sec, min, hour, day, wday, month, year;
-};
-
-
// ======================> v3021_device
-class v3021_device : public device_t
+class v3021_device : public device_t
{
public:
// construction/destruction
@@ -48,6 +42,11 @@ public:
TIMER_CALLBACK_MEMBER(timer_callback);
protected:
+ struct rtc_regs_t
+ {
+ uint8_t sec, min, hour, day, wday, month, year;
+ };
+
// device-level overrides
virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_start() override;
@@ -60,14 +59,6 @@ protected:
// device type definition
-extern const device_type v3021;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(V3021, v3021_device)
-#endif
+#endif // MAME_MACHINE_V3021_H
diff --git a/src/devices/machine/vrc4373.cpp b/src/devices/machine/vrc4373.cpp
index c37b64025aa..ea4ed0dd716 100644
--- a/src/devices/machine/vrc4373.cpp
+++ b/src/devices/machine/vrc4373.cpp
@@ -3,11 +3,72 @@
#include "emu.h"
#include "vrc4373.h"
-#define LOG_NILE (0)
-#define LOG_NILE_MASTER (0)
-#define LOG_NILE_TARGET (0)
-
-const device_type VRC4373 = device_creator<vrc4373_device>;
+#define LOG_GENERAL (1U << 0)
+#define LOG_NILE (1U << 1)
+#define LOG_NILE_MASTER (1U << 2)
+#define LOG_NILE_TARGET (1U << 3)
+
+//#define VERBOSE (LOG_NILE | LOG_NILE_MASTER | LOG_NILE_TARGET)
+#include "logmacro.h"
+
+#define LOGNILE(...) LOGMASKED(LOG_NILE, __VA_ARGS__)
+#define LOGNILEMASTER(...) LOGMASKED(LOG_NILE_MASTER, __VA_ARGS__)
+#define LOGNILETARGET(...) LOGMASKED(LOG_NILE_TARGET, __VA_ARGS__)
+
+
+#define VRC4373_PAGESHIFT 12
+
+/* NILE 3 registers 0x000-0x0ff */
+#define NREG_BMCR (0x000/4)
+#define NREG_SIMM1 (0x004/4)
+#define NREG_SIMM2 (0x008/4)
+#define NREG_SIMM3 (0x00C/4)
+#define NREG_SIMM4 (0x010/4)
+#define NREG_PCIMW1 (0x014/4)
+#define NREG_PCIMW2 (0x018/4)
+#define NREG_PCITW1 (0x01C/4)
+#define NREG_PCITW2 (0x020/4)
+#define NREG_PCIMIOW (0x024/4)
+#define NREG_PCICDR (0x028/4)
+#define NREG_PCICAR (0x02C/4)
+#define NREG_PCIMB1 (0x030/4)
+#define NREG_PCIMB2 (0x034/4)
+#define NREG_DMACR1 (0x038/4)
+#define NREG_DMAMAR1 (0x03C/4)
+#define NREG_DMAPCI1 (0x040/4)
+#define NREG_DMACR2 (0x044/4)
+#define NREG_DMAMAR2 (0x048/4)
+#define NREG_DMAPCI2 (0x04C/4)
+
+#define NREG_BESR (0x050/4)
+#define NREG_ICSR (0x054/4)
+#define NREG_DRAMRCR (0x058/4)
+#define NREG_BOOTWP (0x05C/4)
+#define NREG_PCIEAR (0x060/4)
+#define NREG_DMA_REM (0x064/4)
+#define NREG_DMA_CMAR (0x068/4)
+#define NREG_DMA_CPAR (0x06C/4)
+#define NREG_PCIRC (0x070/4)
+#define NREG_PCIEN (0x074/4)
+#define NREG_PMIR (0x078/4)
+
+#define PCI_BUS_CLOCK 33000000
+// Number of dma words to transfer at a time, real hardware bursts 8
+#define DMA_BURST_SIZE 128
+#define DMA_TIMER_PERIOD attotime::from_hz(PCI_BUS_CLOCK / 32)
+
+#define DMA_BUSY 0x80000000
+#define DMA_INT_EN 0x40000000
+#define DMA_RW 0x20000000
+#define DMA_GO 0x10000000
+#define DMA_SUS 0x08000000
+#define DMA_INC 0x04000000
+#define DMA_MIO 0x02000000
+#define DMA_RST 0x01000000
+#define DMA_BLK_SIZE 0x000fffff
+
+
+DEFINE_DEVICE_TYPE(VRC4373, vrc4373_device, "vrc4373", "NEC VRC4373 System Controller")
DEVICE_ADDRESS_MAP_START(config_map, 32, vrc4373_device)
AM_RANGE(0x40, 0x43) AM_READWRITE (pcictrl_r, pcictrl_w)
@@ -30,7 +91,7 @@ DEVICE_ADDRESS_MAP_START(target2_map, 32, vrc4373_device)
ADDRESS_MAP_END
vrc4373_device::vrc4373_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_host_device(mconfig, VRC4373, "NEC VRC4373 System Controller", tag, owner, clock, "vrc4373", __FILE__),
+ : pci_host_device(mconfig, VRC4373, tag, owner, clock),
m_cpu_space(nullptr), m_cpu(nullptr), cpu_tag(nullptr), m_irq_num(-1), m_ram_size(0x0), m_simm0_size(0x0),
m_mem_config("memory_space", ENDIANNESS_LITTLE, 32, 32),
m_io_config("io_space", ENDIANNESS_LITTLE, 32, 32), m_pci1_laddr(0), m_pci2_laddr(0), m_pci_io_laddr(0), m_target1_laddr(0), m_target2_laddr(0),
@@ -136,9 +197,7 @@ void vrc4373_device::map_cpu_space()
m_ram.resize(winSize / 4);
m_cpu_space->install_ram(winStart, winEnd, m_ram.data());
m_cpu->add_fastram(winStart, winEnd, false, m_ram.data());
- if (LOG_NILE)
- logerror("map_cpu_space ram_size=%08X ram_base=%08X\n", winSize, winStart);
- //printf("map_cpu_space ram_size=%08X bytes ram_base=%08X\n", winSize, winStart);
+ LOGNILE("map_cpu_space ram_size=%08X ram_base=%08X\n", winSize, winStart);
}
// Map SIMMs
@@ -156,9 +215,7 @@ void vrc4373_device::map_cpu_space()
m_simm[simIndex].resize(winSize / 4);
m_cpu_space->install_ram(winStart, winEnd, m_simm[simIndex].data());
m_cpu->add_fastram(winStart, winEnd, false, m_simm[simIndex].data());
- if (LOG_NILE)
- logerror("map_cpu_space simm_size[%i]=%08X simm_base=%08X\n", simIndex, winSize, winStart);
- //printf("map_cpu_space simm_size[%i]=%08X bytes simm_base=%08X\n", simIndex, winSize, winStart);
+ LOGNILE("map_cpu_space simm_size[%i]=%08X simm_base=%08X\n", simIndex, winSize, winStart);
}
}
@@ -169,8 +226,7 @@ void vrc4373_device::map_cpu_space()
winSize = winEnd - winStart + 1;
m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc4373_device::master1_r), this));
m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc4373_device::master1_w), this));
- if (LOG_NILE)
- logerror("%s: map_cpu_space Master Window 1 start=%08X end=%08X size=%08X laddr=%08X\n", tag(), winStart, winEnd, winSize, m_pci1_laddr);
+ LOGNILE("map_cpu_space Master Window 1 start=%08X end=%08X size=%08X laddr=%08X\n", winStart, winEnd, winSize, m_pci1_laddr);
}
// PCI Master Window 2
if (m_cpu_regs[NREG_PCIMW2]&0x1000) {
@@ -179,8 +235,7 @@ void vrc4373_device::map_cpu_space()
winSize = winEnd - winStart + 1;
m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc4373_device::master2_r), this));
m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc4373_device::master2_w), this));
- if (LOG_NILE)
- logerror("%s: map_cpu_space Master Window 2 start=%08X end=%08X size=%08X laddr=%08X\n", tag(), winStart, winEnd, winSize, m_pci2_laddr);
+ LOGNILE("map_cpu_space Master Window 2 start=%08X end=%08X size=%08X laddr=%08X\n", winStart, winEnd, winSize, m_pci2_laddr);
}
// PCI IO Window
if (m_cpu_regs[NREG_PCIMIOW]&0x1000) {
@@ -189,8 +244,7 @@ void vrc4373_device::map_cpu_space()
winSize = winEnd - winStart + 1;
m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc4373_device::master_io_r), this));
m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc4373_device::master_io_w), this));
- if (LOG_NILE)
- logerror("%s: map_cpu_space IO Window start=%08X end=%08X size=%08X laddr=%08X\n", tag(), winStart, winEnd, winSize, m_pci_io_laddr);
+ LOGNILE("map_cpu_space IO Window start=%08X end=%08X size=%08X laddr=%08X\n", tag(), winStart, winEnd, winSize, m_pci_io_laddr);
}
}
@@ -206,8 +260,7 @@ void vrc4373_device::map_extra(uint64_t memory_window_start, uint64_t memory_win
winSize = winEnd - winStart + 1;
memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc4373_device::target1_r), this));
memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc4373_device::target1_w), this));
- if (LOG_NILE)
- logerror("%s: map_extra Target Window 1 start=%08X end=%08X size=%08X laddr=%08X\n", tag(), winStart, winEnd, winSize, m_target1_laddr);
+ LOGNILE("map_extra Target Window 1 start=%08X end=%08X size=%08X laddr=%08X\n", winStart, winEnd, winSize, m_target1_laddr);
}
// PCI Target Window 2
if (m_cpu_regs[NREG_PCITW2]&0x1000) {
@@ -216,8 +269,7 @@ void vrc4373_device::map_extra(uint64_t memory_window_start, uint64_t memory_win
winSize = winEnd - winStart + 1;
memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc4373_device::target2_r), this));
memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc4373_device::target2_w), this));
- if (LOG_NILE)
- logerror("%s: map_extra Target Window 2 start=%08X end=%08X size=%08X laddr=%08X\n", tag(), winStart, winEnd, winSize, m_target2_laddr);
+ LOGNILE("map_extra Target Window 2 start=%08X end=%08X size=%08X laddr=%08X\n", winStart, winEnd, winSize, m_target2_laddr);
}
}
@@ -228,96 +280,83 @@ void vrc4373_device::reset_all_mappings()
void vrc4373_device::set_cpu_tag(const char *_cpu_tag)
{
- if (LOG_NILE)
- logerror("%s: set_cpu_tag\n", tag());
+ LOGNILE("set_cpu_tag\n");
cpu_tag = _cpu_tag;
}
// PCI bus control
READ32_MEMBER (vrc4373_device::pcictrl_r)
{
uint32_t result = 0;
- if (LOG_NILE)
- logerror("%06X:nile pcictrl_r from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
+ LOGNILE("%06X:nile pcictrl_r from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
return result;
}
WRITE32_MEMBER (vrc4373_device::pcictrl_w)
{
- if (LOG_NILE)
- logerror("%06X:nile pcictrl_w to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
+ LOGNILE("%06X:nile pcictrl_w to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
}
// PCI Master Window 1
READ32_MEMBER (vrc4373_device::master1_r)
{
uint32_t result = this->space(AS_DATA).read_dword(m_pci1_laddr | (offset*4), mem_mask);
- if (LOG_NILE_MASTER)
- logerror("%06X:nile master1 read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
+ LOGNILEMASTER("%06X:nile master1 read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
return result;
}
WRITE32_MEMBER (vrc4373_device::master1_w)
{
this->space(AS_DATA).write_dword(m_pci1_laddr | (offset*4), data, mem_mask);
- if (LOG_NILE_MASTER)
- logerror("%06X:nile master1 write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
+ LOGNILEMASTER("%06X:nile master1 write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
}
// PCI Master Window 2
READ32_MEMBER (vrc4373_device::master2_r)
{
uint32_t result = this->space(AS_DATA).read_dword(m_pci2_laddr | (offset*4), mem_mask);
- if (LOG_NILE_MASTER)
- logerror("%06X:nile master2 read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
+ LOGNILEMASTER("%06X:nile master2 read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
return result;
}
WRITE32_MEMBER (vrc4373_device::master2_w)
{
this->space(AS_DATA).write_dword(m_pci2_laddr | (offset*4), data, mem_mask);
- if (LOG_NILE_MASTER)
- logerror("%06X:nile master2 write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
+ LOGNILEMASTER("%06X:nile master2 write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
}
// PCI Master IO Window
READ32_MEMBER (vrc4373_device::master_io_r)
{
uint32_t result = this->space(AS_IO).read_dword(m_pci_io_laddr | (offset*4), mem_mask);
- if (LOG_NILE_MASTER)
- logerror("%06X:nile master io read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
+ LOGNILEMASTER("%06X:nile master io read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
return result;
}
WRITE32_MEMBER (vrc4373_device::master_io_w)
{
this->space(AS_IO).write_dword(m_pci_io_laddr | (offset*4), data, mem_mask);
- if (LOG_NILE_MASTER)
- logerror("%06X:nile master io write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
+ LOGNILEMASTER("%06X:nile master io write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
}
// PCI Target Window 1
READ32_MEMBER (vrc4373_device::target1_r)
{
uint32_t result = m_cpu->space(AS_PROGRAM).read_dword(m_target1_laddr | (offset*4), mem_mask);
- if (LOG_NILE_TARGET)
- logerror("%08X:nile target1 read from offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, result, mem_mask);
+ LOGNILETARGET("%08X:nile target1 read from offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, result, mem_mask);
return result;
}
WRITE32_MEMBER (vrc4373_device::target1_w)
{
m_cpu->space(AS_PROGRAM).write_dword(m_target1_laddr | (offset*4), data, mem_mask);
- if (LOG_NILE_TARGET)
- logerror("%08X:nile target1 write to offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, data, mem_mask);
+ LOGNILETARGET("%08X:nile target1 write to offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, data, mem_mask);
}
// PCI Target Window 2
READ32_MEMBER (vrc4373_device::target2_r)
{
uint32_t result = m_cpu->space(AS_PROGRAM).read_dword(m_target2_laddr | (offset*4), mem_mask);
- if (LOG_NILE_TARGET)
- logerror("%08X:nile target2 read from offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, result, mem_mask);
+ LOGNILETARGET("%08X:nile target2 read from offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, result, mem_mask);
return result;
}
WRITE32_MEMBER (vrc4373_device::target2_w)
{
m_cpu->space(AS_PROGRAM).write_dword(m_target2_laddr | (offset*4), data, mem_mask);
- if (LOG_NILE_TARGET)
- logerror("%08X:nile target2 write to offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, data, mem_mask);
+ LOGNILETARGET("%08X:nile target2 write to offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, data, mem_mask);
}
// DMA Transfer
@@ -327,8 +366,7 @@ TIMER_CALLBACK_MEMBER (vrc4373_device::dma_transfer)
// Check for dma suspension
if (m_cpu_regs[NREG_DMACR1 + which * 0xc] & DMA_SUS) {
- if (LOG_NILE)
- logerror("%08X:nile DMA Suspended PCI: %08X MEM: %08X Words: %X\n", m_cpu->space(AS_PROGRAM).device().safe_pc(), m_cpu_regs[NREG_DMA_CPAR], m_cpu_regs[NREG_DMA_CMAR], m_cpu_regs[NREG_DMA_REM]);
+ LOGNILE("%08X:nile DMA Suspended PCI: %08X MEM: %08X Words: %X\n", m_cpu->space(AS_PROGRAM).device().safe_pc(), m_cpu_regs[NREG_DMA_CPAR], m_cpu_regs[NREG_DMA_CMAR], m_cpu_regs[NREG_DMA_REM]);
return;
}
@@ -398,15 +436,13 @@ READ32_MEMBER (vrc4373_device::cpu_if_r)
default:
break;
}
- if (LOG_NILE)
- logerror("%06X:nile read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
+ LOGNILE("%06X:nile read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
return result;
}
WRITE32_MEMBER(vrc4373_device::cpu_if_w)
{
- if (LOG_NILE)
- logerror("%06X:nile write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
+ LOGNILE("%06X:nile write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
uint32_t modData, oldData;
oldData = m_cpu_regs[offset];
@@ -472,8 +508,7 @@ WRITE32_MEMBER(vrc4373_device::cpu_if_w)
// Start the transfer
m_dma_timer->set_param(which);
m_dma_timer->adjust(attotime::zero, 0, DMA_TIMER_PERIOD);
- if (LOG_NILE)
- logerror("%08X:nile Start DMA Lane %i PCI: %08X MEM: %08X Words: %X\n", m_cpu->space(AS_PROGRAM).device().safe_pc(), which, m_cpu_regs[NREG_DMA_CPAR], m_cpu_regs[NREG_DMA_CMAR], m_cpu_regs[NREG_DMA_REM]);
+ LOGNILE("%08X:nile Start DMA Lane %i PCI: %08X MEM: %08X Words: %X\n", m_cpu->space(AS_PROGRAM).device().safe_pc(), which, m_cpu_regs[NREG_DMA_CPAR], m_cpu_regs[NREG_DMA_CMAR], m_cpu_regs[NREG_DMA_REM]);
}
break;
case NREG_BMCR:
diff --git a/src/devices/machine/vrc4373.h b/src/devices/machine/vrc4373.h
index ed0f842ef60..9555ee777ba 100644
--- a/src/devices/machine/vrc4373.h
+++ b/src/devices/machine/vrc4373.h
@@ -2,8 +2,10 @@
// copyright-holders:Ted Green
// NEC VRC 4373 System Controller
-#ifndef VRC4373_H
-#define VRC4373_H
+#ifndef MAME_MACHINE_VRC4373_H
+#define MAME_MACHINE_VRC4373_H
+
+#pragma once
#include "pci.h"
#include "cpu/mips/mips3.h"
@@ -18,57 +20,6 @@
#define MCFG_VRC4373_SET_SIMM0(_size) \
downcast<vrc4373_device *>(device)->set_simm0_size(_size);
-#define VRC4373_PAGESHIFT 12
-
-/* NILE 3 registers 0x000-0x0ff */
-#define NREG_BMCR (0x000/4)
-#define NREG_SIMM1 (0x004/4)
-#define NREG_SIMM2 (0x008/4)
-#define NREG_SIMM3 (0x00C/4)
-#define NREG_SIMM4 (0x010/4)
-#define NREG_PCIMW1 (0x014/4)
-#define NREG_PCIMW2 (0x018/4)
-#define NREG_PCITW1 (0x01C/4)
-#define NREG_PCITW2 (0x020/4)
-#define NREG_PCIMIOW (0x024/4)
-#define NREG_PCICDR (0x028/4)
-#define NREG_PCICAR (0x02C/4)
-#define NREG_PCIMB1 (0x030/4)
-#define NREG_PCIMB2 (0x034/4)
-#define NREG_DMACR1 (0x038/4)
-#define NREG_DMAMAR1 (0x03C/4)
-#define NREG_DMAPCI1 (0x040/4)
-#define NREG_DMACR2 (0x044/4)
-#define NREG_DMAMAR2 (0x048/4)
-#define NREG_DMAPCI2 (0x04C/4)
-
-#define NREG_BESR (0x050/4)
-#define NREG_ICSR (0x054/4)
-#define NREG_DRAMRCR (0x058/4)
-#define NREG_BOOTWP (0x05C/4)
-#define NREG_PCIEAR (0x060/4)
-#define NREG_DMA_REM (0x064/4)
-#define NREG_DMA_CMAR (0x068/4)
-#define NREG_DMA_CPAR (0x06C/4)
-#define NREG_PCIRC (0x070/4)
-#define NREG_PCIEN (0x074/4)
-#define NREG_PMIR (0x078/4)
-
-#define PCI_BUS_CLOCK 33000000
-// Number of dma words to transfer at a time, real hardware bursts 8
-#define DMA_BURST_SIZE 128
-#define DMA_TIMER_PERIOD attotime::from_hz(PCI_BUS_CLOCK / 32)
-
-#define DMA_BUSY 0x80000000
-#define DMA_INT_EN 0x40000000
-#define DMA_RW 0x20000000
-#define DMA_GO 0x10000000
-#define DMA_SUS 0x08000000
-#define DMA_INC 0x04000000
-#define DMA_MIO 0x02000000
-#define DMA_RST 0x01000000
-#define DMA_BLK_SIZE 0x000fffff
-
class vrc4373_device : public pci_host_device {
public:
@@ -109,13 +60,20 @@ public:
DECLARE_WRITE32_MEMBER(target2_w);
protected:
- address_space *m_cpu_space;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
virtual void device_start() override;
virtual void device_reset() override;
+
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
+
TIMER_CALLBACK_MEMBER(dma_transfer);
+ address_space *m_cpu_space;
+
private:
+ DECLARE_ADDRESS_MAP(cpu_map, 32);
+
+ void map_cpu_space();
+
mips3_device *m_cpu;
const char *cpu_tag;
int m_irq_num;
@@ -124,10 +82,6 @@ private:
address_space_config m_mem_config, m_io_config;
- DECLARE_ADDRESS_MAP(cpu_map, 32);
-
- void map_cpu_space();
-
std::vector<uint32_t> m_ram;
std::vector<uint32_t> m_simm[4];
@@ -143,6 +97,6 @@ private:
};
-extern const device_type VRC4373;
+DECLARE_DEVICE_TYPE(VRC4373, vrc4373_device)
-#endif
+#endif // MAME_MACHINE_VRC4373_H
diff --git a/src/devices/machine/vrc5074.cpp b/src/devices/machine/vrc5074.cpp
index 4d8285e24f0..4f984af7a1b 100644
--- a/src/devices/machine/vrc5074.cpp
+++ b/src/devices/machine/vrc5074.cpp
@@ -12,7 +12,113 @@
#define LOG_NILE_TARGET (0)
#define PRINTF_SERIAL (0)
-const device_type VRC5074 = device_creator<vrc5074_device>;
+/* NILE 4 registers 0x000-0x0ff */
+#define NREG_SDRAM0 (0x000/4)
+#define NREG_SDRAM1 (0x008/4)
+#define NREG_DCS2 (0x010/4) /* SIO misc */
+#define NREG_DCS3 (0x018/4) /* ADC */
+#define NREG_DCS4 (0x020/4) /* CMOS */
+#define NREG_DCS5 (0x028/4) /* SIO */
+#define NREG_DCS6 (0x030/4) /* IOASIC */
+#define NREG_DCS7 (0x038/4) /* ethernet */
+#define NREG_DCS8 (0x040/4)
+#define NREG_PCIW0 (0x060/4)
+#define NREG_PCIW1 (0x068/4)
+#define NREG_INTCS (0x070/4)
+#define NREG_BOOTCS (0x078/4)
+#define NREG_CPUSTAT (0x080/4)
+#define NREG_INTCTRL (0x088/4)
+#define NREG_INTSTAT0 (0x090/4)
+#define NREG_INTSTAT1 (0x098/4)
+#define NREG_INTCLR (0x0A0/4)
+#define NREG_INTPPES (0x0A8/4)
+#define NREG_PCIERR (0x0B8/4)
+#define NREG_MEMCTRL (0x0C0/4)
+#define NREG_ACSTIME (0x0C8/4)
+#define NREG_CHKERR (0x0D0/4)
+#define NREG_PCICTRL (0x0E0/4)
+#define NREG_PCIARB (0x0E8/4)
+#define NREG_PCIINIT0 (0x0F0/4)
+#define NREG_PCIINIT1 (0x0F8/4)
+
+/* NILE 4 registers 0x100-0x1ff */
+#define NREG_LCNFG (0x100/4)
+#define NREG_LCST2 (0x110/4)
+#define NREG_LCST3 (0x118/4)
+#define NREG_LCST4 (0x120/4)
+#define NREG_LCST5 (0x128/4)
+#define NREG_LCST6 (0x130/4)
+#define NREG_LCST7 (0x138/4)
+#define NREG_LCST8 (0x140/4)
+#define NREG_DCSFN (0x150/4)
+#define NREG_DCSIO (0x158/4)
+#define NREG_BCST (0x178/4)
+#define NREG_DMACTRL0 (0x180/4)
+#define NREG_DMASRCA0 (0x188/4)
+#define NREG_DMADESA0 (0x190/4)
+#define NREG_DMACTRL1 (0x198/4)
+#define NREG_DMASRCA1 (0x1A0/4)
+#define NREG_DMADESA1 (0x1A8/4)
+#define NREG_T0CTRL (0x1C0/4)
+#define NREG_T0CNTR (0x1C8/4)
+#define NREG_T1CTRL (0x1D0/4)
+#define NREG_T1CNTR (0x1D8/4)
+#define NREG_T2CTRL (0x1E0/4)
+#define NREG_T2CNTR (0x1E8/4)
+#define NREG_T3CTRL (0x1F0/4)
+#define NREG_T3CNTR (0x1F8/4)
+
+/* NILE 4 registers 0x300-0x3ff */
+#define NREG_UARTRBR (0x00/4)
+#define NREG_UARTTHR (0x00/4)
+#define NREG_UARTIER (0x08/4)
+#define NREG_UARTDLL (0x00/4)
+#define NREG_UARTDLM (0x08/4)
+#define NREG_UARTIIR (0x10/4)
+#define NREG_UARTFCR (0x10/4)
+#define NREG_UARTLCR (0x18/4)
+#define NREG_UARTMCR (0x20/4)
+#define NREG_UARTLSR (0x28/4)
+#define NREG_UARTMSR (0x30/4)
+#define NREG_UARTSCR (0x38/4)
+
+/* NILE 4 interrupts */
+#define NINT_CPCE (0)
+#define NINT_CNTD (1)
+#define NINT_MCE (2)
+#define NINT_DMA (3)
+#define NINT_UART (4)
+#define NINT_WDOG (5)
+#define NINT_GPT (6)
+#define NINT_LBRTD (7)
+#define NINT_INTA (8)
+#define NINT_INTB (9)
+#define NINT_INTC (10)
+#define NINT_INTD (11)
+#define NINT_INTE (12)
+#define NINT_RESV (13)
+#define NINT_PCIS (14)
+#define NINT_PCIE (15)
+
+#define TIMER_PERIOD attotime::from_hz(SYSTEM_CLOCK)
+
+#define PCI_BUS_CLOCK 33000000
+// Number of dma words to transfer at a time, real hardware bursts 8
+#define DMA_BURST_SIZE 128
+#define DMA_TIMER_PERIOD attotime::from_hz(PCI_BUS_CLOCK / 32)
+
+#define DMA_BUSY 0x80000000
+#define DMA_INTEN 0x40000000
+#define DMA_INTVLD 0x20000000
+#define DMA_GO 0x10000000
+#define DMA_SUS 0x08000000
+#define DMA_DSTINC 0x04000000
+#define DMA_SRCINC 0x02000000
+#define DMA_RST 0x01000000
+#define DMA_BLK_SIZE 0x000fffff
+
+
+DEFINE_DEVICE_TYPE(VRC5074, vrc5074_device, "vrc5074", "NEC VRC5074 System Controller")
DEVICE_ADDRESS_MAP_START(config_map, 32, vrc5074_device)
AM_RANGE(0x00000018, 0x00000027) AM_READWRITE(sdram_addr_r, sdram_addr_w)
@@ -34,7 +140,7 @@ DEVICE_ADDRESS_MAP_START(target1_map, 32, vrc5074_device)
ADDRESS_MAP_END
vrc5074_device::vrc5074_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_host_device(mconfig, VRC5074, "NEC VRC5074 System Controller", tag, owner, clock, "vrc5074", __FILE__),
+ : pci_host_device(mconfig, VRC5074, tag, owner, clock),
m_cpu_space(nullptr), m_cpu(nullptr), cpu_tag(nullptr),
m_mem_config("memory_space", ENDIANNESS_LITTLE, 32, 32),
m_io_config("io_space", ENDIANNESS_LITTLE, 32, 32),
diff --git a/src/devices/machine/vrc5074.h b/src/devices/machine/vrc5074.h
index f1e2e01787a..8b31e2c4f54 100644
--- a/src/devices/machine/vrc5074.h
+++ b/src/devices/machine/vrc5074.h
@@ -2,8 +2,10 @@
// copyright-holders: Aaron Giles, Ted Green
// NEC VRC 5074 System Controller
-#ifndef VRC5074_H
-#define VRC5074_H
+#ifndef MAME_MACHINE_VRC5074_H
+#define MAME_MACHINE_VRC5074_H
+
+#pragma once
#include "pci.h"
#include "cpu/mips/mips3.h"
@@ -18,121 +20,16 @@
#define MCFG_VRC5074_SET_CS(_cs_num, _map) \
downcast<vrc5074_device *>(device)->set_map(_cs_num, address_map_delegate(ADDRESS_MAP_NAME(_map), #_map), owner);
-/* NILE 4 registers 0x000-0x0ff */
-#define NREG_SDRAM0 (0x000/4)
-#define NREG_SDRAM1 (0x008/4)
-#define NREG_DCS2 (0x010/4) /* SIO misc */
-#define NREG_DCS3 (0x018/4) /* ADC */
-#define NREG_DCS4 (0x020/4) /* CMOS */
-#define NREG_DCS5 (0x028/4) /* SIO */
-#define NREG_DCS6 (0x030/4) /* IOASIC */
-#define NREG_DCS7 (0x038/4) /* ethernet */
-#define NREG_DCS8 (0x040/4)
-#define NREG_PCIW0 (0x060/4)
-#define NREG_PCIW1 (0x068/4)
-#define NREG_INTCS (0x070/4)
-#define NREG_BOOTCS (0x078/4)
-#define NREG_CPUSTAT (0x080/4)
-#define NREG_INTCTRL (0x088/4)
-#define NREG_INTSTAT0 (0x090/4)
-#define NREG_INTSTAT1 (0x098/4)
-#define NREG_INTCLR (0x0A0/4)
-#define NREG_INTPPES (0x0A8/4)
-#define NREG_PCIERR (0x0B8/4)
-#define NREG_MEMCTRL (0x0C0/4)
-#define NREG_ACSTIME (0x0C8/4)
-#define NREG_CHKERR (0x0D0/4)
-#define NREG_PCICTRL (0x0E0/4)
-#define NREG_PCIARB (0x0E8/4)
-#define NREG_PCIINIT0 (0x0F0/4)
-#define NREG_PCIINIT1 (0x0F8/4)
-
-/* NILE 4 registers 0x100-0x1ff */
-#define NREG_LCNFG (0x100/4)
-#define NREG_LCST2 (0x110/4)
-#define NREG_LCST3 (0x118/4)
-#define NREG_LCST4 (0x120/4)
-#define NREG_LCST5 (0x128/4)
-#define NREG_LCST6 (0x130/4)
-#define NREG_LCST7 (0x138/4)
-#define NREG_LCST8 (0x140/4)
-#define NREG_DCSFN (0x150/4)
-#define NREG_DCSIO (0x158/4)
-#define NREG_BCST (0x178/4)
-#define NREG_DMACTRL0 (0x180/4)
-#define NREG_DMASRCA0 (0x188/4)
-#define NREG_DMADESA0 (0x190/4)
-#define NREG_DMACTRL1 (0x198/4)
-#define NREG_DMASRCA1 (0x1A0/4)
-#define NREG_DMADESA1 (0x1A8/4)
-#define NREG_T0CTRL (0x1C0/4)
-#define NREG_T0CNTR (0x1C8/4)
-#define NREG_T1CTRL (0x1D0/4)
-#define NREG_T1CNTR (0x1D8/4)
-#define NREG_T2CTRL (0x1E0/4)
-#define NREG_T2CNTR (0x1E8/4)
-#define NREG_T3CTRL (0x1F0/4)
-#define NREG_T3CNTR (0x1F8/4)
-
-/* NILE 4 registers 0x300-0x3ff */
-#define NREG_UARTRBR (0x00/4)
-#define NREG_UARTTHR (0x00/4)
-#define NREG_UARTIER (0x08/4)
-#define NREG_UARTDLL (0x00/4)
-#define NREG_UARTDLM (0x08/4)
-#define NREG_UARTIIR (0x10/4)
-#define NREG_UARTFCR (0x10/4)
-#define NREG_UARTLCR (0x18/4)
-#define NREG_UARTMCR (0x20/4)
-#define NREG_UARTLSR (0x28/4)
-#define NREG_UARTMSR (0x30/4)
-#define NREG_UARTSCR (0x38/4)
-
-/* NILE 4 interrupts */
-#define NINT_CPCE (0)
-#define NINT_CNTD (1)
-#define NINT_MCE (2)
-#define NINT_DMA (3)
-#define NINT_UART (4)
-#define NINT_WDOG (5)
-#define NINT_GPT (6)
-#define NINT_LBRTD (7)
-#define NINT_INTA (8)
-#define NINT_INTB (9)
-#define NINT_INTC (10)
-#define NINT_INTD (11)
-#define NINT_INTE (12)
-#define NINT_RESV (13)
-#define NINT_PCIS (14)
-#define NINT_PCIE (15)
-
-#define SYSTEM_CLOCK 100000000
-#define TIMER_PERIOD attotime::from_hz(SYSTEM_CLOCK)
-
-#define PCI_BUS_CLOCK 33000000
-// Number of dma words to transfer at a time, real hardware bursts 8
-#define DMA_BURST_SIZE 128
-#define DMA_TIMER_PERIOD attotime::from_hz(PCI_BUS_CLOCK / 32)
-
-#define DMA_BUSY 0x80000000
-#define DMA_INTEN 0x40000000
-#define DMA_INTVLD 0x20000000
-#define DMA_GO 0x10000000
-#define DMA_SUS 0x08000000
-#define DMA_DSTINC 0x04000000
-#define DMA_SRCINC 0x02000000
-#define DMA_RST 0x01000000
-#define DMA_BLK_SIZE 0x000fffff
-
-
class vrc5074_device : public pci_host_device {
public:
+ static constexpr unsigned SYSTEM_CLOCK = 100000000;
+
vrc5074_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void reset_all_mappings() override;
virtual void map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override;
- void postload(void);
+ void postload();
void set_cpu_tag(const char *tag);
void set_sdram_size(const int index, const int size) { m_sdram_size[index] = size; };
@@ -203,13 +100,13 @@ private:
uint32_t m_serial_regs[0x40 / 4];
uint16_t m_nile_irq_state;
- void setup_pci_space(void);
+ void setup_pci_space();
uint32_t m_pci_laddr[2], m_pci_mask[2], m_pci_type[2];
uint32_t m_sdram_addr[2];
};
-extern const device_type VRC5074;
+DECLARE_DEVICE_TYPE(VRC5074, vrc5074_device)
-#endif
+#endif // MAME_MACHINE_VRC5074_H
diff --git a/src/devices/machine/vt82c496.cpp b/src/devices/machine/vt82c496.cpp
index 2abaac5a449..f7f58db89fe 100644
--- a/src/devices/machine/vt82c496.cpp
+++ b/src/devices/machine/vt82c496.cpp
@@ -13,12 +13,12 @@
IMPLEMENTATION
***************************************************************************/
-const device_type VT82C496 = device_creator<vt82c496_device>;
+DEFINE_DEVICE_TYPE(VT82C496, vt82c496_device, "vt82c496", "VIA VT82C496 system chipset")
vt82c496_device::vt82c496_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VT82C496, "VIA VT82C496G system chipset", tag, owner, clock, "vt82c496", __FILE__), m_cpu_tag(nullptr), m_region_tag(nullptr), m_space(nullptr), m_ram(nullptr), m_rom(nullptr), m_reg_select(0)
- {
+ : device_t(mconfig, VT82C496, tag, owner, clock), m_cpu_tag(nullptr), m_region_tag(nullptr), m_space(nullptr), m_ram(nullptr), m_rom(nullptr), m_reg_select(0)
+{
}
void vt82c496_device::device_start()
diff --git a/src/devices/machine/vt82c496.h b/src/devices/machine/vt82c496.h
index 027647acfa4..60a89060db0 100644
--- a/src/devices/machine/vt82c496.h
+++ b/src/devices/machine/vt82c496.h
@@ -6,8 +6,10 @@
*/
-#ifndef __VT82C496_H__
-#define __VT82C496_H__
+#ifndef MAME_MACHINE_VT82C496_H
+#define MAME_MACHINE_VT82C496_H
+
+#pragma once
#include "ram.h"
@@ -53,7 +55,6 @@ private:
};
// device type definition
-extern const device_type VT82C496;
-
+DECLARE_DEVICE_TYPE(VT82C496, vt82c496_device)
-#endif /* __VT82C496_H__ */
+#endif // MAME_MACHINE_VT82C496_H
diff --git a/src/devices/machine/vt83c461.cpp b/src/devices/machine/vt83c461.cpp
index 781fc34b9ca..e085924e107 100644
--- a/src/devices/machine/vt83c461.cpp
+++ b/src/devices/machine/vt83c461.cpp
@@ -3,13 +3,8 @@
#include "emu.h"
#include "vt83c461.h"
-/***************************************************************************
- DEBUGGING
-***************************************************************************/
-
-#define VERBOSE 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
#define VT83C461_CONFIG_UNK 1
@@ -17,10 +12,10 @@
#define VT83C461_CONFIG_DATA 3
-const device_type VT83C461 = device_creator<vt83c461_device>;
+DEFINE_DEVICE_TYPE(VT83C461, vt83c461_device, "vt83c461", "VIA VT83C461 IDE Controller")
vt83c461_device::vt83c461_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- ide_controller_32_device(mconfig, VT83C461, "VIA VT83C461", tag, owner, clock, "vt83c461", __FILE__),
+ ide_controller_32_device(mconfig, VT83C461, tag, owner, clock),
m_config_unknown(0),
m_config_register_num(0)
{
@@ -45,7 +40,7 @@ READ32_MEMBER( vt83c461_device::read_config )
uint32_t result = 0;
/* logit */
- LOG(("%s:IDE via config read at %X, mem_mask=%d\n", machine().describe_context(), offset, mem_mask));
+ LOG("%s:IDE via config read at %X, mem_mask=%d\n", machine().describe_context(), offset, mem_mask);
switch(offset)
{
@@ -79,7 +74,7 @@ WRITE32_MEMBER( vt83c461_device::write_config )
// printf( "vt83c461 write config %04x %08x %04x\n", offset, data, mem_mask );
/* logit */
- LOG(("%s:IDE via config write to %X = %08X, mem_mask=%d\n", machine().describe_context(), offset, data, mem_mask));
+ LOG("%s:IDE via config write to %X = %08X, mem_mask=%d\n", machine().describe_context(), offset, data, mem_mask);
switch (offset)
{
diff --git a/src/devices/machine/vt83c461.h b/src/devices/machine/vt83c461.h
index 2577fdd6dfa..26dc2916641 100644
--- a/src/devices/machine/vt83c461.h
+++ b/src/devices/machine/vt83c461.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_VT83C461_H
+#define MAME_MACHINE_VT83C461_H
-#ifndef __VT83C461_H__
-#define __VT83C461_H__
+#pragma once
#include "idectrl.h"
@@ -27,8 +27,6 @@
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _slave, _fixed) \
MCFG_DEVICE_MODIFY(_tag)
-#define IDE_CONFIG_REGISTERS 0x10
-
class vt83c461_device : public ide_controller_32_device
{
public:
@@ -41,11 +39,13 @@ protected:
virtual void device_start() override;
private:
+ static constexpr unsigned IDE_CONFIG_REGISTERS= 0x10;
+
uint8_t m_config_unknown;
uint8_t m_config_register[IDE_CONFIG_REGISTERS];
uint8_t m_config_register_num;
};
-extern const device_type VT83C461;
+DECLARE_DEVICE_TYPE(VT83C461, vt83c461_device)
-#endif
+#endif // MAME_MACHINE_VT83C461_H
diff --git a/src/devices/machine/watchdog.cpp b/src/devices/machine/watchdog.cpp
index 9c4d05de71d..0eb841369cb 100644
--- a/src/devices/machine/watchdog.cpp
+++ b/src/devices/machine/watchdog.cpp
@@ -19,17 +19,17 @@
// WATCHDOG TIMER DEVICE
//**************************************************************************
-const device_type WATCHDOG_TIMER = device_creator<watchdog_timer_device>;
+DEFINE_DEVICE_TYPE(WATCHDOG_TIMER, watchdog_timer_device, "watchdog", "Watchdog Timer")
//-------------------------------------------------
// watchdog_timer_device - constructor
//-------------------------------------------------
watchdog_timer_device::watchdog_timer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, WATCHDOG_TIMER, "Watchdog timer", tag, owner, clock, "watchdog", __FILE__),
- m_vblank_count(0),
- m_time(attotime::zero),
- m_screen_tag(nullptr)
+ : device_t(mconfig, WATCHDOG_TIMER, tag, owner, clock)
+ , m_vblank_count(0)
+ , m_time(attotime::zero)
+ , m_screen_tag(nullptr)
{
}
diff --git a/src/devices/machine/watchdog.h b/src/devices/machine/watchdog.h
index 85f792203f8..2e17fcdea98 100644
--- a/src/devices/machine/watchdog.h
+++ b/src/devices/machine/watchdog.h
@@ -1,10 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
-#pragma once
+#ifndef MAME_MACHINE_WATCHDOG_H
+#define MAME_MACHINE_WATCHDOG_H
-#ifndef __WATCHDOG_H__
-#define __WATCHDOG_H__
+#pragma once
//**************************************************************************
@@ -78,7 +78,7 @@ private:
// GLOBAL VARIABLES
//**************************************************************************
-extern const device_type WATCHDOG_TIMER;
+DECLARE_DEVICE_TYPE(WATCHDOG_TIMER, watchdog_timer_device)
-#endif
+#endif // MAME_MACHINE_WATCHDOG_H
diff --git a/src/devices/machine/wd11c00_17.cpp b/src/devices/machine/wd11c00_17.cpp
index d6b21f43330..499601c943f 100644
--- a/src/devices/machine/wd11c00_17.cpp
+++ b/src/devices/machine/wd11c00_17.cpp
@@ -9,15 +9,14 @@
#include "emu.h"
#include "machine/wd11c00_17.h"
+#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 1
-
-
// status register
#define STATUS_IRQ 0x20
#define STATUS_DRQ 0x10
@@ -37,7 +36,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WD11C00_17 = device_creator<wd11c00_17_device>;
+DEFINE_DEVICE_TYPE(WD11C00_17, wd11c00_17_device, "wd11c00_17", "Western Digital WD11C00-17")
//**************************************************************************
@@ -177,25 +176,25 @@ inline void wd11c00_17_device::select()
//-------------------------------------------------
wd11c00_17_device::wd11c00_17_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, WD11C00_17, "Western Digital WD11C00-17", tag, owner, clock, "wd11c00_17", __FILE__),
- m_out_irq5_cb(*this),
- m_out_drq3_cb(*this),
- m_out_mr_cb(*this),
- m_out_busy_cb(*this),
- m_out_req_cb(*this),
- m_out_ra3_cb(*this),
- m_in_rd322_cb(*this),
- m_in_ramcs_cb(*this),
- m_out_ramwr_cb(*this),
- m_in_cs1010_cb(*this),
- m_out_cs1010_cb(*this),
- m_status(0),
- m_ra(0),
- m_irq5(CLEAR_LINE),
- m_drq3(CLEAR_LINE),
- m_busy(1),
- m_req(0),
- m_ra3(0)
+ : device_t(mconfig, WD11C00_17, tag, owner, clock)
+ , m_out_irq5_cb(*this)
+ , m_out_drq3_cb(*this)
+ , m_out_mr_cb(*this)
+ , m_out_busy_cb(*this)
+ , m_out_req_cb(*this)
+ , m_out_ra3_cb(*this)
+ , m_in_rd322_cb(*this)
+ , m_in_ramcs_cb(*this)
+ , m_out_ramwr_cb(*this)
+ , m_in_cs1010_cb(*this)
+ , m_out_cs1010_cb(*this)
+ , m_status(0)
+ , m_ra(0)
+ , m_irq5(CLEAR_LINE)
+ , m_drq3(CLEAR_LINE)
+ , m_busy(1)
+ , m_req(0)
+ , m_ra3(0)
{
}
@@ -246,9 +245,9 @@ READ8_MEMBER( wd11c00_17_device::io_r )
switch (offset)
{
case 0: // Read Data, Board to Host
- if (LOG) logerror("%s WD11C00-17 '%s' Read Data %03x:", machine().describe_context(), tag(), m_ra);
+ LOG("%s WD11C00-17 Read Data %03x:", machine().describe_context(), m_ra);
data = read_data();
- if (LOG) logerror("%02x\n", data);
+ LOG("%02x\n", data);
break;
case 1: // Read Board Hardware Status
@@ -277,23 +276,23 @@ WRITE8_MEMBER( wd11c00_17_device::io_w )
switch (offset)
{
case 0: // Write Data, Host to Board
- if (LOG) logerror("%s WD11C00-17 '%s' Write Data %03x:%02x\n", machine().describe_context(), tag(), m_ra, data);
+ LOG("%s WD11C00-17 Write Data %03x:%02x\n", machine().describe_context(), m_ra, data);
write_data(data);
break;
case 1: // Board Software Reset
- if (LOG) logerror("%s WD11C00-17 '%s' Software Reset\n", machine().describe_context(), tag());
+ LOG("%s WD11C00-17 Software Reset\n", machine().describe_context());
software_reset();
break;
case 2: // Board Select
- if (LOG) logerror("%s WD11C00-17 '%s' Select\n", machine().describe_context(), tag());
+ LOG("%s WD11C00-17 Select\n", machine().describe_context());
increment_address(); // HACK
select();
break;
case 3: // Set/Reset DMA, IRQ Masks
- if (LOG) logerror("%s WD11C00-17 '%s' Mask IRQ %u DMA %u\n", machine().describe_context(), tag(), BIT(data, 1), BIT(data, 0));
+ LOG("%s WD11C00-17 Mask IRQ %u DMA %u\n", machine().describe_context(), BIT(data, 1), BIT(data, 0));
m_mask = data;
check_interrupt();
break;
@@ -332,9 +331,9 @@ READ8_MEMBER( wd11c00_17_device::read )
switch (offset)
{
case 0x00:
- if (LOG) logerror("%s WD11C00-17 '%s' Read RAM %03x:", machine().describe_context(), tag(), m_ra);
+ LOG("%s WD11C00-17 Read RAM %03x:", machine().describe_context(), m_ra);
data = read_data();
- if (LOG) logerror("%02x\n", data);
+ LOG("%02x\n", data);
break;
case 0x20:
@@ -355,7 +354,7 @@ WRITE8_MEMBER( wd11c00_17_device::write )
switch (offset)
{
case 0x00:
- if (LOG) logerror("%s WD11C00-17 '%s' Write RAM %03x:%02x\n", machine().describe_context(), tag(), m_ra, data);
+ LOG("%s WD11C00-17 Write RAM %03x:%02x\n", machine().describe_context(), m_ra, data);
write_data(data);
if (m_ra > 0x400) m_ecc_not_0 = 0; // HACK
break;
@@ -366,7 +365,7 @@ WRITE8_MEMBER( wd11c00_17_device::write )
case 0x60:
m_ra = (data & 0x07) << 8;
- if (LOG) logerror("%s WD11C00-17 '%s' RA %03x\n", machine().describe_context(), tag(), m_ra);
+ LOG("%s WD11C00-17 RA %03x\n", machine().describe_context(), m_ra);
check_interrupt();
break;
}
@@ -379,7 +378,7 @@ WRITE8_MEMBER( wd11c00_17_device::write )
WRITE_LINE_MEMBER( wd11c00_17_device::ireq_w )
{
- if (LOG) logerror("%s WD11C00-17 '%s' IREQ %u\n", machine().describe_context(), tag(), state);
+ LOG("%s WD11C00-17 IREQ %u\n", machine().describe_context(), state);
if (state) m_status |= STATUS_REQ; else m_status &= ~STATUS_REQ;
@@ -408,7 +407,7 @@ WRITE_LINE_MEMBER( wd11c00_17_device::ireq_w )
WRITE_LINE_MEMBER( wd11c00_17_device::io_w )
{
- if (LOG) logerror("%s WD11C00-17 '%s' I/O %u\n", machine().describe_context(), tag(), state);
+ LOG("%s WD11C00-17 I/O %u\n", machine().describe_context(), state);
if (state) m_status |= STATUS_I_O; else m_status &= ~STATUS_I_O;
}
@@ -420,7 +419,7 @@ WRITE_LINE_MEMBER( wd11c00_17_device::io_w )
WRITE_LINE_MEMBER( wd11c00_17_device::cd_w )
{
- if (LOG) logerror("%s WD11C00-17 '%s' C/D %u\n", machine().describe_context(), tag(), state);
+ LOG("%s WD11C00-17 C/D %u\n", machine().describe_context(), state);
if (state) m_status |= STATUS_C_D; else m_status &= ~STATUS_C_D;
}
@@ -432,7 +431,7 @@ WRITE_LINE_MEMBER( wd11c00_17_device::cd_w )
WRITE_LINE_MEMBER( wd11c00_17_device::clct_w )
{
- if (LOG) logerror("%s WD11C00-17 '%s' CLCT %u\n", machine().describe_context(), tag(), state);
+ LOG("%s WD11C00-17 CLCT %u\n", machine().describe_context(), state);
if (state)
{
@@ -448,7 +447,7 @@ WRITE_LINE_MEMBER( wd11c00_17_device::clct_w )
WRITE_LINE_MEMBER( wd11c00_17_device::mode_w )
{
- if (LOG) logerror("%s WD11C00-17 '%s' MODE %u\n", machine().describe_context(), tag(), state);
+ LOG("%s WD11C00-17 MODE %u\n", machine().describe_context(), state);
m_mode = state;
m_ecc_not_0 = state; // HACK
diff --git a/src/devices/machine/wd11c00_17.h b/src/devices/machine/wd11c00_17.h
index 593f24f0c75..15c712425f9 100644
--- a/src/devices/machine/wd11c00_17.h
+++ b/src/devices/machine/wd11c00_17.h
@@ -6,12 +6,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __WD11C00_17__
-#define __WD11C00_17__
-
+#ifndef MAME_MACHINE_WD11C00_17_H
+#define MAME_MACHINE_WD11C00_17_H
+#pragma once
@@ -64,17 +62,17 @@ public:
// construction/destruction
wd11c00_17_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_irq5_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_irq5_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_drq3_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_drq3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_mr_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_mr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_busy_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_busy_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_req_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_req_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_ra3_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_ra3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_rd322_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_in_rd322_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_ramcs_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_in_ramcs_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_ramwr_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_ramwr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_cs1010_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_in_cs1010_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_cs1010_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_cs1010_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_irq5_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_irq5_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_drq3_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_drq3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_mr_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_mr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_busy_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_busy_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_req_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_req_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_ra3_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_ra3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_rd322_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_in_rd322_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_ramcs_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_in_ramcs_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_ramwr_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_ramwr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_cs1010_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_in_cs1010_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_cs1010_callback(device_t &device, Object &&cb) { return downcast<wd11c00_17_device &>(device).m_out_cs1010_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( io_r );
DECLARE_WRITE8_MEMBER( io_w );
@@ -136,6 +134,6 @@ private:
// device type definition
-extern const device_type WD11C00_17;
+DECLARE_DEVICE_TYPE(WD11C00_17, wd11c00_17_device)
-#endif
+#endif // MAME_MACHINE_WD11C00_17_H
diff --git a/src/devices/machine/wd2010.cpp b/src/devices/machine/wd2010.cpp
index 8ed394f5b60..52bdd98905a 100644
--- a/src/devices/machine/wd2010.cpp
+++ b/src/devices/machine/wd2010.cpp
@@ -33,6 +33,17 @@ Implements WD2010 / WD1010 controller basics.
MCFG_WD2010_IN_SC_CB(VCC) // SEEK COMPLETE = VCC
**********************************************************************/
+#include "emu.h"
+#include "machine/wd2010.h"
+
+#define VERBOSE 1
+#include "logmacro.h"
+
+
+//**************************************************************************
+// MACROS / CONSTANTS
+//**************************************************************************
+
// WD 2010 CONFIGURATION (2048 cylinder limit)
#define STEP_LIMIT 2048
#define CYLINDER_HIGH_MASK 0x07
@@ -48,15 +59,6 @@ Implements WD2010 / WD1010 controller basics.
// --------------------------------------------------------
-#include "emu.h"
-#include "machine/wd2010.h"
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 1
-
// task file
enum
{
@@ -89,7 +91,7 @@ enum
#define DRIVE \
((m_task_file[TASK_FILE_SDH_REGISTER] >> 3) & 0x03)
-static const int SECTOR_SIZES[4] = { 256, 512, 1024, 128 };
+static constexpr int SECTOR_SIZES[4] = { 256, 512, 1024, 128 };
#define SECTOR_SIZE \
SECTOR_SIZES[(m_task_file[TASK_FILE_SDH_REGISTER] >> 5) & 0x03]
@@ -132,7 +134,7 @@ static const int SECTOR_SIZES[4] = { 256, 512, 1024, 128 };
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type WD2010 = device_creator<wd2010_device>;
+DEFINE_DEVICE_TYPE(WD2010, wd2010_device, "wd2010", "Western Digital WD2010 Winchester Disk Controller")
//**************************************************************************
@@ -144,24 +146,24 @@ const device_type WD2010 = device_creator<wd2010_device>;
//-------------------------------------------------
wd2010_device::wd2010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: device_t(mconfig, WD2010, "Western Digital WD2010", tag, owner, clock, "wd2010", __FILE__),
-m_out_intrq_cb(*this),
-m_out_bdrq_cb(*this),
-m_out_bcr_cb(*this),
-m_in_bcs_cb(*this),
-m_in_brdy_cb(*this),
-m_out_bcs_cb(*this),
-m_out_dirin_cb(*this),
-m_out_step_cb(*this),
-m_out_rwc_cb(*this),
-m_out_wg_cb(*this),
-m_in_drdy_cb(*this),
-m_in_index_cb(*this),
-m_in_wf_cb(*this),
-m_in_tk000_cb(*this),
-m_in_sc_cb(*this),
-m_status(0),
-m_error(0)
+ : device_t(mconfig, WD2010, tag, owner, clock)
+ , m_out_intrq_cb(*this)
+ , m_out_bdrq_cb(*this)
+ , m_out_bcr_cb(*this)
+ , m_in_bcs_cb(*this)
+ , m_in_brdy_cb(*this)
+ , m_out_bcs_cb(*this)
+ , m_out_dirin_cb(*this)
+ , m_out_step_cb(*this)
+ , m_out_rwc_cb(*this)
+ , m_out_wg_cb(*this)
+ , m_in_drdy_cb(*this)
+ , m_in_index_cb(*this)
+ , m_in_wf_cb(*this)
+ , m_in_tk000_cb(*this)
+ , m_in_sc_cb(*this)
+ , m_status(0)
+ , m_error(0)
{
}
@@ -246,10 +248,10 @@ READ8_MEMBER(wd2010_device::read)
if (offset == TASK_FILE_SDH_REGISTER)
{
- logerror("(READ) %s WD2010 '%s' SDH: %u\n", machine().describe_context(), tag(), data);
- logerror("(READ) %s WD2010 '%s' Head: %u\n", machine().describe_context(), tag(), HEAD);
- logerror("(READ) %s WD2010 '%s' Drive: %u\n", machine().describe_context(), tag(), DRIVE);
- logerror("(READ) %s WD2010 '%s' Sector Size: %u\n", machine().describe_context(), tag(), SECTOR_SIZE);
+ logerror("(READ) %s WD2010 SDH: %u\n", machine().describe_context(), data);
+ logerror("(READ) %s WD2010 Head: %u\n", machine().describe_context(), HEAD);
+ logerror("(READ) %s WD2010 Drive: %u\n", machine().describe_context(), DRIVE);
+ logerror("(READ) %s WD2010 Sector Size: %u\n", machine().describe_context(), SECTOR_SIZE);
}
break;
@@ -270,33 +272,30 @@ WRITE8_MEMBER(wd2010_device::write)
switch (offset)
{
case TASK_FILE_WRITE_PRECOMP_CYLINDER:
- if (LOG) logerror("%s WD2010 '%s' Write Precomp Cylinder: %u\n", machine().describe_context(), tag(), WRITE_PRECOMP_CYLINDER);
+ LOG("%s WD2010 Write Precomp Cylinder: %u\n", machine().describe_context(), WRITE_PRECOMP_CYLINDER);
break;
case TASK_FILE_SECTOR_COUNT:
- if (LOG) logerror("%s WD2010 '%s' Sector Count: %u\n", machine().describe_context(), tag(), SECTOR_COUNT);
+ LOG("%s WD2010 Sector Count: %u\n", machine().describe_context(), SECTOR_COUNT);
break;
case TASK_FILE_SECTOR_NUMBER:
- if (LOG) logerror("%s WD2010 '%s' Sector Number: %u\n", machine().describe_context(), tag(), SECTOR_NUMBER);
+ LOG("%s WD2010 Sector Number: %u\n", machine().describe_context(), SECTOR_NUMBER);
break;
case TASK_FILE_CYLINDER_LOW:
- if (LOG) logerror("%s WD2010 '%s' Cylinder (lower bits set): %u\n", machine().describe_context(), tag(), CYLINDER);
+ LOG("%s WD2010 Cylinder (lower bits set): %u\n", machine().describe_context(), CYLINDER);
break;
case TASK_FILE_CYLINDER_HIGH:
- if (LOG) logerror("%s WD2010 '%s' Cylinder (MSB bits set): %u\n", machine().describe_context(), tag(), CYLINDER);
+ LOG("%s WD2010 Cylinder (MSB bits set): %u\n", machine().describe_context(), CYLINDER);
break;
case TASK_FILE_SDH_REGISTER:
- if (LOG)
- {
- logerror("(WRITE) %s WD2010 '%s' SDH: %u\n", machine().describe_context(), tag(), data);
- logerror("(WRITE) %s WD2010 '%s' Head: %u\n", machine().describe_context(), tag(), HEAD);
- logerror("(WRITE) %s WD2010 '%s' Drive: %u\n", machine().describe_context(), tag(), DRIVE);
- logerror("(WRITE) %s WD2010 '%s' Sector Size: %u\n", machine().describe_context(), tag(), SECTOR_SIZE);
- }
+ LOG("(WRITE) %s WD2010 SDH: %u\n", machine().describe_context(), data);
+ LOG("(WRITE) %s WD2010 Head: %u\n", machine().describe_context(), HEAD);
+ LOG("(WRITE) %s WD2010 Drive: %u\n", machine().describe_context(), DRIVE);
+ LOG("(WRITE) %s WD2010 Sector Size: %u\n", machine().describe_context(), SECTOR_SIZE);
break;
case TASK_FILE_COMMAND:
@@ -306,12 +305,12 @@ WRITE8_MEMBER(wd2010_device::write)
if (data == COMMAND_COMPUTE_CORRECTION)
{
- if (LOG) logerror("%s WD2010 '%s' COMPUTE CORRECTION\n", machine().describe_context(), tag());
+ LOG("%s WD2010 COMPUTE CORRECTION\n", machine().describe_context());
compute_correction(data);
}
else if ((data & COMMAND_SET_PARAMETER_MASK) == COMMAND_SET_PARAMETER)
{
- if (LOG) logerror("%s WD2010 '%s' SET PARAMETER\n", machine().describe_context(), tag());
+ LOG("%s WD2010 SET PARAMETER\n", machine().describe_context());
set_parameter(data);
}
else
@@ -319,32 +318,32 @@ WRITE8_MEMBER(wd2010_device::write)
switch (data & COMMAND_MASK)
{
case COMMAND_RESTORE:
- if (LOG) logerror("%s WD2010 '%s' RESTORE\n", machine().describe_context(), tag());
+ LOG("%s WD2010 RESTORE\n", machine().describe_context());
restore(data);
break;
case COMMAND_SEEK:
- if (LOG) logerror("%s WD2010 '%s' SEEK\n", machine().describe_context(), tag());
+ LOG("%s WD2010 SEEK\n", machine().describe_context());
seek(data);
break;
case COMMAND_READ_SECTOR:
- if (LOG) logerror("%s WD2010 '%s' READ SECTOR (I = %u) (M = %u)\n", machine().describe_context(), tag(), ((data & 8)>0), ((data & 4)>0));
+ LOG("%s WD2010 READ SECTOR (I = %u) (M = %u)\n", machine().describe_context(), ((data & 8)>0), ((data & 4)>0));
read_sector(data);
break;
case COMMAND_WRITE_SECTOR:
- if (LOG) logerror("%s WD2010 '%s' WRITE SECTOR (M = %u)\n", machine().describe_context(), tag(), ((data & 4) > 0));
+ LOG("%s WD2010 WRITE SECTOR (M = %u)\n", machine().describe_context(), ((data & 4) > 0));
write_sector(data);
break;
case COMMAND_SCAN_ID:
- if (LOG) logerror("%s WD2010 '%s' SCAN ID\n", machine().describe_context(), tag());
+ LOG("%s WD2010 SCAN ID\n", machine().describe_context());
scan_id(data);
break;
case COMMAND_WRITE_FORMAT:
- if (LOG) logerror("%s WD2010 '%s' WRITE FORMAT\n", machine().describe_context(), tag());
+ LOG("%s WD2010 WRITE FORMAT\n", machine().describe_context());
format(data);
break;
}
diff --git a/src/devices/machine/wd2010.h b/src/devices/machine/wd2010.h
index 0c8817b1276..da76fa0af9d 100644
--- a/src/devices/machine/wd2010.h
+++ b/src/devices/machine/wd2010.h
@@ -6,11 +6,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __WD2010__
-#define __WD2010__
+#ifndef MAME_MACHINE_WD2010_H
+#define MAME_MACHINE_WD2010_H
+#pragma once
@@ -76,21 +75,21 @@ public:
// construction/destruction
wd2010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_intrq_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_out_intrq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_bdrq_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_out_bdrq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_bcr_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_out_bcr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_brdy_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_in_brdy_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_bcs_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_in_bcs_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_bcs_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_out_bcs_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dirin_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_out_dirin_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_step_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_out_step_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rwc_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_out_rwc_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_wg_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_out_wg_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_drdy_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_in_drdy_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_index_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_in_index_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_wf_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_in_wf_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_tk000_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_in_tk000_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_sc_callback(device_t &device, _Object object) { return downcast<wd2010_device &>(device).m_in_sc_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_intrq_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_intrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_bdrq_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_bdrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_bcr_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_bcr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_brdy_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_brdy_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_bcs_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_bcs_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_bcs_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_bcs_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dirin_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_dirin_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_step_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_step_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rwc_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_rwc_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_wg_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_out_wg_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_drdy_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_drdy_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_index_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_index_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_wf_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_wf_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_tk000_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_tk000_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_sc_callback(device_t &device, Object &&cb) { return downcast<wd2010_device &>(device).m_in_sc_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -151,6 +150,6 @@ private:
};
// device type definition
-extern const device_type WD2010;
+DECLARE_DEVICE_TYPE(WD2010, wd2010_device)
-#endif
+#endif // MAME_MACHINE_WD2010_H
diff --git a/src/devices/machine/wd33c93.cpp b/src/devices/machine/wd33c93.cpp
index ba20d5c324a..c4706dc8f05 100644
--- a/src/devices/machine/wd33c93.cpp
+++ b/src/devices/machine/wd33c93.cpp
@@ -16,8 +16,9 @@
#include "emu.h"
#include "wd33c93.h"
-#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
+
/* WD commands */
#define WD_CMD_RESET 0x00
@@ -137,7 +138,7 @@
#define SRCID_ER 0x80
/* convernience functions */
-uint8_t wd33c93_device::getunit( void )
+uint8_t wd33c93_device::getunit()
{
/* return the destination unit id */
return regs[WD_DESTINATION_ID] & SRCID_MASK;
@@ -151,7 +152,7 @@ void wd33c93_device::set_xfer_count( int count )
regs[ WD_TRANSFER_COUNT_MSB ] = ( count >> 16 ) & 0xff;
}
-int wd33c93_device::get_xfer_count( void )
+int wd33c93_device::get_xfer_count()
{
/* get the count */
int count = regs[ WD_TRANSFER_COUNT_MSB ];
@@ -473,7 +474,7 @@ WRITE8_MEMBER(wd33c93_device::write)
case 1:
{
- LOG(( "WD33C93: PC=%08x - Write REG=%02x, data = %02x\n", space.device().safe_pc(), sasr, data ));
+ LOG( "WD33C93: PC=%08x - Write REG=%02x, data = %02x\n", space.device().safe_pc(), sasr, data );
/* update the register */
regs[sasr] = data;
@@ -481,7 +482,7 @@ WRITE8_MEMBER(wd33c93_device::write)
/* if we receive a command, schedule to process it */
if ( sasr == WD_COMMAND )
{
- LOG(( "WDC33C93: PC=%08x - Executing command %08x - unit %d\n", space.device().safe_pc(), data, getunit() ));
+ LOG( "WDC33C93: PC=%08x - Executing command %08x - unit %d\n", space.device().safe_pc(), data, getunit() );
/* signal we're processing it */
regs[WD_AUXILIARY_STATUS] |= ASR_CIP;
@@ -630,7 +631,7 @@ READ8_MEMBER(wd33c93_device::read)
m_irq_cb(0);
}
- LOG(( "WD33C93: PC=%08x - Status read (%02x)\n", space.device().safe_pc(), regs[WD_SCSI_STATUS] ));
+ LOG( "WD33C93: PC=%08x - Status read (%02x)\n", space.device().safe_pc(), regs[WD_SCSI_STATUS] );
}
else if ( sasr == WD_DATA )
{
@@ -699,7 +700,7 @@ READ8_MEMBER(wd33c93_device::read)
}
}
- LOG(( "WD33C93: PC=%08x - Data read (%02x)\n", space.device().safe_pc(), regs[WD_DATA] ));
+ LOG( "WD33C93: PC=%08x - Data read (%02x)\n", space.device().safe_pc(), regs[WD_DATA] );
/* get the register value */
ret = regs[sasr];
@@ -724,7 +725,7 @@ READ8_MEMBER(wd33c93_device::read)
}
wd33c93_device::wd33c93_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- legacy_scsi_host_adapter(mconfig, WD33C93, "33C93 SCSI", tag, owner, clock, "wd33c93", __FILE__),
+ legacy_scsi_host_adapter(mconfig, WD33C93, tag, owner, clock),
m_irq_cb(*this)
{
}
@@ -804,4 +805,4 @@ int wd33c93_device::get_dma_count()
return get_xfer_count();
}
-const device_type WD33C93 = device_creator<wd33c93_device>;
+DEFINE_DEVICE_TYPE(WD33C93, wd33c93_device, "wd33c93", "Western Digital WD33C93 SCSI")
diff --git a/src/devices/machine/wd33c93.h b/src/devices/machine/wd33c93.h
index b8929d8b791..5559f16b1c8 100644
--- a/src/devices/machine/wd33c93.h
+++ b/src/devices/machine/wd33c93.h
@@ -5,50 +5,15 @@
*
*/
-#ifndef _WD33C93_H_
-#define _WD33C93_H_
+#ifndef MAME_MACHINE_WD33C93_H
+#define MAME_MACHINE_WD33C93_H
-#include "legscsi.h"
-
-/* wd register names */
-
-enum
-{
- WD_OWN_ID = 0x00,
- WD_CONTROL = 0x01,
- WD_TIMEOUT_PERIOD = 0x02,
- WD_CDB_1 = 0x03,
- WD_CDB_2 = 0x04,
- WD_CDB_3 = 0x05,
- WD_CDB_4 = 0x06,
- WD_CDB_5 = 0x07,
- WD_CDB_6 = 0x08,
- WD_CDB_7 = 0x09,
- WD_CDB_8 = 0x0a,
- WD_CDB_9 = 0x0b,
- WD_CDB_10 = 0x0c,
- WD_CDB_11 = 0x0d,
- WD_CDB_12 = 0x0e,
- WD_TARGET_LUN = 0x0f,
- WD_COMMAND_PHASE = 0x10,
- WD_SYNCHRONOUS_TRANSFER = 0x11,
- WD_TRANSFER_COUNT_MSB = 0x12,
- WD_TRANSFER_COUNT = 0x13,
- WD_TRANSFER_COUNT_LSB = 0x14,
- WD_DESTINATION_ID = 0x15,
- WD_SOURCE_ID = 0x16,
- WD_SCSI_STATUS = 0x17,
- WD_COMMAND = 0x18,
- WD_DATA = 0x19,
- WD_QUEUE_TAG = 0x1a,
- WD_AUXILIARY_STATUS = 0x1f
-};
+#pragma once
-#define TEMP_INPUT_LEN 262144
-#define FIFO_SIZE 12
+#include "legscsi.h"
-#define MCFG_WD33C93_IRQ_CB(_devcb) \
- devcb = &wd33c93_device::set_irq_callback(*device, DEVCB_##_devcb);
+#define MCFG_WD33C93_IRQ_CB(cb) \
+ devcb = &wd33c93_device::set_irq_callback(*device, (DEVCB_##cb));
class wd33c93_device : public legacy_scsi_host_adapter
{
@@ -72,11 +37,47 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
- uint8_t getunit( void );
- void set_xfer_count( int count );
- int get_xfer_count( void );
- void complete_immediate( int status );
- void complete_cmd( uint8_t status );
+ // wd register names
+ enum
+ {
+ WD_OWN_ID = 0x00,
+ WD_CONTROL = 0x01,
+ WD_TIMEOUT_PERIOD = 0x02,
+ WD_CDB_1 = 0x03,
+ WD_CDB_2 = 0x04,
+ WD_CDB_3 = 0x05,
+ WD_CDB_4 = 0x06,
+ WD_CDB_5 = 0x07,
+ WD_CDB_6 = 0x08,
+ WD_CDB_7 = 0x09,
+ WD_CDB_8 = 0x0a,
+ WD_CDB_9 = 0x0b,
+ WD_CDB_10 = 0x0c,
+ WD_CDB_11 = 0x0d,
+ WD_CDB_12 = 0x0e,
+ WD_TARGET_LUN = 0x0f,
+ WD_COMMAND_PHASE = 0x10,
+ WD_SYNCHRONOUS_TRANSFER = 0x11,
+ WD_TRANSFER_COUNT_MSB = 0x12,
+ WD_TRANSFER_COUNT = 0x13,
+ WD_TRANSFER_COUNT_LSB = 0x14,
+ WD_DESTINATION_ID = 0x15,
+ WD_SOURCE_ID = 0x16,
+ WD_SCSI_STATUS = 0x17,
+ WD_COMMAND = 0x18,
+ WD_DATA = 0x19,
+ WD_QUEUE_TAG = 0x1a,
+ WD_AUXILIARY_STATUS = 0x1f
+ };
+
+ static constexpr unsigned TEMP_INPUT_LEN = 262144;
+ static constexpr unsigned FIFO_SIZE = 12;
+
+ uint8_t getunit();
+ void set_xfer_count(int count);
+ int get_xfer_count();
+ void complete_immediate(int status);
+ void complete_cmd(uint8_t status);
void unimplemented_cmd();
void invalid_cmd();
void reset_cmd();
@@ -104,6 +105,6 @@ private:
};
// device type definition
-extern const device_type WD33C93;
+DECLARE_DEVICE_TYPE(WD33C93, wd33c93_device)
-#endif
+#endif // MAME_MACHINE_WD33C93_H
diff --git a/src/devices/machine/wd7600.cpp b/src/devices/machine/wd7600.cpp
index 806ac43b718..b2fe76f43e4 100644
--- a/src/devices/machine/wd7600.cpp
+++ b/src/devices/machine/wd7600.cpp
@@ -15,9 +15,11 @@
#include "emu.h"
#include "machine/wd7600.h"
-const device_type WD7600 = device_creator<wd7600_device>;
+#define VERBOSE 1
+#include "logmacro.h"
-#define LOG (1)
+
+DEFINE_DEVICE_TYPE(WD7600, wd7600_device, "wd7600", "Western Digital WD7600 chipset")
static MACHINE_CONFIG_FRAGMENT( wd7600 )
MCFG_DEVICE_ADD("dma1", AM9517A, 0)
@@ -97,7 +99,7 @@ void wd7600_device::static_set_keybctag(device_t &device, const char *tag)
}
wd7600_device::wd7600_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, WD7600, "WD 7600 chipset", tag, owner, clock, "wd7600", __FILE__),
+ device_t(mconfig, WD7600, tag, owner, clock),
m_read_ior(*this),
m_write_iow(*this),
m_write_tc(*this),
@@ -316,20 +318,20 @@ WRITE_LINE_MEMBER( wd7600_device::ctc_out2_w )
// Keyboard
WRITE8_MEMBER( wd7600_device::keyb_data_w )
{
-// if(LOG) logerror("WD7600 '%s': keyboard data write %02x\n", tag(), data);
+// LOG("WD7600: keyboard data write %02x\n", data);
m_keybc->data_w(space,0,data);
}
READ8_MEMBER( wd7600_device::keyb_data_r )
{
uint8_t ret = m_keybc->data_r(space,0);
-// if(LOG) logerror("WD7600 '%s': keyboard data read %02x\n", tag(), ret);
+// LOG("WD7600: keyboard data read %02x\n", ret);
return ret;
}
WRITE8_MEMBER( wd7600_device::keyb_cmd_w )
{
-// if(LOG) logerror("WD7600 '%s': keyboard command %02x\n", tag(), data);
+// LOG("WD7600: keyboard command %02x\n", data);
m_keybc->command_w(space,0,data);
}
@@ -473,7 +475,7 @@ WRITE8_MEMBER( wd7600_device::a20_reset_w )
{
m_write_cpureset(1);
m_write_cpureset(0);
- if(LOG) logerror("WD7600 '%s': System reset\n",tag());
+ LOG("WD7600: System reset\n");
}
}
@@ -495,7 +497,7 @@ WRITE16_MEMBER(wd7600_device::refresh_w)
{
// TODO: select serial/parallel I/O port location
m_refresh_ctrl = data;
- if(LOG) logerror("WD7600 '%s': Refresh Control write %04x\n",tag(),data);
+ LOG("WD7600: Refresh Control write %04x\n", data);
}
// port 0x2872 - chip select
@@ -507,7 +509,7 @@ READ16_MEMBER(wd7600_device::chipsel_r)
WRITE16_MEMBER(wd7600_device::chipsel_w)
{
m_chip_sel = data;
- if(LOG) logerror("WD7600 '%s': Chip Select write %04x\n",tag(),data);
+ LOG("WD7600: Chip Select write %04x\n", data);
}
// port 0x3872 - Memory Control
@@ -519,7 +521,7 @@ READ16_MEMBER(wd7600_device::mem_ctrl_r)
WRITE16_MEMBER(wd7600_device::mem_ctrl_w)
{
m_memory_ctrl = data;
- if(LOG) logerror("WD7600 '%s': Memory Control write %04x\n",tag(),data);
+ LOG("WD7600: Memory Control write %04x\n", data);
}
// port 0x4872 - Bank 0 and 1 start address
@@ -533,12 +535,12 @@ WRITE16_MEMBER(wd7600_device::bank_01_start_w)
if(ACCESSING_BITS_0_7)
{
m_bank_start[0] = data & 0xff;
- if(LOG) logerror("WD7600 '%s': Bank 0 start address %08x\n",tag(),m_bank_start[0] << 16);
+ LOG("WD7600: Bank 0 start address %08x\n", m_bank_start[0] << 16);
}
if(ACCESSING_BITS_8_15)
{
m_bank_start[1] = (data & 0xff00) >> 8;
- if(LOG) logerror("WD7600 '%s': Bank 1 start address %08x\n",tag(),m_bank_start[1] << 16);
+ LOG("WD7600: Bank 1 start address %08x\n", m_bank_start[1] << 16);
}
}
@@ -553,12 +555,12 @@ WRITE16_MEMBER(wd7600_device::bank_23_start_w)
if(ACCESSING_BITS_0_7)
{
m_bank_start[2] = data & 0xff;
- if(LOG) logerror("WD7600 '%s': Bank 2 start address %08x\n",tag(),m_bank_start[2] << 16);
+ LOG("WD7600: Bank 2 start address %08x\n", m_bank_start[2] << 16);
}
if(ACCESSING_BITS_8_15)
{
m_bank_start[3] = (data & 0xff00) >> 8;
- if(LOG) logerror("WD7600 '%s': Bank 3 start address %08x\n",tag(),m_bank_start[3] << 16);
+ LOG("WD7600: Bank 3 start address %08x\n", m_bank_start[3] << 16);
}
}
@@ -571,7 +573,7 @@ READ16_MEMBER(wd7600_device::split_addr_r)
WRITE16_MEMBER(wd7600_device::split_addr_w)
{
m_split_start = data;
- if(LOG) logerror("WD7600 '%s': Split start address write %04x\n",tag(),data);
+ LOG("WD7600: Split start address write %04x\n", data);
}
// port 0x9872 - Diagnostic
@@ -583,5 +585,5 @@ READ16_MEMBER(wd7600_device::diag_r)
WRITE16_MEMBER(wd7600_device::diag_w)
{
m_diagnostic = data;
- if(LOG) logerror("WD7600 '%s': Diagnostic write %04x\n",tag(),data);
+ LOG("WD7600: Diagnostic write %04x\n", data);
}
diff --git a/src/devices/machine/wd7600.h b/src/devices/machine/wd7600.h
index 84e97e2d975..0f8a65d7964 100644
--- a/src/devices/machine/wd7600.h
+++ b/src/devices/machine/wd7600.h
@@ -6,8 +6,10 @@
* Created on: 5/05/2014
*/
-#ifndef WD7600_H_
-#define WD7600_H_
+#ifndef MAME_MACHINE_WD7600_H
+#define MAME_MACHINE_WD7600_H
+
+#pragma once
#include "machine/am9517a.h"
#include "machine/pic8259.h"
@@ -68,15 +70,15 @@ public:
virtual machine_config_constructor device_mconfig_additions() const override;
// callbacks
- template<class _ior> devcb_base &set_ior_callback(_ior ior) { return m_read_ior.set_callback(ior); }
- template<class _iow> devcb_base &set_iow_callback(_iow iow) { return m_write_iow.set_callback(iow); }
- template<class _tc> devcb_base &set_tc_callback(_tc tc) { return m_write_tc.set_callback(tc); }
- template<class _hold> devcb_base &set_hold_callback(_hold hold) { return m_write_hold.set_callback(hold); }
- template<class _cpureset> devcb_base &set_cpureset_callback(_cpureset cpureset) { return m_write_cpureset.set_callback(cpureset); }
- template<class _nmi> devcb_base &set_nmi_callback(_nmi nmi) { return m_write_nmi.set_callback(nmi); }
- template<class _intr> devcb_base &set_intr_callback(_intr intr) { return m_write_intr.set_callback(intr); }
- template<class _a20m> devcb_base &set_a20m_callback(_a20m a20m) { return m_write_a20m.set_callback(a20m); }
- template<class _spkr> devcb_base &set_spkr_callback(_spkr spkr) { return m_write_spkr.set_callback(spkr); }
+ template <class Object> devcb_base &set_ior_callback(Object &&ior) { return m_read_ior.set_callback(std::forward<Object>(ior)); }
+ template <class Object> devcb_base &set_iow_callback(Object &&iow) { return m_write_iow.set_callback(std::forward<Object>(iow)); }
+ template <class Object> devcb_base &set_tc_callback(Object &&tc) { return m_write_tc.set_callback(std::forward<Object>(tc)); }
+ template <class Object> devcb_base &set_hold_callback(Object &&hold) { return m_write_hold.set_callback(std::forward<Object>(hold)); }
+ template <class Object> devcb_base &set_cpureset_callback(Object &&cpureset) { return m_write_cpureset.set_callback(std::forward<Object>(cpureset)); }
+ template <class Object> devcb_base &set_nmi_callback(Object &&nmi) { return m_write_nmi.set_callback(std::forward<Object>(nmi)); }
+ template <class Object> devcb_base &set_intr_callback(Object &&intr) { return m_write_intr.set_callback(std::forward<Object>(intr)); }
+ template <class Object> devcb_base &set_a20m_callback(Object &&a20m) { return m_write_a20m.set_callback(std::forward<Object>(a20m)); }
+ template <class Object> devcb_base &set_spkr_callback(Object &&spkr) { return m_write_spkr.set_callback(std::forward<Object>(spkr)); }
// inline configuration
static void static_set_cputag(device_t &device, const char *tag);
@@ -234,6 +236,6 @@ private:
};
// device type definition
-extern const device_type WD7600;
+DECLARE_DEVICE_TYPE(WD7600, wd7600_device)
-#endif /* WD7600_H_ */
+#endif // MAME_MACHINE_WD7600_H
diff --git a/src/devices/machine/wd_fdc.cpp b/src/devices/machine/wd_fdc.cpp
index f64c1117ed4..f629fdc08bd 100644
--- a/src/devices/machine/wd_fdc.cpp
+++ b/src/devices/machine/wd_fdc.cpp
@@ -5,29 +5,35 @@
#include "debugger.h"
-const device_type FD1771 = device_creator<fd1771_t>;
-const device_type FD1781 = device_creator<fd1781_t>;
-const device_type FD1791 = device_creator<fd1791_t>;
-const device_type FD1792 = device_creator<fd1792_t>;
-const device_type FD1793 = device_creator<fd1793_t>;
-const device_type KR1818VG93 = device_creator<kr1818vg93_t>;
-const device_type FD1794 = device_creator<fd1794_t>;
-const device_type FD1795 = device_creator<fd1795_t>;
-const device_type FD1797 = device_creator<fd1797_t>;
-const device_type MB8866 = device_creator<mb8866_t>;
-const device_type MB8876 = device_creator<mb8876_t>;
-const device_type MB8877 = device_creator<mb8877_t>;
-const device_type FD1761 = device_creator<fd1761_t>;
-const device_type FD1763 = device_creator<fd1763_t>;
-const device_type FD1765 = device_creator<fd1765_t>;
-const device_type FD1767 = device_creator<fd1767_t>;
-const device_type WD2791 = device_creator<wd2791_t>;
-const device_type WD2793 = device_creator<wd2793_t>;
-const device_type WD2795 = device_creator<wd2795_t>;
-const device_type WD2797 = device_creator<wd2797_t>;
-const device_type WD1770 = device_creator<wd1770_t>;
-const device_type WD1772 = device_creator<wd1772_t>;
-const device_type WD1773 = device_creator<wd1773_t>;
+DEFINE_DEVICE_TYPE(FD1771, fd1771_device, "fd1771", "FD1771 FDC")
+
+DEFINE_DEVICE_TYPE(FD1781, fd1781_device, "fd1781", "FD1781 FDC")
+
+DEFINE_DEVICE_TYPE(FD1791, fd1791_device, "fd1791", "FD1791 FDC")
+DEFINE_DEVICE_TYPE(FD1792, fd1792_device, "fd1792", "FD1792 FDC")
+DEFINE_DEVICE_TYPE(FD1793, fd1793_device, "fd1793", "FD1793 FDC")
+DEFINE_DEVICE_TYPE(KR1818VG93, kr1818vg93_device, "kr1818vg93", "KR1818VG93 FDC")
+DEFINE_DEVICE_TYPE(FD1794, fd1794_device, "fd1794", "FD1794 FDC")
+DEFINE_DEVICE_TYPE(FD1795, fd1795_device, "fd1795", "FD1795 FDC")
+DEFINE_DEVICE_TYPE(FD1797, fd1797_device, "fd1797", "FD1797 FDC")
+
+DEFINE_DEVICE_TYPE(MB8866, mb8866_device, "mb8866", "Fujitsu MB8866 FDC")
+DEFINE_DEVICE_TYPE(MB8876, mb8876_device, "mb8876", "Fujitsu MB8876 FDC")
+DEFINE_DEVICE_TYPE(MB8877, mb8877_device, "mb8877", "Fujitsu MB8877 FDC")
+
+DEFINE_DEVICE_TYPE(FD1761, fd1761_device, "fd1761", "FD1761 FDC")
+DEFINE_DEVICE_TYPE(FD1763, fd1763_device, "fd1763", "FD1763 FDC")
+DEFINE_DEVICE_TYPE(FD1765, fd1765_device, "fd1765", "FD1765 FDC")
+DEFINE_DEVICE_TYPE(FD1767, fd1767_device, "fd1767", "FD1767 FDC")
+
+DEFINE_DEVICE_TYPE(WD2791, wd2791_device, "wd2791", "Western Digital WD2791 FDC")
+DEFINE_DEVICE_TYPE(WD2793, wd2793_device, "wd2793", "Western Digital WD2793 FDC")
+DEFINE_DEVICE_TYPE(WD2795, wd2795_device, "wd2795", "Western Digital WD2795 FDC")
+DEFINE_DEVICE_TYPE(WD2797, wd2797_device, "wd2797", "Western Digital WD2797 FDC")
+
+DEFINE_DEVICE_TYPE(WD1770, wd1770_device, "wd1770", "Western Digital WD1770 FDC")
+DEFINE_DEVICE_TYPE(WD1772, wd1772_device, "wd1772", "Western Digital WD1772 FDC")
+DEFINE_DEVICE_TYPE(WD1773, wd1773_device, "wd1773", "Western Digital WD1773 FDC")
/*
Debugging flags. Set to 0 or 1.
@@ -66,8 +72,8 @@ const device_type WD1773 = device_creator<wd1773_t>;
// Show state machine
#define TRACE_STATE 0
-wd_fdc_t::wd_fdc_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+wd_fdc_device_base::wd_fdc_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
intrq_cb(*this),
drq_cb(*this),
hld_cb(*this),
@@ -78,17 +84,17 @@ wd_fdc_t::wd_fdc_t(const machine_config &mconfig, device_type type, const char *
disable_motor_control = false;
}
-void wd_fdc_t::set_force_ready(bool _force_ready)
+void wd_fdc_device_base::set_force_ready(bool _force_ready)
{
force_ready = _force_ready;
}
-void wd_fdc_t::set_disable_motor_control(bool _disable_motor_control)
+void wd_fdc_device_base::set_disable_motor_control(bool _disable_motor_control)
{
disable_motor_control = _disable_motor_control;
}
-void wd_fdc_t::device_start()
+void wd_fdc_device_base::device_start()
{
intrq_cb.resolve();
drq_cb.resolve();
@@ -123,12 +129,12 @@ void wd_fdc_t::device_start()
save_item(NAME(last_dir));
}
-void wd_fdc_t::device_reset()
+void wd_fdc_device_base::device_reset()
{
soft_reset();
}
-void wd_fdc_t::soft_reset()
+void wd_fdc_device_base::soft_reset()
{
command = 0x00;
main_state = IDLE;
@@ -166,7 +172,7 @@ void wd_fdc_t::soft_reset()
t_gen->adjust(attotime::zero);
}
-void wd_fdc_t::set_floppy(floppy_image_device *_floppy)
+void wd_fdc_device_base::set_floppy(floppy_image_device *_floppy)
{
if(floppy == _floppy)
return;
@@ -186,15 +192,15 @@ void wd_fdc_t::set_floppy(floppy_image_device *_floppy)
if(floppy) {
if(motor_control && !disable_motor_control)
floppy->mon_w(status & S_MON ? 0 : 1);
- floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&wd_fdc_t::index_callback, this));
- floppy->setup_ready_cb(floppy_image_device::ready_cb(&wd_fdc_t::ready_callback, this));
+ floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&wd_fdc_device_base::index_callback, this));
+ floppy->setup_ready_cb(floppy_image_device::ready_cb(&wd_fdc_device_base::ready_callback, this));
}
if(prev_ready != next_ready)
ready_callback(floppy, next_ready);
}
-void wd_fdc_t::dden_w(bool _dden)
+void wd_fdc_device_base::dden_w(bool _dden)
{
if(disable_mfm) {
logerror("Error, this chip does not have a dden line\n");
@@ -207,7 +213,7 @@ void wd_fdc_t::dden_w(bool _dden)
}
}
-std::string wd_fdc_t::tts(const attotime &t)
+std::string wd_fdc_device_base::tts(const attotime &t)
{
char buf[256];
int nsec = t.attoseconds() / ATTOSECONDS_PER_NANOSECOND;
@@ -215,12 +221,12 @@ std::string wd_fdc_t::tts(const attotime &t)
return buf;
}
-std::string wd_fdc_t::ttsn()
+std::string wd_fdc_device_base::ttsn()
{
return tts(machine().time());
}
-void wd_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void wd_fdc_device_base::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
if (TRACE_EVENT) logerror("Event fired for timer %s\n", (id==TM_GEN)? "TM_GEN" : (id==TM_CMD)? "TM_CMD" : (id==TM_TRACK)? "TM_TRACK" : "TM_SECTOR");
live_sync();
@@ -235,7 +241,7 @@ void wd_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, voi
general_continue();
}
-void wd_fdc_t::command_end()
+void wd_fdc_device_base::command_end()
{
main_state = sub_state = IDLE;
motor_timeout = 0;
@@ -248,7 +254,7 @@ void wd_fdc_t::command_end()
}
}
-void wd_fdc_t::seek_start(int state)
+void wd_fdc_device_base::seek_start(int state)
{
if (TRACE_COMMAND) logerror("cmd: seek %d %x (track=%d)\n", state, data, track);
main_state = state;
@@ -265,7 +271,7 @@ void wd_fdc_t::seek_start(int state)
seek_continue();
}
-void wd_fdc_t::seek_continue()
+void wd_fdc_device_base::seek_continue()
{
for(;;) {
switch(sub_state) {
@@ -411,7 +417,7 @@ void wd_fdc_t::seek_continue()
}
}
-bool wd_fdc_t::sector_matches() const
+bool wd_fdc_device_base::sector_matches() const
{
if(TRACE_MATCH)
logerror("matching read T=%02x H=%02x S=%02x L=%02x - searched T=%02x S=%02x\n",
@@ -428,12 +434,12 @@ bool wd_fdc_t::sector_matches() const
return !(cur_live.idbuf[1] & 1);
}
-bool wd_fdc_t::is_ready()
+bool wd_fdc_device_base::is_ready()
{
return !ready_hooked || force_ready || (floppy && !floppy->ready_r());
}
-void wd_fdc_t::read_sector_start()
+void wd_fdc_device_base::read_sector_start()
{
if (TRACE_COMMAND) logerror("cmd: read sector%s (c=%02x) t=%d, s=%d\n", command & 0x10 ? " multiple" : "", command, track, sector);
if(!is_ready()) {
@@ -451,7 +457,7 @@ void wd_fdc_t::read_sector_start()
read_sector_continue();
}
-void wd_fdc_t::read_sector_continue()
+void wd_fdc_device_base::read_sector_continue()
{
for(;;) {
switch(sub_state) {
@@ -533,7 +539,7 @@ void wd_fdc_t::read_sector_continue()
}
}
-void wd_fdc_t::read_track_start()
+void wd_fdc_device_base::read_track_start()
{
if (TRACE_COMMAND) logerror("cmd: read track (c=%02x) t=%d\n", command, track);
@@ -552,7 +558,7 @@ void wd_fdc_t::read_track_start()
read_track_continue();
}
-void wd_fdc_t::read_track_continue()
+void wd_fdc_device_base::read_track_continue()
{
for(;;) {
switch(sub_state) {
@@ -612,7 +618,7 @@ void wd_fdc_t::read_track_continue()
}
}
-void wd_fdc_t::read_id_start()
+void wd_fdc_device_base::read_id_start()
{
if (TRACE_COMMAND) logerror("cmd: read id (c=%02x)\n", command);
if(!is_ready()) {
@@ -630,7 +636,7 @@ void wd_fdc_t::read_id_start()
read_id_continue();
}
-void wd_fdc_t::read_id_continue()
+void wd_fdc_device_base::read_id_continue()
{
for(;;) {
switch(sub_state) {
@@ -687,7 +693,7 @@ void wd_fdc_t::read_id_continue()
}
}
-void wd_fdc_t::write_track_start()
+void wd_fdc_device_base::write_track_start()
{
if (TRACE_COMMAND) logerror("cmd: write track (c=%02x) t=%d\n", command, track);
@@ -711,7 +717,7 @@ void wd_fdc_t::write_track_start()
write_track_continue();
}
-void wd_fdc_t::write_track_continue()
+void wd_fdc_device_base::write_track_continue()
{
for(;;) {
switch(sub_state) {
@@ -798,7 +804,7 @@ void wd_fdc_t::write_track_continue()
}
-void wd_fdc_t::write_sector_start()
+void wd_fdc_device_base::write_sector_start()
{
if (TRACE_COMMAND) logerror("cmd: write sector%s (c=%02x) t=%d, s=%d\n", command & 0x10 ? " multiple" : "", command, track, sector);
@@ -817,7 +823,7 @@ void wd_fdc_t::write_sector_start()
write_sector_continue();
}
-void wd_fdc_t::write_sector_continue()
+void wd_fdc_device_base::write_sector_continue()
{
for(;;) {
switch(sub_state) {
@@ -896,7 +902,7 @@ void wd_fdc_t::write_sector_continue()
}
}
-void wd_fdc_t::interrupt_start()
+void wd_fdc_device_base::interrupt_start()
{
if (TRACE_COMMAND) logerror("cmd: forced interrupt (c=%02x)\n", command);
@@ -938,7 +944,7 @@ void wd_fdc_t::interrupt_start()
}
}
-void wd_fdc_t::general_continue()
+void wd_fdc_device_base::general_continue()
{
if(cur_live.state != IDLE) {
live_run();
@@ -973,7 +979,7 @@ void wd_fdc_t::general_continue()
}
}
-void wd_fdc_t::do_generic()
+void wd_fdc_device_base::do_generic()
{
switch(sub_state) {
case IDLE:
@@ -1009,7 +1015,7 @@ void wd_fdc_t::do_generic()
}
}
-void wd_fdc_t::do_cmd_w()
+void wd_fdc_device_base::do_cmd_w()
{
// Only available command when busy is interrupt
if(main_state != IDLE && (cmd_buffer & 0xf0) != 0xd0) {
@@ -1065,7 +1071,7 @@ void wd_fdc_t::do_cmd_w()
}
}
-void wd_fdc_t::cmd_w(uint8_t val)
+void wd_fdc_device_base::cmd_w(uint8_t val)
{
if (TRACE_COMP) logerror("Initiating command %02x\n", val);
if (inverted_bus) val ^= 0xff;
@@ -1095,7 +1101,7 @@ void wd_fdc_t::cmd_w(uint8_t val)
}
}
-uint8_t wd_fdc_t::status_r()
+uint8_t wd_fdc_device_base::status_r()
{
if(intrq && !(intrq_cond & I_IMM)) {
intrq = false;
@@ -1138,13 +1144,13 @@ uint8_t wd_fdc_t::status_r()
return val;
}
-void wd_fdc_t::do_track_w()
+void wd_fdc_device_base::do_track_w()
{
track = track_buffer;
track_buffer = -1;
}
-void wd_fdc_t::track_w(uint8_t val)
+void wd_fdc_device_base::track_w(uint8_t val)
{
if (inverted_bus) val ^= 0xff;
@@ -1156,7 +1162,7 @@ void wd_fdc_t::track_w(uint8_t val)
delay_cycles(t_track, dden ? delay_register_commit*2 : delay_register_commit);
}
-uint8_t wd_fdc_t::track_r()
+uint8_t wd_fdc_device_base::track_r()
{
uint8_t val = track;
if (inverted_bus) val ^= 0xff;
@@ -1164,13 +1170,13 @@ uint8_t wd_fdc_t::track_r()
return val;
}
-void wd_fdc_t::do_sector_w()
+void wd_fdc_device_base::do_sector_w()
{
sector = sector_buffer;
sector_buffer = -1;
}
-void wd_fdc_t::sector_w(uint8_t val)
+void wd_fdc_device_base::sector_w(uint8_t val)
{
if (inverted_bus) val ^= 0xff;
@@ -1188,7 +1194,7 @@ void wd_fdc_t::sector_w(uint8_t val)
delay_cycles(t_sector, dden ? delay_register_commit*2 : delay_register_commit);
}
-uint8_t wd_fdc_t::sector_r()
+uint8_t wd_fdc_device_base::sector_r()
{
uint8_t val = sector;
if (inverted_bus) val ^= 0xff;
@@ -1196,7 +1202,7 @@ uint8_t wd_fdc_t::sector_r()
return val;
}
-void wd_fdc_t::data_w(uint8_t val)
+void wd_fdc_device_base::data_w(uint8_t val)
{
if (inverted_bus) val ^= 0xff;
@@ -1204,7 +1210,7 @@ void wd_fdc_t::data_w(uint8_t val)
drop_drq();
}
-uint8_t wd_fdc_t::data_r()
+uint8_t wd_fdc_device_base::data_r()
{
drop_drq();
@@ -1214,7 +1220,7 @@ uint8_t wd_fdc_t::data_r()
return val;
}
-void wd_fdc_t::gen_w(int reg, uint8_t val)
+void wd_fdc_device_base::gen_w(int reg, uint8_t val)
{
switch(reg) {
case 0: cmd_w(val); break;
@@ -1224,7 +1230,7 @@ void wd_fdc_t::gen_w(int reg, uint8_t val)
}
}
-uint8_t wd_fdc_t::gen_r(int reg)
+uint8_t wd_fdc_device_base::gen_r(int reg)
{
switch(reg) {
case 0: return status_r();
@@ -1235,12 +1241,12 @@ uint8_t wd_fdc_t::gen_r(int reg)
return 0xff;
}
-void wd_fdc_t::delay_cycles(emu_timer *tm, int cycles)
+void wd_fdc_device_base::delay_cycles(emu_timer *tm, int cycles)
{
tm->adjust(clocks_to_attotime(cycles*clock_ratio));
}
-void wd_fdc_t::spinup()
+void wd_fdc_device_base::spinup()
{
if(command & 0x08)
sub_state = SPINUP_DONE;
@@ -1254,7 +1260,7 @@ void wd_fdc_t::spinup()
floppy->mon_w(0);
}
-void wd_fdc_t::ready_callback(floppy_image_device *floppy, int state)
+void wd_fdc_device_base::ready_callback(floppy_image_device *floppy, int state)
{
// why is this even possible?
if (!floppy)
@@ -1271,7 +1277,7 @@ void wd_fdc_t::ready_callback(floppy_image_device *floppy, int state)
}
}
-void wd_fdc_t::index_callback(floppy_image_device *floppy, int state)
+void wd_fdc_device_base::index_callback(floppy_image_device *floppy, int state)
{
live_sync();
@@ -1362,32 +1368,32 @@ void wd_fdc_t::index_callback(floppy_image_device *floppy, int state)
general_continue();
}
-bool wd_fdc_t::intrq_r()
+bool wd_fdc_device_base::intrq_r()
{
return intrq;
}
-bool wd_fdc_t::drq_r()
+bool wd_fdc_device_base::drq_r()
{
return drq;
}
-bool wd_fdc_t::hld_r()
+bool wd_fdc_device_base::hld_r()
{
return hld;
}
-void wd_fdc_t::hlt_w(bool state)
+void wd_fdc_device_base::hlt_w(bool state)
{
hlt = state;
}
-bool wd_fdc_t::enp_r()
+bool wd_fdc_device_base::enp_r()
{
return enp;
}
-void wd_fdc_t::live_start(int state)
+void wd_fdc_device_base::live_start(int state)
{
cur_live.tm = machine().time();
cur_live.state = state;
@@ -1411,26 +1417,26 @@ void wd_fdc_t::live_start(int state)
live_run();
}
-void wd_fdc_t::checkpoint()
+void wd_fdc_device_base::checkpoint()
{
pll_commit(floppy, cur_live.tm);
checkpoint_live = cur_live;
pll_save_checkpoint();
}
-void wd_fdc_t::rollback()
+void wd_fdc_device_base::rollback()
{
cur_live = checkpoint_live;
pll_retrieve_checkpoint();
}
-void wd_fdc_t::live_delay(int state)
+void wd_fdc_device_base::live_delay(int state)
{
cur_live.next_state = state;
t_gen->adjust(cur_live.tm - machine().time());
}
-void wd_fdc_t::live_sync()
+void wd_fdc_device_base::live_sync()
{
if(!cur_live.tm.is_never()) {
if(cur_live.tm > machine().time()) {
@@ -1455,7 +1461,7 @@ void wd_fdc_t::live_sync()
}
}
-void wd_fdc_t::live_abort()
+void wd_fdc_device_base::live_abort()
{
if(!cur_live.tm.is_never() && cur_live.tm > machine().time()) {
rollback();
@@ -1468,7 +1474,7 @@ void wd_fdc_t::live_abort()
cur_live.next_state = -1;
}
-bool wd_fdc_t::read_one_bit(const attotime &limit)
+bool wd_fdc_device_base::read_one_bit(const attotime &limit)
{
int bit = pll_get_next_bit(cur_live.tm, floppy, limit);
if(bit < 0)
@@ -1486,7 +1492,7 @@ bool wd_fdc_t::read_one_bit(const attotime &limit)
return false;
}
-bool wd_fdc_t::write_one_bit(const attotime &limit)
+bool wd_fdc_device_base::write_one_bit(const attotime &limit)
{
bool bit = cur_live.shift_reg & 0x8000;
if(pll_write_next_bit(bit, cur_live.tm, floppy, limit))
@@ -1502,14 +1508,14 @@ bool wd_fdc_t::write_one_bit(const attotime &limit)
return false;
}
-void wd_fdc_t::live_write_raw(uint16_t raw)
+void wd_fdc_device_base::live_write_raw(uint16_t raw)
{
if (TRACE_WRITE) logerror("write raw %04x, CRC=%04x\n", raw, cur_live.crc);
cur_live.shift_reg = raw;
cur_live.data_bit_context = raw & 1;
}
-void wd_fdc_t::live_write_mfm(uint8_t mfm)
+void wd_fdc_device_base::live_write_mfm(uint8_t mfm)
{
bool context = cur_live.data_bit_context;
uint16_t raw = 0;
@@ -1527,7 +1533,7 @@ void wd_fdc_t::live_write_mfm(uint8_t mfm)
}
-void wd_fdc_t::live_write_fm(uint8_t fm)
+void wd_fdc_device_base::live_write_fm(uint8_t fm)
{
uint16_t raw = 0xaaaa;
for(int i=0; i<8; i++)
@@ -1539,7 +1545,7 @@ void wd_fdc_t::live_write_fm(uint8_t fm)
if (TRACE_WRITE) logerror("live_write_fm byte=%02x, raw=%04x, CRC=%04x\n", fm, raw, cur_live.crc);
}
-void wd_fdc_t::live_run(attotime limit)
+void wd_fdc_device_base::live_run(attotime limit)
{
if(cur_live.state == IDLE || cur_live.next_state != -1)
return;
@@ -2101,7 +2107,7 @@ void wd_fdc_t::live_run(attotime limit)
}
}
-void wd_fdc_t::set_drq()
+void wd_fdc_device_base::set_drq()
{
if(drq) {
status |= S_LOST;
@@ -2115,7 +2121,7 @@ void wd_fdc_t::set_drq()
}
}
-void wd_fdc_t::drop_drq()
+void wd_fdc_device_base::drop_drq()
{
if(drq) {
drq = false;
@@ -2130,23 +2136,23 @@ void wd_fdc_t::drop_drq()
}
}
-int wd_fdc_t::calc_sector_size(uint8_t size, uint8_t command) const
+int wd_fdc_device_base::calc_sector_size(uint8_t size, uint8_t command) const
{
return 128 << (size & 3);
}
-int wd_fdc_t::settle_time() const
+int wd_fdc_device_base::settle_time() const
{
return 60000;
}
-wd_fdc_analog_t::wd_fdc_analog_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- wd_fdc_t(mconfig, type, name, tag, owner, clock, shortname, source)
+wd_fdc_analog_device_base::wd_fdc_analog_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ wd_fdc_device_base(mconfig, type, tag, owner, clock)
{
clock_ratio = 1;
}
-void wd_fdc_analog_t::pll_reset(bool fm, bool enmf, const attotime &when)
+void wd_fdc_analog_device_base::pll_reset(bool fm, bool enmf, const attotime &when)
{
int clocks = 2;
@@ -2157,50 +2163,50 @@ void wd_fdc_analog_t::pll_reset(bool fm, bool enmf, const attotime &when)
cur_pll.set_clock(clocks_to_attotime(clocks));
}
-void wd_fdc_analog_t::pll_start_writing(const attotime &tm)
+void wd_fdc_analog_device_base::pll_start_writing(const attotime &tm)
{
cur_pll.start_writing(tm);
}
-void wd_fdc_analog_t::pll_commit(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_analog_device_base::pll_commit(floppy_image_device *floppy, const attotime &tm)
{
cur_pll.commit(floppy, tm);
}
-void wd_fdc_analog_t::pll_stop_writing(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_analog_device_base::pll_stop_writing(floppy_image_device *floppy, const attotime &tm)
{
cur_pll.stop_writing(floppy, tm);
}
-void wd_fdc_analog_t::pll_save_checkpoint()
+void wd_fdc_analog_device_base::pll_save_checkpoint()
{
checkpoint_pll = cur_pll;
}
-void wd_fdc_analog_t::pll_retrieve_checkpoint()
+void wd_fdc_analog_device_base::pll_retrieve_checkpoint()
{
cur_pll = checkpoint_pll;
}
-int wd_fdc_analog_t::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
+int wd_fdc_analog_device_base::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
return cur_pll.get_next_bit(tm, floppy, limit);
}
-bool wd_fdc_analog_t::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
+bool wd_fdc_analog_device_base::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
return cur_pll.write_next_bit(bit, tm, floppy, limit);
}
-wd_fdc_digital_t::wd_fdc_digital_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- wd_fdc_t(mconfig, type, name, tag, owner, clock, shortname, source)
+wd_fdc_digital_device_base::wd_fdc_digital_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ wd_fdc_device_base(mconfig, type, tag, owner, clock)
{
clock_ratio = 4;
}
-const int wd_fdc_digital_t::wd_digital_step_times[4] = { 12000, 24000, 40000, 60000 };
+constexpr int wd_fdc_digital_device_base::wd_digital_step_times[4];
-void wd_fdc_digital_t::pll_reset(bool fm, bool enmf, const attotime &when)
+void wd_fdc_digital_device_base::pll_reset(bool fm, bool enmf, const attotime &when)
{
int clocks = 1;
@@ -2211,48 +2217,48 @@ void wd_fdc_digital_t::pll_reset(bool fm, bool enmf, const attotime &when)
cur_pll.set_clock(clocks_to_attotime(clocks));
}
-void wd_fdc_digital_t::pll_start_writing(const attotime &tm)
+void wd_fdc_digital_device_base::pll_start_writing(const attotime &tm)
{
cur_pll.start_writing(tm);
}
-void wd_fdc_digital_t::pll_commit(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_digital_device_base::pll_commit(floppy_image_device *floppy, const attotime &tm)
{
cur_pll.commit(floppy, tm);
}
-void wd_fdc_digital_t::pll_stop_writing(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_digital_device_base::pll_stop_writing(floppy_image_device *floppy, const attotime &tm)
{
cur_pll.stop_writing(floppy, tm);
}
-int wd_fdc_digital_t::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
+int wd_fdc_digital_device_base::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
return cur_pll.get_next_bit(tm, floppy, limit);
}
-bool wd_fdc_digital_t::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
+bool wd_fdc_digital_device_base::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
return cur_pll.write_next_bit(bit, tm, floppy, limit);
}
-void wd_fdc_digital_t::pll_save_checkpoint()
+void wd_fdc_digital_device_base::pll_save_checkpoint()
{
checkpoint_pll = cur_pll;
}
-void wd_fdc_digital_t::pll_retrieve_checkpoint()
+void wd_fdc_digital_device_base::pll_retrieve_checkpoint()
{
cur_pll = checkpoint_pll;
}
-void wd_fdc_digital_t::digital_pll_t::set_clock(const attotime &period)
+void wd_fdc_digital_device_base::digital_pll_t::set_clock(const attotime &period)
{
for(int i=0; i<42; i++)
delays[i] = period*(i+1);
}
-void wd_fdc_digital_t::digital_pll_t::reset(const attotime &when)
+void wd_fdc_digital_device_base::digital_pll_t::reset(const attotime &when)
{
counter = 0;
increment = 128;
@@ -2268,7 +2274,7 @@ void wd_fdc_digital_t::digital_pll_t::reset(const attotime &when)
write_start_time = attotime::never;
}
-int wd_fdc_digital_t::digital_pll_t::get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
+int wd_fdc_digital_device_base::digital_pll_t::get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
attotime when = floppy ? floppy->get_next_transition(ctime) : attotime::never;
@@ -2348,19 +2354,19 @@ int wd_fdc_digital_t::digital_pll_t::get_next_bit(attotime &tm, floppy_image_dev
return bit;
}
-void wd_fdc_digital_t::digital_pll_t::start_writing(const attotime &tm)
+void wd_fdc_digital_device_base::digital_pll_t::start_writing(const attotime &tm)
{
write_start_time = tm;
write_position = 0;
}
-void wd_fdc_digital_t::digital_pll_t::stop_writing(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_digital_device_base::digital_pll_t::stop_writing(floppy_image_device *floppy, const attotime &tm)
{
commit(floppy, tm);
write_start_time = attotime::never;
}
-bool wd_fdc_digital_t::digital_pll_t::write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
+bool wd_fdc_digital_device_base::digital_pll_t::write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
if(write_start_time.is_never()) {
write_start_time = ctime;
@@ -2390,7 +2396,7 @@ bool wd_fdc_digital_t::digital_pll_t::write_next_bit(bool bit, attotime &tm, flo
return false;
}
-void wd_fdc_digital_t::digital_pll_t::commit(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_digital_device_base::digital_pll_t::commit(floppy_image_device *floppy, const attotime &tm)
{
if(write_start_time.is_never() || tm == write_start_time)
return;
@@ -2401,9 +2407,9 @@ void wd_fdc_digital_t::digital_pll_t::commit(floppy_image_device *floppy, const
write_position = 0;
}
-fd1771_t::fd1771_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1771, "FD1771", tag, owner, clock, "fd1771", __FILE__)
+fd1771_device::fd1771_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1771, tag, owner, clock)
{
- const static int fd1771_step_times[4] = { 12000, 12000, 20000, 40000 };
+ constexpr static int fd1771_step_times[4] = { 12000, 12000, 20000, 40000 };
step_times = fd1771_step_times;
delay_register_commit = 16;
@@ -2418,7 +2424,7 @@ fd1771_t::fd1771_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1771_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1771_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2426,9 +2432,9 @@ int fd1771_t::calc_sector_size(uint8_t size, uint8_t command) const
return size ? size << 4 : 4096;
}
-fd1781_t::fd1781_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1781, "FD1781", tag, owner, clock, "fd1781", __FILE__)
+fd1781_device::fd1781_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1781, tag, owner, clock)
{
- const static int fd1781_step_times[4] = { 6000, 12000, 20000, 40000 };
+ constexpr static int fd1781_step_times[4] = { 6000, 12000, 20000, 40000 };
step_times = fd1781_step_times;
delay_register_commit = 16;
@@ -2443,7 +2449,7 @@ fd1781_t::fd1781_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1781_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1781_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2451,10 +2457,10 @@ int fd1781_t::calc_sector_size(uint8_t size, uint8_t command) const
return size ? size << 4 : 4096;
}
-const int wd_fdc_t::fd179x_step_times[4] = { 6000, 12000, 20000, 30000 };
-const int wd_fdc_t::fd176x_step_times[4] = { 12000, 24000, 40000, 60000 };
+constexpr int wd_fdc_device_base::fd179x_step_times[4];
+constexpr int wd_fdc_device_base::fd176x_step_times[4];
-fd1791_t::fd1791_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1791, "FD1791", tag, owner, clock, "fd1791", __FILE__)
+fd1791_device::fd1791_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1791, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2470,7 +2476,7 @@ fd1791_t::fd1791_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1792_t::fd1792_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1792, "FD1792", tag, owner, clock, "fd1792", __FILE__)
+fd1792_device::fd1792_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1792, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2486,7 +2492,7 @@ fd1792_t::fd1792_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1793_t::fd1793_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1793, "FD1793", tag, owner, clock, "fd1793", __FILE__)
+fd1793_device::fd1793_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1793, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2502,7 +2508,7 @@ fd1793_t::fd1793_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-kr1818vg93_t::kr1818vg93_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, KR1818VG93, "KR1818VG93", tag, owner, clock, "kr1818vg93", __FILE__)
+kr1818vg93_device::kr1818vg93_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, KR1818VG93, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2518,7 +2524,7 @@ kr1818vg93_t::kr1818vg93_t(const machine_config &mconfig, const char *tag, devic
nonsticky_immint = true;
}
-fd1794_t::fd1794_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1794, "FD1794", tag, owner, clock, "fd1794", __FILE__)
+fd1794_device::fd1794_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1794, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2534,7 +2540,7 @@ fd1794_t::fd1794_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1795_t::fd1795_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1795, "FD1795", tag, owner, clock, "fd1795", __FILE__)
+fd1795_device::fd1795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1795, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2550,7 +2556,7 @@ fd1795_t::fd1795_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1795_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1795_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2558,7 +2564,7 @@ int fd1795_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-fd1797_t::fd1797_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1797, "FD1797", tag, owner, clock, "fd1797", __FILE__)
+fd1797_device::fd1797_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1797, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2574,7 +2580,7 @@ fd1797_t::fd1797_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1797_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1797_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2582,7 +2588,7 @@ int fd1797_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-mb8866_t::mb8866_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, MB8866, "MB8866", tag, owner, clock, "mb8866", __FILE__)
+mb8866_device::mb8866_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, MB8866, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2598,7 +2604,7 @@ mb8866_t::mb8866_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-mb8876_t::mb8876_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, MB8876, "MB8876", tag, owner, clock, "mb8876", __FILE__)
+mb8876_device::mb8876_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, MB8876, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2614,7 +2620,7 @@ mb8876_t::mb8876_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-mb8877_t::mb8877_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, MB8877, "MB8877", tag, owner, clock, "mb8877", __FILE__)
+mb8877_device::mb8877_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, MB8877, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2630,7 +2636,7 @@ mb8877_t::mb8877_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1761_t::fd1761_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1761, "FD1761", tag, owner, clock, "fd1761", __FILE__)
+fd1761_device::fd1761_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1761, tag, owner, clock)
{
step_times = fd176x_step_times;
delay_register_commit = 16;
@@ -2646,7 +2652,7 @@ fd1761_t::fd1761_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1763_t::fd1763_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1763, "FD1763", tag, owner, clock, "fd1763", __FILE__)
+fd1763_device::fd1763_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1763, tag, owner, clock)
{
step_times = fd176x_step_times;
delay_register_commit = 16;
@@ -2662,7 +2668,7 @@ fd1763_t::fd1763_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1765_t::fd1765_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1765, "FD1765", tag, owner, clock, "fd1765", __FILE__)
+fd1765_device::fd1765_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1765, tag, owner, clock)
{
step_times = fd176x_step_times;
delay_register_commit = 16;
@@ -2678,7 +2684,7 @@ fd1765_t::fd1765_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1765_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1765_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2686,7 +2692,7 @@ int fd1765_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-fd1767_t::fd1767_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1767, "FD1767", tag, owner, clock, "fd1767", __FILE__)
+fd1767_device::fd1767_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1767, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 16;
@@ -2702,7 +2708,7 @@ fd1767_t::fd1767_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1767_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1767_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2710,7 +2716,7 @@ int fd1767_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-wd2791_t::wd2791_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, WD2791, "WD2791", tag, owner, clock, "wd2791", __FILE__)
+wd2791_device::wd2791_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, WD2791, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 16;
@@ -2726,7 +2732,7 @@ wd2791_t::wd2791_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-wd2793_t::wd2793_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, WD2793, "WD2793", tag, owner, clock, "wd2793", __FILE__)
+wd2793_device::wd2793_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, WD2793, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 16;
@@ -2742,7 +2748,7 @@ wd2793_t::wd2793_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-wd2795_t::wd2795_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, WD2795, "WD2795", tag, owner, clock, "wd2795", __FILE__)
+wd2795_device::wd2795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, WD2795, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 16;
@@ -2758,7 +2764,7 @@ wd2795_t::wd2795_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int wd2795_t::calc_sector_size(uint8_t size, uint8_t command) const
+int wd2795_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2766,7 +2772,7 @@ int wd2795_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-wd2797_t::wd2797_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, WD2797, "WD2797", tag, owner, clock, "wd2797", __FILE__)
+wd2797_device::wd2797_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, WD2797, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 16;
@@ -2782,7 +2788,7 @@ wd2797_t::wd2797_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int wd2797_t::calc_sector_size(uint8_t size, uint8_t command) const
+int wd2797_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2790,7 +2796,7 @@ int wd2797_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-wd1770_t::wd1770_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_t(mconfig, WD1770, "WD1770", tag, owner, clock, "wd1770", __FILE__)
+wd1770_device::wd1770_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_device_base(mconfig, WD1770, tag, owner, clock)
{
step_times = wd_digital_step_times;
delay_register_commit = 32;
@@ -2806,7 +2812,7 @@ wd1770_t::wd1770_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-wd1772_t::wd1772_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_t(mconfig, WD1772, "WD1772", tag, owner, clock, "wd1772", __FILE__)
+wd1772_device::wd1772_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_device_base(mconfig, WD1772, tag, owner, clock)
{
const static int wd1772_step_times[4] = { 12000, 24000, 4000, 6000 };
@@ -2824,12 +2830,12 @@ wd1772_t::wd1772_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int wd1772_t::settle_time() const
+int wd1772_device::settle_time() const
{
return 30000;
}
-wd1773_t::wd1773_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_t(mconfig, WD1773, "WD1773", tag, owner, clock, "wd1773", __FILE__)
+wd1773_device::wd1773_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_device_base(mconfig, WD1773, tag, owner, clock)
{
step_times = wd_digital_step_times;
delay_register_commit = 32;
diff --git a/src/devices/machine/wd_fdc.h b/src/devices/machine/wd_fdc.h
index beafbce6622..e3811b003f1 100644
--- a/src/devices/machine/wd_fdc.h
+++ b/src/devices/machine/wd_fdc.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef WD_FDC_H
-#define WD_FDC_H
+#ifndef MAME_MACHINE_WD_FDC_H
+#define MAME_MACHINE_WD_FDC_H
+
+#pragma once
#include "imagedev/floppy.h"
#include "fdc_pll.h"
@@ -113,35 +115,33 @@
MCFG_DEVICE_ADD(_tag, WD1773, _clock)
#define MCFG_WD_FDC_FORCE_READY \
- downcast<wd_fdc_t *>(device)->set_force_ready(true);
+ downcast<wd_fdc_device_base *>(device)->set_force_ready(true);
#define MCFG_WD_FDC_DISABLE_MOTOR_CONTROL \
- downcast<wd_fdc_t *>(device)->set_disable_motor_control(true);
+ downcast<wd_fdc_device_base *>(device)->set_disable_motor_control(true);
#define MCFG_WD_FDC_INTRQ_CALLBACK(_write) \
- devcb = &wd_fdc_t::set_intrq_wr_callback(*device, DEVCB_##_write);
+ devcb = &wd_fdc_device_base::set_intrq_wr_callback(*device, DEVCB_##_write);
#define MCFG_WD_FDC_DRQ_CALLBACK(_write) \
- devcb = &wd_fdc_t::set_drq_wr_callback(*device, DEVCB_##_write);
+ devcb = &wd_fdc_device_base::set_drq_wr_callback(*device, DEVCB_##_write);
#define MCFG_WD_FDC_HLD_CALLBACK(_write) \
- devcb = &wd_fdc_t::set_hld_wr_callback(*device, DEVCB_##_write);
+ devcb = &wd_fdc_device_base::set_hld_wr_callback(*device, DEVCB_##_write);
#define MCFG_WD_FDC_ENP_CALLBACK(_write) \
- devcb = &wd_fdc_t::set_enp_wr_callback(*device, DEVCB_##_write);
+ devcb = &wd_fdc_device_base::set_enp_wr_callback(*device, DEVCB_##_write);
#define MCFG_WD_FDC_ENMF_CALLBACK(_read) \
- devcb = &wd_fdc_t::set_enmf_rd_callback(*device, DEVCB_##_read);
+ devcb = &wd_fdc_device_base::set_enmf_rd_callback(*device, DEVCB_##_read);
-class wd_fdc_t : public device_t {
+class wd_fdc_device_base : public device_t {
public:
- wd_fdc_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
- template<class _Object> static devcb_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<wd_fdc_t &>(device).intrq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<wd_fdc_t &>(device).drq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_hld_wr_callback(device_t &device, _Object object) { return downcast<wd_fdc_t &>(device).hld_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_enp_wr_callback(device_t &device, _Object object) { return downcast<wd_fdc_t &>(device).enp_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_enmf_rd_callback(device_t &device, _Object object) { return downcast<wd_fdc_t &>(device).enmf_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast<wd_fdc_device_base &>(device).intrq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<wd_fdc_device_base &>(device).drq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hld_wr_callback(device_t &device, Object &&cb) { return downcast<wd_fdc_device_base &>(device).hld_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_enp_wr_callback(device_t &device, Object &&cb) { return downcast<wd_fdc_device_base &>(device).enp_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_enmf_rd_callback(device_t &device, Object &&cb) { return downcast<wd_fdc_device_base &>(device).enmf_cb.set_callback(std::forward<Object>(cb)); }
void soft_reset();
@@ -172,7 +172,7 @@ public:
void gen_w(int reg, uint8_t val);
uint8_t gen_r(int reg);
- DECLARE_READ8_MEMBER( read ) { return gen_r(offset);}
+ DECLARE_READ8_MEMBER( read ) { return gen_r(offset); }
DECLARE_WRITE8_MEMBER( write ) { gen_w(offset,data); }
bool intrq_r();
@@ -186,6 +186,8 @@ public:
void index_callback(floppy_image_device *floppy, int state);
protected:
+ wd_fdc_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// Chip-specific configuration flags
bool disable_mfm;
bool enmf;
@@ -202,8 +204,8 @@ protected:
int delay_register_commit;
int delay_command_commit;
- static const int fd179x_step_times[4];
- static const int fd176x_step_times[4];
+ static constexpr int fd179x_step_times[4] = { 6000, 12000, 20000, 30000 };
+ static constexpr int fd176x_step_times[4] = { 12000, 24000, 40000, 60000 };
virtual void device_start() override;
virtual void device_reset() override;
@@ -449,11 +451,10 @@ private:
void set_drq();
};
-class wd_fdc_analog_t : public wd_fdc_t {
-public:
- wd_fdc_analog_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
+class wd_fdc_analog_device_base : public wd_fdc_device_base {
protected:
+ wd_fdc_analog_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void pll_reset(bool fm, bool enmf, const attotime &when) override;
virtual void pll_start_writing(const attotime &tm) override;
virtual void pll_commit(floppy_image_device *floppy, const attotime &tm) override;
@@ -467,12 +468,11 @@ private:
fdc_pll_t cur_pll, checkpoint_pll;
};
-class wd_fdc_digital_t : public wd_fdc_t {
-public:
- wd_fdc_digital_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
+class wd_fdc_digital_device_base : public wd_fdc_device_base {
protected:
- static const int wd_digital_step_times[4];
+ wd_fdc_digital_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ static constexpr int wd_digital_step_times[4] = { 12000, 24000, 40000, 60000 };
virtual void pll_reset(bool fm, bool enmf, const attotime &when) override;
virtual void pll_start_writing(const attotime &tm) override;
@@ -511,178 +511,178 @@ private:
digital_pll_t cur_pll, checkpoint_pll;
};
-class fd1771_t : public wd_fdc_analog_t {
+class fd1771_device : public wd_fdc_analog_device_base {
public:
- fd1771_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1771_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual int calc_sector_size(uint8_t size, uint8_t command) const override;
};
-class fd1781_t : public wd_fdc_analog_t {
+class fd1781_device : public wd_fdc_analog_device_base {
public:
- fd1781_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1781_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual int calc_sector_size(uint8_t size, uint8_t command) const override;
};
-class fd1791_t : public wd_fdc_analog_t {
+class fd1791_device : public wd_fdc_analog_device_base {
public:
- fd1791_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1791_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class fd1792_t : public wd_fdc_analog_t {
+class fd1792_device : public wd_fdc_analog_device_base {
public:
- fd1792_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1792_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class fd1793_t : public wd_fdc_analog_t {
+class fd1793_device : public wd_fdc_analog_device_base {
public:
- fd1793_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1793_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class kr1818vg93_t : public wd_fdc_analog_t {
+class kr1818vg93_device : public wd_fdc_analog_device_base {
public:
- kr1818vg93_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ kr1818vg93_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class fd1794_t : public wd_fdc_analog_t {
+class fd1794_device : public wd_fdc_analog_device_base {
public:
- fd1794_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1794_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class fd1795_t : public wd_fdc_analog_t {
+class fd1795_device : public wd_fdc_analog_device_base {
public:
- fd1795_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual int calc_sector_size(uint8_t size, uint8_t command) const override;
};
-class fd1797_t : public wd_fdc_analog_t {
+class fd1797_device : public wd_fdc_analog_device_base {
public:
- fd1797_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1797_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual int calc_sector_size(uint8_t size, uint8_t command) const override;
};
-class mb8866_t : public wd_fdc_analog_t {
+class mb8866_device : public wd_fdc_analog_device_base {
public:
- mb8866_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb8866_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class mb8876_t : public wd_fdc_analog_t {
+class mb8876_device : public wd_fdc_analog_device_base {
public:
- mb8876_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb8876_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class mb8877_t : public wd_fdc_analog_t {
+class mb8877_device : public wd_fdc_analog_device_base {
public:
- mb8877_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb8877_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class fd1761_t : public wd_fdc_analog_t {
+class fd1761_device : public wd_fdc_analog_device_base {
public:
- fd1761_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1761_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class fd1763_t : public wd_fdc_analog_t {
+class fd1763_device : public wd_fdc_analog_device_base {
public:
- fd1763_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1763_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class fd1765_t : public wd_fdc_analog_t {
+class fd1765_device : public wd_fdc_analog_device_base {
public:
- fd1765_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1765_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual int calc_sector_size(uint8_t size, uint8_t command) const override;
};
-class fd1767_t : public wd_fdc_analog_t {
+class fd1767_device : public wd_fdc_analog_device_base {
public:
- fd1767_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fd1767_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual int calc_sector_size(uint8_t size, uint8_t command) const override;
};
-class wd2791_t : public wd_fdc_analog_t {
+class wd2791_device : public wd_fdc_analog_device_base {
public:
- wd2791_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ wd2791_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE_LINE_MEMBER(enmf_w) { enmf = state ? false : true; }
};
-class wd2793_t : public wd_fdc_analog_t {
+class wd2793_device : public wd_fdc_analog_device_base {
public:
- wd2793_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ wd2793_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE_LINE_MEMBER(enmf_w) { enmf = state ? false : true; }
};
-class wd2795_t : public wd_fdc_analog_t {
+class wd2795_device : public wd_fdc_analog_device_base {
public:
- wd2795_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ wd2795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual int calc_sector_size(uint8_t size, uint8_t command) const override;
};
-class wd2797_t : public wd_fdc_analog_t {
+class wd2797_device : public wd_fdc_analog_device_base {
public:
- wd2797_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ wd2797_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual int calc_sector_size(uint8_t size, uint8_t command) const override;
};
-class wd1770_t : public wd_fdc_digital_t {
+class wd1770_device : public wd_fdc_digital_device_base {
public:
- wd1770_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ wd1770_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class wd1772_t : public wd_fdc_digital_t {
+class wd1772_device : public wd_fdc_digital_device_base {
public:
- wd1772_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ wd1772_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual int settle_time() const override;
};
-class wd1773_t : public wd_fdc_digital_t {
+class wd1773_device : public wd_fdc_digital_device_base {
public:
- wd1773_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ wd1773_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type FD1771;
+DECLARE_DEVICE_TYPE(FD1771, fd1771_device)
-extern const device_type FD1781;
+DECLARE_DEVICE_TYPE(FD1781, fd1781_device)
-extern const device_type FD1791;
-extern const device_type FD1792;
-extern const device_type FD1793;
-extern const device_type FD1794;
-extern const device_type KR1818VG93;
-extern const device_type FD1795;
-extern const device_type FD1797;
+DECLARE_DEVICE_TYPE(FD1791, fd1791_device)
+DECLARE_DEVICE_TYPE(FD1792, fd1792_device)
+DECLARE_DEVICE_TYPE(FD1793, fd1793_device)
+DECLARE_DEVICE_TYPE(KR1818VG93, kr1818vg93_device)
+DECLARE_DEVICE_TYPE(FD1794, fd1794_device)
+DECLARE_DEVICE_TYPE(FD1795, fd1795_device)
+DECLARE_DEVICE_TYPE(FD1797, fd1797_device)
-extern const device_type MB8866;
-extern const device_type MB8876;
-extern const device_type MB8877;
+DECLARE_DEVICE_TYPE(MB8866, mb8866_device)
+DECLARE_DEVICE_TYPE(MB8876, mb8876_device)
+DECLARE_DEVICE_TYPE(MB8877, mb8877_device)
-extern const device_type FD1761;
-extern const device_type FD1763;
-extern const device_type FD1765;
-extern const device_type FD1767;
+DECLARE_DEVICE_TYPE(FD1761, fd1761_device)
+DECLARE_DEVICE_TYPE(FD1763, fd1763_device)
+DECLARE_DEVICE_TYPE(FD1765, fd1765_device)
+DECLARE_DEVICE_TYPE(FD1767, fd1767_device)
-extern const device_type WD2791;
-extern const device_type WD2793;
-extern const device_type WD2795;
-extern const device_type WD2797;
+DECLARE_DEVICE_TYPE(WD2791, wd2791_device)
+DECLARE_DEVICE_TYPE(WD2793, wd2793_device)
+DECLARE_DEVICE_TYPE(WD2795, wd2795_device)
+DECLARE_DEVICE_TYPE(WD2797, wd2797_device)
-extern const device_type WD1770;
-extern const device_type WD1772;
-extern const device_type WD1773;
+DECLARE_DEVICE_TYPE(WD1770, wd1770_device)
+DECLARE_DEVICE_TYPE(WD1772, wd1772_device)
+DECLARE_DEVICE_TYPE(WD1773, wd1773_device)
-#endif
+#endif // MAME_MACHINE_WD_FDC_H
diff --git a/src/devices/machine/wozfdc.cpp b/src/devices/machine/wozfdc.cpp
index 522a04c3496..1350ce4b126 100644
--- a/src/devices/machine/wozfdc.cpp
+++ b/src/devices/machine/wozfdc.cpp
@@ -9,9 +9,10 @@
*********************************************************************/
#include "emu.h"
+#include "wozfdc.h"
+
#include "imagedev/floppy.h"
#include "formats/ap2_dsk.h"
-#include "wozfdc.h"
/***************************************************************************
PARAMETERS
@@ -21,8 +22,8 @@
// GLOBAL VARIABLES
//**************************************************************************
-const device_type DISKII_FDC = device_creator<diskii_fdc>;
-const device_type APPLEIII_FDC = device_creator<appleiii_fdc>;
+DEFINE_DEVICE_TYPE(DISKII_FDC, diskii_fdc_device, "d2fdc", "Apple Disk II floppy controller")
+DEFINE_DEVICE_TYPE(APPLEIII_FDC, appleiii_fdc_device, "a3fdc", "Apple III floppy controller")
#define DISKII_P6_REGION "diskii_rom_p6"
@@ -44,18 +45,18 @@ const tiny_rom_entry *wozfdc_device::device_rom_region() const
// LIVE DEVICE
//**************************************************************************
-wozfdc_device::wozfdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+wozfdc_device::wozfdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock)
{
}
-diskii_fdc::diskii_fdc(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- wozfdc_device(mconfig, DISKII_FDC, "Apple Disk II floppy controller", tag, owner, clock, "d2fdc", __FILE__)
+diskii_fdc_device::diskii_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ wozfdc_device(mconfig, DISKII_FDC, tag, owner, clock)
{
}
-appleiii_fdc::appleiii_fdc(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- wozfdc_device(mconfig, APPLEIII_FDC, "Apple III floppy controller", tag, owner, clock, "a3fdc", __FILE__)
+appleiii_fdc_device::appleiii_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ wozfdc_device(mconfig, APPLEIII_FDC, tag, owner, clock)
{
}
@@ -149,7 +150,7 @@ void wozfdc_device::a3_update_drive_sel()
}
}
-void diskii_fdc::device_reset()
+void diskii_fdc_device::device_reset()
{
wozfdc_device::device_reset();
external_drive_select = false;
@@ -160,7 +161,7 @@ void diskii_fdc::device_reset()
}
}
-void appleiii_fdc::device_reset()
+void appleiii_fdc_device::device_reset()
{
wozfdc_device::device_reset();
external_drive_select = true;
@@ -420,7 +421,7 @@ void wozfdc_device::lss_sync()
}
// set the two images for the Disk II
-void diskii_fdc::set_floppies(floppy_connector *f0, floppy_connector *f1)
+void diskii_fdc_device::set_floppies(floppy_connector *f0, floppy_connector *f1)
{
floppy0 = f0;
floppy1 = f1;
@@ -431,7 +432,7 @@ void diskii_fdc::set_floppies(floppy_connector *f0, floppy_connector *f1)
}
}
-void appleiii_fdc::set_floppies_4(floppy_connector *f0, floppy_connector *f1, floppy_connector *f2, floppy_connector *f3)
+void appleiii_fdc_device::set_floppies_4(floppy_connector *f0, floppy_connector *f1, floppy_connector *f2, floppy_connector *f3)
{
floppy0 = f0;
floppy1 = f1;
@@ -444,19 +445,19 @@ void appleiii_fdc::set_floppies_4(floppy_connector *f0, floppy_connector *f1, fl
}
}
-READ8_MEMBER(appleiii_fdc::read_c0dx)
+READ8_MEMBER(appleiii_fdc_device::read_c0dx)
{
control_dx(offset);
return 0xff;
}
-WRITE8_MEMBER(appleiii_fdc::write_c0dx)
+WRITE8_MEMBER(appleiii_fdc_device::write_c0dx)
{
control_dx(offset);
}
-void appleiii_fdc::control_dx(int offset)
+void appleiii_fdc_device::control_dx(int offset)
{
switch (offset)
{
diff --git a/src/devices/machine/wozfdc.h b/src/devices/machine/wozfdc.h
index 639cccb8ba7..beb076ee11c 100644
--- a/src/devices/machine/wozfdc.h
+++ b/src/devices/machine/wozfdc.h
@@ -8,10 +8,10 @@
*********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_WOZFDC_H
+#define MAME_MACHINE_WOZFDC_H
-#ifndef __WOZFDC_H__
-#define __WOZFDC_H__
+#pragma once
#include "imagedev/floppy.h"
#include "formats/flopimg.h"
@@ -24,13 +24,7 @@
class wozfdc_device:
public device_t
{
- friend class diskii_fdc;
- friend class appleiii_fdc;
-
public:
- // construction/destruction
- wozfdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -38,18 +32,29 @@ public:
DECLARE_WRITE8_MEMBER(write);
protected:
+ // construction/destruction
+ wozfdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- floppy_connector *floppy0, *floppy1, *floppy2, *floppy3;
- floppy_image_device *floppy;
+ void control(int offset);
+ void phase(int ph, bool on);
+ uint64_t time_to_cycles(const attotime &tm);
+ attotime cycles_to_time(uint64_t cycles);
+ void a3_update_drive_sel();
+
+ void lss_start();
+ void lss_sync();
-private:
enum {
MODE_IDLE, MODE_ACTIVE, MODE_DELAY
};
+ floppy_connector *floppy0, *floppy1, *floppy2, *floppy3;
+ floppy_image_device *floppy;
+
uint64_t cycles;
uint8_t data_reg, address;
attotime write_start_time;
@@ -68,45 +73,38 @@ private:
int drvsel;
int enable1;
-
- void control(int offset);
- void phase(int ph, bool on);
- uint64_t time_to_cycles(const attotime &tm);
- attotime cycles_to_time(uint64_t cycles);
- void a3_update_drive_sel();
-
- void lss_start();
- void lss_sync();
};
-class diskii_fdc : public wozfdc_device
+class diskii_fdc_device : public wozfdc_device
{
public:
- diskii_fdc(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_reset() override;
+ diskii_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void set_floppies(floppy_connector *f0, floppy_connector *f1);
+
+protected:
+ virtual void device_reset() override;
};
-class appleiii_fdc : public wozfdc_device
+class appleiii_fdc_device : public wozfdc_device
{
public:
- appleiii_fdc(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_reset() override;
+ appleiii_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void set_floppies_4(floppy_connector *f0, floppy_connector *f1, floppy_connector *f2, floppy_connector *f3);
DECLARE_READ8_MEMBER(read_c0dx);
DECLARE_WRITE8_MEMBER(write_c0dx);
+protected:
+ virtual void device_reset() override;
+
private:
void control_dx(int offset);
};
// device type definition
-extern const device_type DISKII_FDC;
-extern const device_type APPLEIII_FDC;
+DECLARE_DEVICE_TYPE(DISKII_FDC, diskii_fdc_device)
+DECLARE_DEVICE_TYPE(APPLEIII_FDC, appleiii_fdc_device)
-#endif /* __WOZFDC_H__ */
+#endif // MAME_MACHINE_WOZFDC_H
diff --git a/src/devices/machine/x2212.cpp b/src/devices/machine/x2212.cpp
index abd92ad1b7e..a78e5992246 100644
--- a/src/devices/machine/x2212.cpp
+++ b/src/devices/machine/x2212.cpp
@@ -31,38 +31,29 @@ ADDRESS_MAP_END
//**************************************************************************
// device type definition
-const device_type X2212 = device_creator<x2212_device>;
-const device_type X2210 = device_creator<x2210_device>;
+DEFINE_DEVICE_TYPE(X2212, x2212_device, "x2212", "Xicor X2212 256x4 NVRAM")
+DEFINE_DEVICE_TYPE(X2210, x2210_device, "x2210", "Xicor X2210 64x4 NVRAM")
//-------------------------------------------------
// x2212_device - constructor
//-------------------------------------------------
x2212_device::x2212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, X2212, "X2212 NVRAM", tag, owner, clock, "x2212", __FILE__),
- device_memory_interface(mconfig, *this),
- device_nvram_interface(mconfig, *this),
- m_auto_save(false),
- m_sram_space_config("SRAM", ENDIANNESS_BIG, 8, 8, 0, *ADDRESS_MAP_NAME(x2212_sram_map)),
- m_e2prom_space_config("E2PROM", ENDIANNESS_BIG, 8, 8, 0, *ADDRESS_MAP_NAME(x2212_e2prom_map)),
- m_store(false),
- m_array_recall(false),
- m_size_data(0x100),
- m_default_data(*this, DEVICE_SELF, 0x100)
+ : x2212_device(mconfig, X2212, tag, owner, clock, 0x100)
{
}
-x2212_device::x2212_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int size_data)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_memory_interface(mconfig, *this),
- device_nvram_interface(mconfig, *this),
- m_auto_save(false),
- m_sram_space_config("SRAM", ENDIANNESS_BIG, 8, 8, 0, *ADDRESS_MAP_NAME(x2212_sram_map)),
- m_e2prom_space_config("E2PROM", ENDIANNESS_BIG, 8, 8, 0, *ADDRESS_MAP_NAME(x2212_e2prom_map)),
- m_store(false),
- m_array_recall(false),
- m_size_data(size_data),
- m_default_data(*this, DEVICE_SELF, size_data)
+x2212_device::x2212_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int size_data)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , device_nvram_interface(mconfig, *this)
+ , m_auto_save(false)
+ , m_sram_space_config("SRAM", ENDIANNESS_BIG, 8, 8, 0, *ADDRESS_MAP_NAME(x2212_sram_map))
+ , m_e2prom_space_config("E2PROM", ENDIANNESS_BIG, 8, 8, 0, *ADDRESS_MAP_NAME(x2212_e2prom_map))
+ , m_store(false)
+ , m_array_recall(false)
+ , m_size_data(size_data)
+ , m_default_data(*this, DEVICE_SELF, size_data)
{
}
@@ -240,6 +231,6 @@ WRITE_LINE_MEMBER( x2212_device::recall )
x2210_device::x2210_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : x2212_device(mconfig, X2210, "X2210", tag, owner, clock, "x2210", __FILE__, 0x40)
+ : x2212_device(mconfig, X2210, tag, owner, clock, 0x40)
{
}
diff --git a/src/devices/machine/x2212.h b/src/devices/machine/x2212.h
index 7c049f380e2..f819cb350b1 100644
--- a/src/devices/machine/x2212.h
+++ b/src/devices/machine/x2212.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_X2212_H
+#define MAME_MACHINE_X2212_H
-#ifndef __X2212_H__
-#define __X2212_H__
+#pragma once
@@ -49,7 +49,6 @@ class x2212_device : public device_t,
public:
// construction/destruction
x2212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- x2212_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int size_data);
// inline configuration helpers
static void static_set_auto_save(device_t &device);
@@ -62,6 +61,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( recall );
protected:
+ x2212_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int size_data);
+
// internal helpers
void store();
void recall();
@@ -91,11 +92,11 @@ protected:
bool m_store;
bool m_array_recall;
- int m_size_data;
+ int const m_size_data;
optional_region_ptr<uint8_t> m_default_data;
};
-class x2210_device : public x2212_device
+class x2210_device : public x2212_device
{
public:
x2210_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -103,8 +104,7 @@ public:
// device type definition
-extern const device_type X2212;
-extern const device_type X2210;
-
+DECLARE_DEVICE_TYPE(X2212, x2212_device)
+DECLARE_DEVICE_TYPE(X2210, x2210_device)
-#endif
+#endif // MAME_MACHINE_X2212_H
diff --git a/src/devices/machine/x76f041.cpp b/src/devices/machine/x76f041.cpp
index e0a1280aff7..03fb5b65bf9 100644
--- a/src/devices/machine/x76f041.cpp
+++ b/src/devices/machine/x76f041.cpp
@@ -32,10 +32,10 @@ inline void ATTR_PRINTF( 3, 4 ) x76f041_device::verboselog( int n_level, const c
}
// device type definition
-const device_type X76F041 = device_creator<x76f041_device>;
+DEFINE_DEVICE_TYPE(X76F041, x76f041_device, "x76f041", "X76F041 Secure SerialFlash")
x76f041_device::x76f041_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : device_t( mconfig, X76F041, "X76F041 Flash", tag, owner, clock, "x76f041", __FILE__ ),
+ : device_t( mconfig, X76F041, tag, owner, clock ),
device_nvram_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
m_cs( 0 ),
diff --git a/src/devices/machine/x76f041.h b/src/devices/machine/x76f041.h
index 33bf5b45f9b..8ccce9ba035 100644
--- a/src/devices/machine/x76f041.h
+++ b/src/devices/machine/x76f041.h
@@ -7,10 +7,10 @@
*
*/
-#pragma once
+#ifndef MAME_MACHINE_X76F041_H
+#define MAME_MACHINE_X76F041_H
-#ifndef __X76F041_H__
-#define __X76F041_H__
+#pragma once
#define MCFG_X76F041_ADD( _tag ) \
@@ -123,6 +123,6 @@ private:
// device type definition
-extern const device_type X76F041;
+DECLARE_DEVICE_TYPE(X76F041, x76f041_device)
-#endif
+#endif // MAME_MACHINE_X76F041_H
diff --git a/src/devices/machine/x76f100.cpp b/src/devices/machine/x76f100.cpp
index 4ff06be9f84..4c74bb5b7ad 100644
--- a/src/devices/machine/x76f100.cpp
+++ b/src/devices/machine/x76f100.cpp
@@ -30,10 +30,10 @@ inline void ATTR_PRINTF( 3, 4 ) x76f100_device::verboselog( int n_level, const c
}
// device type definition
-const device_type X76F100 = device_creator<x76f100_device>;
+DEFINE_DEVICE_TYPE(X76F100, x76f100_device, "x76f100", "X76F100 Secure SerialFlash")
x76f100_device::x76f100_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : device_t( mconfig, X76F100, "X76F100 Flash", tag, owner, clock, "x76f100", __FILE__ ),
+ : device_t( mconfig, X76F100, tag, owner, clock ),
device_nvram_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
m_cs( 0 ),
diff --git a/src/devices/machine/x76f100.h b/src/devices/machine/x76f100.h
index 995b59510e0..8757ed4f7eb 100644
--- a/src/devices/machine/x76f100.h
+++ b/src/devices/machine/x76f100.h
@@ -7,17 +7,16 @@
*
*/
-#pragma once
+#ifndef MAME_MACHINE_X76F100_H
+#define MAME_MACHINE_X76F100_H
-#ifndef __X76F100_H__
-#define __X76F100_H__
+#pragma once
-#define MCFG_X76F100_ADD( _tag ) \
- MCFG_DEVICE_ADD( _tag, X76F100, 0 )
+#define MCFG_X76F100_ADD( tag ) \
+ MCFG_DEVICE_ADD( (tag), X76F100, 0 )
-class x76f100_device : public device_t,
- public device_nvram_interface
+class x76f100_device : public device_t, public device_nvram_interface
{
public:
// construction/destruction
@@ -86,6 +85,6 @@ private:
};
// device type definition
-extern const device_type X76F100;
+DECLARE_DEVICE_TYPE(X76F100, x76f100_device)
-#endif
+#endif // MAME_MACHINE_X76F100_H
diff --git a/src/devices/machine/ym2148.cpp b/src/devices/machine/ym2148.cpp
index c36ad7b2bf3..f58d98b7536 100644
--- a/src/devices/machine/ym2148.cpp
+++ b/src/devices/machine/ym2148.cpp
@@ -13,11 +13,11 @@ TODO:
#include "ym2148.h"
-const device_type YM2148 = device_creator<ym2148_device>;
+DEFINE_DEVICE_TYPE(YM2148, ym2148_device, "ym2148", "Yamaha YM2148 MIDI/Keyboard Interface")
ym2148_device::ym2148_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YM2148, "YM2148", tag, owner, clock, "ym2148", __FILE__)
+ : device_t(mconfig, YM2148, tag, owner, clock)
, device_serial_interface(mconfig, *this)
, m_txd_handler(*this)
, m_irq_handler(*this)
@@ -30,7 +30,7 @@ ym2148_device::ym2148_device(const machine_config &mconfig, const char *tag, dev
, m_data_in(0)
, m_control(0)
, m_status(0), m_timer(nullptr)
- , m_rxd(1)
+ , m_rxd(1)
, m_tx_busy(false)
{
}
diff --git a/src/devices/machine/ym2148.h b/src/devices/machine/ym2148.h
index 5ca91bd8883..61fe8d01214 100644
--- a/src/devices/machine/ym2148.h
+++ b/src/devices/machine/ym2148.h
@@ -8,8 +8,10 @@
*********************************************************************/
-#ifndef __YM2148_H__
-#define __YM2148_H__
+#ifndef MAME_MACHINE_YM2148_H
+#define MAME_MACHINE_YM2148_H
+
+#pragma once
//**************************************************************************
@@ -29,18 +31,17 @@
devcb = &ym2148_device::set_irq_handler(*device, DEVCB_##_devcb);
-class ym2148_device : public device_t,
- public device_serial_interface
+class ym2148_device : public device_t, public device_serial_interface
{
public:
// construction/destruction
ym2148_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast<ym2148_device &>(device).m_txd_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_port_write_handler(device_t &device, _Object object) { return downcast<ym2148_device &>(device).m_port_write_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_port_read_handler(device_t &device, _Object object) { return downcast<ym2148_device &>(device).m_port_read_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ym2148_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<ym2148_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port_write_handler(device_t &device, Object &&cb) { return downcast<ym2148_device &>(device).m_port_write_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port_read_handler(device_t &device, Object &&cb) { return downcast<ym2148_device &>(device).m_port_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2148_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -87,7 +88,6 @@ private:
};
-extern const device_type YM2148;
-
+DECLARE_DEVICE_TYPE(YM2148, ym2148_device)
-#endif
+#endif // MAME_MACHINE_YM2148_H
diff --git a/src/devices/machine/z80ctc.cpp b/src/devices/machine/z80ctc.cpp
index 302572e9a90..cab0738e22c 100644
--- a/src/devices/machine/z80ctc.cpp
+++ b/src/devices/machine/z80ctc.cpp
@@ -72,14 +72,14 @@ const int WAITING_FOR_TRIG = 0x100;
//**************************************************************************
// device type definition
-const device_type Z80CTC = device_creator<z80ctc_device>;
+DEFINE_DEVICE_TYPE(Z80CTC, z80ctc_device, "z80ctc", "Z80 CTC")
//-------------------------------------------------
// z80ctc_device - constructor
//-------------------------------------------------
z80ctc_device::z80ctc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z80CTC, "Z80 CTC", tag, owner, clock, "z80ctc", __FILE__),
+ : device_t(mconfig, Z80CTC, tag, owner, clock),
device_z80daisy_interface(mconfig, *this),
m_intr_cb(*this),
m_zc0_cb(*this),
diff --git a/src/devices/machine/z80ctc.h b/src/devices/machine/z80ctc.h
index 71e36ccc52a..66d1ea0698a 100644
--- a/src/devices/machine/z80ctc.h
+++ b/src/devices/machine/z80ctc.h
@@ -23,8 +23,10 @@
***************************************************************************/
-#ifndef __Z80CTC_H__
-#define __Z80CTC_H__
+#ifndef MAME_MACHINE_Z80CTC_H
+#define MAME_MACHINE_Z80CTC_H
+
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -60,10 +62,10 @@ public:
// construction/destruction
z80ctc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_intr_callback(device_t &device, _Object object) { return downcast<z80ctc_device &>(device).m_intr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_zc0_callback(device_t &device, _Object object) { return downcast<z80ctc_device &>(device).m_zc0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_zc1_callback(device_t &device, _Object object) { return downcast<z80ctc_device &>(device).m_zc1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_zc2_callback(device_t &device, _Object object) { return downcast<z80ctc_device &>(device).m_zc2_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_intr_callback(device_t &device, Object &&cb) { return downcast<z80ctc_device &>(device).m_intr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_zc0_callback(device_t &device, Object &&cb) { return downcast<z80ctc_device &>(device).m_zc0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_zc1_callback(device_t &device, Object &&cb) { return downcast<z80ctc_device &>(device).m_zc1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_zc2_callback(device_t &device, Object &&cb) { return downcast<z80ctc_device &>(device).m_zc2_cb.set_callback(std::forward<Object>(cb)); }
// read/write handlers
DECLARE_READ8_MEMBER( read );
@@ -130,7 +132,7 @@ private:
// device type definition
-extern const device_type Z80CTC;
+DECLARE_DEVICE_TYPE(Z80CTC, z80ctc_device)
-#endif
+#endif // MAME_MACHINE_Z80CTC_H
diff --git a/src/devices/machine/z80dart.cpp b/src/devices/machine/z80dart.cpp
index 56613998b12..de68752a594 100644
--- a/src/devices/machine/z80dart.cpp
+++ b/src/devices/machine/z80dart.cpp
@@ -3,7 +3,7 @@
/***************************************************************************
Intel 8274 Multi-Protocol Serial Controller emulation
- NEC uPD7201 Multiprotocol Serial Communications Controller emulation
+ NEC µPD7201 Multiprotocol Serial Communications Controller emulation
Z80-DART Dual Asynchronous Receiver/Transmitter emulation
Z80-SIO/0/1/2/3/4 Serial Input/Output Controller emulation
@@ -32,17 +32,9 @@
#include "emu.h"
#include "z80dart.h"
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define VERBOSE 0
-#define LOGPRINT(x) do { if (VERBOSE) logerror x; } while (0)
-#define LOG(x) {} LOGPRINT(x)
-
-#if VERBOSE == 2
-#define logerror printf
-#endif
+//#define VERBOSE 1
+//#define LOG_OUTPUT_FUNC printf
+#include "logmacro.h"
#define CHANA_TAG "cha"
#define CHANB_TAG "chb"
@@ -52,15 +44,15 @@
//**************************************************************************
// device type definition
-const device_type Z80DART = device_creator<z80dart_device>;
-const device_type Z80DART_CHANNEL = device_creator<z80dart_channel>;
-const device_type Z80SIO0 = device_creator<z80sio0_device>;
-const device_type Z80SIO1 = device_creator<z80sio1_device>;
-const device_type Z80SIO2 = device_creator<z80sio2_device>;
-const device_type Z80SIO3 = device_creator<z80sio3_device>;
-const device_type Z80SIO4 = device_creator<z80sio4_device>;
-const device_type I8274 = device_creator<i8274_device>;
-const device_type UPD7201 = device_creator<upd7201_device>;
+DEFINE_DEVICE_TYPE(Z80DART, z80dart_device, "z80dart", "Z80 DART")
+DEFINE_DEVICE_TYPE(Z80DART_CHANNEL, z80dart_channel, "z80dart_channel", "Z80 DART channel")
+DEFINE_DEVICE_TYPE(Z80SIO0, z80sio0_device, "z80sio0", "Z80 SIO/0")
+DEFINE_DEVICE_TYPE(Z80SIO1, z80sio1_device, "z80sio1", "Z80 SIO/1")
+DEFINE_DEVICE_TYPE(Z80SIO2, z80sio2_device, "z80sio2", "Z80 SIO/2")
+DEFINE_DEVICE_TYPE(Z80SIO3, z80sio3_device, "z80sio3", "Z80 SIO/3")
+DEFINE_DEVICE_TYPE(Z80SIO4, z80sio4_device, "z80sio4", "Z80 SIO/4")
+DEFINE_DEVICE_TYPE(I8274, i8274_device, "i8274", "Intel 8274 MPSC")
+DEFINE_DEVICE_TYPE(UPD7201, upd7201_device, "upd7201", "NEC uPD7201 MPSC")
//-------------------------------------------------
@@ -87,98 +79,73 @@ machine_config_constructor z80dart_device::device_mconfig_additions() const
// z80dart_device - constructor
//-------------------------------------------------
-z80dart_device::z80dart_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_z80daisy_interface(mconfig, *this),
- m_chanA(*this, CHANA_TAG),
- m_chanB(*this, CHANB_TAG),
- m_rxca(0),
- m_txca(0),
- m_rxcb(0),
- m_txcb(0),
- m_out_txda_cb(*this),
- m_out_dtra_cb(*this),
- m_out_rtsa_cb(*this),
- m_out_wrdya_cb(*this),
- m_out_synca_cb(*this),
- m_out_txdb_cb(*this),
- m_out_dtrb_cb(*this),
- m_out_rtsb_cb(*this),
- m_out_wrdyb_cb(*this),
- m_out_syncb_cb(*this),
- m_out_int_cb(*this),
- m_out_rxdrqa_cb(*this),
- m_out_txdrqa_cb(*this),
- m_out_rxdrqb_cb(*this),
- m_out_txdrqb_cb(*this),
- m_variant(variant)
+z80dart_device::z80dart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_z80daisy_interface(mconfig, *this)
+ , m_chanA(*this, CHANA_TAG)
+ , m_chanB(*this, CHANB_TAG)
+ , m_rxca(0)
+ , m_txca(0)
+ , m_rxcb(0)
+ , m_txcb(0)
+ , m_out_txda_cb(*this)
+ , m_out_dtra_cb(*this)
+ , m_out_rtsa_cb(*this)
+ , m_out_wrdya_cb(*this)
+ , m_out_synca_cb(*this)
+ , m_out_txdb_cb(*this)
+ , m_out_dtrb_cb(*this)
+ , m_out_rtsb_cb(*this)
+ , m_out_wrdyb_cb(*this)
+ , m_out_syncb_cb(*this)
+ , m_out_int_cb(*this)
+ , m_out_rxdrqa_cb(*this)
+ , m_out_txdrqa_cb(*this)
+ , m_out_rxdrqb_cb(*this)
+ , m_out_txdrqb_cb(*this)
+ , m_variant(variant)
{
for (auto & elem : m_int_state)
elem = 0;
}
z80dart_device::z80dart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z80DART, "Z80 DART", tag, owner, clock, "z80dart", __FILE__),
- device_z80daisy_interface(mconfig, *this),
- m_chanA(*this, CHANA_TAG),
- m_chanB(*this, CHANB_TAG),
- m_rxca(0),
- m_txca(0),
- m_rxcb(0),
- m_txcb(0),
- m_out_txda_cb(*this),
- m_out_dtra_cb(*this),
- m_out_rtsa_cb(*this),
- m_out_wrdya_cb(*this),
- m_out_synca_cb(*this),
- m_out_txdb_cb(*this),
- m_out_dtrb_cb(*this),
- m_out_rtsb_cb(*this),
- m_out_wrdyb_cb(*this),
- m_out_syncb_cb(*this),
- m_out_int_cb(*this),
- m_out_rxdrqa_cb(*this),
- m_out_txdrqa_cb(*this),
- m_out_rxdrqb_cb(*this),
- m_out_txdrqb_cb(*this),
- m_variant(TYPE_DART)
+ : z80dart_device(mconfig, Z80DART, tag, owner, clock, TYPE_DART)
{
- for (auto & elem : m_int_state)
- elem = 0;
}
z80sio0_device::z80sio0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80dart_device(mconfig, Z80SIO0, "Z80 SIO/0", tag, owner, clock, TYPE_SIO0, "z80sio0", __FILE__)
+ : z80dart_device(mconfig, Z80SIO0, tag, owner, clock, TYPE_SIO0)
{
}
z80sio1_device::z80sio1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80dart_device(mconfig, Z80SIO1, "Z80 SIO/1", tag, owner, clock, TYPE_SIO1, "z80sio1", __FILE__)
+ : z80dart_device(mconfig, Z80SIO1, tag, owner, clock, TYPE_SIO1)
{
}
z80sio2_device::z80sio2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80dart_device(mconfig, Z80SIO2, "Z80 SIO/2", tag, owner, clock, TYPE_SIO2, "z80sio2", __FILE__)
+ : z80dart_device(mconfig, Z80SIO2, tag, owner, clock, TYPE_SIO2)
{
}
z80sio3_device::z80sio3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80dart_device(mconfig, Z80SIO3, "Z80 SIO/3", tag, owner, clock, TYPE_SIO3, "z80sio3", __FILE__)
+ : z80dart_device(mconfig, Z80SIO3, tag, owner, clock, TYPE_SIO3)
{
}
z80sio4_device::z80sio4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80dart_device(mconfig, Z80SIO4, "Z80 SIO/4", tag, owner, clock, TYPE_SIO4, "z80sio4", __FILE__)
+ : z80dart_device(mconfig, Z80SIO4, tag, owner, clock, TYPE_SIO4)
{
}
i8274_device::i8274_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80dart_device(mconfig, I8274, "I8274", tag, owner, clock, TYPE_I8274, "i8274", __FILE__)
+ : z80dart_device(mconfig, I8274, tag, owner, clock, TYPE_I8274)
{
}
upd7201_device::upd7201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80dart_device(mconfig, UPD7201, "uPD7201", tag, owner, clock, TYPE_UPD7201, "upd7201", __FILE__)
+ : z80dart_device(mconfig, UPD7201, tag, owner, clock, TYPE_UPD7201)
{
}
@@ -207,12 +174,12 @@ void z80dart_device::device_start()
m_out_txdrqb_cb.resolve_safe();
// configure channel A
- m_chanA->m_rxc = m_rxca;
- m_chanA->m_txc = m_txca;
+ m_chanA->set_rxc(m_rxca);
+ m_chanA->set_txc(m_txca);
// configure channel B
- m_chanB->m_rxc = m_rxcb;
- m_chanB->m_txc = m_txcb;
+ m_chanB->set_rxc(m_rxcb);
+ m_chanB->set_txc(m_txcb);
// state saving
save_item(NAME(m_int_state));
@@ -225,7 +192,7 @@ void z80dart_device::device_start()
void z80dart_device::device_reset()
{
- LOG(("Z80DART \"%s\" Reset\n", tag()));
+ LOG("Z80DART \"%s\" Reset\n", tag());
m_chanA->reset();
m_chanB->reset();
@@ -240,9 +207,9 @@ int z80dart_device::z80daisy_irq_state()
int state = 0;
int i;
- LOG(("Z80DART \"%s\" : Interrupt State A:%d%d%d%d B:%d%d%d%d\n", tag(),
+ LOG("Z80DART \"%s\" : Interrupt State A:%d%d%d%d B:%d%d%d%d\n", tag(),
m_int_state[0], m_int_state[1], m_int_state[2], m_int_state[3],
- m_int_state[4], m_int_state[5], m_int_state[6], m_int_state[7]));
+ m_int_state[4], m_int_state[5], m_int_state[6], m_int_state[7]);
// loop over all interrupt sources
for (i = 0; i < 8; i++)
@@ -256,7 +223,7 @@ int z80dart_device::z80daisy_irq_state()
state |= m_int_state[i];
}
- LOG(("Z80DART \"%s\" : Interrupt State %u\n", tag(), state));
+ LOG("Z80DART \"%s\" : Interrupt State %u\n", tag(), state);
return state;
}
@@ -270,7 +237,7 @@ int z80dart_device::z80daisy_irq_ack()
{
int i;
- LOG(("Z80DART \"%s\" Interrupt Acknowledge\n", tag()));
+ LOG("Z80DART \"%s\" Interrupt Acknowledge\n", tag());
// loop over all interrupt sources
for (i = 0; i < 8; i++)
@@ -280,18 +247,18 @@ int z80dart_device::z80daisy_irq_ack()
{
// clear interrupt, switch to the IEO state, and update the IRQs
m_int_state[i] = Z80_DAISY_IEO;
- m_chanA->m_rr[0] &= ~z80dart_channel::RR0_INTERRUPT_PENDING;
+ m_chanA->clr_interrupt_pending();
check_interrupts();
- LOG(("Z80DART \"%s\" : Interrupt Acknowledge Vector %02x\n", tag(), m_chanB->m_rr[2]));
+ LOG("Z80DART \"%s\" : Interrupt Acknowledge Vector %02x\n", tag(), m_chanB->get_vector());
- return m_chanB->m_rr[2];
+ return m_chanB->get_vector();
}
}
//logerror("z80dart_irq_ack: failed to find an interrupt to ack!\n");
- return m_chanB->m_rr[2];
+ return m_chanB->get_vector();
}
@@ -303,7 +270,7 @@ void z80dart_device::z80daisy_irq_reti()
{
int i;
- LOG(("Z80DART \"%s\" Return from Interrupt\n", tag()));
+ LOG("Z80DART \"%s\" Return from Interrupt\n", tag());
// loop over all interrupt sources
for (i = 0; i < 8; i++)
@@ -374,7 +341,7 @@ void z80dart_device::trigger_interrupt(int index, int state)
break;
}
- if(m_chanA->m_wr[2] & z80dart_channel::WR2_PRIORITY)
+ if(m_chanA->get_priority())
{
priority = (prio_level * 2) + index;
}
@@ -382,7 +349,7 @@ void z80dart_device::trigger_interrupt(int index, int state)
{
priority = (prio_level == 2) ? index + 4 : ((index * 2) + prio_level);
}
- if (m_chanB->m_wr[1] & z80dart_channel::WR1_STATUS_VECTOR)
+ if (m_chanB->get_status_vector())
{
vector = (!index << 2) | state;
if((m_chanA->m_wr[1] & 0x18) == z80dart_channel::WR2_MODE_8086_8088)
@@ -398,21 +365,21 @@ void z80dart_device::trigger_interrupt(int index, int state)
else
{
priority = (index << 2) | state;
- if (m_chanB->m_wr[1] & z80dart_channel::WR1_STATUS_VECTOR)
+ if (m_chanB->get_status_vector())
{
// status affects vector
vector = (m_chanB->m_wr[2] & 0xf1) | (!index << 3) | (state << 1);
}
}
- LOG(("Z80DART \"%s\" Channel %c : Interrupt Request %u\n", tag(), 'A' + index, state));
+ LOG("Z80DART \"%s\" Channel %c : Interrupt Request %u\n", tag(), 'A' + index, state);
// update vector register
- m_chanB->m_rr[2] = vector;
+ m_chanB->set_vector(vector);
// trigger interrupt
m_int_state[priority] |= Z80_DAISY_INT;
- m_chanA->m_rr[0] |= z80dart_channel::RR0_INTERRUPT_PENDING;
+ m_chanA->set_interrupt_pending();
// check for interrupt
check_interrupts();
@@ -501,22 +468,22 @@ WRITE8_MEMBER( z80dart_device::ba_cd_w )
//-------------------------------------------------
z80dart_channel::z80dart_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z80DART_CHANNEL, "Z80 DART channel", tag, owner, clock, "z80dart_channel", __FILE__),
- device_serial_interface(mconfig, *this),
- m_rx_error(0),
- m_rx_clock(0),
- m_rx_first(0),
- m_rx_break(0),
- m_rx_rr0_latch(0),
- m_rxd(0),
- m_ri(0),
- m_cts(0),
- m_dcd(0),
- m_tx_data(0),
- m_tx_clock(0),
- m_dtr(0),
- m_rts(0),
- m_sync(0)
+ : device_t(mconfig, Z80DART_CHANNEL, tag, owner, clock)
+ , device_serial_interface(mconfig, *this)
+ , m_rx_error(0)
+ , m_rx_clock(0)
+ , m_rx_first(0)
+ , m_rx_break(0)
+ , m_rx_rr0_latch(0)
+ , m_rxd(0)
+ , m_ri(0)
+ , m_cts(0)
+ , m_dcd(0)
+ , m_tx_data(0)
+ , m_tx_clock(0)
+ , m_dtr(0)
+ , m_rts(0)
+ , m_sync(0)
{
for (auto & elem : m_rr)
elem = 0;
@@ -631,7 +598,7 @@ void z80dart_channel::tra_complete()
{
if ((m_wr[5] & WR5_TX_ENABLE) && !(m_wr[5] & WR5_SEND_BREAK) && !(m_rr[0] & RR0_TX_BUFFER_EMPTY))
{
- LOG(("Z80DART \"%s\" Channel %c : Transmit Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, m_tx_data));
+ LOG("Z80DART \"%s\" Channel %c : Transmit Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, m_tx_data);
transmit_register_setup(m_tx_data);
@@ -802,7 +769,7 @@ uint8_t z80dart_channel::control_read()
break;
}
- //LOG(("Z80DART \"%s\" Channel %c : Control Register Read '%02x'\n", m_owner->tag(), 'A' + m_index, data));
+ //LOG("Z80DART \"%s\" Channel %c : Control Register Read '%02x'\n", m_owner->tag(), 'A' + m_index, data);
return data;
}
@@ -817,7 +784,7 @@ void z80dart_channel::control_write(uint8_t data)
int reg = m_wr[0] & WR0_REGISTER_MASK;
uint8_t prev = m_wr[reg];
- LOG(("Z80DART \"%s\" Channel %c : Control Register Write '%02x'\n", m_owner->tag(), 'A' + m_index, data));
+ LOG("Z80DART \"%s\" Channel %c : Control Register Write '%02x'\n", m_owner->tag(), 'A' + m_index, data);
// write data to selected register
if (reg < 6)
@@ -835,11 +802,11 @@ void z80dart_channel::control_write(uint8_t data)
switch (data & WR0_COMMAND_MASK)
{
case WR0_NULL:
- LOG(("Z80DART \"%s\" Channel %c : Null\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Null\n", m_owner->tag(), 'A' + m_index);
break;
case WR0_SEND_ABORT:
- LOG(("Z80DART \"%s\" Channel %c : Send Abort\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Send Abort\n", m_owner->tag(), 'A' + m_index);
logerror("Z80DART \"%s\" Channel %c : unsupported command: Send Abort\n", m_owner->tag(), 'A' + m_index);
break;
@@ -853,40 +820,40 @@ void z80dart_channel::control_write(uint8_t data)
m_rx_rr0_latch = 0;
- LOG(("Z80DART \"%s\" Channel %c : Reset External/Status Interrupt\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Reset External/Status Interrupt\n", m_owner->tag(), 'A' + m_index);
break;
case WR0_CHANNEL_RESET:
// channel reset
- LOG(("Z80DART \"%s\" Channel %c : Channel Reset\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Channel Reset\n", m_owner->tag(), 'A' + m_index);
device_reset();
break;
case WR0_ENABLE_INT_NEXT_RX:
// enable interrupt on next receive character
- LOG(("Z80DART \"%s\" Channel %c : Enable Interrupt on Next Received Character\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Enable Interrupt on Next Received Character\n", m_owner->tag(), 'A' + m_index);
m_rx_first = 1;
break;
case WR0_RESET_TX_INT:
// reset transmitter interrupt pending
- LOG(("Z80DART \"%s\" Channel %c : Reset Transmitter Interrupt Pending\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Reset Transmitter Interrupt Pending\n", m_owner->tag(), 'A' + m_index);
logerror("Z80DART \"%s\" Channel %c : unsupported command: Reset Transmitter Interrupt Pending\n", m_owner->tag(), 'A' + m_index);
break;
case WR0_ERROR_RESET:
// error reset
- LOG(("Z80DART \"%s\" Channel %c : Error Reset\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Error Reset\n", m_owner->tag(), 'A' + m_index);
m_rr[1] &= ~(RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR);
break;
case WR0_RETURN_FROM_INT:
// return from interrupt
- LOG(("Z80DART \"%s\" Channel %c : Return from Interrupt\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Return from Interrupt\n", m_owner->tag(), 'A' + m_index);
m_uart->z80daisy_irq_reti();
if((m_uart->m_variant == z80dart_device::TYPE_I8274) || (m_uart->m_variant == z80dart_device::TYPE_UPD7201))
{
- if (m_uart->m_chanB->m_wr[1] & z80dart_channel::WR1_STATUS_VECTOR)
+ if (m_uart->m_chanB->get_status_vector())
{
if((m_uart->m_chanA->m_wr[1] & 0x18) == z80dart_channel::WR2_MODE_8086_8088)
m_uart->m_chanB->m_rr[2] = (m_uart->m_chanB->m_wr[2] & 0xf8) | 0x07;
@@ -899,29 +866,29 @@ void z80dart_channel::control_write(uint8_t data)
break;
case 1:
- LOG(("Z80DART \"%s\" Channel %c : External Interrupt Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_EXT_INT_ENABLE) ? 1 : 0));
- LOG(("Z80DART \"%s\" Channel %c : Transmit Interrupt Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_TX_INT_ENABLE) ? 1 : 0));
- LOG(("Z80DART \"%s\" Channel %c : Status Affects Vector %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_STATUS_VECTOR) ? 1 : 0));
- LOG(("Z80DART \"%s\" Channel %c : Wait/Ready Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_WRDY_ENABLE) ? 1 : 0));
- LOG(("Z80DART \"%s\" Channel %c : Wait/Ready Function %s\n", m_owner->tag(), 'A' + m_index, (data & WR1_WRDY_FUNCTION) ? "Ready" : "Wait"));
- LOG(("Z80DART \"%s\" Channel %c : Wait/Ready on %s\n", m_owner->tag(), 'A' + m_index, (data & WR1_WRDY_ON_RX_TX) ? "Receive" : "Transmit"));
+ LOG("Z80DART \"%s\" Channel %c : External Interrupt Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_EXT_INT_ENABLE) ? 1 : 0);
+ LOG("Z80DART \"%s\" Channel %c : Transmit Interrupt Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_TX_INT_ENABLE) ? 1 : 0);
+ LOG("Z80DART \"%s\" Channel %c : Status Affects Vector %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_STATUS_VECTOR) ? 1 : 0);
+ LOG("Z80DART \"%s\" Channel %c : Wait/Ready Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_WRDY_ENABLE) ? 1 : 0);
+ LOG("Z80DART \"%s\" Channel %c : Wait/Ready Function %s\n", m_owner->tag(), 'A' + m_index, (data & WR1_WRDY_FUNCTION) ? "Ready" : "Wait");
+ LOG("Z80DART \"%s\" Channel %c : Wait/Ready on %s\n", m_owner->tag(), 'A' + m_index, (data & WR1_WRDY_ON_RX_TX) ? "Receive" : "Transmit");
switch (data & WR1_RX_INT_MODE_MASK)
{
case WR1_RX_INT_DISABLE:
- LOG(("Z80DART \"%s\" Channel %c : Receiver Interrupt Disabled\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Receiver Interrupt Disabled\n", m_owner->tag(), 'A' + m_index);
break;
case WR1_RX_INT_FIRST:
- LOG(("Z80DART \"%s\" Channel %c : Receiver Interrupt on First Character\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Receiver Interrupt on First Character\n", m_owner->tag(), 'A' + m_index);
break;
case WR1_RX_INT_ALL_PARITY:
- LOG(("Z80DART \"%s\" Channel %c : Receiver Interrupt on All Characters, Parity Affects Vector\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Receiver Interrupt on All Characters, Parity Affects Vector\n", m_owner->tag(), 'A' + m_index);
break;
case WR1_RX_INT_ALL:
- LOG(("Z80DART \"%s\" Channel %c : Receiver Interrupt on All Characters\n", m_owner->tag(), 'A' + m_index));
+ LOG("Z80DART \"%s\" Channel %c : Receiver Interrupt on All Characters\n", m_owner->tag(), 'A' + m_index);
break;
}
@@ -932,40 +899,40 @@ void z80dart_channel::control_write(uint8_t data)
// interrupt vector
if (m_index == z80dart_device::CHANNEL_B)
{
- if(m_wr[1] & z80dart_channel::WR1_STATUS_VECTOR)
+ if(get_status_vector())
m_rr[2] = ( m_rr[2] & 0x0e ) | ( m_wr[2] & 0xF1);
else
m_rr[2] = m_wr[2];
}
m_uart->check_interrupts();
- LOG(("Z80DART \"%s\" Channel %c : Interrupt Vector %02x\n", m_owner->tag(), 'A' + m_index, data));
+ LOG("Z80DART \"%s\" Channel %c : Interrupt Vector %02x\n", m_owner->tag(), 'A' + m_index, data);
break;
case 3:
- LOG(("Z80DART \"%s\" Channel %c : Receiver Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR3_RX_ENABLE) ? 1 : 0));
- LOG(("Z80DART \"%s\" Channel %c : Auto Enables %u\n", m_owner->tag(), 'A' + m_index, (data & WR3_AUTO_ENABLES) ? 1 : 0));
- LOG(("Z80DART \"%s\" Channel %c : Receiver Bits/Character %u\n", m_owner->tag(), 'A' + m_index, get_rx_word_length()));
+ LOG("Z80DART \"%s\" Channel %c : Receiver Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR3_RX_ENABLE) ? 1 : 0);
+ LOG("Z80DART \"%s\" Channel %c : Auto Enables %u\n", m_owner->tag(), 'A' + m_index, (data & WR3_AUTO_ENABLES) ? 1 : 0);
+ LOG("Z80DART \"%s\" Channel %c : Receiver Bits/Character %u\n", m_owner->tag(), 'A' + m_index, get_rx_word_length());
if (data != prev)
update_serial();
break;
case 4:
- LOG(("Z80DART \"%s\" Channel %c : Parity Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR4_PARITY_ENABLE) ? 1 : 0));
- LOG(("Z80DART \"%s\" Channel %c : Parity %s\n", m_owner->tag(), 'A' + m_index, (data & WR4_PARITY_EVEN) ? "Even" : "Odd"));
- LOG(("Z80DART \"%s\" Channel %c : Stop Bits %s\n", m_owner->tag(), 'A' + m_index, stop_bits_tostring(get_stop_bits())));
- LOG(("Z80DART \"%s\" Channel %c : Clock Mode %uX\n", m_owner->tag(), 'A' + m_index, get_clock_mode()));
+ LOG("Z80DART \"%s\" Channel %c : Parity Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR4_PARITY_ENABLE) ? 1 : 0);
+ LOG("Z80DART \"%s\" Channel %c : Parity %s\n", m_owner->tag(), 'A' + m_index, (data & WR4_PARITY_EVEN) ? "Even" : "Odd");
+ LOG("Z80DART \"%s\" Channel %c : Stop Bits %s\n", m_owner->tag(), 'A' + m_index, stop_bits_tostring(get_stop_bits()));
+ LOG("Z80DART \"%s\" Channel %c : Clock Mode %uX\n", m_owner->tag(), 'A' + m_index, get_clock_mode());
if (data != prev)
update_serial();
break;
case 5:
- LOG(("Z80DART \"%s\" Channel %c : Transmitter Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_TX_ENABLE) ? 1 : 0));
- LOG(("Z80DART \"%s\" Channel %c : Transmitter Bits/Character %u\n", m_owner->tag(), 'A' + m_index, get_tx_word_length()));
- LOG(("Z80DART \"%s\" Channel %c : Send Break %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_SEND_BREAK) ? 1 : 0));
- LOG(("Z80DART \"%s\" Channel %c : Request to Send %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_RTS) ? 1 : 0));
- LOG(("Z80DART \"%s\" Channel %c : Data Terminal Ready %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_DTR) ? 1 : 0));
+ LOG("Z80DART \"%s\" Channel %c : Transmitter Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_TX_ENABLE) ? 1 : 0);
+ LOG("Z80DART \"%s\" Channel %c : Transmitter Bits/Character %u\n", m_owner->tag(), 'A' + m_index, get_tx_word_length());
+ LOG("Z80DART \"%s\" Channel %c : Send Break %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_SEND_BREAK) ? 1 : 0);
+ LOG("Z80DART \"%s\" Channel %c : Request to Send %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_RTS) ? 1 : 0);
+ LOG("Z80DART \"%s\" Channel %c : Data Terminal Ready %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_DTR) ? 1 : 0);
if (data != prev)
update_serial();
@@ -987,12 +954,12 @@ void z80dart_channel::control_write(uint8_t data)
break;
case 6:
- LOG(("Z80DART \"%s\" Channel %c : Transmit Sync %02x\n", m_owner->tag(), 'A' + m_index, data));
+ LOG("Z80DART \"%s\" Channel %c : Transmit Sync %02x\n", m_owner->tag(), 'A' + m_index, data);
m_sync = (m_sync & 0xff00) | data;
break;
case 7:
- LOG(("Z80DART \"%s\" Channel %c : Receive Sync %02x\n", m_owner->tag(), 'A' + m_index, data));
+ LOG("Z80DART \"%s\" Channel %c : Receive Sync %02x\n", m_owner->tag(), 'A' + m_index, data);
m_sync = (data << 8) | (m_sync & 0xff);
break;
}
@@ -1022,7 +989,7 @@ uint8_t z80dart_channel::data_read()
}
}
- LOG(("Z80DART \"%s\" Channel %c : Data Register Read '%02x'\n", m_owner->tag(), 'A' + m_index, data));
+ LOG("Z80DART \"%s\" Channel %c : Data Register Read '%02x'\n", m_owner->tag(), 'A' + m_index, data);
return data;
}
@@ -1038,7 +1005,7 @@ void z80dart_channel::data_write(uint8_t data)
if ((m_wr[5] & WR5_TX_ENABLE) && is_transmit_register_empty())
{
- LOG(("Z80DART \"%s\" Channel %c : Transmit Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, m_tx_data));
+ LOG("Z80DART \"%s\" Channel %c : Transmit Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, m_tx_data);
transmit_register_setup(m_tx_data);
@@ -1055,7 +1022,7 @@ void z80dart_channel::data_write(uint8_t data)
m_rr[1] &= ~RR1_ALL_SENT;
- LOG(("Z80DART \"%s\" Channel %c : Data Register Write '%02x'\n", m_owner->tag(), 'A' + m_index, data));
+ LOG("Z80DART \"%s\" Channel %c : Data Register Write '%02x'\n", m_owner->tag(), 'A' + m_index, data);
}
@@ -1065,7 +1032,7 @@ void z80dart_channel::data_write(uint8_t data)
void z80dart_channel::receive_data(uint8_t data)
{
- LOG(("Z80DART \"%s\" Channel %c : Receive Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, data));
+ LOG("Z80DART \"%s\" Channel %c : Receive Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, data);
if (m_rx_data_fifo.full())
{
@@ -1125,7 +1092,7 @@ void z80dart_channel::receive_data(uint8_t data)
WRITE_LINE_MEMBER( z80dart_channel::cts_w )
{
- LOG(("Z80DART \"%s\" Channel %c : CTS %u\n", m_owner->tag(), 'A' + m_index, state));
+ LOG("Z80DART \"%s\" Channel %c : CTS %u\n", m_owner->tag(), 'A' + m_index, state);
if (m_cts != state)
{
@@ -1164,7 +1131,7 @@ WRITE_LINE_MEMBER( z80dart_channel::cts_w )
WRITE_LINE_MEMBER( z80dart_channel::dcd_w )
{
- LOG(("Z80DART \"%s\" Channel %c : DCD %u\n", m_owner->tag(), 'A' + m_index, state));
+ LOG("Z80DART \"%s\" Channel %c : DCD %u\n", m_owner->tag(), 'A' + m_index, state);
if (m_dcd != state)
{
@@ -1202,7 +1169,7 @@ WRITE_LINE_MEMBER( z80dart_channel::dcd_w )
WRITE_LINE_MEMBER( z80dart_channel::ri_w )
{
- LOG(("Z80DART \"%s\" Channel %c : RI %u\n", m_owner->tag(), 'A' + m_index, state));
+ LOG("Z80DART \"%s\" Channel %c : RI %u\n", m_owner->tag(), 'A' + m_index, state);
if (m_ri != state)
{
@@ -1235,7 +1202,7 @@ WRITE_LINE_MEMBER( z80dart_channel::ri_w )
WRITE_LINE_MEMBER( z80dart_channel::sync_w )
{
- LOG(("Z80DART \"%s\" Channel %c : SYNC %u\n", m_owner->tag(), 'A' + m_index, state));
+ LOG("Z80DART \"%s\" Channel %c : SYNC %u\n", m_owner->tag(), 'A' + m_index, state);
}
@@ -1245,7 +1212,7 @@ WRITE_LINE_MEMBER( z80dart_channel::sync_w )
WRITE_LINE_MEMBER( z80dart_channel::rxc_w )
{
- //LOG(("Z80DART \"%s\" Channel %c : Receiver Clock Pulse\n", m_owner->tag(), m_index + 'A'));
+ //LOG("Z80DART \"%s\" Channel %c : Receiver Clock Pulse\n", m_owner->tag(), m_index + 'A');
int clocks = get_clock_mode();
if (clocks == 1)
rx_clock_w(state);
@@ -1267,7 +1234,7 @@ WRITE_LINE_MEMBER( z80dart_channel::rxc_w )
WRITE_LINE_MEMBER( z80dart_channel::txc_w )
{
- //LOG(("Z80DART \"%s\" Channel %c : Transmitter Clock Pulse\n", m_owner->tag(), m_index + 'A'));
+ //LOG("Z80DART \"%s\" Channel %c : Transmitter Clock Pulse\n", m_owner->tag(), m_index + 'A');
int clocks = get_clock_mode();
if (clocks == 1)
tx_clock_w(state);
diff --git a/src/devices/machine/z80dart.h b/src/devices/machine/z80dart.h
index 74dde60a269..2d391de37f4 100644
--- a/src/devices/machine/z80dart.h
+++ b/src/devices/machine/z80dart.h
@@ -142,8 +142,10 @@
***************************************************************************/
-#ifndef __Z80DART_H__
-#define __Z80DART_H__
+#ifndef MAME_MACHINE_Z80DART_H
+#define MAME_MACHINE_Z80DART_H
+
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -245,11 +247,45 @@ class z80dart_device;
class z80dart_channel : public device_t,
public device_serial_interface
{
- friend class z80dart_device;
-
+ friend class z80dart_device; // FIXME: still accesses m_rr and m_wr directly in a couple of places
public:
+ enum
+ {
+ INT_TRANSMIT = 0,
+ INT_EXTERNAL,
+ INT_RECEIVE,
+ INT_SPECIAL
+ };
+
z80dart_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ DECLARE_WRITE_LINE_MEMBER( write_rx );
+ DECLARE_WRITE_LINE_MEMBER( cts_w );
+ DECLARE_WRITE_LINE_MEMBER( dcd_w );
+ DECLARE_WRITE_LINE_MEMBER( ri_w );
+ DECLARE_WRITE_LINE_MEMBER( rxc_w );
+ DECLARE_WRITE_LINE_MEMBER( txc_w );
+ DECLARE_WRITE_LINE_MEMBER( sync_w );
+
+ uint8_t control_read();
+ void control_write(uint8_t data);
+
+ uint8_t data_read();
+ void data_write(uint8_t data);
+
+ void set_rxc(int rxc) { m_rxc = rxc; }
+ void set_txc(int txc) { m_txc = txc; }
+
+ void clr_interrupt_pending() { m_rr[0] &= ~RR0_INTERRUPT_PENDING; }
+ void set_interrupt_pending() { m_rr[0] |= RR0_INTERRUPT_PENDING; }
+
+ uint8_t get_vector() const { return m_rr[2]; }
+ void set_vector(uint8_t vector) { m_rr[2] = vector; }
+
+ bool get_status_vector() const { return m_wr[1] & WR1_STATUS_VECTOR; }
+ bool get_priority() const { return m_wr[2] & WR2_PRIORITY; }
+
+protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -261,22 +297,8 @@ public:
virtual void rcv_callback() override;
virtual void rcv_complete() override;
- uint8_t control_read();
- void control_write(uint8_t data);
-
- uint8_t data_read();
- void data_write(uint8_t data);
-
void receive_data(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER( write_rx );
- DECLARE_WRITE_LINE_MEMBER( cts_w );
- DECLARE_WRITE_LINE_MEMBER( dcd_w );
- DECLARE_WRITE_LINE_MEMBER( ri_w );
- DECLARE_WRITE_LINE_MEMBER( rxc_w );
- DECLARE_WRITE_LINE_MEMBER( txc_w );
- DECLARE_WRITE_LINE_MEMBER( sync_w );
-
int m_rxc;
int m_txc;
@@ -284,15 +306,6 @@ public:
uint8_t m_rr[3]; // read register
uint8_t m_wr[6]; // write register
-protected:
- enum
- {
- INT_TRANSMIT = 0,
- INT_EXTERNAL,
- INT_RECEIVE,
- INT_SPECIAL
- };
-
enum
{
RR0_RX_CHAR_AVAILABLE = 0x01,
@@ -465,24 +478,23 @@ class z80dart_device : public device_t,
public:
// construction/destruction
- z80dart_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
z80dart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_txda_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_txda_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtra_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_dtra_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtsa_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_rtsa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_wrdya_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_wrdya_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_synca_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_synca_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdb_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_txdb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtrb_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_dtrb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtsb_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_rtsb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_wrdyb_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_wrdyb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_syncb_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_syncb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_rxdrqa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdrqa_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_txdrqa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_rxdrqb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdrqb_callback(device_t &device, _Object object) { return downcast<z80dart_device &>(device).m_out_txdrqb_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_txda_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_txda_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtra_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_dtra_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtsa_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_wrdya_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_wrdya_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_synca_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_synca_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_txdb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_txdb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtrb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtsb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_wrdyb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_wrdyb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_syncb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_syncb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_rxdrqa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_txdrqa_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_txdrqa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_rxdrqb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_txdrqb_callback(device_t &device, Object &&cb) { return downcast<z80dart_device &>(device).m_out_txdrqb_cb.set_callback(std::forward<Object>(cb)); }
static void configure_channels(device_t &device, int rxa, int txa, int rxb, int txb)
{
@@ -528,6 +540,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( syncb_w ) { m_chanB->sync_w(state); }
protected:
+ z80dart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -591,13 +605,13 @@ protected:
int m_int_state[8]; // interrupt state
- int m_variant;
+ int const m_variant;
};
// ======================> z80sio0_device
-class z80sio0_device : public z80dart_device
+class z80sio0_device : public z80dart_device
{
public:
// construction/destruction
@@ -668,15 +682,14 @@ public:
// device type definition
-extern const device_type Z80DART_CHANNEL;
-extern const device_type Z80DART;
-extern const device_type Z80SIO0;
-extern const device_type Z80SIO1;
-extern const device_type Z80SIO2;
-extern const device_type Z80SIO3;
-extern const device_type Z80SIO4;
-extern const device_type I8274;
-extern const device_type UPD7201;
-
-
-#endif
+DECLARE_DEVICE_TYPE(Z80DART_CHANNEL, z80dart_channel)
+DECLARE_DEVICE_TYPE(Z80DART, z80dart_device)
+DECLARE_DEVICE_TYPE(Z80SIO0, z80sio0_device)
+DECLARE_DEVICE_TYPE(Z80SIO1, z80sio1_device)
+DECLARE_DEVICE_TYPE(Z80SIO2, z80sio2_device)
+DECLARE_DEVICE_TYPE(Z80SIO3, z80sio3_device)
+DECLARE_DEVICE_TYPE(Z80SIO4, z80sio4_device)
+DECLARE_DEVICE_TYPE(I8274, i8274_device)
+DECLARE_DEVICE_TYPE(UPD7201, upd7201_device)
+
+#endif // MAME_MACHINE_Z80DART_H
diff --git a/src/devices/machine/z80dma.cpp b/src/devices/machine/z80dma.cpp
index 782f7d75ee7..831c20e7aff 100644
--- a/src/devices/machine/z80dma.cpp
+++ b/src/devices/machine/z80dma.cpp
@@ -25,8 +25,14 @@
#include "emu.h"
#include "z80dma.h"
-#include "cpu/z80/z80daisy.h"
+#define LOG_GENERAL (1U << 0)
+#define LOG_DMA (1U << 1)
+
+//#define VERBOSE (LOG_GENERAL | LOG_DMA)
+#include "logmacro.h"
+
+#define LOGDMA(...) LOGMASKED(LOG_DMA, __VA_ARGS__)
//**************************************************************************
// CONSTANTS
@@ -40,26 +46,26 @@ enum
INT_MATCH_END_OF_BLOCK
};
-const int COMMAND_RESET = 0xc3;
-const int COMMAND_RESET_PORT_A_TIMING = 0xc7;
-const int COMMAND_RESET_PORT_B_TIMING = 0xcb;
-const int COMMAND_LOAD = 0xcf;
-const int COMMAND_CONTINUE = 0xd3;
-const int COMMAND_DISABLE_INTERRUPTS = 0xaf;
-const int COMMAND_ENABLE_INTERRUPTS = 0xab;
-const int COMMAND_RESET_AND_DISABLE_INTERRUPTS = 0xa3;
-const int COMMAND_ENABLE_AFTER_RETI = 0xb7;
-const int COMMAND_READ_STATUS_BYTE = 0xbf;
-const int COMMAND_REINITIALIZE_STATUS_BYTE = 0x8b;
-const int COMMAND_INITIATE_READ_SEQUENCE = 0xa7;
-const int COMMAND_FORCE_READY = 0xb3;
-const int COMMAND_ENABLE_DMA = 0x87;
-const int COMMAND_DISABLE_DMA = 0x83;
-const int COMMAND_READ_MASK_FOLLOWS = 0xbb;
-
-const int TM_TRANSFER = 0x01;
-const int TM_SEARCH = 0x02;
-const int TM_SEARCH_TRANSFER = 0x03;
+constexpr int COMMAND_RESET = 0xc3;
+constexpr int COMMAND_RESET_PORT_A_TIMING = 0xc7;
+constexpr int COMMAND_RESET_PORT_B_TIMING = 0xcb;
+constexpr int COMMAND_LOAD = 0xcf;
+constexpr int COMMAND_CONTINUE = 0xd3;
+constexpr int COMMAND_DISABLE_INTERRUPTS = 0xaf;
+constexpr int COMMAND_ENABLE_INTERRUPTS = 0xab;
+constexpr int COMMAND_RESET_AND_DISABLE_INTERRUPTS = 0xa3;
+constexpr int COMMAND_ENABLE_AFTER_RETI = 0xb7;
+constexpr int COMMAND_READ_STATUS_BYTE = 0xbf;
+constexpr int COMMAND_REINITIALIZE_STATUS_BYTE = 0x8b;
+constexpr int COMMAND_INITIATE_READ_SEQUENCE = 0xa7;
+constexpr int COMMAND_FORCE_READY = 0xb3;
+constexpr int COMMAND_ENABLE_DMA = 0x87;
+constexpr int COMMAND_DISABLE_DMA = 0x83;
+constexpr int COMMAND_READ_MASK_FOLLOWS = 0xbb;
+
+constexpr int TM_TRANSFER = 0x01;
+constexpr int TM_SEARCH = 0x02;
+constexpr int TM_SEARCH_TRANSFER = 0x03;
@@ -67,9 +73,6 @@ const int TM_SEARCH_TRANSFER = 0x03;
// MACROS
//**************************************************************************
-#define LOG 0
-#define DMA_LOG 0
-
#define REGNUM(_m, _s) (((_m)<<3) + (_s))
#define GET_REGNUM(_r) (&(_r) - &(WR0))
#define REG(_m, _s) m_regs[REGNUM(_m,_s)]
@@ -140,22 +143,22 @@ const int TM_SEARCH_TRANSFER = 0x03;
//**************************************************************************
// device type definition
-const device_type Z80DMA = device_creator<z80dma_device>;
+DEFINE_DEVICE_TYPE(Z80DMA, z80dma_device, "z80dma", "Z80 DMA Controller")
//-------------------------------------------------
// z80dma_device - constructor
//-------------------------------------------------
z80dma_device::z80dma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z80DMA, "Z80 DMA", tag, owner, clock, "z80dma", __FILE__),
- device_z80daisy_interface(mconfig, *this),
- m_out_busreq_cb(*this),
- m_out_int_cb(*this),
- m_out_bao_cb(*this),
- m_in_mreq_cb(*this),
- m_out_mreq_cb(*this),
- m_in_iorq_cb(*this),
- m_out_iorq_cb(*this)
+ : device_t(mconfig, Z80DMA, tag, owner, clock)
+ , device_z80daisy_interface(mconfig, *this)
+ , m_out_busreq_cb(*this)
+ , m_out_int_cb(*this)
+ , m_out_bao_cb(*this)
+ , m_in_mreq_cb(*this)
+ , m_out_mreq_cb(*this)
+ , m_in_iorq_cb(*this)
+ , m_out_iorq_cb(*this)
{
}
@@ -251,7 +254,7 @@ int z80dma_device::z80daisy_irq_state()
state = Z80_DAISY_IEO;
}
- if (LOG) logerror("Z80DMA '%s' Interrupt State: %u\n", tag(), state);
+ LOG("Z80DMA Interrupt State: %u\n", state);
return state;
}
@@ -266,7 +269,7 @@ int z80dma_device::z80daisy_irq_ack()
{
if (m_ip)
{
- if (LOG) logerror("Z80DMA '%s' Interrupt Acknowledge\n", tag());
+ LOG("Z80DMA Interrupt Acknowledge\n");
// clear interrupt pending flag
m_ip = 0;
@@ -293,7 +296,7 @@ void z80dma_device::z80daisy_irq_reti()
{
if (m_ius)
{
- if (LOG) logerror("Z80DMA '%s' Return from Interrupt\n", tag());
+ LOG("Z80DMA Return from Interrupt\n");
// clear interrupt under service flag
m_ius = 0;
@@ -354,7 +357,7 @@ void z80dma_device::trigger_interrupt(int level)
m_status &= ~0x08;
- if (LOG) logerror("Z80DMA '%s' Interrupt Pending\n", tag());
+ LOG("Z80DMA Interrupt Pending\n");
interrupt_check();
}
@@ -381,7 +384,7 @@ void z80dma_device::do_read()
else
m_latch = m_in_iorq_cb(m_addressA);
- if (DMA_LOG) logerror("Z80DMA '%s' A src: %04x %s -> data: %02x\n", tag(), m_addressA, PORTA_MEMORY ? "mem" : "i/o", m_latch);
+ LOGDMA("Z80DMA A src: %04x %s -> data: %02x\n", m_addressA, PORTA_MEMORY ? "mem" : "i/o", m_latch);
}
else
{
@@ -390,7 +393,7 @@ void z80dma_device::do_read()
else
m_latch = m_in_iorq_cb(m_addressB);
- if (DMA_LOG) logerror("Z80DMA '%s' B src: %04x %s -> data: %02x\n", tag(), m_addressB, PORTB_MEMORY ? "mem" : "i/o", m_latch);
+ LOGDMA("Z80DMA B src: %04x %s -> data: %02x\n", m_addressB, PORTB_MEMORY ? "mem" : "i/o", m_latch);
}
break;
default:
@@ -413,7 +416,7 @@ void z80dma_device::do_transfer_write()
else
m_out_iorq_cb((offs_t)m_addressB, m_latch);
- if (DMA_LOG) logerror("Z80DMA '%s' B dst: %04x %s\n", tag(), m_addressB, PORTB_MEMORY ? "mem" : "i/o");
+ LOGDMA("Z80DMA B dst: %04x %s\n", m_addressB, PORTB_MEMORY ? "mem" : "i/o");
}
else
{
@@ -422,7 +425,7 @@ void z80dma_device::do_transfer_write()
else
m_out_iorq_cb((offs_t)m_addressA, m_latch);
- if (DMA_LOG) logerror("Z80DMA '%s' A dst: %04x %s\n", tag(), m_addressA, PORTA_MEMORY ? "mem" : "i/o");
+ LOGDMA("Z80DMA A dst: %04x %s\n", m_addressA, PORTA_MEMORY ? "mem" : "i/o");
}
}
@@ -431,7 +434,7 @@ void z80dma_device::do_search()
uint8_t load_byte,match_byte;
load_byte = m_latch | MASK_BYTE;
match_byte = MATCH_BYTE | MASK_BYTE;
- //if (LOG) logerror("%02x %02x\n",load_byte,match_byte));
+ //LOG("%02x %02x\n",load_byte,match_byte));
if (load_byte == match_byte)
{
if (INT_ON_MATCH)
@@ -524,7 +527,7 @@ TIMER_CALLBACK_MEMBER(z80dma_device::timerproc)
if(TRANSFER_MODE == TM_TRANSFER) m_status |= 0x10; // no match found
update_status();
- if (LOG) logerror("Z80DMA '%s' End of Block\n", tag());
+ LOG("Z80DMA End of Block\n");
if (INT_ON_END_OF_BLOCK)
{
@@ -533,7 +536,7 @@ TIMER_CALLBACK_MEMBER(z80dma_device::timerproc)
if (AUTO_RESTART)
{
- if (LOG) logerror("Z80DMA '%s' Auto Restart\n", tag());
+ LOG("Z80DMA Auto Restart\n");
m_dma_enabled = 1;
m_addressA = PORTA_ADDRESS;
@@ -606,7 +609,7 @@ uint8_t z80dma_device::read()
if(m_read_cur_follow >= m_read_num_follow)
m_read_cur_follow = 0;
- if (LOG) logerror("Z80DMA '%s' Read %02x\n", tag(), res);
+ LOG("Z80DMA Read %02x\n", res);
return res;
}
@@ -624,21 +627,21 @@ void z80dma_device::write(uint8_t data)
if ((data & 0x87) == 0) // WR2
{
- if (LOG) logerror("Z80DMA '%s' WR2 %02x\n", tag(), data);
+ LOG("Z80DMA WR2 %02x\n", data);
WR2 = data;
if (data & 0x40)
m_regs_follow[m_num_follow++] = GET_REGNUM(PORTB_TIMING);
}
else if ((data & 0x87) == 0x04) // WR1
{
- if (LOG) logerror("Z80DMA '%s' WR1 %02x\n", tag(), data);
+ LOG("Z80DMA WR1 %02x\n", data);
WR1 = data;
if (data & 0x40)
m_regs_follow[m_num_follow++] = GET_REGNUM(PORTA_TIMING);
}
else if ((data & 0x80) == 0) // WR0
{
- if (LOG) logerror("Z80DMA '%s' WR0 %02x\n", tag(), data);
+ LOG("Z80DMA WR0 %02x\n", data);
WR0 = data;
if (data & 0x08)
m_regs_follow[m_num_follow++] = GET_REGNUM(PORTA_ADDRESS_L);
@@ -651,7 +654,7 @@ void z80dma_device::write(uint8_t data)
}
else if ((data & 0x83) == 0x80) // WR3
{
- if (LOG) logerror("Z80DMA '%s' WR3 %02x\n", tag(), data);
+ LOG("Z80DMA WR3 %02x\n", data);
WR3 = data;
if (data & 0x08)
m_regs_follow[m_num_follow++] = GET_REGNUM(MASK_BYTE);
@@ -660,7 +663,7 @@ void z80dma_device::write(uint8_t data)
}
else if ((data & 0x83) == 0x81) // WR4
{
- if (LOG) logerror("Z80DMA '%s' WR4 %02x\n", tag(), data);
+ LOG("Z80DMA WR4 %02x\n", data);
WR4 = data;
if (data & 0x04)
m_regs_follow[m_num_follow++] = GET_REGNUM(PORTB_ADDRESS_L);
@@ -671,12 +674,12 @@ void z80dma_device::write(uint8_t data)
}
else if ((data & 0xC7) == 0x82) // WR5
{
- if (LOG) logerror("Z80DMA '%s' WR5 %02x\n", tag(), data);
+ LOG("Z80DMA WR5 %02x\n", data);
WR5 = data;
}
else if ((data & 0x83) == 0x83) // WR6
{
- if (LOG) logerror("Z80DMA '%s' WR6 %02x\n", tag(), data);
+ LOG("Z80DMA WR6 %02x\n", data);
m_dma_enabled = 0;
WR6 = data;
@@ -686,7 +689,7 @@ void z80dma_device::write(uint8_t data)
case COMMAND_ENABLE_AFTER_RETI:
fatalerror("Z80DMA '%s' Unimplemented WR6 command %02x\n", tag(), data);
case COMMAND_READ_STATUS_BYTE:
- if (LOG) logerror("Z80DMA '%s' CMD Read status Byte\n", tag());
+ LOG("Z80DMA CMD Read status Byte\n");
READ_MASK = 1;
m_read_regs_follow[0] = m_status;
break;
@@ -698,7 +701,7 @@ void z80dma_device::write(uint8_t data)
m_status |= 0x08;
break;
case COMMAND_INITIATE_READ_SEQUENCE:
- if (LOG) logerror("Z80DMA '%s' Initiate Read Sequence\n", tag());
+ LOG("Z80DMA Initiate Read Sequence\n");
m_read_cur_follow = m_read_num_follow = 0;
if(READ_MASK & 0x01) { m_read_regs_follow[m_read_num_follow++] = m_status; }
if(READ_MASK & 0x02) { m_read_regs_follow[m_read_num_follow++] = m_count & 0xff; } //byte counter (low)
@@ -709,7 +712,7 @@ void z80dma_device::write(uint8_t data)
if(READ_MASK & 0x40) { m_read_regs_follow[m_read_num_follow++] = m_addressB >> 8; } //port B address (high)
break;
case COMMAND_RESET:
- if (LOG) logerror("Z80DMA '%s' Reset\n", tag());
+ LOG("Z80DMA Reset\n");
m_dma_enabled = 0;
m_force_ready = 0;
m_ip = 0;
@@ -734,71 +737,71 @@ void z80dma_device::write(uint8_t data)
m_count = BLOCKLEN;
m_status |= 0x30;
- if (LOG) logerror("Z80DMA '%s' Load A: %x B: %x N: %x\n", tag(), m_addressA, m_addressB, m_count);
+ LOG("Z80DMA Load A: %x B: %x N: %x\n", m_addressA, m_addressB, m_count);
break;
case COMMAND_DISABLE_DMA:
- if (LOG) logerror("Z80DMA '%s' Disable DMA\n", tag());
+ LOG("Z80DMA Disable DMA\n");
m_dma_enabled = 0;
break;
case COMMAND_ENABLE_DMA:
- if (LOG) logerror("Z80DMA '%s' Enable DMA\n", tag());
+ LOG("Z80DMA Enable DMA\n");
m_dma_enabled = 1;
update_status();
break;
case COMMAND_READ_MASK_FOLLOWS:
- if (LOG) logerror("Z80DMA '%s' Set Read Mask\n", tag());
+ LOG("Z80DMA Set Read Mask\n");
m_regs_follow[m_num_follow++] = GET_REGNUM(READ_MASK);
break;
case COMMAND_CONTINUE:
- if (LOG) logerror("Z80DMA '%s' Continue\n", tag());
+ LOG("Z80DMA Continue\n");
m_count = BLOCKLEN;
m_dma_enabled = 1;
//"match not found" & "end of block" status flags zeroed here
m_status |= 0x30;
break;
case COMMAND_RESET_PORT_A_TIMING:
- if (LOG) logerror("Z80DMA '%s' Reset Port A Timing\n", tag());
+ LOG("Z80DMA Reset Port A Timing\n");
PORTA_TIMING = 0;
break;
case COMMAND_RESET_PORT_B_TIMING:
- if (LOG) logerror("Z80DMA '%s' Reset Port B Timing\n", tag());
+ LOG("Z80DMA Reset Port B Timing\n");
PORTB_TIMING = 0;
break;
case COMMAND_FORCE_READY:
- if (LOG) logerror("Z80DMA '%s' Force Ready\n", tag());
+ LOG("Z80DMA Force Ready\n");
m_force_ready = 1;
update_status();
break;
case COMMAND_ENABLE_INTERRUPTS:
- if (LOG) logerror("Z80DMA '%s' Enable IRQ\n", tag());
+ LOG("Z80DMA Enable IRQ\n");
WR3 |= 0x20;
break;
case COMMAND_DISABLE_INTERRUPTS:
- if (LOG) logerror("Z80DMA '%s' Disable IRQ\n", tag());
+ LOG("Z80DMA Disable IRQ\n");
WR3 &= ~0x20;
break;
case COMMAND_REINITIALIZE_STATUS_BYTE:
- if (LOG) logerror("Z80DMA '%s' Reinitialize status byte\n", tag());
+ LOG("Z80DMA Reinitialize status byte\n");
m_status |= 0x30;
m_ip = 0;
break;
case 0xFB:
case 0xFF: // TODO: p8k triggers this, it probably crashed.
- if (LOG) logerror("Z80DMA '%s' undocumented command triggered 0x%02X!\n", tag(), data);
+ LOG("Z80DMA undocumented command triggered 0x%02X!\n", data);
break;
default:
- printf("Z80DMA '%s' Unknown WR6 command %02x\n", tag(), data);
+ logerror("Z80DMA Unknown WR6 command %02x\n", data);
}
}
else if(data == 0x8e) //newtype on Sharp X1, unknown purpose
- printf("Z80DMA '%s' Unknown base register %02x\n", tag(), data);
+ logerror("Z80DMA Unknown base register %02x\n", data);
else
fatalerror("Z80DMA '%s' Unknown base register %02x\n", tag(), data);
m_cur_follow = 0;
}
else
{
- if (LOG) logerror("Z80DMA '%s' Write %02x\n", tag(), data);
+ LOG("Z80DMA Write %02x\n", data);
int nreg = m_regs_follow[m_cur_follow];
m_regs[nreg] = data;
@@ -858,7 +861,7 @@ TIMER_CALLBACK_MEMBER(z80dma_device::rdy_write_callback)
WRITE_LINE_MEMBER(z80dma_device::rdy_w)
{
- if (LOG) logerror("Z80DMA '%s' RDY: %d Active High: %d\n", tag(), state, READY_ACTIVE_HIGH);
+ LOG("Z80DMA RDY: %d Active High: %d\n", state, READY_ACTIVE_HIGH);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(z80dma_device::rdy_write_callback),this), state);
}
diff --git a/src/devices/machine/z80dma.h b/src/devices/machine/z80dma.h
index 7080854ef5f..ca9ec83ff0a 100644
--- a/src/devices/machine/z80dma.h
+++ b/src/devices/machine/z80dma.h
@@ -29,8 +29,10 @@
***************************************************************************/
-#ifndef __Z80DMA__
-#define __Z80DMA__
+#ifndef MAME_MACHINE_Z80DMA_H
+#define MAME_MACHINE_Z80DMA_H
+
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -75,13 +77,13 @@ public:
// construction/destruction
z80dma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_busreq_callback(device_t &device, _Object object) { return downcast<z80dma_device &>(device).m_out_busreq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<z80dma_device &>(device).m_out_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_bao_callback(device_t &device, _Object object) { return downcast<z80dma_device &>(device).m_out_bao_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_mreq_callback(device_t &device, _Object object) { return downcast<z80dma_device &>(device).m_in_mreq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_mreq_callback(device_t &device, _Object object) { return downcast<z80dma_device &>(device).m_out_mreq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_iorq_callback(device_t &device, _Object object) { return downcast<z80dma_device &>(device).m_in_iorq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_iorq_callback(device_t &device, _Object object) { return downcast<z80dma_device &>(device).m_out_iorq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_busreq_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_out_busreq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_bao_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_out_bao_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_mreq_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_in_mreq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_mreq_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_out_mreq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_iorq_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_in_iorq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_iorq_callback(device_t &device, Object &&cb) { return downcast<z80dma_device &>(device).m_out_iorq_cb.set_callback(std::forward<Object>(cb)); }
uint8_t read();
void write(uint8_t data);
@@ -159,5 +161,6 @@ private:
// device type definition
extern const device_type Z80DMA;
+DECLARE_DEVICE_TYPE(Z80DMA, z80dma_device)
-#endif
+#endif // MAME_MACHINE_Z80DMA_H
diff --git a/src/devices/machine/z80pio.cpp b/src/devices/machine/z80pio.cpp
index bfa58c80f84..b4a3ce133ce 100644
--- a/src/devices/machine/z80pio.cpp
+++ b/src/devices/machine/z80pio.cpp
@@ -16,7 +16,6 @@
#include "emu.h"
#include "z80pio.h"
-#include "cpu/z80/z80daisy.h"
//**************************************************************************
@@ -32,14 +31,14 @@
//**************************************************************************
// device type definition
-const device_type Z80PIO = device_creator<z80pio_device>;
+DEFINE_DEVICE_TYPE(Z80PIO, z80pio_device, "z80pio", "Z80 PIO")
//-------------------------------------------------
// z80pio_device - constructor
//-------------------------------------------------
z80pio_device::z80pio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, Z80PIO, "Z80 PIO", tag, owner, clock, "z80pio", __FILE__),
+ device_t(mconfig, Z80PIO, tag, owner, clock),
device_z80daisy_interface(mconfig, *this),
m_out_int_cb(*this),
m_in_pa_cb(*this),
diff --git a/src/devices/machine/z80pio.h b/src/devices/machine/z80pio.h
index bc8cbf531f7..7ac9f3a2f3a 100644
--- a/src/devices/machine/z80pio.h
+++ b/src/devices/machine/z80pio.h
@@ -29,8 +29,10 @@
***************************************************************************/
-#ifndef __Z80PIO__
-#define __Z80PIO__
+#ifndef MAME_MACHINE_Z80PIO_H
+#define MAME_MACHINE_Z80PIO_H
+
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -82,13 +84,13 @@ public:
// construction/destruction
z80pio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<z80pio_device &>(device).m_out_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<z80pio_device &>(device).m_in_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<z80pio_device &>(device).m_out_pa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_ardy_callback(device_t &device, _Object object) { return downcast<z80pio_device &>(device).m_out_ardy_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<z80pio_device &>(device).m_in_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<z80pio_device &>(device).m_out_pb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_brdy_callback(device_t &device, _Object object) { return downcast<z80pio_device &>(device).m_out_brdy_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pa_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pa_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_out_pa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_ardy_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_out_ardy_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_pb_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_pb_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_out_pb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_brdy_callback(device_t &device, Object &&cb) { return downcast<z80pio_device &>(device).m_out_brdy_cb.set_callback(std::forward<Object>(cb)); }
// I/O line access
int rdy(int which) { return m_port[which].rdy(); }
@@ -254,7 +256,6 @@ private:
// device type definition
-extern const device_type Z80PIO;
-
+DECLARE_DEVICE_TYPE(Z80PIO, z80pio_device)
-#endif
+#endif // MAME_MACHINE_Z80PIO_H
diff --git a/src/devices/machine/z80scc.cpp b/src/devices/machine/z80scc.cpp
index 68b53b73493..f6f6ccfc920 100644
--- a/src/devices/machine/z80scc.cpp
+++ b/src/devices/machine/z80scc.cpp
@@ -119,7 +119,7 @@ DONE (x) (p=partly) NMOS CMOS ESCC EMSCC
#endif
/* LOCAL _BRG is set in z80scc.h, local timer based BRG is not complete and will be removed if not needed for synchrounous mode */
-#if LOCAL_BRG
+#if Z80SCC_USE_LOCAL_BRG
#define START_BIT_HUNT 1
#define START_BIT_ADJUST 1
#else
@@ -134,16 +134,16 @@ DONE (x) (p=partly) NMOS CMOS ESCC EMSCC
// DEVICE DEFINITIONS
//**************************************************************************
// device type definition
-const device_type Z80SCC = device_creator<z80scc_device>;
-const device_type Z80SCC_CHANNEL = device_creator<z80scc_channel>;
-const device_type SCC8030 = device_creator<scc8030_device>;
-const device_type SCC80C30 = device_creator<scc80C30_device>;
-const device_type SCC80230 = device_creator<scc80230_device>;
-const device_type SCC8530N = device_creator<scc8530_device>; // remove trailing N when 8530scc.c is fully replaced and removed
-const device_type SCC85C30 = device_creator<scc85C30_device>;
-const device_type SCC85230 = device_creator<scc85230_device>;
-const device_type SCC85233 = device_creator<scc85233_device>;
-const device_type SCC8523L = device_creator<scc8523L_device>;
+DEFINE_DEVICE_TYPE(Z80SCC, z80scc_device, "z80scc", "Z80 SCC")
+DEFINE_DEVICE_TYPE(Z80SCC_CHANNEL, z80scc_channel, "z80scc_channel", "Z80 SCC Channel")
+DEFINE_DEVICE_TYPE(SCC8030, scc8030_device, "scc8030", "Zilog Z8030 SCC")
+DEFINE_DEVICE_TYPE(SCC80C30, scc80c30_device, "scc80c30", "Zilog Z80C30 SCC")
+DEFINE_DEVICE_TYPE(SCC80230, scc80230_device, "scc80230", "Zilog Z80230 ESCC")
+DEFINE_DEVICE_TYPE(SCC8530N, scc8530_device, "scc8530", "Zilog Z8530 SCC") // remove trailing N when 8530scc.c is fully replaced and removed
+DEFINE_DEVICE_TYPE(SCC85C30, scc85c30_device, "scc85c30", "Zilog Z85C30 SCC")
+DEFINE_DEVICE_TYPE(SCC85230, scc85230_device, "scc85230", "Zilog Z85230 ESCC")
+DEFINE_DEVICE_TYPE(SCC85233, scc85233_device, "scc85233", "Zilog Z85233 EMSCC")
+DEFINE_DEVICE_TYPE(SCC8523L, scc8523l_device, "scc8523l", "Zilog Z8523L SCC")
//-------------------------------------------------
// device_mconfig_additions -
@@ -166,8 +166,8 @@ machine_config_constructor z80scc_device::device_mconfig_additions() const
// z80scc_device - constructor
//-------------------------------------------------
-z80scc_device::z80scc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+z80scc_device::z80scc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock),
device_z80daisy_interface(mconfig, *this),
m_chanA(*this, CHANA_TAG),
m_chanB(*this, CHANB_TAG),
@@ -198,35 +198,49 @@ z80scc_device::z80scc_device(const machine_config &mconfig, device_type type, co
}
z80scc_device::z80scc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80scc_device(mconfig, Z80SCC, "Z80 SCC", tag, owner, clock, TYPE_Z80SCC, "z80scc", __FILE__)
+ : z80scc_device(mconfig, Z80SCC, tag, owner, clock, TYPE_Z80SCC)
{
- for (auto & elem : m_int_state)
- elem = 0;
}
scc8030_device::scc8030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80scc_device(mconfig, SCC8030, "SCC 8030", tag, owner, clock, TYPE_SCC8030, "scc8030", __FILE__){ }
+ : z80scc_device(mconfig, SCC8030, tag, owner, clock, TYPE_SCC8030)
+{
+}
-scc80C30_device::scc80C30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80scc_device(mconfig, SCC80C30, "SCC 80C30", tag, owner, clock, TYPE_SCC80C30, "scc80c30", __FILE__){ }
+scc80c30_device::scc80c30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : z80scc_device(mconfig, SCC80C30, tag, owner, clock, TYPE_SCC80C30)
+{
+}
scc80230_device::scc80230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80scc_device(mconfig, SCC80230, "SCC 80230", tag, owner, clock, TYPE_SCC80230, "scc80230", __FILE__){ }
+ : z80scc_device(mconfig, SCC80230, tag, owner, clock, TYPE_SCC80230)
+{
+}
scc8530_device::scc8530_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80scc_device(mconfig, SCC8530N, "SCC 8530", tag, owner, clock, TYPE_SCC8530, "scc8530", __FILE__){ }
+ : z80scc_device(mconfig, SCC8530N, tag, owner, clock, TYPE_SCC8530)
+{
+}
-scc85C30_device::scc85C30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80scc_device(mconfig, SCC85C30, "SCC 85C30", tag, owner, clock, TYPE_SCC85C30, "scc85c30", __FILE__){ }
+scc85c30_device::scc85c30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : z80scc_device(mconfig, SCC85C30, tag, owner, clock, TYPE_SCC85C30)
+{
+}
scc85230_device::scc85230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80scc_device(mconfig, SCC85230, "SCC 85230", tag, owner, clock, TYPE_SCC85230, "scc85230", __FILE__){ }
+ : z80scc_device(mconfig, SCC85230, tag, owner, clock, TYPE_SCC85230)
+{
+}
scc85233_device::scc85233_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80scc_device(mconfig, SCC85233, "SCC 85233", tag, owner, clock, TYPE_SCC85233, "scc85233", __FILE__){ }
+ : z80scc_device(mconfig, SCC85233, tag, owner, clock, TYPE_SCC85233)
+{
+}
-scc8523L_device::scc8523L_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80scc_device(mconfig, SCC8523L, "SCC 8523L", tag, owner, clock, TYPE_SCC8523L, "scc8523l", __FILE__){ }
+scc8523l_device::scc8523l_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : z80scc_device(mconfig, SCC8523L, tag, owner, clock, TYPE_SCC8523L)
+{
+}
//-------------------------------------------------
// device_start - device-specific startup
@@ -838,9 +852,9 @@ WRITE8_MEMBER( z80scc_device::ba_cd_inv_w )
//-------------------------------------------------
z80scc_channel::z80scc_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z80SCC_CHANNEL, "Z80 SCC channel", tag, owner, clock, "z80scc_channel", __FILE__),
+ : device_t(mconfig, Z80SCC_CHANNEL, tag, owner, clock),
device_serial_interface(mconfig, *this),
-#if LOCAL_BRG
+#if Z80SCC_USE_LOCAL_BRG
m_brg_counter(0),
#else
m_brg_rate(0),
@@ -893,13 +907,13 @@ void z80scc_channel::device_start()
m_uart->m_wr0_ptrbits = 0;
- m_rx_fifo_sz = (m_uart->m_variant & SET_ESCC) ? 8 : 3;
+ m_rx_fifo_sz = (m_uart->m_variant & z80scc_device::SET_ESCC) ? 8 : 3;
m_rx_fifo_wp = m_rx_fifo_rp = 0;
- m_tx_fifo_sz = (m_uart->m_variant & SET_ESCC) ? 4 : 1;
+ m_tx_fifo_sz = (m_uart->m_variant & z80scc_device::SET_ESCC) ? 4 : 1;
m_tx_fifo_wp = m_tx_fifo_rp = 0;
-#if LOCAL_BRG
+#if Z80SCC_USE_LOCAL_BRG
// baudrate clocks and timers
baudtimer = timer_alloc(TIMER_ID_BAUD);
#endif
@@ -982,7 +996,7 @@ void z80scc_channel::device_reset()
m_wr3 &= 0x01;
m_wr4 = 0x04;
m_wr5 = 0x00;
- if (m_uart->m_variant & (z80scc_device::TYPE_SCC85C30 | SET_ESCC))
+ if (m_uart->m_variant & (z80scc_device::TYPE_SCC85C30 | z80scc_device::SET_ESCC))
m_wr7 = 0x20;
// WR9,WR10,WR11 and WR14 has a different hard reset (see z80scc_device::device_reset()) values
m_uart->m_wr9 &= 0xdf;
@@ -1015,7 +1029,7 @@ void z80scc_channel::device_timer(emu_timer &timer, device_timer_id id, int para
{
// LOG("%s %d\n", FUNCNAME, id);
-#if LOCAL_BRG
+#if Z80SCC_USE_LOCAL_BRG
switch(id)
{
case TIMER_ID_BAUD:
@@ -1128,7 +1142,7 @@ void z80scc_channel::tra_complete()
if (m_wr1 & WR1_TX_INT_ENABLE && m_tx_int_disarm == 0)
{
- if ((m_uart->m_variant & SET_ESCC) &&
+ if ((m_uart->m_variant & z80scc_device::SET_ESCC) &&
(m_wr7p & WR7P_TX_FIFO_EMPTY) &&
m_tx_fifo_wp == m_tx_fifo_rp) // ESCC and fifo empty bit set and fifo is completelly empty?
{
@@ -1373,7 +1387,7 @@ uint8_t z80scc_channel::do_sccreg_rr2()
{
LOGINT(" - Checking an INT source %d\n", i);
m_rr2 = m_uart->modify_vector(m_rr2, i < 3 ? z80scc_device::CHANNEL_A : z80scc_device::CHANNEL_B, m_uart->m_int_source[i] & 3);
- if ((m_uart->m_variant & (SET_ESCC | SET_CMOS)) && (m_uart->m_wr9 & WR9_BIT_IACK))
+ if ((m_uart->m_variant & (z80scc_device::SET_ESCC | z80scc_device::SET_CMOS)) && (m_uart->m_wr9 & WR9_BIT_IACK))
{
LOGINT(" - Found an INT request to ack while reading RR2\n");
elem = Z80_DAISY_IEO; // Set IUS bit (called IEO in z80 daisy lingo)
@@ -1411,7 +1425,7 @@ uint8_t z80scc_channel::do_sccreg_rr3()
uint8_t z80scc_channel::do_sccreg_rr4()
{
LOGR("%s\n", FUNCNAME);
- if (m_uart->m_variant & (SET_ESCC | z80scc_device::TYPE_SCC85C30))
+ if (m_uart->m_variant & (z80scc_device::SET_ESCC | z80scc_device::TYPE_SCC85C30))
return (BIT(m_wr7, 6) ? m_wr4 : m_rr0);
else
return m_rr0;
@@ -1424,7 +1438,7 @@ uint8_t z80scc_channel::do_sccreg_rr4()
uint8_t z80scc_channel::do_sccreg_rr5()
{
LOGR("%s\n", FUNCNAME);
- if (m_uart->m_variant & (SET_ESCC | z80scc_device::TYPE_SCC85C30))
+ if (m_uart->m_variant & (z80scc_device::SET_ESCC | z80scc_device::TYPE_SCC85C30))
return BIT(m_wr7, 6) ? m_wr5 : m_rr1;
else
return m_rr1;
@@ -1459,7 +1473,7 @@ uint8_t z80scc_channel::do_sccreg_rr6()
uint8_t z80scc_channel::do_sccreg_rr7()
{
LOGR("%s\n", FUNCNAME);
- if (!(m_uart->m_variant & (SET_NMOS)))
+ if (!(m_uart->m_variant & (z80scc_device::SET_NMOS)))
{
logerror(" %s() not implemented feature\n", FUNCNAME);
return 0;
@@ -1482,7 +1496,7 @@ uint8_t z80scc_channel::do_sccreg_rr8()
uint8_t z80scc_channel::do_sccreg_rr9()
{
LOGR("%s\n", FUNCNAME);
- if (m_uart->m_variant & (SET_ESCC | z80scc_device::TYPE_SCC85C30))
+ if (m_uart->m_variant & (z80scc_device::SET_ESCC | z80scc_device::TYPE_SCC85C30))
return BIT(m_wr7, 6) ? m_wr3 : m_rr13;
else
return m_rr13;
@@ -1503,7 +1517,7 @@ uint8_t z80scc_channel::do_sccreg_rr10()
uint8_t z80scc_channel::do_sccreg_rr11()
{
LOGR("%s\n", FUNCNAME);
- if (m_uart->m_variant & (SET_ESCC | z80scc_device::TYPE_SCC85C30))
+ if (m_uart->m_variant & (z80scc_device::SET_ESCC | z80scc_device::TYPE_SCC85C30))
return BIT(m_wr7, 6) ? m_wr10 : m_rr15;
else
return m_rr15;
@@ -1532,7 +1546,7 @@ On the NMOS/CMOS version, a read to this location returns an image of RR10.*/
uint8_t z80scc_channel::do_sccreg_rr14()
{
LOGR("%s\n", FUNCNAME);
- if (m_uart->m_variant & (SET_ESCC | z80scc_device::TYPE_SCC85C30))
+ if (m_uart->m_variant & (z80scc_device::SET_ESCC | z80scc_device::TYPE_SCC85C30))
return BIT(m_wr7, 6) ? m_wr7 : m_rr10;
else
return m_rr10;
@@ -1559,7 +1573,7 @@ uint8_t z80scc_channel::scc_register_read( uint8_t reg)
uint8_t wreg = 0;
/* Sort out 80X30 limitations in register access */
- if (BIT(m_wr15, 2) == 0 || m_uart->m_variant & SET_NMOS)
+ if (BIT(m_wr15, 2) == 0 || m_uart->m_variant & z80scc_device::SET_NMOS)
{
if (reg > 3 && reg < 8) reg &= 0x03;
else if (reg == 9) reg = 13;
@@ -1567,7 +1581,7 @@ uint8_t z80scc_channel::scc_register_read( uint8_t reg)
}
else if (BIT(m_wr15, 2) != 0)
{
- if (m_uart->m_variant & SET_ESCC && BIT(m_wr7p, 6) != 0)
+ if (m_uart->m_variant & z80scc_device::SET_ESCC && BIT(m_wr7p, 6) != 0)
{
if (reg > 3 && reg < 6) wreg = 1;
else if (reg == 9) { reg = 3; wreg = 1; }
@@ -1637,7 +1651,7 @@ void z80scc_channel::do_sccreg_wr0(uint8_t data)
{
m_wr0 = data;
- if (m_uart->m_variant & SET_Z85X3X)
+ if (m_uart->m_variant & z80scc_device::SET_Z85X3X)
m_uart->m_wr0_ptrbits = data & WR0_REGISTER_MASK;
switch (data & WR0_COMMAND_MASK)
@@ -1649,7 +1663,7 @@ void z80scc_channel::do_sccreg_wr0(uint8_t data)
version of the SCC. Note that WR0 changes form depending upon the SCC version.
Register access for the Z80X30 version of the SCC is accomplished through direct
addressing*/
- if (m_uart->m_variant & SET_Z85X3X)
+ if (m_uart->m_variant & z80scc_device::SET_Z85X3X)
{
LOG("%s %s: %c : - Point High command\n", FUNCNAME, m_owner->tag(), 'A' + m_index);
m_uart->m_wr0_ptrbits |= 8;
@@ -1681,7 +1695,7 @@ void z80scc_channel::do_sccreg_wr0(uint8_t data)
priority conditions to request interrupts. This command allows the use of the internal
daisy chain (even in systems without an external daisy chain) and is the last operation in
an interrupt service routine. */
- if (m_uart->m_variant & (SET_NMOS))
+ if (m_uart->m_variant & z80scc_device::SET_NMOS)
{
logerror("WR0 SWI ack command not supported on NMOS\n");
LOGCMD("%s: %c : WR0_RESET_HIGHEST_IUS command not available on NMOS!\n", m_owner->tag(), 'A' + m_index);
@@ -1759,7 +1773,7 @@ void z80scc_channel::do_sccreg_wr0(uint8_t data)
logerror(" Wrong CRC reset/init command:%02x\n", data & WR0_CRC_RESET_CODE_MASK);
}
- if ( m_uart->m_variant & SET_Z85X3X)
+ if (m_uart->m_variant & z80scc_device::SET_Z85X3X)
{
m_uart->m_wr0_ptrbits &= ~WR0_REGISTER_MASK;
m_uart->m_wr0_ptrbits |= (m_wr0 & (WR0_REGISTER_MASK));
@@ -1934,7 +1948,7 @@ void z80scc_channel::do_sccreg_wr9(uint8_t data)
/*"The effects of this command are identical to those of a hardware reset, except that the Shift Right/Shift Left bit is
not changed and the MIE, Status High/Status Low and DLC bits take the programmed values that accompany this command."
*/
- if (m_uart->m_variant & SET_Z80X30)
+ if (m_uart->m_variant & z80scc_device::SET_Z80X30)
{
uint8_t tmp_wr0 = m_wr0; // Save the Shift Left/Shift Right bits
m_uart->device_reset();
@@ -2144,7 +2158,7 @@ void z80scc_channel::do_sccreg_wr14(uint8_t data)
{
LOG(" - PCLK as source\n");
-#if LOCAL_BRG
+#if Z80SCC_USE_LOCAL_BRG
baudtimer->adjust(attotime::from_hz(rate), TIMER_ID_BAUD, attotime::from_hz(rate)); // Start the baudrate generator
#if START_BIT_HUNT
m_rcv_mode = RCV_SEEKING;
@@ -2158,7 +2172,7 @@ void z80scc_channel::do_sccreg_wr14(uint8_t data)
}
else if ( (m_wr14 & WR14_BRG_ENABLE) && !(data & WR14_BRG_ENABLE) ) // baud rate generator being disabled?
{
-#if LOCAL_BRG
+#if Z80SCC_USE_LOCAL_BRG
baudtimer->adjust(attotime::never, TIMER_ID_BAUD, attotime::never); // Stop the baudrate generator
m_brg_counter = 0;
#endif
@@ -2422,7 +2436,7 @@ void z80scc_channel::data_write(uint8_t data)
m_tx_int_disarm = 0;
if (m_wr1 & WR1_TX_INT_ENABLE)
{
- if ((m_uart->m_variant & SET_ESCC) &&
+ if ((m_uart->m_variant & z80scc_device::SET_ESCC) &&
(m_wr7p & WR7P_TX_FIFO_EMPTY) &&
m_tx_fifo_wp == m_tx_fifo_rp) // ESCC and fifo empty bit set and fifo is completelly empty?
{
diff --git a/src/devices/machine/z80scc.h b/src/devices/machine/z80scc.h
index 00b5de33c90..f7004d4a3d9 100644
--- a/src/devices/machine/z80scc.h
+++ b/src/devices/machine/z80scc.h
@@ -30,8 +30,10 @@
***************************************************************************/
-#ifndef __Z80SCC_H__
-#define __Z80SCC_H__
+#ifndef MAME_MACHINE_Z80SCC_H
+#define MAME_MACHINE_Z80SCC_H
+
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -39,7 +41,7 @@
// DEVICE CONFIGURATION MACROS
//**************************************************************************
-#define LOCAL_BRG 0
+#define Z80SCC_USE_LOCAL_BRG 0
/* Variant ADD macros - use the right one to enable the right feature set! */
#define MCFG_SCC8030_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \
@@ -564,7 +566,7 @@ protected:
TIMER_ID_TRXC
};
-#if LOCAL_BRG
+#if Z80SCC_USE_LOCAL_BRG
emu_timer *baudtimer;
uint16_t m_brg_counter;
#else
@@ -634,31 +636,29 @@ protected:
// ======================> z80scc_device
-class z80scc_device : public device_t
- ,public device_z80daisy_interface
+class z80scc_device : public device_t, public device_z80daisy_interface
{
friend class z80scc_channel;
public:
// construction/destruction
- z80scc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
z80scc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_txda_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_txda_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtra_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_dtra_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtsa_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_rtsa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_wrdya_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_wrdya_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_synca_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_synca_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_txdb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtrb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_dtrb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtsb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_rtsb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_wrdyb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_wrdyb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_syncb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_syncb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_rxdrqa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdrqa_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_txdrqa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_rxdrqb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdrqb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_txdrqb_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_txda_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_txda_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtra_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_dtra_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtsa_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_wrdya_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_wrdya_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_synca_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_synca_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_txdb_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_txdb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtrb_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtsb_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_wrdyb_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_wrdyb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_syncb_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_syncb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_rxdrqa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_txdrqa_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_txdrqa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_rxdrqb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_txdrqb_callback(device_t &device, Object &&cb) { return downcast<z80scc_device &>(device).m_out_txdrqb_cb.set_callback(std::forward<Object>(cb)); }
static void configure_channels(device_t &device, int rxa, int txa, int rxb, int txb)
{
@@ -713,11 +713,12 @@ public:
DECLARE_WRITE_LINE_MEMBER( rxtxcb_w ) { m_chanB->rxc_w(state); m_chanB->txc_w(state); }
DECLARE_WRITE_LINE_MEMBER( synca_w ) { m_chanA->sync_w(state); }
DECLARE_WRITE_LINE_MEMBER( syncb_w ) { m_chanB->sync_w(state); }
- int update_extint(int i );
+ int update_extint(int i);
int get_extint_priority(int type);
-
protected:
+ z80scc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -748,17 +749,16 @@ protected:
TYPE_SCC85C30 = 0x020,
TYPE_SCC85230 = 0x040,
TYPE_SCC85233 = 0x080,
- TYPE_SCC8523L = 0x100
+ TYPE_SCC8523L = 0x100,
+
+ SET_NMOS = TYPE_SCC8030 | TYPE_SCC8530,
+ SET_CMOS = TYPE_SCC80C30 | TYPE_SCC85C30,
+ SET_ESCC = TYPE_SCC80230 | TYPE_SCC85230 | TYPE_SCC8523L,
+ SET_EMSCC = TYPE_SCC85233,
+ SET_Z80X30 = TYPE_SCC8030 | TYPE_SCC80C30 | TYPE_SCC80230,
+ SET_Z85X3X = TYPE_SCC8530 | TYPE_SCC85C30 | TYPE_SCC85230 | TYPE_SCC8523L | TYPE_SCC85233
};
-#define SET_NMOS ( z80scc_device::TYPE_SCC8030 | z80scc_device::TYPE_SCC8530 )
-#define SET_CMOS ( z80scc_device::TYPE_SCC80C30 | z80scc_device::TYPE_SCC85C30 )
-#define SET_ESCC ( z80scc_device::TYPE_SCC80230 | z80scc_device::TYPE_SCC85230 | z80scc_device::TYPE_SCC8523L )
-#define SET_EMSCC z80scc_device::TYPE_SCC85233
-#define SET_Z80X30 ( z80scc_device::TYPE_SCC8030 | z80scc_device::TYPE_SCC80C30 | z80scc_device::TYPE_SCC80230 )
-#define SET_Z85X3X ( z80scc_device::TYPE_SCC8530 | z80scc_device::TYPE_SCC85C30 | z80scc_device::TYPE_SCC85230 \
- | z80scc_device::TYPE_SCC8523L | z80scc_device::TYPE_SCC85233 )
-
enum
{
CHANNEL_A = 0,
@@ -795,68 +795,68 @@ protected:
int m_int_state[6]; // interrupt state
int m_int_source[6]; // interrupt source
- int m_variant;
+ int const m_variant;
uint8_t m_wr0_ptrbits;
};
class scc8030_device : public z80scc_device
{
-public :
+public:
scc8030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class scc80C30_device : public z80scc_device
+class scc80c30_device : public z80scc_device
{
-public :
- scc80C30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+public:
+ scc80c30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class scc80230_device : public z80scc_device
{
-public :
+public:
scc80230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class scc8530_device : public z80scc_device
{
-public :
+public:
scc8530_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class scc85C30_device : public z80scc_device
+class scc85c30_device : public z80scc_device
{
-public :
- scc85C30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+public:
+ scc85c30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class scc85230_device : public z80scc_device
{
-public :
+public:
scc85230_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class scc85233_device : public z80scc_device
{
-public :
+public:
scc85233_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class scc8523L_device : public z80scc_device
+class scc8523l_device : public z80scc_device
{
-public :
- scc8523L_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+public:
+ scc8523l_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
// device type definition
-extern const device_type Z80SCC;
-extern const device_type Z80SCC_CHANNEL;
-extern const device_type SCC8030;
-extern const device_type SCC80C30;
-extern const device_type SCC80230;
-extern const device_type SCC8530N; // remove trailing N when 8530scc.c is fully replaced and removed
-extern const device_type SCC85C30;
-extern const device_type SCC85230;
-extern const device_type SCC85233;
-extern const device_type SCC8523L;
-
-#endif // __Z80SCC_H__
+DECLARE_DEVICE_TYPE(Z80SCC, z80scc_device)
+DECLARE_DEVICE_TYPE(Z80SCC_CHANNEL, z80scc_channel)
+DECLARE_DEVICE_TYPE(SCC8030, scc8030_device)
+DECLARE_DEVICE_TYPE(SCC80C30, scc80c30_device)
+DECLARE_DEVICE_TYPE(SCC80230, scc80230_device)
+DECLARE_DEVICE_TYPE(SCC8530N, scc8530_device) // remove trailing N when 8530scc.c is fully replaced and removed
+DECLARE_DEVICE_TYPE(SCC85C30, scc85c30_device)
+DECLARE_DEVICE_TYPE(SCC85230, scc85230_device)
+DECLARE_DEVICE_TYPE(SCC85233, scc85233_device)
+DECLARE_DEVICE_TYPE(SCC8523L, scc8523l_device)
+
+#endif // MAME_MACHINE_Z80SCC_H
diff --git a/src/devices/machine/z80sio.cpp b/src/devices/machine/z80sio.cpp
index 5a26319f7b4..aaf861bcfc8 100644
--- a/src/devices/machine/z80sio.cpp
+++ b/src/devices/machine/z80sio.cpp
@@ -98,10 +98,10 @@
//**************************************************************************
// device type definition
-const device_type Z80SIO = device_creator<z80sio_device>;
-const device_type Z80SIO_CHANNEL = device_creator<z80sio_channel>;
-const device_type UPD7201N = device_creator<upd7201N_device>; // Remove trailing N when z80dart.cpp's 7201 implementation is fully replaced
-const device_type I8274N = device_creator<i8274N_device>; // Remove trailing N when z80dart.cpp's 8274 implementation is fully replaced
+DEFINE_DEVICE_TYPE(Z80SIO, z80sio_device, "z80sio", "Z80 SIO")
+DEFINE_DEVICE_TYPE(Z80SIO_CHANNEL, z80sio_channel, "z80sio_channel", "Z80 SIO channel")
+DEFINE_DEVICE_TYPE(UPD7201_NEW, upd7201_new_device, "upd7201_new", "NEC uPD7201 MPSC (new)") // Remove trailing N when z80dart.cpp's 7201 implementation is fully replaced
+DEFINE_DEVICE_TYPE(I8274_NEW, i8274_new_device, "i8274_new", "Intel 8274 MPSC (new)") // Remove trailing N when z80dart.cpp's 8274 implementation is fully replaced
//-------------------------------------------------
// device_mconfig_additions -
@@ -123,8 +123,8 @@ machine_config_constructor z80sio_device::device_mconfig_additions() const
//-------------------------------------------------
// z80sio_device - constructor
//-------------------------------------------------
-z80sio_device::z80sio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+z80sio_device::z80sio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock),
device_z80daisy_interface(mconfig, *this),
m_chanA(*this, CHANA_TAG),
m_chanB(*this, CHANB_TAG),
@@ -155,41 +155,19 @@ z80sio_device::z80sio_device(const machine_config &mconfig, device_type type, co
}
z80sio_device::z80sio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z80SIO, "Z80 SIO", tag, owner, clock, "z80sio", __FILE__),
- device_z80daisy_interface(mconfig, *this),
- m_chanA(*this, CHANA_TAG),
- m_chanB(*this, CHANB_TAG),
- m_rxca(0),
- m_txca(0),
- m_rxcb(0),
- m_txcb(0),
- m_out_txda_cb(*this),
- m_out_dtra_cb(*this),
- m_out_rtsa_cb(*this),
- m_out_wrdya_cb(*this),
- m_out_synca_cb(*this),
- m_out_txdb_cb(*this),
- m_out_dtrb_cb(*this),
- m_out_rtsb_cb(*this),
- m_out_wrdyb_cb(*this),
- m_out_syncb_cb(*this),
- m_out_int_cb(*this),
- m_out_rxdrqa_cb(*this),
- m_out_txdrqa_cb(*this),
- m_out_rxdrqb_cb(*this),
- m_out_txdrqb_cb(*this),
- m_variant(TYPE_Z80SIO),
- m_cputag("maincpu")
+ : z80sio_device(mconfig, Z80SIO, tag, owner, clock, TYPE_Z80SIO)
{
- for (auto & elem : m_int_state)
- elem = 0;
}
-upd7201N_device::upd7201N_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80sio_device(mconfig, UPD7201N, "UPD 7201", tag, owner, clock, TYPE_UPD7201, "upd7201n", __FILE__){ }
+upd7201_new_device::upd7201_new_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : z80sio_device(mconfig, UPD7201_NEW, tag, owner, clock, TYPE_UPD7201)
+{
+}
-i8274N_device::i8274N_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : z80sio_device(mconfig, I8274N, "i8274", tag, owner, clock, TYPE_I8274, "i8274n", __FILE__){ }
+i8274_new_device::i8274_new_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : z80sio_device(mconfig, I8274_NEW, tag, owner, clock, TYPE_I8274)
+{
+}
//-------------------------------------------------
// device_start - device-specific startup
@@ -535,22 +513,22 @@ WRITE8_MEMBER( z80sio_device::ba_cd_w )
// z80sio_channel - constructor
//-------------------------------------------------
z80sio_channel::z80sio_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z80SIO_CHANNEL, "Z80 SIO channel", tag, owner, clock, "z80sio_channel", __FILE__),
- device_serial_interface(mconfig, *this),
- m_rx_error(0),
- m_rx_clock(0),
- m_rx_first(0),
- m_rx_break(0),
- m_rx_rr0_latch(0),
- m_rxd(0),
- m_sh(0),
- m_cts(0),
- m_dcd(0),
- m_tx_data(0),
- m_tx_clock(0),
- m_dtr(0),
- m_rts(0),
- m_sync(0)
+ : device_t(mconfig, Z80SIO_CHANNEL, tag, owner, clock)
+ , device_serial_interface(mconfig, *this)
+ , m_rx_error(0)
+ , m_rx_clock(0)
+ , m_rx_first(0)
+ , m_rx_break(0)
+ , m_rx_rr0_latch(0)
+ , m_rxd(0)
+ , m_sh(0)
+ , m_cts(0)
+ , m_dcd(0)
+ , m_tx_data(0)
+ , m_tx_clock(0)
+ , m_dtr(0)
+ , m_rts(0)
+ , m_sync(0)
{
LOG("%s\n",FUNCNAME);
// Reset all registers
diff --git a/src/devices/machine/z80sio.h b/src/devices/machine/z80sio.h
index 1800577f69d..33400530721 100644
--- a/src/devices/machine/z80sio.h
+++ b/src/devices/machine/z80sio.h
@@ -52,8 +52,10 @@
***************************************************************************/
-#ifndef __Z80SIO_H__
-#define __Z80SIO_H__
+#ifndef MAME_MACHINE_Z80SIO_H
+#define MAME_MACHINE_Z80SIO_H
+
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -69,11 +71,11 @@
MCFG_Z80SIO_OFFSETS(_rxa, _txa, _rxb, _txb)
#define MCFG_UPD7201_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \
- MCFG_DEVICE_ADD(_tag, UPD7201N, _clock) \
+ MCFG_DEVICE_ADD(_tag, UPD7201_NEW, _clock) \
MCFG_Z80SIO_OFFSETS(_rxa, _txa, _rxb, _txb)
#define MCFG_I8274_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \
- MCFG_DEVICE_ADD(_tag, I8274N, _clock) \
+ MCFG_DEVICE_ADD(_tag, I8274_NEW, _clock) \
MCFG_Z80SIO_OFFSETS(_rxa, _txa, _rxb, _txb)
/* Generic macros */
@@ -228,7 +230,7 @@ protected:
// Read registers
enum
{
- REG_RR0_STATUS = 0,
+ REG_RR0_STATUS = 0,
REG_RR1_SPEC_RCV_COND = 1,
REG_RR2_INTERRUPT_VECT = 2
};
@@ -238,10 +240,10 @@ protected:
{
REG_WR0_COMMAND_REGPT = 0,
REG_WR1_INT_DMA_ENABLE = 1,
- REG_WR2_INT_VECTOR = 2,
- REG_WR3_RX_CONTROL = 3,
- REG_WR4_RX_TX_MODES = 4,
- REG_WR5_TX_CONTROL = 5,
+ REG_WR2_INT_VECTOR = 2,
+ REG_WR3_RX_CONTROL = 3,
+ REG_WR4_RX_TX_MODES = 4,
+ REG_WR5_TX_CONTROL = 5,
REG_WR6_SYNC_OR_SDLC_A = 6,
REG_WR7_SYNC_OR_SDLC_F = 7
};
@@ -250,91 +252,91 @@ protected:
{
RR0_RX_CHAR_AVAILABLE = 0x01,
RR0_INTERRUPT_PENDING = 0x02,
- RR0_TX_BUFFER_EMPTY = 0x04,
- RR0_DCD = 0x08,
- RR0_SYNC_HUNT = 0x10,
- RR0_CTS = 0x20,
- RR0_TX_UNDERRUN = 0x40,
- RR0_BREAK_ABORT = 0x80
+ RR0_TX_BUFFER_EMPTY = 0x04,
+ RR0_DCD = 0x08,
+ RR0_SYNC_HUNT = 0x10,
+ RR0_CTS = 0x20,
+ RR0_TX_UNDERRUN = 0x40,
+ RR0_BREAK_ABORT = 0x80
};
enum
{
- RR1_ALL_SENT = 0x01,
+ RR1_ALL_SENT = 0x01,
RR1_RESIDUE_CODE_MASK = 0x0e,
- RR1_PARITY_ERROR = 0x10,
+ RR1_PARITY_ERROR = 0x10,
RR1_RX_OVERRUN_ERROR = 0x20,
RR1_CRC_FRAMING_ERROR = 0x40,
- RR1_END_OF_FRAME = 0x80
+ RR1_END_OF_FRAME = 0x80
};
enum
{
- RR2_INT_VECTOR_MASK = 0xff,
- RR2_INT_VECTOR_V1 = 0x02,
- RR2_INT_VECTOR_V2 = 0x04,
- RR2_INT_VECTOR_V3 = 0x08
+ RR2_INT_VECTOR_MASK = 0xff,
+ RR2_INT_VECTOR_V1 = 0x02,
+ RR2_INT_VECTOR_V2 = 0x04,
+ RR2_INT_VECTOR_V3 = 0x08
};
enum
{
- WR0_REGISTER_MASK = 0x07,
- WR0_COMMAND_MASK = 0x38,
- WR0_NULL = 0x00,
- WR0_SEND_ABORT = 0x08,
- WR0_RESET_EXT_STATUS = 0x10,
- WR0_CHANNEL_RESET = 0x18,
- WR0_ENABLE_INT_NEXT_RX = 0x20,
- WR0_RESET_TX_INT = 0x28,
- WR0_ERROR_RESET = 0x30,
- WR0_RETURN_FROM_INT = 0x38,
- WR0_CRC_RESET_CODE_MASK = 0xc0,
- WR0_CRC_RESET_NULL = 0x00,
- WR0_CRC_RESET_RX = 0x40,
- WR0_CRC_RESET_TX = 0x80,
+ WR0_REGISTER_MASK = 0x07,
+ WR0_COMMAND_MASK = 0x38,
+ WR0_NULL = 0x00,
+ WR0_SEND_ABORT = 0x08,
+ WR0_RESET_EXT_STATUS = 0x10,
+ WR0_CHANNEL_RESET = 0x18,
+ WR0_ENABLE_INT_NEXT_RX = 0x20,
+ WR0_RESET_TX_INT = 0x28,
+ WR0_ERROR_RESET = 0x30,
+ WR0_RETURN_FROM_INT = 0x38,
+ WR0_CRC_RESET_CODE_MASK = 0xc0,
+ WR0_CRC_RESET_NULL = 0x00,
+ WR0_CRC_RESET_RX = 0x40,
+ WR0_CRC_RESET_TX = 0x80,
WR0_CRC_RESET_TX_UNDERRUN = 0xc0
};
enum
{
- WR1_EXT_INT_ENABLE = 0x01,
- WR1_TX_INT_ENABLE = 0x02,
- WR1_STATUS_VECTOR = 0x04,
+ WR1_EXT_INT_ENABLE = 0x01,
+ WR1_TX_INT_ENABLE = 0x02,
+ WR1_STATUS_VECTOR = 0x04,
WR1_RX_INT_MODE_MASK = 0x18,
- WR1_RX_INT_DISABLE = 0x00,
- WR1_RX_INT_FIRST = 0x08,
+ WR1_RX_INT_DISABLE = 0x00,
+ WR1_RX_INT_FIRST = 0x08,
WR1_RX_INT_ALL_PARITY = 0x10, // not supported
- WR1_RX_INT_ALL = 0x18,
- WR1_WRDY_ON_RX_TX = 0x20, // not supported
- WR1_WRDY_FUNCTION = 0x40, // not supported
- WR1_WRDY_ENABLE = 0x80 // not supported
+ WR1_RX_INT_ALL = 0x18,
+ WR1_WRDY_ON_RX_TX = 0x20, // not supported
+ WR1_WRDY_FUNCTION = 0x40, // not supported
+ WR1_WRDY_ENABLE = 0x80 // not supported
};
enum
{
- WR2_DATA_XFER_INT = 0x00, // not supported
+ WR2_DATA_XFER_INT = 0x00, // not supported
WR2_DATA_XFER_DMA_INT = 0x01, // not supported
- WR2_DATA_XFER_DMA = 0x02, // not supported
+ WR2_DATA_XFER_DMA = 0x02, // not supported
WR2_DATA_XFER_ILLEGAL = 0x03, // not supported
- WR2_DATA_XFER_MASK = 0x03, // not supported
- WR2_PRIORITY = 0x04, // not supported
- WR2_MODE_8085_1 = 0x00, // not supported
- WR2_MODE_8085_2 = 0x08, // not supported
- WR2_MODE_8086_8088 = 0x10, // not supported
- WR2_MODE_ILLEGAL = 0x18, // not supported
- WR2_MODE_MASK = 0x18, // not supported
- WR2_VECTORED_INT = 0x20, // not supported
+ WR2_DATA_XFER_MASK = 0x03, // not supported
+ WR2_PRIORITY = 0x04, // not supported
+ WR2_MODE_8085_1 = 0x00, // not supported
+ WR2_MODE_8085_2 = 0x08, // not supported
+ WR2_MODE_8086_8088 = 0x10, // not supported
+ WR2_MODE_ILLEGAL = 0x18, // not supported
+ WR2_MODE_MASK = 0x18, // not supported
+ WR2_VECTORED_INT = 0x20, // not supported
WR2_PIN10_SYNDETB_RTSB = 0x80 // not supported
};
enum
{
- WR3_RX_ENABLE = 0x01,
+ WR3_RX_ENABLE = 0x01,
WR3_SYNC_CHAR_LOAD_INHIBIT= 0x02, // not supported
WR3_ADDRESS_SEARCH_MODE = 0x04, // not supported
- WR3_RX_CRC_ENABLE = 0x08, // not supported
+ WR3_RX_CRC_ENABLE = 0x08, // not supported
WR3_ENTER_HUNT_PHASE = 0x10, // not supported
- WR3_AUTO_ENABLES = 0x20,
+ WR3_AUTO_ENABLES = 0x20,
WR3_RX_WORD_LENGTH_MASK = 0xc0,
WR3_RX_WORD_LENGTH_5 = 0x00,
WR3_RX_WORD_LENGTH_7 = 0x40,
@@ -344,37 +346,37 @@ protected:
enum
{
- WR4_PARITY_ENABLE = 0x01,
- WR4_PARITY_EVEN = 0x02,
- WR4_STOP_BITS_MASK = 0x0c,
- WR4_STOP_BITS_1 = 0x04,
- WR4_STOP_BITS_1_5 = 0x08, // not supported
- WR4_STOP_BITS_2 = 0x0c,
- WR4_SYNC_MODE_MASK = 0x30, // not supported
- WR4_SYNC_MODE_8_BIT = 0x00, // not supported
+ WR4_PARITY_ENABLE = 0x01,
+ WR4_PARITY_EVEN = 0x02,
+ WR4_STOP_BITS_MASK = 0x0c,
+ WR4_STOP_BITS_1 = 0x04,
+ WR4_STOP_BITS_1_5 = 0x08, // not supported
+ WR4_STOP_BITS_2 = 0x0c,
+ WR4_SYNC_MODE_MASK = 0x30, // not supported
+ WR4_SYNC_MODE_8_BIT = 0x00, // not supported
WR4_SYNC_MODE_16_BIT = 0x10, // not supported
- WR4_SYNC_MODE_SDLC = 0x20, // not supported
- WR4_SYNC_MODE_EXT = 0x30, // not supported
- WR4_CLOCK_RATE_MASK = 0xc0,
- WR4_CLOCK_RATE_X1 = 0x00,
- WR4_CLOCK_RATE_X16 = 0x40,
- WR4_CLOCK_RATE_X32 = 0x80,
- WR4_CLOCK_RATE_X64 = 0xc0
+ WR4_SYNC_MODE_SDLC = 0x20, // not supported
+ WR4_SYNC_MODE_EXT = 0x30, // not supported
+ WR4_CLOCK_RATE_MASK = 0xc0,
+ WR4_CLOCK_RATE_X1 = 0x00,
+ WR4_CLOCK_RATE_X16 = 0x40,
+ WR4_CLOCK_RATE_X32 = 0x80,
+ WR4_CLOCK_RATE_X64 = 0xc0
};
enum
{
- WR5_TX_CRC_ENABLE = 0x01, // not supported
- WR5_RTS = 0x02,
- WR5_CRC16 = 0x04, // not supported
- WR5_TX_ENABLE = 0x08,
- WR5_SEND_BREAK = 0x10,
+ WR5_TX_CRC_ENABLE = 0x01, // not supported
+ WR5_RTS = 0x02,
+ WR5_CRC16 = 0x04, // not supported
+ WR5_TX_ENABLE = 0x08,
+ WR5_SEND_BREAK = 0x10,
WR5_TX_WORD_LENGTH_MASK = 0x60,
WR5_TX_WORD_LENGTH_5 = 0x00,
WR5_TX_WORD_LENGTH_6 = 0x40,
WR5_TX_WORD_LENGTH_7 = 0x20,
WR5_TX_WORD_LENGTH_8 = 0x60,
- WR5_DTR = 0x80
+ WR5_DTR = 0x80
};
void update_serial();
@@ -426,24 +428,23 @@ class z80sio_device : public device_t,
public:
// construction/destruction
- z80sio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
z80sio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_txda_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_txda_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtra_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_dtra_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtsa_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_rtsa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_wrdya_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_wrdya_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_synca_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_synca_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_txdb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_dtrb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_dtrb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rtsb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_rtsb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_wrdyb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_wrdyb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_syncb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_syncb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_rxdrqa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdrqa_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_txdrqa_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_rxdrqb_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_txdrqb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_txdrqb_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_txda_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_txda_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtra_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_dtra_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtsa_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_wrdya_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_wrdya_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_synca_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_synca_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_txdb_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_txdb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_dtrb_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rtsb_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_wrdyb_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_wrdyb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_syncb_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_syncb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_rxdrqa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_txdrqa_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_txdrqa_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_rxdrqb_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_txdrqb_callback(device_t &device, Object &&cb) { return downcast<z80sio_device &>(device).m_out_txdrqb_cb.set_callback(std::forward<Object>(cb)); }
static void static_set_cputag(device_t &device, const char *tag)
{
@@ -493,6 +494,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( syncb_w ) { m_chanB->sync_w(state); }
protected:
+ z80sio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -558,22 +561,22 @@ protected:
const char *m_cputag;
};
-class upd7201N_device : public z80sio_device
+class upd7201_new_device : public z80sio_device
{
-public :
- upd7201N_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+public:
+ upd7201_new_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-class i8274N_device : public z80sio_device
+class i8274_new_device : public z80sio_device
{
-public :
- i8274N_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+public:
+ i8274_new_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
// device type definition
-extern const device_type Z80SIO;
-extern const device_type Z80SIO_CHANNEL;
-extern const device_type UPD7201N;
-extern const device_type I8274N;
+DECLARE_DEVICE_TYPE(Z80SIO, z80sio_device)
+DECLARE_DEVICE_TYPE(Z80SIO_CHANNEL, z80sio_channel)
+DECLARE_DEVICE_TYPE(UPD7201_NEW, upd7201_new_device)
+DECLARE_DEVICE_TYPE(I8274_NEW, i8274_new_device)
-#endif
+#endif // MAME_MACHINE_Z80SIO_H
diff --git a/src/devices/machine/z80sti.cpp b/src/devices/machine/z80sti.cpp
index c86cb6d659e..cc69a2967bb 100644
--- a/src/devices/machine/z80sti.cpp
+++ b/src/devices/machine/z80sti.cpp
@@ -19,22 +19,16 @@
#include "emu.h"
#include "z80sti.h"
#include "cpu/z80/z80.h"
-#include "cpu/z80/z80daisy.h"
-
-
-// device type definition
-const device_type Z80STI = device_creator<z80sti_device>;
+//#define VERBOSE 1
+#include "logmacro.h"
-//**************************************************************************
-// DEBUGGING
-//**************************************************************************
-#define VERBOSE 0
+// device type definition
+DEFINE_DEVICE_TYPE(Z80STI, z80sti_device, "z80sti", "Mostek MK3801 STI")
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
@@ -83,25 +77,25 @@ const int z80sti_device::PRESCALER[] = { 0, 4, 10, 16, 50, 64, 100, 200 };
//-------------------------------------------------
z80sti_device::z80sti_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Z80STI, "Mostek MK3801", tag, owner, clock, "z80sti", __FILE__),
- device_serial_interface(mconfig, *this),
- device_z80daisy_interface(mconfig, *this),
- m_out_int_cb(*this),
- m_in_gpio_cb(*this),
- m_out_gpio_cb(*this),
- m_out_so_cb(*this),
- m_out_tao_cb(*this),
- m_out_tbo_cb(*this),
- m_out_tco_cb(*this),
- m_out_tdo_cb(*this),
- m_rx_clock(0),
- m_tx_clock(0),
- m_gpip(0),
- m_aer(0),
- m_ier(0),
- m_ipr(0),
- m_isr(0),
- m_imr(0)
+ : device_t(mconfig, Z80STI, tag, owner, clock)
+ , device_serial_interface(mconfig, *this)
+ , device_z80daisy_interface(mconfig, *this)
+ , m_out_int_cb(*this)
+ , m_in_gpio_cb(*this)
+ , m_out_gpio_cb(*this)
+ , m_out_so_cb(*this)
+ , m_out_tao_cb(*this)
+ , m_out_tbo_cb(*this)
+ , m_out_tco_cb(*this)
+ , m_out_tdo_cb(*this)
+ , m_rx_clock(0)
+ , m_tx_clock(0)
+ , m_gpip(0)
+ , m_aer(0)
+ , m_ier(0)
+ , m_ipr(0)
+ , m_isr(0)
+ , m_imr(0)
{
for (auto & elem : m_int_state)
{
@@ -249,7 +243,7 @@ int z80sti_device::z80daisy_irq_state()
}
}
- LOG(("Z80STI '%s' Interrupt State: %u\n", tag(), state));
+ LOG("Z80STI Interrupt State: %u\n", state);
return state;
}
@@ -282,7 +276,7 @@ int z80sti_device::z80daisy_irq_ack()
check_interrupts();
- LOG(("Z80STI '%s' Interrupt Acknowledge Vector: %02x\n", tag(), vector));
+ LOG("Z80STI Interrupt Acknowledge Vector: %02x\n", vector);
return vector;
}
@@ -302,7 +296,7 @@ void z80sti_device::z80daisy_irq_reti()
{
int i;
- LOG(("Z80STI '%s' Return from Interrupt\n", tag()));
+ LOG("Z80STI Return from Interrupt\n");
// loop over all interrupt sources
for (i = 15; i >= 0; i--)
@@ -421,39 +415,39 @@ WRITE8_MEMBER( z80sti_device::write )
switch (m_pvr & 0x07)
{
case REGISTER_IR_SCR:
- LOG(("Z80STI '%s' Sync Character Register: %x\n", tag(), data));
+ LOG("Z80STI Sync Character Register: %x\n", data);
m_scr = data;
break;
case REGISTER_IR_TDDR:
- LOG(("Z80STI '%s' Timer D Data Register: %x\n", tag(), data));
+ LOG("Z80STI Timer D Data Register: %x\n", data);
m_tdr[TIMER_D] = data;
break;
case REGISTER_IR_TCDR:
- LOG(("Z80STI '%s' Timer C Data Register: %x\n", tag(), data));
+ LOG("Z80STI Timer C Data Register: %x\n", data);
m_tdr[TIMER_C] = data;
break;
case REGISTER_IR_AER:
- LOG(("Z80STI '%s' Active Edge Register: %x\n", tag(), data));
+ LOG("Z80STI Active Edge Register: %x\n", data);
m_aer = data;
break;
case REGISTER_IR_IERB:
- LOG(("Z80STI '%s' Interrupt Enable Register B: %x\n", tag(), data));
+ LOG("Z80STI Interrupt Enable Register B: %x\n", data);
m_ier = (m_ier & 0xff00) | data;
check_interrupts();
break;
case REGISTER_IR_IERA:
- LOG(("Z80STI '%s' Interrupt Enable Register A: %x\n", tag(), data));
+ LOG("Z80STI Interrupt Enable Register A: %x\n", data);
m_ier = (data << 8) | (m_ier & 0xff);
check_interrupts();
break;
case REGISTER_IR_DDR:
- LOG(("Z80STI '%s' Data Direction Register: %x\n", tag(), data));
+ LOG("Z80STI Data Direction Register: %x\n", data);
m_ddr = data;
break;
@@ -464,8 +458,8 @@ WRITE8_MEMBER( z80sti_device::write )
m_tcdc = data;
- LOG(("Z80STI '%s' Timer C Prescaler: %u\n", tag(), tcc));
- LOG(("Z80STI '%s' Timer D Prescaler: %u\n", tag(), tdc));
+ LOG("Z80STI Timer C Prescaler: %u\n", tcc);
+ LOG("Z80STI Timer D Prescaler: %u\n", tdc);
if (tcc)
m_timer[TIMER_C]->adjust(attotime::from_hz(clock() / tcc), TIMER_C, attotime::from_hz(clock() / tcc));
@@ -479,7 +473,7 @@ WRITE8_MEMBER( z80sti_device::write )
if (BIT(data, 7))
{
- LOG(("Z80STI '%s' Timer A Reset\n", tag()));
+ LOG("Z80STI Timer A Reset\n");
m_to[TIMER_A] = 0;
m_out_tao_cb(m_to[TIMER_A]);
@@ -487,7 +481,7 @@ WRITE8_MEMBER( z80sti_device::write )
if (BIT(data, 3))
{
- LOG(("Z80STI '%s' Timer B Reset\n", tag()));
+ LOG("Z80STI Timer B Reset\n");
m_to[TIMER_B] = 0;
m_out_tbo_cb(m_to[TIMER_B]);
@@ -498,7 +492,7 @@ WRITE8_MEMBER( z80sti_device::write )
break;
case REGISTER_GPIP:
- LOG(("Z80STI '%s' General Purpose I/O Register: %x\n", tag(), data));
+ LOG("Z80STI General Purpose I/O Register: %x\n", data);
m_gpip = data & m_ddr;
m_out_gpio_cb((offs_t)0, m_gpip);
break;
@@ -506,7 +500,7 @@ WRITE8_MEMBER( z80sti_device::write )
case REGISTER_IPRB:
{
int i;
- LOG(("Z80STI '%s' Interrupt Pending Register B: %x\n", tag(), data));
+ LOG("Z80STI Interrupt Pending Register B: %x\n", data);
m_ipr &= (m_ipr & 0xff00) | data;
for (i = 0; i < 16; i++)
@@ -521,7 +515,7 @@ WRITE8_MEMBER( z80sti_device::write )
case REGISTER_IPRA:
{
int i;
- LOG(("Z80STI '%s' Interrupt Pending Register A: %x\n", tag(), data));
+ LOG("Z80STI Interrupt Pending Register A: %x\n", data);
m_ipr &= (data << 8) | (m_ipr & 0xff);
for (i = 0; i < 16; i++)
@@ -534,32 +528,32 @@ WRITE8_MEMBER( z80sti_device::write )
break;
case REGISTER_ISRB:
- LOG(("Z80STI '%s' Interrupt In-Service Register B: %x\n", tag(), data));
+ LOG("Z80STI Interrupt In-Service Register B: %x\n", data);
m_isr &= (m_isr & 0xff00) | data;
break;
case REGISTER_ISRA:
- LOG(("Z80STI '%s' Interrupt In-Service Register A: %x\n", tag(), data));
+ LOG("Z80STI Interrupt In-Service Register A: %x\n", data);
m_isr &= (data << 8) | (m_isr & 0xff);
break;
case REGISTER_IMRB:
- LOG(("Z80STI '%s' Interrupt Mask Register B: %x\n", tag(), data));
+ LOG("Z80STI Interrupt Mask Register B: %x\n", data);
m_imr = (m_imr & 0xff00) | data;
m_isr &= m_imr;
check_interrupts();
break;
case REGISTER_IMRA:
- LOG(("Z80STI '%s' Interrupt Mask Register A: %x\n", tag(), data));
+ LOG("Z80STI Interrupt Mask Register A: %x\n", data);
m_imr = (data << 8) | (m_imr & 0xff);
m_isr &= m_imr;
check_interrupts();
break;
case REGISTER_PVR:
- LOG(("Z80STI '%s' Interrupt Vector: %02x\n", tag(), data & 0xe0));
- LOG(("Z80STI '%s' IR Address: %01x\n", tag(), data & 0x07));
+ LOG("Z80STI Interrupt Vector: %02x\n", data & 0xe0);
+ LOG("Z80STI IR Address: %01x\n", data & 0x07);
m_pvr = data;
break;
@@ -570,8 +564,8 @@ WRITE8_MEMBER( z80sti_device::write )
m_tabc = data;
- LOG(("Z80STI '%s' Timer A Prescaler: %u\n", tag(), tac));
- LOG(("Z80STI '%s' Timer B Prescaler: %u\n", tag(), tbc));
+ LOG("Z80STI Timer A Prescaler: %u\n", tac);
+ LOG("Z80STI Timer B Prescaler: %u\n", tbc);
if (tac)
m_timer[TIMER_A]->adjust(attotime::from_hz(clock() / tac), TIMER_A, attotime::from_hz(clock() / tac));
@@ -586,32 +580,32 @@ WRITE8_MEMBER( z80sti_device::write )
break;
case REGISTER_TBDR:
- LOG(("Z80STI '%s' Timer B Data Register: %x\n", tag(), data));
+ LOG("Z80STI Timer B Data Register: %x\n", tag(), data);
m_tdr[TIMER_B] = data;
break;
case REGISTER_TADR:
- LOG(("Z80STI '%s' Timer A Data Register: %x\n", tag(), data));
+ LOG("Z80STI Timer A Data Register: %x\n", tag(), data);
m_tdr[TIMER_A] = data;
break;
case REGISTER_UCR:
- LOG(("Z80STI '%s' USART Control Register: %x\n", tag(), data));
+ LOG("Z80STI USART Control Register: %x\n", tag(), data);
m_ucr = data;
break;
case REGISTER_RSR:
- LOG(("Z80STI '%s' Receiver Status Register: %x\n", tag(), data));
+ LOG("Z80STI Receiver Status Register: %x\n", tag(), data);
m_rsr = data;
break;
case REGISTER_TSR:
- LOG(("Z80STI '%s' Transmitter Status Register: %x\n", tag(), data));
+ LOG("Z80STI Transmitter Status Register: %x\n", tag(), data);
m_tsr = data;
break;
case REGISTER_UDR:
- LOG(("Z80STI '%s' USART Data Register: %x\n", tag(), data));
+ LOG("Z80STI USART Data Register: %x\n", tag(), data);
m_udr = data;
break;
}
@@ -626,7 +620,7 @@ void z80sti_device::timer_count(int index)
{
if (m_tmc[index] == 0x01)
{
- //LOG(("Z80STI '%s' Timer %c Expired\n", tag(), 'A' + index));
+ //LOG("Z80STI Timer %c Expired\n", 'A' + index);
// toggle timer output signal
m_to[index] = !m_to[index];
@@ -649,7 +643,7 @@ void z80sti_device::timer_count(int index)
if (m_ier & (1 << INT_LEVEL_TIMER[index]))
{
- LOG(("Z80STI '%s' Interrupt Pending for Timer %c\n", tag(), 'A' + index));
+ LOG("Z80STI for Timer %c\n", 'A' + index);
// signal timer elapsed interrupt
take_interrupt(INT_LEVEL_TIMER[index]);
@@ -677,11 +671,11 @@ void z80sti_device::gpip_input(int bit, int state)
if ((old_state ^ aer) && !(state ^ aer))
{
- LOG(("Z80STI '%s' Edge Transition Detected on Bit: %u\n", tag(), bit));
+ LOG("Z80STI Edge Transition Detected on Bit: %u\n", bit);
if (m_ier & (1 << INT_LEVEL_GPIP[bit]))
{
- LOG(("Z80STI '%s' Interrupt Pending for P%u\n", tag(), bit));
+ LOG("Z80STI Interrupt Pending for P%u\n", bit);
take_interrupt(INT_LEVEL_GPIP[bit]);
}
diff --git a/src/devices/machine/z80sti.h b/src/devices/machine/z80sti.h
index 4f480da4a42..9661c9b9052 100644
--- a/src/devices/machine/z80sti.h
+++ b/src/devices/machine/z80sti.h
@@ -29,8 +29,10 @@
**********************************************************************/
-#ifndef __Z80STI__
-#define __Z80STI__
+#ifndef MAME_MACHINE_Z80STI_H
+#define MAME_MACHINE_Z80STI_H
+
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -83,14 +85,14 @@ public:
// construction/destruction
z80sti_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<z80sti_device &>(device).m_out_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_gpio_callback(device_t &device, _Object object) { return downcast<z80sti_device &>(device).m_in_gpio_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_gpio_callback(device_t &device, _Object object) { return downcast<z80sti_device &>(device).m_out_gpio_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_so_callback(device_t &device, _Object object) { return downcast<z80sti_device &>(device).m_out_so_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_tao_callback(device_t &device, _Object object) { return downcast<z80sti_device &>(device).m_out_tao_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_tbo_callback(device_t &device, _Object object) { return downcast<z80sti_device &>(device).m_out_tbo_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_tco_callback(device_t &device, _Object object) { return downcast<z80sti_device &>(device).m_out_tco_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_tdo_callback(device_t &device, _Object object) { return downcast<z80sti_device &>(device).m_out_tdo_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_int_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_gpio_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_in_gpio_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_gpio_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_gpio_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_so_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_so_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_tao_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_tao_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_tbo_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_tbo_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_tco_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_tco_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_tdo_callback(device_t &device, Object &&cb) { return downcast<z80sti_device &>(device).m_out_tdo_cb.set_callback(std::forward<Object>(cb)); }
static void set_rx_clock(device_t &device, int clock) { downcast<z80sti_device &>(device).m_rx_clock = clock; }
static void set_tx_clock(device_t &device, int clock) { downcast<z80sti_device &>(device).m_tx_clock = clock; }
@@ -243,8 +245,6 @@ private:
// device type definition
-extern const device_type Z80STI;
-
-
+DECLARE_DEVICE_TYPE(Z80STI, z80sti_device)
-#endif
+#endif // MAME_MACHINE_Z80STI_H
diff --git a/src/devices/machine/z8536.cpp b/src/devices/machine/z8536.cpp
index d4240605c5e..7021335e767 100644
--- a/src/devices/machine/z8536.cpp
+++ b/src/devices/machine/z8536.cpp
@@ -24,21 +24,22 @@
#include "emu.h"
#include "z8536.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
// device type definition
-const device_type Z8536 = device_creator<z8536_device>;
+DEFINE_DEVICE_TYPE(Z8536, z8536_device, "z8536", "Zilog Z8536 CIO")
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-static const char *PMS_PTS[] = { "Bit", "Input", "Output", "Bidirectional" };
-static const char *PMS_PMS[] = { "Disabled", "AND", "OR", "OR-PEV" };
-static const char *CTMS_DCS[] = { "Pulse", "One-shot", "Square Wave", "Do not use" };
+static char const *const PMS_PTS[] = { "Bit", "Input", "Output", "Bidirectional" };
+static char const *const PMS_PMS[] = { "Disabled", "AND", "OR", "OR-PEV" };
+static char const *const CTMS_DCS[] = { "Pulse", "One-shot", "Square Wave", "Do not use" };
// master interrupt control register
@@ -238,7 +239,7 @@ void z8536_device::check_interrupt()
if (m_irq != state)
{
- if (LOG) logerror("%s Z8536 '%s' Interrupt: %u\n", machine().describe_context(), tag(), state);
+ LOG("%s Z8536 Interrupt: %u\n", machine().describe_context(), state);
m_irq = state;
m_write_irq(state);
}
@@ -343,7 +344,7 @@ void z8536_device::write_register(offs_t offset, uint8_t data)
case MASTER_INTERRUPT_CONTROL:
if (data & MICR_RESET)
{
- if (LOG) logerror("%s Z8536 '%s' Reset\n", machine().describe_context(), tag());
+ LOG("%s Z8536 Reset\n", machine().describe_context());
device_reset();
}
else
@@ -353,32 +354,26 @@ void z8536_device::write_register(offs_t offset, uint8_t data)
m_state = STATE_0;
}
- if (LOG)
- {
- if (LOG) logerror("%s Z8536 '%s' Master Interrupt Enable: %u\n", machine().describe_context(), tag(), (data & MICR_MIE) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Disable Lower Chain: %u\n", machine().describe_context(), tag(), (data & MICR_DLC) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' No Vector: %u\n", machine().describe_context(), tag(), (data & MICR_NV) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Port A Vector Includes Status: %u\n", machine().describe_context(), tag(), (data & MICR_PA_VIS) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Port B Vector Includes Status: %u\n", machine().describe_context(), tag(), (data & MICR_PB_VIS) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer Vector Includes Status: %u\n", machine().describe_context(), tag(), (data & MICR_CT_VIS) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Right Justified Address: %u\n", machine().describe_context(), tag(), (data & MICR_RJA) ? 1 : 0);
- }
+ LOG("%s Z8536 Master Interrupt Enable: %u\n", machine().describe_context(), (data & MICR_MIE) ? 1 : 0);
+ LOG("%s Z8536 Disable Lower Chain: %u\n", machine().describe_context(), (data & MICR_DLC) ? 1 : 0);
+ LOG("%s Z8536 No Vector: %u\n", machine().describe_context(), (data & MICR_NV) ? 1 : 0);
+ LOG("%s Z8536 Port A Vector Includes Status: %u\n", machine().describe_context(), (data & MICR_PA_VIS) ? 1 : 0);
+ LOG("%s Z8536 Port B Vector Includes Status: %u\n", machine().describe_context(), (data & MICR_PB_VIS) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer Vector Includes Status: %u\n", machine().describe_context(), (data & MICR_CT_VIS) ? 1 : 0);
+ LOG("%s Z8536 Right Justified Address: %u\n", machine().describe_context(), (data & MICR_RJA) ? 1 : 0);
m_register[offset] = data;
}
break;
case MASTER_CONFIGURATION_CONTROL:
- if (LOG)
- {
- if (LOG) logerror("%s Z8536 '%s' Port B Enable: %u\n", machine().describe_context(), tag(), (data & MCCR_PBE) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer 1 Enable: %u\n", machine().describe_context(), tag(), (data & MCCR_CT1E) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer 2 Enable: %u\n", machine().describe_context(), tag(), (data & MCCR_CT2E) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Port C and Counter/Timer 3 Enable: %u\n", machine().describe_context(), tag(), (data & MCCR_PCE_CT3E) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Port A Enable: %u\n", machine().describe_context(), tag(), (data & MCCR_PAE) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Port Link Control: %u\n", machine().describe_context(), tag(), (data & MCCR_PLC) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer Link Controls: %u\n", machine().describe_context(), tag(), data & MCCR_LC_MASK);
- }
+ LOG("%s Z8536 Port B Enable: %u\n", machine().describe_context(), (data & MCCR_PBE) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer 1 Enable: %u\n", machine().describe_context(), (data & MCCR_CT1E) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer 2 Enable: %u\n", machine().describe_context(), (data & MCCR_CT2E) ? 1 : 0);
+ LOG("%s Z8536 Port C and Counter/Timer 3 Enable: %u\n", machine().describe_context(), (data & MCCR_PCE_CT3E) ? 1 : 0);
+ LOG("%s Z8536 Port A Enable: %u\n", machine().describe_context(), (data & MCCR_PAE) ? 1 : 0);
+ LOG("%s Z8536 Port Link Control: %u\n", machine().describe_context(), (data & MCCR_PLC) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer Link Controls: %u\n", machine().describe_context(), data & MCCR_LC_MASK);
m_register[offset] = data;
@@ -390,32 +385,32 @@ void z8536_device::write_register(offs_t offset, uint8_t data)
break;
case PORT_A_INTERRUPT_VECTOR:
- if (LOG) logerror("%s Z8536 '%s' Port A Interrupt Vector: %02x\n", machine().describe_context(), tag(), data);
+ LOG("%s Z8536 Port A Interrupt Vector: %02x\n", machine().describe_context(), data);
m_register[offset] = data;
break;
case PORT_B_INTERRUPT_VECTOR:
- if (LOG) logerror("%s Z8536 '%s' Port B Interrupt Vector: %02x\n", machine().describe_context(), tag(), data);
+ LOG("%s Z8536 Port B Interrupt Vector: %02x\n", machine().describe_context(), data);
m_register[offset] = data;
break;
case COUNTER_TIMER_INTERRUPT_VECTOR:
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer Interrupt Vector: %02x\n", machine().describe_context(), tag(), data);
+ LOG("%s Z8536 Counter/Timer Interrupt Vector: %02x\n", machine().describe_context(), data);
m_register[offset] = data;
break;
case PORT_C_DATA_PATH_POLARITY:
- if (LOG) logerror("%s Z8536 '%s' Port C Data Path Polarity: %02x\n", machine().describe_context(), tag(), data);
+ LOG("%s Z8536 Port C Data Path Polarity: %02x\n", machine().describe_context(), data);
m_register[offset] = data;
break;
case PORT_C_DATA_DIRECTION:
- if (LOG) logerror("%s Z8536 '%s' Port C Data Direction: %02x\n", machine().describe_context(), tag(), data);
+ LOG("%s Z8536 Port C Data Direction: %02x\n", machine().describe_context(), data);
m_register[offset] = data;
break;
case PORT_C_SPECIAL_IO_CONTROL:
- if (LOG) logerror("%s Z8536 '%s' Port C Special I/O Control: %02x\n", machine().describe_context(), tag(), data);
+ LOG("%s Z8536 Port C Special I/O Control: %02x\n", machine().describe_context(), data);
m_register[offset] = data;
break;
@@ -424,17 +419,17 @@ void z8536_device::write_register(offs_t offset, uint8_t data)
{
char port = 'A' + offset - PORT_A_COMMAND_AND_STATUS;
- if (LOG) logerror("%s Z8536 '%s' Port %c Interrupt on Error: %u\n", machine().describe_context(), tag(), port, (data & PCS_IOE) ? 1 : 0);
+ LOG("%s Z8536 Port %c Interrupt on Error: %u\n", machine().describe_context(), port, (data & PCS_IOE) ? 1 : 0);
switch (data >> 5)
{
- case IC_CLEAR_IP_IUS: m_register[offset] &= ~(PCS_IP | PCS_IUS); if (LOG) logerror("%s Z8536 '%s' Port %c Clear IP/IUS\n", machine().describe_context(), tag(), port); break;
- case IC_SET_IUS: m_register[offset] |= PCS_IUS; if (LOG) logerror("%s Z8536 '%s' Port %c Set IUS\n", machine().describe_context(), tag(), port); break;
- case IC_CLEAR_IUS: m_register[offset] &= ~PCS_IUS; if (LOG) logerror("%s Z8536 '%s' Port %c Clear IUS\n", machine().describe_context(), tag(), port); break;
- case IC_SET_IP: m_register[offset] |= PCS_IP; if (LOG) logerror("%s Z8536 '%s' Port %c Set IP\n", machine().describe_context(), tag(), port); break;
- case IC_CLEAR_IP: m_register[offset] &= ~PCS_IP; if (LOG) logerror("%s Z8536 '%s' Port %c Clear IP\n", machine().describe_context(), tag(), port); break;
- case IC_SET_IE: m_register[offset] |= PCS_IE; if (LOG) logerror("%s Z8536 '%s' Port %c Set IE\n", machine().describe_context(), tag(), port); break;
- case IC_CLEAR_IE: m_register[offset] &= ~PCS_IE; if (LOG) logerror("%s Z8536 '%s' Port %c Clear IE\n", machine().describe_context(), tag(), port); break;
+ case IC_CLEAR_IP_IUS: m_register[offset] &= ~(PCS_IP | PCS_IUS); LOG("%s Z8536 Port %c Clear IP/IUS\n", machine().describe_context(), port); break;
+ case IC_SET_IUS: m_register[offset] |= PCS_IUS; LOG("%s Z8536 Port %c Set IUS\n", machine().describe_context(), port); break;
+ case IC_CLEAR_IUS: m_register[offset] &= ~PCS_IUS; LOG("%s Z8536 Port %c Clear IUS\n", machine().describe_context(), port); break;
+ case IC_SET_IP: m_register[offset] |= PCS_IP; LOG("%s Z8536 Port %c Set IP\n", machine().describe_context(), port); break;
+ case IC_CLEAR_IP: m_register[offset] &= ~PCS_IP; LOG("%s Z8536 Port %c Clear IP\n", machine().describe_context(), port); break;
+ case IC_SET_IE: m_register[offset] |= PCS_IE; LOG("%s Z8536 Port %c Set IE\n", machine().describe_context(), port); break;
+ case IC_CLEAR_IE: m_register[offset] &= ~PCS_IE; LOG("%s Z8536 Port %c Clear IE\n", machine().describe_context(), port); break;
}
m_register[offset] = (m_register[offset] & ~PCS_IOE) | (data & PCS_IOE);
@@ -450,22 +445,19 @@ void z8536_device::write_register(offs_t offset, uint8_t data)
{
int counter = offset - COUNTER_TIMER_1_COMMAND_AND_STATUS;
- if (LOG)
- {
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Trigger Command Bit: %u\n", machine().describe_context(), tag(), counter + 1, (data & CTCS_TCB) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Gate Command Bit: %u\n", machine().describe_context(), tag(), counter + 1, (data & CTCS_GCB) ? 1 : 0);
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Read Counter Control: %u\n", machine().describe_context(), tag(), counter + 1, (data & CTCS_RCC) ? 1 : 0);
- }
+ LOG("%s Z8536 Counter/Timer %u Trigger Command Bit: %u\n", machine().describe_context(), counter + 1, (data & CTCS_TCB) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer %u Gate Command Bit: %u\n", machine().describe_context(), counter + 1, (data & CTCS_GCB) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer %u Read Counter Control: %u\n", machine().describe_context(), counter + 1, (data & CTCS_RCC) ? 1 : 0);
switch (data >> 5)
{
- case IC_CLEAR_IP_IUS: m_register[offset] &= ~(CTCS_IP | CTCS_IUS);if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Clear IP/IUS\n", machine().describe_context(), tag(), counter + 1); break;
- case IC_SET_IUS: m_register[offset] |= CTCS_IUS; if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Set IUS\n", machine().describe_context(), tag(), counter + 1); break;
- case IC_CLEAR_IUS: m_register[offset] &= ~CTCS_IUS; if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Clear IUS\n", machine().describe_context(), tag(), counter + 1); break;
- case IC_SET_IP: m_register[offset] |= CTCS_IP; if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Set IP\n", machine().describe_context(), tag(), counter + 1); break;
- case IC_CLEAR_IP: m_register[offset] &= ~CTCS_IP; if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Clear IP\n", machine().describe_context(), tag(), counter + 1); break;
- case IC_SET_IE: m_register[offset] |= CTCS_IE; if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Set IE\n", machine().describe_context(), tag(), counter + 1); break;
- case IC_CLEAR_IE: m_register[offset] &= ~CTCS_IE; if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Clear IE\n", machine().describe_context(), tag(), counter + 1); break;
+ case IC_CLEAR_IP_IUS: m_register[offset] &= ~(CTCS_IP | CTCS_IUS);LOG("%s Z8536 Counter/Timer %u Clear IP/IUS\n", machine().describe_context(), counter + 1); break;
+ case IC_SET_IUS: m_register[offset] |= CTCS_IUS; LOG("%s Z8536 Counter/Timer %u Set IUS\n", machine().describe_context(), counter + 1); break;
+ case IC_CLEAR_IUS: m_register[offset] &= ~CTCS_IUS; LOG("%s Z8536 Counter/Timer %u Clear IUS\n", machine().describe_context(), counter + 1); break;
+ case IC_SET_IP: m_register[offset] |= CTCS_IP; LOG("%s Z8536 Counter/Timer %u Set IP\n", machine().describe_context(), counter + 1); break;
+ case IC_CLEAR_IP: m_register[offset] &= ~CTCS_IP; LOG("%s Z8536 Counter/Timer %u Clear IP\n", machine().describe_context(), counter + 1); break;
+ case IC_SET_IE: m_register[offset] |= CTCS_IE; LOG("%s Z8536 Counter/Timer %u Set IE\n", machine().describe_context(), counter + 1); break;
+ case IC_CLEAR_IE: m_register[offset] &= ~CTCS_IE; LOG("%s Z8536 Counter/Timer %u Clear IE\n", machine().describe_context(), counter + 1); break;
}
// gate command bit
@@ -511,11 +503,7 @@ void z8536_device::write_register(offs_t offset, uint8_t data)
case COUNTER_TIMER_1_TIME_CONSTANT_MS_BYTE:
case COUNTER_TIMER_2_TIME_CONSTANT_MS_BYTE:
case COUNTER_TIMER_3_TIME_CONSTANT_MS_BYTE:
- if (LOG)
- {
- int counter = (offset - COUNTER_TIMER_1_TIME_CONSTANT_MS_BYTE) >> 1;
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Time Constant MSB: %02x\n", machine().describe_context(), tag(), counter + 1, data);
- }
+ LOG("%s Z8536 Counter/Timer %u Time Constant MSB: %02x\n", machine().describe_context(), ((offset - COUNTER_TIMER_1_TIME_CONSTANT_MS_BYTE) >> 1) + 1, data);
m_register[offset] = data;
break;
@@ -523,11 +511,7 @@ void z8536_device::write_register(offs_t offset, uint8_t data)
case COUNTER_TIMER_1_TIME_CONSTANT_LS_BYTE:
case COUNTER_TIMER_2_TIME_CONSTANT_LS_BYTE:
case COUNTER_TIMER_3_TIME_CONSTANT_LS_BYTE:
- if (LOG)
- {
- int counter = (offset - COUNTER_TIMER_1_TIME_CONSTANT_LS_BYTE) >> 1;
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Time Constant LSB: %02x\n", machine().describe_context(), tag(), counter + 1, data);
- }
+ LOG("%s Z8536 Counter/Timer %u Time Constant LSB: %02x\n", machine().describe_context(), ((offset - COUNTER_TIMER_1_TIME_CONSTANT_LS_BYTE) >> 1) + 1, data);
m_register[offset] = data;
break;
@@ -535,18 +519,18 @@ void z8536_device::write_register(offs_t offset, uint8_t data)
case COUNTER_TIMER_1_MODE_SPECIFICATION:
case COUNTER_TIMER_2_MODE_SPECIFICATION:
case COUNTER_TIMER_3_MODE_SPECIFICATION:
- if (LOG)
+ if (VERBOSE)
{
- int counter = offset - COUNTER_TIMER_1_MODE_SPECIFICATION;
- int dcs = data & CTMS_DCS_MASK;
-
- logerror("%s Z8536 '%s' Counter/Timer %u Mode: %s\n", machine().describe_context(), tag(), counter + 1, (data & CTMS_CSC) ? "Continuous" : "Single Cycle");
- logerror("%s Z8536 '%s' Counter/Timer %u External Output Enable: %u\n", machine().describe_context(), tag(), counter + 1, (data & CTMS_EOE) ? 1 : 0);
- logerror("%s Z8536 '%s' Counter/Timer %u External Count Enable: %u\n", machine().describe_context(), tag(), counter + 1, (data & CTMS_ECE) ? 1 : 0);
- logerror("%s Z8536 '%s' Counter/Timer %u External Trigger Enable: %u\n", machine().describe_context(), tag(), counter + 1, (data & CTMS_ETE) ? 1 : 0);
- logerror("%s Z8536 '%s' Counter/Timer %u External Gate Enable: %u\n", machine().describe_context(), tag(), counter + 1, (data & CTMS_EDE) ? 1 : 0);
- logerror("%s Z8536 '%s' Counter/Timer %u Retrigger Enable: %u\n", machine().describe_context(), tag(), counter + 1, (data & CTMS_REB) ? 1 : 0);
- logerror("%s Z8536 '%s' Counter/Timer %u Output Duty Cycle: %s\n", machine().describe_context(), tag(), counter + 1, CTMS_DCS[dcs]);
+ int const counter = offset - COUNTER_TIMER_1_MODE_SPECIFICATION;
+ int const dcs = data & CTMS_DCS_MASK;
+
+ LOG("%s Z8536 Counter/Timer %u Mode: %s\n", machine().describe_context(), counter + 1, (data & CTMS_CSC) ? "Continuous" : "Single Cycle");
+ LOG("%s Z8536 Counter/Timer %u External Output Enable: %u\n", machine().describe_context(), counter + 1, (data & CTMS_EOE) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer %u External Count Enable: %u\n", machine().describe_context(), counter + 1, (data & CTMS_ECE) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer %u External Trigger Enable: %u\n", machine().describe_context(), counter + 1, (data & CTMS_ETE) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer %u External Gate Enable: %u\n", machine().describe_context(), counter + 1, (data & CTMS_EDE) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer %u Retrigger Enable: %u\n", machine().describe_context(), counter + 1, (data & CTMS_REB) ? 1 : 0);
+ LOG("%s Z8536 Counter/Timer %u Output Duty Cycle: %s\n", machine().describe_context(), counter + 1, CTMS_DCS[dcs]);
}
m_register[offset] = data;
@@ -554,22 +538,22 @@ void z8536_device::write_register(offs_t offset, uint8_t data)
case PORT_A_MODE_SPECIFICATION:
case PORT_B_MODE_SPECIFICATION:
- if (LOG)
+ if (VERBOSE)
{
- char port = BIT(offset, 3) ? 'B' : 'A';
- int pts = (data & PMS_PTS_MASK) >> 6;
- int pms = (data & PMS_PMS_MASK) >> 1;
+ char const port = BIT(offset, 3) ? 'B' : 'A';
+ int const pts = (data & PMS_PTS_MASK) >> 6;
+ int const pms = (data & PMS_PMS_MASK) >> 1;
- logerror("%s Z8536 '%s' Port %c Port Type: %s\n", machine().describe_context(), tag(), port, PMS_PTS[pts]);
- logerror("%s Z8536 '%s' Port %c Interrupt on 2 Bytes: %u\n", machine().describe_context(), tag(), port, (data & PMS_ITB) ? 1 : 0);
- logerror("%s Z8536 '%s' Port %c Single Buffer: %u\n", machine().describe_context(), tag(), port, (data & PMS_SB) ? 1 : 0);
- logerror("%s Z8536 '%s' Port %c Interrupt on Match Only: %u\n", machine().describe_context(), tag(), port, (data & PMS_IMO) ? 1 : 0);
- logerror("%s Z8536 '%s' Port %c Pattern Mode: %s\n", machine().describe_context(), tag(), port, PMS_PMS[pms]);
+ LOG("%s Z8536 Port %c Port Type: %s\n", machine().describe_context(), port, PMS_PTS[pts]);
+ LOG("%s Z8536 Port %c Interrupt on 2 Bytes: %u\n", machine().describe_context(), port, (data & PMS_ITB) ? 1 : 0);
+ LOG("%s Z8536 Port %c Single Buffer: %u\n", machine().describe_context(), port, (data & PMS_SB) ? 1 : 0);
+ LOG("%s Z8536 Port %c Interrupt on Match Only: %u\n", machine().describe_context(), port, (data & PMS_IMO) ? 1 : 0);
+ LOG("%s Z8536 Port %c Pattern Mode: %s\n", machine().describe_context(), port, PMS_PMS[pms]);
if (pts == PTS_BIT)
- logerror("%s Z8536 '%s' Port %c Latch on Pattern Match: %u\n", machine().describe_context(), tag(), port, (data & PMS_LPM) ? 1 : 0);
+ LOG("%s Z8536 Port %c Latch on Pattern Match: %u\n", machine().describe_context(), port, (data & PMS_LPM) ? 1 : 0);
else
- logerror("%s Z8536 '%s' Port %c Deskew Timer Enable: %u\n", machine().describe_context(), tag(), port, (data & PMS_DTE) ? 1 : 0);
+ LOG("%s Z8536 Port %c Deskew Timer Enable: %u\n", machine().describe_context(), port, (data & PMS_DTE) ? 1 : 0);
}
m_register[offset] = data;
@@ -582,44 +566,44 @@ void z8536_device::write_register(offs_t offset, uint8_t data)
case PORT_A_DATA_PATH_POLARITY:
case PORT_B_DATA_PATH_POLARITY:
- if (LOG) logerror("%s Z8536 '%s' Port %c Data Path Polarity: %02x\n", machine().describe_context(), tag(), BIT(offset, 3) ? 'B' : 'A', data);
+ LOG("%s Z8536 Port %c Data Path Polarity: %02x\n", machine().describe_context(), BIT(offset, 3) ? 'B' : 'A', data);
m_register[offset] = data;
break;
case PORT_A_DATA_DIRECTION:
case PORT_B_DATA_DIRECTION:
- if (LOG) logerror("%s Z8536 '%s' Port %c Data Direction: %02x\n", machine().describe_context(), tag(), BIT(offset, 3) ? 'B' : 'A', data);
+ LOG("%s Z8536 Port %c Data Direction: %02x\n", machine().describe_context(), BIT(offset, 3) ? 'B' : 'A', data);
m_register[offset] = data;
break;
case PORT_A_SPECIAL_IO_CONTROL:
case PORT_B_SPECIAL_IO_CONTROL:
- if (LOG) logerror("%s Z8536 '%s' Port %c Special I/O Control: %02x\n", machine().describe_context(), tag(), BIT(offset, 3) ? 'B' : 'A', data);
+ LOG("%s Z8536 Port %c Special I/O Control: %02x\n", machine().describe_context(), BIT(offset, 3) ? 'B' : 'A', data);
m_register[offset] = data;
break;
case PORT_A_PATTERN_POLARITY:
case PORT_B_PATTERN_POLARITY:
- if (LOG) logerror("%s Z8536 '%s' Port %c Pattern Polarity: %02x\n", machine().describe_context(), tag(), BIT(offset, 3) ? 'B' : 'A', data);
+ LOG("%s Z8536 Port %c Pattern Polarity: %02x\n", machine().describe_context(), BIT(offset, 3) ? 'B' : 'A', data);
m_register[offset] = data;
break;
case PORT_A_PATTERN_TRANSITION:
case PORT_B_PATTERN_TRANSITION:
- if (LOG) logerror("%s Z8536 '%s' Port %c Pattern Transition: %02x\n", machine().describe_context(), tag(), BIT(offset, 3) ? 'B' : 'A', data);
+ LOG("%s Z8536 Port %c Pattern Transition: %02x\n", machine().describe_context(), BIT(offset, 3) ? 'B' : 'A', data);
m_register[offset] = data;
break;
case PORT_A_PATTERN_MASK:
case PORT_B_PATTERN_MASK:
- if (LOG) logerror("%s Z8536 '%s' Port %c Pattern Mask: %02x\n", machine().describe_context(), tag(), BIT(offset, 3) ? 'B' : 'A', data);
+ LOG("%s Z8536 Port %c Pattern Mask: %02x\n", machine().describe_context(), BIT(offset, 3) ? 'B' : 'A', data);
m_register[offset] = data;
match_pattern(BIT(offset, 3));
check_interrupt();
break;
default:
- logerror("%s: Z8536 '%s' Unimplemented write %02x to register %u\n", machine().describe_context(), tag(), data, offset);
+ logerror("%s: Z8536 Unimplemented write %02x to register %u\n", machine().describe_context(), data, offset);
m_register[offset] = data;
}
}
@@ -735,7 +719,7 @@ void z8536_device::count(device_timer_id id)
}
else
{
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Interrupt Pending\n", machine().describe_context(), tag(), id + 1);
+ LOG("%s Z8536 Counter/Timer %u Interrupt Pending\n", machine().describe_context(), id + 1);
// set interrupt pending bit
m_register[COUNTER_TIMER_1_COMMAND_AND_STATUS + id] |= CTCS_IP;
@@ -748,7 +732,7 @@ void z8536_device::count(device_timer_id id)
}
else
{
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Terminal Count\n", machine().describe_context(), tag(), id + 1);
+ LOG("%s Z8536 Counter/Timer %u Terminal Count\n", machine().describe_context(), id + 1);
// clear count in progress bit
m_register[COUNTER_TIMER_1_COMMAND_AND_STATUS + id] &= ~CTCS_CIP;
@@ -768,7 +752,7 @@ void z8536_device::trigger(device_timer_id id)
// ignore triggers during countdown if retrigger is disabled
if (!(m_register[COUNTER_TIMER_1_MODE_SPECIFICATION + id] & CTMS_REB) && (m_register[COUNTER_TIMER_1_COMMAND_AND_STATUS + id] & CTCS_CIP)) return;
- if (LOG) logerror("%s Z8536 '%s' Counter/Timer %u Trigger\n", machine().describe_context(), tag(), id + 1);
+ LOG("%s Z8536 Counter/Timer %u Trigger\n", machine().describe_context(), id + 1);
// load counter with time constant
m_counter[id] = (m_register[COUNTER_TIMER_1_TIME_CONSTANT_MS_BYTE + (id << 1)] << 8) | m_register[COUNTER_TIMER_1_TIME_CONSTANT_LS_BYTE + (id << 1)];
@@ -805,7 +789,7 @@ void z8536_device::match_pattern(int port)
if (m_match[port])
{
- if (LOG) logerror("%s Z8536 '%s' Port %c Interrupt Pending\n", machine().describe_context(), tag(), 'A' + port);
+ LOG("%s Z8536 Port %c Interrupt Pending\n", machine().describe_context(), 'A' + port);
m_register[PORT_A_COMMAND_AND_STATUS + port] |= PCS_IP;
check_interrupt();
}
@@ -830,7 +814,7 @@ void z8536_device::external_port_w(int port, int bit, int state)
if (!BIT(ddr, bit)) return;
- if (LOG) logerror("%s Z8536 '%s' Port %c Bit %u: %u\n", machine().describe_context(), tag(), 'A' + port, bit, state);
+ LOG("%s Z8536 Port %c Bit %u: %u\n", machine().describe_context(), 'A' + port, bit, state);
m_input[port] = (m_input[port] & ~(1 << bit)) | (state << bit);
@@ -854,7 +838,7 @@ void z8536_device::external_port_w(int port, int bit, int state)
//-------------------------------------------------
z8536_device::z8536_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, Z8536, "Zilog Z8536", tag, owner, clock, "z8536", __FILE__),
+ device_t(mconfig, Z8536, tag, owner, clock),
device_z80daisy_interface(mconfig, *this),
m_write_irq(*this),
m_read_pa(*this),
@@ -1087,7 +1071,7 @@ int z8536_device::intack_r()
get_interrupt_vector();
int data = m_register[CURRENT_VECTOR];
- if (LOG) logerror("%s Z8536 '%s' Interrupt Acknowledge: %02x\n", machine().describe_context(), tag(), data);
+ LOG("%s Z8536 Interrupt Acknowledge: %02x\n", machine().describe_context(), data);
// set interrupt under service bit
if ((m_register[COUNTER_TIMER_3_COMMAND_AND_STATUS] & (CTCS_IP | CTCS_IE)) == (CTCS_IP | CTCS_IE))
diff --git a/src/devices/machine/z8536.h b/src/devices/machine/z8536.h
index e000196a97a..3a21628e53f 100644
--- a/src/devices/machine/z8536.h
+++ b/src/devices/machine/z8536.h
@@ -29,10 +29,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_MACHINE_Z8536_H
+#define MAME_MACHINE_Z8536_H
-#ifndef __Z8536__
-#define __Z8536__
+#pragma once
#include "cpu/z80/z80daisy.h"
@@ -78,13 +78,13 @@ public:
// construction/destruction
z8536_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<z8536_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_pa_rd_callback(device_t &device, _Object object) { return downcast<z8536_device &>(device).m_read_pa.set_callback(object); }
- template<class _Object> static devcb_base &set_pa_wr_callback(device_t &device, _Object object) { return downcast<z8536_device &>(device).m_write_pa.set_callback(object); }
- template<class _Object> static devcb_base &set_pb_rd_callback(device_t &device, _Object object) { return downcast<z8536_device &>(device).m_read_pb.set_callback(object); }
- template<class _Object> static devcb_base &set_pb_wr_callback(device_t &device, _Object object) { return downcast<z8536_device &>(device).m_write_pb.set_callback(object); }
- template<class _Object> static devcb_base &set_pc_rd_callback(device_t &device, _Object object) { return downcast<z8536_device &>(device).m_read_pc.set_callback(object); }
- template<class _Object> static devcb_base &set_pc_wr_callback(device_t &device, _Object object) { return downcast<z8536_device &>(device).m_write_pc.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<z8536_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pa_rd_callback(device_t &device, Object &&cb) { return downcast<z8536_device &>(device).m_read_pa.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pa_wr_callback(device_t &device, Object &&cb) { return downcast<z8536_device &>(device).m_write_pa.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pb_rd_callback(device_t &device, Object &&cb) { return downcast<z8536_device &>(device).m_read_pb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pb_wr_callback(device_t &device, Object &&cb) { return downcast<z8536_device &>(device).m_write_pb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pc_rd_callback(device_t &device, Object &&cb) { return downcast<z8536_device &>(device).m_read_pc.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pc_wr_callback(device_t &device, Object &&cb) { return downcast<z8536_device &>(device).m_write_pc.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -345,8 +345,6 @@ private:
// device type definition
-extern const device_type Z8536;
-
-
+DECLARE_DEVICE_TYPE(Z8536, z8536_device)
-#endif
+#endif // MAME_MACHINE_Z8536_H
diff --git a/src/devices/sound/2203intf.cpp b/src/devices/sound/2203intf.cpp
index 56db3d8da38..32f5612607a 100644
--- a/src/devices/sound/2203intf.cpp
+++ b/src/devices/sound/2203intf.cpp
@@ -4,46 +4,16 @@
#include "2203intf.h"
#include "fm.h"
-static void psg_set_clock(void *param, int clock)
+const ssg_callbacks ym2203_device::psgintf =
{
- ym2203_device *ym2203 = (ym2203_device *) param;
- ym2203->ay_set_clock(clock);
-}
-
-static void psg_write(void *param, int address, int data)
-{
- ym2203_device *ym2203 = (ym2203_device *) param;
- ym2203->ay8910_write_ym(address, data);
-}
-
-static int psg_read(void *param)
-{
- ym2203_device *ym2203 = (ym2203_device *) param;
- return ym2203->ay8910_read_ym();
-}
-
-static void psg_reset(void *param)
-{
- ym2203_device *ym2203 = (ym2203_device *) param;
- ym2203->ay8910_reset_ym();
-}
-
-static const ssg_callbacks psgintf =
-{
- psg_set_clock,
- psg_write,
- psg_read,
- psg_reset
+ &ym2203_device::psg_set_clock,
+ &ym2203_device::psg_write,
+ &ym2203_device::psg_read,
+ &ym2203_device::psg_reset
};
/* IRQ Handler */
-static void IRQHandler(void *param,int irq)
-{
- ym2203_device *ym2203 = (ym2203_device *) param;
- ym2203->_IRQHandler(irq);
-}
-
-void ym2203_device::_IRQHandler(int irq)
+void ym2203_device::irq_handler(int irq)
{
if (!m_irq_handler.isnull())
m_irq_handler(irq);
@@ -64,13 +34,7 @@ void ym2203_device::device_timer(emu_timer &timer, device_timer_id id, int param
}
}
-static void timer_handler(void *param,int c,int count,int clock)
-{
- ym2203_device *ym2203 = (ym2203_device *) param;
- ym2203->_timer_handler(c, count, clock);
-}
-
-void ym2203_device::_timer_handler(int c,int count,int clock)
+void ym2203_device::timer_handler(int c, int count, int clock)
{
if( count == 0 )
{ /* Reset FM Timer */
@@ -85,18 +49,6 @@ void ym2203_device::_timer_handler(int c,int count,int clock)
}
}
-/* update request from fm.c */
-void ym2203_update_request(void *param)
-{
- ym2203_device *ym2203 = (ym2203_device *) param;
- ym2203->_ym2203_update_request();
-}
-
-void ym2203_device::_ym2203_update_request()
-{
- m_stream->update();
-}
-
//-------------------------------------------------
// sound_stream_update - handle a stream update
//-------------------------------------------------
@@ -133,7 +85,7 @@ void ym2203_device::device_start()
/* Initialize FM emurator */
int rate = clock()/72; /* ??? */
- m_chip = ym2203_init(this,this,clock(),rate,timer_handler,IRQHandler,&psgintf);
+ m_chip = ym2203_init(this,clock(),rate,&ym2203_device::static_timer_handler,&ym2203_device::static_irq_handler,&psgintf);
assert_always(m_chip != nullptr, "Error creating YM2203 chip");
}
@@ -202,10 +154,13 @@ WRITE8_MEMBER( ym2203_device::write_port_w )
write(space, 1, data);
}
-const device_type YM2203 = device_creator<ym2203_device>;
+DEFINE_DEVICE_TYPE(YM2203, ym2203_device, "ym2203", "YM2203 OPN")
ym2203_device::ym2203_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, YM2203, "YM2203", tag, owner, clock, PSG_TYPE_YM, 3, 2, "ym2203", __FILE__),
- m_irq_handler(*this)
+ : ay8910_device(mconfig, YM2203, tag, owner, clock, PSG_TYPE_YM, 3, 2)
+ , m_stream(nullptr)
+ , m_timer{ nullptr, nullptr }
+ , m_chip(nullptr)
+ , m_irq_handler(*this)
{
}
diff --git a/src/devices/sound/2203intf.h b/src/devices/sound/2203intf.h
index 20c63887a04..af1a2f622a9 100644
--- a/src/devices/sound/2203intf.h
+++ b/src/devices/sound/2203intf.h
@@ -1,16 +1,18 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi
-#pragma once
+#ifndef MAME_SOUND_2203INTF_H
+#define MAME_SOUND_2203INTF_H
-#ifndef __2203INTF_H__
-#define __2203INTF_H__
+#pragma once
#include "ay8910.h"
-void ym2203_update_request(void *param);
-#define MCFG_YM2203_IRQ_HANDLER(_devcb) \
- devcb = &ym2203_device::set_irq_handler(*device, DEVCB_##_devcb);
+struct ssg_callbacks;
+
+
+#define MCFG_YM2203_IRQ_HANDLER(cb) \
+ devcb = &ym2203_device::set_irq_handler(*device, (DEVCB_##cb));
class ym2203_device : public ay8910_device
{
@@ -18,7 +20,7 @@ public:
ym2203_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ym2203_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2203_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -28,9 +30,8 @@ public:
DECLARE_WRITE8_MEMBER( control_port_w );
DECLARE_WRITE8_MEMBER( write_port_w );
- void _IRQHandler(int irq);
- void _timer_handler(int c,int count,int clock);
- void _ym2203_update_request();
+ // update request from fm.cpp
+ static void update_request(device_t *param) { downcast<ym2203_device *>(param)->update_request(); }
protected:
// device-level overrides
@@ -44,16 +45,24 @@ protected:
void stream_generate(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
private:
+ void irq_handler(int irq);
+ void timer_handler(int c, int count, int clock);
+ void update_request() { m_stream->update(); }
+
void calculate_rates();
+ static void static_irq_handler(device_t *param, int irq) { downcast<ym2203_device *>(param)->irq_handler(irq); }
+ static void static_timer_handler(device_t *param, int c, int count, int clock) { downcast<ym2203_device *>(param)->timer_handler(c, count, clock); }
+
// internal state
sound_stream * m_stream;
emu_timer * m_timer[2];
void * m_chip;
devcb_write_line m_irq_handler;
-};
-extern const device_type YM2203;
+ static const ssg_callbacks psgintf;
+};
+DECLARE_DEVICE_TYPE(YM2203, ym2203_device)
-#endif /* __2203INTF_H__ */
+#endif // MAME_SOUND_2203INTF_H
diff --git a/src/devices/sound/2608intf.cpp b/src/devices/sound/2608intf.cpp
index a5471151aa0..ffe48e48efd 100644
--- a/src/devices/sound/2608intf.cpp
+++ b/src/devices/sound/2608intf.cpp
@@ -17,46 +17,16 @@
#include "2608intf.h"
#include "fm.h"
-static void psg_set_clock(void *param, int clock)
+const ssg_callbacks ym2608_device::psgintf =
{
- ym2608_device *ym2608 = (ym2608_device *) param;
- ym2608->ay_set_clock(clock);
-}
-
-static void psg_write(void *param, int address, int data)
-{
- ym2608_device *ym2608 = (ym2608_device *) param;
- ym2608->ay8910_write_ym(address, data);
-}
-
-static int psg_read(void *param)
-{
- ym2608_device *ym2608 = (ym2608_device *) param;
- return ym2608->ay8910_read_ym();
-}
-
-static void psg_reset(void *param)
-{
- ym2608_device *ym2608 = (ym2608_device *) param;
- ym2608->ay8910_reset_ym();
-}
-
-static const ssg_callbacks psgintf =
-{
- psg_set_clock,
- psg_write,
- psg_read,
- psg_reset
+ &ym2608_device::psg_set_clock,
+ &ym2608_device::psg_write,
+ &ym2608_device::psg_read,
+ &ym2608_device::psg_reset
};
/* IRQ Handler */
-static void IRQHandler(void *param,int irq)
-{
- ym2608_device *ym2608 = (ym2608_device *) param;
- ym2608->_IRQHandler(irq);
-}
-
-void ym2608_device::_IRQHandler(int irq)
+void ym2608_device::irq_handler(int irq)
{
if (!m_irq_handler.isnull())
m_irq_handler(irq);
@@ -77,13 +47,7 @@ void ym2608_device::device_timer(emu_timer &timer, device_timer_id id, int param
}
}
-static void timer_handler(void *param,int c,int count,int clock)
-{
- ym2608_device *ym2608 = (ym2608_device *) param;
- ym2608->_timer_handler(c, count, clock);
-}
-
-void ym2608_device::_timer_handler(int c,int count,int clock)
+void ym2608_device::timer_handler(int c,int count,int clock)
{
if( count == 0 )
{ /* Reset FM Timer */
@@ -98,18 +62,6 @@ void ym2608_device::_timer_handler(int c,int count,int clock)
}
}
-/* update request from fm.c */
-void ym2608_update_request(void *param)
-{
- ym2608_device *ym2608 = (ym2608_device *) param;
- ym2608->_ym2608_update_request();
-}
-
-void ym2608_device::_ym2608_update_request()
-{
- m_stream->update();
-}
-
//-------------------------------------------------
// sound_stream_update - handle a stream update
//-------------------------------------------------
@@ -149,9 +101,9 @@ void ym2608_device::device_start()
pcmsizea = m_region->bytes();
/* initialize YM2608 */
- m_chip = ym2608_init(this,this,clock(),rate,
+ m_chip = ym2608_init(this,clock(),rate,
pcmbufa,pcmsizea,
- timer_handler,IRQHandler,&psgintf);
+ &ym2608_device::static_timer_handler,&ym2608_device::static_irq_handler,&psgintf);
assert_always(m_chip != nullptr, "Error creating YM2608 chip");
}
@@ -184,12 +136,15 @@ WRITE8_MEMBER( ym2608_device::write )
ym2608_write(m_chip, offset & 3, data);
}
-const device_type YM2608 = device_creator<ym2608_device>;
+DEFINE_DEVICE_TYPE(YM2608, ym2608_device, "ym2608", "YM2608 OPNA")
ym2608_device::ym2608_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, YM2608, "YM2608", tag, owner, clock, PSG_TYPE_YM, 1, 2, "ym2608", __FILE__),
- m_irq_handler(*this),
- m_region(*this, DEVICE_SELF)
+ : ay8910_device(mconfig, YM2608, tag, owner, clock, PSG_TYPE_YM, 1, 2)
+ , m_stream(nullptr)
+ , m_timer{ nullptr, nullptr }
+ , m_chip(nullptr)
+ , m_irq_handler(*this)
+ , m_region(*this, DEVICE_SELF)
{
}
diff --git a/src/devices/sound/2608intf.h b/src/devices/sound/2608intf.h
index 25551a01227..67deb180164 100644
--- a/src/devices/sound/2608intf.h
+++ b/src/devices/sound/2608intf.h
@@ -1,16 +1,18 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi
-#pragma once
+#ifndef MAME_SOUND_2608INTF_H
+#define MAME_SOUND_2608INTF_H
-#ifndef __2608INTF_H__
-#define __2608INTF_H__
+#pragma once
#include "ay8910.h"
-void ym2608_update_request(void *param);
-#define MCFG_YM2608_IRQ_HANDLER(_devcb) \
- devcb = &ym2608_device::set_irq_handler(*device, DEVCB_##_devcb);
+struct ssg_callbacks;
+
+
+#define MCFG_YM2608_IRQ_HANDLER(cb) \
+ devcb = &ym2608_device::set_irq_handler(*device, DEVCB_##cb);
class ym2608_device : public ay8910_device
{
@@ -18,14 +20,13 @@ public:
ym2608_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ym2608_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2608_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- void _IRQHandler(int irq);
- void _timer_handler(int c,int count,int clock);
- void _ym2608_update_request();
+ // update request from fm.cpp
+ static void update_request(device_t *param) { downcast<ym2608_device *>(param)->update_request(); }
protected:
// device-level overrides
@@ -36,18 +37,26 @@ protected:
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
void stream_generate(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
+
private:
+ void irq_handler(int irq);
+ void timer_handler(int c, int count, int clock);
+ void update_request() { m_stream->update(); }
+
+ static void static_irq_handler(device_t *param, int irq) { downcast<ym2608_device *>(param)->irq_handler(irq); }
+ static void static_timer_handler(device_t *param, int c, int count, int clock) { downcast<ym2608_device *>(param)->timer_handler(c, count, clock); }
+
// internal state
sound_stream * m_stream;
emu_timer * m_timer[2];
void * m_chip;
devcb_write_line m_irq_handler;
required_memory_region m_region;
-};
-extern const device_type YM2608;
+ static const ssg_callbacks psgintf;
+};
+DECLARE_DEVICE_TYPE(YM2608, ym2608_device)
-#endif /* __2608INTF_H__ */
+#endif // MAME_SOUND_2608INTF_H
diff --git a/src/devices/sound/2610intf.cpp b/src/devices/sound/2610intf.cpp
index 8660056c828..ae208511d03 100644
--- a/src/devices/sound/2610intf.cpp
+++ b/src/devices/sound/2610intf.cpp
@@ -17,50 +17,18 @@
#include "2610intf.h"
#include "fm.h"
-const char* YM2610_TAG = "ymsnd";
-const char* YM2610_DELTAT_TAG = "ymsnd.deltat";
+char const *const ym2610_device::YM2610_TAG = "ymsnd";
+char const *const ym2610_device::YM2610_DELTAT_TAG = "ymsnd.deltat";
-static void psg_set_clock(void *param, int clock)
+const ssg_callbacks ym2610_device::psgintf =
{
- ym2610_device *ym2610 = (ym2610_device *) param;
- ym2610->ay_set_clock(clock);
-}
-
-static void psg_write(void *param, int address, int data)
-{
- ym2610_device *ym2610 = (ym2610_device *) param;
- ym2610->ay8910_write_ym(address, data);
-}
-
-static int psg_read(void *param)
-{
- ym2610_device *ym2610 = (ym2610_device *) param;
- return ym2610->ay8910_read_ym();
-}
-
-static void psg_reset(void *param)
-{
- ym2610_device *ym2610 = (ym2610_device *) param;
- ym2610->ay8910_reset_ym();
-}
-
-static const ssg_callbacks psgintf =
-{
- psg_set_clock,
- psg_write,
- psg_read,
- psg_reset
+ &ym2610_device::psg_set_clock,
+ &ym2610_device::psg_write,
+ &ym2610_device::psg_read,
+ &ym2610_device::psg_reset
};
-/*------------------------- TM2610 -------------------------------*/
-/* IRQ Handler */
-static void IRQHandler(void *param,int irq)
-{
- ym2610_device *ym2610 = (ym2610_device *) param;
- ym2610->_IRQHandler(irq);
-}
-
-void ym2610_device::_IRQHandler(int irq)
+void ym2610_device::irq_handler(int irq)
{
if (!m_irq_handler.isnull())
m_irq_handler(irq);
@@ -81,13 +49,7 @@ void ym2610_device::device_timer(emu_timer &timer, device_timer_id id, int param
}
}
-static void timer_handler(void *param,int c,int count,int clock)
-{
- ym2610_device *ym2610 = (ym2610_device *) param;
- ym2610->_timer_handler(c, count, clock);
-}
-
-void ym2610_device::_timer_handler(int c,int count,int clock)
+void ym2610_device::timer_handler(int c,int count,int clock)
{
if( count == 0 )
{ /* Reset FM Timer */
@@ -102,18 +64,6 @@ void ym2610_device::_timer_handler(int c,int count,int clock)
}
}
-/* update request from fm.c */
-void ym2610_update_request(void *param)
-{
- ym2610_device *ym2610 = (ym2610_device *) param;
- ym2610->_ym2610_update_request();
-}
-
-void ym2610_device::_ym2610_update_request()
-{
- m_stream->update();
-}
-
//-------------------------------------------------
// sound_stream_update - handle a stream update
//-------------------------------------------------
@@ -172,9 +122,9 @@ void ym2610_device::device_start()
}
/**** initialize YM2610 ****/
- m_chip = ym2610_init(this,this,clock(),rate,
+ m_chip = ym2610_init(this,clock(),rate,
pcmbufa,pcmsizea,pcmbufb,pcmsizeb,
- timer_handler,IRQHandler,&psgintf);
+ &ym2610_device::static_timer_handler,&ym2610_device::static_irq_handler,&psgintf);
assert_always(m_chip != nullptr, "Error creating YM2610 chip");
}
@@ -208,25 +158,25 @@ WRITE8_MEMBER( ym2610_device::write )
}
-const device_type YM2610 = device_creator<ym2610_device>;
+DEFINE_DEVICE_TYPE(YM2610, ym2610_device, "ym2610", "YM2610 OPNB")
ym2610_device::ym2610_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, YM2610, "YM2610", tag, owner, clock, PSG_TYPE_YM, 1, 0, "ym2610", __FILE__)
- , m_irq_handler(*this)
- , m_region(*this, DEVICE_SELF)
+ : ym2610_device(mconfig, YM2610, tag, owner, clock)
{
}
-ym2610_device::ym2610_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : ay8910_device(mconfig, type, name, tag, owner, clock, PSG_TYPE_YM, 1, 0, shortname, source)
+ym2610_device::ym2610_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : ay8910_device(mconfig, type, tag, owner, clock, PSG_TYPE_YM, 1, 0)
+ , m_stream(nullptr)
+ , m_timer{ nullptr, nullptr }
, m_irq_handler(*this)
, m_region(*this, DEVICE_SELF)
{
}
-const device_type YM2610B = device_creator<ym2610b_device>;
+DEFINE_DEVICE_TYPE(YM2610B, ym2610b_device, "ym2610b", "YM2610B OPNB")
ym2610b_device::ym2610b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ym2610_device(mconfig, YM2610B, "YM2610B", tag, owner, clock, "ym2610b", __FILE__)
+ : ym2610_device(mconfig, YM2610B, tag, owner, clock)
{
}
diff --git a/src/devices/sound/2610intf.h b/src/devices/sound/2610intf.h
index 4eff12cb54b..80c47988e41 100644
--- a/src/devices/sound/2610intf.h
+++ b/src/devices/sound/2610intf.h
@@ -1,37 +1,39 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi
-#pragma once
+#ifndef MAME_SOUND_2610INTF_H
+#define MAME_SOUND_2610INTF_H
-#ifndef __2610INTF_H__
-#define __2610INTF_H__
+#pragma once
#include "ay8910.h"
-void ym2610_update_request(void *param);
-#define MCFG_YM2610_IRQ_HANDLER(_devcb) \
- devcb = &ym2610_device::set_irq_handler(*device, DEVCB_##_devcb);
+struct ssg_callbacks;
+
+
+#define MCFG_YM2610_IRQ_HANDLER(cb) \
+ devcb = &ym2610_device::set_irq_handler(*device, (DEVCB_##cb));
class ym2610_device : public ay8910_device
{
public:
ym2610_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ym2610_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ym2610_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2610_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- void _IRQHandler(int irq);
- void _timer_handler(int c,int count,int clock);
- void _ym2610_update_request();
+ // update request from fm.cpp
+ static void update_request(device_t *param) { downcast<ym2610_device *>(param)->update_request(); }
- static const char* YM2610_TAG;
- static const char* YM2610_DELTAT_TAG;
+ static char const *const YM2610_TAG;
+ static char const *const YM2610_DELTAT_TAG;
protected:
+ ym2610_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_post_load() override;
@@ -45,24 +47,34 @@ protected:
void * m_chip;
private:
+ void irq_handler(int irq);
+ void timer_handler(int c, int count, int clock);
+ void update_request() { m_stream->update(); }
+
+ static void static_irq_handler(device_t *param, int irq) { downcast<ym2610_device *>(param)->irq_handler(irq); }
+ static void static_timer_handler(device_t *param, int c, int count, int clock) { downcast<ym2610_device *>(param)->timer_handler(c, count, clock); }
+
// internal state
sound_stream * m_stream;
emu_timer * m_timer[2];
devcb_write_line m_irq_handler;
required_memory_region m_region;
+
+ static const ssg_callbacks psgintf;
};
-extern const device_type YM2610;
class ym2610b_device : public ym2610_device
{
public:
ym2610b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
virtual void stream_generate(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
};
-extern const device_type YM2610B;
+DECLARE_DEVICE_TYPE(YM2610, ym2610_device)
+DECLARE_DEVICE_TYPE(YM2610B, ym2610b_device)
-#endif /* __2610INTF_H__ */
+#endif // MAME_SOUND_2610INTF_H
diff --git a/src/devices/sound/2612intf.cpp b/src/devices/sound/2612intf.cpp
index b6a1d42b398..7350d04a624 100644
--- a/src/devices/sound/2612intf.cpp
+++ b/src/devices/sound/2612intf.cpp
@@ -17,15 +17,9 @@
#include "2612intf.h"
#include "fm.h"
-/*------------------------- TM2612 -------------------------------*/
+/*------------------------- YM2612 -------------------------------*/
/* IRQ Handler */
-static void IRQHandler(void *param,int irq)
-{
- ym2612_device *ym2612 = (ym2612_device *) param;
- ym2612->_IRQHandler(irq);
-}
-
-void ym2612_device::_IRQHandler(int irq)
+void ym2612_device::irq_handler(int irq)
{
if (!m_irq_handler.isnull())
m_irq_handler(irq);
@@ -46,13 +40,7 @@ void ym2612_device::device_timer(emu_timer &timer, device_timer_id id, int param
}
}
-static void timer_handler(void *param,int c,int count,int clock)
-{
- ym2612_device *ym2612 = (ym2612_device *) param;
- ym2612->_timer_handler(c, count, clock);
-}
-
-void ym2612_device::_timer_handler(int c,int count,int clock)
+void ym2612_device::timer_handler(int c,int count,int clock)
{
if( count == 0 )
{ /* Reset FM Timer */
@@ -67,18 +55,6 @@ void ym2612_device::_timer_handler(int c,int count,int clock)
}
}
-/* update request from fm.c */
-void ym2612_update_request(void *param)
-{
- ym2612_device *ym2612 = (ym2612_device *) param;
- ym2612->_ym2612_update_request();
-}
-
-void ym2612_device::_ym2612_update_request()
-{
- m_stream->update();
-}
-
//-------------------------------------------------
// sound_stream_update - handle a stream update
//-------------------------------------------------
@@ -114,7 +90,7 @@ void ym2612_device::device_start()
m_stream = machine().sound().stream_alloc(*this,0,2,rate);
/**** initialize YM2612 ****/
- m_chip = ym2612_init(this,this,clock(),rate,timer_handler,IRQHandler);
+ m_chip = ym2612_init(this,clock(),rate,&ym2612_device::static_timer_handler,&ym2612_device::static_irq_handler);
assert_always(m_chip != nullptr, "Error creating YM2612 chip");
}
@@ -164,26 +140,27 @@ WRITE8_MEMBER( ym2612_device::write )
}
-const device_type YM2612 = device_creator<ym2612_device>;
+DEFINE_DEVICE_TYPE(YM2612, ym2612_device, "ym2612", "YM2612 OPN2")
ym2612_device::ym2612_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YM2612, "YM2612", tag, owner, clock, "ym2612", __FILE__),
- device_sound_interface(mconfig, *this),
- m_irq_handler(*this)
+ : ym2612_device(mconfig, YM2612, tag, owner, clock)
{
}
-ym2612_device::ym2612_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sound_interface(mconfig, *this),
- m_irq_handler(*this)
+ym2612_device::ym2612_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_timer{ nullptr, nullptr }
+ , m_chip(nullptr)
+ , m_irq_handler(*this)
{
}
-const device_type YM3438 = device_creator<ym3438_device>;
+DEFINE_DEVICE_TYPE(YM3438, ym3438_device, "ym3438", "YM3438 OPN2C")
ym3438_device::ym3438_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ym2612_device(mconfig, YM3438, "YM3438", tag, owner, clock, "ym3438", __FILE__)
+ : ym2612_device(mconfig, YM3438, tag, owner, clock)
{
}
diff --git a/src/devices/sound/2612intf.h b/src/devices/sound/2612intf.h
index 0695893f548..371e29cc408 100644
--- a/src/devices/sound/2612intf.h
+++ b/src/devices/sound/2612intf.h
@@ -1,34 +1,31 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi
-#pragma once
-
-#ifndef __2612INTF_H__
-#define __2612INTF_H__
+#ifndef MAME_SOUND_2612INTF_H
+#define MAME_SOUND_2612INTF_H
+#pragma once
-void ym2612_update_request(void *param);
-#define MCFG_YM2612_IRQ_HANDLER(_devcb) \
- devcb = &ym2612_device::set_irq_handler(*device, DEVCB_##_devcb);
+#define MCFG_YM2612_IRQ_HANDLER(cb) \
+ devcb = &ym2612_device::set_irq_handler(*device, (DEVCB_##cb));
-class ym2612_device : public device_t,
- public device_sound_interface
+class ym2612_device : public device_t, public device_sound_interface
{
public:
ym2612_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ym2612_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ym2612_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2612_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- void _IRQHandler(int irq);
- void _timer_handler(int c,int count,int clock);
- void _ym2612_update_request();
+ // update request from fm.cpp
+ static void update_request(device_t *param) { downcast<ym2612_device *>(param)->update_request(); }
protected:
+ ym2612_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_post_load() override;
@@ -42,6 +39,13 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ void irq_handler(int irq);
+ void timer_handler(int c, int count, int clock);
+ void update_request() { m_stream->update(); }
+
+ static void static_irq_handler(device_t *param, int irq) { downcast<ym2612_device *>(param)->irq_handler(irq); }
+ static void static_timer_handler(device_t *param, int c, int count, int clock) { downcast<ym2612_device *>(param)->timer_handler(c, count, clock); }
+
void calculate_rates();
sound_stream * m_stream;
@@ -50,8 +54,6 @@ private:
devcb_write_line m_irq_handler;
};
-extern const device_type YM2612;
-
class ym3438_device : public ym2612_device
{
@@ -59,7 +61,8 @@ public:
ym3438_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type YM3438;
+DECLARE_DEVICE_TYPE(YM2612, ym2612_device)
+DECLARE_DEVICE_TYPE(YM3438, ym3438_device)
-#endif /* __2612INTF_H__ */
+#endif // MAME_SOUND_2612INTF_H
diff --git a/src/devices/sound/262intf.cpp b/src/devices/sound/262intf.cpp
index 2131d71666f..c4da329ecff 100644
--- a/src/devices/sound/262intf.cpp
+++ b/src/devices/sound/262intf.cpp
@@ -13,13 +13,7 @@
/* IRQ Handler */
-static void IRQHandler(void *param,int irq)
-{
- ymf262_device *ymf262 = (ymf262_device *) param;
- ymf262->_IRQHandler(irq);
-}
-
-void ymf262_device::_IRQHandler(int irq)
+void ymf262_device::irq_handler(int irq)
{
if (!m_irq_handler.isnull())
m_irq_handler(irq);
@@ -41,13 +35,7 @@ void ymf262_device::device_timer(emu_timer &timer, device_timer_id id, int param
}
-static void timer_handler(void *param, int c, const attotime &period)
-{
- ymf262_device *ymf262 = (ymf262_device *) param;
- ymf262->_timer_handler(c, period);
-}
-
-void ymf262_device::_timer_handler(int c, const attotime &period)
+void ymf262_device::timer_handler(int c, const attotime &period)
{
if( period == attotime::zero )
{ /* Reset FM Timer */
@@ -59,17 +47,6 @@ void ymf262_device::_timer_handler(int c, const attotime &period)
}
}
-void ymf262_update_request(void *param, int interval)
-{
- ymf262_device *ymf262 = (ymf262_device *) param;
- ymf262->_ymf262_update_request();
-}
-
-void ymf262_device::_ymf262_update_request()
-{
- m_stream->update();
-}
-
//-------------------------------------------------
@@ -106,9 +83,9 @@ void ymf262_device::device_start()
m_stream = machine().sound().stream_alloc(*this,0,4,rate);
/* YMF262 setup */
- ymf262_set_timer_handler (m_chip, timer_handler, this);
- ymf262_set_irq_handler (m_chip, IRQHandler, this);
- ymf262_set_update_handler(m_chip, ymf262_update_request, this);
+ ymf262_set_timer_handler (m_chip, &ymf262_device::static_timer_handler, this);
+ ymf262_set_irq_handler (m_chip, &ymf262_device::static_irq_handler, this);
+ ymf262_set_update_handler(m_chip, &ymf262_device::static_update_request, this);
m_timer[0] = timer_alloc(0);
m_timer[1] = timer_alloc(1);
@@ -143,11 +120,14 @@ WRITE8_MEMBER( ymf262_device::write )
ymf262_write(m_chip, offset & 3, data);
}
-const device_type YMF262 = device_creator<ymf262_device>;
+DEFINE_DEVICE_TYPE(YMF262, ymf262_device, "ymf262", "YMF262 OPL3")
ymf262_device::ymf262_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YMF262, "YMF262", tag, owner, clock, "ymf262", __FILE__),
- device_sound_interface(mconfig, *this),
- m_irq_handler(*this)
+ : device_t(mconfig, YMF262, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_timer{ nullptr, nullptr }
+ , m_chip(nullptr)
+ , m_irq_handler(*this)
{
}
diff --git a/src/devices/sound/262intf.h b/src/devices/sound/262intf.h
index ed44eb4b58f..912568f669a 100644
--- a/src/devices/sound/262intf.h
+++ b/src/devices/sound/262intf.h
@@ -1,32 +1,25 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi
-#pragma once
+#ifndef MAME_SOUND_262INTF_H
+#define MAME_SOUND_262INTF_H
-#ifndef __262INTF_H__
-#define __262INTF_H__
+#pragma once
-#define MCFG_YMF262_IRQ_HANDLER(_devcb) \
- devcb = &ymf262_device::set_irq_handler(*device, DEVCB_##_devcb);
+#define MCFG_YMF262_IRQ_HANDLER(cb) \
+ devcb = &ymf262_device::set_irq_handler(*device, (DEVCB_##cb));
-class ymf262_device : public device_t,
- public device_sound_interface
+class ymf262_device : public device_t, public device_sound_interface
{
public:
ymf262_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ymf262_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ymf262_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- void _IRQHandler(int irq);
- void _timer_handler(int c, const attotime &period);
- void _ymf262_update_request();
-
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
protected:
// device-level overrides
virtual void device_post_load() override;
@@ -34,9 +27,20 @@ protected:
virtual void device_stop() override;
virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+
private:
+ void irq_handler(int irq);
+ void timer_handler(int c, const attotime &period);
+ void update_request() { m_stream->update(); }
+
+ static void static_irq_handler(device_t *param, int irq) { downcast<ymf262_device *>(param)->irq_handler(irq); }
+ static void static_timer_handler(device_t *param, int c, const attotime &period) { downcast<ymf262_device *>(param)->timer_handler(c, period); }
+ static void static_update_request(device_t *param, int interval) { downcast<ymf262_device *>(param)->update_request(); }
+
// internal state
sound_stream * m_stream;
emu_timer * m_timer[2];
@@ -44,7 +48,6 @@ private:
devcb_write_line m_irq_handler;
};
-extern const device_type YMF262;
-
+DECLARE_DEVICE_TYPE(YMF262, ymf262_device)
-#endif /* __262INTF_H__ */
+#endif // MAME_SOUND_262INTF_H
diff --git a/src/devices/sound/315-5641.cpp b/src/devices/sound/315-5641.cpp
index be2e0cff4db..f45f3071ae7 100644
--- a/src/devices/sound/315-5641.cpp
+++ b/src/devices/sound/315-5641.cpp
@@ -5,10 +5,10 @@
#include "emu.h"
#include "315-5641.h"
-const device_type SEGA_315_5641_PCM = device_creator<sega_315_5641_pcm_device>;
+DEFINE_DEVICE_TYPE(SEGA_315_5641_PCM, sega_315_5641_pcm_device, "315_5641_pcm", "Sega 315-5641 PCM")
sega_315_5641_pcm_device::sega_315_5641_pcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upd7759_device(mconfig, SEGA_315_5641_PCM, "315-5641 PCM", tag, owner, clock, "315_5641_pcm", __FILE__), m_fifo_read(0), m_fifo_write(0)
+ : upd7759_device(mconfig, SEGA_315_5641_PCM, tag, owner, clock), m_fifo_read(0), m_fifo_write(0)
{
}
diff --git a/src/devices/sound/315-5641.h b/src/devices/sound/315-5641.h
index b26328629fa..700fcaccaa2 100644
--- a/src/devices/sound/315-5641.h
+++ b/src/devices/sound/315-5641.h
@@ -4,6 +4,11 @@
// this is the PICO sound chip, we are not sure if it's the same as a 7759 or not, it requires FIFO logic
// which the 7759 does _not_ have but it is possible that is handled somewhere else on the PICO hardware.
+#ifndef MAME_SOUND_315_5641_H
+#define MAME_SOUND_315_5641_H
+
+#pragma once
+
#include "upd7759.h"
@@ -13,20 +18,22 @@ class sega_315_5641_pcm_device : public upd7759_device
public:
sega_315_5641_pcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- uint8_t get_fifo_space();
- void advance_state() override;
virtual DECLARE_WRITE8_MEMBER(port_w) override;
- uint8_t m_fifo_data[0x40];
- uint8_t m_fifo_read; // last read offset (will read in m_fifo_read+1)
- uint8_t m_fifo_write; // write offset
+ uint8_t get_fifo_space();
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ void advance_state() override;
+ uint8_t m_fifo_data[0x40];
+ uint8_t m_fifo_read; // last read offset (will read in m_fifo_read+1)
+ uint8_t m_fifo_write; // write offset
};
-extern const device_type SEGA_315_5641_PCM;
+DECLARE_DEVICE_TYPE(SEGA_315_5641_PCM, sega_315_5641_pcm_device)
+
+#endif // MAME_SOUND_315_5641_H
diff --git a/src/devices/sound/3526intf.cpp b/src/devices/sound/3526intf.cpp
index f59a60f114e..86ee4a5c0b7 100644
--- a/src/devices/sound/3526intf.cpp
+++ b/src/devices/sound/3526intf.cpp
@@ -24,13 +24,7 @@
/* IRQ Handler */
-static void IRQHandler(void *param,int irq)
-{
- ym3526_device *ym3526 = (ym3526_device *) param;
- ym3526->_IRQHandler(irq);
-}
-
-void ym3526_device::_IRQHandler(int irq)
+void ym3526_device::irq_handler(int irq)
{
if (!m_irq_handler.isnull())
m_irq_handler(irq);
@@ -51,13 +45,7 @@ void ym3526_device::device_timer(emu_timer &timer, device_timer_id id, int param
}
}
-static void timer_handler(void *param,int c,const attotime &period)
-{
- ym3526_device *ym3526 = (ym3526_device *) param;
- ym3526->_timer_handler(c, period);
-}
-
-void ym3526_device::_timer_handler(int c,const attotime &period)
+void ym3526_device::timer_handler(int c,const attotime &period)
{
if( period == attotime::zero )
{ /* Reset FM Timer */
@@ -69,18 +57,6 @@ void ym3526_device::_timer_handler(int c,const attotime &period)
}
}
-/* update request from fm.c */
-void ym3526_update_request(void *param, int interval)
-{
- ym3526_device *ym3526 = (ym3526_device *) param;
- ym3526->_ym3526_update_request();
-}
-
-void ym3526_device::_ym3526_update_request()
-{
- m_stream->update();
-}
-
//-------------------------------------------------
@@ -111,9 +87,9 @@ void ym3526_device::device_start()
calculate_rates();
/* YM3526 setup */
- ym3526_set_timer_handler (m_chip, timer_handler, this);
- ym3526_set_irq_handler (m_chip, IRQHandler, this);
- ym3526_set_update_handler(m_chip, ym3526_update_request, this);
+ ym3526_set_timer_handler (m_chip, &ym3526_device::static_timer_handler, this);
+ ym3526_set_irq_handler (m_chip, &ym3526_device::static_irq_handler, this);
+ ym3526_set_update_handler(m_chip, &ym3526_device::static_update_request, this);
m_timer[0] = timer_alloc(0);
m_timer[1] = timer_alloc(1);
@@ -170,13 +146,14 @@ WRITE8_MEMBER( ym3526_device::control_port_w ) { write(space, 0, data); }
WRITE8_MEMBER( ym3526_device::write_port_w ) { write(space, 1, data); }
-const device_type YM3526 = device_creator<ym3526_device>;
+DEFINE_DEVICE_TYPE(YM3526, ym3526_device, "ym3526", "YM3526 OPL")
ym3526_device::ym3526_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YM3526, "YM3526", tag, owner, clock, "ym3526", __FILE__),
- device_sound_interface(mconfig, *this),
- m_stream(nullptr),
- m_chip(nullptr),
- m_irq_handler(*this)
+ : device_t(mconfig, YM3526, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_timer{ nullptr, nullptr }
+ , m_chip(nullptr)
+ , m_irq_handler(*this)
{
}
diff --git a/src/devices/sound/3526intf.h b/src/devices/sound/3526intf.h
index 2c448c526ad..1f53b5b9969 100644
--- a/src/devices/sound/3526intf.h
+++ b/src/devices/sound/3526intf.h
@@ -1,22 +1,21 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi
-#pragma once
+#ifndef MAME_SOUND_3526INTF_H
+#define MAME_SOUND_3526INTF_H
-#ifndef __3526INTF_H__
-#define __3526INTF_H__
+#pragma once
-#define MCFG_YM3526_IRQ_HANDLER(_devcb) \
- devcb = &ym3526_device::set_irq_handler(*device, DEVCB_##_devcb);
+#define MCFG_YM3526_IRQ_HANDLER(cb) \
+ devcb = &ym3526_device::set_irq_handler(*device, (DEVCB_##cb));
-class ym3526_device : public device_t,
- public device_sound_interface
+class ym3526_device : public device_t, public device_sound_interface
{
public:
ym3526_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ym3526_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym3526_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -26,10 +25,6 @@ public:
DECLARE_WRITE8_MEMBER( control_port_w );
DECLARE_WRITE8_MEMBER( write_port_w );
- void _IRQHandler(int irq);
- void _timer_handler(int c,const attotime &period);
- void _ym3526_update_request();
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -43,8 +38,16 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ void irq_handler(int irq);
+ void timer_handler(int c, const attotime &period);
+ void update_request() { m_stream->update(); }
+
void calculate_rates();
+ static void static_irq_handler(device_t *param, int irq) { downcast<ym3526_device *>(param)->irq_handler(irq); }
+ static void static_timer_handler(device_t *param, int c, const attotime &period) { downcast<ym3526_device *>(param)->timer_handler(c, period); }
+ static void static_update_request(device_t *param, int interval) { downcast<ym3526_device *>(param)->update_request(); }
+
// internal state
sound_stream * m_stream;
emu_timer * m_timer[2];
@@ -52,7 +55,6 @@ private:
devcb_write_line m_irq_handler;
};
-extern const device_type YM3526;
-
+DECLARE_DEVICE_TYPE(YM3526, ym3526_device)
-#endif /* __3526INTF_H__ */
+#endif // MAME_SOUND_3526INTF_H
diff --git a/src/devices/sound/3812intf.cpp b/src/devices/sound/3812intf.cpp
index e9d42a0723b..c234554febc 100644
--- a/src/devices/sound/3812intf.cpp
+++ b/src/devices/sound/3812intf.cpp
@@ -23,13 +23,7 @@
#include "sound/fmopl.h"
-static void IRQHandler(void *param,int irq)
-{
- ym3812_device *ym3812 = (ym3812_device *) param;
- ym3812->_IRQHandler(irq);
-}
-
-void ym3812_device::_IRQHandler(int irq)
+void ym3812_device::irq_handler(int irq)
{
if (!m_irq_handler.isnull())
m_irq_handler(irq);
@@ -50,13 +44,7 @@ void ym3812_device::device_timer(emu_timer &timer, device_timer_id id, int param
}
}
-static void timer_handler(void *param,int c,const attotime &period)
-{
- ym3812_device *ym3812 = (ym3812_device *) param;
- ym3812->_timer_handler(c, period);
-}
-
-void ym3812_device::_timer_handler(int c, const attotime &period)
+void ym3812_device::timer_handler(int c, const attotime &period)
{
if( period == attotime::zero )
{ /* Reset FM Timer */
@@ -69,18 +57,6 @@ void ym3812_device::_timer_handler(int c, const attotime &period)
}
-static void ym3812_update_request(void * param, int interval)
-{
- ym3812_device *ym3812 = (ym3812_device *) param;
- ym3812->_ym3812_update_request();
-}
-
-void ym3812_device::_ym3812_update_request()
-{
- m_stream->update();
-}
-
-
//-------------------------------------------------
// sound_stream_update - handle a stream update
//-------------------------------------------------
@@ -107,9 +83,9 @@ void ym3812_device::device_start()
calculate_rates();
/* YM3812 setup */
- ym3812_set_timer_handler (m_chip, timer_handler, this);
- ym3812_set_irq_handler (m_chip, IRQHandler, this);
- ym3812_set_update_handler(m_chip, ym3812_update_request, this);
+ ym3812_set_timer_handler (m_chip, ym3812_device::static_timer_handler, this);
+ ym3812_set_irq_handler (m_chip, ym3812_device::static_irq_handler, this);
+ ym3812_set_update_handler(m_chip, ym3812_device::static_update_request, this);
m_timer[0] = timer_alloc(0);
m_timer[1] = timer_alloc(1);
@@ -163,16 +139,17 @@ WRITE8_MEMBER( ym3812_device::write )
READ8_MEMBER( ym3812_device::status_port_r ) { return read(space, 0); }
READ8_MEMBER( ym3812_device::read_port_r ) { return read(space, 1); }
WRITE8_MEMBER( ym3812_device::control_port_w ) { write(space, 0, data); }
-WRITE8_MEMBER( ym3812_device::write_port_w ) { write( space, 1, data); }
+WRITE8_MEMBER( ym3812_device::write_port_w ) { write(space, 1, data); }
-const device_type YM3812 = device_creator<ym3812_device>;
+DEFINE_DEVICE_TYPE(YM3812, ym3812_device, "ym3812", "YM3812 OPL2")
ym3812_device::ym3812_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YM3812, "YM3812", tag, owner, clock, "ym3812", __FILE__),
- device_sound_interface(mconfig, *this),
- m_stream(nullptr),
- m_chip(nullptr),
- m_irq_handler(*this)
+ : device_t(mconfig, YM3812, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_timer{ nullptr, nullptr }
+ , m_chip(nullptr)
+ , m_irq_handler(*this)
{
}
diff --git a/src/devices/sound/3812intf.h b/src/devices/sound/3812intf.h
index d76a633d55b..6dfff0bec9d 100644
--- a/src/devices/sound/3812intf.h
+++ b/src/devices/sound/3812intf.h
@@ -1,22 +1,19 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi
-#pragma once
+#ifndef MAME_SOUND_3812INTF_H
+#define MAME_SOUND_3812INTF_H
-#ifndef __3812INTF_H__
-#define __3812INTF_H__
+#define MCFG_YM3812_IRQ_HANDLER(cb) \
+ devcb = &ym3812_device::set_irq_handler(*device, (DEVCB_##cb));
-#define MCFG_YM3812_IRQ_HANDLER(_devcb) \
- devcb = &ym3812_device::set_irq_handler(*device, DEVCB_##_devcb);
-
-class ym3812_device : public device_t,
- public device_sound_interface
+class ym3812_device : public device_t, public device_sound_interface
{
public:
ym3812_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ym3812_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym3812_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -26,10 +23,6 @@ public:
DECLARE_WRITE8_MEMBER( control_port_w );
DECLARE_WRITE8_MEMBER( write_port_w );
- void _IRQHandler(int irq);
- void _timer_handler(int c, const attotime &period);
- void _ym3812_update_request();
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -43,15 +36,23 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ void irq_handler(int irq);
+ void timer_handler(int c, const attotime &period);
+ void update_request() { m_stream->update(); }
+
void calculate_rates();
+ static void static_irq_handler(device_t *param, int irq) { downcast<ym3812_device *>(param)->irq_handler(irq); }
+ static void static_timer_handler(device_t *param, int c, const attotime &period) { downcast<ym3812_device *>(param)->timer_handler(c, period); }
+ static void static_update_request(device_t *param, int interval) { downcast<ym3812_device *>(param)->update_request(); }
+
sound_stream * m_stream;
emu_timer * m_timer[2];
void * m_chip;
devcb_write_line m_irq_handler;
};
-extern const device_type YM3812;
+DECLARE_DEVICE_TYPE(YM3812, ym3812_device)
-#endif /* __3812INTF_H__ */
+#endif // MAME_SOUND_3812INTF_H
diff --git a/src/devices/sound/8950intf.cpp b/src/devices/sound/8950intf.cpp
index 3b6b32eca20..a6f8be7aa2b 100644
--- a/src/devices/sound/8950intf.cpp
+++ b/src/devices/sound/8950intf.cpp
@@ -23,13 +23,7 @@
#include "fmopl.h"
-static void IRQHandler(void *param,int irq)
-{
- y8950_device *y8950 = (y8950_device *) param;
- y8950->_IRQHandler(irq);
-}
-
-void y8950_device::_IRQHandler(int irq)
+void y8950_device::irq_handler(int irq)
{
m_irq_handler(irq);
}
@@ -48,13 +42,7 @@ void y8950_device::device_timer(emu_timer &timer, device_timer_id id, int param,
}
}
-static void timer_handler(void *param, int c, const attotime &period)
-{
- y8950_device *y8950 = (y8950_device *) param;
- y8950->_timer_handler(c, period);
-}
-
-void y8950_device::_timer_handler(int c, const attotime &period)
+void y8950_device::timer_handler(int c, const attotime &period)
{
if( period == attotime::zero )
{ /* Reset FM Timer */
@@ -67,50 +55,6 @@ void y8950_device::_timer_handler(int c, const attotime &period)
}
-static unsigned char Y8950PortHandler_r(void *param)
-{
- y8950_device *y8950 = (y8950_device *) param;
- return y8950->_Y8950PortHandler_r();
-}
-
-unsigned char y8950_device::_Y8950PortHandler_r()
-{
- return m_io_read_handler(0);
-}
-
-static void Y8950PortHandler_w(void *param,unsigned char data)
-{
- y8950_device *y8950 = (y8950_device *) param;
- y8950->_Y8950PortHandler_w(data);
-}
-
-void y8950_device::_Y8950PortHandler_w(unsigned char data)
-{
- m_io_write_handler((offs_t)0,data);
-}
-
-static unsigned char Y8950KeyboardHandler_r(void *param)
-{
- y8950_device *y8950 = (y8950_device *) param;
- return y8950->_Y8950KeyboardHandler_r();
-}
-
-unsigned char y8950_device::_Y8950KeyboardHandler_r()
-{
- return m_keyboard_read_handler(0);
-}
-
-static void Y8950KeyboardHandler_w(void *param,unsigned char data)
-{
- y8950_device *y8950 = (y8950_device *) param;
- y8950->_Y8950KeyboardHandler_w(data);
-}
-
-void y8950_device::_Y8950KeyboardHandler_w(unsigned char data)
-{
- m_keyboard_write_handler((offs_t)0,data);
-}
-
//-------------------------------------------------
// sound_stream_update - handle a stream update
//-------------------------------------------------
@@ -120,17 +64,6 @@ void y8950_device::sound_stream_update(sound_stream &stream, stream_sample_t **i
y8950_update_one(m_chip, outputs[0], samples);
}
-static void y8950_update_request(void *param, int interval)
-{
- y8950_device *y8950 = (y8950_device *) param;
- y8950->_y8950_update_request();
-}
-
-void y8950_device::_y8950_update_request()
-{
- m_stream->update();
-}
-
//-------------------------------------------------
// device_start - device-specific startup
@@ -155,13 +88,13 @@ void y8950_device::device_start()
m_stream = machine().sound().stream_alloc(*this,0,1,rate);
/* port and keyboard handler */
- y8950_set_port_handler(m_chip, Y8950PortHandler_w, Y8950PortHandler_r, this);
- y8950_set_keyboard_handler(m_chip, Y8950KeyboardHandler_w, Y8950KeyboardHandler_r, this);
+ y8950_set_port_handler(m_chip, &y8950_device::static_port_handler_w, &y8950_device::static_port_handler_r, this);
+ y8950_set_keyboard_handler(m_chip, &y8950_device::static_keyboard_handler_w, &y8950_device::static_keyboard_handler_r, this);
/* Y8950 setup */
- y8950_set_timer_handler (m_chip, timer_handler, this);
- y8950_set_irq_handler (m_chip, IRQHandler, this);
- y8950_set_update_handler(m_chip, y8950_update_request, this);
+ y8950_set_timer_handler (m_chip, &y8950_device::static_timer_handler, this);
+ y8950_set_irq_handler (m_chip, &y8950_device::static_irq_handler, this);
+ y8950_set_update_handler(m_chip, &y8950_device::static_update_request, this);
m_timer[0] = timer_alloc(0);
m_timer[1] = timer_alloc(1);
@@ -202,18 +135,19 @@ WRITE8_MEMBER( y8950_device::control_port_w ) { write(space, 0, data); }
WRITE8_MEMBER( y8950_device::write_port_w ) { write(space, 1, data); }
-const device_type Y8950 = device_creator<y8950_device>;
+DEFINE_DEVICE_TYPE(Y8950, y8950_device, "y8950", "Y8950 MSX-Audio")
y8950_device::y8950_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, Y8950, "Y8950", tag, owner, clock, "y8950", __FILE__),
- device_sound_interface(mconfig, *this),
- m_stream(nullptr),
- m_chip(nullptr),
- m_irq_handler(*this),
- m_keyboard_read_handler(*this),
- m_keyboard_write_handler(*this),
- m_io_read_handler(*this),
- m_io_write_handler(*this),
- m_region(*this, DEVICE_SELF)
+ : device_t(mconfig, Y8950, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_timer{ nullptr, nullptr }
+ , m_chip(nullptr)
+ , m_irq_handler(*this)
+ , m_keyboard_read_handler(*this)
+ , m_keyboard_write_handler(*this)
+ , m_io_read_handler(*this)
+ , m_io_write_handler(*this)
+ , m_region(*this, DEVICE_SELF)
{
}
diff --git a/src/devices/sound/8950intf.h b/src/devices/sound/8950intf.h
index 3e6e0497f08..81a00c36662 100644
--- a/src/devices/sound/8950intf.h
+++ b/src/devices/sound/8950intf.h
@@ -1,38 +1,37 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi
-#pragma once
+#ifndef MAME_SOUND_8950INTF_H
+#define MAME_SOUND_8950INTF_H
-#ifndef __8950INTF_H__
-#define __8950INTF_H__
+#pragma once
-#define MCFG_Y8950_IRQ_HANDLER(_devcb) \
- devcb = &y8950_device::set_irq_handler(*device, DEVCB_##_devcb);
+#define MCFG_Y8950_IRQ_HANDLER(cb) \
+ devcb = &y8950_device::set_irq_handler(*device, (DEVCB_##cb));
-#define MCFG_Y8950_KEYBOARD_READ_HANDLER(_devcb) \
- devcb = &y8950_device::set_keyboard_read_handler(*device, DEVCB_##_devcb);
+#define MCFG_Y8950_KEYBOARD_READ_HANDLER(cb) \
+ devcb = &y8950_device::set_keyboard_read_handler(*device, (DEVCB_##cb));
-#define MCFG_Y8950_KEYBOARD_WRITE_HANDLER(_devcb) \
- devcb = &y8950_device::set_keyboard_write_handler(*device, DEVCB_##_devcb);
+#define MCFG_Y8950_KEYBOARD_WRITE_HANDLER(cb) \
+ devcb = &y8950_device::set_keyboard_write_handler(*device, (DEVCB_##cb));
-#define MCFG_Y8950_IO_READ_HANDLER(_devcb) \
- devcb = &y8950_device::set_io_read_handler(*device, DEVCB_##_devcb);
+#define MCFG_Y8950_IO_READ_HANDLER(cb) \
+ devcb = &y8950_device::set_io_read_handler(*device, (DEVCB_##cb));
-#define MCFG_Y8950_IO_WRITE_HANDLER(_devcb) \
- devcb = &y8950_device::set_io_write_handler(*device, DEVCB_##_devcb);
+#define MCFG_Y8950_IO_WRITE_HANDLER(cb) \
+ devcb = &y8950_device::set_io_write_handler(*device, (DEVCB_##cb));
-class y8950_device : public device_t,
- public device_sound_interface
+class y8950_device : public device_t, public device_sound_interface
{
public:
y8950_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<y8950_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_keyboard_read_handler(device_t &device, _Object object) { return downcast<y8950_device &>(device).m_keyboard_read_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_keyboard_write_handler(device_t &device, _Object object) { return downcast<y8950_device &>(device).m_keyboard_write_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_io_read_handler(device_t &device, _Object object) { return downcast<y8950_device &>(device).m_io_read_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_io_write_handler(device_t &device, _Object object) { return downcast<y8950_device &>(device).m_io_write_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<y8950_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_keyboard_read_handler(device_t &device, Object &&cb) { return downcast<y8950_device &>(device).m_keyboard_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_keyboard_write_handler(device_t &device, Object &&cb) { return downcast<y8950_device &>(device).m_keyboard_write_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_io_read_handler(device_t &device, Object &&cb) { return downcast<y8950_device &>(device).m_io_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_io_write_handler(device_t &device, Object &&cb) { return downcast<y8950_device &>(device).m_io_write_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -42,14 +41,6 @@ public:
DECLARE_WRITE8_MEMBER( control_port_w );
DECLARE_WRITE8_MEMBER( write_port_w );
- void _IRQHandler(int irq);
- void _timer_handler(int c, const attotime &period);
- void _y8950_update_request();
- unsigned char _Y8950PortHandler_r();
- void _Y8950PortHandler_w(unsigned char data);
- unsigned char _Y8950KeyboardHandler_r();
- void _Y8950KeyboardHandler_w(unsigned char data);
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -62,6 +53,24 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ void irq_handler(int irq);
+ void timer_handler(int c, const attotime &period);
+ void update_request() { m_stream->update(); }
+
+ unsigned char port_handler_r() { return m_io_read_handler(0); }
+ void port_handler_w(unsigned char data) { m_io_write_handler(offs_t(0), data); }
+ unsigned char keyboard_handler_r() { return m_keyboard_read_handler(0); }
+ void keyboard_handler_w(unsigned char data) { m_keyboard_write_handler(offs_t(0), data); }
+
+ static void static_irq_handler(device_t *param, int irq) { downcast<y8950_device *>(param)->irq_handler(irq); }
+ static void static_timer_handler(device_t *param, int c, const attotime &period) { downcast<y8950_device *>(param)->timer_handler(c, period); }
+ static void static_update_request(device_t *param, int interval) { downcast<y8950_device *>(param)->update_request(); }
+
+ static unsigned char static_port_handler_r(device_t *param) { return downcast<y8950_device *>(param)->port_handler_r(); }
+ static void static_port_handler_w(device_t *param, unsigned char data) { downcast<y8950_device *>(param)->port_handler_w(data); }
+ static unsigned char static_keyboard_handler_r(device_t *param) { return downcast<y8950_device *>(param)->keyboard_handler_r(); }
+ static void static_keyboard_handler_w(device_t *param, unsigned char data) { downcast<y8950_device *>(param)->keyboard_handler_w(data); }
+
// internal state
sound_stream * m_stream;
emu_timer * m_timer[2];
@@ -74,7 +83,6 @@ private:
required_memory_region m_region;
};
-extern const device_type Y8950;
-
+DECLARE_DEVICE_TYPE(Y8950, y8950_device)
-#endif /* __8950INTF_H__ */
+#endif // MAME_SOUND_8950INTF_H
diff --git a/src/devices/sound/ad1848.cpp b/src/devices/sound/ad1848.cpp
index 33e2df9ecac..34adb2d3290 100644
--- a/src/devices/sound/ad1848.cpp
+++ b/src/devices/sound/ad1848.cpp
@@ -10,10 +10,10 @@
#include "speaker.h"
-const device_type AD1848 = device_creator<ad1848_device>;
+DEFINE_DEVICE_TYPE(AD1848, ad1848_device, "ad1848", "Analog Device AD1848")
ad1848_device::ad1848_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, AD1848, "Analog Devices AD1848", tag, owner, clock, "ad1848", __FILE__),
+ device_t(mconfig, AD1848, tag, owner, clock),
m_irq_cb(*this),
m_drq_cb(*this),
m_ldac(*this, "ldac"),
@@ -81,7 +81,7 @@ READ8_MEMBER(ad1848_device::read)
WRITE8_MEMBER(ad1848_device::write)
{
- const int div_factor[] = {3072, 1536, 896, 768, 448, 384, 512, 2560};
+ static constexpr int div_factor[] = {3072, 1536, 896, 768, 448, 384, 512, 2560};
switch(offset)
{
case 0:
diff --git a/src/devices/sound/ad1848.h b/src/devices/sound/ad1848.h
index f0c881c891c..4b410adcdf2 100644
--- a/src/devices/sound/ad1848.h
+++ b/src/devices/sound/ad1848.h
@@ -1,31 +1,38 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef _AD1848_H_
-#define _AD1848_H_
+#ifndef MAME_SOUND_AD1848_H
+#define MAME_SOUND_AD1848_H
+
+#pragma once
#include "sound/dac.h"
-#define MCFG_AD1848_IRQ_CALLBACK(_cb) \
- devcb = &ad1848_device::set_irq_callback(*device, DEVCB_##_cb);
-#define MCFG_AD1848_DRQ_CALLBACK(_cb) \
- devcb = &ad1848_device::set_drq_callback(*device, DEVCB_##_cb);
+#define MCFG_AD1848_IRQ_CALLBACK(cb) \
+ devcb = &ad1848_device::set_irq_callback(*device, (DEVCB_##cb));
+
+#define MCFG_AD1848_DRQ_CALLBACK(cb) \
+ devcb = &ad1848_device::set_drq_callback(*device, (DEVCB_##cb));
class ad1848_device : public device_t
{
public:
ad1848_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<ad1848_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast<ad1848_device &>(device).m_drq_cb.set_callback(std::forward<Object>(cb)); }
+
+ virtual machine_config_constructor device_mconfig_additions() const override;
+
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
DECLARE_READ8_MEMBER(dack_r);
DECLARE_WRITE8_MEMBER(dack_w);
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<ad1848_device &>(device).m_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_callback(device_t &device, _Object object) { return downcast<ad1848_device &>(device).m_drq_cb.set_callback(object); }
- virtual machine_config_constructor device_mconfig_additions() const override;
protected:
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
union {
struct {
@@ -61,6 +68,6 @@ private:
emu_timer *m_timer;
};
-extern const device_type AD1848;
+DECLARE_DEVICE_TYPE(AD1848, ad1848_device)
-#endif
+#endif // MAME_SOUND_AD1848_H
diff --git a/src/devices/sound/aica.cpp b/src/devices/sound/aica.cpp
index b0708e4f135..f636f209576 100644
--- a/src/devices/sound/aica.cpp
+++ b/src/devices/sound/aica.cpp
@@ -35,8 +35,8 @@
*/
//SLOT PARAMETERS
-#define KEYONEX(slot) ((slot->udata.data[0x0]>>0x0)&0x8000)
-#define KEYONB(slot) ((slot->udata.data[0x0]>>0x0)&0x4000)
+#define KEYONEX(slot) ((slot->udata.data[0x0]>>0x0)&0x8000)
+#define KEYONB(slot) ((slot->udata.data[0x0]>>0x0)&0x4000)
#define SSCTL(slot) ((slot->udata.data[0x0]>>0xA)&0x0001)
#define LPCTL(slot) ((slot->udata.data[0x0]>>0x9)&0x0001)
#define PCMS(slot) ((slot->udata.data[0x0]>>0x7)&0x0003)
@@ -51,7 +51,7 @@
#define D1R(slot) ((slot->udata.data[0x10/2]>>0x6)&0x001F)
#define AR(slot) ((slot->udata.data[0x10/2]>>0x0)&0x001F)
-#define LPSLNK(slot) ((slot->udata.data[0x14/2]>>0x0)&0x4000)
+#define LPSLNK(slot) ((slot->udata.data[0x14/2]>>0x0)&0x4000)
#define KRS(slot) ((slot->udata.data[0x14/2]>>0xA)&0x000F)
#define DL(slot) ((slot->udata.data[0x14/2]>>0x5)&0x001F)
#define RR(slot) ((slot->udata.data[0x14/2]>>0x0)&0x001F)
@@ -63,9 +63,9 @@
#define LFORE(slot) ((slot->udata.data[0x1c/2]>>0x0)&0x8000)
#define LFOF(slot) ((slot->udata.data[0x1c/2]>>0xA)&0x001F)
-#define PLFOWS(slot) ((slot->udata.data[0x1c/2]>>0x8)&0x0003)
+#define PLFOWS(slot) ((slot->udata.data[0x1c/2]>>0x8)&0x0003)
#define PLFOS(slot) ((slot->udata.data[0x1c/2]>>0x5)&0x0007)
-#define ALFOWS(slot) ((slot->udata.data[0x1c/2]>>0x3)&0x0003)
+#define ALFOWS(slot) ((slot->udata.data[0x1c/2]>>0x3)&0x0003)
#define ALFOS(slot) ((slot->udata.data[0x1c/2]>>0x0)&0x0007)
#define ISEL(slot) ((slot->udata.data[0x20/2]>>0x0)&0x000F)
@@ -78,32 +78,32 @@
#define EFPAN(slot) ((m_EFSPAN[slot*4]>>0)&0x001f)
//Envelope times in ms
-static const double ARTimes[64]={100000/*infinity*/,100000/*infinity*/,8100.0,6900.0,6000.0,4800.0,4000.0,3400.0,3000.0,2400.0,2000.0,1700.0,1500.0,
+static constexpr double ARTimes[64]={100000/*infinity*/,100000/*infinity*/,8100.0,6900.0,6000.0,4800.0,4000.0,3400.0,3000.0,2400.0,2000.0,1700.0,1500.0,
1200.0,1000.0,860.0,760.0,600.0,500.0,430.0,380.0,300.0,250.0,220.0,190.0,150.0,130.0,110.0,95.0,
76.0,63.0,55.0,47.0,38.0,31.0,27.0,24.0,19.0,15.0,13.0,12.0,9.4,7.9,6.8,6.0,4.7,3.8,3.4,3.0,2.4,
2.0,1.8,1.6,1.3,1.1,0.93,0.85,0.65,0.53,0.44,0.40,0.35,0.0,0.0};
-static const double DRTimes[64]={100000/*infinity*/,100000/*infinity*/,118200.0,101300.0,88600.0,70900.0,59100.0,50700.0,44300.0,35500.0,29600.0,25300.0,22200.0,17700.0,
+static constexpr double DRTimes[64]={100000/*infinity*/,100000/*infinity*/,118200.0,101300.0,88600.0,70900.0,59100.0,50700.0,44300.0,35500.0,29600.0,25300.0,22200.0,17700.0,
14800.0,12700.0,11100.0,8900.0,7400.0,6300.0,5500.0,4400.0,3700.0,3200.0,2800.0,2200.0,1800.0,1600.0,1400.0,1100.0,
920.0,790.0,690.0,550.0,460.0,390.0,340.0,270.0,230.0,200.0,170.0,140.0,110.0,98.0,85.0,68.0,57.0,49.0,43.0,34.0,
28.0,25.0,22.0,18.0,14.0,12.0,11.0,8.5,7.1,6.1,5.4,4.3,3.6,3.1};
#define MEM4B(aica) ((m_udata.data[0]>>0x0)&0x0200)
-#define DAC18B(aica) ((m_udata.data[0]>>0x0)&0x0100)
+#define DAC18B(aica) ((m_udata.data[0]>>0x0)&0x0100)
#define MVOL(aica) ((m_udata.data[0]>>0x0)&0x000F)
#define RBL(aica) ((m_udata.data[2]>>0xD)&0x0003)
#define RBP(aica) ((m_udata.data[2]>>0x0)&0x0fff)
-#define MOFULL(aica) ((m_udata.data[4]>>0x0)&0x1000)
-#define MOEMPTY(aica) ((m_udata.data[4]>>0x0)&0x0800)
+#define MOFULL(aica) ((m_udata.data[4]>>0x0)&0x1000)
+#define MOEMPTY(aica) ((m_udata.data[4]>>0x0)&0x0800)
#define MIOVF(aica) ((m_udata.data[4]>>0x0)&0x0400)
-#define MIFULL(aica) ((m_udata.data[4]>>0x0)&0x0200)
-#define MIEMPTY(aica) ((m_udata.data[4]>>0x0)&0x0100)
+#define MIFULL(aica) ((m_udata.data[4]>>0x0)&0x0200)
+#define MIEMPTY(aica) ((m_udata.data[4]>>0x0)&0x0100)
#define AFSEL(aica) ((m_udata.data[0xc/2]>>0x0)&0x4000)
#define MSLC(aica) ((m_udata.data[0xc/2]>>0x8)&0x3F)
-#define SCILV0(aica) ((m_udata.data[0xa8/2]>>0x0)&0xff)
-#define SCILV1(aica) ((m_udata.data[0xac/2]>>0x0)&0xff)
-#define SCILV2(aica) ((m_udata.data[0xb0/2]>>0x0)&0xff)
+#define SCILV0(aica) ((m_udata.data[0xa8/2]>>0x0)&0xff)
+#define SCILV1(aica) ((m_udata.data[0xac/2]>>0x0)&0xff)
+#define SCILV2(aica) ((m_udata.data[0xb0/2]>>0x0)&0xff)
#define MCIEB(aica) ((m_udata.data[0xb4/2]>>0x0)&0xff)
#define MCIPD(aica) ((m_udata.data[0xb8/2]>>0x0)&0xff)
@@ -118,7 +118,7 @@ static const double DRTimes[64]={100000/*infinity*/,100000/*infinity*/,118200.0,
#define SCITMA 6
#define SCITMB 7
-static const float SDLT[16]={-1000000.0,-42.0,-39.0,-36.0,-33.0,-30.0,-27.0,-24.0,-21.0,-18.0,-15.0,-12.0,-9.0,-6.0,-3.0,0.0};
+static constexpr float SDLT[16]={-1000000.0,-42.0,-39.0,-36.0,-33.0,-30.0,-27.0,-24.0,-21.0,-18.0,-15.0,-12.0,-9.0,-6.0,-3.0,0.0};
unsigned char aica_device::DecodeSCI(unsigned char irq)
{
@@ -338,10 +338,10 @@ void aica_device::Compute_LFO(AICA_SLOT *slot)
}
#define ADPCMSHIFT 8
-#define ADFIX(f) (int) ((float) f*(float) (1<<ADPCMSHIFT))
+static constexpr int ADFIX(float f) { return int(f * float(1 << ADPCMSHIFT)); }
-static const int TableQuant[8]={ADFIX(0.8984375),ADFIX(0.8984375),ADFIX(0.8984375),ADFIX(0.8984375),ADFIX(1.19921875),ADFIX(1.59765625),ADFIX(2.0),ADFIX(2.3984375)};
-static const int quant_mul[16]= { 1, 3, 5, 7, 9, 11, 13, 15, -1, -3, -5, -7, -9, -11, -13, -15};
+static constexpr int TableQuant[8]={ADFIX(0.8984375),ADFIX(0.8984375),ADFIX(0.8984375),ADFIX(0.8984375),ADFIX(1.19921875),ADFIX(1.59765625),ADFIX(2.0),ADFIX(2.3984375)};
+static constexpr int quant_mul[16]= { 1, 3, 5, 7, 9, 11, 13, 15, -1, -3, -5, -7, -9, -11, -13, -15};
void aica_device::InitADPCM(int *PrevSignal, int *PrevQuant)
{
@@ -409,8 +409,6 @@ void aica_device::StopSlot(AICA_SLOT *slot,int keyoff)
slot->udata.data[0]&=~0x4000;
}
-#define log_base_2(n) (log((float) n)/log((float) 2))
-
void aica_device::Init()
{
int i;
@@ -922,7 +920,7 @@ void aica_device::w16(address_space &space,unsigned int addr,unsigned short val)
if (addr == 0x3bfe)
{
- aica_dsp_start(&m_DSP);
+ m_DSP.start();
}
}
else if(addr<0x4000)
@@ -1035,8 +1033,6 @@ unsigned short aica_device::r16(address_space &space, unsigned int addr)
}
-#define REVSIGN(v) ((~v)+1)
-
#ifdef UNUSED_FUNCTION
void aica_device::TimersAddTicks(int ticks)
{
@@ -1267,7 +1263,7 @@ void aica_device::DoMasterSamples(int nsamples)
sample=UpdateSlot(slot);
Enc=((TL(slot))<<0x0)|((IMXL(slot))<<0xd);
- aica_dsp_setsample(&m_DSP,(sample*m_LPANTABLE[Enc])>>(SHIFT-2),ISEL(slot),IMXL(slot));
+ m_DSP.setsample((sample*m_LPANTABLE[Enc])>>(SHIFT-2),ISEL(slot),IMXL(slot));
Enc=((TL(slot))<<0x0)|((DIPAN(slot))<<0x8)|((DISDL(slot))<<0xd);
{
smpl+=(sample*m_LPANTABLE[Enc])>>SHIFT;
@@ -1279,7 +1275,7 @@ void aica_device::DoMasterSamples(int nsamples)
}
// process the DSP
- aica_dsp_step(&m_DSP);
+ m_DSP.step();
// mix DSP output
for(i=0;i<16;++i)
@@ -1468,10 +1464,10 @@ READ16_MEMBER( aica_device::midi_out_r )
return val;
}
-const device_type AICA = device_creator<aica_device>;
+DEFINE_DEVICE_TYPE(AICA, aica_device, "aica", "AICA")
aica_device::aica_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AICA, "AICA", tag, owner, clock, "aica", __FILE__),
+ : device_t(mconfig, AICA, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_master(false),
m_roffset(0),
diff --git a/src/devices/sound/aica.h b/src/devices/sound/aica.h
index 744c80aea9f..9ec0c4734de 100644
--- a/src/devices/sound/aica.h
+++ b/src/devices/sound/aica.h
@@ -6,74 +6,25 @@
Sega/Yamaha AICA emulation
*/
-#ifndef __AICA_H__
-#define __AICA_H__
+#ifndef MAME_SOUND_AICA_H
+#define MAME_SOUND_AICA_H
-#include "aicadsp.h"
-
-#define MCFG_AICA_MASTER \
- aica_device::set_master(*device);
+#pragma once
-#define MCFG_AICA_ROFFSET(_offs) \
- aica_device::set_roffset(*device, _offs);
-
-#define MCFG_AICA_IRQ_CB(_devcb) \
- devcb = &aica_device::set_irq_callback(*device, DEVCB_##_devcb);
+#include "aicadsp.h"
-#define MCFG_AICA_MAIN_IRQ_CB(_devcb) \
- devcb = &aica_device::set_main_irq_callback(*device, DEVCB_##_devcb);
-enum AICA_STATE {AICA_ATTACK,AICA_DECAY1,AICA_DECAY2,AICA_RELEASE};
+#define MCFG_AICA_MASTER \
+ aica_device::set_master(*device);
-struct AICA_LFO_t
-{
- unsigned short phase;
- uint32_t phase_step;
- int *table;
- int *scale;
-};
+#define MCFG_AICA_ROFFSET(offs) \
+ aica_device::set_roffset(*device, (offs));
+#define MCFG_AICA_IRQ_CB(cb) \
+ devcb = &aica_device::set_irq_callback(*device, (DEVCB_##cb));
-struct AICA_EG_t
-{
- int volume; //
- AICA_STATE state;
- int step;
- //step vals
- int AR; //Attack
- int D1R; //Decay1
- int D2R; //Decay2
- int RR; //Release
-
- int DL; //Decay level
- uint8_t LPLINK;
-};
-
-struct AICA_SLOT
-{
- union
- {
- uint16_t data[0x40]; //only 0x1a bytes used
- uint8_t datab[0x80];
- } udata;
- uint8_t active; //this slot is currently playing
- uint8_t *base; //samples base address
- uint32_t prv_addr; // previous play address (for ADPCM)
- uint32_t cur_addr; //current play address (24.8)
- uint32_t nxt_addr; //next play address
- uint32_t step; //pitch step (24.8)
- uint8_t Backwards; //the wave is playing backwards
- AICA_EG_t EG; //Envelope
- AICA_LFO_t PLFO; //Phase LFO
- AICA_LFO_t ALFO; //Amplitude LFO
- int slot;
- int cur_sample; //current ADPCM sample
- int cur_quant; //current ADPCM step
- int curstep;
- int cur_lpquant, cur_lpsample, cur_lpstep;
- uint8_t *adbase, *adlpbase;
- uint8_t lpend;
-};
+#define MCFG_AICA_MAIN_IRQ_CB(cb) \
+ devcb = &aica_device::set_main_irq_callback(*device, (DEVCB_##cb));
class aica_device : public device_t,
public device_sound_interface
@@ -83,8 +34,8 @@ public:
static void set_master(device_t &device) { downcast<aica_device &>(device).m_master = true; }
static void set_roffset(device_t &device, int roffset) { downcast<aica_device &>(device).m_roffset = roffset; }
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<aica_device &>(device).m_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_main_irq_callback(device_t &device, _Object object) { return downcast<aica_device &>(device).m_main_irq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<aica_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_main_irq_callback(device_t &device, Object &&cb) { return downcast<aica_device &>(device).m_main_irq_cb.set_callback(std::forward<Object>(cb)); }
// AICA register access
DECLARE_READ16_MEMBER( read );
@@ -102,7 +53,60 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+
private:
+ enum AICA_STATE {AICA_ATTACK,AICA_DECAY1,AICA_DECAY2,AICA_RELEASE};
+
+ struct AICA_LFO_t
+ {
+ unsigned short phase;
+ uint32_t phase_step;
+ int *table;
+ int *scale;
+ };
+
+ struct AICA_EG_t
+ {
+ int volume; //
+ AICA_STATE state;
+ int step;
+ //step vals
+ int AR; //Attack
+ int D1R; //Decay1
+ int D2R; //Decay2
+ int RR; //Release
+
+ int DL; //Decay level
+ uint8_t LPLINK;
+ };
+
+ struct AICA_SLOT
+ {
+ union
+ {
+ uint16_t data[0x40]; //only 0x1a bytes used
+ uint8_t datab[0x80];
+ } udata;
+ uint8_t active; //this slot is currently playing
+ uint8_t *base; //samples base address
+ uint32_t prv_addr; // previous play address (for ADPCM)
+ uint32_t cur_addr; //current play address (24.8)
+ uint32_t nxt_addr; //next play address
+ uint32_t step; //pitch step (24.8)
+ uint8_t Backwards; //the wave is playing backwards
+ AICA_EG_t EG; //Envelope
+ AICA_LFO_t PLFO; //Phase LFO
+ AICA_LFO_t ALFO; //Amplitude LFO
+ int slot;
+ int cur_sample; //current ADPCM sample
+ int cur_quant; //current ADPCM step
+ int curstep;
+ int cur_lpquant, cur_lpsample, cur_lpstep;
+ uint8_t *adbase, *adlpbase;
+ uint8_t lpend;
+ };
+
+
unsigned char DecodeSCI(unsigned char irq);
void ResetInterrupts();
@@ -183,13 +187,13 @@ private:
emu_timer *m_timerA, *m_timerB, *m_timerC;
// DMA stuff
- struct{
+ struct {
uint32_t dmea;
uint16_t drga;
uint16_t dlg;
uint8_t dgate;
uint8_t ddir;
- }m_dma;
+ } m_dma;
int m_ARTABLE[64], m_DRTABLE[64];
diff --git a/src/devices/sound/aicadsp.cpp b/src/devices/sound/aicadsp.cpp
index e556e01a68e..8ede8c6822f 100644
--- a/src/devices/sound/aicadsp.cpp
+++ b/src/devices/sound/aicadsp.cpp
@@ -55,14 +55,14 @@ static int32_t UNPACK(uint16_t val)
return uval;
}
-void aica_dsp_init(AICADSP *DSP)
+void AICADSP::init()
{
- memset(DSP,0,sizeof(AICADSP));
- DSP->RBL=0x8000;
- DSP->Stopped=1;
+ memset(this,0,sizeof(*this));
+ RBL=0x8000;
+ Stopped=1;
}
-void aica_dsp_step(AICADSP *DSP)
+void AICADSP::step()
{
int32_t ACC=0; //26 bit
int32_t SHIFTED=0; //24 bit
@@ -77,19 +77,19 @@ void aica_dsp_step(AICADSP *DSP)
uint32_t ADRS_REG=0; //13 bit
int step;
- if(DSP->Stopped)
+ if(Stopped)
return;
- memset(DSP->EFREG,0,2*16);
+ memset(EFREG,0,2*16);
#if 0
int dump=0;
FILE *f=nullptr;
if(dump)
f=fopen("dsp.txt","wt");
#endif
- for(step=0;step</*128*/DSP->LastStep;++step)
+ for(step=0;step</*128*/LastStep;++step)
{
- uint16_t *IPtr=DSP->MPRO+step*8;
+ uint16_t *IPtr=MPRO+step*8;
// if(IPtr[0]==0 && IPtr[1]==0 && IPtr[2]==0 && IPtr[3]==0)
// break;
@@ -157,9 +157,9 @@ void aica_dsp_step(AICADSP *DSP)
//INPUTS RW
assert(IRA<0x32);
if(IRA<=0x1f)
- INPUTS=DSP->MEMS[IRA];
+ INPUTS=MEMS[IRA];
else if(IRA<=0x2F)
- INPUTS=DSP->MIXS[IRA-0x20]<<4; //MIXS is 20 bit
+ INPUTS=MIXS[IRA-0x20]<<4; //MIXS is 20 bit
else if(IRA<=0x31)
INPUTS=0;
@@ -170,7 +170,7 @@ void aica_dsp_step(AICADSP *DSP)
if(IWT)
{
- DSP->MEMS[IWA]=MEMVAL; //MEMVAL was selected in previous MRD
+ MEMS[IWA]=MEMVAL; //MEMVAL was selected in previous MRD
if(IRA==IWA)
INPUTS=MEMVAL;
}
@@ -183,7 +183,7 @@ void aica_dsp_step(AICADSP *DSP)
B=ACC;
else
{
- B=DSP->TEMP[(TRA+DSP->DEC)&0x7F];
+ B=TEMP[(TRA+DEC)&0x7F];
B<<=8;
B>>=8;
//if(B&0x00800000)
@@ -200,7 +200,7 @@ void aica_dsp_step(AICADSP *DSP)
X=INPUTS;
else
{
- X=DSP->TEMP[(TRA+DSP->DEC)&0x7F];
+ X=TEMP[(TRA+DEC)&0x7F];
X<<=8;
X>>=8;
//if(X&0x00800000)
@@ -211,7 +211,7 @@ void aica_dsp_step(AICADSP *DSP)
if(YSEL==0)
Y=FRC_REG;
else if(YSEL==1)
- Y=DSP->COEF[COEF<<1]>>3; //COEF is 16 bits
+ Y=this->COEF[COEF<<1]>>3; //COEF is 16 bits
else if(YSEL==2)
Y=(Y_REG>>11)&0x1FFF;
else if(YSEL==3)
@@ -266,7 +266,7 @@ void aica_dsp_step(AICADSP *DSP)
ACC=(int) v+B;
if(TWT)
- DSP->TEMP[(TWA+DSP->DEC)&0x7F]=SHIFTED;
+ TEMP[(TWA+DEC)&0x7F]=SHIFTED;
if(FRCL)
{
@@ -279,34 +279,34 @@ void aica_dsp_step(AICADSP *DSP)
if(MRD || MWT)
//if(0)
{
- ADDR=DSP->MADRS[MASA<<1];
+ ADDR=MADRS[MASA<<1];
if(!TABLE)
- ADDR+=DSP->DEC;
+ ADDR+=DEC;
if(ADREB)
ADDR+=ADRS_REG&0x0FFF;
if(NXADR)
ADDR++;
if(!TABLE)
- ADDR&=DSP->RBL-1;
+ ADDR&=RBL-1;
else
ADDR&=0xFFFF;
//ADDR<<=1;
- //ADDR+=DSP->RBP<<13;
- //MEMVAL=DSP->AICARAM[ADDR>>1];
- ADDR+=DSP->RBP<<10;
+ //ADDR+=RBP<<13;
+ //MEMVAL=AICARAM[ADDR>>1];
+ ADDR+=RBP<<10;
if(MRD && (step&1)) //memory only allowed on odd? DoA inserts NOPs on even
{
if(NOFL)
- MEMVAL=DSP->AICARAM[ADDR]<<8;
+ MEMVAL=AICARAM[ADDR]<<8;
else
- MEMVAL=UNPACK(DSP->AICARAM[ADDR]);
+ MEMVAL=UNPACK(AICARAM[ADDR]);
}
if(MWT && (step&1))
{
if(NOFL)
- DSP->AICARAM[ADDR]=SHIFTED>>8;
+ AICARAM[ADDR]=SHIFTED>>8;
else
- DSP->AICARAM[ADDR]=PACK(SHIFTED);
+ AICARAM[ADDR]=PACK(SHIFTED);
}
}
@@ -319,34 +319,33 @@ void aica_dsp_step(AICADSP *DSP)
}
if(EWT)
- DSP->EFREG[EWA]+=SHIFTED>>8;
+ EFREG[EWA]+=SHIFTED>>8;
}
- --DSP->DEC;
- memset(DSP->MIXS,0,4*16);
+ --DEC;
+ memset(MIXS,0,4*16);
// if(f)
// fclose(f);
}
-void aica_dsp_setsample(AICADSP *DSP,int32_t sample,int SEL,int MXL)
+void AICADSP::setsample(int32_t sample,int SEL,int MXL)
{
- //DSP->MIXS[SEL]+=sample<<(MXL+1)/*7*/;
- DSP->MIXS[SEL]+=sample;
+ //MIXS[SEL]+=sample<<(MXL+1)/*7*/;
+ MIXS[SEL]+=sample;
// if(MXL)
// int a=1;
}
-void aica_dsp_start(AICADSP *DSP)
+void AICADSP::start()
{
int i;
- DSP->Stopped=0;
+ Stopped=0;
for(i=127;i>=0;--i)
{
- uint16_t *IPtr=DSP->MPRO+i*8;
+ uint16_t *IPtr=MPRO+i*8;
if(IPtr[0]!=0 || IPtr[2]!=0 || IPtr[4]!=0 || IPtr[6]!=0)
break;
}
- DSP->LastStep=i+1;
-
+ LastStep=i+1;
}
diff --git a/src/devices/sound/aicadsp.h b/src/devices/sound/aicadsp.h
index 54c2b2ab21e..2ac022394cf 100644
--- a/src/devices/sound/aicadsp.h
+++ b/src/devices/sound/aicadsp.h
@@ -1,13 +1,18 @@
// license:BSD-3-Clause
// copyright-holders:ElSemi, Deunan Knute, R. Belmont
-#pragma once
+#ifndef MAME_SOUND_AICADSP_H
+#define MAME_SOUND_AICADSP_H
-#ifndef __AICADSP_H__
-#define __AICADSP_H__
+#pragma once
//the DSP Context
struct AICADSP
{
+ void init();
+ void setsample(int32_t sample, int32_t SEL, int32_t MXL);
+ void step();
+ void start();
+
//Config
uint16_t *AICARAM;
uint32_t AICARAM_LENGTH;
@@ -34,9 +39,4 @@ struct AICADSP
int LastStep;
};
-void aica_dsp_init(AICADSP *DSP);
-void aica_dsp_setsample(AICADSP *DSP, int32_t sample, int32_t SEL, int32_t MXL);
-void aica_dsp_step(AICADSP *DSP);
-void aica_dsp_start(AICADSP *DSP);
-
-#endif /* __AICADSP_H__ */
+#endif // MAME_SOUND_AICADSP_H
diff --git a/src/devices/sound/asc.cpp b/src/devices/sound/asc.cpp
index 7cce59b579f..97a9c8e3130 100644
--- a/src/devices/sound/asc.cpp
+++ b/src/devices/sound/asc.cpp
@@ -35,7 +35,7 @@
#include "asc.h"
// device type definition
-const device_type ASC = device_creator<asc_device>;
+DEFINE_DEVICE_TYPE(ASC, asc_device, "asc", "ASC")
//**************************************************************************
// LIVE DEVICE
@@ -46,10 +46,11 @@ const device_type ASC = device_creator<asc_device>;
//-------------------------------------------------
asc_device::asc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ASC, "ASC", tag, owner, clock, "asc", __FILE__),
- device_sound_interface(mconfig, *this),
- write_irq(*this),
- m_chip_type(0)
+ : device_t(mconfig, ASC, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , write_irq(*this)
+ , m_chip_type(asc_type::ASC)
+ , m_timer(nullptr)
{
}
@@ -59,7 +60,7 @@ asc_device::asc_device(const machine_config &mconfig, const char *tag, device_t
// the chip type
//-------------------------------------------------
-void asc_device::static_set_type(device_t &device, int type)
+void asc_device::static_set_type(device_t &device, asc_type type)
{
asc_device &asc = downcast<asc_device &>(device);
asc.m_chip_type = type;
@@ -170,7 +171,7 @@ void asc_device::sound_stream_update(sound_stream &stream, stream_sample_t **inp
switch (m_chip_type)
{
- case ASC_TYPE_SONORA:
+ case asc_type::SONORA:
if (m_fifo_cap_a < 0x200)
{
m_regs[R_FIFOSTAT-0x800] |= 0x4; // fifo less than half full
@@ -272,16 +273,16 @@ READ8_MEMBER( asc_device::read )
case R_VERSION:
switch (m_chip_type)
{
- case ASC_TYPE_ASC:
+ case asc_type::ASC:
return 0;
- case ASC_TYPE_V8:
- case ASC_TYPE_EAGLE:
- case ASC_TYPE_SPICE:
- case ASC_TYPE_VASP:
+ case asc_type::V8:
+ case asc_type::EAGLE:
+ case asc_type::SPICE:
+ case asc_type::VASP:
return 0xe8;
- case ASC_TYPE_SONORA:
+ case asc_type::SONORA:
return 0xbc;
default: // return the actual register value
@@ -292,10 +293,10 @@ READ8_MEMBER( asc_device::read )
case R_MODE:
switch (m_chip_type)
{
- case ASC_TYPE_V8:
- case ASC_TYPE_EAGLE:
- case ASC_TYPE_SPICE:
- case ASC_TYPE_VASP:
+ case asc_type::V8:
+ case asc_type::EAGLE:
+ case asc_type::SPICE:
+ case asc_type::VASP:
return 1;
default:
@@ -306,10 +307,10 @@ READ8_MEMBER( asc_device::read )
case R_CONTROL:
switch (m_chip_type)
{
- case ASC_TYPE_V8:
- case ASC_TYPE_EAGLE:
- case ASC_TYPE_SPICE:
- case ASC_TYPE_VASP:
+ case asc_type::V8:
+ case asc_type::EAGLE:
+ case asc_type::SPICE:
+ case asc_type::VASP:
return 1;
default:
@@ -318,7 +319,7 @@ READ8_MEMBER( asc_device::read )
break;
case R_FIFOSTAT:
- if (m_chip_type == ASC_TYPE_V8)
+ if (m_chip_type == asc_type::V8)
{
rv = 3;
}
diff --git a/src/devices/sound/asc.h b/src/devices/sound/asc.h
index c9bbc7ae868..d8dfa6e30f1 100644
--- a/src/devices/sound/asc.h
+++ b/src/devices/sound/asc.h
@@ -9,30 +9,10 @@
***************************************************************************/
-#pragma once
-
-#ifndef __ASC_H__
-#define __ASC_H__
-
-
+#ifndef MAME_SOUND_ASC_H
+#define MAME_SOUND_ASC_H
-
-//**************************************************************************
-// CONSTANTS
-//**************************************************************************
-
-// chip behavior types
-enum
-{
- ASC_TYPE_ASC = 0, // original discrete Apple Sound Chip
- ASC_TYPE_EASC = 1, // discrete Enhanced Apple Sound Chip
- ASC_TYPE_V8 = 2, // Subset of ASC included in the V8 ASIC (LC/LCII)
- ASC_TYPE_EAGLE = 3, // Subset of ASC included in the Eagle ASIC (Classic II)
- ASC_TYPE_SPICE = 4, // Subset of ASC included in the Spice ASIC (Color Classic)
- ASC_TYPE_SONORA = 5, // Subset of ASC included in the Sonora ASIC (LCIII)
- ASC_TYPE_VASP = 6, // Subset of ASC included in the VASP ASIC (IIvx/IIvi)
- ASC_TYPE_ARDBEG = 7 // Subset of ASC included in the Ardbeg ASIC (LC520)
-};
+#pragma once
@@ -51,10 +31,12 @@ enum
MCFG_IRQ_FUNC(_irqf)
#define MCFG_ASC_TYPE(_type) \
- asc_device::static_set_type(*device, _type);
+ asc_device::static_set_type(*device, asc_device::asc_type::_type);
+
#define MCFG_IRQ_FUNC(_irqf) \
devcb = &downcast<asc_device *>(device)->set_irqf(DEVCB_##_irqf);
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -64,25 +46,35 @@ enum
class asc_device : public device_t, public device_sound_interface
{
public:
+ // chip behavior types
+ enum class asc_type : uint8_t
+ {
+ ASC = 0, // original discrete Apple Sound Chip
+ EASC = 1, // discrete Enhanced Apple Sound Chip
+ V8 = 2, // Subset of ASC included in the V8 ASIC (LC/LCII)
+ EAGLE = 3, // Subset of ASC included in the Eagle ASIC (Classic II)
+ SPICE = 4, // Subset of ASC included in the Spice ASIC (Color Classic)
+ SONORA = 5, // Subset of ASC included in the Sonora ASIC (LCIII)
+ VASP = 6, // Subset of ASC included in the VASP ASIC (IIvx/IIvi)
+ ARDBEG = 7 // Subset of ASC included in the Ardbeg ASIC (LC520)
+ };
+
+
// construction/destruction
asc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration helpers
- static void static_set_type(device_t &device, int type);
+ static void static_set_type(device_t &device, asc_type type);
- template<class _write> devcb_base &set_irqf(_write wr)
+ template <class Write> devcb_base &set_irqf(Write &&wr)
{
- return write_irq.set_callback(wr);
+ return write_irq.set_callback(std::forward<Write>(wr));
}
- devcb_write_line write_irq;
-
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
- sound_stream *m_stream;
-
protected:
enum
{
@@ -111,8 +103,12 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ devcb_write_line write_irq;
+
+ sound_stream *m_stream;
+
// inline data
- uint8_t m_chip_type;
+ asc_type m_chip_type;
uint8_t m_fifo_a[0x400];
uint8_t m_fifo_b[0x400];
@@ -130,7 +126,6 @@ protected:
// device type definition
-extern const device_type ASC;
-
+DECLARE_DEVICE_TYPE(ASC, asc_device)
-#endif /* __ASC_H__ */
+#endif // MAME_SOUND_ASC_H
diff --git a/src/devices/sound/astrocde.cpp b/src/devices/sound/astrocde.cpp
index b5d23dcb751..1e8349bbd9d 100644
--- a/src/devices/sound/astrocde.cpp
+++ b/src/devices/sound/astrocde.cpp
@@ -46,7 +46,7 @@
// device type definition
-const device_type ASTROCADE = device_creator<astrocade_device>;
+DEFINE_DEVICE_TYPE(ASTROCADE, astrocade_device, "astrocade", "Astrocade")
//**************************************************************************
@@ -58,7 +58,7 @@ const device_type ASTROCADE = device_creator<astrocade_device>;
//-------------------------------------------------
astrocade_device::astrocade_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ASTROCADE, "Astrocade", tag, owner, clock, "astrocade", __FILE__),
+ : device_t(mconfig, ASTROCADE, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_master_count(0),
diff --git a/src/devices/sound/astrocde.h b/src/devices/sound/astrocde.h
index 2feccd84437..c24c51d70ec 100644
--- a/src/devices/sound/astrocde.h
+++ b/src/devices/sound/astrocde.h
@@ -1,19 +1,20 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles,Frank Palazzolo
-#pragma once
+#ifndef MAME_SOUND_ASTROCDE_H
+#define MAME_SOUND_ASTROCDE_H
-#ifndef __ASTROCDE_H__
-#define __ASTROCDE_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_ASTROCADE_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, ASTROCADE, _clock)
-#define MCFG_ASTROCADE_REPLACE(_tag, _clock) \
- MCFG_DEVICE_REPLACE(_tag, ASTROCADE, _clock)
+#define MCFG_ASTROCADE_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), ASTROCADE, (clock))
+
+#define MCFG_ASTROCADE_REPLACE(tag, clock) \
+ MCFG_DEVICE_REPLACE((tag), ASTROCADE, (clock))
@@ -23,12 +24,10 @@
// ======================> astrocade_device
-class astrocade_device : public device_t,
- public device_sound_interface
+class astrocade_device : public device_t, public device_sound_interface
{
public:
astrocade_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~astrocade_device() { }
protected:
// device-level overrides
@@ -44,7 +43,6 @@ public:
private:
void state_save_register();
-private:
sound_stream *m_stream; /* sound stream */
uint8_t m_reg[8]; /* 8 control registers */
@@ -67,7 +65,6 @@ private:
uint8_t m_bitswap[256]; /* bitswap table */
};
-extern const device_type ASTROCADE;
-
+DECLARE_DEVICE_TYPE(ASTROCADE, astrocade_device)
-#endif /* __ASTROCDE_H__ */
+#endif // MAME_SOUND_ASTROCDE_H
diff --git a/src/devices/sound/awacs.cpp b/src/devices/sound/awacs.cpp
index b2d405668ea..0c9c5417ffc 100644
--- a/src/devices/sound/awacs.cpp
+++ b/src/devices/sound/awacs.cpp
@@ -14,7 +14,8 @@
#include "awacs.h"
// device type definition
-const device_type AWACS = device_creator<awacs_device>;
+DEFINE_DEVICE_TYPE(AWACS, awacs_device, "awacs", "AWACS")
+
//**************************************************************************
// LIVE DEVICE
@@ -25,8 +26,12 @@ const device_type AWACS = device_creator<awacs_device>;
//-------------------------------------------------
awacs_device::awacs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AWACS, "AWACS", tag, owner, clock, "awacs", __FILE__),
- device_sound_interface(mconfig, *this), m_stream(nullptr), m_play_ptr(0), m_buffer_size(0), m_buffer_num(0), m_playback_enable(false), m_dma_space(nullptr), m_dma_offset_0(0), m_dma_offset_1(0), m_timer(nullptr)
+ : device_t(mconfig, AWACS, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_play_ptr(0), m_buffer_size(0), m_buffer_num(0), m_playback_enable(false)
+ , m_dma_space(nullptr), m_dma_offset_0(0), m_dma_offset_1(0)
+ , m_timer(nullptr)
{
}
diff --git a/src/devices/sound/awacs.h b/src/devices/sound/awacs.h
index a18a23f4a54..d0dd5cb2441 100644
--- a/src/devices/sound/awacs.h
+++ b/src/devices/sound/awacs.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_AWACS_H
+#define MAME_SOUND_AWACS_H
-#ifndef __AWACS_H__
-#define __AWACS_H__
+#pragma once
@@ -47,8 +47,6 @@ public:
void set_dma_base(address_space &space, int offset0, int offset1);
- sound_stream *m_stream;
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -57,6 +55,8 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ sound_stream *m_stream;
+
// inline data
uint8_t m_regs[0x100];
@@ -71,7 +71,6 @@ protected:
// device type definition
-extern const device_type AWACS;
-
+DECLARE_DEVICE_TYPE(AWACS, awacs_device)
-#endif /* __AWACS_H__ */
+#endif // MAME_SOUND_AWACS_H
diff --git a/src/devices/sound/ay8910.cpp b/src/devices/sound/ay8910.cpp
index 4583c11a591..b0eaabbcc69 100644
--- a/src/devices/sound/ay8910.cpp
+++ b/src/devices/sound/ay8910.cpp
@@ -426,20 +426,20 @@ static const ay8910_device::mosfet_param ay8910_mosfet_param =
4.9,
16,
{
- 0.00076,
- 0.80536,
- 1.13106,
- 1.65952,
- 2.42261,
- 3.60536,
- 5.34893,
- 8.96871,
- 10.97202,
- 19.32370,
- 29.01935,
- 38.82026,
- 55.50539,
- 78.44395,
+ 0.00076,
+ 0.80536,
+ 1.13106,
+ 1.65952,
+ 2.42261,
+ 3.60536,
+ 5.34893,
+ 8.96871,
+ 10.97202,
+ 19.32370,
+ 29.01935,
+ 38.82026,
+ 55.50539,
+ 78.44395,
109.49257,
153.72985,
}
@@ -580,7 +580,7 @@ uint16_t ay8910_device::mix_3D()
{
int indx = 0, chan;
- for (chan = 0; chan < AY8910_NUM_CHANNELS; chan++)
+ for (chan = 0; chan < NUM_CHANNELS; chan++)
if (TONE_ENVELOPE(chan) != 0)
{
if (type() == AY8914) // AY8914 Has a two bit tone_envelope field
@@ -706,13 +706,13 @@ void ay8910_device::ay8910_write_reg(int r, int v)
void ay8910_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
- stream_sample_t *buf[AY8910_NUM_CHANNELS];
+ stream_sample_t *buf[NUM_CHANNELS];
int chan;
buf[0] = outputs[0];
buf[1] = nullptr;
buf[2] = nullptr;
- if (m_streams == AY8910_NUM_CHANNELS)
+ if (m_streams == NUM_CHANNELS)
{
buf[1] = outputs[1];
buf[2] = outputs[2];
@@ -721,7 +721,7 @@ void ay8910_device::sound_stream_update(sound_stream &stream, stream_sample_t **
/* hack to prevent us from hanging when starting filtered outputs */
if (!m_ready)
{
- for (chan = 0; chan < AY8910_NUM_CHANNELS; chan++)
+ for (chan = 0; chan < NUM_CHANNELS; chan++)
if (buf[chan] != nullptr)
memset(buf[chan], 0, samples * sizeof(*buf[chan]));
}
@@ -736,7 +736,7 @@ void ay8910_device::sound_stream_update(sound_stream &stream, stream_sample_t **
/* buffering loop */
while (samples)
{
- for (chan = 0; chan < AY8910_NUM_CHANNELS; chan++)
+ for (chan = 0; chan < NUM_CHANNELS; chan++)
{
m_count[chan]++;
if (m_count[chan] >= TONE_PERIOD(chan))
@@ -766,7 +766,7 @@ void ay8910_device::sound_stream_update(sound_stream &stream, stream_sample_t **
}
}
- for (chan = 0; chan < AY8910_NUM_CHANNELS; chan++)
+ for (chan = 0; chan < NUM_CHANNELS; chan++)
{
m_vol_enabled[chan] = (m_output[chan] | TONE_ENABLEQ(chan)) & (NOISE_OUTPUT() | NOISE_ENABLEQ(chan));
}
@@ -807,7 +807,7 @@ void ay8910_device::sound_stream_update(sound_stream &stream, stream_sample_t **
if (m_streams == 3)
{
- for (chan = 0; chan < AY8910_NUM_CHANNELS; chan++)
+ for (chan = 0; chan < NUM_CHANNELS; chan++)
if (TONE_ENVELOPE(chan) != 0)
{
if (type() == AY8914) // AY8914 Has a two bit tone_envelope field
@@ -848,15 +848,15 @@ void ay8910_device::build_mixer_table()
if (m_type != PSG_TYPE_AY)
fatalerror("AY8910_RESISTOR_OUTPUT currently only supported for AY8910 devices.");
- for (chan=0; chan < AY8910_NUM_CHANNELS; chan++)
+ for (chan=0; chan < NUM_CHANNELS; chan++)
{
build_mosfet_resistor_table(ay8910_mosfet_param, m_res_load[chan], m_vol_table[chan]);
build_mosfet_resistor_table(ay8910_mosfet_param, m_res_load[chan], m_env_table[chan]);
}
}
- else if (m_streams == AY8910_NUM_CHANNELS)
+ else if (m_streams == NUM_CHANNELS)
{
- for (chan=0; chan < AY8910_NUM_CHANNELS; chan++)
+ for (chan=0; chan < NUM_CHANNELS; chan++)
{
build_single_table(m_res_load[chan], m_par, normalize, m_vol_table[chan], m_zero_is_off);
build_single_table(m_res_load[chan], m_par_env, normalize, m_env_table[chan], 0);
@@ -1188,53 +1188,16 @@ WRITE8_MEMBER( ay8914_device::write )
-const device_type AY8910 = device_creator<ay8910_device>;
+DEFINE_DEVICE_TYPE(AY8910, ay8910_device, "ay8910", "AY-3-8910A")
ay8910_device::ay8910_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AY8910, "AY-3-8910A", tag, owner, clock, "ay8910", __FILE__),
- device_sound_interface(mconfig, *this),
- m_type(PSG_TYPE_AY),
- m_streams(3),
- m_ioports(2),
- m_ready(0),
- m_channel(nullptr),
- m_active(false),
- m_register_latch(0),
- m_last_enable(0),
- m_prescale_noise(0),
- m_count_noise(0),
- m_count_env(0),
- m_env_step(0),
- m_env_volume(0),
- m_hold(0),
- m_alternate(0),
- m_attack(0),
- m_holding(0),
- m_rng(0),
- m_env_step_mask(0x0f),
- m_step(2),
- m_zero_is_off(1),
- m_par(&ay8910_param),
- m_par_env(&ay8910_param),
- m_flags(AY8910_LEGACY_OUTPUT),
- m_port_a_read_cb(*this),
- m_port_b_read_cb(*this),
- m_port_a_write_cb(*this),
- m_port_b_write_cb(*this)
+ : ay8910_device(mconfig, AY8910, tag, owner, clock, PSG_TYPE_AY, 3, 2)
{
- memset(&m_regs,0,sizeof(m_regs));
- memset(&m_count,0,sizeof(m_count));
- memset(&m_output,0,sizeof(m_output));
- memset(&m_vol_enabled,0,sizeof(m_vol_enabled));
- memset(&m_vol_table,0,sizeof(m_vol_table));
- memset(&m_env_table,0,sizeof(m_env_table));
- memset(&m_vol3d_table,0,sizeof(m_vol3d_table));
- m_res_load[0] = m_res_load[1] = m_res_load[2] = 1000; //Default values for resistor loads
}
-ay8910_device::ay8910_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,
- psg_type_t psg_type, int streams, int ioports, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ay8910_device::ay8910_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock,
+ psg_type_t psg_type, int streams, int ioports)
+ : device_t(mconfig, type, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_type(psg_type),
m_streams(streams),
@@ -1298,65 +1261,65 @@ void ay8910_device::set_type(psg_type_t psg_type)
}
}
-const device_type AY8912 = device_creator<ay8912_device>;
+DEFINE_DEVICE_TYPE(AY8912, ay8912_device, "ay8912", "AY-3-8912A")
ay8912_device::ay8912_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, AY8912, "AY-3-8912A", tag, owner, clock, PSG_TYPE_AY, 3, 1, "ay8912", __FILE__)
+ : ay8910_device(mconfig, AY8912, tag, owner, clock, PSG_TYPE_AY, 3, 1)
{
}
-const device_type AY8913 = device_creator<ay8913_device>;
+DEFINE_DEVICE_TYPE(AY8913, ay8913_device, "ay8913", "AY-3-8913A")
ay8913_device::ay8913_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, AY8913, "AY-3-8913A", tag, owner, clock, PSG_TYPE_AY, 3, 0, "ay8913", __FILE__)
+ : ay8910_device(mconfig, AY8913, tag, owner, clock, PSG_TYPE_AY, 3, 0)
{
}
-const device_type AY8914 = device_creator<ay8914_device>;
+DEFINE_DEVICE_TYPE(AY8914, ay8914_device, "ay8914", "AY-3-8914A")
ay8914_device::ay8914_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, AY8914, "AY-3-8914", tag, owner, clock, PSG_TYPE_AY, 3, 2, "ay8914", __FILE__)
+ : ay8910_device(mconfig, AY8914, tag, owner, clock, PSG_TYPE_AY, 3, 2)
{
}
-const device_type AY8930 = device_creator<ay8930_device>;
+DEFINE_DEVICE_TYPE(AY8930, ay8930_device, "ay8930", "AY-3-8930A")
ay8930_device::ay8930_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, AY8930, "AY8930", tag, owner, clock, PSG_TYPE_AY, 3, 2, "ay8930", __FILE__)
+ : ay8910_device(mconfig, AY8930, tag, owner, clock, PSG_TYPE_AY, 3, 2)
{
}
-const device_type YM2149 = device_creator<ym2149_device>;
+DEFINE_DEVICE_TYPE(YM2149, ym2149_device, "ym2149", "YM2149")
ym2149_device::ym2149_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, YM2149, "YM2149", tag, owner, clock, PSG_TYPE_YM, 3, 2, "ym2149", __FILE__)
+ : ay8910_device(mconfig, YM2149, tag, owner, clock, PSG_TYPE_YM, 3, 2)
{
}
-const device_type YM3439 = device_creator<ym3439_device>;
+DEFINE_DEVICE_TYPE(YM3439, ym3439_device, "ym3439", "YM3439")
ym3439_device::ym3439_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, YM3439, "YM3439", tag, owner, clock, PSG_TYPE_YM, 3, 2, "ym3429", __FILE__)
+ : ay8910_device(mconfig, YM3439, tag, owner, clock, PSG_TYPE_YM, 3, 2)
{
}
-const device_type YMZ284 = device_creator<ymz284_device>;
+DEFINE_DEVICE_TYPE(YMZ284, ymz284_device, "ymz284", "YMZ284")
ymz284_device::ymz284_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, YMZ284, "YMZ284", tag, owner, clock, PSG_TYPE_YM, 1, 0, "ymz284", __FILE__)
+ : ay8910_device(mconfig, YMZ284, tag, owner, clock, PSG_TYPE_YM, 1, 0)
{
}
-const device_type YMZ294 = device_creator<ymz294_device>;
+DEFINE_DEVICE_TYPE(YMZ294, ymz294_device, "ymz294", "YMZ294")
ymz294_device::ymz294_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ay8910_device(mconfig, YMZ294, "YMZ294", tag, owner, clock, PSG_TYPE_YM, 1, 0, "ymz294", __FILE__)
+ : ay8910_device(mconfig, YMZ294, tag, owner, clock, PSG_TYPE_YM, 1, 0)
{
}
diff --git a/src/devices/sound/ay8910.h b/src/devices/sound/ay8910.h
index c4ea3f0f603..44c04bf36b0 100644
--- a/src/devices/sound/ay8910.h
+++ b/src/devices/sound/ay8910.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Couriersud
-#pragma once
+#ifndef MAME_SOUND_AY8910_H
+#define MAME_SOUND_AY8910_H
-#ifndef __AY8910_H__
-#define __AY8910_H__
+#pragma once
/*
@@ -67,9 +67,6 @@ OKI M5255, Winbond WF19054, JFC 95101, File KC89C72, Toshiba T7766A : difference
#define YM2149_PIN26_LOW (0x10)
-#define AY8910_NUM_CHANNELS 3
-
-
#define MCFG_AY8910_OUTPUT_TYPE(_flag) \
ay8910_device::set_flags(*device, _flag);
@@ -101,17 +98,15 @@ public:
// construction/destruction
ay8910_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ay8910_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner,
- uint32_t clock, psg_type_t psg_type, int streams, int ioports, const char *shortname, const char *source);
// static configuration helpers
static void set_flags(device_t &device, int flags) { downcast<ay8910_device &>(device).m_flags = flags; }
static void set_psg_type(device_t &device, psg_type_t psg_type) { downcast<ay8910_device &>(device).set_type(psg_type); }
static void set_resistors_load(device_t &device, int res_load0, int res_load1, int res_load2) { downcast<ay8910_device &>(device).m_res_load[0] = res_load0; downcast<ay8910_device &>(device).m_res_load[1] = res_load1; downcast<ay8910_device &>(device).m_res_load[2] = res_load2; }
- template<class _Object> static devcb_base &set_port_a_read_callback(device_t &device, _Object object) { return downcast<ay8910_device &>(device).m_port_a_read_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_port_b_read_callback(device_t &device, _Object object) { return downcast<ay8910_device &>(device).m_port_b_read_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_port_a_write_callback(device_t &device, _Object object) { return downcast<ay8910_device &>(device).m_port_a_write_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_port_b_write_callback(device_t &device, _Object object) { return downcast<ay8910_device &>(device).m_port_b_write_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_port_a_read_callback(device_t &device, Object &&cb) { return downcast<ay8910_device &>(device).m_port_a_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port_b_read_callback(device_t &device, Object &&cb) { return downcast<ay8910_device &>(device).m_port_b_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port_a_write_callback(device_t &device, Object &&cb) { return downcast<ay8910_device &>(device).m_port_a_write_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port_b_write_callback(device_t &device, Object &&cb) { return downcast<ay8910_device &>(device).m_port_b_write_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( address_w );
@@ -148,11 +143,16 @@ public:
double m_Kn[32];
};
+ // internal interface for PSG component of YM device
+ // FIXME: these should be private, but vector06 accesses them directly
void ay8910_write_ym(int addr, uint8_t data);
uint8_t ay8910_read_ym();
void ay8910_reset_ym();
protected:
+ ay8910_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner,
+ uint32_t clock, psg_type_t psg_type, int streams, int ioports);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -161,7 +161,15 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ // trampolines for callbacks from fm.cpp
+ static void psg_set_clock(device_t *device, int clock) { downcast<ay8910_device *>(device)->ay_set_clock(clock); }
+ static void psg_write(device_t *device, int address, int data) { downcast<ay8910_device *>(device)->ay8910_write_ym(address, data); }
+ static int psg_read(device_t *device) { return downcast<ay8910_device *>(device)->ay8910_read_ym(); }
+ static void psg_reset(device_t *device) { downcast<ay8910_device *>(device)->ay8910_reset_ym(); }
+
private:
+ static constexpr unsigned NUM_CHANNELS = 3;
+
// internal helpers
void set_type(psg_type_t psg_type);
inline uint16_t mix_3D();
@@ -179,8 +187,8 @@ private:
int32_t m_register_latch;
uint8_t m_regs[16];
int32_t m_last_enable;
- int32_t m_count[AY8910_NUM_CHANNELS];
- uint8_t m_output[AY8910_NUM_CHANNELS];
+ int32_t m_count[NUM_CHANNELS];
+ uint8_t m_output[NUM_CHANNELS];
uint8_t m_prescale_noise;
int32_t m_count_noise;
int32_t m_count_env;
@@ -192,11 +200,11 @@ private:
/* init parameters ... */
int m_step;
int m_zero_is_off;
- uint8_t m_vol_enabled[AY8910_NUM_CHANNELS];
+ uint8_t m_vol_enabled[NUM_CHANNELS];
const ay_ym_param *m_par;
const ay_ym_param *m_par_env;
- int32_t m_vol_table[AY8910_NUM_CHANNELS][16];
- int32_t m_env_table[AY8910_NUM_CHANNELS][32];
+ int32_t m_vol_table[NUM_CHANNELS][16];
+ int32_t m_env_table[NUM_CHANNELS][32];
int32_t m_vol3d_table[8*32*32*32];
int m_flags; /* Flags */
int m_res_load[3]; /* Load on channel in ohms */
@@ -206,7 +214,7 @@ private:
devcb_write8 m_port_b_write_cb;
};
-extern const device_type AY8910;
+DECLARE_DEVICE_TYPE(AY8910, ay8910_device)
class ay8912_device : public ay8910_device
{
@@ -214,7 +222,7 @@ public:
ay8912_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type AY8912;
+DECLARE_DEVICE_TYPE(AY8912, ay8912_device)
class ay8913_device : public ay8910_device
{
@@ -222,7 +230,7 @@ public:
ay8913_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type AY8913;
+DECLARE_DEVICE_TYPE(AY8913, ay8913_device)
class ay8914_device : public ay8910_device
{
@@ -234,7 +242,7 @@ public:
DECLARE_WRITE8_MEMBER( write );
};
-extern const device_type AY8914;
+DECLARE_DEVICE_TYPE(AY8914, ay8914_device)
class ay8930_device : public ay8910_device
{
@@ -242,7 +250,7 @@ public:
ay8930_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type AY8930;
+DECLARE_DEVICE_TYPE(AY8930, ay8930_device)
class ym2149_device : public ay8910_device
{
@@ -250,7 +258,7 @@ public:
ym2149_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type YM2149;
+DECLARE_DEVICE_TYPE(YM2149, ym2149_device)
class ym3439_device : public ay8910_device
{
@@ -258,7 +266,7 @@ public:
ym3439_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type YM3439;
+DECLARE_DEVICE_TYPE(YM3439, ym3439_device)
class ymz284_device : public ay8910_device
{
@@ -266,7 +274,7 @@ public:
ymz284_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type YMZ284;
+DECLARE_DEVICE_TYPE(YMZ284, ymz284_device)
class ymz294_device : public ay8910_device
{
@@ -274,7 +282,7 @@ public:
ymz294_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type YMZ294;
+DECLARE_DEVICE_TYPE(YMZ294, ymz294_device)
-#endif /* __AY8910_H__ */
+#endif // MAME_DEVICES_SOUND_AY8910_H
diff --git a/src/devices/sound/beep.cpp b/src/devices/sound/beep.cpp
index 1b986fa6c61..6212bed7915 100644
--- a/src/devices/sound/beep.cpp
+++ b/src/devices/sound/beep.cpp
@@ -20,7 +20,7 @@
// device type definition
-const device_type BEEP = device_creator<beep_device>;
+DEFINE_DEVICE_TYPE(BEEP, beep_device, "beep", "Beep")
//**************************************************************************
@@ -32,11 +32,11 @@ const device_type BEEP = device_creator<beep_device>;
//-------------------------------------------------
beep_device::beep_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, BEEP, "Beep", tag, owner, clock, "beep", __FILE__),
- device_sound_interface(mconfig, *this),
- m_stream(nullptr),
- m_enable(0),
- m_frequency(clock)
+ : device_t(mconfig, BEEP, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_enable(0)
+ , m_frequency(clock)
{
}
diff --git a/src/devices/sound/beep.h b/src/devices/sound/beep.h
index fe946cd0d2f..388d0fa6261 100644
--- a/src/devices/sound/beep.h
+++ b/src/devices/sound/beep.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Kevin Thacker
-#pragma once
+#ifndef MAME_SOUND_BEEP_H
+#define MAME_SOUND_BEEP_H
-#ifndef __BEEP_H__
-#define __BEEP_H__
+#pragma once
//**************************************************************************
// TYPE DEFINITIONS
@@ -16,7 +16,6 @@ class beep_device : public device_t,
{
public:
beep_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~beep_device() { }
protected:
// device-level overrides
@@ -37,7 +36,6 @@ private:
int16_t m_signal; /* current signal */
};
-extern const device_type BEEP;
-
+DECLARE_DEVICE_TYPE(BEEP, beep_device)
-#endif /* __BEEP_H__ */
+#endif // MAME_SOUND_BEEP_H
diff --git a/src/devices/sound/bsmt2000.cpp b/src/devices/sound/bsmt2000.cpp
index b45a2e40f3f..c1c3937bf46 100644
--- a/src/devices/sound/bsmt2000.cpp
+++ b/src/devices/sound/bsmt2000.cpp
@@ -18,7 +18,7 @@
// device type definition
-const device_type BSMT2000 = device_creator<bsmt2000_device>;
+DEFINE_DEVICE_TYPE(BSMT2000, bsmt2000_device, "bsmt2000", "BSMT2000")
//**************************************************************************
@@ -26,14 +26,14 @@ const device_type BSMT2000 = device_creator<bsmt2000_device>;
//**************************************************************************
// program map for the DSP (points to internal ROM)
-static ADDRESS_MAP_START( tms_program_map, AS_PROGRAM, 16, bsmt2000_device)
+static ADDRESS_MAP_START(tms_program_map, AS_PROGRAM, 16, bsmt2000_device)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000, 0xfff) AM_ROM
ADDRESS_MAP_END
// I/O map for the DSP
-static ADDRESS_MAP_START( tms_io_map, AS_IO, 16, bsmt2000_device)
+static ADDRESS_MAP_START(tms_io_map, AS_IO, 16, bsmt2000_device)
AM_RANGE(0, 0) AM_READWRITE(tms_register_r, tms_rom_addr_w)
AM_RANGE(1, 1) AM_READWRITE(tms_data_r, tms_rom_bank_w)
AM_RANGE(2, 2) AM_READ(tms_rom_r)
@@ -70,19 +70,19 @@ ROM_END
//-------------------------------------------------
bsmt2000_device::bsmt2000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, BSMT2000, "BSMT2000", tag, owner, clock, "bsmt2000", __FILE__),
- device_sound_interface(mconfig, *this),
- device_rom_interface(mconfig, *this, 32),
- m_ready_callback(nullptr),
- m_stream(nullptr),
- m_cpu(nullptr),
- m_register_select(0),
- m_write_data(0),
- m_rom_address(0),
- m_rom_bank(0),
- m_left_data(0),
- m_right_data(0),
- m_write_pending(false)
+ : device_t(mconfig, BSMT2000, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , device_rom_interface(mconfig, *this, 32)
+ , m_ready_callback()
+ , m_stream(nullptr)
+ , m_cpu(*this, "bsmt2000")
+ , m_register_select(0)
+ , m_write_data(0)
+ , m_rom_address(0)
+ , m_rom_bank(0)
+ , m_left_data(0)
+ , m_right_data(0)
+ , m_write_pending(false)
{
}
@@ -92,10 +92,10 @@ bsmt2000_device::bsmt2000_device(const machine_config &mconfig, const char *tag,
// helper to set the ready callback
//-------------------------------------------------
-void bsmt2000_device::static_set_ready_callback(device_t &device, ready_callback callback)
+void bsmt2000_device::static_set_ready_callback(device_t &device, ready_callback &&callback)
{
bsmt2000_device &bsmt = downcast<bsmt2000_device &>(device);
- bsmt.m_ready_callback = callback;
+ bsmt.m_ready_callback = std::move(callback);
}
@@ -127,8 +127,7 @@ machine_config_constructor bsmt2000_device::device_mconfig_additions() const
void bsmt2000_device::device_start()
{
- // find our CPU
- m_cpu = subdevice<tms32015_device>("bsmt2000");
+ m_ready_callback.bind_relative_to(*owner());
// create the stream; BSMT typically runs at 24MHz and writes to a DAC, so
// in theory we should generate a 24MHz stream, but that's certainly overkill
@@ -269,8 +268,8 @@ READ16_MEMBER( bsmt2000_device::tms_data_r )
{
// also implicitly clear the write pending flag
m_write_pending = false;
- if (m_ready_callback != nullptr)
- (*m_ready_callback)(*this);
+ if (!m_ready_callback.isnull())
+ m_ready_callback();
return m_write_data;
}
diff --git a/src/devices/sound/bsmt2000.h b/src/devices/sound/bsmt2000.h
index c23ce6daf6a..9a7494777c5 100644
--- a/src/devices/sound/bsmt2000.h
+++ b/src/devices/sound/bsmt2000.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_BSMT2000_H
+#define MAME_SOUND_BSMT2000_H
-#ifndef __BSMT2000_H__
-#define __BSMT2000_H__
+#pragma once
#include "cpu/tms32010/tms32010.h"
@@ -24,8 +24,8 @@
MCFG_DEVICE_ADD(_tag, BSMT2000, _clock)
#define MCFG_BSMT2000_REPLACE(_tag, _clock) \
MCFG_DEVICE_REPLACE(_tag, BSMT2000, _clock)
-#define MCFG_BSMT2000_READY_CALLBACK(_callback) \
- bsmt2000_device::static_set_ready_callback(*device, _callback);
+#define MCFG_BSMT2000_READY_CALLBACK(_class, _method) \
+ bsmt2000_device::static_set_ready_callback(*device, bsmt2000_device::ready_callback(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
//**************************************************************************
@@ -39,14 +39,14 @@ class bsmt2000_device : public device_t,
public device_sound_interface,
public device_rom_interface
{
- typedef void (*ready_callback)(bsmt2000_device &device);
-
public:
+ typedef device_delegate<void ()> ready_callback;
+
// construction/destruction
bsmt2000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration helpers
- static void static_set_ready_callback(device_t &device, ready_callback callback);
+ static void static_set_ready_callback(device_t &device, ready_callback &&callback);
// public interface
uint16_t read_status();
@@ -92,7 +92,7 @@ private:
// internal state
sound_stream * m_stream;
- tms32015_device * m_cpu;
+ required_device<tms32015_device> m_cpu;
uint16_t m_register_select;
uint16_t m_write_data;
uint16_t m_rom_address;
@@ -104,7 +104,6 @@ private:
// device type definition
-extern const device_type BSMT2000;
-
+DECLARE_DEVICE_TYPE(BSMT2000, bsmt2000_device)
-#endif /* __BSMT2000_H__ */
+#endif // MAME_SOUND_BSMT2000_H
diff --git a/src/devices/sound/c140.cpp b/src/devices/sound/c140.cpp
index 42bebcf452d..826f8cc5036 100644
--- a/src/devices/sound/c140.cpp
+++ b/src/devices/sound/c140.cpp
@@ -67,7 +67,7 @@ struct voice_registers
// device type definition
-const device_type C140 = device_creator<c140_device>;
+DEFINE_DEVICE_TYPE(C140, c140_device, "c140", "Namco C140")
//**************************************************************************
@@ -87,11 +87,11 @@ static inline int limit(int32_t in)
//-------------------------------------------------
c140_device::c140_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, C140, "C140", tag, owner, clock, "c140", __FILE__)
+ : device_t(mconfig, C140, tag, owner, clock)
, device_sound_interface(mconfig, *this)
, m_sample_rate(0)
, m_stream(nullptr)
- , m_banking_type(0)
+ , m_banking_type(C140_TYPE::SYSTEM2)
, m_mixer_buffer_left(nullptr)
, m_mixer_buffer_right(nullptr)
, m_baserate(0)
@@ -128,7 +128,7 @@ void c140_device::device_start()
memset(m_REG,0,sizeof(m_REG));
- for(int i = 0; i < C140_MAX_VOICE; i++)
+ for(int i = 0; i < MAX_VOICE; i++)
{
init_voice(&m_voi[i]);
}
@@ -139,7 +139,7 @@ void c140_device::device_start()
save_item(NAME(m_REG));
- for (int i = 0; i < C140_MAX_VOICE; i++)
+ for (int i = 0; i < MAX_VOICE; i++)
{
save_item(NAME(m_voi[i].ptoffset), i);
save_item(NAME(m_voi[i].pos), i);
@@ -187,7 +187,7 @@ void c140_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
memset(m_mixer_buffer_right.get(), 0, samples * sizeof(int16_t));
/* get the number of voices to update */
- voicecnt = (m_banking_type == C140_TYPE_ASIC219) ? 16 : 24;
+ voicecnt = (m_banking_type == C140_TYPE::ASIC219) ? 16 : 24;
//--- audio update
for( i=0;i<voicecnt;i++ )
@@ -206,8 +206,8 @@ void c140_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
delta=(long)((float)frequency * pbase);
/* Calculate left/right channel volumes */
- lvol=(vreg->volume_left*32)/C140_MAX_VOICE; //32ch -> 24ch
- rvol=(vreg->volume_right*32)/C140_MAX_VOICE;
+ lvol=(vreg->volume_left*32)/MAX_VOICE; //32ch -> 24ch
+ rvol=(vreg->volume_right*32)/MAX_VOICE;
/* Set mixer outputs base pointers */
lmix = m_mixer_buffer_left.get();
@@ -229,7 +229,7 @@ void c140_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
dltdt=v->dltdt;
/* Switch on data type - compressed PCM is only for C140 */
- if ((v->mode&8) && (m_banking_type != C140_TYPE_ASIC219))
+ if ((v->mode&8) && (m_banking_type != C140_TYPE::ASIC219))
{
//compressed PCM (maybe correct...)
/* Loop for enough to fill sample buffer as requested */
@@ -305,7 +305,7 @@ void c140_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
{
prevdt=lastdt;
- if (m_banking_type == C140_TYPE_ASIC219)
+ if (m_banking_type == C140_TYPE::ASIC219)
{
lastdt = pSampleData[BYTE_XOR_BE(pos)];
@@ -376,7 +376,7 @@ WRITE8_MEMBER( c140_device::c140_w )
offset&=0x1ff;
// mirror the bank registers on the 219, fixes bkrtmaq (and probably xday2 based on notes in the HLE)
- if ((offset >= 0x1f8) && (m_banking_type == C140_TYPE_ASIC219))
+ if ((offset >= 0x1f8) && (m_banking_type == C140_TYPE::ASIC219))
{
offset -= 8;
}
@@ -401,7 +401,7 @@ WRITE8_MEMBER( c140_device::c140_w )
v->mode = data;
// on the 219 asic, addresses are in words
- if (m_banking_type == C140_TYPE_ASIC219)
+ if (m_banking_type == C140_TYPE::ASIC219)
{
v->sample_loop = (vreg->loop_msb*256 + vreg->loop_lsb)*2;
v->sample_start = (vreg->start_msb*256 + vreg->start_lsb)*2;
@@ -470,18 +470,18 @@ long c140_device::find_sample(long adrs, long bank, int voice)
switch (m_banking_type)
{
- case C140_TYPE_SYSTEM2:
+ case C140_TYPE::SYSTEM2:
// System 2 banking
newadr = ((adrs&0x200000)>>2)|(adrs&0x7ffff);
break;
- case C140_TYPE_SYSTEM21:
+ case C140_TYPE::SYSTEM21:
// System 21 banking.
// similar to System 2's.
newadr = ((adrs&0x300000)>>1)+(adrs&0x7ffff);
break;
- case C140_TYPE_ASIC219:
+ case C140_TYPE::ASIC219:
// ASIC219's banking is fairly simple
newadr = ((m_REG[asic219banks[voice/4]]&0x3) * 0x20000) + adrs;
break;
diff --git a/src/devices/sound/c140.h b/src/devices/sound/c140.h
index fe37021e466..ff1e2c87d6d 100644
--- a/src/devices/sound/c140.h
+++ b/src/devices/sound/c140.h
@@ -2,74 +2,29 @@
// copyright-holders:R. Belmont
/* C140.h */
-#pragma once
-
-#ifndef __C140_H__
-#define __C140_H__
+#ifndef MAME_SOUND_C140_H
+#define MAME_SOUND_C140_H
-#define C140_MAX_VOICE 24
-
-enum
-{
- C140_TYPE_SYSTEM2,
- C140_TYPE_SYSTEM21,
- C140_TYPE_ASIC219
-};
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_C140_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, C140, _clock)
-#define MCFG_C140_REPLACE(_tag, _clock) \
- MCFG_DEVICE_REPLACE(_tag, C140, _clock)
+#define MCFG_C140_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), C140, (clock))
+
+#define MCFG_C140_REPLACE(tag, clock) \
+ MCFG_DEVICE_REPLACE((tag), C140, (clock))
-#define MCFG_C140_BANK_TYPE(_type) \
- c140_device::set_bank_type(*device, _type);
+#define MCFG_C140_BANK_TYPE(type) \
+ c140_device::set_bank_type(*device, (c140_device::C140_TYPE::type));
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-struct C140_VOICE
-{
- C140_VOICE() :
- ptoffset(0),
- pos(0),
- key(0),
- lastdt(0),
- prevdt(0),
- dltdt(0),
- rvol(0),
- lvol(0),
- frequency(0),
- bank(0),
- mode(0),
- sample_start(0),
- sample_end(0),
- sample_loop(0) {}
-
- int32_t ptoffset;
- int32_t pos;
- int32_t key;
- //--work
- int32_t lastdt;
- int32_t prevdt;
- int32_t dltdt;
- //--reg
- int32_t rvol;
- int32_t lvol;
- int32_t frequency;
- int32_t bank;
- int32_t mode;
-
- int32_t sample_start;
- int32_t sample_end;
- int32_t sample_loop;
-};
-
// ======================> c140_device
@@ -77,11 +32,22 @@ class c140_device : public device_t,
public device_sound_interface
{
public:
+ enum class C140_TYPE
+ {
+ SYSTEM2,
+ SYSTEM21,
+ ASIC219
+ };
+
c140_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~c140_device() { }
// static configuration
- static void set_bank_type(device_t &device, int bank) { downcast<c140_device &>(device).m_banking_type = bank; }
+ static void set_bank_type(device_t &device, C140_TYPE bank) { downcast<c140_device &>(device).m_banking_type = bank; }
+
+ DECLARE_READ8_MEMBER( c140_r );
+ DECLARE_WRITE8_MEMBER( c140_w );
+
+ void set_base(void *base);
protected:
// device-level overrides
@@ -90,21 +56,38 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_READ8_MEMBER( c140_r );
- DECLARE_WRITE8_MEMBER( c140_w );
-
-public:
- void set_base(void *base);
-
private:
+ static constexpr unsigned MAX_VOICE = 24;
+
+ struct C140_VOICE
+ {
+ C140_VOICE() { }
+
+ int32_t ptoffset = 0;
+ int32_t pos = 0;
+ int32_t key = 0;
+ //--work
+ int32_t lastdt = 0;
+ int32_t prevdt = 0;
+ int32_t dltdt = 0;
+ //--reg
+ int32_t rvol = 0;
+ int32_t lvol = 0;
+ int32_t frequency = 0;
+ int32_t bank = 0;
+ int32_t mode = 0;
+
+ int32_t sample_start = 0;
+ int32_t sample_end = 0;
+ int32_t sample_loop = 0;
+ };
+
void init_voice( C140_VOICE *v );
long find_sample(long adrs, long bank, int voice);
-private:
int m_sample_rate;
sound_stream *m_stream;
- int m_banking_type;
+ C140_TYPE m_banking_type;
/* internal buffers */
std::unique_ptr<int16_t[]> m_mixer_buffer_left;
std::unique_ptr<int16_t[]> m_mixer_buffer_right;
@@ -116,10 +99,9 @@ private:
int16_t m_pcmtbl[8]; //2000.06.26 CAB
- C140_VOICE m_voi[C140_MAX_VOICE];
+ C140_VOICE m_voi[MAX_VOICE];
};
-extern const device_type C140;
-
+DECLARE_DEVICE_TYPE(C140, c140_device)
-#endif /* __C140_H__ */
+#endif // MAME_SOUND_C140_H
diff --git a/src/devices/sound/c352.cpp b/src/devices/sound/c352.cpp
index d8e6dc03c63..581cddd3968 100644
--- a/src/devices/sound/c352.cpp
+++ b/src/devices/sound/c352.cpp
@@ -19,11 +19,12 @@
#include "emu.h"
#include "c352.h"
-#define VERBOSE (0)
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
+
// device type definition
-const device_type C352 = device_creator<c352_device>;
+DEFINE_DEVICE_TYPE(C352, c352_device, "c352", "Namco C352")
//**************************************************************************
// LIVE DEVICE
@@ -34,9 +35,10 @@ const device_type C352 = device_creator<c352_device>;
//-------------------------------------------------
c352_device::c352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, C352, "C352", tag, owner, clock, "c352", __FILE__),
- device_sound_interface(mconfig, *this),
- device_rom_interface(mconfig, *this, 24)
+ : device_t(mconfig, C352, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , device_rom_interface(mconfig, *this, 24)
+ , m_stream(nullptr)
{
}
diff --git a/src/devices/sound/c352.h b/src/devices/sound/c352.h
index 52e0048092b..4cfce7b7591 100644
--- a/src/devices/sound/c352.h
+++ b/src/devices/sound/c352.h
@@ -1,20 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont, superctr
+#ifndef MAME_SOUND_C352_H
+#define MAME_SOUND_C352_H
+
#pragma once
-#ifndef __C352_H__
-#define __C352_H__
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_C352_ADD(_tag, _clock, _setting) \
- MCFG_DEVICE_ADD(_tag, C352, _clock) \
- MCFG_C352_DIVIDER(_setting)
+#define MCFG_C352_ADD(tag, clock, setting) \
+ MCFG_DEVICE_ADD((tag), C352, (clock)) \
+ MCFG_C352_DIVIDER(setting)
+
+#define MCFG_C352_DIVIDER(setting) \
+ c352_device::static_set_divider(*device, (setting));
-#define MCFG_C352_DIVIDER(_setting) \
- c352_device::static_set_divider(*device, _setting);
//**************************************************************************
// TYPE DEFINITIONS
@@ -36,8 +38,6 @@ public:
DECLARE_READ16_MEMBER(read);
DECLARE_WRITE16_MEMBER(write);
- sound_stream *m_stream;
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -93,6 +93,14 @@ private:
};
+ void fetch_sample(c352_voice_t* v);
+ void ramp_volume(c352_voice_t* v,int ch,uint8_t val);
+
+ unsigned short read_reg16(unsigned long address);
+ void write_reg16(unsigned long address, unsigned short val);
+
+ sound_stream *m_stream;
+
int m_sample_rate_base;
int m_divider;
@@ -100,16 +108,10 @@ private:
uint16_t m_random;
uint16_t m_control; // control flags, purpose unknown.
-
- void fetch_sample(c352_voice_t* v);
- void ramp_volume(c352_voice_t* v,int ch,uint8_t val);
-
- unsigned short read_reg16(unsigned long address);
- void write_reg16(unsigned long address, unsigned short val);
};
// device type definition
-extern const device_type C352;
+DECLARE_DEVICE_TYPE(C352, c352_device)
-#endif /* __C352_H__ */
+#endif // MAME_SOUND_C352_H
diff --git a/src/devices/sound/c6280.cpp b/src/devices/sound/c6280.cpp
index db3f4fcb406..1cae1437d49 100644
--- a/src/devices/sound/c6280.cpp
+++ b/src/devices/sound/c6280.cpp
@@ -41,9 +41,6 @@
#include "emu.h"
#include "c6280.h"
-/* only needed for io_buffer */
-#include "cpu/h6280/h6280.h"
-
void c6280_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
@@ -229,10 +226,10 @@ WRITE8_MEMBER( c6280_device::c6280_w )
}
}
-const device_type C6280 = device_creator<c6280_device>;
+DEFINE_DEVICE_TYPE(C6280, c6280_device, "c6280", "Hudson HuC6280")
c6280_device::c6280_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, C6280, "HuC6280", tag, owner, clock, "c6280", __FILE__)
+ : device_t(mconfig, C6280, tag, owner, clock)
, device_sound_interface(mconfig, *this)
, m_cpudevice(*this, finder_base::DUMMY_TAG)
{
diff --git a/src/devices/sound/c6280.h b/src/devices/sound/c6280.h
index 0c95dbfc1b9..d69a1736416 100644
--- a/src/devices/sound/c6280.h
+++ b/src/devices/sound/c6280.h
@@ -1,14 +1,13 @@
// license:BSD-3-Clause
// copyright-holders:Charles MacDonald
-#pragma once
+#ifndef MAME_SOUND_C6280_H
+#define MAME_SOUND_C6280_H
-#ifndef __C6280_H__
-#define __C6280_H__
+#pragma once
#include "cpu/h6280/h6280.h"
-class c6280_device : public device_t,
- public device_sound_interface
+class c6280_device : public device_t, public device_sound_interface
{
public:
c6280_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -55,10 +54,9 @@ private:
uint32_t m_wave_freq_tab[4096];
};
-extern const device_type C6280;
-
-#define MCFG_C6280_CPU(_tag) \
- c6280_device::set_devicecpu_tag(*device, "^" _tag);
+DECLARE_DEVICE_TYPE(C6280, c6280_device)
+#define MCFG_C6280_CPU(tag) \
+ c6280_device::set_devicecpu_tag(*device, ("^" tag));
-#endif /* __C6280_H__ */
+#endif // MAME_SOUND_C6280_H
diff --git a/src/devices/sound/cdda.cpp b/src/devices/sound/cdda.cpp
index 2e4ec409a26..e24a8d9bf46 100644
--- a/src/devices/sound/cdda.cpp
+++ b/src/devices/sound/cdda.cpp
@@ -231,10 +231,12 @@ int16_t cdda_device::get_channel_volume(int channel)
return m_audio_volume[channel];
}
-const device_type CDDA = device_creator<cdda_device>;
+DEFINE_DEVICE_TYPE(CDDA, cdda_device, "cdda", "CD/DA")
cdda_device::cdda_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CDDA, "CD/DA", tag, owner, clock, "cdda", __FILE__),
- device_sound_interface(mconfig, *this)
+ : device_t(mconfig, CDDA, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_disc(nullptr)
+ , m_stream(nullptr)
{
}
diff --git a/src/devices/sound/cdda.h b/src/devices/sound/cdda.h
index 4bbcb253ed2..28633f94fd7 100644
--- a/src/devices/sound/cdda.h
+++ b/src/devices/sound/cdda.h
@@ -1,14 +1,14 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles,smf
-#pragma once
+#ifndef MAME_SOUND_CDDA_H
+#define MAME_SOUND_CDDA_H
-#ifndef __CDDA_H__
-#define __CDDA_H__
+#pragma once
#include "cdrom.h"
-class cdda_device : public device_t,
- public device_sound_interface
+
+class cdda_device : public device_t, public device_sound_interface
{
public:
cdda_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -25,8 +25,6 @@ public:
int audio_paused();
int audio_ended();
- cdrom_file * m_disc;
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -37,6 +35,8 @@ protected:
private:
void get_audio_data(stream_sample_t *bufL, stream_sample_t *bufR, uint32_t samples_wanted);
+ cdrom_file * m_disc;
+
// internal state
sound_stream * m_stream;
@@ -49,7 +49,6 @@ private:
int16_t m_audio_volume[2];
};
-extern const device_type CDDA;
-
+DECLARE_DEVICE_TYPE(CDDA, cdda_device)
-#endif /* __CDDA_H__ */
+#endif // MAME_SOUND_CDDA_H
diff --git a/src/devices/sound/cdp1863.cpp b/src/devices/sound/cdp1863.cpp
index 2b6396084dd..07bc4aa9704 100644
--- a/src/devices/sound/cdp1863.cpp
+++ b/src/devices/sound/cdp1863.cpp
@@ -17,15 +17,15 @@
#include "emu.h"
#include "cdp1863.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
#define CDP1863_DEFAULT_LATCH 0x35
@@ -35,7 +35,7 @@
//**************************************************************************
// devices
-const device_type CDP1863 = device_creator<cdp1863_device>;
+DEFINE_DEVICE_TYPE(CDP1863, cdp1863_device, "cdp1863", "RCA CDP1863")
@@ -48,11 +48,11 @@ const device_type CDP1863 = device_creator<cdp1863_device>;
//-------------------------------------------------
cdp1863_device::cdp1863_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CDP1863, "CDP1863", tag, owner, clock, "cdp1863", __FILE__),
- device_sound_interface(mconfig, *this),
- m_stream(nullptr),
- m_clock1(clock),
- m_clock2(0)
+ : device_t(mconfig, CDP1863, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_clock1(clock)
+ , m_clock2(0)
{
}
diff --git a/src/devices/sound/cdp1863.h b/src/devices/sound/cdp1863.h
index d1f1b438d83..189a04ae5c9 100644
--- a/src/devices/sound/cdp1863.h
+++ b/src/devices/sound/cdp1863.h
@@ -17,10 +17,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_SOUND_CDP1863_H
+#define MAME_SOUND_CDP1863_H
-#ifndef __CDP1863__
-#define __CDP1863__
+#pragma once
@@ -81,8 +81,6 @@ private:
// device type definition
-extern const device_type CDP1863;
-
-
+DECLARE_DEVICE_TYPE(CDP1863, cdp1863_device)
-#endif
+#endif // MAME_SOUND_CDP1863_H
diff --git a/src/devices/sound/cdp1864.cpp b/src/devices/sound/cdp1864.cpp
index a42300aca00..24c46e0aea6 100644
--- a/src/devices/sound/cdp1864.cpp
+++ b/src/devices/sound/cdp1864.cpp
@@ -36,7 +36,7 @@
#define CDP1864_CYCLES_DMA_ACTIVE 8*8
#define CDP1864_CYCLES_DMA_WAIT 6*8
-const int cdp1864_device::bckgnd[] = { 2, 0, 4, 1 };
+constexpr int cdp1864_device::bckgnd[];
@@ -45,7 +45,7 @@ const int cdp1864_device::bckgnd[] = { 2, 0, 4, 1 };
//**************************************************************************
// devices
-const device_type CDP1864 = device_creator<cdp1864_device>;
+DEFINE_DEVICE_TYPE(CDP1864, cdp1864_device, "cdp1864", "RCA CDP1864")
@@ -58,7 +58,7 @@ const device_type CDP1864 = device_creator<cdp1864_device>;
//-------------------------------------------------
cdp1864_device::cdp1864_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CDP1864, "CDP1864", tag, owner, clock, "cdp1864", __FILE__),
+ : device_t(mconfig, CDP1864, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_read_inlace(*this),
@@ -128,8 +128,8 @@ void cdp1864_device::device_start()
void cdp1864_device::device_reset()
{
- m_int_timer->adjust(m_screen->time_until_pos(CDP1864_SCANLINE_INT_START, 0));
- m_efx_timer->adjust(m_screen->time_until_pos(CDP1864_SCANLINE_EFX_TOP_START, 0));
+ m_int_timer->adjust(m_screen->time_until_pos(SCANLINE_INT_START, 0));
+ m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_TOP_START, 0));
m_dma_timer->adjust(clocks_to_attotime(CDP1864_CYCLES_DMA_START));
m_disp = 0;
@@ -153,14 +153,14 @@ void cdp1864_device::device_timer(emu_timer &timer, device_timer_id id, int para
switch (id)
{
case TIMER_INT:
- if (scanline == CDP1864_SCANLINE_INT_START)
+ if (scanline == SCANLINE_INT_START)
{
if (m_disp)
{
m_write_irq(ASSERT_LINE);
}
- m_int_timer->adjust(m_screen->time_until_pos( CDP1864_SCANLINE_INT_END, 0));
+ m_int_timer->adjust(m_screen->time_until_pos(SCANLINE_INT_END, 0));
}
else
{
@@ -169,31 +169,31 @@ void cdp1864_device::device_timer(emu_timer &timer, device_timer_id id, int para
m_write_irq(CLEAR_LINE);
}
- m_int_timer->adjust(m_screen->time_until_pos(CDP1864_SCANLINE_INT_START, 0));
+ m_int_timer->adjust(m_screen->time_until_pos(SCANLINE_INT_START, 0));
}
break;
case TIMER_EFX:
switch (scanline)
{
- case CDP1864_SCANLINE_EFX_TOP_START:
+ case SCANLINE_EFX_TOP_START:
m_write_efx(ASSERT_LINE);
- m_efx_timer->adjust(m_screen->time_until_pos(CDP1864_SCANLINE_EFX_TOP_END, 0));
+ m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_TOP_END, 0));
break;
- case CDP1864_SCANLINE_EFX_TOP_END:
+ case SCANLINE_EFX_TOP_END:
m_write_efx(CLEAR_LINE);
- m_efx_timer->adjust(m_screen->time_until_pos(CDP1864_SCANLINE_EFX_BOTTOM_START, 0));
+ m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_BOTTOM_START, 0));
break;
- case CDP1864_SCANLINE_EFX_BOTTOM_START:
+ case SCANLINE_EFX_BOTTOM_START:
m_write_efx(ASSERT_LINE);
- m_efx_timer->adjust(m_screen->time_until_pos(CDP1864_SCANLINE_EFX_BOTTOM_END, 0));
+ m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_BOTTOM_END, 0));
break;
- case CDP1864_SCANLINE_EFX_BOTTOM_END:
+ case SCANLINE_EFX_BOTTOM_END:
m_write_efx(CLEAR_LINE);
- m_efx_timer->adjust(m_screen->time_until_pos(CDP1864_SCANLINE_EFX_TOP_START, 0));
+ m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_TOP_START, 0));
break;
}
break;
@@ -203,7 +203,7 @@ void cdp1864_device::device_timer(emu_timer &timer, device_timer_id id, int para
{
if (m_disp)
{
- if (scanline >= CDP1864_SCANLINE_DISPLAY_START && scanline < CDP1864_SCANLINE_DISPLAY_END)
+ if (scanline >= SCANLINE_DISPLAY_START && scanline < SCANLINE_DISPLAY_END)
{
m_write_dma_out(CLEAR_LINE);
}
@@ -217,7 +217,7 @@ void cdp1864_device::device_timer(emu_timer &timer, device_timer_id id, int para
{
if (m_disp)
{
- if (scanline >= CDP1864_SCANLINE_DISPLAY_START && scanline < CDP1864_SCANLINE_DISPLAY_END)
+ if (scanline >= SCANLINE_DISPLAY_START && scanline < SCANLINE_DISPLAY_END)
{
m_write_dma_out(ASSERT_LINE);
}
diff --git a/src/devices/sound/cdp1864.h b/src/devices/sound/cdp1864.h
index d27d817f605..1827e9e9ca6 100644
--- a/src/devices/sound/cdp1864.h
+++ b/src/devices/sound/cdp1864.h
@@ -32,8 +32,8 @@
**********************************************************************/
-#ifndef MAME_DEVICES_SOUND_CDP1864_H
-#define MAME_DEVICES_SOUND_CDP1864_H
+#ifndef MAME_SOUND_CDP1864_H
+#define MAME_SOUND_CDP1864_H
#pragma once
@@ -50,32 +50,6 @@
#define CDP1864_CLOCK XTAL_1_75MHz
-#define CDP1864_VISIBLE_COLUMNS 64
-#define CDP1864_VISIBLE_LINES 192
-
-#define CDP1864_HBLANK_END 1 * 8
-#define CDP1864_HBLANK_START 13 * 8
-#define CDP1864_HSYNC_START 0 * 8
-#define CDP1864_HSYNC_END 1 * 8
-#define CDP1864_SCREEN_START 4 * 8
-#define CDP1864_SCREEN_END 12 * 8
-#define CDP1864_SCREEN_WIDTH 14 * 8
-
-#define CDP1864_TOTAL_SCANLINES 312
-
-#define CDP1864_SCANLINE_VBLANK_START CDP1864_TOTAL_SCANLINES - 4
-#define CDP1864_SCANLINE_VBLANK_END 20
-#define CDP1864_SCANLINE_VSYNC_START 0
-#define CDP1864_SCANLINE_VSYNC_END 4
-#define CDP1864_SCANLINE_DISPLAY_START 60 // ???
-#define CDP1864_SCANLINE_DISPLAY_END CDP1864_SCANLINE_DISPLAY_START + CDP1864_VISIBLE_LINES
-#define CDP1864_SCANLINE_INT_START CDP1864_SCANLINE_DISPLAY_START - 2
-#define CDP1864_SCANLINE_INT_END CDP1864_SCANLINE_DISPLAY_START
-#define CDP1864_SCANLINE_EFX_TOP_START CDP1864_SCANLINE_DISPLAY_START - 4
-#define CDP1864_SCANLINE_EFX_TOP_END CDP1864_SCANLINE_DISPLAY_START
-#define CDP1864_SCANLINE_EFX_BOTTOM_START CDP1864_SCANLINE_DISPLAY_END - 4
-#define CDP1864_SCANLINE_EFX_BOTTOM_END CDP1864_SCANLINE_DISPLAY_END
-
//**************************************************************************
@@ -83,23 +57,23 @@
//**************************************************************************
#define MCFG_CDP1864_ADD(_tag, _screen_tag, _clock, _inlace, _irq, _dma_out, _efx, _hsync, _rdata, _bdata, _gdata) \
- MCFG_SOUND_ADD(_tag, CDP1864, _clock) \
- MCFG_VIDEO_SET_SCREEN(_screen_tag) \
- downcast<cdp1864_device *>(device)->set_inlace_callback(DEVCB_##_inlace); \
- downcast<cdp1864_device *>(device)->set_irq_callback(DEVCB_##_irq); \
- downcast<cdp1864_device *>(device)->set_dma_out_callback(DEVCB_##_dma_out); \
- downcast<cdp1864_device *>(device)->set_efx_callback(DEVCB_##_efx); \
- downcast<cdp1864_device *>(device)->set_hsync_callback(DEVCB_##_hsync); \
- downcast<cdp1864_device *>(device)->set_rdata_callback(DEVCB_##_rdata); \
- downcast<cdp1864_device *>(device)->set_bdata_callback(DEVCB_##_bdata); \
- downcast<cdp1864_device *>(device)->set_gdata_callback(DEVCB_##_gdata);
+ MCFG_SOUND_ADD(_tag, CDP1864, _clock) \
+ MCFG_VIDEO_SET_SCREEN(_screen_tag) \
+ downcast<cdp1864_device *>(device)->set_inlace_callback(DEVCB_##_inlace); \
+ downcast<cdp1864_device *>(device)->set_irq_callback(DEVCB_##_irq); \
+ downcast<cdp1864_device *>(device)->set_dma_out_callback(DEVCB_##_dma_out); \
+ downcast<cdp1864_device *>(device)->set_efx_callback(DEVCB_##_efx); \
+ downcast<cdp1864_device *>(device)->set_hsync_callback(DEVCB_##_hsync); \
+ downcast<cdp1864_device *>(device)->set_rdata_callback(DEVCB_##_rdata); \
+ downcast<cdp1864_device *>(device)->set_bdata_callback(DEVCB_##_bdata); \
+ downcast<cdp1864_device *>(device)->set_gdata_callback(DEVCB_##_gdata);
#define MCFG_CDP1864_CHROMINANCE(_r, _b, _g, _bkg) \
- downcast<cdp1864_device *>(device)->set_chrominance_resistors(_r, _b, _g, _bkg);
+ downcast<cdp1864_device *>(device)->set_chrominance_resistors(_r, _b, _g, _bkg);
#define MCFG_CDP1864_SCREEN_ADD(_tag, _clock) \
- MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_RAW_PARAMS(_clock, CDP1864_SCREEN_WIDTH, CDP1864_HBLANK_END, CDP1864_HBLANK_START, CDP1864_TOTAL_SCANLINES, CDP1864_SCANLINE_VBLANK_END, CDP1864_SCANLINE_VBLANK_START)
+ MCFG_SCREEN_ADD(_tag, RASTER) \
+ MCFG_SCREEN_RAW_PARAMS(_clock, cdp1864_device::SCREEN_WIDTH, cdp1864_device::HBLANK_END, cdp1864_device::HBLANK_START, cdp1864_device::TOTAL_SCANLINES, cdp1864_device::SCANLINE_VBLANK_END, cdp1864_device::SCANLINE_VBLANK_START)
@@ -114,17 +88,43 @@ class cdp1864_device : public device_t,
public device_video_interface
{
public:
+ static constexpr unsigned VISIBLE_COLUMNS = 64;
+ static constexpr unsigned VISIBLE_LINES = 192;
+
+ static constexpr unsigned HBLANK_END = 1 * 8;
+ static constexpr unsigned HBLANK_START = 13 * 8;
+ static constexpr unsigned HSYNC_START = 0 * 8;
+ static constexpr unsigned HSYNC_END = 1 * 8;
+ static constexpr unsigned SCREEN_START = 4 * 8;
+ static constexpr unsigned SCREEN_END = 12 * 8;
+ static constexpr unsigned SCREEN_WIDTH = 14 * 8;
+
+ static constexpr unsigned TOTAL_SCANLINES = 312;
+
+ static constexpr unsigned SCANLINE_VBLANK_START = TOTAL_SCANLINES - 4;
+ static constexpr unsigned SCANLINE_VBLANK_END = 20;
+ static constexpr unsigned SCANLINE_VSYNC_START = 0;
+ static constexpr unsigned SCANLINE_VSYNC_END = 4;
+ static constexpr unsigned SCANLINE_DISPLAY_START = 60; // ???
+ static constexpr unsigned SCANLINE_DISPLAY_END = SCANLINE_DISPLAY_START + VISIBLE_LINES;
+ static constexpr unsigned SCANLINE_INT_START = SCANLINE_DISPLAY_START - 2;
+ static constexpr unsigned SCANLINE_INT_END = SCANLINE_DISPLAY_START;
+ static constexpr unsigned SCANLINE_EFX_TOP_START = SCANLINE_DISPLAY_START - 4;
+ static constexpr unsigned SCANLINE_EFX_TOP_END = SCANLINE_DISPLAY_START;
+ static constexpr unsigned SCANLINE_EFX_BOTTOM_START = SCANLINE_DISPLAY_END - 4;
+ static constexpr unsigned SCANLINE_EFX_BOTTOM_END = SCANLINE_DISPLAY_END;
+
// construction/destruction
cdp1864_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _inlace> void set_inlace_callback(_inlace inlace) { m_read_inlace.set_callback(inlace); }
- template<class _irq> void set_irq_callback(_irq irq) { m_write_irq.set_callback(irq); }
- template<class _dma_out> void set_dma_out_callback(_dma_out dma_out) { m_write_dma_out.set_callback(dma_out); }
- template<class _efx> void set_efx_callback(_efx efx) { m_write_efx.set_callback(efx); }
- template<class _hsync> void set_hsync_callback(_hsync hsync) { m_write_hsync.set_callback(hsync); }
- template<class _rdata> void set_rdata_callback(_rdata rdata) { m_read_rdata.set_callback(rdata); }
- template<class _bdata> void set_bdata_callback(_bdata bdata) { m_read_bdata.set_callback(bdata); }
- template<class _gdata> void set_gdata_callback(_gdata gdata) { m_read_gdata.set_callback(gdata); }
+ template <class Object> void set_inlace_callback(Object &&inlace) { m_read_inlace.set_callback(std::forward<Object>(inlace)); }
+ template <class Object> void set_irq_callback(Object &&irq) { m_write_irq.set_callback(std::forward<Object>(irq)); }
+ template <class Object> void set_dma_out_callback(Object &&dma_out) { m_write_dma_out.set_callback(std::forward<Object>(dma_out)); }
+ template <class Object> void set_efx_callback(Object &&efx) { m_write_efx.set_callback(std::forward<Object>(efx)); }
+ template <class Object> void set_hsync_callback(Object &&hsync) { m_write_hsync.set_callback(std::forward<Object>(hsync)); }
+ template <class Object> void set_rdata_callback(Object &&rdata) { m_read_rdata.set_callback(std::forward<Object>(rdata)); }
+ template <class Object> void set_bdata_callback(Object &&bdata) { m_read_bdata.set_callback(std::forward<Object>(bdata)); }
+ template <class Object> void set_gdata_callback(Object &&gdata) { m_read_gdata.set_callback(std::forward<Object>(gdata)); }
void set_chrominance_resistors(double r, double b, double g, double bkg) { m_chr_r = r; m_chr_b = b; m_chr_g = g; m_chr_bkg = bkg; }
DECLARE_READ8_MEMBER( dispon_r );
@@ -161,7 +161,7 @@ private:
void initialize_palette();
- static const int bckgnd[];
+ static constexpr int bckgnd[] = { 2, 0, 4, 1 };
devcb_read_line m_read_inlace;
devcb_read_line m_read_rdata;
@@ -202,6 +202,6 @@ private:
// device type definition
-extern const device_type CDP1864;
+DECLARE_DEVICE_TYPE(CDP1864, cdp1864_device)
#endif // MAME_DEVICES_SOUND_CDP1864_H
diff --git a/src/devices/sound/cdp1869.cpp b/src/devices/sound/cdp1869.cpp
index b9dae5d4884..a30170095dd 100644
--- a/src/devices/sound/cdp1869.cpp
+++ b/src/devices/sound/cdp1869.cpp
@@ -19,14 +19,14 @@
#include "emu.h"
#include "cdp1869.h"
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
#define CDP1869_WEIGHT_RED 30 // % of max luminance
#define CDP1869_WEIGHT_GREEN 59
#define CDP1869_WEIGHT_BLUE 11
@@ -56,7 +56,7 @@ enum
//**************************************************************************
// device type definition
-const device_type CDP1869 = device_creator<cdp1869_device>;
+DEFINE_DEVICE_TYPE(CDP1869, cdp1869_device, "cdp1869", "RCA CDP1869 VIS")
// I/O map
DEVICE_ADDRESS_MAP_START( io_map, 8, cdp1869_device )
@@ -175,16 +175,16 @@ inline int cdp1869_device::read_pcb(offs_t pma, offs_t cma, uint8_t pmd)
inline void cdp1869_device::update_prd_changed_timer()
{
- int start = CDP1869_SCANLINE_PREDISPLAY_START_PAL;
- int end = CDP1869_SCANLINE_PREDISPLAY_END_PAL;
+ int start = SCANLINE_PREDISPLAY_START_PAL;
+ int end = SCANLINE_PREDISPLAY_END_PAL;
int next_state;
int scanline = m_screen->vpos();
int next_scanline;
if (is_ntsc())
{
- start = CDP1869_SCANLINE_PREDISPLAY_START_NTSC;
- end = CDP1869_SCANLINE_PREDISPLAY_END_NTSC;
+ start = SCANLINE_PREDISPLAY_START_NTSC;
+ end = SCANLINE_PREDISPLAY_END_NTSC;
}
if (scanline < start)
@@ -341,7 +341,7 @@ inline int cdp1869_device::get_pen(int ccb0, int ccb1, int pcb)
//-------------------------------------------------
cdp1869_device::cdp1869_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CDP1869, "RCA CDP1869", tag, owner, clock, "cdp1869", __FILE__),
+ device_t(mconfig, CDP1869, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_video_interface(mconfig, *this),
device_memory_interface(mconfig, *this),
@@ -572,7 +572,7 @@ void cdp1869_device::draw_line(bitmap_rgb32 &bitmap, const rectangle &rect, int
data <<= 2;
- for (i = 0; i < CDP1869_CHAR_WIDTH; i++)
+ for (i = 0; i < CHAR_WIDTH; i++)
{
if (data & 0x80)
{
@@ -940,25 +940,25 @@ uint32_t cdp1869_device::screen_update(screen_device &screen, bitmap_rgb32 &bitm
if (is_ntsc())
{
- outer.min_x = CDP1869_HBLANK_END;
- outer.max_x = CDP1869_HBLANK_START - 1;
- outer.min_y = CDP1869_SCANLINE_VBLANK_END_NTSC;
- outer.max_y = CDP1869_SCANLINE_VBLANK_START_NTSC - 1;
- screen_rect.min_x = CDP1869_SCREEN_START_NTSC;
- screen_rect.max_x = CDP1869_SCREEN_END - 1;
- screen_rect.min_y = CDP1869_SCANLINE_DISPLAY_START_NTSC;
- screen_rect.max_y = CDP1869_SCANLINE_DISPLAY_END_NTSC - 1;
+ outer.min_x = HBLANK_END;
+ outer.max_x = HBLANK_START - 1;
+ outer.min_y = SCANLINE_VBLANK_END_NTSC;
+ outer.max_y = SCANLINE_VBLANK_START_NTSC - 1;
+ screen_rect.min_x = SCREEN_START_NTSC;
+ screen_rect.max_x = SCREEN_END - 1;
+ screen_rect.min_y = SCANLINE_DISPLAY_START_NTSC;
+ screen_rect.max_y = SCANLINE_DISPLAY_END_NTSC - 1;
}
else
{
- outer.min_x = CDP1869_HBLANK_END;
- outer.max_x = CDP1869_HBLANK_START - 1;
- outer.min_y = CDP1869_SCANLINE_VBLANK_END_PAL;
- outer.max_y = CDP1869_SCANLINE_VBLANK_START_PAL - 1;
- screen_rect.min_x = CDP1869_SCREEN_START_PAL;
- screen_rect.max_x = CDP1869_SCREEN_END - 1;
- screen_rect.min_y = CDP1869_SCANLINE_DISPLAY_START_PAL;
- screen_rect.max_y = CDP1869_SCANLINE_DISPLAY_END_PAL - 1;
+ outer.min_x = HBLANK_END;
+ outer.max_x = HBLANK_START - 1;
+ outer.min_y = SCANLINE_VBLANK_END_PAL;
+ outer.max_y = SCANLINE_VBLANK_START_PAL - 1;
+ screen_rect.min_x = SCREEN_START_PAL;
+ screen_rect.max_x = SCREEN_END - 1;
+ screen_rect.min_y = SCANLINE_DISPLAY_START_PAL;
+ screen_rect.max_y = SCANLINE_DISPLAY_END_PAL - 1;
}
outer &= cliprect;
@@ -966,7 +966,7 @@ uint32_t cdp1869_device::screen_update(screen_device &screen, bitmap_rgb32 &bitm
if (!m_dispoff)
{
- int width = CDP1869_CHAR_WIDTH;
+ int width = CHAR_WIDTH;
int height = get_lines();
if (!m_freshorz)
diff --git a/src/devices/sound/cdp1869.h b/src/devices/sound/cdp1869.h
index b2125c89caf..f80da696867 100644
--- a/src/devices/sound/cdp1869.h
+++ b/src/devices/sound/cdp1869.h
@@ -73,8 +73,8 @@
**********************************************************************/
-#ifndef MAME_DEVICES_SOUND_CDP1869_H
-#define MAME_DEVICES_SOUND_CDP1869_H
+#ifndef MAME_SOUND_CDP1869_H
+#define MAME_SOUND_CDP1869_H
#pragma once
@@ -83,72 +83,22 @@
//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define CDP1869_DOT_CLK_PAL (float)XTAL_5_626MHz
-#define CDP1869_DOT_CLK_NTSC (float)XTAL_5_67MHz
-#define CDP1869_COLOR_CLK_PAL (float)XTAL_8_867236MHz
-#define CDP1869_COLOR_CLK_NTSC (float)XTAL_7_15909MHz
-
-#define CDP1869_CPU_CLK_PAL (CDP1869_DOT_CLK_PAL / 2)
-#define CDP1869_CPU_CLK_NTSC (CDP1869_DOT_CLK_NTSC / 2)
-
-#define CDP1869_CHAR_WIDTH 6
-
-#define CDP1869_HSYNC_START (56 * CDP1869_CHAR_WIDTH)
-#define CDP1869_HSYNC_END (60 * CDP1869_CHAR_WIDTH)
-#define CDP1869_HBLANK_START (54 * CDP1869_CHAR_WIDTH)
-#define CDP1869_HBLANK_END ( 5 * CDP1869_CHAR_WIDTH)
-#define CDP1869_SCREEN_START_PAL ( 9 * CDP1869_CHAR_WIDTH)
-#define CDP1869_SCREEN_START_NTSC (10 * CDP1869_CHAR_WIDTH)
-#define CDP1869_SCREEN_START (10 * CDP1869_CHAR_WIDTH)
-#define CDP1869_SCREEN_END (50 * CDP1869_CHAR_WIDTH)
-#define CDP1869_SCREEN_WIDTH (60 * CDP1869_CHAR_WIDTH)
-
-#define CDP1869_TOTAL_SCANLINES_PAL 312
-#define CDP1869_SCANLINE_VBLANK_START_PAL 304
-#define CDP1869_SCANLINE_VBLANK_END_PAL 10
-#define CDP1869_SCANLINE_VSYNC_START_PAL 308
-#define CDP1869_SCANLINE_VSYNC_END_PAL 312
-#define CDP1869_SCANLINE_DISPLAY_START_PAL 44
-#define CDP1869_SCANLINE_DISPLAY_END_PAL 260
-#define CDP1869_SCANLINE_PREDISPLAY_START_PAL 43
-#define CDP1869_SCANLINE_PREDISPLAY_END_PAL 260
-#define CDP1869_VISIBLE_SCANLINES_PAL (CDP1869_SCANLINE_DISPLAY_END_PAL - CDP1869_SCANLINE_DISPLAY_START_PAL)
-
-#define CDP1869_TOTAL_SCANLINES_NTSC 262
-#define CDP1869_SCANLINE_VBLANK_START_NTSC 252
-#define CDP1869_SCANLINE_VBLANK_END_NTSC 10
-#define CDP1869_SCANLINE_VSYNC_START_NTSC 258
-#define CDP1869_SCANLINE_VSYNC_END_NTSC 262
-#define CDP1869_SCANLINE_DISPLAY_START_NTSC 36
-#define CDP1869_SCANLINE_DISPLAY_END_NTSC 228
-#define CDP1869_SCANLINE_PREDISPLAY_START_NTSC 35
-#define CDP1869_SCANLINE_PREDISPLAY_END_NTSC 228
-#define CDP1869_VISIBLE_SCANLINES_NTSC (CDP1869_SCANLINE_DISPLAY_END_NTSC - CDP1869_SCANLINE_DISPLAY_START_NTSC)
-
-#define CDP1869_PALETTE_LENGTH 8+64
-
-
-
-//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_CDP1869_ADD(_tag, _pixclock, _map) \
- MCFG_DEVICE_ADD(_tag, CDP1869, _pixclock) \
- MCFG_DEVICE_ADDRESS_MAP(AS_0, _map)
+ MCFG_DEVICE_ADD(_tag, CDP1869, _pixclock) \
+ MCFG_DEVICE_ADDRESS_MAP(AS_0, _map)
#define MCFG_CDP1869_SCREEN_PAL_ADD(_cdptag, _tag, _clock) \
- MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \
- MCFG_SCREEN_RAW_PARAMS(_clock, CDP1869_SCREEN_WIDTH, CDP1869_HBLANK_END, CDP1869_HBLANK_START, CDP1869_TOTAL_SCANLINES_PAL, CDP1869_SCANLINE_VBLANK_END_PAL, CDP1869_SCANLINE_VBLANK_START_PAL)
+ MCFG_SCREEN_ADD(_tag, RASTER) \
+ MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \
+ MCFG_SCREEN_RAW_PARAMS(_clock, cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START, cdp1869_device::TOTAL_SCANLINES_PAL, cdp1869_device::SCANLINE_VBLANK_END_PAL, cdp1869_device::SCANLINE_VBLANK_START_PAL)
#define MCFG_CDP1869_SCREEN_NTSC_ADD(_cdptag, _tag, _clock) \
- MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \
- MCFG_SCREEN_RAW_PARAMS(_clock, CDP1869_SCREEN_WIDTH, CDP1869_HBLANK_END, CDP1869_HBLANK_START, CDP1869_TOTAL_SCANLINES_NTSC, CDP1869_SCANLINE_VBLANK_END_NTSC, CDP1869_SCANLINE_VBLANK_START_NTSC)
+ MCFG_SCREEN_ADD(_tag, RASTER) \
+ MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \
+ MCFG_SCREEN_RAW_PARAMS(_clock, cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START, cdp1869_device::TOTAL_SCANLINES_NTSC, cdp1869_device::SCANLINE_VBLANK_END_NTSC, cdp1869_device::SCANLINE_VBLANK_START_NTSC)
#define MCFG_CDP1869_SET_SCREEN MCFG_VIDEO_SET_SCREEN
@@ -157,31 +107,28 @@
#define CDP1869_PCB_READ_MEMBER(name) int name(uint16_t pma, uint8_t cma, uint8_t pmd)
#define MCFG_CDP1869_PAL_NTSC_CALLBACK(_read) \
- devcb = &cdp1869_device::set_pal_ntsc_rd_callback(*device, DEVCB_##_read);
+ devcb = &cdp1869_device::set_pal_ntsc_rd_callback(*device, DEVCB_##_read);
#define MCFG_CDP1869_PRD_CALLBACK(_write) \
- devcb = &cdp1869_device::set_prd_wr_callback(*device, DEVCB_##_write);
+ devcb = &cdp1869_device::set_prd_wr_callback(*device, DEVCB_##_write);
#define MCFG_CDP1869_COLOR_CLOCK(_clk) \
- cdp1869_device::static_set_color_clock(*device, _clk);
+ cdp1869_device::static_set_color_clock(*device, _clk);
#define MCFG_CDP1869_CHAR_RAM_READ_OWNER(_class, _method) \
- cdp1869_device::static_set_char_ram_read(*device, cdp1869_char_ram_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ cdp1869_device::static_set_char_ram_read(*device, cdp1869_device::char_ram_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(_class, _method) \
- cdp1869_device::static_set_char_ram_write(*device, cdp1869_char_ram_write_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ cdp1869_device::static_set_char_ram_write(*device, cdp1869_device::char_ram_write_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_CDP1869_CHAR_PCB_READ_OWNER(_class, _method) \
- cdp1869_device::static_set_pcb_read(*device, cdp1869_pcb_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ cdp1869_device::static_set_pcb_read(*device, cdp1869_device::pcb_read_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<uint8_t (uint16_t pma, uint8_t cma, uint8_t pmd)> cdp1869_char_ram_read_delegate;
-typedef device_delegate<void (uint16_t pma, uint8_t cma, uint8_t pmd, uint8_t data)> cdp1869_char_ram_write_delegate;
-typedef device_delegate<int (uint16_t pma, uint8_t cma, uint8_t pmd)> cdp1869_pcb_read_delegate;
-
// ======================> cdp1869_device
class cdp1869_device : public device_t,
@@ -190,14 +137,62 @@ class cdp1869_device : public device_t,
public device_memory_interface
{
public:
+ static constexpr float DOT_CLK_PAL = XTAL_5_626MHz;
+ static constexpr float DOT_CLK_NTSC = XTAL_5_67MHz;
+ static constexpr float COLOR_CLK_PAL = XTAL_8_867236MHz;
+ static constexpr float COLOR_CLK_NTSC = XTAL_7_15909MHz;
+
+ static constexpr float CPU_CLK_PAL = DOT_CLK_PAL / 2;
+ static constexpr float CPU_CLK_NTSC = DOT_CLK_NTSC / 2;
+
+ static constexpr unsigned CHAR_WIDTH = 6;
+
+ static constexpr unsigned HSYNC_START = 56 * CHAR_WIDTH;
+ static constexpr unsigned HSYNC_END = 60 * CHAR_WIDTH;
+ static constexpr unsigned HBLANK_START = 54 * CHAR_WIDTH;
+ static constexpr unsigned HBLANK_END = 5 * CHAR_WIDTH;
+ static constexpr unsigned SCREEN_START_PAL = 9 * CHAR_WIDTH;
+ static constexpr unsigned SCREEN_START_NTSC = 10 * CHAR_WIDTH;
+ static constexpr unsigned SCREEN_START = 10 * CHAR_WIDTH;
+ static constexpr unsigned SCREEN_END = 50 * CHAR_WIDTH;
+ static constexpr unsigned SCREEN_WIDTH = 60 * CHAR_WIDTH;
+
+ static constexpr unsigned TOTAL_SCANLINES_PAL = 312;
+ static constexpr unsigned SCANLINE_VBLANK_START_PAL = 304;
+ static constexpr unsigned SCANLINE_VBLANK_END_PAL = 10;
+ static constexpr unsigned SCANLINE_VSYNC_START_PAL = 308;
+ static constexpr unsigned SCANLINE_VSYNC_END_PAL = 312;
+ static constexpr unsigned SCANLINE_DISPLAY_START_PAL = 44;
+ static constexpr unsigned SCANLINE_DISPLAY_END_PAL = 260;
+ static constexpr unsigned SCANLINE_PREDISPLAY_START_PAL = 43;
+ static constexpr unsigned SCANLINE_PREDISPLAY_END_PAL = 260;
+ static constexpr unsigned VISIBLE_SCANLINES_PAL = SCANLINE_DISPLAY_END_PAL - SCANLINE_DISPLAY_START_PAL;
+
+ static constexpr unsigned TOTAL_SCANLINES_NTSC = 262;
+ static constexpr unsigned SCANLINE_VBLANK_START_NTSC = 252;
+ static constexpr unsigned SCANLINE_VBLANK_END_NTSC = 10;
+ static constexpr unsigned SCANLINE_VSYNC_START_NTSC = 258;
+ static constexpr unsigned SCANLINE_VSYNC_END_NTSC = 262;
+ static constexpr unsigned SCANLINE_DISPLAY_START_NTSC = 36;
+ static constexpr unsigned SCANLINE_DISPLAY_END_NTSC = 228;
+ static constexpr unsigned SCANLINE_PREDISPLAY_START_NTSC = 35;
+ static constexpr unsigned SCANLINE_PREDISPLAY_END_NTSC = 228;
+ static constexpr unsigned VISIBLE_SCANLINES_NTSC = SCANLINE_DISPLAY_END_NTSC - SCANLINE_DISPLAY_START_NTSC;
+
+ static constexpr unsigned PALETTE_LENGTH = 8+64;
+
+ typedef device_delegate<uint8_t (uint16_t pma, uint8_t cma, uint8_t pmd)> char_ram_read_delegate;
+ typedef device_delegate<void (uint16_t pma, uint8_t cma, uint8_t pmd, uint8_t data)> char_ram_write_delegate;
+ typedef device_delegate<int (uint16_t pma, uint8_t cma, uint8_t pmd)> pcb_read_delegate;
+
// construction/destruction
cdp1869_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_pal_ntsc_rd_callback(device_t &device, _Object object) { return downcast<cdp1869_device &>(device).m_read_pal_ntsc.set_callback(object); }
- template<class _Object> static devcb_base &set_prd_wr_callback(device_t &device, _Object object) { return downcast<cdp1869_device &>(device).m_write_prd.set_callback(object); }
- static void static_set_char_ram_read(device_t &device, cdp1869_char_ram_read_delegate callback) { downcast<cdp1869_device &>(device).m_in_char_ram_func = callback; }
- static void static_set_char_ram_write(device_t &device, cdp1869_char_ram_write_delegate callback) { downcast<cdp1869_device &>(device).m_out_char_ram_func = callback; }
- static void static_set_pcb_read(device_t &device, cdp1869_pcb_read_delegate callback) { downcast<cdp1869_device &>(device).m_in_pcb_func = callback; }
+ template <class Object> static devcb_base &set_pal_ntsc_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1869_device &>(device).m_read_pal_ntsc.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_prd_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1869_device &>(device).m_write_prd.set_callback(std::forward<Object>(cb)); }
+ static void static_set_char_ram_read(device_t &device, char_ram_read_delegate &&cb) { downcast<cdp1869_device &>(device).m_in_char_ram_func = std::move(cb); }
+ static void static_set_char_ram_write(device_t &device, char_ram_write_delegate &&cb) { downcast<cdp1869_device &>(device).m_out_char_ram_func = std::move(cb); }
+ static void static_set_pcb_read(device_t &device, pcb_read_delegate &&cb) { downcast<cdp1869_device &>(device).m_in_pcb_func = std::move(cb); }
static void static_set_color_clock(device_t &device, int color_clock) { downcast<cdp1869_device &>(device).m_color_clock = color_clock; }
DECLARE_PALETTE_INIT(cdp1869);
@@ -255,9 +250,9 @@ protected:
private:
devcb_read_line m_read_pal_ntsc;
devcb_write_line m_write_prd;
- cdp1869_pcb_read_delegate m_in_pcb_func;
- cdp1869_char_ram_read_delegate m_in_char_ram_func;
- cdp1869_char_ram_write_delegate m_out_char_ram_func;
+ pcb_read_delegate m_in_pcb_func;
+ char_ram_read_delegate m_in_char_ram_func;
+ char_ram_write_delegate m_out_char_ram_func;
int m_color_clock;
//address_space *m_page_ram;
@@ -295,8 +290,6 @@ private:
// device type definition
-extern const device_type CDP1869;
-
-
+DECLARE_DEVICE_TYPE(CDP1869, cdp1869_device)
-#endif // MAME_DEVICES_SOUND_CDP1869_H
+#endif // MAME_SOUND_CDP1869_H
diff --git a/src/devices/sound/cem3394.cpp b/src/devices/sound/cem3394.cpp
index d4b1e9ef501..08734c31023 100644
--- a/src/devices/sound/cem3394.cpp
+++ b/src/devices/sound/cem3394.cpp
@@ -41,42 +41,42 @@
From the datasheet:
- CEM3394_VCO_FREQUENCY:
+ VCO_FREQUENCY:
-4.0 ... +4.0
-0.75 V/octave
f = exp(V) * 431.894
- CEM3394_MODULATION_AMOUNT
+ MODULATION_AMOUNT
0.0 ... +3.5
0.0 == 0.01 x frequency
3.5 == 2.00 x frequency
- CEM3394_WAVE_SELECT
+ WAVE_SELECT
-0.5 ... -0.2 == triangle
+0.9 ... +1.5 == triangle + sawtooth
+2.3 ... +3.9 == sawtooth
- CEM3394_PULSE_WIDTH
+ PULSE_WIDTH
0.0 ... +2.0
0.0 == 0% duty cycle
+2.0 == 100% duty cycle
- CEM3394_MIXER_BALANCE
+ MIXER_BALANCE
-4.0 ... +4.0
0.0 both at -6dB
-20 dB/V
- CEM3394_FILTER_RESONANCE
+ FILTER_RESONANCE
0.0 ... +2.5
0.0 == no resonance
+2.5 == oscillation
- CEM3394_FILTER_FREQENCY
+ FILTER_FREQENCY
-3.0 ... +4.0
-0.375 V/octave
0.0 == 1300Hz
- CEM3394_FINAL_GAIN
+ FINAL_GAIN
0.0 ... +4.0
-20 dB/V
0.0 == -90dB
@@ -105,7 +105,7 @@
// device type definition
-const device_type CEM3394 = device_creator<cem3394_device>;
+DEFINE_DEVICE_TYPE(CEM3394, cem3394_device, "cem3394", "CEM3394")
//**************************************************************************
// LIVE DEVICE
@@ -116,7 +116,7 @@ const device_type CEM3394 = device_creator<cem3394_device>;
//-------------------------------------------------
cem3394_device::cem3394_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CEM3394, "CEM3394", tag, owner, clock, "cem3394", __FILE__),
+ : device_t(mconfig, CEM3394, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_vco_zero_freq(0.0),
@@ -217,7 +217,7 @@ void cem3394_device::sound_stream_update(sound_stream &stream, stream_sample_t *
if (int_volume != 0)
{
if (m_wave_select == 0 && !ext_volume)
- logerror("%f V didn't cut it\n", m_values[CEM3394_WAVE_SELECT]);
+ logerror("%f V didn't cut it\n", m_values[WAVE_SELECT]);
/* handle the pulse component; it maxes out at 0x1932, which is 27% smaller than */
/* the sawtooth (since the value is constant, this is the best place to have an */
@@ -327,7 +327,7 @@ void cem3394_device::sound_stream_update(sound_stream &stream, stream_sample_t *
void cem3394_device::device_start()
{
/* copy global parameters */
- m_sample_rate = CEM3394_SAMPLE_RATE;
+ m_sample_rate = SAMPLE_RATE;
m_inv_sample_rate = 1.0 / (double)m_sample_rate;
/* allocate stream channels, 1 per chip */
@@ -426,13 +426,13 @@ void cem3394_device::set_voltage(int input, double voltage)
switch (input)
{
/* frequency varies from -4.0 to +4.0, at 0.75V/octave */
- case CEM3394_VCO_FREQUENCY:
+ case VCO_FREQUENCY:
temp = m_vco_zero_freq * pow(2.0, -voltage * (1.0 / 0.75));
m_step = (uint32_t)(temp * m_inv_sample_rate * FRACTION_ONE_D);
break;
/* wave select determines triangle/sawtooth enable */
- case CEM3394_WAVE_SELECT:
+ case WAVE_SELECT:
m_wave_select &= ~(WAVE_TRIANGLE | WAVE_SAWTOOTH);
if (voltage >= -0.5 && voltage <= -0.2)
m_wave_select |= WAVE_TRIANGLE;
@@ -443,7 +443,7 @@ void cem3394_device::set_voltage(int input, double voltage)
break;
/* pulse width determines duty cycle; 0.0 means 0%, 2.0 means 100% */
- case CEM3394_PULSE_WIDTH:
+ case PULSE_WIDTH:
if (voltage < 0.0)
{
m_pulse_width = 0;
@@ -460,13 +460,13 @@ void cem3394_device::set_voltage(int input, double voltage)
break;
/* final gain is pretty self-explanatory; 0.0 means ~90dB, 4.0 means 0dB */
- case CEM3394_FINAL_GAIN:
+ case FINAL_GAIN:
m_volume = compute_db_volume(voltage);
break;
/* mixer balance is a pan between the external input and the internal input */
/* 0.0 is equal parts of both; positive values favor external, negative favor internal */
- case CEM3394_MIXER_BALANCE:
+ case MIXER_BALANCE:
if (voltage >= 0.0)
{
m_mixer_internal = compute_db_volume(3.55 - voltage);
@@ -480,14 +480,14 @@ void cem3394_device::set_voltage(int input, double voltage)
break;
/* filter frequency varies from -4.0 to +4.0, at 0.375V/octave */
- case CEM3394_FILTER_FREQENCY:
+ case FILTER_FREQENCY:
temp = m_filter_zero_freq * pow(2.0, -voltage * (1.0 / 0.375));
m_filter_step = (uint32_t)(temp * m_inv_sample_rate * FRACTION_ONE_D);
break;
/* modulation depth is 0.01 at 0V and 2.0 at 3.5V; how it grows from one to the other */
/* is still unclear at this point */
- case CEM3394_MODULATION_AMOUNT:
+ case MODULATION_AMOUNT:
if (voltage < 0.0)
m_modulation_depth = (uint32_t)(0.01 * FRACTION_ONE_D);
else if (voltage > 3.5)
@@ -497,7 +497,7 @@ void cem3394_device::set_voltage(int input, double voltage)
break;
/* this is not yet implemented */
- case CEM3394_FILTER_RESONANCE:
+ case FILTER_RESONANCE:
break;
}
}
@@ -509,13 +509,13 @@ double cem3394_device::get_parameter(int input)
switch (input)
{
- case CEM3394_VCO_FREQUENCY:
+ case VCO_FREQUENCY:
return m_vco_zero_freq * pow(2.0, -voltage * (1.0 / 0.75));
- case CEM3394_WAVE_SELECT:
+ case WAVE_SELECT:
return voltage;
- case CEM3394_PULSE_WIDTH:
+ case PULSE_WIDTH:
if (voltage <= 0.0)
return 0.0;
else if (voltage >= 2.0)
@@ -523,13 +523,13 @@ double cem3394_device::get_parameter(int input)
else
return voltage * 0.5;
- case CEM3394_FINAL_GAIN:
+ case FINAL_GAIN:
return compute_db(voltage);
- case CEM3394_MIXER_BALANCE:
+ case MIXER_BALANCE:
return voltage * 0.25;
- case CEM3394_MODULATION_AMOUNT:
+ case MODULATION_AMOUNT:
if (voltage < 0.0)
return 0.01;
else if (voltage > 3.5)
@@ -537,7 +537,7 @@ double cem3394_device::get_parameter(int input)
else
return (voltage * (1.0 / 3.5)) * 1.99 + 0.01;
- case CEM3394_FILTER_RESONANCE:
+ case FILTER_RESONANCE:
if (voltage < 0.0)
return 0.0;
else if (voltage > 2.5)
@@ -545,7 +545,7 @@ double cem3394_device::get_parameter(int input)
else
return voltage * (1.0 / 2.5);
- case CEM3394_FILTER_FREQENCY:
+ case FILTER_FREQENCY:
return m_filter_zero_freq * pow(2.0, -voltage * (1.0 / 0.375));
}
return 0.0;
diff --git a/src/devices/sound/cem3394.h b/src/devices/sound/cem3394.h
index 67a8fce7cc8..2240534006d 100644
--- a/src/devices/sound/cem3394.h
+++ b/src/devices/sound/cem3394.h
@@ -1,26 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
-#pragma once
-
-#ifndef __CEM3394_H__
-#define __CEM3394_H__
-
-#define CEM3394_SAMPLE_RATE (44100*4)
+#ifndef MAME_SOUND_CEM3394_H
+#define MAME_SOUND_CEM3394_H
-// inputs
-enum
-{
- CEM3394_VCO_FREQUENCY = 0,
- CEM3394_MODULATION_AMOUNT,
- CEM3394_WAVE_SELECT,
- CEM3394_PULSE_WIDTH,
- CEM3394_MIXER_BALANCE,
- CEM3394_FILTER_RESONANCE,
- CEM3394_FILTER_FREQENCY,
- CEM3394_FINAL_GAIN
-};
-
-typedef device_delegate<void (int count, short *buffer)> cem3394_ext_input_delegate;
+#pragma once
#define CEM3394_EXT_INPUT(_name) void _name(int count, short *buffer)
@@ -34,7 +17,7 @@ typedef device_delegate<void (int count, short *buffer)> cem3394_ext_input_deleg
MCFG_DEVICE_REPLACE(_tag, CEM3394, _clock)
#define MCFG_CEM3394_EXT_INPUT_CB(_class, _method) \
- cem3394_device::set_ext_input_callback(*device, cem3394_ext_input_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ cem3394_device::set_ext_input_callback(*device, cem3394_device::ext_input_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_CEM3394_VCO_ZERO(_freq) \
cem3394_device::set_vco_zero_freq(*device, _freq);
@@ -43,14 +26,29 @@ typedef device_delegate<void (int count, short *buffer)> cem3394_ext_input_deleg
cem3394_device::set_filter_zero_freq(*device, _freq);
-class cem3394_device : public device_t,
- public device_sound_interface
+class cem3394_device : public device_t, public device_sound_interface
{
public:
+ static constexpr unsigned SAMPLE_RATE = 44100*4;
+
+ // inputs
+ enum
+ {
+ VCO_FREQUENCY = 0,
+ MODULATION_AMOUNT,
+ WAVE_SELECT,
+ PULSE_WIDTH,
+ MIXER_BALANCE,
+ FILTER_RESONANCE,
+ FILTER_FREQENCY,
+ FINAL_GAIN
+ };
+
+ typedef device_delegate<void (int count, short *buffer)> ext_input_delegate;
+
cem3394_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~cem3394_device() { }
- static void set_ext_input_callback(device_t &device, cem3394_ext_input_delegate callback) { downcast<cem3394_device &>(device).m_ext_cb = callback; }
+ static void set_ext_input_callback(device_t &device, ext_input_delegate &&callback) { downcast<cem3394_device &>(device).m_ext_cb = std::move(callback); }
static void set_vco_zero_freq(device_t &device, double freq) { downcast<cem3394_device &>(device).m_vco_zero_freq = freq; }
static void set_filter_zero_freq(device_t &device, double freq) { downcast<cem3394_device &>(device).m_filter_zero_freq = freq; }
@@ -66,14 +64,14 @@ public:
void set_voltage(int input, double voltage);
// Get the translated parameter associated with the given input as follows:
- // CEM3394_VCO_FREQUENCY: frequency in Hz
- // CEM3394_MODULATION_AMOUNT: scale factor, 0.0 to 2.0
- // CEM3394_WAVE_SELECT: voltage from this line
- // CEM3394_PULSE_WIDTH: width fraction, from 0.0 to 1.0
- // CEM3394_MIXER_BALANCE: balance, from -1.0 to 1.0
- // CEM3394_FILTER_RESONANCE: resonance, from 0.0 to 1.0
- // CEM3394_FILTER_FREQENCY: frequency, in Hz
- // CEM3394_FINAL_GAIN: gain, in dB
+ // VCO_FREQUENCY: frequency in Hz
+ // MODULATION_AMOUNT: scale factor, 0.0 to 2.0
+ // WAVE_SELECT: voltage from this line
+ // PULSE_WIDTH: width fraction, from 0.0 to 1.0
+ // MIXER_BALANCE: balance, from -1.0 to 1.0
+ // FILTER_RESONANCE: resonance, from 0.0 to 1.0
+ // FILTER_FREQENCY: frequency, in Hz
+ // FINAL_GAIN: gain, in dB
double get_parameter(int input);
private:
@@ -81,7 +79,7 @@ private:
uint32_t compute_db_volume(double voltage);
private:
- cem3394_ext_input_delegate m_ext_cb; /* callback to generate external samples */
+ ext_input_delegate m_ext_cb; /* callback to generate external samples */
sound_stream *m_stream; /* our stream */
double m_vco_zero_freq; /* frequency of VCO at 0.0V */
@@ -111,7 +109,6 @@ private:
std::unique_ptr<int16_t[]> m_external_buffer;
};
-extern const device_type CEM3394;
-
+DECLARE_DEVICE_TYPE(CEM3394, cem3394_device)
-#endif /* __CEM3394_H__ */
+#endif // MAME_SOUND_CEM3394_H
diff --git a/src/devices/sound/dac.cpp b/src/devices/sound/dac.cpp
index dd0e24b6829..c095ba3ee05 100644
--- a/src/devices/sound/dac.cpp
+++ b/src/devices/sound/dac.cpp
@@ -12,8 +12,8 @@
***************************************************************************/
-#define DAC_GENERATOR_EPILOG(_dac_type, _dac_class) \
-const device_type _dac_type = device_creator<_dac_class>;
+#define DAC_GENERATOR_EPILOG(_dac_type, _dac_class, _dac_description, _dac_shortname) \
+DEFINE_DEVICE_TYPE(_dac_type, _dac_class, _dac_shortname, _dac_description)
#include "emu.h"
#include "dac.h"
diff --git a/src/devices/sound/dac.h b/src/devices/sound/dac.h
index ca309f7ddc3..48e9d61566b 100644
--- a/src/devices/sound/dac.h
+++ b/src/devices/sound/dac.h
@@ -12,8 +12,12 @@
***************************************************************************/
-#ifndef __DAC_H__
-#define __DAC_H__
+#ifndef MAME_SOUND_DAC_H
+#define MAME_SOUND_DAC_H
+
+#pragma once
+
+#include <type_traits>
#define DAC_VREF_POS_INPUT (0)
@@ -40,16 +44,13 @@ public:
virtual DECLARE_WRITE16_MEMBER(write) = 0;
};
-template <int bits>
-stream_sample_t dac_multiply(const double vref, const stream_sample_t code)
+template <unsigned bits>
+constexpr stream_sample_t dac_multiply(const double vref, const stream_sample_t code)
{
- if (bits > 1)
- return (vref * code) / (1 << (bits));
-
- return vref * code;
+ return (bits > 1) ? ((vref * code) / (1 << bits)) : (vref * code);
}
-template <int bits>
+template <unsigned bits>
class dac_code
{
protected:
@@ -66,7 +67,7 @@ protected:
inline void setCode(stream_sample_t code)
{
- code &= ~(~0U << bits);
+ code &= ~(~std::make_unsigned_t<stream_sample_t>(0) << bits);
if (m_code != code)
{
m_stream->update();
@@ -77,34 +78,29 @@ protected:
virtual void sound_stream_update_tag(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) = 0;
};
-template <int bits>
-class dac_code_binary :
- protected dac_code<bits>
+template <unsigned bits>
+class dac_code_binary : protected dac_code<bits>
{
protected:
- dac_code_binary(double gain) :
- dac_code<bits>(gain)
- {
- }
+ using dac_code<bits>::dac_code;
virtual void sound_stream_update_tag(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override
{
for (int samp = 0; samp < samples; samp++)
{
- double vref_pos = inputs[DAC_VREF_POS_INPUT][samp] * this->m_gain;
- double vref_neg = inputs[DAC_VREF_NEG_INPUT][samp] * this->m_gain;
- stream_sample_t vout = vref_neg + dac_multiply<bits>(vref_pos - vref_neg, this->m_code);
+ double const vref_pos = inputs[DAC_VREF_POS_INPUT][samp] * this->m_gain;
+ double const vref_neg = inputs[DAC_VREF_NEG_INPUT][samp] * this->m_gain;
+ stream_sample_t const vout = vref_neg + dac_multiply<bits>(vref_pos - vref_neg, this->m_code);
outputs[0][samp] = vout;
}
}
};
-template <int bits>
-class dac_code_ones_complement :
- protected dac_code<bits>
+template <unsigned bits>
+class dac_code_ones_complement : protected dac_code<bits>
{
protected:
- dac_code_ones_complement(double gain) : dac_code<bits>(gain) {}
+ using dac_code<bits>::dac_code;
virtual void sound_stream_update_tag(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override
{
@@ -112,8 +108,8 @@ protected:
{
for (int samp = 0; samp < samples; samp++)
{
- double vref_neg = inputs[DAC_VREF_NEG_INPUT][samp] * this->m_gain;
- stream_sample_t vout = dac_multiply<bits - 1>(vref_neg, this->m_code ^ ~(~0U << bits));
+ double const vref_neg = inputs[DAC_VREF_NEG_INPUT][samp] * this->m_gain;
+ stream_sample_t const vout = dac_multiply<bits - 1>(vref_neg, this->m_code ^ ~(~0U << bits));
outputs[0][samp] = vout;
}
}
@@ -121,45 +117,37 @@ protected:
{
for (int samp = 0; samp < samples; samp++)
{
- double vref_pos = inputs[DAC_VREF_POS_INPUT][samp] * this->m_gain;
- stream_sample_t vout = dac_multiply<bits - 1>(vref_pos, this->m_code);
+ double const vref_pos = inputs[DAC_VREF_POS_INPUT][samp] * this->m_gain;
+ stream_sample_t const vout = dac_multiply<bits - 1>(vref_pos, this->m_code);
outputs[0][samp] = vout;
}
}
}
};
-template <int bits>
-class dac_code_twos_complement :
- protected dac_code<bits>
+template <unsigned bits>
+class dac_code_twos_complement : protected dac_code<bits>
{
protected:
- dac_code_twos_complement(double gain) :
- dac_code<bits>(gain)
- {
- }
+ using dac_code<bits>::dac_code;
virtual void sound_stream_update_tag(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override
{
for (int samp = 0; samp < samples; samp++)
{
- double vref_pos = inputs[DAC_VREF_POS_INPUT][samp] * this->m_gain;
- double vref_neg = inputs[DAC_VREF_NEG_INPUT][samp] * this->m_gain;
- stream_sample_t vout = vref_neg + dac_multiply<bits>(vref_pos - vref_neg, this->m_code ^ (1 << (bits - 1)));
+ double const vref_pos = inputs[DAC_VREF_POS_INPUT][samp] * this->m_gain;
+ double const vref_neg = inputs[DAC_VREF_NEG_INPUT][samp] * this->m_gain;
+ stream_sample_t const vout = vref_neg + dac_multiply<bits>(vref_pos - vref_neg, this->m_code ^ (1 << (bits - 1)));
outputs[0][samp] = vout;
}
}
};
-template <int bits>
-class dac_code_sign_magntitude :
- protected dac_code<bits>
+template <unsigned bits>
+class dac_code_sign_magntitude : protected dac_code<bits>
{
protected:
- dac_code_sign_magntitude(double gain) :
- dac_code<bits>(gain)
- {
- }
+ using dac_code<bits>::dac_code;
virtual void sound_stream_update_tag(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override
{
@@ -167,8 +155,8 @@ protected:
{
for (int samp = 0; samp < samples; samp++)
{
- double vref_neg = inputs[DAC_VREF_NEG_INPUT][samp] * this->m_gain;
- stream_sample_t vout = dac_multiply<bits - 1>(vref_neg, this->m_code ^ (1 << (bits - 1)));
+ double const vref_neg = inputs[DAC_VREF_NEG_INPUT][samp] * this->m_gain;
+ stream_sample_t const vout = dac_multiply<bits - 1>(vref_neg, this->m_code ^ (1 << (bits - 1)));
outputs[0][samp] = vout;
}
}
@@ -176,8 +164,8 @@ protected:
{
for (int samp = 0; samp < samples; samp++)
{
- double vref_pos = inputs[DAC_VREF_POS_INPUT][samp] * this->m_gain;
- stream_sample_t vout = dac_multiply<bits - 1>(vref_pos, this->m_code);
+ double const vref_pos = inputs[DAC_VREF_POS_INPUT][samp] * this->m_gain;
+ stream_sample_t const vout = dac_multiply<bits - 1>(vref_pos, this->m_code);
outputs[0][samp] = vout;
}
}
@@ -191,8 +179,8 @@ class dac_device : public device_t,
protected _dac_code
{
protected:
- dac_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, double gain)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ dac_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, double gain) :
+ device_t(mconfig, type, tag, owner, clock),
device_sound_interface(mconfig, *this),
_dac_code(gain)
{
@@ -219,8 +207,8 @@ class dac_generator<dac_bit_interface, _dac_code> :
public dac_device<_dac_code>
{
public:
- dac_generator(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, double gain) :
- dac_device<_dac_code>(mconfig, type, name, tag, owner, clock, shortname, source, gain)
+ dac_generator(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, double gain) :
+ dac_device<_dac_code>(mconfig, type, tag, owner, clock, gain)
{
}
@@ -234,8 +222,8 @@ class dac_generator<dac_byte_interface, _dac_code> :
public dac_device<_dac_code>
{
public:
- dac_generator(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, double gain) :
- dac_device<_dac_code>(mconfig, type, name, tag, owner, clock, shortname, source, gain)
+ dac_generator(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, double gain) :
+ dac_device<_dac_code>(mconfig, type, tag, owner, clock, gain)
{
}
@@ -249,8 +237,8 @@ class dac_generator<dac_word_interface, _dac_code> :
public dac_device<_dac_code>
{
public:
- dac_generator(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, double gain) :
- dac_device<_dac_code>(mconfig, type, name, tag, owner, clock, shortname, source, gain)
+ dac_generator(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, double gain) :
+ dac_device<_dac_code>(mconfig, type, tag, owner, clock, gain)
{
}
@@ -258,22 +246,22 @@ public:
virtual DECLARE_WRITE16_MEMBER(write) override { this->setCode(data); }
};
-const double dac_gain_r2r = 1.0;
-const double dac_gain_binary_weighted = 2.0;
+constexpr double dac_gain_r2r = 1.0;
+constexpr double dac_gain_binary_weighted = 2.0;
#ifndef DAC_GENERATOR_EPILOG
-#define DAC_GENERATOR_EPILOG(_dac_type, _dac_class) //
+#define DAC_GENERATOR_EPILOG(_dac_type, _dac_class, _dac_description, _dac_shortname)
#endif
#define DAC_GENERATOR(_dac_type, _dac_class, _dac_interface, _dac_coding, _dac_gain, _dac_description, _dac_shortname) \
-extern const device_type _dac_type; \
+DECLARE_DEVICE_TYPE(_dac_type, _dac_class) \
class _dac_class : public dac_generator<_dac_interface, _dac_coding> \
{\
public: \
_dac_class(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : \
- dac_generator(mconfig, _dac_type, _dac_description, tag, owner, clock, _dac_shortname, __FILE__, _dac_gain) {} \
+ dac_generator(mconfig, _dac_type, tag, owner, clock, _dac_gain) {} \
}; \
-DAC_GENERATOR_EPILOG(_dac_type, _dac_class)
+DAC_GENERATOR_EPILOG(_dac_type, _dac_class, _dac_description, _dac_shortname)
// DAC chips
DAC_GENERATOR(AD557, ad557_device, dac_byte_interface, dac_code_binary<8>, dac_gain_r2r, "AD557", "ad557")
@@ -321,4 +309,4 @@ DAC_GENERATOR(DAC_16BIT_R2R_TWOS_COMPLEMENT, dac_16bit_r2r_twos_complement_devic
#undef DAC_GENERATOR
#undef DAC_GENERATOR_EPILOG
-#endif /* __DAC_H__ */
+#endif // MAME_SOUND_DAC_H
diff --git a/src/devices/sound/dac76.cpp b/src/devices/sound/dac76.cpp
index 53739e1c254..388ccb7f2b0 100644
--- a/src/devices/sound/dac76.cpp
+++ b/src/devices/sound/dac76.cpp
@@ -23,7 +23,7 @@ constexpr int dac76_device::m_level[];
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type DAC76 = device_creator<dac76_device>;
+DEFINE_DEVICE_TYPE(DAC76, dac76_device, "dac76", "PMI DAC-76 COMDAC")
//**************************************************************************
@@ -35,7 +35,7 @@ const device_type DAC76 = device_creator<dac76_device>;
//-------------------------------------------------
dac76_device::dac76_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, DAC76, "DAC-76 COMDAC", tag, owner, clock, "dac76", __FILE__),
+ device_t(mconfig, DAC76, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_chord(0),
diff --git a/src/devices/sound/dac76.h b/src/devices/sound/dac76.h
index ee0a4225e47..c9a78c51a19 100644
--- a/src/devices/sound/dac76.h
+++ b/src/devices/sound/dac76.h
@@ -19,10 +19,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_DAC76_H
+#define MAME_SOUND_DAC76_H
-#ifndef __DAC76_H__
-#define __DAC76_H__
+#pragma once
@@ -70,6 +70,6 @@ private:
};
// device type definition
-extern const device_type DAC76;
+DECLARE_DEVICE_TYPE(DAC76, dac76_device)
-#endif // __DAC76_H__
+#endif // MAME_SOUND_DAC76_H
diff --git a/src/devices/sound/dave.cpp b/src/devices/sound/dave.cpp
index 342ba571aaf..c67385cef71 100644
--- a/src/devices/sound/dave.cpp
+++ b/src/devices/sound/dave.cpp
@@ -9,14 +9,14 @@
#include "emu.h"
#include "dave.h"
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
#define STEP 0x08000
@@ -25,7 +25,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type DAVE = device_creator<dave_device>;
+DEFINE_DEVICE_TYPE(DAVE, dave_device, "dave", "Inteligent Designs DAVE")
DEVICE_ADDRESS_MAP_START( z80_program_map, 8, dave_device )
@@ -54,7 +54,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
dave_device::dave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DAVE, "DAVE", tag, owner, clock, "dave", __FILE__),
+ : device_t(mconfig, DAVE, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_sound_interface(mconfig, *this),
m_program_space_config("program", ENDIANNESS_LITTLE, 8, 22, 0, *ADDRESS_MAP_NAME(program_map)),
diff --git a/src/devices/sound/dave.h b/src/devices/sound/dave.h
index 10e9fb26905..6630ff27115 100644
--- a/src/devices/sound/dave.h
+++ b/src/devices/sound/dave.h
@@ -6,8 +6,8 @@
**********************************************************************/
-#ifndef MAME_DEVICES_SOUND_DAVE_H
-#define MAME_DEVICES_SOUND_DAVE_H
+#ifndef MAME_SOUND_DAVE_H
+#define MAME_SOUND_DAVE_H
#pragma once
@@ -55,9 +55,9 @@ class dave_device : public device_t,
public:
dave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_lh_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_lh.set_callback(object); }
- template<class _Object> static devcb_base &set_rh_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_rh.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<dave_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_lh_wr_callback(device_t &device, Object &&cb) { return downcast<dave_device &>(device).m_write_lh.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rh_wr_callback(device_t &device, Object &&cb) { return downcast<dave_device &>(device).m_write_rh.set_callback(std::forward<Object>(cb)); }
virtual DECLARE_ADDRESS_MAP(z80_program_map, 8);
virtual DECLARE_ADDRESS_MAP(z80_io_map, 8);
@@ -146,6 +146,6 @@ private:
// device type definition
-extern const device_type DAVE;
+DECLARE_DEVICE_TYPE(DAVE, dave_device)
-#endif // MAME_DEVICES_SOUND_DAVE_H
+#endif // MAME_SOUND_DAVE_H
diff --git a/src/devices/sound/digitalk.cpp b/src/devices/sound/digitalk.cpp
index 329eb1c1e7f..d69f9098cc3 100644
--- a/src/devices/sound/digitalk.cpp
+++ b/src/devices/sound/digitalk.cpp
@@ -240,7 +240,7 @@ complete set of waveforms is repeated R times.
// Quantized intensity values, first index is the volume, second the
// intensity (positive half only, real value goes -8..7)
-static const short pcm_levels[8][8] = {
+static constexpr short pcm_levels[8][8] = {
{ 473, 945, 1418, 1890, 2363, 2835, 3308, 3781 },
{ 655, 1310, 1966, 2621, 3276, 3931, 4586, 5242 },
{ 925, 1851, 2776, 3702, 4627, 5553, 6478, 7404 },
@@ -251,20 +251,20 @@ static const short pcm_levels[8][8] = {
{ 4095, 8190, 12285, 16380, 20475, 24570, 28665, 32760 },
};
-static const int delta1[16] = { -4, -4, -1, -1, -2, -2, 0, 0, 0, 0, 2, 2, 1, 1, 4, 4 };
-static const int delta2[16] = { 0, -1, -2, -3, 1, 0, -1, -2, 2, 1, 0, -1, 3, 2, 1, 0 };
+static constexpr int delta1[16] = { -4, -4, -1, -1, -2, -2, 0, 0, 0, 0, 2, 2, 1, 1, 4, 4 };
+static constexpr int delta2[16] = { 0, -1, -2, -3, 1, 0, -1, -2, 2, 1, 0, -1, 3, 2, 1, 0 };
// Frequency quantizations, values are in units of 128us.
-static const int pitch_vals[32] = {
+static constexpr int pitch_vals[32] = {
97, 95, 92, 89, 87, 84, 82, 80, 77, 75, 73, 71, 69, 67, 65, 63,
61, 60, 58, 56, 55, 53, 52, 50, 49, 48, 46, 45, 43, 42, 41, 40
};
-const device_type DIGITALKER = device_creator<digitalker_device>;
+DEFINE_DEVICE_TYPE(DIGITALKER, digitalker_device, "digitalker", "MM54104 Digitalker")
digitalker_device::digitalker_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DIGITALKER, "Digitalker", tag, owner, clock, "digitalker", __FILE__),
+ : device_t(mconfig, DIGITALKER, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_rom(*this, DEVICE_SELF),
m_stream(nullptr),
diff --git a/src/devices/sound/digitalk.h b/src/devices/sound/digitalk.h
index d63aeaa3eb9..b93ee4a42f3 100644
--- a/src/devices/sound/digitalk.h
+++ b/src/devices/sound/digitalk.h
@@ -1,17 +1,20 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef _DIGITALKER_H_
-#define _DIGITALKER_H_
+#ifndef MAME_SOUND_DIGITALK_H
+#define MAME_SOUND_DIGITALK_H
+
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_DIGITALKER_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, DIGITALKER, _clock)
-#define MCFG_DIGITALKER_REPLACE(_tag, _clock) \
- MCFG_DEVICE_REPLACE(_tag, DIGITALKER, _clock)
+#define MCFG_DIGITALKER_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), DIGITALKER, (clock))
+
+#define MCFG_DIGITALKER_REPLACE(tag, clock) \
+ MCFG_DEVICE_REPLACE((tag), DIGITALKER, (clock))
//**************************************************************************
@@ -20,18 +23,18 @@
// ======================> digitalker_device
-class digitalker_device : public device_t,
- public device_sound_interface
+class digitalker_device : public device_t, public device_sound_interface
{
public:
digitalker_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~digitalker_device() { }
void digitalker_0_cs_w(int line);
void digitalker_0_cms_w(int line);
void digitalker_0_wr_w(int line);
int digitalker_0_intr_r();
+ DECLARE_WRITE8_MEMBER(digitalker_data_w);
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -39,9 +42,6 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_WRITE8_MEMBER(digitalker_data_w);
-
private:
void digitalker_write(uint8_t *adr, uint8_t vol, int8_t dac);
uint8_t digitalker_pitch_next(uint8_t val, uint8_t prev, int step);
@@ -58,7 +58,6 @@ private:
int digitalker_intr_r();
void digitalker_register_for_save();
-private:
required_region_ptr<uint8_t> m_rom;
sound_stream *m_stream;
@@ -95,7 +94,6 @@ private:
int16_t m_dac[128];
};
-extern const device_type DIGITALKER;
-
+DECLARE_DEVICE_TYPE(DIGITALKER, digitalker_device)
-#endif
+#endif // MAME_SOUND_DIGITALK_H
diff --git a/src/devices/sound/disc_cls.h b/src/devices/sound/disc_cls.h
index fbc8f2508f8..1855fbc5444 100644
--- a/src/devices/sound/disc_cls.h
+++ b/src/devices/sound/disc_cls.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
-#pragma once
+#ifndef MAME_SOUND_DISC_CLS_H
+#define MAME_SOUND_DISC_CLS_H
-#ifndef __DISC_CLS_H__
-#define __DISC_CLS_H__
+#pragma once
/***********************************************************************
*
@@ -255,4 +255,4 @@ public:
#include "disc_flt.h"
#include "disc_dev.h"
-#endif /* __DISCRETE_H__ */
+#endif // MAME_SOUND_DISC_CLS_H
diff --git a/src/devices/sound/disc_dev.h b/src/devices/sound/disc_dev.h
index 19d96339889..35803662197 100644
--- a/src/devices/sound/disc_dev.h
+++ b/src/devices/sound/disc_dev.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
-#pragma once
+#ifndef MAME_SOUND_DISC_DEV_H
+#define MAME_SOUND_DISC_DEV_H
-#ifndef __DISC_DEV_H__
-#define __DISC_DEV_H__
+#pragma once
/***********************************************************************
*
@@ -126,4 +126,4 @@ DISCRETE_CLASS_STEP_RESET(dsd_ls624, 1,
int m_out_type;
);
-#endif /* __DISC_WAV_H__ */
+#endif // MAME_SOUND_DISC_DEV_H
diff --git a/src/devices/sound/disc_flt.h b/src/devices/sound/disc_flt.h
index 1ec801110a1..63ee98b24ea 100644
--- a/src/devices/sound/disc_flt.h
+++ b/src/devices/sound/disc_flt.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
-#pragma once
+#ifndef MAME_SOUND_DISC_FLT_H
+#define MAME_SOUND_DISC_FLT_H
-#ifndef __DISC_FLTH__
-#define __DISC_FLT_H__
+#pragma once
/***********************************************************************
*
@@ -177,4 +177,4 @@ DISCRETE_CLASS_STEP_RESET(dst_rcdisc2N, 1,
);
-#endif /* __DISC_FLT_H__ */
+#endif // MAME_SOUND_DISC_FLT_H
diff --git a/src/devices/sound/disc_mth.h b/src/devices/sound/disc_mth.h
index 99c387b245a..418554b2ce4 100644
--- a/src/devices/sound/disc_mth.h
+++ b/src/devices/sound/disc_mth.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
-#pragma once
+#ifndef MAME_SOUND_DISC_MTH_H
+#define MAME_SOUND_DISC_MTH_H
-#ifndef __DISC_MTH_H__
-#define __DISC_MTH_H__
+#pragma once
/***********************************************************************
*
@@ -236,4 +236,4 @@ DISCRETE_CLASS_STEP(dst_xtime_or, 1, /* no context */ );
DISCRETE_CLASS_STEP(dst_xtime_xor, 1, /* no context */ );
-#endif /* __DISC_WAV_H__ */
+#endif // MAME_SOUND_DISC_MTH_H
diff --git a/src/devices/sound/disc_wav.h b/src/devices/sound/disc_wav.h
index c9d6ea36a6c..5c6e23dd399 100644
--- a/src/devices/sound/disc_wav.h
+++ b/src/devices/sound/disc_wav.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
-#pragma once
+#ifndef MAME_SOUND_DISC_WAV_H
+#define MAME_SOUND_DISC_WAV_H
-#ifndef __DISC_WAV_H__
-#define __DISC_WAV_H__
+#pragma once
/***********************************************************************
*
@@ -190,4 +190,4 @@ DISCRETE_CLASS_STEP_RESET(dss_adsrenv, 1,
);
-#endif /* __DISC_WAV_H__ */
+#endif // MAME_SOUND_DISC_WAV_H
diff --git a/src/devices/sound/discrete.cpp b/src/devices/sound/discrete.cpp
index 62c8707067a..847f24f9f17 100644
--- a/src/devices/sound/discrete.cpp
+++ b/src/devices/sound/discrete.cpp
@@ -36,16 +36,19 @@
************************************************************************/
#include "emu.h"
-#include "wavwrite.h"
#include "discrete.h"
+
+#include "wavwrite.h"
+
#include <atomic>
#include <iostream>
+
/* for_each collides with c++ standard libraries - include it here */
#define for_each(_T, _e, _l) for (_T _e = (_l)->begin_ptr() ; _e <= (_l)->end_ptr(); _e++)
// device type definition
-const device_type DISCRETE = device_creator<discrete_sound_device>;
+DEFINE_DEVICE_TYPE(DISCRETE, discrete_sound_device, "discrete", "Discrete Sound")
/*************************************
*
@@ -835,8 +838,8 @@ void discrete_device::static_set_intf(device_t &device, const discrete_block *in
// discrete_device - constructor
//-------------------------------------------------
-discrete_device::discrete_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, type, name, tag, owner, clock, "discrete", __FILE__),
+discrete_device::discrete_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
m_intf(nullptr),
m_sample_rate(0),
m_sample_time(0),
@@ -851,7 +854,7 @@ discrete_device::discrete_device(const machine_config &mconfig, device_type type
}
discrete_sound_device::discrete_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : discrete_device(mconfig, DISCRETE, "DISCRETE", tag, owner, clock),
+ : discrete_device(mconfig, DISCRETE, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr)
{
diff --git a/src/devices/sound/discrete.h b/src/devices/sound/discrete.h
index b51c459194f..da0197b7e67 100644
--- a/src/devices/sound/discrete.h
+++ b/src/devices/sound/discrete.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
-#pragma once
+#ifndef MAME_SOUND_DISCRETE_H
+#define MAME_SOUND_DISCRETE_H
-#ifndef __DISCRETE_H__
-#define __DISCRETE_H__
+#pragma once
#include "machine/rescap.h"
@@ -4282,7 +4282,7 @@ class discrete_device : public device_t
protected:
// construction/destruction
- discrete_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock);
+ discrete_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
public:
// inline configuration helpers
@@ -4405,7 +4405,7 @@ private:
};
// device type definition
-extern const device_type DISCRETE;
+DECLARE_DEVICE_TYPE(DISCRETE, discrete_sound_device)
/*************************************
*
@@ -4731,4 +4731,4 @@ discrete_base_node *discrete_create_node(discrete_device * pdev, const discrete_
-#endif /* __DISCRETE_H__ */
+#endif // MAME_SOUND_DISCRETE_H
diff --git a/src/devices/sound/dmadac.cpp b/src/devices/sound/dmadac.cpp
index fc8f3a3b8fe..497861caae8 100644
--- a/src/devices/sound/dmadac.cpp
+++ b/src/devices/sound/dmadac.cpp
@@ -10,18 +10,10 @@
#include "emu.h"
#include "dmadac.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-/*************************************
- *
- * Debugging
- *
- *************************************/
-
-#define VERBOSE 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
-
/*************************************
*
@@ -119,7 +111,8 @@ void dmadac_sound_device::transfer(int channel, offs_t channel_spacing, offs_t f
logerror("dmadac_transfer: buffer overrun (short %d frames)\n", total_frames - j);
}
- //LOG(("dmadac_transfer - %d samples, %d effective, %d in buffer\n", total_frames, (int)(total_frames * (double)DEFAULT_SAMPLE_RATE / dmadac[first_channel].frequency), dmadac[first_channel].curinpos - dmadac[first_channel].curoutpos));
+ // FIXME: this line has rotted and can no longer compile - it should be fixed and uncommented or removed
+ //LOG("dmadac_transfer - %d samples, %d effective, %d in buffer\n", total_frames, int(total_frames * double(DEFAULT_SAMPLE_RATE) / dmadac[first_channel].frequency), dmadac[first_channel].curinpos - dmadac[first_channel].curoutpos);
}
@@ -196,10 +189,10 @@ void dmadac_sound_device::set_volume(uint16_t volume)
m_volume = volume;
}
-const device_type DMADAC = device_creator<dmadac_sound_device>;
+DEFINE_DEVICE_TYPE(DMADAC, dmadac_sound_device, "dmadac", "DMA-driven DAC")
dmadac_sound_device::dmadac_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DMADAC, "DMA-driven DAC", tag, owner, clock, "dmadac", __FILE__),
+ : device_t(mconfig, DMADAC, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_buffer(nullptr),
m_bufin(0),
diff --git a/src/devices/sound/dmadac.h b/src/devices/sound/dmadac.h
index 5350eadf872..4222d020e86 100644
--- a/src/devices/sound/dmadac.h
+++ b/src/devices/sound/dmadac.h
@@ -7,14 +7,13 @@
*
**********************************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_DMADAC_H
+#define MAME_SOUND_DMADAC_H
-#ifndef __DMADAC_H__
-#define __DMADAC_H__
+#pragma once
-class dmadac_sound_device : public device_t,
- public device_sound_interface
+class dmadac_sound_device : public device_t, public device_sound_interface
{
public:
dmadac_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -31,6 +30,7 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+
private:
// internal state
/* sound stream and buffers */
@@ -45,7 +45,7 @@ private:
double m_frequency;
};
-extern const device_type DMADAC;
+DECLARE_DEVICE_TYPE(DMADAC, dmadac_sound_device)
void dmadac_transfer(dmadac_sound_device **devlist, uint8_t num_channels, offs_t channel_spacing, offs_t frame_spacing, offs_t total_frames, int16_t *data);
@@ -53,4 +53,4 @@ void dmadac_enable(dmadac_sound_device **devlist, uint8_t num_channels, uint8_t
void dmadac_set_frequency(dmadac_sound_device **devlist, uint8_t num_channels, double frequency);
void dmadac_set_volume(dmadac_sound_device **devlist, uint8_t num_channels, uint16_t volume);
-#endif /* __DMADAC_H__ */
+#endif // MAME_SOUND_DMADAC_H
diff --git a/src/devices/sound/es1373.cpp b/src/devices/sound/es1373.cpp
index 2a93d309110..81658546ab2 100644
--- a/src/devices/sound/es1373.cpp
+++ b/src/devices/sound/es1373.cpp
@@ -11,6 +11,66 @@
#define LOG_ES_FILE (0)
+/* Ensonic ES1373 registers 0x00-0x3f */
+#define ES_INT_CS_CTRL (0x00/4)
+#define ES_INT_CS_STATUS (0x04/4)
+#define ES_UART_DATA (0x08/4)
+#define ES_UART_STATUS (0x09/4)
+#define ES_UART_CTRL (0x09/4)
+#define ES_UART_RSVD (0x0A/4)
+#define ES_MEM_PAGE (0x0C/4)
+#define ES_SRC_IF (0x10/4)
+#define ES_CODEC (0x14/4)
+#define ES_LEGACY (0x18/4)
+#define ES_CHAN_CTRL (0x1C/4)
+#define ES_SERIAL_CTRL (0x20/4)
+#define ES_DAC1_CNT (0x24/4)
+#define ES_DAC2_CNT (0x28/4)
+#define ES_ADC_CNT (0x2C/4)
+#define ES_HOST_IF0 (0x30/4)
+#define ES_HOST_IF1 (0x34/4)
+#define ES_HOST_IF2 (0x38/4)
+#define ES_HOST_IF3 (0x3C/4)
+
+// Interrupt/Chip Select Control Register (ES_INT_CS_CTRL) bits
+#define ICCTRL_ADC_STOP_MASK 0x00002000
+#define ICCTRL_DAC1_EN_MASK 0x00000040
+#define ICCTRL_DAC2_EN_MASK 0x00000020
+#define ICCTRL_ADC_EN_MASK 0x00000010
+#define ICCTRL_UART_EN_MASK 0x00000008
+#define ICCTRL_JYSTK_EN_MASK 0x00000004
+
+// Interrupt/Chip Select Status Register (ES_INT_CS_STATUS) bits
+#define ICSTATUS_INTR_MASK 0x80000000
+#define ICSTATUS_DAC1_INT_MASK 0x00000004
+#define ICSTATUS_DAC2_INT_MASK 0x00000002
+#define ICSTATUS_ADC_INT_MASK 0x00000001
+
+// Serial Interface Control Register (ES_SERIAL_CTRL) bits
+#define SCTRL_P2_END_MASK 0x00380000
+#define SCTRL_P2_START_MASK 0x00070000
+#define SCTRL_R1_LOOP_MASK 0x00008000
+#define SCTRL_P2_LOOP_MASK 0x00004000
+#define SCTRL_P1_LOOP_MASK 0x00002000
+#define SCTRL_P2_PAUSE_MASK 0x00001000
+#define SCTRL_P1_PAUSE_MASK 0x00000800
+#define SCTRL_R1_INT_EN_MASK 0x00000400
+#define SCTRL_P2_INT_EN_MASK 0x00000200
+#define SCTRL_P1_INT_EN_MASK 0x00000100
+#define SCTRL_P1_RELOAD_MASK 0x00000080
+#define SCTRL_P2_STOP_MASK 0x00000040
+#define SCTRL_R1_S_MASK 0x00000030
+#define SCTRL_P2_S_MASK 0x0000000C
+#define SCTRL_P1_S_MASK 0x00000003
+
+#define SCTRL_8BIT_MONO 0x0
+#define SCTRL_8BIT_STEREO 0x1
+#define SCTRL_16BIT_MONO 0x2
+#define SCTRL_16BIT_STEREO 0x3
+
+#define ES_PCI_READ 0
+#define ES_PCI_WRITE 1
+
static MACHINE_CONFIG_FRAGMENT( es1373 )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MACHINE_CONFIG_END
@@ -20,14 +80,14 @@ machine_config_constructor es1373_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME( es1373 );
}
-const device_type ES1373 = device_creator<es1373_device>;
+DEFINE_DEVICE_TYPE(ES1373, es1373_device, "es1373", "Creative Labs Ensoniq AudioPCI97 ES1373")
DEVICE_ADDRESS_MAP_START(map, 32, es1373_device)
AM_RANGE(0x00, 0x3f) AM_READWRITE (reg_r, reg_w)
ADDRESS_MAP_END
es1373_device::es1373_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, ES1373, "Creative Labs Ensoniq AudioPCI97 ES1373", tag, owner, clock, "es1373", __FILE__),
+ : pci_device(mconfig, ES1373, tag, owner, clock),
device_sound_interface(mconfig, *this), m_stream(nullptr),
m_eslog(nullptr), m_tempCount(0), m_timer(nullptr), m_memory_space(nullptr), m_cpu_tag(nullptr), m_cpu(nullptr),
m_irq_num(-1)
diff --git a/src/devices/sound/es1373.h b/src/devices/sound/es1373.h
index f66c5a0c75b..848e175fa58 100644
--- a/src/devices/sound/es1373.h
+++ b/src/devices/sound/es1373.h
@@ -2,10 +2,10 @@
// copyright-holders:Ted Green
// Creative Labs Ensonic AudioPCI97 ES1373
-#pragma once
+#ifndef MAME_SOUND_ES1373_H
+#define MAME_SOUND_ES1373_H
-#ifndef ES1373_H
-#define ES1373_H
+#pragma once
#include "machine/pci.h"
@@ -16,86 +16,11 @@
#define MCFG_ES1373_IRQ_ADD(_cpu_tag, _irq_num) \
downcast<es1373_device *>(device)->set_irq_info(_cpu_tag, _irq_num);
-/* Ensonic ES1373 registers 0x00-0x3f */
-#define ES_INT_CS_CTRL (0x00/4)
-#define ES_INT_CS_STATUS (0x04/4)
-#define ES_UART_DATA (0x08/4)
-#define ES_UART_STATUS (0x09/4)
-#define ES_UART_CTRL (0x09/4)
-#define ES_UART_RSVD (0x0A/4)
-#define ES_MEM_PAGE (0x0C/4)
-#define ES_SRC_IF (0x10/4)
-#define ES_CODEC (0x14/4)
-#define ES_LEGACY (0x18/4)
-#define ES_CHAN_CTRL (0x1C/4)
-#define ES_SERIAL_CTRL (0x20/4)
-#define ES_DAC1_CNT (0x24/4)
-#define ES_DAC2_CNT (0x28/4)
-#define ES_ADC_CNT (0x2C/4)
-#define ES_HOST_IF0 (0x30/4)
-#define ES_HOST_IF1 (0x34/4)
-#define ES_HOST_IF2 (0x38/4)
-#define ES_HOST_IF3 (0x3C/4)
-
-// Interrupt/Chip Select Control Register (ES_INT_CS_CTRL) bits
-#define ICCTRL_ADC_STOP_MASK 0x00002000
-#define ICCTRL_DAC1_EN_MASK 0x00000040
-#define ICCTRL_DAC2_EN_MASK 0x00000020
-#define ICCTRL_ADC_EN_MASK 0x00000010
-#define ICCTRL_UART_EN_MASK 0x00000008
-#define ICCTRL_JYSTK_EN_MASK 0x00000004
-
-// Interrupt/Chip Select Status Register (ES_INT_CS_STATUS) bits
-#define ICSTATUS_INTR_MASK 0x80000000
-#define ICSTATUS_DAC1_INT_MASK 0x00000004
-#define ICSTATUS_DAC2_INT_MASK 0x00000002
-#define ICSTATUS_ADC_INT_MASK 0x00000001
-
-// Serial Interface Control Register (ES_SERIAL_CTRL) bits
-#define SCTRL_P2_END_MASK 0x00380000
-#define SCTRL_P2_START_MASK 0x00070000
-#define SCTRL_R1_LOOP_MASK 0x00008000
-#define SCTRL_P2_LOOP_MASK 0x00004000
-#define SCTRL_P1_LOOP_MASK 0x00002000
-#define SCTRL_P2_PAUSE_MASK 0x00001000
-#define SCTRL_P1_PAUSE_MASK 0x00000800
-#define SCTRL_R1_INT_EN_MASK 0x00000400
-#define SCTRL_P2_INT_EN_MASK 0x00000200
-#define SCTRL_P1_INT_EN_MASK 0x00000100
-#define SCTRL_P1_RELOAD_MASK 0x00000080
-#define SCTRL_P2_STOP_MASK 0x00000040
-#define SCTRL_R1_S_MASK 0x00000030
-#define SCTRL_P2_S_MASK 0x0000000C
-#define SCTRL_P1_S_MASK 0x00000003
-
-#define SCTRL_8BIT_MONO 0x0
-#define SCTRL_8BIT_STEREO 0x1
-#define SCTRL_16BIT_MONO 0x2
-#define SCTRL_16BIT_STEREO 0x3
-
-#define ES_PCI_READ 0
-#define ES_PCI_WRITE 1
-
-struct chan_info {
- int number;
- bool enable;
- bool int_en;
- bool loop_en;
- bool initialized;
- uint8_t format; // Format of channel
- uint32_t buf_wptr; // Address to sample cache memory
- uint32_t buf_rptr; // Address to sample cache memory
- uint16_t buf_count; // Number of samples that have been played
- uint16_t buf_size; // Number of samples minus one to play
- uint32_t pci_addr; // PCI Address for system memory accesses
- uint16_t pci_count; // Number of 32 bits transferred
- uint16_t pci_size; // Total number of words (32 bits) minus one in system memory
-};
-
class es1373_device : public pci_device, public device_sound_interface
{
public:
es1373_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
virtual void map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override;
@@ -108,9 +33,6 @@ public:
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- // Sound stream
- sound_stream *m_stream;
-
protected:
virtual void device_start() override;
virtual void device_stop() override;
@@ -118,9 +40,32 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ // Sound stream
+ sound_stream *m_stream;
+
FILE *m_eslog;
private:
+ struct chan_info {
+ int number;
+ bool enable;
+ bool int_en;
+ bool loop_en;
+ bool initialized;
+ uint8_t format; // Format of channel
+ uint32_t buf_wptr; // Address to sample cache memory
+ uint32_t buf_rptr; // Address to sample cache memory
+ uint16_t buf_count; // Number of samples that have been played
+ uint16_t buf_size; // Number of samples minus one to play
+ uint32_t pci_addr; // PCI Address for system memory accesses
+ uint16_t pci_count; // Number of 32 bits transferred
+ uint16_t pci_size; // Total number of words (32 bits) minus one in system memory
+ };
+
+ void transfer_pci_audio(chan_info& chan, int type);
+ uint32_t calc_size(const uint8_t &format);
+ void send_audio_out(chan_info& chan, uint32_t intr_mask, stream_sample_t *outL, stream_sample_t *outR, int samples);
+
uint32_t m_tempCount;
emu_timer *m_timer;
address_space *m_memory_space;
@@ -135,12 +80,8 @@ private:
chan_info m_dac1;
chan_info m_dac2;
chan_info m_adc;
- void transfer_pci_audio(chan_info& chan, int type);
- uint32_t calc_size(const uint8_t &format);
- void send_audio_out(chan_info& chan, uint32_t intr_mask, stream_sample_t *outL, stream_sample_t *outR, int samples);
-
};
-extern const device_type ES1373;
+DECLARE_DEVICE_TYPE(ES1373, es1373_device)
-#endif
+#endif // MAME_SOUND_ES1373_H
diff --git a/src/devices/sound/es5503.cpp b/src/devices/sound/es5503.cpp
index 39b57df0b3e..1e3c29b268a 100644
--- a/src/devices/sound/es5503.cpp
+++ b/src/devices/sound/es5503.cpp
@@ -36,13 +36,13 @@
#include "es5503.h"
// device type definition
-const device_type ES5503 = device_creator<es5503_device>;
+DEFINE_DEVICE_TYPE(ES5503, es5503_device, "es5503", "Ensoniq ES5503")
// useful constants
-static const uint16_t wavesizes[8] = { 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 };
-static const uint32_t wavemasks[8] = { 0x1ff00, 0x1fe00, 0x1fc00, 0x1f800, 0x1f000, 0x1e000, 0x1c000, 0x18000 };
-static const uint32_t accmasks[8] = { 0xff, 0x1ff, 0x3ff, 0x7ff, 0xfff, 0x1fff, 0x3fff, 0x7fff };
-static const int resshifts[8] = { 9, 10, 11, 12, 13, 14, 15, 16 };
+static constexpr uint16_t wavesizes[8] = { 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 };
+static constexpr uint32_t wavemasks[8] = { 0x1ff00, 0x1fe00, 0x1fc00, 0x1f800, 0x1f000, 0x1e000, 0x1c000, 0x18000 };
+static constexpr uint32_t accmasks[8] = { 0xff, 0x1ff, 0x3ff, 0x7ff, 0xfff, 0x1fff, 0x3fff, 0x7fff };
+static constexpr int resshifts[8] = { 9, 10, 11, 12, 13, 14, 15, 16 };
//**************************************************************************
// LIVE DEVICE
@@ -53,7 +53,7 @@ static const int resshifts[8] = { 9, 10, 11, 12, 13, 14, 15, 16 };
//-------------------------------------------------
es5503_device::es5503_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ES5503, "Ensoniq ES5503", tag, owner, clock, "es5503", __FILE__),
+ : device_t(mconfig, ES5503, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_rom_interface(mconfig, *this, 17),
m_irq_func(*this),
diff --git a/src/devices/sound/es5503.h b/src/devices/sound/es5503.h
index 2c226471b3a..577e71568d9 100644
--- a/src/devices/sound/es5503.h
+++ b/src/devices/sound/es5503.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
-#pragma once
+#ifndef MAME_SOUND_ES5503_H
+#define MAME_SOUND_ES5503_H
-#ifndef __ES5503_H__
-#define __ES5503_H__
+#pragma once
// channels must be a power of two
@@ -31,16 +31,14 @@ public:
static void static_set_channels(device_t &device, int channels);
- template<class _Object> static devcb_base &static_set_irqf(device_t &device, _Object object) { return downcast<es5503_device &>(device).m_irq_func.set_callback(object); }
- template<class _Object> static devcb_base &static_set_adcf(device_t &device, _Object object) { return downcast<es5503_device &>(device).m_adc_func.set_callback(object); }
+ template <class Object> static devcb_base &static_set_irqf(device_t &device, Object &&cb) { return downcast<es5503_device &>(device).m_irq_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_adcf(device_t &device, Object &&cb) { return downcast<es5503_device &>(device).m_adc_func.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
uint8_t get_channel_strobe() { return m_channel_strobe; }
- sound_stream *m_stream;
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -53,6 +51,8 @@ protected:
// device_rom_interface overrides
virtual void rom_bank_updated() override;
+ sound_stream *m_stream;
+
devcb_write_line m_irq_func;
devcb_read8 m_adc_func;
@@ -99,6 +99,6 @@ private:
// device type definition
-extern const device_type ES5503;
+DECLARE_DEVICE_TYPE(ES5503, es5503_device)
-#endif /* __ES5503_H__ */
+#endif // MAME_SOUND_ES5503_H
diff --git a/src/devices/sound/es5506.cpp b/src/devices/sound/es5506.cpp
index d5205a6996b..9c3b548e8a9 100644
--- a/src/devices/sound/es5506.cpp
+++ b/src/devices/sound/es5506.cpp
@@ -85,6 +85,10 @@ Ensoniq OTIS - ES5505 Ensoniq OTTO -
#include "emu.h"
#include "es5506.h"
+#if ES5506_MAKE_WAVS
+#include "sound/wavwrite.h"
+#endif
+
/**********************************************************************************************
@@ -95,10 +99,6 @@ Ensoniq OTIS - ES5505 Ensoniq OTTO -
#define LOG_COMMANDS 0
#define RAINE_CHECK 0
-#if MAKE_WAVS
-#include "sound/wavwrite.h"
-#endif
-
#define MAX_SAMPLE_CHUNK 10000
#define ULAW_MAXBITS 8
@@ -127,8 +127,8 @@ Ensoniq OTIS - ES5505 Ensoniq OTTO -
#define CONTROL_STOPMASK (CONTROL_STOP1 | CONTROL_STOP0)
-es550x_device::es550x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+es550x_device::es550x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_sample_rate(0),
@@ -145,9 +145,9 @@ es550x_device::es550x_device(const machine_config &mconfig, device_type type, co
m_scratch(nullptr),
m_ulaw_lookup(nullptr),
m_volume_lookup(nullptr),
- #if MAKE_WAVS
+#if ES5506_MAKE_WAVS
m_wavraw(nullptr),
- #endif
+#endif
m_eslog(nullptr),
m_region0(nullptr),
m_region1(nullptr),
@@ -163,10 +163,10 @@ es550x_device::es550x_device(const machine_config &mconfig, device_type type, co
}
}
-const device_type ES5506 = device_creator<es5506_device>;
+DEFINE_DEVICE_TYPE(ES5506, es5506_device, "es5506", "Ensoniq ES5506")
es5506_device::es5506_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : es550x_device(mconfig, ES5506, "ES5506", tag, owner, clock, "es5506", __FILE__)
+ : es550x_device(mconfig, ES5506, tag, owner, clock)
{
}
@@ -324,7 +324,7 @@ void es550x_device::device_stop()
m_eslog = nullptr;
}
- #if MAKE_WAVS
+#if ES5506_MAKE_WAVS
{
int i;
@@ -334,13 +334,13 @@ void es550x_device::device_stop()
wav_close(es5506[i].m_wavraw);
}
}
- #endif
+#endif
}
-const device_type ES5505 = device_creator<es5505_device>;
+DEFINE_DEVICE_TYPE(ES5505, es5505_device, "es5505", "Ensoniq ES5505")
es5505_device::es5505_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : es550x_device(mconfig, ES5505, "ES5505", tag, owner, clock, "es5505", __FILE__)
+ : es550x_device(mconfig, ES5505, tag, owner, clock)
{
}
@@ -2236,7 +2236,7 @@ void es550x_device::sound_stream_update(sound_stream &stream, stream_sample_t **
void es5506_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
-#if MAKE_WAVS
+#if ES5506_MAKE_WAVS
/* start the logging once we have a sample rate */
if (m_sample_rate)
{
@@ -2253,7 +2253,7 @@ void es5506_device::sound_stream_update(sound_stream &stream, stream_sample_t **
generate_samples(outputs, offset, length);
-#if MAKE_WAVS
+#if ES5506_MAKE_WAVS
/* log the raw data */
if (m_wavraw) {
/* determine left/right source data */
@@ -2282,7 +2282,7 @@ void es5506_device::sound_stream_update(sound_stream &stream, stream_sample_t **
void es5505_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
-#if MAKE_WAVS
+#if ES5506_MAKE_WAVS
/* start the logging once we have a sample rate */
if (m_sample_rate)
{
@@ -2299,7 +2299,7 @@ void es5505_device::sound_stream_update(sound_stream &stream, stream_sample_t **
generate_samples(outputs, offset, length);
-#if MAKE_WAVS
+#if ES5506_MAKE_WAVS
/* log the raw data */
if (m_wavraw) {
/* determine left/right source data */
diff --git a/src/devices/sound/es5506.h b/src/devices/sound/es5506.h
index 4c367be82b8..e83004e191c 100644
--- a/src/devices/sound/es5506.h
+++ b/src/devices/sound/es5506.h
@@ -7,12 +7,12 @@
*
**********************************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_ES5506_H
+#define MAME_SOUND_ES5506_H
-#ifndef __ES5506_H__
-#define __ES5506_H__
+#pragma once
-#define MAKE_WAVS 0
+#define ES5506_MAKE_WAVS 0
#define MCFG_ES5506_REGION0(_region) \
es5506_device::set_region0(*device, _region);
@@ -52,82 +52,54 @@
devcb = &es5505_device::set_read_port_callback(*device, DEVCB_##_devcb);
-/* struct describing a single playing voice */
-
-struct es550x_voice
-{
- es550x_voice():
- control(0),
- freqcount(0),
- start(0),
- lvol(0),
- end(0),
- lvramp(0),
- accum(0),
- rvol(0),
- rvramp(0),
- ecount(0),
- k2(0),
- k2ramp(0),
- k1(0),
- k1ramp(0),
- o4n1(0),
- o3n1(0),
- o3n2(0),
- o2n1(0),
- o2n2(0),
- o1n1(0),
- exbank(0),
- index(0),
- filtcount(0),
- accum_mask(0) {}
-
- /* external state */
- uint32_t control; /* control register */
- uint32_t freqcount; /* frequency count register */
- uint32_t start; /* start register */
- uint32_t lvol; /* left volume register */
- uint32_t end; /* end register */
- uint32_t lvramp; /* left volume ramp register */
- uint32_t accum; /* accumulator register */
- uint32_t rvol; /* right volume register */
- uint32_t rvramp; /* right volume ramp register */
- uint32_t ecount; /* envelope count register */
- uint32_t k2; /* k2 register */
- uint32_t k2ramp; /* k2 ramp register */
- uint32_t k1; /* k1 register */
- uint32_t k1ramp; /* k1 ramp register */
- int32_t o4n1; /* filter storage O4(n-1) */
- int32_t o3n1; /* filter storage O3(n-1) */
- int32_t o3n2; /* filter storage O3(n-2) */
- int32_t o2n1; /* filter storage O2(n-1) */
- int32_t o2n2; /* filter storage O2(n-2) */
- int32_t o1n1; /* filter storage O1(n-1) */
- uint32_t exbank; /* external address bank */
-
- /* internal state */
- uint8_t index; /* index of this voice */
- uint8_t filtcount; /* filter count */
- uint32_t accum_mask;
-};
-
-class es550x_device : public device_t,
- public device_sound_interface
+class es550x_device : public device_t, public device_sound_interface
{
public:
- es550x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- ~es550x_device() {}
-
static void set_region0(device_t &device, const char *region0) { downcast<es550x_device &>(device).m_region0 = region0; }
static void set_region1(device_t &device, const char *region1) { downcast<es550x_device &>(device).m_region1 = region1; }
static void set_region2(device_t &device, const char *region2) { downcast<es550x_device &>(device).m_region2 = region2; }
static void set_region3(device_t &device, const char *region3) { downcast<es550x_device &>(device).m_region3 = region3; }
static void set_channels(device_t &device, int channels) { downcast<es550x_device &>(device).m_channels = channels; }
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<es550x_device &>(device).m_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_read_port_callback(device_t &device, _Object object) { return downcast<es550x_device &>(device).m_read_port_cb.set_callback(object); }
-
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<es550x_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_port_callback(device_t &device, Object &&cb) { return downcast<es550x_device &>(device).m_read_port_cb.set_callback(std::forward<Object>(cb)); }
protected:
+ // struct describing a single playing voice
+ struct es550x_voice
+ {
+ es550x_voice() { }
+
+ // external state
+ uint32_t control = 0; // control register
+ uint32_t freqcount = 0; // frequency count register
+ uint32_t start = 0; // start register
+ uint32_t lvol = 0; // left volume register
+ uint32_t end = 0; // end register
+ uint32_t lvramp = 0; // left volume ramp register
+ uint32_t accum = 0; // accumulator register
+ uint32_t rvol = 0; // right volume register
+ uint32_t rvramp = 0; // right volume ramp register
+ uint32_t ecount = 0; // envelope count register
+ uint32_t k2 = 0; // k2 register
+ uint32_t k2ramp = 0; // k2 ramp register
+ uint32_t k1 = 0; // k1 register
+ uint32_t k1ramp = 0; // k1 ramp register
+ int32_t o4n1 = 0; // filter storage O4(n-1)
+ int32_t o3n1 = 0; // filter storage O3(n-1)
+ int32_t o3n2 = 0; // filter storage O3(n-2)
+ int32_t o2n1 = 0; // filter storage O2(n-1)
+ int32_t o2n2 = 0; // filter storage O2(n-2)
+ int32_t o1n1 = 0; // filter storage O1(n-1)
+ uint32_t exbank = 0; // external address bank
+
+ // internal state
+ uint8_t index = 0; // index of this voice
+ uint8_t filtcount = 0; // filter count
+ uint32_t accum_mask = 0;
+ };
+
+ es550x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_stop() override;
@@ -136,6 +108,14 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ void update_irq_state();
+ void update_internal_irq_state();
+ void compute_tables();
+
+ void generate_dummy(es550x_voice *voice, uint16_t *base, int32_t *lbuffer, int32_t *rbuffer, int samples);
+ void generate_ulaw(es550x_voice *voice, uint16_t *base, int32_t *lbuffer, int32_t *rbuffer, int samples);
+ void generate_pcm(es550x_voice *voice, uint16_t *base, int32_t *lbuffer, int32_t *rbuffer, int samples);
+
// internal state
sound_stream *m_stream; /* which stream are we using */
int m_sample_rate; /* current sample rate */
@@ -159,9 +139,9 @@ protected:
std::unique_ptr<int16_t[]> m_ulaw_lookup;
std::unique_ptr<uint16_t[]> m_volume_lookup;
- #if MAKE_WAVS
+#if ES5506_MAKE_WAVS
void * m_wavraw; /* raw waveform */
- #endif
+#endif
FILE *m_eslog;
@@ -172,14 +152,6 @@ protected:
int m_channels; /* number of output channels: 1 .. 6 */
devcb_write_line m_irq_cb; /* irq callback */
devcb_read16 m_read_port_cb; /* input port read */
-
- void update_irq_state();
- void update_internal_irq_state();
- void compute_tables();
-
- void generate_dummy(es550x_voice *voice, uint16_t *base, int32_t *lbuffer, int32_t *rbuffer, int samples);
- void generate_ulaw(es550x_voice *voice, uint16_t *base, int32_t *lbuffer, int32_t *rbuffer, int samples);
- void generate_pcm(es550x_voice *voice, uint16_t *base, int32_t *lbuffer, int32_t *rbuffer, int samples);
};
@@ -212,7 +184,7 @@ private:
inline uint32_t reg_read_test(es550x_voice *voice, offs_t offset);
};
-extern const device_type ES5506;
+DECLARE_DEVICE_TYPE(ES5506, es5506_device)
class es5505_device : public es550x_device
@@ -242,7 +214,7 @@ private:
inline uint16_t reg_read_test(es550x_voice *voice, offs_t offset);
};
-extern const device_type ES5505;
+DECLARE_DEVICE_TYPE(ES5505, es5505_device)
-#endif /* __ES5506_H__ */
+#endif // MAME_SOUND_ES5506_H
diff --git a/src/devices/sound/es8712.cpp b/src/devices/sound/es8712.cpp
index fe1e94fb01e..f0d65a7e75c 100644
--- a/src/devices/sound/es8712.cpp
+++ b/src/devices/sound/es8712.cpp
@@ -26,14 +26,14 @@
/* step size index shift table */
-static const int index_shift[8] = { -1, -1, -1, -1, 2, 4, 6, 8 };
+static constexpr int index_shift[8] = { -1, -1, -1, -1, 2, 4, 6, 8 };
/* lookup table for the precomputed difference */
static int diff_lookup[49*16];
// device type definition
-const device_type ES8712 = device_creator<es8712_device>;
+DEFINE_DEVICE_TYPE(ES8712, es8712_device, "es8712", "Excellent Systems ES8712 ADPCM")
//**************************************************************************
@@ -45,7 +45,7 @@ const device_type ES8712 = device_creator<es8712_device>;
//-------------------------------------------------
es8712_device::es8712_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ES8712, "ES8712", tag, owner, clock, "es8712", __FILE__),
+ : device_t(mconfig, ES8712, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_rom(*this, DEVICE_SELF),
m_reset_handler(*this),
diff --git a/src/devices/sound/es8712.h b/src/devices/sound/es8712.h
index 4daed51294f..112846fe98b 100644
--- a/src/devices/sound/es8712.h
+++ b/src/devices/sound/es8712.h
@@ -2,10 +2,10 @@
// copyright-holders:Quench
/* An interface for the ES8712 ADPCM chip */
-#pragma once
+#ifndef MAME_SOUND_ES8712_H
+#define MAME_SOUND_ES8712_H
-#ifndef __ES8712_H__
-#define __ES8712_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -26,15 +26,20 @@
// ======================> es8712_device
-class es8712_device : public device_t,
- public device_sound_interface
+class es8712_device : public device_t, public device_sound_interface
{
public:
es8712_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~es8712_device() { }
// static configuration
- template<class _Object> static devcb_base &set_reset_handler(device_t &device, _Object object) { return downcast<es8712_device &>(device).m_reset_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb) { return downcast<es8712_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); }
+
+ DECLARE_WRITE8_MEMBER(write);
+ DECLARE_READ8_MEMBER(read);
+
+ void play();
+ void set_bank_base(int base);
+ void set_frequency(int frequency);
protected:
// device-level overrides
@@ -44,21 +49,11 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_WRITE8_MEMBER(write);
- DECLARE_READ8_MEMBER(read);
-
-public:
- void play();
- void set_bank_base(int base);
- void set_frequency(int frequency);
-
private:
void compute_tables();
void generate_adpcm(stream_sample_t *buffer, int samples);
void es8712_state_save_register();
-private:
required_region_ptr<uint8_t> m_rom;
devcb_write_line m_reset_handler;
@@ -79,7 +74,6 @@ private:
sound_stream *m_stream; /* which stream are we playing on? */
};
-extern const device_type ES8712;
-
+DECLARE_DEVICE_TYPE(ES8712, es8712_device)
-#endif /* __ES8712_H__ */
+#endif // MAME_SOUND_ES8712_H
diff --git a/src/devices/sound/esqpump.cpp b/src/devices/sound/esqpump.cpp
index a6a5cbb3c2b..f11356d56f8 100644
--- a/src/devices/sound/esqpump.cpp
+++ b/src/devices/sound/esqpump.cpp
@@ -11,16 +11,17 @@
#include "emu.h"
#include "sound/esqpump.h"
-const device_type ESQ_5505_5510_PUMP = device_creator<esq_5505_5510_pump>;
+DEFINE_DEVICE_TYPE(ESQ_5505_5510_PUMP, esq_5505_5510_pump_device, "esq_5505_5510_pump", "Ensoniq 5505/5506 to 5510 interface")
-esq_5505_5510_pump::esq_5505_5510_pump(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ESQ_5505_5510_PUMP, "ESQ_5505_5510_PUMP", tag, owner, clock, "esq_5505_5510_pump", __FILE__),
- device_sound_interface(mconfig, *this), m_stream(nullptr), m_timer(nullptr), m_otis(nullptr), m_esp(nullptr),
- m_esp_halted(true), ticks_spent_processing(0), samples_processed(0)
+esq_5505_5510_pump_device::esq_5505_5510_pump_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, ESQ_5505_5510_PUMP, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr), m_timer(nullptr), m_otis(nullptr), m_esp(nullptr)
+ , m_esp_halted(true), ticks_spent_processing(0), samples_processed(0)
{
}
-void esq_5505_5510_pump::device_start()
+void esq_5505_5510_pump_device::device_start()
{
logerror("Clock = %d\n", clock());
@@ -48,12 +49,12 @@ void esq_5505_5510_pump::device_start()
#endif
}
-void esq_5505_5510_pump::device_stop()
+void esq_5505_5510_pump_device::device_stop()
{
m_timer->enable(false);
}
-void esq_5505_5510_pump::device_reset()
+void esq_5505_5510_pump_device::device_reset()
{
int64_t nsec_per_sample = 100 * 16 * 21;
attotime sample_time(0, 1000000000 * nsec_per_sample);
@@ -63,7 +64,7 @@ void esq_5505_5510_pump::device_reset()
m_timer->enable(true);
}
-void esq_5505_5510_pump::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
+void esq_5505_5510_pump_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
if (samples != 1) {
logerror("Pump: request for %d samples\n", samples);
@@ -165,7 +166,7 @@ void esq_5505_5510_pump::sound_stream_update(sound_stream &stream, stream_sample
#endif
}
-void esq_5505_5510_pump::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) {
+void esq_5505_5510_pump_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) {
// ecery time there's a new sample period, update the stream!
m_stream->update();
}
diff --git a/src/devices/sound/esqpump.h b/src/devices/sound/esqpump.h
index b904a023c3c..637ee8ab618 100644
--- a/src/devices/sound/esqpump.h
+++ b/src/devices/sound/esqpump.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Christian Brunschen
-#pragma once
+#ifndef MAME_SOUND_ESQPUMP_H
+#define MAME_SOUND_ESQPUMP_H
-#ifndef _ESQPUMP_H_
-#define _ESQPUMP_H_
+#pragma once
#include "sound/es5506.h"
#include "cpu/es5510/es5510.h"
@@ -13,11 +13,10 @@
#define PUMP_FAKE_ESP_PROCESSING 0
#define PUMP_REPLACE_ESP_PROGRAM 0
-class esq_5505_5510_pump : public device_t,
- public device_sound_interface
+class esq_5505_5510_pump_device : public device_t, public device_sound_interface
{
public:
- esq_5505_5510_pump(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ esq_5505_5510_pump_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void set_otis(es5505_device *otis) { m_otis = otis; }
void set_esp(es5510_device *esp) { m_esp = esp; }
@@ -118,6 +117,6 @@ private:
#endif
};
-extern const device_type ESQ_5505_5510_PUMP;
+DECLARE_DEVICE_TYPE(ESQ_5505_5510_PUMP, esq_5505_5510_pump_device)
-#endif
+#endif // MAME_SOUND_ESQPUMP_H
diff --git a/src/devices/sound/flt_rc.cpp b/src/devices/sound/flt_rc.cpp
index 56585593721..361af1a74a8 100644
--- a/src/devices/sound/flt_rc.cpp
+++ b/src/devices/sound/flt_rc.cpp
@@ -5,7 +5,7 @@
// device type definition
-const device_type FILTER_RC = device_creator<filter_rc_device>;
+DEFINE_DEVICE_TYPE(FILTER_RC, filter_rc_device, "filter_rc", "RC Filter")
//**************************************************************************
@@ -17,12 +17,12 @@ const device_type FILTER_RC = device_creator<filter_rc_device>;
//-------------------------------------------------
filter_rc_device::filter_rc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, FILTER_RC, "RC Filter", tag, owner, clock, "filter_rc", __FILE__),
+ : device_t(mconfig, FILTER_RC, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_k(0),
m_memory(0),
- m_type(FLT_RC_LOWPASS),
+ m_type(LOWPASS),
m_R1(1),
m_R2(1),
m_R3(1),
@@ -62,15 +62,15 @@ void filter_rc_device::sound_stream_update(sound_stream &stream, stream_sample_t
switch (m_type)
{
- case FLT_RC_LOWPASS:
+ case LOWPASS:
while (samples--)
{
memory += ((*src++ - memory) * m_k) / 0x10000;
*dst++ = memory;
}
break;
- case FLT_RC_HIGHPASS:
- case FLT_RC_AC:
+ case HIGHPASS:
+ case AC:
while (samples--)
{
*dst++ = *src - memory;
@@ -88,7 +88,7 @@ void filter_rc_device::recalc()
switch (m_type)
{
- case FLT_RC_LOWPASS:
+ case LOWPASS:
if (m_C == 0.0)
{
/* filter disabled */
@@ -97,8 +97,8 @@ void filter_rc_device::recalc()
}
Req = (m_R1 * (m_R2 + m_R3)) / (m_R1 + m_R2 + m_R3);
break;
- case FLT_RC_HIGHPASS:
- case FLT_RC_AC:
+ case HIGHPASS:
+ case AC:
if (m_C == 0.0)
{
/* filter disabled */
diff --git a/src/devices/sound/flt_rc.h b/src/devices/sound/flt_rc.h
index e34b0811261..7a7851393bf 100644
--- a/src/devices/sound/flt_rc.h
+++ b/src/devices/sound/flt_rc.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Couriersud
-#pragma once
+#ifndef MAME_SOUND_FLT_RC_H
+#define MAME_SOUND_FLT_RC_H
-#ifndef __FLT_RC_H__
-#define __FLT_RC_H__
+#pragma once
#include "machine/rescap.h"
@@ -53,25 +53,26 @@
MCFG_DEVICE_REPLACE(_tag, FILTER_RC, _clock)
#define MCFG_FILTER_RC_AC() \
- filter_rc_device::static_set_rc(*device, FLT_RC_AC, 10000, 0, 0, CAP_U(1));
+ filter_rc_device::static_set_rc(*device, filter_rc_device::AC, 10000, 0, 0, CAP_U(1));
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-#define FLT_RC_LOWPASS 0
-#define FLT_RC_HIGHPASS 1
-#define FLT_RC_AC 2
-
// ======================> filter_rc_device
-class filter_rc_device : public device_t,
- public device_sound_interface
+class filter_rc_device : public device_t, public device_sound_interface
{
public:
+ enum
+ {
+ LOWPASS = 0,
+ HIGHPASS = 1,
+ AC = 2
+ };
+
filter_rc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~filter_rc_device() { }
// static configuration
static void static_set_rc(device_t &device, int type, double R1, double R2, double R3, double C);
@@ -99,6 +100,6 @@ private:
double m_C;
};
-extern const device_type FILTER_RC;
+DECLARE_DEVICE_TYPE(FILTER_RC, filter_rc_device)
-#endif /* __FLT_RC_H__ */
+#endif // MAME_SOUND_FLT_RC_H
diff --git a/src/devices/sound/flt_vol.cpp b/src/devices/sound/flt_vol.cpp
index f6c4ea1564e..eec55c413f8 100644
--- a/src/devices/sound/flt_vol.cpp
+++ b/src/devices/sound/flt_vol.cpp
@@ -5,14 +5,14 @@
// device type definition
-const device_type FILTER_VOLUME = device_creator<filter_volume_device>;
+DEFINE_DEVICE_TYPE(FILTER_VOLUME, filter_volume_device, "filter_volume", "Volume Filter")
//-------------------------------------------------
// filter_volume_device - constructor
//-------------------------------------------------
filter_volume_device::filter_volume_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, FILTER_VOLUME, "Volume Filter", tag, owner, clock, "filter_volume", __FILE__),
+ : device_t(mconfig, FILTER_VOLUME, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_gain(0)
@@ -49,5 +49,5 @@ void filter_volume_device::sound_stream_update(sound_stream &stream, stream_samp
void filter_volume_device::flt_volume_set_volume(float volume)
{
m_stream->update();
- m_gain = (int)(volume * 256);
+ m_gain = int(volume * 256);
}
diff --git a/src/devices/sound/flt_vol.h b/src/devices/sound/flt_vol.h
index 08f49607158..b0f9234d1ae 100644
--- a/src/devices/sound/flt_vol.h
+++ b/src/devices/sound/flt_vol.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Couriersud
-#pragma once
+#ifndef MAME_SOUND_FLT_VOL_H
+#define MAME_SOUND_FLT_VOL_H
-#ifndef __FLT_VOL_H__
-#define __FLT_VOL_H__
+#pragma once
@@ -23,12 +23,10 @@
// ======================> filter_volume_device
-class filter_volume_device : public device_t,
- public device_sound_interface
+class filter_volume_device : public device_t, public device_sound_interface
{
public:
filter_volume_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~filter_volume_device() { }
void flt_volume_set_volume(float volume);
@@ -44,7 +42,7 @@ private:
int m_gain;
};
-extern const device_type FILTER_VOLUME;
+DECLARE_DEVICE_TYPE(FILTER_VOLUME, filter_volume_device)
-#endif /* __FLT_VOL_H__ */
+#endif // MAME_SOUND_FLT_VOL_H
diff --git a/src/devices/sound/fm.cpp b/src/devices/sound/fm.cpp
index e9910028bb6..9213e230b88 100644
--- a/src/devices/sound/fm.cpp
+++ b/src/devices/sound/fm.cpp
@@ -1,7 +1,5 @@
// license:GPL-2.0+
// copyright-holders:Jarek Burczynski,Tatsuyuki Satoh
-#define YM2610B_WARNING
-
/*
**
** File: fm.c -- software implementation of Yamaha FM sound generator
@@ -114,6 +112,8 @@
/************************************************************************/
#include "emu.h"
+
+#define YM2610B_WARNING
#include "fm.h"
@@ -122,6 +122,20 @@
#include "ymdeltat.h"
#endif
+
+#if BUILD_YM2203
+#include "2203intf.h"
+#endif /* BUILD_YM2203 */
+
+#if BUILD_YM2608
+#include "2608intf.h"
+#endif /* BUILD_YM2608 */
+
+#if (BUILD_YM2610||BUILD_YM2610B)
+#include "2610intf.h"
+#endif /* (BUILD_YM2610||BUILD_YM2610B) */
+
+
/* shared function building option */
#define BUILD_OPN (BUILD_YM2203||BUILD_YM2608||BUILD_YM2610||BUILD_YM2610B)
#define BUILD_OPN_PRESCALER (BUILD_YM2203||BUILD_YM2608)
@@ -589,7 +603,6 @@ struct FM_CH
struct FM_ST
{
device_t *device;
- void * param; /* this chip parameter */
int clock; /* master clock (Hz) */
int rate; /* sampling rate (Hz) */
double freqbase; /* frequency base */
@@ -702,7 +715,7 @@ static inline void FM_STATUS_SET(FM_ST *ST,int flag)
{
ST->irq = 1;
/* callback user interrupt handler (IRQ is OFF to ON) */
- if(ST->IRQ_Handler) (ST->IRQ_Handler)(ST->param,1);
+ if(ST->IRQ_Handler) (ST->IRQ_Handler)(ST->device,1);
}
}
@@ -715,7 +728,7 @@ static inline void FM_STATUS_RESET(FM_ST *ST,int flag)
{
ST->irq = 0;
/* callback user interrupt handler (IRQ is ON to OFF) */
- if(ST->IRQ_Handler) (ST->IRQ_Handler)(ST->param,0);
+ if(ST->IRQ_Handler) (ST->IRQ_Handler)(ST->device,0);
}
}
@@ -729,7 +742,7 @@ static inline void FM_IRQMASK_SET(FM_ST *ST,int flag)
}
/* OPN Mode Register Write */
-static inline void set_timers( FM_ST *ST, void *n, int v )
+static inline void set_timers( FM_ST *ST, device_t *n, int v )
{
/* b7 = CSM MODE */
/* b6 = 3 slot mode */
@@ -793,7 +806,7 @@ static inline void TimerAOver(FM_ST *ST)
if(ST->mode & 0x04) FM_STATUS_SET(ST,0x01);
/* clear or reload the counter */
ST->TAC = (1024-ST->TA);
- if (ST->timer_handler) (ST->timer_handler)(ST->param,0,ST->TAC * ST->timer_prescaler,ST->clock);
+ if (ST->timer_handler) (ST->timer_handler)(ST->device,0,ST->TAC * ST->timer_prescaler,ST->clock);
}
/* Timer B Overflow */
static inline void TimerBOver(FM_ST *ST)
@@ -802,7 +815,7 @@ static inline void TimerBOver(FM_ST *ST)
if(ST->mode & 0x08) FM_STATUS_SET(ST,0x02);
/* clear or reload the counter */
ST->TBC = ( 256-ST->TB)<<4;
- if (ST->timer_handler) (ST->timer_handler)(ST->param,1,ST->TBC * ST->timer_prescaler,ST->clock);
+ if (ST->timer_handler) (ST->timer_handler)(ST->device,1,ST->TBC * ST->timer_prescaler,ST->clock);
}
@@ -1744,7 +1757,7 @@ static void OPNSetPres(FM_OPN *OPN, int pres, int timer_prescaler, int SSGpres)
OPN->ST.timer_prescaler = timer_prescaler;
/* SSG part prescaler set */
- if( SSGpres ) (*OPN->ST.SSG->set_clock)( OPN->ST.param, OPN->ST.clock * 2 / SSGpres );
+ if( SSGpres ) (*OPN->ST.SSG->set_clock)( OPN->ST.device, OPN->ST.clock * 2 / SSGpres );
/* make time tables */
init_timetables( &OPN->ST, dt_tab );
@@ -1814,7 +1827,7 @@ static void OPNWriteMode(FM_OPN *OPN, int r, int v)
OPN->ST.TB = v;
break;
case 0x27: /* mode, timer control */
- set_timers( &(OPN->ST),OPN->ST.param,v );
+ set_timers( &(OPN->ST),OPN->ST.device,v );
break;
case 0x28: /* key on / off */
c = v & 0x03;
@@ -2088,17 +2101,19 @@ static void OPNPrescaler_w(FM_OPN *OPN , int addr, int pre_divider)
/*****************************************************************************/
/* here's the virtual YM2203(OPN) */
-struct YM2203
+namespace {
+struct ym2203_state
{
uint8_t REGS[256]; /* registers */
FM_OPN OPN; /* OPN state */
FM_CH CH[3]; /* channel state */
};
+} // anonymous namespace
/* Generate samples for one of the YM2203s */
void ym2203_update_one(void *chip, FMSAMPLE *buffer, int length)
{
- YM2203 *F2203 = (YM2203 *)chip;
+ ym2203_state *F2203 = (ym2203_state *)chip;
FM_OPN *OPN = &F2203->OPN;
int i;
FMSAMPLE *buf = buffer;
@@ -2184,13 +2199,13 @@ void ym2203_update_one(void *chip, FMSAMPLE *buffer, int length)
void ym2203_reset_chip(void *chip)
{
int i;
- YM2203 *F2203 = (YM2203 *)chip;
+ ym2203_state *F2203 = (ym2203_state *)chip;
FM_OPN *OPN = &F2203->OPN;
/* Reset Prescaler */
OPNPrescaler_w(OPN, 0 , 1 );
/* reset SSG section */
- (*OPN->ST.SSG->reset)(OPN->ST.param);
+ (*OPN->ST.SSG->reset)(OPN->ST.device);
/* status clear */
FM_IRQMASK_SET(&OPN->ST,0x03);
FM_BUSY_CLEAR(&OPN->ST);
@@ -2212,7 +2227,7 @@ void ym2203_postload(void *chip)
{
if (chip)
{
- YM2203 *F2203 = (YM2203 *)chip;
+ ym2203_state *F2203 = (ym2203_state *)chip;
int r;
/* prescaler */
@@ -2221,8 +2236,8 @@ void ym2203_postload(void *chip)
/* SSG registers */
for(r=0;r<16;r++)
{
- (*F2203->OPN.ST.SSG->write)(F2203->OPN.ST.param,0,r);
- (*F2203->OPN.ST.SSG->write)(F2203->OPN.ST.param,1,F2203->REGS[r]);
+ (*F2203->OPN.ST.SSG->write)(F2203->OPN.ST.device,0,r);
+ (*F2203->OPN.ST.SSG->write)(F2203->OPN.ST.device,1,F2203->REGS[r]);
}
/* OPN registers */
@@ -2240,7 +2255,7 @@ void ym2203_postload(void *chip)
}
}
-static void YM2203_save_state(YM2203 *F2203, device_t *device)
+static void YM2203_save_state(ym2203_state *F2203, device_t *device)
{
device->save_item(NAME(F2203->REGS));
FMsave_state_st(device,&F2203->OPN.ST);
@@ -2257,13 +2272,12 @@ static void YM2203_save_state(YM2203 *F2203, device_t *device)
'clock' is the chip clock in Hz
'rate' is sampling rate
*/
-void * ym2203_init(void *param, device_t *device, int clock, int rate,
- FM_TIMERHANDLER timer_handler,FM_IRQHANDLER IRQHandler, const ssg_callbacks *ssg)
+void * ym2203_init(device_t *device, int clock, int rate, FM_TIMERHANDLER timer_handler,FM_IRQHANDLER IRQHandler, const ssg_callbacks *ssg)
{
- YM2203 *F2203;
+ ym2203_state *F2203;
/* allocate ym2203 state space */
- F2203 = auto_alloc_clear(device->machine(), <YM2203>());
+ F2203 = auto_alloc_clear(device->machine(), <ym2203_state>());
if( !init_tables() )
{
@@ -2271,7 +2285,6 @@ void * ym2203_init(void *param, device_t *device, int clock, int rate,
return nullptr;
}
- F2203->OPN.ST.param = param;
F2203->OPN.type = TYPE_YM2203;
F2203->OPN.P_CH = F2203->CH;
F2203->OPN.ST.device = device;
@@ -2290,7 +2303,7 @@ void * ym2203_init(void *param, device_t *device, int clock, int rate,
void ym2203_clock_changed(void *chip, int clock, int rate)
{
- YM2203 *FM2203 = (YM2203 *)chip;
+ ym2203_state *FM2203 = (ym2203_state *)chip;
FM2203->OPN.ST.clock = clock;
FM2203->OPN.ST.rate = rate;
@@ -2299,7 +2312,7 @@ void ym2203_clock_changed(void *chip, int clock, int rate)
/* shut down emulator */
void ym2203_shutdown(void *chip)
{
- YM2203 *FM2203 = (YM2203 *)chip;
+ ym2203_state *FM2203 = (ym2203_state *)chip;
FMCloseTable();
auto_free(FM2203->OPN.ST.device->machine(), FM2203);
@@ -2308,7 +2321,7 @@ void ym2203_shutdown(void *chip)
/* YM2203 I/O interface */
int ym2203_write(void *chip,int a,uint8_t v)
{
- YM2203 *F2203 = (YM2203 *)chip;
+ ym2203_state *F2203 = (ym2203_state *)chip;
FM_OPN *OPN = &F2203->OPN;
if( !(a&1) )
@@ -2316,7 +2329,7 @@ int ym2203_write(void *chip,int a,uint8_t v)
OPN->ST.address = (v &= 0xff);
/* Write register to SSG emulator */
- if( v < 16 ) (*OPN->ST.SSG->write)(OPN->ST.param,0,v);
+ if( v < 16 ) (*OPN->ST.SSG->write)(OPN->ST.device,0,v);
/* prescaler select : 2d,2e,2f */
if( v >= 0x2d && v <= 0x2f )
@@ -2330,15 +2343,15 @@ int ym2203_write(void *chip,int a,uint8_t v)
{
case 0x00: /* 0x00-0x0f : SSG section */
/* Write data to SSG emulator */
- (*OPN->ST.SSG->write)(OPN->ST.param,a,v);
+ (*OPN->ST.SSG->write)(OPN->ST.device,a,v);
break;
case 0x20: /* 0x20-0x2f : Mode section */
- ym2203_update_req(OPN->ST.param);
+ ym2203_device::update_request(OPN->ST.device);
/* write register */
OPNWriteMode(OPN,addr,v);
break;
default: /* 0x30-0xff : OPN section */
- ym2203_update_req(OPN->ST.param);
+ ym2203_device::update_request(OPN->ST.device);
/* write register */
OPNWriteReg(OPN,addr,v);
}
@@ -2349,7 +2362,7 @@ int ym2203_write(void *chip,int a,uint8_t v)
uint8_t ym2203_read(void *chip,int a)
{
- YM2203 *F2203 = (YM2203 *)chip;
+ ym2203_state *F2203 = (ym2203_state *)chip;
int addr = F2203->OPN.ST.address;
uint8_t ret = 0;
@@ -2359,14 +2372,14 @@ uint8_t ym2203_read(void *chip,int a)
}
else
{ /* data port (only SSG) */
- if( addr < 16 ) ret = (*F2203->OPN.ST.SSG->read)(F2203->OPN.ST.param);
+ if( addr < 16 ) ret = (*F2203->OPN.ST.SSG->read)(F2203->OPN.ST.device);
}
return ret;
}
int ym2203_timer_over(void *chip,int c)
{
- YM2203 *F2203 = (YM2203 *)chip;
+ ym2203_state *F2203 = (ym2203_state *)chip;
if( c )
{ /* Timer B */
@@ -2374,7 +2387,7 @@ int ym2203_timer_over(void *chip,int c)
}
else
{ /* Timer A */
- ym2203_update_req(F2203->OPN.ST.param);
+ ym2203_device::update_request(F2203->OPN.ST.device);
/* timer update */
TimerAOver( &(F2203->OPN.ST) );
/* CSM mode key,TL control */
@@ -2391,6 +2404,14 @@ int ym2203_timer_over(void *chip,int c)
#if (BUILD_YM2608||BUILD_YM2610||BUILD_YM2610B)
+namespace {
+/**** YM2610 ADPCM defines ****/
+constexpr unsigned ADPCM_SHIFT = 16; /* frequency step rate */
+constexpr unsigned ADPCMA_ADDRESS_SHIFT = 8; /* adpcm A address shift */
+
+/* speedup purposes only */
+static int jedi_table[ 49*16 ];
+
/* ADPCM type A channel struct */
struct ADPCM_CH
{
@@ -2412,7 +2433,7 @@ struct ADPCM_CH
};
/* here's the virtual YM2610 */
-struct YM2610
+struct ym2610_state
{
uint8_t REGS[512]; /* registers */
FM_OPN OPN; /* OPN state */
@@ -2432,236 +2453,231 @@ struct YM2610
uint8_t irqmask; /* YM2608 only */
device_t *device;
-};
-
-/* here is the virtual YM2608 */
-typedef YM2610 YM2608;
-
-
-/**** YM2610 ADPCM defines ****/
-#define ADPCM_SHIFT (16) /* frequency step rate */
-#define ADPCMA_ADDRESS_SHIFT 8 /* adpcm A address shift */
-
-/* Algorithm and tables verified on real YM2608 and YM2610 */
-
-/* usual ADPCM table (16 * 1.1^N) */
-static const int steps[49] =
-{
- 16, 17, 19, 21, 23, 25, 28,
- 31, 34, 37, 41, 45, 50, 55,
- 60, 66, 73, 80, 88, 97, 107,
- 118, 130, 143, 157, 173, 190, 209,
- 230, 253, 279, 307, 337, 371, 408,
- 449, 494, 544, 598, 658, 724, 796,
- 876, 963, 1060, 1166, 1282, 1411, 1552
-};
-
-/* different from the usual ADPCM table */
-static const int step_inc[8] = { -1*16, -1*16, -1*16, -1*16, 2*16, 5*16, 7*16, 9*16 };
-
-/* speedup purposes only */
-static int jedi_table[ 49*16 ];
-
-static void Init_ADPCMATable(void)
-{
- int step, nib;
+ /* different from the usual ADPCM table */
+ static constexpr int step_inc[8] = { -1*16, -1*16, -1*16, -1*16, 2*16, 5*16, 7*16, 9*16 };
- for (step = 0; step < 49; step++)
+ /* ADPCM A (Non control type) : calculate one channel output */
+ inline void ADPCMA_calc_chan( ADPCM_CH *ch )
{
- /* loop over all nibbles and compute the difference */
- for (nib = 0; nib < 16; nib++)
- {
- int value = (2*(nib & 0x07) + 1) * steps[step] / 8;
- jedi_table[step*16 + nib] = (nib&0x08) ? -value : value;
- }
- }
-}
-
-/* ADPCM A (Non control type) : calculate one channel output */
-static inline void ADPCMA_calc_chan( YM2610 *F2610, ADPCM_CH *ch )
-{
- uint32_t step;
- uint8_t data;
-
+ uint32_t step;
+ uint8_t data;
- ch->now_step += ch->step;
- if ( ch->now_step >= (1<<ADPCM_SHIFT) )
- {
- step = ch->now_step >> ADPCM_SHIFT;
- ch->now_step &= (1<<ADPCM_SHIFT)-1;
- do{
- /* end check */
- /* 11-06-2001 JB: corrected comparison. Was > instead of == */
- /* YM2610 checks lower 20 bits only, the 4 MSB bits are sample bank */
- /* Here we use 1<<21 to compensate for nibble calculations */
- if ( (ch->now_addr & ((1<<21)-1)) == ((ch->end<<1) & ((1<<21)-1)) )
- {
- ch->flag = 0;
- F2610->adpcm_arrivedEndAddress |= ch->flagMask;
- return;
- }
+ ch->now_step += ch->step;
+ if ( ch->now_step >= (1<<ADPCM_SHIFT) )
+ {
+ step = ch->now_step >> ADPCM_SHIFT;
+ ch->now_step &= (1<<ADPCM_SHIFT)-1;
+ do{
+ /* end check */
+ /* 11-06-2001 JB: corrected comparison. Was > instead of == */
+ /* YM2610 checks lower 20 bits only, the 4 MSB bits are sample bank */
+ /* Here we use 1<<21 to compensate for nibble calculations */
+
+ if ( (ch->now_addr & ((1<<21)-1)) == ((ch->end<<1) & ((1<<21)-1)) )
+ {
+ ch->flag = 0;
+ adpcm_arrivedEndAddress |= ch->flagMask;
+ return;
+ }
#if 0
- if ( ch->now_addr > (F2610->pcmsizeA<<1) )
- {
- LOG(LOG_WAR,("YM2610: Attempting to play past adpcm rom size!\n" ));
- return;
- }
+ if ( ch->now_addr > (pcmsizeA<<1) )
+ {
+ LOG(LOG_WAR,("YM2610: Attempting to play past adpcm rom size!\n" ));
+ return;
+ }
#endif
- if ( ch->now_addr&1 )
- data = ch->now_data & 0x0f;
- else
- {
- ch->now_data = *(F2610->pcmbuf+(ch->now_addr>>1));
- data = (ch->now_data >> 4) & 0x0f;
- }
+ if ( ch->now_addr&1 )
+ data = ch->now_data & 0x0f;
+ else
+ {
+ ch->now_data = *(pcmbuf+(ch->now_addr>>1));
+ data = (ch->now_data >> 4) & 0x0f;
+ }
- ch->now_addr++;
+ ch->now_addr++;
- ch->adpcm_acc += jedi_table[ch->adpcm_step + data];
+ ch->adpcm_acc += jedi_table[ch->adpcm_step + data];
- /* extend 12-bit signed int */
- if (ch->adpcm_acc & ~0x7ff)
- ch->adpcm_acc |= ~0xfff;
- else
- ch->adpcm_acc &= 0xfff;
-
- ch->adpcm_step += step_inc[data & 7];
- Limit( ch->adpcm_step, 48*16, 0*16 );
+ /* extend 12-bit signed int */
+ if (ch->adpcm_acc & ~0x7ff)
+ ch->adpcm_acc |= ~0xfff;
+ else
+ ch->adpcm_acc &= 0xfff;
- }while(--step);
+ ch->adpcm_step += step_inc[data & 7];
+ Limit( ch->adpcm_step, 48*16, 0*16 );
- /* calc pcm * volume data */
- ch->adpcm_out = ((ch->adpcm_acc * ch->vol_mul) >> ch->vol_shift) & ~3; /* multiply, shift and mask out 2 LSB bits */
- }
+ }while(--step);
- /* output for work of output channels (out_adpcm[OPNxxxx])*/
- *(ch->pan) += ch->adpcm_out;
-}
+ /* calc pcm * volume data */
+ ch->adpcm_out = ((ch->adpcm_acc * ch->vol_mul) >> ch->vol_shift) & ~3; /* multiply, shift and mask out 2 LSB bits */
+ }
-/* ADPCM type A Write */
-static void FM_ADPCMAWrite(YM2610 *F2610,int r,int v)
-{
- ADPCM_CH *adpcm = F2610->adpcm;
- uint8_t c = r&0x07;
+ /* output for work of output channels (out_adpcm[OPNxxxx])*/
+ *(ch->pan) += ch->adpcm_out;
+ }
- F2610->adpcmreg[r] = v&0xff; /* stock data */
- switch( r )
+ /* ADPCM type A Write */
+ void FM_ADPCMAWrite(int r,int v)
{
- case 0x00: /* DM,--,C5,C4,C3,C2,C1,C0 */
- if( !(v&0x80) )
+ uint8_t c = r&0x07;
+
+ adpcmreg[r] = v&0xff; /* stock data */
+ switch( r )
{
- /* KEY ON */
- for( c = 0; c < 6; c++ )
+ case 0x00: /* DM,--,C5,C4,C3,C2,C1,C0 */
+ if( !(v&0x80) )
{
- if( (v>>c)&1 )
+ /* KEY ON */
+ for( c = 0; c < 6; c++ )
{
- /**** start adpcm ****/
- adpcm[c].step = (uint32_t)((float)(1<<ADPCM_SHIFT)*((float)F2610->OPN.ST.freqbase)/3.0f);
- adpcm[c].now_addr = adpcm[c].start<<1;
- adpcm[c].now_step = 0;
- adpcm[c].adpcm_acc = 0;
- adpcm[c].adpcm_step= 0;
- adpcm[c].adpcm_out = 0;
- adpcm[c].flag = 1;
-
- if(F2610->pcmbuf==nullptr)
- { /* Check ROM Mapped */
- F2610->device->logerror("YM2608-YM2610: ADPCM-A rom not mapped\n");
- adpcm[c].flag = 0;
- }
- else
+ if( (v>>c)&1 )
{
- if(adpcm[c].end >= F2610->pcm_size)
- { /* Check End in Range */
- F2610->device->logerror("YM2610: ADPCM-A end out of range: $%08x\n",adpcm[c].end);
- /*adpcm[c].end = F2610->pcm_size-1;*/ /* JB: DO NOT uncomment this, otherwise you will break the comparison in the ADPCM_CALC_CHA() */
+ /**** start adpcm ****/
+ adpcm[c].step = (uint32_t)((float)(1<<ADPCM_SHIFT)*((float)OPN.ST.freqbase)/3.0f);
+ adpcm[c].now_addr = adpcm[c].start<<1;
+ adpcm[c].now_step = 0;
+ adpcm[c].adpcm_acc = 0;
+ adpcm[c].adpcm_step= 0;
+ adpcm[c].adpcm_out = 0;
+ adpcm[c].flag = 1;
+
+ if(pcmbuf==nullptr)
+ { /* Check ROM Mapped */
+ device->logerror("YM2608-YM2610: ADPCM-A rom not mapped\n");
+ adpcm[c].flag = 0;
}
- if(adpcm[c].start >= F2610->pcm_size) /* Check Start in Range */
+ else
{
- F2610->device->logerror("YM2608-YM2610: ADPCM-A start out of range: $%08x\n",adpcm[c].start);
- adpcm[c].flag = 0;
+ if(adpcm[c].end >= pcm_size)
+ { /* Check End in Range */
+ device->logerror("YM2610: ADPCM-A end out of range: $%08x\n",adpcm[c].end);
+ /*adpcm[c].end = pcm_size-1;*/ /* JB: DO NOT uncomment this, otherwise you will break the comparison in the ADPCM_CALC_CHA() */
+ }
+ if(adpcm[c].start >= pcm_size) /* Check Start in Range */
+ {
+ device->logerror("YM2608-YM2610: ADPCM-A start out of range: $%08x\n",adpcm[c].start);
+ adpcm[c].flag = 0;
+ }
}
}
}
}
- }
- else
- {
- /* KEY OFF */
- for( c = 0; c < 6; c++ )
- if( (v>>c)&1 )
- adpcm[c].flag = 0;
- }
- break;
- case 0x01: /* B0-5 = TL */
- F2610->adpcmTL = (v & 0x3f) ^ 0x3f;
- for( c = 0; c < 6; c++ )
- {
- int volume = F2610->adpcmTL + adpcm[c].IL;
-
- if ( volume >= 63 ) /* This is correct, 63 = quiet */
+ else
{
- adpcm[c].vol_mul = 0;
- adpcm[c].vol_shift = 0;
+ /* KEY OFF */
+ for( c = 0; c < 6; c++ )
+ if( (v>>c)&1 )
+ adpcm[c].flag = 0;
}
- else
+ break;
+ case 0x01: /* B0-5 = TL */
+ adpcmTL = (v & 0x3f) ^ 0x3f;
+ for( c = 0; c < 6; c++ )
{
- adpcm[c].vol_mul = 15 - (volume & 7); /* so called 0.75 dB */
- adpcm[c].vol_shift = 1 + (volume >> 3); /* Yamaha engineers used the approximation: each -6 dB is close to divide by two (shift right) */
+ int volume = adpcmTL + adpcm[c].IL;
+
+ if ( volume >= 63 ) /* This is correct, 63 = quiet */
+ {
+ adpcm[c].vol_mul = 0;
+ adpcm[c].vol_shift = 0;
+ }
+ else
+ {
+ adpcm[c].vol_mul = 15 - (volume & 7); /* so called 0.75 dB */
+ adpcm[c].vol_shift = 1 + (volume >> 3); /* Yamaha engineers used the approximation: each -6 dB is close to divide by two (shift right) */
+ }
+
+ /* calc pcm * volume data */
+ adpcm[c].adpcm_out = ((adpcm[c].adpcm_acc * adpcm[c].vol_mul) >> adpcm[c].vol_shift) & ~3; /* multiply, shift and mask out low 2 bits */
}
+ break;
+ default:
+ c = r&0x07;
+ if( c >= 0x06 ) return;
+ switch( r&0x38 )
+ {
+ case 0x08: /* B7=L,B6=R, B4-0=IL */
+ {
+ int volume;
- /* calc pcm * volume data */
- adpcm[c].adpcm_out = ((adpcm[c].adpcm_acc * adpcm[c].vol_mul) >> adpcm[c].vol_shift) & ~3; /* multiply, shift and mask out low 2 bits */
- }
- break;
- default:
- c = r&0x07;
- if( c >= 0x06 ) return;
- switch( r&0x38 )
- {
- case 0x08: /* B7=L,B6=R, B4-0=IL */
- {
- int volume;
+ adpcm[c].IL = (v & 0x1f) ^ 0x1f;
- adpcm[c].IL = (v & 0x1f) ^ 0x1f;
+ volume = adpcmTL + adpcm[c].IL;
+
+ if ( volume >= 63 ) /* This is correct, 63 = quiet */
+ {
+ adpcm[c].vol_mul = 0;
+ adpcm[c].vol_shift = 0;
+ }
+ else
+ {
+ adpcm[c].vol_mul = 15 - (volume & 7); /* so called 0.75 dB */
+ adpcm[c].vol_shift = 1 + (volume >> 3); /* Yamaha engineers used the approximation: each -6 dB is close to divide by two (shift right) */
+ }
- volume = F2610->adpcmTL + adpcm[c].IL;
+ adpcm[c].pan = &OPN.out_adpcm[(v>>6)&0x03];
- if ( volume >= 63 ) /* This is correct, 63 = quiet */
- {
- adpcm[c].vol_mul = 0;
- adpcm[c].vol_shift = 0;
+ /* calc pcm * volume data */
+ adpcm[c].adpcm_out = ((adpcm[c].adpcm_acc * adpcm[c].vol_mul) >> adpcm[c].vol_shift) & ~3; /* multiply, shift and mask out low 2 bits */
}
- else
- {
- adpcm[c].vol_mul = 15 - (volume & 7); /* so called 0.75 dB */
- adpcm[c].vol_shift = 1 + (volume >> 3); /* Yamaha engineers used the approximation: each -6 dB is close to divide by two (shift right) */
+ break;
+ case 0x10:
+ case 0x18:
+ adpcm[c].start = ( (adpcmreg[0x18 + c]*0x0100 | adpcmreg[0x10 + c]) << ADPCMA_ADDRESS_SHIFT);
+ break;
+ case 0x20:
+ case 0x28:
+ adpcm[c].end = ( (adpcmreg[0x28 + c]*0x0100 | adpcmreg[0x20 + c]) << ADPCMA_ADDRESS_SHIFT);
+ adpcm[c].end += (1<<ADPCMA_ADDRESS_SHIFT) - 1;
+ break;
}
+ }
+ }
- adpcm[c].pan = &F2610->OPN.out_adpcm[(v>>6)&0x03];
+};
- /* calc pcm * volume data */
- adpcm[c].adpcm_out = ((adpcm[c].adpcm_acc * adpcm[c].vol_mul) >> adpcm[c].vol_shift) & ~3; /* multiply, shift and mask out low 2 bits */
- }
- break;
- case 0x10:
- case 0x18:
- adpcm[c].start = ( (F2610->adpcmreg[0x18 + c]*0x0100 | F2610->adpcmreg[0x10 + c]) << ADPCMA_ADDRESS_SHIFT);
- break;
- case 0x20:
- case 0x28:
- adpcm[c].end = ( (F2610->adpcmreg[0x28 + c]*0x0100 | F2610->adpcmreg[0x20 + c]) << ADPCMA_ADDRESS_SHIFT);
- adpcm[c].end += (1<<ADPCMA_ADDRESS_SHIFT) - 1;
- break;
+constexpr int ym2610_state::step_inc[8];
+
+/* here is the virtual YM2608 */
+typedef ym2610_state ym2608_state;
+
+
+/* Algorithm and tables verified on real YM2608 and YM2610 */
+
+/* usual ADPCM table (16 * 1.1^N) */
+constexpr int steps[49] =
+{
+ 16, 17, 19, 21, 23, 25, 28,
+ 31, 34, 37, 41, 45, 50, 55,
+ 60, 66, 73, 80, 88, 97, 107,
+ 118, 130, 143, 157, 173, 190, 209,
+ 230, 253, 279, 307, 337, 371, 408,
+ 449, 494, 544, 598, 658, 724, 796,
+ 876, 963, 1060, 1166, 1282, 1411, 1552
+};
+
+
+void Init_ADPCMATable()
+{
+ int step, nib;
+
+ for (step = 0; step < 49; step++)
+ {
+ /* loop over all nibbles and compute the difference */
+ for (nib = 0; nib < 16; nib++)
+ {
+ int value = (2*(nib & 0x07) + 1) * steps[step] / 8;
+ jedi_table[step*16 + nib] = (nib&0x08) ? -value : value;
}
}
}
#ifdef MAME_EMU_SAVE_H
/* FM channel save , internal state only */
-static void FMsave_state_adpcma(device_t *device,ADPCM_CH *adpcm)
+void FMsave_state_adpcma(device_t *device,ADPCM_CH *adpcm)
{
int ch;
@@ -2677,6 +2693,7 @@ static void FMsave_state_adpcma(device_t *device,ADPCM_CH *adpcm)
}
}
#endif /* MAME_EMU_SAVE_H */
+} // anonymous namespace
#endif /* (BUILD_YM2608||BUILD_YM2610||BUILD_YM2610B) */
@@ -2699,7 +2716,7 @@ static const unsigned int YM2608_ADPCM_ROM_addr[2*6] = {
/* flag enable control 0x110 */
-static inline void YM2608IRQFlagWrite(FM_OPN *OPN, YM2608 *F2608, int v)
+static inline void YM2608IRQFlagWrite(FM_OPN *OPN, ym2608_state *F2608, int v)
{
if( v & 0x80 )
{ /* Reset IRQ flag */
@@ -2713,7 +2730,7 @@ static inline void YM2608IRQFlagWrite(FM_OPN *OPN, YM2608 *F2608, int v)
}
/* compatible mode & IRQ enable control 0x29 */
-static inline void YM2608IRQMaskWrite(FM_OPN *OPN, YM2608 *F2608, int v)
+static inline void YM2608IRQMaskWrite(FM_OPN *OPN, ym2608_state *F2608, int v)
{
/* SCH,xx,xxx,EN_ZERO,EN_BRDY,EN_EOS,EN_TB,EN_TA */
@@ -2731,7 +2748,7 @@ static inline void YM2608IRQMaskWrite(FM_OPN *OPN, YM2608 *F2608, int v)
/* Generate samples for one of the YM2608s */
void ym2608_update_one(void *chip, FMSAMPLE **buffer, int length)
{
- YM2608 *F2608 = (YM2608 *)chip;
+ ym2608_state *F2608 = (ym2608_state *)chip;
FM_OPN *OPN = &F2608->OPN;
YM_DELTAT *DELTAT = &F2608->deltaT;
int i,j;
@@ -2797,13 +2814,13 @@ void ym2608_update_one(void *chip, FMSAMPLE **buffer, int length)
/* deltaT ADPCM */
if( DELTAT->portstate&0x80 )
- YM_DELTAT_ADPCM_CALC(DELTAT);
+ DELTAT->ADPCM_CALC();
/* ADPCMA */
for( j = 0; j < 6; j++ )
{
if( F2608->adpcm[j].flag )
- ADPCMA_calc_chan( F2608, &F2608->adpcm[j]);
+ F2608->ADPCMA_calc_chan( &F2608->adpcm[j]);
}
/* advance envelope generator */
@@ -2872,7 +2889,7 @@ void ym2608_postload(void *chip)
{
if (chip)
{
- YM2608 *F2608 = (YM2608 *)chip;
+ ym2608_state *F2608 = (ym2608_state *)chip;
int r;
/* prescaler */
@@ -2883,8 +2900,8 @@ void ym2608_postload(void *chip)
/* SSG registers */
for(r=0;r<16;r++)
{
- (*F2608->OPN.ST.SSG->write)(F2608->OPN.ST.param,0,r);
- (*F2608->OPN.ST.SSG->write)(F2608->OPN.ST.param,1,F2608->REGS[r]);
+ (*F2608->OPN.ST.SSG->write)(F2608->OPN.ST.device,0,r);
+ (*F2608->OPN.ST.SSG->write)(F2608->OPN.ST.device,1,F2608->REGS[r]);
}
/* OPN registers */
@@ -2905,15 +2922,15 @@ void ym2608_postload(void *chip)
/* FM channels */
/*FM_channel_postload(F2608->CH,6);*/
/* rhythm(ADPCMA) */
- FM_ADPCMAWrite(F2608,1,F2608->REGS[0x111]);
+ F2608->FM_ADPCMAWrite(1,F2608->REGS[0x111]);
for( r=0x08 ; r<0x0c ; r++)
- FM_ADPCMAWrite(F2608,r,F2608->REGS[r+0x110]);
+ F2608->FM_ADPCMAWrite(r,F2608->REGS[r+0x110]);
/* Delta-T ADPCM unit */
- YM_DELTAT_postload(&F2608->deltaT , &F2608->REGS[0x100] );
+ F2608->deltaT.postload( &F2608->REGS[0x100] );
}
}
-static void YM2608_save_state(YM2608 *F2608, device_t *device)
+static void YM2608_save_state(ym2608_state *F2608, device_t *device)
{
device->save_item(NAME(F2608->REGS));
FMsave_state_st(device,&F2608->OPN.ST);
@@ -2927,29 +2944,28 @@ static void YM2608_save_state(YM2608 *F2608, device_t *device)
/* rhythm(ADPCMA) */
FMsave_state_adpcma(device,F2608->adpcm);
/* Delta-T ADPCM unit */
- YM_DELTAT_savestate(device,&F2608->deltaT);
+ F2608->deltaT.savestate(device);
}
#endif /* MAME_EMU_SAVE_H */
static void YM2608_deltat_status_set(void *chip, uint8_t changebits)
{
- YM2608 *F2608 = (YM2608 *)chip;
+ ym2608_state *F2608 = (ym2608_state *)chip;
FM_STATUS_SET(&(F2608->OPN.ST), changebits);
}
static void YM2608_deltat_status_reset(void *chip, uint8_t changebits)
{
- YM2608 *F2608 = (YM2608 *)chip;
+ ym2608_state *F2608 = (ym2608_state *)chip;
FM_STATUS_RESET(&(F2608->OPN.ST), changebits);
}
/* YM2608(OPNA) */
-void * ym2608_init(void *param, device_t *device, int clock, int rate,
- void *pcmrom,int pcmsize,
+void * ym2608_init(device_t *device, int clock, int rate, void *pcmrom,int pcmsize,
FM_TIMERHANDLER timer_handler,FM_IRQHANDLER IRQHandler, const ssg_callbacks *ssg)
{
- YM2608 *F2608;
+ ym2608_state *F2608;
/* allocate extend state space */
- F2608 = auto_alloc_clear(device->machine(), <YM2608>());
+ F2608 = auto_alloc_clear(device->machine(), <ym2608_state>());
/* allocate total level table (128kb space) */
if( !init_tables() )
{
@@ -2958,7 +2974,6 @@ void * ym2608_init(void *param, device_t *device, int clock, int rate,
}
F2608->device = device;
- F2608->OPN.ST.param = param;
F2608->OPN.type = TYPE_YM2608;
F2608->OPN.P_CH = F2608->CH;
F2608->OPN.ST.device = device;
@@ -2999,7 +3014,7 @@ void * ym2608_init(void *param, device_t *device, int clock, int rate,
/* shut down emulator */
void ym2608_shutdown(void *chip)
{
- YM2608 *F2608 = (YM2608 *)chip;
+ ym2608_state *F2608 = (ym2608_state *)chip;
FMCloseTable();
auto_free(F2608->OPN.ST.device->machine(), F2608);
@@ -3009,7 +3024,7 @@ void ym2608_shutdown(void *chip)
void ym2608_reset_chip(void *chip)
{
int i;
- YM2608 *F2608 = (YM2608 *)chip;
+ ym2608_state *F2608 = (ym2608_state *)chip;
FM_OPN *OPN = &F2608->OPN;
YM_DELTAT *DELTAT = &F2608->deltaT;
@@ -3017,7 +3032,7 @@ void ym2608_reset_chip(void *chip)
OPNPrescaler_w(OPN , 0 , 2);
F2608->deltaT.freqbase = OPN->ST.freqbase;
/* reset SSG section */
- (*OPN->ST.SSG->reset)(OPN->ST.param);
+ (*OPN->ST.SSG->reset)(OPN->ST.device);
/* status clear */
FM_BUSY_CLEAR(&OPN->ST);
@@ -3081,7 +3096,7 @@ void ym2608_reset_chip(void *chip)
DELTAT->output_pointer = OPN->out_delta;
DELTAT->portshift = 5; /* always 5bits shift */ /* ASG */
DELTAT->output_range = 1<<23;
- YM_DELTAT_ADPCM_Reset(DELTAT,OUTD_CENTER,YM_DELTAT_EMULATION_MODE_NORMAL,F2608->device);
+ DELTAT->ADPCM_Reset(OUTD_CENTER,YM_DELTAT::EMULATION_MODE_NORMAL,F2608->device);
}
/* YM2608 write */
@@ -3090,7 +3105,7 @@ void ym2608_reset_chip(void *chip)
/* v = value */
int ym2608_write(void *chip, int a,uint8_t v)
{
- YM2608 *F2608 = (YM2608 *)chip;
+ ym2608_state *F2608 = (ym2608_state *)chip;
FM_OPN *OPN = &F2608->OPN;
int addr;
@@ -3104,7 +3119,7 @@ int ym2608_write(void *chip, int a,uint8_t v)
F2608->addr_A1 = 0;
/* Write register to SSG emulator */
- if( v < 16 ) (*OPN->ST.SSG->write)(OPN->ST.param,0,v);
+ if( v < 16 ) (*OPN->ST.SSG->write)(OPN->ST.device,0,v);
/* prescaler selecter : 2d,2e,2f */
if( v >= 0x2d && v <= 0x2f )
{
@@ -3123,11 +3138,11 @@ int ym2608_write(void *chip, int a,uint8_t v)
{
case 0x00: /* SSG section */
/* Write data to SSG emulator */
- (*OPN->ST.SSG->write)(OPN->ST.param,a,v);
+ (*OPN->ST.SSG->write)(OPN->ST.device,a,v);
break;
case 0x10: /* 0x10-0x1f : Rhythm section */
- ym2608_update_req(OPN->ST.param);
- FM_ADPCMAWrite(F2608,addr-0x10,v);
+ ym2608_device::update_request(OPN->ST.device);
+ F2608->FM_ADPCMAWrite(addr-0x10,v);
break;
case 0x20: /* Mode Register */
switch(addr)
@@ -3136,12 +3151,12 @@ int ym2608_write(void *chip, int a,uint8_t v)
YM2608IRQMaskWrite(OPN, F2608, v);
break;
default:
- ym2608_update_req(OPN->ST.param);
+ ym2608_device::update_request(OPN->ST.device);
OPNWriteMode(OPN,addr,v);
}
break;
default: /* OPN section */
- ym2608_update_req(OPN->ST.param);
+ ym2608_device::update_request(OPN->ST.device);
OPNWriteReg(OPN,addr,v);
}
break;
@@ -3157,7 +3172,7 @@ int ym2608_write(void *chip, int a,uint8_t v)
addr = OPN->ST.address;
F2608->REGS[addr | 0x100] = v;
- ym2608_update_req(OPN->ST.param);
+ ym2608_device::update_request(OPN->ST.device);
switch( addr & 0xf0 )
{
case 0x00: /* DELTAT PORT */
@@ -3168,7 +3183,7 @@ int ym2608_write(void *chip, int a,uint8_t v)
break;
default:
/* 0x00-0x0d */
- YM_DELTAT_ADPCM_Write(&F2608->deltaT,addr,v);
+ F2608->deltaT.ADPCM_Write(addr,v);
}
break;
case 0x10: /* IRQ Flag control */
@@ -3186,7 +3201,7 @@ int ym2608_write(void *chip, int a,uint8_t v)
uint8_t ym2608_read(void *chip,int a)
{
- YM2608 *F2608 = (YM2608 *)chip;
+ ym2608_state *F2608 = (ym2608_state *)chip;
int addr = F2608->OPN.ST.address;
uint8_t ret = 0;
@@ -3198,7 +3213,7 @@ uint8_t ym2608_read(void *chip,int a)
break;
case 1: /* status 0, ID */
- if( addr < 16 ) ret = (*F2608->OPN.ST.SSG->read)(F2608->OPN.ST.param);
+ if( addr < 16 ) ret = (*F2608->OPN.ST.SSG->read)(F2608->OPN.ST.device);
else if(addr == 0xff) ret = 0x01; /* ID code */
break;
@@ -3210,7 +3225,7 @@ uint8_t ym2608_read(void *chip,int a)
case 3:
if(addr == 0x08)
{
- ret = YM_DELTAT_ADPCM_Read(&F2608->deltaT);
+ ret = F2608->deltaT.ADPCM_Read();
}
else
{
@@ -3227,14 +3242,14 @@ uint8_t ym2608_read(void *chip,int a)
int ym2608_timer_over(void *chip,int c)
{
- YM2608 *F2608 = (YM2608 *)chip;
+ ym2608_state *F2608 = (ym2608_state *)chip;
switch(c)
{
#if 0
case 2:
{ /* BUFRDY flag */
- YM_DELTAT_BRDY_callback( &F2608->deltaT );
+ F2608->deltaT.BRDY_callback();
}
break;
#endif
@@ -3245,7 +3260,7 @@ int ym2608_timer_over(void *chip,int c)
break;
case 0:
{ /* Timer A */
- ym2608_update_req(F2608->OPN.ST.param);
+ ym2608_device::update_request(F2608->OPN.ST.device);
/* timer update */
TimerAOver( &(F2608->OPN.ST) );
/* CSM mode key,TL controll */
@@ -3272,7 +3287,7 @@ int ym2608_timer_over(void *chip,int c)
/* Generate samples for one of the YM2610s */
void ym2610_update_one(void *chip, FMSAMPLE **buffer, int length)
{
- YM2610 *F2610 = (YM2610 *)chip;
+ ym2610_state *F2610 = (ym2610_state *)chip;
FM_OPN *OPN = &F2610->OPN;
YM_DELTAT *DELTAT = &F2610->deltaT;
int i,j;
@@ -3294,9 +3309,9 @@ void ym2610_update_one(void *chip, FMSAMPLE **buffer, int length)
#define FM_MSG_YM2610B "YM2610-%p.CH%d is playing,Check whether the type of the chip is YM2610B\n"
/* Check YM2610B warning message */
if( FM_KEY_IS(&F2610->CH[0].SLOT[3]) )
- LOG(F2610->device,LOG_WAR,(FM_MSG_YM2610B,F2610->OPN.ST.param,0));
+ LOG(F2610->device,LOG_WAR,(FM_MSG_YM2610B,F2610->OPN.ST.device,0));
if( FM_KEY_IS(&F2610->CH[3].SLOT[3]) )
- LOG(F2610->device,LOG_WAR,(FM_MSG_YM2610B,F2610->OPN.ST.param,3));
+ LOG(F2610->device,LOG_WAR,(FM_MSG_YM2610B,F2610->OPN.ST.device,3));
#endif
/* refresh PG and EG */
@@ -3352,13 +3367,13 @@ void ym2610_update_one(void *chip, FMSAMPLE **buffer, int length)
/* deltaT ADPCM */
if( DELTAT->portstate&0x80 )
- YM_DELTAT_ADPCM_CALC(DELTAT);
+ DELTAT->ADPCM_CALC();
/* ADPCMA */
for( j = 0; j < 6; j++ )
{
if( F2610->adpcm[j].flag )
- ADPCMA_calc_chan( F2610, &F2610->adpcm[j]);
+ F2610->ADPCMA_calc_chan(&F2610->adpcm[j]);
}
/* buffering */
@@ -3408,7 +3423,7 @@ void ym2610_update_one(void *chip, FMSAMPLE **buffer, int length)
/* Generate samples for one of the YM2610Bs */
void ym2610b_update_one(void *chip, FMSAMPLE **buffer, int length)
{
- YM2610 *F2610 = (YM2610 *)chip;
+ ym2610_state *F2610 = (ym2610_state *)chip;
FM_OPN *OPN = &F2610->OPN;
YM_DELTAT *DELTAT = &F2610->deltaT;
int i,j;
@@ -3488,13 +3503,13 @@ void ym2610b_update_one(void *chip, FMSAMPLE **buffer, int length)
/* deltaT ADPCM */
if( DELTAT->portstate&0x80 )
- YM_DELTAT_ADPCM_CALC(DELTAT);
+ DELTAT->ADPCM_CALC();
/* ADPCMA */
for( j = 0; j < 6; j++ )
{
if( F2610->adpcm[j].flag )
- ADPCMA_calc_chan( F2610, &F2610->adpcm[j]);
+ F2610->ADPCMA_calc_chan(&F2610->adpcm[j]);
}
/* buffering */
@@ -3549,14 +3564,14 @@ void ym2610_postload(void *chip)
{
if (chip)
{
- YM2610 *F2610 = (YM2610 *)chip;
+ ym2610_state *F2610 = (ym2610_state *)chip;
int r;
/* SSG registers */
for(r=0;r<16;r++)
{
- (*F2610->OPN.ST.SSG->write)(F2610->OPN.ST.param,0,r);
- (*F2610->OPN.ST.SSG->write)(F2610->OPN.ST.param,1,F2610->REGS[r]);
+ (*F2610->OPN.ST.SSG->write)(F2610->OPN.ST.device,0,r);
+ (*F2610->OPN.ST.SSG->write)(F2610->OPN.ST.device,1,F2610->REGS[r]);
}
/* OPN registers */
@@ -3578,21 +3593,21 @@ void ym2610_postload(void *chip)
/*FM_channel_postload(F2610->CH,6);*/
/* rhythm(ADPCMA) */
- FM_ADPCMAWrite(F2610,1,F2610->REGS[0x101]);
+ F2610->FM_ADPCMAWrite(1,F2610->REGS[0x101]);
for( r=0 ; r<6 ; r++)
{
- FM_ADPCMAWrite(F2610,r+0x08,F2610->REGS[r+0x108]);
- FM_ADPCMAWrite(F2610,r+0x10,F2610->REGS[r+0x110]);
- FM_ADPCMAWrite(F2610,r+0x18,F2610->REGS[r+0x118]);
- FM_ADPCMAWrite(F2610,r+0x20,F2610->REGS[r+0x120]);
- FM_ADPCMAWrite(F2610,r+0x28,F2610->REGS[r+0x128]);
+ F2610->FM_ADPCMAWrite(r+0x08,F2610->REGS[r+0x108]);
+ F2610->FM_ADPCMAWrite(r+0x10,F2610->REGS[r+0x110]);
+ F2610->FM_ADPCMAWrite(r+0x18,F2610->REGS[r+0x118]);
+ F2610->FM_ADPCMAWrite(r+0x20,F2610->REGS[r+0x120]);
+ F2610->FM_ADPCMAWrite(r+0x28,F2610->REGS[r+0x128]);
}
/* Delta-T ADPCM unit */
- YM_DELTAT_postload(&F2610->deltaT , &F2610->REGS[0x010] );
+ F2610->deltaT.postload( &F2610->REGS[0x010] );
}
}
-static void YM2610_save_state(YM2610 *F2610, device_t *device)
+static void YM2610_save_state(ym2610_state *F2610, device_t *device)
{
device->save_item(NAME(F2610->REGS));
FMsave_state_st(device,&F2610->OPN.ST);
@@ -3608,30 +3623,29 @@ static void YM2610_save_state(YM2610 *F2610, device_t *device)
/* rhythm(ADPCMA) */
FMsave_state_adpcma(device,F2610->adpcm);
/* Delta-T ADPCM unit */
- YM_DELTAT_savestate(device,&F2610->deltaT);
+ F2610->deltaT.savestate(device);
}
#endif /* MAME_EMU_SAVE_H */
static void YM2610_deltat_status_set(void *chip, uint8_t changebits)
{
- YM2610 *F2610 = (YM2610 *)chip;
+ ym2610_state *F2610 = (ym2610_state *)chip;
F2610->adpcm_arrivedEndAddress |= changebits;
}
static void YM2610_deltat_status_reset(void *chip, uint8_t changebits)
{
- YM2610 *F2610 = (YM2610 *)chip;
+ ym2610_state *F2610 = (ym2610_state *)chip;
F2610->adpcm_arrivedEndAddress &= (~changebits);
}
-void *ym2610_init(void *param, device_t *device, int clock, int rate,
- void *pcmroma,int pcmsizea,void *pcmromb,int pcmsizeb,
+void *ym2610_init(device_t *device, int clock, int rate, void *pcmroma,int pcmsizea,void *pcmromb,int pcmsizeb,
FM_TIMERHANDLER timer_handler,FM_IRQHANDLER IRQHandler, const ssg_callbacks *ssg)
{
- YM2610 *F2610;
+ ym2610_state *F2610;
/* allocate extend state space */
- F2610 = auto_alloc_clear(device->machine(), <YM2610>());
+ F2610 = auto_alloc_clear(device->machine(), <ym2610_state>());
/* allocate total level table (128kb space) */
if( !init_tables() )
{
@@ -3641,7 +3655,6 @@ void *ym2610_init(void *param, device_t *device, int clock, int rate,
F2610->device = device;
/* FM */
- F2610->OPN.ST.param = param;
F2610->OPN.type = TYPE_YM2610;
F2610->OPN.P_CH = F2610->CH;
F2610->OPN.ST.device = device;
@@ -3673,7 +3686,7 @@ void *ym2610_init(void *param, device_t *device, int clock, int rate,
/* shut down emulator */
void ym2610_shutdown(void *chip)
{
- YM2610 *F2610 = (YM2610 *)chip;
+ ym2610_state *F2610 = (ym2610_state *)chip;
FMCloseTable();
auto_free(F2610->OPN.ST.device->machine(), F2610);
@@ -3683,7 +3696,7 @@ void ym2610_shutdown(void *chip)
void ym2610_reset_chip(void *chip)
{
int i;
- YM2610 *F2610 = (YM2610 *)chip;
+ ym2610_state *F2610 = (ym2610_state *)chip;
FM_OPN *OPN = &F2610->OPN;
YM_DELTAT *DELTAT = &F2610->deltaT;
@@ -3713,7 +3726,7 @@ void ym2610_reset_chip(void *chip)
/* Reset Prescaler */
OPNSetPres( OPN, 6*24, 6*24, 4*2); /* OPN 1/6 , SSG 1/4 */
/* reset SSG section */
- (*OPN->ST.SSG->reset)(OPN->ST.param);
+ (*OPN->ST.SSG->reset)(OPN->ST.device);
/* status clear */
FM_IRQMASK_SET(&OPN->ST,0x03);
FM_BUSY_CLEAR(&OPN->ST);
@@ -3763,7 +3776,7 @@ void ym2610_reset_chip(void *chip)
DELTAT->output_pointer = OPN->out_delta;
DELTAT->portshift = 8; /* allways 8bits shift */
DELTAT->output_range = 1<<23;
- YM_DELTAT_ADPCM_Reset(DELTAT,OUTD_CENTER,YM_DELTAT_EMULATION_MODE_YM2610,F2610->device);
+ DELTAT->ADPCM_Reset(OUTD_CENTER,YM_DELTAT::EMULATION_MODE_YM2610,F2610->device);
}
/* YM2610 write */
@@ -3772,7 +3785,7 @@ void ym2610_reset_chip(void *chip)
/* v = value */
int ym2610_write(void *chip, int a, uint8_t v)
{
- YM2610 *F2610 = (YM2610 *)chip;
+ ym2610_state *F2610 = (ym2610_state *)chip;
FM_OPN *OPN = &F2610->OPN;
int addr;
int ch;
@@ -3786,7 +3799,7 @@ int ym2610_write(void *chip, int a, uint8_t v)
F2610->addr_A1 = 0;
/* Write register to SSG emulator */
- if( v < 16 ) (*OPN->ST.SSG->write)(OPN->ST.param,0,v);
+ if( v < 16 ) (*OPN->ST.SSG->write)(OPN->ST.device,0,v);
break;
case 1: /* data port 0 */
@@ -3799,10 +3812,10 @@ int ym2610_write(void *chip, int a, uint8_t v)
{
case 0x00: /* SSG section */
/* Write data to SSG emulator */
- (*OPN->ST.SSG->write)(OPN->ST.param,a,v);
+ (*OPN->ST.SSG->write)(OPN->ST.device,a,v);
break;
case 0x10: /* DeltaT ADPCM */
- ym2610_update_req(OPN->ST.param);
+ ym2610_device::update_request(OPN->ST.device);
switch(addr)
{
@@ -3817,7 +3830,7 @@ int ym2610_write(void *chip, int a, uint8_t v)
case 0x1a: /* delta-n H */
case 0x1b: /* volume */
{
- YM_DELTAT_ADPCM_Write(&F2610->deltaT,addr-0x10,v);
+ F2610->deltaT.ADPCM_Write(addr-0x10,v);
}
break;
@@ -3842,11 +3855,11 @@ int ym2610_write(void *chip, int a, uint8_t v)
break;
case 0x20: /* Mode Register */
- ym2610_update_req(OPN->ST.param);
+ ym2610_device::update_request(OPN->ST.device);
OPNWriteMode(OPN,addr,v);
break;
default: /* OPN section */
- ym2610_update_req(OPN->ST.param);
+ ym2610_device::update_request(OPN->ST.device);
/* write register */
OPNWriteReg(OPN,addr,v);
}
@@ -3861,12 +3874,12 @@ int ym2610_write(void *chip, int a, uint8_t v)
if (F2610->addr_A1 != 1)
break; /* verified on real YM2608 */
- ym2610_update_req(OPN->ST.param);
+ ym2610_device::update_request(OPN->ST.device);
addr = OPN->ST.address;
F2610->REGS[addr | 0x100] = v;
if( addr < 0x30 )
/* 100-12f : ADPCM A section */
- FM_ADPCMAWrite(F2610,addr,v);
+ F2610->FM_ADPCMAWrite(addr,v);
else
OPNWriteReg(OPN,addr | 0x100,v);
}
@@ -3875,7 +3888,7 @@ int ym2610_write(void *chip, int a, uint8_t v)
uint8_t ym2610_read(void *chip,int a)
{
- YM2610 *F2610 = (YM2610 *)chip;
+ ym2610_state *F2610 = (ym2610_state *)chip;
int addr = F2610->OPN.ST.address;
uint8_t ret = 0;
@@ -3885,7 +3898,7 @@ uint8_t ym2610_read(void *chip,int a)
ret = FM_STATUS_FLAG(&F2610->OPN.ST) & 0x83;
break;
case 1: /* data 0 */
- if( addr < 16 ) ret = (*F2610->OPN.ST.SSG->read)(F2610->OPN.ST.param);
+ if( addr < 16 ) ret = (*F2610->OPN.ST.SSG->read)(F2610->OPN.ST.device);
if( addr == 0xff ) ret = 0x01;
break;
case 2: /* status 1 : ADPCM status */
@@ -3904,7 +3917,7 @@ uint8_t ym2610_read(void *chip,int a)
int ym2610_timer_over(void *chip,int c)
{
- YM2610 *F2610 = (YM2610 *)chip;
+ ym2610_state *F2610 = (ym2610_state *)chip;
if( c )
{ /* Timer B */
@@ -3912,7 +3925,7 @@ int ym2610_timer_over(void *chip,int c)
}
else
{ /* Timer A */
- ym2610_update_req(F2610->OPN.ST.param);
+ ym2610_device::update_request(F2610->OPN.ST.device);
/* timer update */
TimerAOver( &(F2610->OPN.ST) );
/* CSM mode key,TL controll */
diff --git a/src/devices/sound/fm.h b/src/devices/sound/fm.h
index f5be86ad8a1..60bdb9c4ec0 100644
--- a/src/devices/sound/fm.h
+++ b/src/devices/sound/fm.h
@@ -5,10 +5,10 @@
*/
-#pragma once
+#ifndef MAME_SOUND_FM_H
+#define MAME_SOUND_FM_H
-#ifndef __FM_H__
-#define __FM_H__
+#pragma once
/* --- select emulation chips --- */
#define BUILD_YM2203 (1) /* build YM2203(OPN) emulator */
@@ -32,47 +32,23 @@
/* used by YM2203,YM2608,and YM2610 */
struct ssg_callbacks
{
- void (*set_clock)(void *param, int clock);
- void (*write)(void *param, int address, int data);
- int (*read)(void *param);
- void (*reset)(void *param);
+ void (*set_clock)(device_t *device, int clock);
+ void (*write)(device_t *device, int address, int data);
+ int (*read)(device_t *device);
+ void (*reset)(device_t *device);
};
/* --- external callback functions for realtime update --- */
#if FM_BUSY_FLAG_SUPPORT
-#define TIME_TYPE attotime
+using TIME_TYPE = attotime;
#define UNDEFINED_TIME attotime::zero
#define FM_GET_TIME_NOW(machine) (machine)->time()
-#define ADD_TIMES(t1, t2) ((t1) + (t2))
-#define COMPARE_TIMES(t1, t2) (((t1) == (t2)) ? 0 : ((t1) < (t2)) ? -1 : 1)
-#define MULTIPLY_TIME_BY_INT(t,i) ((t) * (i))
+inline TIME_TYPE ADD_TIMES(TIME_TYPE const &t1, TIME_TYPE const &t2) { return t1 + t2; }
+constexpr int COMPARE_TIMES(TIME_TYPE const &t1, TIME_TYPE const &t2) { return (t1 == t2) ? 0 : (t1 < t2) ? -1 : 1; }
+template <typename X> constexpr TIME_TYPE MULTIPLY_TIME_BY_INT(TIME_TYPE const &t, X &&i) { return t * i; }
#endif
-#if BUILD_YM2203
- /* in 2203intf.c */
- void ym2203_update_request(void *param);
- #define ym2203_update_req(chip) ym2203_update_request(chip)
-#endif /* BUILD_YM2203 */
-
-#if BUILD_YM2608
- /* in 2608intf.c */
- void ym2608_update_request(void *param);
- #define ym2608_update_req(chip) ym2608_update_request(chip);
-#endif /* BUILD_YM2608 */
-
-#if (BUILD_YM2610||BUILD_YM2610B)
- /* in 2610intf.c */
- void ym2610_update_request(void *param);
- #define ym2610_update_req(chip) ym2610_update_request(chip);
-#endif /* (BUILD_YM2610||BUILD_YM2610B) */
-
-#if (BUILD_YM2612||BUILD_YM3438)
- /* in 2612intf.c */
- void ym2612_update_request(void *param);
- #define ym2612_update_req(chip) ym2612_update_request(chip);
-#endif /* (BUILD_YM2612||BUILD_YM3438) */
-
typedef stream_sample_t FMSAMPLE;
/*
@@ -84,8 +60,8 @@ typedef unsigned char FMSAMPLE;
#endif
*/
-typedef void (*FM_TIMERHANDLER)(void *param,int c,int cnt,int clock);
-typedef void (*FM_IRQHANDLER)(void *param,int irq);
+typedef void (*FM_TIMERHANDLER)(device_t *device,int c,int cnt,int clock);
+typedef void (*FM_IRQHANDLER)(device_t *device,int irq);
/* FM_TIMERHANDLER : Stop or Start timer */
/* int n = chip number */
/* int c = Channel 0=TimerA,1=TimerB */
@@ -109,7 +85,7 @@ typedef void (*FM_IRQHANDLER)(void *param,int irq);
** 'IRQHandler' IRQ callback handler when changed IRQ level
** return 0 = success
*/
-void * ym2203_init(void *param, device_t *device, int baseclock, int rate,
+void * ym2203_init(device_t *device, int baseclock, int rate,
FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler, const ssg_callbacks *ssg);
/*
@@ -157,7 +133,7 @@ void ym2203_postload(void *chip);
#if BUILD_YM2608
/* -------------------- YM2608(OPNA) Interface -------------------- */
-void * ym2608_init(void *param, device_t *device, int baseclock, int rate,
+void * ym2608_init(device_t *device, int baseclock, int rate,
void *pcmroma,int pcmsizea,
FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler, const ssg_callbacks *ssg);
void ym2608_shutdown(void *chip);
@@ -172,7 +148,7 @@ void ym2608_postload(void *chip);
#if (BUILD_YM2610||BUILD_YM2610B)
/* -------------------- YM2610(OPNB) Interface -------------------- */
-void * ym2610_init(void *param, device_t *device, int baseclock, int rate,
+void * ym2610_init(device_t *device, int baseclock, int rate,
void *pcmroma,int pcmasize,void *pcmromb,int pcmbsize,
FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler, const ssg_callbacks *ssg);
void ym2610_shutdown(void *chip);
@@ -190,7 +166,7 @@ void ym2610_postload(void *chip);
#endif /* (BUILD_YM2610||BUILD_YM2610B) */
#if (BUILD_YM2612||BUILD_YM3438)
-void * ym2612_init(void *param, device_t *device, int baseclock, int rate,
+void * ym2612_init(device_t *device, int baseclock, int rate,
FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler);
void ym2612_clock_changed(void *chip, int clock, int rate);
void ym2612_shutdown(void *chip);
@@ -204,4 +180,4 @@ void ym2612_postload(void *chip);
#endif /* (BUILD_YM2612||BUILD_YM3438) */
-#endif /* __FM_H__ */
+#endif // MAME_SOUND_FM_H
diff --git a/src/devices/sound/fm2612.cpp b/src/devices/sound/fm2612.cpp
index 026cbbf7cd1..91d27686fe0 100644
--- a/src/devices/sound/fm2612.cpp
+++ b/src/devices/sound/fm2612.cpp
@@ -137,6 +137,11 @@
#include "emu.h"
#include "fm.h"
+#if (BUILD_YM2612||BUILD_YM3438)
+#include "2612intf.h"
+#endif /* (BUILD_YM2612||BUILD_YM3438) */
+
+
/* shared function building option */
#define BUILD_OPN (BUILD_YM2203||BUILD_YM2608||BUILD_YM2610||BUILD_YM2610B||BUILD_YM2612||BUILD_YM3438)
#define BUILD_OPN_PRESCALER (BUILD_YM2203||BUILD_YM2608)
@@ -605,7 +610,6 @@ struct fm2612_FM_CH
struct fm2612_FM_ST
{
device_t *device;
- void * param; /* this chip parameter */
double freqbase; /* frequency base */
int timer_prescaler; /* timer prescaler */
uint8_t irq; /* interrupt level */
@@ -683,7 +687,7 @@ struct fm2612_FM_OPN
};
/* here's the virtual YM2612 */
-struct YM2612
+struct ym2612_state
{
uint8_t REGS[512]; /* registers */
fm2612_FM_OPN OPN; /* OPN state */
@@ -722,7 +726,7 @@ static inline void FM_STATUS_SET(fm2612_FM_ST *ST,int flag)
{
ST->irq = 1;
/* callback user interrupt handler (IRQ is OFF to ON) */
- if(ST->IRQ_Handler) (ST->IRQ_Handler)(ST->param,1);
+ if(ST->IRQ_Handler) (ST->IRQ_Handler)(ST->device,1);
}
}
@@ -735,7 +739,7 @@ static inline void FM_STATUS_RESET(fm2612_FM_ST *ST,int flag)
{
ST->irq = 0;
/* callback user interrupt handler (IRQ is ON to OFF) */
- if(ST->IRQ_Handler) (ST->IRQ_Handler)(ST->param,0);
+ if(ST->IRQ_Handler) (ST->IRQ_Handler)(ST->device,0);
}
}
@@ -880,7 +884,7 @@ static inline void FM_KEYOFF_CSM(fm2612_FM_CH *CH , int s )
}
/* OPN Mode Register Write */
-static inline void set_timers(fm2612_FM_OPN *OPN, fm2612_FM_ST *ST, void *n, int v)
+static inline void set_timers(fm2612_FM_OPN *OPN, fm2612_FM_ST *ST, device_t *n, int v)
{
/* b7 = CSM MODE */
/* b6 = 3 slot mode */
@@ -947,7 +951,7 @@ static inline void set_timers(fm2612_FM_OPN *OPN, fm2612_FM_ST *ST, void *n, int
{
ST->irq = 0;
/* callback user interrupt handler (IRQ is ON to OFF) */
- if(ST->IRQ_Handler) (ST->IRQ_Handler)(ST->param, 0);
+ if(ST->IRQ_Handler) (ST->IRQ_Handler)(ST->device, 0);
}
ST->mode = v;
}
@@ -960,7 +964,7 @@ static inline void TimerAOver(fm2612_FM_ST *ST)
if(ST->mode & 0x04) FM_STATUS_SET(ST,0x01);
/* clear or reload the counter */
ST->TAC = (1024-ST->TA);
- if (ST->timer_handler) (ST->timer_handler)(ST->param,0,ST->TAC * ST->timer_prescaler,ST->clock);
+ if (ST->timer_handler) (ST->timer_handler)(ST->device,0,ST->TAC * ST->timer_prescaler,ST->clock);
}
/* Timer B Overflow */
static inline void TimerBOver(fm2612_FM_ST *ST)
@@ -969,7 +973,7 @@ static inline void TimerBOver(fm2612_FM_ST *ST)
if(ST->mode & 0x08) FM_STATUS_SET(ST,0x02);
/* clear or reload the counter */
ST->TBC = ( 256-ST->TB)<<4;
- if (ST->timer_handler) (ST->timer_handler)(ST->param,1,ST->TBC * ST->timer_prescaler,ST->clock);
+ if (ST->timer_handler) (ST->timer_handler)(ST->device,1,ST->TBC * ST->timer_prescaler,ST->clock);
}
@@ -1596,7 +1600,7 @@ static inline signed int op_calc1(uint32_t phase, unsigned int env, signed int p
return tl_tab[p];
}
-static inline void chan_calc(YM2612 *F2612, fm2612_FM_OPN *OPN, fm2612_FM_CH *CH)
+static inline void chan_calc(ym2612_state *F2612, fm2612_FM_OPN *OPN, fm2612_FM_CH *CH)
{
uint32_t AM = OPN->LFO_AM >> CH->ams;
unsigned int eg_out = volume_calc(&CH->SLOT[SLOT1]);
@@ -1766,7 +1770,7 @@ static void OPNWriteMode(fm2612_FM_OPN *OPN, int r, int v)
OPN->ST.TB = v;
break;
case 0x27: /* mode, timer control */
- set_timers( OPN, &(OPN->ST),OPN->ST.param,v );
+ set_timers( OPN, &(OPN->ST),OPN->ST.device,v );
break;
case 0x28: /* key on / off */
c = v & 0x03;
@@ -2039,7 +2043,7 @@ static void OPNSetPres(fm2612_FM_OPN *OPN, int pres, int timer_prescaler, int SS
OPN->ST.timer_prescaler = timer_prescaler;
/* SSG part prescaler set */
- if( SSGpres ) (*OPN->ST.SSG->set_clock)( OPN->ST.param, OPN->ST.clock * 2 / SSGpres );
+ if( SSGpres ) (*OPN->ST.SSG->set_clock)( OPN->ST.device, OPN->ST.clock * 2 / SSGpres );
/* make time tables */
init_timetables(OPN, OPN->ST.freqbase);
@@ -2177,7 +2181,7 @@ static void init_tables(void)
/* Generate samples for one of the YM2612s */
void ym2612_update_one(void *chip, FMSAMPLE **buffer, int length)
{
- YM2612 *F2612 = (YM2612 *)chip;
+ ym2612_state *F2612 = (ym2612_state *)chip;
fm2612_FM_OPN *OPN = &F2612->OPN;
int32_t *out_fm = OPN->out_fm;
int i;
@@ -2325,7 +2329,7 @@ void ym2612_postload(void *chip)
{
if (chip)
{
- YM2612 *F2612 = (YM2612 *)chip;
+ ym2612_state *F2612 = (ym2612_state *)chip;
int r;
/* DAC data & port */
@@ -2351,7 +2355,7 @@ void ym2612_postload(void *chip)
}
}
-static void YM2612_save_state(YM2612 *F2612, device_t *device)
+static void YM2612_save_state(ym2612_state *F2612, device_t *device)
{
device->save_item(NAME(F2612->REGS));
FMsave_state_st(device,&F2612->OPN.ST);
@@ -2366,18 +2370,17 @@ static void YM2612_save_state(YM2612 *F2612, device_t *device)
#endif /* MAME_EMU_SAVE_H */
/* initialize YM2612 emulator(s) */
-void * ym2612_init(void *param, device_t *device, int clock, int rate,
+void * ym2612_init(device_t *device, int clock, int rate,
FM_TIMERHANDLER timer_handler,FM_IRQHANDLER IRQHandler)
{
- YM2612 *F2612;
+ ym2612_state *F2612;
/* allocate extend state space */
- F2612 = auto_alloc_clear(device->machine(), <YM2612>());
+ F2612 = auto_alloc_clear(device->machine(), <ym2612_state>());
/* allocate total level table (128kb space) */
init_tables();
F2612->device = device;
- F2612->OPN.ST.param = param;
F2612->OPN.type = TYPE_YM2612;
F2612->OPN.P_CH = F2612->CH;
F2612->OPN.ST.device = device;
@@ -2397,7 +2400,7 @@ void * ym2612_init(void *param, device_t *device, int clock, int rate,
void ym2612_clock_changed(void *chip, int clock, int rate)
{
- YM2612 *F2612 = (YM2612 *)chip;
+ ym2612_state *F2612 = (ym2612_state *)chip;
F2612->OPN.ST.clock = clock;
F2612->OPN.ST.rate = rate;
@@ -2406,7 +2409,7 @@ void ym2612_clock_changed(void *chip, int clock, int rate)
/* shut down emulator */
void ym2612_shutdown(void *chip)
{
- YM2612 *F2612 = (YM2612 *)chip;
+ ym2612_state *F2612 = (ym2612_state *)chip;
FMCloseTable();
auto_free(F2612->OPN.ST.device->machine(), F2612);
@@ -2416,7 +2419,7 @@ void ym2612_shutdown(void *chip)
void ym2612_reset_chip(void *chip)
{
int i;
- YM2612 *F2612 = (YM2612 *)chip;
+ ym2612_state *F2612 = (ym2612_state *)chip;
fm2612_FM_OPN *OPN = &F2612->OPN;
OPNSetPres( OPN, 6*24, 6*24, 0);
@@ -2465,7 +2468,7 @@ void ym2612_reset_chip(void *chip)
/* v = value */
int ym2612_write(void *chip, int a, uint8_t v)
{
- YM2612 *F2612 = (YM2612 *)chip;
+ ym2612_state *F2612 = (ym2612_state *)chip;
int addr;
v &= 0xff; /* adjust to 8 bit bus */
@@ -2489,7 +2492,7 @@ int ym2612_write(void *chip, int a, uint8_t v)
switch( addr )
{
case 0x2a: /* DAC data (YM2612) */
- ym2612_update_req(F2612->OPN.ST.param);
+ ym2612_device::update_request(F2612->OPN.ST.device);
F2612->dacout = ((int)v - 0x80) << 6; /* level unknown */
break;
case 0x2b: /* DAC Sel (YM2612) */
@@ -2497,13 +2500,13 @@ int ym2612_write(void *chip, int a, uint8_t v)
F2612->dacen = v & 0x80;
break;
default: /* OPN section */
- ym2612_update_req(F2612->OPN.ST.param);
+ ym2612_device::update_request(F2612->OPN.ST.device);
/* write register */
OPNWriteMode(&(F2612->OPN),addr,v);
}
break;
default: /* 0x30-0xff OPN section */
- ym2612_update_req(F2612->OPN.ST.param);
+ ym2612_device::update_request(F2612->OPN.ST.device);
/* write register */
OPNWriteReg(&(F2612->OPN),addr,v);
}
@@ -2520,7 +2523,7 @@ int ym2612_write(void *chip, int a, uint8_t v)
addr = F2612->OPN.ST.address;
F2612->REGS[addr | 0x100] = v;
- ym2612_update_req(F2612->OPN.ST.param);
+ ym2612_device::update_request(F2612->OPN.ST.device);
OPNWriteReg(&(F2612->OPN),addr | 0x100,v);
break;
}
@@ -2529,7 +2532,7 @@ int ym2612_write(void *chip, int a, uint8_t v)
uint8_t ym2612_read(void *chip,int a)
{
- YM2612 *F2612 = (YM2612 *)chip;
+ ym2612_state *F2612 = (ym2612_state *)chip;
switch( a&3)
{
@@ -2538,7 +2541,7 @@ uint8_t ym2612_read(void *chip,int a)
case 1:
case 2:
case 3:
- LOG(F2612->device,LOG_WAR,("YM2612 #%p:A=%d read unmapped area\n",F2612->OPN.ST.param,a));
+ LOG(F2612->device,LOG_WAR,("YM2612 #%p:A=%d read unmapped area\n",F2612->OPN.ST.device,a));
return FM_STATUS_FLAG(&F2612->OPN.ST);
}
return 0;
@@ -2546,7 +2549,7 @@ uint8_t ym2612_read(void *chip,int a)
int ym2612_timer_over(void *chip,int c)
{
- YM2612 *F2612 = (YM2612 *)chip;
+ ym2612_state *F2612 = (ym2612_state *)chip;
if( c )
{ /* Timer B */
@@ -2554,7 +2557,7 @@ int ym2612_timer_over(void *chip,int c)
}
else
{ /* Timer A */
- ym2612_update_req(F2612->OPN.ST.param);
+ ym2612_device::update_request(F2612->OPN.ST.device);
/* timer update */
TimerAOver( &(F2612->OPN.ST) );
/* CSM mode key,TL controll */
diff --git a/src/devices/sound/fmopl.cpp b/src/devices/sound/fmopl.cpp
index fe4d80a1bc6..a9c15478779 100644
--- a/src/devices/sound/fmopl.cpp
+++ b/src/devices/sound/fmopl.cpp
@@ -194,6 +194,14 @@ static FILE *sample[1];
#define OPL_TYPE_Y8950 (OPL_TYPE_ADPCM|OPL_TYPE_KEYBOARD|OPL_TYPE_IO)
+namespace {
+
+// TODO: make these static members
+
+#define RATE_STEPS (8)
+extern const unsigned char eg_rate_shift[16+64+16];
+extern const unsigned char eg_rate_select[16+64+16];
+
struct OPL_SLOT
{
@@ -234,6 +242,33 @@ struct OPL_SLOT
/* waveform select */
uint16_t wavetable;
+
+ void KEYON(uint32_t key_set)
+ {
+ if( !key )
+ {
+ /* restart Phase Generator */
+ Cnt = 0;
+ /* phase -> Attack */
+ state = EG_ATT;
+ }
+ key |= key_set;
+ }
+
+ void KEYOFF(uint32_t key_clr)
+ {
+ if( key )
+ {
+ key &= key_clr;
+
+ if( !key )
+ {
+ /* phase -> Release */
+ if (state>EG_REL)
+ state = EG_REL;
+ }
+ }
+ }
};
struct OPL_CH
@@ -244,6 +279,36 @@ struct OPL_CH
uint32_t fc; /* Freq. Increment base */
uint32_t ksl_base; /* KeyScaleLevel Base step */
uint8_t kcode; /* key code (for key scaling) */
+
+
+ /* update phase increment counter of operator (also update the EG rates if necessary) */
+ void CALC_FCSLOT(OPL_SLOT &SLOT)
+ {
+ /* (frequency) phase increment counter */
+ SLOT.Incr = fc * SLOT.mul;
+ int const ksr = kcode >> SLOT.KSR;
+
+ if( SLOT.ksr != ksr )
+ {
+ SLOT.ksr = ksr;
+
+ /* calculate envelope generator rates */
+ if ((SLOT.ar + SLOT.ksr) < 16+62)
+ {
+ SLOT.eg_sh_ar = eg_rate_shift [SLOT.ar + SLOT.ksr ];
+ SLOT.eg_sel_ar = eg_rate_select[SLOT.ar + SLOT.ksr ];
+ }
+ else
+ {
+ SLOT.eg_sh_ar = 0;
+ SLOT.eg_sel_ar = 13*RATE_STEPS;
+ }
+ SLOT.eg_sh_dr = eg_rate_shift [SLOT.dr + SLOT.ksr ];
+ SLOT.eg_sel_dr = eg_rate_select[SLOT.dr + SLOT.ksr ];
+ SLOT.eg_sh_rr = eg_rate_shift [SLOT.rr + SLOT.ksr ];
+ SLOT.eg_sel_rr = eg_rate_select[SLOT.rr + SLOT.ksr ];
+ }
+ }
};
/* OPL state */
@@ -291,19 +356,19 @@ struct FM_OPL
uint8_t portLatch;
OPL_PORTHANDLER_R porthandler_r;
OPL_PORTHANDLER_W porthandler_w;
- void * port_param;
+ device_t * port_param;
OPL_PORTHANDLER_R keyboardhandler_r;
OPL_PORTHANDLER_W keyboardhandler_w;
- void * keyboard_param;
+ device_t * keyboard_param;
#endif
/* external event callback handlers */
OPL_TIMERHANDLER timer_handler; /* TIMER handler */
- void *TimerParam; /* TIMER parameter */
+ device_t *TimerParam; /* TIMER parameter */
OPL_IRQHANDLER IRQHandler; /* IRQ handler */
- void *IRQParam; /* IRQ parameter */
+ device_t *IRQParam; /* IRQ parameter */
OPL_UPDATEHANDLER UpdateHandler;/* stream update handler */
- void *UpdateParam; /* stream update parameter */
+ device_t *UpdateParam; /* stream update parameter */
uint8_t type; /* chip type */
uint8_t address; /* address register */
@@ -322,6 +387,619 @@ struct FM_OPL
#if BUILD_Y8950
int32_t output_deltat[4]; /* for Y8950 DELTA-T, chip is mono, that 4 here is just for safety */
#endif
+
+
+ /* status set and IRQ handling */
+ void STATUS_SET(int flag)
+ {
+ /* set status flag */
+ status |= flag;
+ if(!(status & 0x80))
+ {
+ if(status & statusmask)
+ { /* IRQ on */
+ status |= 0x80;
+ /* callback user interrupt handler (IRQ is OFF to ON) */
+ if(IRQHandler) (IRQHandler)(IRQParam,1);
+ }
+ }
+ }
+
+ /* status reset and IRQ handling */
+ void STATUS_RESET(int flag)
+ {
+ /* reset status flag */
+ status &=~flag;
+ if(status & 0x80)
+ {
+ if (!(status & statusmask) )
+ {
+ status &= 0x7f;
+ /* callback user interrupt handler (IRQ is ON to OFF) */
+ if(IRQHandler) (IRQHandler)(IRQParam,0);
+ }
+ }
+ }
+
+ /* IRQ mask set */
+ void STATUSMASK_SET(int flag)
+ {
+ statusmask = flag;
+ /* IRQ handling check */
+ STATUS_SET(0);
+ STATUS_RESET(0);
+ }
+
+
+ /* advance LFO to next sample */
+ void advance_lfo()
+ {
+ /* LFO */
+ lfo_am_cnt += lfo_am_inc;
+ if (lfo_am_cnt >= (uint32_t(LFO_AM_TAB_ELEMENTS) << LFO_SH)) /* lfo_am_table is 210 elements long */
+ lfo_am_cnt -= (uint32_t(LFO_AM_TAB_ELEMENTS) << LFO_SH);
+
+ uint8_t const tmp = lfo_am_table[ lfo_am_cnt >> LFO_SH ];
+
+ LFO_AM = lfo_am_depth ? tmp : tmp >> 2;
+
+ lfo_pm_cnt += lfo_pm_inc;
+ LFO_PM = (lfo_pm_cnt>>LFO_SH & 7) | lfo_pm_depth_range;
+ }
+
+ /* advance to next sample */
+ void advance()
+ {
+ eg_timer += eg_timer_add;
+
+ while (eg_timer >= eg_timer_overflow)
+ {
+ eg_timer -= eg_timer_overflow;
+
+ eg_cnt++;
+
+ for (int i=0; i<9*2; i++)
+ {
+ OPL_CH &CH = P_CH[i/2];
+ OPL_SLOT &op = CH.SLOT[i&1];
+
+ /* Envelope Generator */
+ switch(op.state)
+ {
+ case EG_ATT: /* attack phase */
+ if ( !(eg_cnt & ((1<<op.eg_sh_ar)-1) ) )
+ {
+ op.volume += (~op.volume *
+ (eg_inc[op.eg_sel_ar + ((eg_cnt>>op.eg_sh_ar)&7)])
+ ) >>3;
+
+ if (op.volume <= MIN_ATT_INDEX)
+ {
+ op.volume = MIN_ATT_INDEX;
+ op.state = EG_DEC;
+ }
+
+ }
+ break;
+
+ case EG_DEC: /* decay phase */
+ if ( !(eg_cnt & ((1<<op.eg_sh_dr)-1) ) )
+ {
+ op.volume += eg_inc[op.eg_sel_dr + ((eg_cnt>>op.eg_sh_dr)&7)];
+
+ if ( op.volume >= op.sl )
+ op.state = EG_SUS;
+
+ }
+ break;
+
+ case EG_SUS: /* sustain phase */
+
+ /* this is important behaviour:
+ one can change percusive/non-percussive modes on the fly and
+ the chip will remain in sustain phase - verified on real YM3812 */
+
+ if(op.eg_type) /* non-percussive mode */
+ {
+ /* do nothing */
+ }
+ else /* percussive mode */
+ {
+ /* during sustain phase chip adds Release Rate (in percussive mode) */
+ if ( !(eg_cnt & ((1<<op.eg_sh_rr)-1) ) )
+ {
+ op.volume += eg_inc[op.eg_sel_rr + ((eg_cnt>>op.eg_sh_rr)&7)];
+
+ if ( op.volume >= MAX_ATT_INDEX )
+ op.volume = MAX_ATT_INDEX;
+ }
+ /* else do nothing in sustain phase */
+ }
+ break;
+
+ case EG_REL: /* release phase */
+ if ( !(eg_cnt & ((1<<op.eg_sh_rr)-1) ) )
+ {
+ op.volume += eg_inc[op.eg_sel_rr + ((eg_cnt>>op.eg_sh_rr)&7)];
+
+ if ( op.volume >= MAX_ATT_INDEX )
+ {
+ op.volume = MAX_ATT_INDEX;
+ op.state = EG_OFF;
+ }
+
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+
+ for (int i=0; i<9*2; i++)
+ {
+ OPL_CH &CH = P_CH[i/2];
+ OPL_SLOT &op = CH.SLOT[i&1];
+
+ /* Phase Generator */
+ if(op.vib)
+ {
+ unsigned int block_fnum = CH.block_fnum;
+ unsigned int const fnum_lfo = (block_fnum&0x0380) >> 7;
+
+ signed int const lfo_fn_table_index_offset = lfo_pm_table[LFO_PM + 16*fnum_lfo ];
+
+ if (lfo_fn_table_index_offset) /* LFO phase modulation active */
+ {
+ block_fnum += lfo_fn_table_index_offset;
+ uint8_t const block = (block_fnum&0x1c00) >> 10;
+ op.Cnt += (fn_tab[block_fnum&0x03ff] >> (7-block)) * op.mul;
+ }
+ else /* LFO phase modulation = zero */
+ {
+ op.Cnt += op.Incr;
+ }
+ }
+ else /* LFO phase modulation disabled for this operator */
+ {
+ op.Cnt += op.Incr;
+ }
+ }
+
+ /* The Noise Generator of the YM3812 is 23-bit shift register.
+ * Period is equal to 2^23-2 samples.
+ * Register works at sampling frequency of the chip, so output
+ * can change on every sample.
+ *
+ * Output of the register and input to the bit 22 is:
+ * bit0 XOR bit14 XOR bit15 XOR bit22
+ *
+ * Simply use bit 22 as the noise output.
+ */
+
+ noise_p += noise_f;
+ int i = noise_p >> FREQ_SH; /* number of events (shifts of the shift register) */
+ noise_p &= FREQ_MASK;
+ while (i)
+ {
+ /*
+ uint32_t j;
+ j = ( (noise_rng) ^ (noise_rng>>14) ^ (noise_rng>>15) ^ (noise_rng>>22) ) & 1;
+ noise_rng = (j<<22) | (noise_rng>>1);
+ */
+
+ /*
+ Instead of doing all the logic operations above, we
+ use a trick here (and use bit 0 as the noise output).
+ The difference is only that the noise bit changes one
+ step ahead. This doesn't matter since we don't know
+ what is real state of the noise_rng after the reset.
+ */
+
+ if (noise_rng & 1) noise_rng ^= 0x800302;
+ noise_rng >>= 1;
+
+ i--;
+ }
+ }
+
+ /* calculate output */
+ void CALC_CH(OPL_CH &CH)
+ {
+ OPL_SLOT *SLOT;
+ unsigned int env;
+ signed int out;
+
+ phase_modulation = 0;
+
+ /* SLOT 1 */
+ SLOT = &CH.SLOT[SLOT1];
+ env = volume_calc(*SLOT);
+ out = SLOT->op1_out[0] + SLOT->op1_out[1];
+ SLOT->op1_out[0] = SLOT->op1_out[1];
+ *SLOT->connect1 += SLOT->op1_out[0];
+ SLOT->op1_out[1] = 0;
+ if( env < ENV_QUIET )
+ {
+ if (!SLOT->FB)
+ out = 0;
+ SLOT->op1_out[1] = op_calc1(SLOT->Cnt, env, (out<<SLOT->FB), SLOT->wavetable );
+ }
+
+ /* SLOT 2 */
+ SLOT++;
+ env = volume_calc(*SLOT);
+ if( env < ENV_QUIET )
+ output[0] += op_calc(SLOT->Cnt, env, phase_modulation, SLOT->wavetable);
+ }
+
+ /*
+ operators used in the rhythm sounds generation process:
+
+ Envelope Generator:
+
+ channel operator register number Bass High Snare Tom Top
+ / slot number TL ARDR SLRR Wave Drum Hat Drum Tom Cymbal
+ 6 / 0 12 50 70 90 f0 +
+ 6 / 1 15 53 73 93 f3 +
+ 7 / 0 13 51 71 91 f1 +
+ 7 / 1 16 54 74 94 f4 +
+ 8 / 0 14 52 72 92 f2 +
+ 8 / 1 17 55 75 95 f5 +
+
+ Phase Generator:
+
+ channel operator register number Bass High Snare Tom Top
+ / slot number MULTIPLE Drum Hat Drum Tom Cymbal
+ 6 / 0 12 30 +
+ 6 / 1 15 33 +
+ 7 / 0 13 31 + + +
+ 7 / 1 16 34 ----- n o t u s e d -----
+ 8 / 0 14 32 +
+ 8 / 1 17 35 + +
+
+ channel operator register number Bass High Snare Tom Top
+ number number BLK/FNUM2 FNUM Drum Hat Drum Tom Cymbal
+ 6 12,15 B6 A6 +
+
+ 7 13,16 B7 A7 + + +
+
+ 8 14,17 B8 A8 + + +
+
+ */
+
+ /* calculate rhythm */
+
+ void CALC_RH()
+ {
+ unsigned int const noise = BIT(noise_rng, 0);
+
+ OPL_SLOT *SLOT;
+ signed int out;
+ unsigned int env;
+
+
+ /* Bass Drum (verified on real YM3812):
+ - depends on the channel 6 'connect' register:
+ when connect = 0 it works the same as in normal (non-rhythm) mode (op1->op2->out)
+ when connect = 1 _only_ operator 2 is present on output (op2->out), operator 1 is ignored
+ - output sample always is multiplied by 2
+ */
+
+ phase_modulation = 0;
+ /* SLOT 1 */
+ SLOT = &P_CH[6].SLOT[SLOT1];
+ env = volume_calc(*SLOT);
+
+ out = SLOT->op1_out[0] + SLOT->op1_out[1];
+ SLOT->op1_out[0] = SLOT->op1_out[1];
+
+ if (!SLOT->CON)
+ phase_modulation = SLOT->op1_out[0];
+ /* else ignore output of operator 1 */
+
+ SLOT->op1_out[1] = 0;
+ if( env < ENV_QUIET )
+ {
+ if (!SLOT->FB)
+ out = 0;
+ SLOT->op1_out[1] = op_calc1(SLOT->Cnt, env, (out<<SLOT->FB), SLOT->wavetable );
+ }
+
+ /* SLOT 2 */
+ SLOT++;
+ env = volume_calc(*SLOT);
+ if( env < ENV_QUIET )
+ output[0] += op_calc(SLOT->Cnt, env, phase_modulation, SLOT->wavetable) * 2;
+
+
+ /* Phase generation is based on: */
+ /* HH (13) channel 7->slot 1 combined with channel 8->slot 2 (same combination as TOP CYMBAL but different output phases) */
+ /* SD (16) channel 7->slot 1 */
+ /* TOM (14) channel 8->slot 1 */
+ /* TOP (17) channel 7->slot 1 combined with channel 8->slot 2 (same combination as HIGH HAT but different output phases) */
+
+ /* Envelope generation based on: */
+ /* HH channel 7->slot1 */
+ /* SD channel 7->slot2 */
+ /* TOM channel 8->slot1 */
+ /* TOP channel 8->slot2 */
+
+
+ /* The following formulas can be well optimized.
+ I leave them in direct form for now (in case I've missed something).
+ */
+
+ /* High Hat (verified on real YM3812) */
+ OPL_SLOT const &SLOT7_1 = P_CH[7].SLOT[SLOT1];
+ OPL_SLOT const &SLOT8_2 = P_CH[8].SLOT[SLOT2];
+ env = volume_calc(SLOT7_1);
+ if( env < ENV_QUIET )
+ {
+ /* high hat phase generation:
+ phase = d0 or 234 (based on frequency only)
+ phase = 34 or 2d0 (based on noise)
+ */
+
+ /* base frequency derived from operator 1 in channel 7 */
+ unsigned char const bit7 = BIT(SLOT7_1.Cnt >> FREQ_SH, 7);
+ unsigned char const bit3 = BIT(SLOT7_1.Cnt >> FREQ_SH, 3);
+ unsigned char const bit2 = BIT(SLOT7_1.Cnt >> FREQ_SH, 2);
+
+ unsigned char const res1 = (bit2 ^ bit7) | bit3;
+
+ /* when res1 = 0 phase = 0x000 | 0xd0; */
+ /* when res1 = 1 phase = 0x200 | (0xd0>>2); */
+ uint32_t phase = res1 ? (0x200|(0xd0>>2)) : 0xd0;
+
+ /* enable gate based on frequency of operator 2 in channel 8 */
+ unsigned char const bit5e= BIT(SLOT8_2.Cnt >> FREQ_SH, 5);
+ unsigned char const bit3e= BIT(SLOT8_2.Cnt >> FREQ_SH, 3);
+
+ unsigned char const res2 = bit3e ^ bit5e;
+
+ /* when res2 = 0 pass the phase from calculation above (res1); */
+ /* when res2 = 1 phase = 0x200 | (0xd0>>2); */
+ if (res2)
+ phase = (0x200|(0xd0>>2));
+
+
+ /* when phase & 0x200 is set and noise=1 then phase = 0x200|0xd0 */
+ /* when phase & 0x200 is set and noise=0 then phase = 0x200|(0xd0>>2), ie no change */
+ if (phase&0x200)
+ {
+ if (noise)
+ phase = 0x200|0xd0;
+ }
+ else
+ /* when phase & 0x200 is clear and noise=1 then phase = 0xd0>>2 */
+ /* when phase & 0x200 is clear and noise=0 then phase = 0xd0, ie no change */
+ {
+ if (noise)
+ phase = 0xd0>>2;
+ }
+
+ output[0] += op_calc(phase<<FREQ_SH, env, 0, SLOT7_1.wavetable) * 2;
+ }
+
+ /* Snare Drum (verified on real YM3812) */
+ OPL_SLOT const &SLOT7_2 = P_CH[7].SLOT[SLOT2];
+ env = volume_calc(SLOT7_2);
+ if( env < ENV_QUIET )
+ {
+ /* base frequency derived from operator 1 in channel 7 */
+ unsigned char const bit8 = BIT(SLOT7_1.Cnt >> FREQ_SH, 8);
+
+ /* when bit8 = 0 phase = 0x100; */
+ /* when bit8 = 1 phase = 0x200; */
+ uint32_t phase = bit8 ? 0x200 : 0x100;
+
+ /* Noise bit XOR'es phase by 0x100 */
+ /* when noisebit = 0 pass the phase from calculation above */
+ /* when noisebit = 1 phase ^= 0x100; */
+ /* in other words: phase ^= (noisebit<<8); */
+ if (noise)
+ phase ^= 0x100;
+
+ output[0] += op_calc(phase<<FREQ_SH, env, 0, SLOT7_2.wavetable) * 2;
+ }
+
+ /* Tom Tom (verified on real YM3812) */
+ OPL_SLOT const &SLOT8_1 = P_CH[8].SLOT[SLOT1];
+ env = volume_calc(SLOT8_1);
+ if( env < ENV_QUIET )
+ output[0] += op_calc(SLOT8_1.Cnt, env, 0, SLOT8_1.wavetable) * 2;
+
+ /* Top Cymbal (verified on real YM3812) */
+ env = volume_calc(SLOT8_2);
+ if( env < ENV_QUIET )
+ {
+ /* base frequency derived from operator 1 in channel 7 */
+ unsigned char const bit7 = BIT(SLOT7_1.Cnt >> FREQ_SH, 7);
+ unsigned char const bit3 = BIT(SLOT7_1.Cnt >> FREQ_SH, 3);
+ unsigned char const bit2 = BIT(SLOT7_1.Cnt >> FREQ_SH, 2);
+
+ unsigned char const res1 = (bit2 ^ bit7) | bit3;
+
+ /* when res1 = 0 phase = 0x000 | 0x100; */
+ /* when res1 = 1 phase = 0x200 | 0x100; */
+ uint32_t phase = res1 ? 0x300 : 0x100;
+
+ /* enable gate based on frequency of operator 2 in channel 8 */
+ unsigned char const bit5e= BIT(SLOT8_2.Cnt >> FREQ_SH, 5);
+ unsigned char const bit3e= BIT(SLOT8_2.Cnt >> FREQ_SH, 3);
+
+ unsigned char const res2 = bit3e ^ bit5e;
+ /* when res2 = 0 pass the phase from calculation above (res1); */
+ /* when res2 = 1 phase = 0x200 | 0x100; */
+ if (res2)
+ phase = 0x300;
+
+ output[0] += op_calc(phase<<FREQ_SH, env, 0, SLOT8_2.wavetable) * 2;
+ }
+ }
+
+
+ void initialize();
+
+
+ /* set multi,am,vib,EG-TYP,KSR,mul */
+ void set_mul(int slot, int v)
+ {
+ OPL_CH &CH = P_CH[slot/2];
+ OPL_SLOT &SLOT = CH.SLOT[slot&1];
+
+ SLOT.mul = mul_tab[v&0x0f];
+ SLOT.KSR = (v & 0x10) ? 0 : 2;
+ SLOT.eg_type = (v & 0x20);
+ SLOT.vib = (v & 0x40);
+ SLOT.AMmask = (v & 0x80) ? ~0 : 0;
+ CH.CALC_FCSLOT(SLOT);
+ }
+
+ /* set ksl & tl */
+ void set_ksl_tl(int slot, int v)
+ {
+ OPL_CH &CH = P_CH[slot/2];
+ OPL_SLOT &SLOT = CH.SLOT[slot&1];
+
+ SLOT.ksl = ksl_shift[v >> 6];
+ SLOT.TL = (v&0x3f)<<(ENV_BITS-1-7); /* 7 bits TL (bit 6 = always 0) */
+
+ SLOT.TLL = SLOT.TL + (CH.ksl_base >> SLOT.ksl);
+ }
+
+ /* set attack rate & decay rate */
+ void set_ar_dr(int slot, int v)
+ {
+ OPL_CH &CH = P_CH[slot/2];
+ OPL_SLOT &SLOT = CH.SLOT[slot&1];
+
+ SLOT.ar = (v>>4) ? 16 + ((v>>4) <<2) : 0;
+
+ if ((SLOT.ar + SLOT.ksr) < 16+62)
+ {
+ SLOT.eg_sh_ar = eg_rate_shift [SLOT.ar + SLOT.ksr ];
+ SLOT.eg_sel_ar = eg_rate_select[SLOT.ar + SLOT.ksr ];
+ }
+ else
+ {
+ SLOT.eg_sh_ar = 0;
+ SLOT.eg_sel_ar = 13*RATE_STEPS;
+ }
+
+ SLOT.dr = (v&0x0f)? 16 + ((v&0x0f)<<2) : 0;
+ SLOT.eg_sh_dr = eg_rate_shift [SLOT.dr + SLOT.ksr ];
+ SLOT.eg_sel_dr = eg_rate_select[SLOT.dr + SLOT.ksr ];
+ }
+
+ /* set sustain level & release rate */
+ void set_sl_rr(int slot, int v)
+ {
+ OPL_CH &CH = P_CH[slot/2];
+ OPL_SLOT &SLOT = CH.SLOT[slot&1];
+
+ SLOT.sl = sl_tab[ v>>4 ];
+
+ SLOT.rr = (v&0x0f)? 16 + ((v&0x0f)<<2) : 0;
+ SLOT.eg_sh_rr = eg_rate_shift [SLOT.rr + SLOT.ksr ];
+ SLOT.eg_sel_rr = eg_rate_select[SLOT.rr + SLOT.ksr ];
+ }
+
+
+ void WriteReg(int r, int v);
+ void ResetChip();
+ void postload();
+
+
+ /* lock/unlock for common table */
+ static int LockTable(device_t *device)
+ {
+ num_lock++;
+ if(num_lock>1) return 0;
+
+ /* first time */
+
+ /* allocate total level table (128kb space) */
+ if( !init_tables() )
+ {
+ num_lock--;
+ return -1;
+ }
+
+ return 0;
+ }
+
+ static void UnLockTable()
+ {
+ if(num_lock) num_lock--;
+ if(num_lock) return;
+
+ /* last time */
+ CloseTable();
+ }
+
+private:
+ uint32_t volume_calc(OPL_SLOT const &OP) const
+ {
+ return OP.TLL + uint32_t(OP.volume) + (LFO_AM & OP.AMmask);
+ }
+
+ static inline signed int op_calc(uint32_t phase, unsigned int env, signed int pm, unsigned int wave_tab)
+ {
+ uint32_t const p = (env<<4) + sin_tab[wave_tab + ((((signed int)((phase & ~FREQ_MASK) + (pm<<16))) >> FREQ_SH ) & SIN_MASK) ];
+
+ return (p >= TL_TAB_LEN) ? 0 : tl_tab[p];
+ }
+
+ static inline signed int op_calc1(uint32_t phase, unsigned int env, signed int pm, unsigned int wave_tab)
+ {
+ uint32_t const p = (env<<4) + sin_tab[wave_tab + ((((signed int)((phase & ~FREQ_MASK) + pm )) >> FREQ_SH ) & SIN_MASK) ];
+
+ return (p >= TL_TAB_LEN) ? 0 : tl_tab[p];
+ }
+
+
+ static int init_tables();
+
+ static void CloseTable()
+ {
+#ifdef SAVE_SAMPLE
+ fclose(sample[0]);
+#endif
+ }
+
+
+ static constexpr uint32_t SC(uint32_t db) { return uint32_t(db * (2.0 / ENV_STEP)); }
+
+
+ static constexpr double DV = 0.1875 / 2.0;
+
+
+ /* TL_TAB_LEN is calculated as:
+ * 12 - sinus amplitude bits (Y axis)
+ * 2 - sinus sign bit (Y axis)
+ * TL_RES_LEN - sinus resolution (X axis)
+ */
+ static constexpr unsigned TL_TAB_LEN = 12 * 2 * TL_RES_LEN;
+ static constexpr unsigned ENV_QUIET = TL_TAB_LEN >> 4;
+
+ static constexpr unsigned LFO_AM_TAB_ELEMENTS = 210;
+
+ static const double ksl_tab[8*16];
+ static const uint32_t ksl_shift[4];
+ static const uint32_t sl_tab[16];
+ static const unsigned char eg_inc[15 * RATE_STEPS];
+
+ static const uint8_t mul_tab[16];
+ static signed int tl_tab[TL_TAB_LEN];
+ static unsigned int sin_tab[SIN_LEN * 4];
+
+ static const uint8_t lfo_am_table[LFO_AM_TAB_ELEMENTS];
+ static const int8_t lfo_pm_table[8 * 8 * 2];
+
+ static int num_lock;
};
@@ -338,8 +1016,7 @@ static const int slot_array[32]=
/* key scale level */
/* table is 3dB/octave , DV converts this into 6dB/octave */
/* 0.1875 is bit 0 weight of the envelope counter (volume) expressed in the 'decibel' scale */
-#define DV (0.1875/2.0)
-static const double ksl_tab[8*16]=
+const double FM_OPL::ksl_tab[8*16]=
{
/* OCT 0 */
0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV,
@@ -382,24 +1059,20 @@ static const double ksl_tab[8*16]=
18.000/DV,18.750/DV,19.125/DV,19.500/DV,
19.875/DV,20.250/DV,20.625/DV,21.000/DV
};
-#undef DV
/* 0 / 3.0 / 1.5 / 6.0 dB/OCT */
-static const uint32_t ksl_shift[4] = { 31, 1, 2, 0 };
+const uint32_t FM_OPL::ksl_shift[4] = { 31, 1, 2, 0 };
/* sustain level table (3dB per step) */
/* 0 - 15: 0, 3, 6, 9,12,15,18,21,24,27,30,33,36,39,42,93 (dB)*/
-#define SC(db) (uint32_t) ( db * (2.0/ENV_STEP) )
-static const uint32_t sl_tab[16]={
- SC( 0),SC( 1),SC( 2),SC(3 ),SC(4 ),SC(5 ),SC(6 ),SC( 7),
+const uint32_t FM_OPL::sl_tab[16]={
+ SC( 0),SC( 1),SC( 2),SC( 3),SC( 4),SC( 5),SC( 6),SC( 7),
SC( 8),SC( 9),SC(10),SC(11),SC(12),SC(13),SC(14),SC(31)
};
-#undef SC
-#define RATE_STEPS (8)
-static const unsigned char eg_inc[15*RATE_STEPS]={
+const unsigned char FM_OPL::eg_inc[15*RATE_STEPS]={
/*cycle:0 1 2 3 4 5 6 7*/
/* 0 */ 0,1, 0,1, 0,1, 0,1, /* rates 00..12 0 (increment by 0 or 1) */
@@ -426,7 +1099,7 @@ static const unsigned char eg_inc[15*RATE_STEPS]={
#define O(a) (a*RATE_STEPS)
/*note that there is no O(13) in this table - it's directly in the code */
-static const unsigned char eg_rate_select[16+64+16]={ /* Envelope Generator rates (16 + 64 rates + 16 RKS) */
+const unsigned char eg_rate_select[16+64+16]={ /* Envelope Generator rates (16 + 64 rates + 16 RKS) */
/* 16 infinite time rates */
O(14),O(14),O(14),O(14),O(14),O(14),O(14),O(14),
O(14),O(14),O(14),O(14),O(14),O(14),O(14),O(14),
@@ -467,7 +1140,7 @@ O(12),O(12),O(12),O(12),O(12),O(12),O(12),O(12),
/*mask 4095, 2047, 1023, 511, 255, 127, 63, 31, 15, 7, 3, 1, 0, 0, 0, 0 */
#define O(a) (a*1)
-static const unsigned char eg_rate_shift[16+64+16]={ /* Envelope Generator counter shifts (16 + 64 rates + 16 RKS) */
+const unsigned char eg_rate_shift[16+64+16]={ /* Envelope Generator counter shifts (16 + 64 rates + 16 RKS) */
/* 16 infinite time rates */
O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0),
O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0),
@@ -506,26 +1179,18 @@ O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),
/* multiple table */
#define ML 2
-static const uint8_t mul_tab[16]= {
+const uint8_t FM_OPL::mul_tab[16]= {
/* 1/2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,10,12,12,15,15 */
ML/2, 1*ML, 2*ML, 3*ML, 4*ML, 5*ML, 6*ML, 7*ML,
8*ML, 9*ML,10*ML,10*ML,12*ML,12*ML,15*ML,15*ML
};
#undef ML
-/* TL_TAB_LEN is calculated as:
-* 12 - sinus amplitude bits (Y axis)
-* 2 - sinus sign bit (Y axis)
-* TL_RES_LEN - sinus resolution (X axis)
-*/
-#define TL_TAB_LEN (12*2*TL_RES_LEN)
-static signed int tl_tab[TL_TAB_LEN];
-
-#define ENV_QUIET (TL_TAB_LEN>>4)
+signed int FM_OPL::tl_tab[TL_TAB_LEN];
/* sin waveform table in 'decibel' scale */
/* four waveforms on OPL2 type chips */
-static unsigned int sin_tab[SIN_LEN * 4];
+unsigned int FM_OPL::sin_tab[SIN_LEN * 4];
/* LFO Amplitude Modulation table (verified on real YM3812)
@@ -541,9 +1206,7 @@ static unsigned int sin_tab[SIN_LEN * 4];
When AM = 0 data is divided by 4 before being used (losing precision is important)
*/
-#define LFO_AM_TAB_ELEMENTS 210
-
-static const uint8_t lfo_am_table[LFO_AM_TAB_ELEMENTS] = {
+const uint8_t FM_OPL::lfo_am_table[LFO_AM_TAB_ELEMENTS] = {
0,0,0,0,0,0,0,
1,1,1,1,
2,2,2,2,
@@ -599,7 +1262,7 @@ static const uint8_t lfo_am_table[LFO_AM_TAB_ELEMENTS] = {
};
/* LFO Phase Modulation table (verified on real YM3812) */
-static const int8_t lfo_pm_table[8*8*2] = {
+const int8_t FM_OPL::lfo_pm_table[8*8*2] = {
/* FNUM2/FNUM = 00 0xxxxxxx (0x0000) */
0, 0, 0, 0, 0, 0, 0, 0, /*LFO PM depth = 0*/
0, 0, 0, 0, 0, 0, 0, 0, /*LFO PM depth = 1*/
@@ -635,14 +1298,7 @@ static const int8_t lfo_pm_table[8*8*2] = {
/* lock level of common table */
-static int num_lock = 0;
-
-
-#define SLOT7_1 (&OPL->P_CH[7].SLOT[SLOT1])
-#define SLOT7_2 (&OPL->P_CH[7].SLOT[SLOT2])
-#define SLOT8_1 (&OPL->P_CH[8].SLOT[SLOT1])
-#define SLOT8_2 (&OPL->P_CH[8].SLOT[SLOT2])
-
+int FM_OPL::num_lock = 0;
@@ -656,491 +1312,8 @@ static inline int limit( int val, int max, int min ) {
}
-/* status set and IRQ handling */
-static inline void OPL_STATUS_SET(FM_OPL *OPL,int flag)
-{
- /* set status flag */
- OPL->status |= flag;
- if(!(OPL->status & 0x80))
- {
- if(OPL->status & OPL->statusmask)
- { /* IRQ on */
- OPL->status |= 0x80;
- /* callback user interrupt handler (IRQ is OFF to ON) */
- if(OPL->IRQHandler) (OPL->IRQHandler)(OPL->IRQParam,1);
- }
- }
-}
-
-/* status reset and IRQ handling */
-static inline void OPL_STATUS_RESET(FM_OPL *OPL,int flag)
-{
- /* reset status flag */
- OPL->status &=~flag;
- if((OPL->status & 0x80))
- {
- if (!(OPL->status & OPL->statusmask) )
- {
- OPL->status &= 0x7f;
- /* callback user interrupt handler (IRQ is ON to OFF) */
- if(OPL->IRQHandler) (OPL->IRQHandler)(OPL->IRQParam,0);
- }
- }
-}
-
-/* IRQ mask set */
-static inline void OPL_STATUSMASK_SET(FM_OPL *OPL,int flag)
-{
- OPL->statusmask = flag;
- /* IRQ handling check */
- OPL_STATUS_SET(OPL,0);
- OPL_STATUS_RESET(OPL,0);
-}
-
-
-/* advance LFO to next sample */
-static inline void advance_lfo(FM_OPL *OPL)
-{
- uint8_t tmp;
-
- /* LFO */
- OPL->lfo_am_cnt += OPL->lfo_am_inc;
- if (OPL->lfo_am_cnt >= ((uint32_t)LFO_AM_TAB_ELEMENTS<<LFO_SH) ) /* lfo_am_table is 210 elements long */
- OPL->lfo_am_cnt -= ((uint32_t)LFO_AM_TAB_ELEMENTS<<LFO_SH);
-
- tmp = lfo_am_table[ OPL->lfo_am_cnt >> LFO_SH ];
-
- if (OPL->lfo_am_depth)
- OPL->LFO_AM = tmp;
- else
- OPL->LFO_AM = tmp>>2;
-
- OPL->lfo_pm_cnt += OPL->lfo_pm_inc;
- OPL->LFO_PM = ((OPL->lfo_pm_cnt>>LFO_SH) & 7) | OPL->lfo_pm_depth_range;
-}
-
-/* advance to next sample */
-static inline void advance(FM_OPL *OPL)
-{
- OPL_CH *CH;
- OPL_SLOT *op;
- int i;
-
- OPL->eg_timer += OPL->eg_timer_add;
-
- while (OPL->eg_timer >= OPL->eg_timer_overflow)
- {
- OPL->eg_timer -= OPL->eg_timer_overflow;
-
- OPL->eg_cnt++;
-
- for (i=0; i<9*2; i++)
- {
- CH = &OPL->P_CH[i/2];
- op = &CH->SLOT[i&1];
-
- /* Envelope Generator */
- switch(op->state)
- {
- case EG_ATT: /* attack phase */
- if ( !(OPL->eg_cnt & ((1<<op->eg_sh_ar)-1) ) )
- {
- op->volume += (~op->volume *
- (eg_inc[op->eg_sel_ar + ((OPL->eg_cnt>>op->eg_sh_ar)&7)])
- ) >>3;
-
- if (op->volume <= MIN_ATT_INDEX)
- {
- op->volume = MIN_ATT_INDEX;
- op->state = EG_DEC;
- }
-
- }
- break;
-
- case EG_DEC: /* decay phase */
- if ( !(OPL->eg_cnt & ((1<<op->eg_sh_dr)-1) ) )
- {
- op->volume += eg_inc[op->eg_sel_dr + ((OPL->eg_cnt>>op->eg_sh_dr)&7)];
-
- if ( op->volume >= op->sl )
- op->state = EG_SUS;
-
- }
- break;
-
- case EG_SUS: /* sustain phase */
-
- /* this is important behaviour:
- one can change percusive/non-percussive modes on the fly and
- the chip will remain in sustain phase - verified on real YM3812 */
-
- if(op->eg_type) /* non-percussive mode */
- {
- /* do nothing */
- }
- else /* percussive mode */
- {
- /* during sustain phase chip adds Release Rate (in percussive mode) */
- if ( !(OPL->eg_cnt & ((1<<op->eg_sh_rr)-1) ) )
- {
- op->volume += eg_inc[op->eg_sel_rr + ((OPL->eg_cnt>>op->eg_sh_rr)&7)];
-
- if ( op->volume >= MAX_ATT_INDEX )
- op->volume = MAX_ATT_INDEX;
- }
- /* else do nothing in sustain phase */
- }
- break;
-
- case EG_REL: /* release phase */
- if ( !(OPL->eg_cnt & ((1<<op->eg_sh_rr)-1) ) )
- {
- op->volume += eg_inc[op->eg_sel_rr + ((OPL->eg_cnt>>op->eg_sh_rr)&7)];
-
- if ( op->volume >= MAX_ATT_INDEX )
- {
- op->volume = MAX_ATT_INDEX;
- op->state = EG_OFF;
- }
-
- }
- break;
-
- default:
- break;
- }
- }
- }
-
- for (i=0; i<9*2; i++)
- {
- CH = &OPL->P_CH[i/2];
- op = &CH->SLOT[i&1];
-
- /* Phase Generator */
- if(op->vib)
- {
- uint8_t block;
- unsigned int block_fnum = CH->block_fnum;
-
- unsigned int fnum_lfo = (block_fnum&0x0380) >> 7;
-
- signed int lfo_fn_table_index_offset = lfo_pm_table[OPL->LFO_PM + 16*fnum_lfo ];
-
- if (lfo_fn_table_index_offset) /* LFO phase modulation active */
- {
- block_fnum += lfo_fn_table_index_offset;
- block = (block_fnum&0x1c00) >> 10;
- op->Cnt += (OPL->fn_tab[block_fnum&0x03ff] >> (7-block)) * op->mul;
- }
- else /* LFO phase modulation = zero */
- {
- op->Cnt += op->Incr;
- }
- }
- else /* LFO phase modulation disabled for this operator */
- {
- op->Cnt += op->Incr;
- }
- }
-
- /* The Noise Generator of the YM3812 is 23-bit shift register.
- * Period is equal to 2^23-2 samples.
- * Register works at sampling frequency of the chip, so output
- * can change on every sample.
- *
- * Output of the register and input to the bit 22 is:
- * bit0 XOR bit14 XOR bit15 XOR bit22
- *
- * Simply use bit 22 as the noise output.
- */
-
- OPL->noise_p += OPL->noise_f;
- i = OPL->noise_p >> FREQ_SH; /* number of events (shifts of the shift register) */
- OPL->noise_p &= FREQ_MASK;
- while (i)
- {
- /*
- uint32_t j;
- j = ( (OPL->noise_rng) ^ (OPL->noise_rng>>14) ^ (OPL->noise_rng>>15) ^ (OPL->noise_rng>>22) ) & 1;
- OPL->noise_rng = (j<<22) | (OPL->noise_rng>>1);
- */
-
- /*
- Instead of doing all the logic operations above, we
- use a trick here (and use bit 0 as the noise output).
- The difference is only that the noise bit changes one
- step ahead. This doesn't matter since we don't know
- what is real state of the noise_rng after the reset.
- */
-
- if (OPL->noise_rng & 1) OPL->noise_rng ^= 0x800302;
- OPL->noise_rng >>= 1;
-
- i--;
- }
-}
-
-
-static inline signed int op_calc(uint32_t phase, unsigned int env, signed int pm, unsigned int wave_tab)
-{
- uint32_t p;
-
- p = (env<<4) + sin_tab[wave_tab + ((((signed int)((phase & ~FREQ_MASK) + (pm<<16))) >> FREQ_SH ) & SIN_MASK) ];
-
- if (p >= TL_TAB_LEN)
- return 0;
- return tl_tab[p];
-}
-
-static inline signed int op_calc1(uint32_t phase, unsigned int env, signed int pm, unsigned int wave_tab)
-{
- uint32_t p;
-
- p = (env<<4) + sin_tab[wave_tab + ((((signed int)((phase & ~FREQ_MASK) + pm )) >> FREQ_SH ) & SIN_MASK) ];
-
- if (p >= TL_TAB_LEN)
- return 0;
- return tl_tab[p];
-}
-
-
-#define volume_calc(OP) ((OP)->TLL + ((uint32_t)(OP)->volume) + (OPL->LFO_AM & (OP)->AMmask))
-
-/* calculate output */
-static inline void OPL_CALC_CH( FM_OPL *OPL, OPL_CH *CH )
-{
- OPL_SLOT *SLOT;
- unsigned int env;
- signed int out;
-
- OPL->phase_modulation = 0;
-
- /* SLOT 1 */
- SLOT = &CH->SLOT[SLOT1];
- env = volume_calc(SLOT);
- out = SLOT->op1_out[0] + SLOT->op1_out[1];
- SLOT->op1_out[0] = SLOT->op1_out[1];
- *SLOT->connect1 += SLOT->op1_out[0];
- SLOT->op1_out[1] = 0;
- if( env < ENV_QUIET )
- {
- if (!SLOT->FB)
- out = 0;
- SLOT->op1_out[1] = op_calc1(SLOT->Cnt, env, (out<<SLOT->FB), SLOT->wavetable );
- }
-
- /* SLOT 2 */
- SLOT++;
- env = volume_calc(SLOT);
- if( env < ENV_QUIET )
- OPL->output[0] += op_calc(SLOT->Cnt, env, OPL->phase_modulation, SLOT->wavetable);
-}
-
-/*
- operators used in the rhythm sounds generation process:
-
- Envelope Generator:
-
-channel operator register number Bass High Snare Tom Top
-/ slot number TL ARDR SLRR Wave Drum Hat Drum Tom Cymbal
- 6 / 0 12 50 70 90 f0 +
- 6 / 1 15 53 73 93 f3 +
- 7 / 0 13 51 71 91 f1 +
- 7 / 1 16 54 74 94 f4 +
- 8 / 0 14 52 72 92 f2 +
- 8 / 1 17 55 75 95 f5 +
-
- Phase Generator:
-
-channel operator register number Bass High Snare Tom Top
-/ slot number MULTIPLE Drum Hat Drum Tom Cymbal
- 6 / 0 12 30 +
- 6 / 1 15 33 +
- 7 / 0 13 31 + + +
- 7 / 1 16 34 ----- n o t u s e d -----
- 8 / 0 14 32 +
- 8 / 1 17 35 + +
-
-channel operator register number Bass High Snare Tom Top
-number number BLK/FNUM2 FNUM Drum Hat Drum Tom Cymbal
- 6 12,15 B6 A6 +
-
- 7 13,16 B7 A7 + + +
-
- 8 14,17 B8 A8 + + +
-
-*/
-
-/* calculate rhythm */
-
-static inline void OPL_CALC_RH( FM_OPL *OPL, OPL_CH *CH, unsigned int noise )
-{
- OPL_SLOT *SLOT;
- signed int out;
- unsigned int env;
-
-
- /* Bass Drum (verified on real YM3812):
- - depends on the channel 6 'connect' register:
- when connect = 0 it works the same as in normal (non-rhythm) mode (op1->op2->out)
- when connect = 1 _only_ operator 2 is present on output (op2->out), operator 1 is ignored
- - output sample always is multiplied by 2
- */
-
- OPL->phase_modulation = 0;
- /* SLOT 1 */
- SLOT = &CH[6].SLOT[SLOT1];
- env = volume_calc(SLOT);
-
- out = SLOT->op1_out[0] + SLOT->op1_out[1];
- SLOT->op1_out[0] = SLOT->op1_out[1];
-
- if (!SLOT->CON)
- OPL->phase_modulation = SLOT->op1_out[0];
- /* else ignore output of operator 1 */
-
- SLOT->op1_out[1] = 0;
- if( env < ENV_QUIET )
- {
- if (!SLOT->FB)
- out = 0;
- SLOT->op1_out[1] = op_calc1(SLOT->Cnt, env, (out<<SLOT->FB), SLOT->wavetable );
- }
-
- /* SLOT 2 */
- SLOT++;
- env = volume_calc(SLOT);
- if( env < ENV_QUIET )
- OPL->output[0] += op_calc(SLOT->Cnt, env, OPL->phase_modulation, SLOT->wavetable) * 2;
-
-
- /* Phase generation is based on: */
- /* HH (13) channel 7->slot 1 combined with channel 8->slot 2 (same combination as TOP CYMBAL but different output phases) */
- /* SD (16) channel 7->slot 1 */
- /* TOM (14) channel 8->slot 1 */
- /* TOP (17) channel 7->slot 1 combined with channel 8->slot 2 (same combination as HIGH HAT but different output phases) */
-
- /* Envelope generation based on: */
- /* HH channel 7->slot1 */
- /* SD channel 7->slot2 */
- /* TOM channel 8->slot1 */
- /* TOP channel 8->slot2 */
-
-
- /* The following formulas can be well optimized.
- I leave them in direct form for now (in case I've missed something).
- */
-
- /* High Hat (verified on real YM3812) */
- env = volume_calc(SLOT7_1);
- if( env < ENV_QUIET )
- {
- /* high hat phase generation:
- phase = d0 or 234 (based on frequency only)
- phase = 34 or 2d0 (based on noise)
- */
-
- /* base frequency derived from operator 1 in channel 7 */
- unsigned char bit7 = ((SLOT7_1->Cnt>>FREQ_SH)>>7)&1;
- unsigned char bit3 = ((SLOT7_1->Cnt>>FREQ_SH)>>3)&1;
- unsigned char bit2 = ((SLOT7_1->Cnt>>FREQ_SH)>>2)&1;
-
- unsigned char res1 = (bit2 ^ bit7) | bit3;
-
- /* when res1 = 0 phase = 0x000 | 0xd0; */
- /* when res1 = 1 phase = 0x200 | (0xd0>>2); */
- uint32_t phase = res1 ? (0x200|(0xd0>>2)) : 0xd0;
-
- /* enable gate based on frequency of operator 2 in channel 8 */
- unsigned char bit5e= ((SLOT8_2->Cnt>>FREQ_SH)>>5)&1;
- unsigned char bit3e= ((SLOT8_2->Cnt>>FREQ_SH)>>3)&1;
-
- unsigned char res2 = (bit3e ^ bit5e);
-
- /* when res2 = 0 pass the phase from calculation above (res1); */
- /* when res2 = 1 phase = 0x200 | (0xd0>>2); */
- if (res2)
- phase = (0x200|(0xd0>>2));
-
-
- /* when phase & 0x200 is set and noise=1 then phase = 0x200|0xd0 */
- /* when phase & 0x200 is set and noise=0 then phase = 0x200|(0xd0>>2), ie no change */
- if (phase&0x200)
- {
- if (noise)
- phase = 0x200|0xd0;
- }
- else
- /* when phase & 0x200 is clear and noise=1 then phase = 0xd0>>2 */
- /* when phase & 0x200 is clear and noise=0 then phase = 0xd0, ie no change */
- {
- if (noise)
- phase = 0xd0>>2;
- }
-
- OPL->output[0] += op_calc(phase<<FREQ_SH, env, 0, SLOT7_1->wavetable) * 2;
- }
-
- /* Snare Drum (verified on real YM3812) */
- env = volume_calc(SLOT7_2);
- if( env < ENV_QUIET )
- {
- /* base frequency derived from operator 1 in channel 7 */
- unsigned char bit8 = ((SLOT7_1->Cnt>>FREQ_SH)>>8)&1;
-
- /* when bit8 = 0 phase = 0x100; */
- /* when bit8 = 1 phase = 0x200; */
- uint32_t phase = bit8 ? 0x200 : 0x100;
-
- /* Noise bit XOR'es phase by 0x100 */
- /* when noisebit = 0 pass the phase from calculation above */
- /* when noisebit = 1 phase ^= 0x100; */
- /* in other words: phase ^= (noisebit<<8); */
- if (noise)
- phase ^= 0x100;
-
- OPL->output[0] += op_calc(phase<<FREQ_SH, env, 0, SLOT7_2->wavetable) * 2;
- }
-
- /* Tom Tom (verified on real YM3812) */
- env = volume_calc(SLOT8_1);
- if( env < ENV_QUIET )
- OPL->output[0] += op_calc(SLOT8_1->Cnt, env, 0, SLOT8_1->wavetable) * 2;
-
- /* Top Cymbal (verified on real YM3812) */
- env = volume_calc(SLOT8_2);
- if( env < ENV_QUIET )
- {
- /* base frequency derived from operator 1 in channel 7 */
- unsigned char bit7 = ((SLOT7_1->Cnt>>FREQ_SH)>>7)&1;
- unsigned char bit3 = ((SLOT7_1->Cnt>>FREQ_SH)>>3)&1;
- unsigned char bit2 = ((SLOT7_1->Cnt>>FREQ_SH)>>2)&1;
-
- unsigned char res1 = (bit2 ^ bit7) | bit3;
-
- /* when res1 = 0 phase = 0x000 | 0x100; */
- /* when res1 = 1 phase = 0x200 | 0x100; */
- uint32_t phase = res1 ? 0x300 : 0x100;
-
- /* enable gate based on frequency of operator 2 in channel 8 */
- unsigned char bit5e= ((SLOT8_2->Cnt>>FREQ_SH)>>5)&1;
- unsigned char bit3e= ((SLOT8_2->Cnt>>FREQ_SH)>>3)&1;
-
- unsigned char res2 = (bit3e ^ bit5e);
- /* when res2 = 0 pass the phase from calculation above (res1); */
- /* when res2 = 1 phase = 0x200 | 0x100; */
- if (res2)
- phase = 0x300;
-
- OPL->output[0] += op_calc(phase<<FREQ_SH, env, 0, SLOT8_2->wavetable) * 2;
- }
-}
-
-
/* generic table initialize */
-static int init_tables(void)
+int FM_OPL::init_tables()
{
signed int i,x;
signed int n;
@@ -1246,39 +1419,31 @@ static int init_tables(void)
return 1;
}
-static void OPLCloseTable( void )
-{
-#ifdef SAVE_SAMPLE
- fclose(sample[0]);
-#endif
-}
-
-
-static void OPL_initalize(FM_OPL *OPL)
+void FM_OPL::initialize()
{
int i;
/* frequency base */
- OPL->freqbase = (OPL->rate) ? ((double)OPL->clock / 72.0) / OPL->rate : 0;
+ freqbase = (rate) ? ((double)clock / 72.0) / rate : 0;
#if 0
- OPL->rate = (double)OPL->clock / 72.0;
- OPL->freqbase = 1.0;
+ rate = (double)clock / 72.0;
+ freqbase = 1.0;
#endif
- /*logerror("freqbase=%f\n", OPL->freqbase);*/
+ /*logerror("freqbase=%f\n", freqbase);*/
/* Timer base time */
- OPL->TimerBase = attotime::from_hz(OPL->clock) * 72;
+ TimerBase = attotime::from_hz(clock) * 72;
/* make fnumber -> increment counter table */
for( i=0 ; i < 1024 ; i++ )
{
/* opn phase increment counter = 20bit */
- OPL->fn_tab[i] = (uint32_t)( (double)i * 64 * OPL->freqbase * (1<<(FREQ_SH-10)) ); /* -10 because chip works with 10.10 fixed point, while we use 16.16 */
+ fn_tab[i] = (uint32_t)( (double)i * 64 * freqbase * (1<<(FREQ_SH-10)) ); /* -10 because chip works with 10.10 fixed point, while we use 16.16 */
#if 0
logerror("FMOPL.C: fn_tab[%4i] = %08x (dec=%8i)\n",
- i, OPL->fn_tab[i]>>6, OPL->fn_tab[i]>>6 );
+ i, fn_tab[i]>>6, fn_tab[i]>>6 );
#endif
}
@@ -1303,146 +1468,24 @@ static void OPL_initalize(FM_OPL *OPL)
/* Amplitude modulation: 27 output levels (triangle waveform); 1 level takes one of: 192, 256 or 448 samples */
/* One entry from LFO_AM_TABLE lasts for 64 samples */
- OPL->lfo_am_inc = (1.0 / 64.0 ) * (1<<LFO_SH) * OPL->freqbase;
+ lfo_am_inc = (1.0 / 64.0 ) * (1<<LFO_SH) * freqbase;
/* Vibrato: 8 output levels (triangle waveform); 1 level takes 1024 samples */
- OPL->lfo_pm_inc = (1.0 / 1024.0) * (1<<LFO_SH) * OPL->freqbase;
+ lfo_pm_inc = (1.0 / 1024.0) * (1<<LFO_SH) * freqbase;
- /*logerror ("OPL->lfo_am_inc = %8x ; OPL->lfo_pm_inc = %8x\n", OPL->lfo_am_inc, OPL->lfo_pm_inc);*/
+ /*logerror ("lfo_am_inc = %8x ; lfo_pm_inc = %8x\n", lfo_am_inc, lfo_pm_inc);*/
/* Noise generator: a step takes 1 sample */
- OPL->noise_f = (1.0 / 1.0) * (1<<FREQ_SH) * OPL->freqbase;
+ noise_f = (1.0 / 1.0) * (1<<FREQ_SH) * freqbase;
- OPL->eg_timer_add = (1<<EG_SH) * OPL->freqbase;
- OPL->eg_timer_overflow = ( 1 ) * (1<<EG_SH);
- /*logerror("OPLinit eg_timer_add=%8x eg_timer_overflow=%8x\n", OPL->eg_timer_add, OPL->eg_timer_overflow);*/
-
-}
-
-static inline void FM_KEYON(OPL_SLOT *SLOT, uint32_t key_set)
-{
- if( !SLOT->key )
- {
- /* restart Phase Generator */
- SLOT->Cnt = 0;
- /* phase -> Attack */
- SLOT->state = EG_ATT;
- }
- SLOT->key |= key_set;
-}
-
-static inline void FM_KEYOFF(OPL_SLOT *SLOT, uint32_t key_clr)
-{
- if( SLOT->key )
- {
- SLOT->key &= key_clr;
-
- if( !SLOT->key )
- {
- /* phase -> Release */
- if (SLOT->state>EG_REL)
- SLOT->state = EG_REL;
- }
- }
-}
-
-/* update phase increment counter of operator (also update the EG rates if necessary) */
-static inline void CALC_FCSLOT(OPL_CH *CH,OPL_SLOT *SLOT)
-{
- int ksr;
-
- /* (frequency) phase increment counter */
- SLOT->Incr = CH->fc * SLOT->mul;
- ksr = CH->kcode >> SLOT->KSR;
-
- if( SLOT->ksr != ksr )
- {
- SLOT->ksr = ksr;
-
- /* calculate envelope generator rates */
- if ((SLOT->ar + SLOT->ksr) < 16+62)
- {
- SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr ];
- SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr ];
- }
- else
- {
- SLOT->eg_sh_ar = 0;
- SLOT->eg_sel_ar = 13*RATE_STEPS;
- }
- SLOT->eg_sh_dr = eg_rate_shift [SLOT->dr + SLOT->ksr ];
- SLOT->eg_sel_dr = eg_rate_select[SLOT->dr + SLOT->ksr ];
- SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr ];
- SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr ];
- }
-}
-
-/* set multi,am,vib,EG-TYP,KSR,mul */
-static inline void set_mul(FM_OPL *OPL,int slot,int v)
-{
- OPL_CH *CH = &OPL->P_CH[slot/2];
- OPL_SLOT *SLOT = &CH->SLOT[slot&1];
-
- SLOT->mul = mul_tab[v&0x0f];
- SLOT->KSR = (v&0x10) ? 0 : 2;
- SLOT->eg_type = (v&0x20);
- SLOT->vib = (v&0x40);
- SLOT->AMmask = (v&0x80) ? ~0 : 0;
- CALC_FCSLOT(CH,SLOT);
-}
-
-/* set ksl & tl */
-static inline void set_ksl_tl(FM_OPL *OPL,int slot,int v)
-{
- OPL_CH *CH = &OPL->P_CH[slot/2];
- OPL_SLOT *SLOT = &CH->SLOT[slot&1];
-
- SLOT->ksl = ksl_shift[v >> 6];
- SLOT->TL = (v&0x3f)<<(ENV_BITS-1-7); /* 7 bits TL (bit 6 = always 0) */
-
- SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl);
-}
-
-/* set attack rate & decay rate */
-static inline void set_ar_dr(FM_OPL *OPL,int slot,int v)
-{
- OPL_CH *CH = &OPL->P_CH[slot/2];
- OPL_SLOT *SLOT = &CH->SLOT[slot&1];
-
- SLOT->ar = (v>>4) ? 16 + ((v>>4) <<2) : 0;
-
- if ((SLOT->ar + SLOT->ksr) < 16+62)
- {
- SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr ];
- SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr ];
- }
- else
- {
- SLOT->eg_sh_ar = 0;
- SLOT->eg_sel_ar = 13*RATE_STEPS;
- }
-
- SLOT->dr = (v&0x0f)? 16 + ((v&0x0f)<<2) : 0;
- SLOT->eg_sh_dr = eg_rate_shift [SLOT->dr + SLOT->ksr ];
- SLOT->eg_sel_dr = eg_rate_select[SLOT->dr + SLOT->ksr ];
-}
-
-/* set sustain level & release rate */
-static inline void set_sl_rr(FM_OPL *OPL,int slot,int v)
-{
- OPL_CH *CH = &OPL->P_CH[slot/2];
- OPL_SLOT *SLOT = &CH->SLOT[slot&1];
-
- SLOT->sl = sl_tab[ v>>4 ];
-
- SLOT->rr = (v&0x0f)? 16 + ((v&0x0f)<<2) : 0;
- SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr ];
- SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr ];
+ eg_timer_add = (1<<EG_SH) * freqbase;
+ eg_timer_overflow = ( 1 ) * (1<<EG_SH);
+ /*logerror("OPLinit eg_timer_add=%8x eg_timer_overflow=%8x\n", eg_timer_add, eg_timer_overflow);*/
}
/* write a value v to register r on OPL chip */
-static void OPLWriteReg(FM_OPL *OPL, int r, int v)
+void FM_OPL::WriteReg(int r, int v)
{
OPL_CH *CH;
int slot;
@@ -1459,22 +1502,22 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
switch(r&0x1f)
{
case 0x01: /* waveform select enable */
- if(OPL->type&OPL_TYPE_WAVESEL)
+ if(type&OPL_TYPE_WAVESEL)
{
- OPL->wavesel = v&0x20;
+ wavesel = v&0x20;
/* do not change the waveform previously selected */
}
break;
case 0x02: /* Timer 1 */
- OPL->T[0] = (256-v)*4;
+ T[0] = (256-v)*4;
break;
case 0x03: /* Timer 2 */
- OPL->T[1] = (256-v)*16;
+ T[1] = (256-v)*16;
break;
case 0x04: /* IRQ clear / mask and Timer enable */
if(v&0x80)
{ /* IRQ flag clear */
- OPL_STATUS_RESET(OPL,0x7f-0x08); /* don't reset BFRDY flag or we will have to call deltat module to set the flag */
+ STATUS_RESET(0x7f-0x08); /* don't reset BFRDY flag or we will have to call deltat module to set the flag */
}
else
{ /* set IRQ mask ,timer enable*/
@@ -1482,45 +1525,45 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
uint8_t st2 = (v>>1)&1;
/* IRQRST,T1MSK,t2MSK,EOSMSK,BRMSK,x,ST2,ST1 */
- OPL_STATUS_RESET(OPL, v & (0x78-0x08) );
- OPL_STATUSMASK_SET(OPL, (~v) & 0x78 );
+ STATUS_RESET(v & (0x78-0x08));
+ STATUSMASK_SET((~v) & 0x78);
/* timer 2 */
- if(OPL->st[1] != st2)
+ if(st[1] != st2)
{
- attotime period = st2 ? (OPL->TimerBase * OPL->T[1]) : attotime::zero;
- OPL->st[1] = st2;
- if (OPL->timer_handler) (OPL->timer_handler)(OPL->TimerParam,1,period);
+ attotime period = st2 ? (TimerBase * T[1]) : attotime::zero;
+ st[1] = st2;
+ if (timer_handler) (timer_handler)(TimerParam,1,period);
}
/* timer 1 */
- if(OPL->st[0] != st1)
+ if(st[0] != st1)
{
- attotime period = st1 ? (OPL->TimerBase * OPL->T[0]) : attotime::zero;
- OPL->st[0] = st1;
- if (OPL->timer_handler) (OPL->timer_handler)(OPL->TimerParam,0,period);
+ attotime period = st1 ? (TimerBase * T[0]) : attotime::zero;
+ st[0] = st1;
+ if (timer_handler) (timer_handler)(TimerParam,0,period);
}
}
break;
#if BUILD_Y8950
case 0x06: /* Key Board OUT */
- if(OPL->type&OPL_TYPE_KEYBOARD)
+ if(type&OPL_TYPE_KEYBOARD)
{
- if(OPL->keyboardhandler_w)
- OPL->keyboardhandler_w(OPL->keyboard_param,v);
+ if(keyboardhandler_w)
+ keyboardhandler_w(keyboard_param,v);
else
- OPL->device->logerror("Y8950: write unmapped KEYBOARD port\n");
+ device->logerror("Y8950: write unmapped KEYBOARD port\n");
}
break;
case 0x07: /* DELTA-T control 1 : START,REC,MEMDATA,REPT,SPOFF,x,x,RST */
- if(OPL->type&OPL_TYPE_ADPCM)
- YM_DELTAT_ADPCM_Write(OPL->deltat,r-0x07,v);
+ if(type&OPL_TYPE_ADPCM)
+ deltat->ADPCM_Write(r-0x07,v);
break;
#endif
case 0x08: /* MODE,DELTA-T control 2 : CSM,NOTESEL,x,x,smpl,da/ad,64k,rom */
- OPL->mode = v;
+ mode = v;
#if BUILD_Y8950
- if(OPL->type&OPL_TYPE_ADPCM)
- YM_DELTAT_ADPCM_Write(OPL->deltat,r-0x07,v&0x0f); /* mask 4 LSBs in register 08 for DELTA-T unit */
+ if(type&OPL_TYPE_ADPCM)
+ deltat->ADPCM_Write(r-0x07,v&0x0f); /* mask 4 LSBs in register 08 for DELTA-T unit */
#endif
break;
@@ -1535,107 +1578,107 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
case 0x10: /* DELTA-N */
case 0x11: /* DELTA-N */
case 0x12: /* ADPCM volume */
- if(OPL->type&OPL_TYPE_ADPCM)
- YM_DELTAT_ADPCM_Write(OPL->deltat,r-0x07,v);
+ if(type&OPL_TYPE_ADPCM)
+ deltat->ADPCM_Write(r-0x07,v);
break;
case 0x15: /* DAC data high 8 bits (F7,F6...F2) */
case 0x16: /* DAC data low 2 bits (F1, F0 in bits 7,6) */
case 0x17: /* DAC data shift (S2,S1,S0 in bits 2,1,0) */
- OPL->device->logerror("FMOPL.C: DAC data register written, but not implemented reg=%02x val=%02x\n",r,v);
+ device->logerror("FMOPL.C: DAC data register written, but not implemented reg=%02x val=%02x\n",r,v);
break;
case 0x18: /* I/O CTRL (Direction) */
- if(OPL->type&OPL_TYPE_IO)
- OPL->portDirection = v&0x0f;
+ if(type&OPL_TYPE_IO)
+ portDirection = v&0x0f;
break;
case 0x19: /* I/O DATA */
- if(OPL->type&OPL_TYPE_IO)
+ if(type&OPL_TYPE_IO)
{
- OPL->portLatch = v;
- if(OPL->porthandler_w)
- OPL->porthandler_w(OPL->port_param,v&OPL->portDirection);
+ portLatch = v;
+ if(porthandler_w)
+ porthandler_w(port_param,v&portDirection);
}
break;
#endif
default:
- OPL->device->logerror("FMOPL.C: write to unknown register: %02x\n",r);
+ device->logerror("FMOPL.C: write to unknown register: %02x\n",r);
break;
}
break;
case 0x20: /* am ON, vib ON, ksr, eg_type, mul */
slot = slot_array[r&0x1f];
if(slot < 0) return;
- set_mul(OPL,slot,v);
+ set_mul(slot,v);
break;
case 0x40:
slot = slot_array[r&0x1f];
if(slot < 0) return;
- set_ksl_tl(OPL,slot,v);
+ set_ksl_tl(slot,v);
break;
case 0x60:
slot = slot_array[r&0x1f];
if(slot < 0) return;
- set_ar_dr(OPL,slot,v);
+ set_ar_dr(slot,v);
break;
case 0x80:
slot = slot_array[r&0x1f];
if(slot < 0) return;
- set_sl_rr(OPL,slot,v);
+ set_sl_rr(slot,v);
break;
case 0xa0:
if (r == 0xbd) /* am depth, vibrato depth, r,bd,sd,tom,tc,hh */
{
- OPL->lfo_am_depth = v & 0x80;
- OPL->lfo_pm_depth_range = (v&0x40) ? 8 : 0;
+ lfo_am_depth = v & 0x80;
+ lfo_pm_depth_range = (v&0x40) ? 8 : 0;
- OPL->rhythm = v&0x3f;
+ rhythm = v&0x3f;
- if(OPL->rhythm&0x20)
+ if(rhythm&0x20)
{
/* BD key on/off */
if(v&0x10)
{
- FM_KEYON (&OPL->P_CH[6].SLOT[SLOT1], 2);
- FM_KEYON (&OPL->P_CH[6].SLOT[SLOT2], 2);
+ P_CH[6].SLOT[SLOT1].KEYON(2);
+ P_CH[6].SLOT[SLOT2].KEYON(2);
}
else
{
- FM_KEYOFF(&OPL->P_CH[6].SLOT[SLOT1],~2);
- FM_KEYOFF(&OPL->P_CH[6].SLOT[SLOT2],~2);
+ P_CH[6].SLOT[SLOT1].KEYOFF(~2);
+ P_CH[6].SLOT[SLOT2].KEYOFF(~2);
}
/* HH key on/off */
- if(v&0x01) FM_KEYON (&OPL->P_CH[7].SLOT[SLOT1], 2);
- else FM_KEYOFF(&OPL->P_CH[7].SLOT[SLOT1],~2);
+ if(v&0x01) P_CH[7].SLOT[SLOT1].KEYON ( 2);
+ else P_CH[7].SLOT[SLOT1].KEYOFF(~2);
/* SD key on/off */
- if(v&0x08) FM_KEYON (&OPL->P_CH[7].SLOT[SLOT2], 2);
- else FM_KEYOFF(&OPL->P_CH[7].SLOT[SLOT2],~2);
+ if(v&0x08) P_CH[7].SLOT[SLOT2].KEYON ( 2);
+ else P_CH[7].SLOT[SLOT2].KEYOFF(~2);
/* TOM key on/off */
- if(v&0x04) FM_KEYON (&OPL->P_CH[8].SLOT[SLOT1], 2);
- else FM_KEYOFF(&OPL->P_CH[8].SLOT[SLOT1],~2);
+ if(v&0x04) P_CH[8].SLOT[SLOT1].KEYON ( 2);
+ else P_CH[8].SLOT[SLOT1].KEYOFF(~2);
/* TOP-CY key on/off */
- if(v&0x02) FM_KEYON (&OPL->P_CH[8].SLOT[SLOT2], 2);
- else FM_KEYOFF(&OPL->P_CH[8].SLOT[SLOT2],~2);
+ if(v&0x02) P_CH[8].SLOT[SLOT2].KEYON ( 2);
+ else P_CH[8].SLOT[SLOT2].KEYOFF(~2);
}
else
{
/* BD key off */
- FM_KEYOFF(&OPL->P_CH[6].SLOT[SLOT1],~2);
- FM_KEYOFF(&OPL->P_CH[6].SLOT[SLOT2],~2);
+ P_CH[6].SLOT[SLOT1].KEYOFF(~2);
+ P_CH[6].SLOT[SLOT2].KEYOFF(~2);
/* HH key off */
- FM_KEYOFF(&OPL->P_CH[7].SLOT[SLOT1],~2);
+ P_CH[7].SLOT[SLOT1].KEYOFF(~2);
/* SD key off */
- FM_KEYOFF(&OPL->P_CH[7].SLOT[SLOT2],~2);
+ P_CH[7].SLOT[SLOT2].KEYOFF(~2);
/* TOM key off */
- FM_KEYOFF(&OPL->P_CH[8].SLOT[SLOT1],~2);
+ P_CH[8].SLOT[SLOT1].KEYOFF(~2);
/* TOP-CY off */
- FM_KEYOFF(&OPL->P_CH[8].SLOT[SLOT2],~2);
+ P_CH[8].SLOT[SLOT2].KEYOFF(~2);
}
return;
}
/* keyon,block,fnum */
if( (r&0x0f) > 8) return;
- CH = &OPL->P_CH[r&0x0f];
+ CH = &P_CH[r&0x0f];
if(!(r&0x10))
{ /* a0-a8 */
block_fnum = (CH->block_fnum&0x1f00) | v;
@@ -1646,13 +1689,13 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
if(v&0x20)
{
- FM_KEYON (&CH->SLOT[SLOT1], 1);
- FM_KEYON (&CH->SLOT[SLOT2], 1);
+ CH->SLOT[SLOT1].KEYON ( 1);
+ CH->SLOT[SLOT2].KEYON ( 1);
}
else
{
- FM_KEYOFF(&CH->SLOT[SLOT1],~1);
- FM_KEYOFF(&CH->SLOT[SLOT2],~1);
+ CH->SLOT[SLOT1].KEYOFF(~1);
+ CH->SLOT[SLOT2].KEYOFF(~1);
}
}
/* update */
@@ -1663,7 +1706,7 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
CH->block_fnum = block_fnum;
CH->ksl_base = static_cast<uint32_t>(ksl_tab[block_fnum>>6]);
- CH->fc = OPL->fn_tab[block_fnum&0x03ff] >> (7-block);
+ CH->fc = fn_tab[block_fnum&0x03ff] >> (7-block);
/* BLK 2,1,0 bits -> bits 3,2,1 of kcode */
CH->kcode = (CH->block_fnum&0x1c00)>>9;
@@ -1671,7 +1714,7 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
/* the info below is actually opposite to what is stated in the Manuals (verifed on real YM3812) */
/* if notesel == 0 -> lsb of kcode is bit 10 (MSB) of fnum */
/* if notesel == 1 -> lsb of kcode is bit 9 (MSB-1) of fnum */
- if (OPL->mode&0x40)
+ if (mode&0x40)
CH->kcode |= (CH->block_fnum&0x100)>>8; /* notesel == 1 */
else
CH->kcode |= (CH->block_fnum&0x200)>>9; /* notesel == 0 */
@@ -1681,25 +1724,25 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
CH->SLOT[SLOT2].TLL = CH->SLOT[SLOT2].TL + (CH->ksl_base>>CH->SLOT[SLOT2].ksl);
/* refresh frequency counter in both SLOTs of this channel */
- CALC_FCSLOT(CH,&CH->SLOT[SLOT1]);
- CALC_FCSLOT(CH,&CH->SLOT[SLOT2]);
+ CH->CALC_FCSLOT(CH->SLOT[SLOT1]);
+ CH->CALC_FCSLOT(CH->SLOT[SLOT2]);
}
break;
case 0xc0:
/* FB,C */
if( (r&0x0f) > 8) return;
- CH = &OPL->P_CH[r&0x0f];
+ CH = &P_CH[r&0x0f];
CH->SLOT[SLOT1].FB = (v>>1)&7 ? ((v>>1)&7) + 7 : 0;
CH->SLOT[SLOT1].CON = v&1;
- CH->SLOT[SLOT1].connect1 = CH->SLOT[SLOT1].CON ? &OPL->output[0] : &OPL->phase_modulation;
+ CH->SLOT[SLOT1].connect1 = CH->SLOT[SLOT1].CON ? &output[0] : &phase_modulation;
break;
case 0xe0: /* waveform select */
/* simply ignore write to the waveform select register if selecting not enabled in test register */
- if(OPL->wavesel)
+ if(wavesel)
{
slot = slot_array[r&0x1f];
if(slot < 0) return;
- CH = &OPL->P_CH[slot/2];
+ CH = &P_CH[slot/2];
CH->SLOT[slot&1].wavetable = (v&0x03)*SIN_LEN;
}
@@ -1707,136 +1750,101 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v)
}
}
-/* lock/unlock for common table */
-static int OPL_LockTable(device_t *device)
-{
- num_lock++;
- if(num_lock>1) return 0;
-
- /* first time */
-
- /* allocate total level table (128kb space) */
- if( !init_tables() )
- {
- num_lock--;
- return -1;
- }
-
- return 0;
-}
-
-static void OPL_UnLockTable(void)
-{
- if(num_lock) num_lock--;
- if(num_lock) return;
-
- /* last time */
- OPLCloseTable();
-}
-
-static void OPLResetChip(FM_OPL *OPL)
+void FM_OPL::ResetChip()
{
- int c,s;
- int i;
-
- OPL->eg_timer = 0;
- OPL->eg_cnt = 0;
+ eg_timer = 0;
+ eg_cnt = 0;
- OPL->noise_rng = 1; /* noise shift register */
- OPL->mode = 0; /* normal mode */
- OPL_STATUS_RESET(OPL,0x7f);
+ noise_rng = 1; /* noise shift register */
+ mode = 0; /* normal mode */
+ STATUS_RESET(0x7f);
/* reset with register write */
- OPLWriteReg(OPL,0x01,0); /* wavesel disable */
- OPLWriteReg(OPL,0x02,0); /* Timer1 */
- OPLWriteReg(OPL,0x03,0); /* Timer2 */
- OPLWriteReg(OPL,0x04,0); /* IRQ mask clear */
- for(i = 0xff ; i >= 0x20 ; i-- ) OPLWriteReg(OPL,i,0);
+ WriteReg(0x01,0); /* wavesel disable */
+ WriteReg(0x02,0); /* Timer1 */
+ WriteReg(0x03,0); /* Timer2 */
+ WriteReg(0x04,0); /* IRQ mask clear */
+ for(int i = 0xff ; i >= 0x20 ; i-- ) WriteReg(i,0);
/* reset operator parameters */
- for( c = 0 ; c < 9 ; c++ )
+ for(OPL_CH &CH : P_CH)
{
- OPL_CH *CH = &OPL->P_CH[c];
- for(s = 0 ; s < 2 ; s++ )
+ for(OPL_SLOT &SLOT : CH.SLOT)
{
/* wave table */
- CH->SLOT[s].wavetable = 0;
- CH->SLOT[s].state = EG_OFF;
- CH->SLOT[s].volume = MAX_ATT_INDEX;
+ SLOT.wavetable = 0;
+ SLOT.state = EG_OFF;
+ SLOT.volume = MAX_ATT_INDEX;
}
}
#if BUILD_Y8950
- if(OPL->type&OPL_TYPE_ADPCM)
+ if(type&OPL_TYPE_ADPCM)
{
- YM_DELTAT *DELTAT = OPL->deltat;
+ YM_DELTAT *DELTAT = deltat;
- DELTAT->freqbase = OPL->freqbase;
- DELTAT->output_pointer = &OPL->output_deltat[0];
+ DELTAT->freqbase = freqbase;
+ DELTAT->output_pointer = &output_deltat[0];
DELTAT->portshift = 5;
DELTAT->output_range = 1<<23;
- YM_DELTAT_ADPCM_Reset(DELTAT,0,YM_DELTAT_EMULATION_MODE_NORMAL,OPL->device);
+ DELTAT->ADPCM_Reset(0,YM_DELTAT::EMULATION_MODE_NORMAL,device);
}
#endif
}
-static void OPL_postload(FM_OPL *OPL)
+void FM_OPL::postload()
{
- int slot, ch;
-
- for( ch=0 ; ch < 9 ; ch++ )
+ for(OPL_CH &CH : P_CH)
{
- OPL_CH *CH = &OPL->P_CH[ch];
-
/* Look up key scale level */
- uint32_t block_fnum = CH->block_fnum;
- CH->ksl_base = static_cast<uint32_t>(ksl_tab[block_fnum >> 6]);
- CH->fc = OPL->fn_tab[block_fnum & 0x03ff] >> (7 - (block_fnum >> 10));
+ uint32_t const block_fnum = CH.block_fnum;
+ CH.ksl_base = static_cast<uint32_t>(ksl_tab[block_fnum >> 6]);
+ CH.fc = fn_tab[block_fnum & 0x03ff] >> (7 - (block_fnum >> 10));
- for( slot=0 ; slot < 2 ; slot++ )
+ for(OPL_SLOT &SLOT : CH.SLOT)
{
- OPL_SLOT *SLOT = &CH->SLOT[slot];
-
/* Calculate key scale rate */
- SLOT->ksr = CH->kcode >> SLOT->KSR;
+ SLOT.ksr = CH.kcode >> SLOT.KSR;
/* Calculate attack, decay and release rates */
- if ((SLOT->ar + SLOT->ksr) < 16+62)
+ if ((SLOT.ar + SLOT.ksr) < 16+62)
{
- SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr ];
- SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr ];
+ SLOT.eg_sh_ar = eg_rate_shift [SLOT.ar + SLOT.ksr ];
+ SLOT.eg_sel_ar = eg_rate_select[SLOT.ar + SLOT.ksr ];
}
else
{
- SLOT->eg_sh_ar = 0;
- SLOT->eg_sel_ar = 13*RATE_STEPS;
+ SLOT.eg_sh_ar = 0;
+ SLOT.eg_sel_ar = 13*RATE_STEPS;
}
- SLOT->eg_sh_dr = eg_rate_shift [SLOT->dr + SLOT->ksr ];
- SLOT->eg_sel_dr = eg_rate_select[SLOT->dr + SLOT->ksr ];
- SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr ];
- SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr ];
+ SLOT.eg_sh_dr = eg_rate_shift [SLOT.dr + SLOT.ksr ];
+ SLOT.eg_sel_dr = eg_rate_select[SLOT.dr + SLOT.ksr ];
+ SLOT.eg_sh_rr = eg_rate_shift [SLOT.rr + SLOT.ksr ];
+ SLOT.eg_sel_rr = eg_rate_select[SLOT.rr + SLOT.ksr ];
/* Calculate phase increment */
- SLOT->Incr = CH->fc * SLOT->mul;
+ SLOT.Incr = CH.fc * SLOT.mul;
/* Total level */
- SLOT->TLL = SLOT->TL + (CH->ksl_base >> SLOT->ksl);
+ SLOT.TLL = SLOT.TL + (CH.ksl_base >> SLOT.ksl);
/* Connect output */
- SLOT->connect1 = SLOT->CON ? &OPL->output[0] : &OPL->phase_modulation;
+ SLOT.connect1 = SLOT.CON ? &output[0] : &phase_modulation;
}
}
#if BUILD_Y8950
- if ( (OPL->type & OPL_TYPE_ADPCM) && (OPL->deltat) )
+ if ( (type & OPL_TYPE_ADPCM) && (deltat) )
{
// We really should call the postlod function for the YM_DELTAT, but it's hard without registers
// (see the way the YM2610 does it)
- //YM_DELTAT_postload(OPL->deltat, REGS);
+ //deltat->postload(REGS);
}
#endif
}
+} // anonymous namespace
+
static void OPLsave_state_channel(device_t *device, OPL_CH *CH)
{
@@ -1910,7 +1918,7 @@ static void OPL_save_state(FM_OPL *OPL, device_t *device)
#if BUILD_Y8950
if ( (OPL->type & OPL_TYPE_ADPCM) && (OPL->deltat) )
{
- YM_DELTAT_savestate(device, OPL->deltat);
+ OPL->deltat->savestate(device);
}
if ( OPL->type & OPL_TYPE_IO )
@@ -1925,7 +1933,7 @@ static void OPL_save_state(FM_OPL *OPL, device_t *device)
device->save_item(NAME(OPL->statusmask));
device->save_item(NAME(OPL->mode));
- device->machine().save().register_postload(save_prepost_delegate(FUNC(OPL_postload), OPL));
+ device->machine().save().register_postload(save_prepost_delegate(FUNC(FM_OPL::postload), OPL));
}
static void OPL_clock_changed(FM_OPL *OPL, uint32_t clock, uint32_t rate)
@@ -1934,7 +1942,7 @@ static void OPL_clock_changed(FM_OPL *OPL, uint32_t clock, uint32_t rate)
OPL->rate = rate;
/* init global tables */
- OPL_initalize(OPL);
+ OPL->initialize();
}
@@ -1947,7 +1955,7 @@ static FM_OPL *OPLCreate(device_t *device, uint32_t clock, uint32_t rate, int ty
FM_OPL *OPL;
int state_size;
- if (OPL_LockTable(device) == -1) return nullptr;
+ if (FM_OPL::LockTable(device) == -1) return nullptr;
/* calculate OPL state size */
state_size = sizeof(FM_OPL);
@@ -1981,26 +1989,26 @@ static FM_OPL *OPLCreate(device_t *device, uint32_t clock, uint32_t rate, int ty
/* Destroy one of virtual YM3812 */
static void OPLDestroy(FM_OPL *OPL)
{
- OPL_UnLockTable();
+ FM_OPL::UnLockTable();
auto_free(OPL->device->machine(), OPL);
}
/* Optional handlers */
-static void OPLSetTimerHandler(FM_OPL *OPL,OPL_TIMERHANDLER timer_handler,void *param)
+static void OPLSetTimerHandler(FM_OPL *OPL,OPL_TIMERHANDLER timer_handler,device_t *device)
{
OPL->timer_handler = timer_handler;
- OPL->TimerParam = param;
+ OPL->TimerParam = device;
}
-static void OPLSetIRQHandler(FM_OPL *OPL,OPL_IRQHANDLER IRQHandler,void *param)
+static void OPLSetIRQHandler(FM_OPL *OPL,OPL_IRQHANDLER IRQHandler,device_t *device)
{
OPL->IRQHandler = IRQHandler;
- OPL->IRQParam = param;
+ OPL->IRQParam = device;
}
-static void OPLSetUpdateHandler(FM_OPL *OPL,OPL_UPDATEHANDLER UpdateHandler,void *param)
+static void OPLSetUpdateHandler(FM_OPL *OPL,OPL_UPDATEHANDLER UpdateHandler,device_t *device)
{
OPL->UpdateHandler = UpdateHandler;
- OPL->UpdateParam = param;
+ OPL->UpdateParam = device;
}
static int OPLWrite(FM_OPL *OPL,int a,int v)
@@ -2012,7 +2020,7 @@ static int OPLWrite(FM_OPL *OPL,int a,int v)
else
{ /* data port */
if(OPL->UpdateHandler) OPL->UpdateHandler(OPL->UpdateParam,0);
- OPLWriteReg(OPL,OPL->address,v);
+ OPL->WriteReg(OPL->address,v);
}
return OPL->status>>7;
}
@@ -2055,7 +2063,7 @@ static unsigned char OPLRead(FM_OPL *OPL,int a)
{
uint8_t val;
- val = YM_DELTAT_ADPCM_Read(OPL->deltat);
+ val = OPL->deltat->ADPCM_Read();
/*logerror("Y8950: read ADPCM value read=%02x\n",val);*/
return val;
}
@@ -2086,13 +2094,13 @@ static unsigned char OPLRead(FM_OPL *OPL,int a)
/* CSM Key Controll */
static inline void CSMKeyControll(OPL_CH *CH)
{
- FM_KEYON (&CH->SLOT[SLOT1], 4);
- FM_KEYON (&CH->SLOT[SLOT2], 4);
+ CH->SLOT[SLOT1].KEYON(4);
+ CH->SLOT[SLOT2].KEYON(4);
/* The key off should happen exactly one sample later - not implemented correctly yet */
- FM_KEYOFF(&CH->SLOT[SLOT1], ~4);
- FM_KEYOFF(&CH->SLOT[SLOT2], ~4);
+ CH->SLOT[SLOT1].KEYOFF(~4);
+ CH->SLOT[SLOT2].KEYOFF(~4);
}
@@ -2100,11 +2108,11 @@ static int OPLTimerOver(FM_OPL *OPL,int c)
{
if( c )
{ /* Timer B */
- OPL_STATUS_SET(OPL,0x20);
+ OPL->STATUS_SET(0x20);
}
else
{ /* Timer A */
- OPL_STATUS_SET(OPL,0x40);
+ OPL->STATUS_SET(0x40);
/* CSM mode key,TL controll */
if( OPL->mode & 0x80 )
{ /* CSM mode total level latch and auto key on */
@@ -2152,7 +2160,7 @@ void ym3812_shutdown(void *chip)
void ym3812_reset_chip(void *chip)
{
FM_OPL *YM3812 = (FM_OPL *)chip;
- OPLResetChip(YM3812);
+ YM3812->ResetChip();
}
int ym3812_write(void *chip, int a, int v)
@@ -2173,20 +2181,20 @@ int ym3812_timer_over(void *chip, int c)
return OPLTimerOver(YM3812, c);
}
-void ym3812_set_timer_handler(void *chip, OPL_TIMERHANDLER timer_handler, void *param)
+void ym3812_set_timer_handler(void *chip, OPL_TIMERHANDLER timer_handler, device_t *device)
{
FM_OPL *YM3812 = (FM_OPL *)chip;
- OPLSetTimerHandler(YM3812, timer_handler, param);
+ OPLSetTimerHandler(YM3812, timer_handler, device);
}
-void ym3812_set_irq_handler(void *chip,OPL_IRQHANDLER IRQHandler,void *param)
+void ym3812_set_irq_handler(void *chip,OPL_IRQHANDLER IRQHandler,device_t *device)
{
FM_OPL *YM3812 = (FM_OPL *)chip;
- OPLSetIRQHandler(YM3812, IRQHandler, param);
+ OPLSetIRQHandler(YM3812, IRQHandler, device);
}
-void ym3812_set_update_handler(void *chip,OPL_UPDATEHANDLER UpdateHandler,void *param)
+void ym3812_set_update_handler(void *chip,OPL_UPDATEHANDLER UpdateHandler,device_t *device)
{
FM_OPL *YM3812 = (FM_OPL *)chip;
- OPLSetUpdateHandler(YM3812, UpdateHandler, param);
+ OPLSetUpdateHandler(YM3812, UpdateHandler, device);
}
@@ -2210,25 +2218,25 @@ void ym3812_update_one(void *chip, OPLSAMPLE *buffer, int length)
OPL->output[0] = 0;
- advance_lfo(OPL);
+ OPL->advance_lfo();
/* FM part */
- OPL_CALC_CH(OPL, &OPL->P_CH[0]);
- OPL_CALC_CH(OPL, &OPL->P_CH[1]);
- OPL_CALC_CH(OPL, &OPL->P_CH[2]);
- OPL_CALC_CH(OPL, &OPL->P_CH[3]);
- OPL_CALC_CH(OPL, &OPL->P_CH[4]);
- OPL_CALC_CH(OPL, &OPL->P_CH[5]);
+ OPL->CALC_CH(OPL->P_CH[0]);
+ OPL->CALC_CH(OPL->P_CH[1]);
+ OPL->CALC_CH(OPL->P_CH[2]);
+ OPL->CALC_CH(OPL->P_CH[3]);
+ OPL->CALC_CH(OPL->P_CH[4]);
+ OPL->CALC_CH(OPL->P_CH[5]);
if(!rhythm)
{
- OPL_CALC_CH(OPL, &OPL->P_CH[6]);
- OPL_CALC_CH(OPL, &OPL->P_CH[7]);
- OPL_CALC_CH(OPL, &OPL->P_CH[8]);
+ OPL->CALC_CH(OPL->P_CH[6]);
+ OPL->CALC_CH(OPL->P_CH[7]);
+ OPL->CALC_CH(OPL->P_CH[8]);
}
else /* Rhythm part */
{
- OPL_CALC_RH(OPL, &OPL->P_CH[0], (OPL->noise_rng>>0)&1 );
+ OPL->CALC_RH();
}
lt = OPL->output[0];
@@ -2248,7 +2256,7 @@ void ym3812_update_one(void *chip, OPLSAMPLE *buffer, int length)
/* store to sound buffer */
buf[i] = lt;
- advance(OPL);
+ OPL->advance();
}
}
@@ -2284,7 +2292,7 @@ void ym3526_shutdown(void *chip)
void ym3526_reset_chip(void *chip)
{
FM_OPL *YM3526 = (FM_OPL *)chip;
- OPLResetChip(YM3526);
+ YM3526->ResetChip();
}
int ym3526_write(void *chip, int a, int v)
@@ -2305,20 +2313,20 @@ int ym3526_timer_over(void *chip, int c)
return OPLTimerOver(YM3526, c);
}
-void ym3526_set_timer_handler(void *chip, OPL_TIMERHANDLER timer_handler, void *param)
+void ym3526_set_timer_handler(void *chip, OPL_TIMERHANDLER timer_handler, device_t *device)
{
FM_OPL *YM3526 = (FM_OPL *)chip;
- OPLSetTimerHandler(YM3526, timer_handler, param);
+ OPLSetTimerHandler(YM3526, timer_handler, device);
}
-void ym3526_set_irq_handler(void *chip,OPL_IRQHANDLER IRQHandler,void *param)
+void ym3526_set_irq_handler(void *chip,OPL_IRQHANDLER IRQHandler,device_t *device)
{
FM_OPL *YM3526 = (FM_OPL *)chip;
- OPLSetIRQHandler(YM3526, IRQHandler, param);
+ OPLSetIRQHandler(YM3526, IRQHandler, device);
}
-void ym3526_set_update_handler(void *chip,OPL_UPDATEHANDLER UpdateHandler,void *param)
+void ym3526_set_update_handler(void *chip,OPL_UPDATEHANDLER UpdateHandler,device_t *device)
{
FM_OPL *YM3526 = (FM_OPL *)chip;
- OPLSetUpdateHandler(YM3526, UpdateHandler, param);
+ OPLSetUpdateHandler(YM3526, UpdateHandler, device);
}
@@ -2342,25 +2350,25 @@ void ym3526_update_one(void *chip, OPLSAMPLE *buffer, int length)
OPL->output[0] = 0;
- advance_lfo(OPL);
+ OPL->advance_lfo();
/* FM part */
- OPL_CALC_CH(OPL, &OPL->P_CH[0]);
- OPL_CALC_CH(OPL, &OPL->P_CH[1]);
- OPL_CALC_CH(OPL, &OPL->P_CH[2]);
- OPL_CALC_CH(OPL, &OPL->P_CH[3]);
- OPL_CALC_CH(OPL, &OPL->P_CH[4]);
- OPL_CALC_CH(OPL, &OPL->P_CH[5]);
+ OPL->CALC_CH(OPL->P_CH[0]);
+ OPL->CALC_CH(OPL->P_CH[1]);
+ OPL->CALC_CH(OPL->P_CH[2]);
+ OPL->CALC_CH(OPL->P_CH[3]);
+ OPL->CALC_CH(OPL->P_CH[4]);
+ OPL->CALC_CH(OPL->P_CH[5]);
if(!rhythm)
{
- OPL_CALC_CH(OPL, &OPL->P_CH[6]);
- OPL_CALC_CH(OPL, &OPL->P_CH[7]);
- OPL_CALC_CH(OPL, &OPL->P_CH[8]);
+ OPL->CALC_CH(OPL->P_CH[6]);
+ OPL->CALC_CH(OPL->P_CH[7]);
+ OPL->CALC_CH(OPL->P_CH[8]);
}
else /* Rhythm part */
{
- OPL_CALC_RH(OPL, &OPL->P_CH[0], (OPL->noise_rng>>0)&1 );
+ OPL->CALC_RH();
}
lt = OPL->output[0];
@@ -2380,7 +2388,7 @@ void ym3526_update_one(void *chip, OPLSAMPLE *buffer, int length)
/* store to sound buffer */
buf[i] = lt;
- advance(OPL);
+ OPL->advance();
}
}
@@ -2394,12 +2402,12 @@ void ym3526_update_one(void *chip, OPLSAMPLE *buffer, int length)
static void Y8950_deltat_status_set(void *chip, uint8_t changebits)
{
FM_OPL *Y8950 = (FM_OPL *)chip;
- OPL_STATUS_SET(Y8950, changebits);
+ Y8950->STATUS_SET(changebits);
}
static void Y8950_deltat_status_reset(void *chip, uint8_t changebits)
{
FM_OPL *Y8950 = (FM_OPL *)chip;
- OPL_STATUS_RESET(Y8950, changebits);
+ Y8950->STATUS_RESET(changebits);
}
void *y8950_init(device_t *device, uint32_t clock, uint32_t rate)
@@ -2433,7 +2441,7 @@ void y8950_shutdown(void *chip)
void y8950_reset_chip(void *chip)
{
FM_OPL *Y8950 = (FM_OPL *)chip;
- OPLResetChip(Y8950);
+ Y8950->ResetChip();
}
int y8950_write(void *chip, int a, int v)
@@ -2453,20 +2461,20 @@ int y8950_timer_over(void *chip, int c)
return OPLTimerOver(Y8950, c);
}
-void y8950_set_timer_handler(void *chip, OPL_TIMERHANDLER timer_handler, void *param)
+void y8950_set_timer_handler(void *chip, OPL_TIMERHANDLER timer_handler, device_t *device)
{
FM_OPL *Y8950 = (FM_OPL *)chip;
- OPLSetTimerHandler(Y8950, timer_handler, param);
+ OPLSetTimerHandler(Y8950, timer_handler, device);
}
-void y8950_set_irq_handler(void *chip,OPL_IRQHANDLER IRQHandler,void *param)
+void y8950_set_irq_handler(void *chip,OPL_IRQHANDLER IRQHandler,device_t *device)
{
FM_OPL *Y8950 = (FM_OPL *)chip;
- OPLSetIRQHandler(Y8950, IRQHandler, param);
+ OPLSetIRQHandler(Y8950, IRQHandler, device);
}
-void y8950_set_update_handler(void *chip,OPL_UPDATEHANDLER UpdateHandler,void *param)
+void y8950_set_update_handler(void *chip,OPL_UPDATEHANDLER UpdateHandler,device_t *device)
{
FM_OPL *Y8950 = (FM_OPL *)chip;
- OPLSetUpdateHandler(Y8950, UpdateHandler, param);
+ OPLSetUpdateHandler(Y8950, UpdateHandler, device);
}
void y8950_set_delta_t_memory(void *chip, void * deltat_mem_ptr, int deltat_mem_size )
@@ -2498,29 +2506,29 @@ void y8950_update_one(void *chip, OPLSAMPLE *buffer, int length)
OPL->output[0] = 0;
OPL->output_deltat[0] = 0;
- advance_lfo(OPL);
+ OPL->advance_lfo();
/* deltaT ADPCM */
if( DELTAT->portstate&0x80 )
- YM_DELTAT_ADPCM_CALC(DELTAT);
+ DELTAT->ADPCM_CALC();
/* FM part */
- OPL_CALC_CH(OPL, &OPL->P_CH[0]);
- OPL_CALC_CH(OPL, &OPL->P_CH[1]);
- OPL_CALC_CH(OPL, &OPL->P_CH[2]);
- OPL_CALC_CH(OPL, &OPL->P_CH[3]);
- OPL_CALC_CH(OPL, &OPL->P_CH[4]);
- OPL_CALC_CH(OPL, &OPL->P_CH[5]);
+ OPL->CALC_CH(OPL->P_CH[0]);
+ OPL->CALC_CH(OPL->P_CH[1]);
+ OPL->CALC_CH(OPL->P_CH[2]);
+ OPL->CALC_CH(OPL->P_CH[3]);
+ OPL->CALC_CH(OPL->P_CH[4]);
+ OPL->CALC_CH(OPL->P_CH[5]);
if(!rhythm)
{
- OPL_CALC_CH(OPL, &OPL->P_CH[6]);
- OPL_CALC_CH(OPL, &OPL->P_CH[7]);
- OPL_CALC_CH(OPL, &OPL->P_CH[8]);
+ OPL->CALC_CH(OPL->P_CH[6]);
+ OPL->CALC_CH(OPL->P_CH[7]);
+ OPL->CALC_CH(OPL->P_CH[8]);
}
else /* Rhythm part */
{
- OPL_CALC_RH(OPL, &OPL->P_CH[0], (OPL->noise_rng>>0)&1 );
+ OPL->CALC_RH();
}
lt = OPL->output[0] + (OPL->output_deltat[0]>>11);
@@ -2540,25 +2548,25 @@ void y8950_update_one(void *chip, OPLSAMPLE *buffer, int length)
/* store to sound buffer */
buf[i] = lt;
- advance(OPL);
+ OPL->advance();
}
}
-void y8950_set_port_handler(void *chip,OPL_PORTHANDLER_W PortHandler_w,OPL_PORTHANDLER_R PortHandler_r,void * param)
+void y8950_set_port_handler(void *chip,OPL_PORTHANDLER_W PortHandler_w,OPL_PORTHANDLER_R PortHandler_r,device_t *device)
{
FM_OPL *OPL = (FM_OPL *)chip;
OPL->porthandler_w = PortHandler_w;
OPL->porthandler_r = PortHandler_r;
- OPL->port_param = param;
+ OPL->port_param = device;
}
-void y8950_set_keyboard_handler(void *chip,OPL_PORTHANDLER_W KeyboardHandler_w,OPL_PORTHANDLER_R KeyboardHandler_r,void * param)
+void y8950_set_keyboard_handler(void *chip,OPL_PORTHANDLER_W KeyboardHandler_w,OPL_PORTHANDLER_R KeyboardHandler_r,device_t *device)
{
FM_OPL *OPL = (FM_OPL *)chip;
OPL->keyboardhandler_w = KeyboardHandler_w;
OPL->keyboardhandler_r = KeyboardHandler_r;
- OPL->keyboard_param = param;
+ OPL->keyboard_param = device;
}
#endif
diff --git a/src/devices/sound/fmopl.h b/src/devices/sound/fmopl.h
index 89c19876fa6..c5366d7badb 100644
--- a/src/devices/sound/fmopl.h
+++ b/src/devices/sound/fmopl.h
@@ -1,9 +1,12 @@
// license:GPL-2.0+
// copyright-holders:Jarek Burczynski,Tatsuyuki Satoh
+#ifndef MAME_SOUND_FMOPL_H
+#define MAME_SOUND_FMOPL_H
+
#pragma once
-#ifndef __FMOPL_H__
-#define __FMOPL_H__
+#include <stdint.h>
+
/* --- select emulation chips --- */
#define BUILD_YM3812 (1)
@@ -13,17 +16,6 @@
/* select output bits size of output : 8 or 16 */
#define OPL_SAMPLE_BITS 16
-/* compiler dependence */
-#ifndef __OSDCOMM_H__
-#define __OSDCOMM_H__
-typedef unsigned char uint8_t; /* unsigned 8bit */
-typedef unsigned short uint16_t; /* unsigned 16bit */
-typedef unsigned int uint32_t; /* unsigned 32bit */
-typedef signed char int8_t; /* signed 8bit */
-typedef signed short int16_t; /* signed 16bit */
-typedef signed int int32_t; /* signed 32bit */
-#endif /* __OSDCOMM_H__ */
-
typedef stream_sample_t OPLSAMPLE;
/*
#if (OPL_SAMPLE_BITS==16)
@@ -34,11 +26,11 @@ typedef int8_t OPLSAMPLE;
#endif
*/
-typedef void (*OPL_TIMERHANDLER)(void *param,int timer,const attotime &period);
-typedef void (*OPL_IRQHANDLER)(void *param,int irq);
-typedef void (*OPL_UPDATEHANDLER)(void *param,int min_interval_us);
-typedef void (*OPL_PORTHANDLER_W)(void *param,unsigned char data);
-typedef unsigned char (*OPL_PORTHANDLER_R)(void *param);
+typedef void (*OPL_TIMERHANDLER)(device_t *device,int timer,const attotime &period);
+typedef void (*OPL_IRQHANDLER)(device_t *device,int irq);
+typedef void (*OPL_UPDATEHANDLER)(device_t *device,int min_interval_us);
+typedef void (*OPL_PORTHANDLER_W)(device_t *device,unsigned char data);
+typedef unsigned char (*OPL_PORTHANDLER_R)(device_t *device);
#if BUILD_YM3812
@@ -52,9 +44,9 @@ unsigned char ym3812_read(void *chip, int a);
int ym3812_timer_over(void *chip, int c);
void ym3812_update_one(void *chip, OPLSAMPLE *buffer, int length);
-void ym3812_set_timer_handler(void *chip, OPL_TIMERHANDLER TimerHandler, void *param);
-void ym3812_set_irq_handler(void *chip, OPL_IRQHANDLER IRQHandler, void *param);
-void ym3812_set_update_handler(void *chip, OPL_UPDATEHANDLER UpdateHandler, void *param);
+void ym3812_set_timer_handler(void *chip, OPL_TIMERHANDLER TimerHandler, device_t *device);
+void ym3812_set_irq_handler(void *chip, OPL_IRQHANDLER IRQHandler, device_t *device);
+void ym3812_set_update_handler(void *chip, OPL_UPDATEHANDLER UpdateHandler, device_t *device);
#endif /* BUILD_YM3812 */
@@ -85,9 +77,9 @@ int ym3526_timer_over(void *chip, int c);
*/
void ym3526_update_one(void *chip, OPLSAMPLE *buffer, int length);
-void ym3526_set_timer_handler(void *chip, OPL_TIMERHANDLER TimerHandler, void *param);
-void ym3526_set_irq_handler(void *chip, OPL_IRQHANDLER IRQHandler, void *param);
-void ym3526_set_update_handler(void *chip, OPL_UPDATEHANDLER UpdateHandler, void *param);
+void ym3526_set_timer_handler(void *chip, OPL_TIMERHANDLER TimerHandler, device_t *device);
+void ym3526_set_irq_handler(void *chip, OPL_IRQHANDLER IRQHandler, device_t *device);
+void ym3526_set_update_handler(void *chip, OPL_UPDATEHANDLER UpdateHandler, device_t *device);
#endif /* BUILD_YM3526 */
@@ -95,8 +87,8 @@ void ym3526_set_update_handler(void *chip, OPL_UPDATEHANDLER UpdateHandler, void
#if BUILD_Y8950
/* Y8950 port handlers */
-void y8950_set_port_handler(void *chip, OPL_PORTHANDLER_W PortHandler_w, OPL_PORTHANDLER_R PortHandler_r, void *param);
-void y8950_set_keyboard_handler(void *chip, OPL_PORTHANDLER_W KeyboardHandler_w, OPL_PORTHANDLER_R KeyboardHandler_r, void *param);
+void y8950_set_port_handler(void *chip, OPL_PORTHANDLER_W PortHandler_w, OPL_PORTHANDLER_R PortHandler_r, device_t *device);
+void y8950_set_keyboard_handler(void *chip, OPL_PORTHANDLER_W KeyboardHandler_w, OPL_PORTHANDLER_R KeyboardHandler_r, device_t *device);
void y8950_set_delta_t_memory(void *chip, void * deltat_mem_ptr, int deltat_mem_size );
void * y8950_init(device_t *device, uint32_t clock, uint32_t rate);
@@ -107,11 +99,11 @@ unsigned char y8950_read (void *chip, int a);
int y8950_timer_over(void *chip, int c);
void y8950_update_one(void *chip, OPLSAMPLE *buffer, int length);
-void y8950_set_timer_handler(void *chip, OPL_TIMERHANDLER TimerHandler, void *param);
-void y8950_set_irq_handler(void *chip, OPL_IRQHANDLER IRQHandler, void *param);
-void y8950_set_update_handler(void *chip, OPL_UPDATEHANDLER UpdateHandler, void *param);
+void y8950_set_timer_handler(void *chip, OPL_TIMERHANDLER TimerHandler, device_t *device);
+void y8950_set_irq_handler(void *chip, OPL_IRQHANDLER IRQHandler, device_t *device);
+void y8950_set_update_handler(void *chip, OPL_UPDATEHANDLER UpdateHandler, device_t *device);
#endif /* BUILD_Y8950 */
-#endif /* __FMOPL_H__ */
+#endif // MAME_SOUND_FMOPL_H
diff --git a/src/devices/sound/gaelco.cpp b/src/devices/sound/gaelco.cpp
index b1b1d111788..e96b4d77459 100644
--- a/src/devices/sound/gaelco.cpp
+++ b/src/devices/sound/gaelco.cpp
@@ -54,15 +54,15 @@ static wav_file* wavraw; // Raw waveform
Gaelco GAE1 sound device
============================================================================*/
-const device_type GAELCO_GAE1 = device_creator<gaelco_gae1_device>;
+DEFINE_DEVICE_TYPE(GAELCO_GAE1, gaelco_gae1_device, "gaelco_gae1", "Gaelco GAE1")
gaelco_gae1_device::gaelco_gae1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gaelco_gae1_device(mconfig, GAELCO_GAE1, "Gaelco GAE1", tag, owner, clock, "gaelco_gae1", __FILE__)
+ : gaelco_gae1_device(mconfig, GAELCO_GAE1, tag, owner, clock)
{
}
-gaelco_gae1_device::gaelco_gae1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+gaelco_gae1_device::gaelco_gae1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_sound_interface(mconfig, *this)
, m_stream(nullptr)
, m_snd_data(*this, finder_base::DUMMY_TAG)
@@ -85,9 +85,9 @@ void gaelco_gae1_device::sound_stream_update(sound_stream &stream, stream_sample
int output_l = 0, output_r = 0;
/* for each channel */
- for (ch = 0; ch < GAELCO_NUM_CHANNELS; ch ++){
+ for (ch = 0; ch < NUM_CHANNELS; ch ++){
int ch_data_l = 0, ch_data_r = 0;
- gaelco_sound_channel *channel = &m_channel[ch];
+ sound_channel *channel = &m_channel[ch];
/* if the channel is playing */
if (channel->active == 1){
@@ -162,8 +162,8 @@ void gaelco_gae1_device::sound_stream_update(sound_stream &stream, stream_sample
if (output_r < -32768) output_r = -32768;
#else
/* ponderate channels */
- output_l /= GAELCO_NUM_CHANNELS;
- output_r /= GAELCO_NUM_CHANNELS;
+ output_l /= NUM_CHANNELS;
+ output_r /= NUM_CHANNELS;
#endif
/* now that we have computed all channels, save current data to the output buffer */
@@ -195,7 +195,7 @@ READ16_MEMBER( gaelco_gae1_device::gaelcosnd_r )
WRITE16_MEMBER( gaelco_gae1_device::gaelcosnd_w )
{
- gaelco_sound_channel *channel = &m_channel[offset >> 3];
+ sound_channel *channel = &m_channel[offset >> 3];
LOG_READ_WRITES(("%s: (GAE1): write %04x to %04x\n", machine().describe_context(), data, offset));
@@ -241,9 +241,9 @@ void gaelco_gae1_device::device_start()
m_stream = stream_alloc(0, 2, 8000);
/* init volume table */
- for (int vol = 0; vol < GAELCO_VOLUME_LEVELS; vol++){
+ for (int vol = 0; vol < VOLUME_LEVELS; vol++){
for (int j = -128; j <= 127; j++){
- m_volume_table[vol][(j ^ 0x80) & 0xff] = (vol*j*256)/(GAELCO_VOLUME_LEVELS - 1);
+ m_volume_table[vol][(j ^ 0x80) & 0xff] = (vol*j*256)/(VOLUME_LEVELS - 1);
}
}
@@ -264,9 +264,9 @@ void gaelco_gae1_device::device_stop()
Gaelco CG-1V sound device
============================================================================*/
-const device_type GAELCO_CG1V = device_creator<gaelco_cg1v_device>;
+DEFINE_DEVICE_TYPE(GAELCO_CG1V, gaelco_cg1v_device, "gaelco_cg1v", "Gaelco CG1V")
gaelco_cg1v_device::gaelco_cg1v_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gaelco_gae1_device(mconfig, GAELCO_CG1V, "Gaelco CG1V", tag, owner, clock, "gaelco_cg1v", __FILE__)
+ : gaelco_gae1_device(mconfig, GAELCO_CG1V, tag, owner, clock)
{
}
diff --git a/src/devices/sound/gaelco.h b/src/devices/sound/gaelco.h
index b17c72e3de0..ed099823b5a 100644
--- a/src/devices/sound/gaelco.h
+++ b/src/devices/sound/gaelco.h
@@ -1,12 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Manuel Abadia
-#pragma once
-
-#ifndef __GAELCO_SND_H__
-#define __GAELCO_SND_H__
+#ifndef MAME_SOUND_GAELCO_H
+#define MAME_SOUND_GAELCO_H
-#define GAELCO_NUM_CHANNELS 0x07
-#define GAELCO_VOLUME_LEVELS 0x10
+#pragma once
//**************************************************************************
@@ -24,15 +21,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> Sound Channel
-
-struct gaelco_sound_channel
-{
- int active; // is it playing?
- int loop; // = 0 no looping, = 1 looping
- int chunkNum; // current chunk if looping
-};
-
// ======================> gaelco_gae1_device
@@ -41,8 +29,6 @@ class gaelco_gae1_device : public device_t,
{
public:
gaelco_gae1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- gaelco_gae1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- ~gaelco_gae1_device() { }
static void set_snd_data_tag(device_t &device, const char *tag) { downcast<gaelco_gae1_device &>(device).m_snd_data.set_tag(tag); }
static void set_bank_offsets(device_t &device, int offs1, int offs2, int offs3, int offs4)
@@ -54,7 +40,12 @@ public:
dev.m_banks[3] = offs4;
}
+ DECLARE_WRITE16_MEMBER( gaelcosnd_w );
+ DECLARE_READ16_MEMBER( gaelcosnd_r );
+
protected:
+ gaelco_gae1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_stop() override;
@@ -62,23 +53,29 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_WRITE16_MEMBER( gaelcosnd_w );
- DECLARE_READ16_MEMBER( gaelcosnd_r );
-
private:
- sound_stream *m_stream; /* our stream */
- required_region_ptr<uint8_t> m_snd_data; /* PCM data */
- int m_banks[4]; /* start of each ROM bank */
- gaelco_sound_channel m_channel[GAELCO_NUM_CHANNELS]; /* 7 stereo channels */
+ static constexpr unsigned NUM_CHANNELS = 0x07;
+ static constexpr unsigned VOLUME_LEVELS = 0x10;
+
+ struct sound_channel
+ {
+ int active; // is it playing?
+ int loop; // = 0 no looping, = 1 looping
+ int chunkNum; // current chunk if looping
+ };
+
+ sound_stream *m_stream; /* our stream */
+ required_region_ptr<uint8_t> m_snd_data; /* PCM data */
+ int m_banks[4]; /* start of each ROM bank */
+ sound_channel m_channel[NUM_CHANNELS]; /* 7 stereo channels */
uint16_t m_sndregs[0x38];
// Table for converting from 8 to 16 bits with volume control
- int16_t m_volume_table[GAELCO_VOLUME_LEVELS][256];
+ int16_t m_volume_table[VOLUME_LEVELS][256];
};
-extern const device_type GAELCO_GAE1;
+DECLARE_DEVICE_TYPE(GAELCO_GAE1, gaelco_gae1_device)
@@ -90,7 +87,7 @@ public:
gaelco_cg1v_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type GAELCO_CG1V;
+DECLARE_DEVICE_TYPE(GAELCO_CG1V, gaelco_cg1v_device)
-#endif /* __GAELCO_SND_H__ */
+#endif // MAME_SOUND_GAELCO_H
diff --git a/src/devices/sound/gb.cpp b/src/devices/sound/gb.cpp
index ef06c7a84da..3589cf05b06 100644
--- a/src/devices/sound/gb.cpp
+++ b/src/devices/sound/gb.cpp
@@ -71,10 +71,10 @@ const int gameboy_sound_device::wave_duty_table[4][8] =
};
// device type definitions
-const device_type DMG_APU = device_creator<dmg_apu_device>;
-//const device_type CGB02_APU = device_creator<cgb02_apu_device>;
-const device_type CGB04_APU = device_creator<cgb04_apu_device>;
-//const device_type CGB05_APU = device_creator<cgb05_apu_device>;
+DEFINE_DEVICE_TYPE(DMG_APU, dmg_apu_device, "dmg_apu", "LR35902 APU")
+//DEFINE_DEVICE_TYPE(CGB02_APU, cgb02_apu_device, "cgb02_apu", fullname)
+DEFINE_DEVICE_TYPE(CGB04_APU, cgb04_apu_device, "cgb04_apu", "CGB04 APU")
+//DEFINE_DEVICE_TYPE(CGB05_APU, cgb05_apu_device, "cgb05_apu", fullname)
//**************************************************************************
// LIVE DEVICE
@@ -84,21 +84,21 @@ const device_type CGB04_APU = device_creator<cgb04_apu_device>;
// gameboy_sound_device - constructor
//-------------------------------------------------
-gameboy_sound_device::gameboy_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+gameboy_sound_device::gameboy_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_sound_interface(mconfig, *this)
{
}
dmg_apu_device::dmg_apu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gameboy_sound_device(mconfig, DMG_APU, "LR35902 APU", tag, owner, clock, "dmg_apu", __FILE__)
+ : gameboy_sound_device(mconfig, DMG_APU, tag, owner, clock)
{
}
cgb04_apu_device::cgb04_apu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : gameboy_sound_device(mconfig, CGB04_APU, "CGB04 APU", tag, owner, clock, "cgb04_apu", __FILE__)
+ : gameboy_sound_device(mconfig, CGB04_APU, tag, owner, clock)
{
}
diff --git a/src/devices/sound/gb.h b/src/devices/sound/gb.h
index 2a1ff031464..f4139d0b1a6 100644
--- a/src/devices/sound/gb.h
+++ b/src/devices/sound/gb.h
@@ -1,8 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:Anthony Kruize, Wilbert Pol
// thanks-to:Shay Green
-#ifndef __GBSOUND_H__
-#define __GBSOUND_H__
+#ifndef MAME_SOUND_GB_H
+#define MAME_SOUND_GB_H
class gameboy_sound_device : public device_t,
@@ -10,7 +10,6 @@ class gameboy_sound_device : public device_t,
{
public:
gameboy_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- gameboy_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
DECLARE_READ8_MEMBER(sound_r);
virtual DECLARE_READ8_MEMBER(wave_r) = 0;
@@ -18,6 +17,8 @@ public:
virtual DECLARE_WRITE8_MEMBER(wave_w) = 0;
protected:
+ gameboy_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -191,9 +192,9 @@ protected:
};
-extern const device_type DMG_APU;
-//extern const device_type CGB02_APU;
-extern const device_type CGB04_APU;
-//extern const device_type CGB05_APU;
+DECLARE_DEVICE_TYPE(DMG_APU, dmg_apu_device)
+//DECLARE_DEVICE_TYPE(CGB02_APU, cgb02_apu_device)
+DECLARE_DEVICE_TYPE(CGB04_APU, cgb04_apu_device)
+//DECLARE_DEVICE_TYPE(CGB05_APU, cgb05_apu_device)
-#endif
+#endif // MAME_SOUND_GB_H
diff --git a/src/devices/sound/hc55516.cpp b/src/devices/sound/hc55516.cpp
index 59a248e6b7f..99cc782dc20 100644
--- a/src/devices/sound/hc55516.cpp
+++ b/src/devices/sound/hc55516.cpp
@@ -23,30 +23,15 @@
-const device_type HC55516 = device_creator<hc55516_device>;
+DEFINE_DEVICE_TYPE(HC55516, hc55516_device, "hc55516", "HC-55516")
hc55516_device::hc55516_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HC55516, "HC-55516", tag, owner, clock, "hc55516", __FILE__),
- device_sound_interface(mconfig, *this),
- m_channel(nullptr),
- m_active_clock_hi(0),
- m_shiftreg_mask(0),
- m_last_clock_state(0),
- m_digit(0),
- m_new_digit(0),
- m_shiftreg(0),
- m_curr_sample(0),
- m_next_sample(0),
- m_update_count(0),
- m_filter(0),
- m_integrator(0),
- m_charge(0),
- m_decay(0),
- m_leak(0)
+ : hc55516_device(mconfig, HC55516, tag, owner, clock)
{
}
-hc55516_device::hc55516_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+
+hc55516_device::hc55516_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_channel(nullptr),
m_active_clock_hi(0),
@@ -84,10 +69,10 @@ void hc55516_device::device_reset()
m_last_clock_state = 0;
}
-const device_type MC3417 = device_creator<mc3417_device>;
+DEFINE_DEVICE_TYPE(MC3417, mc3417_device, "mc3417", "MC3417")
mc3417_device::mc3417_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hc55516_device(mconfig, MC3417, "MC3417", tag, owner, clock, "mc3417", __FILE__)
+ : hc55516_device(mconfig, MC3417, tag, owner, clock)
{
}
@@ -101,10 +86,10 @@ void mc3417_device::device_start()
}
-const device_type MC3418 = device_creator<mc3418_device>;
+DEFINE_DEVICE_TYPE(MC3418, mc3418_device, "mc3418", "MC3418")
mc3418_device::mc3418_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hc55516_device(mconfig, MC3418, "MC3418", tag, owner, clock, "mc3418", __FILE__)
+ : hc55516_device(mconfig, MC3418, tag, owner, clock)
{
}
diff --git a/src/devices/sound/hc55516.h b/src/devices/sound/hc55516.h
index 23d853ef001..d375de7c413 100644
--- a/src/devices/sound/hc55516.h
+++ b/src/devices/sound/hc55516.h
@@ -1,17 +1,14 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
-#pragma once
+#ifndef MAME_SOUND_HC55516_H
+#define MAME_SOUND_HC55516_H
-#ifndef __HC55516_H__
-#define __HC55516_H__
+#pragma once
-class hc55516_device : public device_t,
- public device_sound_interface
+class hc55516_device : public device_t, public device_sound_interface
{
public:
hc55516_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- hc55516_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- ~hc55516_device() {}
/* sets the digit (0 or 1) */
void digit_w(int digit);
@@ -23,6 +20,8 @@ public:
int clock_state_r();
protected:
+ hc55516_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -60,12 +59,12 @@ protected:
void process_digit();
};
-extern const device_type HC55516;
class mc3417_device : public hc55516_device
{
public:
mc3417_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -74,12 +73,12 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
};
-extern const device_type MC3417;
class mc3418_device : public hc55516_device
{
public:
mc3418_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -88,7 +87,9 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
};
-extern const device_type MC3418;
+DECLARE_DEVICE_TYPE(HC55516, hc55516_device)
+DECLARE_DEVICE_TYPE(MC3417, mc3417_device)
+DECLARE_DEVICE_TYPE(MC3418, mc3418_device)
-#endif /* __HC55516_H__ */
+#endif // MAME_SOUND_HC55516_H
diff --git a/src/devices/sound/i5000.cpp b/src/devices/sound/i5000.cpp
index d1532929ff5..7c8a19111fc 100644
--- a/src/devices/sound/i5000.cpp
+++ b/src/devices/sound/i5000.cpp
@@ -21,11 +21,12 @@
// device type definition
-const device_type I5000_SND = device_creator<i5000snd_device>;
+DEFINE_DEVICE_TYPE(I5000_SND, i5000snd_device, "i5000snd", "Imagetek I5000 Sound")
i5000snd_device::i5000snd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I5000_SND, "I5000", tag, owner, clock, "i5000snd", __FILE__),
- device_sound_interface(mconfig, *this), m_stream(nullptr), m_rom_base(nullptr), m_rom_mask(0)
+ : device_t(mconfig, I5000_SND, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr), m_rom_base(nullptr), m_rom_mask(0)
{
}
diff --git a/src/devices/sound/i5000.h b/src/devices/sound/i5000.h
index 26880fe7c79..4cec4245810 100644
--- a/src/devices/sound/i5000.h
+++ b/src/devices/sound/i5000.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_I5000_H
+#define MAME_SOUND_I5000_H
-#ifndef __I5000_H__
-#define __I5000_H__
+#pragma once
#include "sound/okiadpcm.h"
@@ -39,8 +39,6 @@ public:
DECLARE_READ16_MEMBER(read);
DECLARE_WRITE16_MEMBER(write);
- sound_stream *m_stream;
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -48,6 +46,8 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ sound_stream *m_stream;
+
private:
struct channel_t
{
@@ -85,5 +85,6 @@ private:
// device type definition
extern const device_type I5000_SND;
+DECLARE_DEVICE_TYPE(I5000_SND, i5000snd_device)
-#endif /* __I5000_H__ */
+#endif // MAME_SOUND_I5000_H
diff --git a/src/devices/sound/ics2115.cpp b/src/devices/sound/ics2115.cpp
index 0b0db0768fe..12062e9a509 100644
--- a/src/devices/sound/ics2115.cpp
+++ b/src/devices/sound/ics2115.cpp
@@ -15,10 +15,10 @@
//#define ICS2115_ISOLATE 6
// device type definition
-const device_type ICS2115 = device_creator<ics2115_device>;
+DEFINE_DEVICE_TYPE(ICS2115, ics2115_device, "ics2115", "ICS2115")
ics2115_device::ics2115_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ICS2115, "ICS2115", tag, owner, clock, "ics2115", __FILE__),
+ : device_t(mconfig, ICS2115, tag, owner, clock),
device_sound_interface(mconfig, *this), m_stream(nullptr),
m_rom(*this, DEVICE_SELF),
m_irq_cb(*this), m_active_osc(0), m_osc_select(0), m_reg_select(0), m_irq_enabled(0), m_irq_pending(0), m_irq_on(false), m_vmode(0)
@@ -135,7 +135,7 @@ void ics2115_device::device_reset()
}
//TODO: improve using next-state logic from column 126 of patent 5809466
-int ics2115_voice::update_volume_envelope()
+int ics2115_device::ics2115_voice::update_volume_envelope()
{
int ret = 0;
if(vol_ctrl.bitflags.done || vol_ctrl.bitflags.stop)
@@ -180,7 +180,7 @@ int ics2115_voice::update_volume_envelope()
return ret;
}
-/*uint32_t ics2115_voice::next_address()
+/*uint32_t ics2115_device::ics2115_voice::next_address()
{
//Patent 6,246,774 B1, Column 111, Row 25
//LEN BLEN DIR BC NextAddress
@@ -195,7 +195,7 @@ int ics2115_voice::update_volume_envelope()
}*/
-int ics2115_voice::update_oscillator()
+int ics2115_device::ics2115_voice::update_oscillator()
{
int ret = 0;
if(osc_conf.bitflags.stop)
@@ -281,12 +281,12 @@ stream_sample_t ics2115_device::get_sample(ics2115_voice& voice)
return sample;
}
-bool ics2115_voice::playing()
+bool ics2115_device::ics2115_voice::playing()
{
return state.bitflags.on && !((vol_ctrl.bitflags.done || vol_ctrl.bitflags.stop) && osc_conf.bitflags.stop);
}
-void ics2115_voice::update_ramp() {
+void ics2115_device::ics2115_voice::update_ramp() {
//slow attack
if (state.bitflags.on && !osc_conf.bitflags.stop) {
if (state.bitflags.ramp < 0x40)
diff --git a/src/devices/sound/ics2115.h b/src/devices/sound/ics2115.h
index c383b1e11f7..45fe8e7061e 100644
--- a/src/devices/sound/ics2115.h
+++ b/src/devices/sound/ics2115.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Alex Marshall,nimitz,austere
-#pragma once
+#ifndef MAME_SOUND_ICS2115_H
+#define MAME_SOUND_ICS2115_H
-#ifndef __ICS2115_H__
-#define __ICS2115_H__
+#pragma once
//**************************************************************************
@@ -20,70 +20,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-struct ics2115_voice {
- struct {
- int32_t left;
- uint32_t acc, start, end;
- uint16_t fc;
- uint8_t ctl, saddr;
- } osc;
-
- struct {
- int32_t left;
- uint32_t add;
- uint32_t start, end;
- uint32_t acc;
- uint16_t regacc;
- uint8_t incr;
- uint8_t pan, mode;
- } vol;
-
- union {
- struct {
- uint8_t ulaw : 1;
- uint8_t stop : 1; //stops wave + vol envelope
- uint8_t eightbit : 1;
- uint8_t loop : 1;
- uint8_t loop_bidir : 1;
- uint8_t irq : 1;
- uint8_t invert : 1;
- uint8_t irq_pending: 1;
- //IRQ on variable?
- } bitflags;
- uint8_t value;
- } osc_conf;
-
- union {
- struct {
- uint8_t done : 1; //indicates ramp has stopped
- uint8_t stop : 1; //stops the ramp
- uint8_t rollover : 1; //rollover (TODO)
- uint8_t loop : 1;
- uint8_t loop_bidir : 1;
- uint8_t irq : 1; //enable IRQ generation
- uint8_t invert : 1; //invert direction
- uint8_t irq_pending: 1; //(read only) IRQ pending
- //noenvelope == (done | disable)
- } bitflags;
- uint8_t value;
- } vol_ctrl;
-
- //Possibly redundant state. => improvements of wavetable logic
- //may lead to its elimination.
- union {
- struct {
- uint8_t on : 1;
- uint8_t ramp : 7; // 100 0000 = 0x40 maximum
- } bitflags;
- uint8_t value;
- } state;
-
- bool playing();
- int update_volume_envelope();
- int update_oscillator();
- void update_ramp();
-};
-
// ======================> ics2115_device
class ics2115_device : public device_t, public device_sound_interface
@@ -92,7 +28,7 @@ public:
// construction/destruction
ics2115_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<ics2115_device &>(device).m_irq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<ics2115_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -101,11 +37,72 @@ public:
TIMER_CALLBACK_MEMBER(timer_cb_0);
TIMER_CALLBACK_MEMBER(timer_cb_1);
- sound_stream *m_stream;
+protected:
+ static constexpr uint16_t revision = 0x1;
- static const uint16_t revision = 0x1;
+ struct ics2115_voice {
+ struct {
+ int32_t left;
+ uint32_t acc, start, end;
+ uint16_t fc;
+ uint8_t ctl, saddr;
+ } osc;
-protected:
+ struct {
+ int32_t left;
+ uint32_t add;
+ uint32_t start, end;
+ uint32_t acc;
+ uint16_t regacc;
+ uint8_t incr;
+ uint8_t pan, mode;
+ } vol;
+
+ union {
+ struct {
+ uint8_t ulaw : 1;
+ uint8_t stop : 1; //stops wave + vol envelope
+ uint8_t eightbit : 1;
+ uint8_t loop : 1;
+ uint8_t loop_bidir : 1;
+ uint8_t irq : 1;
+ uint8_t invert : 1;
+ uint8_t irq_pending: 1;
+ //IRQ on variable?
+ } bitflags;
+ uint8_t value;
+ } osc_conf;
+
+ union {
+ struct {
+ uint8_t done : 1; //indicates ramp has stopped
+ uint8_t stop : 1; //stops the ramp
+ uint8_t rollover : 1; //rollover (TODO)
+ uint8_t loop : 1;
+ uint8_t loop_bidir : 1;
+ uint8_t irq : 1; //enable IRQ generation
+ uint8_t invert : 1; //invert direction
+ uint8_t irq_pending: 1; //(read only) IRQ pending
+ //noenvelope == (done | disable)
+ } bitflags;
+ uint8_t value;
+ } vol_ctrl;
+
+ //Possibly redundant state. => improvements of wavetable logic
+ //may lead to its elimination.
+ union {
+ struct {
+ uint8_t on : 1;
+ uint8_t ramp : 7; // 100 0000 = 0x40 maximum
+ } bitflags;
+ uint8_t value;
+ } state;
+
+ bool playing();
+ int update_volume_envelope();
+ int update_oscillator();
+ void update_ramp();
+ };
// device-level overrides
virtual void device_start() override;
@@ -114,6 +111,19 @@ protected:
// internal callbacks
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ //internal register helper functions
+ uint16_t reg_read();
+ void reg_write(uint8_t data, bool msb);
+ void recalc_timer(int timer);
+ void keyon();
+ void recalc_irq();
+
+ //stream helper functions
+ int fill_output(ics2115_voice& voice, stream_sample_t *outputs[2], int samples);
+ stream_sample_t get_sample(ics2115_voice& voice);
+
+ sound_stream *m_stream;
+
// internal state
required_region_ptr<uint8_t> m_rom;
devcb_write_line m_irq_cb;
@@ -138,21 +148,10 @@ protected:
//Unknown variable, seems to be effected by 0x12. Further investigation
//Required.
uint8_t m_vmode;
-
- //internal register helper functions
- uint16_t reg_read();
- void reg_write(uint8_t data, bool msb);
- void recalc_timer(int timer);
- void keyon();
- void recalc_irq();
-
- //stream helper functions
- int fill_output(ics2115_voice& voice, stream_sample_t *outputs[2], int samples);
- stream_sample_t get_sample(ics2115_voice& voice);
};
// device type definition
-extern const device_type ICS2115;
+DECLARE_DEVICE_TYPE(ICS2115, ics2115_device)
-#endif /* __ICS2115_H__ */
+#endif // MAME_SOUND_ICS2115_H
diff --git a/src/devices/sound/iremga20.cpp b/src/devices/sound/iremga20.cpp
index f05944a4123..da12101b320 100644
--- a/src/devices/sound/iremga20.cpp
+++ b/src/devices/sound/iremga20.cpp
@@ -35,7 +35,7 @@ Revisions:
// device type definition
-const device_type IREMGA20 = device_creator<iremga20_device>;
+DEFINE_DEVICE_TYPE(IREMGA20, iremga20_device, "iremga20", "Irem GA20")
//**************************************************************************
@@ -47,7 +47,7 @@ const device_type IREMGA20 = device_creator<iremga20_device>;
//-------------------------------------------------
iremga20_device::iremga20_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IREMGA20, "Irem GA20", tag, owner, clock, "iremga20", __FILE__),
+ : device_t(mconfig, IREMGA20, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_rom(*this, DEVICE_SELF),
m_stream(nullptr)
diff --git a/src/devices/sound/iremga20.h b/src/devices/sound/iremga20.h
index 4c5c064871e..ee0607496bd 100644
--- a/src/devices/sound/iremga20.h
+++ b/src/devices/sound/iremga20.h
@@ -5,10 +5,10 @@
Irem GA20 PCM Sound Chip
*********************************************************/
-#pragma once
+#ifndef MAME_SOUND_IREMGA20_H
+#define MAME_SOUND_IREMGA20_H
-#ifndef __IREMGA20_H__
-#define __IREMGA20_H__
+#pragma once
//**************************************************************************
@@ -25,20 +25,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-struct IremGA20_channel_def
-{
- uint32_t rate;
- uint32_t size;
- uint32_t start;
- uint32_t pos;
- uint32_t frac;
- uint32_t end;
- uint32_t volume;
- uint32_t pan;
- uint32_t effect;
- uint32_t play;
-};
-
// ======================> iremga20_device
@@ -47,7 +33,9 @@ class iremga20_device : public device_t,
{
public:
iremga20_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~iremga20_device() { }
+
+ DECLARE_WRITE8_MEMBER( irem_ga20_w );
+ DECLARE_READ8_MEMBER( irem_ga20_r );
protected:
// device-level overrides
@@ -57,21 +45,29 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_WRITE8_MEMBER( irem_ga20_w );
- DECLARE_READ8_MEMBER( irem_ga20_r );
-
private:
+ struct channel_def
+ {
+ uint32_t rate;
+ uint32_t size;
+ uint32_t start;
+ uint32_t pos;
+ uint32_t frac;
+ uint32_t end;
+ uint32_t volume;
+ uint32_t pan;
+ uint32_t effect;
+ uint32_t play;
+ };
+
void iremga20_reset();
-private:
required_region_ptr<uint8_t> m_rom;
sound_stream *m_stream;
uint16_t m_regs[0x40];
- IremGA20_channel_def m_channel[4];
+ channel_def m_channel[4];
};
-extern const device_type IREMGA20;
-
+DECLARE_DEVICE_TYPE(IREMGA20, iremga20_device)
-#endif /* __IREMGA20_H__ */
+#endif // MAME_SOUND_IREMGA20_H
diff --git a/src/devices/sound/k005289.cpp b/src/devices/sound/k005289.cpp
index 91075735ae8..9e65eb5783d 100644
--- a/src/devices/sound/k005289.cpp
+++ b/src/devices/sound/k005289.cpp
@@ -42,7 +42,7 @@
#define CLOCK_DIVIDER 32
// device type definition
-const device_type K005289 = device_creator<k005289_device>;
+DEFINE_DEVICE_TYPE(K005289, k005289_device, "k005289", "K005289 SCC")
//**************************************************************************
@@ -54,14 +54,14 @@ const device_type K005289 = device_creator<k005289_device>;
//-------------------------------------------------
k005289_device::k005289_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, K005289, "K005289 SCC", tag, owner, clock, "k005289", __FILE__),
- device_sound_interface(mconfig, *this),
- m_sound_prom(*this, DEVICE_SELF),
- m_stream(nullptr),
- m_rate(0),
- m_mixer_table(nullptr),
- m_mixer_lookup(nullptr),
- m_mixer_buffer(nullptr)
+ : device_t(mconfig, K005289, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_sound_prom(*this, DEVICE_SELF)
+ , m_stream(nullptr)
+ , m_rate(0)
+ , m_mixer_table(nullptr)
+ , m_mixer_lookup(nullptr)
+ , m_mixer_buffer(nullptr)
{
}
diff --git a/src/devices/sound/k005289.h b/src/devices/sound/k005289.h
index a84378fac98..96647ddce04 100644
--- a/src/devices/sound/k005289.h
+++ b/src/devices/sound/k005289.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Bryan McPhail
-#pragma once
+#ifndef MAME_SOUND_K005289_H
+#define MAME_SOUND_K005289_H
-#ifndef __K005289_H__
-#define __K005289_H__
+#pragma once
//**************************************************************************
@@ -23,16 +23,7 @@ class k005289_device : public device_t,
{
public:
k005289_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~k005289_device() { }
-
-protected:
- // device-level overrides
- virtual void device_start() override;
-
- // sound stream update overrides
- virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
DECLARE_WRITE8_MEMBER( k005289_control_A_w );
DECLARE_WRITE8_MEMBER( k005289_control_B_w );
DECLARE_WRITE8_MEMBER( ld1_w );
@@ -40,6 +31,13 @@ public:
DECLARE_WRITE8_MEMBER( tg1_w );
DECLARE_WRITE8_MEMBER( tg2_w );
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+ // sound stream update overrides
+ virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+
private:
void make_mixer_table(int voices);
@@ -59,7 +57,6 @@ private:
uint8_t m_volume[2];
};
-extern const device_type K005289;
-
+DECLARE_DEVICE_TYPE(K005289, k005289_device)
-#endif /* __K005289_H__ */
+#endif // MAME_SOUND_K005289_H
diff --git a/src/devices/sound/k007232.cpp b/src/devices/sound/k007232.cpp
index ec9cbeb53a4..96f89ff628f 100644
--- a/src/devices/sound/k007232.cpp
+++ b/src/devices/sound/k007232.cpp
@@ -145,13 +145,13 @@ static const float kdaca_fn[][2] = {
/*************************************************************/
-const device_type K007232 = device_creator<k007232_device>;
+DEFINE_DEVICE_TYPE(K007232, k007232_device, "k007232", "K007232 PCM Controller")
k007232_device::k007232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, K007232, "K007232 PCM Controller", tag, owner, clock, "k007232", __FILE__),
- device_sound_interface(mconfig, *this),
- m_rom(*this, DEVICE_SELF),
- m_port_write_handler(*this)
+ : device_t(mconfig, K007232, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_rom(*this, DEVICE_SELF)
+ , m_port_write_handler(*this)
{
}
diff --git a/src/devices/sound/k007232.h b/src/devices/sound/k007232.h
index d8083ebf867..874cb410ba2 100644
--- a/src/devices/sound/k007232.h
+++ b/src/devices/sound/k007232.h
@@ -4,25 +4,21 @@
/* Konami PCM controller */
/*********************************************************/
-#pragma once
-
-#ifndef __K007232_H__
-#define __K007232_H__
+#ifndef MAME_SOUND_K007232_H
+#define MAME_SOUND_K007232_H
-#define KDAC_A_PCM_MAX (2) /* Channels per chip */
+#pragma once
#define MCFG_K007232_PORT_WRITE_HANDLER(_devcb) \
devcb = &k007232_device::set_port_write_handler(*device, DEVCB_##_devcb);
-class k007232_device : public device_t,
- public device_sound_interface
+class k007232_device : public device_t, public device_sound_interface
{
public:
k007232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~k007232_device() {}
- template<class _Object> static devcb_base &set_port_write_handler(device_t &device, _Object object) { return downcast<k007232_device &>(device).m_port_write_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_port_write_handler(device_t &device, Object &&cb) { return downcast<k007232_device &>(device).m_port_write_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( read );
@@ -49,6 +45,8 @@ protected:
void KDAC_A_make_fncode();
private:
+ static constexpr unsigned KDAC_A_PCM_MAX = 2; /* Channels per chip */
+
// internal state
required_region_ptr<uint8_t> m_rom;
@@ -68,7 +66,6 @@ private:
devcb_write8 m_port_write_handler;
};
-extern const device_type K007232;
-
+DECLARE_DEVICE_TYPE(K007232, k007232_device)
-#endif /* __K007232_H__ */
+#endif // MAME_SOUND_K007232_H
diff --git a/src/devices/sound/k051649.cpp b/src/devices/sound/k051649.cpp
index 599686f0622..1114fa47c6c 100644
--- a/src/devices/sound/k051649.cpp
+++ b/src/devices/sound/k051649.cpp
@@ -32,7 +32,7 @@
// device type definition
-const device_type K051649 = device_creator<k051649_device>;
+DEFINE_DEVICE_TYPE(K051649, k051649_device, "k051649", "K051649 SCC1")
//**************************************************************************
@@ -44,7 +44,7 @@ const device_type K051649 = device_creator<k051649_device>;
//-------------------------------------------------
k051649_device::k051649_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, K051649, "K051649 SCC1", tag, owner, clock, "k051649", __FILE__),
+ : device_t(mconfig, K051649, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_mclock(0),
@@ -82,16 +82,13 @@ void k051649_device::device_start()
void k051649_device::device_reset()
{
- k051649_sound_channel *voice = m_channel_list;
- int i;
-
// reset all the voices
- for (i = 0; i < 5; i++)
+ for (sound_channel &voice : m_channel_list)
{
- voice[i].frequency = 0;
- voice[i].volume = 0xf;
- voice[i].counter = 0;
- voice[i].key = 0;
+ voice.frequency = 0;
+ voice.volume = 0xf;
+ voice.counter = 0;
+ voice.key = 0;
}
// other parameters
@@ -105,28 +102,23 @@ void k051649_device::device_reset()
void k051649_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
- k051649_sound_channel *voice=m_channel_list;
- stream_sample_t *buffer = outputs[0];
- short *mix;
- int i,j;
-
// zap the contents of the mixer buffer
memset(m_mixer_buffer.get(), 0, samples * sizeof(short));
- for (j = 0; j < 5; j++)
+ for (sound_channel &voice : m_channel_list)
{
// channel is halted for freq < 9
- if (voice[j].frequency > 8)
+ if (voice.frequency > 8)
{
- const signed char *w = voice[j].waveram;
- int v=voice[j].volume * voice[j].key;
- int c=voice[j].counter;
- int step = ((int64_t)m_mclock * (1 << FREQ_BITS)) / (float)((voice[j].frequency + 1) * 16 * (m_rate / 32)) + 0.5f;
+ const signed char *w = voice.waveram;
+ int v=voice.volume * voice.key;
+ int c=voice.counter;
+ int step = ((int64_t(m_mclock) << FREQ_BITS) / float((voice.frequency + 1) * 16 * (m_rate / 32))) + 0.5f;
- mix = m_mixer_buffer.get();
+ short *mix = m_mixer_buffer.get();
// add our contribution
- for (i = 0; i < samples; i++)
+ for (int i = 0; i < samples; i++)
{
int offs;
@@ -136,13 +128,14 @@ void k051649_device::sound_stream_update(sound_stream &stream, stream_sample_t *
}
// update the counter for this voice
- voice[j].counter = c;
+ voice.counter = c;
}
}
// mix it down
- mix = m_mixer_buffer.get();
- for (i = 0; i < samples; i++)
+ stream_sample_t *buffer = outputs[0];
+ short *mix = m_mixer_buffer.get();
+ for (int i = 0; i < samples; i++)
*buffer++ = m_mixer_lookup[*mix++];
}
diff --git a/src/devices/sound/k051649.h b/src/devices/sound/k051649.h
index 787413d257e..d405617bcbf 100644
--- a/src/devices/sound/k051649.h
+++ b/src/devices/sound/k051649.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Bryan McPhail
-#pragma once
+#ifndef MAME_SOUND_K051649_H
+#define MAME_SOUND_K051649_H
-#ifndef __K051649_H__
-#define __K051649_H__
+#pragma once
//**************************************************************************
@@ -20,25 +20,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-// Parameters for a channel
-struct k051649_sound_channel
-{
- k051649_sound_channel() :
- counter(0),
- frequency(0),
- volume(0),
- key(0)
- {
- memset(waveram, 0, sizeof(signed char)*32);
- }
-
- unsigned long counter;
- int frequency;
- int volume;
- int key;
- signed char waveram[32];
-};
-
// ======================> k051649_device
@@ -47,17 +28,7 @@ class k051649_device : public device_t,
{
public:
k051649_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~k051649_device() { }
-
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
- // sound stream update overrides
- virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
DECLARE_WRITE8_MEMBER( k051649_waveform_w );
DECLARE_READ8_MEMBER ( k051649_waveform_r );
DECLARE_WRITE8_MEMBER( k051649_volume_w );
@@ -69,11 +40,37 @@ public:
DECLARE_WRITE8_MEMBER( k052539_waveform_w );
DECLARE_READ8_MEMBER ( k052539_waveform_r );
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // sound stream update overrides
+ virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+
private:
+ // Parameters for a channel
+ struct sound_channel
+ {
+ sound_channel() :
+ counter(0),
+ frequency(0),
+ volume(0),
+ key(0)
+ {
+ memset(waveram, 0, sizeof(signed char)*32);
+ }
+
+ unsigned long counter;
+ int frequency;
+ int volume;
+ int key;
+ signed char waveram[32];
+ };
+
void make_mixer_table(int voices);
-private:
- k051649_sound_channel m_channel_list[5];
+ sound_channel m_channel_list[5];
/* global sound parameters */
sound_stream *m_stream;
@@ -89,7 +86,6 @@ private:
uint8_t m_test;
};
-extern const device_type K051649;
-
+DECLARE_DEVICE_TYPE(K051649, k051649_device)
-#endif /* __K051649_H__ */
+#endif // MAME_SOUND_K051649_H
diff --git a/src/devices/sound/k053260.cpp b/src/devices/sound/k053260.cpp
index 313c9d9b3a8..764f02487f9 100644
--- a/src/devices/sound/k053260.cpp
+++ b/src/devices/sound/k053260.cpp
@@ -62,7 +62,7 @@
// device type definition
-const device_type K053260 = device_creator<k053260_device>;
+DEFINE_DEVICE_TYPE(K053260, k053260_device, "k053260", "K053260 KDSC")
//**************************************************************************
@@ -74,12 +74,13 @@ const device_type K053260 = device_creator<k053260_device>;
//-------------------------------------------------
k053260_device::k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, K053260, "K053260 KDSC", tag, owner, clock, "k053260", __FILE__)
+ : device_t(mconfig, K053260, tag, owner, clock)
, device_sound_interface(mconfig, *this)
, device_rom_interface(mconfig, *this, 21)
, m_stream(nullptr)
, m_keyon(0)
, m_mode(0)
+ , m_voice{ { *this }, { *this }, { *this }, { *this } }
{
memset(m_portdata, 0, sizeof(m_portdata));
}
@@ -99,7 +100,7 @@ void k053260_device::device_start()
save_item(NAME(m_mode));
for (int i = 0; i < 4; i++)
- m_voice[i].voice_start(*this, i);
+ m_voice[i].voice_start(i);
}
@@ -288,8 +289,8 @@ void k053260_device::sound_stream_update(sound_stream &stream, stream_sample_t *
}
else
{
- memset( outputs[0], 0, samples * sizeof(*outputs[0]));
- memset( outputs[1], 0, samples * sizeof(*outputs[1]));
+ memset(outputs[0], 0, samples * sizeof(*outputs[0]));
+ memset(outputs[1], 0, samples * sizeof(*outputs[1]));
}
}
@@ -298,24 +299,22 @@ void k053260_device::sound_stream_update(sound_stream &stream, stream_sample_t *
// KDSC_Voice - one of the four voices
//**************************************************************************
-void k053260_device::KDSC_Voice::voice_start(k053260_device &device, int index)
+void k053260_device::KDSC_Voice::voice_start(int index)
{
- m_device = &device;
-
voice_reset();
- device.save_item(NAME(m_position), index);
- device.save_item(NAME(m_pan_volume), index);
- device.save_item(NAME(m_counter), index);
- device.save_item(NAME(m_output), index);
- device.save_item(NAME(m_playing), index);
- device.save_item(NAME(m_start), index);
- device.save_item(NAME(m_length), index);
- device.save_item(NAME(m_pitch), index);
- device.save_item(NAME(m_volume), index);
- device.save_item(NAME(m_pan), index);
- device.save_item(NAME(m_loop), index);
- device.save_item(NAME(m_kadpcm), index);
+ m_device.save_item(NAME(m_position), index);
+ m_device.save_item(NAME(m_pan_volume), index);
+ m_device.save_item(NAME(m_counter), index);
+ m_device.save_item(NAME(m_output), index);
+ m_device.save_item(NAME(m_playing), index);
+ m_device.save_item(NAME(m_start), index);
+ m_device.save_item(NAME(m_length), index);
+ m_device.save_item(NAME(m_pitch), index);
+ m_device.save_item(NAME(m_volume), index);
+ m_device.save_item(NAME(m_pan), index);
+ m_device.save_item(NAME(m_loop), index);
+ m_device.save_item(NAME(m_kadpcm), index);
}
void k053260_device::KDSC_Voice::voice_reset()
@@ -389,7 +388,7 @@ void k053260_device::KDSC_Voice::key_on()
m_counter = 0x1000 - CLOCKS_PER_SAMPLE; // force update on next sound_stream_update
m_output = 0;
m_playing = true;
- if (LOG) m_device->logerror("K053260: start = %06x, length = %06x, pitch = %04x, vol = %02x, loop = %s, %s\n",
+ if (LOG) m_device.logerror("K053260: start = %06x, length = %06x, pitch = %04x, vol = %02x, loop = %s, %s\n",
m_start, m_length, m_pitch, m_volume, m_loop ? "yes" : "no", m_kadpcm ? "KADPCM" : "PCM" );
}
@@ -432,7 +431,7 @@ void k053260_device::KDSC_Voice::play(stream_sample_t *outputs)
}
}
- uint8_t romdata = m_device->read_byte(m_start + bytepos);
+ uint8_t romdata = m_device.read_byte(m_start + bytepos);
if (m_kadpcm)
{
@@ -456,5 +455,5 @@ uint8_t k053260_device::KDSC_Voice::read_rom()
m_position = (m_position + 1) & 0xffff;
- return m_device->read_byte(offs);
+ return m_device.read_byte(offs);
}
diff --git a/src/devices/sound/k053260.h b/src/devices/sound/k053260.h
index dc5cd431c8b..a938a420090 100644
--- a/src/devices/sound/k053260.h
+++ b/src/devices/sound/k053260.h
@@ -6,23 +6,24 @@
*********************************************************/
-#pragma once
+#ifndef MAME_SOUND_K053260_H
+#define MAME_SOUND_K053260_H
-#ifndef __K053260_H__
-#define __K053260_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_K053260_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, K053260, _clock)
-#define MCFG_K053260_REPLACE(_tag, _clock) \
- MCFG_DEVICE_REPLACE(_tag, K053260, _clock)
+#define MCFG_K053260_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), K053260, (clock))
-#define MCFG_K053260_REGION(_tag) \
- k053260_device::set_region_tag(*device, "^" _tag);
+#define MCFG_K053260_REPLACE(tag, clock) \
+ MCFG_DEVICE_REPLACE((tag), K053260, (clock))
+
+#define MCFG_K053260_REGION(tag) \
+ k053260_device::set_region_tag(*device, ("^" tag));
//**************************************************************************
@@ -37,7 +38,6 @@ class k053260_device : public device_t,
{
public:
k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~k053260_device() { }
DECLARE_READ8_MEMBER( main_read );
DECLARE_WRITE8_MEMBER( main_write );
@@ -68,11 +68,9 @@ private:
class KDSC_Voice
{
public:
- KDSC_Voice() : m_device(nullptr), m_position(0), m_counter(0), m_output(0), m_playing(false), m_start(0), m_length(0), m_pitch(0), m_volume(0), m_pan(0), m_loop(false), m_kadpcm(false)
- {
- }
+ KDSC_Voice(k053260_device &device) : m_device(device), m_pan_volume{ 0, 0 } { }
- inline void voice_start(k053260_device &device, int index);
+ inline void voice_start(int index);
inline void voice_reset();
inline void set_register(offs_t offset, uint8_t data);
inline void set_loop_kadpcm(uint8_t data);
@@ -86,30 +84,28 @@ private:
private:
// pointer to owning device
- k053260_device *m_device;
+ k053260_device &m_device;
// live state
- uint32_t m_position;
+ uint32_t m_position = 0;
uint16_t m_pan_volume[2];
- uint16_t m_counter;
- int8_t m_output;
- bool m_playing;
+ uint16_t m_counter = 0;
+ int8_t m_output = 0;
+ bool m_playing = false;
// per voice registers
- uint32_t m_start;
- uint16_t m_length;
- uint16_t m_pitch;
- uint8_t m_volume;
+ uint32_t m_start = 0;
+ uint16_t m_length = 0;
+ uint16_t m_pitch = 0;
+ uint8_t m_volume = 0;
// bit packed registers
- uint8_t m_pan;
- bool m_loop;
- bool m_kadpcm;
+ uint8_t m_pan = 0;
+ bool m_loop = false;
+ bool m_kadpcm = false;
} m_voice[4];
-
- friend class k053260_device::KDSC_Voice;
};
-extern const device_type K053260;
+DECLARE_DEVICE_TYPE(K053260, k053260_device)
-#endif /* __K053260_H__ */
+#endif // MAME_SOUND_K053260_H
diff --git a/src/devices/sound/k054539.cpp b/src/devices/sound/k054539.cpp
index 5674e0b84e2..c5dc57c0528 100644
--- a/src/devices/sound/k054539.cpp
+++ b/src/devices/sound/k054539.cpp
@@ -12,13 +12,14 @@
#include "emu.h"
#include "k054539.h"
-const device_type K054539 = device_creator<k054539_device>;
+//#define VERBOSE 1
+#include "logmacro.h"
-#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+
+DEFINE_DEVICE_TYPE(K054539, k054539_device, "k054539", "K054539 ADPCM")
k054539_device::k054539_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, K054539, "K054539 ADPCM", tag, owner, clock, "k054539", __FILE__),
+ : device_t(mconfig, K054539, tag, owner, clock),
device_sound_interface(mconfig, *this),
flags(0),
ram(nullptr),
@@ -278,7 +279,7 @@ void k054539_device::sound_stream_update(sound_stream &stream, stream_sample_t *
break;
}
default:
- LOG(("Unknown sample type %x for channel %d\n", base2[0] & 0xc, ch));
+ LOG("Unknown sample type %x for channel %d\n", base2[0] & 0xc, ch);
break;
}
lval += cur_val * lvol;
@@ -501,7 +502,7 @@ READ8_MEMBER(k054539_device::read)
case 0x22c:
break;
default:
- LOG(("K054539 read %03x\n", offset));
+ LOG("K054539 read %03x\n", offset);
break;
}
return regs[offset];
diff --git a/src/devices/sound/k054539.h b/src/devices/sound/k054539.h
index 11991e1155b..d6a946cec73 100644
--- a/src/devices/sound/k054539.h
+++ b/src/devices/sound/k054539.h
@@ -6,34 +6,27 @@
*********************************************************/
-#pragma once
+#ifndef MAME_SOUND_K054539_H
+#define MAME_SOUND_K054539_H
-#ifndef __K054539_H__
-#define __K054539_H__
+#pragma once
-typedef device_delegate<void (double left, double right)> k054539_cb_delegate;
#define K054539_CB_MEMBER(_name) void _name(double left, double right)
#define MCFG_K054539_APAN_CB(_class, _method) \
- k054539_device::set_analog_callback(*device, k054539_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ k054539_device::set_analog_callback(*device, k054539_device::cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_K054539_REGION_OVERRRIDE(_region) \
- k054539_device::set_override(*device, "^" _region);
+ k054539_device::set_override(*device, "^" _region);
#define MCFG_K054539_TIMER_HANDLER(_devcb) \
- devcb = &k054539_device::set_timer_handler(*device, DEVCB_##_devcb);
+ devcb = &k054539_device::set_timer_handler(*device, DEVCB_##_devcb);
-//* control flags, may be set at DRIVER_INIT().
-#define K054539_RESET_FLAGS 0
-#define K054539_REVERSE_STEREO 1
-#define K054539_DISABLE_REVERB 2
-#define K054539_UPDATE_AT_KEYON 4
-
-class k054539_device : public device_t,
- public device_sound_interface
+class k054539_device : public device_t, public device_sound_interface
{
public:
+ // control flags, may be set at DRIVER_INIT().
enum {
RESET_FLAGS = 0,
REVERSE_STEREO = 1,
@@ -41,13 +34,15 @@ public:
UPDATE_AT_KEYON = 4
};
+ typedef device_delegate<void (double left, double right)> cb_delegate;
+
// construction/destruction
k054539_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- static void set_analog_callback(device_t &device, k054539_cb_delegate callback) { downcast<k054539_device &>(device).m_apan_cb = callback; }
+ static void set_analog_callback(device_t &device, cb_delegate &&cb) { downcast<k054539_device &>(device).m_apan_cb = std::move(cb); }
static void set_override(device_t &device, const char *rgnoverride) { downcast<k054539_device &>(device).m_rom.set_tag(rgnoverride); }
- template<class _Object> static devcb_base &set_timer_handler(device_t &device, _Object object) { return downcast<k054539_device &>(device).m_timer_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_timer_handler(device_t &device, Object &&cb) { return downcast<k054539_device &>(device).m_timer_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(write);
@@ -109,7 +104,7 @@ private:
emu_timer *m_timer;
uint32_t m_timer_state;
devcb_write_line m_timer_handler;
- k054539_cb_delegate m_apan_cb;
+ cb_delegate m_apan_cb;
bool regupdate();
void keyon(int channel);
@@ -117,6 +112,6 @@ private:
void init_chip();
};
-extern const device_type K054539;
+DECLARE_DEVICE_TYPE(K054539, k054539_device)
-#endif /* __K054539_H__ */
+#endif // MAME_SOUND_K054539_H
diff --git a/src/devices/sound/k056800.cpp b/src/devices/sound/k056800.cpp
index 5ee7a6c9ad9..2bb499eb414 100644
--- a/src/devices/sound/k056800.cpp
+++ b/src/devices/sound/k056800.cpp
@@ -12,7 +12,7 @@
-const device_type K056800 = device_creator<k056800_device>;
+DEFINE_DEVICE_TYPE(K056800, k056800_device, "k056800", "K056800 MIRAC")
@@ -21,8 +21,12 @@ const device_type K056800 = device_creator<k056800_device>;
//-------------------------------------------------
k056800_device::k056800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, K056800, "K056800 MIRAC", tag, owner, clock, "k056800", __FILE__), m_int_pending(false), m_int_enabled(false),
- m_int_handler(*this)
+ : device_t(mconfig, K056800, tag, owner, clock)
+ , m_int_pending(false)
+ , m_int_enabled(false)
+ , m_host_to_snd_regs{ 0, 0, 0, 0 }
+ , m_snd_to_host_regs{ 0, 0 }
+ , m_int_handler(*this)
{
}
diff --git a/src/devices/sound/k056800.h b/src/devices/sound/k056800.h
index d17a8943c5e..182700d9b1f 100644
--- a/src/devices/sound/k056800.h
+++ b/src/devices/sound/k056800.h
@@ -6,18 +6,19 @@
*********************************************************/
-#ifndef __K056800_H__
-#define __K056800_H__
+#ifndef MAME_SOUND_K056800_H
+#define MAME_SOUND_K056800_H
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
-#define MCFG_K056800_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, K056800, _clock)
-#define MCFG_K056800_INT_HANDLER(_devcb) \
- devcb = &k056800_device::set_int_handler(*device, DEVCB_##_devcb);
+#define MCFG_K056800_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), K056800, (clock))
+
+#define MCFG_K056800_INT_HANDLER(cb) \
+ devcb = &k056800_device::set_int_handler(*device, (DEVCB_##cb));
@@ -32,7 +33,7 @@ public:
k056800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_int_handler(device_t &device, _Object object) { return downcast<k056800_device &>(device).m_int_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) { return downcast<k056800_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( host_r );
DECLARE_WRITE8_MEMBER( host_w );
@@ -54,8 +55,6 @@ private:
devcb_write_line m_int_handler;
};
-extern const device_type K056800;
-
-
+DECLARE_DEVICE_TYPE(K056800, k056800_device)
-#endif /* __K056800_H__ */
+#endif // MAME_SOUND_K056800_H
diff --git a/src/devices/sound/l7a1045_l6028_dsp_a.cpp b/src/devices/sound/l7a1045_l6028_dsp_a.cpp
index a1378a80a01..1312452b7c0 100644
--- a/src/devices/sound/l7a1045_l6028_dsp_a.cpp
+++ b/src/devices/sound/l7a1045_l6028_dsp_a.cpp
@@ -89,7 +89,7 @@
// device type definition
-const device_type L7A1045 = device_creator<l7a1045_sound_device>;
+DEFINE_DEVICE_TYPE(L7A1045, l7a1045_sound_device, "l7a1045", "L7A1045 L6028 DSP-A")
//**************************************************************************
@@ -101,7 +101,7 @@ const device_type L7A1045 = device_creator<l7a1045_sound_device>;
//-------------------------------------------------
l7a1045_sound_device::l7a1045_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, L7A1045, "L7A1045 L6028 DSP-A", tag, owner, clock, "l7a1045_custom", __FILE__),
+ : device_t(mconfig, L7A1045, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_key(0),
@@ -326,7 +326,7 @@ WRITE16_MEMBER(l7a1045_sound_device::sound_status_w)
{
l7a1045_voice *vptr = &m_voice[m_audiochannel];
- #if 0
+#if 0
if(vptr->start != 0)
{
printf("%08x START\n",vptr->start);
@@ -335,7 +335,7 @@ WRITE16_MEMBER(l7a1045_sound_device::sound_status_w)
for(int i=0;i<0x10;i++)
printf("%02x (%02x) = %04x%04x%04x\n",m_audiochannel,i,m_audiodat[i][m_audiochannel].dat[2],m_audiodat[i][m_audiochannel].dat[1],m_audiodat[i][m_audiochannel].dat[0]);
}
- #endif
+#endif
vptr->frac = 0;
vptr->pos = 0;
diff --git a/src/devices/sound/l7a1045_l6028_dsp_a.h b/src/devices/sound/l7a1045_l6028_dsp_a.h
index 4d2f7692c44..5b49990f7c7 100644
--- a/src/devices/sound/l7a1045_l6028_dsp_a.h
+++ b/src/devices/sound/l7a1045_l6028_dsp_a.h
@@ -1,28 +1,14 @@
// license:LGPL-2.1+
// copyright-holders:David Haywood, Angelo Salese, ElSemi
+#ifndef MAME_SOUND_L7A1045_L6028_DSP_A_H
+#define MAME_SOUND_L7A1045_L6028_DSP_A_H
+
+#pragma once
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-struct l7a1045_voice
-{
- l7a1045_voice() : end(0), mode(false),
- pos(0),
- frac(0), l_volume(0), r_volume(0)
- {
- //memset(regs, 0, sizeof(uint32_t)*8);
- start = 0;
- }
-
- uint32_t start;
- uint32_t end;
- bool mode;
- uint32_t pos;
- uint32_t frac;
- uint16_t l_volume;
- uint16_t r_volume;
-};
-
// ======================> l7a1045_sound_device
class l7a1045_sound_device : public device_t,
@@ -30,7 +16,6 @@ class l7a1045_sound_device : public device_t,
{
public:
l7a1045_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~l7a1045_sound_device() { }
// void set_base(int8_t* base) { m_base = base; }
@@ -45,6 +30,19 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ struct l7a1045_voice
+ {
+ l7a1045_voice() { }
+
+ uint32_t start = 0;
+ uint32_t end = 0;
+ bool mode = false;
+ uint32_t pos = 0;
+ uint32_t frac = 0;
+ uint16_t l_volume = 0;
+ uint16_t r_volume = 0;
+ };
+
sound_stream *m_stream;
l7a1045_voice m_voice[32];
uint32_t m_key;
@@ -65,4 +63,6 @@ private:
DECLARE_WRITE16_MEMBER(sound_status_w);
};
-extern const device_type L7A1045;
+DECLARE_DEVICE_TYPE(L7A1045, l7a1045_sound_device)
+
+#endif // MAME_SOUND_L7A1045_L6028_DSP_A_H
diff --git a/src/devices/sound/lmc1992.cpp b/src/devices/sound/lmc1992.cpp
index 469b98ec307..84eb7f7c9d7 100644
--- a/src/devices/sound/lmc1992.cpp
+++ b/src/devices/sound/lmc1992.cpp
@@ -23,15 +23,15 @@
#include "emu.h"
#include "lmc1992.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
#define MICROWIRE_DEVICE_ADDRESS 2
@@ -64,7 +64,7 @@ enum
//**************************************************************************
// devices
-const device_type LMC1992 = device_creator<lmc1992_device>;
+DEFINE_DEVICE_TYPE(LMC1992, lmc1992_device, "lmc1992", "LMC1992")
@@ -83,47 +83,47 @@ inline void lmc1992_device::execute_command(int addr, int data)
case FUNCTION_INPUT_SELECT:
if (data == INPUT_SELECT_OPEN)
{
- if (LOG) logerror("LMC1992 '%s' Input Select : OPEN\n", tag());
+ LOG("LMC1992 Input Select : OPEN\n");
}
else
{
- if (LOG) logerror("LMC1992 '%s' Input Select : INPUT%u\n", tag(), data);
+ LOG("LMC1992 Input Select : INPUT%u\n", data);
}
m_input = data;
break;
case FUNCTION_BASS:
- if (LOG) logerror("LMC1992 '%s' Bass : %i dB\n", tag(), -40 + (data * 2));
+ LOG("LMC1992 Bass : %i dB\n", -40 + (data * 2));
m_bass = data;
break;
case FUNCTION_TREBLE:
- if (LOG) logerror("LMC1992 '%s' Treble : %i dB\n", tag(), -40 + (data * 2));
+ LOG("LMC1992 Treble : %i dB\n", -40 + (data * 2));
m_treble = data;
break;
case FUNCTION_VOLUME:
- if (LOG) logerror("LMC1992 '%s' Volume : %i dB\n", tag(), -80 + (data * 2));
+ LOG("LMC1992 Volume : %i dB\n", -80 + (data * 2));
m_volume = data;
break;
case FUNCTION_RIGHT_FRONT_FADER:
- if (LOG) logerror("LMC1992 '%s' Right Front Fader : %i dB\n", tag(), -40 + (data * 2));
+ LOG("LMC1992 Right Front Fader : %i dB\n", -40 + (data * 2));
m_fader_rf = data;
break;
case FUNCTION_LEFT_FRONT_FADER:
- if (LOG) logerror("LMC1992 '%s' Left Front Fader : %i dB\n", tag(), -40 + (data * 2));
+ LOG("LMC1992 Left Front Fader : %i dB\n", -40 + (data * 2));
m_fader_lf = data;
break;
case FUNCTION_RIGHT_REAR_FADER:
- if (LOG) logerror("LMC1992 '%s' Right Rear Fader : %i dB\n", tag(), -40 + (data * 2));
+ LOG("LMC1992 Right Rear Fader : %i dB\n", -40 + (data * 2));
m_fader_rr = data;
break;
case FUNCTION_LEFT_REAR_FADER:
- if (LOG) logerror("LMC1992 '%s' Left Rear Fader : %i dB\n", tag(), -40 + (data * 2));
+ LOG("LMC1992 Left Rear Fader : %i dB\n", -40 + (data * 2));
m_fader_lr = data;
break;
}
@@ -140,8 +140,8 @@ inline void lmc1992_device::execute_command(int addr, int data)
//-------------------------------------------------
lmc1992_device::lmc1992_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, LMC1992, "LMC1992", tag, owner, clock, "lmc1992", __FILE__),
- device_sound_interface(mconfig, *this)
+ : device_t(mconfig, LMC1992, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
{
}
diff --git a/src/devices/sound/lmc1992.h b/src/devices/sound/lmc1992.h
index d672bfc15a6..42473eaf7fd 100644
--- a/src/devices/sound/lmc1992.h
+++ b/src/devices/sound/lmc1992.h
@@ -24,10 +24,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_SOUND_LMC1992_H
+#define MAME_SOUND_LMC1992_H
-#ifndef __LMC1992__
-#define __LMC1992__
+#pragma once
@@ -105,8 +105,6 @@ private:
// device type definition
-extern const device_type LMC1992;
-
-
+DECLARE_DEVICE_TYPE(LMC1992, lmc1992_device)
-#endif
+#endif // MAME_SOUND_LMC1992_H
diff --git a/src/devices/sound/mas3507d.cpp b/src/devices/sound/mas3507d.cpp
index 358badd121f..4b972b46dfc 100644
--- a/src/devices/sound/mas3507d.cpp
+++ b/src/devices/sound/mas3507d.cpp
@@ -8,12 +8,13 @@
#include "mas3507d.h"
// device type definition
-const device_type MAS3507D = device_creator<mas3507d_device>;
+DEFINE_DEVICE_TYPE(MAS3507D, mas3507d_device, "mas3507d", "MAS 3507D MPEG decoder")
mas3507d_device::mas3507d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MAS3507D, "MAS3507D", tag, owner, clock, "mas3507d", __FILE__),
- device_sound_interface(mconfig, *this), i2c_bus_state(), i2c_bus_address(), i2c_scli(false), i2c_sclo(false), i2c_sdai(false), i2c_sdao(false),
- i2c_bus_curbit(0), i2c_bus_curval(0), i2c_subdest(), i2c_command(), i2c_bytecount(0), i2c_io_bank(0), i2c_io_adr(0), i2c_io_count(0), i2c_io_val(0)
+ : device_t(mconfig, MAS3507D, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , i2c_bus_state(), i2c_bus_address(), i2c_scli(false), i2c_sclo(false), i2c_sdai(false), i2c_sdao(false)
+ , i2c_bus_curbit(0), i2c_bus_curval(0), i2c_subdest(), i2c_command(), i2c_bytecount(0), i2c_io_bank(0), i2c_io_adr(0), i2c_io_count(0), i2c_io_val(0)
{
}
diff --git a/src/devices/sound/mas3507d.h b/src/devices/sound/mas3507d.h
index 844a09c47aa..2f5935b6402 100644
--- a/src/devices/sound/mas3507d.h
+++ b/src/devices/sound/mas3507d.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#pragma once
+#ifndef MAME_SOUND_MAS3507D_H
+#define MAME_SOUND_MAS3507D_H
-#ifndef __MAS3507D_H__
-#define __MAS3507D_H__
+#pragma once
//**************************************************************************
@@ -63,6 +63,6 @@ private:
// device type definition
-extern const device_type MAS3507D;
+DECLARE_DEVICE_TYPE(MAS3507D, mas3507d_device)
-#endif /* __MAS3507D_H__ */
+#endif // MAME_SOUND_MAS3507D_H
diff --git a/src/devices/sound/mea8000.cpp b/src/devices/sound/mea8000.cpp
index d800adebfa4..f7709a6957c 100644
--- a/src/devices/sound/mea8000.cpp
+++ b/src/devices/sound/mea8000.cpp
@@ -27,22 +27,20 @@
**********************************************************************/
-#include <math.h>
-
#include "emu.h"
#include "mea8000.h"
+#include <math.h>
-#define VERBOSE 0
-
-/* define to use double instead of int (slow but useful for debugging) */
-#undef FLOAT_MODE
+//#define VERBOSE 1
+#include "logmacro.h"
/******************* utilitiy function and macros ********************/
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+ALLOW_SAVE_TYPE( mea8000_device::mea8000_state );
+
/* digital filters work at 8 kHz */
#define F0 (clock() / 480)
@@ -58,6 +56,8 @@
/************************* quantization tables ***********************/
+/* table amplitude [-QUANT,QUANT] */
+#define QUANT 512
/* frequency, in Hz */
@@ -111,11 +111,11 @@ static const int pi_table[32] =
-const device_type MEA8000 = device_creator<mea8000_device>;
+DEFINE_DEVICE_TYPE(MEA8000, mea8000_device, "mea8000", "Philips/Signetics MEA 8000 speech synthesizer")
mea8000_device::mea8000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MEA8000, "Philips / Signetics MEA 8000 speech synthesizer", tag, owner, clock, "mea8000", __FILE__),
+ : device_t(mconfig, MEA8000, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_write_req(*this),
m_stream(nullptr),
@@ -205,7 +205,7 @@ void mea8000_device::init_tables()
}
-#ifndef FLOAT_MODE /* uint16_t version */
+#ifndef MEA8000_FLOAT_MODE /* uint16_t version */
@@ -385,18 +385,18 @@ void mea8000_device::decode_frame()
m_framelog = fd + 6 /* 64 samples / ms */ + 3;
m_framelength = 1 << m_framelog;
m_bufpos = 0;
-#ifdef FLOAT_MODE
- LOG(("mea800_decode_frame: pitch=%i noise=%i fm1=%gHz bw1=%gHz fm2=%gHz bw2=%gHz fm3=%gHz bw3=%gHz fm4=%gHz bw4=%gHz ampl=%g fd=%ims\n",
+#ifdef MEA8000_FLOAT_MODE
+ LOG("mea800_decode_frame: pitch=%i noise=%i fm1=%gHz bw1=%gHz fm2=%gHz bw2=%gHz fm3=%gHz bw3=%gHz fm4=%gHz bw4=%gHz ampl=%g fd=%ims\n",
m_pitch, m_noise,
m_f[0].fm, m_f[0].bw, m_f[1].fm, m_f[1].bw,
m_f[2].fm, m_f[2].bw, m_f[3].fm, m_f[3].bw,
- m_ampl/1000., 8 << fd));
+ m_ampl/1000., 8 << fd);
#else
- LOG(("mea800_decode_frame: pitch=%i noise=%i fm1=%iHz bw1=%iHz fm2=%iHz bw2=%iHz fm3=%iHz bw3=%iHz fm4=%iHz bw4=%iHz ampl=%g fd=%ims\n",
+ LOG("mea800_decode_frame: pitch=%i noise=%i fm1=%iHz bw1=%iHz fm2=%iHz bw2=%iHz fm3=%iHz bw3=%iHz fm4=%iHz bw4=%iHz ampl=%g fd=%ims\n",
m_pitch, m_noise,
m_f[0].fm, m_f[0].bw, m_f[1].fm, m_f[1].bw,
m_f[2].fm, m_f[2].bw, m_f[3].fm, m_f[3].bw,
- m_ampl/1000., 8 << fd));
+ m_ampl/1000., 8 << fd);
#endif
}
@@ -459,27 +459,27 @@ TIMER_CALLBACK_MEMBER( mea8000_device::timer_expire )
if (m_bufpos == 4)
{
/* we have a successor */
- LOG(("%f mea8000_timer_expire: new frame\n", machine().time().as_double()));
+ LOG("%f mea8000_timer_expire: new frame\n", machine().time().as_double());
decode_frame();
start_frame();
}
else if (m_cont)
{
/* repeat mode */
- LOG(("%f mea8000_timer_expire: repeat frame\n", machine().time().as_double()));
+ LOG("%f mea8000_timer_expire: repeat frame\n", machine().time().as_double());
start_frame();
}
/* slow stop */
else if (m_state == MEA8000_STARTED)
{
m_ampl = 0;
- LOG(("%f mea8000_timer_expire: fade frame\n", machine().time().as_double()));
+ LOG("%f mea8000_timer_expire: fade frame\n", machine().time().as_double());
start_frame();
m_state = MEA8000_SLOWING;
}
else if (m_state == MEA8000_SLOWING)
{
- LOG(("%f mea8000_timer_expire: stop frame\n", machine().time().as_double()));
+ LOG("%f mea8000_timer_expire: stop frame\n", machine().time().as_double());
stop_frame();
}
update_req();
@@ -503,7 +503,7 @@ READ8_MEMBER( mea8000_device::read )
case 1:
/* ready to accept next frame */
#if 0
- LOG(("%s %f: mea8000_r ready=%i\n", machine().describe_context(), machine().time().as_double(), accept_byte()));
+ LOG("%s %f: mea8000_r ready=%i\n", machine().describe_context(), machine().time().as_double(), accept_byte());
#endif
return accept_byte() << 7;
@@ -522,20 +522,20 @@ WRITE8_MEMBER( mea8000_device::write )
{
/* got pitch byte before first frame */
m_pitch = 2 * data;
- LOG(("%s %f: mea8000_w pitch %i\n", machine().describe_context(), machine().time().as_double(), m_pitch));
+ LOG("%s %f: mea8000_w pitch %i\n", machine().describe_context(), machine().time().as_double(), m_pitch);
m_state = MEA8000_WAIT_FIRST;
m_bufpos = 0;
}
else if (m_bufpos == 4)
{
/* overflow */
- LOG(("%s %f: mea8000_w data overflow %02X\n", machine().describe_context(), machine().time().as_double(), data));
+ LOG("%s %f: mea8000_w data overflow %02X\n", machine().describe_context(), machine().time().as_double(), data);
}
else
{
/* enqueue frame byte */
- LOG(("%s %f: mea8000_w data %02X in frame pos %i\n", machine().describe_context(), machine().time().as_double(),
- data, m_bufpos));
+ LOG("%s %f: mea8000_w data %02X in frame pos %i\n", machine().describe_context(), machine().time().as_double(),
+ data, m_bufpos);
m_buf[m_bufpos] = data;
m_bufpos++;
if (m_bufpos == 4 && m_state == MEA8000_WAIT_FIRST)
@@ -567,9 +567,9 @@ WRITE8_MEMBER( mea8000_device::write )
if (stop)
stop_frame();
- LOG(( "%s %f: mea8000_w command %02X stop=%i cont=%i roe=%i\n",
+ LOG( "%s %f: mea8000_w command %02X stop=%i cont=%i roe=%i\n",
machine().describe_context(), machine().time().as_double(), data,
- stop, m_cont, m_roe));
+ stop, m_cont, m_roe);
update_req();
break;
diff --git a/src/devices/sound/mea8000.h b/src/devices/sound/mea8000.h
index ff1ff4ad926..3cc2daec605 100644
--- a/src/devices/sound/mea8000.h
+++ b/src/devices/sound/mea8000.h
@@ -8,55 +8,24 @@
**********************************************************************/
-#ifndef __MEA8000_H__
-#define __MEA8000_H__
+#ifndef MAME_SOUND_MEA8000_H
+#define MAME_SOUND_MEA8000_H
+
+#pragma once
#define MCFG_MEA8000_REQ_CALLBACK(_write) \
devcb = &mea8000_device::set_reqwr_callback(*device, DEVCB_##_write);
-/* table amplitude [-QUANT,QUANT] */
-#define QUANT 512
-
-/* filter coefficients from frequencies */
-#define TABLE_LEN 3600
-
-/* noise generator table */
-#define NOISE_LEN 8192
+/* define to use double instead of int (slow but useful for debugging) */
+#undef MEA8000_FLOAT_MODE
-/* finite machine state controlling frames */
-enum mea8000_state
-{
- MEA8000_STOPPED, /* nothing to do, timer disabled */
- MEA8000_WAIT_FIRST, /* received pitch, wait for first full trame, timer disabled */
- MEA8000_STARTED, /* playing a frame, timer on */
- MEA8000_SLOWING /* repeating last frame with decreasing amplitude, timer on */
-};
-
-ALLOW_SAVE_TYPE( mea8000_state );
-
-
-struct filter_t
-{
-#ifdef FLOAT_MODE
- double fm, last_fm; /* frequency, in Hz */
- double bw, last_bw; /* band-width, in Hz */
- double output, last_output; /* filter state */
-#else
- uint16_t fm, last_fm;
- uint16_t bw, last_bw;
- int32_t output, last_output;
-#endif
-};
-
-class mea8000_device : public device_t,
- public device_sound_interface
+class mea8000_device : public device_t, public device_sound_interface
{
public:
mea8000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~mea8000_device() {}
- template<class _Object> static devcb_base &set_req_wr_callback(device_t &device, _Object object) { return downcast<mea8000_device &>(device).m_write_req.set_callback(object); }
+ template <class Object> static devcb_base &set_req_wr_callback(device_t &device, Object &&cb) { return downcast<mea8000_device &>(device).m_write_req.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -67,12 +36,38 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
- // internal state
+ /* filter coefficients from frequencies */
+ static constexpr unsigned TABLE_LEN = 3600;
+
+ /* noise generator table */
+ static constexpr unsigned NOISE_LEN = 8192;
+
+ /* finite machine state controlling frames */
+ enum mea8000_state
+ {
+ MEA8000_STOPPED, /* nothing to do, timer disabled */
+ MEA8000_WAIT_FIRST, /* received pitch, wait for first full trame, timer disabled */
+ MEA8000_STARTED, /* playing a frame, timer on */
+ MEA8000_SLOWING /* repeating last frame with decreasing amplitude, timer on */
+ };
+
+ struct filter_t
+ {
+#ifdef MEA8000_FLOAT_MODE
+ double fm, last_fm; /* frequency, in Hz */
+ double bw, last_bw; /* band-width, in Hz */
+ double output, last_output; /* filter state */
+#else
+ uint16_t fm, last_fm;
+ uint16_t bw, last_bw;
+ int32_t output, last_output;
+#endif
+ };
int accept_byte();
void update_req();
void init_tables();
-#ifndef FLOAT_MODE /* uint16_t version */
+#ifndef MEA8000_FLOAT_MODE /* uint16_t version */
int interp(uint16_t org, uint16_t dst);
int filter_step(int i, int input);
int noise_gen();
@@ -129,7 +124,6 @@ private:
};
-extern const device_type MEA8000;
+DECLARE_DEVICE_TYPE(MEA8000, mea8000_device)
-
-#endif
+#endif // MAME_SOUND_MEA8000_H
diff --git a/src/devices/sound/mm5837.cpp b/src/devices/sound/mm5837.cpp
index 7a8626eaf77..ac48a540194 100644
--- a/src/devices/sound/mm5837.cpp
+++ b/src/devices/sound/mm5837.cpp
@@ -23,7 +23,7 @@ constexpr int mm5837_device::m_frequency[];
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MM5837 = device_creator<mm5837_device>;
+DEFINE_DEVICE_TYPE(MM5837, mm5837_device, "mm5837", "MM5837 Digital Noise Source")
//**************************************************************************
@@ -35,7 +35,7 @@ const device_type MM5837 = device_creator<mm5837_device>;
//-------------------------------------------------
mm5837_device::mm5837_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MM5837, "MM5837 Digital Noise Source", tag, owner, clock, "mm5837", __FILE__),
+ device_t(mconfig, MM5837, tag, owner, clock),
m_output_cb(*this),
m_vdd(0),
m_timer(nullptr),
diff --git a/src/devices/sound/mm5837.h b/src/devices/sound/mm5837.h
index cd312c1a572..a06cedbc939 100644
--- a/src/devices/sound/mm5837.h
+++ b/src/devices/sound/mm5837.h
@@ -14,10 +14,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_MM5837_H
+#define MAME_SOUND_MM5837_H
-#ifndef __MM5837_H__
-#define __MM5837_H__
+#pragma once
@@ -47,8 +47,8 @@ public:
// configuration
static void set_vdd_voltage(device_t &device, int voltage) { downcast<mm5837_device &>(device).m_vdd = voltage; }
- template<class _Object> static devcb_base &set_output_callback(device_t &device, _Object object)
- { return downcast<mm5837_device &>(device).m_output_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_output_callback(device_t &device, Object &&cb)
+ { return downcast<mm5837_device &>(device).m_output_cb.set_callback(std::forward<Object>(cb)); }
protected:
// device-level overrides
@@ -75,6 +75,6 @@ private:
};
// device type definition
-extern const device_type MM5837;
+DECLARE_DEVICE_TYPE(MM5837, mm5837_device)
-#endif // __MM5837_H__
+#endif // MAME_SOUND_MM5837_H
diff --git a/src/devices/sound/mos6560.cpp b/src/devices/sound/mos6560.cpp
index 126064c37db..8738fbc58ea 100644
--- a/src/devices/sound/mos6560.cpp
+++ b/src/devices/sound/mos6560.cpp
@@ -675,9 +675,9 @@ void mos6560_device::sound_start()
}
-const device_type MOS6560 = device_creator<mos6560_device>;
-const device_type MOS6561 = device_creator<mos6561_device>;
-const device_type MOS656X_ATTACK_UFO = device_creator<mos656x_attack_ufo_device>;
+DEFINE_DEVICE_TYPE(MOS6560, mos6560_device, "mos6560", "MOS 6560 VIC")
+DEFINE_DEVICE_TYPE(MOS6561, mos6561_device, "mos6561", "MOS 6561 VIC")
+DEFINE_DEVICE_TYPE(MOS656X_ATTACK_UFO, mos656x_attack_ufo_device, "mos656x_attack_ufo", "MOS 656X VIC (Attack UFO)")
// default address maps
static ADDRESS_MAP_START( mos6560_videoram_map, AS_0, 8, mos6560_device )
@@ -688,8 +688,8 @@ static ADDRESS_MAP_START( mos6560_colorram_map, AS_1, 8, mos6560_device )
AM_RANGE(0x000, 0x3ff) AM_RAM
ADDRESS_MAP_END
-mos6560_device::mos6560_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+mos6560_device::mos6560_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_sound_interface(mconfig, *this),
device_video_interface(mconfig, *this),
@@ -702,23 +702,19 @@ mos6560_device::mos6560_device(const machine_config &mconfig, device_type type,
}
mos6560_device::mos6560_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MOS6560, "MOS6560", tag, owner, clock, "mos6560", __FILE__),
- device_memory_interface(mconfig, *this),
- device_sound_interface(mconfig, *this),
- device_video_interface(mconfig, *this),
- m_variant(TYPE_6560),
- m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(mos6560_videoram_map)),
- m_colorram_space_config("colorram", ENDIANNESS_LITTLE, 8, 10, 0, nullptr, *ADDRESS_MAP_NAME(mos6560_colorram_map)),
- m_read_potx(*this),
- m_read_poty(*this)
+ : mos6560_device(mconfig, MOS6560, tag, owner, clock, TYPE_6560)
{
}
mos6561_device::mos6561_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- :mos6560_device(mconfig, MOS6561, "MOS6561", tag, owner, clock, TYPE_6561, "mos6561", __FILE__) { }
+ : mos6560_device(mconfig, MOS6561, tag, owner, clock, TYPE_6561)
+{
+}
mos656x_attack_ufo_device::mos656x_attack_ufo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- :mos6560_device(mconfig, MOS656X_ATTACK_UFO, "MOS656X", tag, owner, clock, TYPE_ATTACK_UFO, "mos656x_attack_ufo", __FILE__) { }
+ : mos6560_device(mconfig, MOS656X_ATTACK_UFO, tag, owner, clock, TYPE_ATTACK_UFO)
+{
+}
//-------------------------------------------------
diff --git a/src/devices/sound/mos6560.h b/src/devices/sound/mos6560.h
index 77a715fd67a..761017b55b5 100644
--- a/src/devices/sound/mos6560.h
+++ b/src/devices/sound/mos6560.h
@@ -29,8 +29,8 @@
***************************************************************************/
-#ifndef MAME_DEVICES_SOUND_MOS6560_H
-#define MAME_DEVICES_SOUND_MOS6560_H
+#ifndef MAME_SOUND_MOS6560_H
+#define MAME_SOUND_MOS6560_H
#pragma once
@@ -134,11 +134,10 @@ class mos6560_device : public device_t,
public device_video_interface
{
public:
- mos6560_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
mos6560_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_potx_rd_callback(device_t &device, _Object object) { return downcast<mos6560_device &>(device).m_read_potx.set_callback(object); }
- template<class _Object> static devcb_base &set_poty_rd_callback(device_t &device, _Object object) { return downcast<mos6560_device &>(device).m_read_poty.set_callback(object); }
+ template <class Object> static devcb_base &set_potx_rd_callback(device_t &device, Object &&cb) { return downcast<mos6560_device &>(device).m_read_potx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_poty_rd_callback(device_t &device, Object &&cb) { return downcast<mos6560_device &>(device).m_read_poty.set_callback(std::forward<Object>(cb)); }
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
@@ -164,6 +163,8 @@ protected:
TIMER_LINE
};
+ mos6560_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -182,7 +183,7 @@ protected:
void sound_start();
void raster_interrupt_gen();
- int m_variant;
+ const int m_variant;
const address_space_config m_videoram_space_config;
const address_space_config m_colorram_space_config;
@@ -231,7 +232,7 @@ protected:
// ======================> mos6561_device
-class mos6561_device : public mos6560_device
+class mos6561_device : public mos6560_device
{
public:
// construction/destruction
@@ -241,7 +242,7 @@ public:
// ======================> mos656x_attack_ufo_device
-class mos656x_attack_ufo_device : public mos6560_device
+class mos656x_attack_ufo_device : public mos6560_device
{
public:
// construction/destruction
@@ -250,10 +251,8 @@ public:
// device type definitions
-extern const device_type MOS6560;
-extern const device_type MOS6561;
-extern const device_type MOS656X_ATTACK_UFO;
-
-
+DECLARE_DEVICE_TYPE(MOS6560, mos6560_device)
+DECLARE_DEVICE_TYPE(MOS6561, mos6561_device)
+DECLARE_DEVICE_TYPE(MOS656X_ATTACK_UFO, mos656x_attack_ufo_device)
-#endif // MAME_DEVICES_SOUND_MOS6560_H
+#endif // MAME_SOUND_MOS6560_H
diff --git a/src/devices/sound/mos6581.cpp b/src/devices/sound/mos6581.cpp
index 635605736d9..8648e86bbc9 100644
--- a/src/devices/sound/mos6581.cpp
+++ b/src/devices/sound/mos6581.cpp
@@ -25,8 +25,8 @@
//**************************************************************************
// device type definition
-const device_type MOS6581 = device_creator<mos6581_device>;
-const device_type MOS8580 = device_creator<mos8580_device>;
+DEFINE_DEVICE_TYPE(MOS6581, mos6581_device, "mos6581", "MOS 6581 SID")
+DEFINE_DEVICE_TYPE(MOS8580, mos8580_device, "mos8580", "MOS 8580 SID")
@@ -38,31 +38,25 @@ const device_type MOS8580 = device_creator<mos8580_device>;
// mos6581_device - constructor
//-------------------------------------------------
-mos6581_device::mos6581_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sound_interface(mconfig, *this),
- m_read_potx(*this),
- m_read_poty(*this),
- m_stream(nullptr),
- m_variant(variant)
+mos6581_device::mos6581_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_read_potx(*this)
+ , m_read_poty(*this)
+ , m_stream(nullptr)
+ , m_variant(variant)
+ , m_token(make_unique_clear<SID6581_t>())
+
{
- m_token = global_alloc_clear<SID6581_t>();
}
mos6581_device::mos6581_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MOS6581, "MOS6581", tag, owner, clock, "mos6581", __FILE__),
- device_sound_interface(mconfig, *this),
- m_read_potx(*this),
- m_read_poty(*this),
- m_stream(nullptr),
- m_variant(TYPE_6581)
+ : mos6581_device(mconfig, MOS6581, tag, owner, clock, TYPE_6581)
{
- m_token = global_alloc_clear<SID6581_t>();
}
mos6581_device::~mos6581_device()
{
- global_free(m_token);
}
//-------------------------------------------------
@@ -70,7 +64,7 @@ mos6581_device::~mos6581_device()
//-------------------------------------------------
mos8580_device::mos8580_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mos6581_device(mconfig, MOS8580, "MOS8580", tag, owner, clock, TYPE_8580, "mos8580", __FILE__)
+ : mos6581_device(mconfig, MOS8580, tag, owner, clock, TYPE_8580)
{
}
@@ -95,7 +89,7 @@ void mos6581_device::device_start()
m_token->clock = clock();
m_token->type = m_variant;
- sid6581_init(m_token);
+ m_token->init();
sidInitWaveformTables(m_variant);
}
@@ -106,7 +100,7 @@ void mos6581_device::device_start()
void mos6581_device::device_reset()
{
- sidEmuReset(m_token);
+ m_token->reset();
}
@@ -117,7 +111,7 @@ void mos6581_device::device_reset()
void mos6581_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
- sidEmuFillBuffer(m_token, outputs[0], samples);
+ m_token->fill_buffer(outputs[0], samples);
}
@@ -140,7 +134,7 @@ READ8_MEMBER( mos6581_device::read )
break;
default:
- data = sid6581_port_r(machine(), m_token, offset);
+ data = m_token->port_r(machine(), offset);
break;
}
@@ -154,5 +148,5 @@ READ8_MEMBER( mos6581_device::read )
WRITE8_MEMBER( mos6581_device::write )
{
- sid6581_port_w(m_token, offset, data);
+ m_token->port_w(offset, data);
}
diff --git a/src/devices/sound/mos6581.h b/src/devices/sound/mos6581.h
index a441adb82dc..a8dfc0e18de 100644
--- a/src/devices/sound/mos6581.h
+++ b/src/devices/sound/mos6581.h
@@ -23,10 +23,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_SOUND_MOS6581_H
+#define MAME_SOUND_MOS6581_H
-#ifndef __MOS6581__
-#define __MOS6581__
+#pragma once
@@ -51,27 +51,28 @@
struct SID6581_t;
-class mos6581_device : public device_t,
- public device_sound_interface
+class mos6581_device : public device_t, public device_sound_interface
{
public:
- mos6581_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
+ // used by the actual SID emulator
+ enum
+ {
+ TYPE_6581,
+ TYPE_8580
+ };
+
mos6581_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~mos6581_device();
- template<class _Object> static devcb_base &set_potx_rd_callback(device_t &device, _Object object) { return downcast<mos6581_device &>(device).m_read_potx.set_callback(object); }
- template<class _Object> static devcb_base &set_poty_rd_callback(device_t &device, _Object object) { return downcast<mos6581_device &>(device).m_read_poty.set_callback(object); }
+ template <class Object> static devcb_base &set_potx_rd_callback(device_t &device, Object &&cb) { return downcast<mos6581_device &>(device).m_read_potx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_poty_rd_callback(device_t &device, Object &&cb) { return downcast<mos6581_device &>(device).m_read_poty.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- enum
- {
- TYPE_6581,
- TYPE_8580
- };
-
protected:
+ mos6581_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -85,9 +86,9 @@ private:
sound_stream *m_stream;
- int m_variant;
+ int const m_variant;
- SID6581_t *m_token;
+ std::unique_ptr<SID6581_t> m_token;
};
@@ -101,8 +102,7 @@ public:
// device type definition
-extern const device_type MOS6581;
-extern const device_type MOS8580;
-
+DECLARE_DEVICE_TYPE(MOS6581, mos6581_device)
+DECLARE_DEVICE_TYPE(MOS8580, mos8580_device)
-#endif
+#endif // MAME_SOUND_MOS6581_H
diff --git a/src/devices/sound/mos7360.cpp b/src/devices/sound/mos7360.cpp
index b1ccf2264c5..37799e1830e 100644
--- a/src/devices/sound/mos7360.cpp
+++ b/src/devices/sound/mos7360.cpp
@@ -17,9 +17,6 @@
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
#define VERBOSE_LEVEL 0
#define DBG_LOG(N,M,A) \
do { \
@@ -82,8 +79,8 @@
#define FRAMECOLOR (m_reg[0x19] & 0x7f)
#define TED7360_CLOCK (m_clock / 4)
-#define TED7360_VRETRACERATE ((m_clock == TED7360PAL_CLOCK) ? TED7360PAL_VRETRACERATE : TED7360NTSC_VRETRACERATE)
-#define TED7360_LINES ((m_clock == TED7360PAL_CLOCK) ? TED7360PAL_LINES : TED7360NTSC_LINES)
+#define TED7360_VRETRACERATE ((m_clock == TED7360PAL_CLOCK) ? PAL_VRETRACERATE : NTSC_VRETRACERATE)
+#define TED7360_LINES ((m_clock == TED7360PAL_CLOCK) ? PAL_LINES : NTSC_LINES)
static const rgb_t PALETTE_MOS[] =
{
@@ -159,8 +156,17 @@ static const rgb_t PALETTE_MOS[] =
// GLOBAL VARIABLES
//**************************************************************************
+constexpr unsigned mos7360_device::NTSC_VRETRACERATE;
+constexpr unsigned mos7360_device::PAL_VRETRACERATE;
+constexpr unsigned mos7360_device::HRETRACERATE;
+constexpr unsigned mos7360_device::HSIZE;
+constexpr unsigned mos7360_device::VSIZE;
+constexpr unsigned mos7360_device::NTSC_LINES;
+constexpr unsigned mos7360_device::PAL_LINES;
+
+
// device type definition
-const device_type MOS7360 = device_creator<mos7360_device>;
+DEFINE_DEVICE_TYPE(MOS7360, mos7360_device, "mos7360", "MOS 7360 TED")
// default address maps
@@ -256,7 +262,7 @@ inline uint8_t mos7360_device::read_rom(offs_t offset)
//-------------------------------------------------
mos7360_device::mos7360_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MOS7360, "MOS7360", tag, owner, clock, "mos7360", __FILE__),
+ : device_t(mconfig, MOS7360, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_sound_interface(mconfig, *this),
device_video_interface(mconfig, *this),
diff --git a/src/devices/sound/mos7360.h b/src/devices/sound/mos7360.h
index 102110bc83e..3cdeb6fb368 100644
--- a/src/devices/sound/mos7360.h
+++ b/src/devices/sound/mos7360.h
@@ -29,10 +29,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_MOS7360_H
+#define MAME_SOUND_MOS7360_H
-#ifndef __MOS7360__
-#define __MOS7360__
+#pragma once
@@ -43,7 +43,7 @@
#define MCFG_MOS7360_ADD(_tag, _screen_tag, _cpu_tag, _clock, _videoram_map, _irq, _k) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
- MCFG_SCREEN_REFRESH_RATE(TED7360PAL_VRETRACERATE) \
+ MCFG_SCREEN_REFRESH_RATE(mos7360_device::PAL_VRETRACERATE) \
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) \
MCFG_SCREEN_SIZE(336, 216) \
MCFG_SCREEN_VISIBLE_AREA(0, 336 - 1, 0, 216 - 1) \
@@ -59,25 +59,11 @@
// MACROS / CONSTANTS
//**************************************************************************
-#define TED7360NTSC_VRETRACERATE 60
-#define TED7360PAL_VRETRACERATE 50
-#define TED7360_HRETRACERATE 15625
-
-/* the following values depend on the VIC clock,
- * but to achieve TV-frequency the clock must have a fix frequency */
-#define TED7360_HSIZE 320
-#define TED7360_VSIZE 200
-
/* of course you clock select an other clock, but for accurate */
/* video timing (these are used in c16/c116/plus4) */
#define TED7360NTSC_CLOCK (14318180/4)
#define TED7360PAL_CLOCK (17734470/5)
-/* pal 50 Hz vertical screen refresh, screen consists of 312 lines
- * ntsc 60 Hz vertical screen refresh, screen consists of 262 lines */
-#define TED7360NTSC_LINES 261
-#define TED7360PAL_LINES 312
-
/***************************************************************************
@@ -92,14 +78,28 @@ class mos7360_device : public device_t,
public device_video_interface
{
public:
+ static constexpr unsigned NTSC_VRETRACERATE = 60;
+ static constexpr unsigned PAL_VRETRACERATE = 50;
+ static constexpr unsigned HRETRACERATE = 15625;
+
+ /* the following values depend on the VIC clock,
+ * but to achieve TV-frequency the clock must have a fix frequency */
+ static constexpr unsigned HSIZE = 320;
+ static constexpr unsigned VSIZE = 200;
+
+ /* pal 50 Hz vertical screen refresh, screen consists of 312 lines
+ * ntsc 60 Hz vertical screen refresh, screen consists of 262 lines */
+ static constexpr unsigned NTSC_LINES = 261;
+ static constexpr unsigned PAL_LINES = 312;
+
// construction/destruction
//mos7360_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock);
mos7360_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _irq, class _k> void set_callbacks(const char *cpu_tag, _irq irq, _k k) {
+ template <class Irq, class K> void set_callbacks(const char *cpu_tag, Irq &&irq, K &&k) {
m_cpu_tag = cpu_tag;
- m_write_irq.set_callback(irq);
- m_read_k.set_callback(k);
+ m_write_irq.set_callback(std::forward<Irq>(irq));
+ m_read_k.set_callback(std::forward<K>(k));
}
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
@@ -197,8 +197,6 @@ protected:
// device type definition
-extern const device_type MOS7360;
-
-
+DECLARE_DEVICE_TYPE(MOS7360, mos7360_device)
-#endif
+#endif // MAME_SOUND_MOS7360_H
diff --git a/src/devices/sound/mpeg_audio.h b/src/devices/sound/mpeg_audio.h
index 57ed805a79a..4641dd9beb0 100644
--- a/src/devices/sound/mpeg_audio.h
+++ b/src/devices/sound/mpeg_audio.h
@@ -6,8 +6,10 @@
***************************************************************************/
-#ifndef __MPEG_AUDIO_H__
-#define __MPEG_AUDIO_H__
+#ifndef MAME_SOUND_MPEG_AUDIO_H
+#define MAME_SOUND_MPEG_AUDIO_H
+
+#pragma once
class mpeg_audio {
public:
@@ -125,4 +127,4 @@ private:
}
};
-#endif
+#endif // MAME_SOUND_MPEG_AUDIO_H
diff --git a/src/devices/sound/msm5205.cpp b/src/devices/sound/msm5205.cpp
index 1e34719149a..89858f040e0 100644
--- a/src/devices/sound/msm5205.cpp
+++ b/src/devices/sound/msm5205.cpp
@@ -56,17 +56,17 @@
*/
-const device_type MSM5205 = device_creator<msm5205_device>;
-const device_type MSM6585 = device_creator<msm6585_device>;
+DEFINE_DEVICE_TYPE(MSM5205, msm5205_device, "msm5205", "MSM5205")
+DEFINE_DEVICE_TYPE(MSM6585, msm6585_device, "msm6585", "MSM6585")
msm5205_device::msm5205_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : msm5205_device(mconfig, MSM5205, "MSM5205", tag, owner, clock, "msm5205", __FILE__)
+ : msm5205_device(mconfig, MSM5205, tag, owner, clock)
{
}
-msm5205_device::msm5205_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+msm5205_device::msm5205_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_s1(false),
m_s2(false),
@@ -77,7 +77,7 @@ msm5205_device::msm5205_device(const machine_config &mconfig, device_type type,
msm6585_device::msm6585_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : msm5205_device(mconfig, MSM6585, "MSM6585", tag, owner, clock, "msm6585", __FILE__)
+ : msm5205_device(mconfig, MSM6585, tag, owner, clock)
{
}
diff --git a/src/devices/sound/msm5205.h b/src/devices/sound/msm5205.h
index 156d4bfc448..e8c496b388a 100644
--- a/src/devices/sound/msm5205.h
+++ b/src/devices/sound/msm5205.h
@@ -1,54 +1,43 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
-#pragma once
+#ifndef MAME_SOUND_MSM5205_H
+#define MAME_SOUND_MSM5205_H
-#ifndef __MSM5205_H__
-#define __MSM5205_H__
+#pragma once
/* an interface for the MSM5205 and similar chips */
-/* prescaler selector defines */
-/* MSM5205 default master clock is 384KHz */
-#define MSM5205_S96_3B 0 /* prescaler 1/96(4KHz) , data 3bit */
-#define MSM5205_S48_3B 1 /* prescaler 1/48(8KHz) , data 3bit */
-#define MSM5205_S64_3B 2 /* prescaler 1/64(6KHz) , data 3bit */
-#define MSM5205_SEX_3B 3 /* VCLK slave mode , data 3bit */
-#define MSM5205_S96_4B 4 /* prescaler 1/96(4KHz) , data 4bit */
-#define MSM5205_S48_4B 5 /* prescaler 1/48(8KHz) , data 4bit */
-#define MSM5205_S64_4B 6 /* prescaler 1/64(6KHz) , data 4bit */
-#define MSM5205_SEX_4B 7 /* VCLK slave mode , data 4bit */
-
-/* MSM6585 default master clock is 640KHz */
-#define MSM6585_S160 (4+8) /* prescaler 1/160(4KHz), data 4bit */
-#define MSM6585_S40 (5+8) /* prescaler 1/40(16KHz), data 4bit */
-#define MSM6585_S80 (6+8) /* prescaler 1/80 (8KHz), data 4bit */
-#define MSM6585_S20 (7+8) /* prescaler 1/20(32KHz), data 4bit */
-
+#define MCFG_MSM5205_PRESCALER_SELECTOR(select) \
+ msm5205_device::set_prescaler_selector(*device, (msm5205_device::select));
-#define MCFG_MSM5205_PRESCALER_SELECTOR(_select) \
- msm5205_device::set_prescaler_selector(*device, _select);
+#define MCFG_MSM5205_VCLK_CB(cb) \
+ devcb = &msm5205_device::set_vclk_callback(*device, (DEVCB_##cb));
-#define MCFG_MSM5205_VCLK_CB(_devcb) \
- devcb = &msm5205_device::set_vclk_callback(*device, DEVCB_##_devcb);
+#define MCFG_MSM6585_PRESCALER_SELECTOR(select) \
+ msm6585_device::set_prescaler_selector(*device, (msm6585_device::select));
-#define MCFG_MSM6585_PRESCALER_SELECTOR(_select) \
- msm6585_device::set_prescaler_selector(*device, _select);
+#define MCFG_MSM6585_VCLK_CB(cb) \
+ devcb = &msm6585_device::set_vclk_callback(*device, (DEVCB_##cb));
-#define MCFG_MSM6585_VCLK_CB(_devcb) \
- devcb = &msm6585_device::set_vclk_callback(*device, DEVCB_##_devcb);
-
-class msm5205_device : public device_t,
- public device_sound_interface
+class msm5205_device : public device_t, public device_sound_interface
{
public:
+ /* MSM5205 default master clock is 384KHz */
+ static constexpr int S96_3B = 0; /* prescaler 1/96(4KHz) , data 3bit */
+ static constexpr int S48_3B = 1; /* prescaler 1/48(8KHz) , data 3bit */
+ static constexpr int S64_3B = 2; /* prescaler 1/64(6KHz) , data 3bit */
+ static constexpr int SEX_3B = 3; /* VCLK slave mode , data 3bit */
+ static constexpr int S96_4B = 4; /* prescaler 1/96(4KHz) , data 4bit */
+ static constexpr int S48_4B = 5; /* prescaler 1/48(8KHz) , data 4bit */
+ static constexpr int S64_4B = 6; /* prescaler 1/64(6KHz) , data 4bit */
+ static constexpr int SEX_4B = 7; /* VCLK slave mode , data 4bit */
+
msm5205_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- msm5205_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);
- ~msm5205_device() {}
static void set_prescaler_selector(device_t &device, int select);
- template<class _Object> static devcb_base &set_vclk_callback(device_t &device, _Object object) { return downcast<msm5205_device &>(device).m_vclk_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_vclk_callback(device_t &device, Object &&cb) { return downcast<msm5205_device &>(device).m_vclk_cb.set_callback(std::forward<Object>(cb)); }
// reset signal should keep for 2cycle of VCLK
DECLARE_WRITE_LINE_MEMBER(reset_w);
@@ -68,6 +57,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(s2_w);
protected:
+ msm5205_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -96,11 +87,16 @@ protected:
devcb_write_line m_vclk_cb;
};
-extern const device_type MSM5205;
class msm6585_device : public msm5205_device
{
public:
+ /* MSM6585 default master clock is 640KHz */
+ static constexpr int S160 = 4 + 8; /* prescaler 1/160(4KHz), data 4bit */
+ static constexpr int S40 = 5 + 8; /* prescaler 1/40(16KHz), data 4bit */
+ static constexpr int S80 = 6 + 8; /* prescaler 1/80 (8KHz), data 4bit */
+ static constexpr int S20 = 7 + 8; /* prescaler 1/20(32KHz), data 4bit */
+
msm6585_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
protected:
@@ -110,7 +106,8 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
};
-extern const device_type MSM6585;
+DECLARE_DEVICE_TYPE(MSM5205, msm5205_device)
+DECLARE_DEVICE_TYPE(MSM6585, msm6585_device)
-#endif /* __MSM5205_H__ */
+#endif // MAME_SOUND_MSM5205_H
diff --git a/src/devices/sound/msm5232.cpp b/src/devices/sound/msm5232.cpp
index 772bdbd01b4..fa8ef48387d 100644
--- a/src/devices/sound/msm5232.cpp
+++ b/src/devices/sound/msm5232.cpp
@@ -1,7 +1,6 @@
// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Hiromitsu Shioya
#include "emu.h"
-
#include "msm5232.h"
#define CLOCK_RATE_DIVIDER 16
@@ -11,12 +10,14 @@
8 channel tone generator
*/
-const device_type MSM5232 = device_creator<msm5232_device>;
+DEFINE_DEVICE_TYPE(MSM5232, msm5232_device, "msm5232", "MSM5232")
msm5232_device::msm5232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MSM5232, "MSM5232", tag, owner, clock, "msm5232", __FILE__),
- device_sound_interface(mconfig, *this), m_stream(nullptr), m_noise_cnt(0), m_noise_step(0), m_noise_rng(0), m_noise_clocks(0), m_UpdateStep(0), m_control1(0), m_control2(0), m_gate(0), m_chip_clock(0), m_rate(0),
- m_gate_handler_cb(*this)
+ : device_t(mconfig, MSM5232, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_noise_cnt(0), m_noise_step(0), m_noise_rng(0), m_noise_clocks(0), m_UpdateStep(0), m_control1(0), m_control2(0), m_gate(0), m_chip_clock(0), m_rate(0)
+ , m_gate_handler_cb(*this)
{
}
diff --git a/src/devices/sound/msm5232.h b/src/devices/sound/msm5232.h
index cee3fe1c09e..b650461267b 100644
--- a/src/devices/sound/msm5232.h
+++ b/src/devices/sound/msm5232.h
@@ -1,9 +1,9 @@
// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Hiromitsu Shioya
-#pragma once
+#ifndef MAME_SOUND_MSM5232_H
+#define MAME_SOUND_MSM5232_H
-#ifndef __MSM5232_H__
-#define __MSM5232_H__
+#pragma once
#define MCFG_MSM5232_SET_CAPACITORS(_a, _b, _c, _d, _e, _f, _g, _h) \
@@ -12,44 +12,15 @@
#define MCFG_MSM5232_GATE_HANDLER_CB(_devcb) \
devcb = &msm5232_device::set_gate_handler_callback(*device, DEVCB_##_devcb);
-struct VOICE {
- uint8_t mode;
-
- int TG_count_period;
- int TG_count;
-
- uint8_t TG_cnt; /* 7 bits binary counter (frequency output) */
- uint8_t TG_out16; /* bit number (of TG_cnt) for 16' output */
- uint8_t TG_out8; /* bit number (of TG_cnt) for 8' output */
- uint8_t TG_out4; /* bit number (of TG_cnt) for 4' output */
- uint8_t TG_out2; /* bit number (of TG_cnt) for 2' output */
-
- int egvol;
- int eg_sect;
- int counter;
- int eg;
-
- uint8_t eg_arm; /* attack/release mode */
-
- double ar_rate;
- double dr_rate;
- double rr_rate;
-
- int pitch; /* current pitch data */
-
- int GF;
-};
-
class msm5232_device : public device_t,
public device_sound_interface
{
public:
msm5232_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~msm5232_device() {}
static void static_set_capacitors(device_t &device, double cap1, double cap2, double cap3, double cap4, double cap5, double cap6, double cap7, double cap8);
- template<class _Object> static devcb_base &set_gate_handler_callback(device_t &device, _Object object) { return downcast<msm5232_device &>(device).m_gate_handler_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_gate_handler_callback(device_t &device, Object &&cb) { return downcast<msm5232_device &>(device).m_gate_handler_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( write );
void set_clock(int clock);
@@ -63,7 +34,35 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
- private:
+private:
+ struct VOICE {
+ uint8_t mode;
+
+ int TG_count_period;
+ int TG_count;
+
+ uint8_t TG_cnt; /* 7 bits binary counter (frequency output) */
+ uint8_t TG_out16; /* bit number (of TG_cnt) for 16' output */
+ uint8_t TG_out8; /* bit number (of TG_cnt) for 8' output */
+ uint8_t TG_out4; /* bit number (of TG_cnt) for 4' output */
+ uint8_t TG_out2; /* bit number (of TG_cnt) for 2' output */
+
+ int egvol;
+ int eg_sect;
+ int counter;
+ int eg;
+
+ uint8_t eg_arm; /* attack/release mode */
+
+ double ar_rate;
+ double dr_rate;
+ double rr_rate;
+
+ int pitch; /* current pitch data */
+
+ int GF;
+ };
+
// internal state
sound_stream *m_stream;
@@ -105,7 +104,6 @@ protected:
void postload();
};
-extern const device_type MSM5232;
-
+DECLARE_DEVICE_TYPE(MSM5232, msm5232_device)
-#endif /* __MSM5232_H__ */
+#endif // MAME_SOUND_MSM5232_H
diff --git a/src/devices/sound/multipcm.cpp b/src/devices/sound/multipcm.cpp
index 31ffb2705d8..7f9205bd0d5 100644
--- a/src/devices/sound/multipcm.cpp
+++ b/src/devices/sound/multipcm.cpp
@@ -71,8 +71,8 @@ const int32_t multipcm_device::VALUE_TO_CHANNEL[32] =
21,22,23,24,25,26,27, -1,
};
-const uint32_t multipcm_device::TL_SHIFT = 12;
-const uint32_t multipcm_device::EG_SHIFT = 16;
+constexpr uint32_t multipcm_device::TL_SHIFT;
+constexpr uint32_t multipcm_device::EG_SHIFT;
void multipcm_device::init_sample(sample_t *sample, uint32_t index)
{
@@ -187,7 +187,7 @@ void multipcm_device::envelope_generator_calc(slot_t *slot)
LFO SECTION
*****************************/
-const uint32_t multipcm_device::LFO_SHIFT = 8;
+constexpr uint32_t multipcm_device::LFO_SHIFT;
const float multipcm_device::LFO_FREQ[8] = // In Hertz
{
@@ -284,8 +284,8 @@ void multipcm_device::lfo_init()
uint32_t multipcm_device::value_to_fixed(const uint32_t bits, const float value)
{
- const float float_shift = (float)(1 << bits);
- return (uint32_t)(float_shift * value);
+ const float float_shift = float(1 << bits);
+ return uint32_t(float_shift * value);
}
int32_t multipcm_device::pitch_lfo_step(lfo_t *lfo)
@@ -307,7 +307,7 @@ int32_t multipcm_device::amplitude_lfo_step(lfo_t *lfo)
void multipcm_device::lfo_compute_step(lfo_t *lfo, uint32_t lfo_frequency, uint32_t lfo_scale, int32_t amplitude_lfo)
{
float step = (float)LFO_FREQ[lfo_frequency] * 256.0f / (float)m_rate;
- lfo->m_phase_step = (uint32_t)((float)(1 << LFO_SHIFT) * step);
+ lfo->m_phase_step = uint32_t(float(1 << LFO_SHIFT) * step);
if (amplitude_lfo)
{
lfo->m_table = m_amplitude_table;
@@ -464,10 +464,10 @@ void multipcm_device::set_bank(uint32_t leftoffs, uint32_t rightoffs)
printf("%08x, %08x\n", leftoffs, rightoffs);
}
-const device_type MULTIPCM = device_creator<multipcm_device>;
+DEFINE_DEVICE_TYPE(MULTIPCM, multipcm_device, "multipcm", "Sega/Yamaha 315-5560 MultiPCM")
multipcm_device::multipcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MULTIPCM, "Sega/Yamaha 315-5560", tag, owner, clock, "multipcm", __FILE__),
+ : device_t(mconfig, MULTIPCM, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_rom_interface(mconfig, *this, 24),
m_stream(nullptr),
diff --git a/src/devices/sound/multipcm.h b/src/devices/sound/multipcm.h
index 333e50b32bc..c3f9c6c9aaa 100644
--- a/src/devices/sound/multipcm.h
+++ b/src/devices/sound/multipcm.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Miguel Angel Horna
-#pragma once
+#ifndef MAME_SOUND_MULTIPCM_H
+#define MAME_SOUND_MULTIPCM_H
-#ifndef __MULTIPCM_H__
-#define __MULTIPCM_H__
+#pragma once
class multipcm_device : public device_t,
public device_sound_interface,
@@ -11,7 +11,6 @@ class multipcm_device : public device_t,
{
public:
multipcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~multipcm_device() {}
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( read );
@@ -134,20 +133,19 @@ private:
int16_t clamp_to_int16(int32_t value);
- static const uint32_t TL_SHIFT;
+ static constexpr uint32_t TL_SHIFT = 12;
static const int32_t VALUE_TO_CHANNEL[32];
- static const uint32_t EG_SHIFT;
+ static constexpr uint32_t EG_SHIFT = 16;
static const double BASE_TIMES[64];
- static const uint32_t LFO_SHIFT;
+ static constexpr uint32_t LFO_SHIFT = 8;
static const float LFO_FREQ[8];
static const float PHASE_SCALE_LIMIT[8];
static const float AMPLITUDE_SCALE_LIMIT[8];
};
-extern const device_type MULTIPCM;
-
+DECLARE_DEVICE_TYPE(MULTIPCM, multipcm_device)
-#endif /* __MULTIPCM_H__ */
+#endif // MAME_SOUND_MULTIPCM_H
diff --git a/src/devices/sound/n63701x.cpp b/src/devices/sound/n63701x.cpp
index dda616698d3..fae1ff01edd 100644
--- a/src/devices/sound/n63701x.cpp
+++ b/src/devices/sound/n63701x.cpp
@@ -29,13 +29,13 @@ static const int vol_table[4] = { 26, 84, 200, 258 };
// device type definition
-const device_type NAMCO_63701X = device_creator<namco_63701x_device>;
+DEFINE_DEVICE_TYPE(NAMCO_63701X, namco_63701x_device, "namco_63701x", "Namco 63701X")
namco_63701x_device::namco_63701x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NAMCO_63701X, "Namco 63701X", tag, owner, clock, "namco_63701x", __FILE__),
- device_sound_interface(mconfig, *this),
- m_rom(*this, DEVICE_SELF),
- m_stream(nullptr)
+ : device_t(mconfig, NAMCO_63701X, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_rom(*this, DEVICE_SELF)
+ , m_stream(nullptr)
{
}
diff --git a/src/devices/sound/n63701x.h b/src/devices/sound/n63701x.h
index 335bd4f387d..50046252a53 100644
--- a/src/devices/sound/n63701x.h
+++ b/src/devices/sound/n63701x.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Nicola Salmoria
-#pragma once
+#ifndef MAME_SOUND_N63701X_H
+#define MAME_SOUND_N63701X_H
-#ifndef __N63701X_H__
-#define __N63701X_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -19,24 +19,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-struct voice_63701x
-{
- voice_63701x()
- : select(0),
- playing(0),
- base_addr(0),
- position(0),
- volume(0),
- silence_counter(0) {}
-
- int select;
- int playing;
- int base_addr;
- int position;
- int volume;
- int silence_counter;
-};
-
// ======================> namco_63701x_device
@@ -45,7 +27,8 @@ class namco_63701x_device : public device_t,
{
public:
namco_63701x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~namco_63701x_device() { }
+
+ DECLARE_WRITE8_MEMBER(namco_63701x_w);
protected:
// device-level overrides
@@ -54,16 +37,24 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_WRITE8_MEMBER(namco_63701x_w);
-
private:
+ struct voice_63701x
+ {
+ voice_63701x() { }
+
+ int select = 0;
+ int playing = 0;
+ int base_addr = 0;
+ int position = 0;
+ int volume = 0;
+ int silence_counter = 0;
+ };
+
required_region_ptr<uint8_t> m_rom;
voice_63701x m_voices[2];
sound_stream *m_stream; /* channel assigned by the mixer */
};
-extern const device_type NAMCO_63701X;
-
+DECLARE_DEVICE_TYPE(NAMCO_63701X, namco_63701x_device)
-#endif /* __N63701X_H__ */
+#endif // MAME_SOUND_N63701X_H
diff --git a/src/devices/sound/namco.cpp b/src/devices/sound/namco.cpp
index cd2ab748555..42427ad4573 100644
--- a/src/devices/sound/namco.cpp
+++ b/src/devices/sound/namco.cpp
@@ -43,12 +43,12 @@
/* a position of waveform sample */
#define WAVEFORM_POSITION(n) (((n) >> m_f_fracbits) & 0x1f)
-const device_type NAMCO = device_creator<namco_device>;
-const device_type NAMCO_15XX = device_creator<namco_15xx_device>;
-const device_type NAMCO_CUS30 = device_creator<namco_cus30_device>;
+DEFINE_DEVICE_TYPE(NAMCO, namco_device, "namco", "Namco")
+DEFINE_DEVICE_TYPE(NAMCO_15XX, namco_15xx_device, "namco_15xx", "Namco 15xx")
+DEFINE_DEVICE_TYPE(NAMCO_CUS30, namco_cus30_device, "namco_cus30", "Namco CUS30")
-namco_audio_device::namco_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+namco_audio_device::namco_audio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_sound_interface(mconfig, *this)
, m_wave_ptr(*this, DEVICE_SELF)
, m_last_channel(nullptr)
@@ -66,17 +66,17 @@ namco_audio_device::namco_audio_device(const machine_config &mconfig, device_typ
}
namco_device::namco_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : namco_audio_device(mconfig, NAMCO, "Namco", tag, owner, clock, "namco", __FILE__)
+ : namco_audio_device(mconfig, NAMCO, tag, owner, clock)
{
}
namco_15xx_device::namco_15xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- :namco_audio_device(mconfig, NAMCO_15XX, "Namco 15XX", tag, owner, clock, "namco_15xx", __FILE__)
+ :namco_audio_device(mconfig, NAMCO_15XX, tag, owner, clock)
{
}
namco_cus30_device::namco_cus30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : namco_audio_device(mconfig, NAMCO_CUS30, "Namco CUS30", tag, owner, clock, "namco_cus30", __FILE__)
+ : namco_audio_device(mconfig, NAMCO_CUS30, tag, owner, clock)
{
}
diff --git a/src/devices/sound/namco.h b/src/devices/sound/namco.h
index ab9347021c2..0bb8a614300 100644
--- a/src/devices/sound/namco.h
+++ b/src/devices/sound/namco.h
@@ -1,14 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Nicola Salmoria,Aaron Giles
-#pragma once
-
-#ifndef __NAMCO_H__
-#define __NAMCO_H__
-
-/* 8 voices max */
-#define MAX_VOICES 8
+#ifndef MAME_SOUND_NAMCO_H
+#define MAME_SOUND_NAMCO_H
-#define MAX_VOLUME 16
+#pragma once
#define MCFG_NAMCO_AUDIO_VOICES(_voices) \
@@ -18,32 +13,34 @@
namco_audio_device::set_stereo(*device, _stereo);
-/* this structure defines the parameters for a channel */
-struct sound_channel
-{
- uint32_t frequency;
- uint32_t counter;
- int32_t volume[2];
- int32_t noise_sw;
- int32_t noise_state;
- int32_t noise_seed;
- uint32_t noise_counter;
- int32_t noise_hold;
- int32_t waveform_select;
-};
-
class namco_audio_device : public device_t,
public device_sound_interface
{
public:
- namco_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- ~namco_audio_device() {}
-
// static configuration
static void set_voices(device_t &device, int voices) { downcast<namco_audio_device &>(device).m_voices = voices; }
static void set_stereo(device_t &device, int stereo) { downcast<namco_audio_device &>(device).m_stereo = stereo; }
protected:
+ static constexpr unsigned MAX_VOICES = 8;
+ static constexpr unsigned MAX_VOLUME = 16;
+
+ /* this structure defines the parameters for a channel */
+ struct sound_channel
+ {
+ uint32_t frequency;
+ uint32_t counter;
+ int32_t volume[2];
+ int32_t noise_sw;
+ int32_t noise_state;
+ int32_t noise_seed;
+ uint32_t noise_counter;
+ int32_t noise_hold;
+ int32_t waveform_select;
+ };
+
+ namco_audio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
@@ -96,7 +93,6 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
};
-extern const device_type NAMCO;
class namco_15xx_device : public namco_audio_device
{
@@ -113,7 +109,6 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
};
-extern const device_type NAMCO_15XX;
class namco_cus30_device : public namco_audio_device
{
@@ -130,6 +125,9 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
};
-extern const device_type NAMCO_CUS30;
-#endif /* __NAMCO_H__ */
+DECLARE_DEVICE_TYPE(NAMCO, namco_device)
+DECLARE_DEVICE_TYPE(NAMCO_15XX, namco_15xx_device)
+DECLARE_DEVICE_TYPE(NAMCO_CUS30, namco_cus30_device)
+
+#endif // MAME_SOUND_NAMCO_H
diff --git a/src/devices/sound/nes_apu.cpp b/src/devices/sound/nes_apu.cpp
index d2b6a98b900..5d95163846a 100644
--- a/src/devices/sound/nes_apu.cpp
+++ b/src/devices/sound/nes_apu.cpp
@@ -57,7 +57,7 @@
/* INTERNAL FUNCTIONS */
/* INITIALIZE WAVE TIMES RELATIVE TO SAMPLE RATE */
-static void create_vbltimes(uint32 * table,const uint8 *vbl,unsigned int rate)
+static void create_vbltimes(u32 * table,const u8 *vbl,unsigned int rate)
{
int i;
@@ -87,7 +87,7 @@ void nesapu_device::create_syncs(unsigned long sps)
}
/* INITIALIZE NOISE LOOKUP TABLE */
-static void create_noise(uint8 *buf, const int bits, int size)
+static void create_noise(u8 *buf, const int bits, int size)
{
int m = 0x0011;
int xor_val, i;
@@ -103,10 +103,10 @@ static void create_noise(uint8 *buf, const int bits, int size)
}
}
-const device_type NES_APU = device_creator<nesapu_device>;
+DEFINE_DEVICE_TYPE(NES_APU, nesapu_device, "nesapu", "N2A03 APU")
-nesapu_device::nesapu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NES_APU, "N2A03 APU", tag, owner, clock, "nesapu", __FILE__),
+nesapu_device::nesapu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, NES_APU, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_apu_incsize(0.0),
m_samps_per_sync(0),
@@ -156,7 +156,7 @@ void nesapu_device::calculate_rates()
m_real_rate = m_samps_per_sync * screen_device::DEFAULT_FRAME_RATE;
}
m_buffer_size = m_samps_per_sync;
- m_apu_incsize = (float) (clock() / (float) m_real_rate);
+ m_apu_incsize = float(clock() / (float) m_real_rate);
create_vbltimes(m_vbl_times,vbl_length,m_samps_per_sync);
create_syncs(m_samps_per_sync);
@@ -176,7 +176,7 @@ void nesapu_device::calculate_rates()
void nesapu_device::device_start()
{
- create_noise(m_noise_lut, 13, NOISE_LONG);
+ create_noise(m_noise_lut, 13, apu_t::NOISE_LONG);
(m_APU.dpcm).memory = &downcast<n2a03_device &>(*owner()).space(AS_PROGRAM);
@@ -242,11 +242,11 @@ void nesapu_device::device_start()
/* TODO: sound channels should *ALL* have DC volume decay */
/* OUTPUT SQUARE WAVE SAMPLE (VALUES FROM -16 to +15) */
-int8 nesapu_device::apu_square(square_t *chan)
+s8 nesapu_device::apu_square(apu_t::square_t *chan)
{
int env_delay;
int sweep_delay;
- int8 output;
+ s8 output;
/* reg0: 0-3=volume, 4=envelope, 5=hold, 6-7=duty cycle
** reg1: 0-2=sweep shifts, 3=sweep inc/dec, 4-6=sweep length, 7=sweep on
@@ -313,14 +313,14 @@ int8 nesapu_device::apu_square(square_t *chan)
if (chan->adder < (duty_lut[chan->regs[0] >> 6]))
output = -output;
- return (int8) output;
+ return (s8) output;
}
/* OUTPUT TRIANGLE WAVE SAMPLE (VALUES FROM -16 to +15) */
-int8 nesapu_device::apu_triangle(triangle_t *chan)
+s8 nesapu_device::apu_triangle(apu_t::triangle_t *chan)
{
int freq;
- int8 output;
+ s8 output;
/* reg0: 7=holdnote, 6-0=linear length counter
** reg2: low 8 bits of frequency
** reg3: 7-3=length counter, 2-0=high 3 bits of frequency
@@ -371,15 +371,15 @@ int8 nesapu_device::apu_triangle(triangle_t *chan)
chan->output_vol = output;
}
- return (int8) chan->output_vol;
+ return (s8) chan->output_vol;
}
/* OUTPUT NOISE WAVE SAMPLE (VALUES FROM -16 to +15) */
-int8 nesapu_device::apu_noise(noise_t *chan)
+s8 nesapu_device::apu_noise(apu_t::noise_t *chan)
{
int freq, env_delay;
- uint8 outvol;
- uint8 output;
+ u8 outvol;
+ u8 output;
/* reg0: 0-3=volume, 4=envelope, 5=hold
** reg2: 7=small(93 byte) sample,3-0=freq lookup
@@ -420,9 +420,9 @@ int8 nesapu_device::apu_noise(noise_t *chan)
chan->phaseacc += freq;
chan->cur_pos++;
- if (NOISE_SHORT == chan->cur_pos && (chan->regs[2] & 0x80))
+ if (apu_t::NOISE_SHORT == chan->cur_pos && (chan->regs[2] & 0x80))
chan->cur_pos = 0;
- else if (NOISE_LONG == chan->cur_pos)
+ else if (apu_t::NOISE_LONG == chan->cur_pos)
chan->cur_pos = 0;
}
@@ -438,14 +438,14 @@ int8 nesapu_device::apu_noise(noise_t *chan)
if (m_noise_lut[chan->cur_pos] & 0x80) /* make it negative */
output = -output;
- return (int8) output;
+ return (s8) output;
}
/* RESET DPCM PARAMETERS */
-static inline void apu_dpcmreset(dpcm_t *chan)
+static inline void apu_dpcmreset(apu_t::dpcm_t *chan)
{
- chan->address = 0xC000 + (uint16) (chan->regs[2] << 6);
- chan->length = (uint16) (chan->regs[3] << 4) + 1;
+ chan->address = 0xC000 + u16(chan->regs[2] << 6);
+ chan->length = u16(chan->regs[3] << 4) + 1;
chan->bits_left = chan->length << 3;
chan->irq_occurred = false;
chan->enabled = true; /* Fixed * Proper DPCM channel ENABLE/DISABLE flag behaviour*/
@@ -454,7 +454,7 @@ static inline void apu_dpcmreset(dpcm_t *chan)
/* OUTPUT DPCM WAVE SAMPLE (VALUES FROM -64 to +63) */
/* TODO: centerline naughtiness */
-int8 nesapu_device::apu_dpcm(dpcm_t *chan)
+s8 nesapu_device::apu_dpcm(apu_t::dpcm_t *chan)
{
int freq, bit_pos;
@@ -514,36 +514,36 @@ int8 nesapu_device::apu_dpcm(dpcm_t *chan)
else if (chan->vol < -64)
chan->vol = -64;
- return (int8) (chan->vol);
+ return (s8) (chan->vol);
}
/* WRITE REGISTER VALUE */
-inline void nesapu_device::apu_regwrite(int address, uint8 value)
+inline void nesapu_device::apu_regwrite(int address, u8 value)
{
int chan = (address & 4) ? 1 : 0;
switch (address)
{
/* squares */
- case APU_WRA0:
- case APU_WRB0:
+ case apu_t::WRA0:
+ case apu_t::WRB0:
m_APU.squ[chan].regs[0] = value;
break;
- case APU_WRA1:
- case APU_WRB1:
+ case apu_t::WRA1:
+ case apu_t::WRB1:
m_APU.squ[chan].regs[1] = value;
break;
- case APU_WRA2:
- case APU_WRB2:
+ case apu_t::WRA2:
+ case apu_t::WRB2:
m_APU.squ[chan].regs[2] = value;
if (m_APU.squ[chan].enabled)
m_APU.squ[chan].freq = ((((m_APU.squ[chan].regs[3] & 7) << 8) + value) + 1) << 16;
break;
- case APU_WRA3:
- case APU_WRB3:
+ case apu_t::WRA3:
+ case apu_t::WRB3:
m_APU.squ[chan].regs[3] = value;
if (m_APU.squ[chan].enabled)
@@ -556,7 +556,7 @@ inline void nesapu_device::apu_regwrite(int address, uint8 value)
break;
/* triangle */
- case APU_WRC0:
+ case apu_t::WRC0:
m_APU.tri.regs[0] = value;
if (m_APU.tri.enabled)
@@ -572,11 +572,11 @@ inline void nesapu_device::apu_regwrite(int address, uint8 value)
m_APU.tri.regs[1] = value;
break;
- case APU_WRC2:
+ case apu_t::WRC2:
m_APU.tri.regs[2] = value;
break;
- case APU_WRC3:
+ case apu_t::WRC3:
m_APU.tri.regs[3] = value;
/* this is somewhat of a hack. there is some latency on the Real
@@ -607,7 +607,7 @@ inline void nesapu_device::apu_regwrite(int address, uint8 value)
break;
/* noise */
- case APU_WRD0:
+ case apu_t::WRD0:
m_APU.noi.regs[0] = value;
break;
@@ -616,11 +616,11 @@ inline void nesapu_device::apu_regwrite(int address, uint8 value)
m_APU.noi.regs[1] = value;
break;
- case APU_WRD2:
+ case apu_t::WRD2:
m_APU.noi.regs[2] = value;
break;
- case APU_WRD3:
+ case apu_t::WRD3:
m_APU.noi.regs[3] = value;
if (m_APU.noi.enabled)
@@ -631,7 +631,7 @@ inline void nesapu_device::apu_regwrite(int address, uint8 value)
break;
/* DMC */
- case APU_WRE0:
+ case apu_t::WRE0:
m_APU.dpcm.regs[0] = value;
if (0 == (value & 0x80)) {
downcast<n2a03_device &>(m_APU.dpcm.memory->device()).set_input_line(N2A03_APU_IRQ_LINE, CLEAR_LINE);
@@ -639,29 +639,29 @@ inline void nesapu_device::apu_regwrite(int address, uint8 value)
}
break;
- case APU_WRE1: /* 7-bit DAC */
+ case apu_t::WRE1: /* 7-bit DAC */
//m_APU.dpcm.regs[1] = value - 0x40;
m_APU.dpcm.regs[1] = value & 0x7F;
m_APU.dpcm.vol = (m_APU.dpcm.regs[1]-64);
break;
- case APU_WRE2:
+ case apu_t::WRE2:
m_APU.dpcm.regs[2] = value;
//apu_dpcmreset(m_APU.dpcm);
break;
- case APU_WRE3:
+ case apu_t::WRE3:
m_APU.dpcm.regs[3] = value;
break;
- case APU_IRQCTRL:
+ case apu_t::IRQCTRL:
if(value & 0x80)
m_APU.step_mode = 5;
else
m_APU.step_mode = 4;
break;
- case APU_SMASK:
+ case apu_t::SMASK:
if (value & 0x01)
m_APU.squ[0].enabled = true;
else
@@ -723,7 +723,7 @@ logerror("invalid apu write: $%02X at $%04X\n", value, address);
/* READ VALUES FROM REGISTERS */
-inline uint8 nesapu_device::apu_read(int address)
+inline u8 nesapu_device::apu_read(int address)
{
if (address == 0x15) /*FIXED* Address $4015 has different behaviour*/
{
@@ -753,7 +753,7 @@ inline uint8 nesapu_device::apu_read(int address)
}
/* WRITE VALUE TO TEMP REGISTRY AND QUEUE EVENT */
-inline void nesapu_device::apu_write(int address, uint8 value)
+inline void nesapu_device::apu_write(int address, u8 value)
{
m_APU.regs[address]=value;
m_stream->update();
diff --git a/src/devices/sound/nes_apu.h b/src/devices/sound/nes_apu.h
index 067f98deffd..473aa7e4c68 100644
--- a/src/devices/sound/nes_apu.h
+++ b/src/devices/sound/nes_apu.h
@@ -23,11 +23,13 @@
*****************************************************************************/
+#ifndef MAME_SOUND_NES_APU_H
+#define MAME_SOUND_NES_APU_H
+
#pragma once
-#ifndef __NES_APU_H__
-#define __NES_APU_H__
+#include "nes_defs.h"
/* AN EXPLANATION
*
@@ -37,18 +39,10 @@
* processor, as each is shared.
*/
-#include "nes_defs.h"
-
-/* GLOBAL CONSTANTS */
-#define SYNCS_MAX1 0x20
-#define SYNCS_MAX2 0x80
-
-class nesapu_device : public device_t,
- public device_sound_interface
+class nesapu_device : public device_t, public device_sound_interface
{
public:
- nesapu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~nesapu_device() {}
+ nesapu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
virtual void device_clock_changed() override;
@@ -63,29 +57,33 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ /* GLOBAL CONSTANTS */
+ static constexpr unsigned SYNCS_MAX1 = 0x20;
+ static constexpr unsigned SYNCS_MAX2 = 0x80;
+
// internal state
apu_t m_APU; /* Actual APUs */
float m_apu_incsize; /* Adjustment increment */
- uint32 m_samps_per_sync; /* Number of samples per vsync */
- uint32 m_buffer_size; /* Actual buffer size in bytes */
- uint32 m_real_rate; /* Actual playback rate */
- uint8 m_noise_lut[NOISE_LONG]; /* Noise sample lookup table */
- uint32 m_vbl_times[0x20]; /* VBL durations in samples */
- uint32 m_sync_times1[SYNCS_MAX1]; /* Samples per sync table */
- uint32 m_sync_times2[SYNCS_MAX2]; /* Samples per sync table */
+ u32 m_samps_per_sync; /* Number of samples per vsync */
+ u32 m_buffer_size; /* Actual buffer size in bytes */
+ u32 m_real_rate; /* Actual playback rate */
+ u8 m_noise_lut[apu_t::NOISE_LONG]; /* Noise sample lookup table */
+ u32 m_vbl_times[0x20]; /* VBL durations in samples */
+ u32 m_sync_times1[SYNCS_MAX1]; /* Samples per sync table */
+ u32 m_sync_times2[SYNCS_MAX2]; /* Samples per sync table */
sound_stream *m_stream;
void calculate_rates();
void create_syncs(unsigned long sps);
- int8 apu_square(square_t *chan);
- int8 apu_triangle(triangle_t *chan);
- int8 apu_noise(noise_t *chan);
- int8 apu_dpcm(dpcm_t *chan);
- inline void apu_regwrite(int address, uint8 value);
- inline uint8 apu_read(int address);
- inline void apu_write(int address, uint8 value);
+ s8 apu_square(apu_t::square_t *chan);
+ s8 apu_triangle(apu_t::triangle_t *chan);
+ s8 apu_noise(apu_t::noise_t *chan);
+ s8 apu_dpcm(apu_t::dpcm_t *chan);
+ inline void apu_regwrite(int address, u8 value);
+ inline u8 apu_read(int address);
+ inline void apu_write(int address, u8 value);
};
-extern const device_type NES_APU;
+DECLARE_DEVICE_TYPE(NES_APU, nesapu_device)
-#endif /* __NES_APU_H__ */
+#endif // MAME_SOUND_NES_APU_H
diff --git a/src/devices/sound/nes_defs.h b/src/devices/sound/nes_defs.h
index 29a9de4c016..da538740c65 100644
--- a/src/devices/sound/nes_defs.h
+++ b/src/devices/sound/nes_defs.h
@@ -23,199 +23,139 @@
*****************************************************************************/
-#pragma once
-
-#ifndef __NES_DEFS_H__
-#define __NES_DEFS_H__
-
-/* REGULAR TYPE DEFINITIONS */
-typedef int8_t int8;
-typedef int16_t int16;
-typedef int32_t int32;
-typedef uint8_t uint8;
-typedef uint16_t uint16;
-typedef uint32_t uint32;
+#ifndef MAME_SOUND_NES_DEFS_H
+#define MAME_SOUND_NES_DEFS_H
+#pragma once
-/* QUEUE TYPES */
-#ifdef USE_QUEUE
-
-#define QUEUE_SIZE 0x2000
-#define QUEUE_MAX (QUEUE_SIZE-1)
-struct queue_t
+/* APU type */
+struct apu_t
{
- queue_t():
- pos(0),
- reg(""),val("") {}
+ /* REGULAR TYPE DEFINITIONS */
+ typedef int8_t int8;
+ typedef int16_t int16;
+ typedef int32_t int32;
+ typedef uint8_t uint8;
+ typedef uint16_t uint16;
+ typedef uint32_t uint32;
- int pos;
- unsigned char reg, val;
-};
-#endif
+ /* CHANNEL TYPE DEFINITIONS */
-/* REGISTER DEFINITIONS */
-#define APU_WRA0 0x00
-#define APU_WRA1 0x01
-#define APU_WRA2 0x02
-#define APU_WRA3 0x03
-#define APU_WRB0 0x04
-#define APU_WRB1 0x05
-#define APU_WRB2 0x06
-#define APU_WRB3 0x07
-#define APU_WRC0 0x08
-#define APU_WRC2 0x0A
-#define APU_WRC3 0x0B
-#define APU_WRD0 0x0C
-#define APU_WRD2 0x0E
-#define APU_WRD3 0x0F
-#define APU_WRE0 0x10
-#define APU_WRE1 0x11
-#define APU_WRE2 0x12
-#define APU_WRE3 0x13
-#define APU_SMASK 0x15
-#define APU_IRQCTRL 0x17
-
-#define NOISE_LONG 0x4000
-#define NOISE_SHORT 93
-
-/* CHANNEL TYPE DEFINITIONS */
-
-/* Square Wave */
-struct square_t
-{
+ /* Square Wave */
+ struct square_t
+ {
square_t()
{
for (auto & elem : regs)
- {
elem = 0;
- }
- vbl_length =0;
- freq = 0;
- phaseacc = 0.0;
- output_vol = 0.0;
- env_phase = 0.0;
- sweep_phase = 0.0;
- adder = 0;
- env_vol = 0;
- enabled = false;
}
- uint8 regs[4];
- int vbl_length;
- int freq;
- float phaseacc;
- float output_vol;
- float env_phase;
- float sweep_phase;
- uint8 adder;
- uint8 env_vol;
- bool enabled;
-};
-
-/* Triangle Wave */
-struct triangle_t
-{
+ uint8 regs[4];
+ int vbl_length = 0;
+ int freq = 0;
+ float phaseacc = 0.0;
+ float output_vol = 0.0;
+ float env_phase = 0.0;
+ float sweep_phase = 0.0;
+ uint8 adder = 0;
+ uint8 env_vol = 0;
+ bool enabled = false;
+ };
+
+ /* Triangle Wave */
+ struct triangle_t
+ {
triangle_t()
{
for (auto & elem : regs)
- {
elem = 0;
- }
- linear_length =0;
- vbl_length =0;
- write_latency = 0;
- phaseacc = 0.0;
- output_vol = 0.0;
- adder = 0;
- counter_started = false;
- enabled = false;
}
- uint8 regs[4]; /* regs[1] unused */
- int linear_length;
- int vbl_length;
- int write_latency;
- float phaseacc;
- float output_vol;
- uint8 adder;
- bool counter_started;
- bool enabled;
-};
-
-/* Noise Wave */
-struct noise_t
-{
+ uint8 regs[4]; /* regs[1] unused */
+ int linear_length = 0;
+ int vbl_length = 0;
+ int write_latency = 0;
+ float phaseacc = 0.0;
+ float output_vol = 0.0;
+ uint8 adder = 0;
+ bool counter_started = false;
+ bool enabled = false;
+ };
+
+ /* Noise Wave */
+ struct noise_t
+ {
noise_t()
{
for (auto & elem : regs)
- {
elem = 0;
- }
- cur_pos =0;
- vbl_length =0;
- phaseacc = 0.0;
- output_vol = 0.0;
- env_phase = 0.0;
- env_vol = 0;
- enabled = false;
}
- uint8 regs[4]; /* regs[1] unused */
- int cur_pos;
- int vbl_length;
- float phaseacc;
- float output_vol;
- float env_phase;
- uint8 env_vol;
- bool enabled;
-};
-
-/* DPCM Wave */
-struct dpcm_t
-{
+ uint8 regs[4]; /* regs[1] unused */
+ int cur_pos = 0;
+ int vbl_length = 0;
+ float phaseacc = 0.0;
+ float output_vol = 0.0;
+ float env_phase = 0.0;
+ uint8 env_vol = 0;
+ bool enabled = false;
+ };
+
+ /* DPCM Wave */
+ struct dpcm_t
+ {
dpcm_t()
{
- for (auto & elem : regs)
- {
- elem = 0;
- }
- address = 0;
- length = 0;
- bits_left = 0;
- phaseacc = 0.0;
- output_vol = 0.0;
- cur_byte = 0;
- enabled = false;
- irq_occurred = false;
- memory = nullptr;
- vol = 0;
+ for (auto & elem : regs)
+ elem = 0;
}
- uint8 regs[4];
- uint32 address;
- uint32 length;
- int bits_left;
- float phaseacc;
- float output_vol;
- uint8 cur_byte;
- bool enabled;
- bool irq_occurred;
- address_space *memory;
- signed char vol;
-};
-
-/* APU type */
-struct apu_t
-{
- apu_t()
- {
+ uint8 regs[4];
+ uint32 address = 0;
+ uint32 length = 0;
+ int bits_left = 0;
+ float phaseacc = 0.0;
+ float output_vol = 0.0;
+ uint8 cur_byte = 0;
+ bool enabled = false;
+ bool irq_occurred = false;
+ address_space *memory = nullptr;
+ signed char vol = 0;
+ };
+
+
+ /* REGISTER DEFINITIONS */
+ static constexpr unsigned WRA0 = 0x00;
+ static constexpr unsigned WRA1 = 0x01;
+ static constexpr unsigned WRA2 = 0x02;
+ static constexpr unsigned WRA3 = 0x03;
+ static constexpr unsigned WRB0 = 0x04;
+ static constexpr unsigned WRB1 = 0x05;
+ static constexpr unsigned WRB2 = 0x06;
+ static constexpr unsigned WRB3 = 0x07;
+ static constexpr unsigned WRC0 = 0x08;
+ static constexpr unsigned WRC2 = 0x0A;
+ static constexpr unsigned WRC3 = 0x0B;
+ static constexpr unsigned WRD0 = 0x0C;
+ static constexpr unsigned WRD2 = 0x0E;
+ static constexpr unsigned WRD3 = 0x0F;
+ static constexpr unsigned WRE0 = 0x10;
+ static constexpr unsigned WRE1 = 0x11;
+ static constexpr unsigned WRE2 = 0x12;
+ static constexpr unsigned WRE3 = 0x13;
+ static constexpr unsigned SMASK = 0x15;
+ static constexpr unsigned IRQCTRL = 0x17;
+
+ static constexpr unsigned NOISE_LONG = 0x4000;
+ static constexpr unsigned NOISE_SHORT = 93;
+
+
+ apu_t()
+ {
memset(regs, 0, sizeof(regs));
- buffer = nullptr;
- buf_pos = 0;
- step_mode = 0;
- }
+ }
/* Sound channels */
square_t squ[2];
@@ -227,27 +167,38 @@ struct apu_t
unsigned char regs[0x18];
/* Sound pointers */
- void *buffer;
+ void *buffer = nullptr;
#ifdef USE_QUEUE
+ static constexpr unsigned QUEUE_SIZE = 0x2000;
+ static constexpr unsigned QUEUE_MAX = QUEUE_SIZE - 1;
+
+ struct queue_t
+ {
+ queue_t() { }
+
+ int pos = 0;
+ unsigned char reg = 0, val = 0;
+ };
+
/* Event queue */
queue_t queue[QUEUE_SIZE];
int head, tail;
#else
- int buf_pos;
+ int buf_pos = 0;
#endif
- int step_mode;
+ int step_mode = 0;
};
/* CONSTANTS */
/* vblank length table used for squares, triangle, noise */
-static const uint8 vbl_length[32] =
+static const apu_t::uint8 vbl_length[32] =
{
5, 127, 10, 1, 19, 2, 40, 3, 80, 4, 30, 5, 7, 6, 13, 7,
6, 8, 12, 9, 24, 10, 48, 11, 96, 12, 36, 13, 8, 14, 16, 15
@@ -278,4 +229,4 @@ static const int duty_lut[4] =
2, 4, 8, 12
};
-#endif /* __NES_DEFS_H__ */
+#endif // MAME_SOUND_NES_DEFS_H
diff --git a/src/devices/sound/nile.cpp b/src/devices/sound/nile.cpp
index 34b907fe686..2e28d2e4fac 100644
--- a/src/devices/sound/nile.cpp
+++ b/src/devices/sound/nile.cpp
@@ -50,10 +50,10 @@ enum
};
-const device_type NILE = device_creator<nile_device>;
+DEFINE_DEVICE_TYPE(NILE, nile_device, "nile", "Seta ST-0026 NiLe")
nile_device::nile_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, NILE, "NiLe", tag, owner, clock, "nile", __FILE__),
+ : device_t(mconfig, NILE, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_sound_ram(*this, DEVICE_SELF),
diff --git a/src/devices/sound/nile.h b/src/devices/sound/nile.h
index 20a4f6140a1..fdfead14ead 100644
--- a/src/devices/sound/nile.h
+++ b/src/devices/sound/nile.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Tomasz Slanina
-#pragma once
+#ifndef MAME_SOUND_NILE_H
+#define MAME_SOUND_NILE_H
-#ifndef __NILE_H__
-#define __NILE_H__
+#pragma once
//**************************************************************************
@@ -20,8 +20,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-#define NILE_VOICES 8
-
// ======================> nile_device
class nile_device : public device_t,
@@ -29,7 +27,6 @@ class nile_device : public device_t,
{
public:
nile_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~nile_device() { }
protected:
// device-level overrides
@@ -45,6 +42,8 @@ public:
DECLARE_READ16_MEMBER( nile_sndctrl_r );
private:
+ static constexpr unsigned NILE_VOICES = 8;
+
sound_stream *m_stream;
required_region_ptr<uint8_t> m_sound_ram;
uint16_t m_sound_regs[0x80];
@@ -54,7 +53,6 @@ private:
uint16_t m_ctrl;
};
-extern const device_type NILE;
-
+DECLARE_DEVICE_TYPE(NILE, nile_device)
-#endif /* __NILE_H__ */
+#endif // MAME_SOUND_NILE_H
diff --git a/src/devices/sound/okiadpcm.h b/src/devices/sound/okiadpcm.h
index 3c2dc91dcce..62ff8d9a5fc 100644
--- a/src/devices/sound/okiadpcm.h
+++ b/src/devices/sound/okiadpcm.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_OKIADPCM_H
+#define MAME_SOUND_OKIADPCM_H
-#ifndef __OKIADPCM_H__
-#define __OKIADPCM_H__
+#pragma once
// ======================> oki_adpcm_state
@@ -61,4 +61,4 @@ private:
};
-#endif // __OKIADPCM_H__
+#endif // MAME_SOUND_OKIADPCM_H
diff --git a/src/devices/sound/okim6258.cpp b/src/devices/sound/okim6258.cpp
index e67a6bcb12e..ac82ea267d9 100644
--- a/src/devices/sound/okim6258.cpp
+++ b/src/devices/sound/okim6258.cpp
@@ -35,7 +35,7 @@ static int tables_computed = 0;
// device type definition
-const device_type OKIM6258 = device_creator<okim6258_device>;
+DEFINE_DEVICE_TYPE(OKIM6258, okim6258_device, "okim6258", "OKI MSM6258 ADPCM")
//**************************************************************************
@@ -47,7 +47,7 @@ const device_type OKIM6258 = device_creator<okim6258_device>;
//-------------------------------------------------
okim6258_device::okim6258_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, OKIM6258, "OKI6258", tag, owner, clock, "okim6258", __FILE__),
+ : device_t(mconfig, OKIM6258, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_status(0),
m_master_clock(0),
@@ -70,7 +70,7 @@ okim6258_device::okim6258_device(const machine_config &mconfig, const char *tag,
***********************************************************************************************/
-static void compute_tables(void)
+static void compute_tables()
{
/* nibble to bit map */
static const int nbl2bit[16][4] =
@@ -121,7 +121,7 @@ void okim6258_device::device_start()
m_signal = -2;
m_step = 0;
- okim6258_state_save_register();
+ state_save_register();
}
@@ -186,7 +186,7 @@ void okim6258_device::sound_stream_update(sound_stream &stream, stream_sample_t
***********************************************************************************************/
-void okim6258_device::okim6258_state_save_register()
+void okim6258_device::state_save_register()
{
save_item(NAME(m_status));
save_item(NAME(m_master_clock));
@@ -269,7 +269,7 @@ int okim6258_device::get_vclk()
***********************************************************************************************/
-READ8_MEMBER( okim6258_device::okim6258_status_r )
+READ8_MEMBER( okim6258_device::status_r )
{
m_stream->update();
@@ -282,7 +282,7 @@ READ8_MEMBER( okim6258_device::okim6258_status_r )
okim6258_data_w -- write to the control port of an OKIM6258-compatible chip
***********************************************************************************************/
-WRITE8_MEMBER( okim6258_device::okim6258_data_w )
+WRITE8_MEMBER( okim6258_device::data_w )
{
/* update the stream */
m_stream->update();
@@ -298,7 +298,7 @@ WRITE8_MEMBER( okim6258_device::okim6258_data_w )
***********************************************************************************************/
-WRITE8_MEMBER( okim6258_device::okim6258_ctrl_w )
+WRITE8_MEMBER( okim6258_device::ctrl_w )
{
m_stream->update();
diff --git a/src/devices/sound/okim6258.h b/src/devices/sound/okim6258.h
index ad8985ad5cd..65313d8480d 100644
--- a/src/devices/sound/okim6258.h
+++ b/src/devices/sound/okim6258.h
@@ -1,38 +1,29 @@
// license:BSD-3-Clause
// copyright-holders:Barry Rodewald
-#pragma once
-
-#ifndef __OKIM6258_H__
-#define __OKIM6258_H__
-
-#define FOSC_DIV_BY_1024 0
-#define FOSC_DIV_BY_768 1
-#define FOSC_DIV_BY_512 2
+#ifndef MAME_SOUND_OKIM6258_H
+#define MAME_SOUND_OKIM6258_H
-#define TYPE_3BITS 0
-#define TYPE_4BITS 1
-
-#define OUTPUT_10BITS 10
-#define OUTPUT_12BITS 12
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_OKIM6258_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, OKIM6258, _clock)
-#define MCFG_OKIM6258_REPLACE(_tag, _clock) \
- MCFG_DEVICE_REPLACE(_tag, OKIM6258, _clock)
+#define MCFG_OKIM6258_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), OKIM6258, (clock))
+
+#define MCFG_OKIM6258_REPLACE(tag, clock) \
+ MCFG_DEVICE_REPLACE((tag), OKIM6258, (clock))
-#define MCFG_OKIM6258_DIVIDER(_div) \
- okim6258_device::set_start_div(*device, _div);
+#define MCFG_OKIM6258_DIVIDER(div) \
+ okim6258_device::set_start_div(*device, (okim6258_device::div));
-#define MCFG_OKIM6258_ADPCM_TYPE(_type) \
- okim6258_device::set_type(*device, _type);
+#define MCFG_OKIM6258_ADPCM_TYPE(type) \
+ okim6258_device::set_type(*device, (okim6258_device::type));
-#define MCFG_OKIM6258_OUT_BITS(_bits) \
- okim6258_device::set_outbits(*device, _bits);
+#define MCFG_OKIM6258_OUT_BITS(bits) \
+ okim6258_device::set_outbits(*device, (okim6258_device::bits));
//**************************************************************************
@@ -45,14 +36,31 @@ class okim6258_device : public device_t,
public device_sound_interface
{
public:
+ static constexpr int FOSC_DIV_BY_1024 = 0;
+ static constexpr int FOSC_DIV_BY_768 = 1;
+ static constexpr int FOSC_DIV_BY_512 = 2;
+
+ static constexpr int TYPE_3BITS = 0;
+ static constexpr int TYPE_4BITS = 1;
+
+ static constexpr int OUTPUT_10BITS = 10;
+ static constexpr int OUTPUT_12BITS = 12;
+
okim6258_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~okim6258_device() { }
// static configuration
static void set_start_div(device_t &device, int div) { downcast<okim6258_device &>(device).m_start_divider = div; }
static void set_type(device_t &device, int type) { downcast<okim6258_device &>(device).m_adpcm_type = type; }
static void set_outbits(device_t &device, int outbit) { downcast<okim6258_device &>(device).m_output_bits = outbit; }
+ DECLARE_READ8_MEMBER( status_r );
+ DECLARE_WRITE8_MEMBER( data_w );
+ DECLARE_WRITE8_MEMBER( ctrl_w );
+
+ void set_divider(int val);
+ void set_clock(int val);
+ int get_vclk();
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -61,21 +69,10 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_READ8_MEMBER( okim6258_status_r );
- DECLARE_WRITE8_MEMBER( okim6258_data_w );
- DECLARE_WRITE8_MEMBER( okim6258_ctrl_w );
-
-public:
- void set_divider(int val);
- void set_clock(int val);
- int get_vclk();
-
private:
- void okim6258_state_save_register();
+ void state_save_register();
int16_t clock_adpcm(uint8_t nibble);
-private:
uint8_t m_status;
uint32_t m_master_clock; /* master clock frequency */
@@ -93,7 +90,6 @@ private:
int32_t m_step;
};
-extern const device_type OKIM6258;
-
+DECLARE_DEVICE_TYPE(OKIM6258, okim6258_device)
-#endif /* __OKIM6258_H__ */
+#endif // MAME_SOUND_OKIM6258_H
diff --git a/src/devices/sound/okim6295.cpp b/src/devices/sound/okim6295.cpp
index c7c49abf7b3..16eb4915462 100644
--- a/src/devices/sound/okim6295.cpp
+++ b/src/devices/sound/okim6295.cpp
@@ -46,7 +46,7 @@
//**************************************************************************
// device type definition
-const device_type OKIM6295 = device_creator<okim6295_device>;
+DEFINE_DEVICE_TYPE(OKIM6295, okim6295_device, "okim6295", "OKI MSM6295 ADPCM")
// volume lookup table. The manual lists only 9 steps, ~3dB per step. Given the dB values,
// that seems to map to a 5-bit volume control. Any volume parameter beyond the 9th index
@@ -81,7 +81,7 @@ const uint8_t okim6295_device::s_volume_table[16] =
//-------------------------------------------------
okim6295_device::okim6295_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, OKIM6295, "OKI6295", tag, owner, clock, "okim6295", __FILE__),
+ : device_t(mconfig, OKIM6295, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_rom_interface(mconfig, *this, 18),
m_region(*this, DEVICE_SELF),
diff --git a/src/devices/sound/okim6295.h b/src/devices/sound/okim6295.h
index 87310cedb29..8366bd7b272 100644
--- a/src/devices/sound/okim6295.h
+++ b/src/devices/sound/okim6295.h
@@ -8,41 +8,29 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_OKIM6295_H
+#define MAME_SOUND_OKIM6295_H
-#ifndef __OKIM6295_H__
-#define __OKIM6295_H__
+#pragma once
#include "sound/okiadpcm.h"
//**************************************************************************
-// CONSTANTS
-//**************************************************************************
-
-enum
-{
- OKIM6295_PIN7_LOW = 0,
- OKIM6295_PIN7_HIGH = 1
-};
-
-
-
-//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_OKIM6295_ADD(_tag, _clock, _pin7) \
- MCFG_DEVICE_ADD(_tag, OKIM6295, _clock) \
- MCFG_OKIM6295_PIN7(_pin7)
+#define MCFG_OKIM6295_ADD(tag, clock, pin7) \
+ MCFG_DEVICE_ADD((tag), OKIM6295, (clock)) \
+ MCFG_OKIM6295_PIN7(pin7)
-#define MCFG_OKIM6295_REPLACE(_tag, _clock, _pin7) \
- MCFG_DEVICE_REPLACE(_tag, OKIM6295, _clock) \
- MCFG_OKIM6295_PIN7(_pin7)
+#define MCFG_OKIM6295_REPLACE(tag, clock, pin7) \
+ MCFG_DEVICE_REPLACE((tag), OKIM6295, (clock)) \
+ MCFG_OKIM6295_PIN7(pin7)
-#define MCFG_OKIM6295_PIN7(_pin7) \
- okim6295_device::static_set_pin7(*device, _pin7);
+#define MCFG_OKIM6295_PIN7(pin7) \
+ okim6295_device::static_set_pin7(*device, (okim6295_device::pin7));
//**************************************************************************
@@ -57,6 +45,12 @@ class okim6295_device : public device_t,
public device_rom_interface
{
public:
+ enum
+ {
+ PIN7_LOW = 0,
+ PIN7_HIGH = 1
+ };
+
// construction/destruction
okim6295_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -104,7 +98,7 @@ protected:
optional_memory_region m_region;
// internal state
- static const int OKIM6295_VOICES = 4;
+ static constexpr int OKIM6295_VOICES = 4;
okim_voice m_voice[OKIM6295_VOICES];
int32_t m_command;
@@ -116,7 +110,7 @@ protected:
// device type definition
-extern const device_type OKIM6295;
+DECLARE_DEVICE_TYPE(OKIM6295, okim6295_device)
-#endif /* __OKIM6295_H__ */
+#endif // MAME_SOUND_OKIM6295_H
diff --git a/src/devices/sound/okim6376.cpp b/src/devices/sound/okim6376.cpp
index 1a852599529..17adf11b49f 100644
--- a/src/devices/sound/okim6376.cpp
+++ b/src/devices/sound/okim6376.cpp
@@ -20,7 +20,7 @@
//#define MAX_WORDS 111
#define OKIVERBOSE 0
-#define MSM6376LOG(x) do { if (OKIVERBOSE) logerror x; } while (0)
+#define MSM6376LOG(...) do { if (OKIVERBOSE) logerror(__VA_ARGS__); } while (0)
/* step size index shift table */
static const int index_shift[8] = { -1, -1, -1, -1, 2, 4, 6, 8 };
@@ -57,7 +57,7 @@ static int tables_computed = 0;
***********************************************************************************************/
-static void compute_tables(void)
+static void compute_tables()
{
/* nibble to bit map */
static const int nbl2bit[16][4] =
@@ -98,22 +98,22 @@ static void compute_tables(void)
***********************************************************************************************/
-static void reset_adpcm(struct ADPCMVoice *voice)
+void okim6376_device::ADPCMVoice::reset()
{
/* make sure we have our tables */
if (!tables_computed)
compute_tables();
/* reset the signal/step */
- voice->signal = -2;
- voice->step = 0;
+ signal = -2;
+ step = 0;
}
-const device_type OKIM6376 = device_creator<okim6376_device>;
+DEFINE_DEVICE_TYPE(OKIM6376, okim6376_device, "okim6376", "OKI MSM6376 ADPCM")
okim6376_device::okim6376_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, OKIM6376, "OKI6376", tag, owner, clock, "okim6376", __FILE__),
+ : device_t(mconfig, OKIM6376, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_region_base(*this, DEVICE_SELF),
//m_command[OKIM6376_VOICES],
@@ -166,7 +166,7 @@ void okim6376_device::device_start()
{
/* initialize the rest of the structure */
m_voice[voice].volume = 0;
- reset_adpcm(&m_voice[voice]);
+ m_voice[voice].reset();
}
okim6376_state_save_register();
@@ -192,25 +192,25 @@ void okim6376_device::device_reset()
***********************************************************************************************/
-static int16_t clock_adpcm(struct ADPCMVoice *voice, uint8_t nibble)
+int16_t okim6376_device::ADPCMVoice::clock(uint8_t nibble)
{
- voice->signal += diff_lookup[voice->step * 16 + (nibble & 15)];
+ signal += diff_lookup[step * 16 + (nibble & 15)];
/* clamp to the maximum 12bit */
- if (voice->signal > 2047)
- voice->signal = 2047;
- else if (voice->signal < -2048)
- voice->signal = -2048;
+ if (signal > 2047)
+ signal = 2047;
+ else if (signal < -2048)
+ signal = -2048;
/* adjust the step size and clamp */
- voice->step += index_shift[nibble & 7];
- if (voice->step > 48)
- voice->step = 48;
- else if (voice->step < 0)
- voice->step = 0;
+ step += index_shift[nibble & 7];
+ if (step > 48)
+ step = 48;
+ else if (step < 0)
+ step = 0;
/* return the signal */
- return voice->signal;
+ return signal;
}
@@ -248,7 +248,7 @@ void okim6376_device::oki_process(int channel, int command)
voice->count = 0;
/* also reset the ADPCM parameters */
- reset_adpcm(voice);
+ voice->reset();
if (channel == 0)
{
/* We set channel 2's audio separately */
@@ -327,7 +327,7 @@ void okim6376_device::generate_adpcm(struct ADPCMVoice *voice, int16_t *buffer,
/* output to the buffer, scaling by the volume */
/* signal in range -4096..4095, volume in range 2..16 => signal * volume / 2 in range -32768..32767 */
- *buffer++ = clock_adpcm(voice, nibble) * voice->volume / 2;
+ *buffer++ = voice->clock(nibble) * voice->volume / 2;
++sample;
--count;
@@ -429,14 +429,14 @@ READ_LINE_MEMBER( okim6376_device::busy_r )
READ_LINE_MEMBER( okim6376_device::nar_r )
{
- MSM6376LOG(("OKIM6376:'%s' NAR %x\n",tag(),m_nar));
+ MSM6376LOG("OKIM6376: NAR %x\n",m_nar);
return m_nar;
}
WRITE_LINE_MEMBER( okim6376_device::ch2_w )
{
m_ch2_update = 0;//Clear flag
- MSM6376LOG(("OKIM6376:'%s' CH2 %x\n",tag(),state));
+ MSM6376LOG("OKIM6376: CH2 %x\n",state);
if (m_ch2 != state)
{
@@ -449,7 +449,7 @@ WRITE_LINE_MEMBER( okim6376_device::ch2_w )
struct ADPCMVoice *voice0 = &m_voice[0];
struct ADPCMVoice *voice1 = &m_voice[1];
// We set to channel 2
- MSM6376LOG(("OKIM6376:'%s' Channel 1\n",tag()));
+ MSM6376LOG("OKIM6376: Channel 1\n");
m_channel = 1;
if ((voice0->playing)&&(m_st))
@@ -464,7 +464,7 @@ WRITE_LINE_MEMBER( okim6376_device::ch2_w )
{
m_stage[1]=0;
oki_process(1, m_command[1]);
- MSM6376LOG(("OKIM6376:'%s' Channel 0\n",tag()));
+ MSM6376LOG("OKIM6376: Channel 0\n");
m_channel = 0;
}
}
@@ -475,7 +475,7 @@ WRITE_LINE_MEMBER( okim6376_device::st_w )
//As in STart, presumably, this triggers everything
m_st_update = 0;//Clear flag
- MSM6376LOG(("OKIM6376:'%s' ST %x\n",tag(),state));
+ MSM6376LOG("OKIM6376: ST %x\n",state);
if (m_st != state)
{
@@ -487,7 +487,7 @@ WRITE_LINE_MEMBER( okim6376_device::st_w )
struct ADPCMVoice *voice = &m_voice[m_channel];
{
m_st_pulses ++;
- MSM6376LOG(("OKIM6376:'%s' ST pulses %x\n",tag(),m_st_pulses));
+ MSM6376LOG("OKIM6376: ST pulses %x\n",m_st_pulses);
if (m_st_pulses > 3)
{
m_st_pulses = 3; //undocumented behaviour beyond 3 pulses
diff --git a/src/devices/sound/okim6376.h b/src/devices/sound/okim6376.h
index af2c8f3494f..7fe83bbf5a5 100644
--- a/src/devices/sound/okim6376.h
+++ b/src/devices/sound/okim6376.h
@@ -1,32 +1,17 @@
// license:BSD-3-Clause
// copyright-holders:Mirko Buffoni, James Wallace
-#pragma once
+#ifndef MAME_SOUND_OKIM6376_H
+#define MAME_SOUND_OKIM6376_H
-#ifndef __OKIM6376_H__
-#define __OKIM6376_H__
+#pragma once
/* an interface for the OKIM6376 and similar chips (CPU interface only) */
-/* struct describing a single playing ADPCM voice */
-struct ADPCMVoice
-{
- uint8_t playing; /* 1 if we are actively playing */
-
- uint32_t base_offset; /* pointer to the base memory location */
- uint32_t sample; /* current sample number */
- uint32_t count; /* total samples to play */
-
- uint32_t volume; /* output volume */
- int32_t signal;
- int32_t step;
-};
-
class okim6376_device : public device_t,
public device_sound_interface
{
public:
okim6376_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~okim6376_device() {}
DECLARE_WRITE8_MEMBER( write );
@@ -38,7 +23,6 @@ public:
void set_frequency(int frequency);
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -48,10 +32,27 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ /* struct describing a single playing ADPCM voice */
+ struct ADPCMVoice
+ {
+ uint8_t playing; /* 1 if we are actively playing */
+
+ uint32_t base_offset; /* pointer to the base memory location */
+ uint32_t sample; /* current sample number */
+ uint32_t count; /* total samples to play */
+
+ uint32_t volume; /* output volume */
+ int32_t signal;
+ int32_t step;
+
+ void reset();
+ int16_t clock(uint8_t nibble);
+ };
+
// internal state
required_region_ptr<uint8_t> m_region_base; /* pointer to the base of the region */
- #define OKIM6376_VOICES 2
+ static constexpr unsigned OKIM6376_VOICES = 2;
struct ADPCMVoice m_voice[OKIM6376_VOICES];
int32_t m_command[OKIM6376_VOICES];
int32_t m_latch; /* Command data is held before transferring to either channel */
@@ -76,6 +77,6 @@ private:
void adpcm_state_save_register(struct ADPCMVoice *voice, int index);
};
-extern const device_type OKIM6376;
+DECLARE_DEVICE_TYPE(OKIM6376, okim6376_device)
-#endif /* __OKIM6376_H__ */
+#endif // MAME_SOUND_OKIM6376_H
diff --git a/src/devices/sound/okim9810.cpp b/src/devices/sound/okim9810.cpp
index 35ce795d877..369d3f6ac5b 100644
--- a/src/devices/sound/okim9810.cpp
+++ b/src/devices/sound/okim9810.cpp
@@ -17,7 +17,7 @@
//**************************************************************************
// device type definition
-const device_type OKIM9810 = device_creator<okim9810_device>;
+DEFINE_DEVICE_TYPE(OKIM9810, okim9810_device, "okim9810", "OKI MSM9810 ADPCM")
// volume lookup table. The manual lists a full 16 steps, 2dB per step.
// Given the dB values, that seems to map to a 7-bit volume control.
@@ -73,14 +73,14 @@ const uint32_t okim9810_device::s_sampling_freq_table[16] =
//-------------------------------------------------
okim9810_device::okim9810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, OKIM9810, "OKI9810", tag, owner, clock, "okim9810", __FILE__),
+ : device_t(mconfig, OKIM9810, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_rom_interface(mconfig, *this, 24),
m_stream(nullptr),
m_TMP_register(0x00),
m_global_volume(0x00),
- m_filter_type(OKIM9810_SECONDARY_FILTER),
- m_output_level(OKIM9810_OUTPUT_TO_DIRECT_DAC)
+ m_filter_type(SECONDARY_FILTER),
+ m_output_level(OUTPUT_TO_DIRECT_DAC)
{
}
@@ -340,8 +340,8 @@ void okim9810_device::write_command(uint8_t data)
m_voice[channel].m_playbackAlgo = (startFlags & 0x30) >> 4;
m_voice[channel].m_samplingFreq = s_sampling_freq_table[startFlags & 0x0f];
- if (m_voice[channel].m_playbackAlgo == OKIM9810_ADPCM_PLAYBACK ||
- m_voice[channel].m_playbackAlgo == OKIM9810_ADPCM2_PLAYBACK)
+ if (m_voice[channel].m_playbackAlgo == ADPCM_PLAYBACK ||
+ m_voice[channel].m_playbackAlgo == ADPCM2_PLAYBACK)
m_voice[channel].m_count *= 2;
else
osd_printf_warning("MSM9810: UNIMPLEMENTED PLAYBACK METHOD %d\n", m_voice[channel].m_playbackAlgo);
@@ -394,14 +394,14 @@ WRITE8_MEMBER( okim9810_device::write )
//-----------------------------------------------------------
// TMP is written when the CMD pin is high
-void okim9810_device::write_TMP_register(uint8_t data)
+void okim9810_device::write_tmp_register(uint8_t data)
{
m_TMP_register = data;
}
-WRITE8_MEMBER( okim9810_device::write_TMP_register )
+WRITE8_MEMBER( okim9810_device::write_tmp_register )
{
- write_TMP_register(data);
+ write_tmp_register(data);
}
@@ -414,7 +414,7 @@ WRITE8_MEMBER( okim9810_device::write_TMP_register )
//-------------------------------------------------
okim9810_device::okim_voice::okim_voice()
- : m_playbackAlgo(OKIM9810_ADPCM2_PLAYBACK),
+ : m_playbackAlgo(ADPCM2_PLAYBACK),
m_looping(false),
m_startFlags(0),
m_endFlags(0),
@@ -472,13 +472,13 @@ void okim9810_device::okim_voice::generate_audio(device_rom_interface &rom,
int nibble0 = rom.read_byte(m_base_offset + m_sample / 2) >> (((m_sample & 1) << 2) ^ 4);
switch (m_playbackAlgo)
{
- case OKIM9810_ADPCM_PLAYBACK:
+ case ADPCM_PLAYBACK:
{
m_adpcm.reset();
m_startSample = (int32_t)m_adpcm.clock(nibble0);
break;
}
- case OKIM9810_ADPCM2_PLAYBACK:
+ case ADPCM2_PLAYBACK:
{
m_adpcm2.reset();
m_startSample = (int32_t)m_adpcm2.clock(nibble0);
@@ -498,12 +498,12 @@ void okim9810_device::okim_voice::generate_audio(device_rom_interface &rom,
int nibble1 = rom.read_byte(m_base_offset + (m_sample+1) / 2) >> ((((m_sample+1) & 1) << 2) ^ 4);
switch (m_playbackAlgo)
{
- case OKIM9810_ADPCM_PLAYBACK:
+ case ADPCM_PLAYBACK:
{
m_endSample = (int32_t)m_adpcm.clock(nibble1);
break;
}
- case OKIM9810_ADPCM2_PLAYBACK:
+ case ADPCM2_PLAYBACK:
{
m_endSample = (int32_t)m_adpcm2.clock(nibble1);
break;
@@ -518,7 +518,7 @@ void okim9810_device::okim_voice::generate_audio(device_rom_interface &rom,
int32_t interpValue = (int32_t)((float)m_startSample + (((float)m_endSample-(float)m_startSample) * progress));
// if filtering is unwanted
- if (filter_type != OKIM9810_SECONDARY_FILTER && filter_type != OKIM9810_PRIMARY_FILTER)
+ if (filter_type != SECONDARY_FILTER && filter_type != PRIMARY_FILTER)
interpValue = m_startSample;
// output to the stereo buffers, scaling by the volume
diff --git a/src/devices/sound/okim9810.h b/src/devices/sound/okim9810.h
index 61dd46b779f..f1a025a8577 100644
--- a/src/devices/sound/okim9810.h
+++ b/src/devices/sound/okim9810.h
@@ -12,10 +12,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_OKIM9810_H
+#define MAME_SOUND_OKIM9810_H
-#ifndef __OKIM9810_H__
-#define __OKIM9810_H__
+#pragma once
#include "okiadpcm.h"
@@ -24,29 +24,6 @@
// CONSTANTS
//**************************************************************************
-enum
-{
- OKIM9810_ADPCM_PLAYBACK = 0,
- OKIM9810_ADPCM2_PLAYBACK = 1,
- OKIM9810_STRAIGHT8_PLAYBACK = 2,
- OKIM9810_NONLINEAR8_PLAYBACK = 3
-};
-
-enum
-{
- OKIM9810_SECONDARY_FILTER = 0,
- OKIM9810_PRIMARY_FILTER = 1,
- OKIM9810_NO_FILTER = 2,
- OKIM9810_NO_FILTER2 = 3
-};
-
-enum
-{
- OKIM9810_OUTPUT_TO_DIRECT_DAC = 0,
- OKIM9810_OUTPUT_TO_VOLTAGE_FOLLOWER = 1
-};
-
-
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
@@ -75,14 +52,36 @@ public:
okim9810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
uint8_t read_status();
- void write_TMP_register(uint8_t command);
+ void write_tmp_register(uint8_t command);
void write_command(uint8_t command);
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- DECLARE_WRITE8_MEMBER( write_TMP_register );
+ DECLARE_WRITE8_MEMBER( write_tmp_register );
protected:
+ enum
+ {
+ ADPCM_PLAYBACK = 0,
+ ADPCM2_PLAYBACK = 1,
+ STRAIGHT8_PLAYBACK = 2,
+ NONLINEAR8_PLAYBACK = 3
+ };
+
+ enum
+ {
+ SECONDARY_FILTER = 0,
+ PRIMARY_FILTER = 1,
+ NO_FILTER = 2,
+ NO_FILTER2 = 3
+ };
+
+ enum
+ {
+ OUTPUT_TO_DIRECT_DAC = 0,
+ OUTPUT_TO_VOLTAGE_FOLLOWER = 1
+ };
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -146,7 +145,7 @@ protected:
uint8_t m_filter_type; // interpolation filter type set with the OPT command
uint8_t m_output_level; // flag stating if a voltage follower is connected
- static const int OKIM9810_VOICES = 8;
+ static constexpr int OKIM9810_VOICES = 8;
okim_voice m_voice[OKIM9810_VOICES];
static const uint32_t s_sampling_freq_table[16];
@@ -154,8 +153,6 @@ protected:
// device type definition
-extern const device_type OKIM9810;
-
-
+DECLARE_DEVICE_TYPE(OKIM9810, okim9810_device)
-#endif // __OKIM9810_H__
+#endif // MAME_SOUND_OKIM9810_H
diff --git a/src/devices/sound/pcd3311.cpp b/src/devices/sound/pcd3311.cpp
index b2ab6fc8130..d332caa3400 100644
--- a/src/devices/sound/pcd3311.cpp
+++ b/src/devices/sound/pcd3311.cpp
@@ -15,7 +15,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PCD3311 = device_creator<pcd3311_t>;
+DEFINE_DEVICE_TYPE(PCD3311, pcd3311_device, "pcd3311", "PCD3311")
@@ -24,11 +24,11 @@ const device_type PCD3311 = device_creator<pcd3311_t>;
//**************************************************************************
//-------------------------------------------------
-// pcd3311_t - constructor
+// pcd3311_device - constructor
//-------------------------------------------------
-pcd3311_t::pcd3311_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PCD3311, "PCD3311", tag, owner, clock, "pcd3311", __FILE__),
+pcd3311_device::pcd3311_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, PCD3311, tag, owner, clock),
device_sound_interface(mconfig, *this)
{
}
@@ -38,7 +38,7 @@ pcd3311_t::pcd3311_t(const machine_config &mconfig, const char *tag, device_t *o
// device_start - device-specific startup
//-------------------------------------------------
-void pcd3311_t::device_start()
+void pcd3311_device::device_start()
{
save_item(NAME(m_a0));
save_item(NAME(m_mode));
@@ -52,6 +52,6 @@ void pcd3311_t::device_start()
// our sound stream
//-------------------------------------------------
-void pcd3311_t::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
+void pcd3311_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
}
diff --git a/src/devices/sound/pcd3311.h b/src/devices/sound/pcd3311.h
index 00e2fdc8eb9..9abb61f8c21 100644
--- a/src/devices/sound/pcd3311.h
+++ b/src/devices/sound/pcd3311.h
@@ -17,10 +17,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_SOUND_PCD3311_H
+#define MAME_SOUND_PCD3311_H
-#ifndef __PCD3311__
-#define __PCD3311__
+#pragma once
@@ -29,14 +29,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> pcd3311_t
+// ======================> pcd3311_device
-class pcd3311_t : public device_t,
+class pcd3311_device : public device_t,
public device_sound_interface
{
public:
// construction/destruction
- pcd3311_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pcd3311_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE8_MEMBER( write ) { m_data = data; }
DECLARE_WRITE_LINE_MEMBER( strobe_w ) { m_strobe = state; }
@@ -59,8 +59,6 @@ private:
// device type definition
-extern const device_type PCD3311;
-
-
+DECLARE_DEVICE_TYPE(PCD3311, pcd3311_device)
-#endif
+#endif // MAME_SOUND_PCD3311_H
diff --git a/src/devices/sound/pci-ac97.cpp b/src/devices/sound/pci-ac97.cpp
index b263c50b803..daee927bc6b 100644
--- a/src/devices/sound/pci-ac97.cpp
+++ b/src/devices/sound/pci-ac97.cpp
@@ -3,7 +3,7 @@
#include "emu.h"
#include "pci-ac97.h"
-const device_type AC97 = device_creator<ac97_device>;
+DEFINE_DEVICE_TYPE(AC97, ac97_device, "ac97", "AC'97 Audio")
DEVICE_ADDRESS_MAP_START(native_audio_mixer_map, 32, ac97_device)
ADDRESS_MAP_END
@@ -18,7 +18,7 @@ DEVICE_ADDRESS_MAP_START(bus_mastering_map, 32, ac97_device)
ADDRESS_MAP_END
ac97_device::ac97_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, AC97, "AC97 audio", tag, owner, clock, "ac97", __FILE__)
+ : pci_device(mconfig, AC97, tag, owner, clock)
{
}
diff --git a/src/devices/sound/pci-ac97.h b/src/devices/sound/pci-ac97.h
index 00cddfd29ef..0f88f10f338 100644
--- a/src/devices/sound/pci-ac97.h
+++ b/src/devices/sound/pci-ac97.h
@@ -1,12 +1,14 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef PCI_AC97_H
-#define PCI_AC97_H
+#ifndef MAME_SOUND_PCI_AC97_H
+#define MAME_SOUND_PCI_AC97_H
+
+#pragma once
#include "machine/pci.h"
#define MCFG_AC97_ADD(_tag, _main_id, _revision, _subdevice_id) \
- MCFG_PCI_DEVICE_ADD(_tag, AC97, _main_id, _revision, 0x040300, _subdevice_id)
+ MCFG_PCI_DEVICE_ADD(_tag, AC97, _main_id, _revision, 0x040300, _subdevice_id)
class ac97_device : public pci_device {
public:
@@ -23,6 +25,6 @@ private:
DECLARE_ADDRESS_MAP(bus_mastering_map, 32);
};
-extern const device_type AC97;
+DECLARE_DEVICE_TYPE(AC97, ac97_device)
-#endif
+#endif // MAME_SOUND_PCI_AC97_H
diff --git a/src/devices/sound/pokey.cpp b/src/devices/sound/pokey.cpp
index 61cd505a28e..adb4fe8dd42 100644
--- a/src/devices/sound/pokey.cpp
+++ b/src/devices/sound/pokey.cpp
@@ -167,7 +167,7 @@ static const int clock_divisors[3] = {1, DIV_64, DIV_15};
// device type definition
-const device_type POKEY = device_creator<pokey_device>;
+DEFINE_DEVICE_TYPE(POKEY, pokey_device, "pokey", "Atari C012294 POKEY")
//**************************************************************************
// LIVE DEVICE
@@ -178,21 +178,14 @@ const device_type POKEY = device_creator<pokey_device>;
//-------------------------------------------------
pokey_device::pokey_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, POKEY, "POKEY", tag, owner, clock, "pokey", __FILE__),
+ : device_t(mconfig, POKEY, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_execute_interface(mconfig, *this),
device_state_interface(mconfig, *this),
m_output_type(LEGACY_LINEAR),
m_icount(0),
m_stream(nullptr),
- m_pot0_r_cb(*this),
- m_pot1_r_cb(*this),
- m_pot2_r_cb(*this),
- m_pot3_r_cb(*this),
- m_pot4_r_cb(*this),
- m_pot5_r_cb(*this),
- m_pot6_r_cb(*this),
- m_pot7_r_cb(*this),
+ m_pot_r_cb{ {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this} },
m_allpot_r_cb(*this),
m_serin_r_cb(*this),
m_serout_w_cb(*this)
@@ -275,14 +268,8 @@ void pokey_device::device_start()
m_POTx[i] = 0;
}
- m_pot0_r_cb.resolve();
- m_pot1_r_cb.resolve();
- m_pot2_r_cb.resolve();
- m_pot3_r_cb.resolve();
- m_pot4_r_cb.resolve();
- m_pot5_r_cb.resolve();
- m_pot6_r_cb.resolve();
- m_pot7_r_cb.resolve();
+ for (devcb_read8 &cb : m_pot_r_cb)
+ cb.resolve();
m_allpot_r_cb.resolve();
m_serin_r_cb.resolve();
m_serout_w_cb.resolve_safe();
@@ -1113,184 +1100,25 @@ void pokey_device::pokey_potgo(void)
for( pot = 0; pot < 8; pot++ )
{
m_POTx[pot] = 228;
- switch (pot)
+ if( !m_pot_r_cb[pot].isnull() )
{
- case 0:
- if( !m_pot0_r_cb.isnull() )
- {
- int r = m_pot0_r_cb(pot);
-
- LOG(("POKEY %s pot_r(%d) returned $%02x\n", tag(), pot, r));
- if (r >= 228)
- {
- r = 228;
- }
- if (r == 0)
- {
- /* immediately set the ready - bit of m_ALLPOT
- * In this case, most likely no capacitor is connected
- */
- m_ALLPOT |= (1<<pot);
- }
-
- /* final value */
- m_POTx[pot] = r;
- }
- break;
- case 1:
- if( !m_pot1_r_cb.isnull() )
- {
- int r = m_pot1_r_cb(pot);
-
- LOG(("POKEY %s pot_r(%d) returned $%02x\n", tag(), pot, r));
- if (r >= 228)
- {
- r = 228;
- }
- if (r == 0)
- {
- /* immediately set the ready - bit of m_ALLPOT
- * In this case, most likely no capacitor is connected
- */
- m_ALLPOT |= (1<<pot);
- }
-
- /* final value */
- m_POTx[pot] = r;
- }
- break;
- case 2:
- if( !m_pot2_r_cb.isnull() )
- {
- int r = m_pot2_r_cb(pot);
-
- LOG(("POKEY %s pot_r(%d) returned $%02x\n", tag(), pot, r));
- if (r >= 228)
- {
- r = 228;
- }
- if (r == 0)
- {
- /* immediately set the ready - bit of m_ALLPOT
- * In this case, most likely no capacitor is connected
- */
- m_ALLPOT |= (1<<pot);
- }
-
- /* final value */
- m_POTx[pot] = r;
- }
- break;
- case 3:
- if( !m_pot3_r_cb.isnull() )
- {
- int r = m_pot3_r_cb(pot);
-
- LOG(("POKEY %s pot_r(%d) returned $%02x\n", tag(), pot, r));
- if (r >= 228)
- {
- r = 228;
- }
- if (r == 0)
- {
- /* immediately set the ready - bit of m_ALLPOT
- * In this case, most likely no capacitor is connected
- */
- m_ALLPOT |= (1<<pot);
- }
-
- /* final value */
- m_POTx[pot] = r;
- }
- break;
- case 4:
- if( !m_pot4_r_cb.isnull() )
- {
- int r = m_pot4_r_cb(pot);
+ int r = m_pot_r_cb[pot](pot);
- LOG(("POKEY %s pot_r(%d) returned $%02x\n", tag(), pot, r));
- if (r >= 228)
- {
- r = 228;
- }
- if (r == 0)
- {
- /* immediately set the ready - bit of m_ALLPOT
- * In this case, most likely no capacitor is connected
- */
- m_ALLPOT |= (1<<pot);
- }
-
- /* final value */
- m_POTx[pot] = r;
- }
- break;
- case 5:
- if( !m_pot5_r_cb.isnull() )
- {
- int r = m_pot5_r_cb(pot);
-
- LOG(("POKEY %s pot_r(%d) returned $%02x\n", tag(), pot, r));
- if (r >= 228)
- {
- r = 228;
- }
- if (r == 0)
- {
- /* immediately set the ready - bit of m_ALLPOT
- * In this case, most likely no capacitor is connected
- */
- m_ALLPOT |= (1<<pot);
- }
-
- /* final value */
- m_POTx[pot] = r;
- }
- break;
- case 6:
- if( !m_pot6_r_cb.isnull() )
- {
- int r = m_pot6_r_cb(pot);
-
- LOG(("POKEY %s pot_r(%d) returned $%02x\n", tag(), pot, r));
- if (r >= 228)
- {
- r = 228;
- }
- if (r == 0)
- {
- /* immediately set the ready - bit of m_ALLPOT
- * In this case, most likely no capacitor is connected
- */
- m_ALLPOT |= (1<<pot);
- }
-
- /* final value */
- m_POTx[pot] = r;
- }
- break;
- case 7:
- if( !m_pot7_r_cb.isnull() )
- {
- int r = m_pot7_r_cb(pot);
-
- LOG(("POKEY %s pot_r(%d) returned $%02x\n", tag(), pot, r));
- if (r >= 228)
- {
- r = 228;
- }
- if (r == 0)
- {
- /* immediately set the ready - bit of m_ALLPOT
- * In this case, most likely no capacitor is connected
- */
- m_ALLPOT |= (1<<pot);
- }
+ LOG(("POKEY %s pot_r(%d) returned $%02x\n", tag(), pot, r));
+ if (r >= 228)
+ {
+ r = 228;
+ }
+ if (r == 0)
+ {
+ /* immediately set the ready - bit of m_ALLPOT
+ * In this case, most likely no capacitor is connected
+ */
+ m_ALLPOT |= (1<<pot);
+ }
- /* final value */
- m_POTx[pot] = r;
- }
- break;
+ /* final value */
+ m_POTx[pot] = r;
}
}
}
diff --git a/src/devices/sound/pokey.h b/src/devices/sound/pokey.h
index 5918bec7829..58688f9ee39 100644
--- a/src/devices/sound/pokey.h
+++ b/src/devices/sound/pokey.h
@@ -11,10 +11,10 @@
*
*****************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_POKEY_H
+#define MAME_SOUND_POKEY_H
-#ifndef __POKEY_H__
-#define __POKEY_H__
+#pragma once
#include "machine/rescap.h"
@@ -46,18 +46,10 @@
*
*/
-/* CONSTANT DEFINITIONS */
-
-/* exact 1.79 MHz clock freq (of the Atari 800 that is) */
-#define FREQ_17_EXACT 1789790
-
//**************************************************************************
// CALLBACK HANDLERS
//**************************************************************************
-typedef device_delegate<uint8_t (uint8_t k543210)> pokey_kb_cb_delegate;
-typedef device_delegate<void (int mask)> pokey_int_cb_delegate;
-
#define POKEY_KEYBOARD_CB_MEMBER(_name) uint8_t _name(uint8_t k543210)
#define POKEY_INTERRUPT_CB_MEMBER(_name) void _name(int mask)
@@ -67,28 +59,28 @@ typedef device_delegate<void (int mask)> pokey_int_cb_delegate;
//**************************************************************************
#define MCFG_POKEY_POT0_R_CB(_devcb) \
- devcb = &pokey_device::set_pot0_r_callback(*device, DEVCB_##_devcb);
+ devcb = &pokey_device::set_pot_r_callback<0>(*device, DEVCB_##_devcb);
#define MCFG_POKEY_POT1_R_CB(_devcb) \
- devcb = &pokey_device::set_pot1_r_callback(*device, DEVCB_##_devcb);
+ devcb = &pokey_device::set_pot_r_callback<1>(*device, DEVCB_##_devcb);
#define MCFG_POKEY_POT2_R_CB(_devcb) \
- devcb = &pokey_device::set_pot2_r_callback(*device, DEVCB_##_devcb);
+ devcb = &pokey_device::set_pot_r_callback<2>(*device, DEVCB_##_devcb);
#define MCFG_POKEY_POT3_R_CB(_devcb) \
- devcb = &pokey_device::set_pot3_r_callback(*device, DEVCB_##_devcb);
+ devcb = &pokey_device::set_pot_r_callback<3>(*device, DEVCB_##_devcb);
#define MCFG_POKEY_POT4_R_CB(_devcb) \
- devcb = &pokey_device::set_pot4_r_callback(*device, DEVCB_##_devcb);
+ devcb = &pokey_device::set_pot_r_callback<4>(*device, DEVCB_##_devcb);
#define MCFG_POKEY_POT5_R_CB(_devcb) \
- devcb = &pokey_device::set_pot5_r_callback(*device, DEVCB_##_devcb);
+ devcb = &pokey_device::set_pot_r_callback<5>(*device, DEVCB_##_devcb);
#define MCFG_POKEY_POT6_R_CB(_devcb) \
- devcb = &pokey_device::set_pot6_r_callback(*device, DEVCB_##_devcb);
+ devcb = &pokey_device::set_pot_r_callback<6>(*device, DEVCB_##_devcb);
#define MCFG_POKEY_POT7_R_CB(_devcb) \
- devcb = &pokey_device::set_pot7_r_callback(*device, DEVCB_##_devcb);
+ devcb = &pokey_device::set_pot_r_callback<7>(*device, DEVCB_##_devcb);
#define MCFG_POKEY_ALLPOT_R_CB(_devcb) \
devcb = &pokey_device::set_allpot_r_callback(*device, DEVCB_##_devcb);
@@ -102,10 +94,10 @@ typedef device_delegate<void (int mask)> pokey_int_cb_delegate;
/* k543210 = k5 ... k0 returns bit0: kr1, bit1: kr2 */
/* all are, in contrast to actual hardware, ACTIVE_HIGH */
#define MCFG_POKEY_KEYBOARD_CB(_class, _method) \
- pokey_device::set_keyboard_callback(*device, pokey_kb_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ pokey_device::set_keyboard_callback(*device, pokey_device::kb_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_POKEY_INTERRUPT_CB(_class, _method) \
- pokey_device::set_interrupt_callback(*device, pokey_int_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ pokey_device::set_interrupt_callback(*device, pokey_device::int_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_POKEY_OUTPUT_RC(_R, _C, _V) \
@@ -144,6 +136,14 @@ class pokey_device : public device_t,
{
public:
+ typedef device_delegate<uint8_t (uint8_t k543210)> kb_cb_delegate;
+ typedef device_delegate<void (int mask)> int_cb_delegate;
+
+ /* CONSTANT DEFINITIONS */
+
+ /* exact 1.79 MHz clock freq (of the Atari 800 that is) */
+ static constexpr unsigned FREQ_17_EXACT = 1789790;
+
enum
{
POK_KEY_BREAK = 0x30,
@@ -210,20 +210,13 @@ public:
// construction/destruction
pokey_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_pot0_r_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_pot0_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pot1_r_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_pot1_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pot2_r_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_pot2_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pot3_r_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_pot3_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pot4_r_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_pot4_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pot5_r_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_pot5_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pot6_r_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_pot6_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pot7_r_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_pot7_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_allpot_r_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_allpot_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_serin_r_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_serin_r_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_serout_w_callback(device_t &device, _Object object) { return downcast<pokey_device &>(device).m_serout_w_cb.set_callback(object); }
-
- static void set_keyboard_callback(device_t &device, pokey_kb_cb_delegate callback) { downcast<pokey_device &>(device).m_keyboard_r = callback; }
- static void set_interrupt_callback(device_t &device, pokey_int_cb_delegate callback) { downcast<pokey_device &>(device).m_irq_f = callback; }
+ template <unsigned N, class Object> static devcb_base &set_pot_r_callback(device_t &device, Object &&cb) { return downcast<pokey_device &>(device).m_pot_r_cb[N].set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_allpot_r_callback(device_t &device, Object &&cb) { return downcast<pokey_device &>(device).m_allpot_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_serin_r_callback(device_t &device, Object &&cb) { return downcast<pokey_device &>(device).m_serin_r_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_serout_w_callback(device_t &device, Object &&cb) { return downcast<pokey_device &>(device).m_serout_w_cb.set_callback(std::forward<Object>(cb)); }
+
+ static void set_keyboard_callback(device_t &device, kb_cb_delegate &&cb) { downcast<pokey_device &>(device).m_keyboard_r = std::move(cb); }
+ static void set_interrupt_callback(device_t &device, int_cb_delegate &&cb) { downcast<pokey_device &>(device).m_irq_f = std::move(cb); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -260,7 +253,6 @@ protected:
private:
-
class pokey_channel
{
public:
@@ -303,7 +295,7 @@ private:
}
};
- static const int POKEY_CHANNELS = 4;
+ static constexpr int POKEY_CHANNELS = 4;
uint32_t step_one_clock();
void step_keyboard();
@@ -334,20 +326,13 @@ private:
uint32_t m_p9; /* poly9 index */
uint32_t m_p17; /* poly17 index */
- devcb_read8 m_pot0_r_cb;
- devcb_read8 m_pot1_r_cb;
- devcb_read8 m_pot2_r_cb;
- devcb_read8 m_pot3_r_cb;
- devcb_read8 m_pot4_r_cb;
- devcb_read8 m_pot5_r_cb;
- devcb_read8 m_pot6_r_cb;
- devcb_read8 m_pot7_r_cb;
+ devcb_read8 m_pot_r_cb[8];
devcb_read8 m_allpot_r_cb;
devcb_read8 m_serin_r_cb;
devcb_write8 m_serout_w_cb;
- pokey_kb_cb_delegate m_keyboard_r;
- pokey_int_cb_delegate m_irq_f;
+ kb_cb_delegate m_keyboard_r;
+ int_cb_delegate m_irq_f;
uint8_t m_POTx[8]; /* POTx (R/D200-D207) */
uint8_t m_AUDCTL; /* AUDCTL (W/D208) */
@@ -376,6 +361,6 @@ private:
// device type definition
-extern const device_type POKEY;
+DECLARE_DEVICE_TYPE(POKEY, pokey_device)
-#endif /* __POKEY_H__ */
+#endif // MAME_SOUND_POKEY_H
diff --git a/src/devices/sound/qs1000.cpp b/src/devices/sound/qs1000.cpp
index c34171e39c6..f5b365451be 100644
--- a/src/devices/sound/qs1000.cpp
+++ b/src/devices/sound/qs1000.cpp
@@ -131,7 +131,7 @@
// device type definition
-const device_type QS1000 = device_creator<qs1000_device>;
+DEFINE_DEVICE_TYPE(QS1000, qs1000_device, "qs1000", "QS1000")
//**************************************************************************
// GLOBAL VARIABLES
@@ -175,7 +175,7 @@ ROM_END
// qs1000_device - constructor
//-------------------------------------------------
qs1000_device::qs1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, QS1000, "QS1000", tag, owner, clock, "qs1000", __FILE__),
+ : device_t(mconfig, QS1000, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_rom_interface(mconfig, *this, 24),
m_external_rom(false),
diff --git a/src/devices/sound/qs1000.h b/src/devices/sound/qs1000.h
index b7f2f07b45e..16201ea2424 100644
--- a/src/devices/sound/qs1000.h
+++ b/src/devices/sound/qs1000.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_QS1000_H
+#define MAME_SOUND_QS1000_H
-#ifndef __QS1000_H__
-#define __QS1000_H__
+#pragma once
#include "cpu/mcs51/mcs51.h"
#include "sound/okiadpcm.h"
@@ -48,9 +48,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-#define QS1000_CHANNELS 32
-#define QS1000_ADDRESS_MASK 0xffffff
-
// ======================> qs1000_device
class qs1000_device : public device_t,
@@ -62,33 +59,18 @@ public:
qs1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_external_rom(device_t &device, bool external_rom) { downcast<qs1000_device &>(device).m_external_rom = external_rom; }
- template<class _Object> static devcb_base &set_in_p1_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_in_p1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_p2_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_in_p2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_in_p3_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_in_p3_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_p1_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_out_p1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_p2_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_out_p2_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_p3_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_out_p3_cb.set_callback(object); }
- //template<class _Object> static devcb_base &set_serial_w_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_serial_w_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_in_p1_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_in_p1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_p2_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_in_p2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_in_p3_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_in_p3_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_p1_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_out_p1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_p2_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_out_p2_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_p3_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_out_p3_cb.set_callback(std::forward<Object>(cb)); }
+ //template <class Object> static devcb_base &set_serial_w_callback(device_t &device, Object &&cb) { return downcast<qs1000_device &>(device).m_serial_w_cb.set_callback(std::forward<Object>(cb)); }
// external
void serial_in(uint8_t data);
void set_irq(int state);
-protected:
- // device-level overrides
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual machine_config_constructor device_mconfig_additions() const override;
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
- // device_sound_interface overrides
- virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-
- // device_rom_interface overrides
- virtual void rom_bank_updated() override;
-
-public:
DECLARE_WRITE8_MEMBER( wave_w );
DECLARE_READ8_MEMBER( p0_r );
@@ -105,6 +87,24 @@ public:
DECLARE_READ8_MEMBER( data_to_i8052 );
+protected:
+ // device-level overrides
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ // device_sound_interface overrides
+ virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+
+ // device_rom_interface overrides
+ virtual void rom_bank_updated() override;
+
+private:
+ static constexpr unsigned QS1000_CHANNELS = 32;
+ static constexpr offs_t QS1000_ADDRESS_MASK = 0x00ffffff;
+
enum
{
QS1000_KEYON = 1,
@@ -157,7 +157,6 @@ public:
// device type definition
-extern const device_type QS1000;
-
+DECLARE_DEVICE_TYPE(QS1000, qs1000_device)
-#endif /* __QS1000_H__ */
+#endif // MAME_SOUND_QS1000_H
diff --git a/src/devices/sound/qsound.cpp b/src/devices/sound/qsound.cpp
index ea297c03af1..06fdfad684b 100644
--- a/src/devices/sound/qsound.cpp
+++ b/src/devices/sound/qsound.cpp
@@ -20,7 +20,7 @@
- understand higher bits of reg 0
- understand reg 9
- understand other writes to $90-$ff area
-
+
Links:
https://siliconpr0n.org/map/capcom/dl-1425
@@ -30,7 +30,7 @@
#include "qsound.h"
// device type definition
-const device_type QSOUND = device_creator<qsound_device>;
+DEFINE_DEVICE_TYPE(QSOUND, qsound_device, "qsound", "Q-Sound")
// program map for the DSP16A; note that apparently Western Electric/AT&T
@@ -80,7 +80,7 @@ ROM_END
//-------------------------------------------------
qsound_device::qsound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, QSOUND, "Q-Sound", tag, owner, clock, "qsound", __FILE__),
+ : device_t(mconfig, QSOUND, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_cpu(*this, "qsound"),
m_sample_rom(*this, DEVICE_SELF),
diff --git a/src/devices/sound/qsound.h b/src/devices/sound/qsound.h
index 7c73b4ddf63..fa5732dab1f 100644
--- a/src/devices/sound/qsound.h
+++ b/src/devices/sound/qsound.h
@@ -6,10 +6,10 @@
*********************************************************/
-#pragma once
+#ifndef MAME_SOUND_QSOUND_H
+#define MAME_SOUND_QSOUND_H
-#ifndef __QSOUND_H__
-#define __QSOUND_H__
+#pragma once
#include "cpu/dsp16/dsp16.h"
@@ -28,12 +28,10 @@
// ======================> qsound_device
-class qsound_device : public device_t,
- public device_sound_interface
+class qsound_device : public device_t, public device_sound_interface
{
public:
qsound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~qsound_device() { }
DECLARE_WRITE8_MEMBER(qsound_w);
DECLARE_READ8_MEMBER(qsound_r);
@@ -75,7 +73,6 @@ private:
void write_data(uint8_t address, uint16_t data);
};
-extern const device_type QSOUND;
-
+DECLARE_DEVICE_TYPE(QSOUND, qsound_device)
-#endif /* __QSOUND_H__ */
+#endif // MAME_SOUND_QSOUND_H
diff --git a/src/devices/sound/rf5c400.cpp b/src/devices/sound/rf5c400.cpp
index df355b5a03c..39440c66991 100644
--- a/src/devices/sound/rf5c400.cpp
+++ b/src/devices/sound/rf5c400.cpp
@@ -20,19 +20,27 @@
#include "emu.h"
#include "rf5c400.h"
-static int volume_table[256];
-static double pan_table[0x64];
-
-/* envelope parameter (experimental) */
-#define ENV_AR_SPEED 0.1
-#define ENV_MIN_AR 0x02
-#define ENV_MAX_AR 0x80
-#define ENV_DR_SPEED 2.0
-#define ENV_MIN_DR 0x20
-#define ENV_MAX_DR 0x73
-#define ENV_RR_SPEED 0.7
-#define ENV_MIN_RR 0x20
-#define ENV_MAX_RR 0x54
+namespace {
+
+int volume_table[256];
+double pan_table[0x64];
+
+void init_static_tables()
+{
+ // init volume/pan tables
+ double max = 255.0;
+ for (int i = 0; i < 256; i++) {
+ volume_table[i] = uint16_t(max);
+ max /= pow(10.0, double((4.5 / (256.0 / 16.0)) / 20));
+ }
+ for (int i = 0; i < 0x48; i++) {
+ pan_table[i] = sqrt(double(0x47 - i)) / sqrt(double(0x47));
+ }
+ for (int i = 0x48; i < 0x64; i++) {
+ pan_table[i] = 0.0;
+ }
+}
+
/* PCM type */
enum
@@ -52,9 +60,62 @@ enum
PHASE_RELEASE
};
+} // anonymous namespace
+
// device type definition
-const device_type RF5C400 = device_creator<rf5c400_device>;
+DEFINE_DEVICE_TYPE(RF5C400, rf5c400_device, "rf5c400", "Ricoh RF5C400")
+
+
+rf5c400_device::envelope_tables::envelope_tables()
+{
+ std::fill(std::begin(m_ar), std::end(m_ar), 0.0);
+ std::fill(std::begin(m_dr), std::end(m_dr), 0.0);
+ std::fill(std::begin(m_rr), std::end(m_rr), 0.0);
+}
+
+void rf5c400_device::envelope_tables::init(uint32_t clock)
+{
+ /* envelope parameter (experimental) */
+ static constexpr double ENV_AR_SPEED = 0.1;
+ static constexpr int ENV_MIN_AR = 0x02;
+ static constexpr int ENV_MAX_AR = 0x80;
+ static constexpr double ENV_DR_SPEED = 2.0;
+ static constexpr int ENV_MIN_DR = 0x20;
+ static constexpr int ENV_MAX_DR = 0x73;
+ static constexpr double ENV_RR_SPEED = 0.7;
+ static constexpr int ENV_MIN_RR = 0x20;
+ static constexpr int ENV_MAX_RR = 0x54;
+
+ double r;
+
+ // attack
+ r = 1.0 / (ENV_AR_SPEED * (clock / 384));
+ for (int i = 0; i < ENV_MIN_AR; i++)
+ m_ar[i] = 1.0;
+ for (int i = ENV_MIN_AR; i < ENV_MAX_AR; i++)
+ m_ar[i] = r * (ENV_MAX_AR - i) / (ENV_MAX_AR - ENV_MIN_AR);
+ for (int i = ENV_MAX_AR; i < 0x9f; i++)
+ m_ar[i] = 0.0;
+
+ // decay
+ r = -5.0 / (ENV_DR_SPEED * (clock / 384));
+ for (int i = 0; i < ENV_MIN_DR; i++)
+ m_dr[i] = r;
+ for (int i = ENV_MIN_DR; i < ENV_MAX_DR; i++)
+ m_dr[i] = r * (ENV_MAX_DR - i) / (ENV_MAX_DR - ENV_MIN_DR);
+ for (int i = ENV_MAX_DR; i < 0x9f; i++)
+ m_dr[i] = 0.0;
+
+ // release
+ r = -5.0 / (ENV_RR_SPEED * (clock / 384));
+ for (int i = 0; i < ENV_MIN_RR; i++)
+ m_rr[i] = r;
+ for (int i = ENV_MIN_RR; i < ENV_MAX_RR; i++)
+ m_rr[i] = r * (ENV_MAX_RR - i) / (ENV_MAX_RR - ENV_MIN_RR);
+ for (int i = ENV_MAX_RR; i < 0x9f; i++)
+ m_rr[i] = 0.0;
+}
//**************************************************************************
@@ -66,14 +127,12 @@ const device_type RF5C400 = device_creator<rf5c400_device>;
//-------------------------------------------------
rf5c400_device::rf5c400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RF5C400, "RF5C400", tag, owner, clock, "rf5c400", __FILE__),
- device_sound_interface(mconfig, *this),
- m_rom(*this, DEVICE_SELF),
- m_stream(nullptr)
+ : device_t(mconfig, RF5C400, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_rom(*this, DEVICE_SELF)
+ , m_stream(nullptr)
+ , m_env_tables()
{
- memset(m_env_ar_table, 0, sizeof(double)*0x9f);
- memset(m_env_dr_table, 0, sizeof(double)*0x9f);
- memset(m_env_rr_table, 0, sizeof(double)*0x9f);
}
@@ -84,7 +143,45 @@ rf5c400_device::rf5c400_device(const machine_config &mconfig, const char *tag, d
void rf5c400_device::device_start()
{
- rf5c400_init_chip();
+ init_static_tables();
+ m_env_tables.init(clock());
+
+ // init channel info
+ for (rf5c400_channel &chan : m_channels)
+ {
+ chan.env_phase = PHASE_NONE;
+ chan.env_level = 0.0;
+ chan.env_step = 0.0;
+ chan.env_scale = 1.0;
+ }
+
+ for (int i = 0; i < ARRAY_LENGTH(m_channels); i++)
+ {
+ save_item(NAME(m_channels[i].startH), i);
+ save_item(NAME(m_channels[i].startL), i);
+ save_item(NAME(m_channels[i].freq), i);
+ save_item(NAME(m_channels[i].endL), i);
+ save_item(NAME(m_channels[i].endHloopH), i);
+ save_item(NAME(m_channels[i].loopL), i);
+ save_item(NAME(m_channels[i].pan), i);
+ save_item(NAME(m_channels[i].effect), i);
+ save_item(NAME(m_channels[i].volume), i);
+ save_item(NAME(m_channels[i].attack), i);
+ save_item(NAME(m_channels[i].decay), i);
+ save_item(NAME(m_channels[i].release), i);
+ save_item(NAME(m_channels[i].cutoff), i);
+ save_item(NAME(m_channels[i].pos), i);
+ save_item(NAME(m_channels[i].step), i);
+ save_item(NAME(m_channels[i].keyon), i);
+ save_item(NAME(m_channels[i].env_phase), i);
+ save_item(NAME(m_channels[i].env_level), i);
+ save_item(NAME(m_channels[i].env_step), i);
+ save_item(NAME(m_channels[i].env_scale), i);
+ }
+
+ m_stream = stream_alloc(0, 2, clock() / 384);
+
+ m_rommask = m_rom.length() - 1;
}
//-------------------------------------------------
@@ -167,8 +264,7 @@ void rf5c400_device::sound_stream_update(sound_stream &stream, stream_sample_t *
}
else
{
- env_step =
- m_env_dr_table[decode80(channel->decay >> 8)];
+ env_step = m_env_tables.dr(*channel);
}
env_rstep = env_step * channel->env_scale;
}
@@ -217,130 +313,7 @@ void rf5c400_device::sound_stream_update(sound_stream &stream, stream_sample_t *
/*****************************************************************************/
-uint8_t rf5c400_device::decode80(uint8_t val)
-{
- if (val & 0x80)
- {
- val = (val & 0x7f) + 0x1f;
- }
-
- return val;
-}
-
-void rf5c400_device::rf5c400_init_chip()
-{
- int i;
-
- // init volume table
- {
- double max=255.0;
- for (i = 0; i < 256; i++) {
- volume_table[i]=(uint16_t)max;
- max /= pow(10.0,(double)((4.5/(256.0/16.0))/20));
- }
- for(i = 0; i < 0x48; i++) {
- pan_table[i] = sqrt( (double)(0x47 - i) ) / sqrt( (double)0x47 );
- }
- for(i = 0x48; i < 0x64; i++) {
- pan_table[i] = 0.0;
- }
- }
-
- // init envelope table
- {
- double r;
-
- // attack
- r = 1.0 / (ENV_AR_SPEED * (clock() / 384));
- for (i = 0; i < ENV_MIN_AR; i++)
- {
- m_env_ar_table[i] = 1.0;
- }
- for (i = ENV_MIN_AR; i < ENV_MAX_AR; i++)
- {
- m_env_ar_table[i] =
- r * (ENV_MAX_AR - i) / (ENV_MAX_AR - ENV_MIN_AR);
- }
- for (i = ENV_MAX_AR; i < 0x9f; i++)
- {
- m_env_ar_table[i] = 0.0;
- }
-
- // decay
- r = -5.0 / (ENV_DR_SPEED * (clock() / 384));
- for (i = 0; i < ENV_MIN_DR; i++)
- {
- m_env_dr_table[i] = r;
- }
- for (i = ENV_MIN_DR; i < ENV_MAX_DR; i++)
- {
- m_env_dr_table[i] =
- r * (ENV_MAX_DR - i) / (ENV_MAX_DR - ENV_MIN_DR);
- }
- for (i = ENV_MAX_DR; i < 0x9f; i++)
- {
- m_env_dr_table[i] = 0.0;
- }
-
- // release
- r = -5.0 / (ENV_RR_SPEED * (clock() / 384));
- for (i = 0; i < ENV_MIN_RR; i++)
- {
- m_env_rr_table[i] = r;
- }
- for (i = ENV_MIN_RR; i < ENV_MAX_RR; i++)
- {
- m_env_rr_table[i] =
- r * (ENV_MAX_RR - i) / (ENV_MAX_RR - ENV_MIN_RR);
- }
- for (i = ENV_MAX_RR; i < 0x9f; i++)
- {
- m_env_rr_table[i] = 0.0;
- }
- }
-
- // init channel info
- for (i = 0; i < 32; i++)
- {
- m_channels[i].env_phase = PHASE_NONE;
- m_channels[i].env_level = 0.0;
- m_channels[i].env_step = 0.0;
- m_channels[i].env_scale = 1.0;
- }
-
- for (i = 0; i < ARRAY_LENGTH(m_channels); i++)
- {
- save_item(NAME(m_channels[i].startH), i);
- save_item(NAME(m_channels[i].startL), i);
- save_item(NAME(m_channels[i].freq), i);
- save_item(NAME(m_channels[i].endL), i);
- save_item(NAME(m_channels[i].endHloopH), i);
- save_item(NAME(m_channels[i].loopL), i);
- save_item(NAME(m_channels[i].pan), i);
- save_item(NAME(m_channels[i].effect), i);
- save_item(NAME(m_channels[i].volume), i);
- save_item(NAME(m_channels[i].attack), i);
- save_item(NAME(m_channels[i].decay), i);
- save_item(NAME(m_channels[i].release), i);
- save_item(NAME(m_channels[i].cutoff), i);
- save_item(NAME(m_channels[i].pos), i);
- save_item(NAME(m_channels[i].step), i);
- save_item(NAME(m_channels[i].keyon), i);
- save_item(NAME(m_channels[i].env_phase), i);
- save_item(NAME(m_channels[i].env_level), i);
- save_item(NAME(m_channels[i].env_step), i);
- save_item(NAME(m_channels[i].env_scale), i);
- }
-
- m_stream = stream_alloc(0, 2, clock()/384);
-
- m_rommask = m_rom.length() - 1;
-}
-
-
-/*****************************************************************************/
-
-static uint16_t rf5c400_status = 0;
+static uint16_t rf5c400_status = 0; // a static one of these for all instances of the chip? how does that work?
READ16_MEMBER( rf5c400_device::rf5c400_r )
{
switch(offset)
@@ -388,8 +361,7 @@ WRITE16_MEMBER( rf5c400_device::rf5c400_w )
m_channels[ch].env_phase = PHASE_ATTACK;
m_channels[ch].env_level = 0.0;
- m_channels[ch].env_step =
- m_env_ar_table[decode80(m_channels[ch].attack >> 8)];
+ m_channels[ch].env_step = m_env_tables.ar(m_channels[ch]);
break;
case 0x40:
if (m_channels[ch].env_phase != PHASE_NONE)
@@ -401,8 +373,7 @@ WRITE16_MEMBER( rf5c400_device::rf5c400_w )
}
else
{
- m_channels[ch].env_step =
- m_env_rr_table[decode80(m_channels[ch].release >> 8)];
+ m_channels[ch].env_step = m_env_tables.rr(m_channels[ch]);
}
}
break;
diff --git a/src/devices/sound/rf5c400.h b/src/devices/sound/rf5c400.h
index 5ec45d35baf..6fe27863f70 100644
--- a/src/devices/sound/rf5c400.h
+++ b/src/devices/sound/rf5c400.h
@@ -2,10 +2,10 @@
// copyright-holders:Ville Linde
/* Ricoh RF5C400 emulator */
-#pragma once
+#ifndef MAME_SOUND_RF5C400_H
+#define MAME_SOUND_RF5C400_H
-#ifndef __RF5C400_H__
-#define __RF5C400_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -21,57 +21,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-struct rf5c400_channel
-{
- rf5c400_channel() :
- startH(0),
- startL(0),
- freq(0),
- endL(0),
- endHloopH(0),
- loopL(0),
- pan(0),
- effect(0),
- volume(0),
- attack(0),
- decay(0),
- release(0),
- cutoff(0),
- pos(0),
- step(0),
- keyon(0),
- env_phase(0),
- env_level(0.0),
- env_step(0.0),
- env_scale(0.0)
- { }
-
- uint16_t startH;
- uint16_t startL;
- uint16_t freq;
- uint16_t endL;
- uint16_t endHloopH;
- uint16_t loopL;
- uint16_t pan;
- uint16_t effect;
- uint16_t volume;
-
- uint16_t attack;
- uint16_t decay;
- uint16_t release;
-
- uint16_t cutoff;
-
- uint64_t pos;
- uint64_t step;
- uint16_t keyon;
-
- uint8_t env_phase;
- double env_level;
- double env_step;
- double env_scale;
-};
-
// ======================> rf5c400_device
@@ -80,7 +29,9 @@ class rf5c400_device : public device_t,
{
public:
rf5c400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~rf5c400_device() { }
+
+ DECLARE_READ16_MEMBER( rf5c400_r );
+ DECLARE_WRITE16_MEMBER( rf5c400_w );
protected:
// device-level overrides
@@ -89,24 +40,61 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_READ16_MEMBER( rf5c400_r );
- DECLARE_WRITE16_MEMBER( rf5c400_w );
-
private:
- void rf5c400_init_chip();
+ struct rf5c400_channel
+ {
+ rf5c400_channel() { }
+
+ uint16_t startH = 0;
+ uint16_t startL = 0;
+ uint16_t freq = 0;
+ uint16_t endL = 0;
+ uint16_t endHloopH = 0;
+ uint16_t loopL = 0;
+ uint16_t pan = 0;
+ uint16_t effect = 0;
+ uint16_t volume = 0;
+
+ uint16_t attack = 0;
+ uint16_t decay = 0;
+ uint16_t release = 0;
+
+ uint16_t cutoff = 0;
+
+ uint64_t pos = 0;
+ uint64_t step = 0;
+ uint16_t keyon = 0;
+
+ uint8_t env_phase = 0;
+ double env_level = 0.0;
+ double env_step = 0.0;
+ double env_scale = 0.0;
+ };
+
+ class envelope_tables
+ {
+ public:
+ envelope_tables();
+ void init(uint32_t clock);
+ double ar(rf5c400_channel const &chan) const { return m_ar[decode80(chan.attack >> 8)]; }
+ double dr(rf5c400_channel const &chan) const { return m_dr[decode80(chan.decay >> 8)]; }
+ double rr(rf5c400_channel const &chan) const { return m_rr[decode80(chan.release >> 8)]; }
+ private:
+ static constexpr uint8_t decode80(uint8_t val) { return (val & 0x80) ? ((val & 0x7f) + 0x1f) : val; }
+ double m_ar[0x9f];
+ double m_dr[0x9f];
+ double m_rr[0x9f];
+ };
+
uint8_t decode80(uint8_t val);
-private:
required_region_ptr<int16_t> m_rom;
uint32_t m_rommask;
sound_stream *m_stream;
- double m_env_ar_table[0x9f];
- double m_env_dr_table[0x9f];
- double m_env_rr_table[0x9f];
+ envelope_tables m_env_tables;
rf5c400_channel m_channels[32];
@@ -114,7 +102,6 @@ private:
uint16_t m_ext_mem_data;
};
-extern const device_type RF5C400;
-
+DECLARE_DEVICE_TYPE(RF5C400, rf5c400_device)
-#endif /* __RF5C400_H__ */
+#endif // MAME_SOUND_RF5C400_H
diff --git a/src/devices/sound/rf5c68.cpp b/src/devices/sound/rf5c68.cpp
index 532e3dcaf26..05366f3b968 100644
--- a/src/devices/sound/rf5c68.cpp
+++ b/src/devices/sound/rf5c68.cpp
@@ -9,7 +9,7 @@
// device type definition
-const device_type RF5C68 = device_creator<rf5c68_device>;
+DEFINE_DEVICE_TYPE(RF5C68, rf5c68_device, "rf5c68", "Ricoh RF5C68")
//**************************************************************************
@@ -21,14 +21,14 @@ const device_type RF5C68 = device_creator<rf5c68_device>;
//-------------------------------------------------
rf5c68_device::rf5c68_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RF5C68, "RF5C68", tag, owner, clock, "rf5c68", __FILE__),
+ : device_t(mconfig, RF5C68, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_cbank(0),
m_wbank(0),
m_enable(0)
{
- memset(m_data, 0, sizeof(uint8_t)*0x10000);
+ std::fill(std::begin(m_data), std::end(m_data), 0);
}
@@ -56,7 +56,6 @@ void rf5c68_device::sound_stream_update(sound_stream &stream, stream_sample_t **
{
stream_sample_t *left = outputs[0];
stream_sample_t *right = outputs[1];
- int i, j;
/* start with clean buffers */
memset(left, 0, samples * sizeof(*left));
@@ -67,40 +66,38 @@ void rf5c68_device::sound_stream_update(sound_stream &stream, stream_sample_t **
return;
/* loop over channels */
- for (i = 0; i < RF5C68_NUM_CHANNELS; i++)
+ for (pcm_channel &chan : m_chan)
{
- rf5c68_pcm_channel *chan = &m_chan[i];
-
/* if this channel is active, accumulate samples */
- if (chan->enable)
+ if (chan.enable)
{
- int lv = (chan->pan & 0x0f) * chan->env;
- int rv = ((chan->pan >> 4) & 0x0f) * chan->env;
+ int lv = (chan.pan & 0x0f) * chan.env;
+ int rv = ((chan.pan >> 4) & 0x0f) * chan.env;
/* loop over the sample buffer */
- for (j = 0; j < samples; j++)
+ for (int j = 0; j < samples; j++)
{
int sample;
/* trigger sample callback */
if(!m_sample_end_cb.isnull())
{
- if(((chan->addr >> 11) & 0xfff) == 0xfff)
- m_sample_end_cb((chan->addr >> 11)/0x2000);
+ if(((chan.addr >> 11) & 0xfff) == 0xfff)
+ m_sample_end_cb((chan.addr >> 11)/0x2000);
}
/* fetch the sample and handle looping */
- sample = m_data[(chan->addr >> 11) & 0xffff];
+ sample = m_data[(chan.addr >> 11) & 0xffff];
if (sample == 0xff)
{
- chan->addr = chan->loopst << 11;
- sample = m_data[(chan->addr >> 11) & 0xffff];
+ chan.addr = chan.loopst << 11;
+ sample = m_data[(chan.addr >> 11) & 0xffff];
/* if we loop to a loop point, we're effectively dead */
if (sample == 0xff)
break;
}
- chan->addr += chan->step;
+ chan.addr += chan.step;
/* add to the buffer */
if (sample & 0x80)
@@ -119,7 +116,7 @@ void rf5c68_device::sound_stream_update(sound_stream &stream, stream_sample_t **
}
/* now clamp and shift the result (output is only 10 bits) */
- for (j = 0; j < samples; j++)
+ for (int j = 0; j < samples; j++)
{
stream_sample_t temp;
@@ -154,7 +151,7 @@ READ8_MEMBER( rf5c68_device::rf5c68_r )
WRITE8_MEMBER( rf5c68_device::rf5c68_w )
{
- rf5c68_pcm_channel *chan = &m_chan[m_cbank];
+ pcm_channel &chan = m_chan[m_cbank];
int i;
/* force the stream to update first */
@@ -164,33 +161,33 @@ WRITE8_MEMBER( rf5c68_device::rf5c68_w )
switch (offset)
{
case 0x00: /* envelope */
- chan->env = data;
+ chan.env = data;
break;
case 0x01: /* pan */
- chan->pan = data;
+ chan.pan = data;
break;
case 0x02: /* FDL */
- chan->step = (chan->step & 0xff00) | (data & 0x00ff);
+ chan.step = (chan.step & 0xff00) | (data & 0x00ff);
break;
case 0x03: /* FDH */
- chan->step = (chan->step & 0x00ff) | ((data << 8) & 0xff00);
+ chan.step = (chan.step & 0x00ff) | ((data << 8) & 0xff00);
break;
case 0x04: /* LSL */
- chan->loopst = (chan->loopst & 0xff00) | (data & 0x00ff);
+ chan.loopst = (chan.loopst & 0xff00) | (data & 0x00ff);
break;
case 0x05: /* LSH */
- chan->loopst = (chan->loopst & 0x00ff) | ((data << 8) & 0xff00);
+ chan.loopst = (chan.loopst & 0x00ff) | ((data << 8) & 0xff00);
break;
case 0x06: /* ST */
- chan->start = data;
- if (!chan->enable)
- chan->addr = chan->start << (8 + 11);
+ chan.start = data;
+ if (!chan.enable)
+ chan.addr = chan.start << (8 + 11);
break;
case 0x07: /* control reg */
diff --git a/src/devices/sound/rf5c68.h b/src/devices/sound/rf5c68.h
index f16271f1518..2354f874209 100644
--- a/src/devices/sound/rf5c68.h
+++ b/src/devices/sound/rf5c68.h
@@ -4,12 +4,10 @@
/* ricoh RF5C68(or clone) PCM controller */
/*********************************************************/
-#pragma once
-
-#ifndef __RF5C68_H__
-#define __RF5C68_H__
+#ifndef MAME_SOUND_RF5C68_H
+#define MAME_SOUND_RF5C68_H
-#define RF5C68_NUM_CHANNELS (8)
+#pragma once
//**************************************************************************
@@ -22,48 +20,32 @@
MCFG_DEVICE_REPLACE(_tag, RF5C68, _clock)
#define MCFG_RF5C68_SAMPLE_END_CB(_class, _method) \
- rf5c68_device::set_end_callback(*device, rf5c68_sample_end_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ rf5c68_device::set_end_callback(*device, rf5c68_device::sample_end_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<void (int channel)> rf5c68_sample_end_cb_delegate;
-
#define RF5C68_SAMPLE_END_CB_MEMBER(_name) void _name(int channel)
-struct rf5c68_pcm_channel
-{
- rf5c68_pcm_channel() :
- enable(0),
- env(0),
- pan(0),
- start(0),
- addr(0),
- step(0),
- loopst(0) {}
-
- uint8_t enable;
- uint8_t env;
- uint8_t pan;
- uint8_t start;
- uint32_t addr;
- uint16_t step;
- uint16_t loopst;
-};
-
-
// ======================> rf5c68_device
class rf5c68_device : public device_t,
public device_sound_interface
{
public:
+ typedef device_delegate<void (int channel)> sample_end_cb_delegate;
+
rf5c68_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~rf5c68_device() { }
- static void set_end_callback(device_t &device, rf5c68_sample_end_cb_delegate callback) { downcast<rf5c68_device &>(device).m_sample_end_cb = callback; }
+ static void set_end_callback(device_t &device, sample_end_cb_delegate &&cb) { downcast<rf5c68_device &>(device).m_sample_end_cb = std::move(cb); }
+
+ DECLARE_READ8_MEMBER( rf5c68_r );
+ DECLARE_WRITE8_MEMBER( rf5c68_w );
+
+ DECLARE_READ8_MEMBER( rf5c68_mem_r );
+ DECLARE_WRITE8_MEMBER( rf5c68_mem_w );
protected:
// device-level overrides
@@ -72,25 +54,32 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_READ8_MEMBER( rf5c68_r );
- DECLARE_WRITE8_MEMBER( rf5c68_w );
+private:
+ static constexpr unsigned NUM_CHANNELS = 8;
- DECLARE_READ8_MEMBER( rf5c68_mem_r );
- DECLARE_WRITE8_MEMBER( rf5c68_mem_w );
+ struct pcm_channel
+ {
+ pcm_channel() { }
+
+ uint8_t enable = 0;
+ uint8_t env = 0;
+ uint8_t pan = 0;
+ uint8_t start = 0;
+ uint32_t addr = 0;
+ uint16_t step = 0;
+ uint16_t loopst = 0;
+ };
-private:
sound_stream* m_stream;
- rf5c68_pcm_channel m_chan[RF5C68_NUM_CHANNELS];
+ pcm_channel m_chan[NUM_CHANNELS];
uint8_t m_cbank;
uint8_t m_wbank;
uint8_t m_enable;
uint8_t m_data[0x10000];
- rf5c68_sample_end_cb_delegate m_sample_end_cb;
+ sample_end_cb_delegate m_sample_end_cb;
};
-extern const device_type RF5C68;
-
+DECLARE_DEVICE_TYPE(RF5C68, rf5c68_device)
-#endif /* __RF5C68_H__ */
+#endif // MAME_SOUND_RF5C68_H
diff --git a/src/devices/sound/s14001a.cpp b/src/devices/sound/s14001a.cpp
index 9bc112232f2..68bf81212d8 100644
--- a/src/devices/sound/s14001a.cpp
+++ b/src/devices/sound/s14001a.cpp
@@ -106,11 +106,110 @@ and off as it normally does during speech). Once START has gone low-high-low, th
#include "emu.h"
#include "s14001a.h"
+namespace {
+
+uint8_t Mux8To2(bool bVoicedP2, uint8_t uPPQtrP2, uint8_t uDeltaAdrP2, uint8_t uRomDataP2)
+{
+ // pick two bits of rom data as delta
+
+ if (bVoicedP2 && (uPPQtrP2 & 0x01)) // mirroring
+ uDeltaAdrP2 ^= 0x03; // count backwards
+
+ // emulate 8 to 2 mux to obtain delta from byte (bigendian)
+ switch (uDeltaAdrP2)
+ {
+ case 0x00:
+ return (uRomDataP2 & 0xC0) >> 6;
+ case 0x01:
+ return (uRomDataP2 & 0x30) >> 4;
+ case 0x02:
+ return (uRomDataP2 & 0x0C) >> 2;
+ case 0x03:
+ return (uRomDataP2 & 0x03) >> 0;
+ default:
+ return 0xFF;
+ }
+}
+
+
+void CalculateIncrement(bool bVoicedP2, uint8_t uPPQtrP2, bool bPPQStartP2, uint8_t uDelta, uint8_t uDeltaOldP2, uint8_t &uDeltaOldP1, uint8_t &uIncrementP2, bool &bAddP2)
+{
+ // uPPQtr, pitch period quarter counter; 2 lsb of uLength
+ // bPPStart, start of a pitch period
+ // implemented to mimic silicon (a bit)
+
+ // beginning of a pitch period
+ if ((uPPQtrP2 == 0x00) && bPPQStartP2) // note this is done for voiced and unvoiced
+ uDeltaOldP2 = 0x02;
+
+ static constexpr uint8_t uIncrements[4][4] =
+ {
+ // 00 01 10 11
+ { 3, 3, 1, 1,}, // 00
+ { 1, 1, 0, 0,}, // 01
+ { 0, 0, 1, 1,}, // 10
+ { 1, 1, 3, 3 }, // 11
+ };
+
+ bool const MIRROR = BIT(uPPQtrP2, 0);
+
+ // calculate increment from delta, always done even if silent to update uDeltaOld
+ // in silicon a PLA determined 0,1,3 and add/subtract and passed uDelta to uDeltaOld
+ if (!bVoicedP2 || !MIRROR)
+ {
+ uIncrementP2 = uIncrements[uDelta][uDeltaOldP2];
+ bAddP2 = uDelta >= 0x02;
+ }
+ else
+ {
+ uIncrementP2 = uIncrements[uDeltaOldP2][uDelta];
+ bAddP2 = uDeltaOldP2 < 0x02;
+ }
+ uDeltaOldP1 = uDelta;
+ if (bVoicedP2 && bPPQStartP2 && MIRROR)
+ uIncrementP2 = 0; // no change when first starting mirroring
+}
+
+
+uint8_t CalculateOutput(bool bVoiced, bool bXSilence, uint8_t uPPQtr, bool bPPQStart, uint8_t uLOutput, uint8_t uIncrementP2, bool bAddP2)
+{
+ // implemented to mimic silicon (a bit)
+ // limits output to 0x00 and 0x0f
+
+ bool const SILENCE = BIT(uPPQtr, 1);
+
+ // determine output
+ if (bXSilence || (bVoiced && SILENCE))
+ return 7;
+
+ // beginning of a pitch period
+ if ((uPPQtr == 0x00) && bPPQStart) // note this is done for voiced and nonvoiced
+ uLOutput = 7;
+
+ // adder
+ uint8_t uTmp = uLOutput;
+ if (!bAddP2)
+ uTmp ^= 0x0F; // turns subtraction into addition
+
+ // add 0, 1, 3; limit at 15
+ uTmp += uIncrementP2;
+ if (uTmp > 15)
+ uTmp = 15;
+
+ if (!bAddP2)
+ uTmp ^= 0x0F; // turns addition back to subtraction
+
+ return uTmp;
+}
+
+} // anonymous namespace
+
+
// device definition
-const device_type S14001A = device_creator<s14001a_device>;
+DEFINE_DEVICE_TYPE(S14001A, s14001a_device, "s14001a", "SSi TSI S14001A")
s14001a_device::s14001a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, S14001A, "S14001A", tag, owner, clock, "s14001a", __FILE__),
+ : device_t(mconfig, S14001A, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_SpeechRom(*this, DEVICE_SELF),
m_stream(nullptr),
@@ -471,96 +570,6 @@ bool s14001a_device::Clock()
return true;
}
-uint8_t s14001a_device::Mux8To2(bool bVoicedP2, uint8_t uPPQtrP2, uint8_t uDeltaAdrP2, uint8_t uRomDataP2)
-{
- // pick two bits of rom data as delta
-
- if (bVoicedP2 && uPPQtrP2&0x01) // mirroring
- {
- uDeltaAdrP2 ^= 0x03; // count backwards
- }
- // emulate 8 to 2 mux to obtain delta from byte (bigendian)
- switch (uDeltaAdrP2)
- {
- case 0x00:
- return (uRomDataP2&0xC0)>>6;
- case 0x01:
- return (uRomDataP2&0x30)>>4;
- case 0x02:
- return (uRomDataP2&0x0C)>>2;
- case 0x03:
- return (uRomDataP2&0x03)>>0;
- }
- return 0xFF;
-}
-
-void s14001a_device::CalculateIncrement(bool bVoicedP2, uint8_t uPPQtrP2, bool bPPQStartP2, uint8_t uDelta, uint8_t uDeltaOldP2, uint8_t &uDeltaOldP1, uint8_t &uIncrementP2, bool &bAddP2)
-{
- // uPPQtr, pitch period quarter counter; 2 lsb of uLength
- // bPPStart, start of a pitch period
- // implemented to mimic silicon (a bit)
-
- // beginning of a pitch period
- if (uPPQtrP2 == 0x00 && bPPQStartP2) // note this is done for voiced and unvoiced
- {
- uDeltaOldP2 = 0x02;
- }
- static const uint8_t uIncrements[4][4] =
- {
- // 00 01 10 11
- { 3, 3, 1, 1,}, // 00
- { 1, 1, 0, 0,}, // 01
- { 0, 0, 1, 1,}, // 10
- { 1, 1, 3, 3 }, // 11
- };
-
-#define MIRROR (uPPQtrP2&0x01)
-
- // calculate increment from delta, always done even if silent to update uDeltaOld
- // in silicon a PLA determined 0,1,3 and add/subtract and passed uDelta to uDeltaOld
- if (!bVoicedP2 || !MIRROR)
- {
- uIncrementP2 = uIncrements[uDelta][uDeltaOldP2];
- bAddP2 = uDelta >= 0x02;
- }
- else
- {
- uIncrementP2 = uIncrements[uDeltaOldP2][uDelta];
- bAddP2 = uDeltaOldP2 < 0x02;
- }
- uDeltaOldP1 = uDelta;
- if (bVoicedP2 && bPPQStartP2 && MIRROR) uIncrementP2 = 0; // no change when first starting mirroring
-}
-
-uint8_t s14001a_device::CalculateOutput(bool bVoiced, bool bXSilence, uint8_t uPPQtr, bool bPPQStart, uint8_t uLOutput, uint8_t uIncrementP2, bool bAddP2)
-{
- // implemented to mimic silicon (a bit)
- // limits output to 0x00 and 0x0f
- uint8_t uTmp; // used for subtraction
-
-#define SILENCE (uPPQtr&0x02)
-
- // determine output
- if (bXSilence || (bVoiced && SILENCE)) return 7;
-
- // beginning of a pitch period
- if (uPPQtr == 0x00 && bPPQStart) // note this is done for voiced and nonvoiced
- {
- uLOutput = 7;
- }
-
- // adder
- uTmp = uLOutput;
- if (!bAddP2) uTmp ^= 0x0F; // turns subtraction into addition
-
- // add 0, 1, 3; limit at 15
- uTmp += uIncrementP2;
- if (uTmp > 15) uTmp = 15;
-
- if (!bAddP2) uTmp ^= 0x0F; // turns addition back to subtraction
- return uTmp;
-}
-
void s14001a_device::ClearStatistics()
{
m_uNPitchPeriods = 0;
diff --git a/src/devices/sound/s14001a.h b/src/devices/sound/s14001a.h
index f73840102d9..c16d7e0aa75 100644
--- a/src/devices/sound/s14001a.h
+++ b/src/devices/sound/s14001a.h
@@ -5,8 +5,8 @@
SSi TSI S14001A speech IC emulator
*/
-#ifndef __S14001A_H__
-#define __S14001A_H__
+#ifndef MAME_SOUND_S14001A_H
+#define MAME_SOUND_S14001A_H
#define MCFG_S14001A_BSY_HANDLER(_devcb) \
devcb = &s14001a_device::set_bsy_handler(*device, DEVCB_##_devcb);
@@ -15,16 +15,14 @@
devcb = &s14001a_device::set_ext_read_handler(*device, DEVCB_##_devcb);
-class s14001a_device : public device_t,
- public device_sound_interface
+class s14001a_device : public device_t, public device_sound_interface
{
public:
s14001a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~s14001a_device() {}
// static configuration helpers
- template<class _Object> static devcb_base &set_bsy_handler(device_t &device, _Object object) { return downcast<s14001a_device &>(device).m_bsy_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ext_read_handler(device_t &device, _Object object) { return downcast<s14001a_device &>(device).m_ext_read_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_bsy_handler(device_t &device, Object &&cb) { return downcast<s14001a_device &>(device).m_bsy_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast<s14001a_device &>(device).m_ext_read_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ_LINE_MEMBER(busy_r); // /BUSY (pin 40)
DECLARE_READ_LINE_MEMBER(romen_r); // ROM /EN (pin 9)
@@ -42,26 +40,14 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
- required_region_ptr<uint8_t> m_SpeechRom;
- sound_stream * m_stream;
-
- devcb_write_line m_bsy_handler;
- devcb_read8 m_ext_read_handler;
-
uint8_t readmem(uint16_t offset, bool phase);
bool Clock(); // called once to toggle external clock twice
// emulator helper functions
- uint8_t Mux8To2(bool bVoicedP2, uint8_t uPPQtrP2, uint8_t uDeltaAdrP2, uint8_t uRomDataP2);
- void CalculateIncrement(bool bVoicedP2, uint8_t uPPQtrP2, bool bPPQStartP2, uint8_t uDeltaP2, uint8_t uDeltaOldP2, uint8_t &uDeltaOldP1, uint8_t &uIncrementP2, bool &bAddP2);
- uint8_t CalculateOutput(bool bVoicedP2, bool bXSilenceP2, uint8_t uPPQtrP2, bool bPPQStartP2, uint8_t uLOutputP2, uint8_t uIncrementP2, bool bAddP2);
void ClearStatistics();
void GetStatistics(uint32_t &uNPitchPeriods, uint32_t &uNVoiced, uint32_t &uNControlWords);
void SetPrintLevel(uint32_t uPrintLevel) { m_uPrintLevel = uPrintLevel; }
- // internal state
- bool m_bPhase1; // 1 bit internal clock
-
enum states
{
IDLE = 0,
@@ -74,6 +60,15 @@ private:
DELAY
};
+ required_region_ptr<uint8_t> m_SpeechRom;
+ sound_stream * m_stream;
+
+ devcb_write_line m_bsy_handler;
+ devcb_read8 m_ext_read_handler;
+
+ // internal state
+ bool m_bPhase1; // 1 bit internal clock
+
// registers
states m_uStateP1; // 3 bits
states m_uStateP2;
@@ -132,7 +127,6 @@ private:
uint32_t m_uPrintLevel;
};
-extern const device_type S14001A;
-
+DECLARE_DEVICE_TYPE(S14001A, s14001a_device)
-#endif /* __S14001A_H__ */
+#endif // MAME_SOUND_S14001A_H
diff --git a/src/devices/sound/saa1099.cpp b/src/devices/sound/saa1099.cpp
index c1ce05f5a2a..9f58367da5b 100644
--- a/src/devices/sound/saa1099.cpp
+++ b/src/devices/sound/saa1099.cpp
@@ -71,14 +71,14 @@
#define LEFT 0x00
#define RIGHT 0x01
-static const int amplitude_lookup[16] = {
+static constexpr int amplitude_lookup[16] = {
0*32767/16, 1*32767/16, 2*32767/16, 3*32767/16,
4*32767/16, 5*32767/16, 6*32767/16, 7*32767/16,
8*32767/16, 9*32767/16, 10*32767/16, 11*32767/16,
12*32767/16, 13*32767/16, 14*32767/16, 15*32767/16
};
-static const uint8_t envelope[8][64] = {
+static constexpr uint8_t envelope[8][64] = {
/* zero amplitude */
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -123,7 +123,7 @@ static const uint8_t envelope[8][64] = {
// device type definition
-const device_type SAA1099 = device_creator<saa1099_device>;
+DEFINE_DEVICE_TYPE(SAA1099, saa1099_device, "saa1099", "Philips SAA1099")
//**************************************************************************
// LIVE DEVICE
@@ -134,21 +134,21 @@ const device_type SAA1099 = device_creator<saa1099_device>;
//-------------------------------------------------
saa1099_device::saa1099_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SAA1099, "SAA1099", tag, owner, clock, "saa1099", __FILE__),
- device_sound_interface(mconfig, *this),
- m_stream(nullptr),
- m_all_ch_enable(0),
- m_sync_state(0),
- m_selected_reg(0),
- m_sample_rate(0.0)
+ : device_t(mconfig, SAA1099, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_noise_params{ 0, 0 }
+ , m_env_enable{ 0, 0 }
+ , m_env_reverse_right{ 0, 0 }
+ , m_env_mode{ 0, 0 }
+ , m_env_bits{ 0, 0 }
+ , m_env_clock{ 0, 0 }
+ , m_env_step{ 0, 0 }
+ , m_all_ch_enable(0)
+ , m_sync_state(0)
+ , m_selected_reg(0)
+ , m_sample_rate(0.0)
{
- memset(m_noise_params, 0, sizeof(int)*2);
- memset(m_env_enable, 0, sizeof(int)*2);
- memset(m_env_reverse_right, 0, sizeof(int)*2);
- memset(m_env_mode, 0, sizeof(int)*2);
- memset(m_env_bits, 0, sizeof(int)*2);
- memset(m_env_clock, 0, sizeof(int)*2);
- memset(m_env_step, 0, sizeof(int)*2);
}
diff --git a/src/devices/sound/saa1099.h b/src/devices/sound/saa1099.h
index 6863bd73e76..db89f8ccbd1 100644
--- a/src/devices/sound/saa1099.h
+++ b/src/devices/sound/saa1099.h
@@ -4,10 +4,10 @@
Philips SAA1099 Sound driver
**********************************************/
-#pragma once
+#ifndef MAME_SOUND_SAA1099_H
+#define MAME_SOUND_SAA1099_H
-#ifndef __SAA1099_H__
-#define __SAA1099_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -23,47 +23,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-struct saa1099_channel
-{
- saa1099_channel() :
- frequency(0),
- freq_enable(0),
- noise_enable(0),
- octave(0),
- counter(0.0),
- freq(0.0),
- level(0)
- {
- memset(amplitude, 0, sizeof(int)*2);
- memset(envelope, 0, sizeof(int)*2);
- }
-
- int frequency; /* frequency (0x00..0xff) */
- int freq_enable; /* frequency enable */
- int noise_enable; /* noise enable */
- int octave; /* octave (0x00..0x07) */
- int amplitude[2]; /* amplitude (0x00..0x0f) */
- int envelope[2]; /* envelope (0x00..0x0f or 0x10 == off) */
-
- /* vars to simulate the square wave */
- double counter;
- double freq;
- int level;
-};
-
-struct saa1099_noise
-{
- saa1099_noise() :
- counter(0.0),
- freq(0.0),
- level(0xFFFFFFFF) {}
-
- /* vars to simulate the noise generator output */
- double counter;
- double freq;
- uint32_t level; /* noise polynomial shifter */
-};
-
// ======================> saa1099_device
@@ -72,7 +31,9 @@ class saa1099_device : public device_t,
{
public:
saa1099_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~saa1099_device() { }
+
+ DECLARE_WRITE8_MEMBER( control_w );
+ DECLARE_WRITE8_MEMBER( data_w );
protected:
// device-level overrides
@@ -81,14 +42,36 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_WRITE8_MEMBER( control_w );
- DECLARE_WRITE8_MEMBER( data_w );
-
private:
+ struct saa1099_channel
+ {
+ saa1099_channel() : amplitude{ 0, 0 }, envelope{ 0, 0 } { }
+
+ int frequency = 0; /* frequency (0x00..0xff) */
+ int freq_enable = 0; /* frequency enable */
+ int noise_enable = 0; /* noise enable */
+ int octave = 0; /* octave (0x00..0x07) */
+ int amplitude[2]; /* amplitude (0x00..0x0f) */
+ int envelope[2]; /* envelope (0x00..0x0f or 0x10 == off) */
+
+ /* vars to simulate the square wave */
+ double counter = 0.0;
+ double freq = 0.0;
+ int level = 0;
+ };
+
+ struct saa1099_noise
+ {
+ saa1099_noise() { }
+
+ /* vars to simulate the noise generator output */
+ double counter = 0.0;
+ double freq = 0.0;
+ uint32_t level = 0xFFFFFFFF; /* noise polynomial shifter */
+ };
+
void envelope_w(int ch);
-private:
sound_stream *m_stream; /* our stream */
int m_noise_params[2]; /* noise generators parameters */
int m_env_enable[2]; /* envelope generators enable */
@@ -106,7 +89,6 @@ private:
int m_master_clock;
};
-extern const device_type SAA1099;
-
+DECLARE_DEVICE_TYPE(SAA1099, saa1099_device)
-#endif /* __SAA1099_H__ */
+#endif // MAME_SOUND_SAA1099_H
diff --git a/src/devices/sound/samples.cpp b/src/devices/sound/samples.cpp
index 3363d8ad026..40ff619cdce 100644
--- a/src/devices/sound/samples.cpp
+++ b/src/devices/sound/samples.cpp
@@ -23,8 +23,10 @@
***************************************************************************/
#include "emu.h"
-#include "emuopts.h"
#include "samples.h"
+
+#include "emuopts.h"
+
#include "flac.h"
@@ -33,7 +35,7 @@
//**************************************************************************
// device type definition
-const device_type SAMPLES = device_creator<samples_device>;
+DEFINE_DEVICE_TYPE(SAMPLES, samples_device, "samples", "Samples")
@@ -46,18 +48,15 @@ const device_type SAMPLES = device_creator<samples_device>;
//-------------------------------------------------
samples_device::samples_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SAMPLES, "Samples", tag, owner, clock, "samples", __FILE__),
- device_sound_interface(mconfig, *this),
- m_channels(0),
- m_names(nullptr)
+ : samples_device(mconfig, SAMPLES, tag, owner, clock)
{
}
-samples_device::samples_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sound_interface(mconfig, *this),
- m_channels(0),
- m_names(nullptr)
+samples_device::samples_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_channels(0)
+ , m_names(nullptr)
{
}
diff --git a/src/devices/sound/samples.h b/src/devices/sound/samples.h
index 798dccc588f..7b0c4cc3446 100644
--- a/src/devices/sound/samples.h
+++ b/src/devices/sound/samples.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef MAME_DEVICES_SOUND_SAMPLES_H
-#define MAME_DEVICES_SOUND_SAMPLES_H
+#ifndef MAME_SOUND_SAMPLES_H
+#define MAME_SOUND_SAMPLES_H
#pragma once
@@ -19,7 +19,7 @@
//**************************************************************************
// device type definition
-extern const device_type SAMPLES;
+DECLARE_DEVICE_TYPE(SAMPLES, samples_device)
@@ -33,12 +33,10 @@ extern const device_type SAMPLES;
#define MCFG_SAMPLES_NAMES(_names) \
samples_device::static_set_samples_names(*device, _names);
-typedef device_delegate<void ()> samples_start_cb_delegate;
-
#define SAMPLES_START_CB_MEMBER(_name) void _name()
#define MCFG_SAMPLES_START_CB(_class, _method) \
- samples_device::set_samples_start_callback(*device, samples_start_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ samples_device::set_samples_start_callback(*device, samples_device::start_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
//**************************************************************************
// TYPE DEFINITIONS
@@ -50,13 +48,15 @@ class samples_device : public device_t,
public device_sound_interface
{
public:
+ typedef device_delegate<void ()> start_cb_delegate;
+
// construction/destruction
samples_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
static void static_set_channels(device_t &device, uint8_t channels) { downcast<samples_device &>(device).m_channels = channels; }
static void static_set_samples_names(device_t &device, const char *const *names) { downcast<samples_device &>(device).m_names = names; }
- static void set_samples_start_callback(device_t &device, samples_start_cb_delegate callback) { downcast<samples_device &>(device).m_samples_start_cb = callback; }
+ static void set_samples_start_callback(device_t &device, start_cb_delegate &&cb) { downcast<samples_device &>(device).m_samples_start_cb = std::move(cb); }
// getters
bool playing(uint8_t channel) const;
@@ -87,11 +87,10 @@ public:
// interface
uint8_t m_channels; // number of discrete audio channels needed
const char *const *m_names; // array of sample names
- samples_start_cb_delegate m_samples_start_cb; // optional callback
protected:
// subclasses can do it this way
- samples_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ samples_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -121,14 +120,16 @@ protected:
static bool read_flac_sample(emu_file &file, sample_t &sample);
bool load_samples();
+ start_cb_delegate m_samples_start_cb; // optional callback
+
// internal state
std::vector<channel_t> m_channel;
std::vector<sample_t> m_sample;
// internal constants
- static const uint8_t FRAC_BITS = 24;
- static const uint32_t FRAC_ONE = 1 << FRAC_BITS;
- static const uint32_t FRAC_MASK = FRAC_ONE - 1;
+ static constexpr uint8_t FRAC_BITS = 24;
+ static constexpr uint32_t FRAC_ONE = 1 << FRAC_BITS;
+ static constexpr uint32_t FRAC_MASK = FRAC_ONE - 1;
};
// iterator, since lots of people are interested in these devices
@@ -148,12 +149,12 @@ public:
}
// getters
- const char *altbasename() const { return (m_samples.m_names != nullptr && m_samples.m_names[0] != nullptr && m_samples.m_names[0][0] == '*') ? &m_samples.m_names[0][1] : nullptr; }
+ const char *altbasename() const { return (m_samples.m_names && m_samples.m_names[0] && m_samples.m_names[0][0] == '*') ? &m_samples.m_names[0][1] : nullptr; }
// iteration
const char *first()
{
- if (m_samples.m_names == nullptr || m_samples.m_names[0] == nullptr)
+ if (!m_samples.m_names || !m_samples.m_names[0])
return nullptr;
m_current = 0;
if (m_samples.m_names[0][0] == '*')
@@ -163,7 +164,7 @@ public:
const char *next()
{
- if (m_current == -1 || m_samples.m_names[m_current] == nullptr)
+ if (m_current == -1 || !m_samples.m_names[m_current])
return nullptr;
return m_samples.m_names[m_current++];
}
@@ -171,9 +172,9 @@ public:
// counting
int count()
{
- int save = m_current;
+ int const save = m_current;
int result = 0;
- for (const char *scan = first(); scan != nullptr; scan = next())
+ for (const char *scan = first(); scan; scan = next())
result++;
m_current = save;
return result;
@@ -185,5 +186,4 @@ private:
int m_current;
};
-
-#endif // MAME_DEVICES_SOUND_SAMPLES_H
+#endif // MAME_SOUND_SAMPLES_H
diff --git a/src/devices/sound/sb0400.cpp b/src/devices/sound/sb0400.cpp
index 6fbbf0a2f85..22b256ccfbe 100644
--- a/src/devices/sound/sb0400.cpp
+++ b/src/devices/sound/sb0400.cpp
@@ -3,13 +3,13 @@
#include "emu.h"
#include "sb0400.h"
-const device_type SB0400 = device_creator<sb0400_device>;
+DEFINE_DEVICE_TYPE(SB0400, sb0400_device, "sb0400", "Creative Labs SB0400 Audigy2 Value")
DEVICE_ADDRESS_MAP_START(map, 32, sb0400_device)
ADDRESS_MAP_END
sb0400_device::sb0400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, SB0400, "Creative Labs SB0400 Audigy2 Value", tag, owner, clock, "sb0400", __FILE__)
+ : pci_device(mconfig, SB0400, tag, owner, clock)
{
}
diff --git a/src/devices/sound/sb0400.h b/src/devices/sound/sb0400.h
index cf4c899b9ee..b2d612a6dc9 100644
--- a/src/devices/sound/sb0400.h
+++ b/src/devices/sound/sb0400.h
@@ -2,8 +2,8 @@
// copyright-holders:Olivier Galibert
// Creative labs SB0400 Audigy2 Value
-#ifndef SB0400_H
-#define SB0400_H
+#ifndef MAME_SOUND_SB0400_H
+#define MAME_SOUND_SB0400_H
#include "machine/pci.h"
@@ -22,6 +22,6 @@ private:
DECLARE_ADDRESS_MAP(map, 32);
};
-extern const device_type SB0400;
+DECLARE_DEVICE_TYPE(SB0400, sb0400_device)
-#endif
+#endif // MAME_SOUND_SB0400_H
diff --git a/src/devices/sound/scsp.cpp b/src/devices/sound/scsp.cpp
index 41bcaf13c8d..9ca21c9db55 100644
--- a/src/devices/sound/scsp.cpp
+++ b/src/devices/sound/scsp.cpp
@@ -31,9 +31,10 @@
*/
#include "emu.h"
-#include "sound/cdda.h"
#include "scsp.h"
+#include "sound/cdda.h"
+
#define ICLIP16(x) (x<-32768)?-32768:((x>32767)?32767:x)
@@ -111,19 +112,19 @@ static const double DRTimes[64]={100000/*infinity*/,100000/*infinity*/,118200.0,
28.0,25.0,22.0,18.0,14.0,12.0,11.0,8.5,7.1,6.1,5.4,4.3,3.6,3.1};
#define MEM4B() ((m_udata.data[0]>>0x0)&0x0200)
-#define DAC18B() ((m_udata.data[0]>>0x0)&0x0100)
+#define DAC18B() ((m_udata.data[0]>>0x0)&0x0100)
#define MVOL() ((m_udata.data[0]>>0x0)&0x000F)
#define RBL() ((m_udata.data[1]>>0x7)&0x0003)
#define RBP() ((m_udata.data[1]>>0x0)&0x003F)
-#define MOFULL() ((m_udata.data[2]>>0x0)&0x1000)
-#define MOEMPTY() ((m_udata.data[2]>>0x0)&0x0800)
+#define MOFULL() ((m_udata.data[2]>>0x0)&0x1000)
+#define MOEMPTY() ((m_udata.data[2]>>0x0)&0x0800)
#define MIOVF() ((m_udata.data[2]>>0x0)&0x0400)
-#define MIFULL() ((m_udata.data[2]>>0x0)&0x0200)
-#define MIEMPTY() ((m_udata.data[2]>>0x0)&0x0100)
+#define MIFULL() ((m_udata.data[2]>>0x0)&0x0200)
+#define MIEMPTY() ((m_udata.data[2]>>0x0)&0x0100)
-#define SCILV0() ((m_udata.data[0x24/2]>>0x0)&0xff)
-#define SCILV1() ((m_udata.data[0x26/2]>>0x0)&0xff)
-#define SCILV2() ((m_udata.data[0x28/2]>>0x0)&0xff)
+#define SCILV0() ((m_udata.data[0x24/2]>>0x0)&0xff)
+#define SCILV1() ((m_udata.data[0x26/2]>>0x0)&0xff)
+#define SCILV2() ((m_udata.data[0x28/2]>>0x0)&0xff)
#define SCIEX0 0
#define SCIEX1 1
@@ -141,10 +142,10 @@ static const double DRTimes[64]={100000/*infinity*/,100000/*infinity*/,118200.0,
static const float SDLT[8]={-1000000.0f,-36.0f,-30.0f,-24.0f,-18.0f,-12.0f,-6.0f,0.0f};
-const device_type SCSP = device_creator<scsp_device>;
+DEFINE_DEVICE_TYPE(SCSP, scsp_device, "scsp", "YMF292-F SCSP")
scsp_device::scsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SCSP, "SCSP", tag, owner, clock, "scsp", __FILE__),
+ : device_t(mconfig, SCSP, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_roffset(0),
m_irq_cb(*this),
@@ -499,7 +500,7 @@ void scsp_device::init()
{
int i;
- SCSPDSP_Init(&m_DSP);
+ m_DSP.Init();
m_IrqTimA = m_IrqTimBC = m_IrqMidi = 0;
m_MidiR=m_MidiW = 0;
@@ -954,7 +955,7 @@ void scsp_device::w16(address_space &space,unsigned int addr,unsigned short val)
if(addr==0xBF0)
{
- SCSPDSP_Start(&m_DSP);
+ m_DSP.Start();
}
}
}
@@ -1241,7 +1242,7 @@ void scsp_device::DoMasterSamples(int nsamples)
for(sl=0;sl<32;++sl)
{
-#if FM_DELAY
+#if SCSP_FM_DELAY
m_RBUFDST=m_DELAYBUF+m_DELAYPTR;
#else
m_RBUFDST=m_RINGBUF+m_BUFPTR;
@@ -1255,7 +1256,7 @@ void scsp_device::DoMasterSamples(int nsamples)
sample=UpdateSlot(slot);
Enc=((TL(slot))<<0x0)|((IMXL(slot))<<0xd);
- SCSPDSP_SetSample(&m_DSP,(sample*m_LPANTABLE[Enc])>>(SHIFT-2),ISEL(slot),IMXL(slot));
+ m_DSP.SetSample((sample*m_LPANTABLE[Enc])>>(SHIFT-2),ISEL(slot),IMXL(slot));
Enc=((TL(slot))<<0x0)|((DIPAN(slot))<<0x8)|((DISDL(slot))<<0xd);
{
smpl+=(sample*m_LPANTABLE[Enc])>>SHIFT;
@@ -1263,18 +1264,18 @@ void scsp_device::DoMasterSamples(int nsamples)
}
}
-#if FM_DELAY
- m_RINGBUF[(m_BUFPTR+64-(FM_DELAY-1))&63] = m_DELAYBUF[(m_DELAYPTR+FM_DELAY-(FM_DELAY-1))%FM_DELAY];
+#if SCSP_FM_DELAY
+ m_RINGBUF[(m_BUFPTR+64-(SCSP_FM_DELAY-1))&63] = m_DELAYBUF[(m_DELAYPTR+SCSP_FM_DELAY-(SCSP_FM_DELAY-1))%SCSP_FM_DELAY];
#endif
++m_BUFPTR;
m_BUFPTR&=63;
-#if FM_DELAY
+#if SCSP_FM_DELAY
++m_DELAYPTR;
- if(m_DELAYPTR>FM_DELAY-1) m_DELAYPTR=0;
+ if(m_DELAYPTR>SCSP_FM_DELAY-1) m_DELAYPTR=0;
#endif
}
- SCSPDSP_Step(&m_DSP);
+ m_DSP.Step();
for(i=0;i<16;++i)
{
diff --git a/src/devices/sound/scsp.h b/src/devices/sound/scsp.h
index fe3101b7827..54aad08ae5e 100644
--- a/src/devices/sound/scsp.h
+++ b/src/devices/sound/scsp.h
@@ -4,14 +4,14 @@
SCSP (YMF292-F) header
*/
-#pragma once
+#ifndef MAME_SOUND_SCSP_H
+#define MAME_SOUND_SCSP_H
-#ifndef __SCSP_H__
-#define __SCSP_H__
+#pragma once
#include "scspdsp.h"
-#define FM_DELAY 0 // delay in number of slots processed before samples are written to the FM ring buffer
+#define SCSP_FM_DELAY 0 // delay in number of slots processed before samples are written to the FM ring buffer
// driver code indicates should be 4, but sounds distorted then
@@ -25,54 +25,6 @@
devcb = &scsp_device::set_main_irq_callback(*device, DEVCB_##_devcb);
-enum SCSP_STATE {SCSP_ATTACK,SCSP_DECAY1,SCSP_DECAY2,SCSP_RELEASE};
-
-struct SCSP_EG_t
-{
- int volume; //
- SCSP_STATE state;
- int step;
- //step vals
- int AR; //Attack
- int D1R; //Decay1
- int D2R; //Decay2
- int RR; //Release
-
- int DL; //Decay level
- uint8_t EGHOLD;
- uint8_t LPLINK;
-};
-
-struct SCSP_LFO_t
-{
- uint16_t phase;
- uint32_t phase_step;
- int *table;
- int *scale;
-};
-
-struct SCSP_SLOT
-{
- union
- {
- uint16_t data[0x10]; //only 0x1a bytes used
- uint8_t datab[0x20];
- } udata;
-
- uint8_t Backwards; //the wave is playing backwards
- uint8_t active; //this slot is currently playing
- uint8_t *base; //samples base address
- uint32_t cur_addr; //current play address (24.8)
- uint32_t nxt_addr; //next play address
- uint32_t step; //pitch step (24.8)
- SCSP_EG_t EG; //Envelope
- SCSP_LFO_t PLFO; //Phase LFO
- SCSP_LFO_t ALFO; //Amplitude LFO
- int slot;
- int16_t Prev; //Previous sample (for interpolation)
-};
-
-
class scsp_device : public device_t,
public device_sound_interface
{
@@ -80,8 +32,8 @@ public:
scsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_roffset(device_t &device, int roffset) { downcast<scsp_device &>(device).m_roffset = roffset; }
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<scsp_device &>(device).m_irq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_main_irq_callback(device_t &device, _Object object) { return downcast<scsp_device &>(device).m_main_irq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<scsp_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_main_irq_callback(device_t &device, Object &&cb) { return downcast<scsp_device &>(device).m_main_irq_cb.set_callback(std::forward<Object>(cb)); }
// SCSP register access
DECLARE_READ16_MEMBER( read );
@@ -101,6 +53,53 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ enum SCSP_STATE { SCSP_ATTACK, SCSP_DECAY1, SCSP_DECAY2, SCSP_RELEASE };
+
+ struct SCSP_EG_t
+ {
+ int volume; //
+ SCSP_STATE state;
+ int step;
+ //step vals
+ int AR; //Attack
+ int D1R; //Decay1
+ int D2R; //Decay2
+ int RR; //Release
+
+ int DL; //Decay level
+ uint8_t EGHOLD;
+ uint8_t LPLINK;
+ };
+
+ struct SCSP_LFO_t
+ {
+ uint16_t phase;
+ uint32_t phase_step;
+ int *table;
+ int *scale;
+ };
+
+ struct SCSP_SLOT
+ {
+ union
+ {
+ uint16_t data[0x10]; //only 0x1a bytes used
+ uint8_t datab[0x20];
+ } udata;
+
+ uint8_t Backwards; //the wave is playing backwards
+ uint8_t active; //this slot is currently playing
+ uint8_t *base; //samples base address
+ uint32_t cur_addr; //current play address (24.8)
+ uint32_t nxt_addr; //next play address
+ uint32_t step; //pitch step (24.8)
+ SCSP_EG_t EG; //Envelope
+ SCSP_LFO_t PLFO; //Phase LFO
+ SCSP_LFO_t ALFO; //Amplitude LFO
+ int slot;
+ int16_t Prev; //Previous sample (for interpolation)
+ };
+
int m_roffset; /* offset in the region */
devcb_write8 m_irq_cb; /* irq callback */
devcb_write_line m_main_irq_cb;
@@ -114,8 +113,8 @@ private:
SCSP_SLOT m_Slots[32];
int16_t m_RINGBUF[128];
uint8_t m_BUFPTR;
-#if FM_DELAY
- int16_t m_DELAYBUF[FM_DELAY];
+#if SCSP_FM_DELAY
+ int16_t m_DELAYBUF[SCSP_FM_DELAY];
uint8_t m_DELAYPTR;
#endif
uint8_t *m_SCSPRAM;
@@ -209,7 +208,6 @@ private:
void LFO_ComputeStep(SCSP_LFO_t *LFO, uint32_t LFOF, uint32_t LFOWS, uint32_t LFOS, int ALFO);
};
-extern const device_type SCSP;
-
+DECLARE_DEVICE_TYPE(SCSP, scsp_device)
-#endif /* __SCSP_H__ */
+#endif // MAME_SOUND_SCSP_H
diff --git a/src/devices/sound/scspdsp.cpp b/src/devices/sound/scspdsp.cpp
index aa98600577e..7a93d27cc86 100644
--- a/src/devices/sound/scspdsp.cpp
+++ b/src/devices/sound/scspdsp.cpp
@@ -3,15 +3,14 @@
#include "emu.h"
#include "scspdsp.h"
-static uint16_t PACK(int32_t val)
-{
- uint32_t temp;
- int sign,exponent,k;
+namespace {
- sign = (val >> 23) & 0x1;
- temp = (val ^ (val << 1)) & 0xFFFFFF;
- exponent = 0;
- for (k=0; k<12; k++)
+uint16_t PACK(int32_t val)
+{
+ int const sign = BIT(val, 23);
+ uint32_t temp = (val ^ (val << 1)) & 0xFFFFFF;
+ int exponent = 0;
+ for (int k=0; k<12; k++)
{
if (temp & 0x800000)
break;
@@ -27,25 +26,24 @@ static uint16_t PACK(int32_t val)
val |= sign << 15;
val |= exponent << 11;
- return (uint16_t)val;
+ return uint16_t(val);
}
static int32_t UNPACK(uint16_t val)
{
- int sign,exponent,mantissa;
- int32_t uval;
-
- sign = (val >> 15) & 0x1;
- exponent = (val >> 11) & 0xF;
- mantissa = val & 0x7FF;
- uval = mantissa << 11;
+ int const sign = BIT(val, 15);
+ int exponent = (val >> 11) & 0xF;
+ int const mantissa = val & 0x7FF;
+ uint32_t uval = mantissa << 11;
if (exponent > 11)
{
exponent = 11;
uval |= sign << 22;
}
else
+ {
uval |= (sign ^ 1) << 22;
+ }
uval |= sign << 23;
uval <<= 8;
uval >>= 8;
@@ -54,82 +52,80 @@ static int32_t UNPACK(uint16_t val)
return uval;
}
-void SCSPDSP_Init(SCSPDSP *DSP)
+} // anonymous namespace
+
+
+void SCSPDSP::Init()
{
- memset(DSP,0,sizeof(SCSPDSP));
- DSP->RBL=0x8000;
- DSP->Stopped=1;
+ memset(this, 0, sizeof(*this));
+ RBL = 0x8000;
+ Stopped = 1;
}
-void SCSPDSP_Step(SCSPDSP *DSP)
+void SCSPDSP::Step()
{
- int32_t ACC=0; //26 bit
- int32_t SHIFTED=0; //24 bit
- int32_t X; //24 bit
- int32_t Y=0; //13 bit
- int32_t B; //26 bit
- int32_t INPUTS; //24 bit
- int32_t MEMVAL=0;
- int32_t FRC_REG=0; //13 bit
- int32_t Y_REG=0; //24 bit
- uint32_t ADDR;
- uint32_t ADRS_REG=0; //13 bit
- int step;
-
- if(DSP->Stopped)
+ if (Stopped)
return;
- memset(DSP->EFREG,0,2*16);
+ std::fill(std::begin(EFREG), std::end(EFREG), 0);
+
#if 0
int dump=0;
FILE *f=nullptr;
if(dump)
f=fopen("dsp.txt","wt");
#endif
- for(step=0;step</*128*/DSP->LastStep;++step)
+
+ int32_t ACC=0; //26 bit
+ int32_t SHIFTED=0; //24 bit
+ int32_t Y=0; //13 bit
+ int32_t MEMVAL=0;
+ int32_t FRC_REG=0; //13 bit
+ int32_t Y_REG=0; //24 bit
+ uint32_t ADRS_REG=0; //13 bit
+
+ for (int step = 0; step < /*128*/LastStep; ++step)
{
- uint16_t *IPtr=DSP->MPRO+step*4;
-
-// if(IPtr[0]==0 && IPtr[1]==0 && IPtr[2]==0 && IPtr[3]==0)
-// break;
-
- uint32_t TRA=(IPtr[0]>>8)&0x7F;
- uint32_t TWT=(IPtr[0]>>7)&0x01;
- uint32_t TWA=(IPtr[0]>>0)&0x7F;
-
- uint32_t XSEL=(IPtr[1]>>15)&0x01;
- uint32_t YSEL=(IPtr[1]>>13)&0x03;
- uint32_t IRA=(IPtr[1]>>6)&0x3F;
- uint32_t IWT=(IPtr[1]>>5)&0x01;
- uint32_t IWA=(IPtr[1]>>0)&0x1F;
-
- uint32_t TABLE=(IPtr[2]>>15)&0x01;
- uint32_t MWT=(IPtr[2]>>14)&0x01;
- uint32_t MRD=(IPtr[2]>>13)&0x01;
- uint32_t EWT=(IPtr[2]>>12)&0x01;
- uint32_t EWA=(IPtr[2]>>8)&0x0F;
- uint32_t ADRL=(IPtr[2]>>7)&0x01;
- uint32_t FRCL=(IPtr[2]>>6)&0x01;
- uint32_t SHIFT=(IPtr[2]>>4)&0x03;
- uint32_t YRL=(IPtr[2]>>3)&0x01;
- uint32_t NEGB=(IPtr[2]>>2)&0x01;
- uint32_t ZERO=(IPtr[2]>>1)&0x01;
- uint32_t BSEL=(IPtr[2]>>0)&0x01;
-
- uint32_t NOFL=(IPtr[3]>>15)&1; //????
- uint32_t COEF=(IPtr[3]>>9)&0x3f;
-
- uint32_t MASA=(IPtr[3]>>2)&0x1f; //???
- uint32_t ADREB=(IPtr[3]>>1)&0x1;
- uint32_t NXADR=(IPtr[3]>>0)&0x1;
-
- int64_t v;
+ uint16_t *const IPtr = MPRO + step*4;
+
+ //if (!IPtr[0] && !IPtr[1] && !IPtr[2] && !IPtr[3])
+ //break;
+
+ uint32_t const TRA =(IPtr[0] >> 8) & 0x7F;
+ uint32_t const TWT =(IPtr[0] >> 7) & 0x01;
+ uint32_t const TWA =(IPtr[0] >> 0) & 0x7F;
+
+ uint32_t const XSEL =(IPtr[1] >> 15) & 0x01;
+ uint32_t const YSEL =(IPtr[1] >> 13) & 0x03;
+ uint32_t const IRA =(IPtr[1] >> 6) & 0x3F;
+ uint32_t const IWT =(IPtr[1] >> 5) & 0x01;
+ uint32_t const IWA =(IPtr[1] >> 0) & 0x1F;
+
+ uint32_t const TABLE =(IPtr[2] >> 15) & 0x01;
+ uint32_t const MWT =(IPtr[2] >> 14) & 0x01;
+ uint32_t const MRD =(IPtr[2] >> 13) & 0x01;
+ uint32_t const EWT =(IPtr[2] >> 12) & 0x01;
+ uint32_t const EWA =(IPtr[2] >> 8) & 0x0F;
+ uint32_t const ADRL =(IPtr[2] >> 7) & 0x01;
+ uint32_t const FRCL =(IPtr[2] >> 6) & 0x01;
+ uint32_t const SHIFT =(IPtr[2] >> 4) & 0x03;
+ uint32_t const YRL =(IPtr[2] >> 3) & 0x01;
+ uint32_t const NEGB =(IPtr[2] >> 2) & 0x01;
+ uint32_t const ZERO =(IPtr[2] >> 1) & 0x01;
+ uint32_t const BSEL =(IPtr[2] >> 0) & 0x01;
+
+ uint32_t const NOFL =(IPtr[3] >> 15) & 0x01; //????
+ uint32_t const COEF =(IPtr[3] >> 9) & 0x3f;
+
+ uint32_t const MASA =(IPtr[3] >> 2) & 0x1f; //???
+ uint32_t const ADREB =(IPtr[3] >> 1) & 0x01;
+ uint32_t const NXADR =(IPtr[3] >> 0) & 0x01;
//operations are done at 24 bit precision
#if 0
- if(MASA)
+ if (MASA)
int a=1;
- if(NOFL)
+ if (NOFL)
int a=1;
// int dump=0;
@@ -153,203 +149,194 @@ void SCSPDSP_Step(SCSPDSP *DSP)
fprintf(f,"\n");
}
#endif
+
//INPUTS RW
-// colmns97 hits this
-// assert(IRA<0x32);
- if(IRA<=0x1f)
- INPUTS=DSP->MEMS[IRA];
- else if(IRA<=0x2F)
- INPUTS=DSP->MIXS[IRA-0x20]<<4; //MIXS is 20 bit
- else if(IRA<=0x31)
- INPUTS=0;
+ // colmns97 hits this
+ //assert(IRA<0x32);
+ int32_t INPUTS; // 24-bit
+ if (IRA <= 0x1f)
+ INPUTS = MEMS[IRA];
+ else if (IRA <= 0x2F)
+ INPUTS = MIXS[IRA - 0x20] << 4; //MIXS is 20 bit
+ else if (IRA <= 0x31)
+ INPUTS = 0;
else
return;
- INPUTS<<=8;
- INPUTS>>=8;
- //if(INPUTS&0x00800000)
- // INPUTS|=0xFF000000;
+ INPUTS <<= 8;
+ INPUTS >>= 8;
+ //if(INPUTS & 0x00800000)
+ //INPUTS |= 0xFF000000;
- if(IWT)
+ if (IWT)
{
- DSP->MEMS[IWA]=MEMVAL; //MEMVAL was selected in previous MRD
- if(IRA==IWA)
- INPUTS=MEMVAL;
+ MEMS[IWA] = MEMVAL; // MEMVAL was selected in previous MRD
+ if (IRA == IWA)
+ INPUTS = MEMVAL;
}
//Operand sel
- //B
- if(!ZERO)
+ int32_t B; // 26-bit
+ if (!ZERO)
{
- if(BSEL)
- B=ACC;
+ if (BSEL)
+ B = ACC;
else
{
- B=DSP->TEMP[(TRA+DSP->DEC)&0x7F];
- B<<=8;
- B>>=8;
- //if(B&0x00800000)
- // B|=0xFF000000; //Sign extend
+ B = TEMP[(TRA + DEC) & 0x7F];
+ B <<= 8;
+ B >>= 8;
+ //if (B & 0x00800000)
+ //B |= 0xFF000000; //Sign extend
}
- if(NEGB)
- B=0-B;
+ if (NEGB)
+ B = 0 - B;
}
else
- B=0;
+ B = 0;
- //X
- if(XSEL)
- X=INPUTS;
+ int32_t X; // 24-bit
+ if (XSEL)
+ X = INPUTS;
else
{
- X=DSP->TEMP[(TRA+DSP->DEC)&0x7F];
- X<<=8;
- X>>=8;
- //if(X&0x00800000)
- // X|=0xFF000000;
+ X = TEMP[(TRA + DEC) & 0x7F];
+ X <<= 8;
+ X >>= 8;
+ //if (X & 0x00800000)
+ //X |= 0xFF000000;
}
- //Y
- if(YSEL==0)
- Y=FRC_REG;
- else if(YSEL==1)
- Y=DSP->COEF[COEF]>>3; //COEF is 16 bits
- else if(YSEL==2)
- Y=(Y_REG>>11)&0x1FFF;
- else if(YSEL==3)
- Y=(Y_REG>>4)&0x0FFF;
+ if (YSEL == 0)
+ Y = FRC_REG;
+ else if (YSEL == 1)
+ Y = this->COEF[COEF] >> 3; //COEF is 16 bits
+ else if (YSEL == 2)
+ Y = (Y_REG >> 11) & 0x1FFF;
+ else if (YSEL == 3)
+ Y = (Y_REG >> 4) & 0x0FFF;
- if(YRL)
- Y_REG=INPUTS;
+ if (YRL)
+ Y_REG = INPUTS;
//Shifter
- if(SHIFT==0)
+ if (SHIFT == 0)
{
- SHIFTED=ACC;
- if(SHIFTED>0x007FFFFF)
- SHIFTED=0x007FFFFF;
- if(SHIFTED<(-0x00800000))
- SHIFTED=-0x00800000;
+ SHIFTED = std::max<int32_t>(std::min<int32_t>(ACC, 0x007FFFFF), -0x00800000);
}
- else if(SHIFT==1)
+ else if (SHIFT == 1)
{
- SHIFTED=ACC*2;
- if(SHIFTED>0x007FFFFF)
- SHIFTED=0x007FFFFF;
- if(SHIFTED<(-0x00800000))
- SHIFTED=-0x00800000;
+ SHIFTED = std::max<int32_t>(std::min<int32_t>(ACC * 2, 0x007FFFFF), -0x00800000);
}
- else if(SHIFT==2)
+ else if (SHIFT == 2)
{
- SHIFTED=ACC*2;
- SHIFTED<<=8;
- SHIFTED>>=8;
- //SHIFTED&=0x00FFFFFF;
- //if(SHIFTED&0x00800000)
- // SHIFTED|=0xFF000000;
+ SHIFTED = ACC * 2;
+ SHIFTED <<= 8;
+ SHIFTED >>= 8;
+ //SHIFTED &= 0x00FFFFFF;
+ //if (SHIFTED & 0x00800000)
+ //SHIFTED |= 0xFF000000;
}
else if(SHIFT==3)
{
- SHIFTED=ACC;
- SHIFTED<<=8;
- SHIFTED>>=8;
- //SHIFTED&=0x00FFFFFF;
- //if(SHIFTED&0x00800000)
- // SHIFTED|=0xFF000000;
+ SHIFTED = ACC;
+ SHIFTED <<= 8;
+ SHIFTED >>= 8;
+ //SHIFTED &= 0x00FFFFFF;
+ //if (SHIFTED & 0x00800000)
+ //SHIFTED |= 0xFF000000;
}
//ACCUM
- Y<<=19;
- Y>>=19;
- //if(Y&0x1000)
- // Y|=0xFFFFF000;
+ Y <<= 19;
+ Y >>= 19;
+ //if (Y & 0x1000)
+ //Y |= 0xFFFFF000;
- v=(((int64_t) X*(int64_t) Y)>>12);
- ACC=(int) v+B;
+ int64_t const v = (int64_t(X) * int64_t(Y)) >> 12;
+ ACC = int(v + B);
- if(TWT)
- DSP->TEMP[(TWA+DSP->DEC)&0x7F]=SHIFTED;
+ if (TWT)
+ TEMP[(TWA + DEC) & 0x7F] = SHIFTED;
- if(FRCL)
+ if (FRCL)
{
- if(SHIFT==3)
- FRC_REG=SHIFTED&0x0FFF;
+ if(SHIFT == 3)
+ FRC_REG = SHIFTED & 0x0FFF;
else
- FRC_REG=(SHIFTED>>11)&0x1FFF;
+ FRC_REG = (SHIFTED >> 11) & 0x1FFF;
}
- if(MRD || MWT)
- //if(0)
+ if (MRD || MWT)
+ //if (0)
{
- ADDR=DSP->MADRS[MASA];
- if(!TABLE)
- ADDR+=DSP->DEC;
- if(ADREB)
- ADDR+=ADRS_REG&0x0FFF;
- if(NXADR)
+ uint32_t ADDR = MADRS[MASA];
+ if (!TABLE)
+ ADDR += DEC;
+ if (ADREB)
+ ADDR += ADRS_REG & 0x0FFF;
+ if (NXADR)
ADDR++;
- if(!TABLE)
- ADDR&=DSP->RBL-1;
+ if (!TABLE)
+ ADDR &= RBL - 1;
else
- ADDR&=0xFFFF;
- //ADDR<<=1;
- //ADDR+=DSP->RBP<<13;
- //MEMVAL=DSP->SCSPRAM[ADDR>>1];
- ADDR+=DSP->RBP<<12;
+ ADDR &= 0xFFFF;
+ //ADDR <<= 1;
+ //ADDR += RBP << 13;
+ //MEMVAL = SCSPRAM[ADDR >> 1];
+ ADDR += RBP << 12;
if (ADDR > 0x7ffff) ADDR = 0;
- if(MRD && (step&1)) //memory only allowed on odd? DoA inserts NOPs on even
+ if (MRD && (step & 1)) //memory only allowed on odd? DoA inserts NOPs on even
{
- if(NOFL)
- MEMVAL=DSP->SCSPRAM[ADDR]<<8;
+ if (NOFL)
+ MEMVAL = SCSPRAM[ADDR] << 8;
else
- MEMVAL=UNPACK(DSP->SCSPRAM[ADDR]);
+ MEMVAL = UNPACK(SCSPRAM[ADDR]);
}
- if(MWT && (step&1))
+ if (MWT && (step & 1))
{
- if(NOFL)
- DSP->SCSPRAM[ADDR]=SHIFTED>>8;
+ if (NOFL)
+ SCSPRAM[ADDR] = SHIFTED >> 8;
else
- DSP->SCSPRAM[ADDR]=PACK(SHIFTED);
+ SCSPRAM[ADDR] = PACK(SHIFTED);
}
}
- if(ADRL)
+ if (ADRL)
{
- if(SHIFT==3)
- ADRS_REG=(SHIFTED>>12)&0xFFF;
+ if (SHIFT == 3)
+ ADRS_REG = (SHIFTED >> 12) & 0xFFF;
else
- ADRS_REG=(INPUTS>>16);
+ ADRS_REG = INPUTS >> 16;
}
- if(EWT)
- DSP->EFREG[EWA]+=SHIFTED>>8;
+ if (EWT)
+ EFREG[EWA] += SHIFTED >> 8;
}
- --DSP->DEC;
- memset(DSP->MIXS,0,4*16);
-// if(f)
-// fclose(f);
+ --DEC;
+ std::fill(std::begin(MIXS), std::end(MIXS), 0);
+ //if (f)
+ //fclose(f);
}
-void SCSPDSP_SetSample(SCSPDSP *DSP,int32_t sample,int SEL,int MXL)
+void SCSPDSP::SetSample(int32_t sample,int SEL,int MXL)
{
- //DSP->MIXS[SEL]+=sample<<(MXL+1)/*7*/;
- DSP->MIXS[SEL]+=sample;
-// if(MXL)
-// int a=1;
+ //MIXS[SEL] += sample << (MXL + 1)/*7*/;
+ MIXS[SEL] += sample;
+ //if (MXL)
+ //int a = 1;
}
-void SCSPDSP_Start(SCSPDSP *DSP)
+void SCSPDSP::Start()
{
+ Stopped = 0;
int i;
- DSP->Stopped=0;
- for(i=127;i>=0;--i)
+ for (i = 127; i >= 0; --i)
{
- uint16_t *IPtr=DSP->MPRO+i*4;
-
- if(IPtr[0]!=0 || IPtr[1]!=0 || IPtr[2]!=0 || IPtr[3]!=0)
+ uint16_t const *const IPtr = MPRO + (i * 4);
+ if (IPtr[0] || IPtr[1] || IPtr[2] || IPtr[3])
break;
}
- DSP->LastStep=i+1;
-
+ LastStep = i + 1;
}
diff --git a/src/devices/sound/scspdsp.h b/src/devices/sound/scspdsp.h
index 7b8e4eda2dc..29bcb43c241 100644
--- a/src/devices/sound/scspdsp.h
+++ b/src/devices/sound/scspdsp.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:ElSemi, R. Belmont
-#pragma once
+#ifndef MAME_SOUND_SCSPDSP_H
+#define MAME_SOUND_SCSPDSP_H
-#ifndef __SCSPDSP_H__
-#define __SCSPDSP_H__
+#pragma once
//the DSP Context
struct SCSPDSP
@@ -32,11 +32,11 @@ struct SCSPDSP
int Stopped;
int LastStep;
-};
-void SCSPDSP_Init(SCSPDSP *DSP);
-void SCSPDSP_SetSample(SCSPDSP *DSP, int32_t sample, int32_t SEL, int32_t MXL);
-void SCSPDSP_Step(SCSPDSP *DSP);
-void SCSPDSP_Start(SCSPDSP *DSP);
+ void Init();
+ void SetSample(int32_t sample, int32_t SEL, int32_t MXL);
+ void Step();
+ void Start();
+};
-#endif /* __SCSPDSP_H__ */
+#endif // MAME_SOUND_SCSPDSP_H
diff --git a/src/devices/sound/segapcm.cpp b/src/devices/sound/segapcm.cpp
index 9068dd262d0..86fdedfb206 100644
--- a/src/devices/sound/segapcm.cpp
+++ b/src/devices/sound/segapcm.cpp
@@ -9,7 +9,7 @@
// device type definition
-const device_type SEGAPCM = device_creator<segapcm_device>;
+DEFINE_DEVICE_TYPE(SEGAPCM, segapcm_device, "segapcm", "Sega PCM")
//-------------------------------------------------
@@ -17,7 +17,7 @@ const device_type SEGAPCM = device_creator<segapcm_device>;
//-------------------------------------------------
segapcm_device::segapcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SEGAPCM, "Sega PCM", tag, owner, clock, "segapcm", __FILE__),
+ : device_t(mconfig, SEGAPCM, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_rom_interface(mconfig, *this, 21),
m_ram(nullptr),
diff --git a/src/devices/sound/segapcm.h b/src/devices/sound/segapcm.h
index 2ba7769f7d9..ec3e8d2dbfa 100644
--- a/src/devices/sound/segapcm.h
+++ b/src/devices/sound/segapcm.h
@@ -4,30 +4,27 @@
/* SEGA 8bit PCM */
/*********************************************************/
-#pragma once
-
-#ifndef __SEGAPCM_H__
-#define __SEGAPCM_H__
+#ifndef MAMESOUND_SEGAPCM_H
+#define MAMESOUND_SEGAPCM_H
-#define BANK_256 (11)
-#define BANK_512 (12)
-#define BANK_12M (13)
-#define BANK_MASK7 (0x70<<16)
-#define BANK_MASKF (0xf0<<16)
-#define BANK_MASKF8 (0xf8<<16)
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_SEGAPCM_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, SEGAPCM, _clock)
-#define MCFG_SEGAPCM_REPLACE(_tag, _clock) \
- MCFG_DEVICE_REPLACE(_tag, SEGAPCM, _clock)
+#define MCFG_SEGAPCM_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), SEGAPCM, (clock))
+
+#define MCFG_SEGAPCM_REPLACE(tag, clock) \
+ MCFG_DEVICE_REPLACE((tag), SEGAPCM, (clock))
-#define MCFG_SEGAPCM_BANK(_bank) \
- segapcm_device::set_bank(*device, _bank);
+#define MCFG_SEGAPCM_BANK(bank) \
+ segapcm_device::set_bank(*device, (segapcm_device::bank));
+
+#define MCFG_SEGAPCM_BANK_MASK(bank, mask) \
+ segapcm_device::set_bank(*device, (segapcm_device::bank) | (segapcm_device::mask));
//**************************************************************************
@@ -39,8 +36,14 @@ class segapcm_device : public device_t,
public device_rom_interface
{
public:
+ static constexpr int BANK_256 = 11;
+ static constexpr int BANK_512 = 12;
+ static constexpr int BANK_12M = 13;
+ static constexpr int BANK_MASK7 = 0x70 << 16;
+ static constexpr int BANK_MASKF = 0xf0 << 16;
+ static constexpr int BANK_MASKF8 = 0xf8 << 16;
+
segapcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~segapcm_device() { }
// static configuration
static void set_bank(device_t &device, int bank) { downcast<segapcm_device &>(device).m_bank = bank; }
@@ -67,7 +70,6 @@ private:
sound_stream* m_stream;
};
-extern const device_type SEGAPCM;
-
+DECLARE_DEVICE_TYPE(SEGAPCM, segapcm_device)
-#endif /* __SEGAPCM_H__ */
+#endif // MAMESOUND_SEGAPCM_H
diff --git a/src/devices/sound/sid.cpp b/src/devices/sound/sid.cpp
index d39bc0ed037..1535c56a69e 100644
--- a/src/devices/sound/sid.cpp
+++ b/src/devices/sound/sid.cpp
@@ -15,24 +15,27 @@
*/
#include "emu.h"
-#include "sidvoice.h"
-#include "sidenvel.h"
#include "sid.h"
-static std::unique_ptr<float[]> filterTable;
-static std::unique_ptr<float[]> bandPassParam;
+#include "sidenvel.h"
+
+
+namespace {
+
+std::unique_ptr<float[]> filterTable;
+std::unique_ptr<float[]> bandPassParam;
#define lowPassParam filterTable
-static float filterResTable[16];
+float filterResTable[16];
#define maxLogicalVoices 4
-static const int mix16monoMiddleIndex = 256*maxLogicalVoices/2;
-static uint16_t mix16mono[256*maxLogicalVoices];
+const int mix16monoMiddleIndex = 256*maxLogicalVoices/2;
+uint16_t mix16mono[256*maxLogicalVoices];
-static uint16_t zero16bit=0; /* either signed or unsigned */
+uint16_t zero16bit=0; /* either signed or unsigned */
//uint32_t splitBufferLen;
-static void MixerInit(int threeVoiceAmplify)
+void MixerInit(int threeVoiceAmplify)
{
long si;
uint16_t ui;
@@ -54,67 +57,69 @@ static void MixerInit(int threeVoiceAmplify)
}
+} // anonymous namespace
-static inline void syncEm(SID6581_t *This)
+
+inline void SID6581_t::syncEm()
{
- int sync1 = (This->optr1.modulator->cycleLenCount <= 0);
- int sync2 = (This->optr2.modulator->cycleLenCount <= 0);
- int sync3 = (This->optr3.modulator->cycleLenCount <= 0);
+ bool const sync1(optr1.modulator->cycleLenCount <= 0);
+ bool const sync2(optr2.modulator->cycleLenCount <= 0);
+ bool const sync3(optr3.modulator->cycleLenCount <= 0);
- This->optr1.cycleLenCount--;
- This->optr2.cycleLenCount--;
- This->optr3.cycleLenCount--;
+ optr1.cycleLenCount--;
+ optr2.cycleLenCount--;
+ optr3.cycleLenCount--;
- if (This->optr1.sync && sync1)
+ if (optr1.sync && sync1)
{
- This->optr1.cycleLenCount = 0;
- This->optr1.outProc = &sidWaveCalcNormal;
+ optr1.cycleLenCount = 0;
+ optr1.outProc = &sidOperator::wave_calc_normal;
#if defined(DIRECT_FIXPOINT)
optr1.waveStep.l = 0;
#else
- This->optr1.waveStep = (This->optr1.waveStepPnt = 0);
+ optr1.waveStep = optr1.waveStepPnt = 0;
#endif
}
- if (This->optr2.sync && sync2)
+ if (optr2.sync && sync2)
{
- This->optr2.cycleLenCount = 0;
- This->optr2.outProc = &sidWaveCalcNormal;
+ optr2.cycleLenCount = 0;
+ optr2.outProc = &sidOperator::wave_calc_normal;
#if defined(DIRECT_FIXPOINT)
- This->optr2.waveStep.l = 0;
+ optr2.waveStep.l = 0;
#else
- This->optr2.waveStep = (This->optr2.waveStepPnt = 0);
+ optr2.waveStep = optr2.waveStepPnt = 0;
#endif
}
- if (This->optr3.sync && sync3)
+ if (optr3.sync && sync3)
{
- This->optr3.cycleLenCount = 0;
- This->optr3.outProc = &sidWaveCalcNormal;
+ optr3.cycleLenCount = 0;
+ optr3.outProc = &sidOperator::wave_calc_normal;
#if defined(DIRECT_FIXPOINT)
optr3.waveStep.l = 0;
#else
- This->optr3.waveStep = (This->optr3.waveStepPnt = 0);
+ optr3.waveStep = optr3.waveStepPnt = 0;
#endif
}
}
-void sidEmuFillBuffer(SID6581_t *This, stream_sample_t *buffer, uint32_t bufferLen )
+void SID6581_t::fill_buffer(stream_sample_t *buffer, uint32_t bufferLen)
{
-//void* fill16bitMono( SID6581_t *This, void* buffer, uint32_t numberOfSamples )
+//void* SID6581_t::fill16bitMono(void* buffer, uint32_t numberOfSamples)
for ( ; bufferLen > 0; bufferLen-- )
{
- *buffer++ = (int16_t) mix16mono[(unsigned)(mix16monoMiddleIndex
- +(*This->optr1.outProc)(&This->optr1)
- +(*This->optr2.outProc)(&This->optr2)
- +(This->optr3.outProc(&This->optr3)&This->optr3_outputmask)
+ *buffer++ = (int16_t) mix16mono[unsigned(mix16monoMiddleIndex
+ +(*optr1.outProc)(&optr1)
+ +(*optr2.outProc)(&optr2)
+ +(optr3.outProc(&optr3)&optr3_outputmask)
/* hack for digi sounds
does n't seam to come from a tone operator
ghostbusters and goldrunner everything except volume zeroed */
- +(This->masterVolume<<2)
+ +(masterVolume<<2)
// +(*sampleEmuRout)()
)];
- syncEm(This);
+ syncEm();
}
}
@@ -123,29 +128,29 @@ void sidEmuFillBuffer(SID6581_t *This, stream_sample_t *buffer, uint32_t bufferL
/* Reset. */
-int sidEmuReset(SID6581_t *This)
+bool SID6581_t::reset()
{
- sidClearOperator( &This->optr1 );
- enveEmuResetOperator( &This->optr1 );
- sidClearOperator( &This->optr2 );
- enveEmuResetOperator( &This->optr2 );
- sidClearOperator( &This->optr3 );
- enveEmuResetOperator( &This->optr3 );
- This->optr3_outputmask = ~0; /* on */
+ optr1.clear();
+ enveEmuResetOperator( &optr1 );
+ optr2.clear();
+ enveEmuResetOperator( &optr2 );
+ optr3.clear();
+ enveEmuResetOperator( &optr3 );
+ optr3_outputmask = ~0; /* on */
-// sampleEmuReset();
+ //sampleEmuReset();
- This->filter.Type = (This->filter.CurType = 0);
- This->filter.Value = 0;
- This->filter.Dy = (This->filter.ResDy = 0);
+ filter.Type = filter.CurType = 0;
+ filter.Value = 0;
+ filter.Dy = filter.ResDy = 0;
- sidEmuSet( &This->optr1 );
- sidEmuSet( &This->optr2 );
- sidEmuSet( &This->optr3 );
+ optr1.set();
+ optr2.set();
+ optr3.set();
- sidEmuSet2( &This->optr1 );
- sidEmuSet2( &This->optr2 );
- sidEmuSet2( &This->optr3 );
+ optr1.set2();
+ optr2.set2();
+ optr3.set2();
return true;
}
@@ -210,143 +215,147 @@ static void filterTableInit(running_machine &machine)
filterResTable[15] = resDyMax;
}
-void sid6581_init (SID6581_t *This)
+void SID6581_t::init()
{
- This->optr1.sid=This;
- This->optr2.sid=This;
- This->optr3.sid=This;
-
- This->optr1.modulator = &This->optr3;
- This->optr3.carrier = &This->optr1;
- This->optr1.filtVoiceMask = 1;
+ optr1.sid = this;
+ optr2.sid = this;
+ optr3.sid = this;
- This->optr2.modulator = &This->optr1;
- This->optr1.carrier = &This->optr2;
- This->optr2.filtVoiceMask = 2;
+ optr1.modulator = &optr3;
+ optr3.carrier = &optr1;
+ optr1.filtVoiceMask = 1;
- This->optr3.modulator = &This->optr2;
- This->optr2.carrier = &This->optr3;
- This->optr3.filtVoiceMask = 4;
+ optr2.modulator = &optr1;
+ optr1.carrier = &optr2;
+ optr2.filtVoiceMask = 2;
+ optr3.modulator = &optr2;
+ optr2.carrier = &optr3;
+ optr3.filtVoiceMask = 4;
- This->PCMsid = (uint32_t)(This->PCMfreq * (16777216.0 / This->clock));
- This->PCMsidNoise = (uint32_t)((This->clock*256.0)/This->PCMfreq);
+ PCMsid = uint32_t(PCMfreq * (16777216.0 / clock));
+ PCMsidNoise = uint32_t((clock * 256.0) / PCMfreq);
- This->filter.Enabled = true;
+ filter.Enabled = true;
- sidInitMixerEngine(This->device->machine());
- filterTableInit(This->device->machine());
+ sidInitMixerEngine(device->machine());
+ filterTableInit(device->machine());
- sidInitWaveformTables(This->type);
+ sidInitWaveformTables(type);
- enveEmuInit(This->PCMfreq, true);
+ enveEmuInit(PCMfreq, true);
MixerInit(0);
- sidEmuReset(This);
+ reset();
}
-void sid6581_port_w (SID6581_t *This, int offset, int data)
+
+void SID6581_t::port_w(int offset, int data)
{
offset &= 0x1f;
-
switch (offset)
{
- case 0x19: case 0x1a: case 0x1b: case 0x1c:
- case 0x1d:
- case 0x1e:
- case 0x1f:
- break;
- case 0x15: case 0x16: case 0x17:
- case 0x18:
- This->mixer_channel->update();
- This->reg[offset] = data;
- This->masterVolume = ( This->reg[0x18] & 15 );
- This->masterVolumeAmplIndex = This->masterVolume << 8;
-
- if ((This->reg[0x18]&0x80) &&
- ((This->reg[0x17]&This->optr3.filtVoiceMask)==0))
- This->optr3_outputmask = 0; /* off */
+ case 0x19:
+ case 0x1a:
+ case 0x1b:
+ case 0x1c:
+ case 0x1d:
+ case 0x1e:
+ case 0x1f:
+ break;
+
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ mixer_channel->update();
+ reg[offset] = data;
+ masterVolume = reg[0x18] & 15;
+ masterVolumeAmplIndex = masterVolume << 8;
+
+ if ((reg[0x18] & 0x80) && !(reg[0x17] & optr3.filtVoiceMask))
+ optr3_outputmask = 0; /* off */
+ else
+ optr3_outputmask = ~0; /* on */
+
+ filter.Type = reg[0x18] & 0x70;
+ if (filter.Type != filter.CurType)
+ {
+ filter.CurType = filter.Type;
+ optr1.filtLow = optr1.filtRef = 0;
+ optr2.filtLow = optr2.filtRef = 0;
+ optr3.filtLow = optr3.filtRef = 0;
+ }
+ if (filter.Enabled )
+ {
+ filter.Value = 0x7ff & ((reg[0x15] & 7) | (uint16_t(reg[0x16]) << 3));
+ if (filter.Type == 0x20)
+ filter.Dy = bandPassParam ? bandPassParam[filter.Value] : 0.0f;
else
- This->optr3_outputmask = ~0; /* on */
-
- This->filter.Type = This->reg[0x18] & 0x70;
- if (This->filter.Type != This->filter.CurType)
- {
- This->filter.CurType = This->filter.Type;
- This->optr1.filtLow = (This->optr1.filtRef = 0);
- This->optr2.filtLow = (This->optr2.filtRef = 0);
- This->optr3.filtLow = (This->optr3.filtRef = 0);
- }
- if ( This->filter.Enabled )
- {
- This->filter.Value = 0x7ff & ( (This->reg[0x15]&7) | ( (uint16_t)This->reg[0x16] << 3 ));
- if (This->filter.Type == 0x20)
- This->filter.Dy = bandPassParam ? bandPassParam[This->filter.Value] : 0.0f;
- else
- This->filter.Dy = lowPassParam ? lowPassParam[This->filter.Value] : 0.0f;
- This->filter.ResDy = filterResTable[This->reg[0x17] >> 4] - This->filter.Dy;
- if ( This->filter.ResDy < 1.0f )
- This->filter.ResDy = 1.0f;
- }
-
- sidEmuSet( &This->optr1 );
- sidEmuSet( &This->optr3 );
- sidEmuSet( &This->optr2 );
-
- // relies on sidEmuSet also for other channels!
- sidEmuSet2( &This->optr1 );
- sidEmuSet2( &This->optr2 );
- sidEmuSet2( &This->optr3 );
- break;
-
- default:
- This->mixer_channel->update();
- This->reg[offset] = data;
-
- if (offset<7) {
- This->optr1.reg[offset] = data;
- } else if (offset<14) {
- This->optr2.reg[offset-7] = data;
- } else if (offset<21) {
- This->optr3.reg[offset-14] = data;
- }
-
- sidEmuSet( &This->optr1 );
- sidEmuSet( &This->optr3 );
- sidEmuSet( &This->optr2 );
-
- // relies on sidEmuSet also for other channels!
- sidEmuSet2( &This->optr1 );
- sidEmuSet2( &This->optr2 );
- sidEmuSet2( &This->optr3 );
- break;
+ filter.Dy = lowPassParam ? lowPassParam[filter.Value] : 0.0f;
+ filter.ResDy = filterResTable[reg[0x17] >> 4] - filter.Dy;
+ if (filter.ResDy < 1.0f)
+ filter.ResDy = 1.0f;
+ }
+
+ optr1.set();
+ optr3.set();
+ optr2.set();
+
+ // relies on sidEmuSet also for other channels!
+ optr1.set2();
+ optr2.set2();
+ optr3.set2();
+ break;
+
+ default:
+ mixer_channel->update();
+ reg[offset] = data;
+
+ if (offset < 7)
+ optr1.reg[offset] = data;
+ else if (offset < 14)
+ optr2.reg[offset - 7] = data;
+ else if (offset < 21)
+ optr3.reg[offset - 14] = data;
+
+ optr1.set();
+ optr3.set();
+ optr2.set();
+
+ // relies on sidEmuSet also for other channels!
+ optr1.set2();
+ optr2.set2();
+ optr3.set2();
+ break;
}
}
-int sid6581_port_r (running_machine &machine, SID6581_t *This, int offset)
+
+int SID6581_t::port_r(running_machine &machine, int offset)
{
+ /* SIDPLAY reads last written at a sid address value */
int data;
-/* SIDPLAY reads last written at a sid address value */
offset &= 0x1f;
switch (offset)
{
case 0x1d:
case 0x1e:
case 0x1f:
- data=0xff;
- break;
+ data = 0xff;
+ break;
case 0x1b:
- This->mixer_channel->update();
- data = This->optr3.output;
- break;
+ mixer_channel->update();
+ data = optr3.output;
+ break;
case 0x1c:
- This->mixer_channel->update();
- data = This->optr3.enveVol;
- break;
+ mixer_channel->update();
+ data = optr3.enveVol;
+ break;
default:
- data=This->reg[offset];
+ data = reg[offset];
}
return data;
}
diff --git a/src/devices/sound/sid.h b/src/devices/sound/sid.h
index 095f711bdc8..a57f2ff6b5f 100644
--- a/src/devices/sound/sid.h
+++ b/src/devices/sound/sid.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Peter Trauner
-#pragma once
+#ifndef MAME_SOUND_SID_H
+#define MAME_SOUND_SID_H
-#ifndef __SID_H__
-#define __SID_H__
+#pragma once
/*
approximation of the sid6581 chip
@@ -41,7 +41,6 @@ struct SID6581_t
uint8_t masterVolume;
uint16_t masterVolumeAmplIndex;
-
struct
{
int Enabled;
@@ -52,15 +51,18 @@ struct SID6581_t
sidOperator optr1, optr2, optr3;
int optr3_outputmask;
-};
-void sid6581_init (SID6581_t *This);
+ void init();
+
+ bool reset();
-int sidEmuReset(SID6581_t *This);
+ int port_r(running_machine &machine, int offset);
+ void port_w(int offset, int data);
-int sid6581_port_r (running_machine &machine, SID6581_t *This, int offset);
-void sid6581_port_w (SID6581_t *This, int offset, int data);
+ void fill_buffer(stream_sample_t *buffer, uint32_t bufferLen);
-void sidEmuFillBuffer(SID6581_t *This, stream_sample_t *buffer, uint32_t bufferLen );
+private:
+ void syncEm();
+};
-#endif /* __SID_H__ */
+#endif // MAME_SOUND_SID_H
diff --git a/src/devices/sound/side6581.h b/src/devices/sound/side6581.h
index 4870d96008c..c1a25c2a525 100644
--- a/src/devices/sound/side6581.h
+++ b/src/devices/sound/side6581.h
@@ -4,10 +4,10 @@
// /home/ms/source/sidplay/libsidplay/emu/RCS/enve_dl.h,v
//
-#pragma once
+#ifndef MAME_SOUND_SIDE6581_H
+#define MAME_SOUND_SIDE6581_H
-#ifndef __SIDE6581_H__
-#define __SIDE6581_H__
+#pragma once
//
@@ -125,4 +125,4 @@ static const uint8_t releaseTab[] =
};
-#endif /* __SIDE6581_H__ */
+#endif // MAME_SOUND_SIDE6581_H
diff --git a/src/devices/sound/sidenvel.cpp b/src/devices/sound/sidenvel.cpp
index e998558bdf5..2dc805797d1 100644
--- a/src/devices/sound/sidenvel.cpp
+++ b/src/devices/sound/sidenvel.cpp
@@ -33,11 +33,12 @@
/*========================================================================= */
#include "emu.h"
-#include "sidvoice.h"
-#include "sid.h"
+#include "sidenvel.h"
+#include "sid.h"
#include "side6581.h"
-#include "sidenvel.h"
+#include "sidvoice.h"
+
const uint8_t masterVolumeLevels[16] =
{
diff --git a/src/devices/sound/sidenvel.h b/src/devices/sound/sidenvel.h
index 61bd57b20e8..224b4967f20 100644
--- a/src/devices/sound/sidenvel.h
+++ b/src/devices/sound/sidenvel.h
@@ -4,10 +4,12 @@
// /home/ms/source/sidplay/libsidplay/emu/RCS/envelope.h,v
//
+#ifndef MAME_SOUND_SIDENVEL_H
+#define MAME_SOUND_SIDENVEL_H
+
#pragma once
-#ifndef __SIDENVEL_H__
-#define __SIDENVEL_H__
+#include "sidvoice.h"
extern void enveEmuInit(uint32_t updateFreq, int measuredValues);
@@ -36,4 +38,4 @@ enum
};
-#endif /* __SIDENVEL_H__ */
+#endif // MAME_SOUND_SIDENVEL_H
diff --git a/src/devices/sound/sidvoice.cpp b/src/devices/sound/sidvoice.cpp
index de521a63e2f..9bc9a720ca7 100644
--- a/src/devices/sound/sidvoice.cpp
+++ b/src/devices/sound/sidvoice.cpp
@@ -2,11 +2,15 @@
// copyright-holders:Peter Trauner
#include "emu.h"
#include "sidvoice.h"
+
#include "sid.h"
#include "sidenvel.h"
#include "sidw6581.h"
#include "sidw8580.h"
+#include "sound/mos6581.h"
+
+
static uint8_t triangleTable[4096];
static uint8_t sawtoothTable[4096];
static uint8_t squareTable[2*4096];
@@ -23,6 +27,7 @@ static const uint8_t* waveform70;
static uint8_t noiseTableLSB[1<<8];
#endif
+
static std::unique_ptr<int8_t[]> ampMod1x8;
static const uint32_t noiseSeed = 0x7ffff8;
@@ -274,58 +279,6 @@ static void sidMode74(sidOperator* pVoice) {
/* */
/* */
-static inline void waveCalcCycleLen(sidOperator* pVoice)
-{
-#if defined(DIRECT_FIXPOINT)
- pVoice->cycleAddLen.w[HI] = 0;
- pVoice->cycleAddLen.l += pVoice->cycleLen.l;
- pVoice->cycleLenCount = pVoice->cycleAddLen.w[HI];
-#else
- pVoice->cycleAddLenPnt += pVoice->cycleLenPnt;
- pVoice->cycleLenCount = pVoice->cycleLen;
- if ( pVoice->cycleAddLenPnt > 65535 ) pVoice->cycleLenCount++;
- pVoice->cycleAddLenPnt &= 0xFFFF;
-#endif
- /* If we keep the value cycleLen between 1 <= x <= 65535, */
- /* the following check is not required. */
-/* if ( pVoice->cycleLenCount == 0 ) */
-/* { */
-/*#if defined(DIRECT_FIXPOINT) */
-/* pVoice->waveStep.l = 0; */
-/*#else */
-/* pVoice->waveStep = (pVoice->waveStepPnt = 0); */
-/*#endif */
-/* pVoice->cycleLenCount = 0; */
-/* } */
-/* else */
- {
-#if defined(DIRECT_FIXPOINT)
- uint16_t diff = pVoice->cycleLenCount - pVoice->cycleLen.w[HI];
-#else
- uint16_t diff = pVoice->cycleLenCount - pVoice->cycleLen;
-#endif
- if ( pVoice->wavePre[diff].len != pVoice->cycleLenCount )
- {
- pVoice->wavePre[diff].len = pVoice->cycleLenCount;
-#if defined(DIRECT_FIXPOINT)
- pVoice->wavePre[diff].stp = (pVoice->waveStepAdd.l = (4096UL*65536UL) / pVoice->cycleLenCount);
-#else
- pVoice->wavePre[diff].stp = (pVoice->waveStepAdd = 4096UL / pVoice->cycleLenCount);
- pVoice->wavePre[diff].pnt = (pVoice->waveStepAddPnt = ((4096UL % pVoice->cycleLenCount) * 65536UL) / pVoice->cycleLenCount);
-#endif
- }
- else
- {
-#if defined(DIRECT_FIXPOINT)
- pVoice->waveStepAdd.l = pVoice->wavePre[diff].stp;
-#else
- pVoice->waveStepAdd = pVoice->wavePre[diff].stp;
- pVoice->waveStepAddPnt = pVoice->wavePre[diff].pnt;
-#endif
- }
- } /* see above (opening bracket) */
-}
-
static inline void waveCalcFilter(sidOperator* pVoice)
{
if ( pVoice->filtEnabled )
@@ -402,32 +355,6 @@ static int8_t waveCalcMute(sidOperator* pVoice)
}
-int8_t sidWaveCalcNormal(sidOperator* pVoice)
-{
- if ( pVoice->cycleLenCount <= 0 )
- {
- waveCalcCycleLen(pVoice);
- if (( pVoice->SIDctrl & 0x40 ) == 0x40 )
- {
- pVoice->pulseIndex = pVoice->newPulseIndex;
- if ( pVoice->pulseIndex > 2048 )
- {
-#if defined(DIRECT_FIXPOINT)
- pVoice->waveStep.w[HI] = 0;
-#else
- pVoice->waveStep = 0;
-#endif
- }
- }
- }
- (*pVoice->waveProc)(pVoice);
- pVoice->filtIO = ampMod1x8[(*pVoice->ADSRproc)(pVoice)|pVoice->output];
-// pVoice->filtIO = pVoice->sid->masterVolume; // test for digi sound
- waveCalcFilter(pVoice);
- return pVoice->filtIO;//&pVoice->outputMask;
-}
-
-
static int8_t waveCalcRangeCheck(sidOperator* pVoice)
{
#if defined(DIRECT_FIXPOINT)
@@ -442,7 +369,7 @@ static int8_t waveCalcRangeCheck(sidOperator* pVoice)
{
/* Next step switch back to normal calculation. */
pVoice->cycleLenCount = 0;
- pVoice->outProc = &sidWaveCalcNormal;
+ pVoice->outProc = &sidOperator::wave_calc_normal;
#if defined(DIRECT_FIXPOINT)
pVoice->waveStep.w[HI] = 4095;
#else
@@ -454,262 +381,325 @@ static int8_t waveCalcRangeCheck(sidOperator* pVoice)
return pVoice->filtIO;//&pVoice->outputMask;
}
-/* -------------------------------------------------- Operator frame set-up 1 */
+/* MOS-8580, MOS-6581 (no 70) */
+static ptr2sidVoidFunc sidModeNormalTable[16] =
+{
+ sidMode00, sidMode10, sidMode20, sidMode30, sidMode40, sidMode50, sidMode60, sidMode70,
+ sidMode80, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock
+};
-void sidEmuSet(sidOperator* pVoice)
+/* MOS-8580, MOS-6581 (no 74) */
+static ptr2sidVoidFunc sidModeRingTable[16] =
{
- uint8_t enveTemp, newWave, oldWave;
- uint8_t ADtemp;
- uint8_t SRtemp;
- uint8_t tmpSusVol;
+ sidMode00, sidMode14, sidMode00, sidMode34, sidMode00, sidMode54, sidMode00, sidMode74,
+ sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock
+};
+
+
+void sidOperator::clear()
+{
+ SIDfreq = 0;
+ SIDctrl = 0;
+ SIDAD = 0;
+ SIDSR = 0;
+
+ sync = false;
+
+ pulseIndex = newPulseIndex = SIDpulseWidth = 0;
+ curSIDfreq = curNoiseFreq = 0;
+
+ output = noiseOutput = 0;
+ filtIO = 0;
+
+ filtEnabled = false;
+ filtLow = filtRef = 0;
+
+ cycleLenCount = 0;
+#if defined(DIRECT_FIXPOINT)
+ cycleLen.l = cycleAddLen.l = 0;
+#else
+ cycleLen = cycleLenPnt = 0;
+ cycleAddLenPnt = 0;
+#endif
+
+ outProc = waveCalcMute;
- pVoice->SIDfreq = pVoice->reg[0]|(pVoice->reg[1]<<8);
+#if defined(DIRECT_FIXPOINT)
+ waveStepAdd.l = waveStep.l = 0;
+ wavePre[0].len = (wavePre[0].stp = 0);
+ wavePre[1].len = (wavePre[1].stp = 0);
+#else
+ waveStepAdd = waveStepAddPnt = 0;
+ waveStep = waveStepPnt = 0;
+ wavePre[0].len = 0;
+ wavePre[0].stp = wavePre[0].pnt = 0;
+ wavePre[1].len = 0;
+ wavePre[1].stp = wavePre[1].pnt = 0;
+#endif
+ waveStepOld = 0;
- pVoice->SIDpulseWidth = (pVoice->reg[2]|(pVoice->reg[3]<<8)) & 0x0FFF;
- pVoice->newPulseIndex = 4096 - pVoice->SIDpulseWidth;
#if defined(DIRECT_FIXPOINT)
- if ( ((pVoice->waveStep.w[HI] + pVoice->pulseIndex) >= 0x1000)
- && ((pVoice->waveStep.w[HI] + pVoice->newPulseIndex) >= 0x1000) )
+ noiseReg.l = noiseSeed;
+#else
+ noiseReg = noiseSeed;
+#endif
+ noiseStepAdd = noiseStep = 0;
+ noiseIsLocked = false;
+}
+
+
+/* -------------------------------------------------- Operator frame set-up 1 */
+
+void sidOperator::set()
+{
+ SIDfreq = reg[0] | (reg[1] << 8);
+
+ SIDpulseWidth = (reg[2] | (reg[3] << 8)) & 0x0FFF;
+ newPulseIndex = 4096 - SIDpulseWidth;
+#if defined(DIRECT_FIXPOINT)
+ if (((waveStep.w[HI] + pulseIndex) >= 0x1000) && ((waveStep.w[HI] + newPulseIndex) >= 0x1000))
{
- pVoice->pulseIndex = pVoice->newPulseIndex;
+ pulseIndex = newPulseIndex;
}
- else if ( ((pVoice->waveStep.w[HI] + pVoice->pulseIndex) < 0x1000)
- && ((pVoice->waveStep.w[HI] + pVoice->newPulseIndex) < 0x1000) )
+ else if (((waveStep.w[HI] + pulseIndex) < 0x1000) && ((waveStep.w[HI] + newPulseIndex) < 0x1000))
{
- pVoice->pulseIndex = pVoice->newPulseIndex;
+ pulseIndex = newPulseIndex;
}
#else
- if ( ((pVoice->waveStep + pVoice->pulseIndex) >= 0x1000)
- && ((pVoice->waveStep + pVoice->newPulseIndex) >= 0x1000) )
+ if (((waveStep + pulseIndex) >= 0x1000) && ((waveStep + newPulseIndex) >= 0x1000))
{
- pVoice->pulseIndex = pVoice->newPulseIndex;
+ pulseIndex = newPulseIndex;
}
- else if ( ((pVoice->waveStep + pVoice->pulseIndex) < 0x1000)
- && ((pVoice->waveStep + pVoice->newPulseIndex) < 0x1000) )
+ else if (((waveStep + pulseIndex) < 0x1000) && ((waveStep + newPulseIndex) < 0x1000))
{
- pVoice->pulseIndex = pVoice->newPulseIndex;
+ pulseIndex = newPulseIndex;
}
#endif
+ uint8_t const oldWave = SIDctrl;
+ uint8_t const newWave = reg[4] | (reg[5] << 8); // FIXME: what's actually supposed to happen here?
+ uint8_t enveTemp = ADSRctrl;
+ SIDctrl = newWave;
- oldWave = pVoice->SIDctrl;
- enveTemp = pVoice->ADSRctrl;
- pVoice->SIDctrl = (newWave = pVoice->reg[4]|(pVoice->reg[5]<<8));
-
- if (( newWave & 1 ) ==0 )
+ if (!(newWave & 1))
{
- if (( oldWave & 1 ) !=0 )
+ if (oldWave & 1)
enveTemp = ENVE_STARTRELEASE;
-/* else if ( pVoice->gateOnCtrl ) */
-/* { */
-/* enveTemp = ENVE_STARTSHORTATTACK; */
-/* } */
+#if 0
+ else if (gateOnCtrl)
+ enveTemp = ENVE_STARTSHORTATTACK;
+#endif
}
- else if ( /*pVoice->gateOffCtrl || */((oldWave&1)==0) )
+ else if (/*gateOffCtrl || */!(oldWave & 1))
{
enveTemp = ENVE_STARTATTACK;
}
- if ((( oldWave ^ newWave ) & 0xF0 ) != 0 )
- {
- pVoice->cycleLenCount = 0;
- }
+ if ((oldWave ^ newWave) & 0xF0)
+ cycleLenCount = 0;
- ADtemp = pVoice->reg[5];
- SRtemp = pVoice->reg[6];
- if ( pVoice->SIDAD != ADtemp )
- {
+ uint8_t const ADtemp = reg[5];
+ uint8_t const SRtemp = reg[6];
+ if (SIDAD != ADtemp)
enveTemp |= ENVE_ALTER;
- }
- else if ( pVoice->SIDSR != SRtemp )
- {
+ else if (SIDSR != SRtemp)
enveTemp |= ENVE_ALTER;
- }
- pVoice->SIDAD = ADtemp;
- pVoice->SIDSR = SRtemp;
- tmpSusVol = masterVolumeLevels[SRtemp >> 4];
- if (pVoice->ADSRctrl != ENVE_SUSTAIN) /* !!! */
- {
- pVoice->enveSusVol = tmpSusVol;
- }
+
+ SIDAD = ADtemp;
+ SIDSR = SRtemp;
+ uint8_t const tmpSusVol = masterVolumeLevels[SRtemp >> 4];
+ if (ADSRctrl != ENVE_SUSTAIN) // !!!
+ enveSusVol = tmpSusVol;
+ else if (enveSusVol > enveVol)
+ enveSusVol = 0;
else
- {
- if ( pVoice->enveSusVol > pVoice->enveVol )
- pVoice->enveSusVol = 0;
- else
- pVoice->enveSusVol = tmpSusVol;
- }
+ enveSusVol = tmpSusVol;
- pVoice->ADSRproc = enveModeTable[enveTemp>>1]; /* shifting out the KEY-bit */
- pVoice->ADSRctrl = enveTemp & (255-ENVE_ALTER-1);
+ ADSRproc = enveModeTable[enveTemp >> 1]; // shifting out the KEY-bit
+ ADSRctrl = enveTemp & (255 - ENVE_ALTER - 1);
- pVoice->filtEnabled = pVoice->sid->filter.Enabled &&
- ((pVoice->sid->reg[0x17] & pVoice->filtVoiceMask)!=0);
+ filtEnabled = sid->filter.Enabled && (sid->reg[0x17] & filtVoiceMask);
}
-/* -------------------------------------------------- Operator frame set-up 2 */
-/* MOS-8580, MOS-6581 (no 70) */
-static ptr2sidVoidFunc sidModeNormalTable[16] =
-{
- sidMode00, sidMode10, sidMode20, sidMode30, sidMode40, sidMode50, sidMode60, sidMode70,
- sidMode80, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock
-};
-
-/* MOS-8580, MOS-6581 (no 74) */
-static ptr2sidVoidFunc sidModeRingTable[16] =
-{
- sidMode00, sidMode14, sidMode00, sidMode34, sidMode00, sidMode54, sidMode00, sidMode74,
- sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock
-};
+/* -------------------------------------------------- Operator frame set-up 2 */
-void sidClearOperator( sidOperator* pVoice )
+void sidOperator::set2()
{
- pVoice->SIDfreq = 0;
- pVoice->SIDctrl = 0;
- pVoice->SIDAD = 0;
- pVoice->SIDSR = 0;
-
- pVoice->sync = false;
-
- pVoice->pulseIndex = (pVoice->newPulseIndex = (pVoice->SIDpulseWidth = 0));
- pVoice->curSIDfreq = (pVoice->curNoiseFreq = 0);
-
- pVoice->output = (pVoice->noiseOutput = 0);
- pVoice->filtIO = 0;
+ outProc = &sidOperator::wave_calc_normal;
+ sync = false;
- pVoice->filtEnabled = false;
- pVoice->filtLow = (pVoice->filtRef = 0);
-
- pVoice->cycleLenCount = 0;
+ if ((SIDfreq < 16) || (SIDctrl & 8))
+ //if (/*(SIDfreq < 16) || */(SIDctrl & 8))
+ {
+ outProc = waveCalcMute;
+ if (SIDfreq == 0)
+ {
#if defined(DIRECT_FIXPOINT)
- pVoice->cycleLen.l = (pVoice->cycleAddLen.l = 0);
+ cycleLen.l = cycleAddLen.l = 0;
+ waveStep.l = 0;
#else
- pVoice->cycleLen = (pVoice->cycleLenPnt = 0);
- pVoice->cycleAddLenPnt = 0;
+ cycleLen = cycleLenPnt = 0;
+ cycleAddLenPnt = 0;
+ waveStep = 0;
+ waveStepPnt = 0;
#endif
-
- pVoice->outProc = waveCalcMute;
-
+ curSIDfreq = curNoiseFreq = 0;
+ noiseStepAdd = 0;
+ cycleLenCount = 0;
+ }
+ if (SIDctrl & 8)
+ {
+ if (noiseIsLocked)
+ {
+ noiseIsLocked = false;
#if defined(DIRECT_FIXPOINT)
- pVoice->waveStepAdd.l = (pVoice->waveStep.l = 0);
- pVoice->wavePre[0].len = (pVoice->wavePre[0].stp = 0);
- pVoice->wavePre[1].len = (pVoice->wavePre[1].stp = 0);
+ noiseReg.l = noiseSeed;
#else
- pVoice->waveStepAdd = (pVoice->waveStepAddPnt = 0);
- pVoice->waveStep = (pVoice->waveStepPnt = 0);
- pVoice->wavePre[0].len = 0;
- pVoice->wavePre[0].stp = (pVoice->wavePre[0].pnt = 0);
- pVoice->wavePre[1].len = 0;
- pVoice->wavePre[1].stp = (pVoice->wavePre[1].pnt = 0);
+ noiseReg = noiseSeed;
#endif
- pVoice->waveStepOld = 0;
-
+ }
+ }
+ }
+ else
+ {
+ if (curSIDfreq != SIDfreq)
+ {
+ curSIDfreq = SIDfreq;
+ // We keep the value cycleLen between 1 <= x <= 65535.
+ // This makes a range-check in wave_calc_cycle_len() unrequired.
#if defined(DIRECT_FIXPOINT)
- pVoice->noiseReg.l = noiseSeed;
+ cycleLen.l = ((sid->PCMsid << 12) / SIDfreq) << 4;
+ if (cycleLenCount > 0)
+ {
+ wave_calc_cycle_len();
+ outProc = &waveCalcRangeCheck;
+ }
#else
- pVoice->noiseReg = noiseSeed;
+ cycleLen = sid->PCMsid / SIDfreq;
+ cycleLenPnt = ((sid->PCMsid % SIDfreq) * 65536UL) / SIDfreq;
+ if (cycleLenCount > 0)
+ {
+ wave_calc_cycle_len();
+ outProc = &waveCalcRangeCheck;
+ }
#endif
- pVoice->noiseStepAdd = (pVoice->noiseStep = 0);
- pVoice->noiseIsLocked = false;
+ }
+
+ if ((SIDctrl & 0x80) && (curNoiseFreq != SIDfreq))
+ {
+ curNoiseFreq = SIDfreq;
+ noiseStepAdd = (sid->PCMsidNoise * SIDfreq) >> 8;
+ if (noiseStepAdd >= (1L << 21))
+ sidModeNormalTable[8] = sidMode80hp;
+ else
+ sidModeNormalTable[8] = sidMode80;
+ }
+
+ if (SIDctrl & 2)
+ {
+ if (!modulator->SIDfreq || (modulator->SIDctrl & 8 ))
+ {
+ }
+ else if ((carrier->SIDctrl & 2) && (modulator->SIDfreq >= (SIDfreq << 1)))
+ {
+ }
+ else
+ {
+ sync = true;
+ }
+ }
+
+ if (((SIDctrl & 0x14 ) == 0x14) && modulator->SIDfreq)
+ waveProc = sidModeRingTable[SIDctrl >> 4];
+ else
+ waveProc = sidModeNormalTable[SIDctrl >> 4];
+ }
}
-void sidEmuSet2(sidOperator* pVoice)
-{
- pVoice->outProc = &sidWaveCalcNormal;
- pVoice->sync = false;
- if ( (pVoice->SIDfreq < 16) || ((pVoice->SIDctrl & 8) != 0) )
-// if ( /*(pVoice->SIDfreq < 16) || */((pVoice->SIDctrl & 8) != 0) )
- {
- pVoice->outProc = waveCalcMute;
- if (pVoice->SIDfreq == 0)
+int8_t sidOperator::wave_calc_normal(sidOperator* pVoice)
+{
+ if (pVoice->cycleLenCount <= 0)
{
+ pVoice->wave_calc_cycle_len();
+ if (pVoice->SIDctrl & 0x40)
+ {
+ pVoice->pulseIndex = pVoice->newPulseIndex;
+ if (pVoice->pulseIndex > 2048)
+ {
#if defined(DIRECT_FIXPOINT)
- pVoice->cycleLen.l = (pVoice->cycleAddLen.l = 0);
- pVoice->waveStep.l = 0;
+ pVoice->waveStep.w[HI] = 0;
#else
- pVoice->cycleLen = (pVoice->cycleLenPnt = 0);
- pVoice->cycleAddLenPnt = 0;
- pVoice->waveStep = 0;
- pVoice->waveStepPnt = 0;
+ pVoice->waveStep = 0;
#endif
- pVoice->curSIDfreq = (pVoice->curNoiseFreq = 0);
- pVoice->noiseStepAdd = 0;
- pVoice->cycleLenCount = 0;
+ }
+ }
}
- if ((pVoice->SIDctrl & 8) != 0)
+
+ (*pVoice->waveProc)(pVoice);
+ pVoice->filtIO = ampMod1x8[(*pVoice->ADSRproc)(pVoice) | pVoice->output];
+ //pVoice->filtIO = pVoice->sid->masterVolume; // test for digi sound
+ waveCalcFilter(pVoice);
+ return pVoice->filtIO;//&pVoice->outputMask;
+}
+
+
+inline void sidOperator::wave_calc_cycle_len()
+{
+#if defined(DIRECT_FIXPOINT)
+ cycleAddLen.w[HI] = 0;
+ cycleAddLen.l += cycleLen.l;
+ cycleLenCount = cycleAddLen.w[HI];
+#else
+ cycleAddLenPnt += cycleLenPnt;
+ cycleLenCount = cycleLen;
+ if (cycleAddLenPnt > 65535)
+ cycleLenCount++;
+ cycleAddLenPnt &= 0xFFFF;
+#endif
+ // If we keep the value cycleLen between 1 <= x <= 65535, the following check is not required.
+#if 0
+ if (!cycleLenCount)
{
- if (pVoice->noiseIsLocked)
- {
- pVoice->noiseIsLocked = false;
#if defined(DIRECT_FIXPOINT)
- pVoice->noiseReg.l = noiseSeed;
+ waveStep.l = 0;
#else
- pVoice->noiseReg = noiseSeed;
+ waveStep = waveStepPnt = 0;
#endif
- }
- }
+ cycleLenCount = 0;
}
else
+#endif
{
- if ( pVoice->curSIDfreq != pVoice->SIDfreq )
- {
- pVoice->curSIDfreq = pVoice->SIDfreq;
- /* We keep the value cycleLen between 1 <= x <= 65535. */
- /* This makes a range-check in waveCalcCycleLen() unrequired. */
#if defined(DIRECT_FIXPOINT)
- pVoice->cycleLen.l = ((pVoice->sid->PCMsid << 12) / pVoice->SIDfreq) << 4;
- if (pVoice->cycleLenCount > 0)
- {
- waveCalcCycleLen(pVoice);
- pVoice->outProc = &waveCalcRangeCheck;
- }
+ uint16_t diff = cycleLenCount - cycleLen.w[HI];
#else
- pVoice->cycleLen = pVoice->sid->PCMsid / pVoice->SIDfreq;
- pVoice->cycleLenPnt = (( pVoice->sid->PCMsid % pVoice->SIDfreq ) * 65536UL ) / pVoice->SIDfreq;
- if (pVoice->cycleLenCount > 0)
- {
- waveCalcCycleLen(pVoice);
- pVoice->outProc = &waveCalcRangeCheck;
- }
+ uint16_t diff = cycleLenCount - cycleLen;
#endif
- }
-
- if ((( pVoice->SIDctrl & 0x80 ) == 0x80 ) && ( pVoice->curNoiseFreq != pVoice->SIDfreq ))
- {
- pVoice->curNoiseFreq = pVoice->SIDfreq;
- pVoice->noiseStepAdd = (pVoice->sid->PCMsidNoise * pVoice->SIDfreq) >> 8;
- if (pVoice->noiseStepAdd >= (1L<<21))
- sidModeNormalTable[8] = sidMode80hp;
- else
- sidModeNormalTable[8] = sidMode80;
- }
-
- if (( pVoice->SIDctrl & 2 ) != 0 )
- {
- if ( ( pVoice->modulator->SIDfreq == 0 ) || (( pVoice->modulator->SIDctrl & 8 ) != 0 ) )
+ if (wavePre[diff].len != cycleLenCount)
{
- ;
- }
- else if ( (( pVoice->carrier->SIDctrl & 2 ) != 0 ) &&
- ( pVoice->modulator->SIDfreq >= ( pVoice->SIDfreq << 1 )) )
- {
- ;
+ wavePre[diff].len = cycleLenCount;
+#if defined(DIRECT_FIXPOINT)
+ wavePre[diff].stp = waveStepAdd.l = (4096UL*65536UL) / cycleLenCount;
+#else
+ wavePre[diff].stp = waveStepAdd = 4096UL / cycleLenCount;
+ wavePre[diff].pnt = waveStepAddPnt = ((4096UL % cycleLenCount) * 65536UL) / cycleLenCount;
+#endif
}
else
{
- pVoice->sync = true;
+#if defined(DIRECT_FIXPOINT)
+ waveStepAdd.l = wavePre[diff].stp;
+#else
+ waveStepAdd = wavePre[diff].stp;
+ waveStepAddPnt = wavePre[diff].pnt;
+#endif
}
- }
-
- if ((( pVoice->SIDctrl & 0x14 ) == 0x14 ) && ( pVoice->modulator->SIDfreq != 0 ))
- pVoice->waveProc = sidModeRingTable[pVoice->SIDctrl >> 4];
- else
- pVoice->waveProc = sidModeNormalTable[pVoice->SIDctrl >> 4];
- }
+ } // see above (opening bracket)
}
+
void sidInitWaveformTables(int type)
{
int i,j;
diff --git a/src/devices/sound/sidvoice.h b/src/devices/sound/sidvoice.h
index cf32eb7f066..c2cb00a5225 100644
--- a/src/devices/sound/sidvoice.h
+++ b/src/devices/sound/sidvoice.h
@@ -1,32 +1,30 @@
// license:BSD-3-Clause
// copyright-holders:Peter Trauner
-#pragma once
+#ifndef MAME_SOUND_SIDVOICE_H
+#define MAME_SOUND_SIDVOICE_H
-#ifndef __SIDVOICE_H__
-#define __SIDVOICE_H__
+#pragma once
/*
approximation of the sid6581 chip
this part is for 1 (of the 3) voices of a chip
*/
-#include "sound/mos6581.h"
+struct SID6581_t;
-struct sw_storage
+struct sidOperator
{
- uint16_t len;
+ struct sw_storage
+ {
+ uint16_t len;
#if defined(DIRECT_FIXPOINT)
- uint32_t stp;
+ uint32_t stp;
#else
- uint32_t pnt;
- int16_t stp;
+ uint32_t pnt;
+ int16_t stp;
#endif
-};
-
-struct SID6581_t;
+ };
-struct sidOperator
-{
SID6581_t *sid;
uint8_t reg[7];
uint32_t SIDfreq;
@@ -57,8 +55,8 @@ struct sidOperator
uint16_t cycleLen, cycleLenPnt;
#endif
- int8_t(*outProc)(sidOperator *);
- void(*waveProc)(sidOperator *);
+ int8_t (*outProc)(sidOperator *);
+ void (*waveProc)(sidOperator *);
#if defined(DIRECT_FIXPOINT)
cpuLword waveStep, waveStepAdd;
@@ -67,7 +65,7 @@ struct sidOperator
uint32_t waveStepPnt, waveStepAddPnt;
#endif
uint16_t waveStepOld;
- struct sw_storage wavePre[2];
+ sw_storage wavePre[2];
#if defined(DIRECT_FIXPOINT) && defined(LARGE_NOISE_TABLE)
cpuLword noiseReg;
@@ -95,18 +93,21 @@ struct sidOperator
#endif
uint8_t enveVol, enveSusVol;
uint16_t enveShortAttackCount;
+
+ void clear();
+
+ void set();
+ void set2();
+ static int8_t wave_calc_normal(sidOperator *pVoice);
+
+private:
+ void wave_calc_cycle_len();
};
typedef int8_t (*ptr2sidFunc)(sidOperator *);
typedef uint16_t (*ptr2sidUwordFunc)(sidOperator *);
typedef void (*ptr2sidVoidFunc)(sidOperator *);
-void sidClearOperator( sidOperator* pVoice );
-
-void sidEmuSet(sidOperator* pVoice);
-void sidEmuSet2(sidOperator* pVoice);
-int8_t sidWaveCalcNormal(sidOperator* pVoice);
-
void sidInitWaveformTables(int type);
void sidInitMixerEngine(running_machine &machine);
@@ -117,4 +118,4 @@ extern ptr2sidVoidFunc sid8580ModeNormalTable[16];
extern ptr2sidVoidFunc sid8580ModeRingTable[16];
#endif
-#endif /* __SIDVOICE_H__ */
+#endif // MAME_SOUND_SIDVOICE_H
diff --git a/src/devices/sound/sidw6581.h b/src/devices/sound/sidw6581.h
index 2f9a79d2fcf..16c6a4a630f 100644
--- a/src/devices/sound/sidw6581.h
+++ b/src/devices/sound/sidw6581.h
@@ -1,7 +1,9 @@
// license:GPL-2.0+
// copyright-holders:Dag Lem
-#ifndef WAVE6581_h
-#define WAVE6581_h
+#ifndef MAME_SOUND_SIDW6581_H
+#define MAME_SOUND_SIDW6581_H
+
+#pragma once
/*
* MOS-6581 R1, R3, R4
@@ -1050,4 +1052,4 @@ static const uint8_t waveform70_6581[4096+4096] =
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,0x30, 0x0, 0x0, 0x0,0x78,0x78,0x7e,0x7f,0x7f
};
-#endif // WAVE6581_h
+#endif // MAME_SOUND_SIDW6581_H
diff --git a/src/devices/sound/sidw8580.h b/src/devices/sound/sidw8580.h
index cb5b4a1c6ab..13159b51c5a 100644
--- a/src/devices/sound/sidw8580.h
+++ b/src/devices/sound/sidw8580.h
@@ -1,9 +1,9 @@
// license:GPL-2.0+
// copyright-holders:Dag Lem
-#pragma once
+#ifndef MAME_SOUND_SIDW8580_H
+#define MAME_SOUND_SIDW8580_H
-#ifndef __SIDW8580_H__
-#define __SIDW8580_H__
+#pragma once
/* MOS-8580 R5 waveforms $30,$50,$60,$70
@@ -1395,5 +1395,4 @@ static const uint8_t waveform70_8580[4096+4096] =
0xff,0xff,0xff,0xff
};
-
-#endif /* __SIDW8580_H__ */
+#endif // MAME_SOUND_SIDW8580_H
diff --git a/src/devices/sound/sn76477.cpp b/src/devices/sound/sn76477.cpp
index f845b1ae0a4..c259b3cb0ed 100644
--- a/src/devices/sound/sn76477.cpp
+++ b/src/devices/sound/sn76477.cpp
@@ -38,9 +38,10 @@
*****************************************************************************/
#include "emu.h"
-#include "wavwrite.h"
#include "sn76477.h"
+#include "wavwrite.h"
+
/*****************************************************************************
*
@@ -74,12 +75,12 @@
#define LOG_WAV_FILE_NAME "sn76477_%s.wav"
-#define LOG(n,x) do { if (VERBOSE >= (n)) logerror x; } while (0)
+#define LOG(n,...) do { if (VERBOSE >= (n)) logerror(__VA_ARGS__); } while (0)
#define CHECK_BOOLEAN assert((state & 0x01) == state)
#define CHECK_POSITIVE assert(data >= 0.0)
#define CHECK_VOLTAGE assert((data >= 0.0) && (data <= 5.0))
-#define CHECK_CAP_VOLTAGE assert(((data >= 0.0) && (data <= 5.0)) || (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT))
+#define CHECK_CAP_VOLTAGE assert(((data >= 0.0) && (data <= 5.0)) || (data == EXTERNAL_VOLTAGE_DISCONNECT))
/*****************************************************************************
*
@@ -121,7 +122,7 @@
#define OUT_LOW_CLIP_THRESHOLD (0.715) /* the minimum voltage that can be put out (measured) */
/* gain factors for OUT voltage in 0.1V increments (measured) */
-static const double out_pos_gain[] =
+static constexpr double out_pos_gain[] =
{
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.01, /* 0.0 - 0.9V */
0.03, 0.11, 0.15, 0.19, 0.21, 0.23, 0.26, 0.29, 0.31, 0.33, /* 1.0 - 1.9V */
@@ -130,9 +131,9 @@ static const double out_pos_gain[] =
0.90, 0.93, 0.96, 0.98, 1.00 /* 4.0 - 4.4V */
};
-static const double out_neg_gain[] =
+static constexpr double out_neg_gain[] =
{
- 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, -0.01, /* 0.0 - 0.9V */
+ 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, -0.01, /* 0.0 - 0.9V */
-0.02, -0.09, -0.13, -0.15, -0.17, -0.19, -0.22, -0.24, -0.26, -0.28, /* 1.0 - 1.9V */
-0.30, -0.32, -0.34, -0.37, -0.39, -0.41, -0.44, -0.46, -0.48, -0.51, /* 2.0 - 2.9V */
-0.53, -0.56, -0.58, -0.60, -0.62, -0.65, -0.67, -0.69, -0.72, -0.74, /* 3.0 - 3.9V */
@@ -140,10 +141,10 @@ static const double out_neg_gain[] =
};
-const device_type SN76477 = device_creator<sn76477_device>;
+DEFINE_DEVICE_TYPE(SN76477, sn76477_device, "sn76477", "TI SN76477 CSG")
sn76477_device::sn76477_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SN76477, "SN76477", tag, owner, clock, "sn76477", __FILE__),
+ : device_t(mconfig, SN76477, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_enable(0),
m_envelope_mode(0),
@@ -626,7 +627,7 @@ void sn76477_device::log_enable_line()
"Enabled", "Inhibited"
};
- LOG(1, ("SN76477 '%s': Enable line (9): %d [%s]\n", tag(), m_enable, desc[m_enable]));
+ LOG(1, "SN76477: Enable line (9): %d [%s]\n", m_enable, desc[m_enable]);
}
@@ -638,7 +639,7 @@ void sn76477_device::log_mixer_mode()
"SLF/Noise", "SLF/VCO/Noise", "SLF/VCO", "Inhibit"
};
- LOG(1, ("SN76477 '%s': Mixer mode (25-27): %d [%s]\n", tag(), m_mixer_mode, desc[m_mixer_mode]));
+ LOG(1, "SN76477: Mixer mode (25-27): %d [%s]\n", m_mixer_mode, desc[m_mixer_mode]);
}
@@ -649,7 +650,7 @@ void sn76477_device::log_envelope_mode()
"VCO", "One-Shot", "Mixer Only", "VCO with Alternating Polarity"
};
- LOG(1, ("SN76477 '%s': Envelope mode (1,28): %d [%s]\n", tag(), m_envelope_mode, desc[m_envelope_mode]));
+ LOG(1, "SN76477: Envelope mode (1,28): %d [%s]\n", m_envelope_mode, desc[m_envelope_mode]);
}
@@ -660,7 +661,7 @@ void sn76477_device::log_vco_mode()
"External (Pin 16)", "Internal (SLF)"
};
- LOG(1, ("SN76477 '%s': VCO mode (22): %d [%s]\n", tag(), m_vco_mode, desc[m_vco_mode]));
+ LOG(1, "SN76477: VCO mode (22): %d [%s]\n", m_vco_mode, desc[m_vco_mode]);
}
@@ -670,16 +671,16 @@ void sn76477_device::log_one_shot_time()
{
if (compute_one_shot_cap_charging_rate() > 0)
{
- LOG(1, ("SN76477 '%s': One-shot time (23,24): %.4f sec\n", tag(), ONE_SHOT_CAP_VOLTAGE_RANGE * (1 / compute_one_shot_cap_charging_rate())));
+ LOG(1, "SN76477: One-shot time (23,24): %.4f sec\n", ONE_SHOT_CAP_VOLTAGE_RANGE * (1 / compute_one_shot_cap_charging_rate()));
}
else
{
- LOG(1, ("SN76477 '%s': One-shot time (23,24): N/A\n", tag()));
+ LOG(1, "SN76477: One-shot time (23,24): N/A\n");
}
}
else
{
- LOG(1, ("SN76477 '%s': One-shot time (23,24): External (cap = %.2fV)\n", tag(), m_one_shot_cap_voltage));
+ LOG(1, "SN76477: One-shot time (23,24): External (cap = %.2fV)\n", m_one_shot_cap_voltage);
}
}
@@ -693,29 +694,29 @@ void sn76477_device::log_slf_freq()
double charging_time = (1 / compute_slf_cap_charging_rate()) * SLF_CAP_VOLTAGE_RANGE;
double discharging_time = (1 / compute_slf_cap_discharging_rate()) * SLF_CAP_VOLTAGE_RANGE;
- LOG(1, ("SN76477 '%s': SLF frequency (20,21): %.2f Hz\n", tag(), 1 / (charging_time + discharging_time)));
+ LOG(1, "SN76477: SLF frequency (20,21): %.2f Hz\n", 1 / (charging_time + discharging_time));
}
else
{
- LOG(1, ("SN76477 '%s': SLF frequency (20,21): N/A\n", tag()));
+ LOG(1, "SN76477: SLF frequency (20,21): N/A\n");
}
}
else
{
- LOG(1, ("SN76477 '%s': SLF frequency (20,21): External (cap = %.2fV)\n", tag(), m_slf_cap_voltage));
+ LOG(1, "SN76477: SLF frequency (20,21): External (cap = %.2fV)\n", m_slf_cap_voltage);
}
}
void sn76477_device::log_vco_pitch_voltage()
{
- LOG(1, ("SN76477 '%s': VCO pitch voltage (19): %.2fV\n", tag(), m_pitch_voltage));
+ LOG(1, "SN76477: VCO pitch voltage (19): %.2fV\n", m_pitch_voltage);
}
void sn76477_device::log_vco_duty_cycle()
{
- LOG(1, ("SN76477 '%s': VCO duty cycle (16,19): %.0f%%\n", tag(), compute_vco_duty_cycle() * 100.0));
+ LOG(1, "SN76477: VCO duty cycle (16,19): %.0f%%\n", compute_vco_duty_cycle() * 100.0);
}
@@ -728,16 +729,16 @@ void sn76477_device::log_vco_freq()
double min_freq = compute_vco_cap_charging_discharging_rate() / (2 * VCO_CAP_VOLTAGE_RANGE);
double max_freq = compute_vco_cap_charging_discharging_rate() / (2 * VCO_TO_SLF_VOLTAGE_DIFF);
- LOG(1, ("SN76477 '%s': VCO frequency (17,18): %.2f Hz - %.1f Hz\n", tag(), min_freq, max_freq));
+ LOG(1, "SN76477: VCO frequency (17,18): %.2f Hz - %.1f Hz\n", min_freq, max_freq);
}
else
{
- LOG(1, ("SN76477 '%s': VCO frequency (17,18): N/A\n", tag()));
+ LOG(1, "SN76477: VCO frequency (17,18): N/A\n");
}
}
else
{
- LOG(1, ("SN76477 '%s': VCO frequency (17,18): External (cap = %.2fV)\n", tag(), m_vco_cap_voltage));
+ LOG(1, "SN76477: VCO frequency (17,18): External (cap = %.2fV)\n", m_vco_cap_voltage);
}
}
@@ -749,13 +750,13 @@ void sn76477_device::log_vco_ext_voltage()
double min_freq = compute_vco_cap_charging_discharging_rate() / (2 * VCO_CAP_VOLTAGE_RANGE);
double max_freq = compute_vco_cap_charging_discharging_rate() / (2 * VCO_TO_SLF_VOLTAGE_DIFF);
- LOG(1, ("SN76477 '%s': VCO ext. voltage (16): %.2fV (%.2f Hz)\n", tag(),
+ LOG(1, "SN76477: VCO ext. voltage (16): %.2fV (%.2f Hz)\n",
m_vco_voltage,
- min_freq + ((max_freq - min_freq) * m_vco_voltage / VCO_MAX_EXT_VOLTAGE)));
+ min_freq + ((max_freq - min_freq) * m_vco_voltage / VCO_MAX_EXT_VOLTAGE));
}
else
{
- LOG(1, ("SN76477 '%s': VCO ext. voltage (16): %.2fV (saturated, no output)\n", tag(), m_vco_voltage));
+ LOG(1, "SN76477: VCO ext. voltage (16): %.2fV (saturated, no output)\n", m_vco_voltage);
}
}
@@ -764,17 +765,17 @@ void sn76477_device::log_noise_gen_freq()
{
if (m_noise_clock_ext)
{
- LOG(1, ("SN76477 '%s': Noise gen frequency (4): External\n", tag()));
+ LOG(1, "SN76477: Noise gen frequency (4): External\n");
}
else
{
if (compute_noise_gen_freq() > 0)
{
- LOG(1, ("SN76477 '%s': Noise gen frequency (4): %d Hz\n", tag(), compute_noise_gen_freq()));
+ LOG(1, "SN76477: Noise gen frequency (4): %d Hz\n", compute_noise_gen_freq());
}
else
{
- LOG(1, ("SN76477 '%s': Noise gen frequency (4): N/A\n", tag()));
+ LOG(1, "SN76477: Noise gen frequency (4): N/A\n");
}
}
}
@@ -793,21 +794,21 @@ void sn76477_device::log_noise_filter_freq()
double charging_time = (1 / charging_rate) * NOISE_CAP_VOLTAGE_RANGE;
double discharging_time = (1 / charging_rate) * NOISE_CAP_VOLTAGE_RANGE;
- LOG(1, ("SN76477 '%s': Noise filter frequency (5,6): %.0f Hz\n", tag(), 1 / (charging_time + discharging_time)));
+ LOG(1, "SN76477: Noise filter frequency (5,6): %.0f Hz\n", 1 / (charging_time + discharging_time));
}
else
{
- LOG(1, ("SN76477 '%s': Noise filter frequency (5,6): Very Large (Filtering Disabled)\n", tag()));
+ LOG(1, "SN76477: Noise filter frequency (5,6): Very Large (Filtering Disabled)\n");
}
}
else
{
- LOG(1, ("SN76477 '%s': Noise filter frequency (5,6): N/A\n", tag()));
+ LOG(1, "SN76477: Noise filter frequency (5,6): N/A\n");
}
}
else
{
- LOG(1, ("SN76477 '%s': Noise filter frequency (5,6): External (cap = %.2fV)\n", tag(), m_noise_filter_cap));
+ LOG(1, "SN76477: Noise filter frequency (5,6): External (cap = %.2fV)\n", m_noise_filter_cap);
}
}
@@ -818,16 +819,16 @@ void sn76477_device::log_attack_time()
{
if (compute_attack_decay_cap_charging_rate() > 0)
{
- LOG(1, ("SN76477 '%s': Attack time (8,10): %.4f sec\n", tag(), AD_CAP_VOLTAGE_RANGE * (1 / compute_attack_decay_cap_charging_rate())));
+ LOG(1, "SN76477: Attack time (8,10): %.4f sec\n", AD_CAP_VOLTAGE_RANGE * (1 / compute_attack_decay_cap_charging_rate()));
}
else
{
- LOG(1, ("SN76477 '%s': Attack time (8,10): N/A\n", tag()));
+ LOG(1, "SN76477: Attack time (8,10): N/A\n");
}
}
else
{
- LOG(1, ("SN76477 '%s': Attack time (8,10): External (cap = %.2fV)\n", tag(), m_attack_decay_cap_voltage));
+ LOG(1, "SN76477: Attack time (8,10): External (cap = %.2fV)\n", m_attack_decay_cap_voltage);
}
}
@@ -838,27 +839,26 @@ void sn76477_device::log_decay_time()
{
if (compute_attack_decay_cap_discharging_rate() > 0)
{
- LOG(1, ("SN76477 '%s': Decay time (7,8): %.4f sec\n", tag(), AD_CAP_VOLTAGE_RANGE * (1 / compute_attack_decay_cap_discharging_rate())));
+ LOG(1, "SN76477: Decay time (7,8): %.4f sec\n", AD_CAP_VOLTAGE_RANGE * (1 / compute_attack_decay_cap_discharging_rate()));
}
else
{
- LOG(1, ("SN76477 '%s': Decay time (8,10): N/A\n", tag()));
+ LOG(1, "SN76477: Decay time (8,10): N/A\n");
}
}
else
{
- LOG(1, ("SN76477 '%s': Decay time (7, 8): External (cap = %.2fV)\n", tag(), m_attack_decay_cap_voltage));
+ LOG(1, "SN76477: Decay time (7, 8): External (cap = %.2fV)\n", m_attack_decay_cap_voltage);
}
}
void sn76477_device::log_voltage_out()
{
- LOG(1, ("SN76477 '%s': Voltage OUT range (11,12): %.2fV - %.2fV (clips above %.2fV)\n",
- tag(),
+ LOG(1, "SN76477: Voltage OUT range (11,12): %.2fV - %.2fV (clips above %.2fV)\n",
OUT_CENTER_LEVEL_VOLTAGE + compute_center_to_peak_voltage_out() * out_neg_gain[(int)(AD_CAP_VOLTAGE_MAX * 10)],
OUT_CENTER_LEVEL_VOLTAGE + compute_center_to_peak_voltage_out() * out_pos_gain[(int)(AD_CAP_VOLTAGE_MAX * 10)],
- OUT_HIGH_CLIP_THRESHOLD));
+ OUT_HIGH_CLIP_THRESHOLD);
}
@@ -897,7 +897,7 @@ void sn76477_device::open_wav_file()
sprintf(wav_file_name, LOG_WAV_FILE_NAME, tag());
m_file = wav_open(wav_file_name, m_our_sample_rate, 2);
- LOG(1, ("SN76477 '%s': Logging output: %s\n", tag(), wav_file_name));
+ LOG(1, "SN76477: Logging output: %s\n", wav_file_name);
}
@@ -1128,7 +1128,7 @@ void sn76477_device::one_shot_cap_voltage_w(double data)
{
CHECK_CAP_VOLTAGE;
- if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)
+ if (data == EXTERNAL_VOLTAGE_DISCONNECT)
{
/* switch to internal, if not already */
if (m_one_shot_cap_voltage_ext)
@@ -1208,7 +1208,7 @@ void sn76477_device::slf_cap_voltage_w(double data)
{
CHECK_CAP_VOLTAGE;
- if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)
+ if (data == EXTERNAL_VOLTAGE_DISCONNECT)
{
/* switch to internal, if not already */
if (m_slf_cap_voltage_ext)
@@ -1286,7 +1286,7 @@ void sn76477_device::vco_cap_voltage_w(double data)
{
CHECK_CAP_VOLTAGE;
- if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)
+ if (data == EXTERNAL_VOLTAGE_DISCONNECT)
{
/* switch to internal, if not already */
if (m_vco_cap_voltage_ext)
@@ -1462,7 +1462,7 @@ void sn76477_device::noise_filter_cap_voltage_w(double data)
{
CHECK_CAP_VOLTAGE;
- if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)
+ if (data == EXTERNAL_VOLTAGE_DISCONNECT)
{
/* switch to internal, if not already */
if (m_noise_filter_cap_voltage_ext)
@@ -1562,7 +1562,7 @@ void sn76477_device::attack_decay_cap_voltage_w(double data)
{
CHECK_CAP_VOLTAGE;
- if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)
+ if (data == EXTERNAL_VOLTAGE_DISCONNECT)
{
/* switch to internal, if not already */
if (m_attack_decay_cap_voltage_ext)
diff --git a/src/devices/sound/sn76477.h b/src/devices/sound/sn76477.h
index 19b331bacdf..a785fc936d6 100644
--- a/src/devices/sound/sn76477.h
+++ b/src/devices/sound/sn76477.h
@@ -35,10 +35,10 @@
*****************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_SN76477_H
+#define MAME_SOUND_SN76477_H
-#ifndef __SN76477_H__
-#define __SN76477_H__
+#pragma once
#include "machine/rescap.h"
@@ -94,7 +94,6 @@ class sn76477_device : public device_t,
{
public:
sn76477_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~sn76477_device() {}
static void set_noise_params(device_t &device, double clock_res, double filter_res, double filter_cap)
{
@@ -171,7 +170,7 @@ public:
void feedback_res_w(double data);
/* these functions take a capacitor value in Farads or the voltage on it in Volts */
- #define SN76477_EXTERNAL_VOLTAGE_DISCONNECT (-1.0) /* indicates that the voltage is internally computed,
+ static constexpr double EXTERNAL_VOLTAGE_DISCONNECT = -1.0; /* indicates that the voltage is internally computed,
can be used in all the functions that take a
voltage on a capacitor */
void one_shot_cap_w(double data);
@@ -306,7 +305,6 @@ private:
void state_save_register();
};
-extern const device_type SN76477;
-
+DECLARE_DEVICE_TYPE(SN76477, sn76477_device)
-#endif/* __SN76477_H__ */
+#endif // MAME_SOUND_SN76477_H
diff --git a/src/devices/sound/sn76496.cpp b/src/devices/sound/sn76496.cpp
index c60b587f3a5..bccb53c27bb 100644
--- a/src/devices/sound/sn76496.cpp
+++ b/src/devices/sound/sn76496.cpp
@@ -130,53 +130,81 @@
#define MAX_OUTPUT 0x7fff
-sn76496_base_device::sn76496_base_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, int feedbackmask, int noisetap1, int noisetap2, bool negate, bool stereo, int clockdivider, int sega,
- device_t *owner, uint32_t clock, const char *shortname, const char *source)
-
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sound_interface(mconfig, *this),
- m_ready_handler(*this),
- m_feedback_mask(feedbackmask),
- m_whitenoise_tap1(noisetap1),
- m_whitenoise_tap2(noisetap2),
- m_negate(negate),
- m_stereo(stereo),
- m_clock_divider(clockdivider),
- m_sega_style_psg(sega)
+sn76496_base_device::sn76496_base_device(
+ const machine_config &mconfig,
+ device_type type,
+ const char *tag,
+ int feedbackmask,
+ int noisetap1,
+ int noisetap2,
+ bool negate,
+ bool stereo,
+ int clockdivider,
+ bool sega,
+ device_t *owner,
+ uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_ready_handler(*this)
+ , m_feedback_mask(feedbackmask)
+ , m_whitenoise_tap1(noisetap1)
+ , m_whitenoise_tap2(noisetap2)
+ , m_negate(negate)
+ , m_stereo(stereo)
+ , m_clock_divider(clockdivider)
+ , m_sega_style_psg(sega)
{
}
sn76496_device::sn76496_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sn76496_base_device(mconfig, SN76496, "SN76496", tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock, "sn76496", __FILE__)
- { }
+ : sn76496_base_device(mconfig, SN76496, tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock)
+{
+}
+
u8106_device::u8106_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sn76496_base_device(mconfig, U8106, "U8106", tag, 0x4000, 0x01, 0x02, true, false, 8, true, owner, clock, "u8106", __FILE__)
- { }
+ : sn76496_base_device(mconfig, U8106, tag, 0x4000, 0x01, 0x02, true, false, 8, true, owner, clock)
+{
+}
+
y2404_device::y2404_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sn76496_base_device(mconfig, Y2404, "Y2404", tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock, "y2404", __FILE__)
- { }
+ : sn76496_base_device(mconfig, Y2404, tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock)
+{
+}
+
sn76489_device::sn76489_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sn76496_base_device(mconfig, SN76489, "SN76489", tag, 0x4000, 0x01, 0x02, true, false, 8, true, owner, clock, "sn76489", __FILE__)
- { }
+ : sn76496_base_device(mconfig, SN76489, tag, 0x4000, 0x01, 0x02, true, false, 8, true, owner, clock)
+{
+}
+
sn76489a_device::sn76489a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sn76496_base_device(mconfig, SN76489A, "SN76489A", tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock, "sn76489a", __FILE__)
- { }
+ : sn76496_base_device(mconfig, SN76489A, tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock)
+{
+}
+
sn76494_device::sn76494_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sn76496_base_device(mconfig, SN76494, "SN76494", tag, 0x10000, 0x04, 0x08, false, false, 1, true, owner, clock, "sn76494", __FILE__)
- { }
+ : sn76496_base_device(mconfig, SN76494, tag, 0x10000, 0x04, 0x08, false, false, 1, true, owner, clock)
+{
+}
+
sn94624_device::sn94624_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sn76496_base_device(mconfig, SN94624, "SN94624", tag, 0x4000, 0x01, 0x02, true, false, 1, true, owner, clock, "sn94624", __FILE__)
- { }
+ : sn76496_base_device(mconfig, SN94624, tag, 0x4000, 0x01, 0x02, true, false, 1, true, owner, clock)
+{
+}
+
ncr7496_device::ncr7496_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sn76496_base_device(mconfig, NCR7496, "NCR7496", tag, 0x8000, 0x02, 0x20, false, false, 8, true, owner, clock, "ncr7496", __FILE__)
- { }
+ : sn76496_base_device(mconfig, NCR7496, tag, 0x8000, 0x02, 0x20, false, false, 8, true, owner, clock)
+{
+}
+
gamegear_device::gamegear_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sn76496_base_device(mconfig, GAMEGEAR, "Game Gear PSG", tag, 0x8000, 0x01, 0x08, true, true, 8, false, owner, clock, "gamegear_psg", __FILE__)
- { }
+ : sn76496_base_device(mconfig, GAMEGEAR, tag, 0x8000, 0x01, 0x08, true, true, 8, false, owner, clock)
+{
+}
+
segapsg_device::segapsg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sn76496_base_device(mconfig, SEGAPSG, "SEGA VDP PSG", tag, 0x8000, 0x01, 0x08, true, false, 8, false, owner, clock, "segapsg", __FILE__)
- { }
+ : sn76496_base_device(mconfig, SEGAPSG, tag, 0x8000, 0x01, 0x08, true, false, 8, false, owner, clock)
+{
+}
void sn76496_base_device::device_start()
@@ -434,13 +462,13 @@ void sn76496_base_device::register_for_save_states()
// save_item(NAME(m_sega_style_psg));
}
-const device_type SN76496 = device_creator<sn76496_device>;
-const device_type U8106 = device_creator<u8106_device>;
-const device_type Y2404 = device_creator<y2404_device>;
-const device_type SN76489 = device_creator<sn76489_device>;
-const device_type SN76489A = device_creator<sn76489a_device>;
-const device_type SN76494 = device_creator<sn76494_device>;
-const device_type SN94624 = device_creator<sn94624_device>;
-const device_type NCR7496 = device_creator<ncr7496_device>;
-const device_type GAMEGEAR = device_creator<gamegear_device>;
-const device_type SEGAPSG = device_creator<segapsg_device>;
+DEFINE_DEVICE_TYPE(SN76496, sn76496_device, "sn76496", "SN76496")
+DEFINE_DEVICE_TYPE(U8106, u8106_device, "u8106", "U8106")
+DEFINE_DEVICE_TYPE(Y2404, y2404_device, "y2404", "Y2404")
+DEFINE_DEVICE_TYPE(SN76489, sn76489_device, "sn76489", "SN76489")
+DEFINE_DEVICE_TYPE(SN76489A, sn76489a_device, "sn76489a", "SN76489A")
+DEFINE_DEVICE_TYPE(SN76494, sn76494_device, "sn76494", "SN76494")
+DEFINE_DEVICE_TYPE(SN94624, sn94624_device, "sn94624", "SN94624")
+DEFINE_DEVICE_TYPE(NCR7496, ncr7496_device, "ncr7496", "NCR7496")
+DEFINE_DEVICE_TYPE(GAMEGEAR, gamegear_device, "gamegear_psg", "Game Gear PSG")
+DEFINE_DEVICE_TYPE(SEGAPSG, segapsg_device, "segapsg", "Sega VDP PSG")
diff --git a/src/devices/sound/sn76496.h b/src/devices/sound/sn76496.h
index 936df36ea24..22ad524e308 100644
--- a/src/devices/sound/sn76496.h
+++ b/src/devices/sound/sn76496.h
@@ -1,34 +1,31 @@
// license:BSD-3-Clause
// copyright-holders:Nicola Salmoria
+#ifndef MAME_SOUND_SN76496_H
+#define MAME_SOUND_SN76496_H
+
#pragma once
-#ifndef __SN76496_H__
-#define __SN76496_H__
+DECLARE_DEVICE_TYPE(SN76496, sn76496_device)
+DECLARE_DEVICE_TYPE(U8106, u8106_device)
+DECLARE_DEVICE_TYPE(Y2404, y2404_device)
+DECLARE_DEVICE_TYPE(SN76489, sn76489_device)
+DECLARE_DEVICE_TYPE(SN76489A, sn76489a_device)
+DECLARE_DEVICE_TYPE(SN76494, sn76494_device)
+DECLARE_DEVICE_TYPE(SN94624, sn94624_device)
+DECLARE_DEVICE_TYPE(NCR7496, ncr7496_device)
+DECLARE_DEVICE_TYPE(GAMEGEAR, gamegear_device)
+DECLARE_DEVICE_TYPE(SEGAPSG, segapsg_device)
-extern const device_type SN76496;
-extern const device_type U8106;
-extern const device_type Y2404;
-extern const device_type SN76489;
-extern const device_type SN76489A;
-extern const device_type SN76494;
-extern const device_type SN94624;
-extern const device_type NCR7496;
-extern const device_type GAMEGEAR;
-extern const device_type SEGAPSG;
-#define MCFG_SN76496_READY_HANDLER(_devcb) \
- devcb = &sn76496_base_device::set_ready_handler(*device, DEVCB_##_devcb);
+#define MCFG_SN76496_READY_HANDLER(cb) \
+ devcb = &sn76496_base_device::set_ready_handler(*device, (DEVCB_##cb));
class sn76496_base_device : public device_t, public device_sound_interface
{
public:
- sn76496_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag,
- int feedbackmask, int noisetap1, int noisetap2, bool negate, bool stereo, int clockdivider, int sega,
- device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
// static configuration helpers
- template<class _Object> static devcb_base &set_ready_handler(device_t &device, _Object object) { return downcast<sn76496_base_device &>(device).m_ready_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ready_handler(device_t &device, Object &&cb) { return downcast<sn76496_base_device &>(device).m_ready_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( stereo_w );
void write(uint8_t data);
@@ -36,6 +33,20 @@ public:
DECLARE_READ_LINE_MEMBER( ready_r ) { return m_ready_state ? 1 : 0; }
protected:
+ sn76496_base_device(
+ const machine_config &mconfig,
+ device_type type,
+ const char *tag,
+ int feedbackmask,
+ int noisetap1,
+ int noisetap2,
+ bool negate,
+ bool stereo,
+ int clockdivider,
+ bool sega,
+ device_t *owner,
+ uint32_t clock);
+
virtual void device_start() override;
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
@@ -141,4 +152,4 @@ public:
segapsg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-#endif /* __SN76496_H__ */
+#endif // MAME_SOUND_SN76496_H
diff --git a/src/devices/sound/snkwave.cpp b/src/devices/sound/snkwave.cpp
index c7b4ff4ef5a..4a16946199b 100644
--- a/src/devices/sound/snkwave.cpp
+++ b/src/devices/sound/snkwave.cpp
@@ -12,17 +12,14 @@
#include "snkwave.h"
-#define CLOCK_SHIFT 8
-
-
-const device_type SNKWAVE = device_creator<snkwave_device>;
+DEFINE_DEVICE_TYPE(SNKWAVE, snkwave_device, "snkwave", "SNK Wave")
//-------------------------------------------------
// snkwave_device - constructor
//-------------------------------------------------
snkwave_device::snkwave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SNKWAVE, "SNK Wave", tag, owner, clock, "snkwave", __FILE__),
+ : device_t(mconfig, SNKWAVE, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_external_clock(0),
@@ -31,7 +28,7 @@ snkwave_device::snkwave_device(const machine_config &mconfig, const char *tag, d
m_counter(0),
m_waveform_position(0)
{
- memset(m_waveform, 0, sizeof(m_waveform));
+ std::fill(std::begin(m_waveform), std::end(m_waveform), 0);
}
//-------------------------------------------------
@@ -58,7 +55,7 @@ void snkwave_device::device_start()
save_item(NAME(m_frequency));
save_item(NAME(m_counter));
save_item(NAME(m_waveform_position));
- save_pointer(NAME(m_waveform), SNKWAVE_WAVEFORM_LENGTH);
+ save_pointer(NAME(m_waveform), WAVEFORM_LENGTH);
}
@@ -96,7 +93,7 @@ void snkwave_device::sound_stream_update(sound_stream &stream, stream_sample_t *
{
out += m_waveform[m_waveform_position] * steps;
m_counter = m_frequency;
- m_waveform_position = (m_waveform_position + 1) & (SNKWAVE_WAVEFORM_LENGTH-1);
+ m_waveform_position = (m_waveform_position + 1) & (WAVEFORM_LENGTH-1);
loops -= steps;
}
else
@@ -144,10 +141,10 @@ WRITE8_MEMBER( snkwave_device::snkwave_w )
*/
void snkwave_device::update_waveform(unsigned int offset, uint8_t data)
{
- assert(offset < SNKWAVE_WAVEFORM_LENGTH/4);
+ assert(offset < WAVEFORM_LENGTH/4);
m_waveform[offset * 2] = ((data & 0x38) >> 3) << (12-CLOCK_SHIFT);
m_waveform[offset * 2 + 1] = ((data & 0x07) >> 0) << (12-CLOCK_SHIFT);
- m_waveform[SNKWAVE_WAVEFORM_LENGTH-2 - offset * 2] = ~m_waveform[offset * 2 + 1];
- m_waveform[SNKWAVE_WAVEFORM_LENGTH-1 - offset * 2] = ~m_waveform[offset * 2];
+ m_waveform[WAVEFORM_LENGTH-2 - offset * 2] = ~m_waveform[offset * 2 + 1];
+ m_waveform[WAVEFORM_LENGTH-1 - offset * 2] = ~m_waveform[offset * 2];
}
diff --git a/src/devices/sound/snkwave.h b/src/devices/sound/snkwave.h
index f825cbab2b4..b05f483139d 100644
--- a/src/devices/sound/snkwave.h
+++ b/src/devices/sound/snkwave.h
@@ -1,11 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Nicola Salmoria
-#pragma once
-
-#ifndef __SNKWAVE_H__
-#define __SNKWAVE_H__
+#ifndef MAME_SOUND_SNKWAVE_H
+#define MAME_SOUND_SNKWAVE_H
-#define SNKWAVE_WAVEFORM_LENGTH 16
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -29,7 +27,8 @@ class snkwave_device : public device_t,
{
public:
snkwave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~snkwave_device() { }
+
+ DECLARE_WRITE8_MEMBER( snkwave_w );
protected:
// device-level overrides
@@ -38,13 +37,12 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_WRITE8_MEMBER( snkwave_w );
-
private:
+ static constexpr unsigned WAVEFORM_LENGTH = 16;
+ static constexpr unsigned CLOCK_SHIFT = 8;
+
void update_waveform(unsigned int offset, uint8_t data);
-private:
sound_stream *m_stream;
int m_external_clock;
int m_sample_rate;
@@ -55,10 +53,9 @@ private:
int m_waveform_position;
// decoded waveform table
- int16_t m_waveform[SNKWAVE_WAVEFORM_LENGTH];
+ int16_t m_waveform[WAVEFORM_LENGTH];
};
-extern const device_type SNKWAVE;
-
+DECLARE_DEVICE_TYPE(SNKWAVE, snkwave_device)
-#endif /* __SNKWAVE_H__ */
+#endif // MAME_SOUND_SNKWAVE_H
diff --git a/src/devices/sound/sp0250.cpp b/src/devices/sound/sp0250.cpp
index e4dcd28249d..21d7a4f2ec5 100644
--- a/src/devices/sound/sp0250.cpp
+++ b/src/devices/sound/sp0250.cpp
@@ -34,10 +34,10 @@ should be 312, but 312 = 39*8 so it doesn't look right because a divider by 39 i
*/
#define CLOCK_DIVIDER (7*6*8)
-const device_type SP0250 = device_creator<sp0250_device>;
+DEFINE_DEVICE_TYPE(SP0250, sp0250_device, "sp0250", "GI SP0250 LPC")
sp0250_device::sp0250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SP0250, "SP0250", tag, owner, clock, "sp0250", __FILE__),
+ : device_t(mconfig, SP0250, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_amp(0),
m_pitch(0),
diff --git a/src/devices/sound/sp0250.h b/src/devices/sound/sp0250.h
index e9f8e40829a..11c063ecf8d 100644
--- a/src/devices/sound/sp0250.h
+++ b/src/devices/sound/sp0250.h
@@ -1,18 +1,16 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#pragma once
+#ifndef MAME_SOUND_SP0250_H
+#define MAME_SOUND_SP0250_H
-#ifndef __SP0250_H__
-#define __SP0250_H__
+#pragma once
-class sp0250_device : public device_t,
- public device_sound_interface
+class sp0250_device : public device_t, public device_sound_interface
{
public:
sp0250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~sp0250_device() {}
- template<class _Object> static devcb_base &set_drq_callback(device_t &device, _Object object) { return downcast<sp0250_device &>(device).m_drq.set_callback(object); }
+ template <class Object> static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast<sp0250_device &>(device).m_drq.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( write );
uint8_t drq_r();
@@ -48,11 +46,9 @@ private:
TIMER_CALLBACK_MEMBER( timer_tick );
};
-extern const device_type SP0250;
+DECLARE_DEVICE_TYPE(SP0250, sp0250_device)
#define MCFG_SP0250_DRQ_CALLBACK(_write) \
devcb = &sp0250_device::set_drq_callback(*device, DEVCB_##_write);
-
-
-#endif /* __SP0250_H__ */
+#endif // MAME_SOUND_SP0250_H
diff --git a/src/devices/sound/sp0256.cpp b/src/devices/sound/sp0256.cpp
index 5e8777e8de2..0dfe8194cc7 100644
--- a/src/devices/sound/sp0256.cpp
+++ b/src/devices/sound/sp0256.cpp
@@ -23,6 +23,15 @@
#include "emu.h"
#include "sp0256.h"
+#define LOG_GENERAL (1U << 0)
+#define LOG_FIFO (1U << 1)
+
+//#define VERBOSE (LOG_GENERAL | LOG_FIFO)
+#include "logmacro.h"
+
+#define LOGFIFO(...) LOGMASKED(LOG_FIFO, __VA_ARGS__)
+
+
#define CLOCK_DIVIDER (7*6*8)
#define HIGH_QUALITY
@@ -33,49 +42,9 @@
#define FIFO_ADDR (0x1800 << 3) /* SP0256 address of SPB260 speech FIFO. */
-#define VERBOSE 0
-#define DEBUG_FIFO 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
-
-#define LOG_FIFO(x) do { if (DEBUG_FIFO) logerror x; } while (0)
-
-#define SET_SBY(line_state) { \
- if (m_sby_line != line_state) \
- { \
- m_sby_line = line_state; \
- m_sby_cb(m_sby_line); \
- } \
-}
-
-/* ======================================================================== */
-/* qtbl -- Coefficient Quantization Table. This comes from a */
-/* SP0250 data sheet, and should be correct for SP0256. */
-/* ======================================================================== */
-static const int16_t qtbl[128] =
-{
- 0, 9, 17, 25, 33, 41, 49, 57,
- 65, 73, 81, 89, 97, 105, 113, 121,
- 129, 137, 145, 153, 161, 169, 177, 185,
- 193, 201, 209, 217, 225, 233, 241, 249,
- 257, 265, 273, 281, 289, 297, 301, 305,
- 309, 313, 317, 321, 325, 329, 333, 337,
- 341, 345, 349, 353, 357, 361, 365, 369,
- 373, 377, 381, 385, 389, 393, 397, 401,
- 405, 409, 413, 417, 421, 425, 427, 429,
- 431, 433, 435, 437, 439, 441, 443, 445,
- 447, 449, 451, 453, 455, 457, 459, 461,
- 463, 465, 467, 469, 471, 473, 475, 477,
- 479, 481, 482, 483, 484, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 505, 506, 507, 508, 509, 510, 511
-};
-
-
// device type definition
-const device_type SP0256 = device_creator<sp0256_device>;
+DEFINE_DEVICE_TYPE(SP0256, sp0256_device, "sp0256", "GI SP0256 Narrator Speech Processor")
//**************************************************************************
@@ -83,11 +52,14 @@ const device_type SP0256 = device_creator<sp0256_device>;
//**************************************************************************
sp0256_device::sp0256_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SP0256, "SP0256", tag, owner, clock, "sp0256", __FILE__),
- device_sound_interface(mconfig, *this),
- m_rom(*this, DEVICE_SELF),
- m_drq_cb(*this),
- m_sby_cb(*this)
+ : device_t(mconfig, SP0256, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_rom(*this, DEVICE_SELF)
+ , m_stream(nullptr)
+ , m_drq_cb(*this)
+ , m_sby_cb(*this)
+ , m_scratch()
+ , m_lrq_timer(nullptr)
{
}
@@ -191,7 +163,7 @@ void sp0256_device::device_reset()
m_silent = 1;
m_sby_line = 0;
m_drq_cb(1);
- SET_SBY(1)
+ SET_SBY(1);
m_lrq = 0;
m_lrq_timer->adjust(attotime::from_ticks(50, m_clock));
@@ -202,7 +174,7 @@ void sp0256_device::device_reset()
/* ======================================================================== */
/* LIMIT -- Limiter function for digital sample output. */
/* ======================================================================== */
-static inline int16_t limit(int16_t s)
+inline int16_t sp0256_device::lpc12_t::limit(int16_t s)
{
#ifdef HIGH_QUALITY /* Higher quality than the original, but who cares? */
if (s > 8191) return 8191;
@@ -217,11 +189,9 @@ static inline int16_t limit(int16_t s)
/* ======================================================================== */
/* LPC12_UPDATE -- Update the 12-pole filter, outputting samples. */
/* ======================================================================== */
-static inline int lpc12_update(struct lpc12_t *f, int num_samp, int16_t *out, uint32_t *optr)
+inline int sp0256_device::lpc12_t::update(int num_samp, int16_t *out, uint32_t *optr)
{
- int i, j;
- int16_t samp;
- int do_int;
+ int i;
int oidx = *optr;
/* -------------------------------------------------------------------- */
@@ -233,44 +203,41 @@ static inline int lpc12_update(struct lpc12_t *f, int num_samp, int16_t *out, ui
/* ---------------------------------------------------------------- */
/* Generate a series of periodic impulses, or random noise. */
/* ---------------------------------------------------------------- */
- do_int = 0;
- samp = 0;
- if (f->per)
+ bool do_int = false;
+ uint16_t samp = 0;
+ if (per)
{
- if (f->cnt <= 0)
+ if (cnt <= 0)
{
- f->cnt += f->per;
- samp = f->amp;
- f->rpt--;
- do_int = f->interp;
+ cnt += per;
+ samp = amp;
+ rpt--;
+ do_int = interp;
- for (j = 0; j < 6; j++)
- f->z_data[j][1] = f->z_data[j][0] = 0;
-
- } else
+ for (int j = 0; j < 6; j++)
+ z_data[j][1] = z_data[j][0] = 0;
+ }
+ else
{
samp = 0;
- f->cnt--;
+ cnt--;
}
-
- } else
+ }
+ else
{
- int bit;
-
- if (--f->cnt <= 0)
+ if (--cnt <= 0)
{
- do_int = f->interp;
- f->cnt = PER_NOISE;
- f->rpt--;
- for (j = 0; j < 6; j++)
- f->z_data[j][0] = f->z_data[j][1] = 0;
+ do_int = interp;
+ cnt = PER_NOISE;
+ rpt--;
+ for (int j = 0; j < 6; j++)
+ z_data[j][0] = z_data[j][1] = 0;
}
- bit = f->rng & 1;
- f->rng = (f->rng >> 1) ^ (bit ? 0x4001 : 0);
+ const bool bit(rng & 1);
+ rng = (rng >> 1) ^ (bit ? 0x4001 : 0);
- if (bit) { samp = f->amp; }
- else { samp = -f->amp; }
+ samp = bit ? amp : -amp;
}
/* ---------------------------------------------------------------- */
@@ -278,20 +245,19 @@ static inline int lpc12_update(struct lpc12_t *f, int num_samp, int16_t *out, ui
/* ---------------------------------------------------------------- */
if (do_int)
{
- f->r[0] += f->r[14];
- f->r[1] += f->r[15];
+ r[0] += r[14];
+ r[1] += r[15];
- f->amp = (f->r[0] & 0x1F) << (((f->r[0] & 0xE0) >> 5) + 0);
- f->per = f->r[1];
-
- do_int = 0;
+ amp = (r[0] & 0x1F) << (((r[0] & 0xE0) >> 5) + 0);
+ per = r[1];
}
/* ---------------------------------------------------------------- */
/* Stop if we expire our repeat counter and return the actual */
/* number of samples we did. */
/* ---------------------------------------------------------------- */
- if (f->rpt <= 0) break;
+ if (rpt <= 0)
+ break;
/* ---------------------------------------------------------------- */
/* Each 2nd order stage looks like one of these. The App. Manual */
@@ -321,19 +287,19 @@ static inline int lpc12_update(struct lpc12_t *f, int num_samp, int16_t *out, ui
/* +-----------[B]<---------+ */
/* */
/* ---------------------------------------------------------------- */
- for (j = 0; j < 6; j++)
+ for (int j = 0; j < 6; j++)
{
- samp += (((int)f->b_coef[j] * (int)f->z_data[j][1]) >> 9);
- samp += (((int)f->f_coef[j] * (int)f->z_data[j][0]) >> 8);
+ samp += (int(b_coef[j]) * int(z_data[j][1])) >> 9;
+ samp += (int(f_coef[j]) * int(z_data[j][0])) >> 8;
- f->z_data[j][1] = f->z_data[j][0];
- f->z_data[j][0] = samp;
+ z_data[j][1] = z_data[j][0];
+ z_data[j][0] = samp;
}
#ifdef HIGH_QUALITY /* Higher quality than the original, but who cares? */
out[oidx++ & SCBUF_MASK] = limit(samp) << 2;
#else
- out[oidx++ & SCBUF_MASK] = (limit(samp >> 4) << 8);
+ out[oidx++ & SCBUF_MASK] = limit(samp >> 4) << 8;
#endif
}
@@ -342,41 +308,61 @@ static inline int lpc12_update(struct lpc12_t *f, int num_samp, int16_t *out, ui
return i;
}
-static const int stage_map[6] = { 0, 1, 2, 3, 4, 5 };
-
/* ======================================================================== */
/* LPC12_REGDEC -- Decode the register set in the filter bank. */
/* ======================================================================== */
-static inline void lpc12_regdec(struct lpc12_t *f)
+inline void sp0256_device::lpc12_t::regdec()
{
- int i;
-
/* -------------------------------------------------------------------- */
/* Decode the Amplitude and Period registers. Force the 'cnt' to 0 */
/* to get an initial impulse. We compensate elsewhere by setting */
/* the repeat count to "repeat + 1". */
/* -------------------------------------------------------------------- */
- f->amp = (f->r[0] & 0x1F) << (((f->r[0] & 0xE0) >> 5) + 0);
- f->cnt = 0;
- f->per = f->r[1];
+ amp = (r[0] & 0x1F) << (((r[0] & 0xE0) >> 5) + 0);
+ cnt = 0;
+ per = r[1];
/* -------------------------------------------------------------------- */
/* Decode the filter coefficients from the quant table. */
/* -------------------------------------------------------------------- */
- for (i = 0; i < 6; i++)
+ for (int i = 0; i < 6; i++)
{
- #define IQ(x) (((x) & 0x80) ? qtbl[0x7F & -(x)] : -qtbl[(x)])
-
- f->b_coef[stage_map[i]] = IQ(f->r[2 + 2*i]);
- f->f_coef[stage_map[i]] = IQ(f->r[3 + 2*i]);
+ /* ======================================================================== */
+ /* qtbl -- Coefficient Quantization Table. This comes from a */
+ /* SP0250 data sheet, and should be correct for SP0256. */
+ /* ======================================================================== */
+ static constexpr int16_t qtbl[128] =
+ {
+ 0, 9, 17, 25, 33, 41, 49, 57,
+ 65, 73, 81, 89, 97, 105, 113, 121,
+ 129, 137, 145, 153, 161, 169, 177, 185,
+ 193, 201, 209, 217, 225, 233, 241, 249,
+ 257, 265, 273, 281, 289, 297, 301, 305,
+ 309, 313, 317, 321, 325, 329, 333, 337,
+ 341, 345, 349, 353, 357, 361, 365, 369,
+ 373, 377, 381, 385, 389, 393, 397, 401,
+ 405, 409, 413, 417, 421, 425, 427, 429,
+ 431, 433, 435, 437, 439, 441, 443, 445,
+ 447, 449, 451, 453, 455, 457, 459, 461,
+ 463, 465, 467, 469, 471, 473, 475, 477,
+ 479, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503,
+ 504, 505, 506, 507, 508, 509, 510, 511
+ };
+
+ static constexpr int stage_map[6] = { 0, 1, 2, 3, 4, 5 };
+
+ auto IQ = [] (uint8_t x) { return (x & 0x80) ? qtbl[0x7F & -x] : -qtbl[x]; };
+
+ b_coef[stage_map[i]] = IQ(r[2 + 2*i]);
+ f_coef[stage_map[i]] = IQ(r[3 + 2*i]);
}
/* -------------------------------------------------------------------- */
/* Set the Interp flag based on whether we have interpolation parms */
/* -------------------------------------------------------------------- */
- f->interp = f->r[14] || f->r[15];
-
- return;
+ interp = r[14] || r[15];
}
/* ======================================================================== */
@@ -759,8 +745,8 @@ uint32_t sp0256_device::getb( int len )
data = ((d1 << 10) | d0) >> m_fifo_bitp;
- LOG_FIFO(("sp0256: RD_FIFO %.3X %d.%d %d\n", data & ((1 << len) - 1),
- m_fifo_tail, m_fifo_bitp, m_fifo_head));
+ LOGFIFO("sp0256: RD_FIFO %.3X %d.%d %d\n", data & ((1 << len) - 1),
+ m_fifo_tail, m_fifo_bitp, m_fifo_head);
/* ---------------------------------------------------------------- */
/* Note the PC doesn't advance when we execute from FIFO. */
@@ -845,7 +831,7 @@ void sp0256_device::micro()
for (i = 0; i < 16; i++)
m_filt.r[i] = 0;
- SET_SBY(1)
+ SET_SBY(1);
return;
}
@@ -859,11 +845,11 @@ void sp0256_device::micro()
repeat = 0;
ctrl_xfer = 0;
- LOG(("$%.4X.%.1X: OPCODE %d%d%d%d.%d%d\n",
+ LOG("$%.4X.%.1X: OPCODE %d%d%d%d.%d%d\n",
(m_pc >> 3) - 1, m_pc & 7,
!!(opcode & 1), !!(opcode & 2),
!!(opcode & 4), !!(opcode & 8),
- !!(m_mode&4), !!(m_mode&2)));
+ !!(m_mode&4), !!(m_mode&2));
/* ---------------------------------------------------------------- */
/* Handle the special cases for specific opcodes. */
@@ -982,7 +968,7 @@ void sp0256_device::micro()
/* ---------------------------------------------------------------- */
if (ctrl_xfer)
{
- LOG(("jumping to $%.4X.%.1X: ", m_pc >> 3, m_pc & 7));
+ LOG("jumping to $%.4X.%.1X: ", m_pc >> 3, m_pc & 7);
/* ------------------------------------------------------------ */
/* Set our "FIFO Selected" flag based on whether we're going */
@@ -990,7 +976,7 @@ void sp0256_device::micro()
/* ------------------------------------------------------------ */
m_fifo_sel = m_pc == FIFO_ADDR;
- LOG(("%s ", m_fifo_sel ? "FIFO" : "ROM"));
+ LOG("%s ", m_fifo_sel ? "FIFO" : "ROM");
/* ------------------------------------------------------------ */
/* Control transfers to the FIFO cause it to discard the */
@@ -998,14 +984,14 @@ void sp0256_device::micro()
/* ------------------------------------------------------------ */
if (m_fifo_sel && m_fifo_bitp)
{
- LOG(("bitp = %d -> Flush", m_fifo_bitp));
+ LOG("bitp = %d -> Flush", m_fifo_bitp);
/* Discard partially-read decle. */
if (m_fifo_tail < m_fifo_head) m_fifo_tail++;
m_fifo_bitp = 0;
}
- LOG(("\n"));
+ LOG("\n");
continue;
}
@@ -1017,7 +1003,7 @@ void sp0256_device::micro()
if (!repeat) continue;
m_filt.rpt = repeat + 1;
- LOG(("repeat = %d\n", repeat));
+ LOG("repeat = %d\n", repeat);
i = (opcode << 3) | (m_mode & 6);
idx0 = sp0256_df_idx[i++];
@@ -1047,8 +1033,8 @@ void sp0256_device::micro()
field = cr & CR_FIELD;
value = 0;
- LOG(("$%.4X.%.1X: len=%2d shf=%2d prm=%2d d=%d f=%d ",
- m_pc >> 3, m_pc & 7, len, shf, prm, !!delta, !!field));
+ LOG("$%.4X.%.1X: len=%2d shf=%2d prm=%2d d=%d f=%d ",
+ m_pc >> 3, m_pc & 7, len, shf, prm, !!delta, !!field);
/* ------------------------------------------------------------ */
/* Clear any registers that were requested to be cleared. */
/* ------------------------------------------------------------ */
@@ -1072,7 +1058,7 @@ void sp0256_device::micro()
}
else
{
- LOG((" (no update)\n"));
+ LOG(" (no update)\n");
continue;
}
@@ -1090,9 +1076,9 @@ void sp0256_device::micro()
if (shf)
value <<= shf;
- LOG(("v=%.2X (%c%.2X) ", value & 0xFF,
+ LOG("v=%.2X (%c%.2X) ", value & 0xFF,
value & 0x80 ? '-' : '+',
- 0xFF & (value & 0x80 ? -value : value)));
+ 0xFF & (value & 0x80 ? -value : value));
m_silent = 0;
@@ -1101,12 +1087,12 @@ void sp0256_device::micro()
/* ------------------------------------------------------------ */
if (field)
{
- LOG(("--field-> r[%2d] = %.2X -> ", prm, m_filt.r[prm]));
+ LOG("--field-> r[%2d] = %.2X -> ", prm, m_filt.r[prm]);
m_filt.r[prm] &= ~(~0 << shf); /* Clear the old bits. */
m_filt.r[prm] |= value; /* Merge in the new bits. */
- LOG(("%.2X\n", m_filt.r[prm]));
+ LOG("%.2X\n", m_filt.r[prm]);
continue;
}
@@ -1116,11 +1102,11 @@ void sp0256_device::micro()
/* ------------------------------------------------------------ */
if (delta)
{
- LOG(("--delta-> r[%2d] = %.2X -> ", prm, m_filt.r[prm]));
+ LOG("--delta-> r[%2d] = %.2X -> ", prm, m_filt.r[prm]);
m_filt.r[prm] += value;
- LOG(("%.2X\n", m_filt.r[prm]));
+ LOG("%.2X\n", m_filt.r[prm]);
continue;
}
@@ -1129,7 +1115,7 @@ void sp0256_device::micro()
/* Otherwise, just write the new value. */
/* ------------------------------------------------------------ */
m_filt.r[prm] = value;
- LOG(("--value-> r[%2d] = %.2X\n", prm, m_filt.r[prm]));
+ LOG("--value-> r[%2d] = %.2X\n", prm, m_filt.r[prm]);
}
/* ---------------------------------------------------------------- */
@@ -1144,7 +1130,7 @@ void sp0256_device::micro()
/* ---------------------------------------------------------------- */
/* Now that we've updated the registers, go decode them. */
/* ---------------------------------------------------------------- */
- lpc12_regdec(&m_filt);
+ m_filt.regdec();
/* ---------------------------------------------------------------- */
/* Break out since we now have a repeat count. */
@@ -1162,7 +1148,7 @@ WRITE8_MEMBER( sp0256_device::ald_w )
/* ---------------------------------------------------------------- */
if (!m_lrq)
{
- LOG(("sp0256: Dropped ALD write\n"));
+ LOG("sp0256: Dropped ALD write\n");
return;
}
@@ -1174,7 +1160,7 @@ WRITE8_MEMBER( sp0256_device::ald_w )
m_lrq = 0;
m_ald = (0xff & data) << 4;
m_drq_cb(0);
- SET_SBY(0)
+ SET_SBY(0);
return;
}
@@ -1244,7 +1230,7 @@ WRITE16_MEMBER( sp0256_device::spb640_w )
/* ---------------------------------------------------------------- */
if ((m_fifo_head - m_fifo_tail) >= 64)
{
- LOG(("spb640: Dropped FIFO write\n"));
+ LOG("spb640: Dropped FIFO write\n");
return;
}
@@ -1252,8 +1238,8 @@ WRITE16_MEMBER( sp0256_device::spb640_w )
/* FIFO up the lower 10 bits of the data. */
/* ---------------------------------------------------------------- */
- LOG(("spb640: WR_FIFO %.3X %d.%d %d\n", data & 0x3ff,
- m_fifo_tail, m_fifo_bitp, m_fifo_head));
+ LOG("spb640: WR_FIFO %.3X %d.%d %d\n", data & 0x3ff,
+ m_fifo_tail, m_fifo_bitp, m_fifo_head);
m_fifo[m_fifo_head++ & 63] = data & 0x3ff;
@@ -1343,8 +1329,7 @@ void sp0256_device::sound_stream_update(sound_stream &stream, stream_sample_t **
}
else
{
- did_samp += lpc12_update(&m_filt, do_samp,
- m_scratch.get(), &m_sc_head);
+ did_samp += m_filt.update(do_samp, m_scratch.get(), &m_sc_head);
}
m_sc_head &= SCBUF_MASK;
diff --git a/src/devices/sound/sp0256.h b/src/devices/sound/sp0256.h
index 4b13885e92c..b7c08e72a46 100644
--- a/src/devices/sound/sp0256.h
+++ b/src/devices/sound/sp0256.h
@@ -30,10 +30,10 @@
*/
-#pragma once
+#ifndef MAME_SOUND_SP0256_H
+#define MAME_SOUND_SP0256_H
-#ifndef __SP0256_H__
-#define __SP0256_H__
+#pragma once
#define MCFG_SP0256_DATA_REQUEST_CB(_devcb) \
devcb = &sp0256_device::set_data_request_callback(*device, DEVCB_##_devcb);
@@ -42,27 +42,14 @@
devcb = &sp0256_device::set_standby_callback(*device, DEVCB_##_devcb);
-struct lpc12_t
-{
- int rpt, cnt; /* Repeat counter, Period down-counter. */
- uint32_t per, rng; /* Period, Amplitude, Random Number Generator */
- int amp;
- int16_t f_coef[6]; /* F0 through F5. */
- int16_t b_coef[6]; /* B0 through B5. */
- int16_t z_data[6][2]; /* Time-delay data for the filter stages. */
- uint8_t r[16]; /* The encoded register set. */
- int interp;
-};
-
class sp0256_device : public device_t,
public device_sound_interface
{
public:
sp0256_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~sp0256_device() { }
- template<class _Object> static devcb_base &set_data_request_callback(device_t &device, _Object object) { return downcast<sp0256_device &>(device).m_drq_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_standby_callback(device_t &device, _Object object) { return downcast<sp0256_device &>(device).m_sby_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_data_request_callback(device_t &device, Object &&cb) { return downcast<sp0256_device &>(device).m_drq_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_standby_callback(device_t &device, Object &&cb) { return downcast<sp0256_device &>(device).m_sby_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(ald_w);
DECLARE_READ_LINE_MEMBER(lrq_r);
@@ -83,41 +70,69 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ struct lpc12_t
+ {
+ int update(int num_samp, int16_t *out, uint32_t *optr);
+ void regdec();
+
+ int rpt, cnt; // Repeat counter, Period down-counter.
+ uint32_t per, rng; // Period, Amplitude, Random Number Generator
+ int amp;
+ int16_t f_coef[6]; // F0 through F5.
+ int16_t b_coef[6]; // B0 through B5.
+ int16_t z_data[6][2]; // Time-delay data for the filter stages.
+ uint8_t r[16]; // The encoded register set.
+ int interp;
+
+ private:
+ static int16_t limit(int16_t s);
+ };
+
uint32_t getb(int len);
void micro();
- required_region_ptr<uint8_t> m_rom; /* 64K ROM. */
- sound_stream *m_stream; /* MAME core sound stream */
- devcb_write_line m_drq_cb; /* Data request callback */
- devcb_write_line m_sby_cb; /* Standby callback */
-
- int m_sby_line; /* Standby line state */
- int m_cur_len; /* Fullness of current sound buffer. */
-
- int m_silent; /* Flag: SP0256 is silent. */
-
- std::unique_ptr<int16_t[]> m_scratch; /* Scratch buffer for audio. */
- uint32_t m_sc_head; /* Head pointer into scratch circular buf */
- uint32_t m_sc_tail; /* Tail pointer into scratch circular buf */
-
- struct lpc12_t m_filt; /* 12-pole filter */
- int m_lrq; /* Load ReQuest. == 0 if we can accept a load */
- int m_ald; /* Address LoaD. < 0 if no command pending. */
- int m_pc; /* Microcontroller's PC value. */
- int m_stack; /* Microcontroller's PC stack. */
- int m_fifo_sel; /* True when executing from FIFO. */
- int m_halted; /* True when CPU is halted. */
- uint32_t m_mode; /* Mode register. */
- uint32_t m_page; /* Page set by SETPAGE */
-
- uint32_t m_fifo_head; /* FIFO head pointer (where new data goes). */
- uint32_t m_fifo_tail; /* FIFO tail pointer (where data comes from). */
- uint32_t m_fifo_bitp; /* FIFO bit-pointer (for partial decles). */
- uint16_t m_fifo[64]; /* The 64-decle FIFO. */
+
+ void SET_SBY(int line_state)
+ {
+ if (m_sby_line != line_state)
+ {
+ m_sby_line = line_state;
+ m_sby_cb(m_sby_line);
+ }
+ }
+
+ required_region_ptr<uint8_t> m_rom; // 64K ROM.
+ sound_stream *m_stream; // MAME core sound stream
+ devcb_write_line m_drq_cb; // Data request callback
+ devcb_write_line m_sby_cb; // Standby callback
+
+ int m_sby_line; // Standby line state
+ int m_cur_len; // Fullness of current sound buffer.
+
+ int m_silent; // Flag: SP0256 is silent.
+
+ std::unique_ptr<int16_t[]> m_scratch; // Scratch buffer for audio.
+ uint32_t m_sc_head; // Head pointer into scratch circular buf
+ uint32_t m_sc_tail; // Tail pointer into scratch circular buf
+
+ lpc12_t m_filt; // 12-pole filter
+ int m_lrq; // Load ReQuest. == 0 if we can accept a load
+ int m_ald; // Address LoaD. < 0 if no command pending.
+ int m_pc; // Microcontroller's PC value.
+ int m_stack; // Microcontroller's PC stack.
+ int m_fifo_sel; // True when executing from FIFO.
+ int m_halted; // True when CPU is halted.
+ uint32_t m_mode; // Mode register.
+ uint32_t m_page; // Page set by SETPAGE
+
+ uint32_t m_fifo_head; // FIFO head pointer (where new data goes).
+ uint32_t m_fifo_tail; // FIFO tail pointer (where data comes from).
+ uint32_t m_fifo_bitp; // FIFO bit-pointer (for partial decles).
+ uint16_t m_fifo[64]; // The 64-decle FIFO.
emu_timer *m_lrq_timer;
};
-extern const device_type SP0256;
+DECLARE_DEVICE_TYPE(SP0256, sp0256_device)
-#endif /* __SP0256_H__ */
+#endif // MAME_SOUND_SP0256_H
diff --git a/src/devices/sound/spkrdev.cpp b/src/devices/sound/spkrdev.cpp
index 4af44791921..fc912fbd367 100644
--- a/src/devices/sound/spkrdev.cpp
+++ b/src/devices/sound/spkrdev.cpp
@@ -76,20 +76,17 @@
#include "sound/spkrdev.h"
-static const int16_t default_levels[2] = {0, 32767};
+static constexpr int16_t default_levels[2] = {0, 32767};
// Internal oversampling factor (interm. samples vs stream samples)
-static const int RATE_MULTIPLIER = 4;
+static constexpr int RATE_MULTIPLIER = 4;
-const device_type SPEAKER_SOUND = device_creator<speaker_sound_device>;
-
-template class device_finder<speaker_sound_device, false>;
-template class device_finder<speaker_sound_device, true>;
+DEFINE_DEVICE_TYPE(SPEAKER_SOUND, speaker_sound_device, "speaker_sound_device", "Filtered 1-bit DAC")
speaker_sound_device::speaker_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SPEAKER_SOUND, "Filtered 1-bit DAC", tag, owner, clock, "speaker_sound", __FILE__)
+ : device_t(mconfig, SPEAKER_SOUND, tag, owner, clock)
, device_sound_interface(mconfig, *this)
, m_num_levels(2)
, m_levels(default_levels)
diff --git a/src/devices/sound/spkrdev.h b/src/devices/sound/spkrdev.h
index 4fdb0a92ff6..42bf3625876 100644
--- a/src/devices/sound/spkrdev.h
+++ b/src/devices/sound/spkrdev.h
@@ -7,18 +7,12 @@
driven by one or more output bits
**********************************************************************/
-#ifndef MAME_DEVICES_SOUND_SPKRDEV_H
-#define MAME_DEVICES_SOUND_SPKRDEV_H
+#ifndef MAME_SOUND_SPKRDEV_H
+#define MAME_SOUND_SPKRDEV_H
#pragma once
-// Length of anti-aliasing filter kernel, measured in number of intermediate samples
-enum
-{
- FILTER_LENGTH = 64
-};
-
#define MCFG_SPEAKER_LEVELS(_num, _levels) \
speaker_sound_device::static_set_levels(*device, _num, _levels);
@@ -43,6 +37,12 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ // Length of anti-aliasing filter kernel, measured in number of intermediate samples
+ enum
+ {
+ FILTER_LENGTH = 64
+ };
+
// internal state
// Updates the composed volume array according to time
@@ -87,9 +87,6 @@ private:
const int16_t *m_levels; /* optional: pointer to level lookup table */
};
-extern const device_type SPEAKER_SOUND;
-
-extern template class device_finder<speaker_sound_device, false>;
-extern template class device_finder<speaker_sound_device, true>;
+DECLARE_DEVICE_TYPE(SPEAKER_SOUND, speaker_sound_device)
-#endif // MAME_DEVICES_SOUND_SPKRDEV_H
+#endif // MAME_SOUND_SPKRDEV_H
diff --git a/src/devices/sound/spu.cpp b/src/devices/sound/spu.cpp
index 755717f1fc9..383287b9114 100644
--- a/src/devices/sound/spu.cpp
+++ b/src/devices/sound/spu.cpp
@@ -34,31 +34,11 @@
#endif
// device type definition
-const device_type SPU = device_creator<spu_device>;
+DEFINE_DEVICE_TYPE(SPU, spu_device, "psxspu", "PlayStation SPU")
//
//
//
-static inline unsigned int min(unsigned int a, unsigned int b)
-{
- return (a > b) ? b : a;
-}
-
-static inline unsigned int max(unsigned int a, unsigned int b)
-{
- return (a > b) ? a : b;
-}
-
-static inline double mindb(double a, double b)
-{
- return (a > b) ? b : a;
-}
-
-static inline double maxdb(double a, double b)
-{
- return (a > b) ? a : b;
-}
-
enum spu_registers
{
spureg_voice=0,
@@ -240,7 +220,7 @@ static const int filter_coef[5][2]=
// GLOBAL VARIABLES
//**************************************************************************
-reverb_params *spu_reverb_cfg=nullptr;
+spu_device::reverb_params *spu_device::spu_reverb_cfg=nullptr;
float spu_device::freq_multiplier=1.0f;
@@ -955,7 +935,7 @@ static int shift_register15(int &shift)
//-------------------------------------------------
spu_device::spu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SPU, "SPU", tag, owner, clock, "spu", __FILE__),
+ device_t(mconfig, SPU, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_irq_handler(*this),
dirty_flags(-1),
@@ -1316,8 +1296,8 @@ void spu_device::flush_cache(sample_cache *sc,
sc->start,
sc->end);*/
- sc->invalid_start=min(sc->invalid_start,istart);
- sc->invalid_end=max(sc->invalid_end,iend);
+ sc->invalid_start=(std::min)(sc->invalid_start,istart);
+ sc->invalid_end=(std::max)(sc->invalid_end,iend);
sc->valid=false;
sc->remove_ref();
}
@@ -1364,7 +1344,7 @@ spu_device::sample_cache *spu_device::get_sample_cache(const unsigned int addr)
if ((a < 0x80000) && (ap->flags&adpcmflag_loop)) sc->is_loop=true;
- sc->end=min(spu_ram_size,a+16);
+ sc->end=(std::min)(spu_ram_size,a+16);
unsigned int sz=((sc->end-sc->start)>>4)*28;
sc->data=new signed short [sz];
@@ -1461,7 +1441,7 @@ void spu_device::update_voice_events(voiceinfo *vi)
// Voice is inside loop cache, return time until end of that if lower
assert(vi->lcptr<vi->loop_cache->len);
- vi->samplestoend=min(vi->samplestoend,
+ vi->samplestoend=(std::min)(vi->samplestoend,
(unsigned int)((((int64_t)(vi->loop_cache->len-vi->lcptr)<<12)-vi->dptr)+(vi->pitch-1))/vi->pitch);
}
@@ -1675,9 +1655,9 @@ bool spu_device::process_voice(const unsigned int v,
// Play up to end of sample, envelope event, or IRQ, whichever comes first
unsigned int ntoplay=fm?1:num,
- nextevent=min(vi->samplestoend,
- min(vi->samplestoirq,vi->envsamples));
- ntoplay=min(ntoplay,nextevent);
+ nextevent=(std::min)(vi->samplestoend,
+ (std::min)(vi->samplestoirq,vi->envsamples));
+ ntoplay=(std::min)(ntoplay,nextevent);
if (ntoplay)
{
@@ -1968,7 +1948,7 @@ void spu_device::generate_voice(const unsigned int v,
if (((sp+end)>=ep) && (vi->pitch))
{
- num_stitch=min(n,max(0x1fff/vi->pitch,1));
+ num_stitch=(std::min)(n,(std::max)(0x1fffU/vi->pitch,1U));
n-=num_stitch;
}
@@ -2214,7 +2194,7 @@ bool spu_device::update_envelope(const int v)
break;
case 4: // release
- voice[v].env_level=mindb(1.0f,maxdb(0.0f,voice[v].env_level));
+ voice[v].env_level=(std::min)(1.0f,(std::max)(0.0f,voice[v].env_level));
voice[v].env_delta=voice[v].env_rr;
if (voice[v].env_rr == -0.0f) // 0.0 release means infinite time
{
@@ -2421,7 +2401,7 @@ void spu_device::generate_xa(void *ptr, const unsigned int sz)
if (ss)
{
ss<<=xa_channels;
- ss=min(ss,(int)xa_buffer->get_bytes_in());
+ ss=(std::min)(ss,(int)xa_buffer->get_bytes_in());
xa_buffer->increment_tail(ss);
sp=(signed short *)xa_buffer->get_tail_ptr();
@@ -2583,7 +2563,7 @@ void spu_device::generate(void *ptr, const unsigned int sz)
while ((left) && (output_size))
{
- unsigned int n=min(min(left,output_buffer_size-output_head),output_size);
+ unsigned int n=(std::min)((std::min)(left,output_buffer_size-output_head),output_size);
memcpy(dp,output_buf[0]+output_head,n);
rev->process((signed short *)dp,
@@ -2629,7 +2609,7 @@ void spu_device::update_irq_event()
voice[i].hitirq=true;
} else
{
- samplestoirq=min(samplestoirq,voice[i].samplestoirq);
+ samplestoirq=(std::min)(samplestoirq,voice[i].samplestoirq);
}
}
}
@@ -2675,7 +2655,7 @@ void spu_device::process_until(const unsigned int tsample)
// Drop samples from the head of the queue if its full
- process_samples=min(process_samples,output_buffer_size>>2);
+ process_samples=(std::min)(process_samples,output_buffer_size>>2);
unsigned int nsz=output_size+(process_samples<<2);
if (nsz>output_buffer_size)
{
@@ -2689,7 +2669,7 @@ void spu_device::process_until(const unsigned int tsample)
// Decide how many samples to process taking into account buffer
// wrap in output queue. Get pointers to the queues.
- process_samples=min(process_samples,
+ process_samples=(std::min)(process_samples,
(output_buffer_size-output_tail)>>2);
unsigned char *outptr=output_buf[0]+output_tail,
diff --git a/src/devices/sound/spu.h b/src/devices/sound/spu.h
index a04b45b439d..fe55ce98ab0 100644
--- a/src/devices/sound/spu.h
+++ b/src/devices/sound/spu.h
@@ -1,11 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:pSXAuthor, R. Belmont
-#pragma once
-
-#ifndef __SPU_H__
-#define __SPU_H__
+#ifndef MAME_SOUND_SPU_H
+#define MAME_SOUND_SPU_H
-#include "spureverb.h"
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -20,13 +18,11 @@
MCFG_PSX_SPU_WRITE_HANDLER(DEVWRITE16(_tag, spu_device, write)) \
MCFG_DEVICE_ADD(_tag, SPU, _clock) \
MCFG_SPU_IRQ_HANDLER(DEVWRITELINE("maincpu:irq", psxirq_device, intin9)) \
- MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 4, psx_dma_read_delegate(&spu_device::dma_read, (spu_device *) device ) ) \
- MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 4, psx_dma_write_delegate(&spu_device::dma_write, (spu_device *) device ) )
+ MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 4, psxdma_device::read_delegate(&spu_device::dma_read, (spu_device *) device ) ) \
+ MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 4, psxdma_device::write_delegate(&spu_device::dma_write, (spu_device *) device ) )
// ======================> spu_device
-const unsigned int spu_base_frequency_hz=44100;
-
class stream_buffer;
class spu_device : public device_t, public device_sound_interface
@@ -45,6 +41,9 @@ class spu_device : public device_t, public device_sound_interface
};
protected:
+ static constexpr unsigned int spu_base_frequency_hz=44100;
+ class reverb;
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -53,6 +52,15 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ static constexpr float ms_to_rate(float ms) { return 1.0f / (ms * (float(spu_base_frequency_hz) / 1000.0f)); }
+ static constexpr float s_to_rate(float s) { return ms_to_rate(s * 1000.0f); }
+ static const float linear_rate[];
+ static const float pos_exp_rate[];
+ static const float neg_exp_rate[];
+ static const float decay_rate[];
+ static const float linear_release_rate[];
+ static const float exp_release_rate[];
+
// internal state
devcb_write_line m_irq_handler;
@@ -137,16 +145,15 @@ protected:
#pragma pack(pop,spureg)
- struct reverb_preset
- {
- const char *name;
- unsigned short param[32];
- reverb_params cfg;
- };
+ struct reverb_params;
+ struct reverb_preset;
reverb_preset *cur_reverb_preset;
+ sound_stream *m_stream;
+
static reverb_preset reverb_presets[];
+ static reverb_params *spu_reverb_cfg;
void key_on(const int v);
void key_off(const int v);
@@ -224,7 +231,7 @@ public:
spu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<spu_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<spu_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
void dma_read( uint32_t *ram, uint32_t n_address, int32_t n_size );
void dma_write( uint32_t *ram, uint32_t n_address, int32_t n_size );
@@ -238,15 +245,11 @@ public:
void flush_xa(const unsigned int sector=0);
void flush_cdda(const unsigned int sector=0);
- sound_stream *m_stream;
-
DECLARE_READ16_MEMBER( read );
DECLARE_WRITE16_MEMBER( write );
};
-extern reverb_params *spu_reverb_cfg;
-
// device type definition
-extern const device_type SPU;
+DECLARE_DEVICE_TYPE(SPU, spu_device)
-#endif
+#endif // MAME_SOUND_SPU_H
diff --git a/src/devices/sound/spu_tables.cpp b/src/devices/sound/spu_tables.cpp
index d41286df115..922f2c2bccb 100644
--- a/src/devices/sound/spu_tables.cpp
+++ b/src/devices/sound/spu_tables.cpp
@@ -2,18 +2,9 @@
// copyright-holders:pSXAuthor, R. Belmont
#include "emu.h"
#include "spu.h"
+#include "spureverb.h"
-static inline float ms_to_rate(const float ms)
-{
- return 1.0f/(ms*((float)spu_base_frequency_hz/1000.0f));
-}
-
-static inline float s_to_rate(const float s)
-{
- return ms_to_rate(s*1000.0f);
-}
-
-static float linear_rate[]=
+const float spu_device::linear_rate[]=
{
ms_to_rate(0.05f),
ms_to_rate(0.06f),
@@ -125,9 +116,8 @@ static float linear_rate[]=
s_to_rate(6080.0f)
};
-static const int num_linear_rates=ARRAY_LENGTH(linear_rate);
-static const float pos_exp_rate[]=
+const float spu_device::pos_exp_rate[]=
{
ms_to_rate(0.09f),
ms_to_rate(0.11f),
@@ -231,9 +221,8 @@ static const float pos_exp_rate[]=
s_to_rate(2664.0f)
};
-static const int num_pos_exp_rates=ARRAY_LENGTH(pos_exp_rate);
-static const float neg_exp_rate[]=
+const float spu_device::neg_exp_rate[]=
{
ms_to_rate(0.07f),
ms_to_rate(0.09f),
@@ -345,9 +334,8 @@ static const float neg_exp_rate[]=
s_to_rate(11200.0f)
};
-static const int num_neg_exp_rates=ARRAY_LENGTH(neg_exp_rate);
-static const float decay_rate[16]=
+const float spu_device::decay_rate[16]=
{
ms_to_rate(0.07f),
ms_to_rate(0.18f),
@@ -367,7 +355,7 @@ static const float decay_rate[16]=
s_to_rate(3.4f),
};
-static const float linear_release_rate[]=
+const float spu_device::linear_release_rate[]=
{
ms_to_rate(0.04f),
ms_to_rate(0.09f),
@@ -398,9 +386,8 @@ static const float linear_release_rate[]=
s_to_rate(3040.0f)
};
-static const int num_linear_release_rates=ARRAY_LENGTH(linear_release_rate);
-static const float exp_release_rate[]=
+const float spu_device::exp_release_rate[]=
{
ms_to_rate(0.07f),
ms_to_rate(0.18f),
@@ -431,7 +418,6 @@ static const float exp_release_rate[]=
s_to_rate(7008.0f)
};
-static const int num_exp_release_rates=ARRAY_LENGTH(exp_release_rate);
//
//
@@ -631,6 +617,7 @@ spu_device::reverb_preset spu_device::reverb_presets[]=
float spu_device::get_linear_rate(const int n)
{
+ static constexpr int num_linear_rates=ARRAY_LENGTH(linear_rate);
if (n>=num_linear_rates) return 0.0f;
return linear_rate[n]*freq_multiplier;
}
@@ -643,6 +630,7 @@ float spu_device::get_linear_rate_neg_phase(const int n)
float spu_device::get_pos_exp_rate(const int n)
{
+ static constexpr int num_pos_exp_rates=ARRAY_LENGTH(pos_exp_rate);
if (n>=num_pos_exp_rates) return 0.0f;
return pos_exp_rate[n]*freq_multiplier;
}
@@ -655,6 +643,7 @@ float spu_device::get_pos_exp_rate_neg_phase(const int n)
float spu_device::get_neg_exp_rate(const int n)
{
+ static constexpr int num_neg_exp_rates=ARRAY_LENGTH(neg_exp_rate);
if (n>=num_neg_exp_rates) return 0.0f;
return -neg_exp_rate[n]*freq_multiplier;
}
@@ -677,12 +666,14 @@ float spu_device::get_sustain_level(const int n)
float spu_device::get_linear_release_rate(const int n)
{
+ static constexpr int num_linear_release_rates=ARRAY_LENGTH(linear_release_rate);
if (n>=num_linear_release_rates) return 0.0f;
return linear_release_rate[n]*freq_multiplier;
}
float spu_device::get_exp_release_rate(const int n)
{
+ static constexpr int num_exp_release_rates=ARRAY_LENGTH(exp_release_rate);
if (n>=num_exp_release_rates) return 0.0f;
return exp_release_rate[n]*freq_multiplier;
}
diff --git a/src/devices/sound/spureverb.cpp b/src/devices/sound/spureverb.cpp
index 3c784acbbee..cf747af1acb 100644
--- a/src/devices/sound/spureverb.cpp
+++ b/src/devices/sound/spureverb.cpp
@@ -17,18 +17,16 @@
//
//
-static inline int clamp(int v)
+static constexpr int clamp(int v)
{
- if (v<-32768) return -32768;
- if (v>32767) return 32767;
- return v;
+ return (v<-32768) ? -32768 : (v>32767) ? 32767 : v;
}
//
//
//
-reverb::reverb(const int hz, const int maxdelay)
+spu_device::reverb::reverb(const int hz, const int maxdelay)
: yp(0),
max_delay(maxdelay),
sound_hz(hz)
@@ -54,7 +52,7 @@ reverb::reverb(const int hz, const int maxdelay)
//
//
-reverb::~reverb()
+spu_device::reverb::~reverb()
{
for (int c=0; c<2; c++)
{
@@ -70,7 +68,7 @@ reverb::~reverb()
//
//
-void reverb::bandpass(signed short *sp,
+void spu_device::reverb::bandpass(signed short *sp,
const reverb_params *rp,
const unsigned int sz)
{
@@ -98,7 +96,7 @@ void reverb::bandpass(signed short *sp,
}
}
-void reverb::comb_allpass1(signed short *sp,
+void spu_device::reverb::comb_allpass1(signed short *sp,
signed short *dp,
const comb_param &comb_delay,
const int comb_gain,
@@ -148,7 +146,7 @@ void reverb::comb_allpass1(signed short *sp,
//
//
-void reverb::comb_allpass4(signed short *sp,
+void spu_device::reverb::comb_allpass4(signed short *sp,
signed short *dp,
const comb_param &comb_delay,
const int comb_gain,
@@ -235,7 +233,7 @@ void reverb::comb_allpass4(signed short *sp,
//
//
-void reverb::comb_allpass(signed short *sp,
+void spu_device::reverb::comb_allpass(signed short *sp,
signed short *dp,
const reverb_params *rp,
const int wetvol_l,
@@ -312,7 +310,7 @@ void reverb::comb_allpass(signed short *sp,
//
//
-void reverb::process(signed short *output,
+void spu_device::reverb::process(signed short *output,
signed short *reverb_input,
const reverb_params *rp,
const int wetvol_l,
diff --git a/src/devices/sound/spureverb.h b/src/devices/sound/spureverb.h
index 9f64c5c7f19..64b174bcfb6 100644
--- a/src/devices/sound/spureverb.h
+++ b/src/devices/sound/spureverb.h
@@ -1,71 +1,86 @@
// license:BSD-3-Clause
// copyright-holders:pSXAuthor, R. Belmont
-#ifndef _included_reverb_
- #define _included_reverb_
+#ifndef MAME_SOUND_SPUREVERB_H
+#define MAME_SOUND_SPUREVERB_H
- struct reverb_params
- {
- float band_pole,
- band_gain,
+#pragma once
- comb_delay[2][4],
- comb_gain,
+#include "spu.h"
- allpass_delay,
- allpass_gain;
- };
- class reverb
- {
- signed short *y[2][4],
- *x[2],
- *ax[2],
- *ay[2],
- bx1[2][2],by1[2];
- int yp,
- max_delay,
- sound_hz;
- typedef int comb_param[2][4];
+struct spu_device::reverb_params
+{
+ float band_pole,
+ band_gain,
+ comb_delay[2][4],
+ comb_gain,
+ allpass_delay,
+ allpass_gain;
+};
- void comb_allpass(signed short *sp,
- signed short *dp,
- const reverb_params *rp,
- const int wetvol_l,
- const int wetvol_r,
- const unsigned int _sz);
- void comb_allpass4(signed short *sp,
- signed short *dp,
- const comb_param &comb_delay,
- const int comb_gain,
- const int allpass_delay,
- const int allpass_gain,
- const int *rvol,
- const unsigned int sz);
- void comb_allpass1(signed short *sp,
- signed short *dp,
- const comb_param &comb_delay,
- const int comb_gain,
- const int allpass_delay,
- const int allpass_gain,
- const int *rvol,
- const unsigned int sz);
- void bandpass(signed short *sp,
- const reverb_params *rp,
- const unsigned int sz);
+struct spu_device::reverb_preset
+{
+ const char *name;
+ unsigned short param[32];
+ reverb_params cfg;
+};
- public:
- reverb(const int hz, const int maxdelay=65536);
- ~reverb();
+class spu_device::reverb
+{
+ signed short
+ *y[2][4],
+ *x[2],
+ *ax[2],
+ *ay[2],
+ bx1[2][2],by1[2];
+ int yp, max_delay, sound_hz;
+ typedef int comb_param[2][4];
- void process(signed short *output,
- signed short *reverb_input,
- const reverb_params *rp,
- const int wetvol_l,
- const int wetvol_r,
- const unsigned int sz);
- };
-#endif
+ void comb_allpass(
+ signed short *sp,
+ signed short *dp,
+ const reverb_params *rp,
+ const int wetvol_l,
+ const int wetvol_r,
+ const unsigned int _sz);
+ void comb_allpass4(
+ signed short *sp,
+ signed short *dp,
+ const comb_param &comb_delay,
+ const int comb_gain,
+ const int allpass_delay,
+ const int allpass_gain,
+ const int *rvol,
+ const unsigned int sz);
+ void comb_allpass1(
+ signed short *sp,
+ signed short *dp,
+ const comb_param &comb_delay,
+ const int comb_gain,
+ const int allpass_delay,
+ const int allpass_gain,
+ const int *rvol,
+ const unsigned int sz);
+ void bandpass(signed short *sp,
+ const reverb_params *rp,
+ const unsigned int sz);
+
+public:
+ reverb(const int hz, const int maxdelay=65536);
+ ~reverb();
+
+ void process(
+ signed short *output,
+ signed short *reverb_input,
+ const reverb_params *rp,
+ const int wetvol_l,
+ const int wetvol_r,
+ const unsigned int sz);
+
+};
+
+#endif // MAME_SOUND_SPUREVERB_H
diff --git a/src/devices/sound/st0016.cpp b/src/devices/sound/st0016.cpp
index 9f186fa03e0..d2f0653364a 100644
--- a/src/devices/sound/st0016.cpp
+++ b/src/devices/sound/st0016.cpp
@@ -8,12 +8,12 @@
#include "emu.h"
#include "st0016.h"
-#define VERBOSE (0)
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
// device type definition
-const device_type ST0016 = device_creator<st0016_device>;
+DEFINE_DEVICE_TYPE(ST0016, st0016_device, "st0016", "Seta ST0016 (Audio)")
//**************************************************************************
@@ -25,15 +25,15 @@ const device_type ST0016 = device_creator<st0016_device>;
//-------------------------------------------------
st0016_device::st0016_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ST0016, "ST0016 (Audio)", tag, owner, clock, "st0016_audio", __FILE__),
- device_sound_interface(mconfig, *this),
- m_stream(nullptr),
- m_ram_read_cb(*this)
+ : device_t(mconfig, ST0016, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_ram_read_cb(*this)
+ , m_vpos{ 0, 0, 0, 0, 0, 0, 0, 0 }
+ , m_frac{ 0, 0, 0, 0, 0, 0, 0, 0 }
+ , m_lponce{ 0, 0, 0, 0, 0, 0, 0, 0 }
{
- memset(m_vpos, 0, sizeof(int)*8);
- memset(m_frac, 0, sizeof(int)*8);
- memset(m_lponce, 0, sizeof(int)*8);
- memset(m_regs, 0, sizeof(uint8_t)*0x100);
+ std::fill(std::begin(m_regs), std::end(m_regs), 0);
}
@@ -152,13 +152,13 @@ WRITE8_MEMBER( st0016_device::st0016_snd_w )
{
m_vpos[voice] = m_frac[voice] = m_lponce[voice] = 0;
- LOG(("Key on V%02d: st %06x-%06x lp %06x-%06x frq %x flg %x\n", voice,
+ LOG("Key on V%02d: st %06x-%06x lp %06x-%06x frq %x flg %x\n", voice,
m_regs[vbase+2]<<16 | m_regs[vbase+1]<<8 | m_regs[vbase+2],
m_regs[vbase+0xe]<<16 | m_regs[vbase+0xd]<<8 | m_regs[vbase+0xc],
m_regs[vbase+6]<<16 | m_regs[vbase+5]<<8 | m_regs[vbase+4],
m_regs[vbase+0xa]<<16 | m_regs[vbase+0x9]<<8 | m_regs[vbase+0x8],
m_regs[vbase+0x11]<<8 | m_regs[vbase+0x10],
- m_regs[vbase+0x16]));
+ m_regs[vbase+0x16]);
}
}
}
diff --git a/src/devices/sound/st0016.h b/src/devices/sound/st0016.h
index 8a621d0114a..6138e352368 100644
--- a/src/devices/sound/st0016.h
+++ b/src/devices/sound/st0016.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont, Tomasz Slanina, David Haywood
-#pragma once
+#ifndef MAME_SOUND_ST0016_H
+#define MAME_SOUND_ST0016_H
-#ifndef __ST0016_H__
-#define __ST0016_H__
+#pragma once
//**************************************************************************
@@ -19,14 +19,15 @@
// ======================> st0016_device
-class st0016_device : public device_t,
- public device_sound_interface
+class st0016_device : public device_t, public device_sound_interface
{
public:
st0016_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~st0016_device() { }
- template<class _Object> static devcb_base &set_soundram_callback(device_t &device, _Object object) { return downcast<st0016_device &>(device).m_ram_read_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_soundram_callback(device_t &device, Object &&cb) { return downcast<st0016_device &>(device).m_ram_read_cb.set_callback(std::forward<Object>(cb)); }
+
+ DECLARE_READ8_MEMBER( st0016_snd_r );
+ DECLARE_WRITE8_MEMBER( st0016_snd_w );
protected:
// device-level overrides
@@ -35,10 +36,6 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_READ8_MEMBER( st0016_snd_r );
- DECLARE_WRITE8_MEMBER( st0016_snd_w );
-
private:
sound_stream *m_stream;
devcb_read8 m_ram_read_cb;
@@ -48,7 +45,6 @@ private:
uint8_t m_regs[0x100];
};
-extern const device_type ST0016;
-
+DECLARE_DEVICE_TYPE(ST0016, st0016_device)
-#endif /* __ST0016_H__ */
+#endif // MAME_SOUND_ST0016_H
diff --git a/src/devices/sound/t6721a.cpp b/src/devices/sound/t6721a.cpp
index 4cf3d2914c2..f4ea65a92b5 100644
--- a/src/devices/sound/t6721a.cpp
+++ b/src/devices/sound/t6721a.cpp
@@ -9,13 +9,8 @@
#include "emu.h"
#include "t6721a.h"
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
@@ -24,7 +19,7 @@
//**************************************************************************
// device type definition
-const device_type T6721A = device_creator<t6721a_device>;
+DEFINE_DEVICE_TYPE(T6721A, t6721a_device, "t6721a", "Toshiba T6721A")
@@ -37,7 +32,7 @@ const device_type T6721A = device_creator<t6721a_device>;
//-------------------------------------------------
t6721a_device::t6721a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, T6721A, "T6721A", tag, owner, clock, "t6721a", __FILE__),
+ : device_t(mconfig, T6721A, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_write_eos(*this),
m_write_phi2(*this),
diff --git a/src/devices/sound/t6721a.h b/src/devices/sound/t6721a.h
index f9d45ffb2d4..81157e4c47f 100644
--- a/src/devices/sound/t6721a.h
+++ b/src/devices/sound/t6721a.h
@@ -30,10 +30,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_SOUND_T6721A_H
+#define MAME_SOUND_T6721A_H
-#ifndef __T6721__
-#define __T6721__
+#pragma once
@@ -69,10 +69,10 @@ public:
t6721a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _eos> devcb_base &set_eos_callback(_eos eos) { return m_write_eos.set_callback(eos); }
- template<class _phi2> devcb_base &set_phi2_callback(_phi2 phi2) { return m_write_phi2.set_callback(phi2); }
- template<class _dtrd> devcb_base &set_dtrd_callback(_dtrd dtrd) { return m_write_dtrd.set_callback(dtrd); }
- template<class _apd> devcb_base &set_apd_callback(_apd apd) { return m_write_apd.set_callback(apd); }
+ template <class Object> devcb_base &set_eos_callback(Object &&eos) { return m_write_eos.set_callback(std::forward<Object>(eos)); }
+ template <class Object> devcb_base &set_phi2_callback(Object &&phi2) { return m_write_phi2.set_callback(std::forward<Object>(phi2)); }
+ template <class Object> devcb_base &set_dtrd_callback(Object &&dtrd) { return m_write_dtrd.set_callback(std::forward<Object>(dtrd)); }
+ template <class Object> devcb_base &set_apd_callback(Object &&apd) { return m_write_apd.set_callback(std::forward<Object>(apd)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -115,8 +115,6 @@ private:
// device type definition
-extern const device_type T6721A;
-
-
+DECLARE_DEVICE_TYPE(T6721A, t6721a_device)
-#endif
+#endif // MAME_SOUND_T6721A_H
diff --git a/src/devices/sound/t6w28.cpp b/src/devices/sound/t6w28.cpp
index ffc966d0720..2f155644c5c 100644
--- a/src/devices/sound/t6w28.cpp
+++ b/src/devices/sound/t6w28.cpp
@@ -347,10 +347,11 @@ void t6w28_device::set_enable(bool enable)
m_enabled = enable;
}
-const device_type T6W28 = device_creator<t6w28_device>;
+DEFINE_DEVICE_TYPE(T6W28, t6w28_device, "t6w28", "T6W28")
t6w28_device::t6w28_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, T6W28, "T6W28", tag, owner, clock, "t6w28", __FILE__),
- device_sound_interface(mconfig, *this)
+ : device_t(mconfig, T6W28, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_channel(nullptr)
{
}
diff --git a/src/devices/sound/t6w28.h b/src/devices/sound/t6w28.h
index e40a41e4401..e62852e77b6 100644
--- a/src/devices/sound/t6w28.h
+++ b/src/devices/sound/t6w28.h
@@ -1,12 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#pragma once
+#ifndef MAME_SOUND_T6W28_H
+#define MAME_SOUND_T6W28_H
-#ifndef __T6W28_H__
-#define __T6W28_H__
+#pragma once
-class t6w28_device : public device_t,
- public device_sound_interface
+class t6w28_device : public device_t, public device_sound_interface
{
public:
t6w28_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -41,7 +40,6 @@ private:
bool m_enabled;
};
-extern const device_type T6W28;
-
+DECLARE_DEVICE_TYPE(T6W28, t6w28_device)
-#endif /* __T6W28_H__ */
+#endif // MAME_SOUND_T6W28_H
diff --git a/src/devices/sound/tc8830f.cpp b/src/devices/sound/tc8830f.cpp
index 7a997d9d19f..37a6fecdbe3 100644
--- a/src/devices/sound/tc8830f.cpp
+++ b/src/devices/sound/tc8830f.cpp
@@ -22,10 +22,10 @@
// device type definition
-const device_type TC8830F = device_creator<tc8830f_device>;
+DEFINE_DEVICE_TYPE(TC8830F, tc8830f_device, "tc8830f", "Toshiba TC8830F")
tc8830f_device::tc8830f_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TC8830F, "TC8830F", tag, owner, clock, "tc8830f", __FILE__),
+ : device_t(mconfig, TC8830F, tag, owner, clock),
device_sound_interface(mconfig, *this), m_stream(nullptr),
m_playing(false),
m_address(0),
diff --git a/src/devices/sound/tc8830f.h b/src/devices/sound/tc8830f.h
index b34c9c35110..43784fd8f1f 100644
--- a/src/devices/sound/tc8830f.h
+++ b/src/devices/sound/tc8830f.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_TC8830F_H
+#define MAME_SOUND_TC8830F_H
-#ifndef __TC8830F_H__
-#define __TC8830F_H__
+#pragma once
//**************************************************************************
@@ -37,8 +37,6 @@ public:
void reset();
void write_p(uint8_t data);
- sound_stream *m_stream;
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -48,6 +46,8 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ sound_stream *m_stream;
+
bool m_playing;
uint32_t m_address;
uint32_t m_stop_address;
@@ -65,6 +65,6 @@ private:
// device type definition
-extern const device_type TC8830F;
+DECLARE_DEVICE_TYPE(TC8830F, tc8830f_device)
-#endif /* __TC8830F_H__ */
+#endif // MAME_SOUND_TC8830F_H
diff --git a/src/devices/sound/tiaintf.cpp b/src/devices/sound/tiaintf.cpp
index ea473c535c0..9df0166ca86 100644
--- a/src/devices/sound/tiaintf.cpp
+++ b/src/devices/sound/tiaintf.cpp
@@ -5,7 +5,7 @@
#include "tiasound.h"
// device type definition
-const device_type TIA = device_creator<tia_device>;
+DEFINE_DEVICE_TYPE(TIA, tia_device, "tia_sound", "Atari TIA (Sound)")
//**************************************************************************
@@ -17,7 +17,7 @@ const device_type TIA = device_creator<tia_device>;
//-------------------------------------------------
tia_device::tia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TIA, "TIA", tag, owner, clock, "tia_sound", __FILE__),
+ : device_t(mconfig, TIA, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_channel(nullptr),
m_chip(nullptr)
diff --git a/src/devices/sound/tiaintf.h b/src/devices/sound/tiaintf.h
index 1995b2f55c6..8117c6f4672 100644
--- a/src/devices/sound/tiaintf.h
+++ b/src/devices/sound/tiaintf.h
@@ -1,9 +1,9 @@
// license:GPL-2.0+
// copyright-holders:Ron Fries,Dan Boris
-#pragma once
+#ifndef MAME_SOUND_TIAINTF_H
+#define MAME_SOUND_TIAINTF_H
-#ifndef __TIAINTF_H__
-#define __TIAINTF_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -21,12 +21,12 @@
// ======================> tia_device
-class tia_device : public device_t,
- public device_sound_interface
+class tia_device : public device_t, public device_sound_interface
{
public:
tia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~tia_device() { }
+
+ DECLARE_WRITE8_MEMBER( tia_sound_w );
protected:
// device-level overrides
@@ -36,15 +36,11 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- DECLARE_WRITE8_MEMBER( tia_sound_w );
-
private:
sound_stream *m_channel;
void *m_chip;
};
-extern const device_type TIA;
-
+DECLARE_DEVICE_TYPE(TIA, tia_device)
-#endif /* __TIAINTF_H__ */
+#endif // MAME_SOUND_TIAINTF_H
diff --git a/src/devices/sound/tiasound.cpp b/src/devices/sound/tiasound.cpp
index 944f6aa33d1..0e8275fb33f 100644
--- a/src/devices/sound/tiasound.cpp
+++ b/src/devices/sound/tiasound.cpp
@@ -88,6 +88,8 @@
/* LOCAL GLOBAL VARIABLE DEFINITIONS */
+namespace {
+
struct tia
{
/* structures to hold the 6 tia sound control bytes */
@@ -138,9 +140,11 @@ struct tia
/* has a 13:18 ratio (of course, 13+18 = 31). This could also be */
/* implemented by using counters. */
-static const uint8_t Div31[POLY5_SIZE] =
+constexpr uint8_t Div31[POLY5_SIZE] =
{0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+} // anonymous namespace
+
/*****************************************************************************/
/* Module: tia_sound_w() */
diff --git a/src/devices/sound/tiasound.h b/src/devices/sound/tiasound.h
index 522e95b85ab..b406bf14598 100644
--- a/src/devices/sound/tiasound.h
+++ b/src/devices/sound/tiasound.h
@@ -34,14 +34,14 @@
/* bear this legend. */
/* */
/*****************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_TIASOUND_H
+#define MAME_SOUND_TIASOUND_H
-#ifndef __TIASOUND_H__
-#define __TIASOUND_H__
+#pragma once
void *tia_sound_init(device_t *device, int clock, int sample_rate, int gain);
void tia_sound_free(void *chip);
-void tia_process (void *chip, stream_sample_t *buffer, int length);
+void tia_process(void *chip, stream_sample_t *buffer, int length);
void tia_write(void *chip, offs_t offset, uint8_t data);
-#endif /* __TIASOUND_H__ */
+#endif // MAME_SOUND_TIASOUND_H
diff --git a/src/devices/sound/tms3615.cpp b/src/devices/sound/tms3615.cpp
index 5d9eac4e41e..85f1ec5ece0 100644
--- a/src/devices/sound/tms3615.cpp
+++ b/src/devices/sound/tms3615.cpp
@@ -6,11 +6,11 @@
#define VMIN 0x0000
#define VMAX 0x7fff
-static const int divisor[TMS3615_TONES] = { 478, 451, 426, 402, 379, 358, 338, 319, 301, 284, 268, 253, 239 };
+const int tms3615_device::divisor[TMS3615_TONES] = { 478, 451, 426, 402, 379, 358, 338, 319, 301, 284, 268, 253, 239 };
// device type definition
-const device_type TMS3615 = device_creator<tms3615_device>;
+DEFINE_DEVICE_TYPE(TMS3615, tms3615_device, "tms3615", "TMS3615")
//**************************************************************************
@@ -22,17 +22,17 @@ const device_type TMS3615 = device_creator<tms3615_device>;
//-------------------------------------------------
tms3615_device::tms3615_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TMS3615, "TMS3615", tag, owner, clock, "tms3615", __FILE__),
- device_sound_interface(mconfig, *this),
- m_channel(nullptr),
- m_samplerate(0),
- m_basefreq(0),
- m_output8(0),
- m_output16(0),
- m_enable(0)
+ : device_t(mconfig, TMS3615, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_channel(nullptr)
+ , m_samplerate(0)
+ , m_basefreq(0)
+ , m_output8(0)
+ , m_output16(0)
+ , m_enable(0)
{
- memset(m_counter8, 0, TMS3615_TONES);
- memset(m_counter16, 0, TMS3615_TONES);
+ std::fill(std::begin(m_counter8), std::end(m_counter8), 0);
+ std::fill(std::begin(m_counter16), std::end(m_counter16), 0);
}
@@ -55,8 +55,8 @@ void tms3615_device::device_start()
void tms3615_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
int samplerate = m_samplerate;
- stream_sample_t *buffer8 = outputs[TMS3615_FOOTAGE_8];
- stream_sample_t *buffer16 = outputs[TMS3615_FOOTAGE_16];
+ stream_sample_t *buffer8 = outputs[FOOTAGE_8];
+ stream_sample_t *buffer16 = outputs[FOOTAGE_16];
while( samples-- > 0 )
{
diff --git a/src/devices/sound/tms3615.h b/src/devices/sound/tms3615.h
index 71ca5ac080e..88060e327c8 100644
--- a/src/devices/sound/tms3615.h
+++ b/src/devices/sound/tms3615.h
@@ -1,13 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller
-#pragma once
-
-#ifndef __TMS3615_H__
-#define __TMS3615_H__
+#ifndef MAME_SOUND_TMS3615_H
+#define MAME_SOUND_TMS3615_H
-#define TMS3615_TONES 13
-#define TMS3615_FOOTAGE_8 0
-#define TMS3615_FOOTAGE_16 1
+#pragma once
//**************************************************************************
@@ -27,12 +23,15 @@
// ======================> tms3615_device
-class tms3615_device : public device_t,
- public device_sound_interface
+class tms3615_device : public device_t, public device_sound_interface
{
public:
+ static constexpr unsigned FOOTAGE_8 = 0;
+ static constexpr unsigned FOOTAGE_16 = 1;
+
tms3615_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~tms3615_device() { }
+
+ void enable_w(int enable);
protected:
// device-level overrides
@@ -41,22 +40,21 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-public:
- void enable_w(int enable);
-
private:
- sound_stream *m_channel; /* returned by stream_create() */
- int m_samplerate; /* output sample rate */
- int m_basefreq; /* chip's base frequency */
- int m_counter8[TMS3615_TONES]; /* tone frequency counter for 8' */
- int m_counter16[TMS3615_TONES]; /* tone frequency counter for 16'*/
- int m_output8; /* output signal bits for 8' */
- int m_output16; /* output signal bits for 16' */
- int m_enable; /* mask which tones to play */
+ static constexpr unsigned TMS3615_TONES = 13;
+ static const int divisor[TMS3615_TONES];
+
+ sound_stream *m_channel; // returned by stream_create()
+ int m_samplerate; // output sample rate
+ int m_basefreq; // chip's base frequency
+ int m_counter8[TMS3615_TONES]; // tone frequency counter for 8'
+ int m_counter16[TMS3615_TONES]; // tone frequency counter for 16'
+ int m_output8; // output signal bits for 8'
+ int m_output16; // output signal bits for 16'
+ int m_enable; // mask which tones to play
};
[[deprecated("Use TMS36XX instead")]]
extern const device_type TMS3615;
-
-#endif /* __TMS3615_H__ */
+#endif // MAME_SOUND_TMS3615_H
diff --git a/src/devices/sound/tms36xx.cpp b/src/devices/sound/tms36xx.cpp
index 5375117b444..54ec071dfa8 100644
--- a/src/devices/sound/tms36xx.cpp
+++ b/src/devices/sound/tms36xx.cpp
@@ -4,8 +4,8 @@
#include "tms36xx.h"
#define VERBOSE 1
+#include "logmacro.h"
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
/* the frequencies are later adjusted by "* clock / FSCALE" */
#define FSCALE 1024
@@ -309,7 +309,7 @@ static const int *const tunes[] = {nullptr,tune1,tune2,tune3,tune4};
// device type definition
-const device_type TMS36XX = device_creator<tms36xx_device>;
+DEFINE_DEVICE_TYPE(TMS36XX, tms36xx_device, "tms36xx", "TMS36XX")
//**************************************************************************
@@ -321,7 +321,7 @@ const device_type TMS36XX = device_creator<tms36xx_device>;
//-------------------------------------------------
tms36xx_device::tms36xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TMS36XX, "TMS36XX", tag, owner, clock, "tms36xx", __FILE__),
+ : device_t(mconfig, TMS36XX, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_subtype(nullptr),
m_channel(nullptr),
@@ -369,12 +369,12 @@ void tms36xx_device::device_start()
}
tms3617_enable(enable);
- LOG(("TMS36xx samplerate %d\n", m_samplerate));
- LOG(("TMS36xx basefreq %d\n", m_basefreq));
- LOG(("TMS36xx decay %d,%d,%d,%d,%d,%d\n",
+ LOG("TMS36xx samplerate %d\n", m_samplerate);
+ LOG("TMS36xx basefreq %d\n", m_basefreq);
+ LOG("TMS36xx decay %d,%d,%d,%d,%d,%d\n",
m_decay[0], m_decay[1], m_decay[2],
- m_decay[3], m_decay[4], m_decay[5]));
- LOG(("TMS36xx speed %d\n", m_speed));
+ m_decay[3], m_decay[4], m_decay[5]);
+ LOG("TMS36xx speed %d\n", m_speed);
save_item(NAME(m_octave));
save_item(NAME(m_tune_counter));
@@ -460,7 +460,7 @@ void tms36xx_device::mm6221aa_tune_w(int tune)
if( tune == m_tune_num )
return;
- LOG(("%s tune:%X\n", m_subtype, tune));
+ LOG("%s tune:%X\n", m_subtype, tune);
/* update the stream before changing the tune */
m_channel->update();
@@ -483,7 +483,7 @@ void tms36xx_device::tms36xx_note_w(int octave, int note)
if (note > 12)
return;
- LOG(("%s octave:%X note:%X\n", m_subtype, octave, note));
+ LOG("%s octave:%X note:%X\n", m_subtype, octave, note);
/* update the stream before changing the tune */
m_channel->update();
@@ -532,7 +532,7 @@ void tms36xx_device::tms3617_enable(int enable)
/* update the stream before changing the tune */
m_channel->update();
- LOG(("%s enable voices", m_subtype));
+ LOG("%s enable voices", m_subtype);
for (i = 0; i < 6; i++)
{
if (enable & (1 << i))
@@ -541,17 +541,17 @@ void tms36xx_device::tms3617_enable(int enable)
switch (i)
{
- case 0: LOG((" 16'")); break;
- case 1: LOG((" 8'")); break;
- case 2: LOG((" 5 1/3'")); break;
- case 3: LOG((" 4'")); break;
- case 4: LOG((" 2 2/3'")); break;
- case 5: LOG((" 2'")); break;
+ case 0: LOG(" 16'"); break;
+ case 1: LOG(" 8'"); break;
+ case 2: LOG(" 5 1/3'"); break;
+ case 3: LOG(" 4'"); break;
+ case 4: LOG(" 2 2/3'"); break;
+ case 5: LOG(" 2'"); break;
}
}
}
/* set the enable mask and number of active voices */
m_enable = enable;
m_voices = bits;
- LOG(("%s\n", bits ? "" : " none"));
+ LOG("%s\n", bits ? "" : " none");
}
diff --git a/src/devices/sound/tms36xx.h b/src/devices/sound/tms36xx.h
index 07b15cb45a4..5eb471980d7 100644
--- a/src/devices/sound/tms36xx.h
+++ b/src/devices/sound/tms36xx.h
@@ -1,21 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller
-#pragma once
+#ifndef MAME_SOUND_TMS36XX_H
+#define MAME_SOUND_TMS36XX_H
-#ifndef __TMS36XX_H__
-#define __TMS36XX_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_TMS36XX_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, TMS36XX, _clock)
-#define MCFG_TMS36XX_REPLACE(_tag, _clock) \
- MCFG_DEVICE_REPLACE(_tag, TMS36XX, _clock)
+#define MCFG_TMS36XX_ADD(tag, clock) \
+ MCFG_DEVICE_ADD((tag), TMS36XX, (clock))
-#define MCFG_TMS36XX_TYPE(_type) \
- tms36xx_device::set_subtype(*device, _type);
+#define MCFG_TMS36XX_REPLACE(tag, clock) \
+ MCFG_DEVICE_REPLACE((tag), TMS36XX, (clock))
+
+#define MCFG_TMS36XX_TYPE(type) \
+ tms36xx_device::set_subtype(*device, (tms36xx_device::subtype::type));
#define MCFG_TMS36XX_DECAY_TIMES(_dec0, _dec1, _dec2, _dec3, _dec4, _dec5) \
tms36xx_device::set_decays(*device, _dec0, _dec1, _dec2, _dec3, _dec4, _dec5);
@@ -28,13 +29,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-// subtypes
-#define MM6221AA 21 // Phoenix (fixed melodies)
-#define TMS3615 15 // Naughty Boy, Pleiads (13 notes, one output)
-#define TMS3617 17 // Monster Bash (13 notes, six outputs)
-
-#define TMS36XX_VMIN 0x0000
-#define TMS36XX_VMAX 0x7fff
// ======================> tms36xx_device
@@ -43,25 +37,31 @@ class tms36xx_device : public device_t,
public device_sound_interface
{
public:
+ enum class subtype
+ {
+ MM6221AA = 21, // Phoenix (fixed melodies)
+ TMS3615 = 15, // Naughty Boy, Pleiads (13 notes, one output)
+ TMS3617 = 17 // Monster Bash (13 notes, six outputs)
+ };
+
tms36xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~tms36xx_device() { }
- static void set_subtype(device_t &device, int type)
+ static void set_subtype(device_t &device, subtype type)
{
tms36xx_device &dev = downcast<tms36xx_device &>(device);
switch (type)
{
- case MM6221AA:
+ case subtype::MM6221AA:
dev.m_subtype = "MM6221AA";
break;
- case TMS3615:
+ case subtype::TMS3615:
dev.m_subtype = "TMS3615";
break;
- case TMS3617:
+ case subtype::TMS3617:
dev.m_subtype = "TMS3617";
break;
default:
- fatalerror("Invalid TMS36XX type: %d\n", type);
+ fatalerror("Invalid TMS36XX type: %d\n", int(type));
break;
}
}
@@ -81,6 +81,9 @@ public:
}
protected:
+ static constexpr unsigned TMS36XX_VMIN = 0x0000;
+ static constexpr unsigned TMS36XX_VMAX = 0x7fff;
+
// device-level overrides
virtual void device_start() override;
@@ -132,6 +135,7 @@ private:
};
extern const device_type TMS36XX;
+DECLARE_DEVICE_TYPE(TMS36XX, tms36xx_device)
-#endif /* __TMS36XX_H__ */
+#endif // MAME_SOUND_TMS36XX_H
diff --git a/src/devices/sound/tms5110.cpp b/src/devices/sound/tms5110.cpp
index 74ba519d649..1c69dc8d2d8 100644
--- a/src/devices/sound/tms5110.cpp
+++ b/src/devices/sound/tms5110.cpp
@@ -14,7 +14,7 @@
Todo:
- implement CS
- - TMS5110_CMD_TEST_TALK is only partially implemented
+ - CMD_TEST_TALK is only partially implemented
TMS5100:
@@ -147,35 +147,6 @@ static int16_t clip_analog(int16_t cliptemp);
#define DEBUG_5110 0
-void tms5110_device::set_variant(int variant)
-{
- switch (variant)
- {
- case TMS5110_IS_TMC0281:
- m_coeff = &T0280B_0281A_coeff;
- break;
- case TMS5110_IS_TMC0281D:
- m_coeff = &T0280D_0281D_coeff;
- break;
- case TMS5110_IS_CD2801:
- m_coeff = &T0280F_2801A_coeff;
- break;
- case TMS5110_IS_M58817:
- m_coeff = &M58817_coeff;
- break;
- case TMS5110_IS_CD2802:
- m_coeff = &T0280F_2802_coeff;
- break;
- case TMS5110_IS_TMS5110A:
- m_coeff = &tms5110a_coeff;
- break;
- default:
- fatalerror("Unknown variant in tms5110_create\n");
- }
-
- m_variant = variant;
-}
-
void tms5110_device::new_int_write(uint8_t rc, uint8_t m0, uint8_t m1, uint8_t addr)
{
if (!m_m0_cb.isnull())
@@ -213,8 +184,6 @@ uint8_t tms5110_device::new_int_read()
void tms5110_device::register_for_save_states()
{
- save_item(NAME(m_variant));
-
save_item(NAME(m_PDC));
save_item(NAME(m_CTL_pins));
save_item(NAME(m_SPEN));
@@ -234,7 +203,7 @@ void tms5110_device::register_for_save_states()
save_item(NAME(m_new_frame_energy_idx));
save_item(NAME(m_new_frame_pitch_idx));
save_item(NAME(m_new_frame_k_idx));
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5110_PERFECT_INTERPOLATION_HACK
save_item(NAME(m_old_frame_energy_idx));
save_item(NAME(m_old_frame_pitch_idx));
save_item(NAME(m_old_frame_k_idx));
@@ -369,7 +338,7 @@ void tms5110_device::process(int16_t *buffer, unsigned int size)
//m_RNG = 0x1234;
// end HACK
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5110_PERFECT_INTERPOLATION_HACK
/* remember previous frame energy, pitch, and coefficients */
m_old_frame_energy_idx = m_new_frame_energy_idx;
m_old_frame_pitch_idx = m_new_frame_pitch_idx;
@@ -381,10 +350,8 @@ void tms5110_device::process(int16_t *buffer, unsigned int size)
parse_frame();
/* if the new frame is a stop frame, unset both TALK and SPEN (via TCON). TALKD remains active while the energy is ramping to 0. */
- if (NEW_FRAME_STOP_FLAG == 1)
- {
+ if (NEW_FRAME_STOP_FLAG())
m_TALK = m_SPEN = 0;
- }
/* in all cases where interpolation would be inhibited, set the inhibit flag; otherwise clear it.
* Interpolation inhibit cases:
@@ -393,18 +360,18 @@ void tms5110_device::process(int16_t *buffer, unsigned int size)
* Old frame was unvoiced, new is voiced
* Old frame was unvoiced, new frame is silence/zero energy (non-existent on tms51xx rev D and F (present and working on tms52xx, present but buggy on tms51xx rev A and B))
*/
- if ( ((OLD_FRAME_UNVOICED_FLAG == 0) && NEW_FRAME_UNVOICED_FLAG)
- || ((OLD_FRAME_UNVOICED_FLAG == 1) && !NEW_FRAME_UNVOICED_FLAG)
- || ((OLD_FRAME_SILENCE_FLAG == 1) && !NEW_FRAME_SILENCE_FLAG) )
- //|| ((m_inhibit == 1) && (OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 1)) ) //TMS51xx INTERP BUG1
- //|| ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 1)) )
+ if ( ((OLD_FRAME_UNVOICED_FLAG() == 0) && NEW_FRAME_UNVOICED_FLAG())
+ || ((OLD_FRAME_UNVOICED_FLAG() == 1) && !NEW_FRAME_UNVOICED_FLAG())
+ || ((OLD_FRAME_SILENCE_FLAG() == 1) && !NEW_FRAME_SILENCE_FLAG()) )
+ //|| ((m_inhibit == 1) && (OLD_FRAME_UNVOICED_FLAG() == 1) && NEW_FRAME_SILENCE_FLAG()) ) //TMS51xx INTERP BUG1
+ //|| ((OLD_FRAME_UNVOICED_FLAG() == 1) && NEW_FRAME_SILENCE_FLAG()) )
m_inhibit = 1;
else // normal frame, normal interpolation
m_inhibit = 0;
#ifdef DEBUG_GENERATION
/* Debug info for current parsed frame */
- fprintf(stderr, "OLDE: %d; NEWE: %d; OLDP: %d; NEWP: %d ", OLD_FRAME_SILENCE_FLAG, NEW_FRAME_SILENCE_FLAG, OLD_FRAME_UNVOICED_FLAG, NEW_FRAME_UNVOICED_FLAG);
+ fprintf(stderr, "OLDE: %d; NEWE: %d; OLDP: %d; NEWP: %d ", OLD_FRAME_SILENCE_FLAG(), NEW_FRAME_SILENCE_FLAG(), OLD_FRAME_UNVOICED_FLAG(), NEW_FRAME_UNVOICED_FLAG());
fprintf(stderr,"Processing new frame: ");
if (m_inhibit == 0)
fprintf(stderr, "Normal Frame\n");
@@ -431,7 +398,7 @@ void tms5110_device::process(int16_t *buffer, unsigned int size)
else // Not a new frame, just interpolate the existing frame.
{
int inhibit_state = ((m_inhibit==1)&&(m_IP != 0)); // disable inhibit when reaching the last interp period, but don't overwrite the m_inhibit value
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5110_PERFECT_INTERPOLATION_HACK
int samples_per_frame = m_subc_reload?175:266; // either (13 A cycles + 12 B cycles) * 7 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 7 interps for SPKSLOW
//int samples_per_frame = m_subc_reload?200:304; // either (13 A cycles + 12 B cycles) * 8 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 8 interps for SPKSLOW
int current_sample = (m_subcycle - m_subc_reload)+(m_PC*(3-m_subc_reload))+((m_subc_reload?25:38)*((m_IP-1)&7));
@@ -483,7 +450,7 @@ void tms5110_device::process(int16_t *buffer, unsigned int size)
}
// calculate the output
- if (OLD_FRAME_UNVOICED_FLAG == 1)
+ if (OLD_FRAME_UNVOICED_FLAG() == 1)
{
// generate unvoiced samples here
if (m_RNG & 1)
@@ -491,7 +458,7 @@ void tms5110_device::process(int16_t *buffer, unsigned int size)
else
m_excitation_data = 0x40;
}
- else /* (OLD_FRAME_UNVOICED_FLAG == 0) */
+ else /* (OLD_FRAME_UNVOICED_FLAG() == 0) */
{
// generate voiced samples here
/* US patent 4331836 Figure 14B shows, and logic would hold, that a pitch based chirp
@@ -524,7 +491,7 @@ void tms5110_device::process(int16_t *buffer, unsigned int size)
for (i=0; i<10; i++)
fprintf(stderr,"K%d:%04d ", i+1, m_current_k[i]);
fprintf(stderr,"Out:%06d ", this_sample);
-//#ifdef PERFECT_INTERPOLATION_HACK
+//#ifdef TMS5110_PERFECT_INTERPOLATION_HACK
// fprintf(stderr,"%d%d%d%d",m_old_zpar,m_zpar,m_old_uv_zpar,m_uv_zpar);
//#else
// fprintf(stderr,"x%dx%d",m_zpar,m_uv_zpar);
@@ -569,9 +536,9 @@ void tms5110_device::process(int16_t *buffer, unsigned int size)
if (m_IP == 7) // RESETL4
{
// Latch OLDE and OLDP
- //if (OLD_FRAME_SILENCE_FLAG) m_uv_zpar = 0; // TMS51xx INTERP BUG2
- OLD_FRAME_SILENCE_FLAG = NEW_FRAME_SILENCE_FLAG; // m_OLDE
- OLD_FRAME_UNVOICED_FLAG = NEW_FRAME_UNVOICED_FLAG; // m_OLDP
+ //if (OLD_FRAME_SILENCE_FLAG()) m_uv_zpar = 0; // TMS51xx INTERP BUG2
+ OLD_FRAME_SILENCE_FLAG() = NEW_FRAME_SILENCE_FLAG() ? 1 : 0; // m_OLDE
+ OLD_FRAME_UNVOICED_FLAG() = NEW_FRAME_UNVOICED_FLAG() ? 1 : 0; // m_OLDP
/* if TALK was clear last frame, halt speech now, since TALKD (latched from TALK on new frame) just went inactive. */
#ifdef DEBUG_GENERATION
if ((!m_TALK) && (!m_SPEN))
@@ -827,7 +794,7 @@ void tms5110_device::PDC_set(int data)
#endif
switch (m_CTL_pins & 0xe) /*CTL1 - don't care*/
{
- case TMS5110_CMD_RESET:
+ case CMD_RESET:
#ifdef DEBUG_COMMAND_DUMP
fprintf(stderr,"RESET\n");
#endif
@@ -835,21 +802,21 @@ void tms5110_device::PDC_set(int data)
reset();
break;
- case TMS5110_CMD_LOAD_ADDRESS:
+ case CMD_LOAD_ADDRESS:
#ifdef DEBUG_COMMAND_DUMP
fprintf(stderr,"LOAD ADDRESS\n");
#endif
m_next_is_address = true;
break;
- case TMS5110_CMD_OUTPUT:
+ case CMD_OUTPUT:
#ifdef DEBUG_COMMAND_DUMP
fprintf(stderr,"OUTPUT (from read-bit buffer)\n");
#endif
m_state = CTL_STATE_NEXT_OUTPUT;
break;
- case TMS5110_CMD_SPKSLOW:
+ case CMD_SPKSLOW:
#ifdef DEBUG_COMMAND_DUMP
fprintf(stderr,"SPKSLOW\n");
#endif
@@ -863,14 +830,14 @@ void tms5110_device::PDC_set(int data)
m_uv_zpar = 1; // zero k4-k10 as well
m_OLDE = 1; // 'silence/zpar' frames are zero energy
m_OLDP = 1; // 'silence/zpar' frames are zero pitch
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5110_PERFECT_INTERPOLATION_HACK
m_old_zpar = 1; // zero all the old parameters
m_old_uv_zpar = 1; // zero old k4-k10 as well
#endif
m_subc_reload = 0; // SPKSLOW means this is 0
break;
- case TMS5110_CMD_READ_BIT:
+ case CMD_READ_BIT:
#ifdef DEBUG_COMMAND_DUMP
fprintf(stderr,"READ BIT\n");
#endif
@@ -887,7 +854,7 @@ void tms5110_device::PDC_set(int data)
}
break;
- case TMS5110_CMD_SPEAK:
+ case CMD_SPEAK:
#ifdef DEBUG_COMMAND_DUMP
fprintf(stderr,"SPEAK\n");
#endif
@@ -901,14 +868,14 @@ void tms5110_device::PDC_set(int data)
m_uv_zpar = 1; // zero k4-k10 as well
m_OLDE = 1; // 'silence/zpar' frames are zero energy
m_OLDP = 1; // 'silence/zpar' frames are zero pitch
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5110_PERFECT_INTERPOLATION_HACK
m_old_zpar = 1; // zero all the old parameters
m_old_uv_zpar = 1; // zero old k4-k10 as well
#endif
m_subc_reload = 1; // SPEAK means this is 1
break;
- case TMS5110_CMD_READ_BRANCH:
+ case CMD_READ_BRANCH:
#ifdef DEBUG_COMMAND_DUMP
fprintf(stderr,"READ AND BRANCH\n");
#endif
@@ -921,7 +888,7 @@ void tms5110_device::PDC_set(int data)
m_schedule_dummy_read = false;
break;
- case TMS5110_CMD_TEST_TALK:
+ case CMD_TEST_TALK:
#ifdef DEBUG_COMMAND_DUMP
fprintf(stderr,"TEST TALK\n");
#endif
@@ -951,7 +918,7 @@ void tms5110_device::PDC_set(int data)
void tms5110_device::parse_frame()
{
int i, rep_flag;
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5110_PERFECT_INTERPOLATION_HACK
m_old_uv_zpar = m_uv_zpar;
m_old_zpar = m_zpar;
#endif
@@ -982,7 +949,7 @@ void tms5110_device::parse_frame()
fprintf(stderr," ");
#endif
// if the new frame is unvoiced, be sure to zero out the k5-k10 parameters
- m_uv_zpar = NEW_FRAME_UNVOICED_FLAG;
+ m_uv_zpar = NEW_FRAME_UNVOICED_FLAG() ? 1 : 0;
// if this is a repeat frame, just do nothing, it will reuse the old coefficients
if (rep_flag)
return;
@@ -1049,7 +1016,29 @@ static const unsigned int example_word_TEN[619]={
void tms5110_device::device_start()
{
- set_variant(TMS5110_IS_TMS5110A);
+ switch (m_variant)
+ {
+ case TMS5110_IS_TMC0281:
+ m_coeff = &T0280B_0281A_coeff;
+ break;
+ case TMS5110_IS_TMC0281D:
+ m_coeff = &T0280D_0281D_coeff;
+ break;
+ case TMS5110_IS_CD2801:
+ m_coeff = &T0280F_2801A_coeff;
+ break;
+ case TMS5110_IS_M58817:
+ m_coeff = &M58817_coeff;
+ break;
+ case TMS5110_IS_CD2802:
+ m_coeff = &T0280F_2802_coeff;
+ break;
+ case TMS5110_IS_TMS5110A:
+ m_coeff = &tms5110a_coeff;
+ break;
+ default:
+ fatalerror("Unknown variant in tms5110_create\n");
+ }
/* resolve lines */
m_m0_cb.resolve();
@@ -1067,86 +1056,6 @@ void tms5110_device::device_start()
register_for_save_states();
}
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void tms5100_device::device_start()
-{
- tms5110_device::device_start();
- set_variant(TMS5110_IS_TMC0281);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void tmc0281_device::device_start()
-{
- tms5110_device::device_start();
- set_variant(TMS5110_IS_TMC0281);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void tms5100a_device::device_start()
-{
- tms5110_device::device_start();
- set_variant(TMS5110_IS_TMC0281D);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void tmc0281d_device::device_start()
-{
- tms5110_device::device_start();
- set_variant(TMS5110_IS_TMC0281D);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void cd2801_device::device_start()
-{
- tms5110_device::device_start();
- set_variant(TMS5110_IS_CD2801);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void cd2802_device::device_start()
-{
- tms5110_device::device_start();
- set_variant(TMS5110_IS_CD2802);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void tms5110a_device::device_start()
-{
- tms5110_device::device_start();
- set_variant(TMS5110_IS_TMS5110A);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void m58817_device::device_start()
-{
- tms5110_device::device_start();
- set_variant(TMS5110_IS_M58817);
-}
-
//-------------------------------------------------
// device_reset - device-specific reset
@@ -1164,7 +1073,7 @@ void tms5110_device::device_reset()
m_PDC = 0;
/* initialize the energy/pitch/k states */
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5110_PERFECT_INTERPOLATION_HACK
m_old_frame_energy_idx = m_old_frame_pitch_idx = 0;
memset(m_old_frame_k_idx, 0, sizeof(m_old_frame_k_idx));
m_old_zpar = m_old_uv_zpar = 0;
@@ -1256,8 +1165,8 @@ READ8_MEMBER( tms5110_device::ctl_r )
m_stream->update();
if (m_state == CTL_STATE_TTALK_OUTPUT)
{
- if (DEBUG_5110) logerror("Status read while outputting Test Talk (status=%2d)\n", TALK_STATUS);
- return (TALK_STATUS << 0); /*CTL1 = still talking ? */
+ if (DEBUG_5110) logerror("Status read while outputting Test Talk (status=%2d)\n", TALK_STATUS());
+ return (TALK_STATUS() << 0); /*CTL1 = still talking ? */
}
else if (m_state == CTL_STATE_OUTPUT)
{
@@ -1275,7 +1184,7 @@ READ8_MEMBER( m58817_device::status_r )
{
/* bring up to date first */
m_stream->update();
- return (TALK_STATUS << 0); /*CTL1 = still talking ? */
+ return (TALK_STATUS() << 0); /*CTL1 = still talking ? */
}
/******************************************************************************
@@ -1521,17 +1430,27 @@ WRITE_LINE_MEMBER( tmsprom_device::enable_w )
TMS 5110 device definition
-------------------------------------------------*/
-const device_type TMS5110 = device_creator<tms5110_device>;
+DEFINE_DEVICE_TYPE(TMS5110, tms5110_device, "tms5110", "TMS5110")
+DEFINE_DEVICE_TYPE(TMS5100, tms5100_device, "tms5100", "TMS5100")
+DEFINE_DEVICE_TYPE(TMC0281, tmc0281_device, "tmc0281", "TMC0281")
+DEFINE_DEVICE_TYPE(TMS5100A, tms5100a_device, "tms5100a", "TMS5100A")
+DEFINE_DEVICE_TYPE(TMC0281D, tmc0281d_device, "tmc0281d", "TMC0281D")
+DEFINE_DEVICE_TYPE(CD2801, cd2801_device, "cd2801", "CD2801")
+DEFINE_DEVICE_TYPE(CD2802, cd2802_device, "cd2802", "CD2802")
+DEFINE_DEVICE_TYPE(TMS5110A, tms5110a_device, "tms5110a", "TMS5110A")
+DEFINE_DEVICE_TYPE(M58817, m58817_device, "m58817", "M58817")
+
tms5110_device::tms5110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5110_device(mconfig, TMS5110, "TMS5110", tag, owner, clock, "tms5110", __FILE__)
+ : tms5110_device(mconfig, TMS5110, tag, owner, clock, TMS5110_IS_TMS5110A)
{
}
-tms5110_device::tms5110_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+tms5110_device::tms5110_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int variant)
+ : device_t(mconfig, type, tag, owner, clock)
, device_sound_interface(mconfig, *this)
, m_table(*this, DEVICE_SELF)
+ , m_variant(variant)
, m_m0_cb(*this)
, m_m1_cb(*this)
, m_addr_cb(*this)
@@ -1541,67 +1460,58 @@ tms5110_device::tms5110_device(const machine_config &mconfig, device_type type,
}
-const device_type TMS5100 = device_creator<tms5100_device>;
-
tms5100_device::tms5100_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5110_device(mconfig, TMS5100, "TMS5100", tag, owner, clock, "tms5100", __FILE__)
+ : tms5110_device(mconfig, TMS5100, tag, owner, clock, TMS5110_IS_TMC0281)
{
}
-const device_type TMC0281 = device_creator<tmc0281_device>;
tmc0281_device::tmc0281_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5110_device(mconfig, TMC0281, "TMC0281", tag, owner, clock, "tmc0281", __FILE__)
+ : tms5110_device(mconfig, TMC0281, tag, owner, clock, TMS5110_IS_TMC0281)
{
}
-const device_type TMS5100A = device_creator<tms5100a_device>;
tms5100a_device::tms5100a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5110_device(mconfig, TMS5100A, "TMS5100A", tag, owner, clock, "tms5100a", __FILE__)
+ : tms5110_device(mconfig, TMS5100A, tag, owner, clock, TMS5110_IS_TMC0281D)
{
}
-const device_type TMC0281D = device_creator<tmc0281d_device>;
tmc0281d_device::tmc0281d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5110_device(mconfig, TMC0281D, "TMC0281D", tag, owner, clock, "tmc0281d", __FILE__)
+ : tms5110_device(mconfig, TMC0281D, tag, owner, clock, TMS5110_IS_TMC0281D)
{
}
-const device_type CD2801 = device_creator<cd2801_device>;
cd2801_device::cd2801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5110_device(mconfig, CD2801, "CD2801", tag, owner, clock, "cd2801", __FILE__)
+ : tms5110_device(mconfig, CD2801, tag, owner, clock, TMS5110_IS_CD2801)
{
}
-const device_type CD2802 = device_creator<cd2802_device>;
cd2802_device::cd2802_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5110_device(mconfig, CD2802, "CD2802", tag, owner, clock, "cd2802", __FILE__)
+ : tms5110_device(mconfig, CD2802, tag, owner, clock, TMS5110_IS_CD2802)
{
}
-const device_type TMS5110A = device_creator<tms5110a_device>;
tms5110a_device::tms5110a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5110_device(mconfig, TMS5110A, "TMS5110A", tag, owner, clock, "tms5110a", __FILE__)
+ : tms5110_device(mconfig, TMS5110A, tag, owner, clock, TMS5110_IS_TMS5110A)
{
}
-const device_type M58817 = device_creator<m58817_device>;
m58817_device::m58817_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5110_device(mconfig, M58817, "M58817", tag, owner, clock, "m58817", __FILE__)
+ : tms5110_device(mconfig, M58817, tag, owner, clock, TMS5110_IS_M58817)
{
}
-const device_type TMSPROM = device_creator<tmsprom_device>;
+DEFINE_DEVICE_TYPE(TMSPROM, tmsprom_device, "tmsprom", "TMSPROM")
tmsprom_device::tmsprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TMSPROM, "TMSPROM", tag, owner, clock, "tmsprom", __FILE__),
+ : device_t(mconfig, TMSPROM, tag, owner, clock),
m_rom(*this, DEVICE_SELF),
m_prom(*this, finder_base::DUMMY_TAG, 0x20),
m_rom_size(0),
diff --git a/src/devices/sound/tms5110.h b/src/devices/sound/tms5110.h
index 02c010bc66d..5fe20f8fcc2 100644
--- a/src/devices/sound/tms5110.h
+++ b/src/devices/sound/tms5110.h
@@ -1,30 +1,13 @@
// license:BSD-3-Clause
// copyright-holders:Frank Palazzolo, Jarek Burczynski, Aaron Giles, Jonathan Gevaryahu, Couriersud
-#pragma once
+#ifndef MAME_SOUND_TMS5110_H
+#define MAME_SOUND_TMS5110_H
-#ifndef __TMS5110_H__
-#define __TMS5110_H__
+#pragma once
/* HACK: if defined, uses impossibly perfect 'straight line' interpolation */
-#undef PERFECT_INTERPOLATION_HACK
-
-/* TMS5110 commands */
- /* CTL8 CTL4 CTL2 CTL1 | PDC's */
- /* (MSB) (LSB) | required */
-#define TMS5110_CMD_RESET (0) /* 0 0 0 x | 1 */
-#define TMS5110_CMD_LOAD_ADDRESS (2) /* 0 0 1 x | 2 */
-#define TMS5110_CMD_OUTPUT (4) /* 0 1 0 x | 3 */
-#define TMS5110_CMD_SPKSLOW (6) /* 0 1 1 x | 1 */
-/* Note: TMS5110_CMD_SPKSLOW is undocumented on the datasheets, it only appears
- on the patents. It might not actually work properly on some of the real
- chips as manufactured. Acts the same as CMD_SPEAK, but makes the
- interpolator take two A cycles wherever it would normally only take one,
- effectively making speech of any given word take 1.5x as long as normal. */
-#define TMS5110_CMD_READ_BIT (8) /* 1 0 0 x | 1 */
-#define TMS5110_CMD_SPEAK (10) /* 1 0 1 x | 1 */
-#define TMS5110_CMD_READ_BRANCH (12) /* 1 1 0 x | 1 */
-#define TMS5110_CMD_TEST_TALK (14) /* 1 1 1 x | 3 */
+#undef TMS5110_PERFECT_INTERPOLATION_HACK
/* clock rate = 80 * output sample rate, */
/* usually 640000 for 8000 Hz sample rate or */
@@ -46,31 +29,47 @@
devcb = &tms5110_device::set_romclk_callback(*device, DEVCB_##_devcb);
-class tms5110_device : public device_t,
- public device_sound_interface
+class tms5110_device : public device_t, public device_sound_interface
{
public:
+ /* TMS5110 commands */
+ /* CTL8 CTL4 CTL2 CTL1 | PDC's */
+ /* (MSB) (LSB) | required */
+ static constexpr uint8_t CMD_RESET = 0; /* 0 0 0 x | 1 */
+ static constexpr uint8_t CMD_LOAD_ADDRESS = 2; /* 0 0 1 x | 2 */
+ static constexpr uint8_t CMD_OUTPUT = 4; /* 0 1 0 x | 3 */
+ static constexpr uint8_t CMD_SPKSLOW = 6; /* 0 1 1 x | 1 */
+ /* Note: TMS5110_CMD_SPKSLOW is undocumented on the datasheets, it only appears
+ on the patents. It might not actually work properly on some of the real
+ chips as manufactured. Acts the same as CMD_SPEAK, but makes the
+ interpolator take two A cycles wherever it would normally only take one,
+ effectively making speech of any given word take 1.5x as long as normal. */
+ static constexpr uint8_t CMD_READ_BIT = 8; /* 1 0 0 x | 1 */
+ static constexpr uint8_t CMD_SPEAK = 10; /* 1 0 1 x | 1 */
+ static constexpr uint8_t CMD_READ_BRANCH = 12; /* 1 1 0 x | 1 */
+ static constexpr uint8_t CMD_TEST_TALK = 14; /* 1 1 1 x | 3 */
+
tms5110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- tms5110_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- template<class _Object> static devcb_base &set_m0_callback(device_t &device, _Object object) { return downcast<tms5110_device &>(device).m_m0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_m1_callback(device_t &device, _Object object) { return downcast<tms5110_device &>(device).m_m1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_addr_callback(device_t &device, _Object object) { return downcast<tms5110_device &>(device).m_addr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_data_callback(device_t &device, _Object object) { return downcast<tms5110_device &>(device).m_data_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_romclk_callback(device_t &device, _Object object) { return downcast<tms5110_device &>(device).m_romclk_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_m0_callback(device_t &device, Object &&cb) { return downcast<tms5110_device &>(device).m_m0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_m1_callback(device_t &device, Object &&cb) { return downcast<tms5110_device &>(device).m_m1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_addr_callback(device_t &device, Object &&cb) { return downcast<tms5110_device &>(device).m_addr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data_callback(device_t &device, Object &&cb) { return downcast<tms5110_device &>(device).m_data_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_romclk_callback(device_t &device, Object &&cb) { return downcast<tms5110_device &>(device).m_romclk_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( ctl_w );
DECLARE_READ8_MEMBER( ctl_r );
DECLARE_WRITE_LINE_MEMBER( pdc_w );
- /* this is only used by cvs.c
- * it is not related at all to the speech generation
- * and conflicts with the new rom controller interface.
- */
+ // this is only used by cvs.c
+ // it is not related at all to the speech generation and conflicts with the new ROM controller interface.
DECLARE_READ8_MEMBER( romclk_hack_r );
void set_frequency(int frequency);
+
protected:
+ tms5110_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -80,11 +79,10 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
- void set_variant(int variant);
+ uint8_t TALK_STATUS() const { return m_SPEN | m_TALKD; }
uint8_t m_SPEN; /* set on speak command, cleared on stop command or reset command */
uint8_t m_TALK; /* set on SPEN & RESETL4(pc12->pc0 transition), cleared on stop command or reset command */
-#define TALK_STATUS (m_SPEN|m_TALKD)
uint8_t m_TALKD; /* TALK(TCON) value, latched every RESETL4 */
sound_stream *m_stream;
@@ -100,12 +98,19 @@ private:
void PDC_set(int data);
void parse_frame();
+ uint8_t &OLD_FRAME_SILENCE_FLAG() { return m_OLDE; } // 1 if E=0, 0 otherwise.
+ uint8_t &OLD_FRAME_UNVOICED_FLAG() { return m_OLDP; } // 1 if P=0 (unvoiced), 0 if voiced
+
+ bool NEW_FRAME_STOP_FLAG() const { return m_new_frame_energy_idx == 0x0F; } // 1 if this is a stop (Energy = 0x0F) frame
+ bool NEW_FRAME_SILENCE_FLAG() const { return m_new_frame_energy_idx == 0; } // ditto as above
+ bool NEW_FRAME_UNVOICED_FLAG() const { return m_new_frame_pitch_idx == 0; } // ditto as above
+
// internal state
/* table */
optional_region_ptr<uint8_t> m_table;
/* coefficient tables */
- int m_variant; /* Variant of the 5110 - see tms5110.h */
+ const int m_variant; /* Variant of the 5110 - see tms5110.h */
/* coefficient tables */
const struct tms5100_coeffs *m_coeff;
@@ -134,21 +139,16 @@ private:
devcb_write_line m_romclk_cb; // rom clock - Only used to drive the data lines
/* these contain data describing the current and previous voice frames */
-#define OLD_FRAME_SILENCE_FLAG m_OLDE // 1 if E=0, 0 otherwise.
-#define OLD_FRAME_UNVOICED_FLAG m_OLDP // 1 if P=0 (unvoiced), 0 if voiced
uint8_t m_OLDE;
uint8_t m_OLDP;
-#define NEW_FRAME_STOP_FLAG (m_new_frame_energy_idx == 0xF) // 1 if this is a stop (Energy = 0xF) frame
-#define NEW_FRAME_SILENCE_FLAG (m_new_frame_energy_idx == 0) // ditto as above
-#define NEW_FRAME_UNVOICED_FLAG (m_new_frame_pitch_idx == 0) // ditto as above
uint8_t m_new_frame_energy_idx;
uint8_t m_new_frame_pitch_idx;
uint8_t m_new_frame_k_idx[10];
/* these are all used to contain the current state of the sound generation */
-#ifndef PERFECT_INTERPOLATION_HACK
+#ifndef TMS5110_PERFECT_INTERPOLATION_HACK
int16_t m_current_energy;
int16_t m_current_pitch;
int16_t m_current_k[10];
@@ -200,84 +200,55 @@ private:
emu_timer *m_romclk_hack_timer;
};
-extern const device_type TMS5110;
class tms5100_device : public tms5110_device
{
public:
tms5100_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type TMS5100;
class tmc0281_device : public tms5110_device
{
public:
tmc0281_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type TMC0281;
class tms5100a_device : public tms5110_device
{
public:
tms5100a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type TMS5100A;
class tmc0281d_device : public tms5110_device
{
public:
tmc0281d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type TMC0281D;
class cd2801_device : public tms5110_device
{
public:
cd2801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type CD2801;
class cd2802_device : public tms5110_device
{
public:
cd2802_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type CD2802;
class tms5110a_device : public tms5110_device
{
public:
tms5110a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type TMS5110A;
class m58817_device : public tms5110_device
{
@@ -285,13 +256,18 @@ public:
m58817_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER( status_r );
-
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type M58817;
+
+DECLARE_DEVICE_TYPE(TMS5110, tms5110_device)
+DECLARE_DEVICE_TYPE(TMS5100, tms5100_device)
+DECLARE_DEVICE_TYPE(TMC0281, tmc0281_device)
+DECLARE_DEVICE_TYPE(TMS5100A, tms5100a_device)
+DECLARE_DEVICE_TYPE(TMC0281D, tmc0281d_device)
+DECLARE_DEVICE_TYPE(CD2801, cd2801_device)
+DECLARE_DEVICE_TYPE(CD2802, cd2802_device)
+DECLARE_DEVICE_TYPE(TMS5110A, tms5110a_device)
+DECLARE_DEVICE_TYPE(M58817, m58817_device)
@@ -360,7 +336,7 @@ private:
emu_timer *m_romclk_timer;
};
-extern const device_type TMSPROM;
+DECLARE_DEVICE_TYPE(TMSPROM, tmsprom_device)
#define MCFG_TMSPROM_REGION(_region) \
tmsprom_device::set_region(*device, "^" _region);
@@ -395,4 +371,4 @@ extern const device_type TMSPROM;
#define MCFG_TMSPROM_CTL_CB(_devcb) \
devcb = &tmsprom_device::set_ctl_callback(*device, DEVCB_##_devcb);
-#endif /* __TMS5110_H__ */
+#endif // MAME_SOUND_TMS5110_H
diff --git a/src/devices/sound/tms5220.cpp b/src/devices/sound/tms5220.cpp
index 7a6e54b5335..e538b630f95 100644
--- a/src/devices/sound/tms5220.cpp
+++ b/src/devices/sound/tms5220.cpp
@@ -438,47 +438,8 @@ static const uint8_t reload_table[4] = { 0, 2, 4, 6 }; //sample count reload for
#include "tms5110r.hxx"
-void tms5220_device::set_variant(int variant)
-{
- switch (variant)
- {
- case TMS5220_IS_TMC0281:
- m_coeff = &T0280B_0281A_coeff;
- break;
- case TMS5220_IS_TMC0281D:
- m_coeff = &T0280D_0281D_coeff;
- break;
- case TMS5220_IS_CD2801:
- m_coeff = &T0280F_2801A_coeff;
- break;
- case TMS5220_IS_M58817:
- m_coeff = &M58817_coeff;
- break;
- case TMS5220_IS_CD2802:
- m_coeff = &T0280F_2802_coeff;
- break;
- case TMS5220_IS_TMS5110A:
- m_coeff = &tms5110a_coeff;
- break;
- case TMS5220_IS_5200:
- case TMS5220_IS_CD2501ECD:
- m_coeff = &T0285_2501E_coeff;
- break;
- case TMS5220_IS_5220C:
- case TMS5220_IS_5220:
- m_coeff = &tms5220_coeff;
- break;
- default:
- fatalerror("Unknown variant in tms5220_set_variant\n");
- }
- m_variant = variant;
-}
-
-
void tms5220_device::register_for_save_states()
{
- save_item(NAME(m_variant));
-
save_item(NAME(m_fifo));
save_item(NAME(m_fifo_head));
save_item(NAME(m_fifo_tail));
@@ -501,7 +462,7 @@ void tms5220_device::register_for_save_states()
save_item(NAME(m_new_frame_energy_idx));
save_item(NAME(m_new_frame_pitch_idx));
save_item(NAME(m_new_frame_k_idx));
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5220_PERFECT_INTERPOLATION_HACK
save_item(NAME(m_old_frame_energy_idx));
save_item(NAME(m_old_frame_pitch_idx));
save_item(NAME(m_old_frame_k_idx));
@@ -681,7 +642,7 @@ void tms5220_device::data_write(int data)
m_uv_zpar = 1; // zero k4-k10 as well
m_OLDE = 1; // 'silence/zpar' frames are zero energy
m_OLDP = 1; // 'silence/zpar' frames are zero pitch
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5220_PERFECT_INTERPOLATION_HACK
m_old_zpar = 1; // zero all the old parameters
m_old_uv_zpar = 1; // zero old k4-k10 as well
#endif
@@ -774,7 +735,7 @@ void tms5220_device::update_fifo_status_and_ints()
// generate an interrupt if /TS was active, and is now inactive.
// also, in this case, regardless if DDIS was set, unset it.
- if (m_previous_TALK_STATUS == 1 && (TALK_STATUS == 0))
+ if ((m_previous_TALK_STATUS == 1) && (TALK_STATUS() == 0))
{
#ifdef VERBOSE
logerror("Talk status WAS 1, is now 0, unsetting DDIS and firing an interrupt!\n");
@@ -782,7 +743,7 @@ void tms5220_device::update_fifo_status_and_ints()
set_interrupt_state(1);
m_DDIS = 0;
}
- m_previous_TALK_STATUS = TALK_STATUS;
+ m_previous_TALK_STATUS = TALK_STATUS();
}
@@ -866,9 +827,9 @@ int tms5220_device::status_read()
/* clear the interrupt pin on status read */
set_interrupt_state(0);
#ifdef DEBUG_PIN_READS
- logerror("Status read: TS=%d BL=%d BE=%d\n", TALK_STATUS, m_buffer_low, m_buffer_empty);
+ logerror("Status read: TS=%d BL=%d BE=%d\n", TALK_STATUS(), m_buffer_low, m_buffer_empty);
#endif
- return (TALK_STATUS << 7) | (m_buffer_low << 6) | (m_buffer_empty << 5);
+ return (TALK_STATUS() << 7) | (m_buffer_low << 6) | (m_buffer_empty << 5);
}
}
@@ -980,7 +941,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size)
/* appropriately override the interp count if needed; this will be incremented after the frame parse! */
m_IP = reload_table[m_c_variant_rate&0x3];
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5220_PERFECT_INTERPOLATION_HACK
/* remember previous frame energy, pitch, and coefficients */
m_old_frame_energy_idx = m_new_frame_energy_idx;
m_old_frame_pitch_idx = m_new_frame_pitch_idx;
@@ -992,7 +953,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size)
parse_frame();
/* if the new frame is a stop frame, unset both TALK and SPEN (via TCON). TALKD remains active while the energy is ramping to 0. */
- if (NEW_FRAME_STOP_FLAG == 1)
+ if (NEW_FRAME_STOP_FLAG())
{
m_TALK = m_SPEN = 0;
update_fifo_status_and_ints(); // probably not necessary...
@@ -1005,18 +966,18 @@ void tms5220_device::process(int16_t *buffer, unsigned int size)
* Old frame was unvoiced, new is voiced
* Old frame was unvoiced, new frame is silence/zero energy (non-existent on tms51xx rev D and F (present and working on tms52xx, present but buggy on tms51xx rev A and B))
*/
- if ( ((OLD_FRAME_UNVOICED_FLAG == 0) && NEW_FRAME_UNVOICED_FLAG)
- || ((OLD_FRAME_UNVOICED_FLAG == 1) && !NEW_FRAME_UNVOICED_FLAG)
- || ((OLD_FRAME_SILENCE_FLAG == 1) && !NEW_FRAME_SILENCE_FLAG)
- //|| ((m_inhibit == 1) && (OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 1)) ) //TMS51xx INTERP BUG1
- || ((OLD_FRAME_UNVOICED_FLAG == 1) && NEW_FRAME_SILENCE_FLAG) )
+ if ( ((OLD_FRAME_UNVOICED_FLAG() == 0) && NEW_FRAME_UNVOICED_FLAG())
+ || ((OLD_FRAME_UNVOICED_FLAG() == 1) && !NEW_FRAME_UNVOICED_FLAG())
+ || ((OLD_FRAME_SILENCE_FLAG() == 1) && !NEW_FRAME_SILENCE_FLAG())
+ //|| ((m_inhibit == 1) && (OLD_FRAME_UNVOICED_FLAG() == 1) && NEW_FRAME_SILENCE_FLAG()) ) //TMS51xx INTERP BUG1
+ || ((OLD_FRAME_UNVOICED_FLAG() == 1) && NEW_FRAME_SILENCE_FLAG()) )
m_inhibit = 1;
else // normal frame, normal interpolation
m_inhibit = 0;
#ifdef DEBUG_GENERATION
/* Debug info for current parsed frame */
- logerror( "OLDE: %d; NEWE: %d; OLDP: %d; NEWP: %d ", OLD_FRAME_SILENCE_FLAG, NEW_FRAME_SILENCE_FLAG, OLD_FRAME_UNVOICED_FLAG, NEW_FRAME_UNVOICED_FLAG);
+ logerror( "OLDE: %d; NEWE: %d; OLDP: %d; NEWP: %d ", OLD_FRAME_SILENCE_FLAG(), NEW_FRAME_SILENCE_FLAG(), OLD_FRAME_UNVOICED_FLAG(), NEW_FRAME_UNVOICED_FLAG());
logerror("Processing new frame: ");
if (m_inhibit == 0)
logerror( "Normal Frame\n");
@@ -1043,7 +1004,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size)
else // Not a new frame, just interpolate the existing frame.
{
int inhibit_state = ((m_inhibit==1)&&(m_IP != 0)); // disable inhibit when reaching the last interp period, but don't overwrite the m_inhibit value
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5220_PERFECT_INTERPOLATION_HACK
int samples_per_frame = m_subc_reload?175:266; // either (13 A cycles + 12 B cycles) * 7 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 7 interps for SPKSLOW
//int samples_per_frame = m_subc_reload?200:304; // either (13 A cycles + 12 B cycles) * 8 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 8 interps for SPKSLOW
int current_sample = (m_subcycle - m_subc_reload)+(m_PC*(3-m_subc_reload))+((m_subc_reload?25:38)*((m_IP-1)&7));
@@ -1095,7 +1056,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size)
}
// calculate the output
- if (OLD_FRAME_UNVOICED_FLAG == 1)
+ if (OLD_FRAME_UNVOICED_FLAG() == 1)
{
// generate unvoiced samples here
if (m_RNG & 1)
@@ -1103,7 +1064,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size)
else
m_excitation_data = 0x40;
}
- else /* (OLD_FRAME_UNVOICED_FLAG == 0) */
+ else /* (OLD_FRAME_UNVOICED_FLAG() == 0) */
{
// generate voiced samples here
/* US patent 4331836 Figure 14B shows, and logic would hold, that a pitch based chirp
@@ -1136,7 +1097,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size)
for (i=0; i<10; i++)
logerror("K%d:%04d ", i+1, m_current_k[i]);
logerror("Out:%06d ", this_sample);
-//#ifdef PERFECT_INTERPOLATION_HACK
+//#ifdef TMS5220_PERFECT_INTERPOLATION_HACK
// logerror("%d%d%d%d",m_old_zpar,m_zpar,m_old_uv_zpar,m_uv_zpar);
//#else
// logerror("x%dx%d",m_zpar,m_uv_zpar);
@@ -1181,9 +1142,9 @@ void tms5220_device::process(int16_t *buffer, unsigned int size)
if (m_IP == 7) // RESETL4
{
// Latch OLDE and OLDP
- //if (OLD_FRAME_SILENCE_FLAG) m_uv_zpar = 0; // TMS51xx INTERP BUG2
- OLD_FRAME_SILENCE_FLAG = NEW_FRAME_SILENCE_FLAG; // m_OLDE
- OLD_FRAME_UNVOICED_FLAG = NEW_FRAME_UNVOICED_FLAG; // m_OLDP
+ //if (OLD_FRAME_SILENCE_FLAG()) m_uv_zpar = 0; // TMS51xx INTERP BUG2
+ OLD_FRAME_SILENCE_FLAG() = NEW_FRAME_SILENCE_FLAG() ? 1 : 0; // m_OLDE
+ OLD_FRAME_UNVOICED_FLAG() = NEW_FRAME_UNVOICED_FLAG() ? 1 : 0; // m_OLDP
/* if TALK was clear last frame, halt speech now, since TALKD (latched from TALK on new frame) just went inactive. */
#ifdef DEBUG_GENERATION
logerror("RESETL4, about to update status: IP=%d, PC=%d, subcycle=%d, m_SPEN=%d, m_TALK=%d, m_TALKD=%d\n", m_IP, m_PC, m_subcycle, m_SPEN, m_TALK, m_TALKD);
@@ -1395,7 +1356,7 @@ void tms5220_device::process_command(unsigned char cmd)
switch (cmd & 0x70)
{
case 0x10 : /* read byte */
- if (TALK_STATUS == 0) /* TALKST must be clear for RDBY */
+ if (TALK_STATUS() == 0) /* TALKST must be clear for RDBY */
{
if (m_schedule_dummy_read)
{
@@ -1417,7 +1378,7 @@ void tms5220_device::process_command(unsigned char cmd)
break;
case 0x30 : /* read and branch */
- if (TALK_STATUS == 0) /* TALKST must be clear for RB */
+ if (TALK_STATUS() == 0) /* TALKST must be clear for RB */
{
#ifdef VERBOSE
logerror("read and branch command received\n");
@@ -1429,7 +1390,7 @@ void tms5220_device::process_command(unsigned char cmd)
break;
case 0x40 : /* load address */
- if (TALK_STATUS == 0) /* TALKST must be clear for LA */
+ if (TALK_STATUS() == 0) /* TALKST must be clear for LA */
{
/* tms5220 data sheet says that if we load only one 4-bit nibble, it won't work.
This code does not care about this. */
@@ -1455,7 +1416,7 @@ void tms5220_device::process_command(unsigned char cmd)
m_uv_zpar = 1; // zero k4-k10 as well
m_OLDE = 1; // 'silence/zpar' frames are zero energy
m_OLDP = 1; // 'silence/zpar' frames are zero pitch
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5220_PERFECT_INTERPOLATION_HACK
m_old_zpar = 1; // zero all the old parameters
m_old_uv_zpar = 1; // zero old k4-k10 as well
#endif
@@ -1479,7 +1440,7 @@ void tms5220_device::process_command(unsigned char cmd)
m_uv_zpar = 1; // zero k4-k10 as well
m_OLDE = 1; // 'silence/zpar' frames are zero energy
m_OLDP = 1; // 'silence/zpar' frames are zero pitch
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5220_PERFECT_INTERPOLATION_HACK
m_old_zpar = 1; // zero all the old parameters
m_old_uv_zpar = 1; // zero old k4-k10 as well
#endif
@@ -1519,7 +1480,7 @@ void tms5220_device::process_command(unsigned char cmd)
void tms5220_device::parse_frame()
{
int i, rep_flag;
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5220_PERFECT_INTERPOLATION_HACK
m_old_uv_zpar = m_uv_zpar;
m_old_zpar = m_zpar;
#endif
@@ -1573,7 +1534,7 @@ void tms5220_device::parse_frame()
logerror(" ");
#endif
// if the new frame is unvoiced, be sure to zero out the k5-k10 parameters
- m_uv_zpar = NEW_FRAME_UNVOICED_FLAG;
+ m_uv_zpar = NEW_FRAME_UNVOICED_FLAG() ? 1 : 0;
update_fifo_status_and_ints();
if (m_DDIS && m_buffer_empty) goto ranout;
// if this is a repeat frame, just do nothing, it will reuse the old coefficients
@@ -1682,7 +1643,37 @@ void tms5220_device::device_start()
m_speechrom = nullptr;
}
- set_variant(TMS5220_IS_5220);
+ switch (m_variant)
+ {
+ case TMS5220_IS_TMC0281:
+ m_coeff = &T0280B_0281A_coeff;
+ break;
+ case TMS5220_IS_TMC0281D:
+ m_coeff = &T0280D_0281D_coeff;
+ break;
+ case TMS5220_IS_CD2801:
+ m_coeff = &T0280F_2801A_coeff;
+ break;
+ case TMS5220_IS_M58817:
+ m_coeff = &M58817_coeff;
+ break;
+ case TMS5220_IS_CD2802:
+ m_coeff = &T0280F_2802_coeff;
+ break;
+ case TMS5220_IS_TMS5110A:
+ m_coeff = &tms5110a_coeff;
+ break;
+ case TMS5220_IS_5200:
+ case TMS5220_IS_CD2501ECD:
+ m_coeff = &T0285_2501E_coeff;
+ break;
+ case TMS5220_IS_5220C:
+ case TMS5220_IS_5220:
+ m_coeff = &tms5220_coeff;
+ break;
+ default:
+ fatalerror("Unknown variant in tms5220_set_variant\n");
+ }
m_clock = clock();
/* resolve callbacks */
@@ -1708,46 +1699,6 @@ void tms5220_device::device_start()
}
//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void tms5220c_device::device_start()
-{
- tms5220_device::device_start();
- set_variant(TMS5220_IS_5220C);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void cd2501e_device::device_start()
-{
- tms5220_device::device_start();
- set_variant(TMS5220_IS_CD2501E);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void tms5200_device::device_start()
-{
- tms5220_device::device_start();
- set_variant(TMS5220_IS_5200);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void cd2501ecd_device::device_start()
-{
- tms5220_device::device_start();
- set_variant(TMS5220_IS_CD2501ECD);
-}
-
-//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
@@ -1768,7 +1719,7 @@ void tms5220_device::device_reset()
m_RDB_flag = false;
/* initialize the energy/pitch/k states */
-#ifdef PERFECT_INTERPOLATION_HACK
+#ifdef TMS5220_PERFECT_INTERPOLATION_HACK
m_old_frame_energy_idx = m_old_frame_pitch_idx = 0;
memset(m_old_frame_k_idx, 0, sizeof(m_old_frame_k_idx));
m_old_zpar = 0;
@@ -2206,64 +2157,54 @@ void tms5220_device::set_frequency(int frequency)
m_clock = frequency;
}
-const device_type TMS5220C = device_creator<tms5220c_device>;
+
+DEFINE_DEVICE_TYPE(TMS5220C, tms5220c_device, "tms5220c", "TMS5220C")
+DEFINE_DEVICE_TYPE(TMS5220, tms5220_device, "tms5220", "TMS5220")
+DEFINE_DEVICE_TYPE(CD2501E, cd2501e_device, "cd2501e", "CD2501E")
+DEFINE_DEVICE_TYPE(TMS5200, tms5200_device, "tms5200", "TMS5200")
+DEFINE_DEVICE_TYPE(CD2501ECD, cd2501ecd_device, "cd2501ecd", "CD2501ECD")
+
tms5220c_device::tms5220c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5220_device(mconfig, TMS5220C, "TMS5220C", tag, owner, clock, "tms5220c", __FILE__)
+ : tms5220_device(mconfig, TMS5220C, tag, owner, clock, TMS5220_IS_5220C)
{
}
-const device_type TMS5220 = device_creator<tms5220_device>;
-
tms5220_device::tms5220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TMS5220, "TMS5220", tag, owner, clock, "tms5220", __FILE__),
- device_sound_interface(mconfig, *this),
- m_irq_handler(*this),
- m_readyq_handler(*this),
- m_speechrom_tag(nullptr),
- m_m0_cb(*this),
- m_m1_cb(*this),
- m_addr_cb(*this),
- m_data_cb(*this),
- m_romclk_cb(*this)
+ : tms5220_device(mconfig, TMS5220, tag, owner, clock, TMS5220_IS_5220)
{
}
-tms5220_device::tms5220_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sound_interface(mconfig, *this),
- m_irq_handler(*this),
- m_readyq_handler(*this),
- m_speechrom_tag(nullptr),
- m_m0_cb(*this),
- m_m1_cb(*this),
- m_addr_cb(*this),
- m_data_cb(*this),
- m_romclk_cb(*this)
+tms5220_device::tms5220_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int variant)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_variant(variant)
+ , m_irq_handler(*this)
+ , m_readyq_handler(*this)
+ , m_speechrom_tag(nullptr)
+ , m_m0_cb(*this)
+ , m_m1_cb(*this)
+ , m_addr_cb(*this)
+ , m_data_cb(*this)
+ , m_romclk_cb(*this)
{
}
-const device_type CD2501E = device_creator<cd2501e_device>;
-
cd2501e_device::cd2501e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5220_device(mconfig, CD2501E, "CD2501E", tag, owner, clock, "cd2501e", __FILE__)
+ : tms5220_device(mconfig, CD2501E, tag, owner, clock, TMS5220_IS_CD2501E)
{
}
-const device_type TMS5200 = device_creator<tms5200_device>;
-
tms5200_device::tms5200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5220_device(mconfig, TMS5200, "TMS5200", tag, owner, clock, "tms5200", __FILE__)
+ : tms5220_device(mconfig, TMS5200, tag, owner, clock, TMS5220_IS_5200)
{
}
-const device_type CD2501ECD = device_creator<cd2501ecd_device>;
-
cd2501ecd_device::cd2501ecd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms5220_device(mconfig, CD2501ECD, "CD2501ECD", tag, owner, clock, "cd2501ecd", __FILE__)
+ : tms5220_device(mconfig, CD2501ECD, tag, owner, clock, TMS5220_IS_CD2501ECD)
{
}
diff --git a/src/devices/sound/tms5220.h b/src/devices/sound/tms5220.h
index 25ba8e07e45..96f5dc9b738 100644
--- a/src/devices/sound/tms5220.h
+++ b/src/devices/sound/tms5220.h
@@ -1,22 +1,14 @@
// license:BSD-3-Clause
// copyright-holders:Frank Palazzolo, Aaron Giles, Jonathan Gevaryahu, Raphael Nabet, Couriersud, Michael Zapf
-#pragma once
+#ifndef MAME_SOUND_TMS5220_H
+#define MAME_SOUND_TMS5220_H
-#ifndef __TMS5220_H__
-#define __TMS5220_H__
+#pragma once
#include "machine/spchrom.h"
-enum
-{
- RS=2,
- WS=1
-};
-
/* HACK: if defined, uses impossibly perfect 'straight line' interpolation */
-#undef PERFECT_INTERPOLATION_HACK
-
-#define FIFO_SIZE 16
+#undef TMS5220_PERFECT_INTERPOLATION_HACK
/* clock rate = 80 * output sample rate, */
/* usually 640000 for 8000 Hz sample rate or */
@@ -49,30 +41,33 @@ enum
#define MCFG_TMS52XX_ROMCLK_CB(_devcb) \
devcb = &tms5220_device::set_romclk_callback(*device, DEVCB_##_devcb);
-class tms5220_device : public device_t,
- public device_sound_interface
+
+class tms5220_device : public device_t, public device_sound_interface
{
public:
+ enum
+ {
+ RS=2,
+ WS=1
+ };
+
tms5220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- tms5220_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<tms5220_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_readyq_handler(device_t &device, _Object object) { return downcast<tms5220_device &>(device).m_readyq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_readyq_handler(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_readyq_handler.set_callback(std::forward<Object>(cb)); }
// old VSM support, remove me!
static void set_speechrom_tag(device_t &device, const char *_tag) { downcast<tms5220_device &>(device).m_speechrom_tag = _tag; }
// new VSM support
- template<class _Object> static devcb_base &set_m0_callback(device_t &device, _Object object) { return downcast<tms5220_device &>(device).m_m0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_m1_callback(device_t &device, _Object object) { return downcast<tms5220_device &>(device).m_m1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_addr_callback(device_t &device, _Object object) { return downcast<tms5220_device &>(device).m_addr_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_data_callback(device_t &device, _Object object) { return downcast<tms5220_device &>(device).m_data_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_romclk_callback(device_t &device, _Object object) { return downcast<tms5220_device &>(device).m_romclk_cb.set_callback(object); }
-
- /* Control lines - once written to will switch interface into
- * "true" timing behaviour.
- */
+ template <class Object> static devcb_base &set_m0_callback(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_m0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_m1_callback(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_m1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_addr_callback(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_addr_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_data_callback(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_data_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_romclk_callback(device_t &device, Object &&cb) { return downcast<tms5220_device &>(device).m_romclk_cb.set_callback(std::forward<Object>(cb)); }
- /* all lines with suffix q are active low! */
+ // Control lines - once written to will switch interface into * "true" timing behaviour.
+
+ // all lines with suffix q are active low!
WRITE_LINE_MEMBER( rsq_w );
WRITE_LINE_MEMBER( wsq_w );
@@ -97,6 +92,8 @@ public:
void set_frequency(int frequency);
protected:
+ tms5220_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -106,9 +103,9 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
- void set_variant(int variant);
-
private:
+ static constexpr unsigned FIFO_SIZE = 16;
+
// 51xx and VSM related
void new_int_write(uint8_t rc, uint8_t m0, uint8_t m1, uint8_t addr);
void new_int_write_addr(uint8_t addr);
@@ -130,10 +127,17 @@ private:
void set_interrupt_state(int state);
void update_ready_state();
+ uint8_t TALK_STATUS() const { return m_SPEN | m_TALKD; }
+ uint8_t &OLD_FRAME_SILENCE_FLAG() { return m_OLDE; } // 1 if E=0, 0 otherwise.
+ uint8_t &OLD_FRAME_UNVOICED_FLAG() { return m_OLDP; } // 1 if P=0 (unvoiced), 0 if voiced
+ bool NEW_FRAME_STOP_FLAG() const { return m_new_frame_energy_idx == 0x0F; } // 1 if this is a stop (Energy = 0xF) frame
+ bool NEW_FRAME_SILENCE_FLAG() const { return m_new_frame_energy_idx == 0; } // ditto as above
+ bool NEW_FRAME_UNVOICED_FLAG() const { return m_new_frame_pitch_idx == 0; } // ditto as above
+
// internal state
/* coefficient tables */
- int m_variant; /* Variant of the 5xxx - see tms5110r.h */
+ const int m_variant; /* Variant of the 5xxx - see tms5110r.h */
/* coefficient tables */
const struct tms5100_coeffs *m_coeff;
@@ -169,7 +173,6 @@ private:
uint8_t m_SPEN; /* set on speak(or speak external and BL falling edge) command, cleared on stop command, reset command, or buffer out */
uint8_t m_DDIS; /* If 1, DDIS is 1, i.e. Speak External command in progress, writes go to FIFO. */
uint8_t m_TALK; /* set on SPEN & RESETL4(pc12->pc0 transition), cleared on stop command or reset command */
-#define TALK_STATUS (m_SPEN|m_TALKD)
uint8_t m_TALKD; /* TALK(TCON) value, latched every RESETL4 */
uint8_t m_buffer_low; /* If 1, FIFO has less than 8 bytes in it */
uint8_t m_buffer_empty; /* If 1, FIFO is empty */
@@ -177,21 +180,16 @@ private:
uint8_t m_ready_pin; /* state of the READY pin (output) */
/* these contain data describing the current and previous voice frames */
-#define OLD_FRAME_SILENCE_FLAG m_OLDE // 1 if E=0, 0 otherwise.
-#define OLD_FRAME_UNVOICED_FLAG m_OLDP // 1 if P=0 (unvoiced), 0 if voiced
uint8_t m_OLDE;
uint8_t m_OLDP;
-#define NEW_FRAME_STOP_FLAG (m_new_frame_energy_idx == 0xF) // 1 if this is a stop (Energy = 0xF) frame
-#define NEW_FRAME_SILENCE_FLAG (m_new_frame_energy_idx == 0) // ditto as above
-#define NEW_FRAME_UNVOICED_FLAG (m_new_frame_pitch_idx == 0) // ditto as above
uint8_t m_new_frame_energy_idx;
uint8_t m_new_frame_pitch_idx;
uint8_t m_new_frame_k_idx[10];
/* these are all used to contain the current state of the sound generation */
-#ifndef PERFECT_INTERPOLATION_HACK
+#ifndef TMS5220_PERFECT_INTERPOLATION_HACK
int16_t m_current_energy;
int16_t m_current_pitch;
int16_t m_current_k[10];
@@ -270,50 +268,39 @@ private:
devcb_write_line m_romclk_cb; // rom clock - Only used to drive the data lines
};
-extern const device_type TMS5220;
class tms5220c_device : public tms5220_device
{
public:
tms5220c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type TMS5220C;
class cd2501e_device : public tms5220_device
{
public:
cd2501e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type CD2501E;
class tms5200_device : public tms5220_device
{
public:
tms5200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type TMS5200;
class cd2501ecd_device : public tms5220_device
{
public:
cd2501ecd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
};
-extern const device_type CD2501ECD;
-#endif
+DECLARE_DEVICE_TYPE(TMS5220, tms5220_device)
+DECLARE_DEVICE_TYPE(TMS5220C, tms5220c_device)
+DECLARE_DEVICE_TYPE(CD2501E, cd2501e_device)
+DECLARE_DEVICE_TYPE(TMS5200, tms5200_device)
+DECLARE_DEVICE_TYPE(CD2501ECD, cd2501ecd_device)
+
+#endif // MAME_SOUND_TMS5220_H
diff --git a/src/devices/sound/upd1771.cpp b/src/devices/sound/upd1771.cpp
index 067f681f581..c156c084681 100644
--- a/src/devices/sound/upd1771.cpp
+++ b/src/devices/sound/upd1771.cpp
@@ -172,8 +172,11 @@
#include "emu.h"
#include "upd1771.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-#define LOG 0
+
+namespace {
/*
Each of the 8 waveforms have been extracted from the uPD1771c-017 internal
@@ -202,7 +205,7 @@ const signed char WAVEFORMS[8][32]={
#define NOISE_SIZE 255
-static unsigned char noise_tbl[]=
+const unsigned char noise_tbl[]=
{
0x1c,0x86,0x8a,0x8f,0x98,0xa1,0xad,0xbe,0xd9,0x8a,0x66,0x4d,0x40,0x33,0x2b,0x23,
0x1e,0x8a,0x90,0x97,0xa4,0xae,0xb8,0xd6,0xec,0xe9,0x69,0x4a,0x3e,0x34,0x2d,0x27,
@@ -223,20 +226,21 @@ static unsigned char noise_tbl[]=
};
-
#define STATE_SILENCE 0
#define STATE_NOISE 1
#define STATE_TONE 2
#define STATE_ADPCM 3
+} // anonymous namespace
+
-const device_type UPD1771C = device_creator<upd1771c_device>;
+DEFINE_DEVICE_TYPE(UPD1771C, upd1771c_device, "upd1771c", "NEC uPD1771C 017")
upd1771c_device::upd1771c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, UPD1771C, "NEC uPD1771C 017", tag, owner, clock, "upd1771c", __FILE__),
- device_sound_interface(mconfig, *this),
- m_ack_handler(*this)
+ : device_t(mconfig, UPD1771C, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_ack_handler(*this)
{
}
@@ -363,8 +367,7 @@ Byte9: 0b???VVVVV Low Freq2 volume
WRITE8_MEMBER( upd1771c_device::write )
{
- //if (LOG)
- // logerror( "upd1771_w: received byte 0x%02x\n", data );
+ LOG("upd1771_w: received byte 0x%02x\n", data);
m_ack_handler(0);
diff --git a/src/devices/sound/upd1771.h b/src/devices/sound/upd1771.h
index 77c5eed3ea9..5dfcfd9a540 100644
--- a/src/devices/sound/upd1771.h
+++ b/src/devices/sound/upd1771.h
@@ -6,12 +6,10 @@
**********************************************************************/
-#ifndef __UPD1771_H__
-#define __UPD1771_H__
+#ifndef MAME_SOUND_UPD1771_H
+#define MAME_SOUND_UPD1771_H
-#define MAX_PACKET_SIZE 0x8000
-
#define MCFG_UPD1771_ACK_HANDLER(_devcb) \
devcb = &upd1771c_device::set_ack_handler(*device, DEVCB_##_devcb);
@@ -25,9 +23,8 @@ class upd1771c_device : public device_t,
{
public:
upd1771c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~upd1771c_device() {}
- template<class _Object> static devcb_base &set_ack_handler(device_t &device, _Object object) { return downcast<upd1771c_device &>(device).m_ack_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ack_handler(device_t &device, Object &&cb) { return downcast<upd1771c_device &>(device).m_ack_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -42,13 +39,15 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ static constexpr unsigned MAX_PACKET_SIZE = 0x8000;
+
+ TIMER_CALLBACK_MEMBER(ack_callback);
+
// internal state
sound_stream *m_channel;
devcb_write_line m_ack_handler;
emu_timer *m_timer;
- TIMER_CALLBACK_MEMBER(ack_callback);
-
uint8_t m_packet[MAX_PACKET_SIZE];
uint32_t m_index;
uint8_t m_expected_bytes;
@@ -78,7 +77,6 @@ private:
uint32_t m_n_ppos[3]; //period pos
};
-extern const device_type UPD1771C;
-
+DECLARE_DEVICE_TYPE(UPD1771C, upd1771c_device)
-#endif /* __UPD1771_H__ */
+#endif // MAME_SOUND_UPD1771_H
diff --git a/src/devices/sound/upd7752.cpp b/src/devices/sound/upd7752.cpp
index 33554e5a1b8..1e368a0db1a 100644
--- a/src/devices/sound/upd7752.cpp
+++ b/src/devices/sound/upd7752.cpp
@@ -13,12 +13,20 @@ skeleton device
+/* status flags */
+#define BSY 1<<7
+#define REQ 1<<6
+#define EXT 1<<5
+#define ERR 1<<4
+
+
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
// device type definition
-const device_type UPD7752 = device_creator<upd7752_device>;
+DEFINE_DEVICE_TYPE(UPD7752, upd7752_device, "upd7752", "NEC uPD7752")
+
/* TODO: unknown exact size */
static ADDRESS_MAP_START( upd7752_ram, AS_0, 8, upd7752_device )
@@ -35,7 +43,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
upd7752_device::upd7752_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, UPD7752, "uPD7752", tag, owner, clock, "upd7752", __FILE__),
+ : device_t(mconfig, UPD7752, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_memory_interface(mconfig, *this), m_stream(nullptr),
m_space_config("ram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(upd7752_ram)), m_status(0), m_ram_addr(0), m_mode(0)
diff --git a/src/devices/sound/upd7752.h b/src/devices/sound/upd7752.h
index 13085eab5bb..af3988bd46c 100644
--- a/src/devices/sound/upd7752.h
+++ b/src/devices/sound/upd7752.h
@@ -1,22 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Angelo Salese
-/***************************************************************************
-
-Template for skeleton device
-
-***************************************************************************/
+#ifndef MAME_SOUND_UPD7752_H
+#define MAME_SOUND_UPD7752_H
#pragma once
-#ifndef __UPD7752DEV_H__
-#define __UPD7752DEV_H__
-
-/* status flags */
-#define BSY 1<<7
-#define REQ 1<<6
-#define EXT 1<<5
-#define ERR 1<<4
-
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -31,9 +19,7 @@ Template for skeleton device
// ======================> upd7752_device
-class upd7752_device : public device_t,
- public device_sound_interface,
- public device_memory_interface
+class upd7752_device : public device_t, public device_sound_interface, public device_memory_interface
{
public:
// construction/destruction
@@ -42,7 +28,6 @@ public:
// I/O operations
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( read );
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
protected:
// device-level overrides
@@ -51,13 +36,15 @@ protected:
virtual void device_reset() override;
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
private:
- sound_stream *m_stream;
- const address_space_config m_space_config;
+ sound_stream *m_stream;
+ const address_space_config m_space_config;
uint8_t m_status;
uint16_t m_ram_addr;
uint8_t m_mode;
+
void status_change(uint8_t flag,bool type);
inline uint8_t readbyte(offs_t address);
inline void writebyte(offs_t address, uint8_t data);
@@ -65,14 +52,6 @@ private:
// device type definition
-extern const device_type UPD7752;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(UPD7752, upd7752_device)
-#endif
+#endif // MAME_SOUND_UPD7752_H
diff --git a/src/devices/sound/upd7759.cpp b/src/devices/sound/upd7759.cpp
index e1b8dd88ad6..684164c03e8 100644
--- a/src/devices/sound/upd7759.cpp
+++ b/src/devices/sound/upd7759.cpp
@@ -144,8 +144,8 @@
#define FRAC_MASK (FRAC_ONE - 1)
-upd775x_device::upd775x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+upd775x_device::upd775x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_sound_interface(mconfig, *this)
, m_channel(nullptr)
, m_sample_offset_shift(0)
@@ -176,29 +176,28 @@ upd775x_device::upd775x_device(const machine_config &mconfig, device_type type,
, m_romoffset(0)
, m_rommask(0)
, m_drqcallback(*this)
- {
- }
+{
+}
-const device_type UPD7759 = device_creator<upd7759_device>;
+DEFINE_DEVICE_TYPE(UPD7759, upd7759_device, "upd7759", "NEC uPD7759")
upd7759_device::upd7759_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upd775x_device(mconfig, UPD7759, "uPD7759", tag, owner, clock, "upd7759", __FILE__)
- , m_timer(nullptr)
+ : upd7759_device(mconfig, UPD7759, tag, owner, clock)
{
}
-upd7759_device::upd7759_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : upd775x_device(mconfig, type, name, tag, owner, clock, shortname, source)
+upd7759_device::upd7759_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : upd775x_device(mconfig, type, tag, owner, clock)
, m_timer(nullptr)
{
}
-const device_type UPD7756 = device_creator<upd7756_device>;
+DEFINE_DEVICE_TYPE(UPD7756, upd7756_device, "upd7756", "NEC uPD7756")
upd7756_device::upd7756_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : upd775x_device(mconfig, UPD7756, "uPD7756", tag, owner, clock, "upd7756", __FILE__)
+ : upd775x_device(mconfig, UPD7756, tag, owner, clock)
{
}
diff --git a/src/devices/sound/upd7759.h b/src/devices/sound/upd7759.h
index f075c41c1dc..62f8502ba05 100644
--- a/src/devices/sound/upd7759.h
+++ b/src/devices/sound/upd7759.h
@@ -1,27 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller, Mike Balfour, Howie Cohen, Olivier Galibert, Aaron Giles
-#pragma once
-
-#ifndef __UPD7759_H__
-#define __UPD7759_H__
+#ifndef MAME_SOUND_UPD7759_H
+#define MAME_SOUND_UPD7759_H
-/* chip states */
-enum
-{
- STATE_IDLE,
- STATE_DROP_DRQ,
- STATE_START,
- STATE_FIRST_REQ,
- STATE_LAST_SAMPLE,
- STATE_DUMMY1,
- STATE_ADDR_MSB,
- STATE_ADDR_LSB,
- STATE_DUMMY2,
- STATE_BLOCK_HEADER,
- STATE_NIBBLE_COUNT,
- STATE_NIBBLE_MSN,
- STATE_NIBBLE_LSN
-};
+#pragma once
/* NEC uPD7759/55/56/P56/57/58 ADPCM Speech Processor */
@@ -33,14 +15,10 @@ enum
#define UPD7759_STANDARD_CLOCK XTAL_640kHz
-class upd775x_device : public device_t,
- public device_sound_interface
+class upd775x_device : public device_t, public device_sound_interface
{
public:
- upd775x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- ~upd775x_device() {}
-
- template<class _Object> static devcb_base &set_drq_callback(device_t &device, _Object object) { return downcast<upd775x_device &>(device).m_drqcallback.set_callback(object); }
+ template <class Object> static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast<upd775x_device &>(device).m_drqcallback.set_callback(std::forward<Object>(cb)); }
void set_bank_base(offs_t base);
@@ -50,6 +28,26 @@ public:
void postload();
protected:
+ // chip states
+ enum
+ {
+ STATE_IDLE,
+ STATE_DROP_DRQ,
+ STATE_START,
+ STATE_FIRST_REQ,
+ STATE_LAST_SAMPLE,
+ STATE_DUMMY1,
+ STATE_ADDR_MSB,
+ STATE_ADDR_LSB,
+ STATE_DUMMY2,
+ STATE_BLOCK_HEADER,
+ STATE_NIBBLE_COUNT,
+ STATE_NIBBLE_MSN,
+ STATE_NIBBLE_LSN
+ };
+
+ upd775x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -57,6 +55,9 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ void update_adpcm(int data);
+ virtual void advance_state();
+
// internal state
sound_stream *m_channel; /* stream channel for playback */
@@ -101,30 +102,29 @@ protected:
uint32_t m_rommask; /* maximum address offset */
devcb_write_line m_drqcallback;
-
- void update_adpcm(int data);
- virtual void advance_state();
};
class upd7759_device : public upd775x_device
{
public:
upd7759_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- upd7759_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ DECLARE_WRITE_LINE_MEMBER( start_w );
+
+protected:
enum
{
TIMER_SLAVE_UPDATE
};
+ upd7759_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
- emu_timer *m_timer; /* timer */
-
- DECLARE_WRITE_LINE_MEMBER( start_w );
+ emu_timer *m_timer;
};
class upd7756_device : public upd775x_device
@@ -132,15 +132,16 @@ class upd7756_device : public upd775x_device
public:
upd7756_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ DECLARE_WRITE_LINE_MEMBER( start_w );
+
+protected:
virtual void device_start() override;
virtual void device_reset() override;
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-
- DECLARE_WRITE_LINE_MEMBER( start_w );
};
-extern const device_type UPD7759;
-extern const device_type UPD7756;
+DECLARE_DEVICE_TYPE(UPD7759, upd7759_device)
+DECLARE_DEVICE_TYPE(UPD7756, upd7756_device)
#define MCFG_UPD7759_DRQ_CALLBACK(_write) \
devcb = &upd7759_device::set_drq_callback(*device, DEVCB_##_write);
@@ -148,4 +149,4 @@ extern const device_type UPD7756;
#define MCFG_UPD7756_DRQ_CALLBACK(_write) \
devcb = &upd7756_device::set_drq_callback(*device, DEVCB_##_write);
-#endif /* __UPD7759_H__ */
+#endif // MAME_SOUND_UPD7759_H
diff --git a/src/devices/sound/vlm5030.cpp b/src/devices/sound/vlm5030.cpp
index 2a097aada94..b77a5bfc193 100644
--- a/src/devices/sound/vlm5030.cpp
+++ b/src/devices/sound/vlm5030.cpp
@@ -157,10 +157,10 @@ static const int vlm5030_speed_table[8] =
IP_SIZE_SLOW
};
-const device_type VLM5030 = device_creator<vlm5030_device>;
+DEFINE_DEVICE_TYPE(VLM5030, vlm5030_device, "vlm5030", "Sanyo VLM5030")
vlm5030_device::vlm5030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VLM5030, "VLM5030", tag, owner, clock, "vlm5030", __FILE__),
+ : device_t(mconfig, VLM5030, tag, owner, clock),
device_sound_interface(mconfig, *this),
device_rom_interface(mconfig, *this, 16),
m_channel(nullptr),
diff --git a/src/devices/sound/vlm5030.h b/src/devices/sound/vlm5030.h
index 88bbcc19f98..48e0d712b2f 100644
--- a/src/devices/sound/vlm5030.h
+++ b/src/devices/sound/vlm5030.h
@@ -1,16 +1,14 @@
// license:BSD-3-Clause
// copyright-holders:Tatsuyuki Satoh
-#pragma once
+#ifndef MAME_SOUND_VLM5030_H
+#define MAME_SOUND_VLM5030_H
-#ifndef __VLM5030_H__
-#define __VLM5030_H__
+#pragma once
- class vlm5030_device : public device_t,
- public device_sound_interface, public device_rom_interface
- {
- public:
+class vlm5030_device : public device_t, public device_sound_interface, public device_rom_interface
+{
+public:
vlm5030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~vlm5030_device() {}
/* get BSY pin level */
DECLARE_READ_LINE_MEMBER( bsy );
@@ -43,7 +41,7 @@ private:
const address_space_config m_space_config;
// internal state
- sound_stream * m_channel;
+ sound_stream *m_channel;
/* coefficient tables */
const struct tms5100_coeffs *m_coeff;
@@ -95,7 +93,6 @@ private:
void restore_state();
};
-extern const device_type VLM5030;
-
+DECLARE_DEVICE_TYPE(VLM5030, vlm5030_device)
-#endif /* __VLM5030_H__ */
+#endif // MAME_SOUND_VLM5030_H
diff --git a/src/devices/sound/volt_reg.cpp b/src/devices/sound/volt_reg.cpp
index 6e179599907..aeb2bd6285a 100644
--- a/src/devices/sound/volt_reg.cpp
+++ b/src/devices/sound/volt_reg.cpp
@@ -11,11 +11,12 @@
#include "emu.h"
#include "volt_reg.h"
-const device_type VOLTAGE_REGULATOR = device_creator<voltage_regulator_device>;
+DEFINE_DEVICE_TYPE(VOLTAGE_REGULATOR, voltage_regulator_device, "volt_reg", "Voltage Regulator")
voltage_regulator_device::voltage_regulator_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, VOLTAGE_REGULATOR, "Voltage Regulator", tag, owner, clock, "volt_reg", __FILE__),
+ device_t(mconfig, VOLTAGE_REGULATOR, tag, owner, clock),
device_sound_interface(mconfig, *this),
+ m_stream(nullptr),
m_output(0)
{
}
diff --git a/src/devices/sound/volt_reg.h b/src/devices/sound/volt_reg.h
index 18adb8264c6..dd036dbad28 100644
--- a/src/devices/sound/volt_reg.h
+++ b/src/devices/sound/volt_reg.h
@@ -8,21 +8,21 @@
***************************************************************************/
-#ifndef __VOLTAGE_REGULATOR_H__
-#define __VOLTAGE_REGULATOR_H__
+#ifndef MAME_SOUND_VOLT_REG_H
+#define MAME_SOUND_VOLT_REG_H
+
+#pragma once
#define MCFG_VOLTAGE_REGULATOR_OUTPUT(_output) \
voltage_regulator_device::set_output(*device, _output);
-class voltage_regulator_device : public device_t,
- public device_sound_interface
+class voltage_regulator_device : public device_t, public device_sound_interface
{
public:
static void set_output(device_t &device, double analogue_dc) { downcast<voltage_regulator_device &>(device).m_output = (analogue_dc * 32768) / 5.0f; }
voltage_regulator_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~voltage_regulator_device() { }
virtual bool issound() override { return false; }
@@ -38,6 +38,6 @@ private:
stream_sample_t m_output;
};
-extern const device_type VOLTAGE_REGULATOR;
+DECLARE_DEVICE_TYPE(VOLTAGE_REGULATOR, voltage_regulator_device)
-#endif
+#endif // MAME_SOUND_VOLT_REG_H
diff --git a/src/devices/sound/votrax.cpp b/src/devices/sound/votrax.cpp
index 1068554aab3..d2741b0a7dc 100644
--- a/src/devices/sound/votrax.cpp
+++ b/src/devices/sound/votrax.cpp
@@ -26,7 +26,7 @@ tp1 = phi clock (tied to f2q rom access)
#include "votrax.h"
-const device_type VOTRAX_SC01 = device_creator<votrax_sc01_device>;
+DEFINE_DEVICE_TYPE(VOTRAX_SC01, votrax_sc01_device, "votrax", "Votrax SC-01")
// ROM definition for the Votrax phone ROM
ROM_START( votrax_sc01 )
@@ -76,7 +76,7 @@ const double votrax_sc01_device::s_glottal_wave[9] =
votrax_sc01_device::votrax_sc01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VOTRAX_SC01, "Votrax SC-01", tag, owner, clock, "votrax", __FILE__),
+ : device_t(mconfig, VOTRAX_SC01, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_rom(*this, "internal"),
diff --git a/src/devices/sound/votrax.h b/src/devices/sound/votrax.h
index dd39efc9eb4..0ec75317227 100644
--- a/src/devices/sound/votrax.h
+++ b/src/devices/sound/votrax.h
@@ -7,11 +7,11 @@
Votrax SC01A simulation
***************************************************************************/
+#ifndef MAME_SOUND_VOTRAX_H
+#define MAME_SOUND_VOTRAX_H
#pragma once
-#ifndef VOTRAX_H
-#define VOTRAX_H
#define MCFG_VOTRAX_SC01_REQUEST_CB(_devcb) \
devcb = &downcast<votrax_sc01_device *>(device)->set_ar_callback(DEVCB_##_devcb);
@@ -23,7 +23,7 @@ public:
// construction/destruction
votrax_sc01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> devcb_base &set_ar_callback(_Object object) { return m_ar_cb.set_callback(object); }
+ template <class Object> devcb_base &set_ar_callback(Object &&cb) { return m_ar_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(write);
DECLARE_WRITE8_MEMBER(inflection_w);
@@ -182,12 +182,11 @@ private:
};
-
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
// device type definition
-extern const device_type VOTRAX_SC01;
+DECLARE_DEVICE_TYPE(VOTRAX_SC01, votrax_sc01_device)
-#endif /* VOTRAX_H */
+#endif // MAME_SOUND_VOTRAX_H
diff --git a/src/devices/sound/vrc6.cpp b/src/devices/sound/vrc6.cpp
index a377e736301..e632cce1cdb 100644
--- a/src/devices/sound/vrc6.cpp
+++ b/src/devices/sound/vrc6.cpp
@@ -19,7 +19,7 @@
#define DISABLE_VRC6_SOUND // not ready yet
// device type definition
-const device_type VRC6 = device_creator<vrc6snd_device>;
+DEFINE_DEVICE_TYPE(VRC6, vrc6snd_device, "vrc6snd", "Konami VRC6 (Sound)")
//**************************************************************************
// LIVE DEVICE
@@ -30,8 +30,14 @@ const device_type VRC6 = device_creator<vrc6snd_device>;
//-------------------------------------------------
vrc6snd_device::vrc6snd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VRC6, "VRC6 sound", tag, owner, clock, "vrc6snd", __FILE__),
- device_sound_interface(mconfig, *this), m_freqctrl(0), m_sawrate(0), m_sawfrql(0), m_sawfrqh(0), m_sawclock(0), m_sawaccum(0), m_stream(nullptr)
+ : device_t(mconfig, VRC6, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_freqctrl(0), m_pulsectrl{ 0, 0 }, m_sawrate(0)
+ , m_pulsefrql{ 0, 0 }, m_pulsefrqh{ 0, 0 }, m_pulseduty{ 0, 0 }
+ , m_sawfrql(0), m_sawfrqh(0), m_sawclock(0), m_sawaccum(0)
+ , m_ticks{ 0, 0, 0 }
+ , m_output{ 0, 0, 0 }
+ , m_stream(nullptr)
{
}
diff --git a/src/devices/sound/vrc6.h b/src/devices/sound/vrc6.h
index 6e1afe6f8ef..61449bc0216 100644
--- a/src/devices/sound/vrc6.h
+++ b/src/devices/sound/vrc6.h
@@ -7,10 +7,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_VRC6_H
+#define MAME_SOUND_VRC6_H
-#ifndef __VRC6_H__
-#define __VRC6_H__
+#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -57,5 +57,4 @@ private:
// device type definition
extern const device_type VRC6;
-
-#endif /* __VRC6_H__ */
+#endif // MAME_SOUND_VRC6_H
diff --git a/src/devices/sound/vrender0.cpp b/src/devices/sound/vrender0.cpp
index 4968376dff5..385575ab426 100644
--- a/src/devices/sound/vrender0.cpp
+++ b/src/devices/sound/vrender0.cpp
@@ -77,14 +77,14 @@ static const unsigned short ULawTo16[]=
// LIVE DEVICE
//**************************************************************************
-const device_type VRENDER0 = device_creator<vrender0_device>;
+DEFINE_DEVICE_TYPE(VRENDER0, vrender0_device, "vrender0", "VRender0")
//-------------------------------------------------
// vrender0_device - constructor
//-------------------------------------------------
vrender0_device::vrender0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VRENDER0, "VRender0", tag, owner, clock, "vrender0", __FILE__),
+ : device_t(mconfig, VRENDER0, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_TexBase(nullptr),
m_FBBase(nullptr),
diff --git a/src/devices/sound/vrender0.h b/src/devices/sound/vrender0.h
index ebf93b71378..5ad9046aede 100644
--- a/src/devices/sound/vrender0.h
+++ b/src/devices/sound/vrender0.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:ElSemi
-#pragma once
+#ifndef MAME_SOUND_VRENDER0_H
+#define MAME_SOUND_VRENDER0_H
-#ifndef __VRENDER0_H__
-#define __VRENDER0_H__
+#pragma once
//**************************************************************************
@@ -30,7 +30,6 @@ class vrender0_device : public device_t,
{
public:
vrender0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~vrender0_device() { }
// static configuration
static void set_reg_base(device_t &device, int base) { downcast<vrender0_device &>(device).m_reg_base = base; }
@@ -57,7 +56,6 @@ private:
void VR0_RenderAudio(int nsamples, stream_sample_t *l, stream_sample_t *r);
};
-extern const device_type VRENDER0;
-
+DECLARE_DEVICE_TYPE(VRENDER0, vrender0_device)
-#endif /* __VRENDER0_H__ */
+#endif // MAME_SOUND_VRENDER0_H
diff --git a/src/devices/sound/wave.cpp b/src/devices/sound/wave.cpp
index 8515ec5237f..7383805d05e 100644
--- a/src/devices/sound/wave.cpp
+++ b/src/devices/sound/wave.cpp
@@ -31,13 +31,14 @@ void wave_device::static_set_cassette_tag(device_t &device, const char *cassette
wave.m_cassette_tag = cassette_tag;
}
-const device_type WAVE = device_creator<wave_device>;
+DEFINE_DEVICE_TYPE(WAVE, wave_device, "wave", "Wave")
wave_device::wave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, WAVE, "Wave", tag, owner, clock, "wave", __FILE__),
- device_sound_interface(mconfig, *this), m_cass(nullptr)
+ : device_t(mconfig, WAVE, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_cassette_tag(nullptr)
+ , m_cass(nullptr)
{
- m_cassette_tag = nullptr;
}
//-------------------------------------------------
diff --git a/src/devices/sound/wave.h b/src/devices/sound/wave.h
index f5881a83d58..da7797dfbca 100644
--- a/src/devices/sound/wave.h
+++ b/src/devices/sound/wave.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Nathan Woods
-#pragma once
+#ifndef MAME_SOUND_WAVE_H
+#define MAME_SOUND_WAVE_H
-#ifndef __WAVE_H__
-#define __WAVE_H__
+#pragma once
#include "imagedev/cassette.h"
@@ -12,8 +12,7 @@
* CassetteWave interface
*****************************************************************************/
-class wave_device : public device_t,
- public device_sound_interface
+class wave_device : public device_t, public device_sound_interface
{
public:
wave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -32,7 +31,7 @@ private:
cassette_image_device *m_cass;
};
-extern const device_type WAVE;
+DECLARE_DEVICE_TYPE(WAVE, wave_device)
#define WAVE_TAG "wave"
@@ -43,4 +42,4 @@ extern const device_type WAVE;
MCFG_SOUND_ADD( _tag, WAVE, 0 ) \
wave_device::static_set_cassette_tag(*device, _cass_tag);
-#endif /* __WAVE_H__ */
+#endif // MAME_SOUND_WAVE_H
diff --git a/src/devices/sound/x1_010.cpp b/src/devices/sound/x1_010.cpp
index bbaff50d15d..04f896fc82f 100644
--- a/src/devices/sound/x1_010.cpp
+++ b/src/devices/sound/x1_010.cpp
@@ -59,9 +59,12 @@ Registers:
#define VERBOSE_REGISTER_WRITE 0
#define VERBOSE_REGISTER_READ 0
-#define LOG_SOUND(x) do { if (VERBOSE_SOUND) logerror x; } while (0)
-#define LOG_REGISTER_WRITE(x) do { if (VERBOSE_REGISTER_WRITE) logerror x; } while (0)
-#define LOG_REGISTER_READ(x) do { if (VERBOSE_REGISTER_READ) logerror x; } while (0)
+#define LOG_SOUND(...) do { if (VERBOSE_SOUND) logerror(__VA_ARGS__); } while (0)
+#define LOG_REGISTER_WRITE(...) do { if (VERBOSE_REGISTER_WRITE) logerror(__VA_ARGS__); } while (0)
+#define LOG_REGISTER_READ(...) do { if (VERBOSE_REGISTER_READ) logerror(__VA_ARGS__); } while (0)
+
+
+namespace {
#define FREQ_BASE_BITS 8 // Frequency fixed decimal shift bits
#define ENV_BASE_BITS 16 // wave form envelope fixed decimal shift bits
@@ -78,15 +81,17 @@ struct X1_010_CHANNEL {
unsigned char reserve[2];
};
+} // anonymous namespace
+
/* mixer tables and internal buffers */
//static short *mixer_buffer = nullptr;
-const device_type X1_010 = device_creator<x1_010_device>;
+DEFINE_DEVICE_TYPE(X1_010, x1_010_device, "x1_010", "Seta X1-010")
x1_010_device::x1_010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, X1_010, "X1-010", tag, owner, clock, "x1_010", __FILE__),
+ : device_t(mconfig, X1_010, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_region(*this, DEVICE_SELF),
m_rate(0),
@@ -95,10 +100,10 @@ x1_010_device::x1_010_device(const machine_config &mconfig, const char *tag, dev
m_sound_enable(0),
m_base_clock(0)
{
- memset(m_reg, 0, sizeof(m_reg));
- memset(m_HI_WORD_BUF, 0, sizeof(m_HI_WORD_BUF));
- memset(m_smp_offset, 0, sizeof(SETA_NUM_CHANNELS));
- memset(m_env_offset, 0, sizeof(SETA_NUM_CHANNELS));
+ std::fill(std::begin(m_reg), std::end(m_reg), 0);
+ std::fill(std::begin(m_HI_WORD_BUF), std::end(m_HI_WORD_BUF), 0);
+ std::fill(std::begin(m_smp_offset), std::end(m_smp_offset), 0);
+ std::fill(std::begin(m_env_offset), std::end(m_env_offset), 0);
}
//-------------------------------------------------
@@ -112,12 +117,12 @@ void x1_010_device::device_start()
m_base_clock = clock();
m_rate = clock() / 512;
- for( i = 0; i < SETA_NUM_CHANNELS; i++ ) {
+ for( i = 0; i < NUM_CHANNELS; i++ ) {
m_smp_offset[i] = 0;
m_env_offset[i] = 0;
}
/* Print some more debug info */
- LOG_SOUND(("masterclock = %d rate = %d\n", clock(), m_rate ));
+ LOG_SOUND("masterclock = %d rate = %d\n", clock(), m_rate );
/* get stream channels */
m_stream = machine().sound().stream_alloc(*this, 0, 2, m_rate);
@@ -154,12 +159,12 @@ WRITE8_MEMBER( x1_010_device::write )
channel = offset/sizeof(X1_010_CHANNEL);
reg = offset%sizeof(X1_010_CHANNEL);
- if( channel < SETA_NUM_CHANNELS && reg == 0
+ if( channel < NUM_CHANNELS && reg == 0
&& (m_reg[offset]&1) == 0 && (data&1) != 0 ) {
m_smp_offset[channel] = 0;
m_env_offset[channel] = 0;
}
- LOG_REGISTER_WRITE(("%s: offset %6X : data %2X\n", machine().describe_context(), offset, data ));
+ LOG_REGISTER_WRITE("%s: offset %6X : data %2X\n", machine().describe_context(), offset, data);
m_reg[offset] = data;
}
@@ -172,7 +177,7 @@ READ16_MEMBER( x1_010_device::word_r )
ret = m_HI_WORD_BUF[offset]<<8;
ret += (read( space, offset )&0xff);
- LOG_REGISTER_READ(( "%s: Read X1-010 Offset:%04X Data:%04X\n", machine().describe_context(), offset, ret ));
+ LOG_REGISTER_READ("%s: Read X1-010 Offset:%04X Data:%04X\n", machine().describe_context(), offset, ret);
return ret;
}
@@ -180,7 +185,7 @@ WRITE16_MEMBER( x1_010_device::word_w )
{
m_HI_WORD_BUF[offset] = (data>>8)&0xff;
write( space, offset, data&0xff );
- LOG_REGISTER_WRITE(( "%s: Write X1-010 Offset:%04X Data:%04X\n", machine().describe_context(), offset, data ));
+ LOG_REGISTER_WRITE("%s: Write X1-010 Offset:%04X Data:%04X\n", machine().describe_context(), offset, data);
}
@@ -202,7 +207,7 @@ void x1_010_device::sound_stream_update(sound_stream &stream, stream_sample_t **
// if( m_sound_enable == 0 ) return;
- for( ch = 0; ch < SETA_NUM_CHANNELS; ch++ ) {
+ for( ch = 0; ch < NUM_CHANNELS; ch++ ) {
reg = (X1_010_CHANNEL *)&(m_reg[ch*sizeof(X1_010_CHANNEL)]);
if( (reg->status&1) != 0 ) { // Key On
stream_sample_t *bufL = outputs[0];
@@ -221,8 +226,8 @@ void x1_010_device::sound_stream_update(sound_stream &stream, stream_sample_t **
smp_step = (uint32_t)((float)m_base_clock/8192.0f
*freq*(1<<FREQ_BASE_BITS)/(float)m_rate);
if( smp_offs == 0 ) {
- LOG_SOUND(( "Play sample %p - %p, channel %X volume %d:%d freq %X step %X offset %X\n",
- start, end, ch, volL, volR, freq, smp_step, smp_offs ));
+ LOG_SOUND("Play sample %p - %p, channel %X volume %d:%d freq %X step %X offset %X\n",
+ start, end, ch, volL, volR, freq, smp_step, smp_offs);
}
for( i = 0; i < samples; i++ ) {
delta = smp_offs>>FREQ_BASE_BITS;
@@ -248,8 +253,8 @@ void x1_010_device::sound_stream_update(sound_stream &stream, stream_sample_t **
env_step = (uint32_t)((float)m_base_clock/128.0f/1024.0f/4.0f*reg->start*(1<<ENV_BASE_BITS)/(float)m_rate);
/* Print some more debug info */
if( smp_offs == 0 ) {
- LOG_SOUND(( "Play waveform %X, channel %X volume %X freq %4X step %X offset %X\n",
- reg->volume, ch, reg->end, freq, smp_step, smp_offs ));
+ LOG_SOUND("Play waveform %X, channel %X volume %X freq %4X step %X offset %X\n",
+ reg->volume, ch, reg->end, freq, smp_step, smp_offs);
}
for( i = 0; i < samples; i++ ) {
int vol;
diff --git a/src/devices/sound/x1_010.h b/src/devices/sound/x1_010.h
index d2eb07d3999..9ba80bc95a0 100644
--- a/src/devices/sound/x1_010.h
+++ b/src/devices/sound/x1_010.h
@@ -1,18 +1,14 @@
// license:BSD-3-Clause
// copyright-holders:Luca Elia
-#pragma once
-
-#ifndef __X1_010_H__
-#define __X1_010_H__
+#ifndef MAME_SOUND_X1_010_H
+#define MAME_SOUND_X1_010_H
-#define SETA_NUM_CHANNELS 16
+#pragma once
-class x1_010_device : public device_t,
- public device_sound_interface
+class x1_010_device : public device_t, public device_sound_interface
{
public:
x1_010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~x1_010_device() {}
// static configuration
static void set_address(device_t &device, int addr) { downcast<x1_010_device &>(device).m_adr = addr; }
@@ -31,7 +27,10 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+
private:
+ static constexpr unsigned NUM_CHANNELS = 16;
+
// internal state
/* Variables only used here */
@@ -42,17 +41,16 @@ private:
int m_sound_enable; // sound output enable/disable
uint8_t m_reg[0x2000]; // X1-010 Register & wave form area
uint8_t m_HI_WORD_BUF[0x2000]; // X1-010 16bit access ram check avoidance work
- uint32_t m_smp_offset[SETA_NUM_CHANNELS];
- uint32_t m_env_offset[SETA_NUM_CHANNELS];
+ uint32_t m_smp_offset[NUM_CHANNELS];
+ uint32_t m_env_offset[NUM_CHANNELS];
uint32_t m_base_clock;
};
-extern const device_type X1_010;
+DECLARE_DEVICE_TYPE(X1_010, x1_010_device)
#define MCFG_X1_010_ADDRESS(_addr) \
x1_010_device::set_address(*device, _addr);
-
-#endif /* __X1_010_H__ */
+#endif // MAME_SOUND_X1_010_H
diff --git a/src/devices/sound/ym2151.cpp b/src/devices/sound/ym2151.cpp
index b35787d0d1d..a86227af86b 100644
--- a/src/devices/sound/ym2151.cpp
+++ b/src/devices/sound/ym2151.cpp
@@ -4,7 +4,7 @@
#include "emu.h"
#include "ym2151.h"
-const device_type YM2151 = device_creator<ym2151_device>;
+DEFINE_DEVICE_TYPE(YM2151, ym2151_device, "ym2151", "Yamaha YM2151 OPM")
#define FREQ_SH 16 /* 16.16 fixed point (frequency calculations) */
@@ -1650,7 +1650,7 @@ void ym2151_device::advance()
//-------------------------------------------------
ym2151_device::ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YM2151, "YM2151", tag, owner, clock, "ym2151", __FILE__),
+ : device_t(mconfig, YM2151, tag, owner, clock),
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_lastreg(0),
diff --git a/src/devices/sound/ym2151.h b/src/devices/sound/ym2151.h
index 0858a01abb9..57b1efb80eb 100644
--- a/src/devices/sound/ym2151.h
+++ b/src/devices/sound/ym2151.h
@@ -30,10 +30,10 @@
** Ishmair - for the datasheet and motivation.
*/
-#pragma once
+#ifndef MAME_SOUND_YM2151_H
+#define MAME_SOUND_YM2151_H
-#ifndef __YM2151_H__
-#define __YM2151_H__
+#pragma once
//**************************************************************************
@@ -64,8 +64,8 @@ public:
ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ym2151_device &>(device).m_irqhandler.set_callback(object); }
- template<class _Object> static devcb_base &set_port_write_handler(device_t &device, _Object object) { return downcast<ym2151_device &>(device).m_portwritehandler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ym2151_device &>(device).m_irqhandler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port_write_handler(device_t &device, Object &&cb) { return downcast<ym2151_device &>(device).m_portwritehandler.set_callback(std::forward<Object>(cb)); }
// read/write
DECLARE_READ8_MEMBER( read );
@@ -273,7 +273,7 @@ private:
// device type definition
-extern const device_type YM2151;
+DECLARE_DEVICE_TYPE(YM2151, ym2151_device)
-#endif /* __2151INTF_H__ */
+#endif // MAME_SOUND_YM2151_H
diff --git a/src/devices/sound/ym2413.cpp b/src/devices/sound/ym2413.cpp
index 76fcb144df0..4d9da3d1dee 100644
--- a/src/devices/sound/ym2413.cpp
+++ b/src/devices/sound/ym2413.cpp
@@ -1675,10 +1675,10 @@ WRITE8_MEMBER( ym2413_device::data_port_w )
write_reg(address, data);
}
-const device_type YM2413 = device_creator<ym2413_device>;
+DEFINE_DEVICE_TYPE(YM2413, ym2413_device, "ym2413", "Yamaha YM2413 OPLL")
ym2413_device::ym2413_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YM2413, "YM2413", tag, owner, clock, "ym2413", __FILE__),
- device_sound_interface(mconfig, *this)
+ : device_t(mconfig, YM2413, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
{
}
diff --git a/src/devices/sound/ym2413.h b/src/devices/sound/ym2413.h
index 21494ed00f5..410ed10fcf9 100644
--- a/src/devices/sound/ym2413.h
+++ b/src/devices/sound/ym2413.h
@@ -1,13 +1,12 @@
// license:GPL-2.0+
// copyright-holders:Jarek Burczynski,Ernesto Corvi
-#pragma once
+#ifndef MAME_SOUND_YM2413_H
+#define MAME_SOUND_YM2413_H
-#ifndef __YM2413_H__
-#define __YM2413_H__
+#pragma once
-class ym2413_device : public device_t,
- public device_sound_interface
+class ym2413_device : public device_t, public device_sound_interface
{
public:
ym2413_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -17,8 +16,6 @@ public:
DECLARE_WRITE8_MEMBER( register_port_w );
DECLARE_WRITE8_MEMBER( data_port_w );
- void _ym2413_update_request();
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -185,6 +182,6 @@ private:
};
-extern const device_type YM2413;
+DECLARE_DEVICE_TYPE(YM2413, ym2413_device)
-#endif /*__YM2413_H__*/
+#endif // MAME_SOUND_YM2413_H
diff --git a/src/devices/sound/ymdeltat.cpp b/src/devices/sound/ymdeltat.cpp
index 835443b67dd..8970228f060 100644
--- a/src/devices/sound/ymdeltat.cpp
+++ b/src/devices/sound/ymdeltat.cpp
@@ -67,6 +67,8 @@
#include "emu.h"
#include "ymdeltat.h"
+#define YM_DELTAT_SHIFT (16)
+
#define YM_DELTAT_DELTA_MAX (24576)
#define YM_DELTAT_DELTA_MIN (127)
#define YM_DELTAT_DELTA_DEF (127)
@@ -78,73 +80,73 @@
/* Forecast to next Forecast (rate = *8) */
/* 1/8 , 3/8 , 5/8 , 7/8 , 9/8 , 11/8 , 13/8 , 15/8 */
-static const int32_t ym_deltat_decode_tableB1[16] = {
+static constexpr int32_t ym_deltat_decode_tableB1[16] = {
1, 3, 5, 7, 9, 11, 13, 15,
-1, -3, -5, -7, -9, -11, -13, -15,
};
/* delta to next delta (rate= *64) */
/* 0.9 , 0.9 , 0.9 , 0.9 , 1.2 , 1.6 , 2.0 , 2.4 */
-static const int32_t ym_deltat_decode_tableB2[16] = {
+static constexpr int32_t ym_deltat_decode_tableB2[16] = {
57, 57, 57, 57, 77, 102, 128, 153,
57, 57, 57, 57, 77, 102, 128, 153
};
#if 0
-void YM_DELTAT_BRDY_callback(YM_DELTAT *DELTAT)
+void YM_DELTAT::BRDY_callback()
{
logerror("BRDY_callback reached (flag set) !\n");
/* set BRDY bit in status register */
- if(DELTAT->status_set_handler)
- if(DELTAT->status_change_BRDY_bit)
- (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit);
+ if(status_set_handler)
+ if(status_change_BRDY_bit)
+ (status_set_handler)(status_change_which_chip, status_change_BRDY_bit);
}
#endif
-uint8_t YM_DELTAT_ADPCM_Read(YM_DELTAT *DELTAT)
+uint8_t YM_DELTAT::ADPCM_Read()
{
uint8_t v = 0;
/* external memory read */
- if ( (DELTAT->portstate & 0xe0)==0x20 )
+ if ( (portstate & 0xe0)==0x20 )
{
/* two dummy reads */
- if (DELTAT->memread)
+ if (memread)
{
- DELTAT->now_addr = DELTAT->start << 1;
- DELTAT->memread--;
+ now_addr = start << 1;
+ memread--;
return 0;
}
- if ( DELTAT->now_addr != (DELTAT->end<<1) )
+ if ( now_addr != (end<<1) )
{
- v = DELTAT->memory[DELTAT->now_addr>>1];
+ v = memory[now_addr>>1];
- /*logerror("YM Delta-T memory read $%08x, v=$%02x\n", DELTAT->now_addr >> 1, v);*/
+ /*logerror("YM Delta-T memory read $%08x, v=$%02x\n", now_addr >> 1, v);*/
- DELTAT->now_addr+=2; /* two nibbles at a time */
+ now_addr+=2; /* two nibbles at a time */
/* reset BRDY bit in status register, which means we are reading the memory now */
- if(DELTAT->status_reset_handler)
- if(DELTAT->status_change_BRDY_bit)
- (DELTAT->status_reset_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit);
+ if(status_reset_handler)
+ if(status_change_BRDY_bit)
+ (status_reset_handler)(status_change_which_chip, status_change_BRDY_bit);
/* setup a timer that will callback us in 10 master clock cycles for Y8950
* in the callback set the BRDY flag to 1 , which means we have another data ready.
* For now, we don't really do this; we simply reset and set the flag in zero time, so that the IRQ will work.
*/
/* set BRDY bit in status register */
- if(DELTAT->status_set_handler)
- if(DELTAT->status_change_BRDY_bit)
- (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit);
+ if(status_set_handler)
+ if(status_change_BRDY_bit)
+ (status_set_handler)(status_change_which_chip, status_change_BRDY_bit);
}
else
{
/* set EOS bit in status register */
- if(DELTAT->status_set_handler)
- if(DELTAT->status_change_EOS_bit)
- (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_EOS_bit);
+ if(status_set_handler)
+ if(status_change_EOS_bit)
+ (status_set_handler)(status_change_which_chip, status_change_EOS_bit);
}
}
@@ -153,13 +155,13 @@ uint8_t YM_DELTAT_ADPCM_Read(YM_DELTAT *DELTAT)
/* 0-DRAM x1, 1-ROM, 2-DRAM x8, 3-ROM (3 is bad setting - not allowed by the manual) */
-static const uint8_t dram_rightshift[4]={3,0,0,0};
+static constexpr uint8_t dram_rightshift[4]={3,0,0,0};
/* DELTA-T ADPCM write register */
-void YM_DELTAT_ADPCM_Write(YM_DELTAT *DELTAT,int r,int v)
+void YM_DELTAT::ADPCM_Write(int r, int v)
{
if(r>=0x10) return;
- DELTAT->reg[r] = v; /* stock data */
+ reg[r] = v; /* stock data */
switch( r )
{
@@ -198,87 +200,87 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning:
*/
/* handle emulation mode */
- if(DELTAT->emulation_mode == YM_DELTAT_EMULATION_MODE_YM2610)
+ if(emulation_mode == EMULATION_MODE_YM2610)
{
v |= 0x20; /* YM2610 always uses external memory and doesn't even have memory flag bit. */
}
- DELTAT->portstate = v & (0x80|0x40|0x20|0x10|0x01); /* start, rec, memory mode, repeat flag copy, reset(bit0) */
+ portstate = v & (0x80|0x40|0x20|0x10|0x01); /* start, rec, memory mode, repeat flag copy, reset(bit0) */
- if( DELTAT->portstate&0x80 )/* START,REC,MEMDATA,REPEAT,SPOFF,--,--,RESET */
+ if( portstate&0x80 )/* START,REC,MEMDATA,REPEAT,SPOFF,--,--,RESET */
{
/* set PCM BUSY bit */
- DELTAT->PCM_BSY = 1;
+ PCM_BSY = 1;
/* start ADPCM */
- DELTAT->now_step = 0;
- DELTAT->acc = 0;
- DELTAT->prev_acc = 0;
- DELTAT->adpcml = 0;
- DELTAT->adpcmd = YM_DELTAT_DELTA_DEF;
- DELTAT->now_data = 0;
+ now_step = 0;
+ acc = 0;
+ prev_acc = 0;
+ adpcml = 0;
+ adpcmd = YM_DELTAT_DELTA_DEF;
+ now_data = 0;
}
- if( DELTAT->portstate&0x20 ) /* do we access external memory? */
+ if( portstate&0x20 ) /* do we access external memory? */
{
- DELTAT->now_addr = DELTAT->start << 1;
- DELTAT->memread = 2; /* two dummy reads needed before accesing external memory via register $08*/
+ now_addr = start << 1;
+ memread = 2; /* two dummy reads needed before accesing external memory via register $08*/
/* if yes, then let's check if ADPCM memory is mapped and big enough */
- if(DELTAT->memory == nullptr)
+ if(memory == nullptr)
{
- DELTAT->device->logerror("YM Delta-T ADPCM rom not mapped\n");
- DELTAT->portstate = 0x00;
- DELTAT->PCM_BSY = 0;
+ device->logerror("YM Delta-T ADPCM rom not mapped\n");
+ portstate = 0x00;
+ PCM_BSY = 0;
}
else
{
- if( DELTAT->end >= DELTAT->memory_size ) /* Check End in Range */
+ if( end >= memory_size ) /* Check End in Range */
{
- DELTAT->device->logerror("YM Delta-T ADPCM end out of range: $%08x\n", DELTAT->end);
- DELTAT->end = DELTAT->memory_size - 1;
+ device->logerror("YM Delta-T ADPCM end out of range: $%08x\n", end);
+ end = memory_size - 1;
}
- if( DELTAT->start >= DELTAT->memory_size ) /* Check Start in Range */
+ if( start >= memory_size ) /* Check Start in Range */
{
- DELTAT->device->logerror("YM Delta-T ADPCM start out of range: $%08x\n", DELTAT->start);
- DELTAT->portstate = 0x00;
- DELTAT->PCM_BSY = 0;
+ device->logerror("YM Delta-T ADPCM start out of range: $%08x\n", start);
+ portstate = 0x00;
+ PCM_BSY = 0;
}
}
}
else /* we access CPU memory (ADPCM data register $08) so we only reset now_addr here */
{
- DELTAT->now_addr = 0;
+ now_addr = 0;
}
- if( DELTAT->portstate&0x01 )
+ if( portstate&0x01 )
{
- DELTAT->portstate = 0x00;
+ portstate = 0x00;
/* clear PCM BUSY bit (in status register) */
- DELTAT->PCM_BSY = 0;
+ PCM_BSY = 0;
/* set BRDY flag */
- if(DELTAT->status_set_handler)
- if(DELTAT->status_change_BRDY_bit)
- (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit);
+ if(status_set_handler)
+ if(status_change_BRDY_bit)
+ (status_set_handler)(status_change_which_chip, status_change_BRDY_bit);
}
break;
case 0x01: /* L,R,-,-,SAMPLE,DA/AD,RAMTYPE,ROM */
/* handle emulation mode */
- if(DELTAT->emulation_mode == YM_DELTAT_EMULATION_MODE_YM2610)
+ if(emulation_mode == EMULATION_MODE_YM2610)
{
v |= 0x01; /* YM2610 always uses ROM as an external memory and doesn't tave ROM/RAM memory flag bit. */
}
- DELTAT->pan = &DELTAT->output_pointer[(v>>6)&0x03];
- if ((DELTAT->control2 & 3) != (v & 3))
+ pan = &output_pointer[(v>>6)&0x03];
+ if ((control2 & 3) != (v & 3))
{
/*0-DRAM x1, 1-ROM, 2-DRAM x8, 3-ROM (3 is bad setting - not allowed by the manual) */
- if (DELTAT->DRAMportshift != dram_rightshift[v&3])
+ if (DRAMportshift != dram_rightshift[v&3])
{
- DELTAT->DRAMportshift = dram_rightshift[v&3];
+ DRAMportshift = dram_rightshift[v&3];
/* final shift value depends on chip type and memory type selected:
8 for YM2610 (ROM only),
@@ -288,24 +290,24 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning:
*/
/* refresh addresses */
- DELTAT->start = (DELTAT->reg[0x3]*0x0100 | DELTAT->reg[0x2]) << (DELTAT->portshift - DELTAT->DRAMportshift);
- DELTAT->end = (DELTAT->reg[0x5]*0x0100 | DELTAT->reg[0x4]) << (DELTAT->portshift - DELTAT->DRAMportshift);
- DELTAT->end += (1 << (DELTAT->portshift-DELTAT->DRAMportshift) ) - 1;
- DELTAT->limit = (DELTAT->reg[0xd]*0x0100 | DELTAT->reg[0xc]) << (DELTAT->portshift - DELTAT->DRAMportshift);
+ start = (reg[0x3]*0x0100 | reg[0x2]) << (portshift - DRAMportshift);
+ end = (reg[0x5]*0x0100 | reg[0x4]) << (portshift - DRAMportshift);
+ end += (1 << (portshift-DRAMportshift) ) - 1;
+ limit = (reg[0xd]*0x0100 | reg[0xc]) << (portshift - DRAMportshift);
}
}
- DELTAT->control2 = v;
+ control2 = v;
break;
case 0x02: /* Start Address L */
case 0x03: /* Start Address H */
- DELTAT->start = (DELTAT->reg[0x3]*0x0100 | DELTAT->reg[0x2]) << (DELTAT->portshift - DELTAT->DRAMportshift);
- /*logerror("DELTAT start: 02=%2x 03=%2x addr=%8x\n",DELTAT->reg[0x2], DELTAT->reg[0x3],DELTAT->start );*/
+ start = (reg[0x3]*0x0100 | reg[0x2]) << (portshift - DRAMportshift);
+ /*logerror("DELTAT start: 02=%2x 03=%2x addr=%8x\n",reg[0x2], reg[0x3],start );*/
break;
case 0x04: /* Stop Address L */
case 0x05: /* Stop Address H */
- DELTAT->end = (DELTAT->reg[0x5]*0x0100 | DELTAT->reg[0x4]) << (DELTAT->portshift - DELTAT->DRAMportshift);
- DELTAT->end += (1 << (DELTAT->portshift-DELTAT->DRAMportshift) ) - 1;
- /*logerror("DELTAT end : 04=%2x 05=%2x addr=%8x\n",DELTAT->reg[0x4], DELTAT->reg[0x5],DELTAT->end );*/
+ end = (reg[0x5]*0x0100 | reg[0x4]) << (portshift - DRAMportshift);
+ end += (1 << (portshift-DRAMportshift) ) - 1;
+ /*logerror("DELTAT end : 04=%2x 05=%2x addr=%8x\n",reg[0x4], reg[0x5],end );*/
break;
case 0x06: /* Prescale L (ADPCM and Record frq) */
case 0x07: /* Prescale H */
@@ -326,70 +328,70 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning:
*/
/* external memory write */
- if ( (DELTAT->portstate & 0xe0)==0x60 )
+ if ( (portstate & 0xe0)==0x60 )
{
- if (DELTAT->memread)
+ if (memread)
{
- DELTAT->now_addr = DELTAT->start << 1;
- DELTAT->memread = 0;
+ now_addr = start << 1;
+ memread = 0;
}
- /*logerror("YM Delta-T memory write $%08x, v=$%02x\n", DELTAT->now_addr >> 1, v);*/
+ /*logerror("YM Delta-T memory write $%08x, v=$%02x\n", now_addr >> 1, v);*/
- if ( DELTAT->now_addr != (DELTAT->end<<1) )
+ if ( now_addr != (end<<1) )
{
- DELTAT->memory[DELTAT->now_addr>>1] = v;
- DELTAT->now_addr+=2; /* two nibbles at a time */
+ memory[now_addr>>1] = v;
+ now_addr+=2; /* two nibbles at a time */
/* reset BRDY bit in status register, which means we are processing the write */
- if(DELTAT->status_reset_handler)
- if(DELTAT->status_change_BRDY_bit)
- (DELTAT->status_reset_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit);
+ if(status_reset_handler)
+ if(status_change_BRDY_bit)
+ (status_reset_handler)(status_change_which_chip, status_change_BRDY_bit);
/* setup a timer that will callback us in 10 master clock cycles for Y8950
* in the callback set the BRDY flag to 1 , which means we have written the data.
* For now, we don't really do this; we simply reset and set the flag in zero time, so that the IRQ will work.
*/
/* set BRDY bit in status register */
- if(DELTAT->status_set_handler)
- if(DELTAT->status_change_BRDY_bit)
- (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit);
+ if(status_set_handler)
+ if(status_change_BRDY_bit)
+ (status_set_handler)(status_change_which_chip, status_change_BRDY_bit);
}
else
{
/* set EOS bit in status register */
- if(DELTAT->status_set_handler)
- if(DELTAT->status_change_EOS_bit)
- (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_EOS_bit);
+ if(status_set_handler)
+ if(status_change_EOS_bit)
+ (status_set_handler)(status_change_which_chip, status_change_EOS_bit);
}
return;
}
/* ADPCM synthesis from CPU */
- if ( (DELTAT->portstate & 0xe0)==0x80 )
+ if ( (portstate & 0xe0)==0x80 )
{
- DELTAT->CPU_data = v;
+ CPU_data = v;
/* Reset BRDY bit in status register, which means we are full of data */
- if(DELTAT->status_reset_handler)
- if(DELTAT->status_change_BRDY_bit)
- (DELTAT->status_reset_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit);
+ if(status_reset_handler)
+ if(status_change_BRDY_bit)
+ (status_reset_handler)(status_change_which_chip, status_change_BRDY_bit);
return;
}
break;
case 0x09: /* DELTA-N L (ADPCM Playback Prescaler) */
case 0x0a: /* DELTA-N H */
- DELTAT->delta = (DELTAT->reg[0xa]*0x0100 | DELTAT->reg[0x9]);
- DELTAT->step = (uint32_t)( (double)(DELTAT->delta /* *(1<<(YM_DELTAT_SHIFT-16)) */ ) * (DELTAT->freqbase) );
- /*logerror("DELTAT deltan:09=%2x 0a=%2x\n",DELTAT->reg[0x9], DELTAT->reg[0xa]);*/
+ delta = (reg[0xa]*0x0100 | reg[0x9]);
+ step = uint32_t( double(delta /* *(1<<(YM_DELTAT_SHIFT-16)) */ ) * (freqbase) );
+ /*logerror("DELTAT deltan:09=%2x 0a=%2x\n",reg[0x9], reg[0xa]);*/
break;
case 0x0b: /* Output level control (volume, linear) */
{
- int32_t oldvol = DELTAT->volume;
- DELTAT->volume = (v&0xff) * (DELTAT->output_range/256) / YM_DELTAT_DECODE_RANGE;
+ const int32_t oldvol = volume;
+ volume = (v&0xff) * (output_range/256) / YM_DELTAT_DECODE_RANGE;
/* v * ((1<<16)>>8) >> 15;
* thus: v * (1<<8) >> 15;
* thus: output_range must be (1 << (15+8)) at least
@@ -399,66 +401,65 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning:
/*logerror("DELTAT vol = %2x\n",v&0xff);*/
if( oldvol != 0 )
{
- DELTAT->adpcml = (int)((double)DELTAT->adpcml / (double)oldvol * (double)DELTAT->volume);
+ adpcml = int(double(adpcml) / double(oldvol) * double(volume));
}
}
break;
case 0x0c: /* Limit Address L */
case 0x0d: /* Limit Address H */
- DELTAT->limit = (DELTAT->reg[0xd]*0x0100 | DELTAT->reg[0xc]) << (DELTAT->portshift - DELTAT->DRAMportshift);
- /*logerror("DELTAT limit: 0c=%2x 0d=%2x addr=%8x\n",DELTAT->reg[0xc], DELTAT->reg[0xd],DELTAT->limit );*/
+ limit = (reg[0xd]*0x0100 | reg[0xc]) << (portshift - DRAMportshift);
+ /*logerror("DELTAT limit: 0c=%2x 0d=%2x addr=%8x\n",reg[0xc], reg[0xd],limit );*/
break;
}
}
-void YM_DELTAT_ADPCM_Reset(YM_DELTAT *DELTAT,int pan,int emulation_mode,device_t *device)
+void YM_DELTAT::ADPCM_Reset(int panidx, int emulation_mode, device_t *dev)
{
- DELTAT->device = device;
- DELTAT->now_addr = 0;
- DELTAT->now_step = 0;
- DELTAT->step = 0;
- DELTAT->start = 0;
- DELTAT->end = 0;
- DELTAT->limit = ~0; /* this way YM2610 and Y8950 (both of which don't have limit address reg) will still work */
- DELTAT->volume = 0;
- DELTAT->pan = &DELTAT->output_pointer[pan];
- DELTAT->acc = 0;
- DELTAT->prev_acc = 0;
- DELTAT->adpcmd = 127;
- DELTAT->adpcml = 0;
- DELTAT->emulation_mode = (uint8_t)emulation_mode;
- DELTAT->portstate = (emulation_mode == YM_DELTAT_EMULATION_MODE_YM2610) ? 0x20 : 0;
- DELTAT->control2 = (emulation_mode == YM_DELTAT_EMULATION_MODE_YM2610) ? 0x01 : 0; /* default setting depends on the emulation mode. MSX demo called "facdemo_4" doesn't setup control2 register at all and still works */
- DELTAT->DRAMportshift = dram_rightshift[DELTAT->control2 & 3];
+ device = dev;
+ now_addr = 0;
+ now_step = 0;
+ step = 0;
+ start = 0;
+ end = 0;
+ limit = ~0; /* this way YM2610 and Y8950 (both of which don't have limit address reg) will still work */
+ volume = 0;
+ pan = &output_pointer[panidx];
+ acc = 0;
+ prev_acc = 0;
+ adpcmd = 127;
+ adpcml = 0;
+ emulation_mode = (uint8_t)emulation_mode;
+ portstate = (emulation_mode == EMULATION_MODE_YM2610) ? 0x20 : 0;
+ control2 = (emulation_mode == EMULATION_MODE_YM2610) ? 0x01 : 0; /* default setting depends on the emulation mode. MSX demo called "facdemo_4" doesn't setup control2 register at all and still works */
+ DRAMportshift = dram_rightshift[control2 & 3];
/* The flag mask register disables the BRDY after the reset, however
** as soon as the mask is enabled the flag needs to be set. */
/* set BRDY bit in status register */
- if(DELTAT->status_set_handler)
- if(DELTAT->status_change_BRDY_bit)
- (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit);
+ if(status_set_handler)
+ if(status_change_BRDY_bit)
+ (status_set_handler)(status_change_which_chip, status_change_BRDY_bit);
}
-void YM_DELTAT_postload(YM_DELTAT *DELTAT,uint8_t *regs)
+void YM_DELTAT::postload(uint8_t *regs)
{
- int r;
-
/* to keep adpcml */
- DELTAT->volume = 0;
+ volume = 0;
/* update */
- for(r=1;r<16;r++)
- YM_DELTAT_ADPCM_Write(DELTAT,r,regs[r]);
- DELTAT->reg[0] = regs[0];
+ for(int r=1;r<16;r++)
+ ADPCM_Write(r,regs[r]);
+ reg[0] = regs[0];
/* current rom data */
- if (DELTAT->memory)
- DELTAT->now_data = *(DELTAT->memory + (DELTAT->now_addr>>1) );
+ if (memory)
+ now_data = *(memory + (now_addr>>1));
}
-void YM_DELTAT_savestate(device_t *device,YM_DELTAT *DELTAT)
+void YM_DELTAT::savestate(device_t *device)
{
#ifdef MAME_EMU_SAVE_H
+ YM_DELTAT *const DELTAT = this; // makes the save name sensible
device->save_item(NAME(DELTAT->portstate));
device->save_item(NAME(DELTAT->now_addr));
device->save_item(NAME(DELTAT->now_step));
@@ -615,7 +616,7 @@ static inline void YM_DELTAT_synthesis_from_CPU_memory(YM_DELTAT *DELTAT)
/* ADPCM B (Delta-T control type) */
-void YM_DELTAT_ADPCM_CALC(YM_DELTAT *DELTAT)
+void YM_DELTAT::ADPCM_CALC()
{
/*
some examples:
@@ -630,22 +631,22 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning:
*/
- if ( (DELTAT->portstate & 0xe0)==0xa0 )
+ if ( (portstate & 0xe0)==0xa0 )
{
- YM_DELTAT_synthesis_from_external_memory(DELTAT);
+ YM_DELTAT_synthesis_from_external_memory(this);
return;
}
- if ( (DELTAT->portstate & 0xe0)==0x80 )
+ if ( (portstate & 0xe0)==0x80 )
{
/* ADPCM synthesis from CPU-managed memory (from reg $08) */
- YM_DELTAT_synthesis_from_CPU_memory(DELTAT); /* change output based on data in ADPCM data reg ($08) */
+ YM_DELTAT_synthesis_from_CPU_memory(this); /* change output based on data in ADPCM data reg ($08) */
return;
}
//todo: ADPCM analysis
-// if ( (DELTAT->portstate & 0xe0)==0xc0 )
-// if ( (DELTAT->portstate & 0xe0)==0xe0 )
+// if ( (portstate & 0xe0)==0xc0 )
+// if ( (portstate & 0xe0)==0xe0 )
return;
}
diff --git a/src/devices/sound/ymdeltat.h b/src/devices/sound/ymdeltat.h
index 364ef4d4fe6..be5926d2107 100644
--- a/src/devices/sound/ymdeltat.h
+++ b/src/devices/sound/ymdeltat.h
@@ -1,21 +1,19 @@
// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
-#pragma once
-
-#ifndef __YMDELTAT_H__
-#define __YMDELTAT_H__
+#ifndef MAME_SOUND_YMDELTAT_H
+#define MAME_SOUND_YMDELTAT_H
-#define YM_DELTAT_SHIFT (16)
-
-#define YM_DELTAT_EMULATION_MODE_NORMAL 0
-#define YM_DELTAT_EMULATION_MODE_YM2610 1
+#pragma once
typedef void (*STATUS_CHANGE_HANDLER)(void *chip, uint8_t status_bits);
/* DELTA-T (adpcm type B) struct */
-struct YM_DELTAT { /* AT: rearranged and tightened structure */
+struct YM_DELTAT { /* AT: rearranged and tightened structure */
+ static constexpr int EMULATION_MODE_NORMAL = 0;
+ static constexpr int EMULATION_MODE_YM2610 = 1;
+
uint8_t *memory;
int32_t *output_pointer;/* pointer of output pointers */
int32_t *pan; /* pan : &output_pointer[pan] */
@@ -72,16 +70,16 @@ struct YM_DELTAT { /* AT: rearranged and tightened structure */
uint8_t reg[16]; /* adpcm registers */
uint8_t emulation_mode; /* which chip we're emulating */
device_t *device;
-};
-/*void YM_DELTAT_BRDY_callback(YM_DELTAT *DELTAT);*/
+ /*void BRDY_callback();*/
-uint8_t YM_DELTAT_ADPCM_Read(YM_DELTAT *DELTAT);
-void YM_DELTAT_ADPCM_Write(YM_DELTAT *DELTAT,int r,int v);
-void YM_DELTAT_ADPCM_Reset(YM_DELTAT *DELTAT,int pan,int emulation_mode, device_t *device);
-void YM_DELTAT_ADPCM_CALC(YM_DELTAT *DELTAT);
+ uint8_t ADPCM_Read();
+ void ADPCM_Write(int r, int v);
+ void ADPCM_Reset(int panidx, int emulation_mode, device_t *dev);
+ void ADPCM_CALC();
-void YM_DELTAT_postload(YM_DELTAT *DELTAT,uint8_t *regs);
-void YM_DELTAT_savestate(device_t *device,YM_DELTAT *DELTAT);
+ void postload(uint8_t *regs);
+ void savestate(device_t *device);
+};
-#endif /* __YMDELTAT_H__ */
+#endif // MAME_SOUND_YMDELTAT_H
diff --git a/src/devices/sound/ymf262.cpp b/src/devices/sound/ymf262.cpp
index 68d4e352f3b..f69c15da9d4 100644
--- a/src/devices/sound/ymf262.cpp
+++ b/src/devices/sound/ymf262.cpp
@@ -113,6 +113,8 @@ differences between OPL2 and OPL3 shown in datasheets:
#define CONN_PHASEMOD 19
#define CONN_PHASEMOD2 20
+namespace {
+
/* save output as raw 16-bit sample */
/*#define SAVE_SAMPLE*/
@@ -188,8 +190,8 @@ struct OPL3_SLOT
uint8_t waveform_number;
unsigned int wavetable;
-//unsigned char reserved[128-84];//speedup: pump up the struct size to power of 2
-unsigned char reserved[128-100];//speedup: pump up the struct size to power of 2
+ //unsigned char reserved[128-84];//speedup: pump up the struct size to power of 2
+ unsigned char reserved[128-100];//speedup: pump up the struct size to power of 2
};
@@ -214,7 +216,7 @@ struct OPL3_CH
*/
uint8_t extended; /* set to 1 if this channel forms up a 4op channel with another channel(only used by first of pair of channels, ie 0,1,2 and 9,10,11) */
-unsigned char reserved[512-272];//speedup:pump up the struct size to power of 2
+ unsigned char reserved[512-272];//speedup:pump up the struct size to power of 2
};
@@ -266,12 +268,12 @@ struct OPL3
uint8_t nts; /* NTS (note select) */
/* external event callback handlers */
- OPL3_TIMERHANDLER timer_handler;/* TIMER handler */
- void *TimerParam; /* TIMER parameter */
- OPL3_IRQHANDLER IRQHandler; /* IRQ handler */
- void *IRQParam; /* IRQ parameter */
- OPL3_UPDATEHANDLER UpdateHandler;/* stream update handler */
- void *UpdateParam; /* stream update parameter */
+ OPL3_TIMERHANDLER timer_handler;
+ device_t *TimerParam;
+ OPL3_IRQHANDLER IRQHandler;
+ device_t *IRQParam;
+ OPL3_UPDATEHANDLER UpdateHandler;
+ device_t *UpdateParam;
uint8_t type; /* chip type */
int clock; /* master clock (Hz) */
@@ -279,8 +281,27 @@ struct OPL3
double freqbase; /* frequency base */
attotime TimerBase; /* Timer base time (==sampling time)*/
device_t *device;
+
+ /* Optional handlers */
+ void SetTimerHandler(OPL3_TIMERHANDLER handler, device_t *device)
+ {
+ timer_handler = handler;
+ TimerParam = device;
+ }
+ void SetIRQHandler(OPL3_IRQHANDLER handler, device_t *device)
+ {
+ IRQHandler = handler;
+ IRQParam = device;
+ }
+ void SetUpdateHandler(OPL3_UPDATEHANDLER handler, device_t *device)
+ {
+ UpdateHandler = handler;
+ UpdateParam = device;
+ }
};
+} // anonymous namespace
+
/* mapping of register number (offset) to slot number used by the emulator */
@@ -2358,24 +2379,6 @@ static void OPL3Destroy(OPL3 *chip)
}
-/* Optional handlers */
-
-static void OPL3SetTimerHandler(OPL3 *chip,OPL3_TIMERHANDLER timer_handler,void *param)
-{
- chip->timer_handler = timer_handler;
- chip->TimerParam = param;
-}
-static void OPL3SetIRQHandler(OPL3 *chip,OPL3_IRQHANDLER IRQHandler,void *param)
-{
- chip->IRQHandler = IRQHandler;
- chip->IRQParam = param;
-}
-static void OPL3SetUpdateHandler(OPL3 *chip,OPL3_UPDATEHANDLER UpdateHandler,void *param)
-{
- chip->UpdateHandler = UpdateHandler;
- chip->UpdateParam = param;
-}
-
/* YMF262 I/O interface */
static int OPL3Write(OPL3 *chip, int a, int v)
{
@@ -2569,17 +2572,17 @@ int ymf262_timer_over(void *chip, int c)
return OPL3TimerOver((OPL3 *)chip, c);
}
-void ymf262_set_timer_handler(void *chip, OPL3_TIMERHANDLER timer_handler, void *param)
+void ymf262_set_timer_handler(void *chip, OPL3_TIMERHANDLER timer_handler, device_t *device)
{
- OPL3SetTimerHandler((OPL3 *)chip, timer_handler, param);
+ reinterpret_cast<OPL3 *>(chip)->SetTimerHandler(timer_handler, device);
}
-void ymf262_set_irq_handler(void *chip,OPL3_IRQHANDLER IRQHandler,void *param)
+void ymf262_set_irq_handler(void *chip, OPL3_IRQHANDLER IRQHandler, device_t *device)
{
- OPL3SetIRQHandler((OPL3 *)chip, IRQHandler, param);
+ reinterpret_cast<OPL3 *>(chip)->SetIRQHandler(IRQHandler, device);
}
-void ymf262_set_update_handler(void *chip,OPL3_UPDATEHANDLER UpdateHandler,void *param)
+void ymf262_set_update_handler(void *chip, OPL3_UPDATEHANDLER UpdateHandler, device_t *device)
{
- OPL3SetUpdateHandler((OPL3 *)chip, UpdateHandler, param);
+ reinterpret_cast<OPL3 *>(chip)->SetUpdateHandler(UpdateHandler, device);
}
diff --git a/src/devices/sound/ymf262.h b/src/devices/sound/ymf262.h
index ce357181999..b82a89b9724 100644
--- a/src/devices/sound/ymf262.h
+++ b/src/devices/sound/ymf262.h
@@ -1,24 +1,13 @@
// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
-#pragma once
+#ifndef MAME_SOUND_YMF262_H
+#define MAME_SOUND_YMF262_H
-#ifndef __YMF262_H__
-#define __YMF262_H__
+#pragma once
/* select number of output bits: 8 or 16 */
#define OPL3_SAMPLE_BITS 16
-/* compiler dependence */
-#ifndef __OSDCOMM_H__
-#define __OSDCOMM_H__
-typedef unsigned char uint8_t; /* unsigned 8bit */
-typedef unsigned short uint16_t; /* unsigned 16bit */
-typedef unsigned int uint32_t; /* unsigned 32bit */
-typedef signed char int8_t; /* signed 8bit */
-typedef signed short int16_t; /* signed 16bit */
-typedef signed int int32_t; /* signed 32bit */
-#endif
-
typedef stream_sample_t OPL3SAMPLE;
/*
#if (OPL3_SAMPLE_BITS==16)
@@ -29,9 +18,9 @@ typedef int8_t OPL3SAMPLE;
#endif
*/
-typedef void (*OPL3_TIMERHANDLER)(void *param,int timer,const attotime &period);
-typedef void (*OPL3_IRQHANDLER)(void *param,int irq);
-typedef void (*OPL3_UPDATEHANDLER)(void *param,int min_interval_us);
+typedef void (*OPL3_TIMERHANDLER)(device_t *device,int timer,const attotime &period);
+typedef void (*OPL3_IRQHANDLER)(device_t *device,int irq);
+typedef void (*OPL3_UPDATEHANDLER)(device_t *device,int min_interval_us);
void *ymf262_init(device_t *device, int clock, int rate);
@@ -43,9 +32,9 @@ unsigned char ymf262_read(void *chip, int a);
int ymf262_timer_over(void *chip, int c);
void ymf262_update_one(void *chip, OPL3SAMPLE **buffers, int length);
-void ymf262_set_timer_handler(void *chip, OPL3_TIMERHANDLER TimerHandler, void *param);
-void ymf262_set_irq_handler(void *chip, OPL3_IRQHANDLER IRQHandler, void *param);
-void ymf262_set_update_handler(void *chip, OPL3_UPDATEHANDLER UpdateHandler, void *param);
+void ymf262_set_timer_handler(void *chip, OPL3_TIMERHANDLER TimerHandler, device_t *device);
+void ymf262_set_irq_handler(void *chip, OPL3_IRQHANDLER IRQHandler, device_t *device);
+void ymf262_set_update_handler(void *chip, OPL3_UPDATEHANDLER UpdateHandler, device_t *device);
-#endif /* __YMF262_H__ */
+#endif // MAME_SOUND_YMF262_H
diff --git a/src/devices/sound/ymf271.cpp b/src/devices/sound/ymf271.cpp
index 74ac30f0ca6..aeae81a9f49 100644
--- a/src/devices/sound/ymf271.cpp
+++ b/src/devices/sound/ymf271.cpp
@@ -1744,10 +1744,10 @@ void ymf271_device::device_reset()
m_irq_handler(0);
}
-const device_type YMF271 = device_creator<ymf271_device>;
+DEFINE_DEVICE_TYPE(YMF271, ymf271_device, "ymf271", "Yamaha YMF271")
ymf271_device::ymf271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YMF271, "YMF271", tag, owner, clock, "ymf271", __FILE__)
+ : device_t(mconfig, YMF271, tag, owner, clock)
, device_sound_interface(mconfig, *this)
, m_timerA(0)
, m_timerB(0)
diff --git a/src/devices/sound/ymf271.h b/src/devices/sound/ymf271.h
index 5c8598b54e6..aab5763f597 100644
--- a/src/devices/sound/ymf271.h
+++ b/src/devices/sound/ymf271.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert, R. Belmont, hap
-#pragma once
+#ifndef MAME_SOUND_YMF271_H
+#define MAME_SOUND_YMF271_H
-#ifndef __YMF271_H__
-#define __YMF271_H__
+#pragma once
#define MCFG_YMF271_IRQ_HANDLER(_devcb) \
@@ -21,9 +21,9 @@ public:
ymf271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ymf271_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ext_read_handler(device_t &device, _Object object) { return downcast<ymf271_device &>(device).m_ext_read_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ext_write_handler(device_t &device, _Object object) { return downcast<ymf271_device &>(device).m_ext_write_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ymf271_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast<ymf271_device &>(device).m_ext_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ext_write_handler(device_t &device, Object &&cb) { return downcast<ymf271_device &>(device).m_ext_write_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -36,6 +36,7 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+
private:
struct YMF271Slot
{
@@ -158,7 +159,6 @@ private:
devcb_write8 m_ext_write_handler;
};
-extern const device_type YMF271;
-
+DECLARE_DEVICE_TYPE(YMF271, ymf271_device)
-#endif /* __YMF271_H__ */
+#endif // MAME_SOUND_YMF271_H
diff --git a/src/devices/sound/ymf278b.cpp b/src/devices/sound/ymf278b.cpp
index a57f006d06c..ab76ffa4a90 100644
--- a/src/devices/sound/ymf278b.cpp
+++ b/src/devices/sound/ymf278b.cpp
@@ -942,28 +942,6 @@ void ymf278b_device::register_save_state()
// device_start - device-specific startup
//-------------------------------------------------
-static void ymf278b_ymf262_irq_handler(void *param,int irq)
-{
-}
-
-
-static void ymf278b_ymf262_timer_handler(void *param, int c, const attotime &period)
-{
-}
-
-static void ymf278b_ymf262_update_request(void *param, int interval)
-{
- ymf278b_device *ymf278b = (ymf278b_device *) param;
- ymf278b->ymf262_update_request();
-}
-
-
-void ymf278b_device::ymf262_update_request()
-{
- m_stream_ymf262->update();
-}
-
-
void ymf278b_device::device_start()
{
int i;
@@ -1019,19 +997,19 @@ void ymf278b_device::device_start()
m_stream_ymf262 = machine().sound().stream_alloc(*this, 0, 4, ymf262_clock / 288);
/* YMF262 setup */
- ymf262_set_timer_handler (m_ymf262, ymf278b_ymf262_timer_handler, this);
- ymf262_set_irq_handler (m_ymf262, ymf278b_ymf262_irq_handler, this);
- ymf262_set_update_handler(m_ymf262, ymf278b_ymf262_update_request, this);
+ ymf262_set_timer_handler (m_ymf262, ymf278b_device::static_timer_handler, this);
+ ymf262_set_irq_handler (m_ymf262, ymf278b_device::static_irq_handler, this);
+ ymf262_set_update_handler(m_ymf262, ymf278b_device::static_update_request, this);
}
-const device_type YMF278B = device_creator<ymf278b_device>;
+DEFINE_DEVICE_TYPE(YMF278B, ymf278b_device, "ymf278b", "Yamaha YMF278B OPL4")
ymf278b_device::ymf278b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YMF278B, "YMF278B", tag, owner, clock, "ymf278b", __FILE__),
- device_sound_interface(mconfig, *this),
- device_rom_interface(mconfig, *this, 22),
- m_irq_handler(*this),
- m_last_fm_data(0)
+ : device_t(mconfig, YMF278B, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , device_rom_interface(mconfig, *this, 22)
+ , m_irq_handler(*this)
+ , m_last_fm_data(0)
{
}
diff --git a/src/devices/sound/ymf278b.h b/src/devices/sound/ymf278b.h
index 1d1388630e8..545ac90dad8 100644
--- a/src/devices/sound/ymf278b.h
+++ b/src/devices/sound/ymf278b.h
@@ -1,9 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont, Olivier Galibert, hap
-#pragma once
+#ifndef MAME_SOUND_YMF278B_H
+#define MAME_SOUND_YMF278B_H
-#ifndef __YMF278B_H__
-#define __YMF278B_H__
+#pragma once
#define YMF278B_STD_CLOCK (33868800) /* standard clock for OPL4 */
@@ -11,21 +11,17 @@
#define MCFG_YMF278B_IRQ_HANDLER(_devcb) \
devcb = &ymf278b_device::set_irq_handler(*device, DEVCB_##_devcb);
-class ymf278b_device : public device_t,
- public device_sound_interface,
- public device_rom_interface
+class ymf278b_device : public device_t, public device_sound_interface, public device_rom_interface
{
public:
ymf278b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ymf278b_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ymf278b_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- void ymf262_update_request();
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -95,6 +91,12 @@ private:
void precompute_rate_tables();
void register_save_state();
+ void update_request() { m_stream_ymf262->update(); }
+
+ static void static_irq_handler(device_t *param, int irq) { }
+ static void static_timer_handler(device_t *param, int c, const attotime &period) { }
+ static void static_update_request(device_t *param, int interval) { downcast<ymf278b_device *>(param)->update_request(); }
+
// internal state
uint8_t m_pcmregs[256];
YMF278BSlot m_slots[24];
@@ -137,7 +139,6 @@ private:
sound_stream * m_stream_ymf262;
};
-extern const device_type YMF278B;
-
+DECLARE_DEVICE_TYPE(YMF278B, ymf278b_device)
-#endif /* __YMF278B_H__ */
+#endif // MAME_SOUND_YMF278B_H
diff --git a/src/devices/sound/ymz280b.cpp b/src/devices/sound/ymz280b.cpp
index 40e9578557f..5bbbc07205b 100644
--- a/src/devices/sound/ymz280b.cpp
+++ b/src/devices/sound/ymz280b.cpp
@@ -33,6 +33,10 @@
#include "emu.h"
#include "ymz280b.h"
+#if YMZ280B_MAKE_WAVS
+#include "sound/wavwrite.h"
+#endif
+
#define MAX_SAMPLE_CHUNK 10000
@@ -43,14 +47,10 @@
#define INTERNAL_BUFFER_SIZE (1 << 15)
#define INTERNAL_SAMPLE_RATE (m_master_clock * 2.0)
-#if MAKE_WAVS
-#include "sound/wavwrite.h"
-#endif
-
/* step size index shift table */
-static const int index_scale[8] = { 0x0e6, 0x0e6, 0x0e6, 0x0e6, 0x133, 0x199, 0x200, 0x266 };
+static constexpr int index_scale[8] = { 0x0e6, 0x0e6, 0x0e6, 0x0e6, 0x133, 0x199, 0x200, 0x266 };
/* lookup table for the precomputed difference */
static int diff_lookup[16];
@@ -166,7 +166,7 @@ void ymz280b_device::update_irq_state_timer_common(int voicenum)
***********************************************************************************************/
-static void compute_tables(void)
+static void compute_tables()
{
/* loop over all nibbles and compute the difference */
for (int nib = 0; nib < 16; nib++)
@@ -643,7 +643,7 @@ void ymz280b_device::device_start()
save_item(NAME(m_voice[j].irq_schedule), j);
}
-#if MAKE_WAVS
+#if YMZ280B_MAKE_WAVS
m_wavresample = wav_open("resamp.wav", INTERNAL_SAMPLE_RATE, 2);
#endif
}
@@ -940,25 +940,25 @@ WRITE8_MEMBER( ymz280b_device::write )
}
-const device_type YMZ280B = device_creator<ymz280b_device>;
+DEFINE_DEVICE_TYPE(YMZ280B, ymz280b_device, "ymz280b", "Yamaha YMZ280B PCMD8")
ymz280b_device::ymz280b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YMZ280B, "YMZ280B", tag, owner, clock, "ymz280b", __FILE__),
- device_sound_interface(mconfig, *this),
- m_current_register(0),
- m_status_register(0),
- m_irq_state(0),
- m_irq_mask(0),
- m_irq_enable(0),
- m_keyon_enable(0),
- m_ext_mem_enable(0),
- m_ext_readlatch(0),
- m_ext_mem_address_hi(0),
- m_ext_mem_address_mid(0),
- m_ext_mem_address(0),
- m_irq_handler(*this),
- m_ext_read_handler(*this),
- m_ext_write_handler(*this)
+ : device_t(mconfig, YMZ280B, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_current_register(0)
+ , m_status_register(0)
+ , m_irq_state(0)
+ , m_irq_mask(0)
+ , m_irq_enable(0)
+ , m_keyon_enable(0)
+ , m_ext_mem_enable(0)
+ , m_ext_readlatch(0)
+ , m_ext_mem_address_hi(0)
+ , m_ext_mem_address_mid(0)
+ , m_ext_mem_address(0)
+ , m_irq_handler(*this)
+ , m_ext_read_handler(*this)
+ , m_ext_write_handler(*this)
{
memset(m_voice, 0, sizeof(m_voice));
}
diff --git a/src/devices/sound/ymz280b.h b/src/devices/sound/ymz280b.h
index 267a9b570b6..7891fd21807 100644
--- a/src/devices/sound/ymz280b.h
+++ b/src/devices/sound/ymz280b.h
@@ -7,13 +7,13 @@
*
**********************************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_YMZ280B_H
+#define MAME_SOUND_YMZ280B_H
-#ifndef __YMZ280B_H__
-#define __YMZ280B_H__
+#pragma once
-#define MAKE_WAVS 0
+#define YMZ280B_MAKE_WAVS 0
#define MCFG_YMZ280B_IRQ_HANDLER(_devcb) \
devcb = &ymz280b_device::set_irq_handler(*device, DEVCB_##_devcb);
@@ -24,16 +24,15 @@
#define MCFG_YMZ280B_EXT_WRITE_HANDLER(_devcb) \
devcb = &ymz280b_device::set_ext_write_handler(*device, DEVCB_##_devcb);
-class ymz280b_device : public device_t,
- public device_sound_interface
+class ymz280b_device : public device_t, public device_sound_interface
{
public:
ymz280b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ymz280b_device &>(device).m_irq_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ext_read_handler(device_t &device, _Object object) { return downcast<ymz280b_device &>(device).m_ext_read_handler.set_callback(object); }
- template<class _Object> static devcb_base &set_ext_write_handler(device_t &device, _Object object) { return downcast<ymz280b_device &>(device).m_ext_write_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ymz280b_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast<ymz280b_device &>(device).m_ext_read_handler.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ext_write_handler(device_t &device, Object &&cb) { return downcast<ymz280b_device &>(device).m_ext_write_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -47,8 +46,8 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-private:
+private:
/* struct describing a single playing ADPCM voice */
struct YMZ280BVoice
{
@@ -120,12 +119,11 @@ private:
uint32_t m_mem_size;
sound_stream *m_stream; /* which stream are we using */
std::unique_ptr<int16_t[]> m_scratch;
-#if MAKE_WAVS
+#if YMZ280B_MAKE_WAVS
void *m_wavresample; /* resampled waveform */
#endif
};
-extern const device_type YMZ280B;
-
+DECLARE_DEVICE_TYPE(YMZ280B, ymz280b_device)
-#endif /* __YMZ280B_H__ */
+#endif // MAME_SOUND_YMZ280B_H
diff --git a/src/devices/sound/ymz770.cpp b/src/devices/sound/ymz770.cpp
index 5bdb7e9a89d..11b30d08eb1 100644
--- a/src/devices/sound/ymz770.cpp
+++ b/src/devices/sound/ymz770.cpp
@@ -24,22 +24,23 @@ TODO:
#include "mpeg_audio.h"
// device type definition
-const device_type YMZ770 = device_creator<ymz770_device>;
+DEFINE_DEVICE_TYPE(YMZ770, ymz770_device, "ymz770", "Yamaha YMZ770 AMMS-A")
//-------------------------------------------------
// ymz770_device - constructor
//-------------------------------------------------
ymz770_device::ymz770_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, YMZ770, "Yamaha YMZ770", tag, owner, clock, "ymz770", __FILE__),
- device_sound_interface(mconfig, *this), m_stream(nullptr),
- m_cur_reg(0),
- m_mute(0),
- m_doen(0),
- m_vlma(0),
- m_bsl(0),
- m_cpl(0),
- m_rom(*this, DEVICE_SELF)
+ : device_t(mconfig, YMZ770, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_stream(nullptr)
+ , m_cur_reg(0)
+ , m_mute(0)
+ , m_doen(0)
+ , m_vlma(0)
+ , m_bsl(0)
+ , m_cpl(0)
+ , m_rom(*this, DEVICE_SELF)
{
}
diff --git a/src/devices/sound/ymz770.h b/src/devices/sound/ymz770.h
index 3fdc104dc2c..b7f047dc4b4 100644
--- a/src/devices/sound/ymz770.h
+++ b/src/devices/sound/ymz770.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_SOUND_YMZ770_H
+#define MAME_SOUND_YMZ770_H
-#ifndef __YMZ770_H__
-#define __YMZ770_H__
+#pragma once
//**************************************************************************
// CONSTANTS
@@ -36,41 +36,13 @@ class mpeg_audio;
class ymz770_device : public device_t, public device_sound_interface
{
- struct ymz_channel
- {
- uint8_t phrase;
- uint8_t pan;
- uint8_t volume;
- uint8_t control;
-
- bool is_playing, last_block;
-
- mpeg_audio *decoder;
-
- int16_t output_data[0x1000];
- int output_remaining;
- int output_ptr;
- int atbl;
- int pptr;
-
- uint8_t sequence;
- uint8_t seqcontrol;
- uint8_t seqdelay;
- uint8_t *seqdata;
- bool is_seq_playing;
- };
-
-
public:
// construction/destruction
ymz770_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE8_MEMBER(write);
- sound_stream *m_stream;
-
protected:
-
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -79,6 +51,8 @@ protected:
void internal_reg_write(uint8_t reg, uint8_t data);
+ sound_stream *m_stream;
+
// data
uint8_t m_cur_reg;
uint8_t m_mute; // mute chip
@@ -88,11 +62,36 @@ protected:
uint8_t m_cpl; // clip limiter
required_region_ptr<uint8_t> m_rom;
+private:
+ struct ymz_channel
+ {
+ uint8_t phrase;
+ uint8_t pan;
+ uint8_t volume;
+ uint8_t control;
+
+ bool is_playing, last_block;
+
+ mpeg_audio *decoder;
+
+ int16_t output_data[0x1000];
+ int output_remaining;
+ int output_ptr;
+ int atbl;
+ int pptr;
+
+ uint8_t sequence;
+ uint8_t seqcontrol;
+ uint8_t seqdelay;
+ uint8_t *seqdata;
+ bool is_seq_playing;
+ };
+
ymz_channel m_channels[8];
};
// device type definition
-extern const device_type YMZ770;
+DECLARE_DEVICE_TYPE(YMZ770, ymz770_device)
-#endif /* __ymz770_H__ */
+#endif // MAME_SOUND_YMZ770_H
diff --git a/src/devices/sound/zsg2.cpp b/src/devices/sound/zsg2.cpp
index 9cef9c598b3..6300f02b84e 100644
--- a/src/devices/sound/zsg2.cpp
+++ b/src/devices/sound/zsg2.cpp
@@ -59,18 +59,18 @@ TODO:
// device type definition
-const device_type ZSG2 = device_creator<zsg2_device>;
+DEFINE_DEVICE_TYPE(ZSG2, zsg2_device, "zsg2", "ZOOM ZSG-2")
//-------------------------------------------------
// zsg2_device - constructor
//-------------------------------------------------
zsg2_device::zsg2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ZSG2, "ZSG-2", tag, owner, clock, "zsg2", __FILE__),
- device_sound_interface(mconfig, *this),
- m_mem_base(*this, DEVICE_SELF),
- m_read_address(0),
- m_ext_read_handler(*this)
+ : device_t(mconfig, ZSG2, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , m_mem_base(*this, DEVICE_SELF)
+ , m_read_address(0)
+ , m_ext_read_handler(*this)
{
}
diff --git a/src/devices/sound/zsg2.h b/src/devices/sound/zsg2.h
index e894562fa7f..c54e2dce3c4 100644
--- a/src/devices/sound/zsg2.h
+++ b/src/devices/sound/zsg2.h
@@ -4,10 +4,10 @@
ZOOM ZSG-2 custom wavetable synthesizer
*/
-#pragma once
+#ifndef MAME_SOUND_ZSG2_H
+#define MAME_SOUND_ZSG2_H
-#ifndef __ZSG2_H__
-#define __ZSG2_H__
+#pragma once
//**************************************************************************
@@ -30,10 +30,9 @@ class zsg2_device : public device_t,
{
public:
zsg2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~zsg2_device() { }
// static configuration helpers
- template<class _Object> static devcb_base &set_ext_read_handler(device_t &device, _Object object) { return downcast<zsg2_device &>(device).m_ext_read_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast<zsg2_device &>(device).m_ext_read_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ16_MEMBER(read);
DECLARE_WRITE16_MEMBER(write);
@@ -86,7 +85,6 @@ private:
int16_t *prepare_samples(uint32_t offset);
};
-extern const device_type ZSG2;
-
+DECLARE_DEVICE_TYPE(ZSG2, zsg2_device)
-#endif /* __ZSG2_H__ */
+#endif // MAME_SOUND_ZSG2_H
diff --git a/src/devices/video/315_5124.cpp b/src/devices/video/315_5124.cpp
index 9588f3e6052..e49325d6c25 100644
--- a/src/devices/video/315_5124.cpp
+++ b/src/devices/video/315_5124.cpp
@@ -68,6 +68,11 @@ PAL frame timing
#include "video/315_5124.h"
+#define SEGA315_5124_PALETTE_SIZE (64 + 16)
+#define SEGA315_5378_PALETTE_SIZE 4096
+
+#define VRAM_SIZE 0x4000
+
#define STATUS_VINT 0x80 /* Pending vertical interrupt flag */
#define STATUS_SPROVR 0x40 /* Sprite overflow flag */
#define STATUS_SPRCOL 0x20 /* Object collision flag */
@@ -84,8 +89,8 @@ PAL frame timing
#define DISPLAY_DISABLED_HPOS 24 /* not verified, works if above 18 (for 'pstrike2') and below 25 (for 'fantdizzy') */
#define DISPLAY_CB_HPOS 2 /* fixes 'roadrash' (SMS game) title scrolling, due to line counter reload timing */
-#define DRAW_TIME_GG 94 /* 9 + 2 + 14 + 8 + 13 + 96/2 */
-#define DRAW_TIME_SMS 46 /* 9 + 2 + 14 + 8 + 13 */
+#define DRAW_TIME_GG 94 /* 9 + 2 + 14 + 8 + 13 + 96/2 */
+#define DRAW_TIME_SMS 46 /* 9 + 2 + 14 + 8 + 13 */
#define PRIORITY_BIT 0x1000
#define BACKDROP_COLOR ((m_vdp_mode == 4 ? 0x10 : 0x00) + (m_reg[0x07] & 0x0f))
@@ -97,17 +102,17 @@ PAL frame timing
#define BOTTOM_BORDER 4
#define BOTTOM_BLANKING 5
-static const uint8_t ntsc_192[6] = { 3, 13, 27, 192, 24, 3 };
-static const uint8_t ntsc_224[6] = { 3, 13, 11, 224, 8, 3 };
-static const uint8_t ntsc_240[6] = { 3, 13, 3, 240, 0, 3 };
-static const uint8_t pal_192[6] = { 3, 13, 54, 192, 48, 3 };
-static const uint8_t pal_224[6] = { 3, 13, 38, 224, 32, 3 };
-static const uint8_t pal_240[6] = { 3, 13, 30, 240, 24, 3 };
+static constexpr uint8_t ntsc_192[6] = { 3, 13, 27, 192, 24, 3 };
+static constexpr uint8_t ntsc_224[6] = { 3, 13, 11, 224, 8, 3 };
+static constexpr uint8_t ntsc_240[6] = { 3, 13, 3, 240, 0, 3 };
+static constexpr uint8_t pal_192[6] = { 3, 13, 54, 192, 48, 3 };
+static constexpr uint8_t pal_224[6] = { 3, 13, 38, 224, 32, 3 };
+static constexpr uint8_t pal_240[6] = { 3, 13, 30, 240, 24, 3 };
-const device_type SEGA315_5124 = device_creator<sega315_5124_device>;
-const device_type SEGA315_5246 = device_creator<sega315_5246_device>;
-const device_type SEGA315_5378 = device_creator<sega315_5378_device>;
+DEFINE_DEVICE_TYPE(SEGA315_5124, sega315_5124_device, "sega315_5124", "Sega 315-5124 SMS1 VDP")
+DEFINE_DEVICE_TYPE(SEGA315_5246, sega315_5246_device, "sega315_5246", "Sega 315-5246 SMS2 VDP")
+DEFINE_DEVICE_TYPE(SEGA315_5378, sega315_5378_device, "sega315_5378", "Sega 315-5378 Gamegear VDP")
PALETTE_INIT_MEMBER(sega315_5124_device, sega315_5124)
@@ -161,24 +166,13 @@ ADDRESS_MAP_END
sega315_5124_device::sega315_5124_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t( mconfig, SEGA315_5124, "Sega 315-5124 VDP", tag, owner, clock, "sega315_5124", __FILE__)
- , device_memory_interface(mconfig, *this)
- , device_video_interface(mconfig, *this)
- , m_cram_size( SEGA315_5124_CRAM_SIZE )
- , m_palette_offset( 0 )
- , m_supports_224_240( false )
- , m_is_pal(false)
- , m_int_cb(*this)
- , m_csync_cb(*this)
- , m_pause_cb(*this)
- , m_space_config("videoram", ENDIANNESS_LITTLE, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(sega315_5124))
- , m_palette(*this, "palette")
+ : sega315_5124_device(mconfig, SEGA315_5124, tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, false)
{
}
-sega315_5124_device::sega315_5124_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, bool supports_224_240, const char *shortname, const char *source)
- : device_t( mconfig, type, name, tag, owner, clock, shortname, source)
+sega315_5124_device::sega315_5124_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, bool supports_224_240)
+ : device_t(mconfig, type, tag, owner, clock)
, device_memory_interface(mconfig, *this)
, device_video_interface(mconfig, *this)
, m_cram_size( cram_size )
@@ -195,13 +189,13 @@ sega315_5124_device::sega315_5124_device(const machine_config &mconfig, device_t
sega315_5246_device::sega315_5246_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega315_5124_device( mconfig, SEGA315_5246, "Sega 315-5246 VDP", tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true, "sega315_5246", __FILE__)
+ : sega315_5124_device(mconfig, SEGA315_5246, tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true)
{
}
sega315_5378_device::sega315_5378_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega315_5124_device( mconfig, SEGA315_5378, "Sega 315-5378 VDP", tag, owner, clock, SEGA315_5378_CRAM_SIZE, 0x10, true, "sega315_5378", __FILE__)
+ : sega315_5124_device(mconfig, SEGA315_5378, tag, owner, clock, SEGA315_5378_CRAM_SIZE, 0x10, true)
{
}
@@ -318,7 +312,7 @@ void sega315_5124_device::hcount_latch_at_hpos( int hpos )
/* The hcount value returned by the VDP seems to be based on the previous hpos */
int hclock = hpos - 1;
if (hclock < 0)
- hclock += SEGA315_5124_WIDTH;
+ hclock += WIDTH;
m_hcounter = ((hclock - active_scr_start) >> 1) & 0xff;
}
@@ -347,7 +341,7 @@ void sega315_5124_device::device_timer(emu_timer &timer, device_timer_id id, int
case TIMER_DRAW:
update_palette();
- draw_scanline( SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH, param, m_screen->vpos() - param );
+ draw_scanline( LBORDER_START + LBORDER_WIDTH, param, m_screen->vpos() - param );
break;
case TIMER_LBORDER:
@@ -358,8 +352,8 @@ void sega315_5124_device::device_timer(emu_timer &timer, device_timer_id id, int
update_palette();
/* Draw left border */
- rec.min_x = SEGA315_5124_LBORDER_START;
- rec.max_x = SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH - 1;
+ rec.min_x = LBORDER_START;
+ rec.max_x = LBORDER_START + LBORDER_WIDTH - 1;
m_tmpbitmap.fill(m_palette->pen(m_current_palette[BACKDROP_COLOR]), rec);
m_y1_bitmap.fill(( m_reg[0x07] & 0x0f ) ? 1 : 0, rec);
}
@@ -373,8 +367,8 @@ void sega315_5124_device::device_timer(emu_timer &timer, device_timer_id id, int
update_palette();
/* Draw right border */
- rec.min_x = SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256;
- rec.max_x = rec.min_x + SEGA315_5124_RBORDER_WIDTH - 1;
+ rec.min_x = LBORDER_START + LBORDER_WIDTH + 256;
+ rec.max_x = rec.min_x + RBORDER_WIDTH - 1;
m_tmpbitmap.fill(m_palette->pen(m_current_palette[BACKDROP_COLOR]), rec);
m_y1_bitmap.fill(( m_reg[0x07] & 0x0f ) ? 1 : 0, rec);
}
@@ -480,8 +474,8 @@ void sega315_5124_device::process_line_timer()
}
/* Draw borders */
- m_lborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START ), vpos );
- m_rborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256 ), vpos );
+ m_lborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START ), vpos );
+ m_rborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START + LBORDER_WIDTH + 256 ), vpos );
/* Draw middle of the border */
/* We need to do this through the regular drawing function */
@@ -513,8 +507,8 @@ void sega315_5124_device::process_line_timer()
}
/* Draw borders */
- m_lborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START ), vpos );
- m_rborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256 ), vpos );
+ m_lborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START ), vpos );
+ m_rborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START + LBORDER_WIDTH + 256 ), vpos );
/* Draw active display */
select_sprites( vpos - vpos_limit );
@@ -536,8 +530,8 @@ void sega315_5124_device::process_line_timer()
}
/* Draw borders */
- m_lborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START ), vpos );
- m_rborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256 ), vpos );
+ m_lborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START ), vpos );
+ m_rborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START + LBORDER_WIDTH + 256 ), vpos );
/* Draw middle of the border */
/* We need to do this through the regular drawing function */
@@ -594,7 +588,7 @@ void sega315_5124_device::check_pending_flags()
remaining time, what could also occur due to the ahead time of the timeslice. */
if (m_pending_flags_timer->remaining() == attotime::zero)
{
- hpos = SEGA315_5124_WIDTH - 1;
+ hpos = WIDTH - 1;
}
else
{
@@ -1606,7 +1600,7 @@ void sega315_5124_device::device_start()
m_display_timer = timer_alloc(TIMER_LINE);
m_display_timer->adjust(m_screen->time_until_pos(0, DISPLAY_CB_HPOS), 0, m_screen->scan_period());
m_pending_flags_timer = timer_alloc(TIMER_FLAGS);
- m_pending_flags_timer->adjust(m_screen->time_until_pos(0, SEGA315_5124_WIDTH - 1), 0, m_screen->scan_period());
+ m_pending_flags_timer->adjust(m_screen->time_until_pos(0, WIDTH - 1), 0, m_screen->scan_period());
m_draw_timer = timer_alloc(TIMER_DRAW);
m_lborder_timer = timer_alloc(TIMER_LBORDER);
m_rborder_timer = timer_alloc(TIMER_RBORDER);
diff --git a/src/devices/video/315_5124.h b/src/devices/video/315_5124.h
index e3ab1f23559..8ca1b734d9f 100644
--- a/src/devices/video/315_5124.h
+++ b/src/devices/video/315_5124.h
@@ -8,8 +8,8 @@
**************************************************************************/
-#ifndef MAME_DEVICES_VIDEO_315_5124_H
-#define MAME_DEVICES_VIDEO_315_5124_H
+#ifndef MAME_VIDEO_315_5124_H
+#define MAME_VIDEO_315_5124_H
#pragma once
@@ -17,45 +17,12 @@
/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-#define SEGA315_5124_WIDTH 342 /* 342 pixels */
-#define SEGA315_5124_HEIGHT_NTSC 262 /* 262 lines */
-#define SEGA315_5124_HEIGHT_PAL 313 /* 313 lines */
-#define SEGA315_5124_LBORDER_START (9 + 2 + 14 + 8)
-#define SEGA315_5124_LBORDER_WIDTH 13 /* 13 pixels */
-#define SEGA315_5124_RBORDER_WIDTH 15 /* 15 pixels */
-#define SEGA315_5124_TBORDER_START (3 + 13)
-#define SEGA315_5124_NTSC_192_TBORDER_HEIGHT (0x1b) /* 27 lines */
-//#define SEGA315_5124_NTSC_192_BBORDER_HEIGHT (0x18) /* 24 lines */
-#define SEGA315_5124_NTSC_224_TBORDER_HEIGHT (0x0b) /* 11 lines */
-//#define SEGA315_5124_NTSC_224_BBORDER_HEIGHT (0x08) /* 8 lines */
-//#define SEGA315_5124_PAL_192_TBORDER_HEIGHT (0x36) /* 54 lines */
-//#define SEGA315_5124_PAL_192_BBORDER_HEIGHT (0x30) /* 48 lines */
-//#define SEGA315_5124_PAL_224_TBORDER_HEIGHT (0x26) /* 38 lines */
-//#define SEGA315_5124_PAL_224_BBORDER_HEIGHT (0x20) /* 32 lines */
-#define SEGA315_5124_PAL_240_TBORDER_HEIGHT (0x1e) /* 30 lines */
-//#define SEGA315_5124_PAL_240_BBORDER_HEIGHT (0x18) /* 24 lines */
-
-
-#define SEGA315_5124_PALETTE_SIZE (64+16)
-#define SEGA315_5378_PALETTE_SIZE 4096
-
-
-#define SEGA315_5378_CRAM_SIZE 0x40 /* 32 colors x 2 bytes per color = 64 bytes */
-#define SEGA315_5124_CRAM_SIZE 0x20 /* 32 colors x 1 bytes per color = 32 bytes */
-
-#define VRAM_SIZE 0x4000
-
-
-/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-extern const device_type SEGA315_5124; /* aka SMS1 vdp */
-extern const device_type SEGA315_5246; /* aka SMS2 vdp */
-extern const device_type SEGA315_5378; /* aka Gamegear vdp */
+DECLARE_DEVICE_TYPE(SEGA315_5124, sega315_5124_device) /* aka SMS1 vdp */
+DECLARE_DEVICE_TYPE(SEGA315_5246, sega315_5246_device) /* aka SMS2 vdp */
+DECLARE_DEVICE_TYPE(SEGA315_5378, sega315_5378_device) /* aka Gamegear vdp */
class sega315_5124_device : public device_t,
@@ -63,17 +30,33 @@ class sega315_5124_device : public device_t,
public device_video_interface
{
public:
+ static constexpr unsigned WIDTH = 342; /* 342 pixels */
+ static constexpr unsigned HEIGHT_NTSC = 262; /* 262 lines */
+ static constexpr unsigned HEIGHT_PAL = 313; /* 313 lines */
+ static constexpr unsigned LBORDER_START = 9 + 2 + 14 + 8;
+ static constexpr unsigned LBORDER_WIDTH = 13; /* 13 pixels */
+ static constexpr unsigned RBORDER_WIDTH = 15; /* 15 pixels */
+ static constexpr unsigned TBORDER_START = 3 + 13;
+ static constexpr unsigned NTSC_192_TBORDER_HEIGHT = 0x1b; /* 27 lines */
+ //static constexpr unsigned NTSC_192_BBORDER_HEIGHT = 0x18; /* 24 lines */
+ static constexpr unsigned NTSC_224_TBORDER_HEIGHT = 0x0b; /* 11 lines */
+ //static constexpr unsigned NTSC_224_BBORDER_HEIGHT = 0x08; /* 8 lines */
+ //static constexpr unsigned PAL_192_TBORDER_HEIGHT = 0x36; /* 54 lines */
+ //static constexpr unsigned PAL_192_BBORDER_HEIGHT = 0x30; /* 48 lines */
+ //static constexpr unsigned PAL_224_TBORDER_HEIGHT = 0x26; /* 38 lines */
+ //static constexpr unsigned PAL_224_BBORDER_HEIGHT = 0x20; /* 32 lines */
+ static constexpr unsigned PAL_240_TBORDER_HEIGHT = 0x1e; /* 30 lines */
+ //static constexpr unsigned PAL_240_BBORDER_HEIGHT = 0x18; /* 24 lines */
+
+
// construction/destruction
sega315_5124_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- sega315_5124_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, bool supports_224_240, const char *shortname, const char *source);
static void set_signal_type(device_t &device, bool is_pal) { downcast<sega315_5124_device &>(device).m_is_pal = is_pal; }
-
-
- template<class _Object> static devcb_base &set_int_callback(device_t &device, _Object object) { return downcast<sega315_5124_device &>(device).m_int_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_csync_callback(device_t &device, _Object object) { return downcast<sega315_5124_device &>(device).m_csync_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_pause_callback(device_t &device, _Object object) { return downcast<sega315_5124_device &>(device).m_pause_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_int_callback(device_t &device, Object &&cb) { return downcast<sega315_5124_device &>(device).m_int_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_csync_callback(device_t &device, Object &&cb) { return downcast<sega315_5124_device &>(device).m_csync_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_pause_callback(device_t &device, Object &&cb) { return downcast<sega315_5124_device &>(device).m_pause_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( vram_read );
DECLARE_WRITE8_MEMBER( vram_write );
@@ -84,34 +67,24 @@ public:
DECLARE_PALETTE_INIT( sega315_5124 );
- void hcount_latch() { hcount_latch_at_hpos( m_screen->hpos() ); };
- void hcount_latch_at_hpos( int hpos );
+ void hcount_latch() { hcount_latch_at_hpos(m_screen->hpos()); };
+ void hcount_latch_at_hpos(int hpos);
void stop_timers();
bitmap_rgb32 &get_bitmap() { return m_tmpbitmap; };
bitmap_ind8 &get_y1_bitmap() { return m_y1_bitmap; };
/* update the screen */
- uint32_t screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect );
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- virtual void set_sega315_5124_compatibility_mode( bool sega315_5124_compatibility_mode ) { };
+ virtual void set_sega315_5124_compatibility_mode(bool sega315_5124_compatibility_mode) { }
protected:
- void set_display_settings();
- void set_frame_timing();
- virtual void update_palette();
- virtual void cram_write(uint8_t data);
- virtual void draw_scanline( int pixel_offset_x, int pixel_plot_y, int line );
- virtual void blit_scanline( int *line_buffer, int *priority_selected, int pixel_offset_x, int pixel_plot_y, int line );
- virtual uint16_t get_name_table_row(int row);
- void process_line_timer();
- void select_sprites( int line );
- void draw_scanline_mode4( int *line_buffer, int *priority_selected, int line );
- void draw_sprites_mode4( int *line_buffer, int *priority_selected, int line );
- void draw_sprites_tms9918_mode( int *line_buffer, int line );
- void draw_scanline_mode2( int *line_buffer, int line );
- void draw_scanline_mode0( int *line_buffer, int line );
- void check_pending_flags();
+ static constexpr unsigned SEGA315_5378_CRAM_SIZE = 0x40; /* 32 colors x 2 bytes per color = 64 bytes */
+ static constexpr unsigned SEGA315_5124_CRAM_SIZE = 0x20; /* 32 colors x 1 bytes per color = 32 bytes */
+
+
+ sega315_5124_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, bool supports_224_240);
// device-level overrides
virtual void device_start() override;
@@ -119,7 +92,23 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_0) ? &m_space_config : nullptr; }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_0) ? &m_space_config : nullptr; }
+
+ void set_display_settings();
+ void set_frame_timing();
+ virtual void update_palette();
+ virtual void cram_write(uint8_t data);
+ virtual void draw_scanline(int pixel_offset_x, int pixel_plot_y, int line);
+ virtual void blit_scanline(int *line_buffer, int *priority_selected, int pixel_offset_x, int pixel_plot_y, int line);
+ virtual uint16_t get_name_table_row(int row);
+ void process_line_timer();
+ void select_sprites(int line);
+ void draw_scanline_mode4(int *line_buffer, int *priority_selected, int line);
+ void draw_sprites_mode4(int *line_buffer, int *priority_selected, int line);
+ void draw_sprites_tms9918_mode(int *line_buffer, int line);
+ void draw_scanline_mode2(int *line_buffer, int line);
+ void draw_scanline_mode0(int *line_buffer, int line);
+ void check_pending_flags();
void vdp_postload();
@@ -130,7 +119,7 @@ protected:
uint8_t m_reg9copy; /* Internal copy of register 9 (Y-Scroll) */
uint8_t m_addrmode; /* Type of VDP action */
uint16_t m_addr; /* Contents of internal VDP address register */
- uint8_t m_cram_size; /* CRAM size */
+ const uint8_t m_cram_size; /* CRAM size */
uint8_t m_cram_mask; /* Mask to switch between SMS and GG CRAM sizes */
int m_cram_dirty; /* Have there been any changes to the CRAM area */
int m_pending_reg_write;
@@ -147,8 +136,8 @@ protected:
const uint8_t *m_frame_timing;
bitmap_rgb32 m_tmpbitmap;
bitmap_ind8 m_y1_bitmap;
- uint8_t m_palette_offset;
- bool m_supports_224_240;
+ const uint8_t m_palette_offset;
+ const bool m_supports_224_240;
bool m_display_disabled;
uint16_t m_sprite_base;
uint16_t m_sprite_pattern_line[8];
@@ -175,14 +164,14 @@ protected:
const address_space_config m_space_config;
/* Timers */
- static const device_timer_id TIMER_LINE = 0;
- static const device_timer_id TIMER_DRAW = 1;
- static const device_timer_id TIMER_LBORDER = 2;
- static const device_timer_id TIMER_RBORDER = 3;
- static const device_timer_id TIMER_HINT = 4;
- static const device_timer_id TIMER_VINT = 5;
- static const device_timer_id TIMER_NMI = 6;
- static const device_timer_id TIMER_FLAGS = 7;
+ static constexpr device_timer_id TIMER_LINE = 0;
+ static constexpr device_timer_id TIMER_DRAW = 1;
+ static constexpr device_timer_id TIMER_LBORDER = 2;
+ static constexpr device_timer_id TIMER_RBORDER = 3;
+ static constexpr device_timer_id TIMER_HINT = 4;
+ static constexpr device_timer_id TIMER_VINT = 5;
+ static constexpr device_timer_id TIMER_NMI = 6;
+ static constexpr device_timer_id TIMER_FLAGS = 7;
required_device<palette_device> m_palette;
};
@@ -205,7 +194,7 @@ public:
DECLARE_PALETTE_INIT( sega315_5378 );
- virtual void set_sega315_5124_compatibility_mode( bool sega315_5124_compatibility_mode ) override;
+ virtual void set_sega315_5124_compatibility_mode(bool sega315_5124_compatibility_mode) override;
protected:
virtual void device_reset() override;
@@ -267,4 +256,4 @@ protected:
devcb = &sega315_5378_device::set_pause_callback(*device, DEVCB_##_devcb);
-#endif // MAME_DEVICES_VIDEO_315_5124_H
+#endif // MAME_VIDEO_315_5124_H
diff --git a/src/devices/video/315_5313.cpp b/src/devices/video/315_5313.cpp
index c6f9e28e456..a8af6681295 100644
--- a/src/devices/video/315_5313.cpp
+++ b/src/devices/video/315_5313.cpp
@@ -9,17 +9,155 @@
#include "sound/sn76496.h"
+
+/* The VDP occupies addresses C00000h to C0001Fh.
+
+ C00000h - Data port (8=r/w, 16=r/w)
+ C00002h - Data port (mirror)
+ C00004h - Control port (8=r/w, 16=r/w)
+ C00006h - Control port (mirror)
+ C00008h - HV counter (8/16=r/o)
+ C0000Ah - HV counter (mirror)
+ C0000Ch - HV counter (mirror)
+ C0000Eh - HV counter (mirror)
+ C00011h - SN76489 PSG (8=w/o)
+ C00013h - SN76489 PSG (mirror)
+ C00015h - SN76489 PSG (mirror)
+ C00017h - SN76489 PSG (mirror)
+*/
+
+#define MEGADRIV_VDP_VRAM(address) m_vram[(address)&0x7fff]
+
+
+
+/*
+
+ $00 - Mode Set Register No. 1
+ -----------------------------
+
+ d7 - No effect
+ d6 - No effect
+ d5 - No effect
+ d4 - IE1 (Horizontal interrupt enable)
+ d3 - 1= Invalid display setting
+ d2 - Palette select
+ d1 - M3 (HV counter latch enable)
+ d0 - Display disable
+
+ */
+
+#define MEGADRIVE_REG0_UNUSED ((m_regs[0x00]&0xc0)>>6)
+#define MEGADRIVE_REG0_BLANK_LEFT ((m_regs[0x00]&0x20)>>5) // like SMS, not used by any commercial games?
+#define MEGADRIVE_REG0_IRQ4_ENABLE ((m_regs[0x00]&0x10)>>4)
+#define MEGADRIVE_REG0_INVALID_MODE ((m_regs[0x00]&0x08)>>3) // invalid display mode, unhandled
+#define MEGADRIVE_REG0_SPECIAL_PAL ((m_regs[0x00]&0x04)>>2) // strange palette mode, unhandled
+#define MEGADRIVE_REG0_HVLATCH_ENABLE ((m_regs[0x00]&0x02)>>1) // HV Latch, used by lightgun games
+#define MEGADRIVE_REG0_DISPLAY_DISABLE ((m_regs[0x00]&0x01)>>0)
+
+/*
+
+ $01 - Mode Set Register No. 2
+ -----------------------------
+
+ d7 - TMS9918 / Genesis display select
+ d6 - DISP (Display Enable)
+ d5 - IE0 (Vertical Interrupt Enable)
+ d4 - M1 (DMA Enable)
+ d3 - M2 (PAL / NTSC)
+ d2 - SMS / Genesis display select
+ d1 - 0 (No effect)
+ d0 - 0 (See notes)
+
+*/
+
+#define MEGADRIVE_REG01_TMS9918_SELECT ((m_regs[0x01]&0x80)>>7)
+#define MEGADRIVE_REG01_DISP_ENABLE ((m_regs[0x01]&0x40)>>6)
+#define MEGADRIVE_REG01_IRQ6_ENABLE ((m_regs[0x01]&0x20)>>5)
+#define MEGADRIVE_REG01_DMA_ENABLE ((m_regs[0x01]&0x10)>>4)
+#define MEGADRIVE_REG01_240_LINE ((m_regs[0x01]&0x08)>>3)
+#define MEGADRIVE_REG01_SMS_SELECT ((m_regs[0x01]&0x04)>>2)
+#define MEGADRIVE_REG01_UNUSED ((m_regs[0x01]&0x02)>>1)
+#define MEGADRIVE_REG01_STRANGE_VIDEO ((m_regs[0x01]&0x01)>>0) // unhandled, does strange things to the display
+
+#define MEGADRIVE_REG02_UNUSED1 ((m_regs[0x02]&0xc0)>>6)
+#define MEGADRIVE_REG02_PATTERN_ADDR_A ((m_regs[0x02]&0x38)>>3)
+#define MEGADRIVE_REG02_UNUSED2 ((m_regs[0x02]&0x07)>>0)
+
+#define MEGADRIVE_REG03_UNUSED1 ((m_regs[0x03]&0xc0)>>6)
+#define MEGADRIVE_REG03_PATTERN_ADDR_W ((m_regs[0x03]&0x3e)>>1)
+#define MEGADRIVE_REG03_UNUSED2 ((m_regs[0x03]&0x01)>>0)
+
+#define MEGADRIVE_REG04_UNUSED ((m_regs[0x04]&0xf8)>>3)
+#define MEGADRIVE_REG04_PATTERN_ADDR_B ((m_regs[0x04]&0x07)>>0)
+
+#define MEGADRIVE_REG05_UNUSED ((m_regs[0x05]&0x80)>>7)
+#define MEGADRIVE_REG05_SPRITE_ADDR ((m_regs[0x05]&0x7f)>>0)
+
+/* 6? */
+
+#define MEGADRIVE_REG07_UNUSED ((m_regs[0x07]&0xc0)>>6)
+#define MEGADRIVE_REG07_BGCOLOUR ((m_regs[0x07]&0x3f)>>0)
+
+/* 8? */
+/* 9? */
+
+#define MEGADRIVE_REG0A_HINT_VALUE ((m_regs[0x0a]&0xff)>>0)
+
+#define MEGADRIVE_REG0B_UNUSED ((m_regs[0x0b]&0xf0)>>4)
+#define MEGADRIVE_REG0B_IRQ2_ENABLE ((m_regs[0x0b]&0x08)>>3)
+#define MEGADRIVE_REG0B_VSCROLL_MODE ((m_regs[0x0b]&0x04)>>2)
+#define MEGADRIVE_REG0B_HSCROLL_MODE ((m_regs[0x0b]&0x03)>>0)
+
+#define MEGADRIVE_REG0C_RS0 ((m_regs[0x0c]&0x80)>>7)
+#define MEGADRIVE_REG0C_UNUSED1 ((m_regs[0x0c]&0x40)>>6)
+#define MEGADRIVE_REG0C_SPECIAL ((m_regs[0x0c]&0x20)>>5)
+#define MEGADRIVE_REG0C_UNUSED2 ((m_regs[0x0c]&0x10)>>4)
+#define MEGADRIVE_REG0C_SHADOW_HIGLIGHT ((m_regs[0x0c]&0x08)>>3)
+#define MEGADRIVE_REG0C_INTERLEAVE ((m_regs[0x0c]&0x06)>>1)
+#define MEGADRIVE_REG0C_RS1 ((m_regs[0x0c]&0x01)>>0)
+
+#define MEGADRIVE_REG0D_UNUSED ((m_regs[0x0d]&0xc0)>>6)
+#define MEGADRIVE_REG0D_HSCROLL_ADDR ((m_regs[0x0d]&0x3f)>>0)
+
+/* e? */
+
+#define MEGADRIVE_REG0F_AUTO_INC ((m_regs[0x0f]&0xff)>>0)
+
+#define MEGADRIVE_REG10_UNUSED1 ((m_regs[0x10]&0xc0)>>6)
+#define MEGADRIVE_REG10_VSCROLL_SIZE ((m_regs[0x10]&0x30)>>4)
+#define MEGADRIVE_REG10_UNUSED2 ((m_regs[0x10]&0x0c)>>2)
+#define MEGADRIVE_REG10_HSCROLL_SIZE ((m_regs[0x10]&0x03)>>0)
+
+#define MEGADRIVE_REG11_WINDOW_RIGHT ((m_regs[0x11]&0x80)>>7)
+#define MEGADRIVE_REG11_UNUSED ((m_regs[0x11]&0x60)>>5)
+#define MEGADRIVE_REG11_WINDOW_HPOS ((m_regs[0x11]&0x1f)>>0)
+
+#define MEGADRIVE_REG12_WINDOW_DOWN ((m_regs[0x12]&0x80)>>7)
+#define MEGADRIVE_REG12_UNUSED ((m_regs[0x12]&0x60)>>5)
+#define MEGADRIVE_REG12_WINDOW_VPOS ((m_regs[0x12]&0x1f)>>0)
+
+#define MEGADRIVE_REG13_DMALENGTH1 ((m_regs[0x13]&0xff)>>0)
+
+#define MEGADRIVE_REG14_DMALENGTH2 ((m_regs[0x14]&0xff)>>0)
+
+#define MEGADRIVE_REG15_DMASOURCE1 ((m_regs[0x15]&0xff)>>0)
+#define MEGADRIVE_REG16_DMASOURCE2 ((m_regs[0x16]&0xff)>>0)
+
+#define MEGADRIVE_REG17_DMASOURCE3 ((m_regs[0x17]&0xff)>>0)
+#define MEGADRIVE_REG17_DMATYPE ((m_regs[0x17]&0xc0)>>6)
+#define MEGADRIVE_REG17_UNUSED ((m_regs[0x17]&0x3f)>>0)
+
+
#define MAX_HPOSITION 480
-const device_type SEGA315_5313 = device_creator<sega315_5313_device>;
+DEFINE_DEVICE_TYPE(SEGA315_5313, sega315_5313_device, "sega315_5313", "Sega 315-5313 Megadrive VDP")
-sega315_5313_device::sega315_5313_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : sega315_5124_device(mconfig, SEGA315_5313, "Sega 315-5313 Megadrive VDP", tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true, "sega315_5313", __FILE__), m_render_bitmap(nullptr),
- m_render_line(nullptr), m_render_line_raw(nullptr), m_megadriv_scanline_timer(nullptr),
- m_sndirqline_callback(*this),
- m_lv6irqline_callback(*this),
- m_lv4irqline_callback(*this), m_command_pending(0), m_command_part1(0), m_command_part2(0), m_vdp_code(0), m_vdp_address(0), m_vram_fill_pending(0), m_vram_fill_length(0), m_irq4counter(0),
+sega315_5313_device::sega315_5313_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ sega315_5124_device(mconfig, SEGA315_5313, tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true),
+ m_render_bitmap(nullptr), m_render_line(nullptr), m_render_line_raw(nullptr), m_megadriv_scanline_timer(nullptr),
+ m_sndirqline_callback(*this), m_lv6irqline_callback(*this), m_lv4irqline_callback(*this),
+ m_command_pending(0), m_command_part1(0), m_command_part2(0), m_vdp_code(0), m_vdp_address(0), m_vram_fill_pending(0), m_vram_fill_length(0), m_irq4counter(0),
m_imode_odd_frame(0), m_sprite_collision(0), m_irq6_pending(0), m_irq4_pending(0), m_scanline_counter(0), m_vblank_flag(0), m_imode(0), m_visible_scanlines(0), m_irq6_scanline(0),
m_z80irq_scanline(0), m_total_scanlines(0), m_base_total_scanlines(0), m_framerate(0), m_vdp_pal(0), m_use_cram(0),
m_dma_delay(0), m_regs(nullptr), m_vram(nullptr), m_cram(nullptr), m_vsram(nullptr), m_internal_sprite_attribute_table(nullptr), m_irq6_on_timer(nullptr), m_irq4_on_timer(nullptr),
diff --git a/src/devices/video/315_5313.h b/src/devices/video/315_5313.h
index 592c0be54e5..5be1f05d4b6 100644
--- a/src/devices/video/315_5313.h
+++ b/src/devices/video/315_5313.h
@@ -1,6 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/* Sega Megadrive / Genesis VDP */
+#ifndef MAME_VIDEO_315_5313_H
+#define MAME_VIDEO_315_5313_H
#pragma once
@@ -8,144 +10,6 @@
#include "cpu/m68000/m68000.h"
-/* The VDP occupies addresses C00000h to C0001Fh.
-
- C00000h - Data port (8=r/w, 16=r/w)
- C00002h - Data port (mirror)
- C00004h - Control port (8=r/w, 16=r/w)
- C00006h - Control port (mirror)
- C00008h - HV counter (8/16=r/o)
- C0000Ah - HV counter (mirror)
- C0000Ch - HV counter (mirror)
- C0000Eh - HV counter (mirror)
- C00011h - SN76489 PSG (8=w/o)
- C00013h - SN76489 PSG (mirror)
- C00015h - SN76489 PSG (mirror)
- C00017h - SN76489 PSG (mirror)
-*/
-
-#define MEGADRIV_VDP_VRAM(address) m_vram[(address)&0x7fff]
-
-
-
-/*
-
- $00 - Mode Set Register No. 1
- -----------------------------
-
- d7 - No effect
- d6 - No effect
- d5 - No effect
- d4 - IE1 (Horizontal interrupt enable)
- d3 - 1= Invalid display setting
- d2 - Palette select
- d1 - M3 (HV counter latch enable)
- d0 - Display disable
-
- */
-
-#define MEGADRIVE_REG0_UNUSED ((m_regs[0x00]&0xc0)>>6)
-#define MEGADRIVE_REG0_BLANK_LEFT ((m_regs[0x00]&0x20)>>5) // like SMS, not used by any commercial games?
-#define MEGADRIVE_REG0_IRQ4_ENABLE ((m_regs[0x00]&0x10)>>4)
-#define MEGADRIVE_REG0_INVALID_MODE ((m_regs[0x00]&0x08)>>3) // invalid display mode, unhandled
-#define MEGADRIVE_REG0_SPECIAL_PAL ((m_regs[0x00]&0x04)>>2) // strange palette mode, unhandled
-#define MEGADRIVE_REG0_HVLATCH_ENABLE ((m_regs[0x00]&0x02)>>1) // HV Latch, used by lightgun games
-#define MEGADRIVE_REG0_DISPLAY_DISABLE ((m_regs[0x00]&0x01)>>0)
-
-/*
-
- $01 - Mode Set Register No. 2
- -----------------------------
-
- d7 - TMS9918 / Genesis display select
- d6 - DISP (Display Enable)
- d5 - IE0 (Vertical Interrupt Enable)
- d4 - M1 (DMA Enable)
- d3 - M2 (PAL / NTSC)
- d2 - SMS / Genesis display select
- d1 - 0 (No effect)
- d0 - 0 (See notes)
-
-*/
-
-#define MEGADRIVE_REG01_TMS9918_SELECT ((m_regs[0x01]&0x80)>>7)
-#define MEGADRIVE_REG01_DISP_ENABLE ((m_regs[0x01]&0x40)>>6)
-#define MEGADRIVE_REG01_IRQ6_ENABLE ((m_regs[0x01]&0x20)>>5)
-#define MEGADRIVE_REG01_DMA_ENABLE ((m_regs[0x01]&0x10)>>4)
-#define MEGADRIVE_REG01_240_LINE ((m_regs[0x01]&0x08)>>3)
-#define MEGADRIVE_REG01_SMS_SELECT ((m_regs[0x01]&0x04)>>2)
-#define MEGADRIVE_REG01_UNUSED ((m_regs[0x01]&0x02)>>1)
-#define MEGADRIVE_REG01_STRANGE_VIDEO ((m_regs[0x01]&0x01)>>0) // unhandled, does strange things to the display
-
-#define MEGADRIVE_REG02_UNUSED1 ((m_regs[0x02]&0xc0)>>6)
-#define MEGADRIVE_REG02_PATTERN_ADDR_A ((m_regs[0x02]&0x38)>>3)
-#define MEGADRIVE_REG02_UNUSED2 ((m_regs[0x02]&0x07)>>0)
-
-#define MEGADRIVE_REG03_UNUSED1 ((m_regs[0x03]&0xc0)>>6)
-#define MEGADRIVE_REG03_PATTERN_ADDR_W ((m_regs[0x03]&0x3e)>>1)
-#define MEGADRIVE_REG03_UNUSED2 ((m_regs[0x03]&0x01)>>0)
-
-#define MEGADRIVE_REG04_UNUSED ((m_regs[0x04]&0xf8)>>3)
-#define MEGADRIVE_REG04_PATTERN_ADDR_B ((m_regs[0x04]&0x07)>>0)
-
-#define MEGADRIVE_REG05_UNUSED ((m_regs[0x05]&0x80)>>7)
-#define MEGADRIVE_REG05_SPRITE_ADDR ((m_regs[0x05]&0x7f)>>0)
-
-/* 6? */
-
-#define MEGADRIVE_REG07_UNUSED ((m_regs[0x07]&0xc0)>>6)
-#define MEGADRIVE_REG07_BGCOLOUR ((m_regs[0x07]&0x3f)>>0)
-
-/* 8? */
-/* 9? */
-
-#define MEGADRIVE_REG0A_HINT_VALUE ((m_regs[0x0a]&0xff)>>0)
-
-#define MEGADRIVE_REG0B_UNUSED ((m_regs[0x0b]&0xf0)>>4)
-#define MEGADRIVE_REG0B_IRQ2_ENABLE ((m_regs[0x0b]&0x08)>>3)
-#define MEGADRIVE_REG0B_VSCROLL_MODE ((m_regs[0x0b]&0x04)>>2)
-#define MEGADRIVE_REG0B_HSCROLL_MODE ((m_regs[0x0b]&0x03)>>0)
-
-#define MEGADRIVE_REG0C_RS0 ((m_regs[0x0c]&0x80)>>7)
-#define MEGADRIVE_REG0C_UNUSED1 ((m_regs[0x0c]&0x40)>>6)
-#define MEGADRIVE_REG0C_SPECIAL ((m_regs[0x0c]&0x20)>>5)
-#define MEGADRIVE_REG0C_UNUSED2 ((m_regs[0x0c]&0x10)>>4)
-#define MEGADRIVE_REG0C_SHADOW_HIGLIGHT ((m_regs[0x0c]&0x08)>>3)
-#define MEGADRIVE_REG0C_INTERLEAVE ((m_regs[0x0c]&0x06)>>1)
-#define MEGADRIVE_REG0C_RS1 ((m_regs[0x0c]&0x01)>>0)
-
-#define MEGADRIVE_REG0D_UNUSED ((m_regs[0x0d]&0xc0)>>6)
-#define MEGADRIVE_REG0D_HSCROLL_ADDR ((m_regs[0x0d]&0x3f)>>0)
-
-/* e? */
-
-#define MEGADRIVE_REG0F_AUTO_INC ((m_regs[0x0f]&0xff)>>0)
-
-#define MEGADRIVE_REG10_UNUSED1 ((m_regs[0x10]&0xc0)>>6)
-#define MEGADRIVE_REG10_VSCROLL_SIZE ((m_regs[0x10]&0x30)>>4)
-#define MEGADRIVE_REG10_UNUSED2 ((m_regs[0x10]&0x0c)>>2)
-#define MEGADRIVE_REG10_HSCROLL_SIZE ((m_regs[0x10]&0x03)>>0)
-
-#define MEGADRIVE_REG11_WINDOW_RIGHT ((m_regs[0x11]&0x80)>>7)
-#define MEGADRIVE_REG11_UNUSED ((m_regs[0x11]&0x60)>>5)
-#define MEGADRIVE_REG11_WINDOW_HPOS ((m_regs[0x11]&0x1f)>>0)
-
-#define MEGADRIVE_REG12_WINDOW_DOWN ((m_regs[0x12]&0x80)>>7)
-#define MEGADRIVE_REG12_UNUSED ((m_regs[0x12]&0x60)>>5)
-#define MEGADRIVE_REG12_WINDOW_VPOS ((m_regs[0x12]&0x1f)>>0)
-
-#define MEGADRIVE_REG13_DMALENGTH1 ((m_regs[0x13]&0xff)>>0)
-
-#define MEGADRIVE_REG14_DMALENGTH2 ((m_regs[0x14]&0xff)>>0)
-
-#define MEGADRIVE_REG15_DMASOURCE1 ((m_regs[0x15]&0xff)>>0)
-#define MEGADRIVE_REG16_DMASOURCE2 ((m_regs[0x16]&0xff)>>0)
-
-#define MEGADRIVE_REG17_DMASOURCE3 ((m_regs[0x17]&0xff)>>0)
-#define MEGADRIVE_REG17_DMATYPE ((m_regs[0x17]&0xc0)>>6)
-#define MEGADRIVE_REG17_UNUSED ((m_regs[0x17]&0x3f)>>0)
-
-
#define MCFG_SEGA315_5313_IS_PAL(_bool) \
sega315_5313_device::set_signal_type(*device, _bool);
@@ -175,35 +39,35 @@
// Temporary solution while 32x VDP mixing and scanline interrupting is moved outside MD VDP
-typedef device_delegate<void (int x, uint32_t priority, uint16_t &lineptr)> md_32x_scanline_delegate;
-typedef device_delegate<void (int scanline, int irq6)> md_32x_interrupt_delegate;
-typedef device_delegate<void (int scanline)> md_32x_scanline_helper_delegate;
-
#define MCFG_SEGA315_5313_32X_SCANLINE_CB(_class, _method) \
- sega315_5313_device::set_md_32x_scanline(*device, md_32x_scanline_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ sega315_5313_device::set_md_32x_scanline(*device, sega315_5313_device::md_32x_scanline_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_SEGA315_5313_32X_INTERRUPT_CB(_class, _method) \
- sega315_5313_device::set_md_32x_interrupt(*device, md_32x_interrupt_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ sega315_5313_device::set_md_32x_interrupt(*device, sega315_5313_device::md_32x_interrupt_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_SEGA315_5313_32X_SCANLINE_HELPER_CB(_class, _method) \
- sega315_5313_device::set_md_32x_scanline_helper(*device, md_32x_scanline_helper_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ sega315_5313_device::set_md_32x_scanline_helper(*device, sega315_5313_device::md_32x_scanline_helper_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
class sega315_5313_device : public sega315_5124_device
{
public:
+ typedef device_delegate<void (int x, uint32_t priority, uint16_t &lineptr)> md_32x_scanline_delegate;
+ typedef device_delegate<void (int scanline, int irq6)> md_32x_interrupt_delegate;
+ typedef device_delegate<void (int scanline)> md_32x_scanline_helper_delegate;
+
sega315_5313_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_sndirqline_callback(device_t &device, _Object object) { return downcast<sega315_5313_device &>(device).m_sndirqline_callback.set_callback(object); }
- template<class _Object> static devcb_base &set_lv6irqline_callback(device_t &device, _Object object) { return downcast<sega315_5313_device &>(device).m_lv6irqline_callback.set_callback(object); }
- template<class _Object> static devcb_base &set_lv4irqline_callback(device_t &device, _Object object) { return downcast<sega315_5313_device &>(device).m_lv4irqline_callback.set_callback(object); }
+ template <class Object> static devcb_base &set_sndirqline_callback(device_t &device, Object &&cb) { return downcast<sega315_5313_device &>(device).m_sndirqline_callback.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_lv6irqline_callback(device_t &device, Object &&cb) { return downcast<sega315_5313_device &>(device).m_lv6irqline_callback.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_lv4irqline_callback(device_t &device, Object &&cb) { return downcast<sega315_5313_device &>(device).m_lv4irqline_callback.set_callback(std::forward<Object>(cb)); }
static void set_alt_timing(device_t &device, int use_alt_timing);
static void set_palwrite_base(device_t &device, int palwrite_base);
static void static_set_palette_tag(device_t &device, const char *tag);
- static void set_md_32x_scanline(device_t &device, md_32x_scanline_delegate callback) { downcast<sega315_5313_device &>(device).m_32x_scanline_func = callback; }
- static void set_md_32x_interrupt(device_t &device, md_32x_interrupt_delegate callback) { downcast<sega315_5313_device &>(device).m_32x_interrupt_func = callback; }
- static void set_md_32x_scanline_helper(device_t &device, md_32x_scanline_helper_delegate callback) { downcast<sega315_5313_device &>(device).m_32x_scanline_helper_func = callback; }
+ static void set_md_32x_scanline(device_t &device, md_32x_scanline_delegate &&cb) { downcast<sega315_5313_device &>(device).m_32x_scanline_func = std::move(cb); }
+ static void set_md_32x_interrupt(device_t &device, md_32x_interrupt_delegate &&cb) { downcast<sega315_5313_device &>(device).m_32x_interrupt_func = std::move(cb); }
+ static void set_md_32x_scanline_helper(device_t &device, md_32x_scanline_helper_delegate &&cb) { downcast<sega315_5313_device &>(device).m_32x_scanline_helper_func = std::move(cb); }
int m_use_alt_timing; // use MAME scanline timer instead, render only one scanline to a single line buffer, to be rendered by a partial update call.. experimental
@@ -220,8 +84,8 @@ public:
TIMER_CALLBACK_MEMBER(irq4_on_timer_callback);
void vdp_handle_eof();
void device_reset_old();
- void vdp_clear_irq6_pending(void) { m_irq6_pending = 0; };
- void vdp_clear_irq4_pending(void) { m_irq4_pending = 0; };
+ void vdp_clear_irq6_pending() { m_irq6_pending = 0; };
+ void vdp_clear_irq4_pending() { m_irq4_pending = 0; };
// set some VDP variables at start (shall be moved to a device interface?)
void set_scanline_counter(int scanline) { m_scanline_counter = scanline; }
@@ -234,7 +98,7 @@ public:
int get_imode() { return m_imode; }
- void vdp_clear_bitmap(void)
+ void vdp_clear_bitmap()
{
if (m_render_bitmap)
m_render_bitmap->fill(0);
@@ -265,7 +129,6 @@ protected:
md_32x_scanline_helper_delegate m_32x_scanline_helper_func;
private:
-
int m_command_pending; // 2nd half of command pending..
uint16_t m_command_part1;
uint16_t m_command_part2;
@@ -355,4 +218,6 @@ private:
};
-extern const device_type SEGA315_5313;
+DECLARE_DEVICE_TYPE(SEGA315_5313, sega315_5313_device)
+
+#endif // MAME_VIDEO_315_5313_H
diff --git a/src/devices/video/bufsprite.cpp b/src/devices/video/bufsprite.cpp
index b7cd1302158..1c7180ec8cd 100644
--- a/src/devices/video/bufsprite.cpp
+++ b/src/devices/video/bufsprite.cpp
@@ -17,34 +17,31 @@
//**************************************************************************
// device type definition
-const device_type BUFFERED_SPRITERAM8 = device_creator<buffered_spriteram8_device>;
-const device_type BUFFERED_SPRITERAM16 = device_creator<buffered_spriteram16_device>;
-const device_type BUFFERED_SPRITERAM32 = device_creator<buffered_spriteram32_device>;
-const device_type BUFFERED_SPRITERAM64 = device_creator<buffered_spriteram64_device>;
+DEFINE_DEVICE_TYPE(BUFFERED_SPRITERAM8, buffered_spriteram8_device, "buffered_spriteram8", "Buffered 8-bit Sprite RAM")
+DEFINE_DEVICE_TYPE(BUFFERED_SPRITERAM16, buffered_spriteram16_device, "buffered_spriteram16", "Buffered 16-bit Sprite RAM")
+DEFINE_DEVICE_TYPE(BUFFERED_SPRITERAM32, buffered_spriteram32_device, "buffered_spriteram32", "Buffered 32-bit Sprite RAM")
+DEFINE_DEVICE_TYPE(BUFFERED_SPRITERAM64, buffered_spriteram64_device, "buffered_spriteram64", "Buffered 64-bit Sprite RAM")
-template <typename _Type>
-buffered_spriteram_device<_Type>::buffered_spriteram_device(
+template <typename Type>
+buffered_spriteram_device<Type>::buffered_spriteram_device(
const machine_config &mconfig,
device_type type,
- const char *name,
const char *tag,
device_t *owner,
- uint32_t clock,
- const char *shortname,
- const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_spriteram(*this, DEVICE_SELF)
{
}
-template <typename _Type>
-void buffered_spriteram_device<_Type>::device_start()
+template <typename Type>
+void buffered_spriteram_device<Type>::device_start()
{
- if (m_spriteram != nullptr)
+ if (m_spriteram)
{
- m_buffered.resize(m_spriteram.bytes() / sizeof(_Type));
+ m_buffered.resize(m_spriteram.bytes() / sizeof(Type));
save_item(NAME(m_buffered));
}
}
@@ -52,27 +49,27 @@ void buffered_spriteram_device<_Type>::device_start()
buffered_spriteram8_device::buffered_spriteram8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : buffered_spriteram_device<u8>(mconfig, BUFFERED_SPRITERAM8, "Buffered 8-bit Sprite RAM", tag, owner, clock, "buffered_spriteram8", __FILE__)
+ : buffered_spriteram_device<u8>(mconfig, BUFFERED_SPRITERAM8, tag, owner, clock)
{
}
buffered_spriteram16_device::buffered_spriteram16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : buffered_spriteram_device<u16>(mconfig, BUFFERED_SPRITERAM16, "Buffered 16-bit Sprite RAM", tag, owner, clock, "buffered_spriteram16", __FILE__)
+ : buffered_spriteram_device<u16>(mconfig, BUFFERED_SPRITERAM16, tag, owner, clock)
{
}
buffered_spriteram32_device::buffered_spriteram32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : buffered_spriteram_device<u32>(mconfig, BUFFERED_SPRITERAM32, "Buffered 32-bit Sprite RAM", tag, owner, clock, "buffered_spriteram32", __FILE__)
+ : buffered_spriteram_device<u32>(mconfig, BUFFERED_SPRITERAM32, tag, owner, clock)
{
}
buffered_spriteram64_device::buffered_spriteram64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : buffered_spriteram_device<u64>(mconfig, BUFFERED_SPRITERAM64, "Buffered 64-bit Sprite RAM", tag, owner, clock, "buffered_spriteram64", __FILE__)
+ : buffered_spriteram_device<u64>(mconfig, BUFFERED_SPRITERAM64, tag, owner, clock)
{
}
diff --git a/src/devices/video/bufsprite.h b/src/devices/video/bufsprite.h
index 2293efef536..995f0894eaf 100644
--- a/src/devices/video/bufsprite.h
+++ b/src/devices/video/bufsprite.h
@@ -8,8 +8,8 @@
*********************************************************************/
-#ifndef MAME_DEVICES_VIDEO_BUFSPRITE_H
-#define MAME_DEVICES_VIDEO_BUFSPRITE_H
+#ifndef MAME_VIDEO_BUFSPRITE_H
+#define MAME_VIDEO_BUFSPRITE_H
#pragma once
@@ -20,10 +20,10 @@
//**************************************************************************
// device type definition
-extern const device_type BUFFERED_SPRITERAM8;
-extern const device_type BUFFERED_SPRITERAM16;
-extern const device_type BUFFERED_SPRITERAM32;
-extern const device_type BUFFERED_SPRITERAM64;
+DECLARE_DEVICE_TYPE(BUFFERED_SPRITERAM8, buffered_spriteram8_device)
+DECLARE_DEVICE_TYPE(BUFFERED_SPRITERAM16, buffered_spriteram16_device)
+DECLARE_DEVICE_TYPE(BUFFERED_SPRITERAM32, buffered_spriteram32_device)
+DECLARE_DEVICE_TYPE(BUFFERED_SPRITERAM64, buffered_spriteram64_device)
@@ -48,50 +48,47 @@ extern const device_type BUFFERED_SPRITERAM64;
// ======================> buffered_spriteram_device
// base class to manage buffered spriteram
-template<typename _Type>
+template <typename Type>
class buffered_spriteram_device : public device_t
{
public:
- // construction
- buffered_spriteram_device(
- const machine_config &mconfig,
- device_type type,
- const char *name,
- const char *tag,
- device_t *owner,
- uint32_t clock,
- const char *shortname,
- const char *source);
-
// getters
- _Type *live() const { return m_spriteram; }
- _Type *buffer() { return &m_buffered[0]; }
+ Type *live() const { return m_spriteram; }
+ Type *buffer() { return &m_buffered[0]; }
uint32_t bytes() const { return m_spriteram.bytes(); }
// operations
- _Type *copy(uint32_t srcoffset = 0, uint32_t srclength = 0x7fffffff)
+ Type *copy(uint32_t srcoffset = 0, uint32_t srclength = 0x7fffffff)
{
assert(m_spriteram != nullptr);
if (m_spriteram != nullptr)
- memcpy(&m_buffered[0], m_spriteram + srcoffset, (std::min<size_t>)(srclength, m_spriteram.bytes() / sizeof(_Type) - srcoffset) * sizeof(_Type));
+ memcpy(&m_buffered[0], m_spriteram + srcoffset, (std::min<size_t>)(srclength, m_spriteram.bytes() / sizeof(Type) - srcoffset) * sizeof(Type));
return &m_buffered[0];
}
// read/write handlers
- void write(address_space &space, offs_t offset, _Type data, _Type mem_mask = ~_Type(0)) { copy(); }
+ void write(address_space &space, offs_t offset, Type data, Type mem_mask = ~Type(0)) { copy(); }
// VBLANK handlers
DECLARE_WRITE_LINE_MEMBER(vblank_copy_rising) { if (state) copy(); }
DECLARE_WRITE_LINE_MEMBER(vblank_copy_falling) { if (!state) copy(); }
protected:
+ // construction
+ buffered_spriteram_device(
+ const machine_config &mconfig,
+ device_type type,
+ const char *tag,
+ device_t *owner,
+ uint32_t clock);
+
// first-time setup
virtual void device_start() override;
private:
// internal state
- required_shared_ptr<_Type> m_spriteram;
- std::vector<_Type> m_buffered;
+ required_shared_ptr<Type> m_spriteram;
+ std::vector<Type> m_buffered;
};
@@ -135,4 +132,4 @@ public:
};
-#endif // MAME_DEVICES_VIDEO_BUFSPRITE_H
+#endif // MAME_VIDEO_BUFSPRITE_H
diff --git a/src/devices/video/cdp1861.cpp b/src/devices/video/cdp1861.cpp
index 9e3723bdfdd..72a4fec46a7 100644
--- a/src/devices/video/cdp1861.cpp
+++ b/src/devices/video/cdp1861.cpp
@@ -15,9 +15,9 @@
// MACROS / CONSTANTS
//**************************************************************************
-#define CDP1861_CYCLES_DMA_START 2*8
-#define CDP1861_CYCLES_DMA_ACTIVE 8*8
-#define CDP1861_CYCLES_DMA_WAIT 6*8
+#define CDP1861_CYCLES_DMA_START (2*8)
+#define CDP1861_CYCLES_DMA_ACTIVE (8*8)
+#define CDP1861_CYCLES_DMA_WAIT (6*8)
@@ -26,7 +26,7 @@
//**************************************************************************
// device type definition
-const device_type CDP1861 = device_creator<cdp1861_device>;
+DEFINE_DEVICE_TYPE(CDP1861, cdp1861_device, "cdp1861", "RCA CDP1861")
@@ -39,7 +39,7 @@ const device_type CDP1861 = device_creator<cdp1861_device>;
//-------------------------------------------------
cdp1861_device::cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CDP1861, "CDP1861", tag, owner, clock, "cdp1861", __FILE__),
+ : device_t(mconfig, CDP1861, tag, owner, clock),
device_video_interface(mconfig, *this),
m_write_irq(*this),
m_write_dma_out(*this),
@@ -85,8 +85,8 @@ void cdp1861_device::device_start()
void cdp1861_device::device_reset()
{
- m_int_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_INT_START, 0));
- m_efx_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_EFX_TOP_START, 0));
+ m_int_timer->adjust(m_screen->time_until_pos(SCANLINE_INT_START, 0));
+ m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_TOP_START, 0));
m_dma_timer->adjust(clocks_to_attotime(CDP1861_CYCLES_DMA_START));
m_disp = 0;
@@ -110,14 +110,14 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para
switch (id)
{
case TIMER_INT:
- if (scanline == CDP1861_SCANLINE_INT_START)
+ if (scanline == SCANLINE_INT_START)
{
if (m_disp)
{
m_write_irq(ASSERT_LINE);
}
- m_int_timer->adjust(m_screen->time_until_pos( CDP1861_SCANLINE_INT_END, 0));
+ m_int_timer->adjust(m_screen->time_until_pos( SCANLINE_INT_END, 0));
}
else
{
@@ -126,31 +126,31 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para
m_write_irq(CLEAR_LINE);
}
- m_int_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_INT_START, 0));
+ m_int_timer->adjust(m_screen->time_until_pos(SCANLINE_INT_START, 0));
}
break;
case TIMER_EFX:
switch (scanline)
{
- case CDP1861_SCANLINE_EFX_TOP_START:
+ case SCANLINE_EFX_TOP_START:
m_write_efx(ASSERT_LINE);
- m_efx_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_EFX_TOP_END, 0));
+ m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_TOP_END, 0));
break;
- case CDP1861_SCANLINE_EFX_TOP_END:
+ case SCANLINE_EFX_TOP_END:
m_write_efx(CLEAR_LINE);
- m_efx_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_EFX_BOTTOM_START, 0));
+ m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_BOTTOM_START, 0));
break;
- case CDP1861_SCANLINE_EFX_BOTTOM_START:
+ case SCANLINE_EFX_BOTTOM_START:
m_write_efx(ASSERT_LINE);
- m_efx_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_EFX_BOTTOM_END, 0));
+ m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_BOTTOM_END, 0));
break;
- case CDP1861_SCANLINE_EFX_BOTTOM_END:
+ case SCANLINE_EFX_BOTTOM_END:
m_write_efx(CLEAR_LINE);
- m_efx_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_EFX_TOP_START, 0));
+ m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_TOP_START, 0));
break;
}
break;
@@ -160,7 +160,7 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para
{
if (m_disp)
{
- if (scanline >= CDP1861_SCANLINE_DISPLAY_START && scanline < CDP1861_SCANLINE_DISPLAY_END)
+ if (scanline >= SCANLINE_DISPLAY_START && scanline < SCANLINE_DISPLAY_END)
{
m_write_dma_out(CLEAR_LINE);
}
@@ -174,7 +174,7 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para
{
if (m_disp)
{
- if (scanline >= CDP1861_SCANLINE_DISPLAY_START && scanline < CDP1861_SCANLINE_DISPLAY_END)
+ if (scanline >= SCANLINE_DISPLAY_START && scanline < SCANLINE_DISPLAY_END)
{
m_write_dma_out(ASSERT_LINE);
}
diff --git a/src/devices/video/cdp1861.h b/src/devices/video/cdp1861.h
index c925583d853..41a9609b651 100644
--- a/src/devices/video/cdp1861.h
+++ b/src/devices/video/cdp1861.h
@@ -21,8 +21,8 @@
**********************************************************************/
-#ifndef MAME_DEVICES_VIDEO_CDP1861_H
-#define MAME_DEVICES_VIDEO_CDP1861_H
+#ifndef MAME_VIDEO_CDP1861_H
+#define MAME_VIDEO_CDP1861_H
#pragma once
@@ -30,36 +30,6 @@
//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define CDP1861_VISIBLE_COLUMNS 64
-#define CDP1861_VISIBLE_LINES 128
-
-#define CDP1861_HBLANK_START 14 * 8
-#define CDP1861_HBLANK_END 12
-#define CDP1861_HSYNC_START 0
-#define CDP1861_HSYNC_END 12
-#define CDP1861_SCREEN_WIDTH 14 * 8
-
-#define CDP1861_TOTAL_SCANLINES 262
-
-#define CDP1861_SCANLINE_DISPLAY_START 80
-#define CDP1861_SCANLINE_DISPLAY_END 208
-#define CDP1861_SCANLINE_VBLANK_START 262
-#define CDP1861_SCANLINE_VBLANK_END 16
-#define CDP1861_SCANLINE_VSYNC_START 16
-#define CDP1861_SCANLINE_VSYNC_END 0
-#define CDP1861_SCANLINE_INT_START CDP1861_SCANLINE_DISPLAY_START - 2
-#define CDP1861_SCANLINE_INT_END CDP1861_SCANLINE_DISPLAY_START
-#define CDP1861_SCANLINE_EFX_TOP_START CDP1861_SCANLINE_DISPLAY_START - 4
-#define CDP1861_SCANLINE_EFX_TOP_END CDP1861_SCANLINE_DISPLAY_START
-#define CDP1861_SCANLINE_EFX_BOTTOM_START CDP1861_SCANLINE_DISPLAY_END - 4
-#define CDP1861_SCANLINE_EFX_BOTTOM_END CDP1861_SCANLINE_DISPLAY_END
-
-
-
-//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
@@ -77,7 +47,7 @@
MCFG_VIDEO_SET_SCREEN(_tag) \
MCFG_SCREEN_ADD(_tag, RASTER) \
MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1861_device, screen_update) \
- MCFG_SCREEN_RAW_PARAMS(_clock, CDP1861_SCREEN_WIDTH, CDP1861_HBLANK_END, CDP1861_HBLANK_START, CDP1861_TOTAL_SCANLINES, CDP1861_SCANLINE_VBLANK_END, CDP1861_SCANLINE_VBLANK_START)
+ MCFG_SCREEN_RAW_PARAMS(_clock, cdp1861_device::SCREEN_WIDTH, cdp1861_device::HBLANK_END, cdp1861_device::HBLANK_START, cdp1861_device::TOTAL_SCANLINES, cdp1861_device::SCANLINE_VBLANK_END, cdp1861_device::SCANLINE_VBLANK_START)
@@ -91,12 +61,36 @@ class cdp1861_device : public device_t,
public device_video_interface
{
public:
+ static constexpr unsigned VISIBLE_COLUMNS = 64;
+ static constexpr unsigned VISIBLE_LINES = 128;
+
+ static constexpr unsigned HBLANK_START = 14 * 8;
+ static constexpr unsigned HBLANK_END = 12;
+ static constexpr unsigned HSYNC_START = 0;
+ static constexpr unsigned HSYNC_END = 12;
+ static constexpr unsigned SCREEN_WIDTH = 14 * 8;
+
+ static constexpr unsigned TOTAL_SCANLINES = 262;
+
+ static constexpr unsigned SCANLINE_DISPLAY_START = 80;
+ static constexpr unsigned SCANLINE_DISPLAY_END = 208;
+ static constexpr unsigned SCANLINE_VBLANK_START = 262;
+ static constexpr unsigned SCANLINE_VBLANK_END = 16;
+ static constexpr unsigned SCANLINE_VSYNC_START = 16;
+ static constexpr unsigned SCANLINE_VSYNC_END = 0;
+ static constexpr unsigned SCANLINE_INT_START = SCANLINE_DISPLAY_START - 2;
+ static constexpr unsigned SCANLINE_INT_END = SCANLINE_DISPLAY_START;
+ static constexpr unsigned SCANLINE_EFX_TOP_START = SCANLINE_DISPLAY_START - 4;
+ static constexpr unsigned SCANLINE_EFX_TOP_END = SCANLINE_DISPLAY_START;
+ static constexpr unsigned SCANLINE_EFX_BOTTOM_START = SCANLINE_DISPLAY_END - 4;
+ static constexpr unsigned SCANLINE_EFX_BOTTOM_END = SCANLINE_DISPLAY_END;
+
// construction/destruction
cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<cdp1861_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_out_wr_callback(device_t &device, _Object object) { return downcast<cdp1861_device &>(device).m_write_dma_out.set_callback(object); }
- template<class _Object> static devcb_base &set_efx_wr_callback(device_t &device, _Object object) { return downcast<cdp1861_device &>(device).m_write_efx.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1861_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_out_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1861_device &>(device).m_write_dma_out.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_efx_wr_callback(device_t &device, Object &&cb) { return downcast<cdp1861_device &>(device).m_write_efx.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( dma_w );
DECLARE_WRITE_LINE_MEMBER( disp_on_w );
@@ -137,7 +131,6 @@ private:
// device type definition
-extern const device_type CDP1861;
-
+DECLARE_DEVICE_TYPE(CDP1861, cdp1861_device)
-#endif // MAME_DEVICES_VIDEO_CDP1861_H
+#endif // MAME_VIDEO_CDP1861_H
diff --git a/src/devices/video/cdp1862.cpp b/src/devices/video/cdp1862.cpp
index 4d7525195c0..498bb4a8584 100644
--- a/src/devices/video/cdp1862.cpp
+++ b/src/devices/video/cdp1862.cpp
@@ -17,7 +17,7 @@
// MACROS / CONSTANTS
//**************************************************************************
-static const int CDP1862_BACKGROUND_COLOR_SEQUENCE[] = { 2, 0, 1, 4 };
+static constexpr int CDP1862_BACKGROUND_COLOR_SEQUENCE[] = { 2, 0, 1, 4 };
@@ -26,7 +26,7 @@ static const int CDP1862_BACKGROUND_COLOR_SEQUENCE[] = { 2, 0, 1, 4 };
//**************************************************************************
// device type definition
-const device_type CDP1862 = device_creator<cdp1862_device>;
+DEFINE_DEVICE_TYPE(CDP1862, cdp1862_device, "cdp1862", "RCA CDP1862")
@@ -79,7 +79,7 @@ inline void cdp1862_device::initialize_palette()
//-------------------------------------------------
cdp1862_device::cdp1862_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CDP1862, "CDP1862", tag, owner, clock, "cdp1862", __FILE__),
+ : device_t(mconfig, CDP1862, tag, owner, clock),
device_video_interface(mconfig, *this),
m_read_rd(*this),
m_read_bd(*this),
diff --git a/src/devices/video/cdp1862.h b/src/devices/video/cdp1862.h
index c93cf05c2c5..d0699565f6b 100644
--- a/src/devices/video/cdp1862.h
+++ b/src/devices/video/cdp1862.h
@@ -21,10 +21,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_CDP1862_H
+#define MAME_VIDEO_CDP1862_H
-#ifndef __CDP1862__
-#define __CDP1862__
+#pragma once
@@ -71,9 +71,9 @@ public:
// construction/destruction
cdp1862_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_rd_rd_callback(device_t &device, _Object object) { return downcast<cdp1862_device &>(device).m_read_rd.set_callback(object); }
- template<class _Object> static devcb_base &set_bd_rd_callback(device_t &device, _Object object) { return downcast<cdp1862_device &>(device).m_read_bd.set_callback(object); }
- template<class _Object> static devcb_base &set_gd_rd_callback(device_t &device, _Object object) { return downcast<cdp1862_device &>(device).m_read_gd.set_callback(object); }
+ template <class Object> static devcb_base &set_rd_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1862_device &>(device).m_read_rd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_bd_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1862_device &>(device).m_read_bd.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_gd_rd_callback(device_t &device, Object &&cb) { return downcast<cdp1862_device &>(device).m_read_gd.set_callback(std::forward<Object>(cb)); }
static void static_set_luminance(device_t &device, double r, double b, double g, double bkg) { downcast<cdp1862_device &>(device).m_lum_r = r; downcast<cdp1862_device &>(device).m_lum_b = b; downcast<cdp1862_device &>(device).m_lum_g = g; downcast<cdp1862_device &>(device).m_lum_bkg = bkg; }
static void static_set_chrominance(device_t &device, double r, double b, double g, double bkg) { downcast<cdp1862_device &>(device).m_chr_r = r; downcast<cdp1862_device &>(device).m_chr_b = b; downcast<cdp1862_device &>(device).m_chr_g = g; downcast<cdp1862_device &>(device).m_chr_bkg = bkg; }
@@ -115,8 +115,6 @@ private:
// device type definition
-extern const device_type CDP1862;
-
-
+DECLARE_DEVICE_TYPE(CDP1862, cdp1862_device)
-#endif
+#endif // MAME_VIDEO_CDP1862_H
diff --git a/src/devices/video/cesblit.cpp b/src/devices/video/cesblit.cpp
index 88d98f5ea84..e25b4cb56c5 100644
--- a/src/devices/video/cesblit.cpp
+++ b/src/devices/video/cesblit.cpp
@@ -60,7 +60,7 @@
***************************************************************************/
// device type definition
-const device_type CESBLIT = device_creator<cesblit_device>;
+DEFINE_DEVICE_TYPE(CESBLIT, cesblit_device, "cesblit", "CES Blitter FPGA")
/***************************************************************************
LIVE DEVICE
@@ -71,12 +71,13 @@ const device_type CESBLIT = device_creator<cesblit_device>;
//-------------------------------------------------
cesblit_device::cesblit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CESBLIT, "CES Blitter FPGA", tag, owner, clock, "cesblit", __FILE__),
+ device_t(mconfig, CESBLIT, tag, owner, clock),
device_video_interface(mconfig, *this),
device_memory_interface(mconfig, *this),
- m_space_config("blitter_space", ENDIANNESS_BIG, 16,23),
+ m_space_config("blitter_space", ENDIANNESS_BIG, 16, 23),
m_blit_irq_cb(*this)
-{ }
+{
+}
//-------------------------------------------------
// device_start - device-specific startup
diff --git a/src/devices/video/cesblit.h b/src/devices/video/cesblit.h
index 24aa79f3a70..93b0598c830 100644
--- a/src/devices/video/cesblit.h
+++ b/src/devices/video/cesblit.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_CESBLIT_H
+#define MAME_VIDEO_CESBLIT_H
-#ifndef CESBLIT_H
-#define CESBLIT_H
+#pragma once
/***************************************************************************
INTERFACE CONFIGURATION MACROS
@@ -46,7 +46,7 @@ public:
// static configuration
void set_compute_addr(compute_addr_t compute_addr) { m_compute_addr = compute_addr; }
static void static_set_compute_addr(device_t &device, compute_addr_t compute_addr) { downcast<cesblit_device &>(device).set_compute_addr(compute_addr); }
- template<class _Object> static devcb_base &static_set_irq_callback(device_t &device, _Object object) { return downcast<cesblit_device &>(device).m_blit_irq_cb.set_callback(object); }
+ template <class Object> static devcb_base &static_set_irq_callback(device_t &device, Object &&cb) { return downcast<cesblit_device &>(device).m_blit_irq_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE16_MEMBER(color_w);
DECLARE_WRITE16_MEMBER(addr_hi_w);
@@ -59,7 +59,7 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_stop() override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_PROGRAM) const override { return (spacenum == AS_PROGRAM) ? &m_space_config: nullptr; }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_space_config : nullptr; }
void do_blit();
@@ -80,6 +80,6 @@ protected:
***************************************************************************/
// device type definition
-extern const device_type CESBLIT;
+DECLARE_DEVICE_TYPE(CESBLIT, cesblit_device)
-#endif
+#endif // MAME_VIDEO_CESBLIT_H
diff --git a/src/devices/video/cgapal.h b/src/devices/video/cgapal.h
index c5dfafd636e..15c282be953 100644
--- a/src/devices/video/cgapal.h
+++ b/src/devices/video/cgapal.h
@@ -1,5 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
-#define CGA_PALETTE_SETS 83 /* one for colour, one for mono,
- * 81 for colour composite */
+#ifndef MAME_VIDEO_CGAPAL_H
+#define MAME_VIDEO_CGAPAL_H
+
+#pragma once
+
+static constexpr unsigned CGA_PALETTE_SETS = 83; // one for colour, one for mono, 81 for colour composite
extern const unsigned char cga_palette[16 * CGA_PALETTE_SETS][3];
+
+#endif // MAME_VIDEO_CGAPAL_H
diff --git a/src/devices/video/clgd542x.cpp b/src/devices/video/clgd542x.cpp
index bcb36beef49..e14f268d18b 100644
--- a/src/devices/video/clgd542x.cpp
+++ b/src/devices/video/clgd542x.cpp
@@ -41,22 +41,22 @@
#define TEXT_COPY_9COLUMN(ch) (((ch & 0xe0) == 0xc0)&&(vga.attribute.data[0x10]&4))
-const device_type CIRRUS_GD5428 = device_creator<cirrus_gd5428_device>;
-const device_type CIRRUS_GD5430 = device_creator<cirrus_gd5430_device>;
+DEFINE_DEVICE_TYPE(CIRRUS_GD5428, cirrus_gd5428_device, "clgd5428", "Cirrus Logic GD5428")
+DEFINE_DEVICE_TYPE(CIRRUS_GD5430, cirrus_gd5430_device, "clgd5430", "Cirrus Logic GD5430")
cirrus_gd5428_device::cirrus_gd5428_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cirrus_gd5428_device(mconfig, CIRRUS_GD5428, "Cirrus Logic GD5428", tag, owner, clock, "clgd5428", __FILE__)
+ : cirrus_gd5428_device(mconfig, CIRRUS_GD5428, tag, owner, clock)
{
}
-cirrus_gd5428_device::cirrus_gd5428_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : svga_device(mconfig, type, name, tag, owner, clock, shortname, source)
+cirrus_gd5428_device::cirrus_gd5428_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : svga_device(mconfig, type, tag, owner, clock)
{
}
cirrus_gd5430_device::cirrus_gd5430_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cirrus_gd5428_device(mconfig, CIRRUS_GD5430, "Cirrus Logic GD5430", tag, owner, clock, "clgd5430", __FILE__)
+ : cirrus_gd5428_device(mconfig, CIRRUS_GD5430, tag, owner, clock)
{
}
diff --git a/src/devices/video/clgd542x.h b/src/devices/video/clgd542x.h
index 1579c2a0c0b..9bfffe8a15e 100644
--- a/src/devices/video/clgd542x.h
+++ b/src/devices/video/clgd542x.h
@@ -5,6 +5,10 @@
Cirrus Logic GD542x/3x video chipsets
*/
+#ifndef MAME_VIDEO_CLGD542X_H
+#define MAME_VIDEO_CLGD542X_H
+
+#pragma once
#include "video/pc_vga.h"
@@ -16,7 +20,7 @@ class cirrus_gd5428_device : public svga_device
public:
// construction/destruction
cirrus_gd5428_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- cirrus_gd5428_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+
virtual READ8_MEMBER(port_03c0_r) override;
virtual WRITE8_MEMBER(port_03c0_w) override;
virtual READ8_MEMBER(port_03b0_r) override;
@@ -27,7 +31,10 @@ public:
virtual WRITE8_MEMBER(mem_w) override;
virtual uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) override;
+
protected:
+ cirrus_gd5428_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -83,6 +90,7 @@ protected:
uint8_t m_vclk_denom[4];
inline uint8_t cirrus_vga_latch_write(int offs, uint8_t data);
+
private:
void cirrus_define_video_mode();
uint8_t cirrus_seq_reg_read(uint8_t index);
@@ -104,10 +112,13 @@ class cirrus_gd5430_device : public cirrus_gd5428_device
{
public:
cirrus_gd5430_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
protected:
virtual void device_start() override;
};
// device type definition
-extern const device_type CIRRUS_GD5428;
-extern const device_type CIRRUS_GD5430;
+DECLARE_DEVICE_TYPE(CIRRUS_GD5428, cirrus_gd5428_device)
+DECLARE_DEVICE_TYPE(CIRRUS_GD5430, cirrus_gd5430_device)
+
+#endif // MAME_VIDEO_CLGD542X_H
diff --git a/src/devices/video/crt9007.cpp b/src/devices/video/crt9007.cpp
index 90eb521ffc2..bf018d821f7 100644
--- a/src/devices/video/crt9007.cpp
+++ b/src/devices/video/crt9007.cpp
@@ -36,13 +36,16 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CRT9007 = device_creator<crt9007_t>;
+DEFINE_DEVICE_TYPE(CRT9007, crt9007_device, "crt9007", "SMC SRT9007 VPAC")
@@ -50,8 +53,6 @@ const device_type CRT9007 = device_creator<crt9007_t>;
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
#define HAS_VALID_PARAMETERS \
(m_reg[0x00] && m_reg[0x01] && m_reg[0x07] && m_reg[0x08] && m_reg[0x09])
@@ -221,7 +222,7 @@ const int STATUS_LIGHT_PEN_UPDATE = 0x20;
//**************************************************************************
// default address map
-static ADDRESS_MAP_START( crt9007, AS_0, 8, crt9007_t )
+static ADDRESS_MAP_START( crt9007, AS_0, 8, crt9007_device )
AM_RANGE(0x0000, 0x3fff) AM_RAM
ADDRESS_MAP_END
@@ -235,7 +236,7 @@ ADDRESS_MAP_END
// readbyte - read a byte at the given address
//-------------------------------------------------
-inline uint8_t crt9007_t::readbyte(offs_t address)
+inline uint8_t crt9007_device::readbyte(offs_t address)
{
return space().read_byte(address);
}
@@ -245,7 +246,7 @@ inline uint8_t crt9007_t::readbyte(offs_t address)
// trigger_interrupt -
//-------------------------------------------------
-inline void crt9007_t::trigger_interrupt(int line)
+inline void crt9007_device::trigger_interrupt(int line)
{
if (INTERRUPT_ENABLE & line)
{
@@ -255,7 +256,7 @@ inline void crt9007_t::trigger_interrupt(int line)
if (!(status & STATUS_INTERRUPT_PENDING))
{
- if (LOG) logerror("CRT9007 '%s' INT 1\n", tag());
+ LOG("CRT9007 INT 1\n");
m_write_int(ASSERT_LINE);
}
}
@@ -266,7 +267,7 @@ inline void crt9007_t::trigger_interrupt(int line)
// update_cblank_line -
//-------------------------------------------------
-inline void crt9007_t::update_cblank_line()
+inline void crt9007_device::update_cblank_line()
{
int x = m_screen->hpos();
int y = m_screen->vpos();
@@ -278,7 +279,7 @@ inline void crt9007_t::update_cblank_line()
{
m_cblank = cblank;
- if (LOG) logerror("CRT9007 '%s' y %03u x %04u : CBLANK %u\n", tag(), y, x, m_cblank);
+ LOG("CRT9007 y %03u x %04u : CBLANK %u\n", y, x, m_cblank);
m_write_cblank(m_cblank);
}
@@ -289,7 +290,7 @@ inline void crt9007_t::update_cblank_line()
// update_hsync_timer -
//-------------------------------------------------
-inline void crt9007_t::update_hsync_timer(int state)
+inline void crt9007_device::update_hsync_timer(int state)
{
int y = m_screen->vpos();
@@ -306,7 +307,7 @@ inline void crt9007_t::update_hsync_timer(int state)
// update_vsync_timer -
//-------------------------------------------------
-inline void crt9007_t::update_vsync_timer(int state)
+inline void crt9007_device::update_vsync_timer(int state)
{
int next_y = state ? m_vsync_start : m_vsync_end;
@@ -320,7 +321,7 @@ inline void crt9007_t::update_vsync_timer(int state)
// update_vlt_timer -
//-------------------------------------------------
-inline void crt9007_t::update_vlt_timer(int state)
+inline void crt9007_device::update_vlt_timer(int state)
{
// this signal is active during all visible scan lines and during the horizontal trace at vertical retrace
int y = m_screen->vpos();
@@ -338,7 +339,7 @@ inline void crt9007_t::update_vlt_timer(int state)
// update_curs_timer -
//-------------------------------------------------
-inline void crt9007_t::update_curs_timer(int state)
+inline void crt9007_device::update_curs_timer(int state)
{
// this signal is active for 1 character time for all scanlines within the data row
// TODO
@@ -349,7 +350,7 @@ inline void crt9007_t::update_curs_timer(int state)
// update_drb_timer -
//-------------------------------------------------
-inline void crt9007_t::update_drb_timer(int state)
+inline void crt9007_device::update_drb_timer(int state)
{
// this signal is active for 1 full scan line (VLT edge to edge) at the top scan line of each new row
// there is 1 extra DRB signal during the 1st scanline of the vertical retrace interval
@@ -385,7 +386,7 @@ inline void crt9007_t::update_drb_timer(int state)
// update_dma_timer -
//-------------------------------------------------
-inline void crt9007_t::update_dma_timer()
+inline void crt9007_device::update_dma_timer()
{
// TODO
}
@@ -395,7 +396,7 @@ inline void crt9007_t::update_dma_timer()
// recompute_parameters -
//-------------------------------------------------
-inline void crt9007_t::recompute_parameters()
+inline void crt9007_device::recompute_parameters()
{
// check that necessary registers have been loaded
if (!HAS_VALID_PARAMETERS) return;
@@ -428,11 +429,8 @@ inline void crt9007_t::recompute_parameters()
//visarea.set(m_hsync_end, horiz_pix_total - 1, m_vsync_end, vert_pix_total - 1);
- //if (LOG)
- //{
- // logerror("CRT9007 '%s' Screen: %u x %u @ %f Hz\n", tag(), horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
- // logerror("CRT9007 '%s' Visible Area: (%u, %u) - (%u, %u)\n", tag(), visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y);
- //}
+ //LOG("CRT9007 Screen: %u x %u @ %f Hz\n", horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
+ //LOG("CRT9007 Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y);
//m_screen->configure(horiz_pix_total, vert_pix_total, visarea, refresh);
@@ -448,11 +446,11 @@ inline void crt9007_t::recompute_parameters()
//**************************************************************************
//-------------------------------------------------
-// crt9007_t - constructor
+// crt9007_device - constructor
//-------------------------------------------------
-crt9007_t::crt9007_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CRT9007, "SMC CRT9007", tag, owner, clock, "crt9007", __FILE__),
+crt9007_device::crt9007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, CRT9007, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_space_config("videoram", ENDIANNESS_LITTLE, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(crt9007)),
@@ -477,7 +475,7 @@ crt9007_t::crt9007_t(const machine_config &mconfig, const char *tag, device_t *o
// device_start - device-specific startup
//-------------------------------------------------
-void crt9007_t::device_start()
+void crt9007_device::device_start()
{
// allocate timers
m_hsync_timer = timer_alloc(TIMER_HSYNC);
@@ -506,7 +504,7 @@ void crt9007_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void crt9007_t::device_reset()
+void crt9007_device::device_reset()
{
m_disp = 0;
m_vs = 0;
@@ -553,7 +551,7 @@ void crt9007_t::device_reset()
// device_clock_changed - handle clock change
//-------------------------------------------------
-void crt9007_t::device_clock_changed()
+void crt9007_device::device_clock_changed()
{
recompute_parameters();
}
@@ -563,7 +561,7 @@ void crt9007_t::device_clock_changed()
// device_timer - handle timer events
//-------------------------------------------------
-void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void crt9007_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
int x = m_screen->hpos();
int y = m_screen->vpos();
@@ -573,7 +571,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo
case TIMER_HSYNC:
m_hs = param;
- if (LOG) logerror("CRT9007 '%s' y %03u x %04u : HS %u\n", tag(), y, x, m_hs);
+ LOG("CRT9007 y %03u x %04u : HS %u\n", y, x, m_hs);
m_write_hs(m_hs);
@@ -585,7 +583,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo
case TIMER_VSYNC:
m_vs = param;
- if (LOG) logerror("CRT9007 '%s' y %03u x %04u : VS %u\n", tag(), y, x, m_vs);
+ LOG("CRT9007 y %03u x %04u : VS %u\n", y, x, m_vs);
m_write_vs(param);
@@ -607,7 +605,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo
case TIMER_VLT:
m_vlt = param;
- if (LOG) logerror("CRT9007 '%s' y %03u x %04u : VLT %u\n", tag(), y, x, m_vlt);
+ LOG("CRT9007 y %03u x %04u : VLT %u\n", y, x, m_vlt);
m_write_vlt(param);
@@ -615,7 +613,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo
break;
case TIMER_CURS:
- if (LOG) logerror("CRT9007 '%s' y %03u x %04u : CURS %u\n", tag(), y, x, param);
+ LOG("CRT9007 y %03u x %04u : CURS %u\n", y, x, param);
m_write_curs(param);
@@ -625,7 +623,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo
case TIMER_DRB:
m_drb = param;
- if (LOG) logerror("CRT9007 '%s' y %03u x %04u : DRB %u\n", tag(), y, x, m_drb);
+ LOG("CRT9007 y %03u x %04u : DRB %u\n", y, x, m_drb);
m_write_drb(param);
@@ -637,7 +635,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo
m_dma_delay = DMA_BURST_DELAY;
m_dmar = 1;
- if (LOG) logerror("CRT9007 '%s' DMAR 1\n", tag());
+ LOG("CRT9007 DMAR 1\n");
m_write_dmar(ASSERT_LINE);
}
@@ -658,7 +656,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo
// any address spaces owned by this device
//-------------------------------------------------
-const address_space_config *crt9007_t::memory_space_config(address_spacenum spacenum) const
+const address_space_config *crt9007_device::memory_space_config(address_spacenum spacenum) const
{
return (spacenum == AS_0) ? &m_space_config : nullptr;
}
@@ -668,19 +666,19 @@ const address_space_config *crt9007_t::memory_space_config(address_spacenum spac
// read - register read
//-------------------------------------------------
-READ8_MEMBER( crt9007_t::read )
+READ8_MEMBER( crt9007_device::read )
{
uint8_t data = 0;
switch (offset)
{
case 0x15:
- if (LOG) logerror("CRT9007 '%s' Start\n", tag());
+ LOG("CRT9007 Start\n");
m_disp = 1;
break;
case 0x16:
- if (LOG) logerror("CRT9007 '%s' Reset\n", tag());
+ LOG("CRT9007 Reset\n");
device_reset();
break;
@@ -697,7 +695,7 @@ READ8_MEMBER( crt9007_t::read )
// reset interrupt pending bit
m_status &= ~STATUS_INTERRUPT_PENDING;
- if (LOG) logerror("CRT9007 '%s' INT 0\n", tag());
+ LOG("CRT9007 INT 0\n");
m_write_int(CLEAR_LINE);
break;
@@ -713,7 +711,7 @@ READ8_MEMBER( crt9007_t::read )
break;
default:
- logerror("CRT9007 '%s' Read from Invalid Register: %02x!\n", tag(), offset);
+ logerror("CRT9007 Read from Invalid Register: %02x!\n", offset);
}
return data;
@@ -724,7 +722,7 @@ READ8_MEMBER( crt9007_t::read )
// write - register write
//-------------------------------------------------
-WRITE8_MEMBER( crt9007_t::write )
+WRITE8_MEMBER( crt9007_device::write )
{
m_reg[offset] = data;
@@ -732,160 +730,136 @@ WRITE8_MEMBER( crt9007_t::write )
{
case 0x00:
recompute_parameters();
- if (LOG) logerror("CRT9007 '%s' Characters per Horizontal Period: %u\n", tag(), CHARACTERS_PER_HORIZONTAL_PERIOD);
+ LOG("CRT9007 Characters per Horizontal Period: %u\n", CHARACTERS_PER_HORIZONTAL_PERIOD);
break;
case 0x01:
recompute_parameters();
- if (LOG) logerror("CRT9007 '%s' Characters per Data Row: %u\n", tag(), CHARACTERS_PER_DATA_ROW);
+ LOG("CRT9007 Characters per Data Row: %u\n", CHARACTERS_PER_DATA_ROW);
break;
case 0x02:
recompute_parameters();
- if (LOG) logerror("CRT9007 '%s' Horizontal Delay: %u\n", tag(), HORIZONTAL_DELAY);
+ LOG("CRT9007 Horizontal Delay: %u\n", HORIZONTAL_DELAY);
break;
case 0x03:
recompute_parameters();
- if (LOG) logerror("CRT9007 '%s' Horizontal Sync Width: %u\n", tag(), HORIZONTAL_SYNC_WIDTH);
+ LOG("CRT9007 Horizontal Sync Width: %u\n", HORIZONTAL_SYNC_WIDTH);
break;
case 0x04:
recompute_parameters();
- if (LOG) logerror("CRT9007 '%s' Vertical Sync Width: %u\n", tag(), VERTICAL_SYNC_WIDTH);
+ LOG("CRT9007 Vertical Sync Width: %u\n", VERTICAL_SYNC_WIDTH);
break;
case 0x05:
recompute_parameters();
- if (LOG) logerror("CRT9007 '%s' Vertical Delay: %u\n", tag(), VERTICAL_DELAY);
+ LOG("CRT9007 Vertical Delay: %u\n", VERTICAL_DELAY);
break;
case 0x06:
recompute_parameters();
- if (LOG)
- {
- logerror("CRT9007 '%s' Pin Configuration: %u\n", tag(), PIN_CONFIGURATION);
- logerror("CRT9007 '%s' Cursor Skew: %u\n", tag(), CURSOR_SKEW);
- logerror("CRT9007 '%s' Blank Skew: %u\n", tag(), BLANK_SKEW);
- }
+ LOG("CRT9007 Pin Configuration: %u\n", PIN_CONFIGURATION);
+ LOG("CRT9007 Cursor Skew: %u\n", CURSOR_SKEW);
+ LOG("CRT9007 Blank Skew: %u\n", BLANK_SKEW);
break;
case 0x07:
recompute_parameters();
- if (LOG) logerror("CRT9007 '%s' Visible Data Rows per Frame: %u\n", tag(), VISIBLE_DATA_ROWS_PER_FRAME);
+ LOG("CRT9007 Visible Data Rows per Frame: %u\n", VISIBLE_DATA_ROWS_PER_FRAME);
break;
case 0x08:
recompute_parameters();
- if (LOG) logerror("CRT9007 '%s' Scan Lines per Data Row: %u\n", tag(), SCAN_LINES_PER_DATA_ROW);
+ LOG("CRT9007 Scan Lines per Data Row: %u\n", SCAN_LINES_PER_DATA_ROW);
break;
case 0x09:
recompute_parameters();
- if (LOG) logerror("CRT9007 '%s' Scan Lines per Frame: %u\n", tag(), SCAN_LINES_PER_FRAME);
+ LOG("CRT9007 Scan Lines per Frame: %u\n", SCAN_LINES_PER_FRAME);
break;
case 0x0a:
- if (LOG)
- {
- logerror("CRT9007 '%s' DMA Burst Count: %u\n", tag(), DMA_BURST_COUNT);
- logerror("CRT9007 '%s' DMA Burst Delay: %u\n", tag(), DMA_BURST_DELAY);
- logerror("CRT9007 '%s' DMA Disable: %u\n", tag(), DMA_DISABLE);
- }
+ LOG("CRT9007 DMA Burst Count: %u\n", DMA_BURST_COUNT);
+ LOG("CRT9007 DMA Burst Delay: %u\n", DMA_BURST_DELAY);
+ LOG("CRT9007 DMA Disable: %u\n", DMA_DISABLE);
break;
case 0x0b:
- if (LOG)
- {
- logerror("CRT9007 '%s' %s Height Cursor\n", tag(), SINGLE_HEIGHT_CURSOR ? "Single" : "Double");
- logerror("CRT9007 '%s' Operation Mode: %u\n", tag(), OPERATION_MODE);
- logerror("CRT9007 '%s' Interlace Mode: %u\n", tag(), INTERLACE_MODE);
- logerror("CRT9007 '%s' %s Mechanism\n", tag(), PAGE_BLANK ? "Page Blank" : "Smooth Scroll");
- }
+ LOG("CRT9007 %s Height Cursor\n", SINGLE_HEIGHT_CURSOR ? "Single" : "Double");
+ LOG("CRT9007 Operation Mode: %u\n", OPERATION_MODE);
+ LOG("CRT9007 Interlace Mode: %u\n", INTERLACE_MODE);
+ LOG("CRT9007 %s Mechanism\n", PAGE_BLANK ? "Page Blank" : "Smooth Scroll");
break;
case 0x0c:
break;
case 0x0d:
- if (LOG)
- {
- logerror("CRT9007 '%s' Table Start Register: %04x\n", tag(), TABLE_START);
- logerror("CRT9007 '%s' Address Mode: %u\n", tag(), ADDRESS_MODE);
- }
+ LOG("CRT9007 Table Start Register: %04x\n", TABLE_START);
+ LOG("CRT9007 Address Mode: %u\n", ADDRESS_MODE);
break;
case 0x0e:
break;
case 0x0f:
- if (LOG)
- {
- logerror("CRT9007 '%s' Auxialiary Address Register 1: %04x\n", tag(), AUXILIARY_ADDRESS_1);
- logerror("CRT9007 '%s' Row Attributes: %u\n", tag(), ROW_ATTRIBUTES_1);
- }
+ LOG("CRT9007 Auxialiary Address Register 1: %04x\n", AUXILIARY_ADDRESS_1);
+ LOG("CRT9007 Row Attributes: %u\n", ROW_ATTRIBUTES_1);
break;
case 0x10:
- if (LOG) logerror("CRT9007 '%s' Sequential Break Register 1: %u\n", tag(), SEQUENTIAL_BREAK_1);
+ LOG("CRT9007 Sequential Break Register 1: %u\n", SEQUENTIAL_BREAK_1);
break;
case 0x11:
- if (LOG) logerror("CRT9007 '%s' Data Row Start Register: %u\n", tag(), DATA_ROW_START);
+ LOG("CRT9007 Data Row Start Register: %u\n", DATA_ROW_START);
break;
case 0x12:
- if (LOG) logerror("CRT9007 '%s' Data Row End/Sequential Break Register 2: %u\n", tag(), SEQUENTIAL_BREAK_2);
+ LOG("CRT9007 Data Row End/Sequential Break Register 2: %u\n", SEQUENTIAL_BREAK_2);
break;
case 0x13:
break;
case 0x14:
- if (LOG)
- {
- logerror("CRT9007 '%s' Auxiliary Address Register 2: %04x\n", tag(), AUXILIARY_ADDRESS_2);
- logerror("CRT9007 '%s' Row Attributes: %u\n", tag(), ROW_ATTRIBUTES_2);
- }
+ LOG("CRT9007 Auxiliary Address Register 2: %04x\n", AUXILIARY_ADDRESS_2);
+ LOG("CRT9007 Row Attributes: %u\n", ROW_ATTRIBUTES_2);
break;
case 0x15:
- if (LOG) logerror("CRT9007 '%s' Start\n", tag());
+ LOG("CRT9007 Start\n");
m_disp = 1;
break;
case 0x16:
- if (LOG) logerror("CRT9007 '%s' Reset\n", tag());
+ LOG("CRT9007 Reset\n");
device_reset();
break;
case 0x17:
- if (LOG)
- {
- logerror("CRT9007 '%s' Smooth Scroll Offset: %u\n", tag(), SMOOTH_SCROLL_OFFSET);
- logerror("CRT9007 '%s' Smooth Scroll Offset Overflow: %u\n", tag(), SMOOTH_SCROLL_OFFSET_OVERFLOW);
- }
+ LOG("CRT9007 Smooth Scroll Offset: %u\n", SMOOTH_SCROLL_OFFSET);
+ LOG("CRT9007 Smooth Scroll Offset Overflow: %u\n", SMOOTH_SCROLL_OFFSET_OVERFLOW);
break;
case 0x18:
- if (LOG) logerror("CRT9007 '%s' Vertical Cursor Register: %u\n", tag(), VERTICAL_CURSOR);
+ LOG("CRT9007 Vertical Cursor Register: %u\n", VERTICAL_CURSOR);
break;
case 0x19:
- if (LOG) logerror("CRT9007 '%s' Horizontal Cursor Register: %u\n", tag(), HORIZONTAL_CURSOR);
+ LOG("CRT9007 Horizontal Cursor Register: %u\n", HORIZONTAL_CURSOR);
break;
case 0x1a:
- if (LOG)
- {
- logerror("CRT9007 '%s' Frame Timer: %u\n", tag(), FRAME_TIMER);
- logerror("CRT9007 '%s' Light Pen Interrupt: %u\n", tag(), LIGHT_PEN_INTERRUPT);
- logerror("CRT9007 '%s' Vertical Retrace Interrupt: %u\n", tag(), VERTICAL_RETRACE_INTERRUPT);
- }
+ LOG("CRT9007 Frame Timer: %u\n", FRAME_TIMER);
+ LOG("CRT9007 Light Pen Interrupt: %u\n", LIGHT_PEN_INTERRUPT);
+ LOG("CRT9007 Vertical Retrace Interrupt: %u\n", VERTICAL_RETRACE_INTERRUPT);
break;
default:
- logerror("CRT9007 '%s' Write to Invalid Register: %02x!\n", tag(), offset);
+ logerror("CRT9007 Write to Invalid Register: %02x!\n", offset);
}
}
@@ -894,9 +868,9 @@ WRITE8_MEMBER( crt9007_t::write )
// ack_w - DMA acknowledge
//-------------------------------------------------
-WRITE_LINE_MEMBER( crt9007_t::ack_w )
+WRITE_LINE_MEMBER( crt9007_device::ack_w )
{
- if (LOG) logerror("CRT9007 '%s' ACK: %u\n", tag(), state);
+ LOG("CRT9007 ACK: %u\n", state);
if (m_dmar && !m_ack && state)
{
@@ -912,9 +886,9 @@ WRITE_LINE_MEMBER( crt9007_t::ack_w )
// lpstb_w - light pen strobe
//-------------------------------------------------
-WRITE_LINE_MEMBER( crt9007_t::lpstb_w )
+WRITE_LINE_MEMBER( crt9007_device::lpstb_w )
{
- if (LOG) logerror("CRT9007 '%s' LPSTB: %u\n", tag(), state);
+ LOG("CRT9007 LPSTB: %u\n", state);
if (!m_lpstb && state)
{
@@ -929,7 +903,7 @@ WRITE_LINE_MEMBER( crt9007_t::lpstb_w )
// set_character_width -
//-------------------------------------------------
-void crt9007_t::set_character_width(int value)
+void crt9007_device::set_character_width(int value)
{
m_hpixels_per_column = value;
diff --git a/src/devices/video/crt9007.h b/src/devices/video/crt9007.h
index dbfbc7986fb..0618a62853e 100644
--- a/src/devices/video/crt9007.h
+++ b/src/devices/video/crt9007.h
@@ -29,17 +29,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __CRT9007__
-#define __CRT9007__
-
-
-
+#ifndef MAME_VIDEO_CRT9007_H
+#define MAME_VIDEO_CRT9007_H
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
+#pragma once
@@ -49,40 +42,40 @@
//**************************************************************************
#define MCFG_CRT9007_CHARACTER_WIDTH(_value) \
- crt9007_t::static_set_character_width(*device, _value);
+ crt9007_device::static_set_character_width(*device, _value);
#define MCFG_CRT9007_INT_CALLBACK(_write) \
- devcb = &crt9007_t::set_int_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_int_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9007_DMAR_CALLBACK(_write) \
- devcb = &crt9007_t::set_dmar_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_dmar_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9007_VS_CALLBACK(_write) \
- devcb = &crt9007_t::set_vs_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_vs_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9007_HS_CALLBACK(_write) \
- devcb = &crt9007_t::set_hs_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_hs_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9007_VLT_CALLBACK(_write) \
- devcb = &crt9007_t::set_vlt_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_vlt_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9007_CURS_CALLBACK(_write) \
- devcb = &crt9007_t::set_curs_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_curs_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9007_DRB_CALLBACK(_write) \
- devcb = &crt9007_t::set_drb_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_drb_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9007_WBEN_CALLBACK(_write) \
- devcb = &crt9007_t::set_wben_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_wben_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9007_CBLANK_CALLBACK(_write) \
- devcb = &crt9007_t::set_cblank_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_cblank_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9007_SLG_CALLBACK(_write) \
- devcb = &crt9007_t::set_slg_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_slg_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9007_SLD_CALLBACK(_write) \
- devcb = &crt9007_t::set_sld_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9007_device::set_sld_wr_callback(*device, DEVCB_##_write);
@@ -90,29 +83,29 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> crt9007_t
+// ======================> crt9007_device
-class crt9007_t : public device_t,
+class crt9007_device : public device_t,
public device_memory_interface,
public device_video_interface
{
public:
// construction/destruction
- crt9007_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- static void static_set_character_width(device_t &device, int value) { downcast<crt9007_t &>(device).m_hpixels_per_column = value; }
-
- template<class _Object> static devcb_base &set_int_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_int.set_callback(object); }
- template<class _Object> static devcb_base &set_dmar_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_dmar.set_callback(object); }
- template<class _Object> static devcb_base &set_vs_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_vs.set_callback(object); }
- template<class _Object> static devcb_base &set_hs_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_hs.set_callback(object); }
- template<class _Object> static devcb_base &set_vlt_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_vlt.set_callback(object); }
- template<class _Object> static devcb_base &set_curs_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_curs.set_callback(object); }
- template<class _Object> static devcb_base &set_drb_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_drb.set_callback(object); }
- template<class _Object> static devcb_base &set_wben_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_wben.set_callback(object); }
- template<class _Object> static devcb_base &set_cblank_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_cblank.set_callback(object); }
- template<class _Object> static devcb_base &set_slg_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_slg.set_callback(object); }
- template<class _Object> static devcb_base &set_sld_wr_callback(device_t &device, _Object object) { return downcast<crt9007_t &>(device).m_write_sld.set_callback(object); }
+ crt9007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ static void static_set_character_width(device_t &device, int value) { downcast<crt9007_device &>(device).m_hpixels_per_column = value; }
+
+ template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_int.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dmar_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_dmar.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vs_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_vs.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hs_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_hs.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vlt_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_vlt.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_curs_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_curs.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_drb_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_drb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_wben_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_wben.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_cblank_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_cblank.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_slg_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_slg.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_sld_wr_callback(device_t &device, Object &&cb) { return downcast<crt9007_device &>(device).m_write_sld.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -214,8 +207,6 @@ private:
// device type definition
-extern const device_type CRT9007;
-
-
+DECLARE_DEVICE_TYPE(CRT9007, crt9007_device)
-#endif
+#endif // MAME_VIDEO_CRT9007_H
diff --git a/src/devices/video/crt9021.cpp b/src/devices/video/crt9021.cpp
index b34ed316bd4..5b4d7195cde 100644
--- a/src/devices/video/crt9021.cpp
+++ b/src/devices/video/crt9021.cpp
@@ -38,20 +38,16 @@
#include "screen.h"
-
-//**************************************************************************
-// DEVICE DEFINITIONS
-//**************************************************************************
-
-const device_type CRT9021 = device_creator<crt9021_t>;
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
-// MACROS / CONSTANTS
+// DEVICE DEFINITIONS
//**************************************************************************
-#define LOG 0
+DEFINE_DEVICE_TYPE(CRT9021, crt9021_device, "crt9021", "SMC CRT9021 VAC")
@@ -60,11 +56,11 @@ const device_type CRT9021 = device_creator<crt9021_t>;
//**************************************************************************
//-------------------------------------------------
-// crt9021_t - constructor
+// crt9021_device - constructor
//-------------------------------------------------
-crt9021_t::crt9021_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CRT9021, "SMC CRT9021", tag, owner, clock, "crt9021", __FILE__),
+crt9021_device::crt9021_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, CRT9021, tag, owner, clock),
device_video_interface(mconfig, *this),
m_data(0),
m_ms0(0),
@@ -96,7 +92,7 @@ crt9021_t::crt9021_t(const machine_config &mconfig, const char *tag, device_t *o
// device_start - device-specific startup
//-------------------------------------------------
-void crt9021_t::device_start()
+void crt9021_device::device_start()
{
// register bitmap
m_screen->register_screen_bitmap(m_bitmap);
@@ -132,9 +128,9 @@ void crt9021_t::device_start()
// ld_sh_w - load/shift
//-------------------------------------------------
-WRITE_LINE_MEMBER( crt9021_t::ld_sh_w )
+WRITE_LINE_MEMBER( crt9021_device::ld_sh_w )
{
- if (LOG) logerror("CRT9021 '%s' LD/SH: %u\n", tag(), state);
+ LOG("CRT9021 LD/SH: %u\n", state);
if (!m_ld_sh && state)
{
@@ -172,9 +168,9 @@ WRITE_LINE_MEMBER( crt9021_t::ld_sh_w )
// vsync_w - vertical sync
//-------------------------------------------------
-WRITE_LINE_MEMBER( crt9021_t::vsync_w )
+WRITE_LINE_MEMBER( crt9021_device::vsync_w )
{
- if (LOG) logerror("CRT9021 '%s' VSYNC: %u\n", tag(), state);
+ LOG("CRT9021 VSYNC: %u\n", state);
}
@@ -182,7 +178,7 @@ WRITE_LINE_MEMBER( crt9021_t::vsync_w )
// screen_update - update screen
//-------------------------------------------------
-uint32_t crt9021_t::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t crt9021_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_bitmap.fill(rgb_t::black(), cliprect);
diff --git a/src/devices/video/crt9021.h b/src/devices/video/crt9021.h
index 36639d3b498..2a0b3620c4d 100644
--- a/src/devices/video/crt9021.h
+++ b/src/devices/video/crt9021.h
@@ -23,10 +23,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_CRT9021_H
+#define MAME_VIDEO_CRT9021_H
-#ifndef __CRT9021__
-#define __CRT9021__
+#pragma once
@@ -39,26 +39,25 @@
#define MCFG_CRT9021_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \
- crt9021_t::static_set_display_callback(*device, crt9021_draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ crt9021_device::static_set_display_callback(*device, crt9021_device::draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<void (bitmap_rgb32 &bitmap, int y, int x, uint8_t video, int intout)> crt9021_draw_character_delegate;
-
-// ======================> crt9021_t
+// ======================> crt9021_device
-class crt9021_t : public device_t,
- public device_video_interface
+class crt9021_device : public device_t, public device_video_interface
{
public:
+ typedef device_delegate<void (bitmap_rgb32 &bitmap, int y, int x, uint8_t video, int intout)> draw_character_delegate;
+
// construction/destruction
- crt9021_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ crt9021_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_display_callback(device_t &device, crt9021_draw_character_delegate callback) { downcast<crt9021_t &>(device).m_display_cb = callback; }
+ static void static_set_display_callback(device_t &device, draw_character_delegate &&cb) { downcast<crt9021_device &>(device).m_display_cb = std::move(cb); }
void write(uint8_t data) { m_data = data; }
DECLARE_WRITE8_MEMBER( write ) { write(data); }
@@ -97,7 +96,7 @@ private:
MS_UNDERLINE
};
- crt9021_draw_character_delegate m_display_cb;
+ draw_character_delegate m_display_cb;
bitmap_rgb32 m_bitmap;
@@ -131,8 +130,6 @@ private:
// device type definition
-extern const device_type CRT9021;
-
-
+DECLARE_DEVICE_TYPE(CRT9021, crt9021_device)
-#endif
+#endif // MAME_VIDEO_CRT9021_H
diff --git a/src/devices/video/crt9212.cpp b/src/devices/video/crt9212.cpp
index 922826f37ff..575624d3dda 100644
--- a/src/devices/video/crt9212.cpp
+++ b/src/devices/video/crt9212.cpp
@@ -9,21 +9,16 @@
#include "emu.h"
#include "crt9212.h"
-
-
-//**************************************************************************
-// DEVICE DEFINITIONS
-//**************************************************************************
-
-const device_type CRT9212 = device_creator<crt9212_t>;
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
-// MACROS / CONSTANTS
+// DEVICE DEFINITIONS
//**************************************************************************
-#define LOG 0
+DEFINE_DEVICE_TYPE(CRT9212, crt9212_device, "crt9212", "SMC CRT9212 DRB")
@@ -32,11 +27,11 @@ const device_type CRT9212 = device_creator<crt9212_t>;
//**************************************************************************
//-------------------------------------------------
-// crt9212_t - constructor
+// crt9212_device - constructor
//-------------------------------------------------
-crt9212_t::crt9212_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, CRT9212, "SMC CRT9212", tag, owner, clock, "crt9212", __FILE__),
+crt9212_device::crt9212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, CRT9212, tag, owner, clock),
m_write_dout(*this),
m_write_rof(*this),
m_write_wof(*this),
@@ -64,7 +59,7 @@ crt9212_t::crt9212_t(const machine_config &mconfig, const char *tag, device_t *o
// device_start - device-specific startup
//-------------------------------------------------
-void crt9212_t::device_start()
+void crt9212_device::device_start()
{
// resolve callbacks
m_write_dout.resolve_safe();
@@ -97,7 +92,7 @@ void crt9212_t::device_start()
// clrcnt_w - clear counter
//-------------------------------------------------
-WRITE_LINE_MEMBER( crt9212_t::clrcnt_w )
+WRITE_LINE_MEMBER( crt9212_device::clrcnt_w )
{
if (m_clrcnt && !state)
{
@@ -112,7 +107,7 @@ WRITE_LINE_MEMBER( crt9212_t::clrcnt_w )
// rclk_w - read clock
//-------------------------------------------------
-WRITE_LINE_MEMBER( crt9212_t::rclk_w )
+WRITE_LINE_MEMBER( crt9212_device::rclk_w )
{
if (!m_rclk && state)
{
@@ -139,7 +134,7 @@ WRITE_LINE_MEMBER( crt9212_t::rclk_w )
m_clrcnt_edge = false;
}
- if (m_ren_int && (m_rac < CRT9212_RAM_SIZE))
+ if (m_ren_int && (m_rac < RAM_SIZE))
{
// output data
m_write_dout(m_ram[m_rac][!m_buffer]);
@@ -147,7 +142,7 @@ WRITE_LINE_MEMBER( crt9212_t::rclk_w )
// increment read address counter
m_rac++;
- if (m_rac == CRT9212_RAM_SIZE - 1)
+ if (m_rac == RAM_SIZE - 1)
{
// set read overflow
m_write_rof(1);
@@ -165,11 +160,11 @@ WRITE_LINE_MEMBER( crt9212_t::rclk_w )
// wclk_w - write clock
//-------------------------------------------------
-WRITE_LINE_MEMBER( crt9212_t::wclk_w )
+WRITE_LINE_MEMBER( crt9212_device::wclk_w )
{
if (!m_wclk && state)
{
- if (m_wen_int && (m_wac < CRT9212_RAM_SIZE))
+ if (m_wen_int && (m_wac < RAM_SIZE))
{
// input data
m_ram[m_rac][m_buffer] = m_data_latch;
@@ -177,7 +172,7 @@ WRITE_LINE_MEMBER( crt9212_t::wclk_w )
// increment write address counter
m_wac++;
- if (m_wac == CRT9212_RAM_SIZE - 1)
+ if (m_wac == RAM_SIZE - 1)
{
// set write overflow
m_write_wof(1);
diff --git a/src/devices/video/crt9212.h b/src/devices/video/crt9212.h
index 699594b98e0..99023a0fe76 100644
--- a/src/devices/video/crt9212.h
+++ b/src/devices/video/crt9212.h
@@ -23,19 +23,11 @@
**********************************************************************/
-#pragma once
-
-#ifndef __CRT9212__
-#define __CRT9212__
-
-
-
+#ifndef MAME_VIDEO_CRT9212_H
+#define MAME_VIDEO_CRT9212_H
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
+#pragma once
-const int CRT9212_RAM_SIZE = 135;
@@ -44,16 +36,16 @@ const int CRT9212_RAM_SIZE = 135;
//**************************************************************************
#define MCFG_CRT9212_WEN2_VCC() \
- crt9212_t::static_set_wen2(*device, 1);
+ crt9212_device::static_set_wen2(*device, 1);
#define MCFG_CRT9212_DOUT_CALLBACK(_write) \
- devcb = &crt9212_t::set_dout_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9212_device::set_dout_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9212_ROF_CALLBACK(_write) \
- devcb = &crt9212_t::set_rof_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9212_device::set_rof_wr_callback(*device, DEVCB_##_write);
#define MCFG_CRT9212_WOF_CALLBACK(_write) \
- devcb = &crt9212_t::set_wof_wr_callback(*device, DEVCB_##_write);
+ devcb = &crt9212_device::set_wof_wr_callback(*device, DEVCB_##_write);
@@ -61,19 +53,19 @@ const int CRT9212_RAM_SIZE = 135;
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> crt9212_t
+// ======================> crt9212_device
-class crt9212_t : public device_t
+class crt9212_device : public device_t
{
public:
// construction/destruction
- crt9212_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ crt9212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_wen2(device_t &device, int state) { downcast<crt9212_t &>(device).m_wen2 = state; }
+ static void static_set_wen2(device_t &device, int state) { downcast<crt9212_device &>(device).m_wen2 = state; }
- template<class _Object> static devcb_base &set_dout_wr_callback(device_t &device, _Object object) { return downcast<crt9212_t &>(device).m_write_dout.set_callback(object); }
- template<class _Object> static devcb_base &set_rof_wr_callback(device_t &device, _Object object) { return downcast<crt9212_t &>(device).m_write_rof.set_callback(object); }
- template<class _Object> static devcb_base &set_wof_wr_callback(device_t &device, _Object object) { return downcast<crt9212_t &>(device).m_write_wof.set_callback(object); }
+ template <class Object> static devcb_base &set_dout_wr_callback(device_t &device, Object &&cb) { return downcast<crt9212_device &>(device).m_write_dout.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_rof_wr_callback(device_t &device, Object &&cb) { return downcast<crt9212_device &>(device).m_write_rof.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_wof_wr_callback(device_t &device, Object &&cb) { return downcast<crt9212_device &>(device).m_write_wof.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER( write ) { m_data = data; }
DECLARE_WRITE_LINE_MEMBER( clrcnt_w );
@@ -90,6 +82,8 @@ protected:
virtual void device_start() override;
private:
+ static constexpr int RAM_SIZE = 135;
+
devcb_write8 m_write_dout;
devcb_write_line m_write_rof;
devcb_write_line m_write_wof;
@@ -110,7 +104,7 @@ private:
uint8_t m_data_latch;
int m_ren_int;
int m_wen_int;
- uint8_t m_ram[CRT9212_RAM_SIZE][2];
+ uint8_t m_ram[RAM_SIZE][2];
int m_buffer;
int m_rac;
int m_wac;
diff --git a/src/devices/video/crtc_ega.cpp b/src/devices/video/crtc_ega.cpp
index f993d883047..b7318d33f99 100644
--- a/src/devices/video/crtc_ega.cpp
+++ b/src/devices/video/crtc_ega.cpp
@@ -13,15 +13,15 @@
#include "screen.h"
+#define VERBOSE 1
+#include "logmacro.h"
-#define LOG (1)
-
-const device_type CRTC_EGA = device_creator<crtc_ega_device>;
+DEFINE_DEVICE_TYPE(CRTC_EGA, crtc_ega_device, "crtc_ega", "IBM EGA CRT Controller")
crtc_ega_device::crtc_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, CRTC_EGA, "crtc_EGA", tag, owner, clock, "crtc_ega", __FILE__), device_video_interface(mconfig, *this, false)
+ : device_t(mconfig, CRTC_EGA, tag, owner, clock), device_video_interface(mconfig, *this, false)
, m_res_out_de_cb(*this), m_res_out_hsync_cb(*this), m_res_out_vsync_cb(*this), m_res_out_vblank_cb(*this)
, m_horiz_char_total(0), m_horiz_disp(0), m_horiz_blank_start(0), m_horiz_blank_end(0)
, m_ena_vert_access(0), m_de_skew(0)
@@ -80,7 +80,7 @@ READ8_MEMBER( crtc_ega_device::register_r )
WRITE8_MEMBER( crtc_ega_device::register_w )
{
- if (LOG) logerror("%s CRTC_EGA: reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data);
+ LOG("%s CRTC_EGA: reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data);
switch (m_register_address_latch)
{
@@ -198,7 +198,7 @@ void crtc_ega_device::recompute_parameters(bool postload)
rectangle visarea(0, max_visible_x, 0, max_visible_y);
- if (LOG) logerror("CRTC_EGA config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x Freq: %ffps\n",
+ LOG("CRTC_EGA config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x Freq: %ffps\n",
horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, hsync_on_pos, hsync_off_pos - 1, vsync_on_pos, vsync_off_pos - 1, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
if ( m_screen != nullptr )
@@ -209,7 +209,7 @@ void crtc_ega_device::recompute_parameters(bool postload)
else
{
m_has_valid_parameters = false;
- if (LOG) logerror("CRTC_EGA bad config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x\n",
+ LOG("CRTC_EGA bad config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x\n",
horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, hsync_on_pos, hsync_off_pos - 1, vsync_on_pos, vsync_off_pos - 1);
}
diff --git a/src/devices/video/crtc_ega.h b/src/devices/video/crtc_ega.h
index 587cb7e90b9..cd30ba53f33 100644
--- a/src/devices/video/crtc_ega.h
+++ b/src/devices/video/crtc_ega.h
@@ -6,17 +6,8 @@
**********************************************************************/
-#ifndef __CRTC_EGA__
-#define __CRTC_EGA__
-
-
-/* callback definitions */
-typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect)> crtc_ega_begin_update_delegate;
-
-typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect, uint16_t ma, uint8_t ra,
- uint16_t y, uint8_t x_count, int8_t cursor_x)> crtc_ega_row_update_delegate;
-
-typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect)> crtc_ega_end_update_delegate;
+#ifndef MAME_VIDEO_CRTC_EGA_H
+#define MAME_VIDEO_CRTC_EGA_H
#define CRTC_EGA_BEGIN_UPDATE(_name) void _name(bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -30,13 +21,13 @@ typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect)>
#define MCFG_CRTC_EGA_SET_SCREEN MCFG_VIDEO_SET_SCREEN
#define MCFG_CRTC_EGA_BEGIN_UPDATE_CB(_class, _method) \
- crtc_ega_device::set_begin_update_callback(*device, crtc_ega_begin_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ crtc_ega_device::set_begin_update_callback(*device, crtc_ega_device::begin_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_CRTC_EGA_ROW_UPDATE_CB(_class, _method) \
- crtc_ega_device::set_row_update_callback(*device, crtc_ega_row_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ crtc_ega_device::set_row_update_callback(*device, crtc_ega_device::row_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_CRTC_EGA_END_UPDATE_CB(_class, _method) \
- crtc_ega_device::set_end_update_callback(*device, crtc_ega_end_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ crtc_ega_device::set_end_update_callback(*device, crtc_ega_device::end_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_CRTC_EGA_HPIXELS_PER_COLUMN(_pix) \
crtc_ega_device::set_hpixels_per_column(*device, _pix);
@@ -58,20 +49,26 @@ class crtc_ega_device : public device_t,
public device_video_interface
{
public:
+ /* callback definitions */
+ typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect)> begin_update_delegate;
+ typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect, uint16_t ma, uint8_t ra, uint16_t y, uint8_t x_count, int8_t cursor_x)> row_update_delegate;
+ typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect)> end_update_delegate;
+
+
crtc_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_res_out_de_callback(device_t &device, _Object object)
- { return downcast<crtc_ega_device &>(device).m_res_out_de_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_res_out_hsync_callback(device_t &device, _Object object)
- { return downcast<crtc_ega_device &>(device).m_res_out_hsync_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_res_out_vsync_callback(device_t &device, _Object object)
- { return downcast<crtc_ega_device &>(device).m_res_out_vsync_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_res_out_vblank_callback(device_t &device, _Object object)
- { return downcast<crtc_ega_device &>(device).m_res_out_vblank_cb.set_callback(object); }
-
- static void set_begin_update_callback(device_t &device, crtc_ega_begin_update_delegate callback) { downcast<crtc_ega_device &>(device).m_begin_update_cb = callback; }
- static void set_row_update_callback(device_t &device, crtc_ega_row_update_delegate callback) { downcast<crtc_ega_device &>(device).m_row_update_cb = callback; }
- static void set_end_update_callback(device_t &device, crtc_ega_end_update_delegate callback) { downcast<crtc_ega_device &>(device).m_end_update_cb = callback; }
+ template <class Object> static devcb_base &set_res_out_de_callback(device_t &device, Object &&cb)
+ { return downcast<crtc_ega_device &>(device).m_res_out_de_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_res_out_hsync_callback(device_t &device, Object &&cb)
+ { return downcast<crtc_ega_device &>(device).m_res_out_hsync_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_res_out_vsync_callback(device_t &device, Object &&cb)
+ { return downcast<crtc_ega_device &>(device).m_res_out_vsync_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_res_out_vblank_callback(device_t &device, Object &&cb)
+ { return downcast<crtc_ega_device &>(device).m_res_out_vblank_cb.set_callback(std::forward<Object>(cb)); }
+
+ static void set_begin_update_callback(device_t &device, begin_update_delegate &&cb) { downcast<crtc_ega_device &>(device).m_begin_update_cb = std::move(cb); }
+ static void set_row_update_callback(device_t &device, row_update_delegate &&cb) { downcast<crtc_ega_device &>(device).m_row_update_cb = std::move(cb); }
+ static void set_end_update_callback(device_t &device, end_update_delegate &&cb) { downcast<crtc_ega_device &>(device).m_end_update_cb = std::move(cb); }
static void set_hpixels_per_column(device_t &device, int hpixels_per_column) { downcast<crtc_ega_device &>(device).m_hpixels_per_column = hpixels_per_column; }
/* select one of the registers for reading or writing */
@@ -119,16 +116,16 @@ private:
/* if specified, this gets called before any pixel update,
optionally return a pointer that will be passed to the
update and tear down callbacks */
- crtc_ega_begin_update_delegate m_begin_update_cb;
+ begin_update_delegate m_begin_update_cb;
/* this gets called for every row, the driver must output
x_count * hpixels_per_column pixels.
cursor_x indicates the character position where the cursor is, or -1
if there is no cursor on this row */
- crtc_ega_row_update_delegate m_row_update_cb;
+ row_update_delegate m_row_update_cb;
/* if specified, this gets called after all row updating is complete */
- crtc_ega_end_update_delegate m_end_update_cb;
+ end_update_delegate m_end_update_cb;
/* ega/vga register file */
uint8_t m_horiz_char_total; /* 0x00 */
@@ -190,13 +187,13 @@ private:
int16_t m_cursor_x;
/* timers */
- static const device_timer_id TIMER_LINE = 0;
- static const device_timer_id TIMER_DE_OFF = 1;
- static const device_timer_id TIMER_CUR_ON = 2;
- static const device_timer_id TIMER_CUR_OFF = 3;
- static const device_timer_id TIMER_HSYNC_ON = 4;
- static const device_timer_id TIMER_HSYNC_OFF = 5;
- static const device_timer_id TIMER_LIGHT_PEN_LATCH = 6;
+ static constexpr device_timer_id TIMER_LINE = 0;
+ static constexpr device_timer_id TIMER_DE_OFF = 1;
+ static constexpr device_timer_id TIMER_CUR_ON = 2;
+ static constexpr device_timer_id TIMER_CUR_OFF = 3;
+ static constexpr device_timer_id TIMER_HSYNC_ON = 4;
+ static constexpr device_timer_id TIMER_HSYNC_OFF = 5;
+ static constexpr device_timer_id TIMER_LIGHT_PEN_LATCH = 6;
emu_timer *m_line_timer;
emu_timer *m_de_off_timer;
@@ -230,6 +227,6 @@ private:
void update_cursor_state();
};
-extern const device_type CRTC_EGA;
+DECLARE_DEVICE_TYPE(CRTC_EGA, crtc_ega_device)
-#endif
+#endif // MAME_VIDEO_CRTC_EGA_H
diff --git a/src/devices/video/dl1416.cpp b/src/devices/video/dl1416.cpp
index f79c33e9717..dfa7315e522 100644
--- a/src/devices/video/dl1416.cpp
+++ b/src/devices/video/dl1416.cpp
@@ -96,7 +96,7 @@ class dl1414t_device : public dl1414_device
{
public:
dl1414t_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock)
- : dl1414_device(mconfig, DL1414T, "DL1414T", tag, owner, clock, "dl1414t", __FILE__)
+ : dl1414_device(mconfig, DL1414T, tag, owner, clock)
{
}
@@ -112,7 +112,7 @@ class dl1416b_device : public dl1416_device
{
public:
dl1416b_device(machine_config const &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dl1416_device(mconfig, DL1416B, "DL1416B", tag, owner, clock, "dl1416b", __FILE__)
+ : dl1416_device(mconfig, DL1416B, tag, owner, clock)
{
}
@@ -136,7 +136,7 @@ class dl1416t_device : public dl1416_device
{
public:
dl1416t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dl1416_device(mconfig, DL1416T, "DL1416T", tag, owner, clock, "dl1416t", __FILE__)
+ : dl1416_device(mconfig, DL1416T, tag, owner, clock)
{
}
@@ -164,9 +164,9 @@ protected:
DEVICE TYPE GLOBALS
*****************************************************************************/
-device_type const DL1414T = device_creator<dl1414t_device>;
-device_type const DL1416B = device_creator<dl1416b_device>;
-device_type const DL1416T = device_creator<dl1416t_device>;
+DEFINE_DEVICE_TYPE(DL1414T, dl1414t_device, "dl1414t", "DL1414T")
+DEFINE_DEVICE_TYPE(DL1416B, dl1416b_device, "dl1416b", "DL1416B")
+DEFINE_DEVICE_TYPE(DL1416T, dl1416t_device, "dl1416t", "DL1416T")
@@ -177,13 +177,10 @@ device_type const DL1416T = device_creator<dl1416t_device>;
dl1414_device::dl1414_device(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_update_cb(*this)
, m_digit_ram{ 0x00, 0x00, 0x00, 0x00 }
, m_cursor_state{ false, false, false, false }
@@ -199,13 +196,10 @@ dl1414_device::dl1414_device(
dl1416_device::dl1416_device(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source)
- : dl1414_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ uint32_t clock)
+ : dl1414_device(mconfig, type, tag, owner, clock)
, m_cu_in(true)
{
}
diff --git a/src/devices/video/dl1416.h b/src/devices/video/dl1416.h
index e5f5a894321..dbc67b97787 100644
--- a/src/devices/video/dl1416.h
+++ b/src/devices/video/dl1416.h
@@ -11,8 +11,10 @@
*
****************************************************************************/
-#ifndef MAME_DEVICES_VIDEO_DL1416_H
-#define MAME_DEVICES_VIDEO_DL1416_H
+#ifndef MAME_VIDEO_DL1416_H
+#define MAME_VIDEO_DL1416_H
+
+#pragma once
/***************************************************************************
@@ -42,8 +44,8 @@ extern device_type const DL1416T;
class dl1414_device : public device_t
{
public:
- template<typename Object> static devcb_base &set_update_handler(device_t &device, Object &&object)
- { return downcast<dl1414_device &>(device).m_update_cb.set_callback(std::forward<Object>(object)); }
+ template <typename Object> static devcb_base &set_update_handler(device_t &device, Object &&cb)
+ { return downcast<dl1414_device &>(device).m_update_cb.set_callback(std::forward<Object>(cb)); }
// signal-level interface
DECLARE_WRITE_LINE_MEMBER(wr_w); // write strobe (rising edge)
@@ -58,12 +60,9 @@ protected:
dl1414_device(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source);
+ uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -95,12 +94,9 @@ protected:
dl1416_device(
machine_config const &mconfig,
device_type type,
- char const *name,
char const *tag,
device_t *owner,
- uint32_t clock,
- char const *shortname,
- char const *source);
+ uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -112,4 +108,4 @@ private:
bool m_cu_in;
};
-#endif // MAME_DEVICES_VIDEO_DL1416_H
+#endif // MAME_VIDEO_DL1416_H
diff --git a/src/devices/video/dm9368.cpp b/src/devices/video/dm9368.cpp
index 8b06f49f81d..9c53b911daf 100644
--- a/src/devices/video/dm9368.cpp
+++ b/src/devices/video/dm9368.cpp
@@ -9,13 +9,15 @@
#include "emu.h"
#include "dm9368.h"
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// DEVICE DEFINITION
//**************************************************************************
-const device_type DM9368 = device_creator<dm9368_device>;
+DEFINE_DEVICE_TYPE(DM9368, dm9368_device, "dm9368", "Fairchild DM9368 7-Segment Decoder")
@@ -23,10 +25,7 @@ const device_type DM9368 = device_creator<dm9368_device>;
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
-const uint8_t dm9368_device::m_segment_data[16] =
+constexpr uint8_t dm9368_device::m_segment_data[16] =
{
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x67, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
};
@@ -42,7 +41,7 @@ const uint8_t dm9368_device::m_segment_data[16] =
//-------------------------------------------------
dm9368_device::dm9368_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, DM9368, "DM9368 7-Segment Decoder", tag, owner, clock, "dm9368", __FILE__),
+ device_t(mconfig, DM9368, tag, owner, clock),
device_output_interface(mconfig, *this),
m_write_rbo(*this),
m_rbi(1),
@@ -72,19 +71,19 @@ void dm9368_device::device_start()
void dm9368_device::a_w(uint8_t data)
{
- int a = data & 0x0f;
+ int const a = data & 0x0f;
uint8_t value = 0;
if (!m_rbi && !a)
{
- if (LOG) logerror("DM9368 '%s' Blanked Rippling Zero\n", tag());
+ LOG("DM9368 Blanked Rippling Zero\n");
// blank rippling 0
m_rbo = 0;
}
else
{
- if (LOG) logerror("DM9368 '%s' Output Data: %u = %02x\n", tag(), a, m_segment_data[a]);
+ LOG("DM9368 Output Data: %u = %02x\n", a, m_segment_data[a]);
value = m_segment_data[a];
diff --git a/src/devices/video/dm9368.h b/src/devices/video/dm9368.h
index 2c6c1ca908c..f28c4347db4 100644
--- a/src/devices/video/dm9368.h
+++ b/src/devices/video/dm9368.h
@@ -17,10 +17,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_DM9368_H
+#define MAME_VIDEO_DM9368_H
-#ifndef __DM9368__
-#define __DM9368__
+#pragma once
@@ -67,8 +67,6 @@ private:
// device type definition
-extern const device_type DM9368;
-
-
+DECLARE_DEVICE_TYPE(DM9368, dm9368_device)
-#endif
+#endif // MAME_VIDEO_DM9368_H
diff --git a/src/devices/video/ef9340_1.cpp b/src/devices/video/ef9340_1.cpp
index 8bc8838b592..484cc67cfbf 100644
--- a/src/devices/video/ef9340_1.cpp
+++ b/src/devices/video/ef9340_1.cpp
@@ -17,17 +17,17 @@
// device type definition
-const device_type EF9340_1 = device_creator<ef9340_1_device>;
+DEFINE_DEVICE_TYPE(EF9340_1, ef9340_1_device, "ef9340_1", "Thomson EF9340+EF9341")
-static const uint8_t bgr2rgb[8] =
+static constexpr uint8_t bgr2rgb[8] =
{
0x00, 0x04, 0x02, 0x06, 0x01, 0x05, 0x03, 0x07
};
ef9340_1_device::ef9340_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, EF9340_1, "EF9340+EF9341", tag, owner, clock, "ef9340_1", __FILE__)
+ : device_t(mconfig, EF9340_1, tag, owner, clock)
, device_video_interface(mconfig, *this), m_line_timer(nullptr)
//, m_start_vpos(START_Y)
//, m_start_vblank(START_Y + SCREEN_HEIGHT)
diff --git a/src/devices/video/ef9340_1.h b/src/devices/video/ef9340_1.h
index 6a7246ae42a..e5cbd23964a 100644
--- a/src/devices/video/ef9340_1.h
+++ b/src/devices/video/ef9340_1.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_EF9340_1_H
+#define MAME_VIDEO_EF9340_1_H
-#ifndef __EF9340_1_H__
-#define __EF9340_1_H__
+#pragma once
@@ -47,7 +47,7 @@ protected:
void ef9340_scanline(int vpos);
/* timers */
- static const device_timer_id TIMER_LINE = 0;
+ static constexpr device_timer_id TIMER_LINE = 0;
emu_timer *m_line_timer;
@@ -75,6 +75,6 @@ protected:
// device type definition
-extern const device_type EF9340_1;
+DECLARE_DEVICE_TYPE(EF9340_1, ef9340_1_device)
-#endif /* __EF9340_1_H__ */
+#endif // MAME_VIDEO_EF9340_1_H
diff --git a/src/devices/video/ef9345.cpp b/src/devices/video/ef9345.cpp
index 1379a20587e..e0385007b7b 100644
--- a/src/devices/video/ef9345.cpp
+++ b/src/devices/video/ef9345.cpp
@@ -9,7 +9,7 @@
This code is based on Daniel Coulom's implementation in DCVG5k
and DCAlice released by Daniel Coulom under GPL license
- TS9347 variant support added by Jean-François DEL NERO
+ TS9347 variant support added by Jean-François DEL NERO
*********************************************************************/
#include "emu.h"
@@ -29,8 +29,8 @@
//**************************************************************************
// devices
-const device_type EF9345 = device_creator<ef9345_device>;
-const device_type TS9347 = device_creator<ts9347_device>;
+DEFINE_DEVICE_TYPE(EF9345, ef9345_device, "ef9345", "EF9345")
+DEFINE_DEVICE_TYPE(TS9347, ts9347_device, "ts9347", "TS9347")
// default address map
static ADDRESS_MAP_START( ef9345, AS_0, 8, ef9345_device )
@@ -102,18 +102,12 @@ inline void ef9345_device::inc_y(uint8_t r)
//-------------------------------------------------
ef9345_device::ef9345_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EF9345, "EF9345", tag, owner, clock, "ef9345", __FILE__),
- device_memory_interface(mconfig, *this),
- device_video_interface(mconfig, *this),
- m_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(ef9345)),
- m_charset(*this, DEVICE_SELF),
- m_variant(EF9345_MODE::TYPE_EF9345),
- m_palette(*this, finder_base::DUMMY_TAG)
+ ef9345_device(mconfig, EF9345, tag, owner, clock, EF9345_MODE::TYPE_EF9345)
{
}
-ef9345_device::ef9345_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, EF9345_MODE variant, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ef9345_device::ef9345_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, EF9345_MODE variant) :
+ device_t(mconfig, type, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(ef9345)),
@@ -124,7 +118,9 @@ ef9345_device::ef9345_device(const machine_config &mconfig, device_type type, co
}
ts9347_device::ts9347_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ef9345_device(mconfig, TS9347, "TS9347",tag, owner, clock, EF9345_MODE::TYPE_TS9347,"ts9347",__FILE__){ }
+ : ef9345_device(mconfig, TS9347, tag, owner, clock, EF9345_MODE::TYPE_TS9347)
+{
+}
//-------------------------------------------------
// static_set_palette_tag: Set the tag of the
diff --git a/src/devices/video/ef9345.h b/src/devices/video/ef9345.h
index a6102fe96cc..8f58eb2c4a6 100644
--- a/src/devices/video/ef9345.h
+++ b/src/devices/video/ef9345.h
@@ -8,12 +8,11 @@
*********************************************************************/
+#ifndef MAME_VIDEO_EF9345_H
+#define MAME_VIDEO_EF9345_H
#pragma once
-#ifndef __EF9345_H__
-#define __EF9345_H__
-
#define MCFG_EF9345_PALETTE(_palette_tag) \
ef9345_device::static_set_palette_tag(*device, "^" _palette_tag);
@@ -49,7 +48,7 @@ protected:
};
// pass-through constructor
- ef9345_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, EF9345_MODE variant, const char *shortname, const char *source);
+ ef9345_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, EF9345_MODE variant);
// device-level overrides
virtual void device_start() override;
@@ -57,7 +56,7 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
// device_config_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
// address space configurations
const address_space_config m_space_config;
@@ -69,7 +68,6 @@ protected:
inline void inc_y(uint8_t r);
private:
-
void set_busy_flag(int period);
void draw_char_40(uint8_t *c, uint16_t x, uint16_t y);
void draw_char_80(uint8_t *c, uint16_t x, uint16_t y);
@@ -125,12 +123,12 @@ private:
class ts9347_device : public ef9345_device
{
-public :
+public:
ts9347_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
// device type definition
-extern const device_type EF9345;
-extern const device_type TS9347;
+DECLARE_DEVICE_TYPE(EF9345, ef9345_device)
+DECLARE_DEVICE_TYPE(TS9347, ts9347_device)
-#endif
+#endif // MAME_VIDEO_EF9345_H
diff --git a/src/devices/video/ef9364.cpp b/src/devices/video/ef9364.cpp
index 6957a57d676..5be327900f4 100644
--- a/src/devices/video/ef9364.cpp
+++ b/src/devices/video/ef9364.cpp
@@ -28,13 +28,13 @@
// devices
-const device_type EF9364 = device_creator<ef9364_device>;
+DEFINE_DEVICE_TYPE(EF9364, ef9364_device, "ef9364", "Thomson EF9364")
//-------------------------------------------------
// default address map
//-------------------------------------------------
static ADDRESS_MAP_START( ef9364, AS_0, 8, ef9364_device )
- AM_RANGE(0x00000, ( ( EF9364_TXTPLANE_MAX_SIZE * EF9364_MAX_TXTPLANES ) - 1 ) ) AM_RAM
+ AM_RANGE(0x00000, ( ( ef9364_device::TXTPLANE_MAX_SIZE * ef9364_device::MAX_TXTPLANES ) - 1 ) ) AM_RAM
ADDRESS_MAP_END
//-------------------------------------------------
@@ -60,7 +60,7 @@ const address_space_config *ef9364_device::memory_space_config(address_spacenum
//-------------------------------------------------
ef9364_device::ef9364_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EF9364, "EF9364", tag, owner, clock, "ef9364", __FILE__),
+ device_t(mconfig, EF9364, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_space_config("textram", ENDIANNESS_LITTLE, 8, 12, 0, nullptr, *ADDRESS_MAP_NAME(ef9364)),
@@ -117,8 +117,8 @@ void ef9364_device::device_start()
{
m_textram = &space(0);
- bitplane_xres = EF9364_NB_OF_COLUMNS*8;
- bitplane_yres = EF9364_NB_OF_ROWS*(8+4);
+ bitplane_xres = NB_OF_COLUMNS*8;
+ bitplane_yres = NB_OF_ROWS*(8+4);
vsync_scanline_pos = 250;
@@ -149,7 +149,7 @@ void ef9364_device::device_reset()
char_latch = 0x00;
- for(i=0;i<EF9364_NB_OF_COLUMNS * EF9364_NB_OF_ROWS * nb_of_pages;i++)
+ for(i = 0; i < NB_OF_COLUMNS * NB_OF_ROWS * nb_of_pages; i++)
{
m_textram->write_byte ( i , 0x7F );
}
@@ -199,15 +199,15 @@ uint32_t ef9364_device::screen_update(screen_device &screen, bitmap_rgb32 &bitma
int x,y,r;
unsigned char c;
- for( r = 0 ; r < EF9364_NB_OF_ROWS ; r++ )
+ for( r = 0 ; r < NB_OF_ROWS ; r++ )
{
for( y = 0 ; y < 8 ; y++ )
{
- for( x = 0 ; x < EF9364_NB_OF_COLUMNS * 8 ; x++ )
+ for( x = 0 ; x < NB_OF_COLUMNS * 8 ; x++ )
{
if( ( ( x >> 3 ) != x_curs_pos ) || ( r != y_curs_pos ) || !cursor_state)
{
- c = m_textram->read_byte( ( r * EF9364_NB_OF_COLUMNS ) + ( x>>3 ) );
+ c = m_textram->read_byte( ( r * NB_OF_COLUMNS ) + ( x>>3 ) );
if( m_charset[((c&0x7F)<<3) + y] & (0x80>>(x&7)) )
m_screen_out.pix32((r*12)+y, x) = palette[1];
@@ -261,11 +261,11 @@ void ef9364_device::command_w(uint8_t cmd)
switch( cmd&7 )
{
case 0x0: // Page Erase & Cursor home
- for( y=0 ; y < EF9364_NB_OF_ROWS ; y++ )
+ for( y=0 ; y < NB_OF_ROWS ; y++ )
{
- for( x=0 ; x < EF9364_NB_OF_COLUMNS ; x++ )
+ for( x=0 ; x < NB_OF_COLUMNS ; x++ )
{
- m_textram->write_byte ( y * EF9364_NB_OF_COLUMNS + x , 0x7F );
+ m_textram->write_byte ( y * NB_OF_COLUMNS + x , 0x7F );
}
}
x_curs_pos = 0;
@@ -273,32 +273,32 @@ void ef9364_device::command_w(uint8_t cmd)
break;
case 0x1: // Erase to end of the line and return cursor
- for( ; x_curs_pos < EF9364_NB_OF_COLUMNS ; x_curs_pos++ )
+ for( ; x_curs_pos < NB_OF_COLUMNS ; x_curs_pos++ )
{
- m_textram->write_byte ( y_curs_pos * EF9364_NB_OF_COLUMNS + x_curs_pos , 0x7F );
+ m_textram->write_byte ( y_curs_pos * NB_OF_COLUMNS + x_curs_pos , 0x7F );
}
x_curs_pos = 0;
break;
case 0x2: // Line feed
y_curs_pos++;
- if( y_curs_pos >= EF9364_NB_OF_ROWS )
+ if( y_curs_pos >= NB_OF_ROWS )
{
// Scroll
- for( j = 1 ; j < EF9364_NB_OF_ROWS ; j++ )
+ for( j = 1 ; j < NB_OF_ROWS ; j++ )
{
- for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ )
+ for( i = 0 ; i < NB_OF_COLUMNS ; i++ )
{
- m_textram->write_byte ( (j-1) * EF9364_NB_OF_COLUMNS + i , m_textram->read_byte ( j * EF9364_NB_OF_COLUMNS + i ) );
+ m_textram->write_byte ( (j-1) * NB_OF_COLUMNS + i , m_textram->read_byte ( j * NB_OF_COLUMNS + i ) );
}
}
// Erase last line
- for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ )
+ for( i = 0 ; i < NB_OF_COLUMNS ; i++ )
{
- m_textram->write_byte ( ( EF9364_NB_OF_ROWS - 1 ) * EF9364_NB_OF_COLUMNS + i , 0x7F );
+ m_textram->write_byte ( ( NB_OF_ROWS - 1 ) * NB_OF_COLUMNS + i , 0x7F );
}
- y_curs_pos = EF9364_NB_OF_ROWS - 1;
+ y_curs_pos = NB_OF_ROWS - 1;
}
break;
@@ -312,9 +312,9 @@ void ef9364_device::command_w(uint8_t cmd)
break;
case 0x5: // Erasure of cursor Line.
- for( x = 0 ; x < EF9364_NB_OF_COLUMNS ; x++ )
+ for( x = 0 ; x < NB_OF_COLUMNS ; x++ )
{
- m_textram->write_byte ( y_curs_pos * EF9364_NB_OF_COLUMNS + x , 0x7F );
+ m_textram->write_byte ( y_curs_pos * NB_OF_COLUMNS + x , 0x7F );
}
break;
@@ -325,30 +325,30 @@ void ef9364_device::command_w(uint8_t cmd)
case 0x7: // Write char
if(cmd&0x8)
- m_textram->write_byte ( y_curs_pos * EF9364_NB_OF_COLUMNS + x_curs_pos , char_latch );
+ m_textram->write_byte ( y_curs_pos * NB_OF_COLUMNS + x_curs_pos , char_latch );
x_curs_pos++;
- if( x_curs_pos >= EF9364_NB_OF_COLUMNS )
+ if( x_curs_pos >= NB_OF_COLUMNS )
{
x_curs_pos=0;
y_curs_pos++;
- if( y_curs_pos >= EF9364_NB_OF_ROWS )
+ if( y_curs_pos >= NB_OF_ROWS )
{
// Scroll
- for( j = 1 ; j < EF9364_NB_OF_ROWS ; j++ )
+ for( j = 1 ; j < NB_OF_ROWS ; j++ )
{
- for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ )
+ for( i = 0 ; i < NB_OF_COLUMNS ; i++ )
{
- m_textram->write_byte ( (j-1) * EF9364_NB_OF_COLUMNS + i , m_textram->read_byte ( j * EF9364_NB_OF_COLUMNS + i ) );
+ m_textram->write_byte ( (j-1) * NB_OF_COLUMNS + i , m_textram->read_byte ( j * NB_OF_COLUMNS + i ) );
}
}
// Erase last line
- for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ )
+ for( i = 0 ; i < NB_OF_COLUMNS ; i++ )
{
- m_textram->write_byte ( ( EF9364_NB_OF_ROWS - 1 ) * EF9364_NB_OF_COLUMNS + i , 0x7F );
+ m_textram->write_byte ( ( NB_OF_ROWS - 1 ) * NB_OF_COLUMNS + i , 0x7F );
}
- y_curs_pos = EF9364_NB_OF_ROWS - 1;
+ y_curs_pos = NB_OF_ROWS - 1;
}
}
break;
diff --git a/src/devices/video/ef9364.h b/src/devices/video/ef9364.h
index 2adc99905ee..2a6f20c0f48 100644
--- a/src/devices/video/ef9364.h
+++ b/src/devices/video/ef9364.h
@@ -8,16 +8,10 @@
*********************************************************************/
-#pragma once
-
-#ifndef __EF9364_H__
-#define __EF9364_H__
+#ifndef MAME_VIDEO_EF9364_H
+#define MAME_VIDEO_EF9364_H
-#define EF9364_NB_OF_COLUMNS 64
-#define EF9364_NB_OF_ROWS 16
-
-#define EF9364_TXTPLANE_MAX_SIZE ( EF9364_NB_OF_COLUMNS * EF9364_NB_OF_ROWS )
-#define EF9364_MAX_TXTPLANES 2
+#pragma once
#define MCFG_EF9364_PALETTE(_palette_tag) \
ef9364_device::static_set_palette_tag(*device, "^" _palette_tag);
@@ -39,6 +33,12 @@ class ef9364_device : public device_t,
public device_video_interface
{
public:
+ static constexpr unsigned NB_OF_COLUMNS = 64;
+ static constexpr unsigned NB_OF_ROWS = 16;
+
+ static constexpr unsigned TXTPLANE_MAX_SIZE = NB_OF_COLUMNS * NB_OF_ROWS;
+ static constexpr unsigned MAX_TXTPLANES = 2;
+
// construction/destruction
ef9364_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -47,7 +47,6 @@ public:
static void static_set_nb_of_pages(device_t &device, int nb_bitplanes );
// device interface
-
void update_scanline(uint16_t scanline);
void set_color_entry( int index, uint8_t r, uint8_t g, uint8_t b );
@@ -98,6 +97,6 @@ private:
};
// device type definition
-extern const device_type EF9364;
+DECLARE_DEVICE_TYPE(EF9364, ef9364_device)
-#endif
+#endif // MAME_VIDEO_EF9364_H
diff --git a/src/devices/video/ef9365.cpp b/src/devices/video/ef9365.cpp
index ee57644ccaa..84f0ce7655f 100644
--- a/src/devices/video/ef9365.cpp
+++ b/src/devices/video/ef9365.cpp
@@ -69,15 +69,34 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
+
+namespace {
+
+#define EF936X_REG_STATUS 0x00
+#define EF936X_REG_CMD 0x00
+#define EF936X_REG_CTRL1 0x01
+#define EF936X_REG_CTRL2 0x02
+#define EF936X_REG_CSIZE 0x03
+#define EF936X_REG_DELTAX 0x05
+#define EF936X_REG_DELTAY 0x07
+#define EF936X_REG_X_MSB 0x08
+#define EF936X_REG_X_LSB 0x09
+#define EF936X_REG_Y_MSB 0x0A
+#define EF936X_REG_Y_LSB 0x0B
+#define EF936X_REG_XLP 0x0C
+#define EF936X_REG_YLP 0x0D
+
-#ifdef DBGMODE
//-------------------------------------------------
// Some debug mode const strings
// to trace the commands and registers accesses.
//-------------------------------------------------
// Registers list
-const char * register_names[]=
+const char *const register_names[]=
{
"0x00 - CMD / STATUS",
"0x01 - CTRL 1 ",
@@ -98,7 +117,7 @@ const char * register_names[]=
};
// Commands list
-const char * commands_names[]=
+const char *const commands_names[]=
{
"0x00 - Set bit 1 of CTRL1 : Pen selection",
"0x01 - Clear bit 1 of CTRL1 : Eraser selection",
@@ -122,10 +141,11 @@ const char * commands_names[]=
"0x80<>0xFF - Small vector generation",
};
-#endif
+} // anonymous namespace
+
// devices
-const device_type EF9365 = device_creator<ef9365_device>;
+DEFINE_DEVICE_TYPE(EF9365, ef9365_device, "ef9365", "Thomson EF9365")
ROM_START( ef9365 )
ROM_REGION( 0x1E0, "ef9365", 0 )
@@ -147,7 +167,7 @@ const tiny_rom_entry *ef9365_device::device_rom_region() const
// Up to 512*512 per bitplane, 8 bitplanes max.
//-------------------------------------------------
static ADDRESS_MAP_START( ef9365, AS_0, 8, ef9365_device )
- AM_RANGE(0x00000, ( ( EF936X_BITPLANE_MAX_SIZE * EF936X_MAX_BITPLANES ) - 1 ) ) AM_RAM
+ AM_RANGE(0x00000, ( ( ef9365_device::BITPLANE_MAX_SIZE * ef9365_device::MAX_BITPLANES ) - 1 ) ) AM_RAM
ADDRESS_MAP_END
//-------------------------------------------------
@@ -174,7 +194,7 @@ const address_space_config *ef9365_device::memory_space_config(address_spacenum
//-------------------------------------------------
ef9365_device::ef9365_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, EF9365, "EF9365", tag, owner, clock, "ef9365", __FILE__),
+ device_t(mconfig, EF9365, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_space_config("videoram", ENDIANNESS_LITTLE, 8, 18, 0, nullptr, *ADDRESS_MAP_NAME(ef9365)),
@@ -216,48 +236,48 @@ void ef9365_device::static_set_display_mode(device_t &device, int display_mode )
{
switch(display_mode)
{
- case EF936X_256x256_DISPLAY_MODE:
- downcast<ef9365_device &>(device).bitplane_xres = 256;
- downcast<ef9365_device &>(device).bitplane_yres = 256;
- downcast<ef9365_device &>(device).vsync_scanline_pos = 250;
- downcast<ef9365_device &>(device).overflow_mask_x = 0xFF00;
- downcast<ef9365_device &>(device).overflow_mask_y = 0xFF00;
+ case DISPLAY_MODE_256x256:
+ downcast<ef9365_device &>(device).bitplane_xres = 256;
+ downcast<ef9365_device &>(device).bitplane_yres = 256;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 250;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFF00;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFF00;
break;
- case EF936X_512x512_DISPLAY_MODE:
- downcast<ef9365_device &>(device).bitplane_xres = 512;
- downcast<ef9365_device &>(device).bitplane_yres = 512;
- downcast<ef9365_device &>(device).vsync_scanline_pos = 506;
- downcast<ef9365_device &>(device).overflow_mask_x = 0xFE00;
- downcast<ef9365_device &>(device).overflow_mask_y = 0xFE00;
+ case DISPLAY_MODE_512x512:
+ downcast<ef9365_device &>(device).bitplane_xres = 512;
+ downcast<ef9365_device &>(device).bitplane_yres = 512;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 506;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFE00;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFE00;
break;
- case EF936X_512x256_DISPLAY_MODE:
- downcast<ef9365_device &>(device).bitplane_xres = 512;
- downcast<ef9365_device &>(device).bitplane_yres = 256;
- downcast<ef9365_device &>(device).vsync_scanline_pos = 250;
- downcast<ef9365_device &>(device).overflow_mask_x = 0xFE00;
- downcast<ef9365_device &>(device).overflow_mask_y = 0xFF00;
+ case DISPLAY_MODE_512x256:
+ downcast<ef9365_device &>(device).bitplane_xres = 512;
+ downcast<ef9365_device &>(device).bitplane_yres = 256;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 250;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFE00;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFF00;
break;
- case EF936X_128x128_DISPLAY_MODE:
- downcast<ef9365_device &>(device).bitplane_xres = 128;
- downcast<ef9365_device &>(device).bitplane_yres = 128;
- downcast<ef9365_device &>(device).vsync_scanline_pos = 124;
- downcast<ef9365_device &>(device).overflow_mask_x = 0xFF80;
- downcast<ef9365_device &>(device).overflow_mask_y = 0xFF80;
+ case DISPLAY_MODE_128x128:
+ downcast<ef9365_device &>(device).bitplane_xres = 128;
+ downcast<ef9365_device &>(device).bitplane_yres = 128;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 124;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFF80;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFF80;
break;
- case EF936X_64x64_DISPLAY_MODE:
- downcast<ef9365_device &>(device).bitplane_xres = 64;
- downcast<ef9365_device &>(device).bitplane_yres = 64;
- downcast<ef9365_device &>(device).vsync_scanline_pos = 62;
- downcast<ef9365_device &>(device).overflow_mask_x = 0xFFC0;
- downcast<ef9365_device &>(device).overflow_mask_y = 0xFFC0;
+ case DISPLAY_MODE_64x64:
+ downcast<ef9365_device &>(device).bitplane_xres = 64;
+ downcast<ef9365_device &>(device).bitplane_yres = 64;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 62;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFFC0;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFFC0;
break;
- default:
- downcast<ef9365_device &>(device).logerror("Invalid EF9365 Display mode: %02x\n", display_mode);
- downcast<ef9365_device &>(device).bitplane_xres = 256;
- downcast<ef9365_device &>(device).bitplane_yres = 256;
- downcast<ef9365_device &>(device).vsync_scanline_pos = 250;
- downcast<ef9365_device &>(device).overflow_mask_x = 0xFF00;
- downcast<ef9365_device &>(device).overflow_mask_y = 0xFF00;
+ default:
+ downcast<ef9365_device &>(device).logerror("Invalid EF9365 Display mode: %02x\n", display_mode);
+ downcast<ef9365_device &>(device).bitplane_xres = 256;
+ downcast<ef9365_device &>(device).bitplane_yres = 256;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 250;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFF00;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFF00;
break;
}
}
@@ -512,9 +532,9 @@ void ef9365_device::plot(int x_pos,int y_pos)
for( p = 0 ; p < nb_of_bitplanes ; p++ )
{
if( m_current_color & (0x01 << p) )
- m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) | (0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) );
+ m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) | (0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) );
else
- m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) & ~(0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) );
+ m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) & ~(0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) );
}
}
else
@@ -522,7 +542,7 @@ void ef9365_device::plot(int x_pos,int y_pos)
// Eraser
for( p = 0 ; p < nb_of_bitplanes ; p++ )
{
- m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) | (0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) );
+ m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) | (0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) );
}
}
}
@@ -890,19 +910,17 @@ void ef9365_device::dump_bitplanes_word()
pixel_ptr = ( ( ( ( bitplane_yres - 1 ) - ( get_y_reg() & ( bitplane_yres - 1 ) ) ) * bitplane_xres ) + ( get_x_reg() & ( bitplane_xres - 1 ) ) );
- #ifdef DBGMODE
- printf("dump : x = %d , y = %d\n", get_x_reg() ,get_y_reg());
- #endif
+ LOG("dump : x = %d , y = %d\n", get_x_reg() ,get_y_reg());
for( p = 0; p < nb_of_bitplanes ; p++ )
{
if( pixel_ptr & 0x4 )
{
- m_readback_latch[p] = ( m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (pixel_ptr>>3) ) ) & 0xF ;
+ m_readback_latch[p] = ( m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (pixel_ptr>>3) ) ) & 0xF ;
}
else
{
- m_readback_latch[p] = ( m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (pixel_ptr>>3) ) >> 4 ) & 0xF ;
+ m_readback_latch[p] = ( m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (pixel_ptr>>3) ) >> 4 ) & 0xF ;
}
}
@@ -927,9 +945,9 @@ void ef9365_device::screen_scanning( int force_clear )
for( p = 0 ; p < nb_of_bitplanes ; p++ )
{
if( m_current_color & (0x01 << p) )
- m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) | (0x80 >> (((y*bitplane_xres) + x)&7) ) );
+ m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) | (0x80 >> (((y*bitplane_xres) + x)&7) ) );
else
- m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) & ~(0x80 >> (((y*bitplane_xres) + x)&7) ) );
+ m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) & ~(0x80 >> (((y*bitplane_xres) + x)&7) ) );
}
}
}
@@ -942,7 +960,7 @@ void ef9365_device::screen_scanning( int force_clear )
{
for( p = 0 ; p < nb_of_bitplanes ; p++ )
{
- m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) | (0x80 >> (((y*bitplane_xres) + x)&7) ) );
+ m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) | (0x80 >> (((y*bitplane_xres) + x)&7) ) );
}
}
}
@@ -961,9 +979,7 @@ void ef9365_device::ef9365_exec(uint8_t cmd)
if( ( cmd>>4 ) == 0 )
{
- #ifdef DBGMODE
- printf("EF9365 Command : %s\n", commands_names[cmd & 0xF]);
- #endif
+ LOG("EF9365 Command : %s\n", commands_names[cmd & 0xF]);
switch(cmd & 0xF)
{
@@ -1041,12 +1057,10 @@ void ef9365_device::ef9365_exec(uint8_t cmd)
{
if ( ( cmd>>4 ) == 1 )
{
- #ifdef DBGMODE
if( cmd & 0x08 )
- printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x11]);
+ LOG("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x11]);
else
- printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x10]);
- #endif
+ LOG("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x10]);
tmp_delta_x = m_registers[EF936X_REG_DELTAX];
tmp_delta_y = m_registers[EF936X_REG_DELTAY];
@@ -1094,9 +1108,7 @@ void ef9365_device::ef9365_exec(uint8_t cmd)
{
if( ( cmd>>4 ) >= 0x8 )
{
- #ifdef DBGMODE
- printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x13]);
- #endif
+ LOG("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x13]);
tmp_delta_x = ( cmd >> 5 ) & 3;
tmp_delta_y = ( cmd >> 3 ) & 3;
@@ -1137,9 +1149,7 @@ void ef9365_device::ef9365_exec(uint8_t cmd)
{
// Draw character
- #ifdef DBGMODE
- printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x12]);
- #endif
+ LOG("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x12]);
busy_cycles = draw_character( cmd - 0x20, 0 , 0 );
set_busy_flag( cycles_to_us( busy_cycles ) );
@@ -1167,7 +1177,7 @@ uint32_t ef9365_device::screen_update(screen_device &screen, bitmap_rgb32 &bitma
for( p = 0; p < nb_of_bitplanes; p++)
{
- if( m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (ptr>>3)) & (0x80>>(ptr&7)))
+ if( m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (ptr>>3)) & (0x80>>(ptr&7)))
{
color_index |= (0x01<<p);
}
@@ -1291,9 +1301,7 @@ READ8_MEMBER( ef9365_device::data_r )
break;
}
- #ifdef DBGMODE
- printf("EF9365 [ %s ] RD> [ 0x%.2X ] - %s\n", register_names[offset&0xF],return_value, machine().describe_context() );
- #endif
+ LOG("EF9365 [ %s ] RD> [ 0x%.2X ] - %s\n", register_names[offset&0xF],return_value, machine().describe_context() );
return return_value;
}
@@ -1304,9 +1312,7 @@ READ8_MEMBER( ef9365_device::data_r )
WRITE8_MEMBER( ef9365_device::data_w )
{
- #ifdef DBGMODE
- printf("EF9365 [ %s ] <WR [ 0x%.2X ] - %s\n", register_names[offset&0xF],data, machine().describe_context() );
- #endif
+ LOG("EF9365 [ %s ] <WR [ 0x%.2X ] - %s\n", register_names[offset&0xF],data, machine().describe_context() );
switch(offset & 0xF)
{
diff --git a/src/devices/video/ef9365.h b/src/devices/video/ef9365.h
index 4352076528f..3f5beda3dde 100644
--- a/src/devices/video/ef9365.h
+++ b/src/devices/video/ef9365.h
@@ -8,25 +8,22 @@
*********************************************************************/
-#pragma once
-
-#ifndef __EF9365_H__
-#define __EF9365_H__
+#ifndef MAME_VIDEO_EF9365_H
+#define MAME_VIDEO_EF9365_H
-#define EF936X_BITPLANE_MAX_SIZE 0x8000
-#define EF936X_MAX_BITPLANES 8
+#pragma once
-#define MCFG_EF936X_PALETTE(_palette_tag) \
- ef9365_device::static_set_palette_tag(*device, "^" _palette_tag);
+#define MCFG_EF936X_PALETTE(palette_tag) \
+ ef9365_device::static_set_palette_tag(*device, ("^" palette_tag));
-#define MCFG_EF936X_BITPLANES_CNT(_bitplanes_number) \
- ef9365_device::static_set_nb_bitplanes(*device,_bitplanes_number);
+#define MCFG_EF936X_BITPLANES_CNT(bitplanes_number) \
+ ef9365_device::static_set_nb_bitplanes(*device, (bitplanes_number));
-#define MCFG_EF936X_DISPLAYMODE(_display_mode) \
- ef9365_device::static_set_display_mode(*device,_display_mode);
+#define MCFG_EF936X_DISPLAYMODE(display_mode) \
+ ef9365_device::static_set_display_mode(*device, (ef9365_device::display_mode));
-#define MCFG_EF936X_IRQ_HANDLER(_devcb) \
- devcb = &ef9365_device::set_irq_handler(*device, DEVCB_##_devcb);
+#define MCFG_EF936X_IRQ_HANDLER(cb) \
+ devcb = &ef9365_device::set_irq_handler(*device, (DEVCB_##cb));
//**************************************************************************
// TYPE DEFINITIONS
@@ -39,6 +36,15 @@ class ef9365_device : public device_t,
public device_video_interface
{
public:
+ static constexpr unsigned BITPLANE_MAX_SIZE = 0x8000;
+ static constexpr unsigned MAX_BITPLANES = 8;
+
+ static constexpr int DISPLAY_MODE_256x256 = 0x00;
+ static constexpr int DISPLAY_MODE_512x512 = 0x01;
+ static constexpr int DISPLAY_MODE_512x256 = 0x02;
+ static constexpr int DISPLAY_MODE_128x128 = 0x03;
+ static constexpr int DISPLAY_MODE_64x64 = 0x04;
+
// construction/destruction
ef9365_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -73,8 +79,6 @@ protected:
// address space configurations
const address_space_config m_space_config;
- // inline helper
-
private:
int get_char_pix( unsigned char c, int x, int y );
void plot(int x_pos,int y_pos);
@@ -94,7 +98,7 @@ private:
void update_interrupts();
// internal state
- static const device_timer_id BUSY_TIMER = 0;
+ static constexpr device_timer_id BUSY_TIMER = 0;
required_region_ptr<uint8_t> m_charset;
address_space *m_videoram;
@@ -118,7 +122,7 @@ private:
uint16_t overflow_mask_y;
int vsync_scanline_pos;
- uint8_t m_readback_latch[EF936X_MAX_BITPLANES]; // Last DRAM Readback buffer (Filled after a Direct Memory Access Request command)
+ uint8_t m_readback_latch[MAX_BITPLANES]; // Last DRAM Readback buffer (Filled after a Direct Memory Access Request command)
int m_readback_latch_pix_offset;
uint32_t clock_freq;
@@ -132,27 +136,6 @@ private:
};
// device type definition
-extern const device_type EF9365;
-
-#define EF936X_REG_STATUS 0x00
-#define EF936X_REG_CMD 0x00
-#define EF936X_REG_CTRL1 0x01
-#define EF936X_REG_CTRL2 0x02
-#define EF936X_REG_CSIZE 0x03
-#define EF936X_REG_DELTAX 0x05
-#define EF936X_REG_DELTAY 0x07
-#define EF936X_REG_X_MSB 0x08
-#define EF936X_REG_X_LSB 0x09
-#define EF936X_REG_Y_MSB 0x0A
-#define EF936X_REG_Y_LSB 0x0B
-#define EF936X_REG_XLP 0x0C
-#define EF936X_REG_YLP 0x0D
-
-#define EF936X_256x256_DISPLAY_MODE 0x00
-#define EF936X_512x512_DISPLAY_MODE 0x01
-#define EF936X_512x256_DISPLAY_MODE 0x02
-#define EF936X_128x128_DISPLAY_MODE 0x03
-#define EF936X_64x64_DISPLAY_MODE 0x04
-
-
-#endif
+DECLARE_DEVICE_TYPE(EF9365, ef9365_device)
+
+#endif // MAME_VIDEO_EF9365_H
diff --git a/src/devices/video/ef9369.cpp b/src/devices/video/ef9369.cpp
index 84d69c88117..2a00ff76de3 100644
--- a/src/devices/video/ef9369.cpp
+++ b/src/devices/video/ef9369.cpp
@@ -7,15 +7,16 @@
***************************************************************************/
#include "emu.h"
-#include <algorithm>
#include "ef9369.h"
+#include <algorithm>
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type EF9369 = device_creator<ef9369_device>;
+DEFINE_DEVICE_TYPE(EF9369, ef9369_device, "ef9369", "Thomson EF9369 Single Chip Color Palette")
//**************************************************************************
@@ -27,8 +28,8 @@ const device_type EF9369 = device_creator<ef9369_device>;
//-------------------------------------------------
ef9369_device::ef9369_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, EF9369, "EF9369 Single Chip Color Palette", tag, owner, clock, "ef9369", __FILE__),
- m_address(0)
+ : device_t(mconfig, EF9369, tag, owner, clock)
+ , m_address(0)
{
std::fill(m_ca, m_ca + NUMCOLORS, 0);
std::fill(m_cb, m_cb + NUMCOLORS, 0);
diff --git a/src/devices/video/ef9369.h b/src/devices/video/ef9369.h
index 63b28d2cac7..b25a892a662 100644
--- a/src/devices/video/ef9369.h
+++ b/src/devices/video/ef9369.h
@@ -24,10 +24,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_EF9369_H
+#define MAME_VIDEO_EF9369_H
-#ifndef __EF9369_H__
-#define __EF9369_H__
+#pragma once
@@ -39,14 +39,13 @@
MCFG_DEVICE_ADD(_tag, EF9369, 0) \
#define MCFG_EF9369_COLOR_UPDATE_CB(_class, _method) \
- ef9369_device::set_color_update_callback(*device, ef9369_color_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ ef9369_device::set_color_update_callback(*device, ef9369_device::color_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<void (int entry, bool m, uint8_t ca, uint8_t cb, uint8_t cc)> ef9369_color_update_delegate;
#define EF9369_COLOR_UPDATE(name) void name(int entry, bool m, uint8_t ca, uint8_t cb, uint8_t cc)
// ======================> ef9369_device
@@ -54,17 +53,19 @@ typedef device_delegate<void (int entry, bool m, uint8_t ca, uint8_t cb, uint8_t
class ef9369_device : public device_t
{
public:
+ typedef device_delegate<void (int entry, bool m, uint8_t ca, uint8_t cb, uint8_t cc)> color_update_delegate;
+
// construction/destruction
ef9369_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- static void set_color_update_callback(device_t &device, ef9369_color_update_delegate callback) { downcast<ef9369_device &>(device).m_color_update_cb = callback; }
+ static void set_color_update_callback(device_t &device, color_update_delegate &&cb) { downcast<ef9369_device &>(device).m_color_update_cb = std::move(cb); }
DECLARE_READ8_MEMBER(data_r);
DECLARE_WRITE8_MEMBER(data_w);
DECLARE_WRITE8_MEMBER(address_w);
- static const int NUMCOLORS = 16;
+ static constexpr int NUMCOLORS = 16;
protected:
// device-level overrides
@@ -72,7 +73,7 @@ protected:
virtual void device_reset() override;
private:
- ef9369_color_update_delegate m_color_update_cb;
+ color_update_delegate m_color_update_cb;
// state
uint8_t m_ca[NUMCOLORS], m_cb[NUMCOLORS], m_cc[NUMCOLORS]; // actually 4-bit
@@ -81,6 +82,6 @@ private:
};
// device type definition
-extern const device_type EF9369;
+DECLARE_DEVICE_TYPE(EF9369, ef9369_device)
-#endif // __EF9369_H__
+#endif // MAME_VIDEO_EF9369_H
diff --git a/src/devices/video/epic12.cpp b/src/devices/video/epic12.cpp
index 68d1098abd5..b0ca59b160a 100644
--- a/src/devices/video/epic12.cpp
+++ b/src/devices/video/epic12.cpp
@@ -6,13 +6,13 @@
#include "epic12.h"
-
-const device_type EPIC12 = device_creator<epic12_device>;
+DEFINE_DEVICE_TYPE(EPIC12, epic12_device, "epic12", "EPIC12 Blitter")
epic12_device::epic12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, EPIC12, "EP1C12 Blitter", tag, owner, clock, "epic12", __FILE__),
- device_video_interface(mconfig, *this), m_ram16(nullptr), m_gfx_size(0), m_bitmaps(nullptr), m_use_ram(nullptr),
- m_main_ramsize(0), m_main_rammask(0), m_maincpu(nullptr), m_ram16_copy(nullptr), m_work_queue(nullptr)
+ : device_t(mconfig, EPIC12, tag, owner, clock)
+ , device_video_interface(mconfig, *this)
+ , m_ram16(nullptr), m_gfx_size(0), m_bitmaps(nullptr), m_use_ram(nullptr)
+ , m_main_ramsize(0), m_main_rammask(0), m_maincpu(nullptr), m_ram16_copy(nullptr), m_work_queue(nullptr)
{
m_is_unsafe = 0;
m_delay_scale = 0;
@@ -29,7 +29,7 @@ epic12_device::epic12_device(const machine_config &mconfig, const char *tag, dev
m_gfx_scroll_0_y_shadowcopy = 0;
m_gfx_scroll_1_x_shadowcopy = 0;
m_gfx_scroll_1_y_shadowcopy = 0;
- epic12_device_blit_delay = 0;
+ blit_delay = 0;
}
TIMER_CALLBACK_MEMBER( epic12_device::blitter_delay_callback )
@@ -84,11 +84,11 @@ void epic12_device::device_reset()
{
for (x=0;x<0x20;x++)
{
- epic12_device_colrtable[x][y] = (x*y) / 0x1f;
- if (epic12_device_colrtable[x][y]>0x1f) epic12_device_colrtable[x][y] = 0x1f;
+ colrtable[x][y] = (x*y) / 0x1f;
+ if (colrtable[x][y]>0x1f) colrtable[x][y] = 0x1f;
- epic12_device_colrtable_rev[x^0x1f][y] = (x*y) / 0x1f;
- if (epic12_device_colrtable_rev[x^0x1f][y]>0x1f) epic12_device_colrtable_rev[x^0x1f][y] = 0x1f;
+ colrtable_rev[x^0x1f][y] = (x*y) / 0x1f;
+ if (colrtable_rev[x^0x1f][y]>0x1f) colrtable_rev[x^0x1f][y] = 0x1f;
}
}
@@ -97,8 +97,8 @@ void epic12_device::device_reset()
{
for (x=0;x<0x20;x++)
{
- epic12_device_colrtable_add[x][y] = (x+y);
- if (epic12_device_colrtable_add[x][y]>0x1f) epic12_device_colrtable_add[x][y] = 0x1f;
+ colrtable_add[x][y] = (x+y);
+ if (colrtable_add[x][y]>0x1f) colrtable_add[x][y] = 0x1f;
}
}
@@ -106,10 +106,10 @@ void epic12_device::device_reset()
}
// todo, get these into the device class without ruining performance
-uint8_t epic12_device_colrtable[0x20][0x40];
-uint8_t epic12_device_colrtable_rev[0x20][0x40];
-uint8_t epic12_device_colrtable_add[0x20][0x20];
-uint64_t epic12_device_blit_delay;
+uint8_t epic12_device::colrtable[0x20][0x40];
+uint8_t epic12_device::colrtable_rev[0x20][0x40];
+uint8_t epic12_device::colrtable_add[0x20][0x20];
+uint64_t epic12_device::blit_delay;
inline uint16_t epic12_device::READ_NEXT_WORD(offs_t *addr)
{
@@ -204,7 +204,7 @@ inline void epic12_device::gfx_upload(offs_t *addr)
-epic12_device_blitfunction epic12_device_f0_ti1_tr1_blit_funcs[] =
+const epic12_device::blitfunction epic12_device::f0_ti1_tr1_blit_funcs[64] =
{
epic12_device::draw_sprite_f0_ti1_tr1_s0_d0, epic12_device::draw_sprite_f0_ti1_tr1_s1_d0, epic12_device::draw_sprite_f0_ti1_tr1_s2_d0, epic12_device::draw_sprite_f0_ti1_tr1_s3_d0, epic12_device::draw_sprite_f0_ti1_tr1_s4_d0, epic12_device::draw_sprite_f0_ti1_tr1_s5_d0, epic12_device::draw_sprite_f0_ti1_tr1_s6_d0, epic12_device::draw_sprite_f0_ti1_tr1_s7_d0,
epic12_device::draw_sprite_f0_ti1_tr1_s0_d1, epic12_device::draw_sprite_f0_ti1_tr1_s1_d1, epic12_device::draw_sprite_f0_ti1_tr1_s2_d1, epic12_device::draw_sprite_f0_ti1_tr1_s3_d1, epic12_device::draw_sprite_f0_ti1_tr1_s4_d1, epic12_device::draw_sprite_f0_ti1_tr1_s5_d1, epic12_device::draw_sprite_f0_ti1_tr1_s6_d1, epic12_device::draw_sprite_f0_ti1_tr1_s7_d1,
@@ -216,7 +216,7 @@ epic12_device_blitfunction epic12_device_f0_ti1_tr1_blit_funcs[] =
epic12_device::draw_sprite_f0_ti1_tr1_s0_d7, epic12_device::draw_sprite_f0_ti1_tr1_s1_d7, epic12_device::draw_sprite_f0_ti1_tr1_s2_d7, epic12_device::draw_sprite_f0_ti1_tr1_s3_d7, epic12_device::draw_sprite_f0_ti1_tr1_s4_d7, epic12_device::draw_sprite_f0_ti1_tr1_s5_d7, epic12_device::draw_sprite_f0_ti1_tr1_s6_d7, epic12_device::draw_sprite_f0_ti1_tr1_s7_d7,
};
-epic12_device_blitfunction epic12_device_f0_ti1_tr0_blit_funcs[] =
+const epic12_device::blitfunction epic12_device::f0_ti1_tr0_blit_funcs[64] =
{
epic12_device::draw_sprite_f0_ti1_tr0_s0_d0, epic12_device::draw_sprite_f0_ti1_tr0_s1_d0, epic12_device::draw_sprite_f0_ti1_tr0_s2_d0, epic12_device::draw_sprite_f0_ti1_tr0_s3_d0, epic12_device::draw_sprite_f0_ti1_tr0_s4_d0, epic12_device::draw_sprite_f0_ti1_tr0_s5_d0, epic12_device::draw_sprite_f0_ti1_tr0_s6_d0, epic12_device::draw_sprite_f0_ti1_tr0_s7_d0,
epic12_device::draw_sprite_f0_ti1_tr0_s0_d1, epic12_device::draw_sprite_f0_ti1_tr0_s1_d1, epic12_device::draw_sprite_f0_ti1_tr0_s2_d1, epic12_device::draw_sprite_f0_ti1_tr0_s3_d1, epic12_device::draw_sprite_f0_ti1_tr0_s4_d1, epic12_device::draw_sprite_f0_ti1_tr0_s5_d1, epic12_device::draw_sprite_f0_ti1_tr0_s6_d1, epic12_device::draw_sprite_f0_ti1_tr0_s7_d1,
@@ -228,7 +228,7 @@ epic12_device_blitfunction epic12_device_f0_ti1_tr0_blit_funcs[] =
epic12_device::draw_sprite_f0_ti1_tr0_s0_d7, epic12_device::draw_sprite_f0_ti1_tr0_s1_d7, epic12_device::draw_sprite_f0_ti1_tr0_s2_d7, epic12_device::draw_sprite_f0_ti1_tr0_s3_d7, epic12_device::draw_sprite_f0_ti1_tr0_s4_d7, epic12_device::draw_sprite_f0_ti1_tr0_s5_d7, epic12_device::draw_sprite_f0_ti1_tr0_s6_d7, epic12_device::draw_sprite_f0_ti1_tr0_s7_d7,
};
-epic12_device_blitfunction epic12_device_f1_ti1_tr1_blit_funcs[] =
+const epic12_device::blitfunction epic12_device::f1_ti1_tr1_blit_funcs[64] =
{
epic12_device::draw_sprite_f1_ti1_tr1_s0_d0, epic12_device::draw_sprite_f1_ti1_tr1_s1_d0, epic12_device::draw_sprite_f1_ti1_tr1_s2_d0, epic12_device::draw_sprite_f1_ti1_tr1_s3_d0, epic12_device::draw_sprite_f1_ti1_tr1_s4_d0, epic12_device::draw_sprite_f1_ti1_tr1_s5_d0, epic12_device::draw_sprite_f1_ti1_tr1_s6_d0, epic12_device::draw_sprite_f1_ti1_tr1_s7_d0,
epic12_device::draw_sprite_f1_ti1_tr1_s0_d1, epic12_device::draw_sprite_f1_ti1_tr1_s1_d1, epic12_device::draw_sprite_f1_ti1_tr1_s2_d1, epic12_device::draw_sprite_f1_ti1_tr1_s3_d1, epic12_device::draw_sprite_f1_ti1_tr1_s4_d1, epic12_device::draw_sprite_f1_ti1_tr1_s5_d1, epic12_device::draw_sprite_f1_ti1_tr1_s6_d1, epic12_device::draw_sprite_f1_ti1_tr1_s7_d1,
@@ -240,7 +240,7 @@ epic12_device_blitfunction epic12_device_f1_ti1_tr1_blit_funcs[] =
epic12_device::draw_sprite_f1_ti1_tr1_s0_d7, epic12_device::draw_sprite_f1_ti1_tr1_s1_d7, epic12_device::draw_sprite_f1_ti1_tr1_s2_d7, epic12_device::draw_sprite_f1_ti1_tr1_s3_d7, epic12_device::draw_sprite_f1_ti1_tr1_s4_d7, epic12_device::draw_sprite_f1_ti1_tr1_s5_d7, epic12_device::draw_sprite_f1_ti1_tr1_s6_d7, epic12_device::draw_sprite_f1_ti1_tr1_s7_d7,
};
-epic12_device_blitfunction epic12_device_f1_ti1_tr0_blit_funcs[] =
+const epic12_device::blitfunction epic12_device::f1_ti1_tr0_blit_funcs[64] =
{
epic12_device::draw_sprite_f1_ti1_tr0_s0_d0, epic12_device::draw_sprite_f1_ti1_tr0_s1_d0, epic12_device::draw_sprite_f1_ti1_tr0_s2_d0, epic12_device::draw_sprite_f1_ti1_tr0_s3_d0, epic12_device::draw_sprite_f1_ti1_tr0_s4_d0, epic12_device::draw_sprite_f1_ti1_tr0_s5_d0, epic12_device::draw_sprite_f1_ti1_tr0_s6_d0, epic12_device::draw_sprite_f1_ti1_tr0_s7_d0,
epic12_device::draw_sprite_f1_ti1_tr0_s0_d1, epic12_device::draw_sprite_f1_ti1_tr0_s1_d1, epic12_device::draw_sprite_f1_ti1_tr0_s2_d1, epic12_device::draw_sprite_f1_ti1_tr0_s3_d1, epic12_device::draw_sprite_f1_ti1_tr0_s4_d1, epic12_device::draw_sprite_f1_ti1_tr0_s5_d1, epic12_device::draw_sprite_f1_ti1_tr0_s6_d1, epic12_device::draw_sprite_f1_ti1_tr0_s7_d1,
@@ -254,7 +254,7 @@ epic12_device_blitfunction epic12_device_f1_ti1_tr0_blit_funcs[] =
-epic12_device_blitfunction epic12_device_f0_ti0_tr1_blit_funcs[] =
+const epic12_device::blitfunction epic12_device::f0_ti0_tr1_blit_funcs[64] =
{
epic12_device::draw_sprite_f0_ti0_tr1_s0_d0, epic12_device::draw_sprite_f0_ti0_tr1_s1_d0, epic12_device::draw_sprite_f0_ti0_tr1_s2_d0, epic12_device::draw_sprite_f0_ti0_tr1_s3_d0, epic12_device::draw_sprite_f0_ti0_tr1_s4_d0, epic12_device::draw_sprite_f0_ti0_tr1_s5_d0, epic12_device::draw_sprite_f0_ti0_tr1_s6_d0, epic12_device::draw_sprite_f0_ti0_tr1_s7_d0,
epic12_device::draw_sprite_f0_ti0_tr1_s0_d1, epic12_device::draw_sprite_f0_ti0_tr1_s1_d1, epic12_device::draw_sprite_f0_ti0_tr1_s2_d1, epic12_device::draw_sprite_f0_ti0_tr1_s3_d1, epic12_device::draw_sprite_f0_ti0_tr1_s4_d1, epic12_device::draw_sprite_f0_ti0_tr1_s5_d1, epic12_device::draw_sprite_f0_ti0_tr1_s6_d1, epic12_device::draw_sprite_f0_ti0_tr1_s7_d1,
@@ -266,7 +266,7 @@ epic12_device_blitfunction epic12_device_f0_ti0_tr1_blit_funcs[] =
epic12_device::draw_sprite_f0_ti0_tr1_s0_d7, epic12_device::draw_sprite_f0_ti0_tr1_s1_d7, epic12_device::draw_sprite_f0_ti0_tr1_s2_d7, epic12_device::draw_sprite_f0_ti0_tr1_s3_d7, epic12_device::draw_sprite_f0_ti0_tr1_s4_d7, epic12_device::draw_sprite_f0_ti0_tr1_s5_d7, epic12_device::draw_sprite_f0_ti0_tr1_s6_d7, epic12_device::draw_sprite_f0_ti0_tr1_s7_d7,
};
-epic12_device_blitfunction epic12_device_f0_ti0_tr0_blit_funcs[] =
+const epic12_device::blitfunction epic12_device::f0_ti0_tr0_blit_funcs[64] =
{
epic12_device::draw_sprite_f0_ti0_tr0_s0_d0, epic12_device::draw_sprite_f0_ti0_tr0_s1_d0, epic12_device::draw_sprite_f0_ti0_tr0_s2_d0, epic12_device::draw_sprite_f0_ti0_tr0_s3_d0, epic12_device::draw_sprite_f0_ti0_tr0_s4_d0, epic12_device::draw_sprite_f0_ti0_tr0_s5_d0, epic12_device::draw_sprite_f0_ti0_tr0_s6_d0, epic12_device::draw_sprite_f0_ti0_tr0_s7_d0,
epic12_device::draw_sprite_f0_ti0_tr0_s0_d1, epic12_device::draw_sprite_f0_ti0_tr0_s1_d1, epic12_device::draw_sprite_f0_ti0_tr0_s2_d1, epic12_device::draw_sprite_f0_ti0_tr0_s3_d1, epic12_device::draw_sprite_f0_ti0_tr0_s4_d1, epic12_device::draw_sprite_f0_ti0_tr0_s5_d1, epic12_device::draw_sprite_f0_ti0_tr0_s6_d1, epic12_device::draw_sprite_f0_ti0_tr0_s7_d1,
@@ -278,7 +278,7 @@ epic12_device_blitfunction epic12_device_f0_ti0_tr0_blit_funcs[] =
epic12_device::draw_sprite_f0_ti0_tr0_s0_d7, epic12_device::draw_sprite_f0_ti0_tr0_s1_d7, epic12_device::draw_sprite_f0_ti0_tr0_s2_d7, epic12_device::draw_sprite_f0_ti0_tr0_s3_d7, epic12_device::draw_sprite_f0_ti0_tr0_s4_d7, epic12_device::draw_sprite_f0_ti0_tr0_s5_d7, epic12_device::draw_sprite_f0_ti0_tr0_s6_d7, epic12_device::draw_sprite_f0_ti0_tr0_s7_d7,
};
-epic12_device_blitfunction epic12_device_f1_ti0_tr1_blit_funcs[] =
+const epic12_device::blitfunction epic12_device::f1_ti0_tr1_blit_funcs[64] =
{
epic12_device::draw_sprite_f1_ti0_tr1_s0_d0, epic12_device::draw_sprite_f1_ti0_tr1_s1_d0, epic12_device::draw_sprite_f1_ti0_tr1_s2_d0, epic12_device::draw_sprite_f1_ti0_tr1_s3_d0, epic12_device::draw_sprite_f1_ti0_tr1_s4_d0, epic12_device::draw_sprite_f1_ti0_tr1_s5_d0, epic12_device::draw_sprite_f1_ti0_tr1_s6_d0, epic12_device::draw_sprite_f1_ti0_tr1_s7_d0,
epic12_device::draw_sprite_f1_ti0_tr1_s0_d1, epic12_device::draw_sprite_f1_ti0_tr1_s1_d1, epic12_device::draw_sprite_f1_ti0_tr1_s2_d1, epic12_device::draw_sprite_f1_ti0_tr1_s3_d1, epic12_device::draw_sprite_f1_ti0_tr1_s4_d1, epic12_device::draw_sprite_f1_ti0_tr1_s5_d1, epic12_device::draw_sprite_f1_ti0_tr1_s6_d1, epic12_device::draw_sprite_f1_ti0_tr1_s7_d1,
@@ -290,7 +290,7 @@ epic12_device_blitfunction epic12_device_f1_ti0_tr1_blit_funcs[] =
epic12_device::draw_sprite_f1_ti0_tr1_s0_d7, epic12_device::draw_sprite_f1_ti0_tr1_s1_d7, epic12_device::draw_sprite_f1_ti0_tr1_s2_d7, epic12_device::draw_sprite_f1_ti0_tr1_s3_d7, epic12_device::draw_sprite_f1_ti0_tr1_s4_d7, epic12_device::draw_sprite_f1_ti0_tr1_s5_d7, epic12_device::draw_sprite_f1_ti0_tr1_s6_d7, epic12_device::draw_sprite_f1_ti0_tr1_s7_d7,
};
-epic12_device_blitfunction epic12_device_f1_ti0_tr0_blit_funcs[] =
+const epic12_device::blitfunction epic12_device::f1_ti0_tr0_blit_funcs[64] =
{
epic12_device::draw_sprite_f1_ti0_tr0_s0_d0, epic12_device::draw_sprite_f1_ti0_tr0_s1_d0, epic12_device::draw_sprite_f1_ti0_tr0_s2_d0, epic12_device::draw_sprite_f1_ti0_tr0_s3_d0, epic12_device::draw_sprite_f1_ti0_tr0_s4_d0, epic12_device::draw_sprite_f1_ti0_tr0_s5_d0, epic12_device::draw_sprite_f1_ti0_tr0_s6_d0, epic12_device::draw_sprite_f1_ti0_tr0_s7_d0,
epic12_device::draw_sprite_f1_ti0_tr0_s0_d1, epic12_device::draw_sprite_f1_ti0_tr0_s1_d1, epic12_device::draw_sprite_f1_ti0_tr0_s2_d1, epic12_device::draw_sprite_f1_ti0_tr0_s3_d1, epic12_device::draw_sprite_f1_ti0_tr0_s4_d1, epic12_device::draw_sprite_f1_ti0_tr0_s5_d1, epic12_device::draw_sprite_f1_ti0_tr0_s6_d1, epic12_device::draw_sprite_f1_ti0_tr0_s7_d1,
@@ -320,7 +320,7 @@ inline void epic12_device::gfx_draw_shadow_copy(address_space &space, offs_t *ad
// todo, calcualte clipping.
- epic12_device_blit_delay += w*h;
+ blit_delay += w*h;
}
@@ -409,7 +409,7 @@ inline void epic12_device::gfx_draw(offs_t *addr)
}
else
{
- epic12_device_f0_ti1_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params);
+ f0_ti1_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params);
}
}
else
@@ -420,7 +420,7 @@ inline void epic12_device::gfx_draw(offs_t *addr)
}
else
{
- epic12_device_f0_ti1_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params);
+ f0_ti1_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params);
}
}
}
@@ -434,7 +434,7 @@ inline void epic12_device::gfx_draw(offs_t *addr)
}
else
{
- epic12_device_f1_ti1_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params);
+ f1_ti1_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params);
}
}
else
@@ -445,7 +445,7 @@ inline void epic12_device::gfx_draw(offs_t *addr)
}
else
{
- epic12_device_f1_ti1_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params);
+ f1_ti1_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params);
}
}
}
@@ -495,7 +495,7 @@ inline void epic12_device::gfx_draw(offs_t *addr)
}
else
{
- epic12_device_f0_ti0_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params);
+ f0_ti0_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params);
}
}
else
@@ -506,7 +506,7 @@ inline void epic12_device::gfx_draw(offs_t *addr)
}
else
{
- epic12_device_f0_ti0_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params);
+ f0_ti0_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params);
}
}
}
@@ -520,7 +520,7 @@ inline void epic12_device::gfx_draw(offs_t *addr)
}
else
{
- epic12_device_f1_ti0_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params);
+ f1_ti0_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params);
}
}
else
@@ -531,7 +531,7 @@ inline void epic12_device::gfx_draw(offs_t *addr)
}
else
{
- epic12_device_f1_ti0_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params);
+ f1_ti0_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params);
}
}
}
@@ -681,7 +681,7 @@ void *epic12_device::blit_request_callback_unsafe(void *param, int threadid)
{
epic12_device *object = reinterpret_cast<epic12_device *>(param);
- epic12_device_blit_delay = 0;
+ blit_delay = 0;
object->gfx_exec_unsafe();
return nullptr;
}
@@ -721,13 +721,13 @@ WRITE32_MEMBER( epic12_device::gfx_exec_w )
osd_work_item_release(m_blitter_request);
}
- epic12_device_blit_delay = 0;
+ blit_delay = 0;
gfx_create_shadow_copy(space); // create a copy of the blit list so we can safely thread it.
- if (epic12_device_blit_delay)
+ if (blit_delay)
{
m_blitter_busy = 1;
- m_blitter_delay_timer->adjust(attotime::from_nsec(epic12_device_blit_delay*8)); // NOT accurate timing (currently ignored anyway)
+ m_blitter_delay_timer->adjust(attotime::from_nsec(blit_delay*8)); // NOT accurate timing (currently ignored anyway)
}
m_gfx_addr_shadowcopy = m_gfx_addr;
@@ -760,10 +760,10 @@ WRITE32_MEMBER( epic12_device::gfx_exec_w_unsafe )
osd_work_item_release(m_blitter_request);
}
- if (epic12_device_blit_delay)
+ if (blit_delay)
{
m_blitter_busy = 1;
- int delay = epic12_device_blit_delay*(15 * m_delay_scale / 50);
+ int delay = blit_delay*(15 * m_delay_scale / 50);
//printf("delay %d\n", delay);
m_blitter_delay_timer->adjust(attotime::from_nsec(delay));
}
diff --git a/src/devices/video/epic12.h b/src/devices/video/epic12.h
index 07edae65a79..ce2bb88c5d3 100644
--- a/src/devices/video/epic12.h
+++ b/src/devices/video/epic12.h
@@ -1,6 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood, Luca Elia, MetalliC
/* emulation of Altera Cyclone EPIC12 FPGA programmed as a blitter */
+#ifndef MAME_VIDEO_EPIC12_H
+#define MAME_VIDEO_EPIC12_H
+
+#pragma once
#define MCFG_EPIC12_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, EPIC12, 0)
@@ -9,42 +13,7 @@
epic12_device::set_mainramsize(*device, _rgn);
-extern uint8_t epic12_device_colrtable[0x20][0x40];
-extern uint8_t epic12_device_colrtable_rev[0x20][0x40];
-extern uint8_t epic12_device_colrtable_add[0x20][0x20];
-extern uint64_t epic12_device_blit_delay;
-
-struct _clr_t
-{
- uint8_t b,g,r,t;
-};
-
-typedef struct _clr_t clr_t;
-
-union colour_t
-{
- clr_t trgb;
- uint32_t u32;
-};
-
-typedef void (*epic12_device_blitfunction)(bitmap_rgb32 *,
- const rectangle *,
- uint32_t *, /* gfx */
- int , /* src_x */
- int , /* src_y */
- const int , /* dst_x_start */
- const int , /* dst_y_start */
- int , /* dimx */
- int , /* dimy */
- const int , /* flipy */
- const uint8_t , /* s_alpha */
- const uint8_t , /* d_alpha */
- //int , /* tint */
- const clr_t * );
-
-
-class epic12_device : public device_t,
- public device_video_interface
+class epic12_device : public device_t, public device_video_interface
{
public:
epic12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -114,6 +83,167 @@ public:
void gfx_exec_unsafe(void);
static void *blit_request_callback_unsafe(void *param, int threadid);
+protected:
+ struct clr_t
+ {
+ // clr_t to r5g5b5
+ uint32_t to_pen() const
+ {
+ // --t- ---- rrrr r--- gggg g--- bbbb b--- format
+ return (r << (16 + 3)) | (g << (8 + 3)) | (b << 3);
+
+ // --t- ---- ---r rrrr ---g gggg ---b bbbb format
+ //return (r << 16) | (g << 8) | b;
+ }
+
+
+ void add_with_clr_mul_fixed(const clr_t &clr0, uint8_t mulfixed_val, const clr_t &mulfixed_clr0)
+ {
+ r = colrtable_add[clr0.r][colrtable[mulfixed_clr0.r][mulfixed_val]];
+ g = colrtable_add[clr0.g][colrtable[mulfixed_clr0.g][mulfixed_val]];
+ b = colrtable_add[clr0.b][colrtable[mulfixed_clr0.b][mulfixed_val]];
+ }
+
+ void add_with_clr_mul_3param(const clr_t &clr0, const clr_t &clr1, const clr_t &clr2)
+ {
+ r = colrtable_add[clr0.r][colrtable[clr2.r][clr1.r]];
+ g = colrtable_add[clr0.g][colrtable[clr2.g][clr1.g]];
+ b = colrtable_add[clr0.b][colrtable[clr2.b][clr1.b]];
+ }
+
+ void add_with_clr_square(const clr_t &clr0, const clr_t &clr1)
+ {
+ r = colrtable_add[clr0.r][colrtable[clr1.r][clr1.r]];
+ g = colrtable_add[clr0.r][colrtable[clr1.g][clr1.g]];
+ b = colrtable_add[clr0.r][colrtable[clr1.b][clr1.b]];
+ }
+
+ void add_with_clr_mul_fixed_rev(const clr_t &clr0, uint8_t val, const clr_t &clr1)
+ {
+ r = colrtable_add[clr0.r][colrtable_rev[val][clr1.r]];
+ g = colrtable_add[clr0.g][colrtable_rev[val][clr1.g]];
+ b = colrtable_add[clr0.b][colrtable_rev[val][clr1.b]];
+ }
+
+ void add_with_clr_mul_rev_3param(const clr_t &clr0, const clr_t &clr1, const clr_t &clr2)
+ {
+ r = colrtable_add[clr0.r][colrtable_rev[clr2.r][clr1.r]];
+ g = colrtable_add[clr0.g][colrtable_rev[clr2.g][clr1.g]];
+ b = colrtable_add[clr0.b][colrtable_rev[clr2.b][clr1.b]];
+ }
+
+ void add_with_clr_mul_rev_square(const clr_t &clr0, const clr_t &clr1)
+ {
+ r = colrtable_add[clr0.r][colrtable_rev[(clr1.r)][(clr1.r)]];
+ g = colrtable_add[clr0.g][colrtable_rev[(clr1.g)][(clr1.g)]];
+ b = colrtable_add[clr0.b][colrtable_rev[(clr1.b)][(clr1.b)]];
+ }
+
+
+ void add(const clr_t &clr0, const clr_t &clr1)
+ {
+ //r = clr0.r + clr1.r;
+ //g = clr0.g + clr1.g;
+ //b = clr0.b + clr1.b;
+
+ // use pre-clamped lookup table
+ r = colrtable_add[clr0.r][clr1.r];
+ g = colrtable_add[clr0.g][clr1.g];
+ b = colrtable_add[clr0.b][clr1.b];
+ }
+
+
+ void mul(const clr_t &clr1)
+ {
+ r = colrtable[r][clr1.r];
+ g = colrtable[g][clr1.g];
+ b = colrtable[b][clr1.b];
+ }
+
+ void square(const clr_t &clr1)
+ {
+ r = colrtable[clr1.r][clr1.r];
+ g = colrtable[clr1.g][clr1.g];
+ b = colrtable[clr1.b][clr1.b];
+ }
+
+ void mul_3param(const clr_t &clr1, const clr_t &clr2)
+ {
+ r = colrtable[clr2.r][clr1.r];
+ g = colrtable[clr2.g][clr1.g];
+ b = colrtable[clr2.b][clr1.b];
+ }
+
+ void mul_rev(const clr_t &clr1)
+ {
+ r = colrtable_rev[r][clr1.r];
+ g = colrtable_rev[g][clr1.g];
+ b = colrtable_rev[b][clr1.b];
+ }
+
+ void mul_rev_square(const clr_t &clr1)
+ {
+ r = colrtable_rev[clr1.r][clr1.r];
+ g = colrtable_rev[clr1.g][clr1.g];
+ b = colrtable_rev[clr1.b][clr1.b];
+ }
+
+
+ void mul_rev_3param(const clr_t &clr1, const clr_t &clr2)
+ {
+ r = colrtable_rev[clr2.r][clr1.r];
+ g = colrtable_rev[clr2.g][clr1.g];
+ b = colrtable_rev[clr2.b][clr1.b];
+ }
+
+ void mul_fixed(uint8_t val, const clr_t &clr0)
+ {
+ r = colrtable[val][clr0.r];
+ g = colrtable[val][clr0.g];
+ b = colrtable[val][clr0.b];
+ }
+
+ void mul_fixed_rev(uint8_t val, const clr_t &clr0)
+ {
+ r = colrtable_rev[val][clr0.r];
+ g = colrtable_rev[val][clr0.g];
+ b = colrtable_rev[val][clr0.b];
+ }
+
+ void copy(const clr_t &clr0)
+ {
+ r = clr0.r;
+ g = clr0.g;
+ b = clr0.b;
+ }
+
+
+ uint8_t b, g, r, t;
+ };
+
+ union colour_t
+ {
+ clr_t trgb;
+ uint32_t u32;
+ };
+
+ typedef void (*blitfunction)(
+ bitmap_rgb32 *,
+ const rectangle *,
+ uint32_t *gfx,
+ int src_x,
+ int src_y,
+ const int dst_x_start,
+ const int dst_y_start,
+ int dimx,
+ int dimy,
+ const int flipy,
+ const uint8_t s_alpha,
+ const uint8_t d_alpha,
+ //int tint,
+ const clr_t *);
+
+
#define BLIT_FUNCTION static void
#define BLIT_PARAMS bitmap_rgb32 *bitmap, const rectangle *clip, uint32_t *gfx, int src_x, int src_y, const int dst_x_start, const int dst_y_start, int dimx, int dimy, const int flipy, const uint8_t s_alpha, const uint8_t d_alpha, const clr_t *tint_clr
@@ -668,146 +798,13 @@ public:
// convert separate r,g,b biases (0..80..ff) to clr_t (-1f..0..1f)
- static inline void tint_to_clr(uint8_t r, uint8_t g, uint8_t b, clr_t *clr)
+ void tint_to_clr(uint8_t r, uint8_t g, uint8_t b, clr_t *clr)
{
clr->r = r>>2;
clr->g = g>>2;
clr->b = b>>2;
};
- // clr_t to r5g5b5
- static inline uint32_t clr_to_pen(const clr_t *clr)
- {
- // --t- ---- rrrr r--- gggg g--- bbbb b--- format
- return (clr->r << (16+3)) | (clr->g << (8+3)) | (clr->b << 3);
-
- // --t- ---- ---r rrrr ---g gggg ---b bbbb format
- // return (clr->r << (16)) | (clr->g << (8)) | (clr->b);
- };
-
-
- static inline void clr_add_with_clr_mul_fixed(clr_t *clr, const clr_t *clr0, const uint8_t mulfixed_val, const clr_t *mulfixed_clr0)
- {
- clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(mulfixed_clr0->r)][mulfixed_val]];
- clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable[(mulfixed_clr0->g)][mulfixed_val]];
- clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable[(mulfixed_clr0->b)][mulfixed_val]];
- }
-
- static inline void clr_add_with_clr_mul_3param(clr_t *clr, const clr_t *clr0, const clr_t *clr1, const clr_t *clr2)
- {
- clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr2->r)][(clr1->r)]];
- clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable[(clr2->g)][(clr1->g)]];
- clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable[(clr2->b)][(clr1->b)]];
- }
-
- static inline void clr_add_with_clr_square(clr_t *clr, const clr_t *clr0, const clr_t *clr1)
- {
- clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr1->r)][(clr1->r)]];
- clr->g = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr1->g)][(clr1->g)]];
- clr->b = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr1->b)][(clr1->b)]];
- }
-
- static inline void clr_add_with_clr_mul_fixed_rev(clr_t *clr, const clr_t *clr0, const uint8_t val, const clr_t *clr1)
- {
- clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable_rev[val][(clr1->r)]];
- clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable_rev[val][(clr1->g)]];
- clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable_rev[val][(clr1->b)]];
- }
-
- static inline void clr_add_with_clr_mul_rev_3param(clr_t *clr, const clr_t *clr0, const clr_t *clr1, const clr_t *clr2)
- {
- clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable_rev[(clr2->r)][(clr1->r)]];
- clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable_rev[(clr2->g)][(clr1->g)]];
- clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable_rev[(clr2->b)][(clr1->b)]];
- }
-
- static inline void clr_add_with_clr_mul_rev_square(clr_t *clr, const clr_t *clr0, const clr_t *clr1)
- {
- clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable_rev[(clr1->r)][(clr1->r)]];
- clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable_rev[(clr1->g)][(clr1->g)]];
- clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable_rev[(clr1->b)][(clr1->b)]];
- }
-
-
- static inline void clr_add(clr_t *clr, const clr_t *clr0, const clr_t *clr1)
- {
- /*
- clr->r = clr0->r + clr1->r;
- clr->g = clr0->g + clr1->g;
- clr->b = clr0->b + clr1->b;
- */
- // use pre-clamped lookup table
- clr->r = epic12_device_colrtable_add[clr0->r][clr1->r];
- clr->g = epic12_device_colrtable_add[clr0->g][clr1->g];
- clr->b = epic12_device_colrtable_add[clr0->b][clr1->b];
-
- }
-
-
- static inline void clr_mul(clr_t *clr0, const clr_t *clr1)
- {
- clr0->r = epic12_device_colrtable[(clr0->r)][(clr1->r)];
- clr0->g = epic12_device_colrtable[(clr0->g)][(clr1->g)];
- clr0->b = epic12_device_colrtable[(clr0->b)][(clr1->b)];
- }
-
- static inline void clr_square(clr_t *clr0, const clr_t *clr1)
- {
- clr0->r = epic12_device_colrtable[(clr1->r)][(clr1->r)];
- clr0->g = epic12_device_colrtable[(clr1->g)][(clr1->g)];
- clr0->b = epic12_device_colrtable[(clr1->b)][(clr1->b)];
- }
-
- static inline void clr_mul_3param(clr_t *clr0, const clr_t *clr1, const clr_t *clr2)
- {
- clr0->r = epic12_device_colrtable[(clr2->r)][(clr1->r)];
- clr0->g = epic12_device_colrtable[(clr2->g)][(clr1->g)];
- clr0->b = epic12_device_colrtable[(clr2->b)][(clr1->b)];
- }
-
- static inline void clr_mul_rev(clr_t *clr0, const clr_t *clr1)
- {
- clr0->r = epic12_device_colrtable_rev[(clr0->r)][(clr1->r)];
- clr0->g = epic12_device_colrtable_rev[(clr0->g)][(clr1->g)];
- clr0->b = epic12_device_colrtable_rev[(clr0->b)][(clr1->b)];
- }
-
- static inline void clr_mul_rev_square(clr_t *clr0, const clr_t *clr1)
- {
- clr0->r = epic12_device_colrtable_rev[(clr1->r)][(clr1->r)];
- clr0->g = epic12_device_colrtable_rev[(clr1->g)][(clr1->g)];
- clr0->b = epic12_device_colrtable_rev[(clr1->b)][(clr1->b)];
- }
-
-
- static inline void clr_mul_rev_3param(clr_t *clr0, const clr_t *clr1, const clr_t *clr2)
- {
- clr0->r = epic12_device_colrtable_rev[(clr2->r)][(clr1->r)];
- clr0->g = epic12_device_colrtable_rev[(clr2->g)][(clr1->g)];
- clr0->b = epic12_device_colrtable_rev[(clr2->b)][(clr1->b)];
- }
-
- static inline void clr_mul_fixed(clr_t *clr, const uint8_t val, const clr_t *clr0)
- {
- clr->r = epic12_device_colrtable[val][(clr0->r)];
- clr->g = epic12_device_colrtable[val][(clr0->g)];
- clr->b = epic12_device_colrtable[val][(clr0->b)];
- }
-
- static inline void clr_mul_fixed_rev(clr_t *clr, const uint8_t val, const clr_t *clr0)
- {
- clr->r = epic12_device_colrtable_rev[val][(clr0->r)];
- clr->g = epic12_device_colrtable_rev[val][(clr0->g)];
- clr->b = epic12_device_colrtable_rev[val][(clr0->b)];
- }
-
- static inline void clr_copy(clr_t *clr, const clr_t *clr0)
- {
- clr->r = clr0->r;
- clr->g = clr0->g;
- clr->b = clr0->b;
- }
-
// (1|s|d) * s_factor * s + (1|s|d) * d_factor * d
@@ -821,10 +818,11 @@ public:
// 7: *
-protected:
virtual void device_start() override;
virtual void device_reset() override;
+ TIMER_CALLBACK_MEMBER( blitter_delay_callback );
+
osd_work_queue *m_work_queue;
osd_work_item *m_blitter_request;
@@ -832,9 +830,22 @@ protected:
emu_timer *m_blitter_delay_timer;
int m_blitter_busy;
- TIMER_CALLBACK_MEMBER( blitter_delay_callback );
+ static uint8_t colrtable[0x20][0x40];
+ static uint8_t colrtable_rev[0x20][0x40];
+ static uint8_t colrtable_add[0x20][0x20];
+ static uint64_t blit_delay;
+
+ static const blitfunction f0_ti1_tr1_blit_funcs[64];
+ static const blitfunction f0_ti1_tr0_blit_funcs[64];
+ static const blitfunction f1_ti1_tr1_blit_funcs[64];
+ static const blitfunction f1_ti1_tr0_blit_funcs[64];
+ static const blitfunction f0_ti0_tr1_blit_funcs[64];
+ static const blitfunction f0_ti0_tr0_blit_funcs[64];
+ static const blitfunction f1_ti0_tr1_blit_funcs[64];
+ static const blitfunction f1_ti0_tr0_blit_funcs[64];
};
+DECLARE_DEVICE_TYPE(EPIC12, epic12_device)
-extern const device_type EPIC12;
+#endif // MAME_VIDEO_EPIC12_H
diff --git a/src/devices/video/epic12in.hxx b/src/devices/video/epic12in.hxx
index 13f29e6f609..a74249f986e 100644
--- a/src/devices/video/epic12in.hxx
+++ b/src/devices/video/epic12in.hxx
@@ -86,23 +86,23 @@ void epic12_device::FUNCNAME(BLIT_PARAMS)
// wrong/unsafe slowdown sim
if (dimy > starty && dimx > startx)
{
- epic12_device_blit_delay += (dimy - starty)*(dimx - startx);
+ blit_delay += (dimy - starty)*(dimx - startx);
- //printf("delay is now %d\n", epic12_device_blit_delay);
+ //printf("delay is now %d\n", blit_delay);
}
#if BLENDED == 1
#if _SMODE == 0
#if _DMODE == 0
- const uint8_t* salpha_table = epic12_device_colrtable[s_alpha];
- const uint8_t* dalpha_table = epic12_device_colrtable[d_alpha];
+ const uint8_t* salpha_table = colrtable[s_alpha];
+ const uint8_t* dalpha_table = colrtable[d_alpha];
#endif
#if _DMODE == 5
- const uint8_t* salpha_table = epic12_device_colrtable[s_alpha];
+ const uint8_t* salpha_table = colrtable[s_alpha];
#endif
#if _DMODE == 1
- const uint8_t* salpha_table = epic12_device_colrtable[s_alpha];
+ const uint8_t* salpha_table = colrtable[s_alpha];
#endif
#endif
@@ -110,7 +110,7 @@ void epic12_device::FUNCNAME(BLIT_PARAMS)
#if _SMODE == 2
#if _DMODE == 0
- const uint8_t* dalpha_table = epic12_device_colrtable[d_alpha];
+ const uint8_t* dalpha_table = colrtable[d_alpha];
#endif
#endif
#endif
diff --git a/src/devices/video/epic12pixel.hxx b/src/devices/video/epic12pixel.hxx
index 65666470e40..f324e629b97 100644
--- a/src/devices/video/epic12pixel.hxx
+++ b/src/devices/video/epic12pixel.hxx
@@ -42,7 +42,7 @@
// source * intesity and clamp
#if TINT == 1
- clr_mul(&s_clr.trgb, tint_clr);
+ s_clr.trgb.mul(*tint_clr);
#endif
#if BLENDED == 1
@@ -58,98 +58,98 @@
//g_profiler.start(PROFILER_USER1);
// this is used extensively in the games (ingame, futari title screens etc.)
- s_clr.trgb.r = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.r)]][dalpha_table[(d_clr.trgb.r)]];
- s_clr.trgb.g = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.g)]][dalpha_table[(d_clr.trgb.g)]];
- s_clr.trgb.b = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.b)]][dalpha_table[(d_clr.trgb.b)]];
+ s_clr.trgb.r = colrtable_add[salpha_table[(s_clr.trgb.r)]][dalpha_table[(d_clr.trgb.r)]];
+ s_clr.trgb.g = colrtable_add[salpha_table[(s_clr.trgb.g)]][dalpha_table[(d_clr.trgb.g)]];
+ s_clr.trgb.b = colrtable_add[salpha_table[(s_clr.trgb.b)]][dalpha_table[(d_clr.trgb.b)]];
#elif _DMODE == 1
//g_profiler.start(PROFILER_USER2);
// futari ~7%
- s_clr.trgb.r = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.r)]][epic12_device_colrtable[(s_clr.trgb.r)][(d_clr.trgb.r)]];
- s_clr.trgb.g = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.g)]][epic12_device_colrtable[(s_clr.trgb.g)][(d_clr.trgb.g)]];
- s_clr.trgb.b = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.b)]][epic12_device_colrtable[(s_clr.trgb.b)][(d_clr.trgb.b)]];
+ s_clr.trgb.r = colrtable_add[salpha_table[(s_clr.trgb.r)]][colrtable[(s_clr.trgb.r)][(d_clr.trgb.r)]];
+ s_clr.trgb.g = colrtable_add[salpha_table[(s_clr.trgb.g)]][colrtable[(s_clr.trgb.g)][(d_clr.trgb.g)]];
+ s_clr.trgb.b = colrtable_add[salpha_table[(s_clr.trgb.b)]][colrtable[(s_clr.trgb.b)][(d_clr.trgb.b)]];
#elif _DMODE == 2
//g_profiler.start(PROFILER_USER3);
- clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb);
- clr_add_with_clr_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ clr0.trgb.mul_fixed(s_alpha, s_clr.trgb);
+ s_clr.trgb.add_with_clr_square(clr0.trgb, d_clr.trgb);
#elif _DMODE == 3
//g_profiler.start(PROFILER_USER4);
- clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb);
- clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ clr0.trgb.mul_fixed(s_alpha, s_clr.trgb);
+ s_clr.trgb.add(clr0.trgb, d_clr.trgb);
#elif _DMODE == 4
//g_profiler.start(PROFILER_USER5);
- clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb);
- clr_add_with_clr_mul_fixed_rev(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb);
+ clr0.trgb.mul_fixed(s_alpha, s_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_fixed_rev(clr0.trgb, d_alpha, d_clr.trgb);
#elif _DMODE == 5
// futari black character select ~13%
//g_profiler.start(PROFILER_USER6);
- s_clr.trgb.r = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.r)]][epic12_device_colrtable_rev[(s_clr.trgb.r)][(d_clr.trgb.r)]];
- s_clr.trgb.g = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.g)]][epic12_device_colrtable_rev[(s_clr.trgb.g)][(d_clr.trgb.g)]];
- s_clr.trgb.b = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.b)]][epic12_device_colrtable_rev[(s_clr.trgb.b)][(d_clr.trgb.b)]];
+ s_clr.trgb.r = colrtable_add[salpha_table[(s_clr.trgb.r)]][colrtable_rev[(s_clr.trgb.r)][(d_clr.trgb.r)]];
+ s_clr.trgb.g = colrtable_add[salpha_table[(s_clr.trgb.g)]][colrtable_rev[(s_clr.trgb.g)][(d_clr.trgb.g)]];
+ s_clr.trgb.b = colrtable_add[salpha_table[(s_clr.trgb.b)]][colrtable_rev[(s_clr.trgb.b)][(d_clr.trgb.b)]];
#elif _DMODE == 6
//g_profiler.start(PROFILER_USER7);
- clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb);
- clr_add_with_clr_mul_rev_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ clr0.trgb.mul_fixed(s_alpha, s_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_rev_square(clr0.trgb, d_clr.trgb);
#elif _DMODE == 7
//g_profiler.start(PROFILER_USER8);
- clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb);
- clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ clr0.trgb.mul_fixed(s_alpha, s_clr.trgb);
+ s_clr.trgb.add(clr0.trgb, d_clr.trgb);
#endif
//g_profiler.stop();
#elif _SMODE == 1
//g_profiler.start(PROFILER_USER6);
- clr_square(&clr0.trgb, &s_clr.trgb);
+ clr0.trgb.square(s_clr.trgb);
#elif _SMODE == 2
// g_profiler.start(PROFILER_USER4);
#if _DMODE == 0
// this is used heavily on espgal2 highscore screen (~28%) optimized to avoid use of temp clr0 variable
- s_clr.trgb.r = epic12_device_colrtable_add[epic12_device_colrtable[(d_clr.trgb.r)][(s_clr.trgb.r)]][dalpha_table[(d_clr.trgb.r)]];
- s_clr.trgb.g = epic12_device_colrtable_add[epic12_device_colrtable[(d_clr.trgb.g)][(s_clr.trgb.g)]][dalpha_table[(d_clr.trgb.g)]];
- s_clr.trgb.b = epic12_device_colrtable_add[epic12_device_colrtable[(d_clr.trgb.b)][(s_clr.trgb.b)]][dalpha_table[(d_clr.trgb.b)]];
+ s_clr.trgb.r = colrtable_add[colrtable[(d_clr.trgb.r)][(s_clr.trgb.r)]][dalpha_table[(d_clr.trgb.r)]];
+ s_clr.trgb.g = colrtable_add[colrtable[(d_clr.trgb.g)][(s_clr.trgb.g)]][dalpha_table[(d_clr.trgb.g)]];
+ s_clr.trgb.b = colrtable_add[colrtable[(d_clr.trgb.b)][(s_clr.trgb.b)]][dalpha_table[(d_clr.trgb.b)]];
#elif _DMODE == 1
- clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb);
- clr_add_with_clr_mul_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb);
+ clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_3param(clr0.trgb, d_clr.trgb, s_clr.trgb);
#elif _DMODE == 2
- clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb);
- clr_add_with_clr_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb);
+ s_clr.trgb.add_with_clr_square(clr0.trgb, d_clr.trgb);
#elif _DMODE == 3
- clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb);
- clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb);
+ s_clr.trgb.add(clr0.trgb, d_clr.trgb);
#elif _DMODE == 4
- clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb);
- clr_add_with_clr_mul_fixed_rev(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb);
+ clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_fixed_rev(clr0.trgb, d_alpha, d_clr.trgb);
#elif _DMODE == 5
- clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb);
- clr_add_with_clr_mul_rev_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb);
+ clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_rev_3param(clr0.trgb, d_clr.trgb, s_clr.trgb);
#elif _DMODE == 6
- clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb);
- clr_add_with_clr_mul_rev_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_rev_square(clr0.trgb, d_clr.trgb);
#elif _DMODE == 7
- clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb);
- clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb);
+ s_clr.trgb.add(clr0.trgb, d_clr.trgb);
#endif
//g_profiler.stop();
#elif _SMODE == 3
//g_profiler.start(PROFILER_USER1);
- clr_copy(&clr0.trgb, &s_clr.trgb);
+ clr0.trgb.copy(s_clr.trgb);
#elif _SMODE == 4
//g_profiler.start(PROFILER_USER2);
- clr_mul_fixed_rev(&clr0.trgb, s_alpha, &s_clr.trgb);
+ clr0.trgb.mul_fixed_rev(s_alpha, s_clr.trgb);
#elif _SMODE == 5
//g_profiler.start(PROFILER_USER3);
- clr_mul_rev_square(&clr0.trgb, &s_clr.trgb);
+ clr0.trgb.mul_rev_square(s_clr.trgb);
#elif _SMODE == 6
//g_profiler.start(PROFILER_USER4);
- clr_mul_rev_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb);
+ clr0.trgb.mul_rev_3param(s_clr.trgb, d_clr.trgb);
#elif _SMODE == 7
//g_profiler.start(PROFILER_USER5);
- clr_copy(&clr0.trgb, &s_clr.trgb);
+ clr0.trgb.copy(s_clr.trgb);
#endif
@@ -158,22 +158,22 @@
#if _SMODE != 0
#if _DMODE == 0
- clr_add_with_clr_mul_fixed(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_fixed(clr0.trgb, d_alpha, d_clr.trgb);
#elif _DMODE == 1
- clr_add_with_clr_mul_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_3param(clr0.trgb, d_clr.trgb, s_clr.trgb);
#elif _DMODE == 2
- clr_add_with_clr_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ s_clr.trgb.add_with_clr_square(clr0.trgb, d_clr.trgb);
#elif _DMODE == 3
- clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ s_clr.trgb.add(clr0.trgb, d_clr.trgb);
#elif _DMODE == 4
- clr_add_with_clr_mul_fixed_rev(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_fixed_rev(clr0.trgb, d_alpha, d_clr.trgb);
#elif _DMODE == 5
- clr_add_with_clr_mul_rev_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_rev_3param(clr0.trgb, d_clr.trgb, s_clr.trgb);
#elif _DMODE == 6
- clr_add_with_clr_mul_rev_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ s_clr.trgb.add_with_clr_mul_rev_square(clr0.trgb, d_clr.trgb);
#elif _DMODE == 7
- clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb);
+ s_clr.trgb.add(clr0.trgb, d_clr.trgb);
#endif
//g_profiler.stop();
@@ -184,8 +184,8 @@
#endif
// write result
- *bmp = clr_to_pen(&s_clr.trgb)|(pen&0x20000000);
- //*bmp = (s_clr.u32<<3)|(pen&0x20000000); // using the union is actually significantly slower than our clr_to_pen function!
+ *bmp = s_clr.trgb.to_pen()|(pen&0x20000000);
+ //*bmp = (s_clr.u32<<3)|(pen&0x20000000); // using the union is actually significantly slower than our to_pen function!
#endif // END NOT REALLY SIMPLE
diff --git a/src/devices/video/fixfreq.cpp b/src/devices/video/fixfreq.cpp
index 88875b8eb67..a64c6d812b3 100644
--- a/src/devices/video/fixfreq.cpp
+++ b/src/devices/video/fixfreq.cpp
@@ -16,14 +16,9 @@
#include "emu.h"
#include "fixfreq.h"
-/***************************************************************************
-
- Local variables
+//#define VERBOSE 1
+#include "logmacro.h"
-***************************************************************************/
-
-//#define VERBOSE_OUT(x) printf x
-#define VERBOSE_OUT(x)
/***************************************************************************
@@ -31,11 +26,12 @@
***************************************************************************/
// device type definition
-const device_type FIXFREQ = device_creator<fixedfreq_device>;
+DEFINE_DEVICE_TYPE(FIXFREQ, fixedfreq_device, "fixfreq", "Fixed-Frequency Monochrome Monitor")
-fixedfreq_device::fixedfreq_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this, false), m_htotal(0), m_vtotal(0), m_vid(0), m_last_x(0), m_last_y(0), m_cur_bm(0),
+fixedfreq_device::fixedfreq_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
+ device_video_interface(mconfig, *this, false),
+ m_htotal(0), m_vtotal(0), m_vid(0), m_last_x(0), m_last_y(0), m_cur_bm(0),
// default to NTSC "704x480@30i"
m_monitor_clock(13500000),
m_hvisible(704),
@@ -48,26 +44,13 @@ fixedfreq_device::fixedfreq_device(const machine_config &mconfig, device_type ty
m_vbackporch(525),
m_fieldcount(2),
m_sync_threshold(0.3),
- m_gain(1.0 / 3.7), m_vint(0), m_int_trig(0), m_mult(0), m_sig_vsync(0), m_sig_composite(0), m_sig_field(0)
+ m_gain(1.0 / 3.7),
+ m_vint(0), m_int_trig(0), m_mult(0), m_sig_vsync(0), m_sig_composite(0), m_sig_field(0)
{
}
fixedfreq_device::fixedfreq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, FIXFREQ, "Fixed Frequency Monochrome Monitor", tag, owner, clock, "fixfreq", __FILE__),
- device_video_interface(mconfig, *this, false),
- // default to NTSC "704x480@30i"
- m_monitor_clock(13500000),
- m_hvisible(704),
- m_hfrontporch(728),
- m_hsync(791),
- m_hbackporch(858),
- m_vvisible(480),
- m_vfrontporch(486),
- m_vsync(492),
- m_vbackporch(525),
- m_fieldcount(2),
- m_sync_threshold(0.3),
- m_gain(1.0 / 3.7)
+ : fixedfreq_device(mconfig, FIXFREQ, tag, owner, clock)
{
}
@@ -160,7 +143,7 @@ void fixedfreq_device::recompute_parameters(bool postload)
m_int_trig = (exp(- 3.0/(3.0+3.0))) - exp(-1.0);
m_mult = (double) (m_monitor_clock) / (double) m_htotal * 1.0; // / (3.0 + 3.0);
- VERBOSE_OUT(("trigger %f with len %f\n", m_int_trig, 1e6 / m_mult));
+ LOG("trigger %f with len %f\n", m_int_trig, 1e6 / m_mult);
m_bitmap[0] = std::make_unique<bitmap_rgb32>(m_htotal, m_vtotal);
m_bitmap[1] = std::make_unique<bitmap_rgb32>(m_htotal, m_vtotal);
@@ -211,7 +194,7 @@ int fixedfreq_device::sync_separator(const attotime &time, double newval)
{
m_sig_field = last_comp; /* force false-progressive */
m_sig_field = (m_sig_field ^ 1) ^ last_comp; /* if there is no field switch, auto switch */
- VERBOSE_OUT(("Field: %d\n", m_sig_field));
+ LOG("Field: %d\n", m_sig_field);
}
if (!last_comp && m_sig_composite)
{
@@ -266,16 +249,16 @@ NETDEV_ANALOG_CALLBACK_MEMBER(fixedfreq_device::update_vid)
}
if (sync & 1)
{
- VERBOSE_OUT(("VSYNC %d %d\n", pixels, m_last_y + m_sig_field));
+ LOG("VSYNC %d %d\n", pixels, m_last_y + m_sig_field);
}
if (sync & 2)
{
- VERBOSE_OUT(("HSYNC up %d\n", pixels));
+ LOG("HSYNC up %d\n", pixels);
//if (m_last_y == 27) printf("HSYNC up %d %d\n", m_last_y, pixels);
}
if (sync & 4)
{
- VERBOSE_OUT(("HSYNC down %f %d %f\n", time.as_double()* 1e6, pixels, m_vid));
+ LOG("HSYNC down %f %d %f\n", time.as_double()* 1e6, pixels, m_vid);
}
if (sync & 1)
diff --git a/src/devices/video/fixfreq.h b/src/devices/video/fixfreq.h
index 080013ad1a6..e475c2f8b4f 100644
--- a/src/devices/video/fixfreq.h
+++ b/src/devices/video/fixfreq.h
@@ -11,8 +11,8 @@
***************************************************************************/
-#ifndef MAME_DEVICES_VIDEO_FIXFREQ_H
-#define MAME_DEVICES_VIDEO_FIXFREQ_H
+#ifndef MAME_VIDEO_FIXFREQ_H
+#define MAME_VIDEO_FIXFREQ_H
#include "machine/netlist.h"
#include "screen.h"
@@ -67,13 +67,11 @@
// ======================> vga_device
-class fixedfreq_device : public device_t,
- public device_video_interface
+class fixedfreq_device : public device_t, public device_video_interface
{
public:
// construction/destruction
fixedfreq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- fixedfreq_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// inline configuration helpers
static void set_minitor_clock(device_t &device, uint32_t clock) { downcast<fixedfreq_device &>(device).m_monitor_clock = clock; }
@@ -102,6 +100,8 @@ public:
NETDEV_ANALOG_CALLBACK_MEMBER(update_vid);
protected:
+ fixedfreq_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -156,6 +156,6 @@ private:
// device type definition
-extern const device_type FIXFREQ;
+DECLARE_DEVICE_TYPE(FIXFREQ, fixedfreq_device)
-#endif // MAME_DEVICES_VIDEO_FIXFREQ_H
+#endif // MAME_VIDEO_FIXFREQ_H
diff --git a/src/devices/video/gb_lcd.cpp b/src/devices/video/gb_lcd.cpp
index 7e50ad9da51..953e0e88165 100644
--- a/src/devices/video/gb_lcd.cpp
+++ b/src/devices/video/gb_lcd.cpp
@@ -160,9 +160,8 @@ TODO:
#include "screen.h"
-
-#define ENABLE_LOGGING 0
-#define LOG(x) do { if (ENABLE_LOGGING) logerror x; } while(0)
+//#define VERBOSE 1
+#include "logmacro.h"
#define LCDCONT m_vid_regs[0x00] /* LCD control register */
@@ -312,49 +311,44 @@ static const uint8_t ags_oam_fingerprint[0x100] = {
#endif
-const device_type DMG_PPU = device_creator<dmg_ppu_device>;
-const device_type MGB_PPU = device_creator<mgb_ppu_device>;
-const device_type SGB_PPU = device_creator<sgb_ppu_device>;
-const device_type CGB_PPU = device_creator<cgb_ppu_device>;
+DEFINE_DEVICE_TYPE(DMG_PPU, dmg_ppu_device, "dmg_ppu", "DMG PPU")
+DEFINE_DEVICE_TYPE(MGB_PPU, mgb_ppu_device, "mgb_ppu", "MGB PPU")
+DEFINE_DEVICE_TYPE(SGB_PPU, sgb_ppu_device, "sgb_ppu", "SGB PPU")
+DEFINE_DEVICE_TYPE(CGB_PPU, cgb_ppu_device, "cgb_ppu", "CGB PPU")
-dmg_ppu_device::dmg_ppu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, uint32_t vram_size)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
- , device_video_interface(mconfig, *this)
- , m_lr35902(*this, finder_base::DUMMY_TAG)
- , m_sgb_border_hack(0)
- , m_enable_experimental_engine(false)
- , m_oam_size(0x100)
- , m_vram_size(vram_size)
+dmg_ppu_device::dmg_ppu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_video_interface(mconfig, *this)
+ , m_lr35902(*this, finder_base::DUMMY_TAG)
+ , m_sgb_border_hack(0)
+ , m_enable_experimental_engine(false)
+ , m_oam_size(0x100)
+ , m_vram_size(vram_size)
{
}
dmg_ppu_device::dmg_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, DMG_PPU, "DMG PPU", tag, owner, clock, "dmg_ppu", __FILE__)
- , device_video_interface(mconfig, *this)
- , m_lr35902(*this, finder_base::DUMMY_TAG)
- , m_sgb_border_hack(0)
- , m_oam_size(0x100)
- , m_vram_size(0x2000)
+ : dmg_ppu_device(mconfig, DMG_PPU, tag, owner, clock, 0x2000)
{
m_enable_experimental_engine = true;
}
mgb_ppu_device::mgb_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmg_ppu_device(mconfig, MGB_PPU, "MGB PPU", tag, owner, clock, "mgb_ppu", __FILE__, 0x2000)
+ : dmg_ppu_device(mconfig, MGB_PPU, tag, owner, clock, 0x2000)
{
m_enable_experimental_engine = true;
}
sgb_ppu_device::sgb_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmg_ppu_device(mconfig, SGB_PPU, "SGB PPU", tag, owner, clock, "sgb_ppu", __FILE__, 0x2000)
+ : dmg_ppu_device(mconfig, SGB_PPU, tag, owner, clock, 0x2000)
{
m_enable_experimental_engine = false;
}
cgb_ppu_device::cgb_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : dmg_ppu_device(mconfig, CGB_PPU, "CGB PPU", tag, owner, clock, "cgb_ppu", __FILE__, 0x4000)
+ : dmg_ppu_device(mconfig, CGB_PPU, tag, owner, clock, 0x4000)
{
m_enable_experimental_engine = false;
}
@@ -686,7 +680,7 @@ void dmg_ppu_device::calculate_window_cycles()
{
m_window_cycles = 0;
- LOG(("m_window_x = %d, m_window_y = %d\n", m_window_x, m_window_y));
+ LOG("m_window_x = %d, m_window_y = %d\n", m_window_x, m_window_y);
if ((LCDCONT & WINDOW_ENABLED) && m_window_x < 167 && m_window_y < 144)
{
@@ -785,7 +779,7 @@ void dmg_ppu_device::select_sprites()
{
if (sprite_occurs[i])
{
- LOG(("sprite_occurs[%d] = %02x\n", i, sprite_occurs[i]));
+ LOG("sprite_occurs[%d] = %02x\n", i, sprite_occurs[i]);
}
if (sprite_occurs[i])
@@ -799,7 +793,7 @@ void dmg_ppu_device::select_sprites()
}
}
- LOG(("m_sprite_cycles = %d\n", m_sprite_cycles));
+ LOG("m_sprite_cycles = %d\n", m_sprite_cycles);
}
}
}
@@ -820,14 +814,14 @@ void dmg_ppu_device::update_line_state(uint64_t cycles)
m_line.scrollx_to_apply++;
}
-//LOG(("tile_cycle = %u, starting = %s, drawing = %s\n", m_line.tile_cycle, m_line.starting ? "true" : "false", m_line.drawing ? "true" : "false"));
+ //LOG("tile_cycle = %u, starting = %s, drawing = %s\n", m_line.tile_cycle, m_line.starting ? "true" : "false", m_line.drawing ? "true" : "false");
// output next pixel
if (m_line.drawing)
{
if (m_line.scrollx_to_apply > 0)
{
// TODO: Determine when the scrollx shifts are applied when window-x is <= 0x07
-LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply));
+ LOG("scrollx_to_apply: %u\n", m_line.scrollx_to_apply);
if (!m_line.window_active)
{
m_line.shift_register <<= 2;
@@ -843,7 +837,7 @@ LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply));
{
if (m_line.pixels_drawn < 8)
{
- LOG(("draw pixel %u\n", m_line.pixels_drawn));
+ LOG("draw pixel %u\n", m_line.pixels_drawn);
}
plot_pixel(m_line.pixels_drawn, m_current_line, m_gb_bpal[m_line.shift_register >> 14]);
m_bg_zbuf[m_line.pixels_drawn] = m_line.shift_register >> 14;
@@ -875,7 +869,7 @@ LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply));
}
if (m_line.pixels_drawn < 8)
{
- LOG(("m_current_line: %u, tile_count: %02x, plane0 = %02x, plane1 = %02x, shift_register = %04x\n", m_current_line, m_line.tile_count, m_line.plane0, m_line.plane1, m_line.shift_register));
+ LOG("m_current_line: %u, tile_count: %02x, plane0 = %02x, plane1 = %02x, shift_register = %04x\n", m_current_line, m_line.tile_count, m_line.plane0, m_line.plane1, m_line.shift_register);
}
if (m_line.sequence_counter >= 2)
{
@@ -908,7 +902,7 @@ LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply));
m_line.pattern = m_vram.get()[m_line.pattern_address] ^ m_gb_tile_no_mod;
if (m_line.tile_count < 8)
{
- LOG(("tile_count = %u, y = %u, pattern = %02x, pattern_address = %04x\n", m_line.tile_count, m_current_line, m_line.pattern, m_line.pattern_address));
+ LOG("tile_count = %u, y = %u, pattern = %02x, pattern_address = %04x\n", m_line.tile_count, m_current_line, m_line.pattern, m_line.pattern_address);
}
break;
@@ -916,7 +910,7 @@ LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply));
m_line.tile_address = m_gb_chrgen_offs + ((m_line.pattern << 4) | ((m_line.y & 0x07) << 1));
if (m_line.tile_count < 8)
{
- LOG(("tile_count = %u, tile_address = %04x, pattern = %02x, y = %u, m_gb_chrgen_offs = %04x\n", m_line.tile_count, m_line.tile_address, m_line.pattern, m_line.y & 7, m_gb_chrgen_offs));
+ LOG("tile_count = %u, tile_address = %04x, pattern = %02x, y = %u, m_gb_chrgen_offs = %04x\n", m_line.tile_count, m_line.tile_address, m_line.pattern, m_line.y & 7, m_gb_chrgen_offs);
}
break;
@@ -975,7 +969,7 @@ LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply));
break;
case 9: // eat scrollx delay cycles before starting window
- LOG(("eating scrollx_to_apply: %u\n", m_line.scrollx_to_apply));
+ LOG("eating scrollx_to_apply: %u\n", m_line.scrollx_to_apply);
m_line.window_compare_position--;
m_line.scrollx_to_apply--;
m_cycles_left++;
@@ -1018,12 +1012,12 @@ void dmg_ppu_device::check_start_of_window()
// Check for start of window
if (m_line.window_compare_position < 16)
{
- LOG(("check window this line, m_current_line = %u, WNDPOSY = %u, WNDPOSX = %u, m_line.window_compare_position = %u, tile_cycle = %u, window_start_y = %u, pixels_drawn = %u\n", m_current_line, WNDPOSY, WNDPOSX, m_line.window_compare_position, m_line.tile_cycle, m_line.window_start_y[m_line.window_start_y_index], m_line.pixels_drawn));
+ LOG("check window this line, m_current_line = %u, WNDPOSY = %u, WNDPOSX = %u, m_line.window_compare_position = %u, tile_cycle = %u, window_start_y = %u, pixels_drawn = %u\n", m_current_line, WNDPOSY, WNDPOSX, m_line.window_compare_position, m_line.tile_cycle, m_line.window_start_y[m_line.window_start_y_index], m_line.pixels_drawn);
}
if (/*LCDCONT*/(m_line.window_enable[m_line.window_enable_index] & WINDOW_ENABLED) && !m_line.window_active && (m_frame_window_active || /*m_current_line >= m_window_y*/ m_line.window_should_trigger || m_current_line == m_line.window_start_y[m_line.window_start_y_index]) && m_line.window_compare_position == /*WNDPOSX*/ m_line.window_start_x[m_line.window_start_y_index] && m_line.window_compare_position < 0xA6)
{
-LOG(("enable window, m_current_line = %u, WNDPOSY = %u, WNDPOSX = %u, m_line.window_compare_position = %u, pixels_drawn = %u\n", m_current_line, WNDPOSY, WNDPOSX, m_line.window_compare_position, m_line.pixels_drawn));
+ LOG("enable window, m_current_line = %u, WNDPOSY = %u, WNDPOSX = %u, m_line.window_compare_position = %u, pixels_drawn = %u\n", m_current_line, WNDPOSY, WNDPOSX, m_line.window_compare_position, m_line.pixels_drawn);
m_line.starting = true;
m_line.window_active = true;
m_frame_window_active = true;
@@ -2050,7 +2044,7 @@ void dmg_ppu_device::update_state()
if (LCDCONT & ENABLED)
{
- LOG(("m_cycles_left = %u, cycles = %u, CURLINE = %u, m_next_state = %s\n", m_cycles_left, cycles, CURLINE, state_to_string(m_next_state)));
+ LOG("m_cycles_left = %u, cycles = %u, CURLINE = %u, m_next_state = %s\n", m_cycles_left, cycles, CURLINE, state_to_string(m_next_state));
if (m_cycles_left > 0)
{
@@ -2129,7 +2123,7 @@ void dmg_ppu_device::update_state()
check_stat_irq();
m_stat_lyc_int = ((CMPLINE == CURLINE) && (LCDSTAT & LY_LYC_INT_ENABLED)) ? true : false;
- LOG(("GB_LCD_STATE_LYXX_M0_INC: CMPLINE = %02x, CURLINE = %02x, LCDSTAT = %02x, m_stat_lyc_int = %s\n", CMPLINE, CURLINE, LCDSTAT, m_stat_lyc_int ? "true":"false"));
+ LOG("GB_LCD_STATE_LYXX_M0_INC: CMPLINE = %02x, CURLINE = %02x, LCDSTAT = %02x, m_stat_lyc_int = %s\n", CMPLINE, CURLINE, LCDSTAT, m_stat_lyc_int ? "true":"false");
/* Reset LY==LYC STAT bit */
LCDSTAT &= ~LY_LYC_FLAG;
/* Check if we're going into VBlank next */
@@ -2179,7 +2173,7 @@ void dmg_ppu_device::update_state()
{
m_line.window_should_trigger = true;
}
-LOG(("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_line.window_should_trigger ? "true" : "false", m_current_line, m_window_y));
+ LOG("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_line.window_should_trigger ? "true" : "false", m_current_line, m_window_y);
state_cycles = 80 - 8;
m_next_state = GB_LCD_STATE_LYXX_M3;
@@ -2221,7 +2215,7 @@ LOG(("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_lin
{
m_line.window_should_trigger = true;
}
-LOG(("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_line.window_should_trigger ? "true" : "false", m_current_line, m_window_y));
+ LOG("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_line.window_should_trigger ? "true" : "false", m_current_line, m_window_y);
m_next_state = GB_LCD_STATE_LYXX_M3;
state_cycles = 80 - 8;
break;
@@ -2305,7 +2299,7 @@ LOG(("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_lin
case GB_LCD_STATE_LY9X_M1_INC: /* Increment scanline counter */
increment_scanline();
- LOG(("GB_LCD_STATE_LY9X_M1_INC: m_stat_lyc_int = %s\n", m_stat_lyc_int ? "true" : "false"));
+ LOG("GB_LCD_STATE_LY9X_M1_INC: m_stat_lyc_int = %s\n", m_stat_lyc_int ? "true" : "false");
/* Reset LY==LYC STAT bit */
LCDSTAT &= ~LY_LYC_FLAG;
if (m_current_line == 153)
@@ -2439,7 +2433,7 @@ void cgb_ppu_device::update_hdma_state(uint64_t cycles)
void cgb_ppu_device::hdma_trans(uint16_t length)
{
- LOG(("hdma_trans\n"));
+ LOG("hdma_trans\n");
m_hdma_length = length;
m_hdma_cycles_to_start = 4;
update_state();
@@ -2448,7 +2442,7 @@ void cgb_ppu_device::hdma_trans(uint16_t length)
void cgb_ppu_device::hdma_trans_execute()
{
- LOG(("hdma_trans_execute\n"));
+ LOG("hdma_trans_execute\n");
uint16_t length = m_hdma_length;
uint16_t src, dst;
@@ -2456,7 +2450,7 @@ void cgb_ppu_device::hdma_trans_execute()
// 102 Dalmatians uses destination 0000 and expects data to be DMAed.
dst = 0x8000 | (HDMA3 << 8) | (HDMA4 & 0xF0);
- //LOG(("length = %04x, src = %04x, dst = %04x\n", length, src, dst));
+ //LOG("length = %04x, src = %04x, dst = %04x\n", length, src, dst);
while (length > 0)
{
if (dst & 0x8000)
@@ -2507,7 +2501,7 @@ void cgb_ppu_device::update_state()
if (LCDCONT & ENABLED)
{
- LOG(("m_cycles_left = %d, cycles = %d, m_next_state = %s\n", m_cycles_left, cycles, state_to_string(m_next_state)));
+ LOG("m_cycles_left = %d, cycles = %d, m_next_state = %s\n", m_cycles_left, cycles, state_to_string(m_next_state));
if (m_cycles_left > 0)
{
@@ -2595,7 +2589,7 @@ void cgb_ppu_device::update_state()
m_stat_mode2_int = (LCDSTAT & MODE_2_INT_ENABLED) ? true : false;
check_stat_irq();
m_stat_lyc_int = ((m_cmp_line == CURLINE) && (LCDSTAT & LY_LYC_INT_ENABLED)) ? true : false;
- LOG(("GB_LCD_STATE_LYXX_M0_INC: m_cmp_line = %u, CURLINE = %u, LCDSTAT = %02x, m_stat_lyc_int = %s\n", m_cmp_line, CURLINE, LCDSTAT, m_stat_lyc_int ? "true" : "false"));
+ LOG("GB_LCD_STATE_LYXX_M0_INC: m_cmp_line = %u, CURLINE = %u, LCDSTAT = %02x, m_stat_lyc_int = %s\n", m_cmp_line, CURLINE, LCDSTAT, m_stat_lyc_int ? "true" : "false");
m_hdma_possible = 0;
/* Check if we're going into VBlank next */
if (CURLINE == 144)
@@ -2742,7 +2736,7 @@ void cgb_ppu_device::update_state()
break;
case GB_LCD_STATE_LY00_M1: /* we stay in VBlank but current line counter should already be incremented */
- LOG(("GB_LCD_STATE_LY00_M1, CURLINE=%u, CMPLINE=%u, m_stat_lyc_int=%s\n", CURLINE, CMPLINE, m_stat_lyc_int ? "true" : "false"));
+ LOG("GB_LCD_STATE_LY00_M1, CURLINE=%u, CMPLINE=%u, m_stat_lyc_int=%s\n", CURLINE, CMPLINE, m_stat_lyc_int ? "true" : "false");
/* Check LY=LYC for line #153 */
if (CURLINE == CMPLINE)
{
@@ -2760,7 +2754,7 @@ void cgb_ppu_device::update_state()
case GB_LCD_STATE_LY00_M1_1:
increment_scanline();
m_stat_lyc_int = ((CMPLINE == CURLINE) && (LCDSTAT & LY_LYC_INT_ENABLED)) ? true : false;
- LOG(("GB_LCD_STATE_LY00_M1_1, m_stat_lyc_int = %s\n", m_stat_lyc_int ? "true" : "false"));
+ LOG("GB_LCD_STATE_LY00_M1_1, m_stat_lyc_int = %s\n", m_stat_lyc_int ? "true" : "false");
m_next_state = GB_LCD_STATE_LY00_M1_2;
state_cycles = 4;
break;
@@ -2889,7 +2883,7 @@ READ8_MEMBER(dmg_ppu_device::vram_r)
if (!machine().side_effect_disabled())
{
update_state();
- LOG(("vram_r: offset=0x%04x\n", offset));
+ LOG("vram_r: offset=0x%04x\n", offset);
}
return (m_vram_locked == LOCKED) ? 0xff : m_vram[offset + (m_vram_bank * 0x2000)];
@@ -2911,7 +2905,7 @@ READ8_MEMBER(dmg_ppu_device::oam_r)
if (!machine().side_effect_disabled())
{
update_state();
- LOG(("oam_r: offset=0x%02x\n", offset));
+ LOG("oam_r: offset=0x%02x\n", offset);
}
return (m_oam_locked == LOCKED || m_oam_locked_reading == LOCKED || m_oam_dma_processing) ? 0xff : m_oam[offset];
@@ -2934,9 +2928,9 @@ READ8_MEMBER(dmg_ppu_device::video_r)
if (!machine().side_effect_disabled())
{
update_state();
- if (offset == 1) LOG(("STAT read\n"));
- if (offset == 0x28) LOG(("BCPS read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED"));
- if (offset == 0x29) LOG(("BCPD read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED"));
+ if (offset == 1) LOG("STAT read\n");
+ if (offset == 0x28) LOG("BCPS read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED");
+ if (offset == 0x29) LOG("BCPD read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED");
}
return m_vid_regs[offset];
@@ -2945,7 +2939,7 @@ READ8_MEMBER(dmg_ppu_device::video_r)
bool dmg_ppu_device::stat_write(uint8_t new_data)
{
- LOG(("stat_write: old_data = %02x, new_data = %02x\n", LCDSTAT & 0x78, new_data & 0x78));
+ LOG("stat_write: old_data = %02x, new_data = %02x\n", LCDSTAT & 0x78, new_data & 0x78);
bool new_lyc_int = m_stat_lyc_int;
@@ -3040,22 +3034,22 @@ void dmg_ppu_device::check_stat_irq()
{
bool new_stat_int = m_stat_mode0_int || m_stat_mode1_int || m_stat_mode2_int || m_stat_lyc_int || m_stat_write_int;
- LOG(("m_mode = %d, m_stat_mode0_int = %s, m_stat_mode1_int = %s, m_stat_mode2_int = %s, m_stat_lyc_int = %s\n",
+ LOG("m_mode = %d, m_stat_mode0_int = %s, m_stat_mode1_int = %s, m_stat_mode2_int = %s, m_stat_lyc_int = %s\n",
m_mode,
m_stat_mode0_int ? "true" : "false",
m_stat_mode1_int ? "true" : "false",
m_stat_mode2_int ? "true" : "false",
m_stat_lyc_int ? "true" : "false"
- ));
+ );
if (new_stat_int && !m_stat_int)
{
- LOG(("--m_stat_mode0_int = %s, m_stat_mode1_int = %s, m_stat_mode2_int = %s, m_stat_lyc_int = %s\n",
+ LOG("--m_stat_mode0_int = %s, m_stat_mode1_int = %s, m_stat_mode2_int = %s, m_stat_lyc_int = %s\n",
m_stat_mode0_int ? "true" : "false",
m_stat_mode1_int ? "true" : "false",
m_stat_mode2_int ? "true" : "false",
m_stat_lyc_int ? "true" : "false"
- ));
+ );
m_lr35902->set_input_line(lr35902_cpu_device::LCD_INT, ASSERT_LINE);
m_lr35902->execute_set_input(lr35902_cpu_device::LCD_INT, ASSERT_LINE);
@@ -3069,7 +3063,7 @@ void dmg_ppu_device::check_stat_irq()
WRITE8_MEMBER(dmg_ppu_device::video_w)
{
update_state();
- LOG(("video_w: offset = %02x, data = %02x\n", offset, data));
+ LOG("video_w: offset = %02x, data = %02x\n", offset, data);
switch (offset)
{
@@ -3123,7 +3117,7 @@ WRITE8_MEMBER(dmg_ppu_device::video_w)
{
if (CURLINE == data || (m_state == GB_LCD_STATE_LY00_M1 && CURLINE == 0 && data == 153))
{
- LOG(("write LYC, if\n"));
+ LOG("write LYC, if\n");
LCDSTAT |= LY_LYC_FLAG;
/* Generate lcd interrupt if requested */
if (LCDSTAT & LY_LYC_INT_ENABLED)
@@ -3142,7 +3136,7 @@ WRITE8_MEMBER(dmg_ppu_device::video_w)
}
else
{
- LOG(("write LYC, else\n"));
+ LOG("write LYC, else\n");
LCDSTAT &= ~LY_LYC_FLAG;
m_stat_lyc_int = false;
check_stat_irq();
@@ -3180,7 +3174,7 @@ WRITE8_MEMBER(dmg_ppu_device::video_w)
break;
case 0x03: /* SCX - Scroll X */
update_scanline(m_lr35902->attotime_to_cycles(m_lcd_timer->remaining()));
- LOG(("SCX: scrollx_delay = %d, m_cycles_left = %d\n", m_line.scrollx_delay, m_cycles_left));
+ LOG("SCX: scrollx_delay = %d, m_cycles_left = %d\n", m_line.scrollx_delay, m_cycles_left);
if (m_line.scrollx_delay > 0)
{
// Additional delay cycles; not sure if this is correct.
@@ -3190,10 +3184,10 @@ WRITE8_MEMBER(dmg_ppu_device::video_w)
}
break;
case 0x0A: /* WY - Window Y position */
- LOG(("WY write, m_cycles_left = %d\n", m_cycles_left));
+ LOG("WY write, m_cycles_left = %d\n", m_cycles_left);
break;
case 0x0B: /* WX - Window X position */
- LOG(("WX write, m_cycles_left = %d\n", m_cycles_left));
+ LOG("WX write, m_cycles_left = %d\n", m_cycles_left);
break;
default: /* Unknown register, no change */
return;
@@ -3206,9 +3200,9 @@ READ8_MEMBER(cgb_ppu_device::video_r)
if (!machine().side_effect_disabled())
{
update_state();
- if (offset == 1) LOG(("STAT read\n"));
- if (offset == 0x28) LOG(("BCPS read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED"));
- if (offset == 0x29) LOG(("BCPD read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED"));
+ if (offset == 1) LOG("STAT read\n");
+ if (offset == 0x28) LOG("BCPS read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED");
+ if (offset == 0x29) LOG("BCPD read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED");
}
switch (offset)
@@ -3232,7 +3226,7 @@ READ8_MEMBER(cgb_ppu_device::video_r)
bool cgb_ppu_device::stat_write(uint8_t new_data)
{
- LOG(("stat_write: old_data = %02x, new_data = %02x\n", LCDSTAT & 0x78, new_data & 0x78));
+ LOG("stat_write: old_data = %02x, new_data = %02x\n", LCDSTAT & 0x78, new_data & 0x78);
bool new_lyc_int = m_stat_lyc_int;
@@ -3292,7 +3286,7 @@ bool cgb_ppu_device::stat_write(uint8_t new_data)
WRITE8_MEMBER(cgb_ppu_device::video_w)
{
update_state();
- LOG(("video_w\n"));
+ LOG("video_w\n");
switch (offset)
{
@@ -3343,7 +3337,7 @@ WRITE8_MEMBER(cgb_ppu_device::video_w)
{
if (CURLINE == data && m_state != GB_LCD_STATE_LY00_M1 && m_state != GB_LCD_STATE_LYXX_M0_PRE_INC)
{
- LOG(("write LYC, if, CURLINE=%u\n", CURLINE));
+ LOG("write LYC, if, CURLINE=%u\n", CURLINE);
LCDSTAT |= LY_LYC_FLAG;
/* Generate lcd interrupt if requested */
@@ -3355,7 +3349,7 @@ WRITE8_MEMBER(cgb_ppu_device::video_w)
}
else
{
- LOG(("write LYC, else, CURLINE=%u\n", CURLINE));
+ LOG("write LYC, else, CURLINE=%u\n", CURLINE);
LCDSTAT &= ~LY_LYC_FLAG;
check_stat_irq();
@@ -3429,7 +3423,7 @@ WRITE8_MEMBER(cgb_ppu_device::video_w)
}
break;
case 0x28: /* BCPS - Background palette specification */
- LOG(("BCPS write %02x\n", data));
+ LOG("BCPS write %02x\n", data);
GBCBCPS = data;
if (data & 0x01)
@@ -3438,7 +3432,7 @@ WRITE8_MEMBER(cgb_ppu_device::video_w)
GBCBCPD = m_cgb_bpal[(data >> 1) & 0x1F] & 0xFF;
break;
case 0x29: /* BCPD - background palette data */
- LOG(("BCPD write %02x, palette is %s\n", data, m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED"));
+ LOG("BCPD write %02x, palette is %s\n", data, m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED");
if (m_pal_locked == LOCKED)
{
diff --git a/src/devices/video/gb_lcd.h b/src/devices/video/gb_lcd.h
index 6e3587439d9..974e2d76cab 100644
--- a/src/devices/video/gb_lcd.h
+++ b/src/devices/video/gb_lcd.h
@@ -6,31 +6,19 @@
*
****************************************************************************/
-#ifndef __GB_LCD_H__
-#define __GB_LCD_H__
+#ifndef MAME_VIDEO_GB_LCD_H
+#define MAME_VIDEO_GB_LCD_H
-#include "cpu/lr35902/lr35902.h"
+#pragma once
+#include "cpu/lr35902/lr35902.h"
-struct layer_struct {
- uint8_t enabled;
- uint8_t *bg_tiles;
- uint8_t *bg_map;
- uint8_t xindex;
- uint8_t xshift;
- uint8_t xstart;
- uint8_t xend;
- /* GBC specific */
- uint8_t *gbc_map;
- int16_t bgline;
-};
class dmg_ppu_device : public device_t,
public device_video_interface
{
public:
- dmg_ppu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, uint32_t vram_size);
dmg_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_lr35902_tag(device_t &device, const char *tag) { downcast<dmg_ppu_device &>(device).m_lr35902.set_tag(tag); }
@@ -65,6 +53,19 @@ protected:
LY_LYC_FLAG = 0x04
};
+ struct layer_struct {
+ uint8_t enabled;
+ uint8_t *bg_tiles;
+ uint8_t *bg_map;
+ uint8_t xindex;
+ uint8_t xshift;
+ uint8_t xstart;
+ uint8_t xend;
+ /* GBC specific */
+ uint8_t *gbc_map;
+ int16_t bgline;
+ };
+
inline void plot_pixel(int x, int y, uint16_t color);
void select_sprites();
@@ -72,6 +73,8 @@ protected:
virtual void update_sprites();
virtual void update_scanline(uint32_t cycles_to_go);
+ dmg_ppu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -226,8 +229,8 @@ protected:
void check_start_of_window();
private:
- uint32_t m_oam_size;
- uint32_t m_vram_size;
+ const uint32_t m_oam_size;
+ const uint32_t m_vram_size;
};
@@ -288,10 +291,10 @@ protected:
};
-extern const device_type DMG_PPU;
-extern const device_type MGB_PPU;
-extern const device_type SGB_PPU;
-extern const device_type CGB_PPU;
+DECLARE_DEVICE_TYPE(DMG_PPU, dmg_ppu_device)
+DECLARE_DEVICE_TYPE(MGB_PPU, mgb_ppu_device)
+DECLARE_DEVICE_TYPE(SGB_PPU, sgb_ppu_device)
+DECLARE_DEVICE_TYPE(CGB_PPU, cgb_ppu_device)
#define MCFG_DMG_PPU_ADD(_tag, _cpu_tag ) \
@@ -311,4 +314,4 @@ extern const device_type CGB_PPU;
dmg_ppu_device::static_set_lr35902_tag(*device, "^" _cpu_tag);
-#endif /* GB_LCD_H_ */
+#endif // MAME_VIDEO_GB_LCD_H
diff --git a/src/devices/video/gba_lcd.cpp b/src/devices/video/gba_lcd.cpp
index 71d094ae8cf..21184df0888 100644
--- a/src/devices/video/gba_lcd.cpp
+++ b/src/devices/video/gba_lcd.cpp
@@ -140,10 +140,10 @@ private:
uint16_t m_attr2;
};
-const device_type GBA_LCD = device_creator<gba_lcd_device>;
+DEFINE_DEVICE_TYPE(GBA_LCD, gba_lcd_device, "gba_lcd", "GBA LCD")
gba_lcd_device::gba_lcd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, GBA_LCD, "GBA LCD", tag, owner, clock, "gba_lcd", __FILE__)
+ : device_t(mconfig, GBA_LCD, tag, owner, clock)
, device_video_interface(mconfig, *this)
, m_int_hblank_cb(*this)
, m_int_vblank_cb(*this)
diff --git a/src/devices/video/gba_lcd.h b/src/devices/video/gba_lcd.h
index 3df855b4535..263e5973bee 100644
--- a/src/devices/video/gba_lcd.h
+++ b/src/devices/video/gba_lcd.h
@@ -10,11 +10,10 @@
***************************************************************************/
-#pragma once
-
-#ifndef __GBA_LCD_H__
-#define __GBA_LCD_H__
+#ifndef MAME_VIDEO_GBA_LCD_H
+#define MAME_VIDEO_GBA_LCD_H
+#pragma once
@@ -23,7 +22,7 @@
//**************************************************************************
// device type definition
-extern const device_type GBA_LCD;
+DECLARE_DEVICE_TYPE(GBA_LCD, gba_lcd_device)
//**************************************************************************
@@ -103,29 +102,29 @@ public:
TIMER_CALLBACK_MEMBER(perform_hbl);
TIMER_CALLBACK_MEMBER(perform_scan);
- template<class _Object> static devcb_base &set_int_hblank_callback(device_t &device, _Object object)
+ template <class Object> static devcb_base &set_int_hblank_callback(device_t &device, Object &&cb)
{
- return downcast<gba_lcd_device &>(device).m_int_hblank_cb.set_callback(object);
+ return downcast<gba_lcd_device &>(device).m_int_hblank_cb.set_callback(std::forward<Object>(cb));
}
- template<class _Object> static devcb_base &set_int_vblank_callback(device_t &device, _Object object)
+ template <class Object> static devcb_base &set_int_vblank_callback(device_t &device, Object &&cb)
{
- return downcast<gba_lcd_device &>(device).m_int_vblank_cb.set_callback(object);
+ return downcast<gba_lcd_device &>(device).m_int_vblank_cb.set_callback(std::forward<Object>(cb));
}
- template<class _Object> static devcb_base &set_int_vcount_callback(device_t &device, _Object object)
+ template <class Object> static devcb_base &set_int_vcount_callback(device_t &device, Object &&cb)
{
- return downcast<gba_lcd_device &>(device).m_int_vcount_cb.set_callback(object);
+ return downcast<gba_lcd_device &>(device).m_int_vcount_cb.set_callback(std::forward<Object>(cb));
}
- template<class _Object> static devcb_base &set_dma_hblank_callback(device_t &device, _Object object)
+ template <class Object> static devcb_base &set_dma_hblank_callback(device_t &device, Object &&cb)
{
- return downcast<gba_lcd_device &>(device).m_dma_hblank_cb.set_callback(object);
+ return downcast<gba_lcd_device &>(device).m_dma_hblank_cb.set_callback(std::forward<Object>(cb));
}
- template<class _Object> static devcb_base &set_dma_vblank_callback(device_t &device, _Object object)
+ template <class Object> static devcb_base &set_dma_vblank_callback(device_t &device, Object &&cb)
{
- return downcast<gba_lcd_device &>(device).m_dma_vblank_cb.set_callback(object);
+ return downcast<gba_lcd_device &>(device).m_dma_vblank_cb.set_callback(std::forward<Object>(cb));
}
protected:
@@ -250,4 +249,4 @@ private:
static constexpr uint32_t TRANSPARENT_PIXEL = 0x80000000;
};
-#endif /* GBA_LCD_H_ */
+#endif // MAME_VIDEO_GBA_LCD_H
diff --git a/src/devices/video/gf4500.cpp b/src/devices/video/gf4500.cpp
index 6b539cf65a3..4f48a14b9ef 100644
--- a/src/devices/video/gf4500.cpp
+++ b/src/devices/video/gf4500.cpp
@@ -31,12 +31,12 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t &device, int n_level, c
#define GF4500_FRAMEBUF_OFFSET 0x20000
-const device_type GF4500 = device_creator<gf4500_device>;
+DEFINE_DEVICE_TYPE(GF4500, gf4500_device, "gf4500", "NVIDIA GoForce 4500")
gf4500_device::gf4500_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, GF4500, "NVIDIA GoForce 4500", tag, owner, clock, "gf4500", __FILE__), m_data(nullptr), m_screen_x(0), m_screen_y(0), m_screen_x_max(0), m_screen_y_max(0), m_screen_x_min(0), m_screen_y_min(0)
- {
+ : device_t(mconfig, GF4500, tag, owner, clock), m_data(nullptr), m_screen_x(0), m_screen_y(0), m_screen_x_max(0), m_screen_y_max(0), m_screen_x_min(0), m_screen_y_min(0)
+{
}
diff --git a/src/devices/video/gf4500.h b/src/devices/video/gf4500.h
index 01435ea5b61..e06af73c5c4 100644
--- a/src/devices/video/gf4500.h
+++ b/src/devices/video/gf4500.h
@@ -8,15 +8,16 @@
*/
-#ifndef __GF4500_H__
-#define __GF4500_H__
+#ifndef MAME_VIDEO_GF4500_H
+#define MAME_VIDEO_GF4500_H
+
+#pragma once
class gf4500_device : public device_t
{
public:
gf4500_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~gf4500_device() {}
DECLARE_READ32_MEMBER( read );
@@ -49,7 +50,6 @@ private:
MCFG_DEVICE_ADD(_tag, GF4500, 0)
-extern const device_type GF4500;
-
+DECLARE_DEVICE_TYPE(GF4500, gf4500_device)
-#endif /* __GF4500_H__ */
+#endif // MAME_VIDEO_GF4500_H
diff --git a/src/devices/video/gf7600gs.cpp b/src/devices/video/gf7600gs.cpp
index 4b35d3a8f97..407178ab73f 100644
--- a/src/devices/video/gf7600gs.cpp
+++ b/src/devices/video/gf7600gs.cpp
@@ -3,7 +3,7 @@
#include "emu.h"
#include "gf7600gs.h"
-const device_type GEFORCE_7600GS = device_creator<geforce_7600gs_device>;
+DEFINE_DEVICE_TYPE(GEFORCE_7600GS, geforce_7600gs_device, "geforce_7600gs", "NVIDIA GeForce 7600GS")
DEVICE_ADDRESS_MAP_START(map1, 32, geforce_7600gs_device)
ADDRESS_MAP_END
@@ -15,7 +15,7 @@ DEVICE_ADDRESS_MAP_START(map3, 32, geforce_7600gs_device)
ADDRESS_MAP_END
geforce_7600gs_device::geforce_7600gs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, GEFORCE_7600GS, "NVidia GeForce 7600GS", tag, owner, clock, "geforce_7600gs", __FILE__)
+ : pci_device(mconfig, GEFORCE_7600GS, tag, owner, clock)
{
}
diff --git a/src/devices/video/gf7600gs.h b/src/devices/video/gf7600gs.h
index f2a44ca903a..b2d21011c83 100644
--- a/src/devices/video/gf7600gs.h
+++ b/src/devices/video/gf7600gs.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef GF7600GS_H
-#define GF7600GS_H
+#ifndef MAME_VIDEO_GF7600GS_H
+#define MAME_VIDEO_GF7600GS_H
+
+#pragma once
#include "machine/pci.h"
@@ -22,6 +24,6 @@ private:
DECLARE_ADDRESS_MAP(map3, 32);
};
-extern const device_type GEFORCE_7600GS;
+DECLARE_DEVICE_TYPE(GEFORCE_7600GS, geforce_7600gs_device)
-#endif
+#endif // MAME_VIDEO_GF7600GS_H
diff --git a/src/devices/video/hd44102.cpp b/src/devices/video/hd44102.cpp
index 00d2cf8d85d..43a413920e8 100644
--- a/src/devices/video/hd44102.cpp
+++ b/src/devices/video/hd44102.cpp
@@ -9,15 +9,15 @@
#include "emu.h"
#include "hd44102.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
#define CONTROL_DISPLAY_OFF 0x38
#define CONTROL_DISPLAY_ON 0x39
#define CONTROL_COUNT_DOWN_MODE 0x3a
@@ -34,7 +34,7 @@
// device type definition
-const device_type HD44102 = device_creator<hd44102_device>;
+DEFINE_DEVICE_TYPE(HD44102, hd44102_device, "hd44102", "Hitachi HD44102 LCD Controller")
//**************************************************************************
@@ -68,7 +68,7 @@ inline void hd44102_device::count_up_or_down()
//-------------------------------------------------
hd44102_device::hd44102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HD44102, "HD44102", tag, owner, clock, "hd44102", __FILE__),
+ : device_t(mconfig, HD44102, tag, owner, clock),
device_video_interface(mconfig, *this),
m_cs2(0),
m_page(0),
@@ -172,51 +172,51 @@ WRITE8_MEMBER( hd44102_device::control_w )
switch (data)
{
case CONTROL_DISPLAY_OFF:
- if (LOG) logerror("HD44102 '%s' Display Off\n", tag());
+ LOG("HD44102 Display Off\n");
m_status |= STATUS_DISPLAY_OFF;
break;
case CONTROL_DISPLAY_ON:
- if (LOG) logerror("HD44102 '%s' Display On\n", tag());
+ LOG("HD44102 Display On\n");
m_status &= ~STATUS_DISPLAY_OFF;
break;
case CONTROL_COUNT_DOWN_MODE:
- if (LOG) logerror("HD44102 '%s' Count Down Mode\n", tag());
+ LOG("HD44102 Count Down Mode\n");
m_status &= ~STATUS_COUNT_UP;
break;
case CONTROL_COUNT_UP_MODE:
- if (LOG) logerror("HD44102 '%s' Count Up Mode\n", tag());
+ LOG("HD44102 Count Up Mode\n");
m_status |= STATUS_COUNT_UP;
break;
default:
{
- int x = (data & CONTROL_X_ADDRESS_MASK) >> 6;
- int y = data & CONTROL_Y_ADDRESS_MASK;
+ const int x = (data & CONTROL_X_ADDRESS_MASK) >> 6;
+ const int y = data & CONTROL_Y_ADDRESS_MASK;
- if ((data & CONTROL_Y_ADDRESS_MASK) == CONTROL_DISPLAY_START_PAGE)
- {
- if (LOG) logerror("HD44102 '%s' Display Start Page %u\n", tag(), x);
+ if ((data & CONTROL_Y_ADDRESS_MASK) == CONTROL_DISPLAY_START_PAGE)
+ {
+ LOG("HD44102 Display Start Page %u\n", x);
- m_page = x;
- }
- else if (y > 49)
- {
- logerror("HD44102 '%s' Invalid Address X %u Y %u (%02x)!\n", tag(), data, x, y);
- }
- else
- {
- if (LOG) logerror("HD44102 '%s' Address X %u Y %u (%02x)\n", tag(), data, x, y);
+ m_page = x;
+ }
+ else if (y > 49)
+ {
+ logerror("HD44102 Invalid Address X %u Y %u (%02x)!\n", data, x, y);
+ }
+ else
+ {
+ LOG("HD44102 Address X %u Y %u (%02x)\n", data, x, y);
- m_x = x;
- m_y = y;
- }
+ m_x = x;
+ m_y = y;
+ }
}
}
}
diff --git a/src/devices/video/hd44102.h b/src/devices/video/hd44102.h
index 7aa19f2a8ea..c9746d417ec 100644
--- a/src/devices/video/hd44102.h
+++ b/src/devices/video/hd44102.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_HD44102_H
+#define MAME_VIDEO_HD44102_H
-#ifndef __HD44102__
-#define __HD44102__
+#pragma once
@@ -78,8 +78,6 @@ private:
// device type definition
-extern const device_type HD44102;
-
-
+DECLARE_DEVICE_TYPE(HD44102, hd44102_device)
-#endif
+#endif // MAME_VIDEO_HD44102_H
diff --git a/src/devices/video/hd44352.cpp b/src/devices/video/hd44352.cpp
index 55eef9b31a2..7fa4b53f1d0 100644
--- a/src/devices/video/hd44352.cpp
+++ b/src/devices/video/hd44352.cpp
@@ -24,7 +24,7 @@
// devices
-const device_type HD44352 = device_creator<hd44352_device>;
+DEFINE_DEVICE_TYPE(HD44352, hd44352_device, "hd44352", "Hitachi HD44352 LCD Controller")
//**************************************************************************
// live device
@@ -35,7 +35,7 @@ const device_type HD44352 = device_creator<hd44352_device>;
//-------------------------------------------------
hd44352_device::hd44352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock):
- device_t(mconfig, HD44352, "hd44352", tag, owner, clock, "hd44352", __FILE__),
+ device_t(mconfig, HD44352, tag, owner, clock),
m_on_cb(*this),
m_char_rom(*this, DEVICE_SELF)
{
diff --git a/src/devices/video/hd44352.h b/src/devices/video/hd44352.h
index f5546f93e91..a7dff37b904 100644
--- a/src/devices/video/hd44352.h
+++ b/src/devices/video/hd44352.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_HD44352_H
+#define MAME_VIDEO_HD44352_H
-#ifndef __hd44352_H__
-#define __hd44352_H__
+#pragma once
#define MCFG_HD44352_ON_CB(_devcb) \
@@ -22,14 +22,13 @@
// ======================> hd44352_device
-class hd44352_device :
- public device_t
+class hd44352_device : public device_t
{
public:
// construction/destruction
hd44352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_on_callback(device_t &device, _Object object) { return downcast<hd44352_device &>(device).m_on_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_on_callback(device_t &device, Object &&cb) { return downcast<hd44352_device &>(device).m_on_cb.set_callback(std::forward<Object>(cb)); }
// device interface
uint8_t data_read();
@@ -77,6 +76,6 @@ private:
};
// device type definition
-extern const device_type HD44352;
+DECLARE_DEVICE_TYPE(HD44352, hd44352_device)
-#endif
+#endif // MAME_VIDEO_HD44352_H
diff --git a/src/devices/video/hd44780.cpp b/src/devices/video/hd44780.cpp
index 5b40d9d14a9..8f3451352ab 100644
--- a/src/devices/video/hd44780.cpp
+++ b/src/devices/video/hd44780.cpp
@@ -13,14 +13,16 @@
#include "emu.h"
#include "video/hd44780.h"
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type HD44780 = device_creator<hd44780_device>;
-const device_type KS0066_F05 = device_creator<ks0066_f05_device>;
+DEFINE_DEVICE_TYPE(HD44780, hd44780_device, "hd44780_a00", "Hitachi HD44780 A00 LCD Controller")
+DEFINE_DEVICE_TYPE(KS0066_F05, ks0066_f05_device, "ks0066_f05", "Samsung KS0066 F05 LCD Controller")
//-------------------------------------------------
@@ -46,20 +48,20 @@ ROM_END
//-------------------------------------------------
hd44780_device::hd44780_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : hd44780_device(mconfig, HD44780, "HD44780 A00", tag, owner, clock, "hd44780_a00", __FILE__)
+ : hd44780_device(mconfig, HD44780, tag, owner, clock)
{
set_charset_type(CHARSET_HD44780_A00);
}
-hd44780_device::hd44780_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+hd44780_device::hd44780_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_cgrom(nullptr)
, m_cgrom_region(*this, DEVICE_SELF)
{
}
ks0066_f05_device::ks0066_f05_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- hd44780_device(mconfig, KS0066_F05, "KS0066 F05", tag, owner, clock, "ks0066_f05", __FILE__)
+ hd44780_device(mconfig, KS0066_F05, tag, owner, clock)
{
set_charset_type(CHARSET_KS0066_F05);
}
@@ -392,7 +394,7 @@ WRITE8_MEMBER(hd44780_device::control_write)
correct_ac();
set_busy_flag(37);
- if (LOG) logerror("HD44780 '%s': set DDRAM address %x\n", tag(), m_ac);
+ LOG("HD44780: set DDRAM address %x\n", m_ac);
return;
}
else if (BIT(m_ir, 6))
@@ -402,7 +404,7 @@ WRITE8_MEMBER(hd44780_device::control_write)
m_ac = m_ir & 0x3f;
set_busy_flag(37);
- if (LOG) logerror("HD44780 '%s': set CGRAM address %x\n", tag(), m_ac);
+ LOG("HD44780: set CGRAM address %x\n", m_ac);
return;
}
else if (BIT(m_ir, 5))
@@ -420,7 +422,7 @@ WRITE8_MEMBER(hd44780_device::control_write)
correct_ac();
set_busy_flag(37);
- if (LOG) logerror("HD44780 '%s': char size 5x%d, data len %d, lines %d\n", tag(), m_char_size, m_data_len, m_num_line);
+ LOG("HD44780: char size 5x%d, data len %d, lines %d\n", m_char_size, m_data_len, m_num_line);
return;
}
else if (BIT(m_ir, 4))
@@ -428,7 +430,7 @@ WRITE8_MEMBER(hd44780_device::control_write)
// cursor or display shift
int direction = (BIT(m_ir, 2)) ? +1 : -1;
- if (LOG) logerror("HD44780 '%s': %s shift %d\n", tag(), BIT(m_ir, 3) ? "display" : "cursor", direction);
+ LOG("HD44780: %s shift %d\n", BIT(m_ir, 3) ? "display" : "cursor", direction);
if (BIT(m_ir, 3))
shift_display(direction);
@@ -445,7 +447,7 @@ WRITE8_MEMBER(hd44780_device::control_write)
m_blink_on = BIT(m_ir, 0);
set_busy_flag(37);
- if (LOG) logerror("HD44780 '%s': display %d, cursor %d, blink %d\n", tag(), m_display_on, m_cursor_on, m_blink_on);
+ LOG("HD44780: display %d, cursor %d, blink %d\n", m_display_on, m_cursor_on, m_blink_on);
}
else if (BIT(m_ir, 2))
{
@@ -454,12 +456,12 @@ WRITE8_MEMBER(hd44780_device::control_write)
m_shift_on = BIT(m_ir, 0);
set_busy_flag(37);
- if (LOG) logerror("HD44780 '%s': entry mode set: direction %d, shift %d\n", tag(), m_direction, m_shift_on);
+ LOG("HD44780: entry mode set: direction %d, shift %d\n", m_direction, m_shift_on);
}
else if (BIT(m_ir, 1))
{
// return home
- if (LOG) logerror("HD44780 '%s': return home\n", tag());
+ LOG("HD44780: return home\n");
m_ac = 0;
m_active_ram = DDRAM;
@@ -470,7 +472,7 @@ WRITE8_MEMBER(hd44780_device::control_write)
else if (BIT(m_ir, 0))
{
// clear display
- if (LOG) logerror("HD44780 '%s': clear display\n", tag());
+ LOG("HD44780: clear display\n");
m_ac = 0;
m_active_ram = DDRAM;
@@ -505,7 +507,7 @@ WRITE8_MEMBER(hd44780_device::data_write)
{
if (m_busy_flag)
{
- logerror("HD44780 '%s': Ignoring data write %02x due of busy flag\n", tag(), data);
+ logerror("HD44780: Ignoring data write %02x due of busy flag\n", data);
return;
}
@@ -528,7 +530,7 @@ WRITE8_MEMBER(hd44780_device::data_write)
m_dr = data;
}
- if (LOG) logerror("HD44780 '%s': %sRAM write %x %x '%c'\n", tag(), m_active_ram == DDRAM ? "DD" : "CG", m_ac, m_dr, isprint(m_dr) ? m_dr : '.');
+ LOG("HD44780: %sRAM write %x %x '%c'\n", m_active_ram == DDRAM ? "DD" : "CG", m_ac, m_dr, isprint(m_dr) ? m_dr : '.');
if (m_active_ram == DDRAM)
m_ddram[m_ac] = m_dr;
@@ -545,7 +547,7 @@ READ8_MEMBER(hd44780_device::data_read)
{
uint8_t data = (m_active_ram == DDRAM) ? m_ddram[m_ac] : m_cgram[m_ac];
- if (LOG) logerror("HD44780 '%s': %sRAM read %x %c\n", tag(), m_active_ram == DDRAM ? "DD" : "CG", m_ac, data);
+ LOG("HD44780: %sRAM read %x %c\n", m_active_ram == DDRAM ? "DD" : "CG", m_ac, data);
if (m_data_len == 4)
{
diff --git a/src/devices/video/hd44780.h b/src/devices/video/hd44780.h
index bb62a27d1d8..f56f286ce13 100644
--- a/src/devices/video/hd44780.h
+++ b/src/devices/video/hd44780.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_HD44780_H
+#define MAME_VIDEO_HD44780_H
-#ifndef __HD44780_H__
-#define __HD44780_H__
+#pragma once
#define MCFG_HD44780_ADD( _tag ) \
@@ -22,28 +22,28 @@
hd44780_device::static_set_lcd_size(*device, _lines, _chars);
#define MCFG_HD44780_PIXEL_UPDATE_CB(_class, _method) \
- hd44780_device::static_set_pixel_update_cb(*device, hd44780_pixel_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ hd44780_device::static_set_pixel_update_cb(*device, hd44780_device::pixel_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<void (bitmap_ind16 &bitmap, uint8_t line, uint8_t pos, uint8_t y, uint8_t x, int state)> hd44780_pixel_update_delegate;
#define HD44780_PIXEL_UPDATE(name) void name(bitmap_ind16 &bitmap, uint8_t line, uint8_t pos, uint8_t y, uint8_t x, int state)
// ======================> hd44780_device
-class hd44780_device : public device_t
+class hd44780_device : public device_t
{
public:
+ typedef device_delegate<void (bitmap_ind16 &bitmap, uint8_t line, uint8_t pos, uint8_t y, uint8_t x, int state)> pixel_update_delegate;
+
// construction/destruction
hd44780_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- hd44780_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
// static configuration helpers
static void static_set_lcd_size(device_t &device, int _lines, int _chars) { hd44780_device &dev=downcast<hd44780_device &>(device); dev.m_lines = _lines; dev.m_chars = _chars; }
- static void static_set_pixel_update_cb(device_t &device, hd44780_pixel_update_delegate callback) { downcast<hd44780_device &>(device).m_pixel_update_cb = callback; }
+ static void static_set_pixel_update_cb(device_t &device, pixel_update_delegate &&cb) { downcast<hd44780_device &>(device).m_pixel_update_cb = std::move(cb); }
// device interface
virtual DECLARE_WRITE8_MEMBER(write);
@@ -57,6 +57,8 @@ public:
virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
+ hd44780_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -92,15 +94,15 @@ private:
void pixel_update(bitmap_ind16 &bitmap, uint8_t line, uint8_t pos, uint8_t y, uint8_t x, int state);
// internal state
- static const device_timer_id TIMER_BUSY = 0;
- static const device_timer_id TIMER_BLINKING = 1;
+ static constexpr device_timer_id TIMER_BUSY = 0;
+ static constexpr device_timer_id TIMER_BLINKING = 1;
emu_timer * m_blink_timer;
emu_timer * m_busy_timer;
uint8_t m_lines; // number of lines
uint8_t m_chars; // chars for line
- hd44780_pixel_update_delegate m_pixel_update_cb; // pixel update callback
+ pixel_update_delegate m_pixel_update_cb; // pixel update callback
bool m_busy_flag; // busy flag
uint8_t m_ddram[0x80]; // internal display data RAM
@@ -141,7 +143,7 @@ public:
};
// device type definition
-extern const device_type HD44780;
-extern const device_type KS0066_F05;
+DECLARE_DEVICE_TYPE(HD44780, hd44780_device)
+DECLARE_DEVICE_TYPE(KS0066_F05, ks0066_f05_device)
-#endif
+#endif // MAME_VIDEO_HD44780_H
diff --git a/src/devices/video/hd61830.cpp b/src/devices/video/hd61830.cpp
index 21fb8f66513..f235b1b3d12 100644
--- a/src/devices/video/hd61830.cpp
+++ b/src/devices/video/hd61830.cpp
@@ -11,13 +11,16 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type HD61830 = device_creator<hd61830_device>;
+DEFINE_DEVICE_TYPE(HD61830, hd61830_device, "hd61830", "Hitachi HD61830B LCD Controller")
const device_type HD61830B = HD61830;
@@ -49,44 +52,17 @@ const tiny_rom_entry *hd61830_device::device_rom_region() const
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-static const int CYCLES[] =
+static constexpr int CYCLES[] =
{
4, 4, 4, 4, 4, -1, -1, -1, 4, 4, 4, 4, 6, 6, 36, 36
};
-const int MODE_EXTERNAL_CG = 0x01;
-const int MODE_GRAPHIC = 0x02;
-const int MODE_CURSOR = 0x04;
-const int MODE_BLINK = 0x08;
-const int MODE_MASTER = 0x10;
-const int MODE_DISPLAY_ON = 0x20;
-
-
-
-//**************************************************************************
-// INLINE HELPERS
-//**************************************************************************
-
-//-------------------------------------------------
-// readbyte - read a byte at the given address
-//-------------------------------------------------
-
-inline uint8_t hd61830_device::readbyte(offs_t address)
-{
- return space().read_byte(address);
-}
-
-
-//-------------------------------------------------
-// writebyte - write a byte at the given address
-//-------------------------------------------------
-
-inline void hd61830_device::writebyte(offs_t address, uint8_t data)
-{
- space().write_byte(address, data);
-}
+static constexpr int MODE_EXTERNAL_CG = 0x01;
+static constexpr int MODE_GRAPHIC = 0x02;
+static constexpr int MODE_CURSOR = 0x04;
+static constexpr int MODE_BLINK = 0x08;
+static constexpr int MODE_MASTER = 0x10;
+static constexpr int MODE_DISPLAY_ON = 0x20;
@@ -99,7 +75,7 @@ inline void hd61830_device::writebyte(offs_t address, uint8_t data)
//-------------------------------------------------
hd61830_device::hd61830_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, HD61830, "HD61830 LCDC", tag, owner, clock, "hd61830", __FILE__),
+ device_t(mconfig, HD61830, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_read_rd(*this),
@@ -199,7 +175,7 @@ void hd61830_device::set_busy_flag()
READ8_MEMBER( hd61830_device::status_r )
{
- if (LOG) logerror("HD61830 '%s' Status Read: %s\n", tag(), m_bf ? "busy" : "ready");
+ LOG("HD61830 Status Read: %s\n", m_bf ? "busy" : "ready");
return m_bf ? 0x80 : 0;
}
@@ -223,7 +199,7 @@ READ8_MEMBER( hd61830_device::data_r )
{
uint8_t data = m_dor;
- if (LOG) logerror("HD61830 '%s' Display Data Read %02x\n", tag(), m_dor);
+ LOG("HD61830 Display Data Read %02x\n", m_dor);
m_dor = readbyte(m_cac);
@@ -241,7 +217,7 @@ WRITE8_MEMBER( hd61830_device::data_w )
{
if (m_bf)
{
- logerror("HD61830 '%s' Ignoring data write %02x due to business\n", tag(), data);
+ logerror("HD61830 Ignoring data write %02x due to business\n", data);
return;
}
@@ -250,53 +226,50 @@ WRITE8_MEMBER( hd61830_device::data_w )
case INSTRUCTION_MODE_CONTROL:
m_mcr = data;
- if (LOG)
- {
- logerror("HD61830 '%s' %s CG\n", tag(), (data & MODE_EXTERNAL_CG) ? "External" : "Internal");
- logerror("HD61830 '%s' %s Display Mode\n", tag(), (data & MODE_GRAPHIC) ? "Graphic" : "Character");
- logerror("HD61830 '%s' %s Mode\n", tag(), (data & MODE_MASTER) ? "Master" : "Slave");
- logerror("HD61830 '%s' Cursor %s\n", tag(), (data & MODE_CURSOR) ? "On" : "Off");
- logerror("HD61830 '%s' Blink %s\n", tag(), (data & MODE_BLINK) ? "On" : "Off");
- logerror("HD61830 '%s' Display %s\n", tag(), (data & MODE_DISPLAY_ON) ? "On" : "Off");
- }
+ LOG("HD61830 %s CG\n", (data & MODE_EXTERNAL_CG) ? "External" : "Internal");
+ LOG("HD61830 %s Display Mode\n", (data & MODE_GRAPHIC) ? "Graphic" : "Character");
+ LOG("HD61830 %s Mode\n", (data & MODE_MASTER) ? "Master" : "Slave");
+ LOG("HD61830 Cursor %s\n", (data & MODE_CURSOR) ? "On" : "Off");
+ LOG("HD61830 Blink %s\n", (data & MODE_BLINK) ? "On" : "Off");
+ LOG("HD61830 Display %s\n", (data & MODE_DISPLAY_ON) ? "On" : "Off");
break;
case INSTRUCTION_CHARACTER_PITCH:
m_hp = (data & 0x07) + 1;
m_vp = (data >> 4) + 1;
- if (LOG) logerror("HD61830 '%s' Horizontal Character Pitch: %u\n", tag(), m_hp);
- if (LOG) logerror("HD61830 '%s' Vertical Character Pitch: %u\n", tag(), m_vp);
+ LOG("HD61830 Horizontal Character Pitch: %u\n", m_hp);
+ LOG("HD61830 Vertical Character Pitch: %u\n", m_vp);
break;
case INSTRUCTION_NUMBER_OF_CHARACTERS:
m_hn = (data & 0x7f) + 1;
- if (LOG) logerror("HD61830 '%s' Number of Characters: %u\n", tag(), m_hn);
+ LOG("HD61830 Number of Characters: %u\n", m_hn);
break;
case INSTRUCTION_NUMBER_OF_TIME_DIVISIONS:
m_nx = (data & 0x7f) + 1;
- if (LOG) logerror("HD61830 '%s' Number of Time Divisions: %u\n", tag(), m_nx);
+ LOG("HD61830 Number of Time Divisions: %u\n", m_nx);
break;
case INSTRUCTION_CURSOR_POSITION:
m_cp = (data & 0x7f) + 1;
- if (LOG) logerror("HD61830 '%s' Cursor Position: %u\n", tag(), m_cp);
+ LOG("HD61830 Cursor Position: %u\n", m_cp);
break;
case INSTRUCTION_DISPLAY_START_LOW:
m_dsa = (m_dsa & 0xff00) | data;
- if (LOG) logerror("HD61830 '%s' Display Start Address Low %04x\n", tag(), m_dsa);
+ LOG("HD61830 Display Start Address Low %04x\n", m_dsa);
break;
case INSTRUCTION_DISPLAY_START_HIGH:
m_dsa = (data << 8) | (m_dsa & 0xff);
- if (LOG) logerror("HD61830 '%s' Display Start Address High %04x\n", tag(), m_dsa);
+ LOG("HD61830 Display Start Address High %04x\n", m_dsa);
break;
case INSTRUCTION_CURSOR_ADDRESS_LOW:
@@ -309,19 +282,19 @@ WRITE8_MEMBER( hd61830_device::data_w )
m_cac = (m_cac & 0xff00) | data;
}
- if (LOG) logerror("HD61830 '%s' Cursor Address Low %02x: %04x\n", tag(), data, m_cac);
+ LOG("HD61830 Cursor Address Low %02x: %04x\n", data, m_cac);
break;
case INSTRUCTION_CURSOR_ADDRESS_HIGH:
m_cac = (data << 8) | (m_cac & 0xff);
- if (LOG) logerror("HD61830 '%s' Cursor Address High %02x: %04x\n", tag(), data, m_cac);
+ LOG("HD61830 Cursor Address High %02x: %04x\n", data, m_cac);
break;
case INSTRUCTION_DISPLAY_DATA_WRITE:
writebyte(m_cac, data);
- if (LOG) logerror("HD61830 '%s' Display Data Write %02x -> %04x row %u col %u\n", tag(), data, m_cac, m_cac / 40, m_cac % 40);
+ LOG("HD61830 Display Data Write %02x -> %04x row %u col %u\n", data, m_cac, m_cac / 40, m_cac % 40);
m_cac++;
break;
@@ -333,7 +306,7 @@ WRITE8_MEMBER( hd61830_device::data_w )
md &= ~(1 << bit);
- if (LOG) logerror("HD61830 '%s' Clear Bit %u at %04x\n", tag(), bit + 1, m_cac);
+ LOG("HD61830 Clear Bit %u at %04x\n", bit + 1, m_cac);
writebyte(m_cac, md);
@@ -348,7 +321,7 @@ WRITE8_MEMBER( hd61830_device::data_w )
md |= 1 << bit;
- if (LOG) logerror("HD61830 '%s' Set Bit %u at %04x\n", tag(), bit + 1, m_cac);
+ LOG("HD61830 Set Bit %u at %04x\n", bit + 1, m_cac);
writebyte(m_cac, md);
@@ -357,7 +330,7 @@ WRITE8_MEMBER( hd61830_device::data_w )
break;
default:
- logerror("HD61830 '%s' Illegal Instruction %02x!\n", tag(), m_ir);
+ logerror("HD61830 Illegal Instruction %02x!\n", m_ir);
return;
}
diff --git a/src/devices/video/hd61830.h b/src/devices/video/hd61830.h
index 05f2ac1b3a2..e454ec79a97 100644
--- a/src/devices/video/hd61830.h
+++ b/src/devices/video/hd61830.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_HD61830_H
+#define MAME_VIDEO_HD61830_H
-#ifndef __HD61830__
-#define __HD61830__
+#pragma once
@@ -37,7 +37,7 @@ public:
// construction/destruction
hd61830_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_rd_rd_callback(device_t &device, _Object object) { return downcast<hd61830_device &>(device).m_read_rd.set_callback(object); }
+ template <class Object> static devcb_base &set_rd_rd_callback(device_t &device, Object &&cb) { return downcast<hd61830_device &>(device).m_read_rd.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( status_r );
DECLARE_WRITE8_MEMBER( control_w );
@@ -55,10 +55,10 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
- inline uint8_t readbyte(offs_t address);
- inline void writebyte(offs_t address, uint8_t data);
+ uint8_t readbyte(offs_t address) { return space().read_byte(address); }
+ void writebyte(offs_t address, uint8_t data) { space().write_byte(address, data); }
private:
enum
@@ -116,9 +116,7 @@ private:
// device type definition
-extern const device_type HD61830;
+DECLARE_DEVICE_TYPE(HD61830, hd61830_device)
extern const device_type HD61830B;
-
-
-#endif
+#endif // MAME_VIDEO_HD61830_H
diff --git a/src/devices/video/hd63484.cpp b/src/devices/video/hd63484.cpp
index 06f7a1dc20c..0345362ebd6 100644
--- a/src/devices/video/hd63484.cpp
+++ b/src/devices/video/hd63484.cpp
@@ -25,7 +25,7 @@
//-------------------------------------------------
hd63484_device::hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HD63484, "HD63484 CRTC", tag, owner, clock, "hd63484", __FILE__),
+ : device_t(mconfig, HD63484, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_auto_configure_screen(true),
@@ -331,7 +331,7 @@ enum
-------------------------------------------------*/
// devices
-const device_type HD63484 = device_creator<hd63484_device>;
+DEFINE_DEVICE_TYPE(HD63484, hd63484_device, "hd63484", "Hitachi HD63484 ACRTC")
ROM_START( hd63484 )
diff --git a/src/devices/video/hd63484.h b/src/devices/video/hd63484.h
index 83e2bbcb232..0bdb703f388 100644
--- a/src/devices/video/hd63484.h
+++ b/src/devices/video/hd63484.h
@@ -7,15 +7,11 @@
**************************************************************************/
-#pragma once
-
-#ifndef __HD63484__
-#define __HD63484__
-
-
+#ifndef MAME_VIDEO_HD63484_H
+#define MAME_VIDEO_HD63484_H
+#pragma once
-typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect, int y, int x, uint16_t data)> hd63484_display_delegate;
/***************************************************************************
@@ -30,7 +26,7 @@ typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect, i
MCFG_DEVICE_ADDRESS_MAP(AS_0, _map)
#define MCFG_HD63484_DISPLAY_CALLBACK_OWNER(_class, _method) \
- hd63484_device::static_set_display_callback(*device, hd63484_display_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ hd63484_device::static_set_display_callback(*device, hd63484_device::display_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_HD63484_AUTO_CONFIGURE_SCREEN(_val) \
hd63484_device::static_set_auto_configure_screen(*device, _val);
@@ -40,15 +36,17 @@ typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect, i
// ======================> hd63484_device
-class hd63484_device : public device_t,
+class hd63484_device : public device_t,
public device_memory_interface,
public device_video_interface
{
public:
+ typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect, int y, int x, uint16_t data)> display_delegate;
+
// construction/destruction
hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_display_callback(device_t &device, hd63484_display_delegate callback) { downcast<hd63484_device &>(device).m_display_cb = callback; }
+ static void static_set_display_callback(device_t &device, display_delegate &&cb) { downcast<hd63484_device &>(device).m_display_cb = std::move(cb); }
static void static_set_auto_configure_screen(device_t &device, bool auto_configure_screen) { downcast<hd63484_device &>(device).m_auto_configure_screen = auto_configure_screen; }
DECLARE_WRITE16_MEMBER( address_w );
@@ -115,7 +113,7 @@ private:
void register_save_state();
- hd63484_display_delegate m_display_cb;
+ display_delegate m_display_cb;
bool m_auto_configure_screen;
uint8_t m_ar;
@@ -188,6 +186,6 @@ private:
};
// device type definition
-extern const device_type HD63484;
+DECLARE_DEVICE_TYPE(HD63484, hd63484_device)
-#endif /* __HD63484_H__ */
+#endif // MAME_VIDEO_HD63484_H
diff --git a/src/devices/video/hd66421.cpp b/src/devices/video/hd66421.cpp
index a19dc11c750..a6c834d5db0 100644
--- a/src/devices/video/hd66421.cpp
+++ b/src/devices/video/hd66421.cpp
@@ -11,14 +11,17 @@
#include "emu.h"
#include "hd66421.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
+//#define HD66421_BRIGHTNESS_DOES_NOT_WORK
+
#define LOG_LEVEL 1
#define _logerror(level,x) do { if (LOG_LEVEL > level) logerror x; } while (0)
-#define HD66421_RAM_SIZE (HD66421_WIDTH * HD66421_HEIGHT / 4) // 2-bits per pixel
+#define HD66421_RAM_SIZE (hd66421_device::WIDTH * hd66421_device::HEIGHT / 4) // 2-bits per pixel
// R0 - control register 1
#define LCD_R0_RMW 0x80 // read-modify-write mode
@@ -65,7 +68,7 @@
//**************************************************************************
// devices
-const device_type HD66421 = device_creator<hd66421_device>;
+DEFINE_DEVICE_TYPE(HD66421, hd66421_device, "hd66421", "Hitachi HD66421 LCD Controller")
// default address map
@@ -117,7 +120,7 @@ inline void hd66421_device::writebyte(offs_t address, uint8_t data)
//-------------------------------------------------
hd66421_device::hd66421_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HD66421, "Hitachi HD66421 LCD Controller", tag, owner, clock, "hd66421", __FILE__),
+ : device_t(mconfig, HD66421, tag, owner, clock),
device_memory_interface(mconfig, *this),
m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, nullptr, *ADDRESS_MAP_NAME(hd66421)),
m_cmd(0),
@@ -181,20 +184,20 @@ WRITE8_MEMBER( hd66421_device::reg_dat_w )
case LCD_REG_RAM :
{
uint8_t r1;
- writebyte(m_y * (HD66421_WIDTH / 4) + m_x, data);
+ writebyte(m_y * (WIDTH / 4) + m_x, data);
r1 = m_reg[LCD_REG_CONTROL_2];
if (r1 & 0x02)
m_x++;
else
m_y++;
- if (m_x >= (HD66421_WIDTH / 4))
+ if (m_x >= (WIDTH / 4))
{
m_x = 0;
m_y++;
}
- if (m_y >= HD66421_HEIGHT)
+ if (m_y >= HEIGHT)
m_y = 0;
}
break;
@@ -222,11 +225,11 @@ uint32_t hd66421_device::update_screen(screen_device &screen, bitmap_ind16 &bitm
if (temp > 31) temp = 31;
bright = 1.0 * temp / 31;
pen[i] = i;
- #ifdef HD66421_BRIGHTNESS_DOES_NOT_WORK
+#ifdef HD66421_BRIGHTNESS_DOES_NOT_WORK
m_palette->set_pen_color(pen[i], 255 * bright, 255 * bright, 255 * bright);
- #else
+#else
m_palette->set_pen_contrast(pen[i], bright);
- #endif
+#endif
}
// draw bitmap (bottom to top)
@@ -234,7 +237,7 @@ uint32_t hd66421_device::update_screen(screen_device &screen, bitmap_ind16 &bitm
{
int x, y;
x = 0;
- y = HD66421_HEIGHT - 1;
+ y = HEIGHT - 1;
for (int i = 0; i < HD66421_RAM_SIZE; i++)
{
@@ -242,7 +245,7 @@ uint32_t hd66421_device::update_screen(screen_device &screen, bitmap_ind16 &bitm
plot_pixel(bitmap, x++, y, pen[(readbyte(i) >> 4) & 3]);
plot_pixel(bitmap, x++, y, pen[(readbyte(i) >> 2) & 3]);
plot_pixel(bitmap, x++, y, pen[(readbyte(i) >> 0) & 3]);
- if (x >= HD66421_WIDTH)
+ if (x >= WIDTH)
{
x = 0;
y = y - 1;
@@ -251,7 +254,7 @@ uint32_t hd66421_device::update_screen(screen_device &screen, bitmap_ind16 &bitm
}
else
{
- rectangle rect(0, HD66421_WIDTH - 1, 0, HD66421_HEIGHT - 1);
+ rectangle rect(0, WIDTH - 1, 0, HEIGHT - 1);
bitmap.fill(m_palette->white_pen(), rect);
}
diff --git a/src/devices/video/hd66421.h b/src/devices/video/hd66421.h
index d7a00d91107..3be6de49536 100644
--- a/src/devices/video/hd66421.h
+++ b/src/devices/video/hd66421.h
@@ -8,23 +8,11 @@
***************************************************************************/
-#pragma once
-
-#ifndef __HD66421_H__
-#define __HD66421_H__
-
-
-///*************************************************************************
-// MACROS / CONSTANTS
-///*************************************************************************
-
-//#define HD66421_BRIGHTNESS_DOES_NOT_WORK
-
-#define HD66421_WIDTH 160
-#define HD66421_HEIGHT 100
+#ifndef MAME_VIDEO_HD66421_H
+#define MAME_VIDEO_HD66421_H
+#pragma once
-/*----------- defined in video/hd66421.c -----------*/
///*************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -43,6 +31,9 @@ class hd66421_device : public device_t,
public device_memory_interface
{
public:
+ static constexpr unsigned WIDTH = 160;
+ static constexpr unsigned HEIGHT = 100;
+
// construction/destruction
hd66421_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -78,7 +69,6 @@ private:
// device type definition
-extern const device_type HD66421;
-
+DECLARE_DEVICE_TYPE(HD66421, hd66421_device)
-#endif
+#endif // MAME_VIDEO_HD66421_H
diff --git a/src/devices/video/hlcd0515.cpp b/src/devices/video/hlcd0515.cpp
index 2f691eb839d..c930897d0bd 100644
--- a/src/devices/video/hlcd0515.cpp
+++ b/src/devices/video/hlcd0515.cpp
@@ -17,26 +17,27 @@
#include "video/hlcd0515.h"
-const device_type HLCD0515 = device_creator<hlcd0515_device>;
-const device_type HLCD0569 = device_creator<hlcd0569_device>;
+DEFINE_DEVICE_TYPE(HLCD0515, hlcd0515_device, "hlcd0515", "Hughes HLCD 0515 LCD Driver")
+DEFINE_DEVICE_TYPE(HLCD0569, hlcd0569_device, "hlcd0569", "Hughes HLCD 0569 LCD Driver")
//-------------------------------------------------
// constructor
//-------------------------------------------------
-hlcd0515_device::hlcd0515_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 colmax, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_colmax(colmax), m_write_cols(*this), m_write_data(*this)
+hlcd0515_device::hlcd0515_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 colmax)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_colmax(colmax)
+ , m_write_cols(*this), m_write_data(*this)
{
}
hlcd0515_device::hlcd0515_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hlcd0515_device(mconfig, HLCD0515, "HLCD 0515 LCD Driver", tag, owner, clock, 25, "hlcd0515", __FILE__)
+ : hlcd0515_device(mconfig, HLCD0515, tag, owner, clock, 25)
{
}
hlcd0569_device::hlcd0569_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hlcd0515_device(mconfig, HLCD0569, "HLCD 0569 LCD Driver", tag, owner, clock, 24, "hlcd0569", __FILE__)
+ : hlcd0515_device(mconfig, HLCD0569, tag, owner, clock, 24)
{
}
diff --git a/src/devices/video/hlcd0515.h b/src/devices/video/hlcd0515.h
index 899ed199576..16a62d74756 100644
--- a/src/devices/video/hlcd0515.h
+++ b/src/devices/video/hlcd0515.h
@@ -6,18 +6,10 @@
*/
-#ifndef _HLCD0515_H_
-#define _HLCD0515_H_
-
-
-// COL/ROW pins (offset for ROW)
-#define MCFG_HLCD0515_WRITE_COLS_CB(_devcb) \
- devcb = &hlcd0515_device::set_write_cols_callback(*device, DEVCB_##_devcb);
-
-// DATA OUT pin, don't use on HLCD0569
-#define MCFG_HLCD0515_WRITE_DATA_CB(_devcb) \
- devcb = &hlcd0515_device::set_write_data_callback(*device, DEVCB_##_devcb);
+#ifndef MAME_VIDEO_HLCD0515_H
+#define MAME_VIDEO_HLCD0515_H
+#pragma once
// pinout reference
@@ -50,21 +42,32 @@
Internally, this is divided by 2, and by number of rows to get display refresh frequency.
*/
+
+// COL/ROW pins (offset for ROW)
+#define MCFG_HLCD0515_WRITE_COLS_CB(_devcb) \
+ devcb = &hlcd0515_device::set_write_cols_callback(*device, DEVCB_##_devcb);
+
+// DATA OUT pin, don't use on HLCD0569
+#define MCFG_HLCD0515_WRITE_DATA_CB(_devcb) \
+ devcb = &hlcd0515_device::set_write_data_callback(*device, DEVCB_##_devcb);
+
+
class hlcd0515_device : public device_t
{
public:
hlcd0515_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- hlcd0515_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 colmax, const char *shortname, const char *source);
// static configuration helpers
- template<typename Object> static devcb_base &set_write_cols_callback(device_t &device, Object &&object) { return downcast<hlcd0515_device &>(device).m_write_cols.set_callback(std::forward<Object>(object)); }
- template<typename Object> static devcb_base &set_write_data_callback(device_t &device, Object &&object) { return downcast<hlcd0515_device &>(device).m_write_data.set_callback(std::forward<Object>(object)); }
+ template <typename Object> static devcb_base &set_write_cols_callback(device_t &device, Object &&cb) { return downcast<hlcd0515_device &>(device).m_write_cols.set_callback(std::forward<Object>(cb)); }
+ template <typename Object> static devcb_base &set_write_data_callback(device_t &device, Object &&cb) { return downcast<hlcd0515_device &>(device).m_write_data.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(write_clock);
DECLARE_WRITE_LINE_MEMBER(write_cs);
DECLARE_WRITE_LINE_MEMBER(write_data) { m_data = (state) ? 1 : 0; }
protected:
+ hlcd0515_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 colmax);
+
// device-level overrides
virtual void device_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -72,7 +75,7 @@ protected:
virtual void set_control();
void clock_data(int col);
- u8 m_colmax; // number of column pins
+ const u8 m_colmax; // number of column pins
int m_cs; // input pin state
int m_clock; // "
@@ -104,9 +107,7 @@ protected:
};
+DECLARE_DEVICE_TYPE(HLCD0515, hlcd0515_device)
+DECLARE_DEVICE_TYPE(HLCD0569, hlcd0569_device)
-extern const device_type HLCD0515;
-extern const device_type HLCD0569;
-
-
-#endif /* _HLCD0515_H_ */
+#endif // MAME_VIDEO_HLCD0515_H
diff --git a/src/devices/video/hlcd0538.cpp b/src/devices/video/hlcd0538.cpp
index 402ece29d6e..c409e6be528 100644
--- a/src/devices/video/hlcd0538.cpp
+++ b/src/devices/video/hlcd0538.cpp
@@ -16,26 +16,26 @@
#include "video/hlcd0538.h"
-const device_type HLCD0538 = device_creator<hlcd0538_device>;
-const device_type HLCD0539 = device_creator<hlcd0539_device>;
+DEFINE_DEVICE_TYPE(HLCD0538, hlcd0538_device, "hlcd0538", "Hughes HLCD 0538 LCD Driver")
+DEFINE_DEVICE_TYPE(HLCD0539, hlcd0539_device, "hlcd0539", "Hughes HLCD 0539 LCD Driver")
//-------------------------------------------------
// constructor
//-------------------------------------------------
-hlcd0538_device::hlcd0538_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_write_cols(*this), m_write_interrupt(*this)
+hlcd0538_device::hlcd0538_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_write_cols(*this), m_write_interrupt(*this)
{
}
hlcd0538_device::hlcd0538_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hlcd0538_device(mconfig, HLCD0538, "HLCD 0538 LCD Driver", tag, owner, clock, "hlcd0538", __FILE__)
+ : hlcd0538_device(mconfig, HLCD0538, tag, owner, clock)
{
}
hlcd0539_device::hlcd0539_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : hlcd0538_device(mconfig, HLCD0539, "HLCD 0539 LCD Driver", tag, owner, clock, "hlcd0539", __FILE__)
+ : hlcd0538_device(mconfig, HLCD0539, tag, owner, clock)
{
}
diff --git a/src/devices/video/hlcd0538.h b/src/devices/video/hlcd0538.h
index 3d49460b80a..8bdbb4a83f1 100644
--- a/src/devices/video/hlcd0538.h
+++ b/src/devices/video/hlcd0538.h
@@ -6,18 +6,10 @@
*/
-#ifndef _HLCD0538_H_
-#define _HLCD0538_H_
-
-
-// C/R pins (0538: d0-d7 for rows)
-#define MCFG_HLCD0538_WRITE_COLS_CB(_devcb) \
- devcb = &hlcd0538_device::set_write_cols_callback(*device, DEVCB_##_devcb);
-
-// INTERRUPT pin
-#define MCFG_HLCD0538_INTERRUPT_CB(_devcb) \
- devcb = &hlcd0538_device::set_write_interrupt_callback(*device, DEVCB_##_devcb);
+#ifndef MAME_VIDEO_HLCD0538_H
+#define MAME_VIDEO_HLCD0538_H
+#pragma once
// pinout reference
@@ -47,21 +39,32 @@
HLCD 0539 has 8 more C pins(1-8) in place of R pins.
*/
+
+// C/R pins (0538: d0-d7 for rows)
+#define MCFG_HLCD0538_WRITE_COLS_CB(_devcb) \
+ devcb = &hlcd0538_device::set_write_cols_callback(*device, DEVCB_##_devcb);
+
+// INTERRUPT pin
+#define MCFG_HLCD0538_INTERRUPT_CB(_devcb) \
+ devcb = &hlcd0538_device::set_write_interrupt_callback(*device, DEVCB_##_devcb);
+
+
class hlcd0538_device : public device_t
{
public:
hlcd0538_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- hlcd0538_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);
// static configuration helpers
- template<typename Object> static devcb_base &set_write_cols_callback(device_t &device, Object &&object) { return downcast<hlcd0538_device &>(device).m_write_cols.set_callback(std::forward<Object>(object)); }
- template<typename Object> static devcb_base &set_write_interrupt_callback(device_t &device, Object &&object) { return downcast<hlcd0538_device &>(device).m_write_interrupt.set_callback(std::forward<Object>(object)); }
+ template <typename Object> static devcb_base &set_write_cols_callback(device_t &device, Object &&cb) { return downcast<hlcd0538_device &>(device).m_write_cols.set_callback(std::forward<Object>(cb)); }
+ template <typename Object> static devcb_base &set_write_interrupt_callback(device_t &device, Object &&cb) { return downcast<hlcd0538_device &>(device).m_write_interrupt.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE_LINE_MEMBER(write_clk);
DECLARE_WRITE_LINE_MEMBER(write_lcd);
DECLARE_WRITE_LINE_MEMBER(write_data) { m_data = (state) ? 1 : 0; }
protected:
+ hlcd0538_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
// device-level overrides
virtual void device_start() override;
@@ -84,8 +87,7 @@ public:
-extern const device_type HLCD0538;
-extern const device_type HLCD0539;
-
+DECLARE_DEVICE_TYPE(HLCD0538, hlcd0538_device)
+DECLARE_DEVICE_TYPE(HLCD0539, hlcd0539_device)
-#endif /* _HLCD0538_H_ */
+#endif // MAME_VIDEO_HLCD0538_H
diff --git a/src/devices/video/hp1ll3.cpp b/src/devices/video/hp1ll3.cpp
index b87c8a15342..21b6a2b4550 100644
--- a/src/devices/video/hp1ll3.cpp
+++ b/src/devices/video/hp1ll3.cpp
@@ -37,6 +37,98 @@
#include "screen.h"
+///*************************************************************************
+// MACROS / CONSTANTS
+///*************************************************************************
+
+/*
+ * command types (send)
+ *
+ * 0 -- no data
+ * 1 -- write 1 word of data, then command
+ * 2 -- write 2 words of data, then command
+ * 3 -- write command, then 11 words of data (= CONF only?)
+ * 4 -- write 1 word of data, then command, then write X words of data, then write NOP
+ *
+ * (read)
+ *
+ * 3 -- ???
+ * 4 -- write 1 word of data, then command, then read X words of data, then write NOP
+ */
+#define NOP 0 // type 0
+#define CONF 2 // type 3, configure GPU (screen size, timings...). 11 words of data.
+#define DISVID 3 // type 0, disable video
+#define ENVID 4 // type 0, enable video
+#define WRMEM 7 // type 4, write GPU memory at offset, terminate by NOP
+#define RDMEM 8 // type 4, read GPU memory from offset, terminate by NOP
+#define WRSAD 9 // type 1, set screen area start address
+#define WRORG 10 // type 1, set ???
+#define WRDAD 11 // type 1, set data area start address (16x16 area fill, sprite and cursor)
+#define WRRR 12 // type 1, set replacement rule (rasterop)
+#define MOVEP 13 // type 2, move pointer
+#define IMOVEP 14
+#define DRAWP 15 // type 2, draw line
+#define IDRAWP 16
+#define RDP 17
+#define WRUDL 18 // type 1, set user-defined line pattern (16-bit)
+#define WRWINSIZ 19 // type 2, set ???
+#define WRWINORG 20 // type 2, set ???
+#define COPY 21 // type 2
+#define FILL 22 // type 1, fill area
+#define FRAME 23 // type _, draw rectangle
+#define SCROLUP 24 // type 2
+#define SCROLDN 25 // type 2
+#define SCROLLF 26 // type 2
+#define SCROLRT 27 // type 2
+#define RDWIN 28 // type 1
+#define WRWIN 29 // type 1
+#define RDWINPARM 30
+#define CR 31
+#define CRLFx 32
+#define LABEL 36 // type 1, draw text
+#define ENSP 38 // type 0, enable sprite
+#define DISSP 39 // type 0, disable sprite
+#define MOVESP 40 // type 2, move sprite
+#define IMOVESP 41
+#define RDSP 42
+#define DRAWPX 43 // type _, draw single pixel
+#define WRFAD 44 // type 1, set font area start address
+#define ENCURS 45 // type 0
+#define DISCURS 46 // type 0
+#define ID 63
+
+
+/*
+ * Replacement Rules (rops). sources:
+ *
+ * - NetBSD's diofbvar.h (definitions for Topcat chip)
+ * - pdf/hp/9000_300/specs/A-5958-4362-9_Series_300_Display_Color_Card_Theory_of_Operation_Oct85.pdf
+ * refers to TOPCAT documentation p/n A-1FH2-2001-7 (not online)
+ */
+#define RR_FORCE_ZERO 0x0
+#define RR_CLEAR RR_FORCE_ZERO
+#define RR_AND 0x1
+#define RR_AND_NOT_OLD 0x2
+#define RR_NEW 0x3
+#define RR_COPY RR_NEW
+#define RR_AND_NOT_NEW 0x4
+#define RR_OLD 0x5
+#define RR_XOR 0x6
+#define RR_OR 0x7
+#define RR_NOR 0x8
+#define RR_XNOR 0x9
+#define RR_NOT_OLD 0xa
+#define RR_INVERT RR_NOT_OLD
+#define RR_OR_NOT_OLD 0xb
+#define RR_NOT_NEW 0xc
+#define RR_COPYINVERTED RR_NOT_NEW
+#define RR_OR_NOT_NEW 0xd
+#define RR_NAND 0xe
+#define RR_FORCE_ONE 0xf
+
+#define WS 16 // bits in a word
+
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
@@ -64,7 +156,7 @@
//**************************************************************************
// devices
-const device_type HP1LL3 = device_creator<hp1ll3_device>;
+DEFINE_DEVICE_TYPE(HP1LL3, hp1ll3_device, "hp1ll3", "Hewlett-Packard 1LL3-0005 GPU")
//**************************************************************************
@@ -76,7 +168,7 @@ const device_type HP1LL3 = device_creator<hp1ll3_device>;
//-------------------------------------------------
hp1ll3_device::hp1ll3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HP1LL3, "Hewlett-Package 1LL3-0005 GPU", tag, owner, clock, "hp1ll3", __FILE__)
+ : device_t(mconfig, HP1LL3, tag, owner, clock)
, device_video_interface(mconfig, *this)
{
}
diff --git a/src/devices/video/hp1ll3.h b/src/devices/video/hp1ll3.h
index f95b8dcb32b..ab8b047a977 100644
--- a/src/devices/video/hp1ll3.h
+++ b/src/devices/video/hp1ll3.h
@@ -6,103 +6,11 @@
***************************************************************************/
+#ifndef MAME_VIDEO_HP1LL3_H
+#define MAME_VIDEO_HP1LL3_H
#pragma once
-#ifndef __HP1LL3_H__
-#define __HP1LL3_H__
-
-///*************************************************************************
-// MACROS / CONSTANTS
-///*************************************************************************
-
-/*
- * command types (send)
- *
- * 0 -- no data
- * 1 -- write 1 word of data, then command
- * 2 -- write 2 words of data, then command
- * 3 -- write command, then 11 words of data (= CONF only?)
- * 4 -- write 1 word of data, then command, then write X words of data, then write NOP
- *
- * (read)
- *
- * 3 -- ???
- * 4 -- write 1 word of data, then command, then read X words of data, then write NOP
- */
-#define NOP 0 // type 0
-#define CONF 2 // type 3, configure GPU (screen size, timings...). 11 words of data.
-#define DISVID 3 // type 0, disable video
-#define ENVID 4 // type 0, enable video
-#define WRMEM 7 // type 4, write GPU memory at offset, terminate by NOP
-#define RDMEM 8 // type 4, read GPU memory from offset, terminate by NOP
-#define WRSAD 9 // type 1, set screen area start address
-#define WRORG 10 // type 1, set ???
-#define WRDAD 11 // type 1, set data area start address (16x16 area fill, sprite and cursor)
-#define WRRR 12 // type 1, set replacement rule (rasterop)
-#define MOVEP 13 // type 2, move pointer
-#define IMOVEP 14
-#define DRAWP 15 // type 2, draw line
-#define IDRAWP 16
-#define RDP 17
-#define WRUDL 18 // type 1, set user-defined line pattern (16-bit)
-#define WRWINSIZ 19 // type 2, set ???
-#define WRWINORG 20 // type 2, set ???
-#define COPY 21 // type 2
-#define FILL 22 // type 1, fill area
-#define FRAME 23 // type _, draw rectangle
-#define SCROLUP 24 // type 2
-#define SCROLDN 25 // type 2
-#define SCROLLF 26 // type 2
-#define SCROLRT 27 // type 2
-#define RDWIN 28 // type 1
-#define WRWIN 29 // type 1
-#define RDWINPARM 30
-#define CR 31
-#define CRLFx 32
-#define LABEL 36 // type 1, draw text
-#define ENSP 38 // type 0, enable sprite
-#define DISSP 39 // type 0, disable sprite
-#define MOVESP 40 // type 2, move sprite
-#define IMOVESP 41
-#define RDSP 42
-#define DRAWPX 43 // type _, draw single pixel
-#define WRFAD 44 // type 1, set font area start address
-#define ENCURS 45 // type 0
-#define DISCURS 46 // type 0
-#define ID 63
-
-
-/*
- * Replacement Rules (rops). sources:
- *
- * - NetBSD's diofbvar.h (definitions for Topcat chip)
- * - pdf/hp/9000_300/specs/A-5958-4362-9_Series_300_Display_Color_Card_Theory_of_Operation_Oct85.pdf
- * refers to TOPCAT documentation p/n A-1FH2-2001-7 (not online)
- */
-#define RR_FORCE_ZERO 0x0
-#define RR_CLEAR RR_FORCE_ZERO
-#define RR_AND 0x1
-#define RR_AND_NOT_OLD 0x2
-#define RR_NEW 0x3
-#define RR_COPY RR_NEW
-#define RR_AND_NOT_NEW 0x4
-#define RR_OLD 0x5
-#define RR_XOR 0x6
-#define RR_OR 0x7
-#define RR_NOR 0x8
-#define RR_XNOR 0x9
-#define RR_NOT_OLD 0xa
-#define RR_INVERT RR_NOT_OLD
-#define RR_OR_NOT_OLD 0xb
-#define RR_NOT_NEW 0xc
-#define RR_COPYINVERTED RR_NOT_NEW
-#define RR_OR_NOT_NEW 0xd
-#define RR_NAND 0xe
-#define RR_FORCE_ONE 0xf
-
-#define WS 16 // bits in a word
-
///*************************************************************************
// INTERFACE CONFIGURATION MACROS
@@ -118,8 +26,7 @@
// ======================> hp1ll3_device
-class hp1ll3_device : public device_t,
- public device_video_interface
+class hp1ll3_device : public device_t, public device_video_interface
{
public:
// construction/destruction
@@ -170,7 +77,6 @@ private:
// device type definition
-extern const device_type HP1LL3;
-
+DECLARE_DEVICE_TYPE(HP1LL3, hp1ll3_device)
-#endif
+#endif // MAME_VIDEO_HP1LL3_H
diff --git a/src/devices/video/huc6202.cpp b/src/devices/video/huc6202.cpp
index e5a4d2438c1..bbacd956e26 100644
--- a/src/devices/video/huc6202.cpp
+++ b/src/devices/video/huc6202.cpp
@@ -7,27 +7,29 @@
**********************************************************************/
#include "emu.h"
-#include "huc6270.h"
#include "huc6202.h"
+#include "huc6270.h"
+
-const device_type HUC6202 = device_creator<huc6202_device>;
+DEFINE_DEVICE_TYPE(HUC6202, huc6202_device, "huc6202", "Hudson HuC6202 VPC")
huc6202_device::huc6202_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HUC6202, "HuC6202 VPC", tag, owner, clock, "huc6202", __FILE__),
- m_next_pixel_0_cb(*this),
- m_time_til_next_event_0_cb(*this),
- m_vsync_changed_0_cb(*this),
- m_hsync_changed_0_cb(*this),
- m_read_0_cb(*this),
- m_write_0_cb(*this),
- m_next_pixel_1_cb(*this),
- m_time_til_next_event_1_cb(*this),
- m_vsync_changed_1_cb(*this),
- m_hsync_changed_1_cb(*this),
- m_read_1_cb(*this),
- m_write_1_cb(*this), m_window1(0), m_window2(0), m_io_device(0), m_map_index(0), m_map_dirty(0)
+ : device_t(mconfig, HUC6202, tag, owner, clock)
+ , m_next_pixel_0_cb(*this)
+ , m_time_til_next_event_0_cb(*this)
+ , m_vsync_changed_0_cb(*this)
+ , m_hsync_changed_0_cb(*this)
+ , m_read_0_cb(*this)
+ , m_write_0_cb(*this)
+ , m_next_pixel_1_cb(*this)
+ , m_time_til_next_event_1_cb(*this)
+ , m_vsync_changed_1_cb(*this)
+ , m_hsync_changed_1_cb(*this)
+ , m_read_1_cb(*this)
+ , m_write_1_cb(*this)
+ , m_window1(0), m_window2(0), m_io_device(0), m_map_index(0), m_map_dirty(0)
{
}
diff --git a/src/devices/video/huc6202.h b/src/devices/video/huc6202.h
index 5ad529a3e35..3a3c90076e3 100644
--- a/src/devices/video/huc6202.h
+++ b/src/devices/video/huc6202.h
@@ -6,9 +6,10 @@
**********************************************************************/
-#ifndef __HUC6202_H_
-#define __HUC6202_H_
+#ifndef MAME_VIDEO_HUC6202_H
+#define MAME_VIDEO_HUC6202_H
+#pragma once
#define MCFG_HUC6202_NEXT_PIXEL_0_CB(_devcb) \
@@ -54,18 +55,18 @@ public:
// construction/destruction
huc6202_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_next_pixel_0_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_next_pixel_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_time_til_next_event_0_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_time_til_next_event_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_vsync_changed_0_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_vsync_changed_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_hsync_changed_0_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_hsync_changed_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_read_0_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_read_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_write_0_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_write_0_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_next_pixel_1_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_next_pixel_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_time_til_next_event_1_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_time_til_next_event_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_vsync_changed_1_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_vsync_changed_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_hsync_changed_1_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_hsync_changed_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_read_1_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_read_1_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_write_1_callback(device_t &device, _Object object) { return downcast<huc6202_device &>(device).m_write_1_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_next_pixel_0_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_next_pixel_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_time_til_next_event_0_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_time_til_next_event_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vsync_changed_0_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_vsync_changed_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hsync_changed_0_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_hsync_changed_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_0_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_read_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_0_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_write_0_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_next_pixel_1_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_next_pixel_1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_time_til_next_event_1_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_time_til_next_event_1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vsync_changed_1_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_vsync_changed_1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hsync_changed_1_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_hsync_changed_1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_read_1_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_read_1_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_write_1_callback(device_t &device, Object &&cb) { return downcast<huc6202_device &>(device).m_write_1_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -123,7 +124,6 @@ private:
};
-extern const device_type HUC6202;
+DECLARE_DEVICE_TYPE(HUC6202, huc6202_device)
-
-#endif
+#endif // MAME_VIDEO_HUC6202_H
diff --git a/src/devices/video/huc6260.cpp b/src/devices/video/huc6260.cpp
index 1676924dee2..3b00c9f7c7f 100644
--- a/src/devices/video/huc6260.cpp
+++ b/src/devices/video/huc6260.cpp
@@ -21,13 +21,18 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-#define LOG 0
#define HUC6260_HSYNC_LENGTH 237
-#define HUC6260_HSYNC_START ( HUC6260_WPF - HUC6260_HSYNC_LENGTH )
+#define HUC6260_HSYNC_START ( huc6260_device::WPF - HUC6260_HSYNC_LENGTH )
+constexpr unsigned huc6260_device::PALETTE_SIZE;
+constexpr unsigned huc6260_device::WPF;
+constexpr unsigned huc6260_device::LPF;
+
PALETTE_INIT_MEMBER(huc6260_device, huc6260)
{
int i;
@@ -45,11 +50,11 @@ PALETTE_INIT_MEMBER(huc6260_device, huc6260)
}
-const device_type HUC6260 = device_creator<huc6260_device>;
+DEFINE_DEVICE_TYPE(HUC6260, huc6260_device, "huc6260", "Hudson HuC6260 VCE")
huc6260_device::huc6260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HUC6260, "HuC6260 VCE", tag, owner, clock, "huc6260", __FILE__),
+ : device_t(mconfig, HUC6260, tag, owner, clock),
device_video_interface(mconfig, *this),
m_next_pixel_data_cb(*this),
m_time_til_next_event_cb(*this),
@@ -83,7 +88,7 @@ void huc6260_device::device_timer(emu_timer &timer, device_timer_id id, int para
bitmap_line[ h ] = m_palette[ m_pixel_data ];
m_pixel_clock = ( m_pixel_clock + 1 ) % m_pixels_per_clock;
- h = ( h + 1 ) % HUC6260_WPF;
+ h = ( h + 1 ) % WPF;
switch( h )
{
@@ -92,7 +97,7 @@ void huc6260_device::device_timer(emu_timer &timer, device_timer_id id, int para
// if ( v == 0 )
// {
// /* Check if the screen should be resized */
-// m_height = HUC6260_LPF - ( m_blur ? 1 : 0 );
+// m_height = LPF - ( m_blur ? 1 : 0 );
// if ( m_height != video_screen_get_height( m_screen ) )
// {
// rectangle visible_area;
@@ -103,7 +108,7 @@ void huc6260_device::device_timer(emu_timer &timer, device_timer_id id, int para
// visible_area.max_x = 64 + 1024 + 64 - 1;
// visible_area.max_y = 18 + 242 - 1;
//
-// video_screen_configure( m_screen, HUC6260_WPF, m_height, &visible_area, HZ_TO_ATTOSECONDS( device->clock / ( HUC6260_WPF * m_height ) ) );
+// video_screen_configure( m_screen, WPF, m_height, &visible_area, HZ_TO_ATTOSECONDS( device->clock / ( WPF * m_height ) ) );
// }
// }
break;
@@ -160,10 +165,10 @@ void huc6260_device::device_timer(emu_timer &timer, device_timer_id id, int para
event_hpos = hpos + next_event_clocks;
event_vpos = vpos;
- while ( event_hpos > HUC6260_WPF )
+ while ( event_hpos > WPF )
{
event_vpos += 1;
- event_hpos -= HUC6260_WPF;
+ event_hpos -= WPF;
}
if ( event_vpos < v || ( event_vpos == v && event_hpos <= h ) )
@@ -256,7 +261,7 @@ WRITE8_MEMBER( huc6260_device::write )
void huc6260_device::device_start()
{
m_timer = timer_alloc();
- m_bmp = std::make_unique<bitmap_ind16>(HUC6260_WPF, HUC6260_LPF );
+ m_bmp = std::make_unique<bitmap_ind16>(WPF, LPF);
/* Resolve callbacks */
m_hsync_changed_cb.resolve();
@@ -299,7 +304,7 @@ void huc6260_device::device_reset()
}
static MACHINE_CONFIG_FRAGMENT( huc6260 )
- MCFG_PALETTE_ADD("palette", HUC6260_PALETTE_SIZE )
+ MCFG_PALETTE_ADD("palette", huc6260_device::PALETTE_SIZE)
MCFG_PALETTE_INIT_OWNER(huc6260_device, huc6260)
MACHINE_CONFIG_END
diff --git a/src/devices/video/huc6260.h b/src/devices/video/huc6260.h
index f90a7946e20..c560f3df0f1 100644
--- a/src/devices/video/huc6260.h
+++ b/src/devices/video/huc6260.h
@@ -6,17 +6,10 @@
**********************************************************************/
+#ifndef MAME_VIDEO_HUC6260_H
+#define MAME_VIDEO_HUC6260_H
-#ifndef __HUC6260_H_
-#define __HUC6260_H_
-
-
-
-#define HUC6260_PALETTE_SIZE 1024
-
-/* Screen timing stuff */
-#define HUC6260_WPF 1365 /* width of a line in frame including blanking areas */
-#define HUC6260_LPF 263 /* max number of lines in a single frame */
+#pragma once
#define MCFG_HUC6260_NEXT_PIXEL_DATA_CB(_devcb) \
@@ -36,13 +29,20 @@ class huc6260_device : public device_t,
public device_video_interface
{
public:
+ static constexpr unsigned PALETTE_SIZE = 1024;
+
+ /* Screen timing stuff */
+ static constexpr unsigned WPF = 1365; // width of a line in frame including blanking areas
+ static constexpr unsigned LPF = 263; // max number of lines in a single frame
+
+
// construction/destruction
huc6260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_next_pixel_data_callback(device_t &device, _Object object) { return downcast<huc6260_device &>(device).m_next_pixel_data_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_time_til_next_event_callback(device_t &device, _Object object) { return downcast<huc6260_device &>(device).m_time_til_next_event_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_vsync_changed_callback(device_t &device, _Object object) { return downcast<huc6260_device &>(device).m_vsync_changed_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_hsync_changed_callback(device_t &device, _Object object) { return downcast<huc6260_device &>(device).m_hsync_changed_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_next_pixel_data_callback(device_t &device, Object &&cb) { return downcast<huc6260_device &>(device).m_next_pixel_data_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_time_til_next_event_callback(device_t &device, Object &&cb) { return downcast<huc6260_device &>(device).m_time_til_next_event_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vsync_changed_callback(device_t &device, Object &&cb) { return downcast<huc6260_device &>(device).m_vsync_changed_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hsync_changed_callback(device_t &device, Object &&cb) { return downcast<huc6260_device &>(device).m_hsync_changed_cb.set_callback(std::forward<Object>(cb)); }
void video_update(bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_READ8_MEMBER( read );
@@ -91,7 +91,6 @@ private:
};
-extern const device_type HUC6260;
-
+DECLARE_DEVICE_TYPE(HUC6260, huc6260_device)
-#endif
+#endif // MAME_VIDEO_HUC6260_H
diff --git a/src/devices/video/huc6261.cpp b/src/devices/video/huc6261.cpp
index e9ca25d236d..9029b57d54f 100644
--- a/src/devices/video/huc6261.cpp
+++ b/src/devices/video/huc6261.cpp
@@ -18,18 +18,21 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-#define LOG 0
#define HUC6261_HSYNC_LENGTH 237
-#define HUC6261_HSYNC_START ( HUC6261_WPF - HUC6261_HSYNC_LENGTH )
+#define HUC6261_HSYNC_START ( huc6261_device::WPF - HUC6261_HSYNC_LENGTH )
+constexpr unsigned huc6261_device::WPF;
+constexpr unsigned huc6261_device::LPF;
-const device_type HUC6261 = device_creator<huc6261_device>;
+DEFINE_DEVICE_TYPE(HUC6261, huc6261_device, "huc6261", "Hudson HuC6261 VCE")
huc6261_device::huc6261_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HUC6261, "HuC6261", tag, owner, clock, "huc6261", __FILE__),
+ : device_t(mconfig, HUC6261, tag, owner, clock),
device_video_interface(mconfig, *this),
m_huc6270_a_tag(nullptr), m_huc6270_b_tag(nullptr), m_huc6272_tag(nullptr),
m_huc6270_a(nullptr), m_huc6270_b(nullptr), m_huc6272(nullptr),
@@ -118,7 +121,7 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para
bitmap_line[ h ] = yuv2rgb( m_palette[ m_pixel_data_b ] );
m_pixel_clock = ( m_pixel_clock + 1 ) % m_pixels_per_clock;
- h = ( h + 1 ) % HUC6261_WPF;
+ h = ( h + 1 ) % WPF;
switch( h )
{
@@ -128,7 +131,7 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para
// if ( v == 0 )
// {
// /* Check if the screen should be resized */
-// m_height = HUC6261_LPF - ( m_blur ? 1 : 0 );
+// m_height = LPF - ( m_blur ? 1 : 0 );
// if ( m_height != video_screen_get_height( m_screen ) )
// {
// rectangle visible_area;
@@ -139,7 +142,7 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para
// visible_area.max_x = 64 + 1024 + 64 - 1;
// visible_area.max_y = 18 + 242 - 1;
//
-// video_screen_configure( m_screen, HUC6261_WPF, m_height, &visible_area, HZ_TO_ATTOSECONDS( device->clock / ( HUC6261_WPF * m_height ) ) );
+// video_screen_configure( m_screen, WPF, m_height, &visible_area, HZ_TO_ATTOSECONDS( device->clock / ( WPF * m_height ) ) );
// }
// }
break;
@@ -189,7 +192,7 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para
/* Ask our slave device for time until next possible event */
{
- uint16_t next_event_clocks = HUC6261_WPF; //m_get_time_til_next_event( 0, 0xffff );
+ uint16_t next_event_clocks = WPF; //m_get_time_til_next_event( 0, 0xffff );
int event_hpos, event_vpos;
/* Adjust for pixel clocks per pixel */
@@ -200,10 +203,10 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para
event_hpos = hpos + next_event_clocks;
event_vpos = vpos;
- while ( event_hpos > HUC6261_WPF )
+ while ( event_hpos > WPF )
{
event_vpos += 1;
- event_hpos -= HUC6261_WPF;
+ event_hpos -= WPF;
}
if ( event_vpos < v || ( event_vpos == v && event_hpos <= h ) )
@@ -420,7 +423,7 @@ void huc6261_device::device_start()
m_huc6270_b = machine().device<huc6270_device>(m_huc6270_b_tag);
m_huc6272 = machine().device<huc6272_device>(m_huc6272_tag);
- m_bmp = std::make_unique<bitmap_rgb32>(HUC6261_WPF, HUC6261_LPF );
+ m_bmp = std::make_unique<bitmap_rgb32>(WPF, LPF);
/* We want to have valid devices */
assert( m_huc6270_a != nullptr );
diff --git a/src/devices/video/huc6261.h b/src/devices/video/huc6261.h
index 1e49f35dd9c..195c1e05127 100644
--- a/src/devices/video/huc6261.h
+++ b/src/devices/video/huc6261.h
@@ -6,17 +6,14 @@
**********************************************************************/
+#ifndef MAME_VIDEO_HUC6261_H
+#define MAME_VIDEO_HUC6261_H
-#ifndef __HUC6261_H_
-#define __HUC6261_H_
+#pragma once
#include "video/huc6270.h"
#include "video/huc6272.h"
-/* Screen timing stuff */
-#define HUC6261_WPF 1365 /* width of a line in frame including blanking areas */
-#define HUC6261_LPF 263 /* max number of lines in a single frame */
-
#define MCFG_HUC6261_VDC1(_tag) \
huc6261_device::set_vdc1_tag(*device, _tag);
@@ -32,6 +29,10 @@ class huc6261_device : public device_t,
public device_video_interface
{
public:
+ // Screen timing stuff
+ static constexpr unsigned WPF = 1365; // width of a line in frame including blanking areas
+ static constexpr unsigned LPF = 263; // max number of lines in a single frame
+
// construction/destruction
huc6261_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -77,12 +78,12 @@ private:
emu_timer *m_timer;
std::unique_ptr<bitmap_rgb32> m_bmp;
int32_t m_uv_lookup[65536][3];
+
inline uint32_t yuv2rgb(uint32_t yuv);
inline void apply_pal_offs(uint16_t *pix_data);
};
-extern const device_type HUC6261;
-
+DECLARE_DEVICE_TYPE(HUC6261, huc6261_device)
-#endif
+#endif // MAME_VIDEO_HUC6261_H
diff --git a/src/devices/video/huc6270.cpp b/src/devices/video/huc6270.cpp
index bf367eaa4eb..9b71192b005 100644
--- a/src/devices/video/huc6270.cpp
+++ b/src/devices/video/huc6270.cpp
@@ -54,7 +54,9 @@ TODO
#include "emu.h"
#include "huc6270.h"
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
+
enum {
MAWR = 0x00,
@@ -91,15 +93,15 @@ ALLOW_SAVE_TYPE(huc6270_device::huc6270_h_state);
#define HUC6270_CR 0x01 /* Set when sprite #0 overlaps with another sprite */
-const device_type HUC6270 = device_creator<huc6270_device>;
+DEFINE_DEVICE_TYPE(HUC6270, huc6270_device, "huc6270", "Hudson HuC6270 VDC")
-const uint8_t huc6270_device::vram_increments[4] = { 1, 32, 64, 128 };
+constexpr uint8_t huc6270_device::vram_increments[4];
huc6270_device::huc6270_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, HUC6270, "HuC6270 VDC", tag, owner, clock, "huc6270", __FILE__),
- m_vram_size(0),
- m_irq_changed_cb(*this)
+ : device_t(mconfig, HUC6270, tag, owner, clock)
+ , m_vram_size(0)
+ , m_irq_changed_cb(*this)
{
}
@@ -109,18 +111,15 @@ huc6270_device::huc6270_device(const machine_config &mconfig, const char *tag, d
*/
inline void huc6270_device::fetch_bat_tile_row()
{
- uint16_t bat_data, data1, data2, data3, data4, tile_palette;
- int i;
-
- bat_data = m_vram[ m_bat_address & m_vram_mask ];
- tile_palette = ( bat_data >> 8 ) & 0xF0;
- data1 = m_vram[ ( ( ( bat_data & 0x0FFF ) << 4 ) + m_bat_row + 0 ) & m_vram_mask ];
- data2 = ( data1 >> 7 ) & 0x1FE;
- data3 = m_vram[ ( ( ( bat_data & 0x0FFF ) << 4 ) + m_bat_row + 8 ) & m_vram_mask ];
- data4 = ( data3 >> 5 ) & 0x7F8;
+ const uint16_t bat_data = m_vram[ m_bat_address & m_vram_mask ];
+ const uint16_t tile_palette = ( bat_data >> 8 ) & 0xF0;
+ uint16_t data1 = m_vram[ ( ( ( bat_data & 0x0FFF ) << 4 ) + m_bat_row + 0 ) & m_vram_mask ];
+ uint16_t data2 = ( data1 >> 7 ) & 0x1FE;
+ uint16_t data3 = m_vram[ ( ( ( bat_data & 0x0FFF ) << 4 ) + m_bat_row + 8 ) & m_vram_mask ];
+ uint16_t data4 = ( data3 >> 5 ) & 0x7F8;
data3 <<= 2;
- for ( i = 7; i >= 0; i-- )
+ for ( int i = 7; i >= 0; i-- )
{
uint16_t c = ( data1 & 0x01 ) | ( data2 & 0x02 ) | ( data3 & 0x04 ) | ( data4 & 0x08 );
@@ -304,7 +303,7 @@ inline void huc6270_device::handle_vblank()
{
int i;
- if (LOG) logerror("SATB transfer from %05x\n", m_dvssr << 1 );
+ LOG("SATB transfer from %05x\n", m_dvssr << 1 );
for ( i = 0; i < 4 * 64; i += 4 )
{
m_sat[i + 0] = m_vram[ ( m_dvssr + i + 0 ) & m_vram_mask ] & 0x03FF;
@@ -364,7 +363,7 @@ inline void huc6270_device::next_horz_state()
{
case HUC6270_HDS:
m_bxr_latched = m_bxr;
-//if (LOG) printf("latched bxr vpos=%d, hpos=%d\n", video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()));
+ //LOG("latched bxr vpos=%d, hpos=%d\n", video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()));
m_horz_state = HUC6270_HDW;
m_horz_to_go = ( m_hdr & 0x7F ) + 1;
{
@@ -509,7 +508,7 @@ WRITE_LINE_MEMBER( huc6270_device::vsync_changed )
int desr_inc = ( m_dcr & 0x0008 ) ? -1 : +1;
int sour_inc = ( m_dcr & 0x0004 ) ? -1 : +1;
- if (LOG) logerror("doing dma sour = %04x, desr = %04x, lenr = %04x\n", m_sour, m_desr, m_lenr );
+ LOG("doing dma sour = %04x, desr = %04x, lenr = %04x\n", m_sour, m_desr, m_lenr );
do {
uint16_t data = m_vram[ m_sour & m_vram_mask ];
m_vram[ m_desr & m_vram_mask ] = data;
@@ -608,7 +607,7 @@ READ8_MEMBER( huc6270_device::read )
WRITE8_MEMBER( huc6270_device::write )
{
- if (LOG) logerror("%s: huc6270 write %02x <- %02x ", machine().describe_context(), offset, data);
+ LOG("%s: huc6270 write %02x <- %02x ", machine().describe_context(), offset, data);
switch ( offset & 3 )
{
@@ -644,18 +643,18 @@ WRITE8_MEMBER( huc6270_device::write )
// m_status |= HUC6270_RR;
// m_irq_changed_cb( ASSERT_LINE );
// }
-//if (LOG) printf("%04x: RCR (%03x) written at %d,%d\n", activecpu_get_pc(), huc6270->m_rcr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) );
+//LOG("%04x: RCR (%03x) written at %d,%d\n", activecpu_get_pc(), huc6270->m_rcr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) );
break;
case BXR: /* background x-scroll register LSB */
m_bxr = ( m_bxr & 0x0300 ) | data;
-//if (LOG) printf("*********************** BXR written %d at %d,%d\n", m_bxr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) );
+//LOG("*********************** BXR written %d at %d,%d\n", m_bxr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) );
break;
case BYR: /* background y-scroll register LSB */
m_byr = ( m_byr & 0x0100 ) | data;
m_byr_latched = m_byr;
-//if (LOG) printf("******************** BYR written %d at %d,%d\n", huc6270->m_byr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) );
+//LOG("******************** BYR written %d at %d,%d\n", huc6270->m_byr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) );
break;
case MWR: /* memory width register LSB */
@@ -795,7 +794,7 @@ WRITE8_MEMBER( huc6270_device::write )
}
break;
}
- if (LOG) logerror("\n");
+ LOG("\n");
}
diff --git a/src/devices/video/huc6270.h b/src/devices/video/huc6270.h
index a66dc703a34..8ecbbdf7c40 100644
--- a/src/devices/video/huc6270.h
+++ b/src/devices/video/huc6270.h
@@ -6,8 +6,10 @@
**********************************************************************/
-#ifndef __HUC6270_H_
-#define __HUC6270_H_
+#ifndef MAME_VIDEO_HUC6270_H
+#define MAME_VIDEO_HUC6270_H
+
+#pragma once
#define MCFG_HUC6270_VRAM_SIZE(_size) \
@@ -16,14 +18,14 @@
#define MCFG_HUC6270_IRQ_CHANGED_CB(_devcb) \
devcb = &huc6270_device::set_irq_changed_callback(*device, DEVCB_##_devcb);
-class huc6270_device : public device_t
+class huc6270_device : public device_t
{
public:
// construction/destruction
huc6270_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_vram_size(device_t &device, uint32_t vram_size) { downcast<huc6270_device &>(device).m_vram_size = vram_size; }
- template<class _Object> static devcb_base &set_irq_changed_callback(device_t &device, _Object object) { return downcast<huc6270_device &>(device).m_irq_changed_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_changed_callback(device_t &device, Object &&cb) { return downcast<huc6270_device &>(device).m_irq_changed_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -52,7 +54,6 @@ protected:
inline void next_horz_state();
private:
-
enum huc6270_v_state {
HUC6270_VSW,
HUC6270_VDS,
@@ -130,11 +131,10 @@ private:
std::unique_ptr<uint16_t[]> m_vram;
uint16_t m_vram_mask;
- const static uint8_t vram_increments[4];
+ static constexpr uint8_t vram_increments[4] = { 1, 32, 64, 128 };
};
-extern const device_type HUC6270;
-
+DECLARE_DEVICE_TYPE(HUC6270, huc6270_device)
-#endif
+#endif // MAME_VIDEO_HUC6270_H
diff --git a/src/devices/video/huc6271.cpp b/src/devices/video/huc6271.cpp
index b9379c9d6af..a17d85f9679 100644
--- a/src/devices/video/huc6271.cpp
+++ b/src/devices/video/huc6271.cpp
@@ -16,7 +16,7 @@
//**************************************************************************
// device type definition
-const device_type huc6271 = device_creator<huc6271_device>;
+DEFINE_DEVICE_TYPE(HUC6271, huc6271_device, "huc6271", "Hudson HuC6271 \"Rainbow\"")
//**************************************************************************
@@ -32,9 +32,9 @@ static ADDRESS_MAP_START( data_map, AS_DATA, 32, huc6271_device )
ADDRESS_MAP_END
huc6271_device::huc6271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, huc6271, "HuC6271 \"Rainbow\"", tag, owner, clock, "huc6271", __FILE__),
- device_memory_interface(mconfig, *this),
- m_data_space_config("data", ENDIANNESS_LITTLE, 32, 32, 0, nullptr, *ADDRESS_MAP_NAME(data_map))
+ : device_t(mconfig, HUC6271, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , m_data_space_config("data", ENDIANNESS_LITTLE, 32, 32, 0, nullptr, *ADDRESS_MAP_NAME(data_map))
{
}
diff --git a/src/devices/video/huc6271.h b/src/devices/video/huc6271.h
index 1197991160e..eba09821ff0 100644
--- a/src/devices/video/huc6271.h
+++ b/src/devices/video/huc6271.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_HUC6271_H
+#define MAME_VIDEO_HUC6271_H
-#ifndef __HUC6271DEV_H__
-#define __HUC6271DEV_H__
+#pragma once
@@ -17,8 +17,8 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_HUC6271_ADD(_tag,_freq) \
- MCFG_DEVICE_ADD(_tag, huc6271, _freq)
+#define MCFG_HUC6271_ADD(tag, freq) \
+ MCFG_DEVICE_ADD((tag), HUC6271, (freq))
//**************************************************************************
// TYPE DEFINITIONS
@@ -39,10 +39,9 @@ public:
protected:
// device-level overrides
-// virtual void device_validity_check(validity_checker &valid) const;
virtual void device_start() override;
virtual void device_reset() override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_DATA) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
private:
const address_space_config m_data_space_config;
@@ -50,14 +49,6 @@ private:
// device type definition
-extern const device_type huc6271;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(HUC6271, huc6271_device)
-#endif
+#endif // MAME_VIDEO_HUC6271_H
diff --git a/src/devices/video/huc6272.cpp b/src/devices/video/huc6272.cpp
index af38859df0e..cea9315df2d 100644
--- a/src/devices/video/huc6272.cpp
+++ b/src/devices/video/huc6272.cpp
@@ -20,7 +20,7 @@
//**************************************************************************
// device type definition
-const device_type huc6272 = device_creator<huc6272_device>;
+DEFINE_DEVICE_TYPE(HUC6272, huc6272_device, "huc6272", "Hudson HuC6272 \"King\"")
static ADDRESS_MAP_START( microprg_map, AS_PROGRAM, 16, huc6272_device )
AM_RANGE(0x00, 0x0f) AM_RAM AM_SHARE("microprg_ram")
@@ -41,7 +41,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
huc6272_device::huc6272_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, huc6272, "HuC6272 \"King\"", tag, owner, clock, "huc6272", __FILE__),
+ : device_t(mconfig, HUC6272, tag, owner, clock),
device_memory_interface(mconfig, *this),
m_program_space_config("microprg", ENDIANNESS_LITTLE, 16, 4, 0, nullptr, *ADDRESS_MAP_NAME(microprg_map)),
m_data_space_config("kram", ENDIANNESS_LITTLE, 32, 21, 0, nullptr, *ADDRESS_MAP_NAME(kram_map)),
diff --git a/src/devices/video/huc6272.h b/src/devices/video/huc6272.h
index ed903eae786..51788d08a69 100644
--- a/src/devices/video/huc6272.h
+++ b/src/devices/video/huc6272.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_HUC6272_H
+#define MAME_VIDEO_HUC6272_H
-#ifndef __huc6272DEV_H__
-#define __huc6272DEV_H__
+#pragma once
#include "bus/scsi/scsi.h"
#include "bus/scsi/scsicd.h"
@@ -20,14 +20,14 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_HUC6272_ADD(_tag,_freq) \
- MCFG_DEVICE_ADD(_tag, huc6272, _freq)
+#define MCFG_HUC6272_ADD(tag, freq) \
+ MCFG_DEVICE_ADD((tag), HUC6272, (freq))
-#define MCFG_HUC6272_IRQ_CHANGED_CB(_devcb) \
- devcb = &huc6272_device::set_irq_changed_callback(*device, DEVCB_##_devcb);
+#define MCFG_HUC6272_IRQ_CHANGED_CB(cb) \
+ devcb = &huc6272_device::set_irq_changed_callback(*device, (DEVCB_##cb));
-#define MCFG_HUC6272_RAINBOW(_tag) \
- huc6272_device::set_rainbow_tag(*device, _tag);
+#define MCFG_HUC6272_RAINBOW(tag) \
+ huc6272_device::set_rainbow_tag(*device, (tag));
//**************************************************************************
@@ -43,7 +43,7 @@ public:
// construction/destruction
huc6272_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template<class _Object> static devcb_base &set_irq_changed_callback(device_t &device, _Object object) { return downcast<huc6272_device &>(device).m_irq_changed_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_changed_callback(device_t &device, Object &&cb) { return downcast<huc6272_device &>(device).m_irq_changed_cb.set_callback(std::forward<Object>(cb)); }
static void set_rainbow_tag(device_t &device, const char *tag) { downcast<huc6272_device &>(device).m_huc6271_tag = tag; }
// I/O operations
@@ -97,7 +97,7 @@ private:
required_shared_ptr<uint16_t> m_microprg_ram;
required_shared_ptr<uint32_t> m_kram_page0;
required_shared_ptr<uint32_t> m_kram_page1;
- required_device<SCSI_PORT_DEVICE> m_scsibus;
+ required_device<scsi_port_device> m_scsibus;
required_device<input_buffer_device> m_scsi_data_in;
required_device<output_latch_device> m_scsi_data_out;
required_device<input_buffer_device> m_scsi_ctrl_in;
@@ -111,14 +111,6 @@ private:
};
// device type definition
-extern const device_type huc6272;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(HUC6272, huc6272_device)
-#endif
+#endif // MAME_VIDEO_HUC6272_H
diff --git a/src/devices/video/i8244.cpp b/src/devices/video/i8244.cpp
index bf1de11dcbb..8ca44d172a2 100644
--- a/src/devices/video/i8244.cpp
+++ b/src/devices/video/i8244.cpp
@@ -17,8 +17,8 @@
// device type definition
-const device_type I8244 = device_creator<i8244_device>;
-const device_type I8245 = device_creator<i8245_device>;
+DEFINE_DEVICE_TYPE(I8244, i8244_device, "i8244", "Intel 8244")
+DEFINE_DEVICE_TYPE(I8245, i8245_device, "i8245", "Intel 8245")
// Kevtris verified that the data below matches a dump
@@ -105,20 +105,13 @@ static const uint8_t bgr2rgb[8] =
//-------------------------------------------------
i8244_device::i8244_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, I8244, "I8244", tag, owner, clock, "i8244", __FILE__)
- , device_sound_interface(mconfig, *this)
- , device_video_interface(mconfig, *this)
- , m_irq_func(*this)
- , m_postprocess_func(*this)
- , m_start_vpos(START_Y)
- , m_start_vblank(START_Y + SCREEN_HEIGHT)
- , m_screen_lines(LINES)
+ : i8244_device(mconfig, I8244, tag, owner, clock, i8244_device::LINES)
{
}
-i8244_device::i8244_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, int lines, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+i8244_device::i8244_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int lines)
+ : device_t(mconfig, type, tag, owner, clock)
, device_sound_interface(mconfig, *this)
, device_video_interface(mconfig, *this)
, m_irq_func(*this)
@@ -131,7 +124,7 @@ i8244_device::i8244_device(const machine_config &mconfig, device_type type, cons
i8245_device::i8245_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : i8244_device(mconfig, I8245, "I8245", tag, owner, clock, i8245_device::LINES, "i8245", __FILE__)
+ : i8244_device(mconfig, I8245, tag, owner, clock, i8245_device::LINES)
{
}
diff --git a/src/devices/video/i8244.h b/src/devices/video/i8244.h
index c3e3dcfd5ee..a67652fd1e4 100644
--- a/src/devices/video/i8244.h
+++ b/src/devices/video/i8244.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_I8244_H
+#define MAME_VIDEO_I8244_H
-#ifndef __I8244_H__
-#define __I8244_H__
+#pragma once
@@ -38,38 +38,6 @@
TYPE DEFINITIONS
***************************************************************************/
-union vdc_t {
- uint8_t reg[0x100];
- struct {
- struct {
- uint8_t y,x,color,res;
- } sprites[4];
- struct {
- uint8_t y,x,ptr,color;
- } foreground[12];
- struct {
- struct {
- uint8_t y,x,ptr,color;
- } single[4];
- } quad[4];
- uint8_t shape[4][8];
- uint8_t control;
- uint8_t status;
- uint8_t collision;
- uint8_t color;
- uint8_t y;
- uint8_t x;
- uint8_t res;
- uint8_t shift1;
- uint8_t shift2;
- uint8_t shift3;
- uint8_t sound;
- uint8_t res2[5+0x10];
- uint8_t hgrid[2][0x10];
- uint8_t vgrid[0x10];
- } s;
-};
-
// ======================> i8244_device
@@ -80,12 +48,11 @@ class i8244_device : public device_t
public:
// construction/destruction
i8244_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- i8244_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, int lines, const char *shortname, const char *source);
// static configuration helpers
static void set_screen_tag(device_t &device, const char *screen_tag) { downcast<i8244_device &>(device).m_screen_tag = screen_tag; }
- template<class _Object> static devcb_base &set_irq_cb(device_t &device, _Object object) { return downcast<i8244_device &>(device).m_irq_func.set_callback(object); }
- template<class _Object> static devcb_base &set_postprocess_cb(device_t &device, _Object object) { return downcast<i8244_device &>(device).m_postprocess_func.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast<i8244_device &>(device).m_irq_func.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_postprocess_cb(device_t &device, Object &&cb) { return downcast<i8244_device &>(device).m_postprocess_func.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -98,15 +65,49 @@ public:
inline bitmap_ind16 *get_bitmap() { return &m_tmp_bitmap; }
// Global constants
- static const int START_ACTIVE_SCAN = 42;
- static const int BORDER_SIZE = 10;
- static const int END_ACTIVE_SCAN = 42 + 10 + 320 + 10;
- static const int START_Y = 1;
- static const int SCREEN_HEIGHT = 243;
- static const int LINE_CLOCKS = 455;
- static const int LINES = 262;
+ static constexpr int START_ACTIVE_SCAN = 42;
+ static constexpr int BORDER_SIZE = 10;
+ static constexpr int END_ACTIVE_SCAN = 42 + 10 + 320 + 10;
+ static constexpr int START_Y = 1;
+ static constexpr int SCREEN_HEIGHT = 243;
+ static constexpr int LINE_CLOCKS = 455;
+ static constexpr int LINES = 262;
protected:
+ union vdc_t {
+ uint8_t reg[0x100];
+ struct {
+ struct {
+ uint8_t y,x,color,res;
+ } sprites[4];
+ struct {
+ uint8_t y,x,ptr,color;
+ } foreground[12];
+ struct {
+ struct {
+ uint8_t y,x,ptr,color;
+ } single[4];
+ } quad[4];
+ uint8_t shape[4][8];
+ uint8_t control;
+ uint8_t status;
+ uint8_t collision;
+ uint8_t color;
+ uint8_t y;
+ uint8_t x;
+ uint8_t res;
+ uint8_t shift1;
+ uint8_t shift2;
+ uint8_t shift3;
+ uint8_t sound;
+ uint8_t res2[5+0x10];
+ uint8_t hgrid[2][0x10];
+ uint8_t vgrid[0x10];
+ } s;
+ };
+
+ i8244_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int lines);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -121,11 +122,11 @@ protected:
offs_t fix_register_mirrors( offs_t offset );
// Local constants
- static const uint8_t VDC_CONTROL_REG_STROBE_XY = 0x02;
+ static constexpr uint8_t VDC_CONTROL_REG_STROBE_XY = 0x02;
/* timers */
- static const device_timer_id TIMER_LINE = 0;
- static const device_timer_id TIMER_HBLANK = 1;
+ static constexpr device_timer_id TIMER_LINE = 0;
+ static constexpr device_timer_id TIMER_HBLANK = 1;
// callbacks
devcb_write_line m_irq_func;
@@ -156,13 +157,12 @@ public:
// construction/destruction
i8245_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static const int LINES = 312;
+ static constexpr int LINES = 312;
};
// device type definition
-extern const device_type I8244;
-extern const device_type I8245;
-
+DECLARE_DEVICE_TYPE(I8244, i8244_device)
+DECLARE_DEVICE_TYPE(I8245, i8245_device)
-#endif /* __I8244_H__ */
+#endif // MAME_VIDEO_I8244_H
diff --git a/src/devices/video/i82730.cpp b/src/devices/video/i82730.cpp
index 296dc0ef2d4..1137ff6b0df 100644
--- a/src/devices/video/i82730.cpp
+++ b/src/devices/video/i82730.cpp
@@ -27,9 +27,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type I82730 = device_creator<i82730_device>;
+DEFINE_DEVICE_TYPE(I82730, i82730_device, "i82730", "Intel 82730")
-const char *i82730_device::m_command_names[] =
+const char *const i82730_device::s_command_names[] =
{
/* 00 */ "NOP",
/* 01 */ "START DISPLAY",
@@ -55,7 +55,7 @@ const char *i82730_device::m_command_names[] =
//-------------------------------------------------
i82730_device::i82730_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, I82730, "I82730", tag, owner, clock, "i82730", __FILE__),
+ device_t(mconfig, I82730, tag, owner, clock),
device_video_interface(mconfig, *this),
m_sint_handler(*this),
m_cpu_tag(nullptr), m_program(nullptr),
@@ -250,8 +250,8 @@ void i82730_device::execute_command()
uint8_t command = read_byte(m_cbp + 1);
uint16_t tmp;
- if (VERBOSE_COMMANDS && command < ARRAY_LENGTH(m_command_names))
- logerror("%s('%s'): executing command: %s [cbp = %08x]\n", shortname(), basetag(), m_command_names[command], m_cbp);
+ if (VERBOSE_COMMANDS && command < ARRAY_LENGTH(s_command_names))
+ logerror("%s('%s'): executing command: %s [cbp = %08x]\n", shortname(), basetag(), s_command_names[command], m_cbp);
tmp = read_word(m_cbp + 2);
m_list_switch = BIT(tmp, 6);
@@ -303,7 +303,7 @@ void i82730_device::execute_command()
// LPEN ENABLE
case 0x07:
- fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), m_command_names[command]);
+ fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), s_command_names[command]);
break;
// READ STATUS
@@ -314,17 +314,17 @@ void i82730_device::execute_command()
// LD CUR POS
case 0x09:
- fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), m_command_names[command]);
+ fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), s_command_names[command]);
break;
// SELF TEST
case 0x0a:
- fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), m_command_names[command]);
+ fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), s_command_names[command]);
break;
// TEST ROW BUFFER
case 0x0b:
- fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), m_command_names[command]);
+ fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), s_command_names[command]);
break;
default:
diff --git a/src/devices/video/i82730.h b/src/devices/video/i82730.h
index 2e459803d93..f9de659e825 100644
--- a/src/devices/video/i82730.h
+++ b/src/devices/video/i82730.h
@@ -8,10 +8,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_I82730_H
+#define MAME_VIDEO_I82730_H
-#ifndef __I82730_H__
-#define __I82730_H__
+#pragma once
@@ -27,15 +27,13 @@
devcb = &i82730_device::set_sint_handler(*device, DEVCB_##_devcb);
#define MCFG_I82730_UPDATE_ROW_CB(_class, _method) \
- i82730_device::set_update_row_callback(*device, i82730_update_row_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ i82730_device::set_update_row_callback(*device, i82730_device::update_row_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<void (bitmap_rgb32 &bitmap, uint16_t *data, uint8_t lc, uint16_t y, int x_count)> i82730_update_row_delegate;
-
#define I82730_UPDATE_ROW(name) \
void name(bitmap_rgb32 &bitmap, uint16_t *data, uint8_t lc, uint16_t y, int x_count)
@@ -45,16 +43,18 @@ typedef device_delegate<void (bitmap_rgb32 &bitmap, uint16_t *data, uint8_t lc,
class i82730_device : public device_t, public device_video_interface
{
public:
+ typedef device_delegate<void (bitmap_rgb32 &bitmap, uint16_t *data, uint8_t lc, uint16_t y, int x_count)> update_row_delegate;
+
// construction/destruction
i82730_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template<class _Object> static devcb_base &set_sint_handler(device_t &device, _Object object)
- { return downcast<i82730_device &>(device).m_sint_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_sint_handler(device_t &device, Object &&cb)
+ { return downcast<i82730_device &>(device).m_sint_handler.set_callback(std::forward<Object>(cb)); }
// inline configuration
static void set_cpu_tag(device_t &device, device_t *owner, const char *tag);
- static void set_update_row_callback(device_t &device, i82730_update_row_delegate callback) { downcast<i82730_device &>(device).m_update_row_cb = callback; }
+ static void set_update_row_callback(device_t &device, update_row_delegate &&cb) { downcast<i82730_device &>(device).m_update_row_cb = std::move(cb); }
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -80,7 +80,7 @@ private:
VDIP = 0x100 // virtual display in progress
};
- static const char* m_command_names[];
+ static const char *const s_command_names[];
bool sysbus_16bit() { return BIT(m_sysbus, 0); }
@@ -97,7 +97,7 @@ private:
TIMER_CALLBACK_MEMBER(row_update);
devcb_write_line m_sint_handler;
- i82730_update_row_delegate m_update_row_cb;
+ update_row_delegate m_update_row_cb;
const char *m_cpu_tag;
address_space *m_program;
@@ -151,6 +151,6 @@ private:
};
// device type definition
-extern const device_type I82730;
+DECLARE_DEVICE_TYPE(I82730, i82730_device)
-#endif // __I82730_H__
+#endif // MAME_VIDEO_I82730_H
diff --git a/src/devices/video/i8275.cpp b/src/devices/video/i8275.cpp
index b2f7cfc8daf..99081d83d59 100644
--- a/src/devices/video/i8275.cpp
+++ b/src/devices/video/i8275.cpp
@@ -19,16 +19,17 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-const int DMA_BURST_SPACING[] = { 0, 7, 15, 23, 31, 39, 47, 55 };
+static const int DMA_BURST_SPACING[] = { 0, 7, 15, 23, 31, 39, 47, 55 };
#define DOUBLE_SPACED_ROWS \
@@ -82,7 +83,7 @@ const int i8275_device::character_attribute[3][16] =
//**************************************************************************
// device type definition
-const device_type I8275 = device_creator<i8275_device>;
+DEFINE_DEVICE_TYPE(I8275, i8275_device, "i8275x", "Intel 8275 CRTC")
@@ -95,7 +96,7 @@ const device_type I8275 = device_creator<i8275_device>;
//-------------------------------------------------
i8275_device::i8275_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, I8275, "I8275 CRTC", tag, owner, clock, "i8275x", __FILE__),
+ device_t(mconfig, I8275, tag, owner, clock),
device_video_interface(mconfig, *this),
m_write_irq(*this),
m_write_drq(*this),
@@ -204,24 +205,24 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param,
switch (id)
{
case TIMER_HRTC_ON:
- //if (LOG) logerror("I8275 '%s' y %u x %u HRTC 1\n", tag(), y, x);
+ //LOG("I8275 y %u x %u HRTC 1\n", y, x);
m_write_hrtc(1);
break;
case TIMER_DRQ_ON:
- //if (LOG) logerror("I8275 '%s' y %u x %u DRQ 1\n", tag(), y, x);
+ //LOG("I8275 y %u x %u DRQ 1\n", y, x);
m_write_drq(1);
break;
case TIMER_SCANLINE:
if (!(m_status & ST_VE)) break;
- //if (LOG) logerror("I8275 '%s' y %u x %u HRTC 0\n", tag(), y, x);
+ //LOG("I8275 y %u x %u HRTC 0\n", y, x);
m_write_hrtc(0);
if (m_scanline == 0)
{
- //if (LOG) logerror("I8275 '%s' y %u x %u VRTC 0\n", tag(), y, x);
+ //LOG("I8275 y %u x %u VRTC 0\n", y, x);
m_write_vrtc(0);
}
@@ -234,7 +235,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param,
m_status |= ST_DU;
m_du = true;
- //if (LOG) logerror("I8275 '%s' y %u x %u DMA Underrun\n", tag(), y, x);
+ //LOG("I8275 y %u x %u DMA Underrun\n", y, x);
m_write_drq(0);
}
@@ -259,7 +260,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param,
{
if (m_status & ST_IE)
{
- //if (LOG) logerror("I8275 '%s' y %u x %u IRQ 1\n", tag(), y, x);
+ //LOG("I8275 y %u x %u IRQ 1\n", y, x);
m_status |= ST_IR;
m_write_irq(ASSERT_LINE);
}
@@ -267,7 +268,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param,
if (m_scanline == m_vrtc_scanline)
{
- //if (LOG) logerror("I8275 '%s' y %u x %u VRTC 1\n", tag(), y, x);
+ //LOG("I8275 y %u x %u VRTC 1\n", y, x);
m_write_vrtc(1);
// reset field attributes
@@ -459,7 +460,7 @@ READ8_MEMBER( i8275_device::read )
if (m_status & ST_IR)
{
- //if (LOG) logerror("I8275 '%s' IRQ 0\n", tag());
+ //LOG("I8275 IRQ 0\n");
m_write_irq(CLEAR_LINE);
}
@@ -488,15 +489,15 @@ WRITE8_MEMBER( i8275_device::write )
{
if (offset & 0x01)
{
- if (LOG) logerror("I8275 '%s' Command %02x\n", tag(), data);
+ LOG("I8275 Command %02x\n", data);
switch (data >> 5)
{
case CMD_RESET:
- if (LOG) logerror("I8275 '%s' Reset\n", tag());
+ LOG("I8275 Reset\n");
m_status &= ~ST_IE;
- if (LOG) logerror("I8275 '%s' IRQ 0\n", tag());
+ LOG("I8275 IRQ 0\n");
m_write_irq(CLEAR_LINE);
m_write_drq(0);
@@ -505,49 +506,47 @@ WRITE8_MEMBER( i8275_device::write )
break;
case CMD_START_DISPLAY:
- {
- m_param[REG_DMA] = data;
- if (LOG) logerror("I8275 '%s' Start Display %u %u\n", tag(), DMA_BURST_COUNT, DMA_BURST_SPACE);
- m_status |= (ST_IE | ST_VE);
- }
+ m_param[REG_DMA] = data;
+ LOG("I8275 Start Display %u %u\n", DMA_BURST_COUNT, DMA_BURST_SPACE);
+ m_status |= (ST_IE | ST_VE);
break;
case CMD_STOP_DISPLAY:
- if (LOG) logerror("I8275 '%s' Stop Display\n", tag());
+ LOG("I8275 Stop Display\n");
m_status &= ~ST_VE;
break;
case CMD_READ_LIGHT_PEN:
- if (LOG) logerror("I8275 '%s' Read Light Pen\n", tag());
+ LOG("I8275 Read Light Pen\n");
m_param_idx = REG_LPEN_COL;
m_param_end = REG_LPEN_ROW;
break;
case CMD_LOAD_CURSOR:
- if (LOG) logerror("I8275 '%s' Load Cursor\n", tag());
+ LOG("I8275 Load Cursor\n");
m_param_idx = REG_CUR_COL;
m_param_end = REG_CUR_ROW;
break;
case CMD_ENABLE_INTERRUPT:
- if (LOG) logerror("I8275 '%s' Enable Interrupt\n", tag());
+ LOG("I8275 Enable Interrupt\n");
m_status |= ST_IE;
break;
case CMD_DISABLE_INTERRUPT:
- if (LOG) logerror("I8275 '%s' Disable Interrupt\n", tag());
+ LOG("I8275 Disable Interrupt\n");
m_status &= ~ST_IE;
break;
case CMD_PRESET_COUNTERS:
- if (LOG) logerror("I8275 '%s' Preset Counters\n", tag());
+ LOG("I8275 Preset Counters\n");
m_scanline = 0;
break;
}
}
else
{
- if (LOG) logerror("I8275 '%s' Parameter %02x\n", tag(), data);
+ LOG("I8275 Parameter %02x\n", data);
m_param[m_param_idx] = data;
@@ -567,7 +566,7 @@ WRITE8_MEMBER( i8275_device::write )
WRITE8_MEMBER( i8275_device::dack_w )
{
- //if (LOG) logerror("I8275 '%s' y %u x %u DACK %04x:%02x %u\n", tag(), m_screen->vpos(), m_screen->hpos(), offset, data, m_buffer_idx);
+ //LOG("I8275 y %u x %u DACK %04x:%02x %u\n", m_screen->vpos(), m_screen->hpos(), offset, data, m_buffer_idx);
m_write_drq(0);
@@ -673,7 +672,7 @@ void i8275_device::recompute_parameters()
int max_visible_x = (CHARACTERS_PER_ROW * m_hpixels_per_column) - 1;
int max_visible_y = (CHARACTER_ROWS_PER_FRAME * SCANLINES_PER_ROW) - 1;
- if (LOG) logerror("width %u height %u max_x %u max_y %u refresh %f\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
+ LOG("width %u height %u max_x %u max_y %u refresh %f\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
rectangle visarea;
visarea.set(0, max_visible_x, 0, max_visible_y);
@@ -686,7 +685,7 @@ void i8275_device::recompute_parameters()
m_vrtc_scanline = CHARACTER_ROWS_PER_FRAME * SCANLINES_PER_ROW;
m_vrtc_drq_scanline = vert_pix_total - SCANLINES_PER_ROW;
- if (LOG) logerror("irq_y %u vrtc_y %u drq_y %u\n", m_irq_scanline, m_vrtc_scanline, m_vrtc_drq_scanline);
+ LOG("irq_y %u vrtc_y %u drq_y %u\n", m_irq_scanline, m_vrtc_scanline, m_vrtc_drq_scanline);
m_scanline_timer->adjust(m_screen->time_until_pos(0, 0), 0, m_screen->scan_period());
diff --git a/src/devices/video/i8275.h b/src/devices/video/i8275.h
index affc47e1f64..edb2e43e855 100644
--- a/src/devices/video/i8275.h
+++ b/src/devices/video/i8275.h
@@ -29,10 +29,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_I8275_H
+#define MAME_VIDEO_I8275_H
-#ifndef __I8275x__
-#define __I8275x__
+#pragma once
@@ -48,7 +48,7 @@
i8275_device::static_set_character_width(*device, _value);
#define MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \
- i8275_device::static_set_display_callback(*device, i8275_draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ i8275_device::static_set_display_callback(*device, i8275_device::draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_I8275_DRQ_CALLBACK(_write) \
devcb = &i8275_device::set_drq_wr_callback(*device, DEVCB_##_write);
@@ -68,8 +68,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<void (bitmap_rgb32 &bitmap, int x, int y, uint8_t linecount, uint8_t charcode, uint8_t lineattr, uint8_t lten, uint8_t rvv, uint8_t vsp, uint8_t gpa, uint8_t hlgt)> i8275_draw_character_delegate;
-
// ======================> i8275_device
@@ -77,16 +75,18 @@ class i8275_device : public device_t,
public device_video_interface
{
public:
+ typedef device_delegate<void (bitmap_rgb32 &bitmap, int x, int y, uint8_t linecount, uint8_t charcode, uint8_t lineattr, uint8_t lten, uint8_t rvv, uint8_t vsp, uint8_t gpa, uint8_t hlgt)> draw_character_delegate;
+
// construction/destruction
i8275_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_character_width(device_t &device, int value) { downcast<i8275_device &>(device).m_hpixels_per_column = value; }
- static void static_set_display_callback(device_t &device, i8275_draw_character_delegate callback) { downcast<i8275_device &>(device).m_display_cb = callback; }
+ static void static_set_display_callback(device_t &device, draw_character_delegate &&cb) { downcast<i8275_device &>(device).m_display_cb = std::move(cb); }
- template<class _Object> static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<i8275_device &>(device).m_write_drq.set_callback(object); }
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<i8275_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_hrtc_wr_callback(device_t &device, _Object object) { return downcast<i8275_device &>(device).m_write_hrtc.set_callback(object); }
- template<class _Object> static devcb_base &set_vrtc_wr_callback(device_t &device, _Object object) { return downcast<i8275_device &>(device).m_write_vrtc.set_callback(object); }
+ template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<i8275_device &>(device).m_write_drq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<i8275_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hrtc_wr_callback(device_t &device, Object &&cb) { return downcast<i8275_device &>(device).m_write_hrtc.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vrtc_wr_callback(device_t &device, Object &&cb) { return downcast<i8275_device &>(device).m_write_vrtc.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -183,7 +183,7 @@ protected:
devcb_write_line m_write_hrtc;
devcb_write_line m_write_vrtc;
- i8275_draw_character_delegate m_display_cb;
+ draw_character_delegate m_display_cb;
int m_hpixels_per_column;
bitmap_rgb32 m_bitmap;
@@ -228,8 +228,6 @@ protected:
// device type definition
-extern const device_type I8275;
-
-
+DECLARE_DEVICE_TYPE(I8275, i8275_device)
-#endif
+#endif // MAME_VIDEO_I8275_H
diff --git a/src/devices/video/jangou_blitter.cpp b/src/devices/video/jangou_blitter.cpp
index d7d446fb813..b5e75a44eff 100644
--- a/src/devices/video/jangou_blitter.cpp
+++ b/src/devices/video/jangou_blitter.cpp
@@ -23,7 +23,7 @@
//**************************************************************************
// device type definition
-const device_type JANGOU_BLITTER = device_creator<jangou_blitter_device>;
+DEFINE_DEVICE_TYPE(JANGOU_BLITTER, jangou_blitter_device, "jangou_blitter", "Jangou Blitter Custom Chip")
//**************************************************************************
@@ -35,7 +35,7 @@ const device_type JANGOU_BLITTER = device_creator<jangou_blitter_device>;
//-------------------------------------------------
jangou_blitter_device::jangou_blitter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, JANGOU_BLITTER, "Jangou Blitter Custom Chip", tag, owner, clock, "jangou_blitter", __FILE__)
+ : device_t(mconfig, JANGOU_BLITTER, tag, owner, clock)
{
}
diff --git a/src/devices/video/jangou_blitter.h b/src/devices/video/jangou_blitter.h
index 031a0cc7ebe..5160f42850e 100644
--- a/src/devices/video/jangou_blitter.h
+++ b/src/devices/video/jangou_blitter.h
@@ -1,16 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:Angelo Salese
-/***************************************************************************
-Template for skeleton device
-
-***************************************************************************/
+#ifndef MAME_VIDEO_JANGOU_BLITTER_H
+#define MAME_VIDEO_JANGOU_BLITTER_H
#pragma once
-#ifndef __JANGOU_BLITTERDEV_H__
-#define __JANGOU_BLITTERDEV_H__
-
//**************************************************************************
@@ -39,7 +34,7 @@ public:
DECLARE_WRITE8_MEMBER( bltflip_w );
DECLARE_READ_LINE_MEMBER( status_r );
- uint8_t m_blit_buffer[256 * 256];
+ const uint8_t &blit_buffer(unsigned y, unsigned x) const { return m_blit_buffer[(256 * y) + x]; }
protected:
// device-level overrides
@@ -47,6 +42,8 @@ protected:
virtual void device_reset() override;
private:
+ uint8_t m_blit_buffer[256 * 256];
+
void plot_gfx_pixel( uint8_t pix, int x, int y );
uint8_t gfx_nibble( uint32_t niboffset );
uint8_t m_pen_data[0x10];
@@ -58,14 +55,6 @@ private:
// device type definition
-extern const device_type JANGOU_BLITTER;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(JANGOU_BLITTER, jangou_blitter_device)
-#endif
+#endif // MAME_VIDEO_JANGOU_BLITTER_H
diff --git a/src/devices/video/m50458.cpp b/src/devices/video/m50458.cpp
index b8fa3984599..1b34b718c8e 100644
--- a/src/devices/video/m50458.cpp
+++ b/src/devices/video/m50458.cpp
@@ -27,7 +27,7 @@
//**************************************************************************
// device type definition
-const device_type M50458 = device_creator<m50458_device>;
+DEFINE_DEVICE_TYPE(M50458, m50458_device, "m50458", "Mitsubishi M50458 OSD")
static ADDRESS_MAP_START( m50458_vram, AS_0, 16, m50458_device )
AM_RANGE(0x0000, 0x023f) AM_RAM // vram
@@ -174,10 +174,10 @@ inline void m50458_device::write_word(offs_t address, uint16_t data)
//-------------------------------------------------
m50458_device::m50458_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, M50458, "M50458 OSD", tag, owner, clock, "m50458", __FILE__),
- device_memory_interface(mconfig, *this),
- device_video_interface(mconfig, *this),
- m_space_config("videoram", ENDIANNESS_LITTLE, 16, 16, 0, nullptr, *ADDRESS_MAP_NAME(m50458_vram))
+ : device_t(mconfig, M50458, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , device_video_interface(mconfig, *this)
+ , m_space_config("videoram", ENDIANNESS_LITTLE, 16, 16, 0, nullptr, *ADDRESS_MAP_NAME(m50458_vram))
{
}
diff --git a/src/devices/video/m50458.h b/src/devices/video/m50458.h
index 15c8e03ff00..d4eebc4e9a8 100644
--- a/src/devices/video/m50458.h
+++ b/src/devices/video/m50458.h
@@ -6,10 +6,10 @@ Mitsubishi M50458 OSD chip
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_M50458_H
+#define MAME_VIDEO_M50458_H
-#ifndef __M50458DEV_H__
-#define __M50458DEV_H__
+#pragma once
@@ -26,12 +26,6 @@ Mitsubishi M50458 OSD chip
// TYPE DEFINITIONS
//**************************************************************************
-enum m50458_state_t
-{
- OSD_SET_ADDRESS = 0,
- OSD_SET_DATA
-};
-
// ======================> m50458_device
class m50458_device : public device_t,
@@ -59,11 +53,17 @@ public:
virtual const tiny_rom_entry *device_rom_region() const override;
protected:
+ enum m50458_state_t
+ {
+ OSD_SET_ADDRESS = 0,
+ OSD_SET_DATA
+ };
+
// device-level overrides
virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_start() override;
virtual void device_reset() override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
int m_latch;
int m_reset_line;
@@ -92,14 +92,6 @@ private:
// device type definition
-extern const device_type M50458;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(M50458, m50458_device)
-#endif
+#endif // MAME_VIDEO_M50458_H
diff --git a/src/devices/video/mb90082.cpp b/src/devices/video/mb90082.cpp
index d962d701fa4..ef668a91732 100644
--- a/src/devices/video/mb90082.cpp
+++ b/src/devices/video/mb90082.cpp
@@ -21,7 +21,7 @@
//**************************************************************************
// device type definition
-const device_type MB90082 = device_creator<mb90082_device>;
+DEFINE_DEVICE_TYPE(MB90082, mb90082_device, "mb90082", "Fujitsu MB90082 OSD")
static ADDRESS_MAP_START( mb90082_vram, AS_0, 16, mb90082_device )
AM_RANGE(0x0000, 0x023f) AM_RAM // main screen vram
@@ -86,9 +86,9 @@ inline void mb90082_device::write_word(offs_t address, uint16_t data)
//-------------------------------------------------
mb90082_device::mb90082_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MB90082, "MB90082 OSD", tag, owner, clock, "mb90082", __FILE__),
- device_memory_interface(mconfig, *this),
- m_space_config("videoram", ENDIANNESS_LITTLE, 16, 16, 0, nullptr, *ADDRESS_MAP_NAME(mb90082_vram))
+ : device_t(mconfig, MB90082, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , m_space_config("videoram", ENDIANNESS_LITTLE, 16, 16, 0, nullptr, *ADDRESS_MAP_NAME(mb90082_vram))
{
}
diff --git a/src/devices/video/mb90082.h b/src/devices/video/mb90082.h
index 493c8fc0079..9014b14a79e 100644
--- a/src/devices/video/mb90082.h
+++ b/src/devices/video/mb90082.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_MB90082DEV_H
+#define MAME_VIDEO_MB90082DEV_H
-#ifndef __MB90082DEV_H__
-#define __MB90082DEV_H__
+#pragma once
@@ -24,12 +24,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-enum
-{
- OSD_COMMAND = 0,
- OSD_DATA
-};
-
// ======================> mb90082_device
@@ -52,9 +46,15 @@ protected:
virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_start() override;
virtual void device_reset() override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
private:
+ enum
+ {
+ OSD_COMMAND = 0,
+ OSD_DATA
+ };
+
uint8_t m_cmd_ff;
uint8_t m_cmd,m_cmd_param;
uint8_t m_reset_line;
@@ -72,14 +72,6 @@ private:
// device type definition
-extern const device_type MB90082;
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-
+DECLARE_DEVICE_TYPE(MB90082, mb90082_device)
-#endif
+#endif // MAME_VIDEO_MB90082DEV_H
diff --git a/src/devices/video/mb_vcu.cpp b/src/devices/video/mb_vcu.cpp
index 39ad396f185..d149d5880a0 100644
--- a/src/devices/video/mb_vcu.cpp
+++ b/src/devices/video/mb_vcu.cpp
@@ -30,7 +30,7 @@ TODO:
//**************************************************************************
// device type definition
-const device_type MB_VCU = device_creator<mb_vcu_device>;
+DEFINE_DEVICE_TYPE(MB_VCU, mb_vcu_device, "mb_vcu", "Mazer Blazer custom VCU")
//-------------------------------------------------
// static_set_palette_tag: Set the tag of the
@@ -151,7 +151,7 @@ inline void mb_vcu_device::write_io(offs_t address, uint8_t data)
//-------------------------------------------------
mb_vcu_device::mb_vcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MB_VCU, "Mazer Blazer custom VCU", tag, owner, clock, "mb_vcu", __FILE__)
+ : device_t(mconfig, MB_VCU, tag, owner, clock)
, device_memory_interface(mconfig, *this)
, device_video_interface(mconfig, *this)
, m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 19, 0, nullptr, *ADDRESS_MAP_NAME(mb_vcu_vram))
diff --git a/src/devices/video/mb_vcu.h b/src/devices/video/mb_vcu.h
index 8c15ded23dc..4171f14b03b 100644
--- a/src/devices/video/mb_vcu.h
+++ b/src/devices/video/mb_vcu.h
@@ -1,9 +1,9 @@
// license:LGPL-2.1+
// copyright-holders:Angelo Salese
-#pragma once
+#ifndef MAME_VIDEO_MB_VCU_H
+#define MAME_VIDEO_MB_VCU_H
-#ifndef __MB_VCUDEV_H__
-#define __MB_VCUDEV_H__
+#pragma once
//**************************************************************************
@@ -45,7 +45,8 @@ protected:
virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_start() override;
virtual void device_reset() override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
+
private:
inline uint8_t read_byte(offs_t address);
inline void write_byte(offs_t address, uint8_t data);
@@ -76,7 +77,7 @@ private:
// device type definition
-extern const device_type MB_VCU;
+DECLARE_DEVICE_TYPE(MB_VCU, mb_vcu_device)
//**************************************************************************
@@ -89,4 +90,4 @@ extern const device_type MB_VCU;
#define MCFG_MB_VCU_PALETTE(_palette_tag) \
mb_vcu_device::static_set_palette_tag(*device, "^" _palette_tag);
-#endif
+#endif // MAME_VIDEO_MB_VCU_H
diff --git a/src/devices/video/mc6845.cpp b/src/devices/video/mc6845.cpp
index b5804a94f4c..4bf1c757c2e 100644
--- a/src/devices/video/mc6845.cpp
+++ b/src/devices/video/mc6845.cpp
@@ -43,23 +43,23 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-#define LOG (0)
-
-const device_type MC6845 = device_creator<mc6845_device>;
-const device_type MC6845_1 = device_creator<mc6845_1_device>;
-const device_type R6545_1 = device_creator<r6545_1_device>;
-const device_type C6545_1 = device_creator<c6545_1_device>;
-const device_type H46505 = device_creator<h46505_device>;
-const device_type HD6845 = device_creator<hd6845_device>;
-const device_type SY6545_1 = device_creator<sy6545_1_device>;
-const device_type SY6845E = device_creator<sy6845e_device>;
-const device_type HD6345 = device_creator<hd6345_device>;
-const device_type AMS40041 = device_creator<ams40041_device>;
-const device_type AMS40489 = device_creator<ams40489_device>;
-const device_type MOS8563 = device_creator<mos8563_device>;
-const device_type MOS8568 = device_creator<mos8568_device>;
+DEFINE_DEVICE_TYPE(MC6845, mc6845_device, "mc6845", "Motorola MC6845 CRTC")
+DEFINE_DEVICE_TYPE(MC6845_1, mc6845_1_device, "mc6845_1", "Motorola MC6845-1 CRTC")
+DEFINE_DEVICE_TYPE(R6545_1, r6545_1_device, "r6545_1", "Rockwell R6545-1 CRTC")
+DEFINE_DEVICE_TYPE(C6545_1, c6545_1_device, "c6545_1", "C6545-1 CRTC")
+DEFINE_DEVICE_TYPE(H46505, h46505_device, "h46505", "Hitachi HD46505 CRTC")
+DEFINE_DEVICE_TYPE(HD6845, hd6845_device, "hd6845", "Hitachi HD6845 CRTC")
+DEFINE_DEVICE_TYPE(SY6545_1, sy6545_1_device, "sy6545_1", "Synertek SY6545-1 CRTC")
+DEFINE_DEVICE_TYPE(SY6845E, sy6845e_device, "sy6845e", "Synertek SY6845E CRTC")
+DEFINE_DEVICE_TYPE(HD6345, hd6345_device, "hd6345", "Hitachi HD6345 CRTC")
+DEFINE_DEVICE_TYPE(AMS40041, ams40041_device, "ams40041", "AMS40041 CRTC")
+DEFINE_DEVICE_TYPE(AMS40489, ams40489_device, "ams40489", "AMS40489 ASIC (CRTC)")
+DEFINE_DEVICE_TYPE(MOS8563, mos8563_device, "mos8563", "MOS 8563 VDC")
+DEFINE_DEVICE_TYPE(MOS8568, mos8568_device, "mos8568", "MOS 8568 VDC")
/* mode macros */
@@ -91,8 +91,8 @@ const device_type MOS8568 = device_creator<mos8568_device>;
#define ATTR_ALTERNATE_CHARSET BIT(attr, 7)
-mc6845_device::mc6845_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+mc6845_device::mc6845_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock),
device_video_interface(mconfig, *this, false),
m_show_border_area(true),
m_interlace_adjust(0),
@@ -109,19 +109,7 @@ mc6845_device::mc6845_device(const machine_config &mconfig, device_type type, co
}
mc6845_device::mc6845_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MC6845, "MC6845 CRTC", tag, owner, clock, "mc6845", __FILE__),
- device_video_interface(mconfig, *this, false),
- m_show_border_area(true),
- m_interlace_adjust(0),
- m_visarea_adjust_min_x(0),
- m_visarea_adjust_max_x(0),
- m_visarea_adjust_min_y(0),
- m_visarea_adjust_max_y(0),
- m_hpixels_per_column(0),
- m_out_de_cb(*this),
- m_out_cur_cb(*this),
- m_out_hsync_cb(*this),
- m_out_vsync_cb(*this)
+ : mc6845_device(mconfig, MC6845, tag, owner, clock)
{
}
@@ -210,7 +198,7 @@ READ8_MEMBER( mc6845_device::register_r )
WRITE8_MEMBER( mc6845_device::register_w )
{
- if (LOG) logerror("%s:M6845 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data);
+ LOG("%s:M6845 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data);
switch (m_register_address_latch)
{
@@ -358,7 +346,7 @@ READ8_MEMBER( mos8563_device::register_r )
WRITE8_MEMBER( mos8563_device::register_w )
{
- if (LOG) logerror("%s:MOS8563 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data);
+ LOG("%s:MOS8563 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data);
switch (m_register_address_latch)
{
@@ -445,7 +433,7 @@ READ8_MEMBER( hd6345_device::register_r )
WRITE8_MEMBER( hd6345_device::register_w )
{
- if (LOG) logerror("%s:HD6345 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data);
+ LOG("%s:HD6345 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data);
switch (m_register_address_latch)
{
@@ -587,7 +575,7 @@ void mc6845_device::recompute_parameters(bool postload)
else
visarea.set(0 + m_visarea_adjust_min_x, max_visible_x + m_visarea_adjust_max_x, 0 + m_visarea_adjust_min_y, max_visible_y + m_visarea_adjust_max_y);
- if (LOG) logerror("M6845 config screen: HTOTAL: %d VTOTAL: %d MAX_X: %d MAX_Y: %d HSYNC: %d-%d VSYNC: %d-%d Freq: %ffps\n",
+ LOG("M6845 config screen: HTOTAL: %d VTOTAL: %d MAX_X: %d MAX_Y: %d HSYNC: %d-%d VSYNC: %d-%d Freq: %ffps\n",
horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, hsync_on_pos, hsync_off_pos - 1, vsync_on_pos, vsync_off_pos - 1, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
if ( m_screen != nullptr )
@@ -1049,7 +1037,7 @@ uint32_t mc6845_device::screen_update(screen_device &screen, bitmap_rgb32 &bitma
}
else
{
- if (LOG) logerror("M6845: Invalid screen parameters - display disabled!!!\n");
+ LOG("M6845: Invalid screen parameters - display disabled!!!\n");
}
return 0;
@@ -1328,7 +1316,7 @@ void mos8563_device::device_start()
m_update_ready_bit = 1;
// default update_row delegate
- m_update_row_cb = mc6845_update_row_delegate(FUNC(mos8563_device::vdc_update_row), this);
+ m_update_row_cb = update_row_delegate(FUNC(mos8563_device::vdc_update_row), this);
m_char_blink_state = false;
m_char_blink_count = 0;
@@ -1441,8 +1429,8 @@ const address_space_config *mos8563_device::memory_space_config(address_spacenum
{
switch (spacenum)
{
- case AS_0: return &m_videoram_space_config;
- default: return nullptr;
+ case AS_0: return &m_videoram_space_config;
+ default: return nullptr;
}
}
@@ -1453,66 +1441,66 @@ ADDRESS_MAP_END
r6545_1_device::r6545_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, R6545_1, "R6545-1 CRTC", tag, owner, clock, "r6545_1", __FILE__)
+ : mc6845_device(mconfig, R6545_1, tag, owner, clock)
{
}
h46505_device::h46505_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, H46505, "H46505 CRTC", tag, owner, clock, "h46505", __FILE__)
+ : mc6845_device(mconfig, H46505, tag, owner, clock)
{
}
mc6845_1_device::mc6845_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, MC6845_1, "MC6845-1 CRTC", tag, owner, clock, "mc6845_1", __FILE__)
+ : mc6845_device(mconfig, MC6845_1, tag, owner, clock)
{
}
hd6845_device::hd6845_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, HD6845, "HD6845 CRTC", tag, owner, clock, "hd6845", __FILE__)
+ : mc6845_device(mconfig, HD6845, tag, owner, clock)
{
}
c6545_1_device::c6545_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, C6545_1, "C6545-1 CRTC", tag, owner, clock, "c6545_1", __FILE__)
+ : mc6845_device(mconfig, C6545_1, tag, owner, clock)
{
}
sy6545_1_device::sy6545_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, SY6545_1, "SY6545-1 CRTC", tag, owner, clock, "sy6545_1", __FILE__)
+ : mc6845_device(mconfig, SY6545_1, tag, owner, clock)
{
}
sy6845e_device::sy6845e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, SY6845E, "SY6845E CRTC", tag, owner, clock, "sy6845e", __FILE__)
+ : mc6845_device(mconfig, SY6845E, tag, owner, clock)
{
}
hd6345_device::hd6345_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, HD6345, "HD6345 CRTC", tag, owner, clock, "hd6345", __FILE__)
+ : mc6845_device(mconfig, HD6345, tag, owner, clock)
{
}
ams40041_device::ams40041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, AMS40041, "AMS40041 CRTC", tag, owner, clock, "ams40041", __FILE__)
+ : mc6845_device(mconfig, AMS40041, tag, owner, clock)
{
}
ams40489_device::ams40489_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, AMS40489, "AMS40489 ASIC (CRTC)", tag, owner, clock, "ams40489", __FILE__)
+ : mc6845_device(mconfig, AMS40489, tag, owner, clock)
{
}
-mos8563_device::mos8563_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : mc6845_device(mconfig, type, name, tag, owner, clock, shortname, source),
+mos8563_device::mos8563_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : mc6845_device(mconfig, type, tag, owner, clock),
device_memory_interface(mconfig, *this),
m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(mos8563_videoram_map)),
m_palette(*this, "palette")
@@ -1522,17 +1510,13 @@ mos8563_device::mos8563_device(const machine_config &mconfig, device_type type,
mos8563_device::mos8563_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6845_device(mconfig, MOS8563, "MOS8563", tag, owner, clock, "mos8563", __FILE__),
- device_memory_interface(mconfig, *this),
- m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(mos8563_videoram_map)),
- m_palette(*this, "palette")
+ : mos8563_device(mconfig, MOS8563, tag, owner, clock)
{
- set_clock_scale(1.0/8);
}
mos8568_device::mos8568_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mos8563_device(mconfig, MOS8568, "MOS8568", tag, owner, clock, "mos8568", __FILE__)
+ : mos8563_device(mconfig, MOS8568, tag, owner, clock)
{
}
diff --git a/src/devices/video/mc6845.h b/src/devices/video/mc6845.h
index 5bbe24cb432..dead2602689 100644
--- a/src/devices/video/mc6845.h
+++ b/src/devices/video/mc6845.h
@@ -6,9 +6,10 @@
**********************************************************************/
-#ifndef __MC6845__
-#define __MC6845__
+#ifndef MAME_VIDEO_MC6845_H
+#define MAME_VIDEO_MC6845_H
+#pragma once
#define MCFG_MC6845_ADD(_tag, _variant, _screen_tag, _clock) \
@@ -36,19 +37,19 @@
mc6845_device::set_char_width(*device, _pixels);
#define MCFG_MC6845_RECONFIGURE_CB(_class, _method) \
- mc6845_device::set_reconfigure_callback(*device, mc6845_reconfigure_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ mc6845_device::set_reconfigure_callback(*device, mc6845_device::reconfigure_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MC6845_BEGIN_UPDATE_CB(_class, _method) \
- mc6845_device::set_begin_update_callback(*device, mc6845_begin_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ mc6845_device::set_begin_update_callback(*device, mc6845_device::begin_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MC6845_UPDATE_ROW_CB(_class, _method) \
- mc6845_device::set_update_row_callback(*device, mc6845_update_row_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ mc6845_device::set_update_row_callback(*device, mc6845_device::update_row_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MC6845_END_UPDATE_CB(_class, _method) \
- mc6845_device::set_end_update_callback(*device, mc6845_end_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ mc6845_device::set_end_update_callback(*device, mc6845_device::end_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MC6845_ADDR_CHANGED_CB(_class, _method) \
- mc6845_device::set_on_update_addr_change_callback(*device, mc6845_on_update_addr_changed_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ mc6845_device::set_on_update_addr_change_callback(*device, mc6845_device::on_update_addr_changed_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MC6845_OUT_DE_CB(_write) \
devcb = &mc6845_device::set_out_de_callback(*device, DEVCB_##_write);
@@ -64,42 +65,31 @@
/* callback definitions */
-typedef device_delegate<void (int width, int height, const rectangle &visarea, attoseconds_t frame_period)> mc6845_reconfigure_delegate;
#define MC6845_RECONFIGURE(name) void name(int width, int height, const rectangle &visarea, attoseconds_t frame_period)
-typedef device_delegate<void (bitmap_rgb32 &bitmap, const rectangle &cliprect)> mc6845_begin_update_delegate;
#define MC6845_BEGIN_UPDATE(name) void name(bitmap_rgb32 &bitmap, const rectangle &cliprect)
-typedef device_delegate<void (bitmap_rgb32 &bitmap, const rectangle &cliprect, uint16_t ma, uint8_t ra,
- uint16_t y, uint8_t x_count, int8_t cursor_x, int de, int hbp, int vbp)> mc6845_update_row_delegate;
#define MC6845_UPDATE_ROW(name) void name(bitmap_rgb32 &bitmap, const rectangle &cliprect, uint16_t ma, uint8_t ra, \
uint16_t y, uint8_t x_count, int8_t cursor_x, int de, int hbp, int vbp)
-typedef device_delegate<void (bitmap_rgb32 &bitmap, const rectangle &cliprect)> mc6845_end_update_delegate;
#define MC6845_END_UPDATE(name) void name(bitmap_rgb32 &bitmap, const rectangle &cliprect)
-typedef device_delegate<void (int address, int strobe)> mc6845_on_update_addr_changed_delegate;
#define MC6845_ON_UPDATE_ADDR_CHANGED(name) void name(int address, int strobe)
class mc6845_device : public device_t,
public device_video_interface
{
- friend class mc6845_1_device;
- friend class r6545_1_device;
- friend class c6545_1_device;
- friend class h46505_device;
- friend class hd6845_device;
- friend class sy6545_1_device;
- friend class sy6845e_device;
- friend class hd6345_device;
- friend class ams40041_device;
- friend class ams40489_device;
-
public:
+ typedef device_delegate<void (int width, int height, const rectangle &visarea, attoseconds_t frame_period)> reconfigure_delegate;
+ typedef device_delegate<void (bitmap_rgb32 &bitmap, const rectangle &cliprect)> begin_update_delegate;
+ typedef device_delegate<void (bitmap_rgb32 &bitmap, const rectangle &cliprect, uint16_t ma, uint8_t ra,
+ uint16_t y, uint8_t x_count, int8_t cursor_x, int de, int hbp, int vbp)> update_row_delegate;
+ typedef device_delegate<void (bitmap_rgb32 &bitmap, const rectangle &cliprect)> end_update_delegate;
+ typedef device_delegate<void (int address, int strobe)> on_update_addr_changed_delegate;
+
// construction/destruction
mc6845_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- mc6845_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
static void set_show_border_area(device_t &device, bool show) { downcast<mc6845_device &>(device).m_show_border_area = show; }
static void set_visarea_adjust(device_t &device, int min_x, int max_x, int min_y, int max_y)
@@ -112,16 +102,16 @@ public:
}
static void set_char_width(device_t &device, int pixels) { downcast<mc6845_device &>(device).m_hpixels_per_column = pixels; }
- static void set_reconfigure_callback(device_t &device, mc6845_reconfigure_delegate callback) { downcast<mc6845_device &>(device).m_reconfigure_cb = callback; }
- static void set_begin_update_callback(device_t &device, mc6845_begin_update_delegate callback) { downcast<mc6845_device &>(device).m_begin_update_cb = callback; }
- static void set_update_row_callback(device_t &device, mc6845_update_row_delegate callback) { downcast<mc6845_device &>(device).m_update_row_cb = callback; }
- static void set_end_update_callback(device_t &device, mc6845_end_update_delegate callback) { downcast<mc6845_device &>(device).m_end_update_cb = callback; }
- static void set_on_update_addr_change_callback(device_t &device, mc6845_on_update_addr_changed_delegate callback) { downcast<mc6845_device &>(device).m_on_update_addr_changed_cb = callback; }
+ static void set_reconfigure_callback(device_t &device, reconfigure_delegate &&cb) { downcast<mc6845_device &>(device).m_reconfigure_cb = std::move(cb); }
+ static void set_begin_update_callback(device_t &device, begin_update_delegate &&cb) { downcast<mc6845_device &>(device).m_begin_update_cb = std::move(cb); }
+ static void set_update_row_callback(device_t &device, update_row_delegate &&cb) { downcast<mc6845_device &>(device).m_update_row_cb = std::move(cb); }
+ static void set_end_update_callback(device_t &device, end_update_delegate &&cb) { downcast<mc6845_device &>(device).m_end_update_cb = std::move(cb); }
+ static void set_on_update_addr_change_callback(device_t &device, on_update_addr_changed_delegate &&cb) { downcast<mc6845_device &>(device).m_on_update_addr_changed_cb = std::move(cb); }
- template<class _Object> static devcb_base &set_out_de_callback(device_t &device, _Object object) { return downcast<mc6845_device &>(device).m_out_de_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_cur_callback(device_t &device, _Object object) { return downcast<mc6845_device &>(device).m_out_cur_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_hsync_callback(device_t &device, _Object object) { return downcast<mc6845_device &>(device).m_out_hsync_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_vsync_callback(device_t &device, _Object object) { return downcast<mc6845_device &>(device).m_out_vsync_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_de_callback(device_t &device, Object &&cb) { return downcast<mc6845_device &>(device).m_out_de_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_cur_callback(device_t &device, Object &&cb) { return downcast<mc6845_device &>(device).m_out_cur_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_hsync_callback(device_t &device, Object &&cb) { return downcast<mc6845_device &>(device).m_out_hsync_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_vsync_callback(device_t &device, Object &&cb) { return downcast<mc6845_device &>(device).m_out_vsync_cb.set_callback(std::forward<Object>(cb)); }
/* select one of the registers for reading or writing */
DECLARE_WRITE8_MEMBER( address_w );
@@ -168,6 +158,8 @@ public:
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
protected:
+ mc6845_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -290,26 +282,26 @@ protected:
int m_hpixels_per_column; /* number of pixels per video memory address */
- mc6845_reconfigure_delegate m_reconfigure_cb;
+ reconfigure_delegate m_reconfigure_cb;
/* if specified, this gets called before any pixel update,
optionally return a pointer that will be passed to the
update and tear down callbacks */
- mc6845_begin_update_delegate m_begin_update_cb;
+ begin_update_delegate m_begin_update_cb;
/* this gets called for every row, the driver must output
x_count * hpixels_per_column pixels.
cursor_x indicates the character position where the cursor is, or -1
if there is no cursor on this row */
- mc6845_update_row_delegate m_update_row_cb;
+ update_row_delegate m_update_row_cb;
/* if specified, this gets called after all row updating is complete */
- mc6845_end_update_delegate m_end_update_cb;
+ end_update_delegate m_end_update_cb;
/* Called whenever the update address changes
* For vblank/hblank timing strobe indicates the physical update.
* vblank/hblank timing not supported yet! */
- mc6845_on_update_addr_changed_delegate m_on_update_addr_changed_cb;
+ on_update_addr_changed_delegate m_on_update_addr_changed_cb;
/* if specified, this gets called for every change of the display enable pin (pin 18) */
devcb_write_line m_out_de_cb;
@@ -435,7 +427,6 @@ class mos8563_device : public mc6845_device,
public device_memory_interface
{
public:
- mos8563_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
mos8563_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
@@ -453,6 +444,8 @@ public:
MC6845_UPDATE_ROW( vdc_update_row );
protected:
+ mos8563_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void device_start() override;
@@ -507,20 +500,18 @@ protected:
};
-extern const device_type MC6845;
-extern const device_type MC6845_1;
-extern const device_type R6545_1;
-extern const device_type C6545_1;
-extern const device_type H46505;
-extern const device_type HD6845;
-extern const device_type SY6545_1;
-extern const device_type SY6845E;
-extern const device_type HD6345;
-extern const device_type AMS40041;
-extern const device_type AMS40489;
-extern const device_type MOS8563;
-extern const device_type MOS8568;
-
-
-
-#endif
+DECLARE_DEVICE_TYPE(MC6845, mc6845_device)
+DECLARE_DEVICE_TYPE(MC6845_1, mc6845_1_device)
+DECLARE_DEVICE_TYPE(R6545_1, r6545_1_device)
+DECLARE_DEVICE_TYPE(C6545_1, c6545_1_device)
+DECLARE_DEVICE_TYPE(H46505, h46505_device)
+DECLARE_DEVICE_TYPE(HD6845, hd6845_device)
+DECLARE_DEVICE_TYPE(SY6545_1, sy6545_1_device)
+DECLARE_DEVICE_TYPE(SY6845E, sy6845e_device)
+DECLARE_DEVICE_TYPE(HD6345, hd6345_device)
+DECLARE_DEVICE_TYPE(AMS40041, ams40041_device)
+DECLARE_DEVICE_TYPE(AMS40489, ams40489_device)
+DECLARE_DEVICE_TYPE(MOS8563, mos8563_device)
+DECLARE_DEVICE_TYPE(MOS8568, mos8568_device)
+
+#endif // MAME_VIDEO_MC6845_H
diff --git a/src/devices/video/mc6847.cpp b/src/devices/video/mc6847.cpp
index e3781147f60..22f6cef81a0 100644
--- a/src/devices/video/mc6847.cpp
+++ b/src/devices/video/mc6847.cpp
@@ -129,12 +129,12 @@ const uint32_t mc6847_base_device::s_palette[mc6847_base_device::PALETTE_LENGTH]
// ctor
//-------------------------------------------------
-mc6847_friend_device::mc6847_friend_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const uint8_t *fontdata, bool is_mc6847t1, double tpfs, int field_sync_falling_edge_scanline, bool supports_partial_body_scanlines, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_write_hsync(*this),
- m_write_fsync(*this),
- m_character_map(fontdata, is_mc6847t1)
+mc6847_friend_device::mc6847_friend_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock,
+ const uint8_t *fontdata, bool is_mc6847t1, double tpfs, int field_sync_falling_edge_scanline, bool supports_partial_body_scanlines)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_write_hsync(*this)
+ , m_write_fsync(*this)
+ , m_character_map(fontdata, is_mc6847t1)
{
m_tpfs = tpfs;
m_supports_partial_body_scanlines = supports_partial_body_scanlines;
@@ -154,9 +154,9 @@ inline emu_timer *mc6847_friend_device::setup_timer(device_timer_id id, double o
{
emu_timer *timer = timer_alloc(id);
timer->adjust(
- attotime::from_ticks(offset * 4, m_clock * 4),
- 0,
- attotime::from_ticks(period * 4, m_clock * 4));
+ attotime::from_ticks(offset * 4, m_clock * 4),
+ 0,
+ attotime::from_ticks(period * 4, m_clock * 4));
return timer;
}
@@ -166,7 +166,7 @@ inline emu_timer *mc6847_friend_device::setup_timer(device_timer_id id, double o
// device_start - device-specific startup
//-------------------------------------------------
-void mc6847_friend_device::device_start(void)
+void mc6847_friend_device::device_start()
{
m_write_hsync.resolve_safe();
m_write_fsync.resolve_safe();
@@ -204,7 +204,7 @@ void mc6847_friend_device::device_start(void)
// device_start - device-specific reset
//-------------------------------------------------
-void mc6847_friend_device::device_reset(void)
+void mc6847_friend_device::device_reset()
{
device_t::device_reset();
m_video_changed = true;
@@ -216,7 +216,7 @@ void mc6847_friend_device::device_reset(void)
// device_post_load - device-specific post load
//-------------------------------------------------
-void mc6847_friend_device::device_post_load(void)
+void mc6847_friend_device::device_post_load()
{
device_t::device_post_load();
m_video_changed = true;
@@ -228,7 +228,7 @@ void mc6847_friend_device::device_post_load(void)
// update_field_sync_timer
//-------------------------------------------------
-void mc6847_friend_device::update_field_sync_timer(void)
+void mc6847_friend_device::update_field_sync_timer()
{
// are we expecting field sync?
bool expected_field_sync = (m_physical_scanline < m_field_sync_falling_edge_scanline)
@@ -268,7 +268,7 @@ void mc6847_friend_device::device_timer(emu_timer &timer, device_timer_id id, in
// new_frame
//-------------------------------------------------
-inline void mc6847_friend_device::new_frame(void)
+inline void mc6847_friend_device::new_frame()
{
m_physical_scanline = 0;
m_logical_scanline = 0;
@@ -397,7 +397,7 @@ inline void mc6847_friend_device::change_field_sync(bool line)
// next_scanline
//-------------------------------------------------
-inline void mc6847_friend_device::next_scanline(void)
+inline void mc6847_friend_device::next_scanline()
{
/* advance to next scanline */
m_physical_scanline++;
@@ -464,7 +464,7 @@ void mc6847_friend_device::field_sync_changed(bool line)
// enter_bottom_border
//-------------------------------------------------
-void mc6847_friend_device::enter_bottom_border(void)
+void mc6847_friend_device::enter_bottom_border()
{
}
@@ -526,7 +526,7 @@ void mc6847_friend_device::video_flush()
// describe_context
//-------------------------------------------------
-const char *mc6847_friend_device::describe_context(void)
+const char *mc6847_friend_device::describe_context()
{
static char buffer[128];
snprintf(buffer, ARRAY_LENGTH(buffer), "%s (scanline %s:%d)",
@@ -546,8 +546,8 @@ const char *mc6847_friend_device::describe_context(void)
// ctor
//-------------------------------------------------
-mc6847_base_device::mc6847_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata, double tpfs, const char *shortname, const char *source) :
- mc6847_friend_device(mconfig, type, name, tag, owner, clock, fontdata, (type == MC6847T1_NTSC) || (type == MC6847T1_PAL), tpfs, 25+191, true, shortname, source),
+mc6847_base_device::mc6847_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata, double tpfs) :
+ mc6847_friend_device(mconfig, type, tag, owner, clock, fontdata, (type == MC6847T1_NTSC) || (type == MC6847T1_PAL), tpfs, 25+191, true),
m_input_cb(*this),
m_black_and_white(false),
m_fixed_mode(0),
@@ -1760,14 +1760,14 @@ mc6847_base_device::pixel_t mc6847_base_device::artifacter::mix_color(double fac
// VARIATIONS
//**************************************************************************
-const device_type MC6847_NTSC = device_creator<mc6847_ntsc_device>;
-const device_type MC6847_PAL = device_creator<mc6847_pal_device>;
-const device_type MC6847Y_NTSC = device_creator<mc6847y_ntsc_device>;
-const device_type MC6847Y_PAL = device_creator<mc6847y_pal_device>;
-const device_type MC6847T1_NTSC = device_creator<mc6847t1_ntsc_device>;
-const device_type MC6847T1_PAL = device_creator<mc6847t1_pal_device>;
-const device_type S68047 = device_creator<s68047_device>;
-const device_type M5C6847P1 = device_creator<m5c6847p1_device>;
+DEFINE_DEVICE_TYPE(MC6847_NTSC, mc6847_ntsc_device, "mc6847_ntsc", "Motorola MC6847 VDG (NTSC)")
+DEFINE_DEVICE_TYPE(MC6847_PAL, mc6847_pal_device, "mc6847_pal", "Motorola MC6847 VDG (PAL)")
+DEFINE_DEVICE_TYPE(MC6847Y_NTSC, mc6847y_ntsc_device, "mc6847y_ntsc", "Motorola MC6847Y VDG (NTSC)")
+DEFINE_DEVICE_TYPE(MC6847Y_PAL, mc6847y_pal_device, "mc6847y_pal", "Motorola MC6847Y VDG (PAL)")
+DEFINE_DEVICE_TYPE(MC6847T1_NTSC, mc6847t1_ntsc_device, "mc6847t1_ntsc", "Motorola MC6847T1 VDG (NTSC)")
+DEFINE_DEVICE_TYPE(MC6847T1_PAL, mc6847t1_pal_device, "mc6847t1_pal", "Motorola MC6847T1 VDG (PAL)")
+DEFINE_DEVICE_TYPE(S68047, s68047_device, "s68047", "AMI S68047")
+DEFINE_DEVICE_TYPE(M5C6847P1, m5c6847p1_device, "m5c6847p1", "Mitsubishi M5C6847P-1 VDG")
@@ -1776,7 +1776,7 @@ const device_type M5C6847P1 = device_creator<m5c6847p1_device>;
//-------------------------------------------------
mc6847_ntsc_device::mc6847_ntsc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6847_base_device(mconfig, MC6847_NTSC, "MC6847_NTSC", tag, owner, clock, ntsc_square_fontdata8x12, 262.0, "mc6847_ntsc", __FILE__)
+ : mc6847_base_device(mconfig, MC6847_NTSC, tag, owner, clock, ntsc_square_fontdata8x12, 262.0)
{
}
@@ -1787,7 +1787,7 @@ mc6847_ntsc_device::mc6847_ntsc_device(const machine_config &mconfig, const char
//-------------------------------------------------
mc6847_pal_device::mc6847_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6847_base_device(mconfig, MC6847_PAL, "MC6847_PAL", tag, owner, clock, pal_square_fontdata8x12, 313.0, "mc6847_pal", __FILE__)
+ : mc6847_base_device(mconfig, MC6847_PAL, tag, owner, clock, pal_square_fontdata8x12, 313.0)
{
}
@@ -1798,7 +1798,7 @@ mc6847_pal_device::mc6847_pal_device(const machine_config &mconfig, const char *
//-------------------------------------------------
mc6847y_ntsc_device::mc6847y_ntsc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6847_base_device(mconfig, MC6847Y_NTSC, "MC6847Y_NTSC", tag, owner, clock, ntsc_square_fontdata8x12, 262.5, "mc6847y", __FILE__)
+ : mc6847_base_device(mconfig, MC6847Y_NTSC, tag, owner, clock, ntsc_square_fontdata8x12, 262.5)
{
}
@@ -1809,7 +1809,7 @@ mc6847y_ntsc_device::mc6847y_ntsc_device(const machine_config &mconfig, const ch
//-------------------------------------------------
mc6847y_pal_device::mc6847y_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6847_base_device(mconfig, MC6847Y_PAL, "MC6847Y_PAL", tag, owner, clock, pal_square_fontdata8x12, 313.0, "mc6847y_pal", __FILE__)
+ : mc6847_base_device(mconfig, MC6847Y_PAL, tag, owner, clock, pal_square_fontdata8x12, 313.0)
{
}
@@ -1820,7 +1820,7 @@ mc6847y_pal_device::mc6847y_pal_device(const machine_config &mconfig, const char
//-------------------------------------------------
mc6847t1_ntsc_device::mc6847t1_ntsc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6847_base_device(mconfig, MC6847T1_NTSC, "MC6847T1_NTSC", tag, owner, clock, ntsc_round_fontdata8x12, 262.0, "mc6847t1_ntsc", __FILE__)
+ : mc6847_base_device(mconfig, MC6847T1_NTSC, tag, owner, clock, ntsc_round_fontdata8x12, 262.0)
{
}
@@ -1831,7 +1831,7 @@ mc6847t1_ntsc_device::mc6847t1_ntsc_device(const machine_config &mconfig, const
//-------------------------------------------------
mc6847t1_pal_device::mc6847t1_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6847_base_device(mconfig, MC6847T1_PAL, "MC6847T1_PAL", tag, owner, clock, pal_round_fontdata8x12, 313.0, "mc6847t1_pal", __FILE__)
+ : mc6847_base_device(mconfig, MC6847T1_PAL, tag, owner, clock, pal_round_fontdata8x12, 313.0)
{
}
@@ -1842,7 +1842,7 @@ mc6847t1_pal_device::mc6847t1_pal_device(const machine_config &mconfig, const ch
//-------------------------------------------------
s68047_device::s68047_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6847_base_device(mconfig, S68047, "S68047", tag, owner, clock, s68047_fontdata8x12, 262.0, "s68047", __FILE__)
+ : mc6847_base_device(mconfig, S68047, tag, owner, clock, s68047_fontdata8x12, 262.0)
{
}
@@ -1891,6 +1891,6 @@ const uint32_t s68047_device::s_s68047_hack_palette[16] =
//-------------------------------------------------
m5c6847p1_device::m5c6847p1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mc6847_base_device(mconfig, M5C6847P1, "M5C6847P-1", tag, owner, clock, ntsc_square_fontdata8x12, 262.5, "m5c6847p1", __FILE__)
+ : mc6847_base_device(mconfig, M5C6847P1, tag, owner, clock, ntsc_square_fontdata8x12, 262.5)
{
}
diff --git a/src/devices/video/mc6847.h b/src/devices/video/mc6847.h
index 100d3033877..781def31804 100644
--- a/src/devices/video/mc6847.h
+++ b/src/devices/video/mc6847.h
@@ -7,24 +7,14 @@
Implementation of Motorola 6847 video hardware chip
***************************************************************************/
-#ifndef MAME_DEVICES_VIDEO_MC6847_H
-#define MAME_DEVICES_VIDEO_MC6847_H
+#ifndef MAME_VIDEO_MC6847_H
+#define MAME_VIDEO_MC6847_H
#pragma once
#include "screen.h"
-#define MC6847_MODE_AG 0x80
-#define MC6847_MODE_GM2 0x40
-#define MC6847_MODE_GM1 0x20
-#define MC6847_MODE_GM0 0x10
-#define MC6847_MODE_CSS 0x08
-#define MC6847_MODE_AS 0x04
-#define MC6847_MODE_INTEXT 0x02
-#define MC6847_MODE_INV 0x01
-
-
//**************************************************************************
// MC6847 CONFIGURATION / INTERFACE
//**************************************************************************
@@ -52,7 +42,7 @@
devcb = &mc6847_friend_device::set_fsync_wr_callback(*device, DEVCB_##_write);
#define MCFG_MC6847_CHARROM_CALLBACK(_class, _method) \
- mc6847_friend_device::set_get_char_rom(*device, mc6847_get_char_rom_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ mc6847_friend_device::set_get_char_rom(*device, mc6847_friend_device::get_char_rom_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_MC6847_INPUT_CALLBACK(_read) \
devcb = &mc6847_base_device::set_input_callback(*device, DEVCB_##_read);
@@ -64,7 +54,6 @@
mc6847_base_device::set_black_and_white(*device, _bw);
-typedef device_delegate<uint8_t (uint8_t ch, int line)> mc6847_get_char_rom_delegate;
#define MC6847_GET_CHARROM_MEMBER(_name) uint8_t _name(uint8_t ch, int line)
@@ -81,34 +70,36 @@ INPUT_PORTS_EXTERN(mc6847_artifacting);
class mc6847_friend_device : public device_t
{
public:
+ // video mode constants
+ static constexpr uint8_t MODE_AG = 0x80;
+ static constexpr uint8_t MODE_GM2 = 0x40;
+ static constexpr uint8_t MODE_GM1 = 0x20;
+ static constexpr uint8_t MODE_GM0 = 0x10;
+ static constexpr uint8_t MODE_CSS = 0x08;
+ static constexpr uint8_t MODE_AS = 0x04;
+ static constexpr uint8_t MODE_INTEXT = 0x02;
+ static constexpr uint8_t MODE_INV = 0x01;
+
+ typedef device_delegate<uint8_t (uint8_t ch, int line)> get_char_rom_delegate;
+
// inlines
- bool hs_r(void) { return m_horizontal_sync; }
- bool fs_r(void) { return m_field_sync; }
+ bool hs_r() const { return m_horizontal_sync; }
+ bool fs_r() const { return m_field_sync; }
- template<class _Object> static devcb_base &set_hsync_wr_callback(device_t &device, _Object object) { return downcast<mc6847_friend_device &>(device).m_write_hsync.set_callback(object); }
- template<class _Object> static devcb_base &set_fsync_wr_callback(device_t &device, _Object object) { return downcast<mc6847_friend_device &>(device).m_write_fsync.set_callback(object); }
+ template <class Object> static devcb_base &set_hsync_wr_callback(device_t &device, Object &&cb) { return downcast<mc6847_friend_device &>(device).m_write_hsync.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_fsync_wr_callback(device_t &device, Object &&cb) { return downcast<mc6847_friend_device &>(device).m_write_fsync.set_callback(std::forward<Object>(cb)); }
- static void set_get_char_rom(device_t &device, mc6847_get_char_rom_delegate callback) { downcast<mc6847_friend_device &>(device).m_charrom_cb = callback; }
+ static void set_get_char_rom(device_t &device, get_char_rom_delegate &&cb) { downcast<mc6847_friend_device &>(device).m_charrom_cb = std::move(cb); }
protected:
- mc6847_friend_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,
- const uint8_t *fontdata, bool is_mc6847t1, double tpfs, int field_sync_falling_edge_scanline, bool supports_partial_body_scanlines, const char *shortname, const char *source);
-
- // video mode constants
- static const uint8_t MODE_AG = 0x80;
- static const uint8_t MODE_GM2 = 0x40;
- static const uint8_t MODE_GM1 = 0x20;
- static const uint8_t MODE_GM0 = 0x10;
- static const uint8_t MODE_CSS = 0x08;
- static const uint8_t MODE_AS = 0x04;
- static const uint8_t MODE_INTEXT = 0x02;
- static const uint8_t MODE_INV = 0x01;
+ mc6847_friend_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock,
+ const uint8_t *fontdata, bool is_mc6847t1, double tpfs, int field_sync_falling_edge_scanline, bool supports_partial_body_scanlines);
// timer constants
- static const device_timer_id TIMER_FRAME = 0;
- static const device_timer_id TIMER_HSYNC_OFF = 1;
- static const device_timer_id TIMER_HSYNC_ON = 2;
- static const device_timer_id TIMER_FSYNC = 3;
+ static constexpr device_timer_id TIMER_FRAME = 0;
+ static constexpr device_timer_id TIMER_HSYNC_OFF = 1;
+ static constexpr device_timer_id TIMER_HSYNC_ON = 2;
+ static constexpr device_timer_id TIMER_FSYNC = 3;
// fonts
static const uint8_t pal_round_fontdata8x12[];
@@ -211,7 +202,7 @@ protected:
// artifacting config
void setup_config(device_t *device);
- void poll_config(void) { m_artifacting = (m_config!=nullptr) ? m_config->read() : 0; }
+ void poll_config() { m_artifacting = (m_config!=nullptr) ? m_config->read() : 0; }
// artifacting application
template<int xscale>
@@ -275,30 +266,30 @@ protected:
/* if specified, this reads the external char rom off of the driver state */
// moved here from mc6847_base_device so to be useable in GIME
- mc6847_get_char_rom_delegate m_charrom_cb;
+ get_char_rom_delegate m_charrom_cb;
// incidentals
character_map m_character_map;
artifacter m_artifacter;
// device-level overrides
- virtual void device_start(void) override;
+ virtual void device_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual void device_reset(void) override;
- virtual void device_post_load(void) override;
+ virtual void device_reset() override;
+ virtual void device_post_load() override;
// other overridables
- virtual void new_frame(void);
+ virtual void new_frame();
virtual void horizontal_sync_changed(bool line);
virtual void field_sync_changed(bool line);
- virtual void enter_bottom_border(void);
+ virtual void enter_bottom_border();
virtual void record_border_scanline(uint16_t physical_scanline);
virtual void record_body_scanline(uint16_t physical_scanline, uint16_t logical_scanline) = 0;
virtual void record_partial_body_scanline(uint16_t physical_scanline, uint16_t logical_scanline, int32_t start_clock, int32_t end_clock) = 0;
// miscellaneous
- void video_flush(void);
- const char *describe_context(void);
+ void video_flush();
+ const char *describe_context();
// setup functions
emu_timer *setup_timer(device_timer_id id, double offset, double period);
@@ -348,7 +339,7 @@ protected:
}
// checks to see if the video has changed
- ATTR_FORCE_INLINE bool has_video_changed(void)
+ ATTR_FORCE_INLINE bool has_video_changed()
{
/* poll the artifacting config */
m_artifacter.poll_config();
@@ -410,7 +401,7 @@ protected:
// template function for emitting samples
template<int xscale>
uint32_t emit_mc6847_samples(uint8_t mode, const uint8_t *data, int length, pixel_t *RESTRICT pixels, const pixel_t *RESTRICT palette,
- mc6847_get_char_rom_delegate get_char_rom, int x, int y)
+ get_char_rom_delegate const &get_char_rom, int x, int y)
{
uint32_t result;
if (mode & MODE_AG)
@@ -505,8 +496,8 @@ private:
// functions
void change_horizontal_sync(bool line);
void change_field_sync(bool line);
- void update_field_sync_timer(void);
- void next_scanline(void);
+ void update_field_sync_timer();
+ void next_scanline();
int32_t get_clocks_since_hsync();
// debugging
@@ -517,7 +508,7 @@ private:
class mc6847_base_device : public mc6847_friend_device
{
public:
- template<class _Object> static devcb_base &set_input_callback(device_t &device, _Object object) { return downcast<mc6847_base_device &>(device).m_input_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_input_callback(device_t &device, Object &&cb) { return downcast<mc6847_base_device &>(device).m_input_cb.set_callback(std::forward<Object>(cb)); }
static void set_get_fixed_mode(device_t &device, uint8_t mode) { downcast<mc6847_base_device &>(device).m_fixed_mode = mode; }
static void set_black_and_white(device_t &device, bool bw) { downcast<mc6847_base_device &>(device).m_black_and_white = bw; }
@@ -538,7 +529,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( inv_w ) { change_mode(MODE_INV, state); }
protected:
- mc6847_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata, double tpfs, const char *shortname, const char *source);
+ mc6847_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata, double tpfs);
// device-level overrides
virtual void device_start() override;
@@ -552,7 +543,7 @@ protected:
void set_custom_palette(const pixel_t *custom_palette)
{
- if ( m_palette != m_bw_palette )
+ if (m_palette != m_bw_palette)
{
m_palette = custom_palette ? custom_palette : s_palette;
}
@@ -692,13 +683,13 @@ public:
};
-extern const device_type MC6847_NTSC;
-extern const device_type MC6847_PAL;
-extern const device_type MC6847Y_NTSC;
-extern const device_type MC6847Y_PAL;
-extern const device_type MC6847T1_NTSC;
-extern const device_type MC6847T1_PAL;
-extern const device_type S68047;
-extern const device_type M5C6847P1;
+DECLARE_DEVICE_TYPE(MC6847_NTSC, mc6847_ntsc_device)
+DECLARE_DEVICE_TYPE(MC6847_PAL, mc6847_pal_device)
+DECLARE_DEVICE_TYPE(MC6847Y_NTSC, mc6847t1_ntsc_device)
+DECLARE_DEVICE_TYPE(MC6847Y_PAL, mc6847y_pal_device)
+DECLARE_DEVICE_TYPE(MC6847T1_NTSC, mc6847t1_ntsc_device)
+DECLARE_DEVICE_TYPE(MC6847T1_PAL, mc6847t1_pal_device)
+DECLARE_DEVICE_TYPE(S68047, s68047_device)
+DECLARE_DEVICE_TYPE(M5C6847P1, m5c6847p1_device)
-#endif // MAME_DEVICES_VIDEO_MC6847_H
+#endif // MAME_VIDEO_MC6847_H
diff --git a/src/devices/video/mga2064w.cpp b/src/devices/video/mga2064w.cpp
index 3dfd13dcec1..7bc5816c942 100644
--- a/src/devices/video/mga2064w.cpp
+++ b/src/devices/video/mga2064w.cpp
@@ -3,10 +3,10 @@
#include "emu.h"
#include "mga2064w.h"
-const device_type MGA2064W = device_creator<mga2064w_device>;
+DEFINE_DEVICE_TYPE(MGA2064W, mga2064w_device, "mga2064w", "Matrox Millennium")
mga2064w_device::mga2064w_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, MGA2064W, "Matrox Millennium", tag, owner, clock, "mga2064w", __FILE__)
+ : pci_device(mconfig, MGA2064W, tag, owner, clock)
{
}
diff --git a/src/devices/video/mga2064w.h b/src/devices/video/mga2064w.h
index 844f75254d1..8da3bdb0527 100644
--- a/src/devices/video/mga2064w.h
+++ b/src/devices/video/mga2064w.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef MGA2064W_H
-#define MGA2064W_H
+#ifndef MAME_VIDEO_MGA2064W_H
+#define MAME_VIDEO_MGA2064W_H
+
+#pragma once
#include "machine/pci.h"
@@ -15,10 +17,8 @@ public:
protected:
virtual void device_start() override;
virtual void device_reset() override;
-
-private:
};
-extern const device_type MGA2064W;
+DECLARE_DEVICE_TYPE(MGA2064W, mga2064w_device);
-#endif
+#endif // MAME_VIDEO_MGA2064W_H
diff --git a/src/devices/video/mos6566.cpp b/src/devices/video/mos6566.cpp
index 17bdd0018c5..a521238515e 100644
--- a/src/devices/video/mos6566.cpp
+++ b/src/devices/video/mos6566.cpp
@@ -215,13 +215,13 @@ static const rgb_t PALETTE_MOS[] =
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type MOS6566 = device_creator<mos6566_device>;
-const device_type MOS6567 = device_creator<mos6567_device>;
-const device_type MOS8562 = device_creator<mos8562_device>;
-const device_type MOS8564 = device_creator<mos8564_device>;
-const device_type MOS6569 = device_creator<mos6569_device>;
-const device_type MOS8565 = device_creator<mos8565_device>;
-const device_type MOS8566 = device_creator<mos8566_device>;
+DEFINE_DEVICE_TYPE(MOS6566, mos6566_device, "mos6566", "MOS 6566 VIC-II")
+DEFINE_DEVICE_TYPE(MOS6567, mos6567_device, "mos6567", "MOS 6567 VIC-II")
+DEFINE_DEVICE_TYPE(MOS8562, mos8562_device, "mos8562", "MOS 8562 VIC-II")
+DEFINE_DEVICE_TYPE(MOS8564, mos8564_device, "mos8564", "MOS 8564 VIC-II")
+DEFINE_DEVICE_TYPE(MOS6569, mos6569_device, "mos6569", "MOS 6569 VIC-II")
+DEFINE_DEVICE_TYPE(MOS8565, mos8565_device, "mos8565", "MOS 8565 VIC-II")
+DEFINE_DEVICE_TYPE(MOS8566, mos8566_device, "mos8566", "MOS 8566 VIC-II")
// default address maps
@@ -576,12 +576,12 @@ inline void mos6566_device::draw_multi( uint16_t p, uint8_t c0, uint8_t c1, uint
//-------------------------------------------------
mos6566_device::mos6566_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mos6566_device(mconfig, MOS6566, "MOS6566", tag, owner, clock, TYPE_6566, "mos6566", __FILE__)
+ : mos6566_device(mconfig, MOS6566, tag, owner, clock, TYPE_6566)
{
}
-mos6566_device::mos6566_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+mos6566_device::mos6566_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : device_t(mconfig, type, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
device_execute_interface(mconfig, *this),
@@ -601,28 +601,44 @@ mos6566_device::mos6566_device(const machine_config &mconfig, device_type type,
}
mos6567_device::mos6567_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- :mos6566_device(mconfig, MOS6567, "MOS6567", tag, owner, clock, TYPE_6567, "mos6567", __FILE__) { }
+ : mos6567_device(mconfig, MOS6567, tag, owner, clock, TYPE_6567)
+{
+}
-mos6567_device::mos6567_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- :mos6566_device(mconfig, type, name, tag, owner, clock, variant, shortname, source) { }
+mos6567_device::mos6567_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : mos6566_device(mconfig, type, tag, owner, clock, variant)
+{
+}
mos8562_device::mos8562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- :mos6567_device(mconfig, MOS8562, "MOS8562", tag, owner, clock, TYPE_8562, "mos8562", __FILE__) { }
+ : mos6567_device(mconfig, MOS8562, tag, owner, clock, TYPE_8562)
+{
+}
mos8564_device::mos8564_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- :mos6567_device(mconfig, MOS8564, "MOS8564", tag, owner, clock, TYPE_8564, "mos8564", __FILE__) { }
+ : mos6567_device(mconfig, MOS8564, tag, owner, clock, TYPE_8564)
+{
+}
mos6569_device::mos6569_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- :mos6566_device(mconfig, MOS6569, "MOS6569", tag, owner, clock, TYPE_6569, "mos6569", __FILE__) { }
+ : mos6569_device(mconfig, MOS6569, tag, owner, clock, TYPE_6569)
+{
+}
-mos6569_device::mos6569_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source)
- :mos6566_device(mconfig, type, name, tag, owner, clock, variant, shortname, source) { }
+mos6569_device::mos6569_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant)
+ : mos6566_device(mconfig, type, tag, owner, clock, variant)
+{
+}
mos8565_device::mos8565_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- :mos6569_device(mconfig, MOS8565, "MOS8565", tag, owner, clock, TYPE_8565, "mos8565", __FILE__) { }
+ : mos6569_device(mconfig, MOS8565, tag, owner, clock, TYPE_8565)
+{
+}
mos8566_device::mos8566_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- :mos6569_device(mconfig, MOS8566, "MOS8566", tag, owner, clock, TYPE_8566, "mos8566", __FILE__) { }
+ : mos6569_device(mconfig, MOS8566, tag, owner, clock, TYPE_8566)
+{
+}
//-------------------------------------------------
diff --git a/src/devices/video/mos6566.h b/src/devices/video/mos6566.h
index eedd627d6f9..b045286f1cf 100644
--- a/src/devices/video/mos6566.h
+++ b/src/devices/video/mos6566.h
@@ -77,10 +77,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_MOS6566_H
+#define MAME_VIDEO_MOS6566_H
-#ifndef __MOS6566__
-#define __MOS6566__
+#pragma once
@@ -210,16 +210,15 @@ class mos6566_device : public device_t,
{
public:
// construction/destruction
- mos6566_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
mos6566_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<mos6566_device &>(device).m_cpu.set_tag(tag); }
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<mos6566_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_ba_wr_callback(device_t &device, _Object object) { return downcast<mos6566_device &>(device).m_write_ba.set_callback(object); }
- template<class _Object> static devcb_base &set_aec_wr_callback(device_t &device, _Object object) { return downcast<mos6566_device &>(device).m_write_aec.set_callback(object); }
- template<class _Object> static devcb_base &set_k_wr_callback(device_t &device, _Object object) { return downcast<mos6566_device &>(device).m_write_k.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<mos6566_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_ba_wr_callback(device_t &device, Object &&cb) { return downcast<mos6566_device &>(device).m_write_ba.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_aec_wr_callback(device_t &device, Object &&cb) { return downcast<mos6566_device &>(device).m_write_aec.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_k_wr_callback(device_t &device, Object &&cb) { return downcast<mos6566_device &>(device).m_write_k.set_callback(std::forward<Object>(cb)); }
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -250,17 +249,13 @@ protected:
TYPE_8569 // PAL-N VIC-IIe (C128)
};
+ mos6566_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void execute_run() override;
- int m_icount;
- int m_variant;
-
- const address_space_config m_videoram_space_config;
- const address_space_config m_colorram_space_config;
-
inline void set_interrupt( int mask );
inline void clear_interrupt( int mask );
inline void set_ba(int state);
@@ -286,6 +281,12 @@ protected:
void draw_graphics();
void draw_sprites();
+ int m_icount;
+ const int m_variant;
+
+ const address_space_config m_videoram_space_config;
+ const address_space_config m_colorram_space_config;
+
devcb_write_line m_write_irq;
devcb_write_line m_write_ba;
devcb_write_line m_write_aec;
@@ -374,7 +375,9 @@ class mos6567_device : public mos6566_device
public:
// construction/destruction
mos6567_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- mos6567_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
+
+protected:
+ mos6567_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
};
@@ -396,6 +399,7 @@ public:
// construction/destruction
mos8564_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
// device_execute_interface overrides
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks / 8); }
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 8); }
@@ -409,7 +413,9 @@ class mos6569_device : public mos6566_device
public:
// construction/destruction
mos6569_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- mos6569_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source);
+
+protected:
+ mos6569_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
// device-level overrides
virtual void execute_run() override;
@@ -434,6 +440,7 @@ public:
// construction/destruction
mos8566_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
// device_execute_interface overrides
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks / 8); }
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 8); }
@@ -441,14 +448,12 @@ public:
// device type definitions
-extern const device_type MOS6566;
-extern const device_type MOS6567;
-extern const device_type MOS8562;
-extern const device_type MOS8564;
-extern const device_type MOS6569;
-extern const device_type MOS8565;
-extern const device_type MOS8566;
-
-
-
-#endif
+DECLARE_DEVICE_TYPE(MOS6566, mos6566_device)
+DECLARE_DEVICE_TYPE(MOS6567, mos6567_device)
+DECLARE_DEVICE_TYPE(MOS8562, mos8562_device)
+DECLARE_DEVICE_TYPE(MOS8564, mos8564_device)
+DECLARE_DEVICE_TYPE(MOS6569, mos6569_device)
+DECLARE_DEVICE_TYPE(MOS8565, mos8565_device)
+DECLARE_DEVICE_TYPE(MOS8566, mos8566_device)
+
+#endif // MAME_VIDEO_MOS6566_H
diff --git a/src/devices/video/msm6222b.cpp b/src/devices/video/msm6222b.cpp
index 632314a49dd..1e342e04084 100644
--- a/src/devices/video/msm6222b.cpp
+++ b/src/devices/video/msm6222b.cpp
@@ -13,28 +13,29 @@
#include "emu.h"
#include "msm6222b.h"
-const device_type MSM6222B = device_creator<msm6222b_device>;
-const device_type MSM6222B_01 = device_creator<msm6222b_01_device>;
+DEFINE_DEVICE_TYPE(MSM6222B, msm6222b_device, "msm6222b", "Oki MSM6222B-xx LCD Controller")
+DEFINE_DEVICE_TYPE(MSM6222B_01, msm6222b_01_device, "msm6222b01", "Oki MSM6222B-01 LCD Controller")
ROM_START( msm6222b_01 )
ROM_REGION( 0x1000, "cgrom", 0 )
ROM_LOAD( "msm6222b-01.bin", 0x0000, 0x1000, CRC(8ffa8521) SHA1(e108b520e6d20459a7bbd5958bbfa1d551a690bd) )
ROM_END
-msm6222b_device::msm6222b_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source), cursor_direction(false), cursor_blinking(false), two_line(false), shift_on_write(false), double_height(false), cursor_on(false), display_on(false), adc(0), shift(0),
- m_cgrom(*this, finder_base::DUMMY_TAG)
+msm6222b_device::msm6222b_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
+ m_cgrom(*this, finder_base::DUMMY_TAG),
+ cursor_direction(false), cursor_blinking(false), two_line(false), shift_on_write(false), double_height(false), cursor_on(false), display_on(false), adc(0), shift(0)
{
}
msm6222b_device::msm6222b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MSM6222B, "msm6222b-xx", tag, owner, clock, "msm6222b", __FILE__), cursor_direction(false), cursor_blinking(false), two_line(false), shift_on_write(false), double_height(false), cursor_on(false), display_on(false), adc(0), shift(0),
- m_cgrom(*this, DEVICE_SELF)
+ msm6222b_device(mconfig, MSM6222B, tag, owner, clock)
{
+ m_cgrom.set_tag(DEVICE_SELF);
}
msm6222b_01_device::msm6222b_01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- msm6222b_device(mconfig, MSM6222B_01, "msm6222b-01", tag, owner, clock, "msm6222b01", __FILE__)
+ msm6222b_device(mconfig, MSM6222B_01, tag, owner, clock)
{
// load the fixed cgrom
m_cgrom.set_tag("cgrom");
diff --git a/src/devices/video/msm6222b.h b/src/devices/video/msm6222b.h
index c09bb0ee973..9cf3623e25f 100644
--- a/src/devices/video/msm6222b.h
+++ b/src/devices/video/msm6222b.h
@@ -10,8 +10,10 @@
***************************************************************************/
-#ifndef __MSM6222B_H__
-#define __MSM6222B_H__
+#ifndef MAME_VIDEO_MSM6222B_H
+#define MAME_VIDEO_MSM6222B_H
+
+#pragma once
#define MCFG_MSM6222B_ADD( _tag ) \
MCFG_DEVICE_ADD( _tag, MSM6222B, 0 )
@@ -22,7 +24,6 @@
class msm6222b_device : public device_t {
public:
msm6222b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- msm6222b_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
void control_w(uint8_t data);
uint8_t control_r();
@@ -33,20 +34,22 @@ public:
const uint8_t *render();
protected:
+ msm6222b_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
+ optional_region_ptr<uint8_t> m_cgrom;
+
+ void cursor_step(bool direction);
+ void shift_step(bool direction);
+ bool blink_on() const;
+
private:
uint8_t cgram[8*8];
uint8_t ddram[80];
uint8_t render_buf[80*16];
bool cursor_direction, cursor_blinking, two_line, shift_on_write, double_height, cursor_on, display_on;
uint8_t adc, shift;
-protected:
- optional_region_ptr<uint8_t> m_cgrom;
-
- void cursor_step(bool direction);
- void shift_step(bool direction);
- bool blink_on() const;
};
class msm6222b_01_device : public msm6222b_device {
@@ -57,7 +60,7 @@ protected:
virtual const tiny_rom_entry *device_rom_region() const override;
};
-extern const device_type MSM6222B;
-extern const device_type MSM6222B_01;
+DECLARE_DEVICE_TYPE(MSM6222B, msm6222b_device)
+DECLARE_DEVICE_TYPE(MSM6222B_01, msm6222b_01_device)
-#endif
+#endif // MAME_VIDEO_MSM6222B_H
diff --git a/src/devices/video/msm6255.cpp b/src/devices/video/msm6255.cpp
index 516dd8a0f12..d7ee5ce7903 100644
--- a/src/devices/video/msm6255.cpp
+++ b/src/devices/video/msm6255.cpp
@@ -9,15 +9,14 @@
#include "emu.h"
#include "msm6255.h"
+//#define VERBOSE 1
+#include "logmacro.h"
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
#define MOR_GRAPHICS 0x01
#define MOR_4_BIT_PARALLEL 0x02
#define MOR_2_BIT_PARALLEL 0x04
@@ -52,7 +51,7 @@
//**************************************************************************
// device type definition
-const device_type MSM6255 = device_creator<msm6255_device>;
+DEFINE_DEVICE_TYPE(MSM6255, msm6255_device, "msm6255", "Oki MSM6255 LCD Controller")
// I/O map
DEVICE_ADDRESS_MAP_START( map, 8, msm6255_device )
@@ -76,7 +75,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
msm6255_device::msm6255_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, MSM6255, "MSM6255", tag, owner, clock, "msm6255", __FILE__),
+ device_t(mconfig, MSM6255, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_space_config("videoram", ENDIANNESS_LITTLE, 8, 20, 0, nullptr, *ADDRESS_MAP_NAME(msm6255)),
diff --git a/src/devices/video/msm6255.h b/src/devices/video/msm6255.h
index 45e43d24b20..8028d69f86c 100644
--- a/src/devices/video/msm6255.h
+++ b/src/devices/video/msm6255.h
@@ -6,11 +6,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __MSM6255__
-#define __MSM6255__
+#ifndef MAME_VIDEO_MSM6255_H
+#define MAME_VIDEO_MSM6255_H
+#pragma once
@@ -44,7 +43,7 @@ protected:
virtual void device_reset() override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
private:
// registers
@@ -87,8 +86,6 @@ private:
// device type definition
-extern const device_type MSM6255;
-
-
+DECLARE_DEVICE_TYPE(MSM6255, msm6255_device)
-#endif
+#endif // MAME_VIDEO_MSM6255_H
diff --git a/src/devices/video/pc_vga.cpp b/src/devices/video/pc_vga.cpp
index b6869a63b59..076f93aeb7e 100644
--- a/src/devices/video/pc_vga.cpp
+++ b/src/devices/video/pc_vga.cpp
@@ -121,78 +121,78 @@ enum
***************************************************************************/
// device type definition
-const device_type VGA = device_creator<vga_device>;
-const device_type TSENG_VGA = device_creator<tseng_vga_device>;
-const device_type S3_VGA = device_creator<s3_vga_device>;
-const device_type GAMTOR_VGA = device_creator<gamtor_vga_device>;
-const device_type ATI_VGA = device_creator<ati_vga_device>;
-const device_type IBM8514A = device_creator<ibm8514a_device>;
-const device_type MACH8 = device_creator<mach8_device>;
-
-vga_device::vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+DEFINE_DEVICE_TYPE(VGA, vga_device, "vga", "VGA")
+DEFINE_DEVICE_TYPE(TSENG_VGA, tseng_vga_device, "tseng_vga", "Tseng Labs VGA")
+DEFINE_DEVICE_TYPE(S3_VGA, s3_vga_device, "s3_vga", "S3 Graphics VGA")
+DEFINE_DEVICE_TYPE(GAMTOR_VGA, gamtor_vga_device, "gamtor_vga", "GAMTOR VGA")
+DEFINE_DEVICE_TYPE(ATI_VGA, ati_vga_device, "ati_vga", "ATi VGA")
+DEFINE_DEVICE_TYPE(IBM8514A, ibm8514a_device, "ibm8514a", "IBM 8514/A Video")
+DEFINE_DEVICE_TYPE(MACH8, mach8_device, "mach8", "Mach8")
+
+vga_device::vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, m_palette(*this, "^palette")
, m_screen(*this,"^screen")
{
}
vga_device::vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : vga_device(mconfig, VGA, "VGA", tag, owner, clock, "vga", __FILE__)
+ : vga_device(mconfig, VGA, tag, owner, clock)
{
}
-svga_device::svga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : vga_device(mconfig, type, name, tag, owner, clock, shortname, source)
+svga_device::svga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : vga_device(mconfig, type, tag, owner, clock)
{
}
tseng_vga_device::tseng_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : svga_device(mconfig, TSENG_VGA, "TSENG LABS VGA", tag, owner, clock, "tseng_vga", __FILE__)
+ : svga_device(mconfig, TSENG_VGA, tag, owner, clock)
{
}
s3_vga_device::s3_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : s3_vga_device(mconfig, S3_VGA, "S3 Graphics VGA", tag, owner, clock, "s3_vga", __FILE__)
+ : s3_vga_device(mconfig, S3_VGA, tag, owner, clock)
{
}
-s3_vga_device::s3_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : ati_vga_device(mconfig, type, name, tag, owner, clock, shortname, source)
+s3_vga_device::s3_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : ati_vga_device(mconfig, type, tag, owner, clock)
{
}
gamtor_vga_device::gamtor_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : svga_device(mconfig, GAMTOR_VGA, "GAMTOR VGA", tag, owner, clock, "gamtor_vga", __FILE__)
+ : svga_device(mconfig, GAMTOR_VGA, tag, owner, clock)
{
}
ati_vga_device::ati_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ati_vga_device(mconfig, ATI_VGA, "ATI VGA", tag, owner, clock, "ati_vga", __FILE__)
+ : ati_vga_device(mconfig, ATI_VGA, tag, owner, clock)
{
}
-ati_vga_device::ati_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : svga_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ati_vga_device::ati_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : svga_device(mconfig, type, tag, owner, clock)
{
}
ibm8514a_device::ibm8514a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : ibm8514a_device(mconfig, IBM8514A, "IBM8514A Video", tag, owner, clock, "ibm8514a", __FILE__)
+ : ibm8514a_device(mconfig, IBM8514A, tag, owner, clock)
{
}
-ibm8514a_device::ibm8514a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ibm8514a_device::ibm8514a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
{
}
-mach8_device::mach8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : ibm8514a_device(mconfig, type, name, tag, owner, clock, shortname, source)
+mach8_device::mach8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : ibm8514a_device(mconfig, type, tag, owner, clock)
{
}
mach8_device::mach8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : mach8_device(mconfig, MACH8, "MACH8", tag, owner, clock, "mach8", __FILE__)
+ : mach8_device(mconfig, MACH8, tag, owner, clock)
{
}
diff --git a/src/devices/video/pc_vga.h b/src/devices/video/pc_vga.h
index dbfad026886..1107282b8c2 100644
--- a/src/devices/video/pc_vga.h
+++ b/src/devices/video/pc_vga.h
@@ -8,8 +8,8 @@
***************************************************************************/
-#ifndef MAME_DEVICES_VIDEO_PC_VGA_H
-#define MAME_DEVICES_VIDEO_PC_VGA_H
+#ifndef MAME_VIDEO_PC_VGA_H
+#define MAME_VIDEO_PC_VGA_H
#include "screen.h"
@@ -18,21 +18,6 @@ MACHINE_CONFIG_EXTERN( pcvideo_trident_vga );
MACHINE_CONFIG_EXTERN( pcvideo_gamtor_vga );
MACHINE_CONFIG_EXTERN( pcvideo_s3_vga );
-enum
-{
- SCREEN_OFF = 0,
- TEXT_MODE,
- VGA_MODE,
- EGA_MODE,
- CGA_MODE,
- MONO_MODE,
- RGB8_MODE,
- RGB15_MODE,
- RGB16_MODE,
- RGB24_MODE,
- RGB32_MODE
-};
-
// ======================> vga_device
class vga_device : public device_t
@@ -59,7 +44,22 @@ public:
virtual TIMER_CALLBACK_MEMBER(vblank_timer_cb);
protected:
- vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ enum
+ {
+ SCREEN_OFF = 0,
+ TEXT_MODE,
+ VGA_MODE,
+ EGA_MODE,
+ CGA_MODE,
+ MONO_MODE,
+ RGB8_MODE,
+ RGB15_MODE,
+ RGB16_MODE,
+ RGB24_MODE,
+ RGB32_MODE
+ };
+
+ vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -89,20 +89,20 @@ protected:
{
uint8_t res = 0;
- switch(vga.gc.logical_op & 3)
+ switch (vga.gc.logical_op & 3)
{
- case 0: /* NONE */
- res = (data & mask) | (vga.gc.latch[plane] & ~mask);
- break;
- case 1: /* AND */
- res = (data | ~mask) & (vga.gc.latch[plane]);
- break;
- case 2: /* OR */
- res = (data & mask) | (vga.gc.latch[plane]);
- break;
- case 3: /* XOR */
- res = (data & mask) ^ (vga.gc.latch[plane]);
- break;
+ case 0: /* NONE */
+ res = (data & mask) | (vga.gc.latch[plane] & ~mask);
+ break;
+ case 1: /* AND */
+ res = (data | ~mask) & (vga.gc.latch[plane]);
+ break;
+ case 2: /* OR */
+ res = (data & mask) | (vga.gc.latch[plane]);
+ break;
+ case 3: /* XOR */
+ res = (data & mask) ^ (vga.gc.latch[plane]);
+ break;
}
return res;
@@ -238,7 +238,7 @@ protected:
// device type definition
-extern const device_type VGA;
+DECLARE_DEVICE_TYPE(VGA, vga_device)
// ======================> svga_device
@@ -250,7 +250,7 @@ public:
protected:
// construction/destruction
- svga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ svga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
void svga_vh_rgb8(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void svga_vh_rgb15(bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -380,8 +380,9 @@ public:
uint8_t wait_vector_count;
} ibm8514;
+
protected:
- ibm8514a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ ibm8514a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_config_complete() override;
@@ -402,7 +403,7 @@ private:
};
// device type definition
-extern const device_type IBM8514A;
+DECLARE_DEVICE_TYPE(IBM8514A, ibm8514a_device)
#define MCFG_8514A_ADD(_tag, _param) \
MCFG_DEVICE_ADD(_tag, IBM8514A, 0) \
@@ -413,7 +414,7 @@ extern const device_type IBM8514A;
downcast<ibm8514a_device*>(device)->set_vga_owner();
-class mach8_device : public ibm8514a_device
+class mach8_device : public ibm8514a_device
{
public:
mach8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -445,7 +446,7 @@ public:
READ16_MEMBER(mach8_clksel_r) { return mach8.clksel; }
protected:
- mach8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ mach8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
struct
{
@@ -457,7 +458,7 @@ protected:
};
// device type definition
-extern const device_type MACH8;
+DECLARE_DEVICE_TYPE(MACH8, mach8_device)
#define MCFG_MACH8_ADD(_tag, _param) \
MCFG_DEVICE_ADD(_tag, MACH8, 0) \
@@ -511,12 +512,12 @@ private:
// device type definition
-extern const device_type TSENG_VGA;
+DECLARE_DEVICE_TYPE(TSENG_VGA, tseng_vga_device)
// ======================> ati_vga_device
-class ati_vga_device : public svga_device
+class ati_vga_device : public svga_device
{
public:
// construction/destruction
@@ -535,7 +536,7 @@ public:
mach8_device* get_8514() { return m_8514; }
protected:
- ati_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ ati_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
private:
void ati_define_video_mode();
@@ -549,7 +550,7 @@ private:
};
// device type definition
-extern const device_type ATI_VGA;
+DECLARE_DEVICE_TYPE(ATI_VGA, ati_vga_device)
// ======================> s3_vga_device
@@ -577,7 +578,7 @@ public:
ibm8514a_device* get_8514() { return m_8514; }
protected:
- s3_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ s3_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -640,7 +641,7 @@ private:
};
// device type definition
-extern const device_type S3_VGA;
+DECLARE_DEVICE_TYPE(S3_VGA, s3_vga_device)
// ======================> gamtor_vga_device
@@ -663,7 +664,7 @@ public:
// device type definition
-extern const device_type GAMTOR_VGA;
+DECLARE_DEVICE_TYPE(GAMTOR_VGA, gamtor_vga_device)
/*
pega notes (paradise)
@@ -706,4 +707,4 @@ extern const device_type GAMTOR_VGA;
*/
-#endif /* MAME_DEVICES_VIDEO_PC_VGA_H */
+#endif // MAME_VIDEO_PC_VGA_H
diff --git a/src/devices/video/pcd8544.cpp b/src/devices/video/pcd8544.cpp
index 89ce964d6c0..0cca6742b05 100644
--- a/src/devices/video/pcd8544.cpp
+++ b/src/devices/video/pcd8544.cpp
@@ -11,14 +11,15 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-#define LOG 0
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type PCD8544 = device_creator<pcd8544_device>;
+DEFINE_DEVICE_TYPE(PCD8544, pcd8544_device, "pcd8544_device", "Philips PCD8544 LCD Controller")
//**************************************************************************
@@ -30,7 +31,7 @@ const device_type PCD8544 = device_creator<pcd8544_device>;
//-------------------------------------------------
pcd8544_device::pcd8544_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, PCD8544, "PCD8544", tag, owner, clock, "pcd8544", __FILE__)
+ device_t(mconfig, PCD8544, tag, owner, clock)
{
}
@@ -85,7 +86,7 @@ void pcd8544_device::exec_command(uint8_t cmd)
if(cmd & 0x80)
{
m_op_vol = cmd & 0x7f;
- if (LOG) logerror("PCD8544: set Vop %d\n", m_op_vol);
+ LOG("PCD8544: set Vop %d\n", m_op_vol);
}
else if(cmd & 0x40)
{
@@ -94,12 +95,12 @@ void pcd8544_device::exec_command(uint8_t cmd)
else if(cmd & 0x20)
{
m_mode = cmd & 0x07;
- if (LOG) logerror("PCD8544: set PD=%d V=%d H=%d\n", BIT(m_mode, 2), BIT(m_mode, 1), BIT(m_mode, 0));
+ LOG("PCD8544: set PD=%d V=%d H=%d\n", BIT(m_mode, 2), BIT(m_mode, 1), BIT(m_mode, 0));
}
else if(cmd & 0x10)
{
m_bias = cmd & 0x07;
- if (LOG) logerror("PCD8544: set bias system %d\n", m_bias);
+ LOG("PCD8544: set bias system %d\n", m_bias);
}
else if(cmd & 0x08)
{
@@ -108,7 +109,7 @@ void pcd8544_device::exec_command(uint8_t cmd)
else if(cmd & 0x04)
{
m_temp_coef = cmd & 0x03;
- if (LOG) logerror("PCD8544: set temperature coefficient %d\n", m_temp_coef);
+ LOG("PCD8544: set temperature coefficient %d\n", m_temp_coef);
}
else if (cmd)
{
@@ -120,17 +121,17 @@ void pcd8544_device::exec_command(uint8_t cmd)
if(cmd & 0x80)
{
m_addr_x = (cmd & 0x7f) % 84;
- if (LOG) logerror("PCD8544: set X-address %d\n", cmd & 0x7f);
+ LOG("PCD8544: set X-address %d\n", cmd & 0x7f);
}
else if(cmd & 0x40)
{
m_addr_y = (cmd & 0x07) % 6;
- if (LOG) logerror("PCD8544: set Y-address %d\n", cmd & 0x07);
+ LOG("PCD8544: set Y-address %d\n", cmd & 0x07);
}
else if(cmd & 0x20)
{
m_mode = cmd & 0x07;
- if (LOG) logerror("PCD8544: set PD=%d V=%d H=%d\n", BIT(m_mode, 2), BIT(m_mode, 1), BIT(m_mode, 0));
+ LOG("PCD8544: set PD=%d V=%d H=%d\n", BIT(m_mode, 2), BIT(m_mode, 1), BIT(m_mode, 0));
}
else if(cmd & 0x10)
{
@@ -139,7 +140,7 @@ void pcd8544_device::exec_command(uint8_t cmd)
else if(cmd & 0x08)
{
m_control = ((cmd & 0x04) >> 1) | (cmd & 0x01);
- if (LOG) logerror("PCD8544: set D=%d E=%d\n", BIT(m_control, 1), BIT(m_control, 0));
+ LOG("PCD8544: set D=%d E=%d\n", BIT(m_control, 1), BIT(m_control, 0));
}
else if (cmd)
{
diff --git a/src/devices/video/pcd8544.h b/src/devices/video/pcd8544.h
index e8066f6eb65..8a5c71e6e95 100644
--- a/src/devices/video/pcd8544.h
+++ b/src/devices/video/pcd8544.h
@@ -6,24 +6,23 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_PCD8544_H
+#define MAME_VIDEO_PCD8544_H
-#ifndef __PCD8544_H__
-#define __PCD8544_H__
+#pragma once
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<void (device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect , uint8_t *vram, int inv)> pcd8544_screen_update_delegate;
#define PCD8544_SCREEN_UPDATE(name) void name(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect , uint8_t *vram, int inv)
#define MCFG_PCD8544_ADD( _tag ) \
MCFG_DEVICE_ADD( _tag, PCD8544, 0 )
#define MCFG_PCD8544_SCREEN_UPDATE_CALLBACK(_class, _method) \
- pcd8544_device::static_set_screen_update_cb(*device, pcd8544_screen_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ pcd8544_device::static_set_screen_update_cb(*device, pcd8544_device::screen_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
// ======================> pcd8544_device
@@ -31,9 +30,11 @@ typedef device_delegate<void (device_t &device, bitmap_ind16 &bitmap, const rect
class pcd8544_device : public device_t
{
public:
+ typedef device_delegate<void (device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect , uint8_t *vram, int inv)> screen_update_delegate;
+
// construction/destruction
pcd8544_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_screen_update_cb(device_t &device, pcd8544_screen_update_delegate _cb) { downcast<pcd8544_device &>(device).m_screen_update_cb = _cb; }
+ static void static_set_screen_update_cb(device_t &device, screen_update_delegate &&cb) { downcast<pcd8544_device &>(device).m_screen_update_cb = std::move(cb); }
// device interface
DECLARE_WRITE_LINE_MEMBER(sdin_w);
@@ -50,7 +51,7 @@ protected:
void write_data(uint8_t data);
private:
- pcd8544_screen_update_delegate m_screen_update_cb; // screen update callback
+ screen_update_delegate m_screen_update_cb; // screen update callback
int m_sdin;
int m_sclk;
int m_dc;
@@ -67,6 +68,6 @@ private:
};
// device type definition
-extern const device_type PCD8544;
+DECLARE_DEVICE_TYPE(PCD8544, pcd8544_device)
-#endif
+#endif // MAME_VIDEO_PCD8544_H
diff --git a/src/devices/video/poly.h b/src/devices/video/poly.h
index a8b606bc08e..2c88c29a47f 100644
--- a/src/devices/video/poly.h
+++ b/src/devices/video/poly.h
@@ -32,8 +32,8 @@
***************************************************************************/
-#ifndef MAME_DEVICES_VIDEO_POLY_H
-#define MAME_DEVICES_VIDEO_POLY_H
+#ifndef MAME_VIDEO_POLY_H
+#define MAME_VIDEO_POLY_H
#pragma once
@@ -50,56 +50,21 @@
// keep statistics
#define KEEP_POLY_STATISTICS 0
-// turn this on to log the reasons for any long waits
-#define LOG_WAITS 0
-
-// number of profiling ticks before we consider a wait "long"
-#define LOG_WAIT_THRESHOLD 1000
-
-
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-#define POLYFLAG_INCLUDE_BOTTOM_EDGE 0x01
-#define POLYFLAG_INCLUDE_RIGHT_EDGE 0x02
-#define POLYFLAG_NO_WORK_QUEUE 0x04
-
-#define SCANLINES_PER_BUCKET 8
-#define CACHE_LINE_SIZE 64 // this is a general guess
-#define TOTAL_BUCKETS (512 / SCANLINES_PER_BUCKET)
-#define UNITS_PER_POLY (100 / SCANLINES_PER_BUCKET)
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-//-------------------------------------------------
-// global helpers for float base types
-//-------------------------------------------------
-
-inline float poly_floor(float x) { return floorf(x); }
-inline float poly_abs(float x) { return fabsf(x); }
-inline float poly_recip(float x) { return 1.0f / x; }
-
-
-//-------------------------------------------------
-// global helpers for double base types
-//-------------------------------------------------
-
-inline double poly_floor(double x) { return floor(x); }
-inline double poly_abs(double x) { return fabs(x); }
-inline double poly_recip(double x) { return 1.0 / x; }
-
-
// poly_manager is a template class
template<typename _BaseType, class _ObjectData, int _MaxParams, int _MaxPolys>
class poly_manager
{
public:
+ static constexpr uint8_t FLAG_INCLUDE_BOTTOM_EDGE = 0x01;
+ static constexpr uint8_t FLAG_INCLUDE_RIGHT_EDGE = 0x02;
+ static constexpr uint8_t FLAG_NO_WORK_QUEUE = 0x04;
+
// each vertex has an X/Y coordinate and a set of parameters
struct vertex_t
{
@@ -159,6 +124,17 @@ public:
int zclip_if_less(int numverts, const vertex_t *v, vertex_t *outv, int paramcount, _BaseType clipval);
private:
+ // turn this on to log the reasons for any long waits
+ static constexpr bool POLY_LOG_WAITS = false;
+
+ // number of profiling ticks before we consider a wait "long"
+ static constexpr osd_ticks_t POLY_LOG_WAIT_THRESHOLD = 1000;
+
+ static constexpr int SCANLINES_PER_BUCKET = 8;
+ static constexpr int CACHE_LINE_SIZE = 64; // this is a general guess
+ static constexpr int TOTAL_BUCKETS = (512 / SCANLINES_PER_BUCKET);
+ static constexpr int UNITS_PER_POLY = (100 / SCANLINES_PER_BUCKET);
+
// polygon_info describes a single polygon, which includes the poly_params
struct polygon_info
{
@@ -180,6 +156,24 @@ private:
extent_t extent[SCANLINES_PER_BUCKET]; // array of scanline extents
};
+ //-------------------------------------------------
+ // global helpers for float base types
+ //-------------------------------------------------
+
+ static float poly_floor(float x) { return floorf(x); }
+ static float poly_abs(float x) { return fabsf(x); }
+ static float poly_recip(float x) { return 1.0f / x; }
+
+
+ //-------------------------------------------------
+ // global helpers for double base types
+ //-------------------------------------------------
+
+ static double poly_floor(double x) { return floor(x); }
+ static double poly_abs(double x) { return fabs(x); }
+ static double poly_recip(double x) { return 1.0 / x; }
+
+
// class for managing an array of items
template<class _Type, int _Count>
class poly_array
@@ -309,7 +303,7 @@ poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::poly_manager(runnin
#endif
// create the work queue
- if (!(flags & POLYFLAG_NO_WORK_QUEUE))
+ if (!(flags & FLAG_NO_WORK_QUEUE))
m_queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_MULTI | WORK_QUEUE_FLAG_HIGH_FREQ);
// request a pre-save callback for synchronization
@@ -336,7 +330,7 @@ poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::poly_manager(screen
#endif
// create the work queue
- if (!(flags & POLYFLAG_NO_WORK_QUEUE))
+ if (!(flags & FLAG_NO_WORK_QUEUE))
m_queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_MULTI | WORK_QUEUE_FLAG_HIGH_FREQ);
// request a pre-save callback for synchronization
@@ -454,7 +448,7 @@ void poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::wait(const cha
osd_ticks_t time;
// remember the start time if we're logging
- if (LOG_WAITS)
+ if (POLY_LOG_WAITS)
time = get_profile_ticks();
// wait for all pending work items to complete
@@ -467,10 +461,10 @@ void poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::wait(const cha
work_item_callback(&m_unit[unitnum], 0);
// log any long waits
- if (LOG_WAITS)
+ if (POLY_LOG_WAITS)
{
time = get_profile_ticks() - time;
- if (time > LOG_WAIT_THRESHOLD)
+ if (time > POLY_LOG_WAIT_THRESHOLD)
machine().logerror("Poly:Waited %d cycles for %s\n", (int)time, debug_reason);
}
@@ -528,7 +522,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_til
// clip coordinates
int32_t v1yclip = v1y;
- int32_t v2yclip = v2y + ((m_flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
+ int32_t v2yclip = v2y + ((m_flags & FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
v1yclip = std::max(v1yclip, cliprect.min_y);
v2yclip = std::min(v2yclip, cliprect.max_y + 1);
if (v2yclip - v1yclip <= 0)
@@ -570,7 +564,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_til
}
// include the right edge if requested
- if (m_flags & POLYFLAG_INCLUDE_RIGHT_EDGE)
+ if (m_flags & FLAG_INCLUDE_RIGHT_EDGE)
istopx++;
// apply left/right clipping
@@ -673,7 +667,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_tri
// clip coordinates
int32_t v1yclip = v1y;
- int32_t v3yclip = v3y + ((m_flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
+ int32_t v3yclip = v3y + ((m_flags & FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
v1yclip = std::max(v1yclip, cliprect.min_y);
v3yclip = std::min(v3yclip, cliprect.max_y + 1);
if (v3yclip - v1yclip <= 0)
@@ -784,7 +778,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_tri
}
// include the right edge if requested
- if (m_flags & POLYFLAG_INCLUDE_RIGHT_EDGE)
+ if (m_flags & FLAG_INCLUDE_RIGHT_EDGE)
istopx++;
// apply left/right clipping
@@ -971,7 +965,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_pol
// clip coordinates
int32_t minyclip = miny;
- int32_t maxyclip = maxy + ((m_flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
+ int32_t maxyclip = maxy + ((m_flags & FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
minyclip = std::max(minyclip, cliprect.min_y);
maxyclip = std::min(maxyclip, cliprect.max_y + 1);
if (maxyclip - minyclip <= 0)
@@ -1104,7 +1098,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_pol
}
// include the right edge if requested
- if (m_flags & POLYFLAG_INCLUDE_RIGHT_EDGE)
+ if (m_flags & FLAG_INCLUDE_RIGHT_EDGE)
istopx++;
// apply left/right clipping
diff --git a/src/devices/video/polylgcy.cpp b/src/devices/video/polylgcy.cpp
index 5e8383062ca..2b3f8ccee02 100644
--- a/src/devices/video/polylgcy.cpp
+++ b/src/devices/video/polylgcy.cpp
@@ -10,8 +10,12 @@
#include "emu.h"
#include "polylgcy.h"
+
#include <atomic>
+
+namespace {
+
/***************************************************************************
DEBUGGING
***************************************************************************/
@@ -71,7 +75,7 @@ struct poly_edge
const poly_vertex * v1; /* pointer to first vertex */
const poly_vertex * v2; /* pointer to second vertex */
float dxdy; /* dx/dy along the edge */
- float dpdy[MAX_VERTEX_PARAMS];/* per-parameter dp/dy values */
+ float dpdy[POLYLGCY_MAX_VERTEX_PARAMS];/* per-parameter dp/dy values */
};
@@ -133,9 +137,11 @@ struct polygon_info
poly_draw_scanline_func callback; /* callback to handle a scanline's worth of work */
int32_t xorigin; /* X origin for all parameters */
int32_t yorigin; /* Y origin for all parameters */
- poly_param param[MAX_VERTEX_PARAMS];/* array of parameter data */
+ poly_param param[POLYLGCY_MAX_VERTEX_PARAMS];/* array of parameter data */
};
+} // anonymous namespace
+
/* full poly manager description */
struct legacy_poly_manager
@@ -331,13 +337,13 @@ legacy_poly_manager *poly_alloc(running_machine &machine, int max_polys, size_t
poly->extra = allocate_array(machine, &poly->extra_size, poly->extra_count);
/* allocate triangle work units */
- poly->unit_size = (flags & POLYFLAG_ALLOW_QUADS) ? sizeof(quad_work_unit) : sizeof(tri_work_unit);
+ poly->unit_size = (flags & POLYLGCY_FLAG_ALLOW_QUADS) ? sizeof(quad_work_unit) : sizeof(tri_work_unit);
poly->unit_count = std::min(poly->polygon_count * UNITS_PER_POLY, 65535U);
poly->unit_next = 0;
poly->unit = (work_unit **)allocate_array(machine, &poly->unit_size, poly->unit_count);
/* create the work queue */
- if (!(flags & POLYFLAG_NO_WORK_QUEUE))
+ if (!(flags & POLYLGCY_FLAG_NO_WORK_QUEUE))
poly->queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_MULTI | WORK_QUEUE_FLAG_HIGH_FREQ);
/* request a pre-save callback for synchronization */
@@ -500,7 +506,7 @@ uint32_t poly_render_triangle(legacy_poly_manager *poly, void *dest, const recta
/* clip coordinates */
v1yclip = v1y;
- v3yclip = v3y + ((poly->flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
+ v3yclip = v3y + ((poly->flags & POLYLGCY_FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
v1yclip = std::max(v1yclip, cliprect.min_y);
v3yclip = std::min(v3yclip, cliprect.max_y + 1);
if (v3yclip - v1yclip <= 0)
@@ -572,7 +578,7 @@ uint32_t poly_render_triangle(legacy_poly_manager *poly, void *dest, const recta
}
/* include the right edge if requested */
- if (poly->flags & POLYFLAG_INCLUDE_RIGHT_EDGE)
+ if (poly->flags & POLYLGCY_FLAG_INCLUDE_RIGHT_EDGE)
istopx++;
/* apply left/right clipping */
@@ -772,7 +778,7 @@ uint32_t poly_render_quad(legacy_poly_manager *poly, void *dest, const rectangle
int32_t pixels = 0;
uint32_t startunit;
- assert(poly->flags & POLYFLAG_ALLOW_QUADS);
+ assert(poly->flags & POLYLGCY_FLAG_ALLOW_QUADS);
/* arrays make things easier */
v[0] = v1;
@@ -800,7 +806,7 @@ uint32_t poly_render_quad(legacy_poly_manager *poly, void *dest, const rectangle
/* clip coordinates */
minyclip = miny;
- maxyclip = maxy + ((poly->flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
+ maxyclip = maxy + ((poly->flags & POLYLGCY_FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
minyclip = std::max(minyclip, cliprect.min_y);
maxyclip = std::min(maxyclip, cliprect.max_y + 1);
if (maxyclip - minyclip <= 0)
@@ -937,7 +943,7 @@ uint32_t poly_render_quad(legacy_poly_manager *poly, void *dest, const rectangle
}
/* include the right edge if requested */
- if (poly->flags & POLYFLAG_INCLUDE_RIGHT_EDGE)
+ if (poly->flags & POLYLGCY_FLAG_INCLUDE_RIGHT_EDGE)
istopx++;
/* apply left/right clipping */
@@ -1002,7 +1008,7 @@ uint32_t poly_render_quad_fan(legacy_poly_manager *poly, void *dest, const recta
uint32_t poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectangle &cliprect, poly_draw_scanline_func callback, int paramcount, int numverts, const poly_vertex *v)
{
- poly_edge fedgelist[MAX_POLYGON_VERTS - 1], bedgelist[MAX_POLYGON_VERTS - 1];
+ poly_edge fedgelist[POLYLGCY_MAX_POLYGON_VERTS - 1], bedgelist[POLYLGCY_MAX_POLYGON_VERTS - 1];
const poly_edge *ledge, *redge;
poly_edge *edgeptr;
int minv, maxv, curv;
@@ -1014,7 +1020,7 @@ uint32_t poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectan
uint32_t startunit;
int vertnum;
- assert(poly->flags & POLYFLAG_ALLOW_QUADS);
+ assert(poly->flags & POLYLGCY_FLAG_ALLOW_QUADS);
/* determine min/max Y vertices */
minv = maxv = 0;
@@ -1032,7 +1038,7 @@ uint32_t poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectan
/* clip coordinates */
minyclip = miny;
- maxyclip = maxy + ((poly->flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
+ maxyclip = maxy + ((poly->flags & POLYLGCY_FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0);
minyclip = std::max(minyclip, cliprect.min_y);
maxyclip = std::min(maxyclip, cliprect.max_y + 1);
if (maxyclip - minyclip <= 0)
@@ -1169,7 +1175,7 @@ uint32_t poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectan
}
/* include the right edge if requested */
- if (poly->flags & POLYFLAG_INCLUDE_RIGHT_EDGE)
+ if (poly->flags & POLYLGCY_FLAG_INCLUDE_RIGHT_EDGE)
istopx++;
/* apply left/right clipping */
diff --git a/src/devices/video/polylgcy.h b/src/devices/video/polylgcy.h
index fe7f13205f4..142ca5c073b 100644
--- a/src/devices/video/polylgcy.h
+++ b/src/devices/video/polylgcy.h
@@ -32,23 +32,23 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_POLYLGCY_H
+#define MAME_VIDEO_POLYLGCY_H
-#ifndef __POLYLGCY_H__
-#define __POLYLGCY_H__
+#pragma once
/***************************************************************************
CONSTANTS
***************************************************************************/
-#define MAX_VERTEX_PARAMS 6
-#define MAX_POLYGON_VERTS 32
+static constexpr unsigned POLYLGCY_MAX_VERTEX_PARAMS = 6;
+static constexpr unsigned POLYLGCY_MAX_POLYGON_VERTS = 32;
-#define POLYFLAG_INCLUDE_BOTTOM_EDGE 0x01
-#define POLYFLAG_INCLUDE_RIGHT_EDGE 0x02
-#define POLYFLAG_NO_WORK_QUEUE 0x04
-#define POLYFLAG_ALLOW_QUADS 0x08
+static constexpr uint8_t POLYLGCY_FLAG_INCLUDE_BOTTOM_EDGE = 0x01;
+static constexpr uint8_t POLYLGCY_FLAG_INCLUDE_RIGHT_EDGE = 0x02;
+static constexpr uint8_t POLYLGCY_FLAG_NO_WORK_QUEUE = 0x04;
+static constexpr uint8_t POLYLGCY_FLAG_ALLOW_QUADS = 0x08;
@@ -65,7 +65,7 @@ struct poly_vertex
{
float x; /* X coordinate */
float y; /* Y coordinate */
- float p[MAX_VERTEX_PARAMS]; /* interpolated parameter values */
+ float p[POLYLGCY_MAX_VERTEX_PARAMS]; /* interpolated parameter values */
};
@@ -82,7 +82,7 @@ struct poly_extent
{
int16_t startx; /* starting X coordinate (inclusive) */
int16_t stopx; /* ending X coordinate (exclusive) */
- poly_param_extent param[MAX_VERTEX_PARAMS]; /* starting and dx values for each parameter */
+ poly_param_extent param[POLYLGCY_MAX_VERTEX_PARAMS]; /* starting and dx values for each parameter */
};
@@ -152,4 +152,4 @@ uint32_t poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectan
int poly_zclip_if_less(int numverts, const poly_vertex *v, poly_vertex *outv, int paramcount, float clipval);
-#endif /* __POLYLGCY_H__ */
+#endif // MAME_VIDEO_POLYLGCY_H
diff --git a/src/devices/video/ppu2c0x.cpp b/src/devices/video/ppu2c0x.cpp
index 0d787209d15..a64f890c805 100644
--- a/src/devices/video/ppu2c0x.cpp
+++ b/src/devices/video/ppu2c0x.cpp
@@ -75,15 +75,15 @@ static const pen_t default_colortable[] =
//**************************************************************************
// devices
-const device_type PPU_2C02 = device_creator<ppu2c02_device>;
-const device_type PPU_2C03B = device_creator<ppu2c03b_device>;
-const device_type PPU_2C04 = device_creator<ppu2c04_device>;
-const device_type PPU_2C07 = device_creator<ppu2c07_device>;
-const device_type PPU_PALC = device_creator<ppupalc_device>;
-const device_type PPU_2C05_01 = device_creator<ppu2c05_01_device>;
-const device_type PPU_2C05_02 = device_creator<ppu2c05_02_device>;
-const device_type PPU_2C05_03 = device_creator<ppu2c05_03_device>;
-const device_type PPU_2C05_04 = device_creator<ppu2c05_04_device>;
+DEFINE_DEVICE_TYPE(PPU_2C02, ppu2c02_device, "ppu2c02", "2C02 PPU")
+DEFINE_DEVICE_TYPE(PPU_2C03B, ppu2c03b_device, "ppu2c03b", "2C03B PPC")
+DEFINE_DEVICE_TYPE(PPU_2C04, ppu2c04_device, "ppu2c04", "2C04 PPU")
+DEFINE_DEVICE_TYPE(PPU_2C07, ppu2c07_device, "ppu2c07", "2C07 PPU")
+DEFINE_DEVICE_TYPE(PPU_PALC, ppupalc_device, "ppupalc", "Generic PAL Clone PPU")
+DEFINE_DEVICE_TYPE(PPU_2C05_01, ppu2c05_01_device, "ppu2c05_01", "2C05_01 PPU")
+DEFINE_DEVICE_TYPE(PPU_2C05_02, ppu2c05_02_device, "ppu2c05_02", "2C05_02 PPU")
+DEFINE_DEVICE_TYPE(PPU_2C05_03, ppu2c05_03_device, "ppu2c05_03", "2C05_03 PPU")
+DEFINE_DEVICE_TYPE(PPU_2C05_04, ppu2c05_04_device, "ppu2c05_04", "2C05_04 PPU")
// default address map
@@ -105,10 +105,10 @@ const address_space_config *ppu2c0x_device::memory_space_config(address_spacenum
// static
-void ppu2c0x_device::set_nmi_delegate(device_t &device,ppu2c0x_nmi_delegate cb)
+void ppu2c0x_device::set_nmi_delegate(device_t &device, nmi_delegate &&cb)
{
ppu2c0x_device &dev = downcast<ppu2c0x_device &>(device);
- dev.m_nmi_callback_proc = cb;
+ dev.m_nmi_callback_proc = std::move(cb);
}
//-------------------------------------------------
// ppu2c0x_device - constructor
@@ -117,14 +117,14 @@ void ppu2c0x_device::set_nmi_delegate(device_t &device,ppu2c0x_nmi_delegate cb)
void ppu2c0x_device::device_config_complete()
{
/* reset the callbacks */
- m_latch = ppu2c0x_latch_delegate();
- m_scanline_callback_proc = ppu2c0x_scanline_delegate();
- m_hblank_callback_proc = ppu2c0x_hblank_delegate();
- m_vidaccess_callback_proc = ppu2c0x_vidaccess_delegate();
+ m_latch = latch_delegate();
+ m_scanline_callback_proc = scanline_delegate();
+ m_hblank_callback_proc = hblank_delegate();
+ m_vidaccess_callback_proc = vidaccess_delegate();
}
-ppu2c0x_device::ppu2c0x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ppu2c0x_device::ppu2c0x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_memory_interface(mconfig, *this)
, device_video_interface(mconfig, *this)
, m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, nullptr, *ADDRESS_MAP_NAME(ppu2c0x))
@@ -152,62 +152,62 @@ ppu2c0x_device::ppu2c0x_device(const machine_config &mconfig, device_type type,
memset(m_palette_ram, 0, ARRAY_LENGTH(m_palette_ram));
- m_scanlines_per_frame = PPU_NTSC_SCANLINES_PER_FRAME;
- m_vblank_first_scanline = PPU_VBLANK_FIRST_SCANLINE;
+ m_scanlines_per_frame = NTSC_SCANLINES_PER_FRAME;
+ m_vblank_first_scanline = VBLANK_FIRST_SCANLINE;
/* usually, no security value... */
m_security_value = 0;
- m_nmi_callback_proc = ppu2c0x_nmi_delegate();
+ m_nmi_callback_proc = nmi_delegate();
}
// NTSC NES
-ppu2c02_device::ppu2c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C02, "2C02 PPU", tag, owner, clock, "ppu2c02", __FILE__)
+ppu2c02_device::ppu2c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C02, tag, owner, clock)
{
}
// Playchoice 10
-ppu2c03b_device::ppu2c03b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C03B, "2C03B PPU", tag, owner, clock, "ppu2c03b", __FILE__)
+ppu2c03b_device::ppu2c03b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C03B, tag, owner, clock)
{
}
// Vs. Unisystem
-ppu2c04_device::ppu2c04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C04, "2C04 PPU", tag, owner, clock, "ppu2c04", __FILE__)
+ppu2c04_device::ppu2c04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C04, tag, owner, clock)
{
}
// PAL NES
-ppu2c07_device::ppu2c07_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C07, "2C07 PPU", tag, owner, clock, "ppu2c07", __FILE__)
+ppu2c07_device::ppu2c07_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C07, tag, owner, clock)
{
- m_scanlines_per_frame = PPU_PAL_SCANLINES_PER_FRAME;
+ m_scanlines_per_frame = PAL_SCANLINES_PER_FRAME;
}
// PAL clones
-ppupalc_device::ppupalc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_PALC, "Generic PAL Clone PPU", tag, owner, clock, "ppupalc", __FILE__)
+ppupalc_device::ppupalc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_PALC, tag, owner, clock)
{
- m_scanlines_per_frame = PPU_PAL_SCANLINES_PER_FRAME;
- m_vblank_first_scanline = PPU_VBLANK_FIRST_SCANLINE_PALC;
+ m_scanlines_per_frame = PAL_SCANLINES_PER_FRAME;
+ m_vblank_first_scanline = VBLANK_FIRST_SCANLINE_PALC;
}
// The PPU_2C05 variants have different protection value, set at device start, but otherwise are all the same...
// Vs. Unisystem (Ninja Jajamaru Kun)
-ppu2c05_01_device::ppu2c05_01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_01, "2C05_01 PPU", tag, owner, clock, "ppu2c05_01", __FILE__)
+ppu2c05_01_device::ppu2c05_01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_01, tag, owner, clock)
{
m_security_value = 0x1b; // game (jajamaru) doesn't seem to ever actually check it
}
// Vs. Unisystem (Mighty Bomb Jack)
-ppu2c05_02_device::ppu2c05_02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_02, "2C05_02 PPU", tag, owner, clock, "ppu2c05_02", __FILE__)
+ppu2c05_02_device::ppu2c05_02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_02, tag, owner, clock)
{
m_security_value = 0x3d;
}
// Vs. Unisystem (Gumshoe)
-ppu2c05_03_device::ppu2c05_03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_03, "2C05_03 PPU", tag, owner, clock, "ppu2c05_03", __FILE__)
+ppu2c05_03_device::ppu2c05_03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_03, tag, owner, clock)
{
m_security_value = 0x1c;
}
// Vs. Unisystem (Top Gun)
-ppu2c05_04_device::ppu2c05_04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_04, "2C05_04 PPU", tag, owner, clock, "ppu2c05_04", __FILE__)
+ppu2c05_04_device::ppu2c05_04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_04, tag, owner, clock)
{
m_security_value = 0x1b;
}
@@ -948,7 +948,7 @@ void ppu2c0x_device::render_scanline( void )
void ppu2c0x_device::update_scanline( void )
{
- if (m_scanline <= PPU_BOTTOM_VISIBLE_SCANLINE)
+ if (m_scanline <= BOTTOM_VISIBLE_SCANLINE)
{
/* Render this scanline if appropriate */
if (m_regs[PPU_CONTROL1] & (PPU_CONTROL1_BACKGROUND | PPU_CONTROL1_SPRITES))
@@ -1149,7 +1149,7 @@ WRITE8_MEMBER( ppu2c0x_device::write )
}
#ifdef MAME_DEBUG
- if (m_scanline <= PPU_BOTTOM_VISIBLE_SCANLINE)
+ if (m_scanline <= BOTTOM_VISIBLE_SCANLINE)
{
logerror("PPU register %d write %02x during non-vblank scanline %d (MAME %d, beam pos: %d)\n", offset, data, m_scanline, m_screen->vpos(), m_screen->hpos());
}
@@ -1200,7 +1200,7 @@ WRITE8_MEMBER( ppu2c0x_device::write )
case PPU_SPRITE_DATA: /* 4 */
// If the PPU is currently rendering the screen, 0xff is written instead of the desired data.
if (m_use_sprite_write_limitation)
- if (m_scanline <= PPU_BOTTOM_VISIBLE_SCANLINE)
+ if (m_scanline <= BOTTOM_VISIBLE_SCANLINE)
data = 0xff;
m_spriteram[m_regs[PPU_SPRITE_ADDRESS]] = data;
m_regs[PPU_SPRITE_ADDRESS] = (m_regs[PPU_SPRITE_ADDRESS] + 1) & 0xff;
diff --git a/src/devices/video/ppu2c0x.h b/src/devices/video/ppu2c0x.h
index b37d765c475..0ae702fdf1d 100644
--- a/src/devices/video/ppu2c0x.h
+++ b/src/devices/video/ppu2c0x.h
@@ -9,10 +9,10 @@
******************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_PPU2C0X_H
+#define MAME_VIDEO_PPU2C0X_H
-#ifndef __PPU_2C03B_H__
-#define __PPU_2C03B_H__
+#pragma once
///*************************************************************************
// MACROS / CONSTANTS
@@ -30,58 +30,6 @@
#define PPU_DRAW_OAM 1
-// registers definition
-enum
-{
- PPU_CONTROL0 = 0,
- PPU_CONTROL1,
- PPU_STATUS,
- PPU_SPRITE_ADDRESS,
- PPU_SPRITE_DATA,
- PPU_SCROLL,
- PPU_ADDRESS,
- PPU_DATA,
- PPU_MAX_REG
-};
-
-// bit definitions for (some of) the registers
-enum
-{
- PPU_CONTROL0_INC = 0x04,
- PPU_CONTROL0_SPR_SELECT = 0x08,
- PPU_CONTROL0_CHR_SELECT = 0x10,
- PPU_CONTROL0_SPRITE_SIZE = 0x20,
- PPU_CONTROL0_NMI = 0x80,
-
- PPU_CONTROL1_DISPLAY_MONO = 0x01,
- PPU_CONTROL1_BACKGROUND_L8 = 0x02,
- PPU_CONTROL1_SPRITES_L8 = 0x04,
- PPU_CONTROL1_BACKGROUND = 0x08,
- PPU_CONTROL1_SPRITES = 0x10,
- PPU_CONTROL1_COLOR_EMPHASIS = 0xe0,
-
- PPU_STATUS_8SPRITES = 0x20,
- PPU_STATUS_SPRITE0_HIT = 0x40,
- PPU_STATUS_VBLANK = 0x80
-};
-
-enum
-{
- PPU_NTSC_SCANLINES_PER_FRAME = 262,
- PPU_PAL_SCANLINES_PER_FRAME = 312,
-
- PPU_BOTTOM_VISIBLE_SCANLINE = 239,
- PPU_VBLANK_FIRST_SCANLINE = 241,
- PPU_VBLANK_FIRST_SCANLINE_PALC = 291,
- PPU_VBLANK_LAST_SCANLINE_NTSC = 260,
- PPU_VBLANK_LAST_SCANLINE_PAL = 310
-
- // Both the scanline immediately before and immediately after VBLANK
- // are non-rendering and non-vblank.
-};
-
-/*----------- defined in video/ppu2c0x.c -----------*/
-
///*************************************************************************
// INTERFACE CONFIGURATION MACROS
///*************************************************************************
@@ -117,7 +65,7 @@ enum
ppu2c0x_device::set_color_base(*device, _color);
#define MCFG_PPU2C0X_SET_NMI(_class, _method) \
- ppu2c0x_device::set_nmi_delegate(*device, ppu2c0x_nmi_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
+ ppu2c0x_device::set_nmi_delegate(*device, ppu2c0x_device::nmi_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
#define MCFG_PPU2C0X_IGNORE_SPRITE_WRITE_LIMIT \
ppu2c0x_device::use_sprite_write_limitation_disable(*device);
@@ -125,12 +73,6 @@ enum
///*************************************************************************
// TYPE DEFINITIONS
///*************************************************************************
-typedef device_delegate<void (int scanline, int vblank, int blanked)> ppu2c0x_scanline_delegate;
-typedef device_delegate<void (int scanline, int vblank, int blanked)> ppu2c0x_hblank_delegate;
-typedef device_delegate<void (int *ppu_regs)> ppu2c0x_nmi_delegate;
-typedef device_delegate<int (int address, int data)> ppu2c0x_vidaccess_delegate;
-typedef device_delegate<void (offs_t offset)> ppu2c0x_latch_delegate;
-
// ======================> ppu2c0x_device
@@ -139,25 +81,35 @@ class ppu2c0x_device : public device_t,
public device_video_interface
{
public:
- // construction/destruction
- ppu2c0x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ typedef device_delegate<void (int scanline, int vblank, int blanked)> scanline_delegate;
+ typedef device_delegate<void (int scanline, int vblank, int blanked)> hblank_delegate;
+ typedef device_delegate<void (int *ppu_regs)> nmi_delegate;
+ typedef device_delegate<int (int address, int data)> vidaccess_delegate;
+ typedef device_delegate<void (offs_t offset)> latch_delegate;
+
+ enum
+ {
+ NTSC_SCANLINES_PER_FRAME = 262,
+ PAL_SCANLINES_PER_FRAME = 312,
+
+ BOTTOM_VISIBLE_SCANLINE = 239,
+ VBLANK_FIRST_SCANLINE = 241,
+ VBLANK_FIRST_SCANLINE_PALC = 291,
+ VBLANK_LAST_SCANLINE_NTSC = 260,
+ VBLANK_LAST_SCANLINE_PAL = 310
+
+ // Both the scanline immediately before and immediately after VBLANK
+ // are non-rendering and non-vblank.
+ };
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( palette_read );
DECLARE_WRITE8_MEMBER( palette_write );
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual void device_config_complete() override;
- // device_config_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
- // address space configurations
- const address_space_config m_space_config;
-
static void set_cpu_tag(device_t &device, const char *tag) { downcast<ppu2c0x_device &>(device).m_cpu.set_tag(tag); }
static void set_color_base(device_t &device, int colorbase) { downcast<ppu2c0x_device &>(device).m_color_base = colorbase; }
- static void set_nmi_delegate(device_t &device, ppu2c0x_nmi_delegate cb);
+ static void set_nmi_delegate(device_t &device, nmi_delegate &&cb);
/* routines */
void init_palette( palette_device &palette, int first_entry );
@@ -174,9 +126,9 @@ public:
int get_colorbase() { return m_color_base; };
int get_current_scanline() { return m_scanline; };
- void set_scanline_callback( ppu2c0x_scanline_delegate cb ) { m_scanline_callback_proc = cb; m_scanline_callback_proc.bind_relative_to(*owner()); };
- void set_hblank_callback( ppu2c0x_hblank_delegate cb ) { m_hblank_callback_proc = cb; m_hblank_callback_proc.bind_relative_to(*owner()); };
- void set_vidaccess_callback( ppu2c0x_vidaccess_delegate cb ) { m_vidaccess_callback_proc = cb; m_vidaccess_callback_proc.bind_relative_to(*owner()); };
+ void set_scanline_callback( scanline_delegate &&cb ) { m_scanline_callback_proc = std::move(cb); m_scanline_callback_proc.bind_relative_to(*owner()); };
+ void set_hblank_callback( hblank_delegate &&cb ) { m_hblank_callback_proc = std::move(cb); m_hblank_callback_proc.bind_relative_to(*owner()); };
+ void set_vidaccess_callback( vidaccess_delegate &&cb ) { m_vidaccess_callback_proc = std::move(cb); m_vidaccess_callback_proc.bind_relative_to(*owner()); };
void set_scanlines_per_frame( int scanlines ) { m_scanlines_per_frame = scanlines; };
// MMC5 has to be able to check this
@@ -185,12 +137,10 @@ public:
int get_tilenum() { return m_tilecount; };
//27/12/2002 (HACK!)
- void set_latch( ppu2c0x_latch_delegate cb ) { m_latch = cb; m_latch.bind_relative_to(*owner()); };
+ void set_latch( latch_delegate &&cb ) { m_latch = std::move(cb); m_latch.bind_relative_to(*owner()); };
// void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
- required_device<cpu_device> m_cpu;
-
// some bootleg / clone hardware appears to ignore this
static void use_sprite_write_limitation_disable(device_t &device)
{
@@ -199,14 +149,64 @@ public:
}
protected:
+ // registers definition
+ enum
+ {
+ PPU_CONTROL0 = 0,
+ PPU_CONTROL1,
+ PPU_STATUS,
+ PPU_SPRITE_ADDRESS,
+ PPU_SPRITE_DATA,
+ PPU_SCROLL,
+ PPU_ADDRESS,
+ PPU_DATA,
+ PPU_MAX_REG
+ };
+
+ // bit definitions for (some of) the registers
+ enum
+ {
+ PPU_CONTROL0_INC = 0x04,
+ PPU_CONTROL0_SPR_SELECT = 0x08,
+ PPU_CONTROL0_CHR_SELECT = 0x10,
+ PPU_CONTROL0_SPRITE_SIZE = 0x20,
+ PPU_CONTROL0_NMI = 0x80,
+
+ PPU_CONTROL1_DISPLAY_MONO = 0x01,
+ PPU_CONTROL1_BACKGROUND_L8 = 0x02,
+ PPU_CONTROL1_SPRITES_L8 = 0x04,
+ PPU_CONTROL1_BACKGROUND = 0x08,
+ PPU_CONTROL1_SPRITES = 0x10,
+ PPU_CONTROL1_COLOR_EMPHASIS = 0xe0,
+
+ PPU_STATUS_8SPRITES = 0x20,
+ PPU_STATUS_SPRITE0_HIT = 0x40,
+ PPU_STATUS_VBLANK = 0x80
+ };
+
+ // construction/destruction
+ ppu2c0x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual void device_config_complete() override;
+
+ // device_config_memory_interface overrides
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
+
+ // address space configurations
+ const address_space_config m_space_config;
+
+ required_device<cpu_device> m_cpu;
+
int m_scanlines_per_frame; /* number of scanlines per frame */
int m_security_value; /* 2C05 protection */
int m_vblank_first_scanline; /* the very first scanline where VBLANK occurs */
private:
- static const device_timer_id TIMER_HBLANK = 0;
- static const device_timer_id TIMER_NMI = 1;
- static const device_timer_id TIMER_SCANLINE = 2;
+ static constexpr device_timer_id TIMER_HBLANK = 0;
+ static constexpr device_timer_id TIMER_NMI = 1;
+ static constexpr device_timer_id TIMER_SCANLINE = 2;
inline uint8_t readbyte(offs_t address);
inline void writebyte(offs_t address, uint8_t data);
@@ -216,10 +216,10 @@ private:
std::unique_ptr<pen_t[]> m_colortable; /* color table modified at run time */
std::unique_ptr<pen_t[]> m_colortable_mono; /* monochromatic color table modified at run time */
int m_scanline; /* scanline count */
- ppu2c0x_scanline_delegate m_scanline_callback_proc; /* optional scanline callback */
- ppu2c0x_hblank_delegate m_hblank_callback_proc; /* optional hblank callback */
- ppu2c0x_vidaccess_delegate m_vidaccess_callback_proc; /* optional video access callback */
- ppu2c0x_nmi_delegate m_nmi_callback_proc; /* nmi access callback from interface */
+ scanline_delegate m_scanline_callback_proc; /* optional scanline callback */
+ hblank_delegate m_hblank_callback_proc; /* optional hblank callback */
+ vidaccess_delegate m_vidaccess_callback_proc; /* optional video access callback */
+ nmi_delegate m_nmi_callback_proc; /* nmi access callback from interface */
int m_regs[PPU_MAX_REG]; /* registers */
int m_refresh_data; /* refresh-related */
int m_refresh_latch; /* refresh-related */
@@ -237,7 +237,7 @@ private:
int m_scan_scale; /* scan scale */
int m_tilecount; /* MMC5 can change attributes to subsets of the 34 visible tiles */
int m_draw_phase; /* MMC5 uses different regs for BG and OAM */
- ppu2c0x_latch_delegate m_latch;
+ latch_delegate m_latch;
// timers
emu_timer *m_hblank_timer; /* hblank period at end of each scanline */
@@ -295,15 +295,14 @@ public:
// device type definition
//extern const device_type PPU_2C0X;
-extern const device_type PPU_2C02; // NTSC NES
-extern const device_type PPU_2C03B; // Playchoice 10
-extern const device_type PPU_2C04; // Vs. Unisystem
-extern const device_type PPU_2C07; // PAL NES
-extern const device_type PPU_PALC; // PAL Clones
-extern const device_type PPU_2C05_01; // Vs. Unisystem (Ninja Jajamaru Kun)
-extern const device_type PPU_2C05_02; // Vs. Unisystem (Mighty Bomb Jack)
-extern const device_type PPU_2C05_03; // Vs. Unisystem (Gumshoe)
-extern const device_type PPU_2C05_04; // Vs. Unisystem (Top Gun)
-
-
-#endif
+DECLARE_DEVICE_TYPE(PPU_2C02, ppu2c02_device) // NTSC NES
+DECLARE_DEVICE_TYPE(PPU_2C03B, ppu2c03b_device) // Playchoice 10
+DECLARE_DEVICE_TYPE(PPU_2C04, ppu2c04_device) // Vs. Unisystem
+DECLARE_DEVICE_TYPE(PPU_2C07, ppu2c07_device) // PAL NES
+DECLARE_DEVICE_TYPE(PPU_PALC, ppupalc_device) // PAL Clones
+DECLARE_DEVICE_TYPE(PPU_2C05_01, ppu2c05_01_device) // Vs. Unisystem (Ninja Jajamaru Kun)
+DECLARE_DEVICE_TYPE(PPU_2C05_02, ppu2c05_02_device) // Vs. Unisystem (Mighty Bomb Jack)
+DECLARE_DEVICE_TYPE(PPU_2C05_03, ppu2c05_03_device) // Vs. Unisystem (Gumshoe)
+DECLARE_DEVICE_TYPE(PPU_2C05_04, ppu2c05_04_device) // Vs. Unisystem (Top Gun)
+
+#endif // MAME_VIDEO_PPU2C0X_H
diff --git a/src/devices/video/psx.cpp b/src/devices/video/psx.cpp
index 6b2963babdf..ad49dfe4802 100644
--- a/src/devices/video/psx.cpp
+++ b/src/devices/video/psx.cpp
@@ -8,34 +8,33 @@
*/
#include "emu.h"
-
-#define DEBUG_VIEWER ( 0 )
#include "video/psx.h"
#include "screen.h"
+#define STOP_ON_ERROR ( 0 )
+
#define VERBOSE_LEVEL ( 0 )
// device type definition
-const device_type CXD8514Q = device_creator<cxd8514q_device>;
-const device_type CXD8538Q = device_creator<cxd8538q_device>;
-const device_type CXD8561Q = device_creator<cxd8561q_device>;
-const device_type CXD8561BQ = device_creator<cxd8561bq_device>;
-const device_type CXD8561CQ = device_creator<cxd8561cq_device>;
-const device_type CXD8654Q = device_creator<cxd8654q_device>;
-
-psxgpu_device::psxgpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_vblank_handler(*this)
-#if DEBUG_VIEWER
-,
- m_screen(*this, "screen")
+DEFINE_DEVICE_TYPE(CXD8514Q, cxd8514q_device, "cxd8514q", "CXD8514Q GPU")
+DEFINE_DEVICE_TYPE(CXD8538Q, cxd8538q_device, "cxd8538q", "CXD8538Q GPU")
+DEFINE_DEVICE_TYPE(CXD8561Q, cxd8561q_device, "cxd8561q", "CXD8561Q GPU")
+DEFINE_DEVICE_TYPE(CXD8561BQ, cxd8561bq_device, "cxd8561bq", "CXD8561BQ GPU")
+DEFINE_DEVICE_TYPE(CXD8561CQ, cxd8561cq_device, "cxd8561cq", "CXD8561CQ GPU")
+DEFINE_DEVICE_TYPE(CXD8654Q, cxd8654q_device, "cxd8654q", "CXD8654Q GPU")
+
+psxgpu_device::psxgpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_vblank_handler(*this)
+#if PSXGPU_DEBUG_VIEWER
+ , m_screen(*this, "screen")
#endif
{
}
-void psxgpu_device::device_start( void )
+void psxgpu_device::device_start()
{
m_vblank_handler.resolve_safe();
@@ -49,38 +48,38 @@ void psxgpu_device::device_start( void )
}
}
-void psxgpu_device::device_reset( void )
+void psxgpu_device::device_reset()
{
gpu_reset();
}
cxd8514q_device::cxd8514q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : psxgpu_device(mconfig, CXD8514Q, "CXD8514Q GPU", tag, owner, clock, "cxd8514q", __FILE__)
+ : psxgpu_device(mconfig, CXD8514Q, tag, owner, clock)
{
}
cxd8538q_device::cxd8538q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : psxgpu_device(mconfig, CXD8538Q, "CXD8538Q GPU", tag, owner, clock, "cxd8538q", __FILE__)
+ : psxgpu_device(mconfig, CXD8538Q, tag, owner, clock)
{
}
cxd8561q_device::cxd8561q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : psxgpu_device(mconfig, CXD8561Q, "CXD8561Q GPU", tag, owner, clock, "cxd8561q", __FILE__)
+ : psxgpu_device(mconfig, CXD8561Q, tag, owner, clock)
{
}
cxd8561bq_device::cxd8561bq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : psxgpu_device(mconfig, CXD8561BQ, "CXD8561BQ", tag, owner, clock, "cxd8561bq", __FILE__)
+ : psxgpu_device(mconfig, CXD8561BQ, tag, owner, clock)
{
}
cxd8561cq_device::cxd8561cq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : psxgpu_device(mconfig, CXD8561CQ, "CXD8561CQ GPU", tag, owner, clock, "cxd8561cq", __FILE__)
+ : psxgpu_device(mconfig, CXD8561CQ, tag, owner, clock)
{
}
cxd8654q_device::cxd8654q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : psxgpu_device(mconfig, CXD8654Q, "CXD8654Q GPU", tag, owner, clock, "cxd8654q", __FILE__)
+ : psxgpu_device(mconfig, CXD8654Q, tag, owner, clock)
{
}
@@ -117,9 +116,9 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, c
}
}
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
-void psxgpu_device::DebugMeshInit( void )
+void psxgpu_device::DebugMeshInit()
{
int width = m_screen->width();
int height = m_screen->height();
@@ -241,12 +240,12 @@ void psxgpu_device::DebugMesh( int n_coordx, int n_coordy )
}
}
-void psxgpu_device::DebugMeshEnd( void )
+void psxgpu_device::DebugMeshEnd()
{
m_debug.n_coord = 0;
}
-void psxgpu_device::DebugCheckKeys( void )
+void psxgpu_device::DebugCheckKeys()
{
if( machine().input().code_pressed_once( KEYCODE_M ) )
{
@@ -437,7 +436,7 @@ void psxgpu_device::updatevisiblearea()
break;
}
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.b_mesh || m_debug.b_texture )
{
n_screenheight = 1024;
@@ -461,7 +460,7 @@ void psxgpu_device::psx_gpu_init( int n_gputype )
m_n_gputype = n_gputype;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
DebugMeshInit();
#endif
@@ -622,7 +621,7 @@ uint32_t psxgpu_device::update_screen(screen_device &screen, bitmap_ind16 &bitma
int n_overscantop;
int n_overscanleft;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( DebugMeshDisplay( bitmap, cliprect ) )
{
return 0;
@@ -1393,7 +1392,7 @@ void psxgpu_device::FlatPolygon( int n_points )
uint16_t *p_vram;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 1 )
{
return;
@@ -1546,7 +1545,7 @@ void psxgpu_device::FlatTexturedPolygon( int n_points )
uint16_t *p_vram;
uint32_t n_bgr;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 2 )
{
return;
@@ -1745,7 +1744,7 @@ void psxgpu_device::GouraudPolygon( int n_points )
uint16_t *p_vram;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 3 )
{
return;
@@ -1956,7 +1955,7 @@ void psxgpu_device::GouraudTexturedPolygon( int n_points )
uint16_t *p_vram;
uint32_t n_bgr;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 4 )
{
return;
@@ -2175,7 +2174,7 @@ void psxgpu_device::GouraudTexturedPolygon( int n_points )
}
}
-void psxgpu_device::MonochromeLine( void )
+void psxgpu_device::MonochromeLine()
{
PAIR n_x;
PAIR n_y;
@@ -2193,7 +2192,7 @@ void psxgpu_device::MonochromeLine( void )
uint32_t n_b;
uint16_t *p_vram;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 5 )
{
return;
@@ -2270,7 +2269,7 @@ void psxgpu_device::MonochromeLine( void )
}
}
-void psxgpu_device::GouraudLine( void )
+void psxgpu_device::GouraudLine()
{
PAIR n_x;
PAIR n_y;
@@ -2297,7 +2296,7 @@ void psxgpu_device::GouraudLine( void )
PAIR n_cb2;
uint16_t *p_vram;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 6 )
{
return;
@@ -2386,7 +2385,7 @@ void psxgpu_device::GouraudLine( void )
}
}
-void psxgpu_device::FrameBufferRectangleDraw( void )
+void psxgpu_device::FrameBufferRectangleDraw()
{
PAIR n_r;
PAIR n_g;
@@ -2397,7 +2396,7 @@ void psxgpu_device::FrameBufferRectangleDraw( void )
int16_t n_x;
uint16_t *p_vram;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 7 )
{
return;
@@ -2436,7 +2435,7 @@ void psxgpu_device::FrameBufferRectangleDraw( void )
}
}
-void psxgpu_device::FlatRectangle( void )
+void psxgpu_device::FlatRectangle()
{
int16_t n_y;
int16_t n_x;
@@ -2459,7 +2458,7 @@ void psxgpu_device::FlatRectangle( void )
int32_t n_h;
uint16_t *p_vram;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 8 )
{
return;
@@ -2506,7 +2505,7 @@ void psxgpu_device::FlatRectangle( void )
}
}
-void psxgpu_device::FlatRectangle8x8( void )
+void psxgpu_device::FlatRectangle8x8()
{
int16_t n_y;
int16_t n_x;
@@ -2529,7 +2528,7 @@ void psxgpu_device::FlatRectangle8x8( void )
int32_t n_h;
uint16_t *p_vram;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 9 )
{
return;
@@ -2576,7 +2575,7 @@ void psxgpu_device::FlatRectangle8x8( void )
}
}
-void psxgpu_device::FlatRectangle16x16( void )
+void psxgpu_device::FlatRectangle16x16()
{
int16_t n_y;
int16_t n_x;
@@ -2599,7 +2598,7 @@ void psxgpu_device::FlatRectangle16x16( void )
int32_t n_h;
uint16_t *p_vram;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 10 )
{
return;
@@ -2646,7 +2645,7 @@ void psxgpu_device::FlatRectangle16x16( void )
}
}
-void psxgpu_device::FlatTexturedRectangle( void )
+void psxgpu_device::FlatTexturedRectangle()
{
int16_t n_y;
int16_t n_x;
@@ -2680,7 +2679,7 @@ void psxgpu_device::FlatTexturedRectangle( void )
uint16_t *p_clut;
uint16_t n_bgr;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 11 )
{
return;
@@ -2749,7 +2748,7 @@ void psxgpu_device::FlatTexturedRectangle( void )
}
}
-void psxgpu_device::Sprite8x8( void )
+void psxgpu_device::Sprite8x8()
{
int16_t n_y;
int16_t n_x;
@@ -2783,7 +2782,7 @@ void psxgpu_device::Sprite8x8( void )
uint16_t *p_clut;
uint16_t n_bgr;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 12 )
{
return;
@@ -2852,7 +2851,7 @@ void psxgpu_device::Sprite8x8( void )
}
}
-void psxgpu_device::Sprite16x16( void )
+void psxgpu_device::Sprite16x16()
{
int16_t n_y;
int16_t n_x;
@@ -2886,7 +2885,7 @@ void psxgpu_device::Sprite16x16( void )
uint16_t *p_clut;
uint16_t n_bgr;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 13 )
{
return;
@@ -2955,7 +2954,7 @@ void psxgpu_device::Sprite16x16( void )
}
}
-void psxgpu_device::Dot( void )
+void psxgpu_device::Dot()
{
int32_t n_x;
int32_t n_y;
@@ -2964,7 +2963,7 @@ void psxgpu_device::Dot( void )
uint32_t n_b;
uint16_t *p_vram;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 14 )
{
return;
@@ -2993,7 +2992,7 @@ void psxgpu_device::Dot( void )
}
}
-void psxgpu_device::MoveImage( void )
+void psxgpu_device::MoveImage()
{
int16_t n_w;
int16_t n_h;
@@ -3003,7 +3002,7 @@ void psxgpu_device::MoveImage( void )
int16_t n_dstx;
uint16_t *p_vram;
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
if( m_debug.n_skip == 15 )
{
return;
@@ -3749,7 +3748,7 @@ void psxgpu_device::vblank(screen_device &screen, bool vblank_state)
{
if( vblank_state )
{
-#if DEBUG_VIEWER
+#if PSXGPU_DEBUG_VIEWER
DebugCheckKeys();
#endif
@@ -3758,7 +3757,7 @@ void psxgpu_device::vblank(screen_device &screen, bool vblank_state)
}
}
-void psxgpu_device::gpu_reset( void )
+void psxgpu_device::gpu_reset()
{
verboselog( *this, 1, "reset gpu\n" );
n_gpu_buffer_offset = 0;
diff --git a/src/devices/video/psx.h b/src/devices/video/psx.h
index d3b56642222..b60e1d1a69f 100644
--- a/src/devices/video/psx.h
+++ b/src/devices/video/psx.h
@@ -7,10 +7,12 @@
*
*/
+#ifndef MAME_VIDEO_PSX_H
+#define MAME_VIDEO_PSX_H
+
#pragma once
-#ifndef __PSXGPU_H__
-#define __PSXGPU_H__
+#define PSXGPU_DEBUG_VIEWER ( 0 )
#define MCFG_PSX_GPU_VBLANK_HANDLER(_devcb) \
@@ -21,211 +23,212 @@
MCFG_PSX_GPU_READ_HANDLER(DEVREAD32(tag, psxgpu_device, read)) \
MCFG_PSX_GPU_WRITE_HANDLER(DEVWRITE32(tag, psxgpu_device, write)) \
MCFG_DEVICE_ADD( tag, type, clock ) \
- ((psxgpu_device *) device)->vramSize = _vramSize; \
+ psxgpu_device::set_vram_size(*device, _vramSize); \
MCFG_PSX_GPU_VBLANK_HANDLER(DEVWRITELINE(cputag ":irq", psxirq_device, intin0)) \
- MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psx_dma_write_delegate(&psxgpu_device::dma_read, (psxgpu_device *) device ) ) \
- MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psx_dma_read_delegate(&psxgpu_device::dma_write, (psxgpu_device *) device ) )
+ MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psxdma_device::write_delegate(&psxgpu_device::dma_read, (psxgpu_device *) device ) ) \
+ MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psxdma_device::read_delegate(&psxgpu_device::dma_write, (psxgpu_device *) device ) )
#define MCFG_PSXGPU_REPLACE( cputag, tag, type, _vramSize, clock ) \
MCFG_DEVICE_MODIFY( cputag ) \
MCFG_PSX_GPU_READ_HANDLER(DEVREAD32(tag, psxgpu_device, read)) \
MCFG_PSX_GPU_WRITE_HANDLER(DEVWRITE32(tag, psxgpu_device, write)) \
MCFG_DEVICE_REPLACE( tag, type, clock ) \
- ((psxgpu_device *) device)->vramSize = _vramSize; \
+ psxgpu_device::set_vram_size(*device, _vramSize); \
MCFG_PSX_GPU_VBLANK_HANDLER(DEVWRITELINE(cputag ":irq", psxirq_device, intin0)) \
- MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psx_dma_write_delegate(&psxgpu_device::dma_read, (psxgpu_device *) device ) ) \
- MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psx_dma_read_delegate(&psxgpu_device::dma_write, (psxgpu_device *) device ) )
+ MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psxdma_device::write_delegate(&psxgpu_device::dma_read, (psxgpu_device *) device ) ) \
+ MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psxdma_device::read_delegate(&psxgpu_device::dma_write, (psxgpu_device *) device ) )
#define MCFG_PSXGPU_VBLANK_CALLBACK( _delegate ) \
((screen_device *) config.device_find( device, "screen" ))->register_vblank_callback( _delegate );
-extern const device_type CXD8514Q;
-extern const device_type CXD8538Q;
-extern const device_type CXD8561Q;
-extern const device_type CXD8561BQ;
-extern const device_type CXD8561CQ;
-extern const device_type CXD8654Q;
-
-#define STOP_ON_ERROR ( 0 )
-
-#define MAX_LEVEL ( 32 )
-#define MID_LEVEL ( ( MAX_LEVEL / 2 ) << 8 )
-#define MAX_SHADE ( 0x100 )
-#define MID_SHADE ( 0x80 )
+DECLARE_DEVICE_TYPE(CXD8514Q, cxd8514q_device)
+DECLARE_DEVICE_TYPE(CXD8538Q, cxd8538q_device)
+DECLARE_DEVICE_TYPE(CXD8561Q, cxd8561q_device)
+DECLARE_DEVICE_TYPE(CXD8561BQ, cxd8561bq_device)
+DECLARE_DEVICE_TYPE(CXD8561CQ, cxd8561cq_device)
+DECLARE_DEVICE_TYPE(CXD8654Q, cxd8654q_device)
-#define DEBUG_COORDS ( 10 )
-
-struct psx_gpu_debug
+class psxgpu_device : public device_t
{
- std::unique_ptr<bitmap_ind16> mesh;
- int b_clear;
- int b_mesh;
- int n_skip;
- int b_texture;
- int n_interleave;
- int n_coord;
- int n_coordx[ DEBUG_COORDS ];
- int n_coordy[ DEBUG_COORDS ];
-};
+public:
+ virtual machine_config_constructor device_mconfig_additions() const override;
-struct FLATVERTEX
-{
- PAIR n_coord;
-};
+ // static configuration helpers
+ template <class Object> static devcb_base &set_vblank_handler(device_t &device, Object &&cb) { return downcast<psxgpu_device &>(device).m_vblank_handler.set_callback(std::forward<Object>(cb)); }
+ static void set_vram_size(device_t &device, int size) { downcast<psxgpu_device &>(device).vramSize = size; }
-struct GOURAUDVERTEX
-{
- PAIR n_bgr;
- PAIR n_coord;
-};
+ uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_WRITE32_MEMBER( write );
+ DECLARE_READ32_MEMBER( read );
+ void dma_read( uint32_t *ram, uint32_t n_address, int32_t n_size );
+ void dma_write( uint32_t *ram, uint32_t n_address, int32_t n_size );
+ void lightgun_set( int, int );
+ void vblank(screen_device &screen, bool vblank_state);
+ DECLARE_PALETTE_INIT( psx );
-struct FLATTEXTUREDVERTEX
-{
- PAIR n_coord;
- PAIR n_texture;
-};
+protected:
+ static constexpr unsigned MAX_LEVEL = 32;
+ static constexpr unsigned MID_LEVEL = (MAX_LEVEL / 2) << 8;
+ static constexpr unsigned MAX_SHADE = 0x100;
+ static constexpr unsigned MID_SHADE = 0x80;
-struct GOURAUDTEXTUREDVERTEX
-{
- PAIR n_bgr;
- PAIR n_coord;
- PAIR n_texture;
-};
+ // construction/destruction
+ psxgpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-union PACKET
-{
- uint32_t n_entry[ 16 ];
+ virtual void device_start() override;
+ virtual void device_reset() override;
- struct
- {
- PAIR n_cmd;
- struct FLATVERTEX vertex[ 2 ];
- PAIR n_size;
- } MoveImage;
+ int vramSize;
- struct
- {
- PAIR n_bgr;
- PAIR n_coord;
- PAIR n_size;
- } FlatRectangle;
+private:
+ static constexpr unsigned DEBUG_COORDS = 10;
- struct
+ struct psx_gpu_debug
{
- PAIR n_bgr;
- PAIR n_coord;
- } FlatRectangle8x8;
-
- struct
+ std::unique_ptr<bitmap_ind16> mesh;
+ int b_clear;
+ int b_mesh;
+ int n_skip;
+ int b_texture;
+ int n_interleave;
+ int n_coord;
+ int n_coordx[ DEBUG_COORDS ];
+ int n_coordy[ DEBUG_COORDS ];
+ };
+
+ struct FLATVERTEX
{
- PAIR n_bgr;
PAIR n_coord;
- } FlatRectangle16x16;
+ };
- struct
+ struct GOURAUDVERTEX
{
PAIR n_bgr;
PAIR n_coord;
- PAIR n_texture;
- } Sprite8x8;
+ };
- struct
+ struct FLATTEXTUREDVERTEX
{
- PAIR n_bgr;
PAIR n_coord;
PAIR n_texture;
- } Sprite16x16;
+ };
- struct
+ struct GOURAUDTEXTUREDVERTEX
{
PAIR n_bgr;
PAIR n_coord;
PAIR n_texture;
- PAIR n_size;
- } FlatTexturedRectangle;
+ };
- struct
+ union PACKET
{
- PAIR n_bgr;
- struct FLATVERTEX vertex[ 4 ];
- } FlatPolygon;
-
- struct
- {
- struct GOURAUDVERTEX vertex[ 4 ];
- } GouraudPolygon;
-
- struct
- {
- PAIR n_bgr;
- struct FLATVERTEX vertex[ 2 ];
- } MonochromeLine;
-
- struct
- {
- struct GOURAUDVERTEX vertex[ 2 ];
- } GouraudLine;
-
- struct
- {
- PAIR n_bgr;
- struct FLATTEXTUREDVERTEX vertex[ 4 ];
- } FlatTexturedPolygon;
+ uint32_t n_entry[ 16 ];
+
+ struct
+ {
+ PAIR n_cmd;
+ struct FLATVERTEX vertex[ 2 ];
+ PAIR n_size;
+ } MoveImage;
+
+ struct
+ {
+ PAIR n_bgr;
+ PAIR n_coord;
+ PAIR n_size;
+ } FlatRectangle;
+
+ struct
+ {
+ PAIR n_bgr;
+ PAIR n_coord;
+ } FlatRectangle8x8;
+
+ struct
+ {
+ PAIR n_bgr;
+ PAIR n_coord;
+ } FlatRectangle16x16;
+
+ struct
+ {
+ PAIR n_bgr;
+ PAIR n_coord;
+ PAIR n_texture;
+ } Sprite8x8;
+
+ struct
+ {
+ PAIR n_bgr;
+ PAIR n_coord;
+ PAIR n_texture;
+ } Sprite16x16;
+
+ struct
+ {
+ PAIR n_bgr;
+ PAIR n_coord;
+ PAIR n_texture;
+ PAIR n_size;
+ } FlatTexturedRectangle;
+
+ struct
+ {
+ PAIR n_bgr;
+ struct FLATVERTEX vertex[ 4 ];
+ } FlatPolygon;
+
+ struct
+ {
+ struct GOURAUDVERTEX vertex[ 4 ];
+ } GouraudPolygon;
+
+ struct
+ {
+ PAIR n_bgr;
+ struct FLATVERTEX vertex[ 2 ];
+ } MonochromeLine;
+
+ struct
+ {
+ struct GOURAUDVERTEX vertex[ 2 ];
+ } GouraudLine;
+
+ struct
+ {
+ PAIR n_bgr;
+ struct FLATTEXTUREDVERTEX vertex[ 4 ];
+ } FlatTexturedPolygon;
+
+ struct
+ {
+ struct GOURAUDTEXTUREDVERTEX vertex[ 4 ];
+ } GouraudTexturedPolygon;
+
+ struct
+ {
+ PAIR n_bgr;
+ struct FLATVERTEX vertex;
+ } Dot;
+ };
- struct
- {
- struct GOURAUDTEXTUREDVERTEX vertex[ 4 ];
- } GouraudTexturedPolygon;
-
- struct
- {
- PAIR n_bgr;
- struct FLATVERTEX vertex;
- } Dot;
-};
-
-class psxgpu_device : public device_t
-{
-public:
- // construction/destruction
- psxgpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- virtual machine_config_constructor device_mconfig_additions() const override;
-
- // static configuration helpers
- template<class _Object> static devcb_base &set_vblank_handler(device_t &device, _Object object) { return downcast<psxgpu_device &>(device).m_vblank_handler.set_callback(object); }
-
- uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE32_MEMBER( write );
- DECLARE_READ32_MEMBER( read );
- void dma_read( uint32_t *ram, uint32_t n_address, int32_t n_size );
- void dma_write( uint32_t *ram, uint32_t n_address, int32_t n_size );
- void lightgun_set( int, int );
- int vramSize;
- void vblank(screen_device &screen, bool vblank_state);
- DECLARE_PALETTE_INIT( psx );
-
-protected:
- virtual void device_start() override;
- virtual void device_reset() override;
-
-private:
void updatevisiblearea();
void decode_tpage( uint32_t tpage );
void FlatPolygon( int n_points );
void FlatTexturedPolygon( int n_points );
void GouraudPolygon( int n_points );
void GouraudTexturedPolygon( int n_points );
- void MonochromeLine( void );
- void GouraudLine( void );
- void FrameBufferRectangleDraw( void );
- void FlatRectangle( void );
- void FlatRectangle8x8( void );
- void FlatRectangle16x16( void );
- void FlatTexturedRectangle( void );
- void Sprite8x8( void );
- void Sprite16x16( void );
- void Dot( void );
- void MoveImage( void );
+ void MonochromeLine();
+ void GouraudLine();
+ void FrameBufferRectangleDraw();
+ void FlatRectangle();
+ void FlatRectangle8x8();
+ void FlatRectangle16x16();
+ void FlatTexturedRectangle();
+ void Sprite8x8();
+ void Sprite16x16();
+ void Dot();
+ void MoveImage();
void psx_gpu_init( int n_gputype );
void gpu_reset();
void gpu_read( uint32_t *p_ram, int32_t n_size );
@@ -302,12 +305,12 @@ private:
devcb_write_line m_vblank_handler;
-#if defined(DEBUG_VIEWER) && DEBUG_VIEWER
+#if defined(PSXGPU_DEBUG_VIEWER) && PSXGPU_DEBUG_VIEWER
required_device<screen_device> m_screen;
- void DebugMeshInit( void );
+ void DebugMeshInit();
void DebugMesh( int n_coordx, int n_coordy );
- void DebugMeshEnd( void );
- void DebugCheckKeys( void );
+ void DebugMeshEnd();
+ void DebugCheckKeys();
int DebugMeshDisplay( bitmap_ind16 &bitmap, const rectangle &cliprect );
int DebugTextureDisplay( bitmap_ind16 &bitmap );
@@ -357,4 +360,4 @@ public:
cxd8654q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-#endif
+#endif // MAME_VIDEO_PSX_H
diff --git a/src/devices/video/ramdac.cpp b/src/devices/video/ramdac.cpp
index 195365fff91..7014d464a5a 100644
--- a/src/devices/video/ramdac.cpp
+++ b/src/devices/video/ramdac.cpp
@@ -29,7 +29,7 @@ ADDRESS_MAP_END
//**************************************************************************
// device type definition
-const device_type RAMDAC = device_creator<ramdac_device>;
+DEFINE_DEVICE_TYPE(RAMDAC, ramdac_device, "ramdac", "RAMDAC")
//**************************************************************************
@@ -41,7 +41,7 @@ const device_type RAMDAC = device_creator<ramdac_device>;
//-------------------------------------------------
ramdac_device::ramdac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, RAMDAC, "RAMDAC", tag, owner, clock, "ramdac", __FILE__),
+ : device_t(mconfig, RAMDAC, tag, owner, clock),
device_memory_interface(mconfig, *this),
m_space_config("videoram", ENDIANNESS_LITTLE, 8, 10, 0, nullptr, *ADDRESS_MAP_NAME(ramdac_palram)),
m_palette(*this, finder_base::DUMMY_TAG),
diff --git a/src/devices/video/ramdac.h b/src/devices/video/ramdac.h
index 9ae4ce030d2..709cda23711 100644
--- a/src/devices/video/ramdac.h
+++ b/src/devices/video/ramdac.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_RAMDAC_H
+#define MAME_VIDEO_RAMDAC_H
-#ifndef __ramdacDEV_H__
-#define __ramdacDEV_H__
+#pragma once
@@ -85,7 +85,6 @@ private:
// device type definition
-extern const device_type RAMDAC;
-
+DECLARE_DEVICE_TYPE(RAMDAC, ramdac_device)
-#endif
+#endif // MAME_VIDEO_RAMDAC_H
diff --git a/src/devices/video/saa5050.cpp b/src/devices/video/saa5050.cpp
index a06a30299e0..cebcbe7e40e 100644
--- a/src/devices/video/saa5050.cpp
+++ b/src/devices/video/saa5050.cpp
@@ -26,14 +26,14 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SAA5050 = device_creator<saa5050_device>;
-const device_type SAA5051 = device_creator<saa5051_device>;
-const device_type SAA5052 = device_creator<saa5052_device>;
-const device_type SAA5053 = device_creator<saa5053_device>;
-const device_type SAA5054 = device_creator<saa5054_device>;
-const device_type SAA5055 = device_creator<saa5055_device>;
-const device_type SAA5056 = device_creator<saa5056_device>;
-const device_type SAA5057 = device_creator<saa5057_device>;
+DEFINE_DEVICE_TYPE(SAA5050, saa5050_device, "saa5050", "Mullard SA5050")
+DEFINE_DEVICE_TYPE(SAA5051, saa5051_device, "saa5051", "Mullard SA5051")
+DEFINE_DEVICE_TYPE(SAA5052, saa5052_device, "saa5052", "Mullard SA5052")
+DEFINE_DEVICE_TYPE(SAA5053, saa5053_device, "saa5053", "Mullard SA5053")
+DEFINE_DEVICE_TYPE(SAA5054, saa5054_device, "saa5054", "Mullard SA5054")
+DEFINE_DEVICE_TYPE(SAA5055, saa5055_device, "saa5055", "Mullard SA5055")
+DEFINE_DEVICE_TYPE(SAA5056, saa5056_device, "saa5056", "Mullard SA5056")
+DEFINE_DEVICE_TYPE(SAA5057, saa5057_device, "saa5057", "Mullard SA5057")
//-------------------------------------------------
@@ -174,8 +174,8 @@ const tiny_rom_entry *saa5057_device::device_rom_region() const
// saa5050_device - constructor
//-------------------------------------------------
-saa5050_device::saa5050_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+saa5050_device::saa5050_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
m_char_rom(*this, "chargen"),
m_read_d(*this),
m_frame_count(0),
@@ -186,36 +186,44 @@ saa5050_device::saa5050_device(const machine_config &mconfig, device_type type,
}
saa5050_device::saa5050_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SAA5050, "SAA5050 Video", tag, owner, clock, "saa5050", __FILE__),
- m_char_rom(*this, "chargen"),
- m_read_d(*this),
- m_frame_count(0),
- m_cols(0),
- m_rows(0),
- m_size(0)
+ saa5050_device(mconfig, SAA5050, tag, owner, clock)
{
}
saa5051_device::saa5051_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saa5050_device(mconfig, SAA5051, "SAA5051", tag, owner, clock, "saa5051", __FILE__) { }
+ : saa5050_device(mconfig, SAA5051, tag, owner, clock)
+{
+}
saa5052_device::saa5052_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saa5050_device(mconfig, SAA5052, "SAA5052", tag, owner, clock, "saa5052", __FILE__) { }
+ : saa5050_device(mconfig, SAA5052, tag, owner, clock)
+{
+}
saa5053_device::saa5053_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saa5050_device(mconfig, SAA5053, "SAA5053", tag, owner, clock, "saa5053", __FILE__) { }
+ : saa5050_device(mconfig, SAA5053, tag, owner, clock)
+{
+}
saa5054_device::saa5054_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saa5050_device(mconfig, SAA5054, "SAA5054", tag, owner, clock, "saa5054", __FILE__) { }
+ : saa5050_device(mconfig, SAA5054, tag, owner, clock)
+{
+}
saa5055_device::saa5055_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saa5050_device(mconfig, SAA5055, "SAA5055", tag, owner, clock, "saa5055", __FILE__) { }
+ : saa5050_device(mconfig, SAA5055, tag, owner, clock)
+{
+}
saa5056_device::saa5056_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saa5050_device(mconfig, SAA5056, "SAA5056", tag, owner, clock, "saa5056", __FILE__) { }
+ : saa5050_device(mconfig, SAA5056, tag, owner, clock)
+{
+}
saa5057_device::saa5057_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : saa5050_device(mconfig, SAA5057, "SAA5057", tag, owner, clock, "saa5057", __FILE__) { }
+ : saa5050_device(mconfig, SAA5057, tag, owner, clock)
+{
+}
diff --git a/src/devices/video/saa5050.h b/src/devices/video/saa5050.h
index c88d840227c..4d943cefd0b 100644
--- a/src/devices/video/saa5050.h
+++ b/src/devices/video/saa5050.h
@@ -23,10 +23,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_SAA5050_H
+#define MAME_VIDEO_SAA5050_H
-#ifndef __SAA5050__
-#define __SAA5050__
+#pragma once
@@ -54,12 +54,11 @@ class saa5050_device : public device_t
{
public:
// construction/destruction
- saa5050_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
saa5050_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_screen_size(device_t &device, int cols, int rows, int size) { downcast<saa5050_device &>(device).m_cols = cols; downcast<saa5050_device &>(device).m_rows = rows; downcast<saa5050_device &>(device).m_size = size; }
- template<class _Object> static devcb_base &set_d_rd_callback(device_t &device, _Object object) { return downcast<saa5050_device &>(device).m_read_d.set_callback(object); }
+ template <class Object> static devcb_base &set_d_rd_callback(device_t &device, Object &&cb) { return downcast<saa5050_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); }
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
@@ -78,6 +77,8 @@ public:
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
protected:
+ saa5050_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -254,15 +255,13 @@ public:
// device type definition
-extern const device_type SAA5050; // English
-extern const device_type SAA5051; // German
-extern const device_type SAA5052; // Swedish/Finnish
-extern const device_type SAA5053; // Italian
-extern const device_type SAA5054; // Belgian
-extern const device_type SAA5055; // US ASCII
-extern const device_type SAA5056; // Hebrew
-extern const device_type SAA5057; // Cyrillic
-
-
-
-#endif
+DECLARE_DEVICE_TYPE(SAA5050, saa5050_device) // English
+DECLARE_DEVICE_TYPE(SAA5051, saa5051_device) // German
+DECLARE_DEVICE_TYPE(SAA5052, saa5052_device) // Swedish/Finnish
+DECLARE_DEVICE_TYPE(SAA5053, saa5053_device) // Italian
+DECLARE_DEVICE_TYPE(SAA5054, saa5054_device) // Belgian
+DECLARE_DEVICE_TYPE(SAA5055, saa5055_device) // US ASCII
+DECLARE_DEVICE_TYPE(SAA5056, saa5056_device) // Hebrew
+DECLARE_DEVICE_TYPE(SAA5057, saa5057_device) // Cyrillic
+
+#endif // MAME_VIDEO_SAA5050_H
diff --git a/src/devices/video/scn2674.cpp b/src/devices/video/scn2674.cpp
index 517580c2231..e5058e3a90c 100644
--- a/src/devices/video/scn2674.cpp
+++ b/src/devices/video/scn2674.cpp
@@ -9,11 +9,11 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-#define S674VERBOSE 0
-#define LOG2674(x) do { if (S674VERBOSE) logerror x; } while (0)
-const device_type SCN2674_VIDEO = device_creator<scn2674_device>;
+DEFINE_DEVICE_TYPE(SCN2674_VIDEO, scn2674_device, "scn2674", "Signetics SCN2674 AVDC")
// default address map
@@ -22,19 +22,34 @@ static ADDRESS_MAP_START( scn2674_vram, AS_0, 8, scn2674_device )
ADDRESS_MAP_END
scn2674_device::scn2674_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SCN2674_VIDEO, "Signetics SCN2674 AVDC", tag, owner, clock, "scn2674_device", __FILE__),
- device_video_interface(mconfig, *this),
- device_memory_interface(mconfig, *this),
- m_irq_cb(*this), m_IR_pointer(0), m_screen1_l(0), m_screen1_h(0), m_cursor_l(0), m_cursor_h(0), m_screen2_l(0), m_screen2_h(0), m_irq_register(0), m_status_register(0), m_irq_mask(0),
- m_gfx_enabled(0), m_display_enabled(0), m_display_enabled_field(0), m_display_enabled_scanline(0), m_cursor_enabled(0), m_hpixels_per_column(0), m_text_hpixels_per_column(0),
- m_gfx_hpixels_per_column(0), m_IR0_double_ht_wd(0), m_IR0_scanline_per_char_row(0), m_IR0_sync_select(0), m_IR0_buffer_mode_select(0), m_IR1_interlace_enable(0), m_IR1_equalizing_constant(0),
- m_IR2_row_table(0), m_IR2_horz_sync_width(0), m_IR2_horz_back_porch(0), m_IR3_vert_front_porch(0), m_IR3_vert_back_porch(0), m_IR4_rows_per_screen(0), m_IR4_character_blink_rate_divisor(0),
- m_IR5_character_per_row(0), m_IR6_cursor_first_scanline(0), m_IR6_cursor_last_scanline(0), m_IR7_cursor_underline_position(0), m_IR7_cursor_rate_divisor(0), m_IR7_cursor_blink(0),
- m_IR7_vsync_width(0), m_IR8_display_buffer_first_address_LSB(0), m_IR9_display_buffer_first_address_MSB(0), m_IR9_display_buffer_last_address(0), m_IR10_display_pointer_address_lower(0),
- m_IR11_display_pointer_address_upper(0), m_IR11_reset_scanline_counter_on_scrollup(0), m_IR11_reset_scanline_counter_on_scrolldown(0), m_IR12_scroll_start(0), m_IR12_split_register_1(0),
- m_IR13_scroll_end(0), m_IR13_split_register_2(0), m_IR14_scroll_lines(0), m_IR14_double_1(0), m_IR14_double_2(0), m_spl1(0), m_spl2(0), m_dbl1(0), m_buffer(0), m_linecounter(0), m_address(0),
- m_start1change(0), m_irq_state(0), m_scanline_timer(nullptr),
- m_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(scn2674_vram))
+ : device_t(mconfig, SCN2674_VIDEO, tag, owner, clock)
+ , device_video_interface(mconfig, *this)
+ , device_memory_interface(mconfig, *this)
+ , m_irq_cb(*this)
+ , m_IR_pointer(0)
+ , m_screen1_l(0), m_screen1_h(0), m_cursor_l(0), m_cursor_h(0), m_screen2_l(0), m_screen2_h(0)
+ , m_irq_register(0), m_status_register(0), m_irq_mask(0)
+ , m_gfx_enabled(0), m_display_enabled(0), m_display_enabled_field(0), m_display_enabled_scanline(0), m_cursor_enabled(0)
+ , m_hpixels_per_column(0), m_text_hpixels_per_column(0), m_gfx_hpixels_per_column(0)
+ , m_IR0_double_ht_wd(0), m_IR0_scanline_per_char_row(0), m_IR0_sync_select(0), m_IR0_buffer_mode_select(0)
+ , m_IR1_interlace_enable(0), m_IR1_equalizing_constant(0)
+ , m_IR2_row_table(0), m_IR2_horz_sync_width(0), m_IR2_horz_back_porch(0)
+ , m_IR3_vert_front_porch(0), m_IR3_vert_back_porch(0)
+ , m_IR4_rows_per_screen(0), m_IR4_character_blink_rate_divisor(0)
+ , m_IR5_character_per_row(0)
+ , m_IR6_cursor_first_scanline(0), m_IR6_cursor_last_scanline(0)
+ , m_IR7_cursor_underline_position(0), m_IR7_cursor_rate_divisor(0), m_IR7_cursor_blink(0), m_IR7_vsync_width(0)
+ , m_IR8_display_buffer_first_address_LSB(0)
+ , m_IR9_display_buffer_first_address_MSB(0), m_IR9_display_buffer_last_address(0)
+ , m_IR10_display_pointer_address_lower(0)
+ , m_IR11_display_pointer_address_upper(0), m_IR11_reset_scanline_counter_on_scrollup(0), m_IR11_reset_scanline_counter_on_scrolldown(0)
+ , m_IR12_scroll_start(0), m_IR12_split_register_1(0)
+ , m_IR13_scroll_end(0), m_IR13_split_register_2(0)
+ , m_IR14_scroll_lines(0), m_IR14_double_1(0), m_IR14_double_2(0)
+ , m_spl1(0), m_spl2(0), m_dbl1(0)
+ , m_buffer(0), m_linecounter(0), m_address(0), m_start1change(0), m_irq_state(0)
+ , m_scanline_timer(nullptr)
+ , m_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(scn2674_vram))
{
}
@@ -119,7 +134,7 @@ void scn2674_device::device_reset()
// 15 Initialization Registers (8-bit each)
void scn2674_device::write_init_regs(uint8_t data)
{
- LOG2674(("scn2674_write_init_regs %02x %02x\n",m_IR_pointer,data));
+ LOG("scn2674_write_init_regs %02x %02x\n",m_IR_pointer,data);
switch ( m_IR_pointer) /* display some debug info, set mame specific variables */
{
@@ -129,18 +144,18 @@ void scn2674_device::write_init_regs(uint8_t data)
m_IR0_sync_select = (data&0x04)>>2;
m_IR0_buffer_mode_select = (data&0x03);
- LOG2674(("IR0 - Double Ht Wd %02x\n",m_IR0_double_ht_wd));//affects IR14 as well
- LOG2674(("IR0 - Scanlines per Character Row %02x\n",m_IR0_scanline_per_char_row));//value+1 = scanlines
- LOG2674(("IR0 - Sync Select %02x\n",m_IR0_sync_select));//1 = csync
- LOG2674(("IR0 - Buffer Mode Select %02x\n",m_IR0_buffer_mode_select)); //0 independent 1 transparent 2 shared 3 row
+ LOG("IR0 - Double Ht Wd %02x\n",m_IR0_double_ht_wd);//affects IR14 as well
+ LOG("IR0 - Scanlines per Character Row %02x\n",m_IR0_scanline_per_char_row);//value+1 = scanlines
+ LOG("IR0 - Sync Select %02x\n",m_IR0_sync_select);//1 = csync
+ LOG("IR0 - Buffer Mode Select %02x\n",m_IR0_buffer_mode_select); //0 independent 1 transparent 2 shared 3 row
break;
case 1:
m_IR1_interlace_enable = (data&0x80)>>7;
m_IR1_equalizing_constant = (data&0x7f)+1;
- LOG2674(("IR1 - Interlace Enable %02x\n",m_IR1_interlace_enable));
- LOG2674(("IR1 - Equalizing Constant %02i CCLKs\n",m_IR1_equalizing_constant));
+ LOG("IR1 - Interlace Enable %02x\n",m_IR1_interlace_enable);
+ LOG("IR1 - Equalizing Constant %02i CCLKs\n",m_IR1_equalizing_constant);
break;
case 2:
@@ -148,25 +163,25 @@ void scn2674_device::write_init_regs(uint8_t data)
m_IR2_horz_sync_width = (((data&0x78)>>3)*2) + 2;
m_IR2_horz_back_porch = ((data&0x07)*4) - 1;
- LOG2674(("IR2 - Row Table %02x\n",m_IR2_row_table));
- LOG2674(("IR2 - Horizontal Sync Width %02i CCLKs\n",m_IR2_horz_sync_width));
- LOG2674(("IR2 - Horizontal Back Porch %02i CCLKs\n",m_IR2_horz_back_porch));
+ LOG("IR2 - Row Table %02x\n",m_IR2_row_table);
+ LOG("IR2 - Horizontal Sync Width %02i CCLKs\n",m_IR2_horz_sync_width);
+ LOG("IR2 - Horizontal Back Porch %02i CCLKs\n",m_IR2_horz_back_porch);
break;
case 3:
m_IR3_vert_front_porch = (((data&0xe0)>>5) * 4)+4 ;
m_IR3_vert_back_porch = ((data&0x1f) * 2) + 4;
- LOG2674(("IR3 - Vertical Front Porch %02i Lines\n",m_IR3_vert_front_porch));
- LOG2674(("IR3 - Vertical Back Porch %02i Lines\n",m_IR3_vert_back_porch));
+ LOG("IR3 - Vertical Front Porch %02i Lines\n",m_IR3_vert_front_porch);
+ LOG("IR3 - Vertical Back Porch %02i Lines\n",m_IR3_vert_back_porch);
break;
case 4:
m_IR4_rows_per_screen = (data&0x7f) + 1;
m_IR4_character_blink_rate_divisor = ((data & 0x80)>>7 ? 128:64);
- LOG2674(("IR4 - Rows Per Screen %02i\n",m_IR4_rows_per_screen));
- LOG2674(("IR4 - Character Blink Rate = 1/%02i\n",m_IR4_character_blink_rate_divisor));
+ LOG("IR4 - Rows Per Screen %02i\n",m_IR4_rows_per_screen);
+ LOG("IR4 - Character Blink Rate = 1/%02i\n",m_IR4_character_blink_rate_divisor);
break;
case 5:
@@ -174,14 +189,14 @@ void scn2674_device::write_init_regs(uint8_t data)
cccc cccc
c = Characters Per Row */
m_IR5_character_per_row = data + 1;
- LOG2674(("IR5 - Active Characters Per Row %02i\n",m_IR5_character_per_row));
+ LOG("IR5 - Active Characters Per Row %02i\n",m_IR5_character_per_row);
break;
case 6:
m_IR6_cursor_last_scanline = (data & 0x0f);
m_IR6_cursor_first_scanline = (data & 0xf0)>>4;
- LOG2674(("IR6 - First Line of Cursor %02x\n",m_IR6_cursor_first_scanline));
- LOG2674(("IR6 - Last Line of Cursor %02x\n",m_IR6_cursor_last_scanline));
+ LOG("IR6 - First Line of Cursor %02x\n",m_IR6_cursor_first_scanline);
+ LOG("IR6 - Last Line of Cursor %02x\n",m_IR6_cursor_last_scanline);
break;
case 7:
@@ -193,28 +208,28 @@ void scn2674_device::write_init_regs(uint8_t data)
m_IR7_vsync_width = vsync_table[(data & 0xC0)>>6];
- LOG2674(("IR7 - Underline Position %02x\n",m_IR7_cursor_underline_position));
- LOG2674(("IR7 - Cursor rate 1/%02i\n",m_IR7_cursor_rate_divisor));
- LOG2674(("IR7 - Cursor blink %02x\n",m_IR7_cursor_blink));
- LOG2674(("IR7 - Vsync Width %02i Lines\n",m_IR7_vsync_width));
+ LOG("IR7 - Underline Position %02x\n",m_IR7_cursor_underline_position);
+ LOG("IR7 - Cursor rate 1/%02i\n",m_IR7_cursor_rate_divisor);
+ LOG("IR7 - Cursor blink %02x\n",m_IR7_cursor_blink);
+ LOG("IR7 - Vsync Width %02i Lines\n",m_IR7_vsync_width);
break;
}
case 8:
m_IR8_display_buffer_first_address_LSB = data;
- LOG2674(("IR8 - Display Buffer First Address LSB %02x\n",m_IR8_display_buffer_first_address_LSB));
+ LOG("IR8 - Display Buffer First Address LSB %02x\n",m_IR8_display_buffer_first_address_LSB);
break;
case 9:
m_IR9_display_buffer_first_address_MSB = data & 0x0f;
m_IR9_display_buffer_last_address = (data & 0xf0)>>4;
- LOG2674(("IR9 - Display Buffer First Address MSB %02x\n",m_IR9_display_buffer_first_address_MSB));
- LOG2674(("IR9 - Display Buffer Last Address %02x\n",m_IR9_display_buffer_last_address));
+ LOG("IR9 - Display Buffer First Address MSB %02x\n",m_IR9_display_buffer_first_address_MSB);
+ LOG("IR9 - Display Buffer Last Address %02x\n",m_IR9_display_buffer_last_address);
break;
case 10:
m_IR10_display_pointer_address_lower = data;
- LOG2674(("IR10 - Display Pointer Address Lower %02x\n",m_IR10_display_pointer_address_lower));
+ LOG("IR10 - Display Pointer Address Lower %02x\n",m_IR10_display_pointer_address_lower);
break;
case 11:
@@ -222,23 +237,23 @@ void scn2674_device::write_init_regs(uint8_t data)
m_IR11_reset_scanline_counter_on_scrollup= (data&0x40 >> 6);
m_IR11_reset_scanline_counter_on_scrolldown= (data&0x80 >> 7);
- LOG2674(("IR11 - Display Pointer Address Lower %02x\n",m_IR11_display_pointer_address_upper));
- LOG2674(("IR11 - Reset Scanline Counter on Scroll Up %02x\n",m_IR11_reset_scanline_counter_on_scrollup));
- LOG2674(("IR11 - Reset Scanline Counter on Scroll Down %02x\n",m_IR11_reset_scanline_counter_on_scrolldown));
+ LOG("IR11 - Display Pointer Address Lower %02x\n",m_IR11_display_pointer_address_upper);
+ LOG("IR11 - Reset Scanline Counter on Scroll Up %02x\n",m_IR11_reset_scanline_counter_on_scrollup);
+ LOG("IR11 - Reset Scanline Counter on Scroll Down %02x\n",m_IR11_reset_scanline_counter_on_scrolldown);
break;
case 12:
m_IR12_scroll_start = (data & 0x80)>>7;
m_IR12_split_register_1 = (data & 0x7f);
- LOG2674(("IR12 - Scroll Start %02x\n",m_IR12_scroll_start));
- LOG2674(("IR12 - Split Register 1 %02x\n",m_IR12_split_register_1));
+ LOG("IR12 - Scroll Start %02x\n",m_IR12_scroll_start);
+ LOG("IR12 - Split Register 1 %02x\n",m_IR12_split_register_1);
break;
case 13:
m_IR13_scroll_end = (data & 0x80)>>7;
m_IR13_split_register_2 = (data & 0x7f);
- LOG2674(("IR13 - Scroll End %02x\n",m_IR13_scroll_end));
- LOG2674(("IR13 - Split Register 2 %02x\n",m_IR13_split_register_2));
+ LOG("IR13 - Scroll End %02x\n",m_IR13_scroll_end);
+ LOG("IR13 - Split Register 2 %02x\n",m_IR13_split_register_2);
break;
case 14:
@@ -246,15 +261,15 @@ void scn2674_device::write_init_regs(uint8_t data)
if (!m_IR0_double_ht_wd)
{
m_IR14_double_2 = (data & 0x30)>>4;
- LOG2674(("IR14 - Double 2 %02x\n",m_IR14_double_2));
+ LOG("IR14 - Double 2 %02x\n",m_IR14_double_2);
}
//0 normal, 1, double width, 2, double width and double tops 3, double width and double bottoms
//1 affects SSR1, 2 affects SSR2
//If Double Height enabled in IR0, Screen start 1 upper (bits 7 and 6)replace Double 1, and Double 2 is unused
m_IR14_double_1 = (data & 0xc0)>>6;
- LOG2674(("IR14 - Double 1 %02x\n",m_IR14_double_1));
+ LOG("IR14 - Double 1 %02x\n",m_IR14_double_1);
- LOG2674(("IR14 - Scroll Lines %02i\n",m_IR14_scroll_lines));
+ LOG("IR14 - Scroll Lines %02i\n",m_IR14_scroll_lines);
break;
case 15: /* not valid! */
@@ -276,7 +291,7 @@ void scn2674_device::write_command(uint8_t data)
if (data==0x00)
{
/* master reset, configures registers */
- LOG2674(("master reset\n"));
+ LOG("master reset\n");
m_IR_pointer=0;
m_irq_register = 0x00;
m_status_register = 0x20;//RDFLG activated
@@ -292,7 +307,7 @@ void scn2674_device::write_command(uint8_t data)
{
/* set IR pointer */
operand = data & 0x0f;
- LOG2674(("set IR pointer %02x\n",operand));
+ LOG("set IR pointer %02x\n",operand);
m_IR_pointer=operand;
@@ -303,7 +318,7 @@ void scn2674_device::write_command(uint8_t data)
if ((data&0xe3)==0x22)
{
/* Disable GFX */
- LOG2674(("disable GFX %02x\n",data));
+ LOG("disable GFX %02x\n",data);
m_gfx_enabled = 0;
recompute_parameters();
}
@@ -311,7 +326,7 @@ void scn2674_device::write_command(uint8_t data)
if ((data&0xe3)==0x23)
{
/* Enable GFX */
- LOG2674(("enable GFX %02x\n",data));
+ LOG("enable GFX %02x\n",data);
m_gfx_enabled = 1;
recompute_parameters();
}
@@ -324,9 +339,9 @@ void scn2674_device::write_command(uint8_t data)
m_display_enabled = 0;
if (operand)
- LOG2674(("display OFF - float DADD bus %02x\n",data));
+ LOG("display OFF - float DADD bus %02x\n",data);
else
- LOG2674(("display OFF - no float DADD bus %02x\n",data));
+ LOG("display OFF - no float DADD bus %02x\n",data);
}
if ((data&0xe9)==0x29)
@@ -337,12 +352,12 @@ void scn2674_device::write_command(uint8_t data)
if (operand)
{
m_display_enabled_field = 1;
- LOG2674(("display ON - next field %02x\n",data));
+ LOG("display ON - next field %02x\n",data);
}
else
{
m_display_enabled_scanline = 1;
- LOG2674(("display ON - next scanline %02x\n",data));
+ LOG("display ON - next scanline %02x\n",data);
}
recompute_parameters(); // start the scanline timer
}
@@ -350,14 +365,14 @@ void scn2674_device::write_command(uint8_t data)
if ((data&0xf1)==0x30)
{
/* Cursor Off */
- LOG2674(("cursor off %02x\n",data));
+ LOG("cursor off %02x\n",data);
m_cursor_enabled = 0;
}
if ((data&0xf1)==0x31)
{
/* Cursor On */
- LOG2674(("cursor on %02x\n",data));
+ LOG("cursor on %02x\n",data);
m_cursor_enabled = 1;
}
@@ -367,17 +382,17 @@ void scn2674_device::write_command(uint8_t data)
{
/* Reset Interrupt / Status bit */
operand = data & 0x1f;
- LOG2674(("reset interrupt / status bit %02x\n",operand));
+ LOG("reset interrupt / status bit %02x\n",operand);
m_irq_register &= ~(data & 0x1f);
m_status_register &= ~(data & 0x1f);
- LOG2674(("IRQ Status after reset\n"));
- LOG2674(("Split 2 IRQ: %d Active\n",(m_irq_register>>0)&1));
- LOG2674(("Ready IRQ: %d Active\n",(m_irq_register>>1)&1));
- LOG2674(("Split 1 IRQ: %d Active\n",(m_irq_register>>2)&1));
- LOG2674(("Line Zero IRQ: %d Active\n",(m_irq_register>>3)&1));
- LOG2674(("V-Blank IRQ: %d Active\n",(m_irq_register>>4)&1));
+ LOG("IRQ Status after reset\n");
+ LOG("Split 2 IRQ: %d Active\n",(m_irq_register>>0)&1);
+ LOG("Ready IRQ: %d Active\n",(m_irq_register>>1)&1);
+ LOG("Split 1 IRQ: %d Active\n",(m_irq_register>>2)&1);
+ LOG("Line Zero IRQ: %d Active\n",(m_irq_register>>3)&1);
+ LOG("V-Blank IRQ: %d Active\n",(m_irq_register>>4)&1);
m_irq_state = 0;
@@ -396,12 +411,12 @@ void scn2674_device::write_command(uint8_t data)
/* Disable Interrupt mask*/
operand = data & 0x1f;
m_irq_mask &= ~(operand);
- LOG2674(("IRQ Mask after disable %x\n",operand));
- LOG2674(("Split 2 IRQ: %d Unmasked\n",(m_irq_mask>>0)&1));
- LOG2674(("Ready IRQ: %d Unmasked\n",(m_irq_mask>>1)&1));
- LOG2674(("Split 1 IRQ: %d Unmasked\n",(m_irq_mask>>2)&1));
- LOG2674(("Line Zero IRQ: %d Unmasked\n",(m_irq_mask>>3)&1));
- LOG2674(("V-Blank IRQ: %d Unmasked\n",(m_irq_mask>>4)&1));
+ LOG("IRQ Mask after disable %x\n",operand);
+ LOG("Split 2 IRQ: %d Unmasked\n",(m_irq_mask>>0)&1);
+ LOG("Ready IRQ: %d Unmasked\n",(m_irq_mask>>1)&1);
+ LOG("Split 1 IRQ: %d Unmasked\n",(m_irq_mask>>2)&1);
+ LOG("Line Zero IRQ: %d Unmasked\n",(m_irq_mask>>3)&1);
+ LOG("V-Blank IRQ: %d Unmasked\n",(m_irq_mask>>4)&1);
}
@@ -411,12 +426,12 @@ void scn2674_device::write_command(uint8_t data)
operand = data & 0x1f;
m_irq_mask |= (data & 0x1f);
- LOG2674(("IRQ Mask after enable %x\n",operand));
- LOG2674(("Split 2 IRQ: %d Unmasked\n",(m_irq_mask>>0)&1));
- LOG2674(("Ready IRQ: %d Unmasked\n",(m_irq_mask>>1)&1));
- LOG2674(("Split 1 IRQ: %d Unmasked\n",(m_irq_mask>>2)&1));
- LOG2674(("Line Zero IRQ: %d Unmasked\n",(m_irq_mask>>3)&1));
- LOG2674(("V-Blank IRQ: %d Unmasked\n",(m_irq_mask>>4)&1));
+ LOG("IRQ Mask after enable %x\n",operand);
+ LOG("Split 2 IRQ: %d Unmasked\n",(m_irq_mask>>0)&1);
+ LOG("Ready IRQ: %d Unmasked\n",(m_irq_mask>>1)&1);
+ LOG("Split 1 IRQ: %d Unmasked\n",(m_irq_mask>>2)&1);
+ LOG("Line Zero IRQ: %d Unmasked\n",(m_irq_mask>>3)&1);
+ LOG("V-Blank IRQ: %d Unmasked\n",(m_irq_mask>>4)&1);
}
@@ -428,38 +443,38 @@ void scn2674_device::write_command(uint8_t data)
case 0xa4:
/* read at pointer address */
m_buffer = space().read_byte(m_screen2_l | (m_screen2_h << 8));
- LOG2674(("DELAYED read at pointer address %02x\n",data));
+ LOG("DELAYED read at pointer address %02x\n",data);
break;
case 0xa2:
/* write at pointer address */
space().write_byte(m_screen2_l | (m_screen2_h << 8), m_buffer);
- LOG2674(("DELAYED write at pointer address %02x\n",data));
+ LOG("DELAYED write at pointer address %02x\n",data);
break;
case 0xa6: // used by the Octopus
/* write at pointer address */
space().write_byte((m_IR10_display_pointer_address_lower | (m_IR11_display_pointer_address_upper << 8)), m_buffer);
- LOG2674(("DELAYED write at display pointer address %02x\n",data));
+ LOG("DELAYED write at display pointer address %02x\n",data);
break;
case 0xa9:
/* increment cursor address */
if(!(++m_cursor_l))
m_cursor_h++;
- LOG2674(("DELAYED increase cursor address %02x\n",data));
+ LOG("DELAYED increase cursor address %02x\n",data);
break;
case 0xac:
/* read at cursor address */
m_buffer = space().read_byte(m_cursor_l | (m_cursor_h << 8));
- LOG2674(("DELAYED read at cursor address %02x\n",data));
+ LOG("DELAYED read at cursor address %02x\n",data);
break;
case 0xaa:
/* write at cursor address */
space().write_byte(m_cursor_l | (m_cursor_h << 8), m_buffer);
- LOG2674(("DELAYED write at cursor address %02x\n",data));
+ LOG("DELAYED write at cursor address %02x\n",data);
break;
case 0xad:
@@ -467,7 +482,7 @@ void scn2674_device::write_command(uint8_t data)
m_buffer = space().read_byte(m_cursor_l | (m_cursor_h << 8));
if(!(++m_cursor_l))
m_cursor_h++;
- LOG2674(("DELAYED read at cursor address+increment %02x\n",data));
+ LOG("DELAYED read at cursor address+increment %02x\n",data);
break;
case 0xab:
@@ -476,7 +491,7 @@ void scn2674_device::write_command(uint8_t data)
space().write_byte(m_cursor_l | (m_cursor_h << 8), m_buffer);
if(!(++m_cursor_l))
m_cursor_h++;
- LOG2674(("DELAYED write at cursor address+increment %02x\n",data));
+ LOG("DELAYED write at cursor address+increment %02x\n",data);
break;
case 0xbb:
@@ -486,12 +501,12 @@ void scn2674_device::write_command(uint8_t data)
space().write_byte(i, m_buffer); // get the last
m_cursor_l = m_screen2_l;
m_cursor_h = m_screen2_h;
- LOG2674(("DELAYED write from cursor address to pointer address %02x\n",data));
+ LOG("DELAYED write from cursor address to pointer address %02x\n",data);
break;
case 0xbd:
/* read from cursor address to pointer address */
- LOG2674(("DELAYED read from cursor address to pointer address %02x\n",data));
+ LOG("DELAYED read from cursor address to pointer address %02x\n",data);
break;
case 0xbf:
@@ -501,7 +516,7 @@ void scn2674_device::write_command(uint8_t data)
space().write_byte(i, m_buffer); // get the last
m_cursor_l = m_IR10_display_pointer_address_lower;
m_cursor_h = m_IR11_display_pointer_address_upper;
- LOG2674(("DELAYED write from cursor address to pointer address %02x\n",data));
+ LOG("DELAYED write from cursor address to pointer address %02x\n",data);
break;
}
}
@@ -537,19 +552,19 @@ READ8_MEMBER( scn2674_device::read )
*/
case 0:
- LOG2674(("Read Irq Register %02x %06x\n",m_irq_register,space.device().safe_pc()));
+ LOG("Read Irq Register %02x %06x\n",m_irq_register,space.device().safe_pc());
return m_irq_register;
case 1:
- LOG2674(("Read Status Register %02X %06x\n",m_status_register,space.device().safe_pc()));
+ LOG("Read Status Register %02X %06x\n",m_status_register,space.device().safe_pc());
return m_status_register;
- case 2: LOG2674(("Read Screen1_l Register %06x\n",space.device().safe_pc()));return m_screen1_l;
- case 3: LOG2674(("Read Screen1_h Register %06x\n",space.device().safe_pc()));return m_screen1_h & 0x3f;
- case 4: LOG2674(("Read Cursor_l Register %06x\n",space.device().safe_pc()));return m_cursor_l;
- case 5: LOG2674(("Read Cursor_h Register %06x\n",space.device().safe_pc()));return m_cursor_h;
- case 6: LOG2674(("Read Screen2_l Register %06x\n",space.device().safe_pc()));return m_screen2_l;
- case 7: LOG2674(("Read Screen2_h Register %06x\n",space.device().safe_pc()));return m_screen2_h;
+ case 2: LOG("Read Screen1_l Register %06x\n",space.device().safe_pc());return m_screen1_l;
+ case 3: LOG("Read Screen1_h Register %06x\n",space.device().safe_pc());return m_screen1_h & 0x3f;
+ case 4: LOG("Read Cursor_l Register %06x\n",space.device().safe_pc());return m_cursor_l;
+ case 5: LOG("Read Cursor_h Register %06x\n",space.device().safe_pc());return m_cursor_h;
+ case 6: LOG("Read Screen2_l Register %06x\n",space.device().safe_pc());return m_screen2_l;
+ case 7: LOG("Read Screen2_h Register %06x\n",space.device().safe_pc());return m_screen2_h;
}
return 0xff;
@@ -592,7 +607,7 @@ WRITE8_MEMBER( scn2674_device::write )
{
m_IR14_double_1 = m_dbl1;
m_screen1_h &= 0x3f;
- LOG2674(("IR14 - Double 1 overridden %02x\n",m_IR14_double_1));
+ LOG("IR14 - Double 1 overridden %02x\n",m_IR14_double_1);
}
if(!m_screen->vblank())
m_start1change = (m_linecounter / m_IR0_scanline_per_char_row) + 1;
@@ -624,7 +639,7 @@ void scn2674_device::recompute_parameters()
return;
}
- LOG2674(("width %u height %u max_x %u max_y %u refresh %f\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, 1 / ATTOSECONDS_TO_DOUBLE(refresh)));
+ LOG("width %u height %u max_x %u max_y %u refresh %f\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
rectangle visarea;
visarea.set(0, max_visible_x, 0, max_visible_y);
@@ -660,7 +675,7 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para
m_status_register |= 0x10;
if(m_irq_mask & 0x10)
{
- LOG2674(("vblank irq\n"));
+ LOG("vblank irq\n");
m_irq_state = 1;
m_irq_register |= 0x10;
m_irq_cb(1);
@@ -679,7 +694,7 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para
m_status_register |= 0x08;
if (m_irq_mask & 0x08)
{
- LOG2674(("SCN2674 Line Zero\n"));
+ LOG("SCN2674 Line Zero\n");
m_irq_state = 1;
m_irq_register |= 0x08;
m_irq_cb(1);
@@ -691,7 +706,7 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para
m_status_register |= 0x04;
if(m_irq_mask & 0x04)
{
- LOG2674(("SCN2674 Split Screen 1 irq\n"));
+ LOG("SCN2674 Split Screen 1 irq\n");
m_irq_state = 1;
m_irq_register |= 0x04;
m_irq_cb(1);
@@ -707,7 +722,7 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para
m_status_register |= 0x01;
if(m_irq_mask & 0x01)
{
- LOG2674(("SCN2674 Split Screen 2 irq\n"));
+ LOG("SCN2674 Split Screen 2 irq\n");
m_irq_state = 1;
m_irq_register |= 0x01;
m_irq_cb(1);
diff --git a/src/devices/video/scn2674.h b/src/devices/video/scn2674.h
index 2353a84cbcb..1c7c724a399 100644
--- a/src/devices/video/scn2674.h
+++ b/src/devices/video/scn2674.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Carl
-#ifndef SCN2674_H
-#define SCN2674_H
+#ifndef MAME_VIDEO_SCN2674_H
+#define MAME_VIDEO_SCN2674_H
+
+#pragma once
#define MCFG_SCN2674_VIDEO_ADD(_tag, _clock, _irq) \
@@ -29,10 +31,10 @@ public:
typedef device_delegate<void (bitmap_rgb32 &bitmap, int x, int y, uint8_t linecount, uint8_t charcode, uint16_t address, uint8_t cursor, uint8_t dw, uint8_t lg, uint8_t ul, uint8_t blink)> draw_character_delegate;
// static configuration
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<scn2674_device &>(device).m_irq_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<scn2674_device &>(device).m_irq_cb.set_callback(std::forward<Object>(cb)); }
static void static_set_character_width(device_t &device, int value) { downcast<scn2674_device &>(device).m_text_hpixels_per_column = value; }
static void static_set_gfx_character_width(device_t &device, int value) { downcast<scn2674_device &>(device).m_gfx_hpixels_per_column = value; }
- static void static_set_display_callback(device_t &device, draw_character_delegate callback) { downcast<scn2674_device &>(device).m_display_cb = callback; }
+ static void static_set_display_callback(device_t &device, draw_character_delegate &&cb) { downcast<scn2674_device &>(device).m_display_cb = std::move(cb); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -40,7 +42,7 @@ public:
DECLARE_WRITE8_MEMBER( buffer_w ) { m_buffer = data; }
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_0) ? &m_space_config : nullptr; }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_0) ? &m_space_config : nullptr; }
protected:
virtual void device_start() override;
@@ -127,6 +129,6 @@ private:
};
-extern const device_type SCN2674_VIDEO;
+DECLARE_DEVICE_TYPE(SCN2674_VIDEO, scn2674_device)
-#endif
+#endif // MAME_VIDEO_SCN2674_H
diff --git a/src/devices/video/sed1200.cpp b/src/devices/video/sed1200.cpp
index d25d6ea9d61..371832f579a 100644
--- a/src/devices/video/sed1200.cpp
+++ b/src/devices/video/sed1200.cpp
@@ -16,10 +16,10 @@
#include "emu.h"
#include "sed1200.h"
-const device_type SED1200D0A = device_creator<sed1200d0a_device>;
-const device_type SED1200F0A = device_creator<sed1200f0a_device>;
-const device_type SED1200D0B = device_creator<sed1200d0b_device>;
-const device_type SED1200F0B = device_creator<sed1200f0b_device>;
+DEFINE_DEVICE_TYPE(SED1200D0A, sed1200d0a_device, "sed1200da", "Epson SED1200D-0A")
+DEFINE_DEVICE_TYPE(SED1200F0A, sed1200f0a_device, "sed1200fa", "Epson SED1200F-0A")
+DEFINE_DEVICE_TYPE(SED1200D0B, sed1200d0b_device, "sed1200db", "Epson SED1200D-0B")
+DEFINE_DEVICE_TYPE(SED1200F0B, sed1200f0b_device, "sed1200fb", "Epson SED1200F-0B")
ROM_START( sed1200x0a )
ROM_REGION( 0x800, "cgrom", 0 )
@@ -31,28 +31,28 @@ ROM_START( sed1200x0b )
ROM_LOAD( "sed1200-b.bin", 0x000, 0x800, CRC(d0741f51) SHA1(c8c856f1357286a2c8c806af81724a828345357e))
ROM_END
-sed1200_device::sed1200_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source), cursor_direction(false), cursor_blinking(false), cursor_full(false), cursor_on(false), display_on(false), cursor_address(0), cgram_address(0), cgrom(nullptr)
+sed1200_device::sed1200_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock), cursor_direction(false), cursor_blinking(false), cursor_full(false), cursor_on(false), display_on(false), cursor_address(0), cgram_address(0), cgrom(nullptr)
{
}
sed1200d0a_device::sed1200d0a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- sed1200_device(mconfig, SED1200D0A, "sed1200d-0a", tag, owner, clock, "sed1200da", __FILE__)
+ sed1200_device(mconfig, SED1200D0A, tag, owner, clock)
{
}
sed1200f0a_device::sed1200f0a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- sed1200_device(mconfig, SED1200F0A, "sed1200f-0a", tag, owner, clock, "sed1200fa", __FILE__)
+ sed1200_device(mconfig, SED1200F0A, tag, owner, clock)
{
}
sed1200d0b_device::sed1200d0b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- sed1200_device(mconfig, SED1200D0B, "sed1200d-0b", tag, owner, clock, "sed1200db", __FILE__)
+ sed1200_device(mconfig, SED1200D0B, tag, owner, clock)
{
}
sed1200f0b_device::sed1200f0b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- sed1200_device(mconfig, SED1200F0B, "sed1200f-0b", tag, owner, clock, "sed1200fb", __FILE__)
+ sed1200_device(mconfig, SED1200F0B, tag, owner, clock)
{
}
diff --git a/src/devices/video/sed1200.h b/src/devices/video/sed1200.h
index 454e3585968..521bd4e027c 100644
--- a/src/devices/video/sed1200.h
+++ b/src/devices/video/sed1200.h
@@ -12,8 +12,10 @@
***************************************************************************/
-#ifndef __SED1200_H__
-#define __SED1200_H__
+#ifndef MAME_VIDEO_SED1200_H
+#define MAME_VIDEO_SED1200_H
+
+#pragma once
#define MCFG_SED1200D0A_ADD( _tag ) \
MCFG_DEVICE_ADD( _tag, SED1200D0A, 0 )
@@ -29,8 +31,6 @@
class sed1200_device : public device_t {
public:
- sed1200_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
void control_w(uint8_t data);
uint8_t control_r();
void data_w(uint8_t data);
@@ -38,6 +38,8 @@ public:
const uint8_t *render();
protected:
+ sed1200_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
private:
@@ -84,9 +86,9 @@ protected:
virtual const tiny_rom_entry *device_rom_region() const override;
};
-extern const device_type SED1200D0A;
-extern const device_type SED1200F0A;
-extern const device_type SED1200D0B;
-extern const device_type SED1200F0B;
+DECLARE_DEVICE_TYPE(SED1200D0A, sed1200d0a_device)
+DECLARE_DEVICE_TYPE(SED1200F0A, sed1200f0a_device)
+DECLARE_DEVICE_TYPE(SED1200D0B, sed1200d0b_device)
+DECLARE_DEVICE_TYPE(SED1200F0B, sed1200f0b_device)
-#endif
+#endif // MAME_VIDEO_SED1200_H
diff --git a/src/devices/video/sed1330.cpp b/src/devices/video/sed1330.cpp
index d7cb154cb91..0336205784a 100644
--- a/src/devices/video/sed1330.cpp
+++ b/src/devices/video/sed1330.cpp
@@ -9,14 +9,15 @@
#include "emu.h"
#include "sed1330.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
#define INSTRUCTION_SYSTEM_SET 0x40
#define INSTRUCTION_SLEEP_IN 0x53 // unimplemented
@@ -61,7 +62,7 @@
//**************************************************************************
// device type definition
-const device_type SED1330 = device_creator<sed1330_device>;
+DEFINE_DEVICE_TYPE(SED1330, sed1330_device, "sed1330", "Epson SED1330")
// default address map
@@ -139,7 +140,7 @@ inline void sed1330_device::increment_csr()
//-------------------------------------------------
sed1330_device::sed1330_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SED1330, "SED1330", tag, owner, clock, "sed1330", __FILE__),
+ : device_t(mconfig, SED1330, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_bf(0),
@@ -230,7 +231,7 @@ const address_space_config *sed1330_device::memory_space_config(address_spacenum
READ8_MEMBER( sed1330_device::status_r )
{
- if (LOG) logerror("SED1330 '%s' Status Read: %s\n", tag(), m_bf ? "busy" : "ready");
+ LOG("SED1330 Status Read: %s\n", m_bf ? "busy" : "ready");
return m_bf << 6;
}
@@ -257,15 +258,12 @@ WRITE8_MEMBER( sed1330_device::command_w )
case INSTRUCTION_CSRDIR_DOWN:
m_cd = data & 0x03;
- if (LOG)
+ switch (m_cd)
{
- switch (m_cd)
- {
- case CSRDIR_RIGHT: logerror("SED1330 '%s' Cursor Direction: Right\n", tag()); break;
- case CSRDIR_LEFT: logerror("SED1330 '%s' Cursor Direction: Left\n", tag()); break;
- case CSRDIR_UP: logerror("SED1330 '%s' Cursor Direction: Up\n", tag()); break;
- case CSRDIR_DOWN: logerror("SED1330 '%s' Cursor Direction: Down\n", tag()); break;
- }
+ case CSRDIR_RIGHT: LOG("SED1330 Cursor Direction: Right\n"); break;
+ case CSRDIR_LEFT: LOG("SED1330 Cursor Direction: Left\n"); break;
+ case CSRDIR_UP: LOG("SED1330 Cursor Direction: Up\n"); break;
+ case CSRDIR_DOWN: LOG("SED1330 Cursor Direction: Down\n"); break;
}
break;
}
@@ -280,7 +278,7 @@ READ8_MEMBER( sed1330_device::data_r )
{
uint8_t data = readbyte(m_csr);
- if (LOG) logerror("SED1330 '%s' Memory Read %02x from %04x\n", tag(), data, m_csr);
+ LOG("SED1330 Memory Read %02x from %04x\n", data, m_csr);
increment_csr();
@@ -306,45 +304,39 @@ WRITE8_MEMBER( sed1330_device::data_w )
m_ws = BIT(data, 3);
m_iv = BIT(data, 5);
- if (LOG)
- {
- logerror("SED1330 '%s' %s CG ROM\n", tag(), BIT(data, 0) ? "External" : "Internal");
- logerror("SED1330 '%s' D6 Correction: %s\n", tag(), BIT(data, 1) ? "enabled" : "disabled");
- logerror("SED1330 '%s' Character Height: %u\n", tag(), BIT(data, 2) ? 16 : 8);
- logerror("SED1330 '%s' %s Panel Drive\n", tag(), BIT(data, 3) ? "Dual" : "Single");
- logerror("SED1330 '%s' Screen Top-Line Correction: %s\n", tag(), BIT(data, 5) ? "disabled" : "enabled");
- }
+ LOG("SED1330 %s CG ROM\n", BIT(data, 0) ? "External" : "Internal");
+ LOG("SED1330 D6 Correction: %s\n", BIT(data, 1) ? "enabled" : "disabled");
+ LOG("SED1330 Character Height: %u\n", BIT(data, 2) ? 16 : 8);
+ LOG("SED1330 %s Panel Drive\n", BIT(data, 3) ? "Dual" : "Single");
+ LOG("SED1330 Screen Top-Line Correction: %s\n", BIT(data, 5) ? "disabled" : "enabled");
break;
case 1:
m_fx = (data & 0x07) + 1;
m_wf = BIT(data, 7);
- if (LOG)
- {
- logerror("SED1330 '%s' Horizontal Character Size: %u\n", tag(), m_fx);
- logerror("SED1330 '%s' %s AC Drive\n", tag(), BIT(data, 7) ? "2-frame" : "16-line");
- }
+ LOG("SED1330 Horizontal Character Size: %u\n", m_fx);
+ LOG("SED1330 %s AC Drive\n", BIT(data, 7) ? "2-frame" : "16-line");
break;
case 2:
m_fy = (data & 0x0f) + 1;
- if (LOG) logerror("SED1330 '%s' Vertical Character Size: %u\n", tag(), m_fy);
+ LOG("SED1330 Vertical Character Size: %u\n", m_fy);
break;
case 3:
m_cr = data + 1;
- if (LOG) logerror("SED1330 '%s' Visible Characters Per Line: %u\n", tag(), m_cr);
+ LOG("SED1330 Visible Characters Per Line: %u\n", m_cr);
break;
case 4:
m_tcr = data + 1;
- if (LOG) logerror("SED1330 '%s' Total Characters Per Line: %u\n", tag(), m_tcr);
+ LOG("SED1330 Total Characters Per Line: %u\n", m_tcr);
break;
case 5:
m_lf = data + 1;
- if (LOG) logerror("SED1330 '%s' Frame Height: %u\n", tag(), m_lf);
+ LOG("SED1330 Frame Height: %u\n", m_lf);
break;
case 6:
@@ -353,11 +345,11 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 7:
m_ap = (data << 8) | (m_ap & 0xff);
- if (LOG) logerror("SED1330 '%s' Virtual Screen Width: %u\n", tag(), m_ap);
+ LOG("SED1330 Virtual Screen Width: %u\n", m_ap);
break;
default:
- logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data);
+ logerror("SED1330 Invalid parameter byte %02x\n", data);
}
break;
@@ -366,41 +358,38 @@ WRITE8_MEMBER( sed1330_device::data_w )
m_d = BIT(data, 0);
m_fc = data & 0x03;
m_fp = data >> 2;
- if (LOG)
- {
- logerror("SED1330 '%s' Display: %s\n", tag(), BIT(data, 0) ? "enabled" : "disabled");
+ LOG("SED1330 Display: %s\n", BIT(data, 0) ? "enabled" : "disabled");
- switch (m_fc)
- {
- case FC_OFF: logerror("SED1330 '%s' Cursor: disabled\n", tag()); break;
- case FC_SOLID: logerror("SED1330 '%s' Cursor: solid\n", tag()); break;
- case FC_FLASH_32: logerror("SED1330 '%s' Cursor: fFR/32\n", tag()); break;
- case FC_FLASH_64: logerror("SED1330 '%s' Cursor: fFR/64\n", tag()); break;
- }
+ switch (m_fc)
+ {
+ case FC_OFF: LOG("SED1330 Cursor: disabled\n"); break;
+ case FC_SOLID: LOG("SED1330 Cursor: solid\n"); break;
+ case FC_FLASH_32: LOG("SED1330 Cursor: fFR/32\n"); break;
+ case FC_FLASH_64: LOG("SED1330 Cursor: fFR/64\n"); break;
+ }
- switch (m_fp & 0x03)
- {
- case FC_OFF: logerror("SED1330 '%s' Display Page 1: disabled\n", tag()); break;
- case FC_SOLID: logerror("SED1330 '%s' Display Page 1: enabled\n", tag()); break;
- case FC_FLASH_32: logerror("SED1330 '%s' Display Page 1: flash fFR/32\n", tag()); break;
- case FC_FLASH_64: logerror("SED1330 '%s' Display Page 1: flash fFR/64\n", tag()); break;
- }
+ switch (m_fp & 0x03)
+ {
+ case FC_OFF: LOG("SED1330 Display Page 1: disabled\n"); break;
+ case FC_SOLID: LOG("SED1330 Display Page 1: enabled\n"); break;
+ case FC_FLASH_32: LOG("SED1330 Display Page 1: flash fFR/32\n"); break;
+ case FC_FLASH_64: LOG("SED1330 Display Page 1: flash fFR/64\n"); break;
+ }
- switch ((m_fp >> 2) & 0x03)
- {
- case FC_OFF: logerror("SED1330 '%s' Display Page 2/4: disabled\n", tag()); break;
- case FC_SOLID: logerror("SED1330 '%s' Display Page 2/4: enabled\n", tag()); break;
- case FC_FLASH_32: logerror("SED1330 '%s' Display Page 2/4: flash fFR/32\n", tag()); break;
- case FC_FLASH_64: logerror("SED1330 '%s' Display Page 2/4: flash fFR/64\n", tag()); break;
- }
+ switch ((m_fp >> 2) & 0x03)
+ {
+ case FC_OFF: LOG("SED1330 Display Page 2/4: disabled\n"); break;
+ case FC_SOLID: LOG("SED1330 Display Page 2/4: enabled\n"); break;
+ case FC_FLASH_32: LOG("SED1330 Display Page 2/4: flash fFR/32\n"); break;
+ case FC_FLASH_64: LOG("SED1330 Display Page 2/4: flash fFR/64\n"); break;
+ }
- switch ((m_fp >> 4) & 0x03)
- {
- case FC_OFF: logerror("SED1330 '%s' Display Page 3: disabled\n", tag()); break;
- case FC_SOLID: logerror("SED1330 '%s' Display Page 3: enabled\n", tag()); break;
- case FC_FLASH_32: logerror("SED1330 '%s' Display Page 3: flash fFR/32\n", tag()); break;
- case FC_FLASH_64: logerror("SED1330 '%s' Display Page 3: flash fFR/64\n", tag()); break;
- }
+ switch ((m_fp >> 4) & 0x03)
+ {
+ case FC_OFF: LOG("SED1330 Display Page 3: disabled\n"); break;
+ case FC_SOLID: LOG("SED1330 Display Page 3: enabled\n"); break;
+ case FC_FLASH_32: LOG("SED1330 Display Page 3: flash fFR/32\n"); break;
+ case FC_FLASH_64: LOG("SED1330 Display Page 3: flash fFR/64\n"); break;
}
break;
@@ -413,12 +402,12 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 1:
m_sad1 = (data << 8) | (m_sad1 & 0xff);
- if (LOG) logerror("SED1330 '%s' Display Page 1 Start Address: %04x\n", tag(), m_sad1);
+ LOG("SED1330 Display Page 1 Start Address: %04x\n", m_sad1);
break;
case 2:
m_sl1 = data + 1;
- if (LOG) logerror("SED1330 '%s' Display Block 1 Screen Lines: %u\n", tag(), m_sl1);
+ LOG("SED1330 Display Block 1 Screen Lines: %u\n", m_sl1);
break;
case 3:
@@ -427,12 +416,12 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 4:
m_sad2 = (data << 8) | (m_sad2 & 0xff);
- if (LOG) logerror("SED1330 '%s' Display Page 2 Start Address: %04x\n", tag(), m_sad2);
+ LOG("SED1330 Display Page 2 Start Address: %04x\n", m_sad2);
break;
case 5:
m_sl2 = data + 1;
- if (LOG) logerror("SED1330 '%s' Display Block 2 Screen Lines: %u\n", tag(), m_sl2);
+ LOG("SED1330 Display Block 2 Screen Lines: %u\n", m_sl2);
break;
case 6:
@@ -441,7 +430,7 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 7:
m_sad3 = (data << 8) | (m_sad3 & 0xff);
- if (LOG) logerror("SED1330 '%s' Display Page 3 Start Address: %04x\n", tag(), m_sad3);
+ LOG("SED1330 Display Page 3 Start Address: %04x\n", m_sad3);
break;
case 8:
@@ -450,11 +439,11 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 9:
m_sad4 = (data << 8) | (m_sad4 & 0xff);
- if (LOG) logerror("SED1330 '%s' Display Page 4 Start Address: %04x\n", tag(), m_sad4);
+ LOG("SED1330 Display Page 4 Start Address: %04x\n", m_sad4);
break;
default:
- logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data);
+ logerror("SED1330 Invalid parameter byte %02x\n", data);
}
break;
@@ -463,21 +452,18 @@ WRITE8_MEMBER( sed1330_device::data_w )
{
case 0:
m_crx = (data & 0x0f) + 1;
- if (LOG) logerror("SED1330 '%s' Horizontal Cursor Size: %u\n", tag(), m_crx);
+ LOG("SED1330 Horizontal Cursor Size: %u\n", m_crx);
break;
case 1:
m_cry = (data & 0x0f) + 1;
m_cm = BIT(data, 7);
- if (LOG)
- {
- logerror("SED1330 '%s' Vertical Cursor Location: %u\n", tag(), m_cry);
- logerror("SED1330 '%s' Cursor Shape: %s\n", tag(), BIT(data, 7) ? "Block" : "Underscore");
- }
+ LOG("SED1330 Vertical Cursor Location: %u\n", m_cry);
+ LOG("SED1330 Cursor Shape: %s\n", BIT(data, 7) ? "Block" : "Underscore");
break;
default:
- logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data);
+ logerror("SED1330 Invalid parameter byte %02x\n", data);
}
break;
@@ -490,17 +476,17 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 1:
m_sag = (data << 8) | (m_sag & 0xff);
- if (LOG) logerror("SED1330 '%s' Character Generator RAM Start Address: %04x\n", tag(), m_sag);
+ LOG("SED1330 Character Generator RAM Start Address: %04x\n", m_sag);
break;
default:
- logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data);
+ logerror("SED1330 Invalid parameter byte %02x\n", data);
}
break;
case INSTRUCTION_HDOT_SCR:
m_hdotscr = data & 0x07;
- if (LOG) logerror("SED1330 '%s' Horizontal Dot Scroll: %u\n", tag(), m_hdotscr);
+ LOG("SED1330 Horizontal Dot Scroll: %u\n", m_hdotscr);
break;
case INSTRUCTION_OVLAY:
@@ -508,20 +494,17 @@ WRITE8_MEMBER( sed1330_device::data_w )
m_dm = (data >> 2) & 0x03;
m_ov = BIT(data, 4);
- if (LOG)
+ switch (m_mx)
{
- switch (m_mx)
- {
- case MX_OR: logerror("SED1330 '%s' Display Composition Method: OR\n", tag()); break;
- case MX_XOR: logerror("SED1330 '%s' Display Composition Method: Exclusive-OR\n", tag()); break;
- case MX_AND: logerror("SED1330 '%s' Display Composition Method: AND\n", tag()); break;
- case MX_PRIORITY_OR: logerror("SED1330 '%s' Display Composition Method: Priority-OR\n", tag()); break;
- }
-
- logerror("SED1330 '%s' Display Page 1 Mode: %s\n", tag(), BIT(data, 2) ? "Graphics" : "Text");
- logerror("SED1330 '%s' Display Page 3 Mode: %s\n", tag(), BIT(data, 3) ? "Graphics" : "Text");
- logerror("SED1330 '%s' Display Composition Layers: %u\n", tag(), BIT(data, 4) ? 3 : 2);
+ case MX_OR: LOG("SED1330 Display Composition Method: OR\n"); break;
+ case MX_XOR: LOG("SED1330 Display Composition Method: Exclusive-OR\n"); break;
+ case MX_AND: LOG("SED1330 Display Composition Method: AND\n"); break;
+ case MX_PRIORITY_OR: LOG("SED1330 Display Composition Method: Priority-OR\n"); break;
}
+
+ LOG("SED1330 Display Page 1 Mode: %s\n", BIT(data, 2) ? "Graphics" : "Text");
+ LOG("SED1330 Display Page 3 Mode: %s\n", BIT(data, 3) ? "Graphics" : "Text");
+ LOG("SED1330 Display Composition Layers: %u\n", BIT(data, 4) ? 3 : 2);
break;
case INSTRUCTION_CSRW:
@@ -533,11 +516,11 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 1:
m_csr = (data << 8) | (m_csr & 0xff);
- if (LOG) logerror("SED1330 '%s' Cursor Address %04x\n", tag(), m_csr);
+ LOG("SED1330 Cursor Address %04x\n", m_csr);
break;
default:
- logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data);
+ logerror("SED1330 Invalid parameter byte %02x\n", data);
}
break;
#if 0
@@ -545,7 +528,7 @@ WRITE8_MEMBER( sed1330_device::data_w )
break;
#endif
case INSTRUCTION_MWRITE:
- if (LOG) logerror("SED1330 '%s' Memory Write %02x to %04x (row %u col %u line %u)\n", tag(), data, m_csr, m_csr/80/8, m_csr%80, m_csr/80);
+ LOG("SED1330 Memory Write %02x to %04x (row %u col %u line %u)\n", data, m_csr, m_csr/80/8, m_csr%80, m_csr/80);
writebyte(m_csr, data);
@@ -556,7 +539,7 @@ WRITE8_MEMBER( sed1330_device::data_w )
break;
#endif
default:
- logerror("SED1330 '%s' Unsupported instruction %02x\n", tag(), m_ir);
+ logerror("SED1330 Unsupported instruction %02x\n", m_ir);
}
m_pbc++;
diff --git a/src/devices/video/sed1330.h b/src/devices/video/sed1330.h
index a71e35e0e83..fd38f03e689 100644
--- a/src/devices/video/sed1330.h
+++ b/src/devices/video/sed1330.h
@@ -6,10 +6,10 @@
**********************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_SED1330_H
+#define MAME_VIDEO_SED1330_H
-#ifndef __SED1330__
-#define __SED1330__
+#pragma once
@@ -56,7 +56,7 @@ protected:
virtual void device_reset() override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
inline uint8_t readbyte(offs_t address);
inline void writebyte(offs_t address, uint8_t m_data);
@@ -118,8 +118,6 @@ private:
// device type definition
-extern const device_type SED1330;
-
-
+DECLARE_DEVICE_TYPE(SED1330, sed1330_device)
-#endif
+#endif // MAME_VIDEO_SED1330_H
diff --git a/src/devices/video/sed1520.cpp b/src/devices/video/sed1520.cpp
index 83f884d5756..708d685ad18 100644
--- a/src/devices/video/sed1520.cpp
+++ b/src/devices/video/sed1520.cpp
@@ -19,7 +19,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SED1520 = device_creator<sed1520_device>;
+DEFINE_DEVICE_TYPE(SED1520, sed1520_device, "sed1520", "Epson SED1520")
//**************************************************************************
@@ -31,7 +31,7 @@ const device_type SED1520 = device_creator<sed1520_device>;
//-------------------------------------------------
sed1520_device::sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SED1520, "SED1520", tag, owner, clock, "sed1520", __FILE__), m_lcd_on(0), m_busy(0), m_page(0), m_column(0), m_old_column(0), m_start_line(0),
+ device_t(mconfig, SED1520, tag, owner, clock), m_lcd_on(0), m_busy(0), m_page(0), m_column(0), m_old_column(0), m_start_line(0),
m_adc(0), m_static_drive(0), m_modify_write(false),
m_screen_update_func(nullptr)
{
diff --git a/src/devices/video/sed1520.h b/src/devices/video/sed1520.h
index 29bc5b1dd15..2bd554055f0 100644
--- a/src/devices/video/sed1520.h
+++ b/src/devices/video/sed1520.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_SED1520_H
+#define MAME_VIDEO_SED1520_H
-#ifndef __SED1520_H__
-#define __SED1520_H__
+#pragma once
#define MCFG_SED1520_ADD( _tag, _cb ) \
@@ -20,7 +20,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-typedef uint32_t (*sed1520_screen_update_func)(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc);
#define SED1520_UPDATE_CB(name) uint32_t name(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc)
@@ -29,11 +28,13 @@ typedef uint32_t (*sed1520_screen_update_func)(device_t &device, bitmap_ind16 &b
class sed1520_device : public device_t
{
public:
+ typedef uint32_t (*screen_update_func)(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc);
+
// construction/destruction
sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
- static void static_set_screen_update_cb(device_t &device, sed1520_screen_update_func _cb) { downcast<sed1520_device &>(device).m_screen_update_func = _cb; }
+ static void static_set_screen_update_cb(device_t &device, screen_update_func _cb) { downcast<sed1520_device &>(device).m_screen_update_func = _cb; }
// device interface
virtual DECLARE_WRITE8_MEMBER(write);
@@ -60,13 +61,13 @@ private:
uint8_t m_adc;
uint8_t m_static_drive;
bool m_modify_write;
- sed1520_screen_update_func m_screen_update_func;
+ screen_update_func m_screen_update_func;
uint8_t m_vram[0x140];
};
// device type definition
-extern const device_type SED1520;
+DECLARE_DEVICE_TYPE(SED1520, sed1520_device)
-#endif
+#endif // MAME_VIDEO_SED1520_H
diff --git a/src/devices/video/snes_ppu.cpp b/src/devices/video/snes_ppu.cpp
index 8fcfb4af3e6..836690f2a72 100644
--- a/src/devices/video/snes_ppu.cpp
+++ b/src/devices/video/snes_ppu.cpp
@@ -189,7 +189,7 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type SNES_PPU = device_creator<snes_ppu_device>;
+DEFINE_DEVICE_TYPE(SNES_PPU, snes_ppu_device, "snes_ppu", "SNES PPU")
//**************************************************************************
@@ -201,14 +201,14 @@ const device_type SNES_PPU = device_creator<snes_ppu_device>;
//-------------------------------------------------
snes_ppu_device::snes_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SNES_PPU, "SNES PPU", tag, owner, clock, "snes_ppu", __FILE__),
- device_video_interface(mconfig, *this),
- m_openbus_cb(*this),
- m_options(*this, ":OPTIONS"),
- m_debug1(*this, ":DEBUG1"),
- m_debug2(*this, ":DEBUG2"),
- m_debug3(*this, ":DEBUG3"),
- m_debug4(*this, ":DEBUG4")
+ : device_t(mconfig, SNES_PPU, tag, owner, clock)
+ , device_video_interface(mconfig, *this)
+ , m_openbus_cb(*this)
+ , m_options(*this, ":OPTIONS")
+ , m_debug1(*this, ":DEBUG1")
+ , m_debug2(*this, ":DEBUG2")
+ , m_debug3(*this, ":DEBUG3")
+ , m_debug4(*this, ":DEBUG4")
{
}
diff --git a/src/devices/video/snes_ppu.h b/src/devices/video/snes_ppu.h
index ab1a30245df..2a3ac575edf 100644
--- a/src/devices/video/snes_ppu.h
+++ b/src/devices/video/snes_ppu.h
@@ -6,8 +6,8 @@
***************************************************************************/
-#ifndef MAME_DEVICES_VIDEO_SNES_PPU_H
-#define MAME_DEVICES_VIDEO_SNES_PPU_H
+#ifndef MAME_VIDEO_SNES_PPU_H
+#define MAME_VIDEO_SNES_PPU_H
#pragma once
@@ -34,37 +34,6 @@
#define SNES_LAYER_DEBUG 0
-/* offset-per-tile modes */
-enum
-{
- SNES_OPT_NONE = 0,
- SNES_OPT_MODE2,
- SNES_OPT_MODE4,
- SNES_OPT_MODE6
-};
-
-/* layers */
-enum
-{
- SNES_BG1 = 0,
- SNES_BG2,
- SNES_BG3,
- SNES_BG4,
- SNES_OAM,
- SNES_COLOR
-};
-
-
-struct SNES_SCANLINE
-{
- int enable, clip;
-
- uint16_t buffer[SNES_SCR_WIDTH];
- uint8_t priority[SNES_SCR_WIDTH];
- uint8_t layer[SNES_SCR_WIDTH];
- uint8_t blend_exception[SNES_SCR_WIDTH];
-};
-
// ======================> snes_ppu_device
class snes_ppu_device : public device_t,
@@ -75,7 +44,68 @@ public:
snes_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration helpers
- template<class _Object> static devcb_base &static_set_open_bus_callback(device_t &device, _Object object) { return downcast<snes_ppu_device &>(device).m_openbus_cb.set_callback(object); }
+ template <class Object> static devcb_base &static_set_open_bus_callback(device_t &device, Object &&cb) { return downcast<snes_ppu_device &>(device).m_openbus_cb.set_callback(std::forward<Object>(cb)); }
+
+ void refresh_scanline(bitmap_rgb32 &bitmap, uint16_t curline);
+
+ int16_t current_x() const { return m_screen->hpos() / m_htmult; }
+ int16_t current_y() const { return m_screen->vpos(); }
+ void set_latch_hv(int16_t x, int16_t y);
+
+ uint8_t read(address_space &space, uint32_t offset, uint8_t wrio_bit7);
+ void write(address_space &space, uint32_t offset, uint8_t data);
+
+ int vtotal() const { return ((m_stat78 & 0x10) == SNES_NTSC) ? SNES_VTOTAL_NTSC : SNES_VTOTAL_PAL; }
+ uint16_t htmult() const { return m_htmult; }
+ uint8_t interlace() const { return m_interlace; }
+ bool screen_disabled() const { return bool(m_screen_disabled); }
+ uint8_t last_visible_line() const { return m_beam.last_visible_line; }
+ uint16_t current_vert() const { return m_beam.current_vert; }
+ uint8_t saved_oam_address_low() const { return m_oam.saved_address_low; }
+ uint8_t saved_oam_address_high() const { return m_oam.saved_address_high; }
+
+ void clear_time_range_over() { m_stat77 &= 0x3f; }
+ void toggle_field() { m_stat78 ^= 0x80; }
+ void reset_interlace()
+ {
+ m_htmult = 1;
+ m_interlace = 1;
+ m_obj_interlace = 1;
+ }
+ void set_current_vert(uint16_t value) { m_beam.current_vert = value; }
+ void set_first_sprite() { m_oam.first_sprite = m_oam.priority_rotation ? ((m_oam.address >> 1) & 127) : 0; }
+
+protected:
+ /* offset-per-tile modes */
+ enum
+ {
+ SNES_OPT_NONE = 0,
+ SNES_OPT_MODE2,
+ SNES_OPT_MODE4,
+ SNES_OPT_MODE6
+ };
+
+ /* layers */
+ enum
+ {
+ SNES_BG1 = 0,
+ SNES_BG2,
+ SNES_BG3,
+ SNES_BG4,
+ SNES_OAM,
+ SNES_COLOR
+ };
+
+
+ struct SNES_SCANLINE
+ {
+ int enable, clip;
+
+ uint16_t buffer[SNES_SCR_WIDTH];
+ uint8_t priority[SNES_SCR_WIDTH];
+ uint8_t layer[SNES_SCR_WIDTH];
+ uint8_t blend_exception[SNES_SCR_WIDTH];
+ };
uint8_t m_regs[0x40];
@@ -252,17 +282,10 @@ public:
void update_windowmasks(void);
void update_offsets(void);
inline void draw_blend(uint16_t offset, uint16_t *colour, uint8_t prevent_color_math, uint8_t black_pen_clip, int switch_screens);
- void refresh_scanline(bitmap_rgb32 &bitmap, uint16_t curline);
- inline int16_t current_x() { return m_screen->hpos() / m_htmult; }
- inline int16_t current_y() { return m_screen->vpos(); }
- void set_latch_hv(int16_t x, int16_t y);
void dynamic_res_change();
inline uint32_t get_vram_address();
- uint8_t read(address_space &space, uint32_t offset, uint8_t wrio_bit7);
- void write(address_space &space, uint32_t offset, uint8_t data);
-
DECLARE_READ8_MEMBER( oam_read );
DECLARE_WRITE8_MEMBER( oam_write );
DECLARE_READ8_MEMBER( cgram_read );
@@ -273,7 +296,6 @@ public:
std::unique_ptr<uint16_t[]> m_cgram; /* Palette RAM */
std::unique_ptr<uint8_t[]> m_vram; /* Video RAM (TODO: Should be 16-bit, but it's easier this way) */
-protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -289,7 +311,7 @@ private:
// device type definition
-extern const device_type SNES_PPU;
+DECLARE_DEVICE_TYPE(SNES_PPU, snes_ppu_device)
/***************************************************************************
@@ -299,4 +321,4 @@ extern const device_type SNES_PPU;
#define MCFG_SNES_PPU_OPENBUS_CB(_read) \
devcb = &snes_ppu_device::static_set_open_bus_callback(*device, DEVCB_##_read);
-#endif // MAME_DEVICES_VIDEO_SNES_PPU_H
+#endif // MAME_VIDEO_SNES_PPU_H
diff --git a/src/devices/video/sprite.h b/src/devices/video/sprite.h
index d17fdc13bb9..9919d83ec00 100644
--- a/src/devices/video/sprite.h
+++ b/src/devices/video/sprite.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_SPRITE_H
+#define MAME_VIDEO_SPRITE_H
-#ifndef __SPRITE_H__
-#define __SPRITE_H__
+#pragma once
// ======================> sparse_dirty_rect
@@ -81,13 +81,13 @@ class sprite_device : public device_t
protected:
// construction/destruction - only for subclasses
- sprite_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file, int dirty_granularity = 3)
- : device_t(mconfig, type, name, tag, owner, 0, shortname, file),
- m_xorigin(0),
- m_yorigin(0),
- m_spriteram(nullptr),
- m_spriteram_bytes(0),
- m_dirty(dirty_granularity)
+ sprite_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, int dirty_granularity = 3)
+ : device_t(mconfig, type, tag, owner, 0)
+ , m_xorigin(0)
+ , m_yorigin(0)
+ , m_spriteram(nullptr)
+ , m_spriteram_bytes(0)
+ , m_dirty(dirty_granularity)
{
force_clear();
}
@@ -207,4 +207,4 @@ typedef sprite_device<uint16_t, bitmap_ind32> sprite16_device_ind32;
typedef sprite_device<uint32_t, bitmap_ind32> sprite32_device_ind32;
-#endif // __SPRITE_H__
+#endif // MAME_VIDEO_SPRITE_H
diff --git a/src/devices/video/t6a04.cpp b/src/devices/video/t6a04.cpp
index c9b35f05d26..641d447baa6 100644
--- a/src/devices/video/t6a04.cpp
+++ b/src/devices/video/t6a04.cpp
@@ -15,7 +15,7 @@
#include "video/t6a04.h"
// devices
-const device_type T6A04 = device_creator<t6a04_device>;
+DEFINE_DEVICE_TYPE(T6A04, t6a04_device, "t6a04", "Toshiba T6A04 LCD Controller")
//-------------------------------------------------
// device_validity_check - perform validity checks
@@ -37,10 +37,12 @@ void t6a04_device::device_validity_check(validity_checker &valid) const
//-------------------------------------------------
t6a04_device::t6a04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, T6A04, "T6A04", tag, owner, clock, "t6a04", __FILE__), m_busy_flag(0), m_display_on(0), m_contrast(0), m_xpos(0), m_ypos(0), m_zpos(0), m_direction(0),
- m_active_counter(0), m_word_len(0), m_opa1(0), m_opa2(0), m_output_reg(0),
- m_height(0),
- m_width(0)
+ device_t(mconfig, T6A04, tag, owner, clock),
+ m_busy_flag(0), m_display_on(0), m_contrast(0),
+ m_xpos(0), m_ypos(0), m_zpos(0),
+ m_direction(0), m_active_counter(0), m_word_len(0),
+ m_opa1(0), m_opa2(0), m_output_reg(0),
+ m_height(0), m_width(0)
{
}
diff --git a/src/devices/video/t6a04.h b/src/devices/video/t6a04.h
index fb5cb23d92c..bee192f8ac6 100644
--- a/src/devices/video/t6a04.h
+++ b/src/devices/video/t6a04.h
@@ -6,10 +6,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_T6A04_H
+#define MAME_VIDEO_T6A04_H
-#ifndef __T6A04_H__
-#define __T6A04_H__
+#pragma once
//**************************************************************************
// TYPE DEFINITIONS
@@ -64,9 +64,9 @@ private:
};
// device type definition
-extern const device_type T6A04;
+DECLARE_DEVICE_TYPE(T6A04, t6a04_device)
#define MCFG_T6A04_SIZE(_width, _height) \
t6a04_device::set_size(*device, _width, _height);
-#endif
+#endif // MAME_VIDEO_T6A04_H
diff --git a/src/devices/video/tea1002.cpp b/src/devices/video/tea1002.cpp
index 5343de12830..162fa128bfd 100644
--- a/src/devices/video/tea1002.cpp
+++ b/src/devices/video/tea1002.cpp
@@ -39,7 +39,7 @@ const int tea1002_device::m_amplitute[] =
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type TEA1002 = device_creator<tea1002_device>;
+DEFINE_DEVICE_TYPE(TEA1002, tea1002_device, "tea1002", "Mullard TEA1002 PAL colour encoder")
//**************************************************************************
@@ -51,7 +51,7 @@ const device_type TEA1002 = device_creator<tea1002_device>;
//-------------------------------------------------
tea1002_device::tea1002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, TEA1002, "TEA1002 PAL colour encoder", tag, owner, clock, "tea1002", __FILE__)
+ device_t(mconfig, TEA1002, tag, owner, clock)
{
}
diff --git a/src/devices/video/tea1002.h b/src/devices/video/tea1002.h
index d0f4b38f876..dcfa46f7bb1 100644
--- a/src/devices/video/tea1002.h
+++ b/src/devices/video/tea1002.h
@@ -19,10 +19,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_VIDEO_TEA1002_H
+#define MAME_VIDEO_TEA1002_H
-#ifndef __TEA1002_H__
-#define __TEA1002_H__
+#pragma once
@@ -61,5 +61,6 @@ private:
// device type definition
extern const device_type TEA1002;
+DECLARE_DEVICE_TYPE(TEA1002, tea1002_device)
-#endif // __TEA1002_H__
+#endif // MAME_VIDEO_TEA1002_H
diff --git a/src/devices/video/tlc34076.cpp b/src/devices/video/tlc34076.cpp
index ba4283fc683..2b8cb788aca 100644
--- a/src/devices/video/tlc34076.cpp
+++ b/src/devices/video/tlc34076.cpp
@@ -35,15 +35,15 @@
//**************************************************************************
// device type definition
-const device_type TLC34076 = device_creator<tlc34076_device>;
+DEFINE_DEVICE_TYPE(TLC34076, tlc34076_device, "tlc34076", "TI TLC34076 VIP")
//-------------------------------------------------
// tlc34076_device - constructor
//-------------------------------------------------
tlc34076_device::tlc34076_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TLC34076, "TLC34076 VIP", tag, owner, clock, "tlc34076", __FILE__),
- m_dacbits(6)
+ : device_t(mconfig, TLC34076, tag, owner, clock)
+ , m_dacbits(6)
{
}
diff --git a/src/devices/video/tlc34076.h b/src/devices/video/tlc34076.h
index 6375ecdf4be..6a1b54d2adf 100644
--- a/src/devices/video/tlc34076.h
+++ b/src/devices/video/tlc34076.h
@@ -9,21 +9,10 @@
***************************************************************************/
-#pragma once
-
-#ifndef __TLC34076_H__
-#define __TLC34076_H__
-
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
+#ifndef MAME_VIDEO_TLC34076_H
+#define MAME_VIDEO_TLC34076_H
-enum tlc34076_bits
-{
- TLC34076_6_BIT = 6,
- TLC34076_8_BIT = 8
-};
+#pragma once
/***************************************************************************
@@ -33,6 +22,12 @@ enum tlc34076_bits
class tlc34076_device : public device_t
{
public:
+ enum tlc34076_bits
+ {
+ TLC34076_6_BIT = 6,
+ TLC34076_8_BIT = 8
+ };
+
// construction/destruction
tlc34076_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -65,12 +60,11 @@ private:
DEVICE CONFIGURATION MACROS
***************************************************************************/
-#define MCFG_TLC34076_ADD(_tag, _bits) \
- MCFG_DEVICE_ADD(_tag, TLC34076, 0) \
- tlc34076_device::static_set_bits(*device, _bits);
-
+#define MCFG_TLC34076_ADD(tag, bits) \
+ MCFG_DEVICE_ADD((tag), TLC34076, 0) \
+ tlc34076_device::static_set_bits(*device, (tlc34076_device::bits));
-extern const device_type TLC34076;
+DECLARE_DEVICE_TYPE(TLC34076, tlc34076_device)
-#endif /* __TLC34076_H__ */
+#endif // MAME_VIDEO_TLC34076_H
diff --git a/src/devices/video/tms34061.cpp b/src/devices/video/tms34061.cpp
index 3a74d450c52..7947dd59875 100644
--- a/src/devices/video/tms34061.cpp
+++ b/src/devices/video/tms34061.cpp
@@ -17,8 +17,9 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
-#define VERBOSE (0)
//**************************************************************************
@@ -29,10 +30,10 @@
// tms34061_device - constructor
//-------------------------------------------------
-const device_type TMS34061 = device_creator<tms34061_device>;
+DEFINE_DEVICE_TYPE(TMS34061, tms34061_device, "tms34061", "TI TMS34061 VSC")
tms34061_device::tms34061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TMS34061, "TMS34061 VSC", tag, owner, clock, "tms34061", __FILE__),
+ : device_t(mconfig, TMS34061, tag, owner, clock),
device_video_interface(mconfig, *this),
m_rowshift(0),
m_vramsize(0),
@@ -190,7 +191,7 @@ void tms34061_device::register_w(address_space &space, offs_t offset, uint8_t da
}
/* log it */
- if (VERBOSE) logerror("%s:tms34061 %s = %04x\n", space.machine().describe_context(), regnames[regnum], m_regs[regnum]);
+ LOG("%s:tms34061 %s = %04x\n", space.machine().describe_context(), regnames[regnum], m_regs[regnum]);
/* update the state of things */
switch (regnum)
@@ -268,7 +269,7 @@ uint8_t tms34061_device::register_r(address_space &space, offs_t offset)
}
/* log it */
- if (VERBOSE) logerror("%s:tms34061 %s read = %04X\n", space.machine().describe_context(), regnames[regnum], result);
+ LOG("%s:tms34061 %s read = %04X\n", space.machine().describe_context(), regnames[regnum], result);
return (offset & 0x02) ? (result >> 8) : result;
}
@@ -375,7 +376,7 @@ void tms34061_device::xypixel_w(address_space &space, int offset, uint8_t data)
/* mask to the VRAM size */
pixeloffs &= m_vrammask;
- if (VERBOSE) logerror("%s:tms34061 xy (%04x) = %02x/%02x\n", space.machine().describe_context(), pixeloffs, data, m_latchdata);
+ LOG("%s:tms34061 xy (%04x) = %02x/%02x\n", space.machine().describe_context(), pixeloffs, data, m_latchdata);
/* set the pixel data */
m_vram[pixeloffs] = data;
@@ -431,7 +432,7 @@ void tms34061_device::write(address_space &space, int col, int row, int func, ui
offs = ((row << m_rowshift) | col) & m_vrammask;
if (m_regs[TMS34061_CONTROL2] & 0x0040)
offs |= (m_regs[TMS34061_CONTROL2] & 3) << 16;
- if (VERBOSE) logerror("%s:tms34061 direct (%04x) = %02x/%02x\n", space.machine().describe_context(), offs, data, m_latchdata);
+ LOG("%s:tms34061 direct (%04x) = %02x/%02x\n", space.machine().describe_context(), offs, data, m_latchdata);
if (m_vram[offs] != data || m_latchram[offs] != m_latchdata)
{
m_vram[offs] = data;
@@ -445,7 +446,7 @@ void tms34061_device::write(address_space &space, int col, int row, int func, ui
if (m_regs[TMS34061_CONTROL2] & 0x0040)
offs |= (m_regs[TMS34061_CONTROL2] & 3) << 16;
offs &= m_vrammask;
- if (VERBOSE) logerror("%s:tms34061 shiftreg write (%04x)\n", space.machine().describe_context(), offs);
+ LOG("%s:tms34061 shiftreg write (%04x)\n", space.machine().describe_context(), offs);
memcpy(&m_vram[offs], m_shiftreg, (size_t)1 << m_rowshift);
memset(&m_latchram[offs], m_latchdata, (size_t)1 << m_rowshift);
@@ -457,7 +458,7 @@ void tms34061_device::write(address_space &space, int col, int row, int func, ui
if (m_regs[TMS34061_CONTROL2] & 0x0040)
offs |= (m_regs[TMS34061_CONTROL2] & 3) << 16;
offs &= m_vrammask;
- if (VERBOSE) logerror("%s:tms34061 shiftreg read (%04x)\n", space.machine().describe_context(), offs);
+ LOG("%s:tms34061 shiftreg read (%04x)\n", space.machine().describe_context(), offs);
m_shiftreg = &m_vram[offs];
break;
@@ -542,7 +543,7 @@ READ8_MEMBER( tms34061_device::latch_r )
WRITE8_MEMBER( tms34061_device::latch_w )
{
- if (VERBOSE) logerror("tms34061_latch = %02X\n", data);
+ LOG("tms34061_latch = %02X\n", data);
m_latchdata = data;
}
diff --git a/src/devices/video/tms34061.h b/src/devices/video/tms34061.h
index c82bebd2db9..ab5aaa652fd 100644
--- a/src/devices/video/tms34061.h
+++ b/src/devices/video/tms34061.h
@@ -9,9 +9,10 @@
* *
****************************************************************************/
+#ifndef MAME_VIDEO_TMS34061_H
+#define MAME_VIDEO_TMS34061_H
-#ifndef __TMS34061_H__
-#define __TMS34061_H__
+#pragma once
#define MCFG_TMS34061_ROWSHIFT(_shift) \
@@ -24,55 +25,28 @@
devcb = &tms34061_device::set_interrupt_callback(*device, DEVCB_##_devcb);
-/* register constants */
-enum
-{
- TMS34061_HORENDSYNC = 0,
- TMS34061_HORENDBLNK,
- TMS34061_HORSTARTBLNK,
- TMS34061_HORTOTAL,
- TMS34061_VERENDSYNC,
- TMS34061_VERENDBLNK,
- TMS34061_VERSTARTBLNK,
- TMS34061_VERTOTAL,
- TMS34061_DISPUPDATE,
- TMS34061_DISPSTART,
- TMS34061_VERINT,
- TMS34061_CONTROL1,
- TMS34061_CONTROL2,
- TMS34061_STATUS,
- TMS34061_XYOFFSET,
- TMS34061_XYADDRESS,
- TMS34061_DISPADDRESS,
- TMS34061_VERCOUNTER,
- TMS34061_REGCOUNT
-};
-
-/* display state structure */
-struct tms34061_display
-{
- uint8_t blanked; /* true if blanked */
- uint8_t *vram; /* base of VRAM */
- uint8_t *latchram; /* base of latch RAM */
- uint16_t *regs; /* pointer to array of registers */
- offs_t dispstart; /* display start */
-};
-
-
-
// ======================> tms34061_device
-class tms34061_device : public device_t,
- public device_video_interface
+class tms34061_device : public device_t, public device_video_interface
{
public:
+ /* display state structure */
+ struct tms34061_display
+ {
+ uint8_t blanked; /* true if blanked */
+ uint8_t *vram; /* base of VRAM */
+ uint8_t *latchram; /* base of latch RAM */
+ uint16_t *regs; /* pointer to array of registers */
+ offs_t dispstart; /* display start */
+ };
+
// construction/destruction
tms34061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void set_rowshift(device_t &device, uint8_t rowshift) { downcast<tms34061_device &>(device).m_rowshift = rowshift; }
static void set_vram_size(device_t &device, uint32_t vramsize) { downcast<tms34061_device &>(device).m_vramsize = vramsize; }
- template<class _Object> static devcb_base &set_interrupt_callback(device_t &device, _Object object) { return downcast<tms34061_device &>(device).m_interrupt_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_interrupt_callback(device_t &device, Object &&cb) { return downcast<tms34061_device &>(device).m_interrupt_cb.set_callback(std::forward<Object>(cb)); }
/* reads/writes to the 34061 */
uint8_t read(address_space &space, int col, int row, int func);
@@ -85,7 +59,13 @@ public:
/* video update handling */
void get_display_state();
- struct tms34061_display m_display;
+ bool blanked() const { return bool(m_display.blanked); }
+ uint8_t const &vram(unsigned row) const { return m_display.vram[row << m_rowshift]; }
+ uint16_t xyoffset() const { return m_display.regs[TMS34061_XYOFFSET]; }
+ uint16_t xyaddress() const { return m_display.regs[TMS34061_XYADDRESS]; }
+
+ // TODO: encapsulate this properly
+ tms34061_display m_display;
protected:
// device-level overrides
@@ -93,6 +73,30 @@ protected:
virtual void device_reset() override;
private:
+ /* register constants */
+ enum
+ {
+ TMS34061_HORENDSYNC = 0,
+ TMS34061_HORENDBLNK,
+ TMS34061_HORSTARTBLNK,
+ TMS34061_HORTOTAL,
+ TMS34061_VERENDSYNC,
+ TMS34061_VERENDBLNK,
+ TMS34061_VERSTARTBLNK,
+ TMS34061_VERTOTAL,
+ TMS34061_DISPUPDATE,
+ TMS34061_DISPSTART,
+ TMS34061_VERINT,
+ TMS34061_CONTROL1,
+ TMS34061_CONTROL2,
+ TMS34061_STATUS,
+ TMS34061_XYOFFSET,
+ TMS34061_XYADDRESS,
+ TMS34061_DISPADDRESS,
+ TMS34061_VERCOUNTER,
+ TMS34061_REGCOUNT
+ };
+
uint8_t m_rowshift; /* VRAM address is (row << rowshift) | col */
uint32_t m_vramsize; /* size of video RAM */
devcb_write_line m_interrupt_cb; /* interrupt gen callback */
@@ -107,7 +111,7 @@ private:
uint8_t * m_shiftreg;
emu_timer * m_timer;
- void update_interrupts(void);
+ void update_interrupts();
TIMER_CALLBACK_MEMBER( interrupt );
void register_w(address_space &space, offs_t offset, uint8_t data);
uint8_t register_r(address_space &space, offs_t offset);
@@ -117,6 +121,6 @@ private:
};
// device type definition
-extern const device_type TMS34061;
+DECLARE_DEVICE_TYPE(TMS34061, tms34061_device)
-#endif
+#endif // MAME_VIDEO_TMS34061_H
diff --git a/src/devices/video/tms3556.cpp b/src/devices/video/tms3556.cpp
index ff902edd80c..ce110948f3e 100644
--- a/src/devices/video/tms3556.cpp
+++ b/src/devices/video/tms3556.cpp
@@ -18,13 +18,33 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
+#define VDP_POINTER m_control_regs[0]
+#define VDP_COL m_control_regs[1]
+#define VDP_ROW m_control_regs[2]
+#define VDP_STAT m_control_regs[3]
+#define VDP_CM1 m_control_regs[4]
+#define VDP_CM2 m_control_regs[5]
+#define VDP_CM3 m_control_regs[6]
+#define VDP_CM4 m_control_regs[7]
+#define VDP_BAMT m_address_regs[0]
+#define VDP_BAMP m_address_regs[1]
+#define VDP_BAPA m_address_regs[2]
+#define VDP_BAGC0 m_address_regs[3]
+#define VDP_BAGC1 m_address_regs[4]
+#define VDP_BAGC2 m_address_regs[5]
+#define VDP_BAGC3 m_address_regs[6]
+#define VDP_BAMTF m_address_regs[7]
+
+ALLOW_SAVE_TYPE(tms3556_device::dma_mode_tt);
@@ -33,7 +53,7 @@
//**************************************************************************
// devices
-const device_type TMS3556 = device_creator<tms3556_device>;
+DEFINE_DEVICE_TYPE(TMS3556, tms3556_device, "tms3556", "Texas Instruments TMS3556 VDP")
// default address map
@@ -85,9 +105,10 @@ inline void tms3556_device::writebyte(offs_t address, uint8_t data)
//-------------------------------------------------
tms3556_device::tms3556_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TMS3556, "Texas Instruments VDP TMS3556", tag, owner, clock, "tms3556", __FILE__),
+ : device_t(mconfig, TMS3556, tag, owner, clock),
device_memory_interface(mconfig, *this),
m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, nullptr, *ADDRESS_MAP_NAME(tms3556)),
+ m_reg(0), m_reg2(0),
m_reg_access_phase(0),
m_row_col_written(0),
m_bamp_written(0),
@@ -118,11 +139,13 @@ void tms3556_device::device_start()
// register for state saving
save_item(NAME(m_control_regs));
save_item(NAME(m_address_regs));
+ save_item(NAME(m_reg));
+ save_item(NAME(m_reg2));
save_item(NAME(m_reg_access_phase));
save_item(NAME(m_row_col_written));
save_item(NAME(m_bamp_written));
save_item(NAME(m_colrow));
-// save_item(NAME(m_vdp_acmpxy_mode)); // FIXME : mame cannot save enum
+ save_item(NAME(m_vdp_acmpxy_mode));
save_item(NAME(m_vdp_acmpxy));
save_item(NAME(m_vdp_acmp));
save_item(NAME(m_scanline));
@@ -223,10 +246,10 @@ WRITE8_MEMBER( tms3556_device::vram_w )
READ8_MEMBER( tms3556_device::reg_r )
{
- if (LOG) logerror("TMS3556 Reg Read: %06x\n", offset);
+ LOG("TMS3556 Reg Read: %06x\n", offset);
int reply = 0; // FIXME : will send internal status (VBL, HBL...)
- m_reg_access_phase=0;
+ m_reg_access_phase = 0;
return reply;
}
@@ -236,74 +259,69 @@ READ8_MEMBER( tms3556_device::reg_r )
WRITE8_MEMBER( tms3556_device::reg_w )
{
- static int reg2=0; // FIXME : this static makes that only one TMS3556 will be present in one system...
- static int reg=0;
-
- if (LOG) logerror("TMS3556 Reg Write: %06x = %02x\n", offset, data);
+ LOG("TMS3556 Reg Write: %06x = %02x\n", offset, data);
switch (m_reg_access_phase) {
case 0:
- reg=data&0x0F;
- reg2=(data&0xF0)>>4;
- if (reg!=0)
+ m_reg=data&0x0F;
+ m_reg2=(data&0xF0)>>4;
+ if (m_reg!=0)
m_reg_access_phase=1;
return;
case 1:
- if (reg<8) {
- m_control_regs[reg]=data;
- // leve un flag si le dernier registre ecrit est row ou col
- if ((reg==2) || (reg==1)) {
- m_colrow=(m_control_regs[2]<<8)|m_control_regs[1];
- m_row_col_written=true;
- }
-
- if (reg2==0) {
- m_reg_access_phase=0;
- return;
- }
- else {
- m_reg_access_phase=1;
- reg=reg2;
- reg2=0;
- return;
- }
+ if (m_reg<8) {
+ m_control_regs[m_reg]=data;
+ // leve un flag si le dernier registre ecrit est row ou col
+ if ((m_reg==2) || (m_reg==1)) {
+ m_colrow=(m_control_regs[2]<<8)|m_control_regs[1];
+ m_row_col_written=true;
+ }
+
+ if (m_reg2==0) {
+ m_reg_access_phase=0;
+ return;
+ } else {
+ m_reg_access_phase=1;
+ m_reg=m_reg2;
+ m_reg2=0;
+ return;
+ }
} else {
- m_address_regs[reg-8]=(m_control_regs[2]<<8)|m_control_regs[1];
- // cas speciaux de decalage pour les generateurs
- if ((reg>=0xB) && (reg<=0xE)) {
- m_address_regs[reg-8]+=2;
- m_address_regs[reg-8]&=0xFFFF;
- } else {
- m_address_regs[reg-8]+=1;
- m_address_regs[reg-8]&=0xFFFF;
- }
- if (reg==9) {
- m_row_col_written=false;
- m_bamp_written=true;
- m_reg_access_phase=0;
- return;
- } else {
- m_row_col_written=0;
- m_bamp_written=false;
- m_reg_access_phase=2;//???
- return;
- }
- logerror("VDP16[%d] = x%x",reg,m_address_regs[reg-8]);
- if (reg2==0) {
- m_reg_access_phase=0;
- return;
- }
- else {
- m_reg_access_phase=1;
- reg=reg2;
- reg2=0;
- return;
- }
+ m_address_regs[m_reg-8]=(m_control_regs[2]<<8)|m_control_regs[1];
+ // cas speciaux de decalage pour les generateurs
+ if ((m_reg>=0xB) && (m_reg<=0xE)) {
+ m_address_regs[m_reg-8]+=2;
+ m_address_regs[m_reg-8]&=0xFFFF;
+ } else {
+ m_address_regs[m_reg-8]+=1;
+ m_address_regs[m_reg-8]&=0xFFFF;
+ }
+ if (m_reg==9) {
+ m_row_col_written=false;
+ m_bamp_written=true;
+ m_reg_access_phase=0;
+ return;
+ } else {
+ m_row_col_written=0;
+ m_bamp_written=false;
+ m_reg_access_phase=2;//???
+ return;
+ }
+ logerror("VDP16[%d] = x%x",m_reg,m_address_regs[m_reg-8]);
+ if (m_reg2==0) {
+ m_reg_access_phase=0;
+ return;
+ } else {
+ m_reg_access_phase=1;
+ m_reg=m_reg2;
+ m_reg2=0;
+ return;
+ }
}
- case 2:
- m_reg_access_phase=0;
- return;
+ case 2:
+ m_reg_access_phase=0;
+ return;
}
}
@@ -332,7 +350,7 @@ void tms3556_device::draw_line_empty(uint16_t *ln)
{
int i;
- for (i = 0; i < TMS3556_TOTAL_WIDTH; i++)
+ for (i = 0; i < TOTAL_WIDTH; i++)
#if TMS3556_DOUBLE_WIDTH
*ln++ = m_bg_color;
#endif
@@ -359,7 +377,7 @@ void tms3556_device::draw_line_text_common(uint16_t *ln)
for (i = 0; i < 4; i++)
patterntbl_base[i] = m_address_regs[i + 3];
- for (xx = 0; xx < TMS3556_LEFT_BORDER; xx++)
+ for (xx = 0; xx < LEFT_BORDER; xx++)
#if TMS3556_DOUBLE_WIDTH
*ln++ = m_bg_color;
#endif
@@ -443,7 +461,7 @@ void tms3556_device::draw_line_text_common(uint16_t *ln)
name_offset += 2;
}
- for (xx = 0; xx < TMS3556_RIGHT_BORDER; xx++)
+ for (xx = 0; xx < RIGHT_BORDER; xx++)
#if TMS3556_DOUBLE_WIDTH
*ln++ = m_bg_color;
#endif
@@ -467,7 +485,7 @@ void tms3556_device::draw_line_bitmap_common(uint16_t *ln)
nametbl_base = m_address_regs[2];
- for (xx = 0; xx < TMS3556_LEFT_BORDER; xx++)
+ for (xx = 0; xx < LEFT_BORDER; xx++)
#if TMS3556_DOUBLE_WIDTH
*ln++ = m_bg_color;
#endif
@@ -492,7 +510,7 @@ void tms3556_device::draw_line_bitmap_common(uint16_t *ln)
m_name_offset += 3;
}
- for (xx = 0; xx < TMS3556_RIGHT_BORDER; xx++)
+ for (xx = 0; xx < RIGHT_BORDER; xx++)
#if TMS3556_DOUBLE_WIDTH
*ln++ = m_bg_color;
#endif
@@ -575,7 +593,7 @@ void tms3556_device::draw_line(bitmap_ind16 &bmp, int line)
double_lines = 1;
}
- if ((line < TMS3556_TOP_BORDER) || (line >= (TMS3556_TOP_BORDER + 250)))
+ if ((line < TOP_BORDER) || (line >= (TOP_BORDER + 250)))
{
/* draw top and bottom borders */
draw_line_empty(ln);
@@ -586,16 +604,16 @@ void tms3556_device::draw_line(bitmap_ind16 &bmp, int line)
/* draw useful area */
switch (m_control_regs[6] >> 6)
{
- case TMS3556_MODE_OFF:
+ case MODE_OFF:
draw_line_empty(ln);
break;
- case TMS3556_MODE_TEXT:
+ case MODE_TEXT:
draw_line_text(ln);
break;
- case TMS3556_MODE_BITMAP:
+ case MODE_BITMAP:
draw_line_bitmap(ln);
break;
- case TMS3556_MODE_MIXED:
+ case MODE_MIXED:
draw_line_mixed(ln);
break;
}
@@ -604,8 +622,8 @@ void tms3556_device::draw_line(bitmap_ind16 &bmp, int line)
if (double_lines)
{
// TODO: this overlaps in exeltel - use memmove for now
- //memcpy(ln2, ln, TMS3556_TOTAL_WIDTH * (TMS3556_DOUBLE_WIDTH ? 2 : 1));
- memmove(ln2, ln, TMS3556_TOTAL_WIDTH * (TMS3556_DOUBLE_WIDTH ? 2 : 1));
+ //memcpy(ln2, ln, TOTAL_WIDTH * (TMS3556_DOUBLE_WIDTH ? 2 : 1));
+ memmove(ln2, ln, TOTAL_WIDTH * (TMS3556_DOUBLE_WIDTH ? 2 : 1));
}
}
@@ -651,7 +669,7 @@ void tms3556_device::interrupt(running_machine &machine)
interrupt_start_vblank();
/* render the current line */
- if ((m_scanline >= 0) && (m_scanline < TMS3556_TOTAL_HEIGHT))
+ if ((m_scanline >= 0) && (m_scanline < TOTAL_HEIGHT))
{
//if (!video_skip_this_frame())
draw_line(m_bitmap, m_scanline);
diff --git a/src/devices/video/tms3556.h b/src/devices/video/tms3556.h
index 7568f6443b9..8788225ec62 100644
--- a/src/devices/video/tms3556.h
+++ b/src/devices/video/tms3556.h
@@ -6,48 +6,19 @@
***************************************************************************/
+#ifndef MAME_VIDEO_TMS3556_H
+#define MAME_VIDEO_TMS3556_H
#pragma once
-#ifndef __TMS3556_H__
-#define __TMS3556_H__
///*************************************************************************
// MACROS / CONSTANTS
///*************************************************************************
-#define TMS3556_TOP_BORDER 1
-#define TMS3556_BOTTOM_BORDER 1
-#define TMS3556_LEFT_BORDER 8
-#define TMS3556_RIGHT_BORDER 8
-#define TMS3556_TOTAL_WIDTH (320 + TMS3556_LEFT_BORDER + TMS3556_RIGHT_BORDER)
-#define TMS3556_TOTAL_HEIGHT (250 + TMS3556_TOP_BORDER + TMS3556_BOTTOM_BORDER)
-
/* if DOUBLE_WIDTH set, the horizontal resolution is doubled */
#define TMS3556_DOUBLE_WIDTH 0
-#define TMS3556_MODE_OFF 0
-#define TMS3556_MODE_TEXT 1
-#define TMS3556_MODE_BITMAP 2
-#define TMS3556_MODE_MIXED 3
-
-#define VDP_POINTER m_control_regs[0]
-#define VDP_COL m_control_regs[1]
-#define VDP_ROW m_control_regs[2]
-#define VDP_STAT m_control_regs[3]
-#define VDP_CM1 m_control_regs[4]
-#define VDP_CM2 m_control_regs[5]
-#define VDP_CM3 m_control_regs[6]
-#define VDP_CM4 m_control_regs[7]
-#define VDP_BAMT m_address_regs[0]
-#define VDP_BAMP m_address_regs[1]
-#define VDP_BAPA m_address_regs[2]
-#define VDP_BAGC0 m_address_regs[3]
-#define VDP_BAGC1 m_address_regs[4]
-#define VDP_BAGC2 m_address_regs[5]
-#define VDP_BAGC3 m_address_regs[6]
-#define VDP_BAMTF m_address_regs[7]
-
///*************************************************************************
// INTERFACE CONFIGURATION MACROS
///*************************************************************************
@@ -59,8 +30,6 @@
// TYPE DEFINITIONS
///*************************************************************************
-typedef enum { dma_read, dma_write } dma_mode_tt;
-
// ======================> tms3556_device
@@ -68,6 +37,13 @@ class tms3556_device : public device_t,
public device_memory_interface
{
public:
+ static constexpr unsigned TOP_BORDER = 1;
+ static constexpr unsigned BOTTOM_BORDER = 1;
+ static constexpr unsigned LEFT_BORDER = 8;
+ static constexpr unsigned RIGHT_BORDER = 8;
+ static constexpr unsigned TOTAL_WIDTH = 320 + LEFT_BORDER + RIGHT_BORDER;
+ static constexpr unsigned TOTAL_HEIGHT = 250 + TOP_BORDER + BOTTOM_BORDER;
+
// construction/destruction
tms3556_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -86,7 +62,7 @@ protected:
virtual void device_start() override;
// device_config_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
// address space configurations
const address_space_config m_space_config;
@@ -104,11 +80,19 @@ protected:
void interrupt_start_vblank(void);
private:
+ enum dma_mode_tt { dma_read, dma_write };
+
+ static constexpr uint8_t MODE_OFF = 0;
+ static constexpr uint8_t MODE_TEXT = 1;
+ static constexpr uint8_t MODE_BITMAP = 2;
+ static constexpr uint8_t MODE_MIXED = 3;
+
// registers
uint8_t m_control_regs[8];
uint16_t m_address_regs[8];
// register interface
+ int m_reg, m_reg2;
int m_reg_access_phase;
int m_row_col_written;
@@ -134,6 +118,6 @@ private:
// device type definition
extern const device_type TMS3556;
+DECLARE_DEVICE_TYPE(TMS3556, tms3556_device)
-
-#endif
+#endif // MAME_VIDEO_TMS3556_H
diff --git a/src/devices/video/tms9927.cpp b/src/devices/video/tms9927.cpp
index c224b0965f4..2908fb01d29 100644
--- a/src/devices/video/tms9927.cpp
+++ b/src/devices/video/tms9927.cpp
@@ -12,8 +12,8 @@
#include "screen.h"
-static const uint8_t chars_per_row_value[8] = { 20, 32, 40, 64, 72, 80, 96, 132 };
-static const uint8_t skew_bits_value[4] = { 0, 1, 2, 2 };
+static constexpr uint8_t chars_per_row_value[8] = { 20, 32, 40, 64, 72, 80, 96, 132 };
+static constexpr uint8_t skew_bits_value[4] = { 0, 1, 2, 2 };
#define HCOUNT (m_reg[0] + 1)
@@ -31,19 +31,18 @@ static const uint8_t skew_bits_value[4] = { 0, 1, 2, 2 };
#define CURSOR_ROW_ADDRESS (m_reg[8] & 0x3f)
-const device_type TMS9927 = device_creator<tms9927_device>;
-const device_type CRT5027 = device_creator<crt5027_device>;
-const device_type CRT5037 = device_creator<crt5037_device>;
-const device_type CRT5057 = device_creator<crt5057_device>;
+DEFINE_DEVICE_TYPE(TMS9927, tms9927_device, "tms9927", "TMS9927 VTC")
+DEFINE_DEVICE_TYPE(CRT5027, crt5027_device, "crt5027", "CRT5027")
+DEFINE_DEVICE_TYPE(CRT5037, crt5037_device, "crt5037", "CRT5037")
+DEFINE_DEVICE_TYPE(CRT5057, crt5057_device, "crt5057", "CRT5057")
tms9927_device::tms9927_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9927_device(mconfig, TMS9927, "TMS9927 VTC", tag, owner, clock, "tms9927", __FILE__)
+ : tms9927_device(mconfig, TMS9927, tag, owner, clock)
{
- memset(m_reg, 0x00, sizeof(m_reg));
}
-tms9927_device::tms9927_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+tms9927_device::tms9927_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
, device_video_interface(mconfig, *this)
, m_write_vsyn(*this)
, m_hpixels_per_column(0)
@@ -54,21 +53,21 @@ tms9927_device::tms9927_device(const machine_config &mconfig, device_type type,
, m_selfload(*this, finder_base::DUMMY_TAG)
, m_reset(0)
{
- memset(m_reg, 0x00, sizeof(m_reg));
+ std::fill(std::begin(m_reg), std::end(m_reg), 0x00);
}
crt5027_device::crt5027_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9927_device(mconfig, CRT5027, "CRT5027", tag, owner, clock, "crt5027", __FILE__)
+ : tms9927_device(mconfig, CRT5027, tag, owner, clock)
{
}
crt5037_device::crt5037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9927_device(mconfig, CRT5037, "CRT5037", tag, owner, clock, "crt5037", __FILE__)
+ : tms9927_device(mconfig, CRT5037, tag, owner, clock)
{
}
crt5057_device::crt5057_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9927_device(mconfig, CRT5057, "CRT5057", tag, owner, clock, "crt5057", __FILE__)
+ : tms9927_device(mconfig, CRT5057, tag, owner, clock)
{
}
diff --git a/src/devices/video/tms9927.h b/src/devices/video/tms9927.h
index cd4057d67f9..cc7caaafe6b 100644
--- a/src/devices/video/tms9927.h
+++ b/src/devices/video/tms9927.h
@@ -6,8 +6,8 @@
**********************************************************************/
-#ifndef __TMS9927__
-#define __TMS9927__
+#ifndef MAME_VIDEO_TMS9927_H
+#define MAME_VIDEO_TMS9927_H
#define MCFG_TMS9927_VSYN_CALLBACK(_write) \
@@ -22,24 +22,21 @@
#define MCFG_TMS9927_OVERSCAN(_left, _right, _top, _bottom) \
tms9927_device::set_overscan(*device, _left, _right, _top, _bottom);
-class tms9927_device : public device_t,
- public device_video_interface
+class tms9927_device : public device_t, public device_video_interface
{
public:
tms9927_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- tms9927_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
- ~tms9927_device() {}
- template<class _Object> static devcb_base &set_vsyn_wr_callback(device_t &device, _Object object) { return downcast<tms9927_device &>(device).m_write_vsyn.set_callback(object); }
+ template <class Object> static devcb_base &set_vsyn_wr_callback(device_t &device, Object &&cb) { return downcast<tms9927_device &>(device).m_write_vsyn.set_callback(std::forward<Object>(cb)); }
static void set_char_width(device_t &device, int pixels) { downcast<tms9927_device &>(device).m_hpixels_per_column = pixels; }
static void set_region_tag(device_t &device, const char *tag) { downcast<tms9927_device &>(device).m_selfload.set_tag(tag); }
static void set_overscan(device_t &device, int left, int right, int top, int bottom) {
- tms9927_device &dev = downcast<tms9927_device &>(device);
- dev.m_overscan_left = left;
- dev.m_overscan_right = right;
- dev.m_overscan_top = top;
- dev.m_overscan_bottom = bottom;
+ tms9927_device &dev = downcast<tms9927_device &>(device);
+ dev.m_overscan_left = left;
+ dev.m_overscan_right = right;
+ dev.m_overscan_top = top;
+ dev.m_overscan_bottom = bottom;
}
DECLARE_WRITE8_MEMBER(write);
@@ -50,6 +47,8 @@ public:
int cursor_bounds(rectangle &bounds);
protected:
+ tms9927_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_stop() override;
@@ -87,13 +86,11 @@ private:
uint16_t m_total_hpix, m_total_vpix;
uint16_t m_visible_hpix, m_visible_vpix;
-
int m_vsyn;
emu_timer *m_vsync_timer;
};
-extern const device_type TMS9927;
class crt5027_device : public tms9927_device
{
@@ -101,7 +98,6 @@ public:
crt5027_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type CRT5027;
class crt5037_device : public tms9927_device
{
@@ -109,7 +105,6 @@ public:
crt5037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type CRT5037;
class crt5057_device : public tms9927_device
{
@@ -117,7 +112,10 @@ public:
crt5057_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
-extern const device_type CRT5057;
+DECLARE_DEVICE_TYPE(TMS9927, tms9927_device)
+DECLARE_DEVICE_TYPE(CRT5027, crt5027_device)
+DECLARE_DEVICE_TYPE(CRT5037, crt5037_device)
+DECLARE_DEVICE_TYPE(CRT5057, crt5057_device)
-#endif
+#endif // MAME_VIDEO_TMS9927_H
diff --git a/src/devices/video/tms9928a.cpp b/src/devices/video/tms9928a.cpp
index 1c787dbf126..a225d0db181 100644
--- a/src/devices/video/tms9928a.cpp
+++ b/src/devices/video/tms9928a.cpp
@@ -27,14 +27,14 @@
#include "tms9928a.h"
-const device_type TMS9928A = device_creator<tms9928a_device>;
-const device_type TMS9918 = device_creator<tms9918_device>;
-const device_type TMS9918A = device_creator<tms9918a_device>;
-const device_type TMS9118 = device_creator<tms9118_device>;
-const device_type TMS9128 = device_creator<tms9128_device>;
-const device_type TMS9929 = device_creator<tms9929_device>;
-const device_type TMS9929A = device_creator<tms9929a_device>;
-const device_type TMS9129 = device_creator<tms9129_device>;
+DEFINE_DEVICE_TYPE(TMS9928A, tms9928a_device, "tms9928a", "TMS9928A VDP")
+DEFINE_DEVICE_TYPE(TMS9918, tms9918_device, "tms9918", "TMS9918 VDP")
+DEFINE_DEVICE_TYPE(TMS9918A, tms9918a_device, "tms9918a", "TMS9918A VDP")
+DEFINE_DEVICE_TYPE(TMS9118, tms9118_device, "tms9118", "TMS9118 VDP")
+DEFINE_DEVICE_TYPE(TMS9128, tms9128_device, "tms9128", "TMS9128 VDP")
+DEFINE_DEVICE_TYPE(TMS9929, tms9929_device, "tms9929", "TMS9929 VDP")
+DEFINE_DEVICE_TYPE(TMS9929A, tms9929a_device, "tms9929a", "TMS9929A VDP")
+DEFINE_DEVICE_TYPE(TMS9129, tms9129_device, "tms9129", "TMS9129 VDP")
// ======= Debugging =========
@@ -54,63 +54,61 @@ static ADDRESS_MAP_START(memmap, AS_DATA, 8, tms9928a_device)
AM_RANGE(0x0000, 0x3fff) AM_RAM
ADDRESS_MAP_END
-tms9928a_device::tms9928a_device( const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, bool is_50hz, bool is_reva, bool is_99, const char *shortname, const char *source)
- : device_t( mconfig, type, name, tag, owner, clock, shortname, source),
- device_memory_interface(mconfig, *this),
- device_video_interface(mconfig, *this),
- m_out_int_line_cb(*this),
- m_out_gromclk_cb(*this),
- m_space_config("vram",ENDIANNESS_BIG, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(memmap))
+tms9928a_device::tms9928a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_50hz, bool is_reva, bool is_99)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , device_video_interface(mconfig, *this)
+ , m_vram_size(0)
+ , m_out_int_line_cb(*this)
+ , m_out_gromclk_cb(*this)
+ , m_50hz(is_50hz)
+ , m_reva(is_reva)
+ , m_99(is_99)
+ , m_space_config("vram", ENDIANNESS_BIG, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(memmap))
{
- m_50hz = is_50hz;
- m_reva = is_reva;
- m_99 = is_99;
// static_set_addrmap(*this, AS_DATA, ADDRESS_MAP_NAME(memmap));
}
tms9928a_device::tms9928a_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
- : device_t( mconfig, TMS9928A, "TMS9928A VDP", tag, owner, clock, "tms9928a", __FILE__),
- device_memory_interface(mconfig, *this),
- device_video_interface(mconfig, *this),
- m_vram_size(0),
- m_out_int_line_cb(*this),
- m_out_gromclk_cb(*this),
- m_space_config("vram",ENDIANNESS_BIG, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(memmap))
+ : tms9928a_device(mconfig, TMS9928A, tag, owner, clock, false, true, true)
{
- m_50hz = false;
- m_reva = true;
- m_99 = true;
-// static_set_addrmap(*this, AS_DATA, ADDRESS_MAP_NAME(memmap));
}
tms9129_device::tms9129_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9928a_device( mconfig, TMS9129, "TMS9129", tag, owner, clock, true, true, false, "tms9129", __FILE__)
-{ }
+ : tms9928a_device(mconfig, TMS9129, tag, owner, clock, true, true, false)
+{
+}
tms9918_device::tms9918_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9928a_device( mconfig, TMS9918, "TMS9918", tag, owner, clock, false, false, true, "tms9918", __FILE__)
-{ }
+ : tms9928a_device(mconfig, TMS9918, tag, owner, clock, false, false, true)
+{
+}
tms9918a_device::tms9918a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9928a_device( mconfig, TMS9918A, "TMS9918A", tag, owner, clock, false, true, true, "tms9918a", __FILE__)
-{ }
+ : tms9928a_device(mconfig, TMS9918A, tag, owner, clock, false, true, true)
+{
+}
tms9118_device::tms9118_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9928a_device( mconfig, TMS9118, "TMS9118 VDP", tag, owner, clock, false, true, false, "tms9118", __FILE__)
-{ }
+ : tms9928a_device(mconfig, TMS9118, tag, owner, clock, false, true, false)
+{
+}
tms9128_device::tms9128_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9928a_device( mconfig, TMS9128, "TMS9128 VDP", tag, owner, clock, false, true, false, "tms9128", __FILE__)
-{ }
+ : tms9928a_device(mconfig, TMS9128, tag, owner, clock, false, true, false)
+{
+}
tms9929_device::tms9929_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9928a_device( mconfig, TMS9929, "TMS9929", tag, owner, clock, true, false, true, "tms9929", __FILE__)
-{ }
+ : tms9928a_device(mconfig, TMS9929, tag, owner, clock, true, false, true)
+{
+}
tms9929a_device::tms9929a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : tms9928a_device( mconfig, TMS9929A, "TMS9929A", tag, owner, clock, true, true, true, "tms9929a", __FILE__)
-{ }
+ : tms9928a_device(mconfig, TMS9929A, tag, owner, clock, true, true, true)
+{
+}
READ8_MEMBER( tms9928a_device::read )
{
@@ -342,7 +340,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
if ( y < 0 || y >= 192 || ! (m_Regs[1] & 0x40) )
{
/* Draw backdrop colour */
- for ( int i = 0; i < TMS9928A_TOTAL_HORZ; i++ )
+ for ( int i = 0; i < TOTAL_HORZ; i++ )
p[i] = m_palette[BackColour];
/* vblank is set at the last cycle of the first inactive line */
@@ -357,7 +355,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
/* Draw regular line */
/* Left border */
- for ( int i = 0; i < TMS9928A_HORZ_DISPLAY_START; i++ )
+ for ( int i = 0; i < HORZ_DISPLAY_START; i++ )
p[i] = m_palette[BackColour];
/* Active display */
@@ -369,7 +367,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
{
uint16_t addr = m_nametbl + ( ( y & 0xF8 ) << 2 );
- for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 256; x+= 8, addr++ )
+ for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 256; x+= 8, addr++ )
{
uint8_t charcode = m_vram_space->read_byte( addr );
uint8_t pattern = m_vram_space->read_byte( m_pattern + ( charcode << 3 ) + ( y & 7 ) );
@@ -391,10 +389,10 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
rgb_t bg = m_palette[BackColour];
/* Extra 6 pixels left border */
- for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 6; x++ )
+ for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 6; x++ )
p[x] = bg;
- for ( int x = TMS9928A_HORZ_DISPLAY_START + 6; x < TMS9928A_HORZ_DISPLAY_START + 246; x+= 6, addr++ )
+ for ( int x = HORZ_DISPLAY_START + 6; x < HORZ_DISPLAY_START + 246; x+= 6, addr++ )
{
uint16_t charcode = m_vram_space->read_byte( addr );
uint8_t pattern = m_vram_space->read_byte( m_pattern + ( charcode << 3 ) + ( y & 7 ) );
@@ -404,7 +402,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
}
/* Extra 10 pixels right border */
- for ( int x = TMS9928A_HORZ_DISPLAY_START + 246; x < TMS9928A_HORZ_DISPLAY_START + 256; x++ )
+ for ( int x = HORZ_DISPLAY_START + 246; x < HORZ_DISPLAY_START + 256; x++ )
p[x] = bg;
}
break;
@@ -414,7 +412,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
{
uint16_t addr = m_nametbl + ( ( y >> 3 ) * 32 );
- for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 256; x+= 8, addr++ )
+ for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 256; x+= 8, addr++ )
{
uint16_t charcode = m_vram_space->read_byte( addr ) + ( ( y >> 6 ) << 8 );
uint8_t pattern = m_vram_space->read_byte( m_pattern + ( ( charcode & m_patternmask ) << 3 ) + ( y & 7 ) );
@@ -436,10 +434,10 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
rgb_t bg = m_palette[BackColour];
/* Extra 6 pixels left border */
- for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 6; x++ )
+ for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 6; x++ )
p[x] = bg;
- for ( int x = TMS9928A_HORZ_DISPLAY_START + 6; x < TMS9928A_HORZ_DISPLAY_START + 246; x+= 6, addr++ )
+ for ( int x = HORZ_DISPLAY_START + 6; x < HORZ_DISPLAY_START + 246; x+= 6, addr++ )
{
uint16_t charcode = ( m_vram_space->read_byte( addr ) + ( ( y >> 6 ) << 8 ) ) & m_patternmask;
uint8_t pattern = m_vram_space->read_byte( m_pattern + ( charcode << 3 ) + ( y & 7 ) );
@@ -449,7 +447,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
}
/* Extra 10 pixels right border */
- for ( int x = TMS9928A_HORZ_DISPLAY_START + 246; x < TMS9928A_HORZ_DISPLAY_START + 256; x++ )
+ for ( int x = HORZ_DISPLAY_START + 246; x < HORZ_DISPLAY_START + 256; x++ )
p[x] = bg;
}
break;
@@ -459,7 +457,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
{
uint16_t addr = m_nametbl + ( ( y >> 3 ) * 32 );
- for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 256; x+= 8, addr++ )
+ for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 256; x+= 8, addr++ )
{
uint8_t charcode = m_vram_space->read_byte( addr );
uint8_t colour = m_vram_space->read_byte( m_pattern + ( charcode << 3 ) + ( ( y >> 2 ) & 7 ) );
@@ -479,17 +477,17 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
rgb_t bg = m_palette[BackColour];
/* Extra 6 pixels left border */
- for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 6; x++ )
+ for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 6; x++ )
p[x] = bg;
- for ( int x = TMS9928A_HORZ_DISPLAY_START + 6; x < TMS9928A_HORZ_DISPLAY_START + 246; x+= 6 )
+ for ( int x = HORZ_DISPLAY_START + 6; x < HORZ_DISPLAY_START + 246; x+= 6 )
{
p[x+0] = p[x+1] = p[x+2] = p[x+3] = fg;
p[x+4] = p[x+5] = bg;
}
/* Extra 10 pixels right border */
- for ( int x = TMS9928A_HORZ_DISPLAY_START + 246; x < TMS9928A_HORZ_DISPLAY_START + 256; x++ )
+ for ( int x = HORZ_DISPLAY_START + 246; x < HORZ_DISPLAY_START + 256; x++ )
p[x] = bg;
}
break;
@@ -499,7 +497,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
{
uint16_t addr = m_nametbl + ( ( y >> 3 ) * 32 );
- for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 256; x+= 8, addr++ )
+ for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 256; x+= 8, addr++ )
{
uint8_t charcode = m_vram_space->read_byte( addr );
uint8_t colour = m_vram_space->read_byte( m_pattern + ( ( ( charcode + ( ( y >> 2 ) & 7 ) + ( ( y >> 6 ) << 8 ) ) & m_patternmask ) << 3 ) );
@@ -597,7 +595,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
if ( ! ( spr_drawn[ colission_index ] & 0x02 ) )
{
spr_drawn[ colission_index ] |= 0x02;
- p[ TMS9928A_HORZ_DISPLAY_START + colission_index - 32 ] = m_palette[sprcol];
+ p[ HORZ_DISPLAY_START + colission_index - 32 ] = m_palette[sprcol];
}
}
}
@@ -621,12 +619,12 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
}
/* Right border */
- for ( int i = TMS9928A_HORZ_DISPLAY_START + 256; i < TMS9928A_TOTAL_HORZ; i++ )
+ for ( int i = HORZ_DISPLAY_START + 256; i < TOTAL_HORZ; i++ )
p[i] = m_palette[BackColour];
}
/* Schedule next callback */
- m_line_timer->adjust( m_screen->time_until_pos( ( raw_vpos + 1 ) % m_screen->height() , TMS9928A_HORZ_DISPLAY_START ) );
+ m_line_timer->adjust( m_screen->time_until_pos( ( raw_vpos + 1 ) % m_screen->height() , HORZ_DISPLAY_START ) );
}
@@ -666,7 +664,7 @@ void tms9928a_device::set_palette()
E Gray 0.80 0.47 0.47 0.80 0.80 0.80 204 204 204
F White 1.00 0.47 0.47 1.00 1.00 1.00 255 255 255
*/
- static const rgb_t tms9928a_palette[TMS9928A_PALETTE_SIZE] =
+ static const rgb_t tms9928a_palette[PALETTE_SIZE] =
{
rgb_t::black(),
rgb_t::black(),
@@ -687,7 +685,7 @@ void tms9928a_device::set_palette()
};
/* copy default palette into working palette */
- for (int i = 0; i < TMS9928A_PALETTE_SIZE; i++)
+ for (int i = 0; i < PALETTE_SIZE; i++)
{
m_palette[i] = tms9928a_palette[i];
}
@@ -695,8 +693,8 @@ void tms9928a_device::set_palette()
void tms9928a_device::device_start()
{
- m_top_border = m_50hz ? TMS9928A_VERT_DISPLAY_START_PAL : TMS9928A_VERT_DISPLAY_START_NTSC;
- m_vertical_size = m_50hz ? TMS9928A_TOTAL_VERT_PAL : TMS9928A_TOTAL_VERT_NTSC;
+ m_top_border = m_50hz ? VERT_DISPLAY_START_PAL : VERT_DISPLAY_START_NTSC;
+ m_vertical_size = m_50hz ? TOTAL_VERT_PAL : TOTAL_VERT_NTSC;
m_out_int_line_cb.resolve();
m_out_gromclk_cb.resolve();
@@ -705,7 +703,7 @@ void tms9928a_device::device_start()
m_vram_space = &space(AS_DATA);
/* back bitmap */
- m_tmpbmp.allocate(TMS9928A_TOTAL_HORZ, TMS9928A_TOTAL_VERT_PAL);
+ m_tmpbmp.allocate(TOTAL_HORZ, TOTAL_VERT_PAL);
m_line_timer = timer_alloc(TIMER_LINE);
m_gromclk_timer = timer_alloc(GROMCLK);
@@ -759,7 +757,7 @@ void tms9928a_device::device_reset()
m_latch = 0;
m_mode = 0;
- m_line_timer->adjust( m_screen->time_until_pos( 0, TMS9928A_HORZ_DISPLAY_START ) );
+ m_line_timer->adjust( m_screen->time_until_pos( 0, HORZ_DISPLAY_START ) );
// TODO: Check clock freq settings in all drivers
if (!m_out_gromclk_cb.isnull() && m_99) m_gromclk_timer->adjust(attotime::zero, 0, attotime::from_hz(clock()/12));
diff --git a/src/devices/video/tms9928a.h b/src/devices/video/tms9928a.h
index 03389ac14ad..7db5991b5a5 100644
--- a/src/devices/video/tms9928a.h
+++ b/src/devices/video/tms9928a.h
@@ -23,26 +23,14 @@
*/
-#ifndef MAME_DEVICES_VIDEO_TMS9928A_H
-#define MAME_DEVICES_VIDEO_TMS9928A_H
+#ifndef MAME_VIDEO_TMS9928A_H
+#define MAME_VIDEO_TMS9928A_H
#pragma once
#include "screen.h"
-#define TMS9928A_PALETTE_SIZE 16
-
-
-/* Some defines used in defining the screens */
-#define TMS9928A_TOTAL_HORZ 342
-#define TMS9928A_TOTAL_VERT_NTSC 262
-#define TMS9928A_TOTAL_VERT_PAL 313
-
-#define TMS9928A_HORZ_DISPLAY_START (2 + 14 + 8 + 13)
-#define TMS9928A_VERT_DISPLAY_START_PAL (13 + 51)
-#define TMS9928A_VERT_DISPLAY_START_NTSC (13 + 27)
-
// MCFG_DEVICE_ADD(_tag, _variant, XTAL_10_738635MHz / 2 )
#define MCFG_TMS9928A_VRAM_SIZE(_size) \
@@ -60,25 +48,25 @@
#define MCFG_TMS9928A_SCREEN_ADD_NTSC(_screen_tag) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
MCFG_SCREEN_ADD( _screen_tag, RASTER ) \
- MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, TMS9928A_TOTAL_HORZ, TMS9928A_HORZ_DISPLAY_START-12, TMS9928A_HORZ_DISPLAY_START + 256 + 12, \
- TMS9928A_TOTAL_VERT_NTSC, TMS9928A_VERT_DISPLAY_START_NTSC - 12, TMS9928A_VERT_DISPLAY_START_NTSC + 192 + 12 )
+ MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, tms9928a_device::TOTAL_HORZ, tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \
+ tms9928a_device::TOTAL_VERT_NTSC, tms9928a_device::VERT_DISPLAY_START_NTSC - 12, tms9928a_device::VERT_DISPLAY_START_NTSC + 192 + 12 )
#define MCFG_TMS9928A_SCREEN_ADD_PAL(_screen_tag) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
MCFG_SCREEN_ADD(_screen_tag, RASTER ) \
- MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, TMS9928A_TOTAL_HORZ, TMS9928A_HORZ_DISPLAY_START-12, TMS9928A_HORZ_DISPLAY_START + 256 + 12, \
- TMS9928A_TOTAL_VERT_PAL, TMS9928A_VERT_DISPLAY_START_PAL - 12, TMS9928A_VERT_DISPLAY_START_PAL + 192 + 12 )
+ MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, tms9928a_device::TOTAL_HORZ, tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \
+ tms9928a_device::TOTAL_VERT_PAL, tms9928a_device::VERT_DISPLAY_START_PAL - 12, tms9928a_device::VERT_DISPLAY_START_PAL + 192 + 12 )
-extern const device_type TMS9918;
-extern const device_type TMS9918A;
-extern const device_type TMS9118;
-extern const device_type TMS9928A;
-extern const device_type TMS9128;
-extern const device_type TMS9929;
-extern const device_type TMS9929A;
-extern const device_type TMS9129;
+DECLARE_DEVICE_TYPE(TMS9918, tms9918_device)
+DECLARE_DEVICE_TYPE(TMS9918A, tms9918a_device)
+DECLARE_DEVICE_TYPE(TMS9118, tms9118_device)
+DECLARE_DEVICE_TYPE(TMS9928A, tms9928a_device)
+DECLARE_DEVICE_TYPE(TMS9128, tms9128_device)
+DECLARE_DEVICE_TYPE(TMS9929, tms9929_device)
+DECLARE_DEVICE_TYPE(TMS9929A, tms9929a_device)
+DECLARE_DEVICE_TYPE(TMS9129, tms9129_device)
class tms9928a_device : public device_t,
@@ -86,13 +74,23 @@ class tms9928a_device : public device_t,
public device_video_interface
{
public:
+ static constexpr unsigned PALETTE_SIZE = 16;
+
+ /* Some defines used in defining the screens */
+ static constexpr unsigned TOTAL_HORZ = 342;
+ static constexpr unsigned TOTAL_VERT_NTSC = 262;
+ static constexpr unsigned TOTAL_VERT_PAL = 313;
+
+ static constexpr unsigned HORZ_DISPLAY_START = 2 + 14 + 8 + 13;
+ static constexpr unsigned VERT_DISPLAY_START_PAL = 13 + 51;
+ static constexpr unsigned VERT_DISPLAY_START_NTSC = 13 + 27;
+
// construction/destruction
tms9928a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- tms9928a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, bool is_50hz, bool is_reva, bool is_99, const char *shortname, const char *source);
static void set_vram_size(device_t &device, int vram_size) { downcast<tms9928a_device &>(device).m_vram_size = vram_size; }
- template<class _Object> static devcb_base &set_out_int_line_callback(device_t &device, _Object object) { return downcast<tms9928a_device &>(device).m_out_int_line_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_out_gromclk_callback(device_t &device, _Object object) { return downcast<tms9928a_device &>(device).m_out_gromclk_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_out_int_line_callback(device_t &device, Object &&cb) { return downcast<tms9928a_device &>(device).m_out_int_line_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_out_gromclk_callback(device_t &device, Object &&cb) { return downcast<tms9928a_device &>(device).m_out_gromclk_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -110,6 +108,8 @@ public:
void reset_line(int state) { if (state==ASSERT_LINE) device_reset(); }
protected:
+ tms9928a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_50hz, bool is_reva, bool is_99);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -147,9 +147,9 @@ private:
uint16_t m_spritepattern;
int m_colourmask;
int m_patternmask;
- bool m_50hz;
- bool m_reva;
- bool m_99;
+ const bool m_50hz;
+ const bool m_reva;
+ const bool m_99;
rgb_t m_palette[16];
/* memory */
@@ -216,4 +216,4 @@ public:
};
-#endif // MAME_DEVICES_VIDEO_TMS9928A_H
+#endif // MAME_VIDEO_TMS9928A_H
diff --git a/src/devices/video/upd3301.cpp b/src/devices/video/upd3301.cpp
index 8b6dce81ffa..424ea81cee8 100644
--- a/src/devices/video/upd3301.cpp
+++ b/src/devices/video/upd3301.cpp
@@ -24,15 +24,15 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
-
#define COMMAND_MASK 0xe0
#define COMMAND_RESET 0x00
#define COMMAND_START_DISPLAY 0x20
@@ -65,7 +65,7 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type UPD3301 = device_creator<upd3301_device>;
+DEFINE_DEVICE_TYPE(UPD3301, upd3301_device, "upd3301", "NEC uPD3301")
@@ -78,7 +78,7 @@ const device_type UPD3301 = device_creator<upd3301_device>;
//-------------------------------------------------
upd3301_device::upd3301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, UPD3301, "UPD3301", tag, owner, clock, "upd3301", __FILE__),
+ device_t(mconfig, UPD3301, tag, owner, clock),
device_video_interface(mconfig, *this),
m_write_int(*this),
m_write_drq(*this),
@@ -192,7 +192,7 @@ void upd3301_device::device_timer(emu_timer &timer, device_timer_id id, int para
switch (id)
{
case TIMER_HRTC:
- if (LOG) logerror("UPD3301 '%s' HRTC: %u\n", tag(), param);
+ LOG("UPD3301 HRTC: %u\n", param);
m_write_hrtc(param);
m_hrtc = param;
@@ -201,7 +201,7 @@ void upd3301_device::device_timer(emu_timer &timer, device_timer_id id, int para
break;
case TIMER_VRTC:
- if (LOG) logerror("UPD3301 '%s' VRTC: %u\n", tag(), param);
+ LOG("UPD3301 VRTC: %u\n", param);
m_write_vrtc(param);
m_vrtc = param;
@@ -261,31 +261,31 @@ WRITE8_MEMBER( upd3301_device::write )
case 0:
m_dma_mode = BIT(data, 7);
m_h = (data & 0x7f) + 2;
- if (LOG) logerror("UPD3301 '%s' DMA Mode: %s\n", tag(), m_dma_mode ? "character" : "burst");
- if (LOG) logerror("UPD3301 '%s' H: %u\n", tag(), m_h);
+ LOG("UPD3301 DMA Mode: %s\n", m_dma_mode ? "character" : "burst");
+ LOG("UPD3301 H: %u\n", m_h);
break;
case 1:
m_b = ((data >> 6) + 1) * 16;
m_l = (data & 0x3f) + 1;
- if (LOG) logerror("UPD3301 '%s' B: %u\n", tag(), m_b);
- if (LOG) logerror("UPD3301 '%s' L: %u\n", tag(), m_l);
+ LOG("UPD3301 B: %u\n", m_b);
+ LOG("UPD3301 L: %u\n", m_l);
break;
case 2:
m_s = BIT(data, 7);
m_c = (data >> 4) & 0x03;
m_r = (data & 0x1f) + 1;
- if (LOG) logerror("UPD3301 '%s' S: %u\n", tag(), m_s);
- if (LOG) logerror("UPD3301 '%s' C: %u\n", tag(), m_c);
- if (LOG) logerror("UPD3301 '%s' R: %u\n", tag(), m_r);
+ LOG("UPD3301 S: %u\n", m_s);
+ LOG("UPD3301 C: %u\n", m_c);
+ LOG("UPD3301 R: %u\n", m_r);
break;
case 3:
m_v = (data >> 5) + 1;
m_z = (data & 0x1f) + 2;
- if (LOG) logerror("UPD3301 '%s' V: %u\n", tag(), m_v);
- if (LOG) logerror("UPD3301 '%s' Z: %u\n", tag(), m_z);
+ LOG("UPD3301 V: %u\n", m_v);
+ LOG("UPD3301 Z: %u\n", m_z);
recompute_parameters();
break;
@@ -294,10 +294,10 @@ WRITE8_MEMBER( upd3301_device::write )
m_at0 = BIT(data, 6);
m_sc = BIT(data, 5);
m_attr = (data & 0x1f) + 1;
- if (LOG) logerror("UPD3301 '%s' AT1: %u\n", tag(), m_at1);
- if (LOG) logerror("UPD3301 '%s' AT0: %u\n", tag(), m_at0);
- if (LOG) logerror("UPD3301 '%s' SC: %u\n", tag(), m_sc);
- if (LOG) logerror("UPD3301 '%s' ATTR: %u\n", tag(), m_attr);
+ LOG("UPD3301 AT1: %u\n", m_at1);
+ LOG("UPD3301 AT0: %u\n", m_at0);
+ LOG("UPD3301 SC: %u\n", m_sc);
+ LOG("UPD3301 ATTR: %u\n", m_attr);
m_mode = MODE_NONE;
break;
@@ -311,12 +311,12 @@ WRITE8_MEMBER( upd3301_device::write )
{
case 0:
m_cx = data & 0x7f;
- if (LOG) logerror("UPD3301 '%s' CX: %u\n", tag(), m_cx);
+ LOG("UPD3301 CX: %u\n", m_cx);
break;
case 1:
m_cy = data & 0x3f;
- if (LOG) logerror("UPD3301 '%s' CY: %u\n", tag(), m_cy);
+ LOG("UPD3301 CY: %u\n", m_cy);
m_mode = MODE_NONE;
break;
@@ -326,7 +326,7 @@ WRITE8_MEMBER( upd3301_device::write )
break;
default:
- if (LOG) logerror("UPD3301 '%s' Invalid Parameter Byte %02x!\n", tag(), data);
+ LOG("UPD3301 Invalid Parameter Byte %02x!\n", data);
}
break;
@@ -337,45 +337,45 @@ WRITE8_MEMBER( upd3301_device::write )
switch (data & 0xe0)
{
case COMMAND_RESET:
- if (LOG) logerror("UPD3301 '%s' Reset\n", tag());
+ LOG("UPD3301 Reset\n");
m_mode = MODE_RESET;
set_display(0);
set_interrupt(0);
break;
case COMMAND_START_DISPLAY:
- if (LOG) logerror("UPD3301 '%s' Start Display\n", tag());
+ LOG("UPD3301 Start Display\n");
set_display(1);
reset_counters();
break;
case COMMAND_SET_INTERRUPT_MASK:
- if (LOG) logerror("UPD3301 '%s' Set Interrupt Mask\n", tag());
+ LOG("UPD3301 Set Interrupt Mask\n");
m_me = BIT(data, 0);
m_mn = BIT(data, 1);
- if (LOG) logerror("UPD3301 '%s' ME: %u\n", tag(), m_me);
- if (LOG) logerror("UPD3301 '%s' MN: %u\n", tag(), m_mn);
+ LOG("UPD3301 ME: %u\n", m_me);
+ LOG("UPD3301 MN: %u\n", m_mn);
break;
case COMMAND_READ_LIGHT_PEN:
- if (LOG) logerror("UPD3301 '%s' Read Light Pen\n", tag());
+ LOG("UPD3301 Read Light Pen\n");
m_mode = MODE_READ_LIGHT_PEN;
break;
case COMMAND_LOAD_CURSOR_POSITION:
- if (LOG) logerror("UPD3301 '%s' Load Cursor Position\n", tag());
+ LOG("UPD3301 Load Cursor Position\n");
m_mode = MODE_LOAD_CURSOR_POSITION;
m_cm = BIT(data, 0);
- if (LOG) logerror("UPD3301 '%s' CM: %u\n", tag(), m_cm);
+ LOG("UPD3301 CM: %u\n", m_cm);
break;
case COMMAND_RESET_INTERRUPT:
- if (LOG) logerror("UPD3301 '%s' Reset Interrupt\n", tag());
+ LOG("UPD3301 Reset Interrupt\n");
set_interrupt(0);
break;
case COMMAND_RESET_COUNTERS:
- if (LOG) logerror("UPD3301 '%s' Reset Counters\n", tag());
+ LOG("UPD3301 Reset Counters\n");
m_mode = MODE_RESET_COUNTERS;
reset_counters();
break;
@@ -528,7 +528,7 @@ uint32_t upd3301_device::screen_update(screen_device &screen, bitmap_rgb32 &bitm
void upd3301_device::set_interrupt(int state)
{
- if (LOG) logerror("UPD3301 '%s' Interrupt: %u\n", tag(), state);
+ LOG("UPD3301 Interrupt: %u\n", state);
m_write_int(state);
@@ -545,7 +545,7 @@ void upd3301_device::set_interrupt(int state)
void upd3301_device::set_drq(int state)
{
- if (LOG) logerror("UPD3301 '%s' DRQ: %u\n", tag(), state);
+ LOG("UPD3301 DRQ: %u\n", state);
m_write_drq(state);
}
@@ -625,11 +625,8 @@ void upd3301_device::recompute_parameters()
visarea.set(0, (m_h * m_width) - 1, 0, (m_l * m_r) - 1);
- if (LOG)
- {
- if (LOG) logerror("UPD3301 '%s' Screen: %u x %u @ %f Hz\n", tag(), horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
- if (LOG) logerror("UPD3301 '%s' Visible Area: (%u, %u) - (%u, %u)\n", tag(), visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y);
- }
+ LOG("UPD3301 Screen: %u x %u @ %f Hz\n", horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
+ LOG("UPD3301 Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y);
m_screen->configure(horiz_pix_total, vert_pix_total, visarea, refresh);
diff --git a/src/devices/video/upd3301.h b/src/devices/video/upd3301.h
index 5d1c03c7ed1..a8e9b8e8b97 100644
--- a/src/devices/video/upd3301.h
+++ b/src/devices/video/upd3301.h
@@ -29,11 +29,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __UPD3301__
-#define __UPD3301__
+#ifndef MAME_VIDEO_UPD3301_H
+#define MAME_VIDEO_UPD3301_H
+#pragma once
@@ -48,7 +47,7 @@
upd3301_device::static_set_character_width(*device, _value);
#define MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \
- upd3301_device::static_set_display_callback(*device, upd3301_draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ upd3301_device::static_set_display_callback(*device, upd3301_device::draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_UPD3301_DRQ_CALLBACK(_write) \
devcb = &upd3301_device::set_drq_wr_callback(*device, DEVCB_##_write);
@@ -68,8 +67,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<void (bitmap_rgb32 &bitmap, int y, int sx, uint8_t cc, uint8_t lc, int hlgt, int rvv, int vsp, int sl0, int sl12, int csr, int gpa)> upd3301_draw_character_delegate;
-
// ======================> upd3301_device
@@ -77,16 +74,18 @@ class upd3301_device : public device_t,
public device_video_interface
{
public:
+ typedef device_delegate<void (bitmap_rgb32 &bitmap, int y, int sx, uint8_t cc, uint8_t lc, int hlgt, int rvv, int vsp, int sl0, int sl12, int csr, int gpa)> draw_character_delegate;
+
// construction/destruction
upd3301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static void static_set_character_width(device_t &device, int value) { downcast<upd3301_device &>(device).m_width = value; }
- static void static_set_display_callback(device_t &device, upd3301_draw_character_delegate callback) { downcast<upd3301_device &>(device).m_display_cb = callback; }
+ static void static_set_display_callback(device_t &device, draw_character_delegate &&cb) { downcast<upd3301_device &>(device).m_display_cb = std::move(cb); }
- template<class _Object> static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<upd3301_device &>(device).m_write_drq.set_callback(object); }
- template<class _Object> static devcb_base &set_int_wr_callback(device_t &device, _Object object) { return downcast<upd3301_device &>(device).m_write_int.set_callback(object); }
- template<class _Object> static devcb_base &set_hrtc_wr_callback(device_t &device, _Object object) { return downcast<upd3301_device &>(device).m_write_hrtc.set_callback(object); }
- template<class _Object> static devcb_base &set_vrtc_wr_callback(device_t &device, _Object object) { return downcast<upd3301_device &>(device).m_write_vrtc.set_callback(object); }
+ template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<upd3301_device &>(device).m_write_drq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast<upd3301_device &>(device).m_write_int.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hrtc_wr_callback(device_t &device, Object &&cb) { return downcast<upd3301_device &>(device).m_write_hrtc.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vrtc_wr_callback(device_t &device, Object &&cb) { return downcast<upd3301_device &>(device).m_write_vrtc.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -127,7 +126,7 @@ private:
devcb_write_line m_write_hrtc;
devcb_write_line m_write_vrtc;
- upd3301_draw_character_delegate m_display_cb;
+ draw_character_delegate m_display_cb;
int m_width;
// screen drawing
@@ -186,8 +185,6 @@ private:
// device type definition
-extern const device_type UPD3301;
-
-
+DECLARE_DEVICE_TYPE(UPD3301, upd3301_device)
-#endif
+#endif // MAME_VIDEO_UPD3301_H
diff --git a/src/devices/video/upd7220.cpp b/src/devices/video/upd7220.cpp
index 46e97fab0ba..c4b5650cf76 100644
--- a/src/devices/video/upd7220.cpp
+++ b/src/devices/video/upd7220.cpp
@@ -39,16 +39,16 @@
#include "screen.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
-
-
// todo typedef
enum
{
@@ -136,8 +136,8 @@ enum
#define UPD7220_MODE_INTERLACE_ON 0x09
-static const int x_dir[8] = { 0, 1, 1, 1, 0,-1,-1,-1};
-static const int y_dir[8] = { 1, 1, 0,-1,-1,-1, 0, 1};
+static constexpr int x_dir[8] = { 0, 1, 1, 1, 0,-1,-1,-1};
+static constexpr int y_dir[8] = { 1, 1, 0,-1,-1,-1, 0, 1};
//**************************************************************************
@@ -145,7 +145,7 @@ static const int y_dir[8] = { 1, 1, 0,-1,-1,-1, 0, 1};
//**************************************************************************
// devices
-const device_type UPD7220 = device_creator<upd7220_device>;
+DEFINE_DEVICE_TYPE(UPD7220, upd7220_device, "upd7220", "NEC uPD7220")
// default address map
@@ -412,10 +412,10 @@ inline void upd7220_device::recompute_parameters()
visarea.max_x = m_aw * horiz_mult - 1;//horiz_pix_total - (m_hfp * 8) - 1;
visarea.max_y = m_al * vert_mult + m_vbp - 1;//vert_pix_total - m_vfp - 1;
- LOG(("uPD7220 '%s' Screen: %u x %u @ %f Hz\n", tag(), horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh)));
- LOG(("Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y));
- LOG(("%d %d %d %d %d\n",m_hs,m_hbp,m_aw,m_hfp,m_pitch));
- LOG(("%d %d %d %d\n",m_vs,m_vbp,m_al,m_vfp));
+ LOG("uPD7220 Screen: %u x %u @ %f Hz\n", horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
+ LOG("Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y);
+ LOG("%d %d %d %d %d\n",m_hs,m_hbp,m_aw,m_hfp,m_pitch);
+ LOG("%d %d %d %d\n",m_vs,m_vbp,m_al,m_vfp);
if (m_m)
{
@@ -457,12 +457,12 @@ inline void upd7220_device::read_vram(uint8_t type, uint8_t mod)
{
if (type == 1)
{
- LOG (("uPD7220 invalid type 1 RDAT parameter\n"));
+ LOG("uPD7220 invalid type 1 RDAT parameter\n");
return;
}
if (mod)
- LOG (("uPD7220 RDAT used with mod = %02x?\n",mod));
+ LOG("uPD7220 RDAT used with mod = %02x?\n",mod);
while (m_figs.m_dc && m_fifo_ptr < (type ? 15 : 14))
{
@@ -609,7 +609,7 @@ inline void upd7220_device::get_graphics_partition(int index, uint32_t *sad, uin
//-------------------------------------------------
upd7220_device::upd7220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, UPD7220, "uPD7220", tag, owner, clock, "upd7220", __FILE__),
+ device_t(mconfig, UPD7220, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_write_drq(*this),
@@ -823,7 +823,7 @@ void upd7220_device::draw_line(int x, int y)
uint16_t pattern = (m_ra[8]) | (m_ra[9]<<8);
const int dot_dir[4] = {1, -1, -1, 1};
- LOG(("uPD7220 line check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,d1,m_figs.m_dc,m_bitmap_mod));
+ LOG("uPD7220 line check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,d1,m_figs.m_dc,m_bitmap_mod);
for(yi = xi = 0; yi <= m_figs.m_dc; yi++)
{
@@ -873,7 +873,7 @@ void upd7220_device::draw_arc(int x, int y)
uint16_t pattern = (m_ra[8]) | (m_ra[9]<<8);
const int dot_dir[4] = {1, -1, -1, 1};
- LOG(("uPD7220 arc check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,m_figs.m_dm,m_figs.m_dc,m_figs.m_d));
+ LOG("uPD7220 arc check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,m_figs.m_dm,m_figs.m_dc,m_figs.m_d);
for(int yi = 0; yi <= m_figs.m_dc; yi++)
{
@@ -926,7 +926,7 @@ void upd7220_device::draw_rectangle(int x, int y)
uint8_t rect_type,rect_dir;
uint16_t pattern = (m_ra[8]) | (m_ra[9]<<8);
- LOG(("uPD7220 rectangle check: %d %d %02x %08x\n",x,y,m_figs.m_dir,m_ead));
+ LOG("uPD7220 rectangle check: %d %d %02x %08x\n",x,y,m_figs.m_dir,m_ead);
rect_type = (m_figs.m_dir & 1) << 2;
rect_dir = rect_type | (((m_figs.m_dir >> 1) + 0) & 3);
@@ -980,7 +980,7 @@ void upd7220_device::draw_char(int x, int y)
int isize,psize;
uint16_t tile_data;
- LOG(("uPD7220 char check: %d %d %02x %08x %d %d %02x\n",x,y,m_figs.m_dir,m_ead,m_figs.m_d,m_figs.m_dc,m_figs.m_figure_type));
+ LOG("uPD7220 char check: %d %d %02x %08x %d %d %02x\n",x,y,m_figs.m_dir,m_ead,m_figs.m_d,m_figs.m_dc,m_figs.m_figure_type);
/* QX10 may require upper bits for psize, VT240 requires the opposite */
isize = m_figs.m_d;
@@ -1106,19 +1106,19 @@ void upd7220_device::process_fifo()
switch (translate_command(m_cr))
{
case COMMAND_INVALID:
- logerror("uPD7220 '%s' Invalid Command Byte %02x\n", tag(), m_cr);
+ logerror("uPD7220 Invalid Command Byte %02x\n", m_cr);
break;
case COMMAND_5A:
if (m_param_ptr == 4)
- logerror("uPD7220 '%s' Undocumented Command 0x5A Executed %02x %02x %02x\n", tag(),m_pr[1],m_pr[2],m_pr[3] );
+ logerror("uPD7220 Undocumented Command 0x5A Executed %02x %02x %02x\n", m_pr[1],m_pr[2],m_pr[3] );
break;
case COMMAND_RESET: /* reset */
switch (m_param_ptr)
{
case 0:
- LOG(("uPD7220 '%s' RESET\n", tag()));
+ LOG("uPD7220 RESET\n");
m_de = 0;
m_ra[0] = m_ra[1] = m_ra[2] = 0;
@@ -1141,16 +1141,16 @@ void upd7220_device::process_fifo()
m_pitch = m_aw;
- LOG(("uPD7220 '%s' Mode: %02x\n", tag(), m_mode));
- LOG(("uPD7220 '%s' AW: %u\n", tag(), m_aw));
- LOG(("uPD7220 '%s' HS: %u\n", tag(), m_hs));
- LOG(("uPD7220 '%s' VS: %u\n", tag(), m_vs));
- LOG(("uPD7220 '%s' HFP: %u\n", tag(), m_hfp));
- LOG(("uPD7220 '%s' HBP: %u\n", tag(), m_hbp));
- LOG(("uPD7220 '%s' VFP: %u\n", tag(), m_vfp));
- LOG(("uPD7220 '%s' AL: %u\n", tag(), m_al));
- LOG(("uPD7220 '%s' VBP: %u\n", tag(), m_vbp));
- LOG(("uPD7220 '%s' PITCH: %u\n", tag(), m_pitch));
+ LOG("uPD7220 Mode: %02x\n", m_mode);
+ LOG("uPD7220 AW: %u\n", m_aw);
+ LOG("uPD7220 HS: %u\n", m_hs);
+ LOG("uPD7220 VS: %u\n", m_vs);
+ LOG("uPD7220 HFP: %u\n", m_hfp);
+ LOG("uPD7220 HBP: %u\n", m_hbp);
+ LOG("uPD7220 VFP: %u\n", m_vfp);
+ LOG("uPD7220 AL: %u\n", m_al);
+ LOG("uPD7220 VBP: %u\n", m_vbp);
+ LOG("uPD7220 PITCH: %u\n", m_pitch);
recompute_parameters();
break;
@@ -1172,16 +1172,16 @@ void upd7220_device::process_fifo()
m_pitch = m_aw;
- LOG(("uPD7220 '%s' Mode: %02x\n", tag(), m_mode));
- LOG(("uPD7220 '%s' AW: %u\n", tag(), m_aw));
- LOG(("uPD7220 '%s' HS: %u\n", tag(), m_hs));
- LOG(("uPD7220 '%s' VS: %u\n", tag(), m_vs));
- LOG(("uPD7220 '%s' HFP: %u\n", tag(), m_hfp));
- LOG(("uPD7220 '%s' HBP: %u\n", tag(), m_hbp));
- LOG(("uPD7220 '%s' VFP: %u\n", tag(), m_vfp));
- LOG(("uPD7220 '%s' AL: %u\n", tag(), m_al));
- LOG(("uPD7220 '%s' VBP: %u\n", tag(), m_vbp));
- LOG(("uPD7220 '%s' PITCH: %u\n", tag(), m_pitch));
+ LOG("uPD7220 Mode: %02x\n", m_mode);
+ LOG("uPD7220 AW: %u\n", m_aw);
+ LOG("uPD7220 HS: %u\n", m_hs);
+ LOG("uPD7220 VS: %u\n", m_vs);
+ LOG("uPD7220 HFP: %u\n", m_hfp);
+ LOG("uPD7220 HBP: %u\n", m_hbp);
+ LOG("uPD7220 VFP: %u\n", m_vfp);
+ LOG("uPD7220 AL: %u\n", m_al);
+ LOG("uPD7220 VBP: %u\n", m_vbp);
+ LOG("uPD7220 PITCH: %u\n", m_pitch);
recompute_parameters();
}
@@ -1190,7 +1190,7 @@ void upd7220_device::process_fifo()
case COMMAND_VSYNC: /* vertical sync mode */
m_m = m_cr & 0x01;
- LOG(("uPD7220 '%s' M: %u\n", tag(), m_m));
+ LOG("uPD7220 M: %u\n", m_m);
recompute_parameters();
break;
@@ -1201,8 +1201,8 @@ void upd7220_device::process_fifo()
m_lr = (m_pr[1] & 0x1f) + 1;
m_dc = BIT(m_pr[1], 7);
- LOG(("uPD7220 '%s' LR: %u\n", tag(), m_lr));
- LOG(("uPD7220 '%s' DC: %u\n", tag(), m_dc));
+ LOG("uPD7220 LR: %u\n", m_lr);
+ LOG("uPD7220 DC: %u\n", m_dc);
}
if(m_param_ptr == 3)
@@ -1211,8 +1211,8 @@ void upd7220_device::process_fifo()
m_sc = BIT(m_pr[2], 5);
m_br = (m_pr[2] >> 6); /* guess, assume that blink rate clears upper bits (if any) */
- LOG(("uPD7220 '%s' CTOP: %u\n", tag(), m_ctop));
- LOG(("uPD7220 '%s' SC: %u\n", tag(), m_sc));
+ LOG("uPD7220 CTOP: %u\n", m_ctop);
+ LOG("uPD7220 SC: %u\n", m_sc);
}
if(m_param_ptr == 4)
@@ -1220,15 +1220,15 @@ void upd7220_device::process_fifo()
m_br = ((m_pr[3] & 0x07) << 2) | (m_pr[2] >> 6);
m_cbot = m_pr[3] >> 3;
- LOG(("uPD7220 '%s' BR: %u\n", tag(), m_br));
- LOG(("uPD7220 '%s' CBOT: %u\n", tag(), m_cbot));
+ LOG("uPD7220 BR: %u\n", m_br);
+ LOG("uPD7220 CBOT: %u\n", m_cbot);
}
break;
case COMMAND_START: /* start display & end idle mode */
m_de = 1;
- //LOG(("uPD7220 '%s' DE: 1\n", tag()));
+ //LOG("uPD7220 '%s' DE: 1\n");
break;
case COMMAND_05:
@@ -1238,7 +1238,7 @@ void upd7220_device::process_fifo()
case COMMAND_BCTRL: /* display blanking control */
m_de = m_cr & 0x01;
- //LOG(("uPD7220 '%s' DE: %u\n", tag(), m_de));
+ //LOG("uPD7220 DE: %u\n", m_de);
break;
case COMMAND_ZOOM: /* zoom factors specify */
@@ -1247,8 +1247,8 @@ void upd7220_device::process_fifo()
m_gchr = m_pr[1] & 0x0f;
m_disp = m_pr[1] >> 4;
- LOG(("uPD7220 '%s' GCHR: %01x\n", tag(), m_gchr));
- LOG(("uPD7220 '%s' DISP: %01x\n", tag(), m_disp));
+ LOG("uPD7220 GCHR: %01x\n", m_gchr);
+ LOG("uPD7220 DISP: %01x\n", m_disp);
}
break;
@@ -1259,12 +1259,12 @@ void upd7220_device::process_fifo()
m_ead = (upper_addr << 16) | (m_pr[2] << 8) | m_pr[1];
- LOG(("uPD7220 '%s' EAD: %06x\n", tag(), m_ead));
+ LOG("uPD7220 EAD: %06x\n", m_ead);
if(m_param_ptr == 4)
{
m_dad = m_pr[3] >> 4;
- LOG(("uPD7220 '%s' DAD: %01x\n", tag(), m_dad));
+ LOG("uPD7220 DAD: %01x\n", m_dad);
}
}
break;
@@ -1278,7 +1278,7 @@ void upd7220_device::process_fifo()
{
if (m_ra_addr < 16)
{
- LOG(("uPD7220 '%s' RA%u: %02x\n", tag(), m_ra_addr, data));
+ LOG("uPD7220 RA%u: %02x\n", m_ra_addr, data);
m_ra[m_ra_addr] = data;
m_ra_addr++;
@@ -1293,7 +1293,7 @@ void upd7220_device::process_fifo()
{
m_pitch = data;
- LOG(("uPD7220 '%s' PITCH: %u\n", tag(), m_pitch));
+ LOG("uPD7220 PITCH: %u\n", m_pitch);
}
break;
@@ -1302,7 +1302,7 @@ void upd7220_device::process_fifo()
if (m_param_ptr == 3 || (m_param_ptr == 2 && m_cr & 0x10))
{
- LOG(("%02x = %02x %02x (%c) %06x %04x\n",m_cr,m_pr[2],m_pr[1],m_pr[1]?m_pr[1]:' ',m_ead,m_figs.m_dc));
+ LOG("%02x = %02x %02x (%c) %06x %04x\n",m_cr,m_pr[2],m_pr[1],m_pr[1]?m_pr[1]:' ',m_ead,m_figs.m_dc);
fifo_set_direction(FIFO_WRITE);
write_vram((m_cr & 0x18) >> 3,m_cr & 3);
@@ -1316,7 +1316,7 @@ void upd7220_device::process_fifo()
{
m_mask = (m_pr[2] << 8) | m_pr[1];
- LOG(("uPD7220 '%s' MASK: %04x\n", tag(), m_mask));
+ LOG("uPD7220 MASK: %04x\n", m_mask);
}
break;
@@ -1365,7 +1365,7 @@ void upd7220_device::process_fifo()
else if(m_figs.m_figure_type == 8)
draw_rectangle(((m_ead % eff_pitch) << 4) | (m_dad & 0xf),(m_ead / eff_pitch));
else
- logerror("uPD7220 '%s' Unimplemented command FIGD %02x\n", tag(),m_figs.m_figure_type);
+ logerror("uPD7220 Unimplemented command FIGD %02x\n", m_figs.m_figure_type);
reset_figs_param();
m_sr |= UPD7220_SR_DRAWING_IN_PROGRESS;
@@ -1375,7 +1375,7 @@ void upd7220_device::process_fifo()
if((m_figs.m_figure_type & 0xf) == 2)
draw_char(((m_ead % eff_pitch) << 4) | (m_dad & 0xf),(m_ead / eff_pitch));
else
- logerror("uPD7220 '%s' Unimplemented command GCHRD %02x\n", tag(),m_figs.m_figure_type);
+ logerror("uPD7220 Unimplemented command GCHRD %02x\n", m_figs.m_figure_type);
reset_figs_param();
m_sr |= UPD7220_SR_DRAWING_IN_PROGRESS;
@@ -1416,11 +1416,11 @@ void upd7220_device::process_fifo()
break;
case COMMAND_DMAR: /* DMA read request */
- logerror("uPD7220 '%s' Unimplemented command DMAR\n", tag());
+ logerror("uPD7220 Unimplemented command DMAR\n");
break;
case COMMAND_DMAW: /* DMA write request */
- logerror("uPD7220 '%s' Unimplemented command DMAW\n", tag());
+ logerror("uPD7220 Unimplemented command DMAW\n");
break;
}
}
@@ -1520,7 +1520,7 @@ WRITE8_MEMBER( upd7220_device::dack_w )
WRITE_LINE_MEMBER( upd7220_device::ext_sync_w )
{
- //LOG(("uPD7220 '%s' External Synchronization: %u\n", tag(), state));
+ //LOG("uPD7220 External Synchronization: %u\n", state);
if (state)
{
@@ -1684,7 +1684,7 @@ uint32_t upd7220_device::screen_update(screen_device &screen, bitmap_rgb32 &bitm
break;
case UPD7220_MODE_DISPLAY_INVALID:
- LOG(("uPD7220 '%s' Invalid Display Mode!\n", tag()));
+ LOG("uPD7220 Invalid Display Mode!\n");
}
}
return 0;
diff --git a/src/devices/video/upd7220.h b/src/devices/video/upd7220.h
index e55a1892241..df99a7556aa 100644
--- a/src/devices/video/upd7220.h
+++ b/src/devices/video/upd7220.h
@@ -29,11 +29,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __UPD7220__
-#define __UPD7220__
+#ifndef MAME_VIDEO_UPD7220_H
+#define MAME_VIDEO_UPD7220_H
+#pragma once
@@ -46,10 +45,10 @@
#define MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(_class, _method) \
- upd7220_device::static_set_display_pixels_callback(*device, upd7220_display_pixels_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ upd7220_device::static_set_display_pixels_callback(*device, upd7220_device::display_pixels_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(_class, _method) \
- upd7220_device::static_set_draw_text_callback(*device, upd7220_draw_text_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ upd7220_device::static_set_draw_text_callback(*device, upd7220_device::draw_text_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_UPD7220_DRQ_CALLBACK(_write) \
devcb = &upd7220_device::set_drq_wr_callback(*device, DEVCB_##_write);
@@ -69,9 +68,6 @@
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<void (bitmap_rgb32 &bitmap, int y, int x, uint32_t address)> upd7220_display_pixels_delegate;
-typedef device_delegate<void (bitmap_rgb32 &bitmap, uint32_t addr, int y, int wd, int pitch, int lr, int cursor_on, int cursor_addr)> upd7220_draw_text_delegate;
-
// ======================> upd7220_device
@@ -80,16 +76,19 @@ class upd7220_device : public device_t,
public device_video_interface
{
public:
+ typedef device_delegate<void (bitmap_rgb32 &bitmap, int y, int x, uint32_t address)> display_pixels_delegate;
+ typedef device_delegate<void (bitmap_rgb32 &bitmap, uint32_t addr, int y, int wd, int pitch, int lr, int cursor_on, int cursor_addr)> draw_text_delegate;
+
// construction/destruction
upd7220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- static void static_set_display_pixels_callback(device_t &device, upd7220_display_pixels_delegate callback) { downcast<upd7220_device &>(device).m_display_cb = callback; }
- static void static_set_draw_text_callback(device_t &device, upd7220_draw_text_delegate callback) { downcast<upd7220_device &>(device).m_draw_text_cb = callback; }
+ static void static_set_display_pixels_callback(device_t &device, display_pixels_delegate &&cb) { downcast<upd7220_device &>(device).m_display_cb = std::move(cb); }
+ static void static_set_draw_text_callback(device_t &device, draw_text_delegate &&cb) { downcast<upd7220_device &>(device).m_draw_text_cb = std::move(cb); }
- template<class _Object> static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<upd7220_device &>(device).m_write_drq.set_callback(object); }
- template<class _Object> static devcb_base &set_hsync_wr_callback(device_t &device, _Object object) { return downcast<upd7220_device &>(device).m_write_hsync.set_callback(object); }
- template<class _Object> static devcb_base &set_vsync_wr_callback(device_t &device, _Object object) { return downcast<upd7220_device &>(device).m_write_vsync.set_callback(object); }
- template<class _Object> static devcb_base &set_blank_wr_callback(device_t &device, _Object object) { return downcast<upd7220_device &>(device).m_write_blank.set_callback(object); }
+ template <class Object> static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast<upd7220_device &>(device).m_write_drq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_hsync_wr_callback(device_t &device, Object &&cb) { return downcast<upd7220_device &>(device).m_write_hsync.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_vsync_wr_callback(device_t &device, Object &&cb) { return downcast<upd7220_device &>(device).m_write_vsync.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_blank_wr_callback(device_t &device, Object &&cb) { return downcast<upd7220_device &>(device).m_write_blank.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -102,7 +101,7 @@ public:
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual const tiny_rom_entry *device_rom_region() const override;
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
protected:
// device-level overrides
@@ -149,8 +148,8 @@ private:
void draw_graphics_line(bitmap_rgb32 &bitmap, uint32_t addr, int y, int wd, int pitch);
void update_graphics(bitmap_rgb32 &bitmap, const rectangle &cliprect, int force_bitmap);
- upd7220_display_pixels_delegate m_display_cb;
- upd7220_draw_text_delegate m_draw_text_cb;
+ display_pixels_delegate m_display_cb;
+ draw_text_delegate m_draw_text_cb;
devcb_write_line m_write_drq;
devcb_write_line m_write_hsync;
@@ -222,8 +221,6 @@ private:
// device type definition
-extern const device_type UPD7220;
-
-
+DECLARE_DEVICE_TYPE(UPD7220, upd7220_device)
-#endif
+#endif // MAME_VIDEO_UPD7220_H
diff --git a/src/devices/video/upd7227.cpp b/src/devices/video/upd7227.cpp
index 61a415f608a..864d1a23935 100644
--- a/src/devices/video/upd7227.cpp
+++ b/src/devices/video/upd7227.cpp
@@ -9,13 +9,8 @@
#include "emu.h"
#include "upd7227.h"
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define LOG 0
+//#define VERBOSE 1
+#include "logmacro.h"
@@ -23,7 +18,7 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type UPD7227 = device_creator<upd7227_device>;
+DEFINE_DEVICE_TYPE(UPD7227, upd7227_device, "upd7227", "NEC uPD7227")
static ADDRESS_MAP_START( upd7227_map, AS_PROGRAM, 8, upd7227_device )
@@ -42,14 +37,14 @@ ADDRESS_MAP_END
//-------------------------------------------------
upd7227_device::upd7227_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, UPD7227, "uPD7227", tag, owner, clock, "upd7227", __FILE__),
- device_memory_interface(mconfig, *this),
- m_space_config("videoram", ENDIANNESS_BIG, 8, 7, 0, *ADDRESS_MAP_NAME(upd7227_map)),
- m_cs(1),
- m_cd(1),
- m_sck(1),
- m_si(1),
- m_so(1)
+ : device_t(mconfig, UPD7227, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , m_space_config("videoram", ENDIANNESS_BIG, 8, 7, 0, *ADDRESS_MAP_NAME(upd7227_map))
+ , m_cs(1)
+ , m_cd(1)
+ , m_sck(1)
+ , m_si(1)
+ , m_so(1)
{
}
diff --git a/src/devices/video/upd7227.h b/src/devices/video/upd7227.h
index c38b2fa10e2..725137bc376 100644
--- a/src/devices/video/upd7227.h
+++ b/src/devices/video/upd7227.h
@@ -6,11 +6,10 @@
**********************************************************************/
-#pragma once
-
-#ifndef __UPD7227__
-#define __UPD7227__
+#ifndef MAME_VIDEO_UPD7227_H
+#define MAME_VIDEO_UPD7227_H
+#pragma once
@@ -54,7 +53,7 @@ protected:
virtual void device_reset() override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override;
address_space_config m_space_config;
@@ -87,8 +86,6 @@ private:
// device type definition
-extern const device_type UPD7227;
-
-
+DECLARE_DEVICE_TYPE(UPD7227, upd7227_device)
-#endif
+#endif // MAME_VIDEO_UPD7227_H
diff --git a/src/devices/video/v9938.cpp b/src/devices/video/v9938.cpp
index 2401da27494..ac7fd4575dc 100644
--- a/src/devices/video/v9938.cpp
+++ b/src/devices/video/v9938.cpp
@@ -38,8 +38,8 @@ todo:
#include "emu.h"
#include "v9938.h"
-#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+//#define VERBOSE 1
+#include "logmacro.h"
enum
{
@@ -84,17 +84,17 @@ ADDRESS_MAP_END
// devices
-const device_type V9938 = device_creator<v9938_device>;
-const device_type V9958 = device_creator<v9958_device>;
+DEFINE_DEVICE_TYPE(V9938, v9938_device, "v9938", "Yamaha V9938 VDP")
+DEFINE_DEVICE_TYPE(V9958, v9958_device, "v9958", "Yamaha V9958 VDP")
-v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, uint32_t clock)
-: device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int model)
+: device_t(mconfig, type, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_palette_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_space_config("vram", ENDIANNESS_BIG, 8, 18),
- m_model(0),
+ m_model(model),
m_offset_x(0),
m_offset_y(0),
m_visible_y(0),
@@ -123,15 +123,13 @@ v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, cons
}
v9938_device::v9938_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: v99x8_device(mconfig, V9938, "V9938 VDP", "v9938", tag, owner, clock)
+: v99x8_device(mconfig, V9938, tag, owner, clock, MODEL_V9938)
{
- m_model = MODEL_V9938;
}
v9958_device::v9958_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
-: v99x8_device(mconfig, V9958, "V9958 VDP", "v9958", tag, owner, clock)
+: v99x8_device(mconfig, V9958, tag, owner, clock, MODEL_V9958)
{
- m_model = MODEL_V9958;
}
@@ -156,7 +154,7 @@ void v99x8_device::device_timer(emu_timer &timer, device_timer_id id, int param,
(((scanline + m_cont_reg[23]) & 255) == m_cont_reg[19]) )
{
m_stat_reg[1] |= 1;
- LOG(("V9938: scanline interrupt (%d)\n", scanline));
+ LOG("V9938: scanline interrupt (%d)\n", scanline);
}
else if (!(m_cont_reg[0] & 0x10))
{
@@ -336,7 +334,7 @@ void v9958_device::palette_init()
fatalerror("V9958: not enough palette, must be 19780");
// set up YJK table
- LOG(("Building YJK table for V9958 screens, may take a while ... \n"));
+ LOG("Building YJK table for V9958 screens, may take a while ... \n");
i = 0;
for (y=0;y<32;y++) for (k=0;k<64;k++) for (j=0;j<64;j++)
{
@@ -378,7 +376,7 @@ void v9958_device::palette_init()
}
if (i != 19268)
- LOG( ("Table creation failed - %d colours out of 19286 created\n", i));
+ LOG("Table creation failed - %d colours out of 19286 created\n", i);
}
uint32_t v99x8_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -508,7 +506,7 @@ uint8_t v99x8_device::status_r()
break;
}
- LOG(("V9938: Read %02x from S#%d\n", ret, reg));
+ LOG("V9938: Read %02x from S#%d\n", ret, reg);
check_int ();
return ret;
@@ -820,7 +818,7 @@ void v99x8_device::check_int()
if (n != m_int_state)
{
m_int_state = n;
- LOG(("V9938: IRQ line %s\n", n ? "up" : "down"));
+ LOG("V9938: IRQ line %s\n", n ? "up" : "down");
}
/*
@@ -856,7 +854,7 @@ void v99x8_device::register_write (int reg, int data)
if (reg > 46)
{
- LOG(("V9938: Attempted to write to non-existant R#%d\n", reg));
+ LOG("V9938: Attempted to write to non-existant R#%d\n", reg);
return;
}
@@ -869,7 +867,7 @@ void v99x8_device::register_write (int reg, int data)
m_cont_reg[reg] = data;
set_mode();
check_int();
- LOG(("v9938: mode = %s\n", v9938_modes[m_mode]));
+ LOG("v9938: mode = %s\n", v9938_modes[m_mode]);
break;
case 18:
@@ -888,14 +886,14 @@ void v99x8_device::register_write (int reg, int data)
case 20:
case 21:
case 22:
- LOG(("v9938: Write %02xh to R#%d; color burst not emulated\n", data, reg));
+ LOG("v9938: Write %02xh to R#%d; color burst not emulated\n", data, reg);
break;
case 25:
case 26:
case 27:
if (m_model != MODEL_V9958)
{
- LOG(("v9938: Attempting to write %02xh to V9958 R#%d\n", data, reg));
+ LOG("v9938: Attempting to write %02xh to V9958 R#%d\n", data, reg);
data = 0;
}
else
@@ -915,7 +913,7 @@ void v99x8_device::register_write (int reg, int data)
}
if (reg != 15)
- LOG(("v9938: Write %02x to R#%d\n", data, reg));
+ LOG("v9938: Write %02x to R#%d\n", data, reg);
m_cont_reg[reg] = data;
}
@@ -2272,7 +2270,7 @@ inline void v99x8_device::VDPpsetlowlevel(int addr, uint8_t CL, uint8_t M, uint8
case 11: if (CL) val ^= CL; break;
case 12: if (CL) val = (val & M) | ~(CL|M); break;
default:
- LOG(("v9938: invalid operation %d in pset\n", OP));
+ LOG("v9938: invalid operation %d in pset\n", OP);
}
m_vram_space->write_byte(addr, val);
@@ -2899,12 +2897,12 @@ void v99x8_device::report_vdp_command(uint8_t Op)
CM = Op>>4;
LO = Op&0x0F;
- LOG(("V9938: Opcode %02Xh %s-%s (%d,%d)->(%d,%d),%d [%d,%d]%s\n",
+ LOG("V9938: Opcode %02Xh %s-%s (%d,%d)->(%d,%d),%d [%d,%d]%s\n",
Op, Commands[CM], Ops[LO],
SX,SY, DX,DY, CL, m_cont_reg[45]&0x04? -NX:NX,
m_cont_reg[45]&0x08? -NY:NY,
m_cont_reg[45]&0x70? " on ExtVRAM":""
- ));
+ );
}
/** VDPDraw() ************************************************/
@@ -2981,7 +2979,7 @@ uint8_t v99x8_device::command_unit_w(uint8_t Op)
m_vdp_engine=&v99x8_device::hmmc_engine;
break;
default:
- LOG(("V9938: Unrecognized opcode %02Xh\n",Op));
+ LOG("V9938: Unrecognized opcode %02Xh\n",Op);
return(0);
}
diff --git a/src/devices/video/v9938.h b/src/devices/video/v9938.h
index b04bcf08a20..ff8e4d27b28 100644
--- a/src/devices/video/v9938.h
+++ b/src/devices/video/v9938.h
@@ -6,8 +6,8 @@
***************************************************************************/
-#ifndef MAME_DEVICES_VIDEO_V9938_H
-#define MAME_DEVICES_VIDEO_V9938_H
+#ifndef MAME_VIDEO_V9938_H
+#define MAME_VIDEO_V9938_H
#pragma once
@@ -60,8 +60,8 @@
//**************************************************************************
// device type definition
-extern const device_type V9938;
-extern const device_type V9958;
+DECLARE_DEVICE_TYPE(V9938, v9938_device)
+DECLARE_DEVICE_TYPE(V9958, v9958_device)
@@ -76,14 +76,8 @@ class v99x8_device : public device_t,
public device_palette_interface,
public device_video_interface
{
-protected:
- // construction/destruction
- v99x8_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, uint32_t clock);
-
public:
- template<class _irq> devcb_base &set_interrupt_callback(_irq irq) {
- return m_int_callback.set_callback(irq);
- }
+ template <class Object> devcb_base &set_interrupt_callback(Object &&irq) { return m_int_callback.set_callback(std::forward<Object>(irq)); }
int get_transpen();
bitmap_ind16 &get_bitmap() { return m_bitmap; }
void update_mouse_state(int mx_delta, int my_delta, int button_state);
@@ -105,26 +99,29 @@ public:
/* RESET pin */
void reset_line(int state) { if (state==ASSERT_LINE) device_reset(); }
- static const int HTOTAL = 684;
- static const int HVISIBLE = 544;
- static const int VTOTAL_NTSC = 262;
- static const int VTOTAL_PAL = 313;
- static const int VVISIBLE_NTSC = 26 + 192 + 25;
- static const int VVISIBLE_PAL = 53 + 192 + 49;
+ static constexpr int HTOTAL = 684;
+ static constexpr int HVISIBLE = 544;
+ static constexpr int VTOTAL_NTSC = 262;
+ static constexpr int VTOTAL_PAL = 313;
+ static constexpr int VVISIBLE_NTSC = 26 + 192 + 25;
+ static constexpr int VVISIBLE_PAL = 53 + 192 + 49;
// Looking at some youtube videos of real units on real monitors
// there appear to be small vertical timing differences. Some (LCD)
// monitors show the full borders, other CRT monitors seem to
// display ~5 lines less at the top and bottom of the screen.
- static const int VERTICAL_ADJUST = 5;
- static const int TOP_ERASE = 13;
- static const int VERTICAL_SYNC = 3;
+ static constexpr int VERTICAL_ADJUST = 5;
+ static constexpr int TOP_ERASE = 13;
+ static constexpr int VERTICAL_SYNC = 3;
protected:
- static const device_timer_id TIMER_LINE = 0;
+ // construction/destruction
+ v99x8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int model);
+
+ static constexpr device_timer_id TIMER_LINE = 0;
const address_space_config m_space_config;
address_space* m_vram_space;
- int m_model;
+ const int m_model;
// device overrides
virtual void device_start() override;
@@ -132,7 +129,7 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_DATA) const override { return (spacenum == AS_DATA) ? &m_space_config : nullptr; }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_DATA) ? &m_space_config : nullptr; }
virtual void palette_init() = 0;
diff --git a/src/devices/video/vector.cpp b/src/devices/video/vector.cpp
index 70fa93f44bb..57f5366aba1 100644
--- a/src/devices/video/vector.cpp
+++ b/src/devices/video/vector.cpp
@@ -65,10 +65,10 @@ void vector_options::init(emu_options& options)
}
// device type definition
-const device_type VECTOR = device_creator<vector_device>;
+DEFINE_DEVICE_TYPE(VECTOR, vector_device, "vector_device", "VECTOR")
vector_device::vector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VECTOR, "VECTOR", tag, owner, clock, "vector_device", __FILE__),
+ : device_t(mconfig, VECTOR, tag, owner, clock),
device_video_interface(mconfig, *this),
m_vector_list(nullptr),
m_min_intensity(255),
diff --git a/src/devices/video/vector.h b/src/devices/video/vector.h
index 130cbb6b2fb..dca693133f8 100644
--- a/src/devices/video/vector.h
+++ b/src/devices/video/vector.h
@@ -1,33 +1,13 @@
// license:BSD-3-Clause
// copyright-holders:Brad Oliver,Aaron Giles,Bernd Wiebelt,Allard van der Bas
-#ifndef __VECTOR__
-#define __VECTOR__
+#ifndef MAME_VIDEO_VECTOR_H
+#define MAME_VIDEO_VECTOR_H
-#define VECTOR_COLOR111(c) \
- rgb_t(pal1bit((c) >> 2), pal1bit((c) >> 1), pal1bit((c) >> 0))
+#pragma once
-#define VECTOR_COLOR222(c) \
- rgb_t(pal2bit((c) >> 4), pal2bit((c) >> 2), pal2bit((c) >> 0))
-
-#define VECTOR_COLOR444(c) \
- rgb_t(pal4bit((c) >> 8), pal4bit((c) >> 4), pal4bit((c) >> 0))
class vector_device;
-/* The vertices are buffered here */
-struct point
-{
- point() :
- x(0),
- y(0),
- col(0),
- intensity(0) {}
-
- int x; int y;
- rgb_t col;
- int intensity;
-};
-
class vector_options
{
public:
@@ -45,6 +25,10 @@ protected:
class vector_device : public device_t, public device_video_interface
{
public:
+ template <typename T> static constexpr rgb_t color111(T c) { return rgb_t(pal1bit(c >> 2), pal1bit(c >> 1), pal1bit(c >> 0)); }
+ template <typename T> static constexpr rgb_t color222(T c) { return rgb_t(pal2bit(c >> 4), pal2bit(c >> 2), pal2bit(c >> 0)); }
+ template <typename T> static constexpr rgb_t color444(T c) { return rgb_t(pal4bit(c >> 8), pal4bit(c >> 4), pal4bit(c >> 0)); }
+
// construction/destruction
vector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -57,6 +41,16 @@ public:
virtual void device_start() override;
private:
+ /* The vertices are buffered here */
+ struct point
+ {
+ point() : x(0), y(0), col(0), intensity(0) { }
+
+ int x; int y;
+ rgb_t col;
+ int intensity;
+ };
+
std::unique_ptr<point[]> m_vector_list;
int m_vector_index;
int m_min_intensity;
@@ -66,9 +60,9 @@ private:
};
// device type definition
-extern const device_type VECTOR;
+DECLARE_DEVICE_TYPE(VECTOR, vector_device)
#define MCFG_VECTOR_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, VECTOR, 0)
-#endif
+#endif // MAME_VIDEO_VECTOR_H
diff --git a/src/devices/video/vic4567.cpp b/src/devices/video/vic4567.cpp
index cbf7d7ac10a..dceeb94be12 100644
--- a/src/devices/video/vic4567.cpp
+++ b/src/devices/video/vic4567.cpp
@@ -59,8 +59,8 @@
#define VIC6567_Y_BEGIN -6 /* first 6 lines after retrace not for lightpen! */
#define VIC6569_X_BEGIN 38
#define VIC6569_Y_BEGIN -6
-#define VIC2_X_BEGIN ((m_type == VIC4567_PAL) ? VIC6569_X_BEGIN : VIC6567_X_BEGIN)
-#define VIC2_Y_BEGIN ((m_type == VIC4567_PAL) ? VIC6569_Y_BEGIN : VIC6567_Y_BEGIN)
+#define VIC2_X_BEGIN ((m_type == vic3_type::PAL) ? VIC6569_X_BEGIN : VIC6567_X_BEGIN)
+#define VIC2_Y_BEGIN ((m_type == vic3_type::PAL) ? VIC6569_Y_BEGIN : VIC6567_Y_BEGIN)
#define VIC2_X_VALUE ((LIGHTPEN_X_VALUE + VIC2_X_BEGIN + VIC2_MAME_XPOS) / 2)
#define VIC2_Y_VALUE ((LIGHTPEN_Y_VALUE + VIC2_Y_BEGIN + VIC2_MAME_YPOS))
@@ -127,12 +127,12 @@
#define FOREGROUNDCOLOR (m_reg[0x24] & 0x0f)
-#define VIC2_LINES (m_type == VIC4567_PAL ? VIC6569_LINES : VIC6567_LINES)
-#define VIC2_VISIBLELINES (m_type == VIC4567_PAL ? VIC6569_VISIBLELINES : VIC6567_VISIBLELINES)
-#define VIC2_VISIBLECOLUMNS (m_type == VIC4567_PAL ? VIC6569_VISIBLECOLUMNS : VIC6567_VISIBLECOLUMNS)
+#define VIC2_LINES (m_type == vic3_type::PAL ? VIC6569_LINES : VIC6567_LINES)
+#define VIC2_VISIBLELINES (m_type == vic3_type::PAL ? VIC6569_VISIBLELINES : VIC6567_VISIBLELINES)
+#define VIC2_VISIBLECOLUMNS (m_type == vic3_type::PAL ? VIC6569_VISIBLECOLUMNS : VIC6567_VISIBLECOLUMNS)
#define VIC2_STARTVISIBLELINES ((VIC2_LINES - VIC2_VISIBLELINES)/2)
-#define VIC2_FIRSTRASTERLINE (m_type == VIC4567_PAL ? VIC6569_FIRSTRASTERLINE : VIC6567_FIRSTRASTERLINE)
-#define VIC2_COLUMNS (m_type == VIC4567_PAL ? VIC6569_COLUMNS : VIC6567_COLUMNS)
+#define VIC2_FIRSTRASTERLINE (m_type == vic3_type::PAL ? VIC6569_FIRSTRASTERLINE : VIC6567_FIRSTRASTERLINE)
+#define VIC2_COLUMNS (m_type == vic3_type::PAL ? VIC6569_COLUMNS : VIC6567_COLUMNS)
#define VIC2_STARTVISIBLECOLUMNS ((VIC2_COLUMNS - VIC2_VISIBLECOLUMNS)/2)
#define VIC3_BITPLANES_MASK (m_reg[0x32])
@@ -145,22 +145,22 @@
#define VIC3_BITPLANE_IADDR(x) (x & 1 ? VIC3_BITPLANE_IADDR_HELPER(x) + 0x10000 : VIC3_BITPLANE_IADDR_HELPER(x))
-const device_type VIC3 = device_creator<vic3_device>;
+DEFINE_DEVICE_TYPE(VIC3, vic3_device, "vic3", "CSG 4567 VIC-III")
vic3_device::vic3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, VIC3, "4567 VIC III", tag, owner, clock, "vic3", __FILE__),
- device_video_interface(mconfig, *this),
- m_type(VIC4567_NTSC),
- m_cpu(*this, finder_base::DUMMY_TAG),
- m_dma_read_cb(*this),
- m_dma_read_color_cb(*this),
- m_interrupt_cb(*this),
- m_port_changed_cb(*this),
- m_lightpen_button_cb(*this),
- m_lightpen_x_cb(*this),
- m_lightpen_y_cb(*this),
- m_c64_mem_r_cb(*this),
- m_palette(*this, "palette")
+ : device_t(mconfig, VIC3, tag, owner, clock)
+ , device_video_interface(mconfig, *this)
+ , m_type(vic3_type::NTSC)
+ , m_cpu(*this, finder_base::DUMMY_TAG)
+ , m_dma_read_cb(*this)
+ , m_dma_read_color_cb(*this)
+ , m_interrupt_cb(*this)
+ , m_port_changed_cb(*this)
+ , m_lightpen_button_cb(*this)
+ , m_lightpen_x_cb(*this)
+ , m_lightpen_y_cb(*this)
+ , m_c64_mem_r_cb(*this)
+ , m_palette(*this, "palette")
{
}
@@ -1971,7 +1971,7 @@ void vic3_device::raster_interrupt_gen()
{
m_rows = new_rows;
m_columns = new_columns;
- if (m_type == VIC4567_PAL)
+ if (m_type == vic3_type::PAL)
m_screen->set_visible_area(
VIC2_STARTVISIBLECOLUMNS + 32,
VIC2_STARTVISIBLECOLUMNS + 32 + m_columns + 16 - 1,
@@ -1990,7 +1990,7 @@ void vic3_device::raster_interrupt_gen()
}
else
{
- if (m_type == VIC4567_PAL)
+ if (m_type == vic3_type::PAL)
{
if (m_on)
vic2_drawlines(m_lastline, m_lines, VIC2_STARTVISIBLECOLUMNS + 32, VIC2_STARTVISIBLECOLUMNS + 32 + m_columns + 16 - 1);
@@ -2023,7 +2023,7 @@ void vic3_device::raster_interrupt_gen()
if (m_on)
if ((m_rasterline >= VIC2_FIRSTRASTERLINE) && (m_rasterline < (VIC2_FIRSTRASTERLINE + VIC2_VISIBLELINES)))
{
- if (m_type == VIC4567_PAL)
+ if (m_type == vic3_type::PAL)
{
if (m_on)
vic2_drawlines(m_rasterline - 1, m_rasterline, VIC2_STARTVISIBLECOLUMNS + 32, VIC2_STARTVISIBLECOLUMNS + 32 + m_columns + 16 - 1);
diff --git a/src/devices/video/vic4567.h b/src/devices/video/vic4567.h
index 53320386365..3b787908841 100644
--- a/src/devices/video/vic4567.h
+++ b/src/devices/video/vic4567.h
@@ -6,35 +6,16 @@
*
****************************************************************************/
-#ifndef __VIC4567_H__
-#define __VIC4567_H__
+#ifndef MAME_VIDEO_VIC4567_H
+#define MAME_VIDEO_VIC4567_H
+
+#pragma once
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-enum vic3_type
-{
- VIC4567_NTSC,
- VIC4567_PAL
-};
-
-#define SPRITE_BASE_X_SIZE 24
-#define SPRITE_BASE_Y_SIZE 21
-
-struct vic3_sprite
-{
- int x, y;
-
- int repeat; /* expand, line once drawn */
- int line; /* 0 not painting, else painting */
-
- /* buffer for currently painted line */
- int paintedline[8];
- uint8_t bitmap[8][SPRITE_BASE_X_SIZE * 2 / 8 + 1 /*for simpler sprite collision detection*/];
-};
-
/***************************************************************************
CONSTANTS
@@ -124,19 +105,20 @@ class vic3_device : public device_t,
public device_video_interface
{
public:
+ enum class vic3_type { NTSC, PAL };
+
vic3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~vic3_device() {}
static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<vic3_device &>(device).m_cpu.set_tag(tag); }
static void set_vic3_type(device_t &device, vic3_type type) { downcast<vic3_device &>(device).m_type = type; }
- template<class _Object> static devcb_base &set_dma_read_callback(device_t &device, _Object object) { return downcast<vic3_device &>(device).m_dma_read_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_read_color_callback(device_t &device, _Object object) { return downcast<vic3_device &>(device).m_dma_read_color_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_interrupt_callback(device_t &device, _Object object) { return downcast<vic3_device &>(device).m_interrupt_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_port_changed_callback(device_t &device, _Object object) { return downcast<vic3_device &>(device).m_port_changed_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_lightpen_button_callback(device_t &device, _Object object) { return downcast<vic3_device &>(device).m_lightpen_button_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_lightpen_x_callback(device_t &device, _Object object) { return downcast<vic3_device &>(device).m_lightpen_x_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_lightpen_y_callback(device_t &device, _Object object) { return downcast<vic3_device &>(device).m_lightpen_y_cb.set_callback(object); }
- template<class _Object> static devcb_base &set_c64_mem_r_callback(device_t &device, _Object object) { return downcast<vic3_device &>(device).m_c64_mem_r_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_dma_read_callback(device_t &device, Object &&cb) { return downcast<vic3_device &>(device).m_dma_read_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_dma_read_color_callback(device_t &device, Object &&cb) { return downcast<vic3_device &>(device).m_dma_read_color_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_interrupt_callback(device_t &device, Object &&cb) { return downcast<vic3_device &>(device).m_interrupt_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_port_changed_callback(device_t &device, Object &&cb) { return downcast<vic3_device &>(device).m_port_changed_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_lightpen_button_callback(device_t &device, Object &&cb) { return downcast<vic3_device &>(device).m_lightpen_button_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_lightpen_x_callback(device_t &device, Object &&cb) { return downcast<vic3_device &>(device).m_lightpen_x_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_lightpen_y_callback(device_t &device, Object &&cb) { return downcast<vic3_device &>(device).m_lightpen_y_cb.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_c64_mem_r_callback(device_t &device, Object &&cb) { return downcast<vic3_device &>(device).m_c64_mem_r_cb.set_callback(std::forward<Object>(cb)); }
DECLARE_WRITE8_MEMBER(port_w);
DECLARE_WRITE8_MEMBER(palette_w);
@@ -150,9 +132,24 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
virtual machine_config_constructor device_mconfig_additions() const override;
+
private:
- // internal state
+ static constexpr unsigned SPRITE_BASE_X_SIZE = 24;
+ static constexpr unsigned SPRITE_BASE_Y_SIZE = 21;
+
+ struct vic3_sprite
+ {
+ int x, y;
+ int repeat; /* expand, line once drawn */
+ int line; /* 0 not painting, else painting */
+
+ /* buffer for currently painted line */
+ int paintedline[8];
+ uint8_t bitmap[8][SPRITE_BASE_X_SIZE * 2 / 8 + 1 /*for simpler sprite collision detection*/];
+ };
+
+ // internal state
inline int getforeground(int y, int x);
inline int getforeground16(int y, int x);
void set_interrupt(int mask);
@@ -236,38 +233,37 @@ private:
required_device<palette_device> m_palette;
};
-extern const device_type VIC3;
-
+DECLARE_DEVICE_TYPE(VIC3, vic3_device)
-#define MCFG_VIC3_CPU(_tag) \
- vic3_device::static_set_cpu_tag(*device, "^" _tag);
-#define MCFG_VIC3_TYPE(_type) \
- vic3_device::set_vic3_type(*device, _type);
+#define MCFG_VIC3_CPU(tag) \
+ vic3_device::static_set_cpu_tag(*device, ("^" tag));
-#define MCFG_VIC3_DMA_READ_CB(_devcb) \
- devcb = &vic3_device::set_dma_read_callback(*device, DEVCB_##_devcb);
+#define MCFG_VIC3_TYPE(type) \
+ vic3_device::set_vic3_type(*device, (vic3_device::vic3_type::type));
-#define MCFG_VIC3_DMA_READ_COLOR_CB(_devcb) \
- devcb = &vic3_device::set_dma_read_color_callback(*device, DEVCB_##_devcb);
+#define MCFG_VIC3_DMA_READ_CB(cb) \
+ devcb = &vic3_device::set_dma_read_callback(*device, (DEVCB_##cb));
-#define MCFG_VIC3_INTERRUPT_CB(_devcb) \
- devcb = &vic3_device::set_interrupt_callback(*device, DEVCB_##_devcb);
+#define MCFG_VIC3_DMA_READ_COLOR_CB(cb) \
+ devcb = &vic3_device::set_dma_read_color_callback(*device, (DEVCB_##cb));
-#define MCFG_VIC3_PORT_CHANGED_CB(_devcb) \
- devcb = &vic3_device::set_port_changed_callback(*device, DEVCB_##_devcb);
+#define MCFG_VIC3_INTERRUPT_CB(cb) \
+ devcb = &vic3_device::set_interrupt_callback(*device, (DEVCB_##cb));
-#define MCFG_VIC3_LIGHTPEN_BUTTON_CB(_devcb) \
- devcb = &vic3_device::set_lightpen_button_callback(*device, DEVCB_##_devcb);
+#define MCFG_VIC3_PORT_CHANGED_CB(cb) \
+ devcb = &vic3_device::set_port_changed_callback(*device, (DEVCB_##cb));
-#define MCFG_VIC3_LIGHTPEN_X_CB(_devcb) \
- devcb = &vic3_device::set_lightpen_x_callback(*device, DEVCB_##_devcb);
+#define MCFG_VIC3_LIGHTPEN_BUTTON_CB(cb) \
+ devcb = &vic3_device::set_lightpen_button_callback(*device, (DEVCB_##cb));
-#define MCFG_VIC3_LIGHTPEN_Y_CB(_devcb) \
- devcb = &vic3_device::set_lightpen_y_callback(*device, DEVCB_##_devcb);
+#define MCFG_VIC3_LIGHTPEN_X_CB(cb) \
+ devcb = &vic3_device::set_lightpen_x_callback(*device, (DEVCB_##cb));
-#define MCFG_VIC3_C64_MEM_R_CB(_devcb) \
- devcb = &vic3_device::set_c64_mem_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_VIC3_LIGHTPEN_Y_CB(cb) \
+ devcb = &vic3_device::set_lightpen_y_callback(*device, (DEVCB_##cb));
+#define MCFG_VIC3_C64_MEM_R_CB(cb) \
+ devcb = &vic3_device::set_c64_mem_r_callback(*device, (DEVCB_##cb));
-#endif /* __VIC4567_H__ */
+#endif // MAME_VIDEO_VIC4567_H
diff --git a/src/devices/video/vooddefs.h b/src/devices/video/vooddefs.h
index 810fdc557e1..a9e653dc93d 100644
--- a/src/devices/video/vooddefs.h
+++ b/src/devices/video/vooddefs.h
@@ -8,12 +8,12 @@
***************************************************************************/
-#ifndef MAME_DEVICES_VIDEO_VOODDEFS_H
-#define MAME_DEVICES_VIDEO_VOODDEFS_H
+#ifndef MAME_VIDEO_VOODDEFS_H
+#define MAME_VIDEO_VOODDEFS_H
#pragma once
-#include "video/rgbutil.h"
+#include "voodoo.h"
@@ -23,8 +23,7 @@
*
*************************************/
-struct voodoo_state;
-struct poly_extra_data;
+typedef voodoo_reg rgb_union;
@@ -36,88 +35,53 @@ struct poly_extra_data;
*
*************************************/
-static inline void fifo_reset(fifo_state *f)
+inline void voodoo_device::fifo_state::add(uint32_t data)
{
- f->in = f->out = 0;
-}
-
-
-static inline void fifo_add(fifo_state *f, uint32_t data)
-{
- int32_t next_in;
-
/* compute the value of 'in' after we add this item */
- next_in = f->in + 1;
- if (next_in >= f->size)
+ int32_t next_in = in + 1;
+ if (next_in >= size)
next_in = 0;
/* as long as it's not equal to the output pointer, we can do it */
- if (next_in != f->out)
+ if (next_in != out)
{
- f->base[f->in] = data;
- f->in = next_in;
+ base[in] = data;
+ in = next_in;
}
}
-static inline uint32_t fifo_remove(fifo_state *f)
+inline uint32_t voodoo_device::fifo_state::remove()
{
uint32_t data = 0xffffffff;
/* as long as we have data, we can do it */
- if (f->out != f->in)
+ if (out != in)
{
int32_t next_out;
/* fetch the data */
- data = f->base[f->out];
+ data = base[out];
/* advance the output pointer */
- next_out = f->out + 1;
- if (next_out >= f->size)
+ next_out = out + 1;
+ if (next_out >= size)
next_out = 0;
- f->out = next_out;
+ out = next_out;
}
return data;
}
-static inline uint32_t fifo_peek(fifo_state *f)
-{
- return f->base[f->out];
-}
-
-
-static inline int fifo_empty(fifo_state *f)
-{
- return (f->in == f->out);
-}
-
-
-static inline int fifo_full(fifo_state *f)
-{
- return (f->in + 1 == f->out || (f->in == f->size - 1 && f->out == 0));
-}
-
-
-static inline int32_t fifo_items(fifo_state *f)
+inline int32_t voodoo_device::fifo_state::items() const
{
- int32_t items = f->in - f->out;
+ int32_t items = in - out;
if (items < 0)
- items += f->size;
+ items += size;
return items;
}
-static inline int32_t fifo_space(fifo_state *f)
-{
- int32_t items = f->in - f->out;
- if (items < 0)
- items += f->size;
- return f->size - 1 - items;
-}
-
-
/*************************************
*
@@ -333,24 +297,24 @@ static inline uint32_t normalize_tex_mode(uint32_t eff_tex_mode)
}
-static inline uint32_t compute_raster_hash(const raster_info *info)
+inline uint32_t voodoo_device::raster_info::compute_hash() const
{
- uint32_t hash;
+ uint32_t result;
/* make a hash */
- hash = info->eff_color_path;
- hash = (hash << 1) | (hash >> 31);
- hash ^= info->eff_fbz_mode;
- hash = (hash << 1) | (hash >> 31);
- hash ^= info->eff_alpha_mode;
- hash = (hash << 1) | (hash >> 31);
- hash ^= info->eff_fog_mode;
- hash = (hash << 1) | (hash >> 31);
- hash ^= info->eff_tex_mode_0;
- hash = (hash << 1) | (hash >> 31);
- hash ^= info->eff_tex_mode_1;
-
- return hash % RASTER_HASH_SIZE;
+ result = eff_color_path;
+ result = (result << 1) | (result >> 31);
+ result ^= eff_fbz_mode;
+ result = (result << 1) | (result >> 31);
+ result ^= eff_alpha_mode;
+ result = (result << 1) | (result >> 31);
+ result ^= eff_fog_mode;
+ result = (result << 1) | (result >> 31);
+ result ^= eff_tex_mode_0;
+ result = (result << 1) | (result >> 31);
+ result ^= eff_tex_mode_1;
+
+ return result % RASTER_HASH_SIZE;
}
@@ -637,7 +601,7 @@ do
} \
while (0)
-static inline bool ATTR_FORCE_INLINE chromaKeyTest(voodoo_device *vd, stats_block *stats, uint32_t fbzModeReg, rgbaint_t rgbaIntColor)
+inline bool ATTR_FORCE_INLINE voodoo_device::chromaKeyTest(voodoo_device *vd, stats_block *stats, uint32_t fbzModeReg, rgbaint_t rgbaIntColor)
{
if (FBZMODE_ENABLE_CHROMAKEY(fbzModeReg))
{
@@ -726,7 +690,7 @@ do
} \
while (0)
-static inline bool alphaMaskTest(stats_block *stats, uint32_t fbzModeReg, uint8_t alpha)
+inline bool voodoo_device::alphaMaskTest(stats_block *stats, uint32_t fbzModeReg, uint8_t alpha)
{
if (FBZMODE_ENABLE_ALPHA_MASK(fbzModeReg))
{
@@ -812,7 +776,7 @@ do
} \
while (0)
-static inline bool ATTR_FORCE_INLINE alphaTest(voodoo_device *vd, stats_block *stats, uint32_t alphaModeReg, uint8_t alpha)
+inline bool ATTR_FORCE_INLINE voodoo_device::alphaTest(voodoo_device *vd, stats_block *stats, uint32_t alphaModeReg, uint8_t alpha)
{
if (ALPHAMODE_ALPHATEST(alphaModeReg))
{
@@ -2002,7 +1966,7 @@ do
} \
while (0)
-static inline bool ATTR_FORCE_INLINE depthTest(uint16_t zaColorReg, stats_block *stats, int32_t destDepth, uint32_t fbzModeReg, int32_t biasdepth)
+inline bool ATTR_FORCE_INLINE voodoo_device::depthTest(uint16_t zaColorReg, stats_block *stats, int32_t destDepth, uint32_t fbzModeReg, int32_t biasdepth)
{
/* handle depth buffer testing */
if (FBZMODE_ENABLE_DEPTHBUF(fbzModeReg))
@@ -2413,7 +2377,7 @@ do
} \
while (0)
-static inline bool ATTR_FORCE_INLINE combineColor(voodoo_device *vd, stats_block *STATS, uint32_t FBZCOLORPATH, uint32_t FBZMODE, uint32_t ALPHAMODE,
+inline bool ATTR_FORCE_INLINE voodoo_device::combineColor(voodoo_device *vd, stats_block *STATS, uint32_t FBZCOLORPATH, uint32_t FBZMODE, uint32_t ALPHAMODE,
rgbaint_t TEXELARGB, int32_t ITERZ, int64_t ITERW, rgbaint_t &srcColor)
{
rgbaint_t c_other;
@@ -2767,9 +2731,9 @@ void voodoo_device::raster_##name(void *destbase, int32_t y, const poly_extent *
if (TMUS >= 2 && vd->tmu[1].lodmin < (8 << 8)) { \
int32_t tmp; \
const rgbaint_t texelZero(0); \
- texel = genTexture(&vd->tmu[1], x, dither4, TEXMODE1, vd->tmu[1].lookup, extra->lodbase1, \
+ texel = vd->tmu[1].genTexture(x, dither4, TEXMODE1, vd->tmu[1].lookup, extra->lodbase1, \
iters1, itert1, iterw1, tmp); \
- texel = combineTexture(&vd->tmu[1], TEXMODE1, texel, texelZero, tmp); \
+ texel = vd->tmu[1].combineTexture(TEXMODE1, texel, texelZero, tmp); \
} \
/* run the texture pipeline on TMU0 to produce a final */ \
/* result in texel */ \
@@ -2780,9 +2744,9 @@ void voodoo_device::raster_##name(void *destbase, int32_t y, const poly_extent *
{ \
int32_t lod0; \
rgbaint_t texelT0; \
- texelT0 = genTexture(&vd->tmu[0], x, dither4, TEXMODE0, vd->tmu[0].lookup, extra->lodbase0, \
+ texelT0 = vd->tmu[0].genTexture(x, dither4, TEXMODE0, vd->tmu[0].lookup, extra->lodbase0, \
iters0, itert0, iterw0, lod0); \
- texel = combineTexture(&vd->tmu[0], TEXMODE0, texelT0, texel, lod0); \
+ texel = vd->tmu[0].combineTexture(TEXMODE0, texelT0, texel, lod0); \
} \
else \
{ \
@@ -2853,7 +2817,7 @@ static inline void ATTR_FORCE_INLINE multi_reciplog(int64_t valueA, int64_t valu
}
-static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, const uint8_t *dither4, const uint32_t TEXMODE, rgb_t *LOOKUP, int32_t LODBASE, int64_t ITERS, int64_t ITERT, int64_t ITERW, int32_t &lod)
+inline rgbaint_t ATTR_FORCE_INLINE voodoo_device::tmu_state::genTexture(int32_t x, const uint8_t *dither4, const uint32_t TEXMODE, rgb_t *LOOKUP, int32_t LODBASE, int64_t ITERS, int64_t ITERT, int64_t ITERW, int32_t &lod)
{
rgbaint_t result;
int32_t s, t, ilod;
@@ -2885,29 +2849,29 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c
}
/* clamp the LOD */
- lod += (TT)->lodbias;
+ lod += lodbias;
if (TEXMODE_ENABLE_LOD_DITHER(TEXMODE))
lod += dither4[x&3] << 4;
- if (lod < (TT)->lodmin)
- lod = (TT)->lodmin;
- else if (lod > (TT)->lodmax)
- lod = (TT)->lodmax;
+ if (lod < lodmin)
+ lod = lodmin;
+ else if (lod > lodmax)
+ lod = lodmax;
/* now the LOD is in range; if we don't own this LOD, take the next one */
ilod = lod >> 8;
- if (!(((TT)->lodmask >> ilod) & 1))
+ if (!((lodmask >> ilod) & 1))
ilod++;
/* fetch the texture base */
- uint32_t texbase = (TT)->lodoffset[ilod];
+ uint32_t texbase = lodoffset[ilod];
/* compute the maximum s and t values at this LOD */
- int32_t smax = (TT)->wmask >> ilod;
- int32_t tmax = (TT)->hmask >> ilod;
+ int32_t smax = wmask >> ilod;
+ int32_t tmax = hmask >> ilod;
/* determine whether we are point-sampled or bilinear */
- if ((lod == (TT)->lodmin && !TEXMODE_MAGNIFICATION_FILTER(TEXMODE)) ||
- (lod != (TT)->lodmin && !TEXMODE_MINIFICATION_FILTER(TEXMODE)))
+ if ((lod == lodmin && !TEXMODE_MAGNIFICATION_FILTER(TEXMODE)) ||
+ (lod != lodmin && !TEXMODE_MINIFICATION_FILTER(TEXMODE)))
{
/* point sampled */
@@ -2929,12 +2893,12 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c
/* fetch texel data */
if (TEXMODE_FORMAT(TEXMODE) < 8)
{
- texel0 = *(uint8_t *)&(TT)->ram[(texbase + t + s) & (TT)->mask];
+ texel0 = *(uint8_t *)&ram[(texbase + t + s) & mask];
result.set((LOOKUP)[texel0]);
}
else
{
- texel0 = *(uint16_t *)&(TT)->ram[(texbase + 2*(t + s)) & (TT)->mask];
+ texel0 = *(uint16_t *)&ram[(texbase + 2*(t + s)) & mask];
if (TEXMODE_FORMAT(TEXMODE) >= 10 && TEXMODE_FORMAT(TEXMODE) <= 12)
result.set((LOOKUP)[texel0]);
else
@@ -2959,8 +2923,8 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c
t -= 0x80;
/* extract the fractions */
- sfrac = s & (TT)->bilinear_mask;
- tfrac = t & (TT)->bilinear_mask;
+ sfrac = s & bilinear_mask;
+ tfrac = t & bilinear_mask;
/* now toss the rest */
s >>= 8;
@@ -3006,10 +2970,10 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c
/* fetch texel data */
if (TEXMODE_FORMAT(TEXMODE) < 8)
{
- texel0 = *(uint8_t *)&(TT)->ram[(texbase + t + s)];
- texel1 = *(uint8_t *)&(TT)->ram[(texbase + t + s1)];
- texel2 = *(uint8_t *)&(TT)->ram[(texbase + t1 + s)];
- texel3 = *(uint8_t *)&(TT)->ram[(texbase + t1 + s1)];
+ texel0 = *(uint8_t *)&ram[(texbase + t + s)];
+ texel1 = *(uint8_t *)&ram[(texbase + t + s1)];
+ texel2 = *(uint8_t *)&ram[(texbase + t1 + s)];
+ texel3 = *(uint8_t *)&ram[(texbase + t1 + s1)];
texel0 = (LOOKUP)[texel0];
texel1 = (LOOKUP)[texel1];
texel2 = (LOOKUP)[texel2];
@@ -3017,10 +2981,10 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c
}
else
{
- texel0 = *(uint16_t *)&(TT)->ram[(texbase + 2*(t + s))];
- texel1 = *(uint16_t *)&(TT)->ram[(texbase + 2*(t + s1))];
- texel2 = *(uint16_t *)&(TT)->ram[(texbase + 2*(t1 + s))];
- texel3 = *(uint16_t *)&(TT)->ram[(texbase + 2*(t1 + s1))];
+ texel0 = *(uint16_t *)&ram[(texbase + 2*(t + s))];
+ texel1 = *(uint16_t *)&ram[(texbase + 2*(t + s1))];
+ texel2 = *(uint16_t *)&ram[(texbase + 2*(t1 + s))];
+ texel3 = *(uint16_t *)&ram[(texbase + 2*(t1 + s1))];
if (TEXMODE_FORMAT(TEXMODE) >= 10 && TEXMODE_FORMAT(TEXMODE) <= 12)
{
texel0 = (LOOKUP)[texel0];
@@ -3044,7 +3008,7 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c
return result;
}
-static inline rgbaint_t ATTR_FORCE_INLINE combineTexture(tmu_state *TT, const uint32_t TEXMODE, rgbaint_t c_local, rgbaint_t c_other, int32_t lod)
+inline rgbaint_t ATTR_FORCE_INLINE voodoo_device::tmu_state::combineTexture(const uint32_t TEXMODE, rgbaint_t c_local, rgbaint_t c_other, int32_t lod)
{
int32_t a_other = c_other.get_a();
int32_t a_local = c_local.get_a();
@@ -3093,13 +3057,13 @@ static inline rgbaint_t ATTR_FORCE_INLINE combineTexture(tmu_state *TT, const ui
break;
case 4: /* LOD (detail factor) */
- if ((TT)->detailbias <= lod)
+ if (detailbias <= lod)
c_local.and_imm_rgba(-1, 0, 0, 0);
else
{
- tmp = ((((TT)->detailbias - lod) << (TT)->detailscale) >> 8);
- if (tmp > (TT)->detailmax)
- tmp = (TT)->detailmax;
+ tmp = (((detailbias - lod) << detailscale) >> 8);
+ if (tmp > detailmax)
+ tmp = detailmax;
c_local.set(a_local, tmp, tmp, tmp);
}
break;
@@ -3129,13 +3093,13 @@ static inline rgbaint_t ATTR_FORCE_INLINE combineTexture(tmu_state *TT, const ui
break;
case 4: /* LOD (detail factor) */
- if ((TT)->detailbias <= lod)
+ if (detailbias <= lod)
c_local.set_a(0);
else
{
- tmp = ((((TT)->detailbias - lod) << (TT)->detailscale) >> 8);
- if (tmp > (TT)->detailmax)
- tmp = (TT)->detailmax;
+ tmp = (((detailbias - lod) << detailscale) >> 8);
+ if (tmp > detailmax)
+ tmp = detailmax;
c_local.set_a(tmp);
}
break;
@@ -3201,4 +3165,4 @@ static inline rgbaint_t ATTR_FORCE_INLINE combineTexture(tmu_state *TT, const ui
return result;
}
-#endif // MAME_DEVICES_VIDEO_VOODDEFS_H
+#endif // MAME_VIDEO_VOODDEFS_H
diff --git a/src/devices/video/voodoo.cpp b/src/devices/video/voodoo.cpp
index e46dfd15db1..6e031dd71ac 100644
--- a/src/devices/video/voodoo.cpp
+++ b/src/devices/video/voodoo.cpp
@@ -177,6 +177,43 @@ bits(7:4) and bit(24)), X, and Y:
#define EAT_CYCLES (1)
+struct voodoo_device::poly_extra_data
+{
+ voodoo_device * device;
+ raster_info * info; /* pointer to rasterizer information */
+
+ int16_t ax, ay; /* vertex A x,y (12.4) */
+ int32_t startr, startg, startb, starta; /* starting R,G,B,A (12.12) */
+ int32_t startz; /* starting Z (20.12) */
+ int64_t startw; /* starting W (16.32) */
+ int32_t drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */
+ int32_t dzdx; /* delta Z per X */
+ int64_t dwdx; /* delta W per X */
+ int32_t drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */
+ int32_t dzdy; /* delta Z per Y */
+ int64_t dwdy; /* delta W per Y */
+
+ int64_t starts0, startt0; /* starting S,T (14.18) */
+ int64_t startw0; /* starting W (2.30) */
+ int64_t ds0dx, dt0dx; /* delta S,T per X */
+ int64_t dw0dx; /* delta W per X */
+ int64_t ds0dy, dt0dy; /* delta S,T per Y */
+ int64_t dw0dy; /* delta W per Y */
+ int32_t lodbase0; /* used during rasterization */
+
+ int64_t starts1, startt1; /* starting S,T (14.18) */
+ int64_t startw1; /* starting W (2.30) */
+ int64_t ds1dx, dt1dx; /* delta S,T per X */
+ int64_t dw1dx; /* delta W per X */
+ int64_t ds1dy, dt1dy; /* delta S,T per Y */
+ int64_t dw1dy; /* delta W per Y */
+ int32_t lodbase1; /* used during rasterization */
+
+ uint16_t dither[16]; /* dither matrix, for fastfill */
+};
+
+
+
/*************************************
*
* Statics
@@ -220,7 +257,7 @@ uint32_t voodoo_reciplog[(2 << RECIPLOG_LOOKUP_BITS) + 2];
#define RASTERIZER_ENTRY(fbzcp, alpha, fog, fbz, tex0, tex1) \
{ nullptr, voodoo_device::raster_##fbzcp##_##alpha##_##fog##_##fbz##_##tex0##_##tex1, false, 0, 0, 0, fbzcp, alpha, fog, fbz, tex0, tex1 },
-static const raster_info predef_raster_table[] =
+const voodoo_device::raster_info voodoo_device::predef_raster_table[] =
{
#include "voodoo_rast.hxx"
{ nullptr }
@@ -438,7 +475,7 @@ void voodoo_device::init_fbi(voodoo_device* vd,fbi_state *f, void *memory, int f
}
/* allocate a VBLANK timer */
- f->vblank_timer = vd->device->machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(voodoo_device::vblank_callback),vd), vd);
+ f->vblank_timer = vd->machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(voodoo_device::vblank_callback),vd), vd);
f->vblank = false;
/* initialize the memory FIFO */
@@ -450,47 +487,45 @@ void voodoo_device::init_fbi(voodoo_device* vd,fbi_state *f, void *memory, int f
}
-void voodoo_device::init_tmu_shared(tmu_shared_state *s)
+void voodoo_device::tmu_shared_state::init()
{
- int val;
-
/* build static 8-bit texel tables */
- for (val = 0; val < 256; val++)
+ for (int val = 0; val < 256; val++)
{
int r, g, b, a;
/* 8-bit RGB (3-3-2) */
EXTRACT_332_TO_888(val, r, g, b);
- s->rgb332[val] = rgb_t(0xff, r, g, b);
+ rgb332[val] = rgb_t(0xff, r, g, b);
/* 8-bit alpha */
- s->alpha8[val] = rgb_t(val, val, val, val);
+ alpha8[val] = rgb_t(val, val, val, val);
/* 8-bit intensity */
- s->int8[val] = rgb_t(0xff, val, val, val);
+ int8[val] = rgb_t(0xff, val, val, val);
/* 8-bit alpha, intensity */
a = ((val >> 0) & 0xf0) | ((val >> 4) & 0x0f);
r = ((val << 4) & 0xf0) | ((val << 0) & 0x0f);
- s->ai44[val] = rgb_t(a, r, r, r);
+ ai44[val] = rgb_t(a, r, r, r);
}
/* build static 16-bit texel tables */
- for (val = 0; val < 65536; val++)
+ for (int val = 0; val < 65536; val++)
{
int r, g, b, a;
/* table 10 = 16-bit RGB (5-6-5) */
EXTRACT_565_TO_888(val, r, g, b);
- s->rgb565[val] = rgb_t(0xff, r, g, b);
+ rgb565[val] = rgb_t(0xff, r, g, b);
/* table 11 = 16 ARGB (1-5-5-5) */
EXTRACT_1555_TO_8888(val, a, r, g, b);
- s->argb1555[val] = rgb_t(a, r, g, b);
+ argb1555[val] = rgb_t(a, r, g, b);
/* table 12 = 16-bit ARGB (4-4-4-4) */
EXTRACT_4444_TO_8888(val, a, r, g, b);
- s->argb4444[val] = rgb_t(a, r, g, b);
+ argb4444[val] = rgb_t(a, r, g, b);
}
}
@@ -565,7 +600,7 @@ void voodoo_device::voodoo_postload(voodoo_device *vd)
}
-static void init_save_state(voodoo_device *vd)
+void voodoo_device::init_save_state(voodoo_device *vd)
{
int index, subindex;
@@ -732,42 +767,40 @@ static void init_save_state(voodoo_device *vd)
*
*************************************/
-static void accumulate_statistics(voodoo_device *vd, const stats_block *stats)
+void voodoo_device::accumulate_statistics(const stats_block &block)
{
/* apply internal voodoo statistics */
- vd->reg[fbiPixelsIn].u += stats->pixels_in;
- vd->reg[fbiPixelsOut].u += stats->pixels_out;
- vd->reg[fbiChromaFail].u += stats->chroma_fail;
- vd->reg[fbiZfuncFail].u += stats->zfunc_fail;
- vd->reg[fbiAfuncFail].u += stats->afunc_fail;
+ reg[fbiPixelsIn].u += block.pixels_in;
+ reg[fbiPixelsOut].u += block.pixels_out;
+ reg[fbiChromaFail].u += block.chroma_fail;
+ reg[fbiZfuncFail].u += block.zfunc_fail;
+ reg[fbiAfuncFail].u += block.afunc_fail;
/* apply emulation statistics */
- vd->stats.total_pixels_in += stats->pixels_in;
- vd->stats.total_pixels_out += stats->pixels_out;
- vd->stats.total_chroma_fail += stats->chroma_fail;
- vd->stats.total_zfunc_fail += stats->zfunc_fail;
- vd->stats.total_afunc_fail += stats->afunc_fail;
- vd->stats.total_clipped += stats->clip_fail;
- vd->stats.total_stippled += stats->stipple_count;
+ stats.total_pixels_in += block.pixels_in;
+ stats.total_pixels_out += block.pixels_out;
+ stats.total_chroma_fail += block.chroma_fail;
+ stats.total_zfunc_fail += block.zfunc_fail;
+ stats.total_afunc_fail += block.afunc_fail;
+ stats.total_clipped += block.clip_fail;
+ stats.total_stippled += block.stipple_count;
}
-static void update_statistics(voodoo_device *vd, int accumulate)
+void voodoo_device::update_statistics(bool accumulate)
{
- int threadnum;
-
/* accumulate/reset statistics from all units */
- for (threadnum = 0; threadnum < WORK_MAX_THREADS; threadnum++)
+ for (int threadnum = 0; threadnum < WORK_MAX_THREADS; threadnum++)
{
if (accumulate)
- accumulate_statistics(vd, &vd->thread_stats[threadnum]);
- memset(&vd->thread_stats[threadnum], 0, sizeof(vd->thread_stats[threadnum]));
+ accumulate_statistics(thread_stats[threadnum]);
+ memset(&thread_stats[threadnum], 0, sizeof(thread_stats[threadnum]));
}
/* accumulate/reset statistics from the LFB */
if (accumulate)
- accumulate_statistics(vd, &vd->fbi.lfb_stats);
- memset(&vd->fbi.lfb_stats, 0, sizeof(vd->fbi.lfb_stats));
+ accumulate_statistics(fbi.lfb_stats);
+ memset(&fbi.lfb_stats, 0, sizeof(fbi.lfb_stats));
}
@@ -782,7 +815,7 @@ void voodoo_device::swap_buffers(voodoo_device *vd)
{
int count;
- if (LOG_VBLANK_SWAP) vd->device->logerror("--- swap_buffers @ %d\n", vd->screen->vpos());
+ if (LOG_VBLANK_SWAP) vd->logerror("--- swap_buffers @ %d\n", vd->screen->vpos());
/* force a partial update */
vd->screen->update_partial(vd->screen->vpos());
@@ -823,13 +856,13 @@ void voodoo_device::swap_buffers(voodoo_device *vd)
/* reset the last_op_time to now and start processing the next command */
if (vd->pci.op_pending)
{
- vd->pci.op_end_time = vd->device->machine().time();
+ vd->pci.op_end_time = vd->machine().time();
flush_fifos(vd, vd->pci.op_end_time);
}
/* we may be able to unstall now */
if (vd->pci.stall_state != NOT_STALLED)
- check_stalled_cpu(vd, vd->device->machine().time());
+ check_stalled_cpu(vd, vd->machine().time());
/* periodically log rasterizer info */
vd->stats.swaps++;
@@ -845,7 +878,7 @@ void voodoo_device::swap_buffers(voodoo_device *vd)
int pixelcount;
int i;
- update_statistics(vd, true);
+ vd->update_statistics(true);
pixelcount = vd->stats.total_pixels_out;
statsptr += sprintf(statsptr, "Swap:%6d\n", vd->stats.swaps);
@@ -904,7 +937,7 @@ static void adjust_vblank_timer(voodoo_device *vd)
TIMER_CALLBACK_MEMBER( voodoo_device::vblank_off_callback )
{
- if (LOG_VBLANK_SWAP) device->logerror("--- vblank end\n");
+ if (LOG_VBLANK_SWAP) logerror("--- vblank end\n");
/* set internal state and call the client */
fbi.vblank = false;
@@ -916,15 +949,15 @@ TIMER_CALLBACK_MEMBER( voodoo_device::vblank_off_callback )
{
reg[intrCtrl].u |= 0x200; // VSYNC int (falling) active
- if (!device->m_vblank.isnull())
- device->m_vblank(false);
+ if (!m_vblank.isnull())
+ m_vblank(false);
}
}
else
{
- if (!device->m_vblank.isnull())
- device->m_vblank(false);
+ if (!m_vblank.isnull())
+ m_vblank(false);
}
/* go to the end of the next frame */
@@ -934,24 +967,24 @@ TIMER_CALLBACK_MEMBER( voodoo_device::vblank_off_callback )
TIMER_CALLBACK_MEMBER( voodoo_device::vblank_callback )
{
- if (LOG_VBLANK_SWAP) device->logerror("--- vblank start\n");
+ if (LOG_VBLANK_SWAP) logerror("--- vblank start\n");
/* flush the pipes */
if (pci.op_pending)
{
- if (LOG_VBLANK_SWAP) device->logerror("---- vblank flush begin\n");
+ if (LOG_VBLANK_SWAP) logerror("---- vblank flush begin\n");
flush_fifos(this, machine().time());
- if (LOG_VBLANK_SWAP) device->logerror("---- vblank flush end\n");
+ if (LOG_VBLANK_SWAP) logerror("---- vblank flush end\n");
}
/* increment the count */
fbi.vblank_count++;
if (fbi.vblank_count > 250)
fbi.vblank_count = 250;
- if (LOG_VBLANK_SWAP) device->logerror("---- vblank count = %d", fbi.vblank_count);
+ if (LOG_VBLANK_SWAP) logerror("---- vblank count = %d", fbi.vblank_count);
if (fbi.vblank_swap_pending)
- if (LOG_VBLANK_SWAP) device->logerror(" (target=%d)", fbi.vblank_swap);
- if (LOG_VBLANK_SWAP) device->logerror("\n");
+ if (LOG_VBLANK_SWAP) logerror(" (target=%d)", fbi.vblank_swap);
+ if (LOG_VBLANK_SWAP) logerror("\n");
/* if we're past the swap count, do the swap */
if (fbi.vblank_swap_pending && fbi.vblank_count >= fbi.vblank_swap)
@@ -972,14 +1005,14 @@ TIMER_CALLBACK_MEMBER( voodoo_device::vblank_callback )
{
reg[intrCtrl].u |= 0x100; // VSYNC int (rising) active
- if (!device->m_vblank.isnull())
- device->m_vblank(true);
+ if (!m_vblank.isnull())
+ m_vblank(true);
}
}
else
{
- if (!device->m_vblank.isnull())
- device->m_vblank(true);
+ if (!m_vblank.isnull())
+ m_vblank(true);
}
}
@@ -991,23 +1024,23 @@ TIMER_CALLBACK_MEMBER( voodoo_device::vblank_callback )
*
*************************************/
-static void reset_counters(voodoo_device *vd)
+void voodoo_device::reset_counters()
{
- update_statistics(vd, false);
- vd->reg[fbiPixelsIn].u = 0;
- vd->reg[fbiChromaFail].u = 0;
- vd->reg[fbiZfuncFail].u = 0;
- vd->reg[fbiAfuncFail].u = 0;
- vd->reg[fbiPixelsOut].u = 0;
+ update_statistics(false);
+ reg[fbiPixelsIn].u = 0;
+ reg[fbiChromaFail].u = 0;
+ reg[fbiZfuncFail].u = 0;
+ reg[fbiAfuncFail].u = 0;
+ reg[fbiPixelsOut].u = 0;
}
-void voodoo_device::soft_reset(voodoo_device *vd)
+void voodoo_device::soft_reset()
{
- reset_counters(vd);
- vd->reg[fbiTrianglesOut].u = 0;
- fifo_reset(&vd->fbi.fifo);
- fifo_reset(&vd->pci.fifo);
+ reset_counters();
+ reg[fbiTrianglesOut].u = 0;
+ fbi.fifo.reset();
+ pci.fifo.reset();
}
@@ -1055,7 +1088,7 @@ void voodoo_device::recompute_video_memory(voodoo_device *vd)
switch (memory_config)
{
case 3: /* reserved */
- vd->device->logerror("VOODOO.%d.ERROR:Unexpected memory configuration in recompute_video_memory!\n", vd->index);
+ vd->logerror("VOODOO.%d.ERROR:Unexpected memory configuration in recompute_video_memory!\n", vd->index);
case 0: /* 2 color buffers, 1 aux buffer */
vd->fbi.rgboffs[2] = ~0;
@@ -1106,7 +1139,7 @@ void voodoo_device::recompute_video_memory(voodoo_device *vd)
}
/* reset the FIFO */
- fifo_reset(&vd->fbi.fifo);
+ vd->fbi.fifo.reset();
/* reset our front/back buffers if they are out of range */
if (vd->fbi.rgboffs[2] == ~0)
@@ -1126,24 +1159,24 @@ void voodoo_device::recompute_video_memory(voodoo_device *vd)
*
*************************************/
-static void ncc_table_write(ncc_table *n, offs_t regnum, uint32_t data)
+void voodoo_device::tmu_state::ncc_table::write(offs_t regnum, uint32_t data)
{
/* I/Q entries reference the plaette if the high bit is set */
- if (regnum >= 4 && (data & 0x80000000) && n->palette)
+ if (regnum >= 4 && (data & 0x80000000) && palette)
{
- int index = ((data >> 23) & 0xfe) | (regnum & 1);
+ int const index = ((data >> 23) & 0xfe) | (regnum & 1);
/* set the ARGB for this palette index */
- n->palette[index] = 0xff000000 | data;
+ palette[index] = 0xff000000 | data;
/* if we have an ARGB palette as well, compute its value */
- if (n->palettea)
+ if (palettea)
{
int a = ((data >> 16) & 0xfc) | ((data >> 22) & 0x03);
int r = ((data >> 10) & 0xfc) | ((data >> 16) & 0x03);
int g = ((data >> 4) & 0xfc) | ((data >> 10) & 0x03);
int b = ((data << 2) & 0xfc) | ((data >> 4) & 0x03);
- n->palettea[index] = rgb_t(a, r, g, b);
+ palettea[index] = rgb_t(a, r, g, b);
}
/* this doesn't dirty the table or go to the registers, so bail */
@@ -1151,60 +1184,59 @@ static void ncc_table_write(ncc_table *n, offs_t regnum, uint32_t data)
}
/* if the register matches, don't update */
- if (data == n->reg[regnum].u)
+ if (data == reg[regnum].u)
return;
- n->reg[regnum].u = data;
+ reg[regnum].u = data;
/* first four entries are packed Y values */
if (regnum < 4)
{
regnum *= 4;
- n->y[regnum+0] = (data >> 0) & 0xff;
- n->y[regnum+1] = (data >> 8) & 0xff;
- n->y[regnum+2] = (data >> 16) & 0xff;
- n->y[regnum+3] = (data >> 24) & 0xff;
+ y[regnum+0] = (data >> 0) & 0xff;
+ y[regnum+1] = (data >> 8) & 0xff;
+ y[regnum+2] = (data >> 16) & 0xff;
+ y[regnum+3] = (data >> 24) & 0xff;
}
/* the second four entries are the I RGB values */
else if (regnum < 8)
{
regnum &= 3;
- n->ir[regnum] = (int32_t)(data << 5) >> 23;
- n->ig[regnum] = (int32_t)(data << 14) >> 23;
- n->ib[regnum] = (int32_t)(data << 23) >> 23;
+ ir[regnum] = (int32_t)(data << 5) >> 23;
+ ig[regnum] = (int32_t)(data << 14) >> 23;
+ ib[regnum] = (int32_t)(data << 23) >> 23;
}
/* the final four entries are the Q RGB values */
else
{
regnum &= 3;
- n->qr[regnum] = (int32_t)(data << 5) >> 23;
- n->qg[regnum] = (int32_t)(data << 14) >> 23;
- n->qb[regnum] = (int32_t)(data << 23) >> 23;
+ qr[regnum] = (int32_t)(data << 5) >> 23;
+ qg[regnum] = (int32_t)(data << 14) >> 23;
+ qb[regnum] = (int32_t)(data << 23) >> 23;
}
/* mark the table dirty */
- n->dirty = true;
+ dirty = true;
}
-static void ncc_table_update(ncc_table *n)
+void voodoo_device::tmu_state::ncc_table::update()
{
- int r, g, b, i;
-
/* generte all 256 possibilities */
- for (i = 0; i < 256; i++)
+ for (int i = 0; i < 256; i++)
{
int vi = (i >> 2) & 0x03;
int vq = (i >> 0) & 0x03;
/* start with the intensity */
- r = g = b = n->y[(i >> 4) & 0x0f];
+ int r, g, b;
+ r = g = b = y[(i >> 4) & 0x0f];
/* add the coloring */
- r += n->ir[vi] + n->qr[vq];
- g += n->ig[vi] + n->qg[vq];
- b += n->ib[vi] + n->qb[vq];
+ r += ir[vi] + qr[vq];
+ g += ig[vi] + qg[vq];
+ b += ib[vi] + qb[vq];
/* clamp */
CLAMP(r, 0, 255);
@@ -1212,11 +1244,11 @@ static void ncc_table_update(ncc_table *n)
CLAMP(b, 0, 255);
/* fill in the table */
- n->texel[i] = rgb_t(0xff, r, g, b);
+ texel[i] = rgb_t(0xff, r, g, b);
}
/* no longer dirty */
- n->dirty = false;
+ dirty = false;
}
@@ -1227,13 +1259,13 @@ static void ncc_table_update(ncc_table *n)
*
*************************************/
-static void dacdata_w(dac_state *d, uint8_t regnum, uint8_t data)
+void voodoo_device::dac_state::data_w(uint8_t regnum, uint8_t data)
{
- d->reg[regnum] = data;
+ reg[regnum] = data;
}
-static void dacdata_r(dac_state *d, uint8_t regnum)
+void voodoo_device::dac_state::data_r(uint8_t regnum)
{
uint8_t result = 0xff;
@@ -1242,7 +1274,7 @@ static void dacdata_r(dac_state *d, uint8_t regnum)
{
case 5:
/* this is just to make startup happy */
- switch (d->reg[7])
+ switch (reg[7])
{
case 0x01: result = 0x55; break;
case 0x07: result = 0x71; break;
@@ -1251,12 +1283,12 @@ static void dacdata_r(dac_state *d, uint8_t regnum)
break;
default:
- result = d->reg[regnum];
+ result = reg[regnum];
break;
}
/* remember the read result; it is fetched elsewhere */
- d->read_result = result;
+ read_result = result;
}
@@ -1267,125 +1299,123 @@ static void dacdata_r(dac_state *d, uint8_t regnum)
*
*************************************/
-static void recompute_texture_params(tmu_state *t)
+void voodoo_device::tmu_state::recompute_texture_params()
{
int bppscale;
uint32_t base;
int lod;
/* extract LOD parameters */
- t->lodmin = TEXLOD_LODMIN(t->reg[tLOD].u) << 6;
- t->lodmax = TEXLOD_LODMAX(t->reg[tLOD].u) << 6;
- t->lodbias = (int8_t)(TEXLOD_LODBIAS(t->reg[tLOD].u) << 2) << 4;
+ lodmin = TEXLOD_LODMIN(reg[tLOD].u) << 6;
+ lodmax = TEXLOD_LODMAX(reg[tLOD].u) << 6;
+ lodbias = (int8_t)(TEXLOD_LODBIAS(reg[tLOD].u) << 2) << 4;
/* determine which LODs are present */
- t->lodmask = 0x1ff;
- if (TEXLOD_LOD_TSPLIT(t->reg[tLOD].u))
+ lodmask = 0x1ff;
+ if (TEXLOD_LOD_TSPLIT(reg[tLOD].u))
{
- if (!TEXLOD_LOD_ODD(t->reg[tLOD].u))
- t->lodmask = 0x155;
+ if (!TEXLOD_LOD_ODD(reg[tLOD].u))
+ lodmask = 0x155;
else
- t->lodmask = 0x0aa;
+ lodmask = 0x0aa;
}
/* determine base texture width/height */
- t->wmask = t->hmask = 0xff;
- if (TEXLOD_LOD_S_IS_WIDER(t->reg[tLOD].u))
- t->hmask >>= TEXLOD_LOD_ASPECT(t->reg[tLOD].u);
+ wmask = hmask = 0xff;
+ if (TEXLOD_LOD_S_IS_WIDER(reg[tLOD].u))
+ hmask >>= TEXLOD_LOD_ASPECT(reg[tLOD].u);
else
- t->wmask >>= TEXLOD_LOD_ASPECT(t->reg[tLOD].u);
+ wmask >>= TEXLOD_LOD_ASPECT(reg[tLOD].u);
/* determine the bpp of the texture */
- bppscale = TEXMODE_FORMAT(t->reg[textureMode].u) >> 3;
+ bppscale = TEXMODE_FORMAT(reg[textureMode].u) >> 3;
/* start with the base of LOD 0 */
- if (t->texaddr_shift == 0 && (t->reg[texBaseAddr].u & 1))
+ if (texaddr_shift == 0 && (reg[texBaseAddr].u & 1))
osd_printf_debug("Tiled texture\n");
- base = (t->reg[texBaseAddr].u & t->texaddr_mask) << t->texaddr_shift;
- t->lodoffset[0] = base & t->mask;
+ base = (reg[texBaseAddr].u & texaddr_mask) << texaddr_shift;
+ lodoffset[0] = base & mask;
/* LODs 1-3 are different depending on whether we are in multitex mode */
/* Several Voodoo 2 games leave the upper bits of TLOD == 0xff, meaning we think */
/* they want multitex mode when they really don't -- disable for now */
// Enable for Voodoo 3 or Viper breaks - VL.
// Add check for upper nibble not equal to zero to fix funkball -- TG
- if (TEXLOD_TMULTIBASEADDR(t->reg[tLOD].u) && (t->reg[tLOD].u >> 28) == 0)
+ if (TEXLOD_TMULTIBASEADDR(reg[tLOD].u) && (reg[tLOD].u >> 28) == 0)
{
- base = (t->reg[texBaseAddr_1].u & t->texaddr_mask) << t->texaddr_shift;
- t->lodoffset[1] = base & t->mask;
- base = (t->reg[texBaseAddr_2].u & t->texaddr_mask) << t->texaddr_shift;
- t->lodoffset[2] = base & t->mask;
- base = (t->reg[texBaseAddr_3_8].u & t->texaddr_mask) << t->texaddr_shift;
- t->lodoffset[3] = base & t->mask;
+ base = (reg[texBaseAddr_1].u & texaddr_mask) << texaddr_shift;
+ lodoffset[1] = base & mask;
+ base = (reg[texBaseAddr_2].u & texaddr_mask) << texaddr_shift;
+ lodoffset[2] = base & mask;
+ base = (reg[texBaseAddr_3_8].u & texaddr_mask) << texaddr_shift;
+ lodoffset[3] = base & mask;
}
else
{
- if (t->lodmask & (1 << 0))
- base += (((t->wmask >> 0) + 1) * ((t->hmask >> 0) + 1)) << bppscale;
- t->lodoffset[1] = base & t->mask;
- if (t->lodmask & (1 << 1))
- base += (((t->wmask >> 1) + 1) * ((t->hmask >> 1) + 1)) << bppscale;
- t->lodoffset[2] = base & t->mask;
- if (t->lodmask & (1 << 2))
- base += (((t->wmask >> 2) + 1) * ((t->hmask >> 2) + 1)) << bppscale;
- t->lodoffset[3] = base & t->mask;
+ if (lodmask & (1 << 0))
+ base += (((wmask >> 0) + 1) * ((hmask >> 0) + 1)) << bppscale;
+ lodoffset[1] = base & mask;
+ if (lodmask & (1 << 1))
+ base += (((wmask >> 1) + 1) * ((hmask >> 1) + 1)) << bppscale;
+ lodoffset[2] = base & mask;
+ if (lodmask & (1 << 2))
+ base += (((wmask >> 2) + 1) * ((hmask >> 2) + 1)) << bppscale;
+ lodoffset[3] = base & mask;
}
/* remaining LODs make sense */
for (lod = 4; lod <= 8; lod++)
{
- if (t->lodmask & (1 << (lod - 1)))
+ if (lodmask & (1 << (lod - 1)))
{
- uint32_t size = ((t->wmask >> (lod - 1)) + 1) * ((t->hmask >> (lod - 1)) + 1);
+ uint32_t size = ((wmask >> (lod - 1)) + 1) * ((hmask >> (lod - 1)) + 1);
if (size < 4) size = 4;
base += size << bppscale;
}
- t->lodoffset[lod] = base & t->mask;
+ lodoffset[lod] = base & mask;
}
/* set the NCC lookup appropriately */
- t->texel[1] = t->texel[9] = t->ncc[TEXMODE_NCC_TABLE_SELECT(t->reg[textureMode].u)].texel;
+ texel[1] = texel[9] = ncc[TEXMODE_NCC_TABLE_SELECT(reg[textureMode].u)].texel;
/* pick the lookup table */
- t->lookup = t->texel[TEXMODE_FORMAT(t->reg[textureMode].u)];
+ lookup = texel[TEXMODE_FORMAT(reg[textureMode].u)];
/* compute the detail parameters */
- t->detailmax = TEXDETAIL_DETAIL_MAX(t->reg[tDetail].u);
- t->detailbias = (int8_t)(TEXDETAIL_DETAIL_BIAS(t->reg[tDetail].u) << 2) << 6;
- t->detailscale = TEXDETAIL_DETAIL_SCALE(t->reg[tDetail].u);
+ detailmax = TEXDETAIL_DETAIL_MAX(reg[tDetail].u);
+ detailbias = (int8_t)(TEXDETAIL_DETAIL_BIAS(reg[tDetail].u) << 2) << 6;
+ detailscale = TEXDETAIL_DETAIL_SCALE(reg[tDetail].u);
/* ensure that the NCC tables are up to date */
- if ((TEXMODE_FORMAT(t->reg[textureMode].u) & 7) == 1)
+ if ((TEXMODE_FORMAT(reg[textureMode].u) & 7) == 1)
{
- ncc_table *n = &t->ncc[TEXMODE_NCC_TABLE_SELECT(t->reg[textureMode].u)];
- t->texel[1] = t->texel[9] = n->texel;
- if (n->dirty)
- ncc_table_update(n);
+ ncc_table &n = ncc[TEXMODE_NCC_TABLE_SELECT(reg[textureMode].u)];
+ texel[1] = texel[9] = n.texel;
+ if (n.dirty)
+ n.update();
}
/* no longer dirty */
- t->regdirty = false;
+ regdirty = false;
/* check for separate RGBA filtering */
- if (TEXDETAIL_SEPARATE_RGBA_FILTER(t->reg[tDetail].u))
+ if (TEXDETAIL_SEPARATE_RGBA_FILTER(reg[tDetail].u))
fatalerror("Separate RGBA filters!\n");
}
-static inline int32_t prepare_tmu(tmu_state *t)
+inline int32_t voodoo_device::tmu_state::prepare()
{
int64_t texdx, texdy;
int32_t lodbase;
/* if the texture parameters are dirty, update them */
- if (t->regdirty)
- {
- recompute_texture_params(t);
- }
+ if (regdirty)
+ recompute_texture_params();
/* compute (ds^2 + dt^2) in both X and Y as 28.36 numbers */
- texdx = (int64_t)(t->dsdx >> 14) * (int64_t)(t->dsdx >> 14) + (int64_t)(t->dtdx >> 14) * (int64_t)(t->dtdx >> 14);
- texdy = (int64_t)(t->dsdy >> 14) * (int64_t)(t->dsdy >> 14) + (int64_t)(t->dtdy >> 14) * (int64_t)(t->dtdy >> 14);
+ texdx = int64_t(dsdx >> 14) * int64_t(dsdx >> 14) + int64_t(dtdx >> 14) * int64_t(dtdx >> 14);
+ texdy = int64_t(dsdy >> 14) * int64_t(dsdy >> 14) + int64_t(dtdy >> 14) * int64_t(dtdy >> 14);
/* pick whichever is larger and shift off some high bits -> 28.20 */
if (texdx < texdy)
@@ -1397,14 +1427,14 @@ static inline int32_t prepare_tmu(tmu_state *t)
/* adjust the result: negative to get the log of the original value */
/* plus 12 to account for the extra exponent, and divided by 2 to */
/* get the log of the square root of texdx */
- #if USE_FAST_RECIP == 1
- (void)fast_reciplog(texdx, &lodbase);
- return (-lodbase + (12 << 8)) / 2;
- #else
- double tmpTex = texdx;
- lodbase = new_log2(tmpTex);
- return (lodbase + (12 << 8)) / 2;
- #endif
+#if USE_FAST_RECIP == 1
+ (void)fast_reciplog(texdx, &lodbase);
+ return (-lodbase + (12 << 8)) / 2;
+#else
+ double tmpTex = texdx;
+ lodbase = new_log2(tmpTex);
+ return (lodbase + (12 << 8)) / 2;
+#endif
}
@@ -1415,10 +1445,10 @@ static inline int32_t prepare_tmu(tmu_state *t)
*
*************************************/
-static int cmdfifo_compute_expected_depth(voodoo_device *vd, cmdfifo_info *f)
+int voodoo_device::cmdfifo_compute_expected_depth(cmdfifo_info &f)
{
- uint32_t *fifobase = (uint32_t *)vd->fbi.ram;
- uint32_t readptr = f->rdptr;
+ uint32_t *fifobase = (uint32_t *)fbi.ram;
+ uint32_t readptr = f.rdptr;
uint32_t command = fifobase[readptr / 4];
int i, count = 0;
@@ -1562,7 +1592,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
uint32_t *src = &fifobase[readptr / 4];
uint32_t command = *src++;
int count, inc, code, i;
- setup_vertex svert = {0};
+ fbi_state::setup_vertex svert = {0};
offs_t target;
int cycles = 0;
@@ -1588,26 +1618,26 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
switch ((command >> 3) & 7)
{
case 0: /* NOP */
- if (LOG_CMDFIFO) vd->device->logerror(" NOP\n");
+ if (LOG_CMDFIFO) vd->logerror(" NOP\n");
break;
case 1: /* JSR */
- if (LOG_CMDFIFO) vd->device->logerror(" JSR $%06X\n", target);
+ if (LOG_CMDFIFO) vd->logerror(" JSR $%06X\n", target);
osd_printf_debug("JSR in CMDFIFO!\n");
src = &fifobase[target / 4];
break;
case 2: /* RET */
- if (LOG_CMDFIFO) vd->device->logerror(" RET $%06X\n", target);
+ if (LOG_CMDFIFO) vd->logerror(" RET $%06X\n", target);
fatalerror("RET in CMDFIFO!\n");
case 3: /* JMP LOCAL FRAME BUFFER */
- if (LOG_CMDFIFO) vd->device->logerror(" JMP LOCAL FRAMEBUF $%06X\n", target);
+ if (LOG_CMDFIFO) vd->logerror(" JMP LOCAL FRAMEBUF $%06X\n", target);
src = &fifobase[target / 4];
break;
case 4: /* JMP AGP */
- if (LOG_CMDFIFO) vd->device->logerror(" JMP AGP $%06X\n", target);
+ if (LOG_CMDFIFO) vd->logerror(" JMP AGP $%06X\n", target);
fatalerror("JMP AGP in CMDFIFO!\n");
src = &fifobase[target / 4];
break;
@@ -1635,7 +1665,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
inc = (command >> 15) & 1;
target = (command >> 3) & 0xfff;
- if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 1: count=%d inc=%d reg=%04X\n", count, inc, target);
+ if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 1: count=%d inc=%d reg=%04X\n", count, inc, target);
if (vd->vd_type >= TYPE_VOODOO_BANSHEE && (target & 0x800))
{
@@ -1666,7 +1696,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
1 31:0 = Data word
*/
case 2:
- if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 2: mask=%X\n", (command >> 3) & 0x1ffffff);
+ if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 2: mask=%X\n", (command >> 3) & 0x1ffffff);
/* loop over all registers and write them one at a time */
for (i = 3; i <= 31; i++)
@@ -1703,7 +1733,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
count = (command >> 6) & 15;
code = (command >> 3) & 7;
- if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 3: count=%d code=%d mask=%03X smode=%02X pc=%d\n", count, code, (command >> 10) & 0xfff, (command >> 22) & 0x3f, (command >> 28) & 1);
+ if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 3: count=%d code=%d mask=%03X smode=%02X pc=%d\n", count, code, (command >> 10) & 0xfff, (command >> 22) & 0x3f, (command >> 28) & 1);
/* copy relevant bits into the setup mode register */
vd->reg[sSetupMode].u = ((command >> 10) & 0xff) | ((command >> 6) & 0xf0000);
@@ -1813,7 +1843,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
/* extract parameters */
target = (command >> 3) & 0xfff;
- if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 4: mask=%X reg=%04X pad=%d\n", (command >> 15) & 0x3fff, target, command >> 29);
+ if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 4: mask=%X reg=%04X pad=%d\n", (command >> 15) & 0x3fff, target, command >> 29);
if (vd->vd_type >= TYPE_VOODOO_BANSHEE && (target & 0x800))
{
@@ -1867,7 +1897,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
{
case 0: // Linear FB
{
- if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 5: FB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
+ if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 5: FB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
uint32_t addr = target * 4;
for (i=0; i < count; i++)
@@ -1885,7 +1915,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
}
case 2: // 3D LFB
{
- if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 5: 3D LFB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
+ if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 5: 3D LFB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
/* loop over words */
for (i = 0; i < count; i++)
@@ -1910,7 +1940,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
case 3: // Texture Port
{
- if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 5: textureRAM count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
+ if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 5: textureRAM count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
/* loop over words */
for (i = 0; i < count; i++)
@@ -1940,23 +1970,20 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
*
*************************************/
-int32_t voodoo_device::cmdfifo_execute_if_ready(voodoo_device* vd, cmdfifo_info *f)
+int32_t voodoo_device::cmdfifo_execute_if_ready(cmdfifo_info &f)
{
- int needed_depth;
- int cycles;
-
/* all CMDFIFO commands need at least one word */
- if (f->depth == 0)
+ if (f.depth == 0)
return -1;
/* see if we have enough for the current command */
- needed_depth = cmdfifo_compute_expected_depth(vd, f);
- if (f->depth < needed_depth)
+ int const needed_depth = cmdfifo_compute_expected_depth(f);
+ if (f.depth < needed_depth)
return -1;
/* execute */
- cycles = cmdfifo_execute(vd, f);
- f->depth -= needed_depth;
+ int const cycles = cmdfifo_execute(this, &f);
+ f.depth -= needed_depth;
return cycles;
}
@@ -1973,7 +2000,7 @@ void voodoo_device::cmdfifo_w(voodoo_device *vd, cmdfifo_info *f, offs_t offset,
uint32_t addr = f->base + offset * 4;
uint32_t *fifobase = (uint32_t *)vd->fbi.ram;
- if (LOG_CMDFIFO_VERBOSE) vd->device->logerror("CMDFIFO_w(%04X) = %08X\n", offset, data);
+ if (LOG_CMDFIFO_VERBOSE) vd->logerror("CMDFIFO_w(%04X) = %08X\n", offset, data);
/* write the data */
if (addr < f->end)
@@ -1993,7 +2020,7 @@ void voodoo_device::cmdfifo_w(voodoo_device *vd, cmdfifo_info *f, offs_t offset,
else if (addr < f->amin)
{
if (f->holes != 0)
- vd->device->logerror("Unexpected CMDFIFO: AMin=%08X AMax=%08X Holes=%d WroteTo:%08X\n",
+ vd->logerror("Unexpected CMDFIFO: AMin=%08X AMax=%08X Holes=%d WroteTo:%08X\n",
f->amin, f->amax, f->holes, addr);
//f->amin = f->amax = addr;
f->holes += (addr - f->base) / 4;
@@ -2025,14 +2052,14 @@ void voodoo_device::cmdfifo_w(voodoo_device *vd, cmdfifo_info *f, offs_t offset,
/* execute if we can */
if (!vd->pci.op_pending)
{
- int32_t cycles = cmdfifo_execute_if_ready(vd, f);
+ int32_t cycles = vd->cmdfifo_execute_if_ready(*f);
if (cycles > 0)
{
vd->pci.op_pending = true;
- vd->pci.op_end_time = vd->device->machine().time() + attotime(0, (attoseconds_t)cycles * vd->attoseconds_per_cycle);
+ vd->pci.op_end_time = vd->machine().time() + attotime(0, (attoseconds_t)cycles * vd->attoseconds_per_cycle);
- if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:direct write start at %d.%08X%08X end at %d.%08X%08X\n", vd->index,
- vd->device->machine().time().seconds(), (uint32_t)(vd->device->machine().time().attoseconds() >> 32), (uint32_t)vd->device->machine().time().attoseconds(),
+ if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:direct write start at %d.%08X%08X end at %d.%08X%08X\n", vd->index,
+ vd->machine().time().seconds(), (uint32_t)(vd->machine().time().attoseconds() >> 32), (uint32_t)vd->machine().time().attoseconds(),
vd->pci.op_end_time.seconds(), (uint32_t)(vd->pci.op_end_time.attoseconds() >> 32), (uint32_t)vd->pci.op_end_time.attoseconds());
}
}
@@ -2067,10 +2094,10 @@ void voodoo_device::check_stalled_cpu(voodoo_device* vd, attotime current_time)
/* if there's room in the memory FIFO now, we can proceed */
if (FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u))
{
- if (fifo_items(&vd->fbi.fifo) < 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(vd->reg[fbiInit0].u))
+ if (vd->fbi.fifo.items() < 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(vd->reg[fbiInit0].u))
resume = true;
}
- else if (fifo_space(&vd->pci.fifo) > 2 * FBIINIT0_PCI_FIFO_LWM(vd->reg[fbiInit0].u))
+ else if (vd->pci.fifo.space() > 2 * FBIINIT0_PCI_FIFO_LWM(vd->reg[fbiInit0].u))
resume = true;
}
@@ -2079,24 +2106,24 @@ void voodoo_device::check_stalled_cpu(voodoo_device* vd, attotime current_time)
{
if (FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u))
{
- if (fifo_empty(&vd->fbi.fifo) && fifo_empty(&vd->pci.fifo))
+ if (vd->fbi.fifo.empty() && vd->pci.fifo.empty())
resume = true;
}
- else if (fifo_empty(&vd->pci.fifo))
+ else if (vd->pci.fifo.empty())
resume = true;
}
/* resume if necessary */
if (resume || !vd->pci.op_pending)
{
- if (LOG_FIFO) vd->device->logerror("VOODOO.%d.FIFO:Stall condition cleared; resuming\n", vd->index);
+ if (LOG_FIFO) vd->logerror("VOODOO.%d.FIFO:Stall condition cleared; resuming\n", vd->index);
vd->pci.stall_state = NOT_STALLED;
/* either call the callback, or trigger the trigger */
- if (!vd->device->m_stall.isnull())
- vd->device->m_stall(false);
+ if (!vd->m_stall.isnull())
+ vd->m_stall(false);
else
- vd->device->machine().scheduler().trigger(vd->trigger);
+ vd->machine().scheduler().trigger(vd->trigger);
}
/* if not, set a timer for the next one */
@@ -2117,8 +2144,8 @@ void voodoo_device::stall_cpu(voodoo_device *vd, int state, attotime current_tim
vd->stats.stalls++;
/* either call the callback, or spin the CPU */
- if (!vd->device->m_stall.isnull())
- vd->device->m_stall(true);
+ if (!vd->m_stall.isnull())
+ vd->m_stall(true);
else
vd->cpu->execute().spin_until_trigger(vd->trigger);
@@ -2160,7 +2187,7 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat
/* first make sure this register is readable */
if (!(vd->regaccess[regnum] & REGISTER_WRITE))
{
- vd->device->logerror("VOODOO.%d.ERROR:Invalid attempt to write %s\n", vd->index, vd->regnames[regnum]);
+ vd->logerror("VOODOO.%d.ERROR:Invalid attempt to write %s\n", vd->index, vd->regnames[regnum]);
return 0;
}
@@ -2453,7 +2480,7 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat
case nopCMD:
poly_wait(vd->poly, vd->regnames[regnum]);
if (data & 1)
- reset_counters(vd);
+ vd->reset_counters();
if (data & 2)
vd->reg[fbiTrianglesOut].u = 0;
break;
@@ -2475,8 +2502,8 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat
vd->reg[intrCtrl].u &= ~0x80000000;
// TODO: rename vblank_client for less confusion?
- if (!vd->device->m_vblank.isnull())
- vd->device->m_vblank(true);
+ if (!vd->m_vblank.isnull())
+ vd->m_vblank(true);
break;
/* gamma table access -- Voodoo/Voodoo2 only */
@@ -2494,7 +2521,7 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat
}
}
else
- vd->device->logerror("clutData ignored because video timing reset = 1\n");
+ vd->logerror("clutData ignored because video timing reset = 1\n");
}
break;
@@ -2504,9 +2531,9 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat
{
poly_wait(vd->poly, vd->regnames[regnum]);
if (!(data & 0x800))
- dacdata_w(&vd->dac, (data >> 8) & 7, data & 0xff);
+ vd->dac.data_w((data >> 8) & 7, data & 0xff);
else
- dacdata_r(&vd->dac, (data >> 8) & 7);
+ vd->dac.data_r((data >> 8) & 7);
}
break;
@@ -2611,9 +2638,9 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat
{
vd->reg[fbiInit0].u = data;
if (FBIINIT0_GRAPHICS_RESET(data))
- soft_reset(vd);
+ vd->soft_reset();
if (FBIINIT0_FIFO_RESET(data))
- fifo_reset(&vd->pci.fifo);
+ vd->pci.fifo.reset();
recompute_video_memory(vd);
}
break;
@@ -2744,8 +2771,8 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat
case nccTable+10:
case nccTable+11:
poly_wait(vd->poly, vd->regnames[regnum]);
- if (chips & 2) ncc_table_write(&vd->tmu[0].ncc[0], regnum - nccTable, data);
- if (chips & 4) ncc_table_write(&vd->tmu[1].ncc[0], regnum - nccTable, data);
+ if (chips & 2) vd->tmu[0].ncc[0].write(regnum - nccTable, data);
+ if (chips & 4) vd->tmu[1].ncc[0].write(regnum - nccTable, data);
break;
case nccTable+12:
@@ -2761,8 +2788,8 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat
case nccTable+22:
case nccTable+23:
poly_wait(vd->poly, vd->regnames[regnum]);
- if (chips & 2) ncc_table_write(&vd->tmu[0].ncc[1], regnum - (nccTable+12), data);
- if (chips & 4) ncc_table_write(&vd->tmu[1].ncc[1], regnum - (nccTable+12), data);
+ if (chips & 2) vd->tmu[0].ncc[1].write(regnum - (nccTable+12), data);
+ if (chips & 4) vd->tmu[1].ncc[1].write(regnum - (nccTable+12), data);
break;
/* fogTable entries are processed and expanded immediately */
@@ -2862,9 +2889,9 @@ default_case:
if (LOG_REGISTERS)
{
if (regnum < fvertexAx || regnum > fdWdY)
- vd->device->logerror("VOODOO.%d.REG:%s(%d) write = %08X\n", vd->index, (regnum < 0x384/4) ? vd->regnames[regnum] : "oob", chips, origdata);
+ vd->logerror("VOODOO.%d.REG:%s(%d) write = %08X\n", vd->index, (regnum < 0x384/4) ? vd->regnames[regnum] : "oob", chips, origdata);
else
- vd->device->logerror("VOODOO.%d.REG:%s(%d) write = %f\n", vd->index, (regnum < 0x384/4) ? vd->regnames[regnum] : "oob", chips, (double) u2f(origdata));
+ vd->logerror("VOODOO.%d.REG:%s(%d) write = %f\n", vd->index, (regnum < 0x384/4) ? vd->regnames[regnum] : "oob", chips, (double) u2f(origdata));
}
return cycles;
@@ -2911,14 +2938,14 @@ int32_t voodoo_device::lfb_direct_w(voodoo_device *vd, offs_t offset, uint32_t d
destmax = (vd->fbi.mask + 1 - vd->fbi.lfb_base*4) / 2;
bufoffs = y * vd->fbi.rowpixels + x;
if (bufoffs >= destmax) {
- vd->device->logerror("lfb_direct_w: Buffer offset out of bounds x=%i y=%i offset=%08X bufoffs=%08X data=%08X\n", x, y, offset, (uint32_t) bufoffs, data);
+ vd->logerror("lfb_direct_w: Buffer offset out of bounds x=%i y=%i offset=%08X bufoffs=%08X data=%08X\n", x, y, offset, (uint32_t) bufoffs, data);
return 0;
}
if (ACCESSING_BITS_0_15)
dest[bufoffs + 0] = data&0xffff;
if (ACCESSING_BITS_16_31)
dest[bufoffs + 1] = data>>16;
- if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:write direct (%d,%d) = %08X & %08X\n", vd->index, x, y, data, mem_mask);
+ if (LOG_LFB) vd->logerror("VOODOO.%d.LFB:write direct (%d,%d) = %08X & %08X\n", vd->index, x, y, data, mem_mask);
return 0;
}
@@ -3119,7 +3146,7 @@ int32_t voodoo_device::lfb_w(voodoo_device* vd, offs_t offset, uint32_t data, ui
break;
default: /* reserved */
- vd->device->logerror("lfb_w: Unknown format\n");
+ vd->logerror("lfb_w: Unknown format\n");
return 0;
}
@@ -3160,7 +3187,7 @@ int32_t voodoo_device::lfb_w(voodoo_device* vd, offs_t offset, uint32_t data, ui
DECLARE_DITHER_POINTERS_NO_DITHER_VAR;
uint32_t bufoffs;
- if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:write raw mode %X (%d,%d) = %08X & %08X\n", vd->index, LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u), x, y, data, mem_mask);
+ if (LOG_LFB) vd->logerror("VOODOO.%d.LFB:write raw mode %X (%d,%d) = %08X & %08X\n", vd->index, LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u), x, y, data, mem_mask);
/* determine the screen Y */
scry = y;
@@ -3218,7 +3245,7 @@ int32_t voodoo_device::lfb_w(voodoo_device* vd, offs_t offset, uint32_t data, ui
{
DECLARE_DITHER_POINTERS;
- if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:write pipelined mode %X (%d,%d) = %08X & %08X\n", vd->index, LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u), x, y, data, mem_mask);
+ if (LOG_LFB) vd->logerror("VOODOO.%d.LFB:write pipelined mode %X (%d,%d) = %08X & %08X\n", vd->index, LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u), x, y, data, mem_mask);
/* determine the screen Y */
scry = y;
@@ -3374,7 +3401,7 @@ int32_t voodoo_device::texture_w(voodoo_device *vd, offs_t offset, uint32_t data
/* update texture info if dirty */
if (t->regdirty)
- recompute_texture_params(t);
+ t->recompute_texture_params();
/* swizzle the data */
if (TEXLOD_TDATA_SWIZZLE(t->reg[tLOD].u))
@@ -3410,13 +3437,13 @@ int32_t voodoo_device::texture_w(voodoo_device *vd, offs_t offset, uint32_t data
tbaseaddr = t->lodoffset[lod];
tbaseaddr += tt * ((t->wmask >> lod) + 1) + ts;
- if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 8-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data);
+ if (LOG_TEXTURE_RAM) vd->logerror("Texture 8-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data);
}
else
{
tbaseaddr = t->lodoffset[0] + offset*4;
- if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 8-bit w: offset=%X data=%08X\n", offset*4, data);
+ if (LOG_TEXTURE_RAM) vd->logerror("Texture 8-bit w: offset=%X data=%08X\n", offset*4, data);
}
/* write the four bytes in little-endian order */
@@ -3450,13 +3477,13 @@ int32_t voodoo_device::texture_w(voodoo_device *vd, offs_t offset, uint32_t data
tbaseaddr = t->lodoffset[lod];
tbaseaddr += 2 * (tt * ((t->wmask >> lod) + 1) + ts);
- if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 16-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data);
+ if (LOG_TEXTURE_RAM) vd->logerror("Texture 16-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data);
}
else
{
tbaseaddr = t->lodoffset[0] + offset*4;
- if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 16-bit w: offset=%X data=%08X\n", offset*4, data);
+ if (LOG_TEXTURE_RAM) vd->logerror("Texture 16-bit w: offset=%X data=%08X\n", offset*4, data);
}
/* write the two words in little-endian order */
@@ -3489,7 +3516,7 @@ void voodoo_device::flush_fifos(voodoo_device *vd, attotime current_time)
if (!vd->pci.op_pending) fatalerror("flush_fifos called with no pending operation\n");
- if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos start -- pending=%d.%08X%08X cur=%d.%08X%08X\n", vd->index,
+ if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:flush_fifos start -- pending=%d.%08X%08X cur=%d.%08X%08X\n", vd->index,
vd->pci.op_end_time.seconds(), (uint32_t)(vd->pci.op_end_time.attoseconds() >> 32), (uint32_t)vd->pci.op_end_time.attoseconds(),
current_time.seconds(), (uint32_t)(current_time.attoseconds() >> 32), (uint32_t)current_time.attoseconds());
@@ -3510,24 +3537,24 @@ void voodoo_device::flush_fifos(voodoo_device *vd, attotime current_time)
if (vd->fbi.cmdfifo[0].enable)
{
/* if we don't have anything to execute, we're done for now */
- cycles = cmdfifo_execute_if_ready(vd, &vd->fbi.cmdfifo[0]);
+ cycles = vd->cmdfifo_execute_if_ready(vd->fbi.cmdfifo[0]);
if (cycles == -1)
{
vd->pci.op_pending = false;
in_flush = false;
- if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", vd->index);
+ if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", vd->index);
return;
}
}
else if (vd->fbi.cmdfifo[1].enable)
{
/* if we don't have anything to execute, we're done for now */
- cycles = cmdfifo_execute_if_ready(vd, &vd->fbi.cmdfifo[1]);
+ cycles = vd->cmdfifo_execute_if_ready(vd->fbi.cmdfifo[1]);
if (cycles == -1)
{
vd->pci.op_pending = false;
in_flush = false;
- if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", vd->index);
+ if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", vd->index);
return;
}
}
@@ -3536,21 +3563,21 @@ void voodoo_device::flush_fifos(voodoo_device *vd, attotime current_time)
else
{
/* choose which FIFO to read from */
- if (!fifo_empty(&vd->fbi.fifo))
+ if (!vd->fbi.fifo.empty())
fifo = &vd->fbi.fifo;
- else if (!fifo_empty(&vd->pci.fifo))
+ else if (!vd->pci.fifo.empty())
fifo = &vd->pci.fifo;
else
{
vd->pci.op_pending = false;
in_flush = false;
- if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- FIFOs empty\n", vd->index);
+ if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:flush_fifos end -- FIFOs empty\n", vd->index);
return;
}
/* extract address and data */
- address = fifo_remove(fifo);
- data = fifo_remove(fifo);
+ address = fifo->remove();
+ data = fifo->remove();
/* target the appropriate location */
if ((address & (0xc00000/4)) == 0)
@@ -3587,12 +3614,12 @@ void voodoo_device::flush_fifos(voodoo_device *vd, attotime current_time)
/* account for those cycles */
vd->pci.op_end_time += attotime(0, (attoseconds_t)cycles * vd->attoseconds_per_cycle);
- if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:update -- pending=%d.%08X%08X cur=%d.%08X%08X\n", vd->index,
+ if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:update -- pending=%d.%08X%08X cur=%d.%08X%08X\n", vd->index,
vd->pci.op_end_time.seconds(), (uint32_t)(vd->pci.op_end_time.attoseconds() >> 32), (uint32_t)vd->pci.op_end_time.attoseconds(),
current_time.seconds(), (uint32_t)(current_time.attoseconds() >> 32), (uint32_t)current_time.attoseconds());
}
- if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- pending command complete at %d.%08X%08X\n", vd->index,
+ if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:flush_fifos end -- pending command complete at %d.%08X%08X\n", vd->index,
vd->pci.op_end_time.seconds(), (uint32_t)(vd->pci.op_end_time.attoseconds() >> 32), (uint32_t)vd->pci.op_end_time.attoseconds());
in_flush = false;
@@ -3723,17 +3750,17 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
/* if there's room in the PCI FIFO, add there */
if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:voodoo_w adding to PCI FIFO @ %08X=%08X\n", this, offset, data);
- if (!fifo_full(&pci.fifo))
+ if (!pci.fifo.full())
{
- fifo_add(&pci.fifo, offset);
- fifo_add(&pci.fifo, data);
+ pci.fifo.add(offset);
+ pci.fifo.add(data);
}
else
fatalerror("PCI FIFO full\n");
/* handle flushing to the memory FIFO */
if (FBIINIT0_ENABLE_MEMORY_FIFO(reg[fbiInit0].u) &&
- fifo_space(&pci.fifo) <= 2 * FBIINIT4_MEMORY_FIFO_LWM(reg[fbiInit4].u))
+ pci.fifo.space() <= 2 * FBIINIT4_MEMORY_FIFO_LWM(reg[fbiInit4].u))
{
uint8_t valid[4];
@@ -3744,15 +3771,15 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
/* flush everything we can */
if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:voodoo_w moving PCI FIFO to memory FIFO\n", index);
- while (!fifo_empty(&pci.fifo) && valid[(fifo_peek(&pci.fifo) >> 22) & 3])
+ while (!pci.fifo.empty() && valid[(pci.fifo.peek() >> 22) & 3])
{
- fifo_add(&fbi.fifo, fifo_remove(&pci.fifo));
- fifo_add(&fbi.fifo, fifo_remove(&pci.fifo));
+ fbi.fifo.add(pci.fifo.remove());
+ fbi.fifo.add(pci.fifo.remove());
}
/* if we're above the HWM as a result, stall */
if (FBIINIT0_STALL_PCIE_FOR_HWM(reg[fbiInit0].u) &&
- fifo_items(&fbi.fifo) >= 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(reg[fbiInit0].u))
+ fbi.fifo.items() >= 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(reg[fbiInit0].u))
{
if (LOG_FIFO) logerror("VOODOO.%d.FIFO:voodoo_w hit memory FIFO HWM -- stalling\n", index);
stall_cpu(this, STALLED_UNTIL_FIFO_LWM, machine().time());
@@ -3761,7 +3788,7 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
/* if we're at the LWM for the PCI FIFO, stall */
if (FBIINIT0_STALL_PCIE_FOR_HWM(reg[fbiInit0].u) &&
- fifo_space(&pci.fifo) <= 2 * FBIINIT0_PCI_FIFO_LWM(reg[fbiInit0].u))
+ pci.fifo.space() <= 2 * FBIINIT0_PCI_FIFO_LWM(reg[fbiInit0].u))
{
if (LOG_FIFO) logerror("VOODOO.%d.FIFO:voodoo_w hit PCI FIFO free LWM -- stalling\n", index);
stall_cpu(this, STALLED_UNTIL_FIFO_LWM, machine().time());
@@ -3785,7 +3812,7 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
*
*************************************/
-static uint32_t register_r(voodoo_device *vd, offs_t offset)
+uint32_t voodoo_device::register_r(voodoo_device *vd, offs_t offset)
{
int regnum = offset & 0xff;
uint32_t result;
@@ -3796,7 +3823,7 @@ static uint32_t register_r(voodoo_device *vd, offs_t offset)
/* first make sure this register is readable */
if (!(vd->regaccess[regnum] & REGISTER_READ))
{
- vd->device->logerror("VOODOO.%d.ERROR:Invalid attempt to read %s\n", vd->index, regnum < 225 ? vd->regnames[regnum] : "unknown register");
+ vd->logerror("VOODOO.%d.ERROR:Invalid attempt to read %s\n", vd->index, regnum < 225 ? vd->regnames[regnum] : "unknown register");
return 0xffffffff;
}
@@ -3812,11 +3839,11 @@ static uint32_t register_r(voodoo_device *vd, offs_t offset)
result = 0;
/* bits 5:0 are the PCI FIFO free space */
- if (fifo_empty(&vd->pci.fifo))
+ if (vd->pci.fifo.empty())
result |= 0x3f << 0;
else
{
- int temp = fifo_space(&vd->pci.fifo)/2;
+ int temp = vd->pci.fifo.space()/2;
if (temp > 0x3f)
temp = 0x3f;
result |= temp << 0;
@@ -3844,11 +3871,11 @@ static uint32_t register_r(voodoo_device *vd, offs_t offset)
result |= vd->fbi.frontbuf << 10;
/* bits 27:12 indicate memory FIFO freespace */
- if (!FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u) || fifo_empty(&vd->fbi.fifo))
+ if (!FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u) || vd->fbi.fifo.empty())
result |= 0xffff << 12;
else
{
- int temp = fifo_space(&vd->fbi.fifo)/2;
+ int temp = vd->fbi.fifo.space()/2;
if (temp > 0xffff)
temp = 0xffff;
result |= temp << 12;
@@ -3929,7 +3956,7 @@ static uint32_t register_r(voodoo_device *vd, offs_t offset)
case fbiZfuncFail:
case fbiAfuncFail:
case fbiPixelsOut:
- update_statistics(vd, true);
+ vd->update_statistics(true);
case fbiTrianglesOut:
result = vd->reg[regnum].u & 0xffffff;
break;
@@ -3952,7 +3979,7 @@ static uint32_t register_r(voodoo_device *vd, offs_t offset)
logit = false;
if (logit)
- vd->device->logerror("VOODOO.%d.REG:%s read = %08X\n", vd->index, vd->regnames[regnum], result);
+ vd->logerror("VOODOO.%d.REG:%s read = %08X\n", vd->index, vd->regnames[regnum], result);
}
return result;
@@ -4023,7 +4050,7 @@ static uint32_t lfb_r(voodoo_device *vd, offs_t offset, bool lfb_3d)
/* advance pointers to the proper row */
bufoffs = scry * vd->fbi.rowpixels + x;
if (bufoffs >= bufmax) {
- vd->device->logerror("LFB_R: Buffer offset out of bounds x=%i y=%i lfb_3d=%i offset=%08X bufoffs=%08X\n", x, y, lfb_3d, offset, (uint32_t) bufoffs);
+ vd->logerror("LFB_R: Buffer offset out of bounds x=%i y=%i lfb_3d=%i offset=%08X bufoffs=%08X\n", x, y, lfb_3d, offset, (uint32_t) bufoffs);
return 0xffffffff;
}
@@ -4041,7 +4068,7 @@ static uint32_t lfb_r(voodoo_device *vd, offs_t offset, bool lfb_3d)
if (LFBMODE_BYTE_SWIZZLE_READS(vd->reg[lfbMode].u))
data = flipendian_int32(data);
- if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:read (%d,%d) = %08X\n", vd->index, x, y, data);
+ if (LOG_LFB) vd->logerror("VOODOO.%d.LFB:read (%d,%d) = %08X\n", vd->index, x, y, data);
return data;
}
@@ -4133,7 +4160,7 @@ READ32_MEMBER( voodoo_banshee_device::banshee_agp_r )
}
if (LOG_REGISTERS)
- logerror("%s:banshee_r(AGP:%s)\n", device->machine().describe_context(), banshee_agp_reg_name[offset]);
+ logerror("%s:banshee_r(AGP:%s)\n", machine().describe_context(), banshee_agp_reg_name[offset]);
return result;
}
@@ -4936,14 +4963,12 @@ void voodoo_device::common_start_voodoo(uint8_t type)
assert(m_cputag != nullptr);
assert(m_fbmem > 0);
- /* store a pointer back to the device */
- device = this;
vd_type = type;
/* copy config data */
freq = clock();
- device->m_vblank.resolve();
- device->m_stall.resolve();
+ m_vblank.resolve();
+ m_stall.resolve();
/* create a multiprocessor work queue */
poly = poly_alloc(machine(), 64, sizeof(poly_extra_data), 0);
@@ -5071,7 +5096,7 @@ void voodoo_device::common_start_voodoo(uint8_t type)
init_fbi(this, &fbi, fbmem, m_fbmem << 20);
/* build shared TMU tables */
- init_tmu_shared(&tmushare);
+ tmushare.init();
/* set up the TMUs */
init_tmu(this, &tmu[0], &reg[0x100], tmumem[0], tmumem0 << 20);
@@ -5103,7 +5128,7 @@ void voodoo_device::common_start_voodoo(uint8_t type)
banshee.io[io_tmuGbeInit] = 0x00000bfb;
/* do a soft reset to reset everything else */
- soft_reset(this);
+ soft_reset();
/* register for save states */
init_save_state(this);
@@ -5184,7 +5209,7 @@ int32_t voodoo_device::fastfill(voodoo_device *vd)
poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(vd->poly);
int count = std::min(ey - y, int(ARRAY_LENGTH(extents)));
- extra->device= vd;
+ extra->device = vd;
memcpy(extra->dither, dithermatrix, sizeof(extra->dither));
pixels += poly_render_triangle_custom(vd->poly, drawbuf, global_cliprect, raster_fastfill, y, count, extents);
@@ -5306,7 +5331,7 @@ int32_t voodoo_device::triangle(voodoo_device *vd)
g_profiler.stop();
/* 1 pixel per clock, plus some setup time */
- if (LOG_REGISTERS) vd->device->logerror("cycles = %d\n", TRIANGLE_SETUP_CLOCKS + pixels);
+ if (LOG_REGISTERS) vd->logerror("cycles = %d\n", TRIANGLE_SETUP_CLOCKS + pixels);
return TRIANGLE_SETUP_CLOCKS + pixels;
}
@@ -5318,7 +5343,7 @@ int32_t voodoo_device::triangle(voodoo_device *vd)
int32_t voodoo_device::begin_triangle(voodoo_device *vd)
{
- setup_vertex *sv = &vd->fbi.svert[2];
+ fbi_state::setup_vertex *sv = &vd->fbi.svert[2];
/* extract all the data from registers */
sv->x = vd->reg[sVx].f;
@@ -5350,7 +5375,7 @@ int32_t voodoo_device::begin_triangle(voodoo_device *vd)
int32_t voodoo_device::draw_triangle(voodoo_device *vd)
{
- setup_vertex *sv = &vd->fbi.svert[2];
+ fbi_state::setup_vertex *sv = &vd->fbi.svert[2];
int cycles = 0;
/* for strip mode, shuffle vertex 1 down to 0 */
@@ -5577,7 +5602,7 @@ int32_t voodoo_device::triangle_create_work_item(voodoo_device* vd, uint16_t *dr
extra->ds0dy = vd->tmu[0].dsdy;
extra->dt0dy = vd->tmu[0].dtdy;
extra->dw0dy = vd->tmu[0].dwdy;
- extra->lodbase0 = prepare_tmu(&vd->tmu[0]);
+ extra->lodbase0 = vd->tmu[0].prepare();
vd->stats.texture_mode[TEXMODE_FORMAT(vd->tmu[0].reg[textureMode].u)]++;
/* fill in texture 1 parameters */
@@ -5592,7 +5617,7 @@ int32_t voodoo_device::triangle_create_work_item(voodoo_device* vd, uint16_t *dr
extra->ds1dy = vd->tmu[1].dsdy;
extra->dt1dy = vd->tmu[1].dtdy;
extra->dw1dy = vd->tmu[1].dwdy;
- extra->lodbase1 = prepare_tmu(&vd->tmu[1]);
+ extra->lodbase1 = vd->tmu[1].prepare();
vd->stats.texture_mode[TEXMODE_FORMAT(vd->tmu[1].reg[textureMode].u)]++;
}
}
@@ -5613,10 +5638,10 @@ int32_t voodoo_device::triangle_create_work_item(voodoo_device* vd, uint16_t *dr
hash table
-------------------------------------------------*/
-raster_info *voodoo_device::add_rasterizer(voodoo_device *vd, const raster_info *cinfo)
+voodoo_device::raster_info *voodoo_device::add_rasterizer(voodoo_device *vd, const raster_info *cinfo)
{
raster_info *info = &vd->rasterizer[vd->next_rasterizer++];
- int hash = compute_raster_hash(cinfo);
+ int hash = cinfo->compute_hash();
assert_always(vd->next_rasterizer <= MAX_RASTERIZERS, "Out of space for new rasterizers!");
@@ -5648,7 +5673,7 @@ raster_info *voodoo_device::add_rasterizer(voodoo_device *vd, const raster_info
it, creating a new one if necessary
-------------------------------------------------*/
-raster_info *voodoo_device::find_rasterizer(voodoo_device *vd, int texcount)
+voodoo_device::raster_info *voodoo_device::find_rasterizer(voodoo_device *vd, int texcount)
{
raster_info *info, *prev = nullptr;
raster_info curinfo;
@@ -5663,7 +5688,7 @@ raster_info *voodoo_device::find_rasterizer(voodoo_device *vd, int texcount)
curinfo.eff_tex_mode_1 = (texcount >= 2) ? normalize_tex_mode(vd->tmu[1].reg[textureMode].u) : 0xffffffff;
/* compute the hash */
- hash = compute_raster_hash(&curinfo);
+ hash = curinfo.compute_hash();
/* find the appropriate hash entry */
for (info = vd->raster_hash[hash]; info; prev = info, info = info->next)
@@ -5746,15 +5771,15 @@ void voodoo_device::dump_rasterizer_stats(voodoo_device *vd)
}
}
-voodoo_device::voodoo_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_fbmem(0),
- m_tmumem0(0),
- m_tmumem1(0),
- m_screen(nullptr),
- m_cputag(nullptr),
- m_vblank(*this),
- m_stall(*this)
+voodoo_device::voodoo_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , m_fbmem(0)
+ , m_tmumem0(0)
+ , m_tmumem1(0)
+ , m_screen(nullptr)
+ , m_cputag(nullptr)
+ , m_vblank(*this)
+ , m_stall(*this)
{
}
@@ -5768,7 +5793,7 @@ voodoo_device::~voodoo_device()
void voodoo_device::device_reset()
{
- soft_reset(this);
+ soft_reset();
}
//-------------------------------------------------
@@ -5783,10 +5808,10 @@ void voodoo_device::device_stop()
}
-const device_type VOODOO_1 = device_creator<voodoo_1_device>;
+DEFINE_DEVICE_TYPE(VOODOO_1, voodoo_1_device, "voodoo_1", "3dfx Voodoo Graphics")
voodoo_1_device::voodoo_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : voodoo_device(mconfig, VOODOO_1, "3dfx Voodoo Graphics", tag, owner, clock, "voodoo_1", __FILE__)
+ : voodoo_device(mconfig, VOODOO_1, tag, owner, clock)
{
}
@@ -5800,10 +5825,10 @@ void voodoo_1_device::device_start()
}
-const device_type VOODOO_2 = device_creator<voodoo_2_device>;
+DEFINE_DEVICE_TYPE(VOODOO_2, voodoo_2_device, "voodoo_2", "3dfx Voodoo 2")
voodoo_2_device::voodoo_2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : voodoo_device(mconfig, VOODOO_2, "3dfx Voodoo 2", tag, owner, clock, "voodoo_2", __FILE__)
+ : voodoo_device(mconfig, VOODOO_2, tag, owner, clock)
{
}
@@ -5817,15 +5842,15 @@ void voodoo_2_device::device_start()
}
-const device_type VOODOO_BANSHEE = device_creator<voodoo_banshee_device>;
+DEFINE_DEVICE_TYPE(VOODOO_BANSHEE, voodoo_banshee_device, "voodoo_banshee", "3dfx Voodoo Banshee")
voodoo_banshee_device::voodoo_banshee_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : voodoo_device(mconfig, VOODOO_BANSHEE, "3dfx Voodoo Banshee", tag, owner, clock, "voodoo_banshee", __FILE__)
+ : voodoo_banshee_device(mconfig, VOODOO_BANSHEE, tag, owner, clock)
{
}
-voodoo_banshee_device::voodoo_banshee_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
- : voodoo_device(mconfig, type, name, tag, owner, clock, shortname, source)
+voodoo_banshee_device::voodoo_banshee_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : voodoo_device(mconfig, type, tag, owner, clock)
{
}
@@ -5839,10 +5864,10 @@ void voodoo_banshee_device::device_start()
}
-const device_type VOODOO_3 = device_creator<voodoo_3_device>;
+DEFINE_DEVICE_TYPE(VOODOO_3, voodoo_3_device, "voodoo_3", "3dfx Voodoo 3")
voodoo_3_device::voodoo_3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : voodoo_banshee_device(mconfig, VOODOO_3, "3dfx Voodoo 3", tag, owner, clock, "voodoo_3", __FILE__)
+ : voodoo_banshee_device(mconfig, VOODOO_3, tag, owner, clock)
{
}
diff --git a/src/devices/video/voodoo.h b/src/devices/video/voodoo.h
index edce2e21adf..9d26986f4a0 100644
--- a/src/devices/video/voodoo.h
+++ b/src/devices/video/voodoo.h
@@ -8,14 +8,16 @@
***************************************************************************/
-#ifndef __VOODOO_H__
-#define __VOODOO_H__
-
-#include "video/polylgcy.h"
+#ifndef MAME_VIDEO_VOODOO_H
+#define MAME_VIDEO_VOODOO_H
#pragma once
+#include "video/polylgcy.h"
+#include "video/rgbutil.h"
+
+
/*************************************
*
* Misc. constants
@@ -1362,10 +1364,6 @@ static const uint8_t dither_matrix_2x2[16] =
-struct voodoo_state;
-struct poly_extra_data;
-class voodoo_device;
-
struct rgba
{
#ifdef LSB_FIRST
@@ -1386,317 +1384,6 @@ union voodoo_reg
-struct voodoo_stats
-{
- uint8_t lastkey; /* last key state */
- uint8_t display; /* display stats? */
- int32_t swaps; /* total swaps */
- int32_t stalls; /* total stalls */
- int32_t total_triangles; /* total triangles */
- int32_t total_pixels_in; /* total pixels in */
- int32_t total_pixels_out; /* total pixels out */
- int32_t total_chroma_fail; /* total chroma fail */
- int32_t total_zfunc_fail; /* total z func fail */
- int32_t total_afunc_fail; /* total a func fail */
- int32_t total_clipped; /* total clipped */
- int32_t total_stippled; /* total stippled */
- int32_t lfb_writes; /* LFB writes */
- int32_t lfb_reads; /* LFB reads */
- int32_t reg_writes; /* register writes */
- int32_t reg_reads; /* register reads */
- int32_t tex_writes; /* texture writes */
- int32_t texture_mode[16]; /* 16 different texture modes */
- uint8_t render_override; /* render override */
- char buffer[1024]; /* string */
-};
-
-
-/* note that this structure is an even 64 bytes long */
-struct stats_block
-{
- int32_t pixels_in; /* pixels in statistic */
- int32_t pixels_out; /* pixels out statistic */
- int32_t chroma_fail; /* chroma test fail statistic */
- int32_t zfunc_fail; /* z function test fail statistic */
- int32_t afunc_fail; /* alpha function test fail statistic */
- int32_t clip_fail; /* clipping fail statistic */
- int32_t stipple_count; /* stipple statistic */
- int32_t filler[64/4 - 7]; /* pad this structure to 64 bytes */
-};
-
-
-struct fifo_state
-{
- uint32_t * base; /* base of the FIFO */
- int32_t size; /* size of the FIFO */
- int32_t in; /* input pointer */
- int32_t out; /* output pointer */
-};
-
-
-struct cmdfifo_info
-{
- uint8_t enable; /* enabled? */
- uint8_t count_holes; /* count holes? */
- uint32_t base; /* base address in framebuffer RAM */
- uint32_t end; /* end address in framebuffer RAM */
- uint32_t rdptr; /* current read pointer */
- uint32_t amin; /* minimum address */
- uint32_t amax; /* maximum address */
- uint32_t depth; /* current depth */
- uint32_t holes; /* number of holes */
-};
-
-
-struct pci_state
-{
- fifo_state fifo; /* PCI FIFO */
- uint32_t init_enable; /* initEnable value */
- uint8_t stall_state; /* state of the system if we're stalled */
- uint8_t op_pending; /* true if an operation is pending */
- attotime op_end_time; /* time when the pending operation ends */
- emu_timer * continue_timer; /* timer to use to continue processing */
- uint32_t fifo_mem[64*2]; /* memory backing the PCI FIFO */
-};
-
-
-struct ncc_table
-{
- uint8_t dirty; /* is the texel lookup dirty? */
- voodoo_reg * reg; /* pointer to our registers */
- int32_t ir[4], ig[4], ib[4]; /* I values for R,G,B */
- int32_t qr[4], qg[4], qb[4]; /* Q values for R,G,B */
- int32_t y[16]; /* Y values */
- rgb_t * palette; /* pointer to associated RGB palette */
- rgb_t * palettea; /* pointer to associated ARGB palette */
- rgb_t texel[256]; /* texel lookup */
-};
-
-
-struct tmu_state
-{
- uint8_t * ram; /* pointer to our RAM */
- uint32_t mask; /* mask to apply to pointers */
- voodoo_reg * reg; /* pointer to our register base */
- uint32_t regdirty; /* true if the LOD/mode/base registers have changed */
-
- uint32_t texaddr_mask; /* mask for texture address */
- uint8_t texaddr_shift; /* shift for texture address */
-
- int64_t starts, startt; /* starting S,T (14.18) */
- int64_t startw; /* starting W (2.30) */
- int64_t dsdx, dtdx; /* delta S,T per X */
- int64_t dwdx; /* delta W per X */
- int64_t dsdy, dtdy; /* delta S,T per Y */
- int64_t dwdy; /* delta W per Y */
-
- int32_t lodmin, lodmax; /* min, max LOD values */
- int32_t lodbias; /* LOD bias */
- uint32_t lodmask; /* mask of available LODs */
- uint32_t lodoffset[9]; /* offset of texture base for each LOD */
- int32_t detailmax; /* detail clamp */
- int32_t detailbias; /* detail bias */
- uint8_t detailscale; /* detail scale */
-
- uint32_t wmask; /* mask for the current texture width */
- uint32_t hmask; /* mask for the current texture height */
-
- uint32_t bilinear_mask; /* mask for bilinear resolution (0xf0 for V1, 0xff for V2) */
-
- ncc_table ncc[2]; /* two NCC tables */
-
- rgb_t * lookup; /* currently selected lookup */
- rgb_t * texel[16]; /* texel lookups for each format */
-
- rgb_t palette[256]; /* palette lookup table */
- rgb_t palettea[256]; /* palette+alpha lookup table */
-};
-
-
-struct tmu_shared_state
-{
- rgb_t rgb332[256]; /* RGB 3-3-2 lookup table */
- rgb_t alpha8[256]; /* alpha 8-bit lookup table */
- rgb_t int8[256]; /* intensity 8-bit lookup table */
- rgb_t ai44[256]; /* alpha, intensity 4-4 lookup table */
-
- rgb_t rgb565[65536]; /* RGB 5-6-5 lookup table */
- rgb_t argb1555[65536]; /* ARGB 1-5-5-5 lookup table */
- rgb_t argb4444[65536]; /* ARGB 4-4-4-4 lookup table */
-};
-
-
-struct setup_vertex
-{
- float x, y; /* X, Y coordinates */
- float z, wb; /* Z and broadcast W values */
- float r, g, b, a; /* A, R, G, B values */
- float s0, t0, w0; /* W, S, T for TMU 0 */
- float s1, t1, w1; /* W, S, T for TMU 1 */
-};
-
-
-struct fbi_state
-{
- uint8_t * ram; /* pointer to frame buffer RAM */
- uint32_t mask; /* mask to apply to pointers */
- uint32_t rgboffs[3]; /* word offset to 3 RGB buffers */
- uint32_t auxoffs; /* word offset to 1 aux buffer */
-
- uint8_t frontbuf; /* front buffer index */
- uint8_t backbuf; /* back buffer index */
- uint8_t swaps_pending; /* number of pending swaps */
- uint8_t video_changed; /* did the frontbuffer video change? */
-
- uint32_t yorigin; /* Y origin subtract value */
- uint32_t lfb_base; /* base of LFB in memory */
- uint8_t lfb_stride; /* stride of LFB accesses in bits */
-
- uint32_t width; /* width of current frame buffer */
- uint32_t height; /* height of current frame buffer */
- uint32_t xoffs; /* horizontal offset (back porch) */
- uint32_t yoffs; /* vertical offset (back porch) */
- uint32_t vsyncscan; /* vertical sync scanline */
- uint32_t rowpixels; /* pixels per row */
- uint32_t tile_width; /* width of video tiles */
- uint32_t tile_height; /* height of video tiles */
- uint32_t x_tiles; /* number of tiles in the X direction */
-
- emu_timer * vblank_timer; /* VBLANK timer */
- uint8_t vblank; /* VBLANK state */
- uint8_t vblank_count; /* number of VBLANKs since last swap */
- uint8_t vblank_swap_pending; /* a swap is pending, waiting for a vblank */
- uint8_t vblank_swap; /* swap when we hit this count */
- uint8_t vblank_dont_swap; /* don't actually swap when we hit this point */
-
- /* triangle setup info */
- uint8_t cheating_allowed; /* allow cheating? */
- int32_t sign; /* triangle sign */
- int16_t ax, ay; /* vertex A x,y (12.4) */
- int16_t bx, by; /* vertex B x,y (12.4) */
- int16_t cx, cy; /* vertex C x,y (12.4) */
- int32_t startr, startg, startb, starta; /* starting R,G,B,A (12.12) */
- int32_t startz; /* starting Z (20.12) */
- int64_t startw; /* starting W (16.32) */
- int32_t drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */
- int32_t dzdx; /* delta Z per X */
- int64_t dwdx; /* delta W per X */
- int32_t drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */
- int32_t dzdy; /* delta Z per Y */
- int64_t dwdy; /* delta W per Y */
-
- stats_block lfb_stats; /* LFB-access statistics */
-
- uint8_t sverts; /* number of vertices ready */
- setup_vertex svert[3]; /* 3 setup vertices */
-
- fifo_state fifo; /* framebuffer memory fifo */
- cmdfifo_info cmdfifo[2]; /* command FIFOs */
-
- uint8_t fogblend[64]; /* 64-entry fog table */
- uint8_t fogdelta[64]; /* 64-entry fog table */
- uint8_t fogdelta_mask; /* mask for for delta (0xff for V1, 0xfc for V2) */
-
- rgb_t pen[65536]; /* mapping from pixels to pens */
- rgb_t clut[512]; /* clut gamma data */
- uint8_t clut_dirty; /* do we need to recompute? */
-};
-
-
-struct dac_state
-{
- uint8_t reg[8]; /* 8 registers */
- uint8_t read_result; /* pending read result */
-};
-
-
-struct raster_info
-{
- raster_info * next; /* pointer to next entry with the same hash */
- poly_draw_scanline_func callback; /* callback pointer */
- bool is_generic; /* true if this is one of the generic rasterizers */
- uint8_t display; /* display index */
- uint32_t hits; /* how many hits (pixels) we've used this for */
- uint32_t polys; /* how many polys we've used this for */
- uint32_t eff_color_path; /* effective fbzColorPath value */
- uint32_t eff_alpha_mode; /* effective alphaMode value */
- uint32_t eff_fog_mode; /* effective fogMode value */
- uint32_t eff_fbz_mode; /* effective fbzMode value */
- uint32_t eff_tex_mode_0; /* effective textureMode value for TMU #0 */
- uint32_t eff_tex_mode_1; /* effective textureMode value for TMU #1 */
- uint32_t hash;
-};
-
-
-struct poly_extra_data
-{
- voodoo_device * device;
- raster_info * info; /* pointer to rasterizer information */
-
- int16_t ax, ay; /* vertex A x,y (12.4) */
- int32_t startr, startg, startb, starta; /* starting R,G,B,A (12.12) */
- int32_t startz; /* starting Z (20.12) */
- int64_t startw; /* starting W (16.32) */
- int32_t drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */
- int32_t dzdx; /* delta Z per X */
- int64_t dwdx; /* delta W per X */
- int32_t drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */
- int32_t dzdy; /* delta Z per Y */
- int64_t dwdy; /* delta W per Y */
-
- int64_t starts0, startt0; /* starting S,T (14.18) */
- int64_t startw0; /* starting W (2.30) */
- int64_t ds0dx, dt0dx; /* delta S,T per X */
- int64_t dw0dx; /* delta W per X */
- int64_t ds0dy, dt0dy; /* delta S,T per Y */
- int64_t dw0dy; /* delta W per Y */
- int32_t lodbase0; /* used during rasterization */
-
- int64_t starts1, startt1; /* starting S,T (14.18) */
- int64_t startw1; /* starting W (2.30) */
- int64_t ds1dx, dt1dx; /* delta S,T per X */
- int64_t dw1dx; /* delta W per X */
- int64_t ds1dy, dt1dy; /* delta S,T per Y */
- int64_t dw1dy; /* delta W per Y */
- int32_t lodbase1; /* used during rasterization */
-
- uint16_t dither[16]; /* dither matrix, for fastfill */
-};
-
-
-struct banshee_info
-{
- uint32_t io[0x40]; /* I/O registers */
- uint32_t agp[0x80]; /* AGP registers */
- uint8_t vga[0x20]; /* VGA registers */
- uint8_t crtc[0x27]; /* VGA CRTC registers */
- uint8_t seq[0x05]; /* VGA sequencer registers */
- uint8_t gc[0x05]; /* VGA graphics controller registers */
- uint8_t att[0x15]; /* VGA attribute registers */
- uint8_t attff; /* VGA attribute flip-flop */
-
- uint32_t blt_regs[0x20]; /* 2D Blitter registers */
- uint32_t blt_dst_base;
- uint32_t blt_dst_x;
- uint32_t blt_dst_y;
- uint32_t blt_dst_width;
- uint32_t blt_dst_height;
- uint32_t blt_dst_stride;
- uint32_t blt_dst_bpp;
- uint32_t blt_cmd;
- uint32_t blt_src_base;
- uint32_t blt_src_x;
- uint32_t blt_src_y;
- uint32_t blt_src_width;
- uint32_t blt_src_height;
- uint32_t blt_src_stride;
- uint32_t blt_src_bpp;
-};
-
-
-typedef voodoo_reg rgb_union;
-
-
@@ -1746,23 +1433,19 @@ enum
FUNCTION PROTOTYPES
***************************************************************************/
-struct stats_block;
-
/* ----- device interface ----- */
class voodoo_device : public device_t
{
public:
- voodoo_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
~voodoo_device();
-
static void static_set_fbmem(device_t &device, int value) { downcast<voodoo_device &>(device).m_fbmem = value; }
static void static_set_tmumem(device_t &device, int value1, int value2) { downcast<voodoo_device &>(device).m_tmumem0 = value1; downcast<voodoo_device &>(device).m_tmumem1 = value2; }
static void static_set_screen_tag(device_t &device, const char *tag) { downcast<voodoo_device &>(device).m_screen = tag; }
static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<voodoo_device &>(device).m_cputag = tag; }
- template<class _Object> static devcb_base &static_set_vblank_callback(device_t &device, _Object object) { return downcast<voodoo_device &>(device).m_vblank.set_callback(object); }
- template<class _Object> static devcb_base &static_set_stall_callback(device_t &device, _Object object) { return downcast<voodoo_device &>(device).m_stall.set_callback(object); }
+ template <class Object> static devcb_base &static_set_vblank_callback(device_t &device, Object &&cb) { return downcast<voodoo_device &>(device).m_vblank.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &static_set_stall_callback(device_t &device, Object &&cb) { return downcast<voodoo_device &>(device).m_stall.set_callback(std::forward<Object>(cb)); }
DECLARE_READ32_MEMBER( voodoo_r );
DECLARE_WRITE32_MEMBER( voodoo_w );
@@ -1789,6 +1472,314 @@ public:
int voodoo_is_stalled();
void voodoo_set_init_enable(uint32_t newval);
+protected:
+ voodoo_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
+ // device-level overrides
+ virtual void device_stop() override;
+ virtual void device_reset() override;
+
+
+ struct voodoo_stats
+ {
+ uint8_t lastkey; /* last key state */
+ uint8_t display; /* display stats? */
+ int32_t swaps; /* total swaps */
+ int32_t stalls; /* total stalls */
+ int32_t total_triangles; /* total triangles */
+ int32_t total_pixels_in; /* total pixels in */
+ int32_t total_pixels_out; /* total pixels out */
+ int32_t total_chroma_fail; /* total chroma fail */
+ int32_t total_zfunc_fail; /* total z func fail */
+ int32_t total_afunc_fail; /* total a func fail */
+ int32_t total_clipped; /* total clipped */
+ int32_t total_stippled; /* total stippled */
+ int32_t lfb_writes; /* LFB writes */
+ int32_t lfb_reads; /* LFB reads */
+ int32_t reg_writes; /* register writes */
+ int32_t reg_reads; /* register reads */
+ int32_t tex_writes; /* texture writes */
+ int32_t texture_mode[16]; /* 16 different texture modes */
+ uint8_t render_override; /* render override */
+ char buffer[1024]; /* string */
+ };
+
+
+ /* note that this structure is an even 64 bytes long */
+ struct stats_block
+ {
+ int32_t pixels_in; /* pixels in statistic */
+ int32_t pixels_out; /* pixels out statistic */
+ int32_t chroma_fail; /* chroma test fail statistic */
+ int32_t zfunc_fail; /* z function test fail statistic */
+ int32_t afunc_fail; /* alpha function test fail statistic */
+ int32_t clip_fail; /* clipping fail statistic */
+ int32_t stipple_count; /* stipple statistic */
+ int32_t filler[64/4 - 7]; /* pad this structure to 64 bytes */
+ };
+
+
+ struct fifo_state
+ {
+ void reset() { in = out = 0; }
+ void add(uint32_t data);
+ uint32_t remove();
+ uint32_t peek() { return base[out]; }
+ bool empty() const { return in == out; }
+ bool full() const { return ((in + 1) == out) || ((in == (size - 1)) && (out == 0)); }
+ int32_t items() const;
+ int32_t space() const { return size - 1 - items(); }
+
+ uint32_t * base; /* base of the FIFO */
+ int32_t size; /* size of the FIFO */
+ int32_t in; /* input pointer */
+ int32_t out; /* output pointer */
+ };
+
+
+ struct cmdfifo_info
+ {
+ uint8_t enable; /* enabled? */
+ uint8_t count_holes; /* count holes? */
+ uint32_t base; /* base address in framebuffer RAM */
+ uint32_t end; /* end address in framebuffer RAM */
+ uint32_t rdptr; /* current read pointer */
+ uint32_t amin; /* minimum address */
+ uint32_t amax; /* maximum address */
+ uint32_t depth; /* current depth */
+ uint32_t holes; /* number of holes */
+ };
+
+
+ struct pci_state
+ {
+ fifo_state fifo; /* PCI FIFO */
+ uint32_t init_enable; /* initEnable value */
+ uint8_t stall_state; /* state of the system if we're stalled */
+ uint8_t op_pending; /* true if an operation is pending */
+ attotime op_end_time; /* time when the pending operation ends */
+ emu_timer * continue_timer; /* timer to use to continue processing */
+ uint32_t fifo_mem[64*2]; /* memory backing the PCI FIFO */
+ };
+
+
+ struct tmu_state
+ {
+ void recompute_texture_params();
+ int32_t prepare();
+ rgbaint_t genTexture(int32_t x, const uint8_t *dither4, const uint32_t TEXMODE, rgb_t *LOOKUP, int32_t LODBASE, int64_t ITERS, int64_t ITERT, int64_t ITERW, int32_t &lod);
+ rgbaint_t combineTexture(const uint32_t TEXMODE, rgbaint_t c_local, rgbaint_t c_other, int32_t lod);
+
+ struct ncc_table
+ {
+ void write(offs_t regnum, uint32_t data);
+ void update();
+
+ uint8_t dirty; /* is the texel lookup dirty? */
+ voodoo_reg * reg; /* pointer to our registers */
+ int32_t ir[4], ig[4], ib[4]; /* I values for R,G,B */
+ int32_t qr[4], qg[4], qb[4]; /* Q values for R,G,B */
+ int32_t y[16]; /* Y values */
+ rgb_t * palette; /* pointer to associated RGB palette */
+ rgb_t * palettea; /* pointer to associated ARGB palette */
+ rgb_t texel[256]; /* texel lookup */
+ };
+
+ uint8_t * ram; /* pointer to our RAM */
+ uint32_t mask; /* mask to apply to pointers */
+ voodoo_reg * reg; /* pointer to our register base */
+ uint32_t regdirty; /* true if the LOD/mode/base registers have changed */
+
+ uint32_t texaddr_mask; /* mask for texture address */
+ uint8_t texaddr_shift; /* shift for texture address */
+
+ int64_t starts, startt; /* starting S,T (14.18) */
+ int64_t startw; /* starting W (2.30) */
+ int64_t dsdx, dtdx; /* delta S,T per X */
+ int64_t dwdx; /* delta W per X */
+ int64_t dsdy, dtdy; /* delta S,T per Y */
+ int64_t dwdy; /* delta W per Y */
+
+ int32_t lodmin, lodmax; /* min, max LOD values */
+ int32_t lodbias; /* LOD bias */
+ uint32_t lodmask; /* mask of available LODs */
+ uint32_t lodoffset[9]; /* offset of texture base for each LOD */
+ int32_t detailmax; /* detail clamp */
+ int32_t detailbias; /* detail bias */
+ uint8_t detailscale; /* detail scale */
+
+ uint32_t wmask; /* mask for the current texture width */
+ uint32_t hmask; /* mask for the current texture height */
+
+ uint32_t bilinear_mask; /* mask for bilinear resolution (0xf0 for V1, 0xff for V2) */
+
+ ncc_table ncc[2]; /* two NCC tables */
+
+ rgb_t * lookup; /* currently selected lookup */
+ rgb_t * texel[16]; /* texel lookups for each format */
+
+ rgb_t palette[256]; /* palette lookup table */
+ rgb_t palettea[256]; /* palette+alpha lookup table */
+ };
+
+
+ struct tmu_shared_state
+ {
+ void init();
+
+ rgb_t rgb332[256]; /* RGB 3-3-2 lookup table */
+ rgb_t alpha8[256]; /* alpha 8-bit lookup table */
+ rgb_t int8[256]; /* intensity 8-bit lookup table */
+ rgb_t ai44[256]; /* alpha, intensity 4-4 lookup table */
+
+ rgb_t rgb565[65536]; /* RGB 5-6-5 lookup table */
+ rgb_t argb1555[65536]; /* ARGB 1-5-5-5 lookup table */
+ rgb_t argb4444[65536]; /* ARGB 4-4-4-4 lookup table */
+ };
+
+
+ struct fbi_state
+ {
+ struct setup_vertex
+ {
+ float x, y; /* X, Y coordinates */
+ float z, wb; /* Z and broadcast W values */
+ float r, g, b, a; /* A, R, G, B values */
+ float s0, t0, w0; /* W, S, T for TMU 0 */
+ float s1, t1, w1; /* W, S, T for TMU 1 */
+ };
+
+ uint8_t * ram; /* pointer to frame buffer RAM */
+ uint32_t mask; /* mask to apply to pointers */
+ uint32_t rgboffs[3]; /* word offset to 3 RGB buffers */
+ uint32_t auxoffs; /* word offset to 1 aux buffer */
+
+ uint8_t frontbuf; /* front buffer index */
+ uint8_t backbuf; /* back buffer index */
+ uint8_t swaps_pending; /* number of pending swaps */
+ uint8_t video_changed; /* did the frontbuffer video change? */
+
+ uint32_t yorigin; /* Y origin subtract value */
+ uint32_t lfb_base; /* base of LFB in memory */
+ uint8_t lfb_stride; /* stride of LFB accesses in bits */
+
+ uint32_t width; /* width of current frame buffer */
+ uint32_t height; /* height of current frame buffer */
+ uint32_t xoffs; /* horizontal offset (back porch) */
+ uint32_t yoffs; /* vertical offset (back porch) */
+ uint32_t vsyncscan; /* vertical sync scanline */
+ uint32_t rowpixels; /* pixels per row */
+ uint32_t tile_width; /* width of video tiles */
+ uint32_t tile_height; /* height of video tiles */
+ uint32_t x_tiles; /* number of tiles in the X direction */
+
+ emu_timer * vblank_timer; /* VBLANK timer */
+ uint8_t vblank; /* VBLANK state */
+ uint8_t vblank_count; /* number of VBLANKs since last swap */
+ uint8_t vblank_swap_pending; /* a swap is pending, waiting for a vblank */
+ uint8_t vblank_swap; /* swap when we hit this count */
+ uint8_t vblank_dont_swap; /* don't actually swap when we hit this point */
+
+ /* triangle setup info */
+ uint8_t cheating_allowed; /* allow cheating? */
+ int32_t sign; /* triangle sign */
+ int16_t ax, ay; /* vertex A x,y (12.4) */
+ int16_t bx, by; /* vertex B x,y (12.4) */
+ int16_t cx, cy; /* vertex C x,y (12.4) */
+ int32_t startr, startg, startb, starta; /* starting R,G,B,A (12.12) */
+ int32_t startz; /* starting Z (20.12) */
+ int64_t startw; /* starting W (16.32) */
+ int32_t drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */
+ int32_t dzdx; /* delta Z per X */
+ int64_t dwdx; /* delta W per X */
+ int32_t drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */
+ int32_t dzdy; /* delta Z per Y */
+ int64_t dwdy; /* delta W per Y */
+
+ stats_block lfb_stats; /* LFB-access statistics */
+
+ uint8_t sverts; /* number of vertices ready */
+ setup_vertex svert[3]; /* 3 setup vertices */
+
+ fifo_state fifo; /* framebuffer memory fifo */
+ cmdfifo_info cmdfifo[2]; /* command FIFOs */
+
+ uint8_t fogblend[64]; /* 64-entry fog table */
+ uint8_t fogdelta[64]; /* 64-entry fog table */
+ uint8_t fogdelta_mask; /* mask for for delta (0xff for V1, 0xfc for V2) */
+
+ rgb_t pen[65536]; /* mapping from pixels to pens */
+ rgb_t clut[512]; /* clut gamma data */
+ uint8_t clut_dirty; /* do we need to recompute? */
+ };
+
+
+ struct dac_state
+ {
+ void data_w(uint8_t regum, uint8_t data);
+ void data_r(uint8_t regnum);
+
+ uint8_t reg[8]; /* 8 registers */
+ uint8_t read_result; /* pending read result */
+ };
+
+
+ struct raster_info
+ {
+ uint32_t compute_hash() const;
+
+ raster_info * next; /* pointer to next entry with the same hash */
+ poly_draw_scanline_func callback; /* callback pointer */
+ bool is_generic; /* true if this is one of the generic rasterizers */
+ uint8_t display; /* display index */
+ uint32_t hits; /* how many hits (pixels) we've used this for */
+ uint32_t polys; /* how many polys we've used this for */
+ uint32_t eff_color_path; /* effective fbzColorPath value */
+ uint32_t eff_alpha_mode; /* effective alphaMode value */
+ uint32_t eff_fog_mode; /* effective fogMode value */
+ uint32_t eff_fbz_mode; /* effective fbzMode value */
+ uint32_t eff_tex_mode_0; /* effective textureMode value for TMU #0 */
+ uint32_t eff_tex_mode_1; /* effective textureMode value for TMU #1 */
+ uint32_t hash;
+ };
+
+
+ struct poly_extra_data;
+
+
+ struct banshee_info
+ {
+ uint32_t io[0x40]; /* I/O registers */
+ uint32_t agp[0x80]; /* AGP registers */
+ uint8_t vga[0x20]; /* VGA registers */
+ uint8_t crtc[0x27]; /* VGA CRTC registers */
+ uint8_t seq[0x05]; /* VGA sequencer registers */
+ uint8_t gc[0x05]; /* VGA graphics controller registers */
+ uint8_t att[0x15]; /* VGA attribute registers */
+ uint8_t attff; /* VGA attribute flip-flop */
+
+ uint32_t blt_regs[0x20]; /* 2D Blitter registers */
+ uint32_t blt_dst_base;
+ uint32_t blt_dst_x;
+ uint32_t blt_dst_y;
+ uint32_t blt_dst_width;
+ uint32_t blt_dst_height;
+ uint32_t blt_dst_stride;
+ uint32_t blt_dst_bpp;
+ uint32_t blt_cmd;
+ uint32_t blt_src_base;
+ uint32_t blt_src_x;
+ uint32_t blt_src_y;
+ uint32_t blt_src_width;
+ uint32_t blt_src_height;
+ uint32_t blt_src_stride;
+ uint32_t blt_src_bpp;
+ };
+
+
+ static const raster_info predef_raster_table[];
+
+
// not all of these need to be static, review.
static void check_stalled_cpu(voodoo_device* vd, attotime current_time);
@@ -1802,7 +1793,7 @@ public:
static int32_t lfb_direct_w(voodoo_device *vd, offs_t offset, uint32_t data, uint32_t mem_mask);
static int32_t banshee_2d_w(voodoo_device *vd, offs_t offset, uint32_t data);
static void stall_cpu(voodoo_device *vd, int state, attotime current_time);
- static void soft_reset(voodoo_device *vd);
+ void soft_reset();
static void recompute_video_memory(voodoo_device *vd);
static int32_t fastfill(voodoo_device *vd);
static int32_t triangle(voodoo_device *vd);
@@ -1813,13 +1804,21 @@ public:
static raster_info *add_rasterizer(voodoo_device *vd, const raster_info *cinfo);
static raster_info *find_rasterizer(voodoo_device *vd, int texcount);
static void dump_rasterizer_stats(voodoo_device *vd);
- static void init_tmu_shared(tmu_shared_state *s);
+
+ void accumulate_statistics(const stats_block &block);
+ void update_statistics(bool accumulate);
+ void reset_counters();
+
+ static uint32_t register_r(voodoo_device *vd, offs_t offset);
static void swap_buffers(voodoo_device *vd);
+ int cmdfifo_compute_expected_depth(cmdfifo_info &f);
static uint32_t cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f);
- static int32_t cmdfifo_execute_if_ready(voodoo_device* vd, cmdfifo_info *f);
+ int32_t cmdfifo_execute_if_ready(cmdfifo_info &f);
static void cmdfifo_w(voodoo_device *vd, cmdfifo_info *f, offs_t offset, uint32_t data);
+ static void init_save_state(voodoo_device *vd);
+
static void raster_fastfill(void *dest, int32_t scanline, const poly_extent *extent, const void *extradata, int threadid);
static void raster_generic_0tmu(void *dest, int32_t scanline, const poly_extent *extent, const void *extradata, int threadid);
static void raster_generic_1tmu(void *dest, int32_t scanline, const poly_extent *extent, const void *extradata, int threadid);
@@ -1833,16 +1832,15 @@ public:
#undef RASTERIZER_ENTRY
+ static bool chromaKeyTest(voodoo_device *vd, stats_block *stats, uint32_t fbzModeReg, rgbaint_t rgaIntColor);
+ static bool alphaMaskTest(stats_block *stats, uint32_t fbzModeReg, uint8_t alpha);
+ static bool alphaTest(voodoo_device *vd, stats_block *stats, uint32_t alphaModeReg, uint8_t alpha);
+ static bool depthTest(uint16_t zaColorReg, stats_block *stats, int32_t destDepth, uint32_t fbzModeReg, int32_t biasdepth);
+ static bool combineColor(voodoo_device *vd, stats_block *STATS, uint32_t FBZCOLORPATH, uint32_t FBZMODE, uint32_t ALPHAMODE, rgbaint_t TEXELARGB, int32_t ITERZ, int64_t ITERW, rgbaint_t &srcColor);
-
-protected:
- // device-level overrides
- virtual void device_stop() override;
- virtual void device_reset() override;
+// FIXME: this stuff should not be public
public:
- // voodoo_state
uint8_t index; /* index of board */
- voodoo_device *device; /* pointer to our containing device */
screen_device *screen; /* the screen we are acting on */
device_t *cpu; /* the CPU we interact with */
uint8_t vd_type; /* type of system */
@@ -1886,12 +1884,12 @@ class voodoo_1_device : public voodoo_device
{
public:
voodoo_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
protected:
// device-level overrides
virtual void device_start() override;
};
-extern const device_type VOODOO_1;
class voodoo_2_device : public voodoo_device
{
@@ -1902,13 +1900,11 @@ protected:
virtual void device_start() override;
};
-extern const device_type VOODOO_2;
class voodoo_banshee_device : public voodoo_device
{
public:
voodoo_banshee_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- voodoo_banshee_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
DECLARE_READ32_MEMBER( banshee_r );
DECLARE_WRITE32_MEMBER( banshee_w );
@@ -1921,23 +1917,29 @@ public:
DECLARE_WRITE8_MEMBER(banshee_vga_w);
protected:
+ voodoo_banshee_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
DECLARE_READ32_MEMBER( banshee_agp_r );
DECLARE_WRITE32_MEMBER( banshee_agp_w );
};
-extern const device_type VOODOO_BANSHEE;
class voodoo_3_device : public voodoo_banshee_device
{
public:
voodoo_3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
protected:
// device-level overrides
virtual void device_start() override;
};
-extern const device_type VOODOO_3;
-#endif
+DECLARE_DEVICE_TYPE(VOODOO_1, voodoo_1_device)
+DECLARE_DEVICE_TYPE(VOODOO_2, voodoo_2_device)
+DECLARE_DEVICE_TYPE(VOODOO_BANSHEE, voodoo_banshee_device)
+DECLARE_DEVICE_TYPE(VOODOO_3, voodoo_3_device)
+
+#endif // MAME_VIDEO_VOODOO_H
diff --git a/src/devices/video/voodoo_pci.cpp b/src/devices/video/voodoo_pci.cpp
index acceeac50e7..883d92995a9 100644
--- a/src/devices/video/voodoo_pci.cpp
+++ b/src/devices/video/voodoo_pci.cpp
@@ -53,7 +53,7 @@ machine_config_constructor voodoo_pci_device::device_mconfig_additions() const
}
}
-const device_type VOODOO_PCI = device_creator<voodoo_pci_device>;
+DEFINE_DEVICE_TYPE(VOODOO_PCI, voodoo_pci_device, "voodoo_pci", "Voodoo PCI")
DEVICE_ADDRESS_MAP_START(config_map, 32, voodoo_pci_device)
AM_RANGE(0x40, 0x5f) AM_READWRITE (pcictrl_r, pcictrl_w)
@@ -78,7 +78,7 @@ DEVICE_ADDRESS_MAP_START(io_map, 32, voodoo_pci_device)
ADDRESS_MAP_END
voodoo_pci_device::voodoo_pci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, VOODOO_PCI, "Voodoo PCI", tag, owner, clock, "voodoo_pci", __FILE__),
+ : pci_device(mconfig, VOODOO_PCI, tag, owner, clock),
m_voodoo(*this, "voodoo"), m_fbmem(2), m_tmumem0(0), m_tmumem1(0)
{
}
diff --git a/src/devices/video/voodoo_pci.h b/src/devices/video/voodoo_pci.h
index d7e2add7f1e..4b7a41afe2f 100644
--- a/src/devices/video/voodoo_pci.h
+++ b/src/devices/video/voodoo_pci.h
@@ -2,8 +2,10 @@
// copyright-holders:Ted Green
// 3dfx Voodoo Graphics SST-1/2 emulator.
-#ifndef VOODOO_PCI_H
-#define VOODOO_PCI_H
+#ifndef MAME_VIDEO_VOODOO_PCI_H
+#define MAME_VIDEO_VOODOO_PCI_H
+
+#pragma once
#include "machine/pci.h"
#include "voodoo.h"
@@ -47,7 +49,7 @@ protected:
private:
required_device<voodoo_device> m_voodoo;
- static int m_type;
+ static int m_type; // FIXME: all voodoo have to be the same? really?
int m_fbmem, m_tmumem0, m_tmumem1;
const char *m_cpu_tag;
@@ -58,6 +60,6 @@ private:
DECLARE_ADDRESS_MAP(io_map, 32);
};
-extern const device_type VOODOO_PCI;
+DECLARE_DEVICE_TYPE(VOODOO_PCI, voodoo_pci_device)
-#endif
+#endif // MAME_VIDEO_VOODOO_PCI_H
diff --git a/src/devices/video/zeus2.cpp b/src/devices/video/zeus2.cpp
index 5428e862cc3..1720d98f582 100644
--- a/src/devices/video/zeus2.cpp
+++ b/src/devices/video/zeus2.cpp
@@ -21,11 +21,11 @@ zeus2_renderer::zeus2_renderer(zeus2_device *state)
{
}
-const device_type ZEUS2 = device_creator<zeus2_device>;
+DEFINE_DEVICE_TYPE(ZEUS2, zeus2_device, "zeus2", "Midway Zeus2")
zeus2_device::zeus2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, ZEUS2, "Midway Zeus2", tag, owner, clock, "zeus2", __FILE__),
- m_vblank(*this), m_irq(*this), m_atlantis(0)
+ : device_t(mconfig, ZEUS2, tag, owner, clock)
+ , m_vblank(*this), m_irq(*this), m_atlantis(0)
{
}
diff --git a/src/devices/video/zeus2.h b/src/devices/video/zeus2.h
index 633245fa608..2998d6378d3 100644
--- a/src/devices/video/zeus2.h
+++ b/src/devices/video/zeus2.h
@@ -5,15 +5,15 @@
Midway Zeus2 Video
**************************************************************************/
-#ifndef __ZEUS2_H__
-#define __ZEUS2_H__
+#ifndef MAME_VIDEO_ZEUS2_H
+#define MAME_VIDEO_ZEUS2_H
+
+#pragma once
#include "video/poly.h"
#include "video/rgbutil.h"
#include "cpu/tms32031/tms32031.h"
-#pragma once
-
/*************************************
* Constants
*************************************/
@@ -123,8 +123,8 @@ public:
TIMER_CALLBACK_MEMBER(display_irq_off);
TIMER_CALLBACK_MEMBER(display_irq);
- template<class _Object> static devcb_base &set_vblank_callback(device_t &device, _Object object) { return downcast<zeus2_device &>(device).m_vblank.set_callback(object); }
- template<class _Object> static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast<zeus2_device &>(device).m_irq.set_callback(object); }
+ template <class Object> static devcb_base &set_vblank_callback(device_t &device, Object &&cb) { return downcast<zeus2_device &>(device).m_vblank.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast<zeus2_device &>(device).m_irq.set_callback(std::forward<Object>(cb)); }
devcb_write_line m_vblank;
devcb_write_line m_irq;
@@ -438,6 +438,6 @@ public:
};
// device type definition
-extern const device_type ZEUS2;
+DECLARE_DEVICE_TYPE(ZEUS2, zeus2_device)
-#endif
+#endif // MAME_VIDEO_ZEUS2